@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 +91 -20
- package/dist/commands.d.ts +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +64 -23
- package/dist/index.js.map +1 -1
- package/dist/overlay.d.ts +9 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +213 -0
- package/dist/overlay.js.map +1 -0
- package/dist/tool-render.d.ts +8 -0
- package/dist/tool-render.d.ts.map +1 -0
- package/dist/tool-render.js +159 -0
- package/dist/tool-render.js.map +1 -0
- package/dist/tool.d.ts +1 -1
- package/dist/tool.d.ts.map +1 -1
- package/dist/tool.js +10 -1
- package/dist/tool.js.map +1 -1
- package/dist/widget.d.ts +18 -4
- package/dist/widget.d.ts.map +1 -1
- package/dist/widget.js +82 -37
- package/dist/widget.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,42 +1,113 @@
|
|
|
1
1
|
# pi-orca-tasks
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**File-backed task DAG with locking, state machine, and interactive UI**
|
|
4
4
|
|
|
5
|
-
Version: 0.0.
|
|
5
|
+
Version: 0.0.2-dev
|
|
6
6
|
License: MIT
|
|
7
7
|
|
|
8
8
|
## Overview
|
|
9
9
|
|
|
10
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
```
|
|
17
|
-
|
|
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
|
-
|
|
74
|
+
### Toggle
|
|
21
75
|
|
|
22
|
-
|
|
76
|
+
`Alt+T` toggles the HUD on/off, preserving the current mode.
|
|
23
77
|
|
|
24
|
-
##
|
|
78
|
+
## Architecture
|
|
25
79
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
##
|
|
96
|
+
## Test Coverage
|
|
34
97
|
|
|
35
|
-
|
|
98
|
+
86+ tests across 6 test files:
|
|
36
99
|
|
|
37
|
-
|
|
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
|
-
|
|
110
|
+
- `@pi-orca/core` — Shared types, utilities, filesystem helpers
|
|
40
111
|
|
|
41
112
|
## License
|
|
42
113
|
|
package/dist/commands.d.ts
CHANGED
|
@@ -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
|
*/
|
package/dist/commands.d.ts.map
CHANGED
|
@@ -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,
|
|
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;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
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 {
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
//
|
|
131
|
-
|
|
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
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,
|
|
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"}
|
package/dist/overlay.js
ADDED
|
@@ -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;
|
package/dist/tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
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":"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,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"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"}
|
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
|
|
7
|
-
*
|
|
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
|
|
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
|
package/dist/widget.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"AAAA
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
36
|
-
|
|
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
|
|
39
|
-
const
|
|
40
|
-
|
|
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
|
-
*
|
|
44
|
-
* Spec: §3.11
|
|
99
|
+
* Legacy API — delegates to renderTaskLess for backward compat.
|
|
45
100
|
*/
|
|
46
101
|
export async function renderTaskWidget(projectSlug) {
|
|
47
|
-
|
|
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
|
package/dist/widget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget.js","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"AAAA
|
|
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.
|
|
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/
|
|
44
|
+
"directory": "packages/tasks"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@pi-orca/core": "0.0.2-dev.
|
|
47
|
+
"@pi-orca/core": "0.0.2-dev.20260422150519"
|
|
48
48
|
}
|
|
49
49
|
}
|