agkan 3.5.0 → 3.6.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/dist/board/BulkRunService.d.ts +33 -0
- package/dist/board/BulkRunService.d.ts.map +1 -0
- package/dist/board/BulkRunService.js +134 -0
- package/dist/board/BulkRunService.js.map +1 -0
- package/dist/board/boardRenderer.d.ts.map +1 -1
- package/dist/board/boardRenderer.js +13 -22
- package/dist/board/boardRenderer.js.map +1 -1
- package/dist/board/boardRoutes.d.ts +15 -2
- package/dist/board/boardRoutes.d.ts.map +1 -1
- package/dist/board/boardRoutes.js +220 -63
- package/dist/board/boardRoutes.js.map +1 -1
- package/dist/board/boardStyles.d.ts +1 -1
- package/dist/board/boardStyles.d.ts.map +1 -1
- package/dist/board/boardStyles.js +25 -0
- package/dist/board/boardStyles.js.map +1 -1
- package/dist/board/client/main.css +252 -0
- package/dist/board/client/main.js +12063 -0
- package/dist/board/server.d.ts +2 -2
- package/dist/board/server.d.ts.map +1 -1
- package/dist/board/server.js +44 -8
- package/dist/board/server.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +7 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/hooks/claudeHookSettings.d.ts +2 -0
- package/dist/hooks/claudeHookSettings.d.ts.map +1 -0
- package/dist/hooks/claudeHookSettings.js +54 -0
- package/dist/hooks/claudeHookSettings.js.map +1 -0
- package/dist/hooks/hook-attention.mjs +54 -0
- package/dist/hooks/hook-stop.mjs +111 -0
- package/dist/services/AttentionStateService.d.ts +16 -0
- package/dist/services/AttentionStateService.d.ts.map +1 -0
- package/dist/services/AttentionStateService.js +42 -0
- package/dist/services/AttentionStateService.js.map +1 -0
- package/dist/services/ClaudeProcessService.d.ts +7 -0
- package/dist/services/ClaudeProcessService.d.ts.map +1 -1
- package/dist/services/ClaudeProcessService.js +19 -6
- package/dist/services/ClaudeProcessService.js.map +1 -1
- package/dist/terminal/PtySessionService.d.ts +50 -0
- package/dist/terminal/PtySessionService.d.ts.map +1 -0
- package/dist/terminal/PtySessionService.js +310 -0
- package/dist/terminal/PtySessionService.js.map +1 -0
- package/dist/terminal/wsTerminalServer.d.ts +7 -0
- package/dist/terminal/wsTerminalServer.d.ts.map +1 -0
- package/dist/terminal/wsTerminalServer.js +81 -0
- package/dist/terminal/wsTerminalServer.js.map +1 -0
- package/dist/utils/hookToken.d.ts +3 -0
- package/dist/utils/hookToken.d.ts.map +1 -0
- package/dist/utils/hookToken.js +24 -0
- package/dist/utils/hookToken.js.map +1 -0
- package/package.json +11 -5
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { TaskService } from '../services/TaskService';
|
|
2
|
+
import { TaskBlockService } from '../services/TaskBlockService';
|
|
3
|
+
import { PtySessionService } from '../terminal/PtySessionService';
|
|
4
|
+
export type BulkRunCommand = 'direct' | 'pr';
|
|
5
|
+
type BulkRunState = 'idle' | 'running';
|
|
6
|
+
export interface BulkRunStatus {
|
|
7
|
+
mode: BulkRunState;
|
|
8
|
+
command: BulkRunCommand | null;
|
|
9
|
+
}
|
|
10
|
+
type StateChangeCallback = (status: BulkRunStatus) => void;
|
|
11
|
+
export declare class BulkRunService {
|
|
12
|
+
private ts;
|
|
13
|
+
private tbs;
|
|
14
|
+
private claudeProcess;
|
|
15
|
+
private mode;
|
|
16
|
+
private command;
|
|
17
|
+
private stopRequested;
|
|
18
|
+
private stateChangeSubscribers;
|
|
19
|
+
private runningChangeUnsub;
|
|
20
|
+
constructor(ts: TaskService, tbs: TaskBlockService, claudeProcess: PtySessionService);
|
|
21
|
+
getStatus(): BulkRunStatus;
|
|
22
|
+
subscribeStateChange(callback: StateChangeCallback): () => void;
|
|
23
|
+
private notifyStateChange;
|
|
24
|
+
start(command: BulkRunCommand): Promise<{
|
|
25
|
+
error?: string;
|
|
26
|
+
}>;
|
|
27
|
+
stop(): void;
|
|
28
|
+
private selectNextTask;
|
|
29
|
+
private finishLoop;
|
|
30
|
+
private runNext;
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=BulkRunService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BulkRunService.d.ts","sourceRoot":"","sources":["../../src/board/BulkRunService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAIlE,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,IAAI,CAAC;AAC7C,KAAK,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;CAChC;AAED,KAAK,mBAAmB,GAAG,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;AAE3D,qBAAa,cAAc;IAQvB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,aAAa;IATvB,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,sBAAsB,CAAuC;IACrE,OAAO,CAAC,kBAAkB,CAA6B;gBAG7C,EAAE,EAAE,WAAW,EACf,GAAG,EAAE,gBAAgB,EACrB,aAAa,EAAE,iBAAiB;IAG1C,SAAS,IAAI,aAAa;IAI1B,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,IAAI;IAK/D,OAAO,CAAC,iBAAiB;IAKnB,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAYjE,IAAI,IAAI,IAAI;IAWZ,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,UAAU;YAQJ,OAAO;CAoDtB"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BulkRunService = void 0;
|
|
4
|
+
const config_1 = require("../db/config");
|
|
5
|
+
const models_1 = require("../models");
|
|
6
|
+
class BulkRunService {
|
|
7
|
+
ts;
|
|
8
|
+
tbs;
|
|
9
|
+
claudeProcess;
|
|
10
|
+
mode = 'idle';
|
|
11
|
+
command = null;
|
|
12
|
+
stopRequested = false;
|
|
13
|
+
stateChangeSubscribers = new Set();
|
|
14
|
+
runningChangeUnsub = null;
|
|
15
|
+
constructor(ts, tbs, claudeProcess) {
|
|
16
|
+
this.ts = ts;
|
|
17
|
+
this.tbs = tbs;
|
|
18
|
+
this.claudeProcess = claudeProcess;
|
|
19
|
+
}
|
|
20
|
+
getStatus() {
|
|
21
|
+
return { mode: this.mode, command: this.command };
|
|
22
|
+
}
|
|
23
|
+
subscribeStateChange(callback) {
|
|
24
|
+
this.stateChangeSubscribers.add(callback);
|
|
25
|
+
return () => this.stateChangeSubscribers.delete(callback);
|
|
26
|
+
}
|
|
27
|
+
notifyStateChange() {
|
|
28
|
+
const status = this.getStatus();
|
|
29
|
+
this.stateChangeSubscribers.forEach((cb) => cb(status));
|
|
30
|
+
}
|
|
31
|
+
async start(command) {
|
|
32
|
+
if (this.mode === 'running') {
|
|
33
|
+
return { error: 'Bulk run already in progress' };
|
|
34
|
+
}
|
|
35
|
+
this.mode = 'running';
|
|
36
|
+
this.command = command;
|
|
37
|
+
this.stopRequested = false;
|
|
38
|
+
this.notifyStateChange();
|
|
39
|
+
void this.runNext();
|
|
40
|
+
return {};
|
|
41
|
+
}
|
|
42
|
+
stop() {
|
|
43
|
+
this.stopRequested = true;
|
|
44
|
+
this.runningChangeUnsub?.();
|
|
45
|
+
this.runningChangeUnsub = null;
|
|
46
|
+
if (this.mode === 'running') {
|
|
47
|
+
this.mode = 'idle';
|
|
48
|
+
this.command = null;
|
|
49
|
+
this.notifyStateChange();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
selectNextTask() {
|
|
53
|
+
const tasks = this.ts.listTasks({ status: 'ready' }, 'id', 'asc');
|
|
54
|
+
const allBlocks = this.tbs.getAllBlocks();
|
|
55
|
+
// Build map of blocked_task_id -> blocker_task_ids
|
|
56
|
+
const blockedByMap = new Map();
|
|
57
|
+
for (const block of allBlocks) {
|
|
58
|
+
if (!blockedByMap.has(block.blocked_task_id)) {
|
|
59
|
+
blockedByMap.set(block.blocked_task_id, []);
|
|
60
|
+
}
|
|
61
|
+
blockedByMap.get(block.blocked_task_id).push(block.blocker_task_id);
|
|
62
|
+
}
|
|
63
|
+
const available = tasks.filter((task) => {
|
|
64
|
+
const blockerIds = blockedByMap.get(task.id) ?? [];
|
|
65
|
+
return blockerIds.every((bid) => {
|
|
66
|
+
const blocker = this.ts.getTask(bid);
|
|
67
|
+
return !blocker || blocker.status === 'done' || blocker.status === 'closed';
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
available.sort((a, b) => {
|
|
71
|
+
const oa = a.priority ? (models_1.PRIORITY_ORDER[a.priority] ?? 4) : 4;
|
|
72
|
+
const ob = b.priority ? (models_1.PRIORITY_ORDER[b.priority] ?? 4) : 4;
|
|
73
|
+
if (oa !== ob)
|
|
74
|
+
return oa - ob;
|
|
75
|
+
return a.id - b.id;
|
|
76
|
+
});
|
|
77
|
+
return available.length > 0 ? available[0].id : null;
|
|
78
|
+
}
|
|
79
|
+
finishLoop() {
|
|
80
|
+
this.runningChangeUnsub?.();
|
|
81
|
+
this.runningChangeUnsub = null;
|
|
82
|
+
this.mode = 'idle';
|
|
83
|
+
this.command = null;
|
|
84
|
+
this.notifyStateChange();
|
|
85
|
+
}
|
|
86
|
+
async runNext() {
|
|
87
|
+
if (this.stopRequested) {
|
|
88
|
+
this.finishLoop();
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
// If another process is already running, wait for it to finish
|
|
92
|
+
const running = this.claudeProcess.listRunningTasks();
|
|
93
|
+
if (running.length > 0) {
|
|
94
|
+
this.runningChangeUnsub?.();
|
|
95
|
+
this.runningChangeUnsub = this.claudeProcess.subscribeRunningTasksChange(() => {
|
|
96
|
+
if (this.claudeProcess.listRunningTasks().length === 0) {
|
|
97
|
+
this.runningChangeUnsub?.();
|
|
98
|
+
this.runningChangeUnsub = null;
|
|
99
|
+
void this.runNext();
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const taskId = this.selectNextTask();
|
|
105
|
+
if (taskId === null) {
|
|
106
|
+
this.finishLoop();
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const command = this.command;
|
|
110
|
+
const ptyCommand = command === 'pr' ? 'pr' : 'run';
|
|
111
|
+
const prompt = command === 'pr' ? `Task ID: ${taskId}\n/agkan-subtask` : `Task ID: ${taskId}\n/agkan-subtask-direct`;
|
|
112
|
+
const config = (0, config_1.loadConfig)();
|
|
113
|
+
const rawConfig = config.models?.run;
|
|
114
|
+
const model = rawConfig?.model?.trim() || undefined;
|
|
115
|
+
const effort = rawConfig?.effort?.trim() || undefined;
|
|
116
|
+
try {
|
|
117
|
+
await this.claudeProcess.startProcess(taskId, prompt, ptyCommand, model, effort);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// Start failed - try next task
|
|
121
|
+
void this.runNext();
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
// When this task's process exits, run next
|
|
125
|
+
const unsubscribe = this.claudeProcess.subscribeOutput(taskId, (evt) => {
|
|
126
|
+
if (evt.kind === 'done' || evt.kind === 'error') {
|
|
127
|
+
unsubscribe();
|
|
128
|
+
void this.runNext();
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.BulkRunService = BulkRunService;
|
|
134
|
+
//# sourceMappingURL=BulkRunService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BulkRunService.js","sourceRoot":"","sources":["../../src/board/BulkRunService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boardRenderer.d.ts","sourceRoot":"","sources":["../../src/board/boardRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAA8B,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAIxD,KAAK,WAAW,GAAG,UAAU,CAAC;AAC9B,eAAO,MAAM,QAAQ,EAAE,WAAW,EAA8E,CAAC;AAEjH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAQrD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAQrD,CAAC;AAWF,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,YAAY,GAAE,MAAM,EAAO,EAAE,WAAW,GAAE,MAAM,EAAO,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"boardRenderer.d.ts","sourceRoot":"","sources":["../../src/board/boardRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAA8B,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAIxD,KAAK,WAAW,GAAG,UAAU,CAAC;AAC9B,eAAO,MAAM,QAAQ,EAAE,WAAW,EAA8E,CAAC;AAEjH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAQrD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAQrD,CAAC;AAWF,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,YAAY,GAAE,MAAM,EAAO,EAAE,WAAW,GAAE,MAAM,EAAO,GAAG,MAAM,CA4BnH;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAC1B,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAa,GAC7E,MAAM,CA4BR;AAgHD,wBAAgB,WAAW,CACzB,aAAa,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,EACtC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAC1B,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAa,GAC7E,MAAM,CA+CR;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAMpD;AAED,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,EACtC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAC1B,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAa,GAC7E;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAWxD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAYzE;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,KAAK,CAAC;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC,GAClE,GAAG,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAc1D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAEzE"}
|
|
@@ -60,6 +60,7 @@ function renderCard(task, tags, blockedByIds = [], blockingIds = []) {
|
|
|
60
60
|
<div class="card-header">
|
|
61
61
|
<span class="card-id">#${task.id}</span>
|
|
62
62
|
${priorityBadge}
|
|
63
|
+
<span class="attention-indicator" aria-live="polite"></span>
|
|
63
64
|
${cardActions}
|
|
64
65
|
</div>
|
|
65
66
|
<div class="card-title">${escapeHtml(task.title)}</div>
|
|
@@ -75,12 +76,15 @@ function renderColumn(status, tasks, tagMap, blockMap = new Map()) {
|
|
|
75
76
|
return renderCard(t, tagMap.get(t.id) || [], blockRels.blockedBy, blockRels.blocking);
|
|
76
77
|
})
|
|
77
78
|
.join('');
|
|
79
|
+
const bulkRunBtn = status === 'ready'
|
|
80
|
+
? `<div class="bulk-run-split" id="bulk-run-split"><button class="bulk-run-btn" id="bulk-run-main-btn">▶ Run all</button><button class="bulk-run-toggle" id="bulk-run-toggle" title="More options">▼</button><div class="bulk-run-menu" id="bulk-run-menu"><button class="bulk-run-menu-item" data-command="direct">▶ Run all (current branch)</button><button class="bulk-run-menu-item" data-command="pr">▶ Run all (create PR)</button></div></div>`
|
|
81
|
+
: '';
|
|
78
82
|
return `
|
|
79
83
|
<div class="column" data-status="${status}">
|
|
80
84
|
<div class="column-header" style="border-top-color:${color}">
|
|
81
85
|
<span class="column-title" style="color:${color}">${label}</span>
|
|
82
86
|
<span class="column-header-right">
|
|
83
|
-
<span class="column-count">${tasks.length}</span>
|
|
87
|
+
${bulkRunBtn}<span class="column-count">${tasks.length}</span>
|
|
84
88
|
<button class="add-btn" data-status="${status}" title="Add task">+</button>
|
|
85
89
|
</span>
|
|
86
90
|
</div>
|
|
@@ -94,11 +98,14 @@ function getAddTaskModal() {
|
|
|
94
98
|
return `
|
|
95
99
|
<div class="modal-overlay" id="add-modal">
|
|
96
100
|
<div class="modal">
|
|
97
|
-
<h2
|
|
101
|
+
<h2 class="modal-title-with-icon">
|
|
102
|
+
<svg class="modal-title-icon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"/></svg>
|
|
103
|
+
Add Task
|
|
104
|
+
</h2>
|
|
98
105
|
<label for="add-title">Title</label>
|
|
99
106
|
<input type="text" id="add-title" placeholder="Task title">
|
|
100
107
|
<label for="add-body">Description</label>
|
|
101
|
-
<textarea id="add-body" placeholder="
|
|
108
|
+
<textarea id="add-body" placeholder="Describe the task..."></textarea>
|
|
102
109
|
<label for="add-priority">Priority</label>
|
|
103
110
|
<select id="add-priority">
|
|
104
111
|
<option value="">None</option>
|
|
@@ -127,23 +134,6 @@ function getContextMenuAndToast() {
|
|
|
127
134
|
</div>
|
|
128
135
|
<div class="toast" id="toast">Failed to update task</div>`;
|
|
129
136
|
}
|
|
130
|
-
function getClaudeStreamModal() {
|
|
131
|
-
return `
|
|
132
|
-
<div class="modal-overlay" id="claude-stream-modal">
|
|
133
|
-
<div class="modal" style="width:680px;">
|
|
134
|
-
<div class="claude-stream-modal-header">
|
|
135
|
-
<h2 id="claude-stream-modal-title">Claude Output</h2>
|
|
136
|
-
<button id="claude-stream-modal-close">✕</button>
|
|
137
|
-
</div>
|
|
138
|
-
<div id="claude-stream-log" class="claude-stream-log"></div>
|
|
139
|
-
<div class="claude-stream-modal-footer">
|
|
140
|
-
<span id="claude-stream-status" class="claude-stream-status">Connecting...</span>
|
|
141
|
-
<button id="claude-stream-stop-btn" class="claude-stream-stop-btn">Stop</button>
|
|
142
|
-
<button id="claude-stream-close-btn">Close</button>
|
|
143
|
-
</div>
|
|
144
|
-
</div>
|
|
145
|
-
</div>`;
|
|
146
|
-
}
|
|
147
137
|
function getPurgeAndVersionModals() {
|
|
148
138
|
return `
|
|
149
139
|
<div class="modal-overlay" id="purge-confirm-modal">
|
|
@@ -199,10 +189,11 @@ function getBoardBodyStatic() {
|
|
|
199
189
|
var allStatuses = ${JSON.stringify(exports.STATUSES)};
|
|
200
190
|
var statusLabels = ${JSON.stringify(exports.STATUS_LABELS)};
|
|
201
191
|
var allPriorities = ${JSON.stringify(models_1.PRIORITIES)};`;
|
|
202
|
-
return `${getAddTaskModal()}${getContextMenuAndToast()}${getPurgeAndVersionModals()}
|
|
192
|
+
return `${getAddTaskModal()}${getContextMenuAndToast()}${getPurgeAndVersionModals()}
|
|
203
193
|
<script>${configScript}
|
|
204
194
|
</script>
|
|
205
|
-
<
|
|
195
|
+
<link rel="stylesheet" href="/static/main.css">
|
|
196
|
+
<script src="/static/main.js"></script>`;
|
|
206
197
|
}
|
|
207
198
|
function renderBoard(tasksByStatus, tagMap, boardTitle, theme, blockMap = new Map()) {
|
|
208
199
|
const columns = exports.STATUSES.map((status) => renderColumn(status, tasksByStatus.get(status) || [], tagMap, blockMap)).join('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boardRenderer.js","sourceRoot":"","sources":["../../src/board/boardRenderer.ts"],"names":[],"mappings":";;;AAsCA,
|
|
1
|
+
{"version":3,"file":"boardRenderer.js","sourceRoot":"","sources":["../../src/board/boardRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,9 @@ import { TagService } from '../services/TagService';
|
|
|
5
5
|
import { MetadataService } from '../services/MetadataService';
|
|
6
6
|
import { CommentService } from '../services/CommentService';
|
|
7
7
|
import { TaskBlockService } from '../services/TaskBlockService';
|
|
8
|
-
import {
|
|
8
|
+
import { PtySessionService } from '../terminal/PtySessionService';
|
|
9
9
|
import { StorageBackend } from '../db/types/repository';
|
|
10
|
+
import { AttentionStateService } from '../services/AttentionStateService';
|
|
10
11
|
export type BoardServices = {
|
|
11
12
|
ts: TaskService;
|
|
12
13
|
tts: TaskTagService;
|
|
@@ -17,9 +18,21 @@ export type BoardServices = {
|
|
|
17
18
|
database: StorageBackend;
|
|
18
19
|
boardTitle?: string;
|
|
19
20
|
configDir: string;
|
|
20
|
-
|
|
21
|
+
ptySessionService?: PtySessionService;
|
|
21
22
|
};
|
|
22
23
|
export declare function registerTaskApiRoutes(app: Hono, services: BoardServices): void;
|
|
23
24
|
export declare function registerConfigApiRoutes(app: Hono, configDir: string): void;
|
|
25
|
+
export interface HookRouteDeps {
|
|
26
|
+
attentionStateService: AttentionStateService;
|
|
27
|
+
ptySessionService: {
|
|
28
|
+
stopProcess: (taskId: number) => boolean;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export interface AttentionStreamDeps {
|
|
32
|
+
attentionStateService: AttentionStateService;
|
|
33
|
+
}
|
|
34
|
+
export declare function registerHookRoutes(app: Hono, deps: HookRouteDeps): void;
|
|
35
|
+
export declare function registerTestHookTokenRoute(app: Hono): void;
|
|
36
|
+
export declare function registerAttentionStreamRoute(app: Hono, deps: AttentionStreamDeps): void;
|
|
24
37
|
export declare function registerBoardRoutes(app: Hono, services: BoardServices): void;
|
|
25
38
|
//# sourceMappingURL=boardRoutes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boardRoutes.d.ts","sourceRoot":"","sources":["../../src/board/boardRoutes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"boardRoutes.d.ts","sourceRoot":"","sources":["../../src/board/boardRoutes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAcxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAG1E,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,WAAW,CAAC;IAChB,GAAG,EAAE,cAAc,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,eAAe,CAAC;IACpB,EAAE,EAAE,cAAc,CAAC;IACnB,GAAG,EAAE,gBAAgB,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC,CAAC;AAkUF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAO9E;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CA+B1E;AAgQD,MAAM,WAAW,aAAa;IAC5B,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,iBAAiB,EAAE;QAAE,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAA;KAAE,CAAC;CACjE;AAED,MAAM,WAAW,mBAAmB;IAClC,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CA8BvE;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAK1D;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAiDvF;AAqED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAqH5E"}
|