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

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
@@ -1,42 +1,113 @@
1
1
  # pi-orca-tasks
2
2
 
3
- **Task Management**
3
+ **File-backed task DAG with locking, state machine, and interactive UI**
4
4
 
5
- Version: 0.0.1 (Phase 0 - Stub)
5
+ Version: 0.0.2-dev
6
6
  License: MIT
7
7
 
8
8
  ## Overview
9
9
 
10
- File-backed task DAG with locking, dependency validation, and state machine.
10
+ A complete task management extension for Pi, providing file-backed tasks with a directed acyclic graph (DAG) for dependency tracking, PID-based locking for concurrent safety, a full state machine with 9 transitions, and an interactive TUI overlay.
11
+
12
+ ## Features
13
+
14
+ - **State machine** — 9 transitions: create, claim, complete, fail, abandon, unclaim, retry, reopen, unlock
15
+ - **DAG dependencies** — cycle detection, cascading blocked status, transitive dependent resolution
16
+ - **PID-based locking** — dead-process detection with automatic unlock
17
+ - **Notes with resumption** — append timestamped notes, resume context on re-claim
18
+ - **Label filtering** — key-value labels with special values (`_unset`, `_empty`, `_blank`)
19
+ - **Two-mode HUD widget** — compact (less) and expanded multi-column (more) views
20
+ - **Interactive overlay** — task browser with list, detail, and filter screens
21
+ - **Keyboard shortcut** — `Alt+T` toggles HUD visibility
22
+
23
+ ## Tool Actions
24
+
25
+ | Action | Description | Required Params |
26
+ |--------|-------------|-----------------|
27
+ | `create` | Create a new task | `title` |
28
+ | `claim` | Claim a task for work (pending → in_progress) | `taskId` |
29
+ | `complete` | Mark task complete (in_progress → completed) | `taskId` |
30
+ | `fail` | Mark task failed with reason (in_progress → failed) | `taskId`, `note` |
31
+ | `abandon` | Abandon task with reason (in_progress → abandoned) | `taskId`, `note` |
32
+ | `unclaim` | Release claim (in_progress → pending) | `taskId` |
33
+ | `retry` | Retry a failed task (failed → pending) | `taskId` |
34
+ | `reopen` | Reopen an abandoned task (abandoned → pending) | `taskId` |
35
+ | `unlock` | Force-release a stuck lock | `taskId` |
36
+ | `update` | Update title, labels, or dependencies | `taskId` |
37
+ | `note` | Append a note to a task | `taskId`, `note` |
38
+ | `list` | List tasks with optional status/label filter | (optional: `status`, `labels`) |
39
+
40
+ ## Slash Commands
41
+
42
+ | Command | Description |
43
+ |---------|-------------|
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 |
53
+
54
+ ## Widget Modes
55
+
56
+ ### Compact (`/task less`) — default
57
+
58
+ Single summary line with status counts for all states:
11
59
 
12
- **Status:** Phase 0 scaffold complete. Full implementation pending.
60
+ ```
61
+ 📋 Tasks 3/7 done | ◉2 in-progress ○1 pending ✗1 failed ⊘1 blocked —1 abandoned /task more
62
+ ```
63
+
64
+ ### Expanded (`/task more`)
13
65
 
14
- ## Installation
66
+ Multi-column task list with responsive layout. Adapts columns based on terminal width. Excludes abandoned tasks from the list (stats header still includes them).
15
67
 
16
- ```bash
17
- npm install pi-orca-tasks
68
+ ```
69
+ 📋 Tasks 3/7 done | ◉2 in-progress ○1 pending ✗1 failed
70
+ ◉ 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
18
72
  ```
19
73
 
20
- ## Usage
74
+ ### Toggle
21
75
 
22
- This package is currently in stub mode. Tools and commands are registered but return "Not implemented yet" messages.
76
+ `Alt+T` toggles the HUD on/off, preserving the current mode.
23
77
 
24
- ## Development Status
78
+ ## Architecture
25
79
 
26
- - [x] Package scaffold
27
- - [x] TypeScript configuration
28
- - [x] Tool registration (stub)
29
- - [x] Command registration (stub)
30
- - [x] Event emission (ready signal)
31
- - [ ] Full implementation (pending)
80
+ ```
81
+ src/
82
+ ├── index.ts # Extension entry: tool, commands, shortcuts, lifecycle
83
+ ├── tool.ts # Tool action dispatcher (12 actions)
84
+ ├── widget.ts # HUD renderers (less/more modes)
85
+ ├── overlay.ts # Interactive overlay (list/detail/filter screens)
86
+ ├── commands.ts # Slash command implementations
87
+ └── engine/
88
+ ├── index.ts # Engine barrel export
89
+ ├── crud.ts # Create, read, update, list, delete
90
+ ├── state-machine.ts # State transitions with validation
91
+ ├── dag.ts # Dependency validation, cycle detection
92
+ ├── notes.ts # Note append with timestamps
93
+ └── locking.ts # PID-based lock management (via @pi-orca/core)
94
+ ```
32
95
 
33
- ## Dependencies
96
+ ## Test Coverage
34
97
 
35
- - `pi-orca-core` Shared types and utilities
98
+ 86+ tests across 6 test files:
36
99
 
37
- ## Documentation
100
+ - `crud.test.ts` — CRUD operations, frontmatter parsing
101
+ - `state-machine.test.ts` — All state transitions, error cases
102
+ - `dag.test.ts` — Cycle detection, cascading, transitive deps
103
+ - `locking.test.ts` — Lock/unlock, PID detection
104
+ - `notes.test.ts` — Note append, timestamp, resumption
105
+ - `integration.test.ts` — End-to-end tool dispatcher flows
106
+ - `widget.test.ts` — HUD mode rendering, multi-column layout
107
+
108
+ ## Dependencies
38
109
 
39
- See the [Pi Orca specification](../../docs/spec-v0.3.0.md) for the complete design.
110
+ - `@pi-orca/core` Shared types, utilities, filesystem helpers
40
111
 
41
112
  ## License
42
113
 
@@ -5,7 +5,7 @@
5
5
  /**
6
6
  * /task (no args) — return widget string for display
7
7
  */
8
- export declare function cmdTaskToggle(projectSlug?: string): Promise<string>;
8
+ export declare function cmdTaskToggle(projectSlug?: string): Promise<string[]>;
9
9
  /**
10
10
  * /task list [status] — list tasks
11
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEzE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B9F;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwDxE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOzF;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgDvF;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAmDjB"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE3E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B9F;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwDxE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOzF;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgDvF;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAmDjB"}
package/dist/index.d.ts CHANGED
@@ -5,7 +5,8 @@
5
5
  */
6
6
  export { executeTaskTool } from "./tool.js";
7
7
  export * from "./engine/index.js";
8
- export { renderTaskWidget } from "./widget.js";
8
+ export { renderTaskWidget, renderTaskLess, renderTaskMore } from "./widget.js";
9
+ export { openTasksUI } from "./overlay.js";
9
10
  export * from "./commands.js";
10
11
  export declare function register(pi: any): void;
11
12
  export default register;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,cAAc,eAAe,CAAC;AAoD9B,wBAAgB,QAAQ,CAAC,EAAE,EAAE,GAAG,QAsL/B;AAED,eAAe,QAAQ,CAAC"}
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"}
package/dist/index.js CHANGED
@@ -4,13 +4,16 @@
4
4
  * Spec: §3 — pi-orca-tasks Extension
5
5
  */
6
6
  import { executeTaskTool } from "./tool.js";
7
- import { renderTaskWidget } from "./widget.js";
7
+ import { renderTaskLess, renderTaskMore } from "./widget.js";
8
+ import { renderTaskCall, renderTaskResult } from "./tool-render.js";
9
+ import { openTasksUI } from "./overlay.js";
8
10
  import { cmdTaskList, cmdTaskStuck, cmdTaskUnlock, cmdTaskDeps, cmdTaskValidate, } from "./commands.js";
9
11
  import { listTasks } from "./engine/crud.js";
10
- import { resolveCompletions } from "@pi-orca/core";
12
+ import { resolveCompletions, ensureDir, getOrcaTasksDir, wrapToolResult } from "@pi-orca/core";
11
13
  export { executeTaskTool } from "./tool.js";
12
14
  export * from "./engine/index.js";
13
- export { renderTaskWidget } from "./widget.js";
15
+ export { renderTaskWidget, renderTaskLess, renderTaskMore } from "./widget.js";
16
+ export { openTasksUI } from "./overlay.js";
14
17
  export * from "./commands.js";
15
18
  // ─── completion cache (updated on session_start) ─────────────────────────────
16
19
  let _cachedTaskIds = [];
@@ -20,6 +23,8 @@ function buildTaskTree() {
20
23
  items: [
21
24
  { value: "list", label: "list", description: "List tasks" },
22
25
  { value: "create", label: "create", description: "Create a new task" },
26
+ { value: "more", label: "more", description: "Show expanded task widget" },
27
+ { value: "less", label: "less", description: "Show compact task widget" },
23
28
  { value: "stuck", label: "stuck", description: "Show stuck tasks" },
24
29
  { value: "unlock", label: "unlock", description: "Force-release a task lock" },
25
30
  { value: "deps", label: "deps", description: "Show task dependencies" },
@@ -54,14 +59,19 @@ function buildTaskTree() {
54
59
  },
55
60
  };
56
61
  }
62
+ // ─── widget state ───────────────────────────────────────────────────────────
57
63
  let widgetVisible = false;
64
+ let widgetMode = "less";
65
+ async function renderCurrentWidget() {
66
+ return widgetMode === "more" ? renderTaskMore() : renderTaskLess();
67
+ }
58
68
  export function register(pi) {
59
69
  console.log("pi-orca-tasks: Registering extension");
60
70
  // Register task tool with full implementation
61
71
  pi.registerTool?.({
62
72
  name: "task",
63
73
  label: "Task Management",
64
- description: "Manage file-backed tasks with dependencies. Actions: create, claim, complete, fail, abandon, list, unlock, update, retry, note, unclaim",
74
+ description: "Manage file-backed tasks with dependencies. Actions: create, claim, complete, fail, abandon, list, unlock, update, retry, note, unclaim, reopen",
65
75
  parameters: {
66
76
  type: "object",
67
77
  properties: {
@@ -79,6 +89,7 @@ export function register(pi) {
79
89
  "retry",
80
90
  "note",
81
91
  "unclaim",
92
+ "reopen",
82
93
  ],
83
94
  description: "Action to perform",
84
95
  },
@@ -99,7 +110,9 @@ export function register(pi) {
99
110
  },
100
111
  required: ["action"],
101
112
  },
102
- async execute(toolCallId, params, signal, onUpdate, ctx) {
113
+ renderCall: renderTaskCall,
114
+ renderResult: renderTaskResult,
115
+ async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
103
116
  const sessionId = ctx?.sessionId ?? process.env["PI_SESSION_ID"] ?? "default-session";
104
117
  const sessionPath = ctx?.sessionPath ?? process.env["PI_SESSION_PATH"] ?? "";
105
118
  const result = await executeTaskTool({
@@ -110,16 +123,30 @@ export function register(pi) {
110
123
  // Refresh widget after state changes
111
124
  if (widgetVisible &&
112
125
  ctx?.ui?.setWidget &&
113
- ["create", "claim", "complete", "fail", "abandon", "unclaim", "retry", "unlock", "update"].includes(params.action)) {
114
- const widgetContent = await renderTaskWidget();
126
+ ["create", "claim", "complete", "fail", "abandon", "unclaim", "retry", "unlock", "update", "reopen"].includes(params.action)) {
127
+ const widgetContent = await renderCurrentWidget();
115
128
  ctx.ui.setWidget("pi-orca-tasks", widgetContent);
116
129
  }
117
- return result;
130
+ return wrapToolResult(result);
131
+ },
132
+ });
133
+ // Register Alt+T shortcut to toggle HUD
134
+ pi.registerShortcut?.("alt+t", {
135
+ description: "Toggle task HUD widget",
136
+ 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
+ }
118
145
  },
119
146
  });
120
147
  // Register slash commands
121
148
  pi.registerCommand("task", {
122
- description: "Manage tasks or toggle task widget",
149
+ description: "Manage tasks no args opens interactive overlay",
123
150
  getArgumentCompletions(prefix) {
124
151
  return resolveCompletions(prefix, buildTaskTree());
125
152
  },
@@ -127,20 +154,27 @@ export function register(pi) {
127
154
  const parts = args ? args.trim().split(/\s+/) : [];
128
155
  const subcommand = parts[0];
129
156
  if (!subcommand) {
130
- // Toggle widget
131
- widgetVisible = !widgetVisible;
132
- if (widgetVisible) {
133
- const content = await renderTaskWidget();
134
- ctx.ui.setWidget("pi-orca-tasks", content);
135
- ctx.ui.notify("Task widget shown", "info");
136
- }
137
- else {
138
- ctx.ui.setWidget("pi-orca-tasks", undefined);
139
- ctx.ui.notify("Task widget hidden", "info");
140
- }
157
+ // No args → open interactive overlay
158
+ await openTasksUI(pi, ctx);
141
159
  return;
142
160
  }
143
161
  switch (subcommand.toLowerCase()) {
162
+ case "more": {
163
+ widgetMode = "more";
164
+ widgetVisible = true;
165
+ const content = await renderTaskMore();
166
+ ctx.ui.setWidget("pi-orca-tasks", content);
167
+ ctx.ui.notify("Task widget: expanded view", "info");
168
+ break;
169
+ }
170
+ case "less": {
171
+ widgetMode = "less";
172
+ widgetVisible = true;
173
+ const content = await renderTaskLess();
174
+ ctx.ui.setWidget("pi-orca-tasks", content);
175
+ ctx.ui.notify("Task widget: compact view", "info");
176
+ break;
177
+ }
144
178
  case "list": {
145
179
  const statusFilter = parts[1];
146
180
  const result = await cmdTaskList(statusFilter);
@@ -199,19 +233,26 @@ export function register(pi) {
199
233
  break;
200
234
  }
201
235
  default:
202
- ctx.ui.notify(`Unknown subcommand '${subcommand}'. Available: list, create, stuck, unlock, deps, validate`, "error");
236
+ ctx.ui.notify(`Unknown subcommand '${subcommand}'. Available: list, create, more, less, stuck, unlock, deps, validate`, "error");
203
237
  }
204
238
  },
205
239
  });
206
- // Populate caches and emit ready event on session_start
207
- pi.on("session_start", async () => {
240
+ // Populate caches, bootstrap dir, auto-show HUD on session_start
241
+ pi.on("session_start", async (_event, ctx) => {
208
242
  try {
243
+ await ensureDir(getOrcaTasksDir());
209
244
  const tasks = await listTasks({});
210
245
  _cachedTaskIds = tasks.map((t) => ({
211
246
  id: t.task.id,
212
247
  title: t.task.title,
213
248
  status: t.task.status,
214
249
  }));
250
+ // 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);
255
+ }
215
256
  }
216
257
  catch {
217
258
  // Task directory may not exist yet — leave cache empty
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Interactive task overlay — list/detail/filter screens.
3
+ * Opened by `/task` (no args). Follows the models overlay pattern.
4
+ */
5
+ /**
6
+ * Open the interactive task overlay.
7
+ */
8
+ export declare function openTasksUI(_pi: any, ctx: any): Promise<void>;
9
+ //# sourceMappingURL=overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA0NnE"}
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Interactive task overlay — list/detail/filter screens.
3
+ * Opened by `/task` (no args). Follows the models overlay pattern.
4
+ */
5
+ import { listTasks, readTask } from "./engine/crud.js";
6
+ import { DynamicBorder } from "@mariozechner/pi-coding-agent";
7
+ import { SelectList, Container, Text, Spacer } from "@mariozechner/pi-tui";
8
+ const STATUS_ICONS = {
9
+ completed: "✓",
10
+ in_progress: "◉",
11
+ pending: "○",
12
+ failed: "✗",
13
+ blocked: "⊘",
14
+ abandoned: "—",
15
+ };
16
+ const FILTER_OPTIONS = [
17
+ { value: "all", label: "All (except abandoned)" },
18
+ { value: "pending", label: "○ Pending" },
19
+ { value: "in_progress", label: "◉ In Progress" },
20
+ { value: "completed", label: "✓ Completed" },
21
+ { value: "failed", label: "✗ Failed" },
22
+ { value: "blocked", label: "⊘ Blocked" },
23
+ { value: "abandoned", label: "— Abandoned" },
24
+ ];
25
+ /**
26
+ * Open the interactive task overlay.
27
+ */
28
+ export async function openTasksUI(_pi, ctx) {
29
+ if (typeof ctx.ui?.custom !== "function") {
30
+ ctx.ui?.notify?.("Interactive overlay not available in this Pi version", "warning");
31
+ return;
32
+ }
33
+ await ctx.ui.custom((tui, theme, _kb, done) => {
34
+ const ac = (s) => theme.fg("accent", s);
35
+ const dim = (s) => theme.fg("dim", s);
36
+ const mut = (s) => theme.fg("muted", s);
37
+ const wrn = (s) => theme.fg("warning", s);
38
+ const listTheme = {
39
+ selectedPrefix: ac,
40
+ selectedText: ac,
41
+ description: mut,
42
+ scrollInfo: dim,
43
+ noMatch: wrn,
44
+ };
45
+ let screen = "list";
46
+ let statusFilter = "all";
47
+ let selectedTaskId = "";
48
+ // ── list screen ───────────────────────────────────────────────────
49
+ let taskList;
50
+ let listContainer;
51
+ async function buildListScreen() {
52
+ const taskFiles = await listTasks({});
53
+ const tasks = taskFiles.map((t) => t.task);
54
+ const filtered = statusFilter === "all"
55
+ ? tasks.filter((t) => t.status !== "abandoned")
56
+ : tasks.filter((t) => t.status === statusFilter);
57
+ const items = filtered.map((t) => ({
58
+ value: t.id,
59
+ label: `${STATUS_ICONS[t.status] ?? "?"} ${t.id}`,
60
+ description: t.title,
61
+ }));
62
+ listContainer = new Container();
63
+ listContainer.addChild(new DynamicBorder(ac));
64
+ const filterLabel = statusFilter === "all" ? "" : ` [${statusFilter}]`;
65
+ listContainer.addChild(new Text(ac(` Tasks${filterLabel}`), 1, 0));
66
+ listContainer.addChild(new Spacer(1));
67
+ taskList = new SelectList(items.length > 0 ? items : [{ value: "__none__", label: " (no tasks)" }], Math.min(items.length + 2, 16), listTheme);
68
+ taskList.onSelect = (item) => {
69
+ if (item.value === "__none__")
70
+ return;
71
+ selectedTaskId = item.value;
72
+ screen = "detail";
73
+ buildDetailScreen().then(() => tui.requestRender());
74
+ };
75
+ taskList.onCancel = () => done(undefined);
76
+ listContainer.addChild(taskList);
77
+ listContainer.addChild(new Spacer(1));
78
+ listContainer.addChild(new Text(dim(" ↑↓ navigate • enter details • f filter • esc close"), 1, 0));
79
+ listContainer.addChild(new DynamicBorder(ac));
80
+ }
81
+ // ── detail screen ─────────────────────────────────────────────────
82
+ let detailContainer;
83
+ async function buildDetailScreen() {
84
+ const taskFile = await readTask(selectedTaskId);
85
+ detailContainer = new Container();
86
+ detailContainer.addChild(new DynamicBorder(ac));
87
+ if (!taskFile) {
88
+ detailContainer.addChild(new Text(wrn(` Task ${selectedTaskId} not found`), 1, 0));
89
+ detailContainer.addChild(new DynamicBorder(ac));
90
+ return;
91
+ }
92
+ const t = taskFile.task;
93
+ const icon = STATUS_ICONS[t.status] ?? "?";
94
+ detailContainer.addChild(new Text(ac(` ${icon} ${t.id} — ${t.title}`), 1, 0));
95
+ detailContainer.addChild(new Spacer(1));
96
+ detailContainer.addChild(new Text(` Status: ${t.status}`, 0, 0));
97
+ if (t.assignedTo) {
98
+ detailContainer.addChild(new Text(` Assigned: ${t.assignedTo}`, 0, 0));
99
+ }
100
+ detailContainer.addChild(new Text(` Created: ${t.createdAt}`, 0, 0));
101
+ if (t.updatedAt) {
102
+ detailContainer.addChild(new Text(` Updated: ${t.updatedAt}`, 0, 0));
103
+ }
104
+ if (t.completedAt) {
105
+ detailContainer.addChild(new Text(` Completed: ${t.completedAt}`, 0, 0));
106
+ }
107
+ if (t.dependencies?.length) {
108
+ detailContainer.addChild(new Spacer(1));
109
+ detailContainer.addChild(new Text(dim(" Dependencies:"), 0, 0));
110
+ for (const depId of t.dependencies) {
111
+ const dep = await readTask(depId);
112
+ const depIcon = dep ? (STATUS_ICONS[dep.task.status] ?? "?") : "?";
113
+ const depTitle = dep ? dep.task.title : "(not found)";
114
+ detailContainer.addChild(new Text(` ${depIcon} ${depId}: ${depTitle}`, 0, 0));
115
+ }
116
+ }
117
+ if (t.dependents?.length) {
118
+ detailContainer.addChild(new Spacer(1));
119
+ detailContainer.addChild(new Text(dim(" Dependents:"), 0, 0));
120
+ for (const depId of t.dependents) {
121
+ const dep = await readTask(depId);
122
+ const depIcon = dep ? (STATUS_ICONS[dep.task.status] ?? "?") : "?";
123
+ const depTitle = dep ? dep.task.title : "(not found)";
124
+ detailContainer.addChild(new Text(` ${depIcon} ${depId}: ${depTitle}`, 0, 0));
125
+ }
126
+ }
127
+ if (t.labels && Object.keys(t.labels).length > 0) {
128
+ detailContainer.addChild(new Spacer(1));
129
+ detailContainer.addChild(new Text(dim(" Labels:"), 0, 0));
130
+ for (const [k, v] of Object.entries(t.labels)) {
131
+ detailContainer.addChild(new Text(` ${k}: ${v}`, 0, 0));
132
+ }
133
+ }
134
+ if (taskFile.body?.trim()) {
135
+ detailContainer.addChild(new Spacer(1));
136
+ detailContainer.addChild(new Text(dim(" Description:"), 0, 0));
137
+ for (const line of taskFile.body.trim().split("\n").slice(0, 10)) {
138
+ detailContainer.addChild(new Text(` ${line}`, 0, 0));
139
+ }
140
+ }
141
+ detailContainer.addChild(new Spacer(1));
142
+ detailContainer.addChild(new Text(dim(" esc → back to list"), 1, 0));
143
+ detailContainer.addChild(new DynamicBorder(ac));
144
+ }
145
+ // ── filter screen ─────────────────────────────────────────────────
146
+ let filterContainer;
147
+ let filterList;
148
+ function buildFilterScreen() {
149
+ filterContainer = new Container();
150
+ filterContainer.addChild(new DynamicBorder(ac));
151
+ filterContainer.addChild(new Text(ac(" Filter by status"), 1, 0));
152
+ filterContainer.addChild(new Spacer(1));
153
+ filterList = new SelectList(FILTER_OPTIONS.map((o) => ({ value: o.value, label: o.label })), FILTER_OPTIONS.length + 2, listTheme);
154
+ filterList.onSelect = (item) => {
155
+ statusFilter = item.value;
156
+ screen = "list";
157
+ buildListScreen().then(() => tui.requestRender());
158
+ };
159
+ filterList.onCancel = () => {
160
+ screen = "list";
161
+ tui.requestRender();
162
+ };
163
+ filterContainer.addChild(filterList);
164
+ filterContainer.addChild(new Spacer(1));
165
+ filterContainer.addChild(new Text(dim(" enter select • esc cancel"), 1, 0));
166
+ filterContainer.addChild(new DynamicBorder(ac));
167
+ }
168
+ // ── initial build ─────────────────────────────────────────────────
169
+ let ready = false;
170
+ buildListScreen().then(() => {
171
+ buildFilterScreen();
172
+ ready = true;
173
+ tui.requestRender();
174
+ });
175
+ return {
176
+ render(w) {
177
+ if (!ready)
178
+ return [ac(" Loading…")];
179
+ if (screen === "list")
180
+ return listContainer.render(w);
181
+ if (screen === "detail")
182
+ return detailContainer.render(w);
183
+ return filterContainer.render(w);
184
+ },
185
+ invalidate() {
186
+ listContainer?.invalidate();
187
+ detailContainer?.invalidate();
188
+ filterContainer?.invalidate();
189
+ },
190
+ handleInput(data) {
191
+ if (screen === "list") {
192
+ if (data === "f" || data === "F") {
193
+ screen = "filter";
194
+ buildFilterScreen();
195
+ }
196
+ else {
197
+ taskList.handleInput(data);
198
+ }
199
+ }
200
+ else if (screen === "detail") {
201
+ if (data === "\x1b" || data === "\x1b[D") {
202
+ screen = "list";
203
+ }
204
+ }
205
+ else {
206
+ filterList.handleInput(data);
207
+ }
208
+ tui.requestRender();
209
+ },
210
+ };
211
+ }, { overlay: true, overlayOptions: { width: "70%", minWidth: 60 } });
212
+ }
213
+ //# sourceMappingURL=overlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Custom renderCall / renderResult for the task tool.
3
+ * Shows action-specific summaries instead of raw JSON.
4
+ */
5
+ import { Text, Container } from "@mariozechner/pi-tui";
6
+ export declare function renderTaskCall(args: any, theme: any, context: any): any;
7
+ export declare function renderTaskResult(result: any, options: any, theme: any, context: any): Text | Container;
8
+ //# sourceMappingURL=tool-render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-render.d.ts","sourceRoot":"","sources":["../src/tool-render.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAU,MAAM,sBAAsB,CAAC;AA8B/D,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,OAmBjE;AAID,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,oBA8BnF"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Custom renderCall / renderResult for the task tool.
3
+ * Shows action-specific summaries instead of raw JSON.
4
+ */
5
+ import { Text, Container, Spacer } from "@mariozechner/pi-tui";
6
+ // ─── Status icons ──────────────────────────────────────────────────────────
7
+ const STATUS_ICON = {
8
+ pending: "○",
9
+ in_progress: "◉",
10
+ completed: "✓",
11
+ failed: "✗",
12
+ abandoned: "⊘",
13
+ blocked: "⊗",
14
+ };
15
+ const ACTION_VERB = {
16
+ create: "Create task",
17
+ claim: "Claim task",
18
+ complete: "Complete task",
19
+ fail: "Fail task",
20
+ abandon: "Abandon task",
21
+ list: "List tasks",
22
+ unlock: "Unlock task",
23
+ update: "Update task",
24
+ retry: "Retry task",
25
+ note: "Add note",
26
+ unclaim: "Unclaim task",
27
+ reopen: "Reopen task",
28
+ };
29
+ // ─── renderCall ────────────────────────────────────────────────────────────
30
+ export function renderTaskCall(args, theme, context) {
31
+ const text = context.lastComponent ?? new Text("", 0, 0);
32
+ const action = args.action ?? "?";
33
+ const verb = ACTION_VERB[action] ?? action;
34
+ let line = theme.fg("toolTitle", theme.bold(verb));
35
+ if (args.taskId) {
36
+ line += " " + theme.fg("accent", args.taskId);
37
+ }
38
+ if (args.title) {
39
+ line += " " + theme.fg("dim", args.title);
40
+ }
41
+ if (args.status) {
42
+ line += " " + theme.fg("dim", `status=${args.status}`);
43
+ }
44
+ text.setText(line);
45
+ return text;
46
+ }
47
+ // ─── renderResult ──────────────────────────────────────────────────────────
48
+ export function renderTaskResult(result, options, theme, context) {
49
+ const details = result.details;
50
+ if (!details) {
51
+ return new Text(theme.fg("dim", "(no result)"), 0, 0);
52
+ }
53
+ if (options.isPartial) {
54
+ return new Text(theme.fg("warning", "Running..."), 0, 0);
55
+ }
56
+ // Error case
57
+ if (!details.success) {
58
+ return new Text(theme.fg("error", `Error: ${details.error}`), 0, 0);
59
+ }
60
+ const action = context.args?.action;
61
+ // ── list action ──────────────────────────────────────────────────────
62
+ if (action === "list") {
63
+ return renderListResult(details, options.expanded, theme);
64
+ }
65
+ // ── single-task actions ──────────────────────────────────────────────
66
+ const task = details.task;
67
+ if (!task) {
68
+ const msg = details.message ?? "Done";
69
+ return new Text(theme.fg("success", `${msg}`), 0, 0);
70
+ }
71
+ return renderSingleTask(task, details, options.expanded, theme);
72
+ }
73
+ // ─── helpers ───────────────────────────────────────────────────────────────
74
+ function statusColor(status) {
75
+ switch (status) {
76
+ case "completed": return "success";
77
+ case "failed": return "error";
78
+ case "in_progress": return "warning";
79
+ case "abandoned": return "muted";
80
+ case "blocked": return "error";
81
+ default: return "dim";
82
+ }
83
+ }
84
+ function renderSingleTask(task, details, expanded, theme) {
85
+ const icon = STATUS_ICON[task.status] ?? "?";
86
+ const color = statusColor(task.status);
87
+ let line = theme.fg(color, icon) + " ";
88
+ line += theme.fg("accent", task.id) + " ";
89
+ line += theme.fg("toolTitle", task.title);
90
+ line += " " + theme.fg(color, `[${task.status}]`);
91
+ if (!expanded) {
92
+ if (details.message) {
93
+ line += " " + theme.fg("dim", details.message);
94
+ }
95
+ return new Text(line, 0, 0);
96
+ }
97
+ // Expanded view
98
+ const container = new Container();
99
+ container.addChild(new Text(line, 0, 0));
100
+ if (task.dependencies?.length) {
101
+ container.addChild(new Text(theme.fg("dim", ` deps: ${task.dependencies.join(", ")}`), 0, 0));
102
+ }
103
+ if (task.assignedTo) {
104
+ container.addChild(new Text(theme.fg("dim", ` assigned: ${task.assignedTo}`), 0, 0));
105
+ }
106
+ if (task.labels && Object.keys(task.labels).length) {
107
+ const labelStr = Object.entries(task.labels).map(([k, v]) => `${k}=${v}`).join(", ");
108
+ container.addChild(new Text(theme.fg("dim", ` labels: ${labelStr}`), 0, 0));
109
+ }
110
+ if (details.body) {
111
+ container.addChild(new Spacer(1));
112
+ const bodyLines = String(details.body).split("\n").slice(0, 10);
113
+ for (const bl of bodyLines) {
114
+ container.addChild(new Text(theme.fg("dim", ` ${bl}`), 0, 0));
115
+ }
116
+ }
117
+ if (details.claimContext) {
118
+ container.addChild(new Spacer(1));
119
+ container.addChild(new Text(theme.fg("muted", ` ${details.claimContext}`), 0, 0));
120
+ }
121
+ return container;
122
+ }
123
+ function renderListResult(details, expanded, theme) {
124
+ const tasks = (details.tasks ?? []);
125
+ const count = details.count ?? tasks.length;
126
+ if (count === 0) {
127
+ return new Text(theme.fg("dim", "No tasks found"), 0, 0);
128
+ }
129
+ // Collapsed: summary line
130
+ if (!expanded) {
131
+ // Group by status for a compact summary
132
+ const byStatus = {};
133
+ for (const t of tasks) {
134
+ byStatus[t.status] = (byStatus[t.status] ?? 0) + 1;
135
+ }
136
+ const parts = Object.entries(byStatus).map(([s, n]) => {
137
+ const icon = STATUS_ICON[s] ?? "?";
138
+ return theme.fg(statusColor(s), `${icon} ${n} ${s}`);
139
+ });
140
+ return new Text(`${theme.fg("toolTitle", `${count} tasks`)} ${parts.join(" ")}`, 0, 0);
141
+ }
142
+ // Expanded: full listing
143
+ const container = new Container();
144
+ container.addChild(new Text(theme.fg("toolTitle", `${count} tasks`), 0, 0));
145
+ for (const t of tasks) {
146
+ const icon = STATUS_ICON[t.status] ?? "?";
147
+ const color = statusColor(t.status);
148
+ let line = " " + theme.fg(color, icon) + " ";
149
+ line += theme.fg("accent", t.id) + " ";
150
+ line += t.title;
151
+ line += " " + theme.fg(color, `[${t.status}]`);
152
+ if (t.dependencies?.length) {
153
+ line += " " + theme.fg("dim", `deps: ${t.dependencies.join(", ")}`);
154
+ }
155
+ container.addChild(new Text(line, 0, 0));
156
+ }
157
+ return container;
158
+ }
159
+ //# sourceMappingURL=tool-render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-render.js","sourceRoot":"","sources":["../src/tool-render.ts"],"names":[],"mappings":"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"}
package/dist/tool.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  * Spec: §3.9 — Tool Schema
4
4
  */
5
5
  export interface TaskToolParams {
6
- action: "create" | "claim" | "complete" | "fail" | "abandon" | "list" | "unlock" | "update" | "retry" | "note" | "unclaim";
6
+ action: "create" | "claim" | "complete" | "fail" | "abandon" | "list" | "unlock" | "update" | "retry" | "note" | "unclaim" | "reopen";
7
7
  taskId?: string;
8
8
  title?: string;
9
9
  description?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsBH,MAAM,WAAW,cAAc;IAC7B,MAAM,EACF,QAAQ,GACR,OAAO,GACP,UAAU,GACV,MAAM,GACN,SAAS,GACT,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,MAAM,GACN,SAAS,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA6LlC"}
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH,MAAM,WAAW,cAAc;IAC7B,MAAM,EACF,QAAQ,GACR,OAAO,GACP,UAAU,GACV,MAAM,GACN,SAAS,GACT,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,MAAM,GACN,SAAS,GACT,QAAQ,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsMlC"}
package/dist/tool.js CHANGED
@@ -3,7 +3,7 @@
3
3
  * Spec: §3.9 — Tool Schema
4
4
  */
5
5
  import { createTask, readTask, listTasks, updateTask as updateTaskCrud, syncDependentLinks, buildDependencyMaps, } from "./engine/crud.js";
6
- import { claimTask, completeTask, failTask, abandonTask, unclaimTask, retryTask, unlockTask, } from "./engine/state-machine.js";
6
+ import { claimTask, completeTask, failTask, abandonTask, unclaimTask, retryTask, unlockTask, reopenTask, } from "./engine/state-machine.js";
7
7
  import { addNote } from "./engine/notes.js";
8
8
  import { validateDependencies } from "./engine/dag.js";
9
9
  export async function executeTaskTool(params) {
@@ -181,6 +181,15 @@ export async function executeTaskTool(params) {
181
181
  return { success: false, error: result.error };
182
182
  return { success: true, message: `Added note to task ${params.taskId}` };
183
183
  }
184
+ case "reopen": {
185
+ if (!params.taskId) {
186
+ return { success: false, error: "The 'taskId' parameter is required for reopen action" };
187
+ }
188
+ const result = await reopenTask(params.taskId, projectSlug);
189
+ if (!result.success)
190
+ return { success: false, error: result.error };
191
+ return { success: true, task: result.task?.task, message: `Reopened task ${params.taskId}` };
192
+ }
184
193
  default:
185
194
  return { success: false, error: `Unknown action: ${params.action}` };
186
195
  }
package/dist/tool.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,UAAU,IAAI,cAAc,EAC5B,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AA4BvD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAsB;IAEtB,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,iBAAiB,CAAC;IACxF,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAC/E,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAEvC,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qDAAqD,EAAE,CAAC;YAC1F,CAAC;YAED,4CAA4C;YAC5C,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,6BAA6B;gBAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBACtC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;oBACjD,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,GAAG,YAAY,EAAE,CAAC;oBACvE,CAAC;gBACH,CAAC;gBAED,2EAA2E;gBAC3E,kCAAkC;gBAClC,MAAM,MAAM,GAAG,SAAS,CAAC;gBACzB,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;gBACxE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBACtC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;oBACtD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;oBAC/C,IAAI,KAAK,EAAE,CAAC;wBACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;oBAC3E,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC;gBAChC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW;aACZ,CAAC,CAAC;YAEH,uBAAuB;YACvB,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,MAAM,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACnF,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;QAC7F,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qDAAqD,EAAE,CAAC;YAC1F,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAC9F,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACpE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI;gBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,OAAO,EAAE,gBAAgB,MAAM,CAAC,MAAM,EAAE;aACzC,CAAC;QACJ,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC;YAC7F,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YACzE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACpE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAChG,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC;YACzF,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sDAAsD,EAAE,CAAC;YAC3F,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAClF,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACpE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAC7F,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uDAAuD,EAAE,CAAC;YAC5F,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yDAAyD,EAAE,CAAC;YAC9F,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACrF,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACpE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAChG,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uDAAuD,EAAE,CAAC;YAC5F,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACpE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAChG,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,YAAY,GAAG,MAAM,CAAC,MAAa,CAAC;YAC1C,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC;gBAC5B,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW;aACZ,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC/B,KAAK,EAAE,KAAK,CAAC,MAAM;aACpB,CAAC;QACJ,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sDAAsD,EAAE,CAAC;YAC3F,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACpE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,iBAAiB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACjH,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sDAAsD,EAAE,CAAC;YAC3F,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,MAAM,CAAC,MAAM,YAAY,EAAE,CAAC;YACtE,CAAC;YAED,MAAM,KAAK,GAA4B,EAAE,CAAC;YAC1C,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;gBAAE,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;YAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;gBAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;YAEjE,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACtC,4BAA4B;gBAC5B,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;gBAC1F,IAAI,KAAK;oBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;gBAE5C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;gBACjD,KAAK,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;gBAE5C,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,KAAY,EAAE,WAAW,CAAC,CAAC;gBAC/E,IAAI,CAAC,OAAO;oBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBAEzF,qBAAqB;gBACrB,MAAM,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;gBACnF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzF,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,KAAY,EAAE,WAAW,CAAC,CAAC;YAC/E,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACzF,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qDAAqD,EAAE,CAAC;YAC1F,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACpE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9F,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC;YACzF,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC;YACvF,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YACjF,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACpE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3E,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sDAAsD,EAAE,CAAC;YAC3F,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACpE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/F,CAAC;QAED;YACE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAoB,MAAc,CAAC,MAAM,EAAE,EAAE,CAAC;IAClF,CAAC;AACH,CAAC"}
package/dist/widget.d.ts CHANGED
@@ -1,10 +1,24 @@
1
1
  /**
2
- * Task widget renderer.
2
+ * Task widget renderer — less/more HUD modes.
3
3
  * Spec: §3.11 — Widget
4
+ *
5
+ * setWidget() expects string[] (one element per line), not a single string.
4
6
  */
5
7
  /**
6
- * Render the task widget as a string.
7
- * Spec: §3.11
8
+ * Render the compact 1-line HUD widget.
9
+ * Shows all statuses including abandoned in the stats.
10
+ * Returns string[] (one element per line) for setWidget().
8
11
  */
9
- export declare function renderTaskWidget(projectSlug?: string): Promise<string>;
12
+ export declare function renderTaskLess(projectSlug?: string): Promise<string[]>;
13
+ /**
14
+ * Render the expanded multi-column task list HUD.
15
+ * Header includes all statuses (including abandoned).
16
+ * Task rows exclude abandoned tasks.
17
+ * Returns string[] (one element per line) for setWidget().
18
+ */
19
+ export declare function renderTaskMore(projectSlug?: string): Promise<string[]>;
20
+ /**
21
+ * Legacy API — delegates to renderTaskLess for backward compat.
22
+ */
23
+ export declare function renderTaskWidget(projectSlug?: string): Promise<string[]>;
10
24
  //# sourceMappingURL=widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4CH;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgB5E"}
1
+ {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqCH;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmB5E;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAiD5E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE9E"}
package/dist/widget.js CHANGED
@@ -1,6 +1,8 @@
1
1
  /**
2
- * Task widget renderer.
2
+ * Task widget renderer — less/more HUD modes.
3
3
  * Spec: §3.11 — Widget
4
+ *
5
+ * setWidget() expects string[] (one element per line), not a single string.
4
6
  */
5
7
  import { listTasks } from "./engine/crud.js";
6
8
  const STATUS_ICONS = {
@@ -11,49 +13,92 @@ const STATUS_ICONS = {
11
13
  blocked: "⊘",
12
14
  abandoned: "—",
13
15
  };
14
- function formatLabels(labels = {}) {
15
- const entries = Object.entries(labels);
16
- if (entries.length === 0)
17
- return "";
18
- return `[${entries.map(([, v]) => v).join(", ")}]`;
16
+ const STATUS_ORDER = ["in_progress", "pending", "failed", "blocked", "completed", "abandoned"];
17
+ function getStatusCounts(tasks) {
18
+ const counts = {};
19
+ for (const t of tasks) {
20
+ counts[t.status] = (counts[t.status] ?? 0) + 1;
21
+ }
22
+ return STATUS_ORDER
23
+ .filter((s) => (counts[s] ?? 0) > 0)
24
+ .map((s) => ({ status: s, count: counts[s] }));
25
+ }
26
+ function formatStatusCounts(counts) {
27
+ return counts
28
+ .map((c) => `${STATUS_ICONS[c.status] ?? "?"}${c.count} ${c.status.replace("_", "-")}`)
29
+ .join(" ");
19
30
  }
20
- function formatTaskLine(task) {
21
- const icon = STATUS_ICONS[task.status] ?? "?";
22
- const assignee = task.status === "in_progress" && task.assignedTo
23
- ? ` ${task.assignedTo.slice(0, 8)}`
24
- : "";
25
- const labels = formatLabels(task.labels);
26
- const labelsStr = labels ? ` ${labels}` : "";
27
- let suffix = "";
28
- if (task.status === "failed") {
29
- suffix = " FAILED";
31
+ /**
32
+ * Render the compact 1-line HUD widget.
33
+ * Shows all statuses including abandoned in the stats.
34
+ * Returns string[] (one element per line) for setWidget().
35
+ */
36
+ export async function renderTaskLess(projectSlug) {
37
+ const taskFiles = await listTasks({ projectSlug });
38
+ const tasks = taskFiles.map((t) => t.task);
39
+ const completed = tasks.filter((t) => t.status === "completed").length;
40
+ const total = tasks.length;
41
+ const counts = getStatusCounts(tasks);
42
+ if (total === 0) {
43
+ const left = "📋 Tasks 0/0 done";
44
+ const hint = "/task more";
45
+ return [`${left}${" ".repeat(Math.max(2, 80 - left.length - hint.length))}${hint}`];
30
46
  }
31
- else if (task.status === "blocked") {
32
- const reason = task.blockedReason?.replace("root cause: ", "") ?? "";
33
- suffix = reason ? ` BLOCKED: ${reason}` : " BLOCKED";
47
+ const statsStr = formatStatusCounts(counts);
48
+ const left = `📋 Tasks ${completed}/${total} done | ${statsStr}`;
49
+ const hint = "/task more";
50
+ return [`${left}${" ".repeat(Math.max(2, 80 - left.length - hint.length))}${hint}`];
51
+ }
52
+ /**
53
+ * Render the expanded multi-column task list HUD.
54
+ * Header includes all statuses (including abandoned).
55
+ * Task rows exclude abandoned tasks.
56
+ * Returns string[] (one element per line) for setWidget().
57
+ */
58
+ export async function renderTaskMore(projectSlug) {
59
+ const taskFiles = await listTasks({ projectSlug });
60
+ const tasks = taskFiles.map((t) => t.task);
61
+ const completed = tasks.filter((t) => t.status === "completed").length;
62
+ const total = tasks.length;
63
+ const counts = getStatusCounts(tasks);
64
+ const statsStr = formatStatusCounts(counts);
65
+ const header = `📋 Tasks ${completed}/${total} done | ${statsStr}`;
66
+ // Exclude abandoned from task rows
67
+ const displayTasks = tasks.filter((t) => t.status !== "abandoned");
68
+ if (displayTasks.length === 0) {
69
+ const hint = "/task less";
70
+ const emptyLine = ` (no active tasks)${" ".repeat(Math.max(2, 80 - 19 - hint.length))}${hint}`;
71
+ return [header, emptyLine];
34
72
  }
35
- else if (task.status === "pending" && task.dependencies?.length) {
36
- suffix = ` depends: ${task.dependencies.join(", ")}`;
73
+ // Multi-column layout
74
+ const termWidth = process.stdout?.columns ?? 80;
75
+ const colWidth = 40;
76
+ const numCols = Math.max(1, Math.floor(termWidth / colWidth));
77
+ const cells = displayTasks.map((t) => {
78
+ const icon = STATUS_ICONS[t.status] ?? "?";
79
+ const id = t.id;
80
+ const maxTitle = colWidth - id.length - 4; // icon + space + id + space
81
+ const title = t.title.length > maxTitle ? t.title.slice(0, maxTitle - 3) + "..." : t.title;
82
+ return `${icon} ${id} ${title}`;
83
+ });
84
+ // Pad cells to colWidth
85
+ const paddedCells = cells.map((c) => c.length < colWidth ? c + " ".repeat(colWidth - c.length) : c.slice(0, colWidth));
86
+ // Arrange into rows
87
+ const rows = [];
88
+ for (let i = 0; i < paddedCells.length; i += numCols) {
89
+ const rowCells = paddedCells.slice(i, i + numCols);
90
+ rows.push(" " + rowCells.join(" "));
37
91
  }
38
- const id = task.id.padEnd(10);
39
- const title = task.title.length > 40 ? task.title.slice(0, 37) + "..." : task.title.padEnd(40);
40
- return ` ${icon} ${id} ${title}${assignee}${labelsStr}${suffix}`;
92
+ const hint = "/task less";
93
+ const lastRow = rows[rows.length - 1];
94
+ const padLen = Math.max(2, termWidth - lastRow.length - hint.length);
95
+ rows[rows.length - 1] = lastRow + " ".repeat(padLen) + hint;
96
+ return [header, ...rows];
41
97
  }
42
98
  /**
43
- * Render the task widget as a string.
44
- * Spec: §3.11
99
+ * Legacy API delegates to renderTaskLess for backward compat.
45
100
  */
46
101
  export async function renderTaskWidget(projectSlug) {
47
- const tasks = await listTasks({ projectSlug });
48
- const completed = tasks.filter((t) => t.task.status === "completed").length;
49
- const total = tasks.length;
50
- const lines = [
51
- `📋 Tasks — ${completed}/${total} completed`,
52
- ...tasks.map((t) => formatTaskLine(t.task)),
53
- ];
54
- if (total === 0) {
55
- lines.push(" (no tasks — use /task create <title> to add one)");
56
- }
57
- return lines.join("\n");
102
+ return renderTaskLess(projectSlug);
58
103
  }
59
104
  //# sourceMappingURL=widget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"widget.js","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"widget.js","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-orca/tasks",
3
- "version": "0.0.2-dev.20260414093420",
3
+ "version": "0.0.2-dev.20260422150519",
4
4
  "description": "File-backed task DAG with locking",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -41,9 +41,9 @@
41
41
  "repository": {
42
42
  "type": "git",
43
43
  "url": "https://github.com/bwavell/pi-orca.git",
44
- "directory": "packages/pi-orca-tasks"
44
+ "directory": "packages/tasks"
45
45
  },
46
46
  "dependencies": {
47
- "@pi-orca/core": "0.0.2-dev.20260414093420"
47
+ "@pi-orca/core": "0.0.2-dev.20260422150519"
48
48
  }
49
49
  }