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.
- package/README.md +55 -15
- package/dist/agents/runner.d.ts +3 -1
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +15 -0
- package/dist/agents/runner.js.map +1 -1
- package/dist/claude/client.d.ts +3 -1
- package/dist/claude/client.d.ts.map +1 -1
- package/dist/claude/client.js +17 -0
- package/dist/claude/client.js.map +1 -1
- package/dist/cli.d.ts +9 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +64 -18
- package/dist/cli.js.map +1 -1
- package/dist/commands/addTask.d.ts.map +1 -1
- package/dist/commands/addTask.js +27 -9
- package/dist/commands/addTask.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +5 -3
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/reviewTasks.d.ts +32 -0
- package/dist/commands/reviewTasks.d.ts.map +1 -0
- package/dist/commands/reviewTasks.js +198 -0
- package/dist/commands/reviewTasks.js.map +1 -0
- package/dist/commands/taskExecution.d.ts +16 -2
- package/dist/commands/taskExecution.d.ts.map +1 -1
- package/dist/commands/taskExecution.js +75 -39
- package/dist/commands/taskExecution.js.map +1 -1
- package/dist/commands/watchTasks.d.ts.map +1 -1
- package/dist/commands/watchTasks.js +6 -36
- package/dist/commands/watchTasks.js.map +1 -1
- package/dist/commands/workflowExecution.d.ts +5 -1
- package/dist/commands/workflowExecution.d.ts.map +1 -1
- package/dist/commands/workflowExecution.js +35 -12
- package/dist/commands/workflowExecution.js.map +1 -1
- package/dist/config/initialization.d.ts +2 -0
- package/dist/config/initialization.d.ts.map +1 -1
- package/dist/config/initialization.js +12 -2
- package/dist/config/initialization.js.map +1 -1
- package/dist/config/paths.d.ts +1 -1
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +1 -1
- package/dist/config/paths.js.map +1 -1
- package/dist/config/sessionStore.d.ts +5 -0
- package/dist/config/sessionStore.d.ts.map +1 -1
- package/dist/config/sessionStore.js +1 -1
- package/dist/config/sessionStore.js.map +1 -1
- package/dist/config/workflowLoader.d.ts.map +1 -1
- package/dist/config/workflowLoader.js +1 -0
- package/dist/config/workflowLoader.js.map +1 -1
- package/dist/models/schemas.d.ts +22 -0
- package/dist/models/schemas.d.ts.map +1 -1
- package/dist/models/schemas.js +8 -0
- package/dist/models/schemas.js.map +1 -1
- package/dist/models/types.d.ts +8 -2
- package/dist/models/types.d.ts.map +1 -1
- package/dist/prompt/index.d.ts +60 -11
- package/dist/prompt/index.d.ts.map +1 -1
- package/dist/prompt/index.js +246 -72
- package/dist/prompt/index.js.map +1 -1
- package/dist/providers/claude.d.ts.map +1 -1
- package/dist/providers/claude.js +2 -0
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/index.d.ts +3 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/task/autoCommit.d.ts +28 -0
- package/dist/task/autoCommit.d.ts.map +1 -0
- package/dist/task/autoCommit.js +68 -0
- package/dist/task/autoCommit.js.map +1 -0
- package/dist/task/index.d.ts +2 -1
- package/dist/task/index.d.ts.map +1 -1
- package/dist/task/index.js +2 -1
- package/dist/task/index.js.map +1 -1
- package/dist/task/worktree.d.ts +39 -0
- package/dist/task/worktree.d.ts.map +1 -1
- package/dist/task/worktree.js +111 -2
- package/dist/task/worktree.js.map +1 -1
- package/dist/utils/debug.d.ts +6 -1
- package/dist/utils/debug.d.ts.map +1 -1
- package/dist/utils/debug.js +30 -24
- package/dist/utils/debug.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/session.d.ts +20 -0
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +32 -3
- package/dist/utils/session.js.map +1 -1
- package/dist/utils/text.d.ts +22 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +54 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/workflow/engine.d.ts +5 -6
- package/dist/workflow/engine.d.ts.map +1 -1
- package/dist/workflow/engine.js +32 -12
- package/dist/workflow/engine.js.map +1 -1
- package/dist/workflow/index.d.ts +2 -2
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +2 -2
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/instruction-builder.d.ts +31 -2
- package/dist/workflow/instruction-builder.d.ts.map +1 -1
- package/dist/workflow/instruction-builder.js +69 -1
- package/dist/workflow/instruction-builder.js.map +1 -1
- package/dist/workflow/transitions.d.ts.map +1 -1
- package/dist/workflow/transitions.js +1 -0
- package/dist/workflow/transitions.js.map +1 -1
- package/dist/workflow/types.d.ts +5 -1
- package/dist/workflow/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/resources/global/en/workflows/default.yaml +22 -1
- package/resources/global/en/workflows/simple.yaml +18 -1
- package/resources/global/ja/agents/default/ai-reviewer.md +24 -1
- package/resources/global/ja/agents/default/architect.md +37 -4
- package/resources/global/ja/agents/default/coder.md +1 -0
- package/resources/global/ja/workflows/default.yaml +27 -2
- package/resources/global/ja/workflows/expert-review.yaml +169 -10
- 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":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
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,
|
|
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"}
|
package/dist/commands/help.js
CHANGED
|
@@ -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
|
|
15
|
-
takt /watch
|
|
16
|
-
takt /add-task
|
|
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
|
|
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"}
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -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"}
|
package/dist/commands/index.js
CHANGED
|
@@ -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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;AAKzC;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,MAAc;IAC/D,IAAI,CAAC;QACH,YAAY,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;YACnE,GAAG,EAAE,UAAU;YACf,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,uBAAuB,CACpC,GAAW,EACX,aAAqB,EACrB,IAAwB;IAExB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,iBAAiB;IACjB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,YAAY,CACvB,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EACnE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAC1C,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACvC,CAAC;IAED,gBAAgB;IAChB,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,cAAc,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EACjC;QACE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,gDAAgD,EAAE;QACnG,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,gDAAgD,EAAE;QAC3G,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;KACjG,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAkB,EAAE,IAAwB;IACjF,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;IAE7B,IAAI,CAAC;QACH,YAAY,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;YACrC,GAAG,EAAE,UAAU;YACf,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QAEH,OAAO,CAAC,UAAU,MAAM,kBAAkB,CAAC,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,QAAQ,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;QACjC,QAAQ,CAAC,6CAA6C,CAAC,CAAC;QACxD,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,IAAwB;IAC9E,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;IAC7B,MAAM,aAAa,GAAG,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,iEAAiE;QACjE,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,sCAAsC;QACtC,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,MAAM,qCAAqC,CAAC,CAAC;YACrD,GAAG,CAAC,IAAI,CAAC,qCAAqC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;gBACrC,GAAG,EAAE,UAAU;gBACf,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,MAAM;aACd,CAAC,CAAC;QACL,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC;YACH,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE;gBAC5C,GAAG,EAAE,UAAU;gBACf,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,MAAM;aACd,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,2BAA2B,MAAM,+BAA+B,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC;QACzC,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,QAAQ,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;QACjC,QAAQ,CAAC,6CAA6C,CAAC,CAAC;QACxD,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB,EAAE,IAAwB;IAC/E,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;IAE7B,IAAI,CAAC;QACH,qBAAqB;QACrB,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,6BAA6B;QAC7B,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE;YAC5C,GAAG,EAAE,UAAU;YACf,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QAEH,OAAO,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,QAAQ,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC;QAClC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW;IAC3C,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAElC,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAE9D,0BAA0B;QAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YACxC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;YACvB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;YAClB,WAAW,EAAE,GAAG,IAAI,CAAC,YAAY,QAAQ,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU;SACtF,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAAG,MAAM,YAAY,CACjC,0BAA0B,EAC1B,OAAO,CACR,CAAC;QAEF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QAEvE,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS;QAE9B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,KAAK;gBACR,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,OAAO;gBACV,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,SAAS,GAAG,MAAM,OAAO,CAC7B,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,kCAAkC,EAC5D,KAAK,CACN,CAAC;gBACF,IAAI,SAAS,EAAE,CAAC;oBACd,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAClC,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -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,
|
|
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
|
|
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
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
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":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
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;
|
|
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,
|
|
11
|
-
import {
|
|
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
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
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)');
|