agkan 2.15.0 → 3.0.1
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 +60 -236
- package/README.md +46 -239
- package/dist/board/boardRenderer.d.ts.map +1 -1
- package/dist/board/boardRenderer.js +27 -2
- package/dist/board/boardRenderer.js.map +1 -1
- package/dist/board/boardRoutes.d.ts +2 -0
- package/dist/board/boardRoutes.d.ts.map +1 -1
- package/dist/board/boardRoutes.js +122 -10
- package/dist/board/boardRoutes.js.map +1 -1
- package/dist/board/boardScript.d.ts +2 -0
- package/dist/board/boardScript.d.ts.map +1 -0
- package/dist/board/boardScript.js +1202 -0
- package/dist/board/boardScript.js.map +1 -0
- package/dist/board/boardStyles.d.ts +1 -1
- package/dist/board/boardStyles.d.ts.map +1 -1
- package/dist/board/boardStyles.js +49 -3
- package/dist/board/boardStyles.js.map +1 -1
- package/dist/board/client/board.js +639 -17
- package/dist/board/server.d.ts +2 -1
- package/dist/board/server.d.ts.map +1 -1
- package/dist/board/server.js +4 -2
- package/dist/board/server.js.map +1 -1
- package/dist/cli/commands/tag/add.d.ts.map +1 -1
- package/dist/cli/commands/tag/add.js +10 -11
- package/dist/cli/commands/tag/add.js.map +1 -1
- package/dist/cli/commands/tag/attach.d.ts.map +1 -1
- package/dist/cli/commands/tag/attach.js +10 -11
- package/dist/cli/commands/tag/attach.js.map +1 -1
- package/dist/cli/commands/tag/rename.d.ts.map +1 -1
- package/dist/cli/commands/tag/rename.js +10 -11
- package/dist/cli/commands/tag/rename.js.map +1 -1
- package/dist/cli/commands/task/update-parent.d.ts.map +1 -1
- package/dist/cli/commands/task/update-parent.js +10 -11
- package/dist/cli/commands/task/update-parent.js.map +1 -1
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/board-daemon.d.ts.map +1 -1
- package/dist/cli/utils/board-daemon.js +10 -4
- package/dist/cli/utils/board-daemon.js.map +1 -1
- package/dist/db/adapters/sqlite-storage-backend.d.ts +2 -1
- package/dist/db/adapters/sqlite-storage-backend.d.ts.map +1 -1
- package/dist/db/adapters/sqlite-storage-backend.js +53 -2
- package/dist/db/adapters/sqlite-storage-backend.js.map +1 -1
- package/dist/db/connection.d.ts +5 -0
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +9 -0
- package/dist/db/connection.js.map +1 -1
- package/dist/db/types/repository.d.ts +34 -0
- package/dist/db/types/repository.d.ts.map +1 -1
- package/dist/errors.d.ts +27 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +51 -0
- package/dist/errors.js.map +1 -0
- package/dist/models/Task.d.ts +2 -0
- package/dist/models/Task.d.ts.map +1 -1
- package/dist/services/ClaudeProcessService.d.ts.map +1 -1
- package/dist/services/ClaudeProcessService.js +2 -1
- package/dist/services/ClaudeProcessService.js.map +1 -1
- package/dist/services/CommentService.d.ts.map +1 -1
- package/dist/services/CommentService.js +3 -2
- package/dist/services/CommentService.js.map +1 -1
- package/dist/services/ExportImportService.d.ts.map +1 -1
- package/dist/services/ExportImportService.js +17 -15
- package/dist/services/ExportImportService.js.map +1 -1
- package/dist/services/ProcessService.d.ts +54 -0
- package/dist/services/ProcessService.d.ts.map +1 -0
- package/dist/services/ProcessService.js +147 -0
- package/dist/services/ProcessService.js.map +1 -0
- package/dist/services/TagService.d.ts.map +1 -1
- package/dist/services/TagService.js +7 -6
- package/dist/services/TagService.js.map +1 -1
- package/dist/services/TaskBlockService.d.ts.map +1 -1
- package/dist/services/TaskBlockService.js +5 -4
- package/dist/services/TaskBlockService.js.map +1 -1
- package/dist/services/TaskService.d.ts +2 -0
- package/dist/services/TaskService.d.ts.map +1 -1
- package/dist/services/TaskService.js +28 -10
- package/dist/services/TaskService.js.map +1 -1
- package/dist/services/TaskTagService.d.ts.map +1 -1
- package/dist/services/TaskTagService.js +4 -3
- package/dist/services/TaskTagService.js.map +1 -1
- package/dist/services/TmuxService.d.ts +2 -0
- package/dist/services/TmuxService.d.ts.map +1 -0
- package/dist/services/TmuxService.js +7 -0
- package/dist/services/TmuxService.js.map +1 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +3 -1
- package/dist/services/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/models/Attachment.d.ts +0 -25
- package/dist/models/Attachment.d.ts.map +0 -1
- package/dist/models/Attachment.js +0 -7
- package/dist/models/Attachment.js.map +0 -1
- package/dist/services/AttachmentService.d.ts +0 -62
- package/dist/services/AttachmentService.d.ts.map +0 -1
- package/dist/services/AttachmentService.js +0 -95
- package/dist/services/AttachmentService.js.map +0 -1
package/README.ja.md
CHANGED
|
@@ -279,6 +279,60 @@ agkan task count --status in_progress
|
|
|
279
279
|
agkan task count -s in_progress -q
|
|
280
280
|
```
|
|
281
281
|
|
|
282
|
+
### カンバンボード (Web UI)
|
|
283
|
+
|
|
284
|
+
ブラウザでローカルのカンバンボードビューアを起動:
|
|
285
|
+
```bash
|
|
286
|
+
agkan board
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
カスタムポートを指定:
|
|
290
|
+
```bash
|
|
291
|
+
agkan board -p 3000
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
デフォルトでは `http://localhost:8080` でボードが提供されます。
|
|
295
|
+
|
|
296
|
+
#### ボードのClaude連携機能
|
|
297
|
+
|
|
298
|
+
ボードUIにはブラウザから直接Claudeを実行するための機能が組み込まれています:
|
|
299
|
+
|
|
300
|
+
- **Runボタン**: タスクカードにある「Run」ボタンをクリックすると、そのタスクに対して `claude` を起動します。ボタン横のドロップダウンからプランモードで実行することもできます。
|
|
301
|
+
- **Planボタン**: タスクを実行せずに計画のみを生成するプランモードで `claude` を起動します。
|
|
302
|
+
- **ストリームモーダル**: Claude実行中はモーダルウィンドウにリアルタイムで出力が表示されます。「Stop」ボタンでプロセスを終了できます。
|
|
303
|
+
- **実行中インジケーター**: Claudeプロセスが動作中の場合、ヘッダーにインジケーターが表示されます。
|
|
304
|
+
- **実行ログタブ**: タスク詳細パネルの「Run Logs」タブに、過去のClaude実行履歴(タイムスタンプと全出力)が表示されます。
|
|
305
|
+
|
|
306
|
+
### Claudeプロセスの状態確認
|
|
307
|
+
|
|
308
|
+
現在実行中のClaudeプロセスを一覧表示します(ボードサーバーが起動している必要があります):
|
|
309
|
+
```bash
|
|
310
|
+
agkan ps
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
カスタムポートのボードサーバーに接続:
|
|
314
|
+
```bash
|
|
315
|
+
agkan ps --port 3000
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
このコマンドはボードサーバーに問い合わせて、現在実行中のClaudeプロセスとそれに関連するタスクを表示します。
|
|
319
|
+
|
|
320
|
+
JSON出力フォーマット:
|
|
321
|
+
```bash
|
|
322
|
+
agkan ps --json
|
|
323
|
+
```
|
|
324
|
+
```json
|
|
325
|
+
{
|
|
326
|
+
"processes": [
|
|
327
|
+
{
|
|
328
|
+
"taskId": 42,
|
|
329
|
+
"title": "機能Xの実装",
|
|
330
|
+
"command": "claude"
|
|
331
|
+
}
|
|
332
|
+
]
|
|
333
|
+
}
|
|
334
|
+
```
|
|
335
|
+
|
|
282
336
|
### ヘルプの表示
|
|
283
337
|
|
|
284
338
|
コマンド一覧:
|
|
@@ -298,7 +352,7 @@ agkan task add --help
|
|
|
298
352
|
|
|
299
353
|
## JSON出力フォーマット
|
|
300
354
|
|
|
301
|
-
agkanは
|
|
355
|
+
agkanは10のデータ取得・表示コマンドで、機械可読なJSON出力をサポートしています。`--json`フラグを追加することで、人間が読みやすいテキストの代わりに構造化されたデータを出力できます。
|
|
302
356
|
|
|
303
357
|
### 対応コマンド
|
|
304
358
|
|
|
@@ -314,6 +368,7 @@ agkanは9つのデータ取得・表示コマンドで、機械可読なJSON出
|
|
|
314
368
|
- `task tag list` - 全タグをタスク数と共に一覧表示
|
|
315
369
|
- `task tag show` - 特定のタスクのタグを表示
|
|
316
370
|
- `task meta list` - タスクのメタデータ一覧を表示
|
|
371
|
+
- `ps` - 現在実行中のClaudeプロセスを一覧表示
|
|
317
372
|
|
|
318
373
|
### 出力構造
|
|
319
374
|
|
|
@@ -921,246 +976,15 @@ board:
|
|
|
921
976
|
|
|
922
977
|
## プロジェクト構成
|
|
923
978
|
|
|
924
|
-
|
|
925
|
-
agkan/
|
|
926
|
-
├── bin/
|
|
927
|
-
│ └── agkan # CLIエントリーポイント
|
|
928
|
-
├── src/
|
|
929
|
-
│ ├── cli/
|
|
930
|
-
│ │ ├── commands/
|
|
931
|
-
│ │ │ ├── block/ # ブロック関係コマンド
|
|
932
|
-
│ │ │ │ ├── add.ts
|
|
933
|
-
│ │ │ │ ├── list.ts
|
|
934
|
-
│ │ │ │ └── remove.ts
|
|
935
|
-
│ │ │ ├── meta/ # メタデータコマンド
|
|
936
|
-
│ │ │ │ ├── delete.ts
|
|
937
|
-
│ │ │ │ ├── get.ts
|
|
938
|
-
│ │ │ │ ├── list.ts
|
|
939
|
-
│ │ │ │ └── set.ts
|
|
940
|
-
│ │ │ ├── tag/ # タグコマンド
|
|
941
|
-
│ │ │ │ ├── add.ts
|
|
942
|
-
│ │ │ │ ├── attach.ts
|
|
943
|
-
│ │ │ │ ├── delete.ts
|
|
944
|
-
│ │ │ │ ├── detach.ts
|
|
945
|
-
│ │ │ │ ├── list.ts
|
|
946
|
-
│ │ │ │ └── show.ts
|
|
947
|
-
│ │ │ └── task/ # タスクコマンド
|
|
948
|
-
│ │ │ ├── add.ts
|
|
949
|
-
│ │ │ ├── count.ts
|
|
950
|
-
│ │ │ ├── delete.ts
|
|
951
|
-
│ │ │ ├── find.ts
|
|
952
|
-
│ │ │ ├── get.ts
|
|
953
|
-
│ │ │ ├── list.ts
|
|
954
|
-
│ │ │ ├── update-parent.ts
|
|
955
|
-
│ │ │ └── update.ts
|
|
956
|
-
│ │ ├── utils/ # CLIユーティリティ
|
|
957
|
-
│ │ └── index.ts # CLIエントリー・コマンド登録
|
|
958
|
-
│ ├── db/
|
|
959
|
-
│ │ ├── config.ts # DB設定
|
|
960
|
-
│ │ ├── connection.ts # データベース接続管理
|
|
961
|
-
│ │ ├── schema.ts # スキーマ定義・マイグレーション
|
|
962
|
-
│ │ └── reset.ts # テスト用DBリセット
|
|
963
|
-
│ ├── models/
|
|
964
|
-
│ │ ├── Task.ts # タスクモデル
|
|
965
|
-
│ │ ├── Tag.ts # タグモデル
|
|
966
|
-
│ │ ├── TaskBlock.ts # ブロック関係モデル
|
|
967
|
-
│ │ ├── TaskMetadata.ts # メタデータモデル
|
|
968
|
-
│ │ ├── TaskTag.ts # タスク-タグ関連モデル
|
|
969
|
-
│ │ └── index.ts
|
|
970
|
-
│ ├── services/
|
|
971
|
-
│ │ ├── TaskService.ts # タスク管理ビジネスロジック
|
|
972
|
-
│ │ ├── TagService.ts # タグ管理ビジネスロジック
|
|
973
|
-
│ │ ├── TaskBlockService.ts # ブロック関係管理
|
|
974
|
-
│ │ ├── TaskTagService.ts # タスク-タグ関連管理
|
|
975
|
-
│ │ ├── MetadataService.ts # メタデータ管理
|
|
976
|
-
│ │ ├── FileService.ts # ファイル読み込み
|
|
977
|
-
│ │ └── index.ts
|
|
978
|
-
│ └── utils/
|
|
979
|
-
│ ├── format.ts # フォーマットユーティリティ
|
|
980
|
-
│ ├── cycle-detector.ts # 循環参照検出
|
|
981
|
-
│ ├── input-validators.ts # 入力バリデーション
|
|
982
|
-
│ └── security.ts # セキュリティユーティリティ
|
|
983
|
-
├── dist/ # ビルド出力ディレクトリ
|
|
984
|
-
├── package.json
|
|
985
|
-
├── tsconfig.json
|
|
986
|
-
└── README.md
|
|
987
|
-
```
|
|
979
|
+
詳細なディレクトリ構成は [docs/project-structure.ja.md](docs/project-structure.ja.md) を参照してください。
|
|
988
980
|
|
|
989
981
|
## データベーススキーマ
|
|
990
982
|
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
| カラム名 | 型 | 説明 |
|
|
994
|
-
|---------|-----|------|
|
|
995
|
-
| id | INTEGER | 主キー(自動採番) |
|
|
996
|
-
| title | TEXT | タスクタイトル(必須) |
|
|
997
|
-
| body | TEXT | タスク本文 |
|
|
998
|
-
| status | TEXT | ステータス(icebox, backlog, ready, in_progress, review, done, closed) |
|
|
999
|
-
| author | TEXT | 作成者 |
|
|
1000
|
-
| parent_id | INTEGER | 親タスクID(外部キー、NULL可) |
|
|
1001
|
-
| created_at | TEXT | 作成日時(ISO 8601形式) |
|
|
1002
|
-
| updated_at | TEXT | 更新日時(ISO 8601形式) |
|
|
1003
|
-
|
|
1004
|
-
注意事項:
|
|
1005
|
-
- `parent_id`は親タスクが削除されると自動的にNULLに設定されます(ON DELETE SET NULL)
|
|
1006
|
-
|
|
1007
|
-
### attachments テーブル
|
|
1008
|
-
|
|
1009
|
-
| カラム名 | 型 | 説明 |
|
|
1010
|
-
|---------|-----|------|
|
|
1011
|
-
| id | INTEGER | 主キー(自動採番) |
|
|
1012
|
-
| task_id | INTEGER | タスクID(外部キー) |
|
|
1013
|
-
| file_path | TEXT | ファイルパス(必須) |
|
|
1014
|
-
| created_at | TEXT | 作成日時(ISO 8601形式) |
|
|
1015
|
-
|
|
1016
|
-
### task_blocks テーブル
|
|
1017
|
-
|
|
1018
|
-
| カラム名 | 型 | 説明 |
|
|
1019
|
-
|---------|-----|------|
|
|
1020
|
-
| id | INTEGER | 主キー(自動採番) |
|
|
1021
|
-
| blocker_task_id | INTEGER | ブロックするタスクID(外部キー) |
|
|
1022
|
-
| blocked_task_id | INTEGER | ブロックされるタスクID(外部キー) |
|
|
1023
|
-
| created_at | TEXT | 作成日時(ISO 8601形式) |
|
|
1024
|
-
|
|
1025
|
-
注意事項:
|
|
1026
|
-
- `blocker_task_id`と`blocked_task_id`の組み合わせはユニーク制約があります
|
|
1027
|
-
- いずれかのタスクが削除されるとブロック関係も自動的に削除されます(ON DELETE CASCADE)
|
|
1028
|
-
|
|
1029
|
-
### tags テーブル
|
|
1030
|
-
|
|
1031
|
-
| カラム名 | 型 | 説明 |
|
|
1032
|
-
|---------|-----|------|
|
|
1033
|
-
| id | INTEGER | 主キー(自動採番) |
|
|
1034
|
-
| name | TEXT | タグ名(必須、ユニーク) |
|
|
1035
|
-
| created_at | TEXT | 作成日時(ISO 8601形式) |
|
|
1036
|
-
|
|
1037
|
-
### task_tags テーブル
|
|
1038
|
-
|
|
1039
|
-
| カラム名 | 型 | 説明 |
|
|
1040
|
-
|---------|-----|------|
|
|
1041
|
-
| id | INTEGER | 主キー(自動採番) |
|
|
1042
|
-
| task_id | INTEGER | タスクID(外部キー) |
|
|
1043
|
-
| tag_id | INTEGER | タグID(外部キー) |
|
|
1044
|
-
| created_at | TEXT | 作成日時(ISO 8601形式) |
|
|
1045
|
-
|
|
1046
|
-
注意事項:
|
|
1047
|
-
- `task_id`と`tag_id`の組み合わせはユニーク制約があります
|
|
1048
|
-
- タスクまたはタグが削除されると関連付けも自動的に削除されます(ON DELETE CASCADE)
|
|
1049
|
-
|
|
1050
|
-
### task_metadata テーブル
|
|
1051
|
-
|
|
1052
|
-
| カラム名 | 型 | 説明 |
|
|
1053
|
-
|---------|-----|------|
|
|
1054
|
-
| id | INTEGER | 主キー(自動採番) |
|
|
1055
|
-
| task_id | INTEGER | タスクID(外部キー) |
|
|
1056
|
-
| key | TEXT | メタデータのキー |
|
|
1057
|
-
| value | TEXT | メタデータの値 |
|
|
1058
|
-
| created_at | TEXT | 作成日時(ISO 8601形式) |
|
|
1059
|
-
|
|
1060
|
-
注意事項:
|
|
1061
|
-
- `task_id`と`key`の組み合わせはユニーク制約があります
|
|
1062
|
-
- タスクが削除されるとメタデータも自動的に削除されます(ON DELETE CASCADE)
|
|
983
|
+
詳細なスキーマ情報は [docs/database-schema.ja.md](docs/database-schema.ja.md) を参照してください。
|
|
1063
984
|
|
|
1064
985
|
## 開発
|
|
1065
986
|
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
agkan自体の開発に参加したい開発者向けの手順:
|
|
1069
|
-
|
|
1070
|
-
1. リポジトリをクローン:
|
|
1071
|
-
```bash
|
|
1072
|
-
git clone https://github.com/gendosu/agkan.git
|
|
1073
|
-
cd agkan
|
|
1074
|
-
```
|
|
1075
|
-
|
|
1076
|
-
2. 依存パッケージをインストール:
|
|
1077
|
-
```bash
|
|
1078
|
-
pnpm install
|
|
1079
|
-
```
|
|
1080
|
-
|
|
1081
|
-
3. TypeScriptコードをビルド:
|
|
1082
|
-
```bash
|
|
1083
|
-
pnpm run build
|
|
1084
|
-
```
|
|
1085
|
-
|
|
1086
|
-
4. グローバルコマンドとして登録:
|
|
1087
|
-
```bash
|
|
1088
|
-
pnpm link --global
|
|
1089
|
-
```
|
|
1090
|
-
|
|
1091
|
-
### 開発ガイドライン
|
|
1092
|
-
|
|
1093
|
-
包括的な開発情報については、以下のドキュメントを参照してください:
|
|
1094
|
-
|
|
1095
|
-
- **[TESTING.md](TESTING.md)** - テストガイド、カバレッジ実行、テストパターン
|
|
1096
|
-
- **[CONTRIBUTING.md](CONTRIBUTING.md)** - コントリビューションガイドラインとTDDプラクティス
|
|
1097
|
-
- **[docs/TDD-GUIDE.md](docs/TDD-GUIDE.md)** - 実践例を含むテスト駆動開発ガイド
|
|
1098
|
-
- **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** - プロジェクトアーキテクチャとデザインパターン
|
|
1099
|
-
|
|
1100
|
-
### コード品質
|
|
1101
|
-
|
|
1102
|
-
このプロジェクトではコード品質のためにESLintとPrettierを使用しています:
|
|
1103
|
-
|
|
1104
|
-
```bash
|
|
1105
|
-
pnpm run lint # コードをチェック
|
|
1106
|
-
pnpm run lint:fix # 問題を自動修正
|
|
1107
|
-
pnpm run format # コードをフォーマット
|
|
1108
|
-
pnpm run check # 全チェックを実行
|
|
1109
|
-
```
|
|
1110
|
-
|
|
1111
|
-
### テスト
|
|
1112
|
-
|
|
1113
|
-
#### ユニットテスト
|
|
1114
|
-
|
|
1115
|
-
Vitestを使用したユニットテストを実行:
|
|
1116
|
-
```bash
|
|
1117
|
-
pnpm test
|
|
1118
|
-
```
|
|
1119
|
-
|
|
1120
|
-
全てのサービス層とモデル層がテストされています。
|
|
1121
|
-
|
|
1122
|
-
#### E2Eテスト
|
|
1123
|
-
|
|
1124
|
-
実際のCLIコマンドを実行する包括的なE2Eテストを実行:
|
|
1125
|
-
```bash
|
|
1126
|
-
pnpm run test:e2e
|
|
1127
|
-
```
|
|
1128
|
-
|
|
1129
|
-
E2Eテストは以下の機能をカバーします:
|
|
1130
|
-
- ビルドとユニットテスト
|
|
1131
|
-
- タグ管理機能(作成、一覧、削除、重複チェック)
|
|
1132
|
-
- タグ付与機能(付与、解除、表示、重複チェック)
|
|
1133
|
-
- タグフィルタリング(単一タグ、複数タグ、ステータス組み合わせ)
|
|
1134
|
-
- CASCADE削除(データベース整合性確認)
|
|
1135
|
-
|
|
1136
|
-
テストはローカルのテスト用データベース(`.agkan-test/test-e2e.db`)を使用し、実行後に自動的にクリーンアップされます。
|
|
1137
|
-
|
|
1138
|
-
### ビルド
|
|
1139
|
-
|
|
1140
|
-
```bash
|
|
1141
|
-
pnpm run build
|
|
1142
|
-
```
|
|
1143
|
-
|
|
1144
|
-
### 開発時の自動ビルド
|
|
1145
|
-
|
|
1146
|
-
```bash
|
|
1147
|
-
pnpm run dev
|
|
1148
|
-
```
|
|
1149
|
-
|
|
1150
|
-
### TypeScript型チェック
|
|
1151
|
-
|
|
1152
|
-
```bash
|
|
1153
|
-
npx tsc --noEmit
|
|
1154
|
-
```
|
|
1155
|
-
|
|
1156
|
-
### データベースの初期化
|
|
1157
|
-
|
|
1158
|
-
データベースは最初のコマンド実行時に自動的に作成されます。手動で再作成する場合:
|
|
1159
|
-
|
|
1160
|
-
```bash
|
|
1161
|
-
rm -rf data/agkan.db
|
|
1162
|
-
agkan task list # データベースが再作成されます
|
|
1163
|
-
```
|
|
987
|
+
セットアップ手順、テスト、ビルド情報については [docs/development.ja.md](docs/development.ja.md) を参照してください。
|
|
1164
988
|
|
|
1165
989
|
## ライセンス
|
|
1166
990
|
|
|
@@ -1168,4 +992,4 @@ ISC
|
|
|
1168
992
|
|
|
1169
993
|
## 作成者
|
|
1170
994
|
|
|
1171
|
-
|
|
995
|
+
GENDOSU
|
package/README.md
CHANGED
|
@@ -534,6 +534,46 @@ agkan board -p 3000
|
|
|
534
534
|
|
|
535
535
|
The board is served at `http://localhost:8080` by default.
|
|
536
536
|
|
|
537
|
+
#### Claude Integration in the Board
|
|
538
|
+
|
|
539
|
+
The board UI includes built-in Claude integration for running tasks directly from the browser:
|
|
540
|
+
|
|
541
|
+
- **Run button**: Each task card has a "Run" button that launches `claude` for that task. A dropdown arrow next to the button also allows running in plan mode.
|
|
542
|
+
- **Plan button**: Runs `claude` in plan mode to generate a plan for the task without executing.
|
|
543
|
+
- **Stream modal**: When Claude is running, a modal window displays the live output stream in real time. A "Stop" button allows terminating the process.
|
|
544
|
+
- **Running indicator**: A header indicator shows when any Claude process is currently active.
|
|
545
|
+
- **Run Logs tab**: The task detail panel includes a "Run Logs" tab that shows the history of all past Claude executions for that task, with timestamps and full output.
|
|
546
|
+
|
|
547
|
+
### Claude Process Status
|
|
548
|
+
|
|
549
|
+
List currently executing Claude processes (requires the board server to be running):
|
|
550
|
+
```bash
|
|
551
|
+
agkan ps
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
Connect to a board server on a custom port:
|
|
555
|
+
```bash
|
|
556
|
+
agkan ps --port 3000
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
This command queries the board server to show which Claude processes are currently running and which tasks they are associated with.
|
|
560
|
+
|
|
561
|
+
JSON output format:
|
|
562
|
+
```bash
|
|
563
|
+
agkan ps --json
|
|
564
|
+
```
|
|
565
|
+
```json
|
|
566
|
+
{
|
|
567
|
+
"processes": [
|
|
568
|
+
{
|
|
569
|
+
"taskId": 42,
|
|
570
|
+
"title": "Implement feature X",
|
|
571
|
+
"command": "claude"
|
|
572
|
+
}
|
|
573
|
+
]
|
|
574
|
+
}
|
|
575
|
+
```
|
|
576
|
+
|
|
537
577
|
### Display Help
|
|
538
578
|
|
|
539
579
|
Show command list:
|
|
@@ -553,7 +593,7 @@ agkan task add --help
|
|
|
553
593
|
|
|
554
594
|
## JSON Output Format
|
|
555
595
|
|
|
556
|
-
agkan supports machine-readable JSON output for
|
|
596
|
+
agkan supports machine-readable JSON output for 10 data retrieval and display commands. Add the `--json` flag to output structured data instead of human-readable text.
|
|
557
597
|
|
|
558
598
|
### Supported Commands
|
|
559
599
|
|
|
@@ -569,6 +609,7 @@ The following commands support JSON output:
|
|
|
569
609
|
- `task tag list` - List all tags with task counts
|
|
570
610
|
- `task tag show` - Show tags for a specific task
|
|
571
611
|
- `task meta list` - List all metadata for a task
|
|
612
|
+
- `ps` - List currently executing Claude processes
|
|
572
613
|
|
|
573
614
|
### Output Structure
|
|
574
615
|
|
|
@@ -950,249 +991,15 @@ For detailed information about planned features, see [docs/planned-features.md](
|
|
|
950
991
|
|
|
951
992
|
## Project Structure
|
|
952
993
|
|
|
953
|
-
|
|
954
|
-
agkan/
|
|
955
|
-
├── bin/
|
|
956
|
-
│ └── agkan # CLI entry point
|
|
957
|
-
├── src/
|
|
958
|
-
│ ├── cli/
|
|
959
|
-
│ │ ├── commands/
|
|
960
|
-
│ │ │ ├── block/ # Blocking relationship commands
|
|
961
|
-
│ │ │ │ ├── add.ts
|
|
962
|
-
│ │ │ │ ├── list.ts
|
|
963
|
-
│ │ │ │ └── remove.ts
|
|
964
|
-
│ │ │ ├── meta/ # Metadata commands
|
|
965
|
-
│ │ │ │ ├── delete.ts
|
|
966
|
-
│ │ │ │ ├── get.ts
|
|
967
|
-
│ │ │ │ ├── list.ts
|
|
968
|
-
│ │ │ │ └── set.ts
|
|
969
|
-
│ │ │ ├── tag/ # Tag commands
|
|
970
|
-
│ │ │ │ ├── add.ts
|
|
971
|
-
│ │ │ │ ├── attach.ts
|
|
972
|
-
│ │ │ │ ├── delete.ts
|
|
973
|
-
│ │ │ │ ├── detach.ts
|
|
974
|
-
│ │ │ │ ├── list.ts
|
|
975
|
-
│ │ │ │ └── show.ts
|
|
976
|
-
│ │ │ ├── board.ts # Kanban board command
|
|
977
|
-
│ │ │ └── task/ # Task commands
|
|
978
|
-
│ │ │ ├── add.ts
|
|
979
|
-
│ │ │ ├── count.ts
|
|
980
|
-
│ │ │ ├── delete.ts
|
|
981
|
-
│ │ │ ├── find.ts
|
|
982
|
-
│ │ │ ├── get.ts
|
|
983
|
-
│ │ │ ├── list.ts
|
|
984
|
-
│ │ │ ├── update-parent.ts
|
|
985
|
-
│ │ │ └── update.ts
|
|
986
|
-
│ │ ├── utils/ # CLI utilities
|
|
987
|
-
│ │ └── index.ts # CLI entry point and command registration
|
|
988
|
-
│ ├── board/
|
|
989
|
-
│ │ └── server.ts # Kanban board web server (Hono)
|
|
990
|
-
│ ├── db/
|
|
991
|
-
│ │ ├── config.ts # DB configuration
|
|
992
|
-
│ │ ├── connection.ts # Database connection management
|
|
993
|
-
│ │ ├── schema.ts # Schema definition and migration
|
|
994
|
-
│ │ └── reset.ts # DB reset for testing
|
|
995
|
-
│ ├── models/
|
|
996
|
-
│ │ ├── Task.ts # Task model
|
|
997
|
-
│ │ ├── Tag.ts # Tag model
|
|
998
|
-
│ │ ├── TaskBlock.ts # Blocking relationship model
|
|
999
|
-
│ │ ├── TaskMetadata.ts # Metadata model
|
|
1000
|
-
│ │ ├── TaskTag.ts # Task-tag association model
|
|
1001
|
-
│ │ └── index.ts
|
|
1002
|
-
│ ├── services/
|
|
1003
|
-
│ │ ├── TaskService.ts # Task management business logic
|
|
1004
|
-
│ │ ├── TagService.ts # Tag management business logic
|
|
1005
|
-
│ │ ├── TaskBlockService.ts # Blocking relationship management
|
|
1006
|
-
│ │ ├── TaskTagService.ts # Task-tag association management
|
|
1007
|
-
│ │ ├── MetadataService.ts # Metadata management
|
|
1008
|
-
│ │ ├── FileService.ts # File reading
|
|
1009
|
-
│ │ └── index.ts
|
|
1010
|
-
│ └── utils/
|
|
1011
|
-
│ ├── format.ts # Format utilities
|
|
1012
|
-
│ ├── cycle-detector.ts # Circular reference detection
|
|
1013
|
-
│ ├── input-validators.ts # Input validation
|
|
1014
|
-
│ └── security.ts # Security utilities
|
|
1015
|
-
├── dist/ # Build output directory
|
|
1016
|
-
├── package.json
|
|
1017
|
-
├── tsconfig.json
|
|
1018
|
-
└── README.md
|
|
1019
|
-
```
|
|
994
|
+
See [docs/project-structure.md](docs/project-structure.md) for the full directory layout.
|
|
1020
995
|
|
|
1021
996
|
## Database Schema
|
|
1022
997
|
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
| Column Name | Type | Description |
|
|
1026
|
-
|-------------|------|-------------|
|
|
1027
|
-
| id | INTEGER | Primary key (auto-increment) |
|
|
1028
|
-
| title | TEXT | Task title (required) |
|
|
1029
|
-
| body | TEXT | Task body |
|
|
1030
|
-
| status | TEXT | Status (icebox, backlog, ready, in_progress, review, done, closed) |
|
|
1031
|
-
| author | TEXT | Creator/author |
|
|
1032
|
-
| parent_id | INTEGER | Parent task ID (foreign key, nullable) |
|
|
1033
|
-
| created_at | TEXT | Creation timestamp (ISO 8601 format) |
|
|
1034
|
-
| updated_at | TEXT | Update timestamp (ISO 8601 format) |
|
|
1035
|
-
|
|
1036
|
-
Notes:
|
|
1037
|
-
- `parent_id` is automatically set to NULL when parent task is deleted (ON DELETE SET NULL)
|
|
1038
|
-
|
|
1039
|
-
### attachments Table
|
|
1040
|
-
|
|
1041
|
-
| Column Name | Type | Description |
|
|
1042
|
-
|-------------|------|-------------|
|
|
1043
|
-
| id | INTEGER | Primary key (auto-increment) |
|
|
1044
|
-
| task_id | INTEGER | Task ID (foreign key) |
|
|
1045
|
-
| file_path | TEXT | File path (required) |
|
|
1046
|
-
| created_at | TEXT | Creation timestamp (ISO 8601 format) |
|
|
1047
|
-
|
|
1048
|
-
### task_blocks Table
|
|
1049
|
-
|
|
1050
|
-
| Column Name | Type | Description |
|
|
1051
|
-
|-------------|------|-------------|
|
|
1052
|
-
| id | INTEGER | Primary key (auto-increment) |
|
|
1053
|
-
| blocker_task_id | INTEGER | Task ID that blocks (foreign key) |
|
|
1054
|
-
| blocked_task_id | INTEGER | Task ID that is blocked (foreign key) |
|
|
1055
|
-
| created_at | TEXT | Creation timestamp (ISO 8601 format) |
|
|
1056
|
-
|
|
1057
|
-
Notes:
|
|
1058
|
-
- `blocker_task_id` and `blocked_task_id` combination has a unique constraint
|
|
1059
|
-
- Blocking relationships are automatically deleted when either task is deleted (ON DELETE CASCADE)
|
|
1060
|
-
|
|
1061
|
-
### tags Table
|
|
1062
|
-
|
|
1063
|
-
| Column Name | Type | Description |
|
|
1064
|
-
|-------------|------|-------------|
|
|
1065
|
-
| id | INTEGER | Primary key (auto-increment) |
|
|
1066
|
-
| name | TEXT | Tag name (required, unique) |
|
|
1067
|
-
| created_at | TEXT | Creation timestamp (ISO 8601 format) |
|
|
1068
|
-
|
|
1069
|
-
### task_tags Table
|
|
1070
|
-
|
|
1071
|
-
| Column Name | Type | Description |
|
|
1072
|
-
|-------------|------|-------------|
|
|
1073
|
-
| id | INTEGER | Primary key (auto-increment) |
|
|
1074
|
-
| task_id | INTEGER | Task ID (foreign key) |
|
|
1075
|
-
| tag_id | INTEGER | Tag ID (foreign key) |
|
|
1076
|
-
| created_at | TEXT | Creation timestamp (ISO 8601 format) |
|
|
1077
|
-
|
|
1078
|
-
Notes:
|
|
1079
|
-
- `task_id` and `tag_id` combination has a unique constraint
|
|
1080
|
-
- Associations are automatically deleted when task or tag is deleted (ON DELETE CASCADE)
|
|
1081
|
-
|
|
1082
|
-
### task_metadata Table
|
|
1083
|
-
|
|
1084
|
-
| Column Name | Type | Description |
|
|
1085
|
-
|-------------|------|-------------|
|
|
1086
|
-
| id | INTEGER | Primary key (auto-increment) |
|
|
1087
|
-
| task_id | INTEGER | Task ID (foreign key) |
|
|
1088
|
-
| key | TEXT | Metadata key |
|
|
1089
|
-
| value | TEXT | Metadata value |
|
|
1090
|
-
| created_at | TEXT | Creation timestamp (ISO 8601 format) |
|
|
1091
|
-
|
|
1092
|
-
Notes:
|
|
1093
|
-
- `task_id` and `key` combination has a unique constraint
|
|
1094
|
-
- Metadata is automatically deleted when the task is deleted (ON DELETE CASCADE)
|
|
998
|
+
See [docs/database-schema.md](docs/database-schema.md) for the full schema reference.
|
|
1095
999
|
|
|
1096
1000
|
## Development
|
|
1097
1001
|
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
For contributors and developers who want to work on agkan itself:
|
|
1101
|
-
|
|
1102
|
-
1. Clone the repository:
|
|
1103
|
-
```bash
|
|
1104
|
-
git clone https://github.com/gendosu/agkan.git
|
|
1105
|
-
cd agkan
|
|
1106
|
-
```
|
|
1107
|
-
|
|
1108
|
-
2. Install dependencies:
|
|
1109
|
-
```bash
|
|
1110
|
-
pnpm install
|
|
1111
|
-
```
|
|
1112
|
-
|
|
1113
|
-
3. Build the TypeScript code:
|
|
1114
|
-
```bash
|
|
1115
|
-
pnpm run build
|
|
1116
|
-
```
|
|
1117
|
-
|
|
1118
|
-
4. Register as a global command:
|
|
1119
|
-
```bash
|
|
1120
|
-
pnpm link --global
|
|
1121
|
-
```
|
|
1122
|
-
|
|
1123
|
-
### Development Guidelines
|
|
1124
|
-
|
|
1125
|
-
For comprehensive development information, see the following documentation:
|
|
1126
|
-
|
|
1127
|
-
- **[TESTING.md](TESTING.md)** - Testing guide, coverage execution, and test patterns
|
|
1128
|
-
- **[CONTRIBUTING.md](CONTRIBUTING.md)** - Contribution guidelines and TDD practices
|
|
1129
|
-
- **[docs/TDD-GUIDE.md](docs/TDD-GUIDE.md)** - Test-Driven Development guide with practical examples
|
|
1130
|
-
- **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** - Project architecture and design patterns
|
|
1131
|
-
|
|
1132
|
-
### Code Quality
|
|
1133
|
-
|
|
1134
|
-
This project uses ESLint and Prettier for code quality:
|
|
1135
|
-
|
|
1136
|
-
```bash
|
|
1137
|
-
pnpm run lint # Check code
|
|
1138
|
-
pnpm run lint:fix # Auto-fix issues
|
|
1139
|
-
pnpm run format # Format code
|
|
1140
|
-
pnpm run check # Run all checks
|
|
1141
|
-
```
|
|
1142
|
-
|
|
1143
|
-
### Testing
|
|
1144
|
-
|
|
1145
|
-
#### Unit Tests
|
|
1146
|
-
|
|
1147
|
-
Run unit tests with Vitest:
|
|
1148
|
-
```bash
|
|
1149
|
-
pnpm test
|
|
1150
|
-
```
|
|
1151
|
-
|
|
1152
|
-
All service and model layers are tested.
|
|
1153
|
-
|
|
1154
|
-
#### End-to-End Tests
|
|
1155
|
-
|
|
1156
|
-
Run comprehensive e2e tests that execute actual CLI commands:
|
|
1157
|
-
```bash
|
|
1158
|
-
pnpm run test:e2e
|
|
1159
|
-
```
|
|
1160
|
-
|
|
1161
|
-
E2E tests cover the following features:
|
|
1162
|
-
- Build and unit tests
|
|
1163
|
-
- Tag management (create, list, delete, duplicate check)
|
|
1164
|
-
- Tag assignment (attach, detach, display, duplicate check)
|
|
1165
|
-
- Tag filtering (single tag, multiple tags, status combinations)
|
|
1166
|
-
- CASCADE delete (database integrity verification)
|
|
1167
|
-
|
|
1168
|
-
Tests use a local test database (`.agkan-test/test-e2e.db`) and are automatically cleaned up after execution.
|
|
1169
|
-
|
|
1170
|
-
### Build
|
|
1171
|
-
|
|
1172
|
-
```bash
|
|
1173
|
-
pnpm run build
|
|
1174
|
-
```
|
|
1175
|
-
|
|
1176
|
-
### Auto-build During Development
|
|
1177
|
-
|
|
1178
|
-
```bash
|
|
1179
|
-
pnpm run dev
|
|
1180
|
-
```
|
|
1181
|
-
|
|
1182
|
-
### TypeScript Type Checking
|
|
1183
|
-
|
|
1184
|
-
```bash
|
|
1185
|
-
npx tsc --noEmit
|
|
1186
|
-
```
|
|
1187
|
-
|
|
1188
|
-
### Initialize Database
|
|
1189
|
-
|
|
1190
|
-
The database is automatically created on first command execution. To manually recreate:
|
|
1191
|
-
|
|
1192
|
-
```bash
|
|
1193
|
-
rm -rf data/agkan.db
|
|
1194
|
-
agkan task list # Database will be recreated
|
|
1195
|
-
```
|
|
1002
|
+
See [docs/development.md](docs/development.md) for setup instructions, testing, and build information.
|
|
1196
1003
|
|
|
1197
1004
|
## License
|
|
1198
1005
|
|
|
@@ -1200,4 +1007,4 @@ ISC
|
|
|
1200
1007
|
|
|
1201
1008
|
## Author
|
|
1202
1009
|
|
|
1203
|
-
|
|
1010
|
+
GENDOSU
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boardRenderer.d.ts","sourceRoot":"","sources":["../../src/board/boardRenderer.ts"],"names":[],"mappings":"AAEA,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,eAAO,MAAM,QAAQ,EAAE,UAAU,EAA8E,CAAC;AAEhH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAQpD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAQpD,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":"AAEA,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,eAAO,MAAM,QAAQ,EAAE,UAAU,EAA8E,CAAC;AAEhH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAQpD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAQpD,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,CA0BnH;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,UAAU,EAClB,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,CAuBR;AAqID,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,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAWvD;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"}
|