takt 0.2.0 → 0.2.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 (123) hide show
  1. package/README.md +55 -15
  2. package/dist/agents/runner.d.ts +3 -1
  3. package/dist/agents/runner.d.ts.map +1 -1
  4. package/dist/agents/runner.js +15 -0
  5. package/dist/agents/runner.js.map +1 -1
  6. package/dist/claude/client.d.ts +3 -1
  7. package/dist/claude/client.d.ts.map +1 -1
  8. package/dist/claude/client.js +17 -0
  9. package/dist/claude/client.js.map +1 -1
  10. package/dist/cli.d.ts +9 -1
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +64 -18
  13. package/dist/cli.js.map +1 -1
  14. package/dist/commands/addTask.d.ts.map +1 -1
  15. package/dist/commands/addTask.js +27 -9
  16. package/dist/commands/addTask.js.map +1 -1
  17. package/dist/commands/help.d.ts.map +1 -1
  18. package/dist/commands/help.js +5 -3
  19. package/dist/commands/help.js.map +1 -1
  20. package/dist/commands/index.d.ts +1 -0
  21. package/dist/commands/index.d.ts.map +1 -1
  22. package/dist/commands/index.js +1 -0
  23. package/dist/commands/index.js.map +1 -1
  24. package/dist/commands/reviewTasks.d.ts +32 -0
  25. package/dist/commands/reviewTasks.d.ts.map +1 -0
  26. package/dist/commands/reviewTasks.js +198 -0
  27. package/dist/commands/reviewTasks.js.map +1 -0
  28. package/dist/commands/taskExecution.d.ts +16 -2
  29. package/dist/commands/taskExecution.d.ts.map +1 -1
  30. package/dist/commands/taskExecution.js +75 -39
  31. package/dist/commands/taskExecution.js.map +1 -1
  32. package/dist/commands/watchTasks.d.ts.map +1 -1
  33. package/dist/commands/watchTasks.js +6 -36
  34. package/dist/commands/watchTasks.js.map +1 -1
  35. package/dist/commands/workflowExecution.d.ts +5 -1
  36. package/dist/commands/workflowExecution.d.ts.map +1 -1
  37. package/dist/commands/workflowExecution.js +35 -12
  38. package/dist/commands/workflowExecution.js.map +1 -1
  39. package/dist/config/initialization.d.ts +2 -0
  40. package/dist/config/initialization.d.ts.map +1 -1
  41. package/dist/config/initialization.js +12 -2
  42. package/dist/config/initialization.js.map +1 -1
  43. package/dist/config/paths.d.ts +1 -1
  44. package/dist/config/paths.d.ts.map +1 -1
  45. package/dist/config/paths.js +1 -1
  46. package/dist/config/paths.js.map +1 -1
  47. package/dist/config/sessionStore.d.ts +5 -0
  48. package/dist/config/sessionStore.d.ts.map +1 -1
  49. package/dist/config/sessionStore.js +1 -1
  50. package/dist/config/sessionStore.js.map +1 -1
  51. package/dist/config/workflowLoader.d.ts.map +1 -1
  52. package/dist/config/workflowLoader.js +1 -0
  53. package/dist/config/workflowLoader.js.map +1 -1
  54. package/dist/models/schemas.d.ts +22 -0
  55. package/dist/models/schemas.d.ts.map +1 -1
  56. package/dist/models/schemas.js +8 -0
  57. package/dist/models/schemas.js.map +1 -1
  58. package/dist/models/types.d.ts +8 -2
  59. package/dist/models/types.d.ts.map +1 -1
  60. package/dist/prompt/index.d.ts +60 -11
  61. package/dist/prompt/index.d.ts.map +1 -1
  62. package/dist/prompt/index.js +246 -72
  63. package/dist/prompt/index.js.map +1 -1
  64. package/dist/providers/claude.d.ts.map +1 -1
  65. package/dist/providers/claude.js +2 -0
  66. package/dist/providers/claude.js.map +1 -1
  67. package/dist/providers/index.d.ts +3 -1
  68. package/dist/providers/index.d.ts.map +1 -1
  69. package/dist/providers/index.js.map +1 -1
  70. package/dist/task/autoCommit.d.ts +28 -0
  71. package/dist/task/autoCommit.d.ts.map +1 -0
  72. package/dist/task/autoCommit.js +68 -0
  73. package/dist/task/autoCommit.js.map +1 -0
  74. package/dist/task/index.d.ts +2 -1
  75. package/dist/task/index.d.ts.map +1 -1
  76. package/dist/task/index.js +2 -1
  77. package/dist/task/index.js.map +1 -1
  78. package/dist/task/worktree.d.ts +39 -0
  79. package/dist/task/worktree.d.ts.map +1 -1
  80. package/dist/task/worktree.js +111 -2
  81. package/dist/task/worktree.js.map +1 -1
  82. package/dist/utils/debug.d.ts +6 -1
  83. package/dist/utils/debug.d.ts.map +1 -1
  84. package/dist/utils/debug.js +30 -24
  85. package/dist/utils/debug.js.map +1 -1
  86. package/dist/utils/index.d.ts +1 -0
  87. package/dist/utils/index.d.ts.map +1 -1
  88. package/dist/utils/index.js +1 -0
  89. package/dist/utils/index.js.map +1 -1
  90. package/dist/utils/session.d.ts +20 -0
  91. package/dist/utils/session.d.ts.map +1 -1
  92. package/dist/utils/session.js +32 -3
  93. package/dist/utils/session.js.map +1 -1
  94. package/dist/utils/text.d.ts +22 -0
  95. package/dist/utils/text.d.ts.map +1 -0
  96. package/dist/utils/text.js +54 -0
  97. package/dist/utils/text.js.map +1 -0
  98. package/dist/workflow/engine.d.ts +5 -6
  99. package/dist/workflow/engine.d.ts.map +1 -1
  100. package/dist/workflow/engine.js +32 -12
  101. package/dist/workflow/engine.js.map +1 -1
  102. package/dist/workflow/index.d.ts +2 -2
  103. package/dist/workflow/index.d.ts.map +1 -1
  104. package/dist/workflow/index.js +2 -2
  105. package/dist/workflow/index.js.map +1 -1
  106. package/dist/workflow/instruction-builder.d.ts +31 -2
  107. package/dist/workflow/instruction-builder.d.ts.map +1 -1
  108. package/dist/workflow/instruction-builder.js +69 -1
  109. package/dist/workflow/instruction-builder.js.map +1 -1
  110. package/dist/workflow/transitions.d.ts.map +1 -1
  111. package/dist/workflow/transitions.js +1 -0
  112. package/dist/workflow/transitions.js.map +1 -1
  113. package/dist/workflow/types.d.ts +5 -1
  114. package/dist/workflow/types.d.ts.map +1 -1
  115. package/package.json +1 -1
  116. package/resources/global/en/workflows/default.yaml +22 -1
  117. package/resources/global/en/workflows/simple.yaml +18 -1
  118. package/resources/global/ja/agents/default/ai-reviewer.md +24 -1
  119. package/resources/global/ja/agents/default/architect.md +37 -4
  120. package/resources/global/ja/agents/default/coder.md +1 -0
  121. package/resources/global/ja/workflows/default.yaml +27 -2
  122. package/resources/global/ja/workflows/expert-review.yaml +169 -10
  123. package/resources/global/ja/workflows/simple.yaml +18 -1
@@ -1 +1 @@
1
- {"version":3,"file":"addTask.js","sourceRoot":"","sources":["../../src/commands/addTask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"addTask.js","sourceRoot":"","sources":["../../src/commands/addTask.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAsC/B"}
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAwC/B"}
@@ -11,9 +11,10 @@ export function showHelp() {
11
11
  console.log(`
12
12
  Usage:
13
13
  takt {task} Execute task with current workflow (continues session)
14
- takt /run-tasks Run all pending tasks from .takt/tasks/
15
- takt /watch Watch for tasks and auto-execute (stays resident)
16
- takt /add-task Add a new task (interactive, YAML format)
14
+ takt /run-tasks (/run) Run all pending tasks from .takt/tasks/
15
+ takt /watch Watch for tasks and auto-execute (stays resident)
16
+ takt /add-task (/add) Add a new task (interactive, YAML format)
17
+ takt /review-tasks (/review) Review worktree task results (merge/delete)
17
18
  takt /switch Switch workflow interactively
18
19
  takt /clear Clear agent conversation sessions (reset to initial state)
19
20
  takt /refresh-builtin Overwrite builtin agents/workflows with latest version
@@ -26,6 +27,7 @@ Examples:
26
27
  takt /clear # Clear sessions, start fresh
27
28
  takt /watch # Watch & auto-execute tasks
28
29
  takt /refresh-builtin # Update builtin resources
30
+ takt /review-tasks # Review & merge worktree results
29
31
  takt /switch
30
32
  takt /run-tasks
31
33
 
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,MAAM,CAAC,qCAAqC,CAAC,CAAC;IAE9C,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Bb,CAAC,CAAC;IAED,iCAAiC;IACjC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,cAAc,YAAY,EAAE,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,MAAM,CAAC,qCAAqC,CAAC,CAAC;IAE9C,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8Bb,CAAC,CAAC;IAED,iCAAiC;IACjC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,cAAc,YAAY,EAAE,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
@@ -10,4 +10,5 @@ export { showHelp } from './help.js';
10
10
  export { withAgentSession } from './session.js';
11
11
  export { switchWorkflow } from './workflow.js';
12
12
  export { switchConfig, getCurrentPermissionMode, setPermissionMode, type PermissionMode } from './config.js';
13
+ export { reviewTasks } from './reviewTasks.js';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,uBAAuB,EAAE,KAAK,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,uBAAuB,EAAE,KAAK,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
@@ -10,4 +10,5 @@ export { showHelp } from './help.js';
10
10
  export { withAgentSession } from './session.js';
11
11
  export { switchWorkflow } from './workflow.js';
12
12
  export { switchConfig, getCurrentPermissionMode, setPermissionMode } from './config.js';
13
+ export { reviewTasks } from './reviewTasks.js';
13
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAA+D,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAuB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAA+D,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAuB,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,32 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,198 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewTasks.js","sourceRoot":"","sources":["../../src/commands/reviewTasks.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,24 @@
1
1
  /**
2
2
  * Task execution logic
3
3
  */
4
- import { type TaskInfo } from '../task/index.js';
4
+ import { TaskRunner, type TaskInfo } from '../task/index.js';
5
5
  /**
6
6
  * Execute a single task with workflow
7
+ * @param task - Task content
8
+ * @param cwd - Working directory (may be a worktree path)
9
+ * @param workflowName - Workflow to use
10
+ * @param projectCwd - Project root (where .takt/ lives). Defaults to cwd.
7
11
  */
8
- export declare function executeTask(task: string, cwd: string, workflowName?: string): Promise<boolean>;
12
+ export declare function executeTask(task: string, cwd: string, workflowName?: string, projectCwd?: string): Promise<boolean>;
13
+ /**
14
+ * Execute a task: resolve worktree → run workflow → auto-commit → record completion.
15
+ *
16
+ * Shared by runAllTasks() and watchTasks() to avoid duplicated
17
+ * resolve → execute → autoCommit → complete logic.
18
+ *
19
+ * @returns true if the task succeeded
20
+ */
21
+ export declare function executeAndCompleteTask(task: TaskInfo, taskRunner: TaskRunner, cwd: string, workflowName: string): Promise<boolean>;
9
22
  /**
10
23
  * Run all pending tasks from .takt/tasks/
11
24
  *
@@ -20,5 +33,6 @@ export declare function runAllTasks(cwd: string, workflowName?: string): Promise
20
33
  export declare function resolveTaskExecution(task: TaskInfo, defaultCwd: string, defaultWorkflow: string): {
21
34
  execCwd: string;
22
35
  execWorkflow: string;
36
+ isWorktree: boolean;
23
37
  };
24
38
  //# sourceMappingURL=taskExecution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"taskExecution.d.ts","sourceRoot":"","sources":["../../src/commands/taskExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAgB7D;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,MAA8B,GAC3C,OAAO,CAAC,OAAO,CAAC,CAiBlB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,MAA8B,GAC3C,OAAO,CAAC,IAAI,CAAC,CA4Ef;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,GACtB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAyB3C"}
1
+ {"version":3,"file":"taskExecution.d.ts","sourceRoot":"","sources":["../../src/commands/taskExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAiB7D;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,MAA8B,EAC5C,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAqBlB;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC,CAmDlB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,YAAY,GAAE,MAA8B,GAC3C,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,GACtB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CA2BhE"}
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * Task execution logic
3
3
  */
4
- import { loadWorkflow } from '../config/index.js';
4
+ import { loadWorkflow, loadGlobalConfig } from '../config/index.js';
5
5
  import { TaskRunner } from '../task/index.js';
6
6
  import { createWorktree } from '../task/worktree.js';
7
+ import { autoCommitWorktree } from '../task/autoCommit.js';
7
8
  import { header, info, error, success, status, } from '../utils/ui.js';
8
9
  import { createLogger } from '../utils/debug.js';
9
10
  import { getErrorMessage } from '../utils/error.js';
@@ -12,8 +13,12 @@ import { DEFAULT_WORKFLOW_NAME } from '../constants.js';
12
13
  const log = createLogger('task');
13
14
  /**
14
15
  * Execute a single task with workflow
16
+ * @param task - Task content
17
+ * @param cwd - Working directory (may be a worktree path)
18
+ * @param workflowName - Workflow to use
19
+ * @param projectCwd - Project root (where .takt/ lives). Defaults to cwd.
15
20
  */
16
- export async function executeTask(task, cwd, workflowName = DEFAULT_WORKFLOW_NAME) {
21
+ export async function executeTask(task, cwd, workflowName = DEFAULT_WORKFLOW_NAME, projectCwd) {
17
22
  const workflowConfig = loadWorkflow(workflowName);
18
23
  if (!workflowConfig) {
19
24
  error(`Workflow "${workflowName}" not found.`);
@@ -25,9 +30,68 @@ export async function executeTask(task, cwd, workflowName = DEFAULT_WORKFLOW_NAM
25
30
  name: workflowConfig.name,
26
31
  steps: workflowConfig.steps.map(s => s.name),
27
32
  });
28
- const result = await executeWorkflow(workflowConfig, task, cwd);
33
+ const globalConfig = loadGlobalConfig();
34
+ const result = await executeWorkflow(workflowConfig, task, cwd, {
35
+ projectCwd,
36
+ language: globalConfig.language,
37
+ });
29
38
  return result.success;
30
39
  }
40
+ /**
41
+ * Execute a task: resolve worktree → run workflow → auto-commit → record completion.
42
+ *
43
+ * Shared by runAllTasks() and watchTasks() to avoid duplicated
44
+ * resolve → execute → autoCommit → complete logic.
45
+ *
46
+ * @returns true if the task succeeded
47
+ */
48
+ export async function executeAndCompleteTask(task, taskRunner, cwd, workflowName) {
49
+ const startedAt = new Date().toISOString();
50
+ const executionLog = [];
51
+ try {
52
+ const { execCwd, execWorkflow, isWorktree } = resolveTaskExecution(task, cwd, workflowName);
53
+ // cwd is always the project root; pass it as projectCwd so reports/sessions go there
54
+ const taskSuccess = await executeTask(task.content, execCwd, execWorkflow, cwd);
55
+ const completedAt = new Date().toISOString();
56
+ if (taskSuccess && isWorktree) {
57
+ const commitResult = autoCommitWorktree(execCwd, task.name);
58
+ if (commitResult.success && commitResult.commitHash) {
59
+ info(`Auto-committed: ${commitResult.commitHash}`);
60
+ }
61
+ else if (!commitResult.success) {
62
+ error(`Auto-commit failed: ${commitResult.message}`);
63
+ }
64
+ }
65
+ taskRunner.completeTask({
66
+ task,
67
+ success: taskSuccess,
68
+ response: taskSuccess ? 'Task completed successfully' : 'Task failed',
69
+ executionLog,
70
+ startedAt,
71
+ completedAt,
72
+ });
73
+ if (taskSuccess) {
74
+ success(`Task "${task.name}" completed`);
75
+ }
76
+ else {
77
+ error(`Task "${task.name}" failed`);
78
+ }
79
+ return taskSuccess;
80
+ }
81
+ catch (err) {
82
+ const completedAt = new Date().toISOString();
83
+ taskRunner.completeTask({
84
+ task,
85
+ success: false,
86
+ response: getErrorMessage(err),
87
+ executionLog,
88
+ startedAt,
89
+ completedAt,
90
+ });
91
+ error(`Task "${task.name}" error: ${getErrorMessage(err)}`);
92
+ return false;
93
+ }
94
+ }
31
95
  /**
32
96
  * Run all pending tasks from .takt/tasks/
33
97
  *
@@ -50,42 +114,12 @@ export async function runAllTasks(cwd, workflowName = DEFAULT_WORKFLOW_NAME) {
50
114
  console.log();
51
115
  info(`=== Task: ${task.name} ===`);
52
116
  console.log();
53
- const startedAt = new Date().toISOString();
54
- const executionLog = [];
55
- try {
56
- // Resolve execution directory and workflow from task data
57
- const { execCwd, execWorkflow } = resolveTaskExecution(task, cwd, workflowName);
58
- const taskSuccess = await executeTask(task.content, execCwd, execWorkflow);
59
- const completedAt = new Date().toISOString();
60
- taskRunner.completeTask({
61
- task,
62
- success: taskSuccess,
63
- response: taskSuccess ? 'Task completed successfully' : 'Task failed',
64
- executionLog,
65
- startedAt,
66
- completedAt,
67
- });
68
- if (taskSuccess) {
69
- successCount++;
70
- success(`Task "${task.name}" completed`);
71
- }
72
- else {
73
- failCount++;
74
- error(`Task "${task.name}" failed`);
75
- }
117
+ const taskSuccess = await executeAndCompleteTask(task, taskRunner, cwd, workflowName);
118
+ if (taskSuccess) {
119
+ successCount++;
76
120
  }
77
- catch (err) {
121
+ else {
78
122
  failCount++;
79
- const completedAt = new Date().toISOString();
80
- taskRunner.completeTask({
81
- task,
82
- success: false,
83
- response: getErrorMessage(err),
84
- executionLog,
85
- startedAt,
86
- completedAt,
87
- });
88
- error(`Task "${task.name}" error: ${getErrorMessage(err)}`);
89
123
  }
90
124
  // 次のタスクを動的に取得(新しく追加されたタスクも含む)
91
125
  task = taskRunner.getNextTask();
@@ -107,9 +141,10 @@ export function resolveTaskExecution(task, defaultCwd, defaultWorkflow) {
107
141
  const data = task.data;
108
142
  // No structured data: use defaults
109
143
  if (!data) {
110
- return { execCwd: defaultCwd, execWorkflow: defaultWorkflow };
144
+ return { execCwd: defaultCwd, execWorkflow: defaultWorkflow, isWorktree: false };
111
145
  }
112
146
  let execCwd = defaultCwd;
147
+ let isWorktree = false;
113
148
  // Handle worktree
114
149
  if (data.worktree) {
115
150
  const result = createWorktree(defaultCwd, {
@@ -118,10 +153,11 @@ export function resolveTaskExecution(task, defaultCwd, defaultWorkflow) {
118
153
  taskSlug: task.name,
119
154
  });
120
155
  execCwd = result.path;
156
+ isWorktree = true;
121
157
  info(`Worktree created: ${result.path} (branch: ${result.branch})`);
122
158
  }
123
159
  // Handle workflow override
124
160
  const execWorkflow = data.workflow || defaultWorkflow;
125
- return { execCwd, execWorkflow };
161
+ return { execCwd, execWorkflow, isWorktree };
126
162
  }
127
163
  //# sourceMappingURL=taskExecution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taskExecution.js","sourceRoot":"","sources":["../../src/commands/taskExecution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taskExecution.js","sourceRoot":"","sources":["../../src/commands/taskExecution.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"watchTasks.d.ts","sourceRoot":"","sources":["../../src/commands/watchTasks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH;;;GAGG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyF3D"}
1
+ {"version":3,"file":"watchTasks.d.ts","sourceRoot":"","sources":["../../src/commands/watchTasks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH;;;GAGG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyD3D"}
@@ -7,9 +7,8 @@
7
7
  import { TaskRunner } from '../task/index.js';
8
8
  import { TaskWatcher } from '../task/watcher.js';
9
9
  import { getCurrentWorkflow } from '../config/paths.js';
10
- import { header, info, error, success, status, } from '../utils/ui.js';
11
- import { getErrorMessage } from '../utils/error.js';
12
- import { executeTask, resolveTaskExecution } from './taskExecution.js';
10
+ import { header, info, success, status, } from '../utils/ui.js';
11
+ import { executeAndCompleteTask } from './taskExecution.js';
13
12
  import { DEFAULT_WORKFLOW_NAME } from '../constants.js';
14
13
  /**
15
14
  * Watch for tasks and execute them as they appear.
@@ -40,41 +39,12 @@ export async function watchTasks(cwd) {
40
39
  console.log();
41
40
  info(`=== Task ${taskCount}: ${task.name} ===`);
42
41
  console.log();
43
- const startedAt = new Date().toISOString();
44
- const executionLog = [];
45
- try {
46
- const { execCwd, execWorkflow } = resolveTaskExecution(task, cwd, workflowName);
47
- const taskSuccess = await executeTask(task.content, execCwd, execWorkflow);
48
- const completedAt = new Date().toISOString();
49
- taskRunner.completeTask({
50
- task,
51
- success: taskSuccess,
52
- response: taskSuccess ? 'Task completed successfully' : 'Task failed',
53
- executionLog,
54
- startedAt,
55
- completedAt,
56
- });
57
- if (taskSuccess) {
58
- successCount++;
59
- success(`Task "${task.name}" completed`);
60
- }
61
- else {
62
- failCount++;
63
- error(`Task "${task.name}" failed`);
64
- }
42
+ const taskSuccess = await executeAndCompleteTask(task, taskRunner, cwd, workflowName);
43
+ if (taskSuccess) {
44
+ successCount++;
65
45
  }
66
- catch (err) {
46
+ else {
67
47
  failCount++;
68
- const completedAt = new Date().toISOString();
69
- taskRunner.completeTask({
70
- task,
71
- success: false,
72
- response: getErrorMessage(err),
73
- executionLog,
74
- startedAt,
75
- completedAt,
76
- });
77
- error(`Task "${task.name}" error: ${getErrorMessage(err)}`);
78
48
  }
79
49
  console.log();
80
50
  info('Waiting for tasks... (Ctrl+C to stop)');