agkan 2.14.3 → 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.
Files changed (197) hide show
  1. package/README.ja.md +62 -238
  2. package/README.md +48 -241
  3. package/dist/board/boardFavicon.d.ts +2 -0
  4. package/dist/board/boardFavicon.d.ts.map +1 -0
  5. package/dist/board/boardFavicon.js +5 -0
  6. package/dist/board/boardFavicon.js.map +1 -0
  7. package/dist/board/boardRenderer.d.ts +22 -6
  8. package/dist/board/boardRenderer.d.ts.map +1 -1
  9. package/dist/board/boardRenderer.js +67 -26
  10. package/dist/board/boardRenderer.js.map +1 -1
  11. package/dist/board/boardRoutes.d.ts +4 -2
  12. package/dist/board/boardRoutes.d.ts.map +1 -1
  13. package/dist/board/boardRoutes.js +140 -13
  14. package/dist/board/boardRoutes.js.map +1 -1
  15. package/dist/board/boardStyles.d.ts +1 -1
  16. package/dist/board/boardStyles.d.ts.map +1 -1
  17. package/dist/board/boardStyles.js +62 -8
  18. package/dist/board/boardStyles.js.map +1 -1
  19. package/dist/board/client/board.js +1007 -29
  20. package/dist/board/server.d.ts +3 -2
  21. package/dist/board/server.d.ts.map +1 -1
  22. package/dist/board/server.js +9 -7
  23. package/dist/board/server.js.map +1 -1
  24. package/dist/cli/commands/agent-guide.d.ts.map +1 -1
  25. package/dist/cli/commands/agent-guide.js +6 -0
  26. package/dist/cli/commands/agent-guide.js.map +1 -1
  27. package/dist/cli/commands/board.d.ts.map +1 -1
  28. package/dist/cli/commands/board.js +202 -15
  29. package/dist/cli/commands/board.js.map +1 -1
  30. package/dist/cli/commands/ps.d.ts +7 -0
  31. package/dist/cli/commands/ps.d.ts.map +1 -0
  32. package/dist/cli/commands/ps.js +83 -0
  33. package/dist/cli/commands/ps.js.map +1 -0
  34. package/dist/cli/commands/tag/add.d.ts.map +1 -1
  35. package/dist/cli/commands/tag/add.js +10 -11
  36. package/dist/cli/commands/tag/add.js.map +1 -1
  37. package/dist/cli/commands/tag/attach.d.ts.map +1 -1
  38. package/dist/cli/commands/tag/attach.js +10 -11
  39. package/dist/cli/commands/tag/attach.js.map +1 -1
  40. package/dist/cli/commands/tag/rename.d.ts.map +1 -1
  41. package/dist/cli/commands/tag/rename.js +10 -11
  42. package/dist/cli/commands/tag/rename.js.map +1 -1
  43. package/dist/cli/commands/task/add.js +1 -1
  44. package/dist/cli/commands/task/add.js.map +1 -1
  45. package/dist/cli/commands/task/copy.d.ts +6 -0
  46. package/dist/cli/commands/task/copy.d.ts.map +1 -0
  47. package/dist/cli/commands/task/copy.js +118 -0
  48. package/dist/cli/commands/task/copy.js.map +1 -0
  49. package/dist/cli/commands/task/list.d.ts.map +1 -1
  50. package/dist/cli/commands/task/list.js +37 -17
  51. package/dist/cli/commands/task/list.js.map +1 -1
  52. package/dist/cli/commands/task/update-parent.d.ts.map +1 -1
  53. package/dist/cli/commands/task/update-parent.js +10 -11
  54. package/dist/cli/commands/task/update-parent.js.map +1 -1
  55. package/dist/cli/index.js +6 -0
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/cli/utils/board-daemon.d.ts +7 -0
  58. package/dist/cli/utils/board-daemon.d.ts.map +1 -0
  59. package/dist/cli/utils/board-daemon.js +83 -0
  60. package/dist/cli/utils/board-daemon.js.map +1 -0
  61. package/dist/db/adapters/sqlite-storage-backend.d.ts +27 -0
  62. package/dist/db/adapters/sqlite-storage-backend.d.ts.map +1 -0
  63. package/dist/db/adapters/sqlite-storage-backend.js +498 -0
  64. package/dist/db/adapters/sqlite-storage-backend.js.map +1 -0
  65. package/dist/db/connection.d.ts +19 -0
  66. package/dist/db/connection.d.ts.map +1 -1
  67. package/dist/db/connection.js +37 -2
  68. package/dist/db/connection.js.map +1 -1
  69. package/dist/db/migrations/20260328000000_initial_schema.d.ts +3 -0
  70. package/dist/db/migrations/20260328000000_initial_schema.d.ts.map +1 -0
  71. package/dist/db/migrations/20260328000000_initial_schema.js +218 -0
  72. package/dist/db/migrations/20260328000000_initial_schema.js.map +1 -0
  73. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.d.ts +3 -0
  74. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.d.ts.map +1 -0
  75. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.js +7 -0
  76. package/dist/db/migrations/20260329000000_add_session_id_to_task_run_logs.js.map +1 -0
  77. package/dist/db/migrations/index.d.ts +4 -0
  78. package/dist/db/migrations/index.d.ts.map +1 -0
  79. package/dist/db/migrations/index.js +18 -0
  80. package/dist/db/migrations/index.js.map +1 -0
  81. package/dist/db/migrations/types.d.ts +17 -0
  82. package/dist/db/migrations/types.d.ts.map +1 -0
  83. package/dist/{board/client → db/migrations}/types.js +0 -1
  84. package/dist/db/migrations/types.js.map +1 -0
  85. package/dist/db/reset.d.ts.map +1 -1
  86. package/dist/db/reset.js +8 -3
  87. package/dist/db/reset.js.map +1 -1
  88. package/dist/db/schema.d.ts +4 -4
  89. package/dist/db/schema.d.ts.map +1 -1
  90. package/dist/db/schema.js +22 -207
  91. package/dist/db/schema.js.map +1 -1
  92. package/dist/db/types/repository.d.ts +226 -0
  93. package/dist/db/types/repository.d.ts.map +1 -0
  94. package/dist/db/types/repository.js +15 -0
  95. package/dist/db/types/repository.js.map +1 -0
  96. package/dist/errors.d.ts +27 -0
  97. package/dist/errors.d.ts.map +1 -0
  98. package/dist/errors.js +51 -0
  99. package/dist/errors.js.map +1 -0
  100. package/dist/models/Task.d.ts +2 -0
  101. package/dist/models/Task.d.ts.map +1 -1
  102. package/dist/services/ClaudeProcessService.d.ts +100 -0
  103. package/dist/services/ClaudeProcessService.d.ts.map +1 -0
  104. package/dist/services/ClaudeProcessService.js +279 -0
  105. package/dist/services/ClaudeProcessService.js.map +1 -0
  106. package/dist/services/CommentService.d.ts +3 -3
  107. package/dist/services/CommentService.d.ts.map +1 -1
  108. package/dist/services/CommentService.js +13 -72
  109. package/dist/services/CommentService.js.map +1 -1
  110. package/dist/services/ExportImportService.d.ts +3 -3
  111. package/dist/services/ExportImportService.d.ts.map +1 -1
  112. package/dist/services/ExportImportService.js +29 -31
  113. package/dist/services/ExportImportService.js.map +1 -1
  114. package/dist/services/MetadataService.d.ts +3 -3
  115. package/dist/services/MetadataService.d.ts.map +1 -1
  116. package/dist/services/MetadataService.js +9 -69
  117. package/dist/services/MetadataService.js.map +1 -1
  118. package/dist/services/ProcessService.d.ts +54 -0
  119. package/dist/services/ProcessService.d.ts.map +1 -0
  120. package/dist/services/ProcessService.js +147 -0
  121. package/dist/services/ProcessService.js.map +1 -0
  122. package/dist/services/TagService.d.ts +3 -3
  123. package/dist/services/TagService.d.ts.map +1 -1
  124. package/dist/services/TagService.js +16 -41
  125. package/dist/services/TagService.js.map +1 -1
  126. package/dist/services/TaskBlockService.d.ts +3 -3
  127. package/dist/services/TaskBlockService.d.ts.map +1 -1
  128. package/dist/services/TaskBlockService.js +14 -40
  129. package/dist/services/TaskBlockService.js.map +1 -1
  130. package/dist/services/TaskService.d.ts +5 -23
  131. package/dist/services/TaskService.d.ts.map +1 -1
  132. package/dist/services/TaskService.js +57 -191
  133. package/dist/services/TaskService.js.map +1 -1
  134. package/dist/services/TaskTagService.d.ts +3 -3
  135. package/dist/services/TaskTagService.d.ts.map +1 -1
  136. package/dist/services/TaskTagService.js +23 -86
  137. package/dist/services/TaskTagService.js.map +1 -1
  138. package/dist/services/TmuxService.d.ts +2 -0
  139. package/dist/services/TmuxService.d.ts.map +1 -0
  140. package/dist/services/TmuxService.js +7 -0
  141. package/dist/services/TmuxService.js.map +1 -0
  142. package/dist/services/index.d.ts +2 -0
  143. package/dist/services/index.d.ts.map +1 -1
  144. package/dist/services/index.js +3 -1
  145. package/dist/services/index.js.map +1 -1
  146. package/dist/utils/logger.d.ts +7 -0
  147. package/dist/utils/logger.d.ts.map +1 -0
  148. package/dist/utils/logger.js +18 -0
  149. package/dist/utils/logger.js.map +1 -0
  150. package/package.json +12 -5
  151. package/dist/board/client/addTaskModal.d.ts +0 -2
  152. package/dist/board/client/addTaskModal.d.ts.map +0 -1
  153. package/dist/board/client/addTaskModal.js +0 -64
  154. package/dist/board/client/addTaskModal.js.map +0 -1
  155. package/dist/board/client/autoScroll.d.ts +0 -4
  156. package/dist/board/client/autoScroll.d.ts.map +0 -1
  157. package/dist/board/client/autoScroll.js +0 -59
  158. package/dist/board/client/autoScroll.js.map +0 -1
  159. package/dist/board/client/boardPolling.d.ts +0 -15
  160. package/dist/board/client/boardPolling.d.ts.map +0 -1
  161. package/dist/board/client/boardPolling.js +0 -144
  162. package/dist/board/client/boardPolling.js.map +0 -1
  163. package/dist/board/client/burgerMenu.d.ts +0 -2
  164. package/dist/board/client/burgerMenu.d.ts.map +0 -1
  165. package/dist/board/client/burgerMenu.js +0 -80
  166. package/dist/board/client/burgerMenu.js.map +0 -1
  167. package/dist/board/client/contextMenu.d.ts +0 -2
  168. package/dist/board/client/contextMenu.d.ts.map +0 -1
  169. package/dist/board/client/contextMenu.js +0 -52
  170. package/dist/board/client/contextMenu.js.map +0 -1
  171. package/dist/board/client/detailPanel.d.ts +0 -8
  172. package/dist/board/client/detailPanel.d.ts.map +0 -1
  173. package/dist/board/client/detailPanel.js +0 -565
  174. package/dist/board/client/detailPanel.js.map +0 -1
  175. package/dist/board/client/dragDrop.d.ts +0 -6
  176. package/dist/board/client/dragDrop.d.ts.map +0 -1
  177. package/dist/board/client/dragDrop.js +0 -82
  178. package/dist/board/client/dragDrop.js.map +0 -1
  179. package/dist/board/client/filters.d.ts +0 -6
  180. package/dist/board/client/filters.d.ts.map +0 -1
  181. package/dist/board/client/filters.js +0 -167
  182. package/dist/board/client/filters.js.map +0 -1
  183. package/dist/board/client/main.d.ts +0 -2
  184. package/dist/board/client/main.d.ts.map +0 -1
  185. package/dist/board/client/main.js +0 -20
  186. package/dist/board/client/main.js.map +0 -1
  187. package/dist/board/client/tags.d.ts +0 -6
  188. package/dist/board/client/tags.d.ts.map +0 -1
  189. package/dist/board/client/tags.js +0 -198
  190. package/dist/board/client/tags.js.map +0 -1
  191. package/dist/board/client/types.d.ts +0 -48
  192. package/dist/board/client/types.d.ts.map +0 -1
  193. package/dist/board/client/types.js.map +0 -1
  194. package/dist/board/client/utils.d.ts +0 -4
  195. package/dist/board/client/utils.d.ts.map +0 -1
  196. package/dist/board/client/utils.js +0 -44
  197. package/dist/board/client/utils.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は9つのデータ取得・表示コマンドで、機械可読なJSON出力をサポートしています。`--json`フラグを追加することで、人間が読みやすいテキストの代わりに構造化されたデータを出力できます。
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
 
@@ -820,11 +875,11 @@ export AGENT_KANBAN_DB_PATH=./dev/data.db # 開発環境
820
875
  export AGENT_KANBAN_DB_PATH=./staging/data.db # ステージング環境
821
876
 
822
877
  # テストの実行
823
- NODE_ENV=test npm test
878
+ NODE_ENV=test pnpm test
824
879
  # デフォルトで .agkan-test/data.db を使用
825
880
 
826
881
  # カスタムテストDBで実行
827
- NODE_ENV=test AGENT_KANBAN_DB_PATH=/tmp/test.db npm test
882
+ NODE_ENV=test AGENT_KANBAN_DB_PATH=/tmp/test.db pnpm test
828
883
  ```
829
884
 
830
885
  #### デフォルトの動作
@@ -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
- ### tasks テーブル
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
- npm install
1079
- ```
1080
-
1081
- 3. TypeScriptコードをビルド:
1082
- ```bash
1083
- npm run build
1084
- ```
1085
-
1086
- 4. グローバルコマンドとして登録:
1087
- ```bash
1088
- npm link
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
- npm run lint # コードをチェック
1106
- npm run lint:fix # 問題を自動修正
1107
- npm run format # コードをフォーマット
1108
- npm run check # 全チェックを実行
1109
- ```
1110
-
1111
- ### テスト
1112
-
1113
- #### ユニットテスト
1114
-
1115
- Vitestを使用したユニットテストを実行:
1116
- ```bash
1117
- npm test
1118
- ```
1119
-
1120
- 全てのサービス層とモデル層がテストされています。
1121
-
1122
- #### E2Eテスト
1123
-
1124
- 実際のCLIコマンドを実行する包括的なE2Eテストを実行:
1125
- ```bash
1126
- npm 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
- npm run build
1142
- ```
1143
-
1144
- ### 開発時の自動ビルド
1145
-
1146
- ```bash
1147
- npm 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
- Generated with Claude Code
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 9 data retrieval and display commands. Add the `--json` flag to output structured data instead of human-readable text.
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
 
@@ -848,11 +889,11 @@ Test mode (`NODE_ENV=test`) automatically isolates test data from production dat
848
889
  3. **Testing:**
849
890
  ```bash
850
891
  # Automated tests with isolated database
851
- NODE_ENV=test npm test
892
+ NODE_ENV=test pnpm test
852
893
  # Uses .agkan-test/data.db by default
853
894
 
854
895
  # Override with custom test database
855
- NODE_ENV=test AGENT_KANBAN_DB_PATH=/tmp/test.db npm test
896
+ NODE_ENV=test AGENT_KANBAN_DB_PATH=/tmp/test.db pnpm test
856
897
  ```
857
898
 
858
899
  #### Default Behavior
@@ -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
- ### tasks Table
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
- ### Developer Setup
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
- npm install
1111
- ```
1112
-
1113
- 3. Build the TypeScript code:
1114
- ```bash
1115
- npm run build
1116
- ```
1117
-
1118
- 4. Register as a global command:
1119
- ```bash
1120
- npm link
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
- npm run lint # Check code
1138
- npm run lint:fix # Auto-fix issues
1139
- npm run format # Format code
1140
- npm run check # Run all checks
1141
- ```
1142
-
1143
- ### Testing
1144
-
1145
- #### Unit Tests
1146
-
1147
- Run unit tests with Vitest:
1148
- ```bash
1149
- npm 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
- npm 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
- npm run build
1174
- ```
1175
-
1176
- ### Auto-build During Development
1177
-
1178
- ```bash
1179
- npm 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
- Generated with Claude Code
1010
+ GENDOSU