@pi-orca/tasks 0.0.2-dev.20260422150519 → 0.0.2-dev.20260517151352

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 CHANGED
@@ -17,6 +17,7 @@ A complete task management extension for Pi, providing file-backed tasks with a
17
17
  - **Notes with resumption** — append timestamped notes, resume context on re-claim
18
18
  - **Label filtering** — key-value labels with special values (`_unset`, `_empty`, `_blank`)
19
19
  - **Two-mode HUD widget** — compact (less) and expanded multi-column (more) views
20
+ - **Idle polling** — checks for external task changes every 30s and refreshes the widget automatically
20
21
  - **Interactive overlay** — task browser with list, detail, and filter screens
21
22
  - **Keyboard shortcut** — `Alt+T` toggles HUD visibility
22
23
 
@@ -41,40 +42,44 @@ A complete task management extension for Pi, providing file-backed tasks with a
41
42
 
42
43
  | Command | Description |
43
44
  |---------|-------------|
44
- | `/task` | Open interactive task overlay |
45
- | `/task more` | Show expanded multi-column HUD widget |
46
- | `/task less` | Show compact 1-line HUD widget |
47
- | `/task list [status]` | List tasks, optionally filtered by status |
48
- | `/task create <title>` | Quick-create a task |
49
- | `/task stuck` | Scan for stuck tasks (dead locks) |
50
- | `/task unlock <id>` | Force-release a stuck task lock |
51
- | `/task deps <id>` | Show dependency graph for a task |
52
- | `/task validate [id]` | Validate task file integrity |
45
+ | `/tasks` | Open interactive task overlay |
46
+ | `/tasks more` | Show expanded multi-column HUD widget |
47
+ | `/tasks less` | Show compact 1-line HUD widget |
48
+ | `/tasks list [status]` | List tasks, optionally filtered by status |
49
+ | `/tasks create <title>` | Quick-create a task |
50
+ | `/tasks stuck` | Scan for stuck tasks (dead locks) |
51
+ | `/tasks unlock <id>` | Force-release a stuck task lock |
52
+ | `/tasks deps <id>` | Show dependency graph for a task |
53
+ | `/tasks validate [id]` | Validate task file integrity |
53
54
 
54
55
  ## Widget Modes
55
56
 
56
- ### Compact (`/task less`) — default
57
+ ### Compact (`/tasks less`) — default
57
58
 
58
59
  Single summary line with status counts for all states:
59
60
 
60
61
  ```
61
- 📋 Tasks 3/7 done | ◉2 in-progress ○1 pending ✗1 failed ⊘1 blocked —1 abandoned /task more
62
+ 📋 Tasks 3/7 done | ◉2 in-progress ○1 pending ✗1 failed ⊘1 blocked —1 abandoned /tasks more
62
63
  ```
63
64
 
64
- ### Expanded (`/task more`)
65
+ ### Expanded (`/tasks more`)
65
66
 
66
67
  Multi-column task list with responsive layout. Adapts columns based on terminal width. Excludes abandoned tasks from the list (stats header still includes them).
67
68
 
68
69
  ```
69
70
  📋 Tasks 3/7 done | ◉2 in-progress ○1 pending ✗1 failed
70
71
  ◉ task-001 Implement auth... ◉ task-003 Write API endp... ○ task-004 Add rate limiti...
71
- ✗ task-005 Deploy to stag... ⊘ task-006 Run integration... /task less
72
+ ✗ task-005 Deploy to stag... ⊘ task-006 Run integration... /tasks less
72
73
  ```
73
74
 
74
75
  ### Toggle
75
76
 
76
77
  `Alt+T` toggles the HUD on/off, preserving the current mode.
77
78
 
79
+ ### Idle Polling
80
+
81
+ The extension polls the task file every 30 seconds (configurable via `DEFAULT_CONFIG.polling.idleIntervalSeconds`) to detect changes made by other sessions or external processes. When changes are detected, the widget is automatically refreshed — including showing the widget if it was hidden and tasks now exist, or hiding it if all tasks were cleared.
82
+
78
83
  ## Architecture
79
84
 
80
85
  ```
package/dist/commands.js CHANGED
@@ -9,13 +9,13 @@ import { readdir } from "fs/promises";
9
9
  import { existsSync } from "fs";
10
10
  import { join } from "path";
11
11
  /**
12
- * /task (no args) — return widget string for display
12
+ * /tasks (no args) — return widget string for display
13
13
  */
14
14
  export async function cmdTaskToggle(projectSlug) {
15
15
  return renderTaskWidget(projectSlug);
16
16
  }
17
17
  /**
18
- * /task list [status] — list tasks
18
+ * /tasks list [status] — list tasks
19
19
  */
20
20
  export async function cmdTaskList(statusFilter, projectSlug) {
21
21
  const tasks = await listTasks({
@@ -25,7 +25,7 @@ export async function cmdTaskList(statusFilter, projectSlug) {
25
25
  if (tasks.length === 0) {
26
26
  return statusFilter
27
27
  ? `No tasks with status '${statusFilter}'.`
28
- : "No tasks found. Use /task create <title> to create one.";
28
+ : "No tasks found. Use /tasks create <title> to create one.";
29
29
  }
30
30
  const STATUS_ICONS = {
31
31
  completed: "✓",
@@ -43,7 +43,7 @@ export async function cmdTaskList(statusFilter, projectSlug) {
43
43
  return `Tasks (${tasks.length}):\n${lines.join("\n")}`;
44
44
  }
45
45
  /**
46
- * /task stuck — scan for stuck tasks
46
+ * /tasks stuck — scan for stuck tasks
47
47
  */
48
48
  export async function cmdTaskStuck(projectSlug) {
49
49
  const tasksDir = getOrcaTasksDir(projectSlug);
@@ -83,7 +83,7 @@ export async function cmdTaskStuck(projectSlug) {
83
83
  lines.push(`⚠ Stuck tasks (${stuck.length}):`);
84
84
  stuck.forEach((s) => lines.push(` ${s}`));
85
85
  lines.push("");
86
- lines.push("Run /task unlock <id> to release a stuck lock.");
86
+ lines.push("Run /tasks unlock <id> to release a stuck lock.");
87
87
  }
88
88
  if (alive.length > 0) {
89
89
  lines.push(`Active locks (${alive.length}):`);
@@ -95,7 +95,7 @@ export async function cmdTaskStuck(projectSlug) {
95
95
  return lines.join("\n");
96
96
  }
97
97
  /**
98
- * /task unlock <id> — force-release a stuck lock
98
+ * /tasks unlock <id> — force-release a stuck lock
99
99
  */
100
100
  export async function cmdTaskUnlock(taskId, projectSlug) {
101
101
  const { unlockTask } = await import("./engine/state-machine.js");
@@ -106,7 +106,7 @@ export async function cmdTaskUnlock(taskId, projectSlug) {
106
106
  return `Error: ${result.error}`;
107
107
  }
108
108
  /**
109
- * /task deps <id> — show dependency graph for a task
109
+ * /tasks deps <id> — show dependency graph for a task
110
110
  */
111
111
  export async function cmdTaskDeps(taskId, projectSlug) {
112
112
  const taskFile = await readTask(taskId, projectSlug);
@@ -157,7 +157,7 @@ export async function cmdTaskDeps(taskId, projectSlug) {
157
157
  return lines.join("\n");
158
158
  }
159
159
  /**
160
- * /task validate [id] — validate task files
160
+ * /tasks validate [id] — validate task files
161
161
  */
162
162
  export async function cmdTaskValidate(taskId, projectSlug) {
163
163
  const tasks = taskId
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../src/engine/crud.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACL,IAAI,EACJ,UAAU,EAQV,MAAM,EACP,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBtE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiC5E;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAO1B;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAY1B;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAoD7E;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;IACT,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACnC,CAAC,CAmBD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAyBf"}
1
+ {"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../src/engine/crud.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACL,IAAI,EACJ,UAAU,EAQV,MAAM,EACP,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBtE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiC5E;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAO1B;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAY1B;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAoD7E;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC;IACT,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACnC,CAAC,CAmBD;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED;;GAEG;AAEH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAyBf"}
@@ -184,6 +184,17 @@ export async function buildDependencyMaps(projectSlug) {
184
184
  }
185
185
  return { dependencies, dependents };
186
186
  }
187
+ /**
188
+ * Delete a task file (and its lock file if present).
189
+ */
190
+ export async function deleteTask(taskId, projectSlug) {
191
+ const { deleteFileIfExists } = await import("@pi-orca/core");
192
+ const filePath = getTaskFilePath(taskId, projectSlug);
193
+ await deleteFileIfExists(filePath);
194
+ const lockPath = getTaskLockPath(taskId, projectSlug);
195
+ await deleteFileIfExists(lockPath);
196
+ return true;
197
+ }
187
198
  /**
188
199
  * Update reverse dependency (dependents) links when a task's dependencies change.
189
200
  */
@@ -1 +1 @@
1
- {"version":3,"file":"crud.js","sourceRoot":"","sources":["../../src/engine/crud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud.js","sourceRoot":"","sources":["../../src/engine/crud.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,cAAc,eAAe,CAAC;AA4D9B,wBAAgB,QAAQ,CAAC,EAAE,EAAE,GAAG,QA4N/B;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AACrI,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,cAAc,eAAe,CAAC;AAuG9B,wBAAgB,QAAQ,CAAC,EAAE,EAAE,GAAG,QAkS/B;AAED,eAAe,QAAQ,CAAC"}
package/dist/index.js CHANGED
@@ -4,15 +4,15 @@
4
4
  * Spec: §3 — pi-orca-tasks Extension
5
5
  */
6
6
  import { executeTaskTool } from "./tool.js";
7
- import { renderTaskLess, renderTaskMore } from "./widget.js";
7
+ import { createTaskWidgetFactory, createTaskMoreWidgetFactory } from "./widget.js";
8
8
  import { renderTaskCall, renderTaskResult } from "./tool-render.js";
9
9
  import { openTasksUI } from "./overlay.js";
10
10
  import { cmdTaskList, cmdTaskStuck, cmdTaskUnlock, cmdTaskDeps, cmdTaskValidate, } from "./commands.js";
11
11
  import { listTasks } from "./engine/crud.js";
12
- import { resolveCompletions, ensureDir, getOrcaTasksDir, wrapToolResult } from "@pi-orca/core";
12
+ import { bootstrapOrca, ensureDir, getOrcaTasksDir, wrapToolResult, registerCommandCompletions, logInfo, logDebug, bindSession, DEFAULT_CONFIG, createWidgetState } from "@pi-orca/core";
13
13
  export { executeTaskTool } from "./tool.js";
14
14
  export * from "./engine/index.js";
15
- export { renderTaskWidget, renderTaskLess, renderTaskMore } from "./widget.js";
15
+ export { renderTaskWidget, renderTaskLess, renderTaskMore, createTaskWidgetFactory, createTaskMoreWidgetFactory } from "./widget.js";
16
16
  export { openTasksUI } from "./overlay.js";
17
17
  export * from "./commands.js";
18
18
  // ─── completion cache (updated on session_start) ─────────────────────────────
@@ -29,6 +29,7 @@ function buildTaskTree() {
29
29
  { value: "unlock", label: "unlock", description: "Force-release a task lock" },
30
30
  { value: "deps", label: "deps", description: "Show task dependencies" },
31
31
  { value: "validate", label: "validate", description: "Validate task files" },
32
+ { value: "clear", label: "clear", description: "Clear all non-active tasks" },
32
33
  ],
33
34
  children: {
34
35
  list: {
@@ -60,18 +61,68 @@ function buildTaskTree() {
60
61
  };
61
62
  }
62
63
  // ─── widget state ───────────────────────────────────────────────────────────
63
- let widgetVisible = false;
64
+ const widgetState = createWidgetState({ name: "pi-orca-tasks" });
64
65
  let widgetMode = "less";
65
- async function renderCurrentWidget() {
66
- return widgetMode === "more" ? renderTaskMore() : renderTaskLess();
66
+ // Captured at session_start; used by lifecycle handlers without fresh ctx.
67
+ let activeSession;
68
+ let pollingTimer = null;
69
+ let previousSnapshot = [];
70
+ // ─── polling ────────────────────────────────────────────────────────────────
71
+ function startTaskPolling(pi, ctx) {
72
+ const intervalMs = DEFAULT_CONFIG.polling.idleIntervalSeconds * 1000;
73
+ pollingTimer = setInterval(async () => {
74
+ try {
75
+ if (!activeSession)
76
+ return;
77
+ const tasks = await listTasks({ projectSlug: activeSession.projectSlug });
78
+ const currentSnapshot = tasks.map((t) => ({ id: t.task.id, status: t.task.status }));
79
+ // Detect changes: count mismatch, ID difference, or status change
80
+ const changed = currentSnapshot.length !== previousSnapshot.length ||
81
+ currentSnapshot.some((s, i) => s.id !== previousSnapshot[i]?.id || s.status !== previousSnapshot[i]?.status);
82
+ if (changed) {
83
+ previousSnapshot = currentSnapshot;
84
+ if (tasks.length === 0) {
85
+ widgetState.hide(ctx);
86
+ }
87
+ else {
88
+ widgetState.show(ctx, currentWidgetFactory(tasks.map((t) => t.task)));
89
+ }
90
+ }
91
+ }
92
+ catch (err) {
93
+ logInfo("pi-orca-tasks", `task-poll error: ${err}`);
94
+ }
95
+ }, intervalMs);
96
+ }
97
+ function stopTaskPolling() {
98
+ if (pollingTimer) {
99
+ clearInterval(pollingTimer);
100
+ pollingTimer = null;
101
+ }
102
+ }
103
+ function currentWidgetFactory(preloaded) {
104
+ return widgetMode === "more" ? createTaskMoreWidgetFactory(undefined, preloaded) : createTaskWidgetFactory(undefined, preloaded);
67
105
  }
68
106
  export function register(pi) {
69
- console.log("pi-orca-tasks: Registering extension");
107
+ bootstrapOrca();
108
+ logInfo("pi-orca-tasks", "Registering extension");
70
109
  // Register task tool with full implementation
71
110
  pi.registerTool?.({
72
111
  name: "task",
73
112
  label: "Task Management",
74
- description: "Manage file-backed tasks with dependencies. Actions: create, claim, complete, fail, abandon, list, unlock, update, retry, note, unclaim, reopen",
113
+ description: `Manage file-backed tasks with a dependency DAG. Tasks follow a lifecycle:
114
+ 1. CREATE tasks (or BATCH) to define work items.
115
+ 2. LIST to see available tasks.
116
+ 3. CLAIM a pending task to mark it in_progress and assign it to this session. You MUST claim a task before working on it.
117
+ 4. After work is done, COMPLETE the task (must be assigned to this session). Alternatively FAIL it (with a note) or ABANDON it (with a note).
118
+ 5. UNCLAIM returns an in_progress task to pending.
119
+ 6. RETRY resets a failed task to pending. REOPEN resets an abandoned task to pending.
120
+ 7. UNLOCK force-releases a stuck lock (dead PID).
121
+ 8. UPDATE changes title, labels, or dependencies.
122
+ 9. NOTE appends a note to any task.
123
+ 10. CLEAR removes all non-in_progress tasks — confirm first.
124
+
125
+ IMPORTANT: complete, fail, abandon, and unclaim require the task to be assigned to the current session. If a task was claimed by another session (e.g. via the /tasks overlay), you must claim it first before completing it.`,
75
126
  parameters: {
76
127
  type: "object",
77
128
  properties: {
@@ -90,88 +141,118 @@ export function register(pi) {
90
141
  "note",
91
142
  "unclaim",
92
143
  "reopen",
144
+ "clear",
145
+ "batch",
93
146
  ],
94
147
  description: "Action to perform",
95
148
  },
96
- taskId: { type: "string", description: "Task ID (required for most actions)" },
149
+ taskId: { type: "string", description: "Task ID (required for claim, complete, fail, abandon, unlock, update, retry, note, unclaim, reopen)" },
97
150
  title: { type: "string", description: "Task title (required for create)" },
98
151
  description: { type: "string", description: "Task description (for create)" },
99
152
  dependencies: {
100
153
  type: "array",
101
154
  items: { type: "string" },
102
- description: "Task IDs this task depends on",
155
+ description: "Task IDs this task depends on (for create and update). All dependencies must be completed before this task can be claimed.",
103
156
  },
104
157
  labels: {
105
158
  type: "object",
106
- description: "Key-value labels for filtering",
159
+ description: "Key-value labels for filtering and organizing tasks",
160
+ },
161
+ status: { type: "string", description: "Status filter for list action (pending, in_progress, completed, failed, blocked, abandoned)" },
162
+ note: { type: "string", description: "Note content (required for fail, abandon, and note actions)" },
163
+ tasks: {
164
+ type: "array",
165
+ items: {
166
+ type: "object",
167
+ properties: {
168
+ title: { type: "string", description: "Task title (required)" },
169
+ description: { type: "string", description: "Task description" },
170
+ dependencies: {
171
+ type: "array",
172
+ items: { type: "string" },
173
+ description: "Task IDs or titles (within the same batch) this task depends on",
174
+ },
175
+ labels: {
176
+ type: "object",
177
+ description: "Key-value labels for filtering",
178
+ },
179
+ },
180
+ required: ["title"],
181
+ },
182
+ description: "Array of task specs for batch creation",
107
183
  },
108
- status: { type: "string", description: "Status filter for list action" },
109
- note: { type: "string", description: "Note content (required for fail, abandon, note actions)" },
110
184
  },
111
185
  required: ["action"],
112
186
  },
113
187
  renderCall: renderTaskCall,
114
188
  renderResult: renderTaskResult,
115
189
  async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
116
- const sessionId = ctx?.sessionId ?? process.env["PI_SESSION_ID"] ?? "default-session";
117
- const sessionPath = ctx?.sessionPath ?? process.env["PI_SESSION_PATH"] ?? "";
118
- const result = await executeTaskTool({
119
- ...params,
120
- sessionId,
121
- sessionPath,
122
- });
123
- // Refresh widget after state changes
124
- if (widgetVisible &&
125
- ctx?.ui?.setWidget &&
126
- ["create", "claim", "complete", "fail", "abandon", "unclaim", "retry", "unlock", "update", "reopen"].includes(params.action)) {
127
- const widgetContent = await renderCurrentWidget();
128
- ctx.ui.setWidget("pi-orca-tasks", widgetContent);
190
+ const session = bindSession(ctx) ?? activeSession;
191
+ try {
192
+ const result = await executeTaskTool({
193
+ ...params,
194
+ sessionId: session?.sessionId,
195
+ sessionPath: session?.sessionPath,
196
+ projectSlug: params.projectSlug ?? session?.projectSlug,
197
+ });
198
+ // Refresh widget after state changes, auto-hide if no tasks remain
199
+ if (["create", "claim", "complete", "fail", "abandon", "unclaim", "retry", "unlock", "update", "reopen", "clear", "batch"].includes(params.action)) {
200
+ const tasks = await listTasks({ projectSlug: params.projectSlug });
201
+ previousSnapshot = tasks.map((t) => ({ id: t.task.id, status: t.task.status }));
202
+ if (tasks.length === 0) {
203
+ widgetState.hide(ctx);
204
+ }
205
+ else if (!widgetState.isVisible() && (params.action === "create" || params.action === "batch")) {
206
+ widgetState.show(ctx, currentWidgetFactory(tasks.map((t) => t.task)));
207
+ }
208
+ else {
209
+ widgetState.refresh(ctx, currentWidgetFactory(tasks.map((t) => t.task)));
210
+ }
211
+ }
212
+ return wrapToolResult(result);
213
+ }
214
+ catch (err) {
215
+ return wrapToolResult({ success: false, error: err.message ?? String(err) });
129
216
  }
130
- return wrapToolResult(result);
131
217
  },
132
218
  });
133
219
  // Register Alt+T shortcut to toggle HUD
134
220
  pi.registerShortcut?.("alt+t", {
135
221
  description: "Toggle task HUD widget",
136
222
  handler: async (ctx) => {
137
- widgetVisible = !widgetVisible;
138
- if (widgetVisible) {
139
- const content = await renderCurrentWidget();
140
- ctx.ui.setWidget("pi-orca-tasks", content);
141
- }
142
- else {
143
- ctx.ui.setWidget("pi-orca-tasks", undefined);
144
- }
223
+ widgetState.toggle(ctx, currentWidgetFactory());
145
224
  },
146
225
  });
147
226
  // Register slash commands
148
- pi.registerCommand("task", {
227
+ pi.registerCommand("tasks", {
149
228
  description: "Manage tasks — no args opens interactive overlay",
150
- getArgumentCompletions(prefix) {
151
- return resolveCompletions(prefix, buildTaskTree());
152
- },
153
229
  handler: async (args, ctx) => {
154
230
  const parts = args ? args.trim().split(/\s+/) : [];
155
231
  const subcommand = parts[0];
156
232
  if (!subcommand) {
157
233
  // No args → open interactive overlay
158
- await openTasksUI(pi, ctx);
234
+ const refreshWidget = async () => {
235
+ const tasks = await listTasks({});
236
+ if (tasks.length === 0) {
237
+ widgetState.hide(ctx);
238
+ }
239
+ else {
240
+ widgetState.refresh(ctx, currentWidgetFactory(tasks.map((t) => t.task)));
241
+ }
242
+ };
243
+ await openTasksUI(pi, ctx, refreshWidget);
159
244
  return;
160
245
  }
161
246
  switch (subcommand.toLowerCase()) {
162
247
  case "more": {
163
248
  widgetMode = "more";
164
- widgetVisible = true;
165
- const content = await renderTaskMore();
166
- ctx.ui.setWidget("pi-orca-tasks", content);
249
+ widgetState.show(ctx, createTaskMoreWidgetFactory());
167
250
  ctx.ui.notify("Task widget: expanded view", "info");
168
251
  break;
169
252
  }
170
253
  case "less": {
171
254
  widgetMode = "less";
172
- widgetVisible = true;
173
- const content = await renderTaskLess();
174
- ctx.ui.setWidget("pi-orca-tasks", content);
255
+ widgetState.show(ctx, createTaskWidgetFactory());
175
256
  ctx.ui.notify("Task widget: compact view", "info");
176
257
  break;
177
258
  }
@@ -184,14 +265,16 @@ export function register(pi) {
184
265
  case "create": {
185
266
  const title = parts.slice(1).join(" ");
186
267
  if (!title) {
187
- ctx.ui.notify("Usage: /task create <title>", "error");
268
+ ctx.ui.notify("Usage: /tasks create <title>", "error");
188
269
  break;
189
270
  }
271
+ const session = bindSession(ctx) ?? activeSession;
190
272
  const result = await executeTaskTool({
191
273
  action: "create",
192
274
  title,
193
- sessionId: ctx?.sessionManager?.getSessionFile?.() ?? "default-session",
194
- sessionPath: ctx?.sessionManager?.getSessionFile?.() ?? "",
275
+ sessionId: session?.sessionId,
276
+ sessionPath: session?.sessionPath,
277
+ projectSlug: session?.projectSlug,
195
278
  });
196
279
  if (result.success) {
197
280
  ctx.ui.notify(`Created task: ${result.task?.id} — ${title}`, "info");
@@ -209,7 +292,7 @@ export function register(pi) {
209
292
  case "unlock": {
210
293
  const taskId = parts[1];
211
294
  if (!taskId) {
212
- ctx.ui.notify("Usage: /task unlock <id>", "error");
295
+ ctx.ui.notify("Usage: /tasks unlock <id>", "error");
213
296
  break;
214
297
  }
215
298
  const result = await cmdTaskUnlock(taskId);
@@ -219,7 +302,7 @@ export function register(pi) {
219
302
  case "deps": {
220
303
  const taskId = parts[1];
221
304
  if (!taskId) {
222
- ctx.ui.notify("Usage: /task deps <id>", "error");
305
+ ctx.ui.notify("Usage: /tasks deps <id>", "error");
223
306
  break;
224
307
  }
225
308
  const result = await cmdTaskDeps(taskId);
@@ -232,39 +315,67 @@ export function register(pi) {
232
315
  ctx.ui.notify(result, result.includes("Error") || result.includes("invalid") ? "warning" : "info");
233
316
  break;
234
317
  }
318
+ case "clear": {
319
+ const session = bindSession(ctx) ?? activeSession;
320
+ const result = await executeTaskTool({
321
+ action: "clear",
322
+ sessionId: session?.sessionId,
323
+ sessionPath: session?.sessionPath,
324
+ projectSlug: session?.projectSlug,
325
+ });
326
+ if (result.success) {
327
+ widgetState.hide(ctx);
328
+ ctx.ui.notify(result.message, "info");
329
+ }
330
+ else {
331
+ ctx.ui.notify(`Error: ${result.error}`, "error");
332
+ }
333
+ break;
334
+ }
235
335
  default:
236
- ctx.ui.notify(`Unknown subcommand '${subcommand}'. Available: list, create, more, less, stuck, unlock, deps, validate`, "error");
336
+ ctx.ui.notify(`Unknown subcommand '${subcommand}'. Available: list, create, more, less, stuck, unlock, deps, validate, clear`, "error");
237
337
  }
238
338
  },
239
339
  });
240
340
  // Populate caches, bootstrap dir, auto-show HUD on session_start
241
341
  pi.on("session_start", async (_event, ctx) => {
242
342
  try {
243
- await ensureDir(getOrcaTasksDir());
244
- const tasks = await listTasks({});
343
+ activeSession = bindSession(ctx);
344
+ const projectSlug = activeSession?.projectSlug;
345
+ await ensureDir(getOrcaTasksDir(projectSlug));
346
+ const tasks = await listTasks({ projectSlug });
245
347
  _cachedTaskIds = tasks.map((t) => ({
246
348
  id: t.task.id,
247
349
  title: t.task.title,
248
350
  status: t.task.status,
249
351
  }));
352
+ previousSnapshot = tasks.map((t) => ({ id: t.task.id, status: t.task.status }));
353
+ registerCommandCompletions(ctx, [
354
+ { command: "tasks", getTree: buildTaskTree },
355
+ ]);
250
356
  // Auto-show HUD if tasks exist
251
- if (tasks.length > 0 && ctx?.ui?.setWidget) {
252
- widgetVisible = true;
253
- const content = await renderCurrentWidget();
254
- ctx.ui.setWidget("pi-orca-tasks", content);
357
+ if (tasks.length > 0) {
358
+ widgetState.show(ctx, currentWidgetFactory(tasks.map((t) => t.task)));
255
359
  }
360
+ // Start idle polling for external task changes
361
+ startTaskPolling(pi, ctx);
256
362
  }
257
363
  catch {
258
364
  // Task directory may not exist yet — leave cache empty
259
365
  }
260
366
  pi.events?.emit("orca:tasks:ready", {});
261
- console.log("pi-orca-tasks: Ready");
367
+ logInfo("pi-orca-tasks", "Ready");
368
+ });
369
+ pi.on("session_shutdown", async (_event, _ctx) => {
370
+ stopTaskPolling();
371
+ activeSession = undefined;
372
+ logInfo("pi-orca-tasks", "Shutdown");
262
373
  });
263
374
  // Check for other extensions
264
375
  pi.events?.on("orca:models:ready", () => {
265
- console.log("pi-orca-tasks: pi-orca-models detected");
376
+ logDebug("pi-orca-tasks", "pi-orca-models detected");
266
377
  });
267
- console.log("pi-orca-tasks: Registered");
378
+ logInfo("pi-orca-tasks", "Registered");
268
379
  }
269
380
  export default register;
270
381
  //# sourceMappingURL=index.js.map