agkan 3.4.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/README.ja.md +64 -0
- package/README.md +64 -0
- 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 +260 -38
- 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/board.js +35 -36
- 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 +13 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/db/config.d.ts +10 -0
- package/dist/db/config.d.ts.map +1 -1
- package/dist/db/config.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 +8 -1
- package/dist/services/ClaudeProcessService.d.ts.map +1 -1
- package/dist/services/ClaudeProcessService.js +25 -8
- 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
package/README.ja.md
CHANGED
|
@@ -953,6 +953,70 @@ board:
|
|
|
953
953
|
title: "マイプロジェクトボード"
|
|
954
954
|
```
|
|
955
955
|
|
|
956
|
+
### モデル設定
|
|
957
|
+
|
|
958
|
+
`.agkan.yml` の `models` セクションでは、ボード経由でplanningおよびrunコマンドを実行する際に使用するClaudeモデルとeffortレベルを指定できます。
|
|
959
|
+
|
|
960
|
+
#### 利用可能なフィールド
|
|
961
|
+
|
|
962
|
+
| フィールド | 型 | デフォルト値 | 説明 |
|
|
963
|
+
|----------|-----|------------|------|
|
|
964
|
+
| `models.planning.model` | string | (Claude CLIのデフォルト) | planningコマンド実行時に使用するモデル |
|
|
965
|
+
| `models.planning.effort` | string | (Claude CLIのデフォルト) | planningコマンドのeffortレベル(`low`, `medium`, `high`, `xhigh`, `max`) |
|
|
966
|
+
| `models.run.model` | string | (Claude CLIのデフォルト) | run/prコマンド実行時に使用するモデル |
|
|
967
|
+
| `models.run.effort` | string | (Claude CLIのデフォルト) | run/prコマンドのeffortレベル(`low`, `medium`, `high`, `xhigh`, `max`) |
|
|
968
|
+
|
|
969
|
+
フルモデル名とClaude CLIのエイリアスの両方が使用できます。`model` と `effort` はいずれも省略可能です。
|
|
970
|
+
|
|
971
|
+
#### 設定例
|
|
972
|
+
|
|
973
|
+
```yaml
|
|
974
|
+
# データベースファイルのパス
|
|
975
|
+
path: ./.agkan/data.db
|
|
976
|
+
|
|
977
|
+
# モデル設定
|
|
978
|
+
models:
|
|
979
|
+
planning:
|
|
980
|
+
model: claude-opus-4-7
|
|
981
|
+
effort: high
|
|
982
|
+
run:
|
|
983
|
+
model: claude-sonnet-4-6
|
|
984
|
+
effort: low
|
|
985
|
+
```
|
|
986
|
+
|
|
987
|
+
#### エイリアスの使用
|
|
988
|
+
|
|
989
|
+
フルモデル名の代わりに短いエイリアスを使用できます:
|
|
990
|
+
|
|
991
|
+
```yaml
|
|
992
|
+
models:
|
|
993
|
+
planning:
|
|
994
|
+
model: opus
|
|
995
|
+
effort: high
|
|
996
|
+
run:
|
|
997
|
+
model: sonnet
|
|
998
|
+
```
|
|
999
|
+
|
|
1000
|
+
使用可能なエイリアス: `opus`、`sonnet`、`haiku`(Claude CLIが解決します)
|
|
1001
|
+
|
|
1002
|
+
#### フィールドの詳細
|
|
1003
|
+
|
|
1004
|
+
- **`models.planning`**: ボードがplanningタスクを実行する際に使用するClaudeモデルとeffortレベルを指定します。`opus` や `claude-opus-4-7` など高性能なモデルと高いeffortレベルの使用を推奨します。
|
|
1005
|
+
```yaml
|
|
1006
|
+
models:
|
|
1007
|
+
planning:
|
|
1008
|
+
model: opus
|
|
1009
|
+
effort: high
|
|
1010
|
+
```
|
|
1011
|
+
|
|
1012
|
+
- **`models.run`**: ボードがrunまたはprコマンドを実行する際に使用するClaudeモデルとeffortレベルを指定します。`pr` コマンドもこの値を使用します。
|
|
1013
|
+
```yaml
|
|
1014
|
+
models:
|
|
1015
|
+
run:
|
|
1016
|
+
model: sonnet
|
|
1017
|
+
effort: low
|
|
1018
|
+
```
|
|
1019
|
+
|
|
956
1020
|
## 実装予定機能
|
|
957
1021
|
|
|
958
1022
|
### タスクの添付ファイル
|
package/README.md
CHANGED
|
@@ -967,6 +967,70 @@ board:
|
|
|
967
967
|
title: "My Project Board"
|
|
968
968
|
```
|
|
969
969
|
|
|
970
|
+
### Models Settings
|
|
971
|
+
|
|
972
|
+
The `models` section in `.agkan.yml` allows you to specify the Claude model and effort level used when executing planning and run commands via the board.
|
|
973
|
+
|
|
974
|
+
#### Available Fields
|
|
975
|
+
|
|
976
|
+
| Field | Type | Default | Description |
|
|
977
|
+
|-------|------|---------|-------------|
|
|
978
|
+
| `models.planning.model` | string | (Claude CLI default) | Model used for planning command execution |
|
|
979
|
+
| `models.planning.effort` | string | (Claude CLI default) | Effort level for planning command (`low`, `medium`, `high`, `xhigh`, `max`) |
|
|
980
|
+
| `models.run.model` | string | (Claude CLI default) | Model used for run/pr command execution |
|
|
981
|
+
| `models.run.effort` | string | (Claude CLI default) | Effort level for run/pr command (`low`, `medium`, `high`, `xhigh`, `max`) |
|
|
982
|
+
|
|
983
|
+
Both full model names and Claude CLI aliases are supported. Both `model` and `effort` are optional within each entry.
|
|
984
|
+
|
|
985
|
+
#### Configuration Example
|
|
986
|
+
|
|
987
|
+
```yaml
|
|
988
|
+
# Database path
|
|
989
|
+
path: ./.agkan/data.db
|
|
990
|
+
|
|
991
|
+
# Model settings
|
|
992
|
+
models:
|
|
993
|
+
planning:
|
|
994
|
+
model: claude-opus-4-7
|
|
995
|
+
effort: high
|
|
996
|
+
run:
|
|
997
|
+
model: claude-sonnet-4-6
|
|
998
|
+
effort: low
|
|
999
|
+
```
|
|
1000
|
+
|
|
1001
|
+
#### Using Aliases
|
|
1002
|
+
|
|
1003
|
+
You can use short aliases instead of full model names:
|
|
1004
|
+
|
|
1005
|
+
```yaml
|
|
1006
|
+
models:
|
|
1007
|
+
planning:
|
|
1008
|
+
model: opus
|
|
1009
|
+
effort: high
|
|
1010
|
+
run:
|
|
1011
|
+
model: sonnet
|
|
1012
|
+
```
|
|
1013
|
+
|
|
1014
|
+
Supported aliases: `opus`, `sonnet`, `haiku` (resolved by the Claude CLI)
|
|
1015
|
+
|
|
1016
|
+
#### Field Details
|
|
1017
|
+
|
|
1018
|
+
- **`models.planning`**: Specifies the Claude model and effort level used when the board executes planning tasks. Recommended to use a high-capability model and effort level such as `opus` with `high`.
|
|
1019
|
+
```yaml
|
|
1020
|
+
models:
|
|
1021
|
+
planning:
|
|
1022
|
+
model: opus
|
|
1023
|
+
effort: high
|
|
1024
|
+
```
|
|
1025
|
+
|
|
1026
|
+
- **`models.run`**: Specifies the Claude model and effort level used when the board executes run or pr commands. The `pr` command also uses this value.
|
|
1027
|
+
```yaml
|
|
1028
|
+
models:
|
|
1029
|
+
run:
|
|
1030
|
+
model: sonnet
|
|
1031
|
+
effort: low
|
|
1032
|
+
```
|
|
1033
|
+
|
|
970
1034
|
## Planned Features
|
|
971
1035
|
|
|
972
1036
|
### Task Attachments
|
|
@@ -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"}
|