pi-kanban 0.1.3 → 0.3.0
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 +9 -4
- package/extensions/kanban.ts +84 -1
- package/lib/pi-parsers.js +203 -92
- package/lib/task-store.js +22 -4
- package/package.json +11 -3
- package/public/app.js +5854 -5690
- package/public/style.css +153 -1
- package/server.js +169 -47
package/lib/task-store.js
CHANGED
|
@@ -24,8 +24,8 @@ function readTask(sessionId, taskId) {
|
|
|
24
24
|
} catch { return null; }
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
function
|
|
28
|
-
try { return fs.
|
|
27
|
+
async function listSessionIdsAsync() {
|
|
28
|
+
try { return await fs.promises.readdir(TASKS_DIR); }
|
|
29
29
|
catch { return []; }
|
|
30
30
|
}
|
|
31
31
|
|
|
@@ -45,6 +45,21 @@ function listTasks(sessionId) {
|
|
|
45
45
|
return out;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
async function listTasksAsync(sessionId) {
|
|
49
|
+
const dir = sessionDir(sessionId);
|
|
50
|
+
let entries;
|
|
51
|
+
try { entries = await fs.promises.readdir(dir); }
|
|
52
|
+
catch { return []; }
|
|
53
|
+
const jsons = entries.filter((n) => n.endsWith('.json'));
|
|
54
|
+
const tasks = await Promise.all(jsons.map(async (name) => {
|
|
55
|
+
try {
|
|
56
|
+
const raw = await fs.promises.readFile(path.join(dir, name), 'utf8');
|
|
57
|
+
return JSON.parse(raw);
|
|
58
|
+
} catch { return null; }
|
|
59
|
+
}));
|
|
60
|
+
return tasks.filter(Boolean);
|
|
61
|
+
}
|
|
62
|
+
|
|
48
63
|
function writeTask(sessionId, task) {
|
|
49
64
|
const dir = sessionDir(sessionId);
|
|
50
65
|
fs.mkdirSync(dir, { recursive: true });
|
|
@@ -86,7 +101,9 @@ function cleanupIfAllCompleted(sessionId) {
|
|
|
86
101
|
if (!sessionId) return false;
|
|
87
102
|
const tasks = listTasks(sessionId);
|
|
88
103
|
if (!tasks.length) return false;
|
|
89
|
-
|
|
104
|
+
const live = tasks.filter((t) => t.status !== 'deleted');
|
|
105
|
+
if (!live.length) return false;
|
|
106
|
+
if (!live.every((t) => t.status === 'completed')) return false;
|
|
90
107
|
const dir = sessionDir(sessionId);
|
|
91
108
|
for (const t of tasks) {
|
|
92
109
|
try { fs.unlinkSync(path.join(dir, `${t.id}.json`)); } catch {}
|
|
@@ -124,8 +141,9 @@ function reconcileFromSnapshot(sessionId, snapshot) {
|
|
|
124
141
|
module.exports = {
|
|
125
142
|
getTasksDir,
|
|
126
143
|
sessionDir,
|
|
127
|
-
|
|
144
|
+
listSessionIdsAsync,
|
|
128
145
|
listTasks,
|
|
146
|
+
listTasksAsync,
|
|
129
147
|
readTask,
|
|
130
148
|
writeTask,
|
|
131
149
|
deleteTask,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-kanban",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Workspace for the pi coding agent — sessions, todos, subagents, and more.",
|
|
5
5
|
"main": "server.js",
|
|
6
6
|
"bin": {
|
|
@@ -10,7 +10,13 @@
|
|
|
10
10
|
"start": "node server.js",
|
|
11
11
|
"dev": "node --watch server.js",
|
|
12
12
|
"build:demo": "node scripts/build-demo.js",
|
|
13
|
-
"preview:demo": "npm run build:demo && npx --yes http-server dist -p 8765 -c-1"
|
|
13
|
+
"preview:demo": "npm run build:demo && npx --yes http-server dist -p 8765 -c-1",
|
|
14
|
+
"docs:dev": "vitepress dev docs",
|
|
15
|
+
"docs:build": "vitepress build docs",
|
|
16
|
+
"docs:preview": "vitepress preview docs"
|
|
17
|
+
},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"vitepress": "^1.6.4"
|
|
14
20
|
},
|
|
15
21
|
"keywords": [
|
|
16
22
|
"pi-package",
|
|
@@ -47,7 +53,9 @@
|
|
|
47
53
|
"@mariozechner/pi-coding-agent": "*"
|
|
48
54
|
},
|
|
49
55
|
"pi": {
|
|
50
|
-
"extensions": [
|
|
56
|
+
"extensions": [
|
|
57
|
+
"./extensions"
|
|
58
|
+
],
|
|
51
59
|
"video": "https://raw.githubusercontent.com/NikiforovAll/pi-kanban/main/assets/pi-kanban-demo.mp4",
|
|
52
60
|
"image": "https://raw.githubusercontent.com/NikiforovAll/pi-kanban/main/assets/pi-kanban-poster.png"
|
|
53
61
|
},
|