takt 0.2.1 → 0.2.3

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 (121) hide show
  1. package/README.md +67 -38
  2. package/dist/cli.d.ts +4 -2
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +27 -17
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/addTask.d.ts.map +1 -1
  7. package/dist/commands/addTask.js +6 -5
  8. package/dist/commands/addTask.js.map +1 -1
  9. package/dist/commands/help.js +3 -3
  10. package/dist/commands/index.d.ts +1 -1
  11. package/dist/commands/index.d.ts.map +1 -1
  12. package/dist/commands/index.js +1 -1
  13. package/dist/commands/index.js.map +1 -1
  14. package/dist/commands/listTasks.d.ts +45 -0
  15. package/dist/commands/listTasks.d.ts.map +1 -0
  16. package/dist/commands/listTasks.js +353 -0
  17. package/dist/commands/listTasks.js.map +1 -0
  18. package/dist/commands/taskExecution.d.ts +7 -5
  19. package/dist/commands/taskExecution.d.ts.map +1 -1
  20. package/dist/commands/taskExecution.js +26 -17
  21. package/dist/commands/taskExecution.js.map +1 -1
  22. package/dist/commands/workflowExecution.d.ts.map +1 -1
  23. package/dist/commands/workflowExecution.js +11 -10
  24. package/dist/commands/workflowExecution.js.map +1 -1
  25. package/dist/config/globalConfig.d.ts.map +1 -1
  26. package/dist/config/globalConfig.js +4 -0
  27. package/dist/config/globalConfig.js.map +1 -1
  28. package/dist/config/paths.d.ts +1 -1
  29. package/dist/config/paths.d.ts.map +1 -1
  30. package/dist/config/paths.js +3 -1
  31. package/dist/config/paths.js.map +1 -1
  32. package/dist/config/sessionStore.d.ts +10 -0
  33. package/dist/config/sessionStore.d.ts.map +1 -1
  34. package/dist/config/sessionStore.js +54 -0
  35. package/dist/config/sessionStore.js.map +1 -1
  36. package/dist/models/schemas.d.ts +1 -0
  37. package/dist/models/schemas.d.ts.map +1 -1
  38. package/dist/models/schemas.js +2 -0
  39. package/dist/models/schemas.js.map +1 -1
  40. package/dist/models/types.d.ts +2 -0
  41. package/dist/models/types.d.ts.map +1 -1
  42. package/dist/resources/index.d.ts.map +1 -1
  43. package/dist/resources/index.js +6 -3
  44. package/dist/resources/index.js.map +1 -1
  45. package/dist/task/autoCommit.d.ts +9 -6
  46. package/dist/task/autoCommit.d.ts.map +1 -1
  47. package/dist/task/autoCommit.js +21 -12
  48. package/dist/task/autoCommit.js.map +1 -1
  49. package/dist/task/branchList.d.ts +55 -0
  50. package/dist/task/branchList.d.ts.map +1 -0
  51. package/dist/task/branchList.js +131 -0
  52. package/dist/task/branchList.js.map +1 -0
  53. package/dist/task/clone.d.ts +53 -0
  54. package/dist/task/clone.d.ts.map +1 -0
  55. package/dist/task/clone.js +181 -0
  56. package/dist/task/clone.js.map +1 -0
  57. package/dist/task/index.d.ts +3 -2
  58. package/dist/task/index.d.ts.map +1 -1
  59. package/dist/task/index.js +3 -2
  60. package/dist/task/index.js.map +1 -1
  61. package/dist/task/runner.d.ts +14 -0
  62. package/dist/task/runner.d.ts.map +1 -1
  63. package/dist/task/runner.js +30 -7
  64. package/dist/task/runner.js.map +1 -1
  65. package/dist/task/schema.d.ts +4 -4
  66. package/dist/task/schema.js +4 -4
  67. package/dist/task/summarize.d.ts +22 -0
  68. package/dist/task/summarize.d.ts.map +1 -0
  69. package/dist/task/summarize.js +83 -0
  70. package/dist/task/summarize.js.map +1 -0
  71. package/dist/utils/updateNotifier.d.ts +6 -0
  72. package/dist/utils/updateNotifier.d.ts.map +1 -0
  73. package/dist/utils/updateNotifier.js +17 -0
  74. package/dist/utils/updateNotifier.js.map +1 -0
  75. package/dist/workflow/engine.d.ts +1 -1
  76. package/dist/workflow/engine.d.ts.map +1 -1
  77. package/dist/workflow/engine.js +10 -2
  78. package/dist/workflow/engine.js.map +1 -1
  79. package/dist/workflow/instruction-builder.d.ts +8 -7
  80. package/dist/workflow/instruction-builder.d.ts.map +1 -1
  81. package/dist/workflow/instruction-builder.js +39 -24
  82. package/dist/workflow/instruction-builder.js.map +1 -1
  83. package/package.json +4 -1
  84. package/resources/global/en/agents/default/{ai-reviewer.md → ai-antipattern-reviewer.md} +22 -1
  85. package/resources/global/en/agents/default/coder.md +3 -3
  86. package/resources/global/en/agents/default/planner.md +14 -1
  87. package/resources/global/en/workflows/default.yaml +6 -51
  88. package/resources/global/en/workflows/{expert-review.yaml → expert-cqrs.yaml} +14 -49
  89. package/resources/global/en/workflows/expert.yaml +1106 -0
  90. package/resources/global/en/workflows/magi.yaml +0 -9
  91. package/resources/global/en/workflows/research.yaml +0 -9
  92. package/resources/global/en/workflows/simple.yaml +5 -26
  93. package/resources/global/ja/agents/default/{ai-reviewer.md → ai-antipattern-reviewer.md} +22 -1
  94. package/resources/global/ja/agents/default/coder.md +3 -3
  95. package/resources/global/ja/agents/default/planner.md +14 -1
  96. package/resources/global/ja/workflows/default.yaml +6 -51
  97. package/resources/global/ja/workflows/{expert-review.yaml → expert-cqrs.yaml} +15 -55
  98. package/resources/global/ja/workflows/expert.yaml +1106 -0
  99. package/resources/global/ja/workflows/magi.yaml +0 -9
  100. package/resources/global/ja/workflows/research.yaml +0 -9
  101. package/resources/global/ja/workflows/simple.yaml +5 -26
  102. package/resources/project/dotgitignore +10 -0
  103. package/resources/project/tasks/TASK-FORMAT +37 -0
  104. package/dist/commands/reviewTasks.d.ts +0 -32
  105. package/dist/commands/reviewTasks.d.ts.map +0 -1
  106. package/dist/commands/reviewTasks.js +0 -198
  107. package/dist/commands/reviewTasks.js.map +0 -1
  108. package/dist/task/worktree.d.ts +0 -70
  109. package/dist/task/worktree.d.ts.map +0 -1
  110. package/dist/task/worktree.js +0 -221
  111. package/dist/task/worktree.js.map +0 -1
  112. /package/resources/global/en/agents/{expert-review → expert}/frontend-reviewer.md +0 -0
  113. /package/resources/global/en/agents/{expert-review → expert}/qa-reviewer.md +0 -0
  114. /package/resources/global/en/agents/{expert-review → expert}/security-reviewer.md +0 -0
  115. /package/resources/global/en/agents/{expert-review → expert}/supervisor.md +0 -0
  116. /package/resources/global/en/agents/{expert-review → expert-cqrs}/cqrs-es-reviewer.md +0 -0
  117. /package/resources/global/ja/agents/{expert-review → expert}/frontend-reviewer.md +0 -0
  118. /package/resources/global/ja/agents/{expert-review → expert}/qa-reviewer.md +0 -0
  119. /package/resources/global/ja/agents/{expert-review → expert}/security-reviewer.md +0 -0
  120. /package/resources/global/ja/agents/{expert-review → expert}/supervisor.md +0 -0
  121. /package/resources/global/ja/agents/{expert-review → expert-cqrs}/cqrs-es-reviewer.md +0 -0
@@ -27,10 +27,7 @@ steps:
27
27
  - WebSearch
28
28
  - WebFetch
29
29
  status_rules_prompt: |
30
- # ⚠️ 必須: ステータス出力ルール ⚠️
31
30
 
32
- **このタグがないとワークフローが停止します。**
33
- 最終出力には必ず以下のルールに従ったステータスタグを含めてください。
34
31
 
35
32
  ## 出力フォーマット
36
33
 
@@ -69,10 +66,7 @@ steps:
69
66
  - WebSearch
70
67
  - WebFetch
71
68
  status_rules_prompt: |
72
- # ⚠️ 必須: ステータス出力ルール ⚠️
73
69
 
74
- **このタグがないとワークフローが停止します。**
75
- 最終出力には必ず以下のルールに従ったステータスタグを含めてください。
76
70
 
77
71
  ## 出力フォーマット
78
72
 
@@ -116,10 +110,7 @@ steps:
116
110
  - WebSearch
117
111
  - WebFetch
118
112
  status_rules_prompt: |
119
- # ⚠️ 必須: ステータス出力ルール ⚠️
120
113
 
121
- **このタグがないとワークフローが停止します。**
122
- 最終出力には必ず以下のルールに従ったステータスタグを含めてください。
123
114
 
124
115
  ## 出力フォーマット
125
116
 
@@ -31,10 +31,7 @@ steps:
31
31
  - WebSearch
32
32
  - WebFetch
33
33
  status_rules_prompt: |
34
- # ⚠️ 必須: ステータス出力ルール ⚠️
35
34
 
36
- **このタグがないとワークフローが停止します。**
37
- 最終出力には必ず以下のルールに従ったステータスタグを含めてください。
38
35
 
39
36
  ## 出力フォーマット
40
37
 
@@ -95,10 +92,7 @@ steps:
95
92
  - WebSearch
96
93
  - WebFetch
97
94
  status_rules_prompt: |
98
- # ⚠️ 必須: ステータス出力ルール ⚠️
99
95
 
100
- **このタグがないとワークフローが停止します。**
101
- 最終出力には必ず以下のルールに従ったステータスタグを含めてください。
102
96
 
103
97
  ## 出力フォーマット
104
98
 
@@ -163,10 +157,7 @@ steps:
163
157
  - WebSearch
164
158
  - WebFetch
165
159
  status_rules_prompt: |
166
- # ⚠️ 必須: ステータス出力ルール ⚠️
167
160
 
168
- **このタグがないとワークフローが停止します。**
169
- 最終出力には必ず以下のルールに従ったステータスタグを含めてください。
170
161
 
171
162
  ## 判定基準
172
163
 
@@ -26,15 +26,11 @@ steps:
26
26
  - Read
27
27
  - Glob
28
28
  - Grep
29
+ - Write
29
30
  - Bash
30
31
  - WebSearch
31
32
  - WebFetch
32
33
  status_rules_prompt: |
33
- # ⚠️ 必須: ステータス出力ルール ⚠️
34
-
35
- **このタグがないとワークフローが停止します。**
36
- 最終出力には必ず以下のルールに従ったステータスタグを含めてください。
37
-
38
34
  ## 判定基準
39
35
 
40
36
  | 状況 | 判定 |
@@ -150,11 +146,6 @@ steps:
150
146
  - WebFetch
151
147
  permission_mode: acceptEdits
152
148
  status_rules_prompt: |
153
- # ⚠️ 必須: ステータス出力ルール ⚠️
154
-
155
- **このタグがないとワークフローが停止します。**
156
- 最終出力には必ず以下のルールに従ったステータスタグを含めてください。
157
-
158
149
  ## 出力フォーマット
159
150
 
160
151
  | 状況 | タグ |
@@ -247,14 +238,10 @@ steps:
247
238
  - Read
248
239
  - Glob
249
240
  - Grep
241
+ - Write
250
242
  - WebSearch
251
243
  - WebFetch
252
244
  status_rules_prompt: |
253
- # ⚠️ 必須: ステータス出力ルール ⚠️
254
-
255
- **このタグがないとワークフローが停止します。**
256
- 最終出力には必ず以下のルールに従ったステータスタグを含めてください。
257
-
258
245
  ## 判定基準
259
246
 
260
247
  | 状況 | 判定 |
@@ -357,19 +344,15 @@ steps:
357
344
  next_step: plan
358
345
 
359
346
  - name: ai_review
360
- agent: ~/.takt/agents/default/ai-reviewer.md
347
+ agent: ~/.takt/agents/default/ai-antipattern-reviewer.md
361
348
  allowed_tools:
362
349
  - Read
363
350
  - Glob
364
351
  - Grep
352
+ - Write
365
353
  - WebSearch
366
354
  - WebFetch
367
355
  status_rules_prompt: |
368
- # ⚠️ 必須: ステータス出力ルール ⚠️
369
-
370
- **このタグがないとワークフローが停止します。**
371
- 最終出力には必ず以下のルールに従ったステータスタグを含めてください。
372
-
373
356
  ## 判定基準
374
357
 
375
358
  | 状況 | 判定 |
@@ -471,15 +454,11 @@ steps:
471
454
  - Read
472
455
  - Glob
473
456
  - Grep
457
+ - Write
474
458
  - Bash
475
459
  - WebSearch
476
460
  - WebFetch
477
461
  status_rules_prompt: |
478
- # ⚠️ 必須: ステータス出力ルール ⚠️
479
-
480
- **このタグがないとワークフローが停止します。**
481
- 最終出力には必ず以下のルールに従ったステータスタグを含めてください。
482
-
483
462
  ## 判定基準
484
463
 
485
464
  | 状況 | 判定 |
@@ -0,0 +1,10 @@
1
+ # Temporary files
2
+ logs/
3
+ reports/
4
+ completed/
5
+ tasks/
6
+ worktree-meta/
7
+ clone-meta/
8
+ worktree-sessions/
9
+ agent_sessions.json
10
+ input_history
@@ -0,0 +1,37 @@
1
+ TAKT Task File Format
2
+ =====================
3
+
4
+ Tasks placed in this directory (.takt/tasks/) will be processed by TAKT.
5
+
6
+ ## YAML Format (Recommended)
7
+
8
+ # .takt/tasks/my-task.yaml
9
+ task: "Task description"
10
+ worktree: true # (optional) true | "/path/to/dir"
11
+ branch: "feat/my-feature" # (optional) branch name
12
+ workflow: "default" # (optional) workflow name
13
+
14
+ Fields:
15
+ task (required) Task description (string)
16
+ worktree (optional) true: create shared clone, "/path": clone at path
17
+ branch (optional) Branch name (auto-generated if omitted: takt/{timestamp}-{slug})
18
+ workflow (optional) Workflow name (uses current workflow if omitted)
19
+
20
+ ## Markdown Format (Simple)
21
+
22
+ # .takt/tasks/my-task.md
23
+
24
+ Entire file content becomes the task description.
25
+ Supports multiline. No structured options available.
26
+
27
+ ## Supported Extensions
28
+
29
+ .yaml, .yml -> YAML format (parsed and validated)
30
+ .md -> Markdown format (plain text, backward compatible)
31
+
32
+ ## Commands
33
+
34
+ takt /add-task Add a task interactively
35
+ takt /run-tasks Run all pending tasks
36
+ takt /watch Watch and auto-run tasks
37
+ takt /list-tasks List task branches (merge/delete)
@@ -1,32 +0,0 @@
1
- /**
2
- * Review tasks command
3
- *
4
- * Interactive UI for reviewing worktree-based task results:
5
- * try merge, merge & cleanup, or delete actions.
6
- */
7
- import { type WorktreeReviewItem } from '../task/worktree.js';
8
- /** Actions available for a reviewed worktree */
9
- export type ReviewAction = 'try' | 'merge' | 'delete';
10
- /**
11
- * Check if a branch has already been merged into HEAD.
12
- */
13
- export declare function isBranchMerged(projectDir: string, branch: string): boolean;
14
- /**
15
- * Try-merge: merge the branch without cleanup.
16
- * Keeps the worktree and branch intact for further review.
17
- */
18
- export declare function tryMergeWorktreeBranch(projectDir: string, item: WorktreeReviewItem): boolean;
19
- /**
20
- * Merge & cleanup: if already merged, skip merge and just cleanup.
21
- * Otherwise merge first, then cleanup (remove worktree + delete branch).
22
- */
23
- export declare function mergeWorktreeBranch(projectDir: string, item: WorktreeReviewItem): boolean;
24
- /**
25
- * Delete a worktree and its branch (discard changes).
26
- */
27
- export declare function deleteWorktreeBranch(projectDir: string, item: WorktreeReviewItem): boolean;
28
- /**
29
- * Main entry point: review worktree tasks interactively.
30
- */
31
- export declare function reviewTasks(cwd: string): Promise<void>;
32
- //# sourceMappingURL=reviewTasks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reviewTasks.d.ts","sourceRoot":"","sources":["../../src/commands/reviewTasks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAKL,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAO7B,gDAAgD;AAChD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtD;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAW1E;AAsCD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAoB5F;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAyCzF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAuB1F;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+D5D"}
@@ -1,198 +0,0 @@
1
- /**
2
- * Review tasks command
3
- *
4
- * Interactive UI for reviewing worktree-based task results:
5
- * try merge, merge & cleanup, or delete actions.
6
- */
7
- import { execFileSync } from 'node:child_process';
8
- import chalk from 'chalk';
9
- import { removeWorktree, detectDefaultBranch, listTaktWorktrees, buildReviewItems, } from '../task/worktree.js';
10
- import { selectOption, confirm } from '../prompt/index.js';
11
- import { info, success, error as logError, warn } from '../utils/ui.js';
12
- import { createLogger } from '../utils/debug.js';
13
- const log = createLogger('review-tasks');
14
- /**
15
- * Check if a branch has already been merged into HEAD.
16
- */
17
- export function isBranchMerged(projectDir, branch) {
18
- try {
19
- execFileSync('git', ['merge-base', '--is-ancestor', branch, 'HEAD'], {
20
- cwd: projectDir,
21
- encoding: 'utf-8',
22
- stdio: 'pipe',
23
- });
24
- return true;
25
- }
26
- catch {
27
- return false;
28
- }
29
- }
30
- /**
31
- * Show diff stat for a branch and prompt for an action.
32
- */
33
- async function showDiffAndPromptAction(cwd, defaultBranch, item) {
34
- console.log();
35
- console.log(chalk.bold.cyan(`=== ${item.info.branch} ===`));
36
- console.log();
37
- // Show diff stat
38
- try {
39
- const stat = execFileSync('git', ['diff', '--stat', `${defaultBranch}...${item.info.branch}`], { cwd, encoding: 'utf-8', stdio: 'pipe' });
40
- console.log(stat);
41
- }
42
- catch {
43
- warn('Could not generate diff stat');
44
- }
45
- // Prompt action
46
- const action = await selectOption(`Action for ${item.info.branch}:`, [
47
- { label: 'Try merge', value: 'try', description: 'Merge without cleanup (keep worktree & branch)' },
48
- { label: 'Merge & cleanup', value: 'merge', description: 'Merge (if needed) and remove worktree & branch' },
49
- { label: 'Delete', value: 'delete', description: 'Discard changes, remove worktree and branch' },
50
- ]);
51
- return action;
52
- }
53
- /**
54
- * Try-merge: merge the branch without cleanup.
55
- * Keeps the worktree and branch intact for further review.
56
- */
57
- export function tryMergeWorktreeBranch(projectDir, item) {
58
- const { branch } = item.info;
59
- try {
60
- execFileSync('git', ['merge', branch], {
61
- cwd: projectDir,
62
- encoding: 'utf-8',
63
- stdio: 'pipe',
64
- });
65
- success(`Merged ${branch} (worktree kept)`);
66
- log.info('Try-merge completed', { branch });
67
- return true;
68
- }
69
- catch (err) {
70
- const msg = err instanceof Error ? err.message : String(err);
71
- logError(`Merge failed: ${msg}`);
72
- logError('You may need to resolve conflicts manually.');
73
- log.error('Try-merge failed', { branch, error: msg });
74
- return false;
75
- }
76
- }
77
- /**
78
- * Merge & cleanup: if already merged, skip merge and just cleanup.
79
- * Otherwise merge first, then cleanup (remove worktree + delete branch).
80
- */
81
- export function mergeWorktreeBranch(projectDir, item) {
82
- const { branch } = item.info;
83
- const alreadyMerged = isBranchMerged(projectDir, branch);
84
- try {
85
- // 1. Remove worktree (must happen before merge to unlock branch)
86
- removeWorktree(projectDir, item.info.path);
87
- // 2. Merge only if not already merged
88
- if (alreadyMerged) {
89
- info(`${branch} is already merged, skipping merge.`);
90
- log.info('Branch already merged, cleanup only', { branch });
91
- }
92
- else {
93
- execFileSync('git', ['merge', branch], {
94
- cwd: projectDir,
95
- encoding: 'utf-8',
96
- stdio: 'pipe',
97
- });
98
- }
99
- // 3. Delete the branch
100
- try {
101
- execFileSync('git', ['branch', '-d', branch], {
102
- cwd: projectDir,
103
- encoding: 'utf-8',
104
- stdio: 'pipe',
105
- });
106
- }
107
- catch {
108
- warn(`Could not delete branch ${branch}. You may delete it manually.`);
109
- }
110
- success(`Merged & cleaned up ${branch}`);
111
- log.info('Worktree merged & cleaned up', { branch, alreadyMerged });
112
- return true;
113
- }
114
- catch (err) {
115
- const msg = err instanceof Error ? err.message : String(err);
116
- logError(`Merge failed: ${msg}`);
117
- logError('You may need to resolve conflicts manually.');
118
- log.error('Merge & cleanup failed', { branch, error: msg });
119
- return false;
120
- }
121
- }
122
- /**
123
- * Delete a worktree and its branch (discard changes).
124
- */
125
- export function deleteWorktreeBranch(projectDir, item) {
126
- const { branch } = item.info;
127
- try {
128
- // 1. Remove worktree
129
- removeWorktree(projectDir, item.info.path);
130
- // 2. Force-delete the branch
131
- execFileSync('git', ['branch', '-D', branch], {
132
- cwd: projectDir,
133
- encoding: 'utf-8',
134
- stdio: 'pipe',
135
- });
136
- success(`Deleted ${branch}`);
137
- log.info('Worktree deleted', { branch });
138
- return true;
139
- }
140
- catch (err) {
141
- const msg = err instanceof Error ? err.message : String(err);
142
- logError(`Delete failed: ${msg}`);
143
- log.error('Delete failed', { branch, error: msg });
144
- return false;
145
- }
146
- }
147
- /**
148
- * Main entry point: review worktree tasks interactively.
149
- */
150
- export async function reviewTasks(cwd) {
151
- log.info('Starting review-tasks');
152
- const defaultBranch = detectDefaultBranch(cwd);
153
- let worktrees = listTaktWorktrees(cwd);
154
- if (worktrees.length === 0) {
155
- info('No tasks to review.');
156
- return;
157
- }
158
- // Interactive loop
159
- while (worktrees.length > 0) {
160
- const items = buildReviewItems(cwd, worktrees, defaultBranch);
161
- // Build selection options
162
- const options = items.map((item, idx) => ({
163
- label: item.info.branch,
164
- value: String(idx),
165
- description: `${item.filesChanged} file${item.filesChanged !== 1 ? 's' : ''} changed`,
166
- }));
167
- const selected = await selectOption('Review Tasks (Worktrees)', options);
168
- if (selected === null) {
169
- return;
170
- }
171
- const selectedIdx = parseInt(selected, 10);
172
- const item = items[selectedIdx];
173
- if (!item)
174
- continue;
175
- const action = await showDiffAndPromptAction(cwd, defaultBranch, item);
176
- if (action === null)
177
- continue;
178
- switch (action) {
179
- case 'try':
180
- tryMergeWorktreeBranch(cwd, item);
181
- break;
182
- case 'merge':
183
- mergeWorktreeBranch(cwd, item);
184
- break;
185
- case 'delete': {
186
- const confirmed = await confirm(`Delete ${item.info.branch}? This will discard all changes.`, false);
187
- if (confirmed) {
188
- deleteWorktreeBranch(cwd, item);
189
- }
190
- break;
191
- }
192
- }
193
- // Refresh worktree list after action
194
- worktrees = listTaktWorktrees(cwd);
195
- }
196
- info('All tasks reviewed.');
197
- }
198
- //# sourceMappingURL=reviewTasks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reviewTasks.js","sourceRoot":"","sources":["../../src/commands/reviewTasks.ts"],"names":[],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- /**
2
- * Git worktree management
3
- *
4
- * Creates and removes git worktrees for task isolation.
5
- */
6
- export interface WorktreeOptions {
7
- /** worktree setting: true = auto path, string = custom path */
8
- worktree: boolean | string;
9
- /** Branch name (optional, auto-generated if omitted) */
10
- branch?: string;
11
- /** Task slug for auto-generated paths/branches */
12
- taskSlug: string;
13
- }
14
- export interface WorktreeResult {
15
- /** Absolute path to the worktree */
16
- path: string;
17
- /** Branch name used */
18
- branch: string;
19
- }
20
- /**
21
- * Create a git worktree for a task
22
- *
23
- * @returns WorktreeResult with path and branch
24
- * @throws Error if git worktree creation fails
25
- */
26
- export declare function createWorktree(projectDir: string, options: WorktreeOptions): WorktreeResult;
27
- /**
28
- * Remove a git worktree
29
- */
30
- export declare function removeWorktree(projectDir: string, worktreePath: string): void;
31
- /** Parsed worktree entry from git worktree list */
32
- export interface WorktreeInfo {
33
- path: string;
34
- branch: string;
35
- commit: string;
36
- }
37
- /** Worktree with review metadata */
38
- export interface WorktreeReviewItem {
39
- info: WorktreeInfo;
40
- filesChanged: number;
41
- taskSlug: string;
42
- }
43
- /**
44
- * Detect the default branch name (main or master).
45
- * Falls back to 'main'.
46
- */
47
- export declare function detectDefaultBranch(cwd: string): string;
48
- /**
49
- * Parse `git worktree list --porcelain` output into WorktreeInfo entries.
50
- * Only includes worktrees on branches with the takt/ prefix.
51
- */
52
- export declare function parseTaktWorktrees(porcelainOutput: string): WorktreeInfo[];
53
- /**
54
- * List all takt-managed worktrees.
55
- */
56
- export declare function listTaktWorktrees(projectDir: string): WorktreeInfo[];
57
- /**
58
- * Get the number of files changed between the default branch and a given branch.
59
- */
60
- export declare function getFilesChanged(cwd: string, defaultBranch: string, branch: string): number;
61
- /**
62
- * Extract a human-readable task slug from a takt branch name.
63
- * e.g. "takt/20260128T032800-fix-auth" → "fix-auth"
64
- */
65
- export declare function extractTaskSlug(branch: string): string;
66
- /**
67
- * Build review items from worktree list, enriching with diff stats.
68
- */
69
- export declare function buildReviewItems(projectDir: string, worktrees: WorktreeInfo[], defaultBranch: string): WorktreeReviewItem[];
70
- //# sourceMappingURL=worktree.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../src/task/worktree.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAgED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,cAAc,CAyB3F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAY7E;AAMD,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,oCAAoC;AACpC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA2BvD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,YAAY,EAAE,CA2B1E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,EAAE,CAWpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAU1F;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,YAAY,EAAE,EACzB,aAAa,EAAE,MAAM,GACpB,kBAAkB,EAAE,CAMtB"}