takt 0.2.2 → 0.3.0

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 (210) hide show
  1. package/README.md +223 -166
  2. package/dist/agents/runner.d.ts +2 -4
  3. package/dist/agents/runner.d.ts.map +1 -1
  4. package/dist/agents/runner.js +6 -35
  5. package/dist/agents/runner.js.map +1 -1
  6. package/dist/claude/client.d.ts +31 -6
  7. package/dist/claude/client.d.ts.map +1 -1
  8. package/dist/claude/client.js +78 -30
  9. package/dist/claude/client.js.map +1 -1
  10. package/dist/claude/index.d.ts +1 -1
  11. package/dist/claude/index.d.ts.map +1 -1
  12. package/dist/claude/index.js +1 -1
  13. package/dist/claude/index.js.map +1 -1
  14. package/dist/cli.d.ts +4 -3
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +41 -20
  17. package/dist/cli.js.map +1 -1
  18. package/dist/codex/client.d.ts +0 -1
  19. package/dist/codex/client.d.ts.map +1 -1
  20. package/dist/codex/client.js +3 -6
  21. package/dist/codex/client.js.map +1 -1
  22. package/dist/commands/addTask.d.ts.map +1 -1
  23. package/dist/commands/addTask.js +23 -7
  24. package/dist/commands/addTask.js.map +1 -1
  25. package/dist/commands/eject.d.ts +13 -0
  26. package/dist/commands/eject.d.ts.map +1 -0
  27. package/dist/commands/eject.js +105 -0
  28. package/dist/commands/eject.js.map +1 -0
  29. package/dist/commands/help.d.ts.map +1 -1
  30. package/dist/commands/help.js +12 -5
  31. package/dist/commands/help.js.map +1 -1
  32. package/dist/commands/index.d.ts +2 -1
  33. package/dist/commands/index.d.ts.map +1 -1
  34. package/dist/commands/index.js +2 -1
  35. package/dist/commands/index.js.map +1 -1
  36. package/dist/commands/listTasks.d.ts +45 -0
  37. package/dist/commands/listTasks.d.ts.map +1 -0
  38. package/dist/commands/{reviewTasks.js → listTasks.js} +93 -73
  39. package/dist/commands/listTasks.js.map +1 -0
  40. package/dist/commands/refreshBuiltin.d.ts +4 -4
  41. package/dist/commands/refreshBuiltin.d.ts.map +1 -1
  42. package/dist/commands/refreshBuiltin.js +13 -29
  43. package/dist/commands/refreshBuiltin.js.map +1 -1
  44. package/dist/commands/taskExecution.d.ts +7 -5
  45. package/dist/commands/taskExecution.d.ts.map +1 -1
  46. package/dist/commands/taskExecution.js +21 -14
  47. package/dist/commands/taskExecution.js.map +1 -1
  48. package/dist/commands/workflowExecution.d.ts.map +1 -1
  49. package/dist/commands/workflowExecution.js +88 -21
  50. package/dist/commands/workflowExecution.js.map +1 -1
  51. package/dist/config/agentLoader.d.ts +3 -1
  52. package/dist/config/agentLoader.d.ts.map +1 -1
  53. package/dist/config/agentLoader.js +17 -24
  54. package/dist/config/agentLoader.js.map +1 -1
  55. package/dist/config/globalConfig.d.ts +2 -0
  56. package/dist/config/globalConfig.d.ts.map +1 -1
  57. package/dist/config/globalConfig.js +18 -0
  58. package/dist/config/globalConfig.js.map +1 -1
  59. package/dist/config/initialization.d.ts +7 -5
  60. package/dist/config/initialization.d.ts.map +1 -1
  61. package/dist/config/initialization.js +23 -21
  62. package/dist/config/initialization.js.map +1 -1
  63. package/dist/config/paths.d.ts +5 -0
  64. package/dist/config/paths.d.ts.map +1 -1
  65. package/dist/config/paths.js +9 -0
  66. package/dist/config/paths.js.map +1 -1
  67. package/dist/config/workflowLoader.d.ts +6 -4
  68. package/dist/config/workflowLoader.d.ts.map +1 -1
  69. package/dist/config/workflowLoader.js +190 -35
  70. package/dist/config/workflowLoader.js.map +1 -1
  71. package/dist/github/issue.d.ts +72 -0
  72. package/dist/github/issue.d.ts.map +1 -0
  73. package/dist/github/issue.js +143 -0
  74. package/dist/github/issue.js.map +1 -0
  75. package/dist/models/index.d.ts +1 -1
  76. package/dist/models/index.d.ts.map +1 -1
  77. package/dist/models/index.js.map +1 -1
  78. package/dist/models/schemas.d.ts +165 -90
  79. package/dist/models/schemas.d.ts.map +1 -1
  80. package/dist/models/schemas.js +79 -51
  81. package/dist/models/schemas.js.map +1 -1
  82. package/dist/models/types.d.ts +53 -20
  83. package/dist/models/types.d.ts.map +1 -1
  84. package/dist/providers/claude.js +2 -2
  85. package/dist/providers/claude.js.map +1 -1
  86. package/dist/providers/codex.d.ts.map +1 -1
  87. package/dist/providers/codex.js +0 -2
  88. package/dist/providers/codex.js.map +1 -1
  89. package/dist/providers/index.d.ts +2 -1
  90. package/dist/providers/index.d.ts.map +1 -1
  91. package/dist/providers/index.js.map +1 -1
  92. package/dist/resources/index.d.ts +3 -22
  93. package/dist/resources/index.d.ts.map +1 -1
  94. package/dist/resources/index.js +9 -76
  95. package/dist/resources/index.js.map +1 -1
  96. package/dist/task/autoCommit.d.ts +9 -6
  97. package/dist/task/autoCommit.d.ts.map +1 -1
  98. package/dist/task/autoCommit.js +21 -12
  99. package/dist/task/autoCommit.js.map +1 -1
  100. package/dist/task/branchList.d.ts +55 -0
  101. package/dist/task/branchList.d.ts.map +1 -0
  102. package/dist/task/branchList.js +131 -0
  103. package/dist/task/branchList.js.map +1 -0
  104. package/dist/task/clone.d.ts +53 -0
  105. package/dist/task/clone.d.ts.map +1 -0
  106. package/dist/task/clone.js +181 -0
  107. package/dist/task/clone.js.map +1 -0
  108. package/dist/task/index.d.ts +3 -2
  109. package/dist/task/index.d.ts.map +1 -1
  110. package/dist/task/index.js +3 -2
  111. package/dist/task/index.js.map +1 -1
  112. package/dist/task/schema.d.ts +4 -4
  113. package/dist/task/schema.js +4 -4
  114. package/dist/task/summarize.d.ts +7 -5
  115. package/dist/task/summarize.d.ts.map +1 -1
  116. package/dist/task/summarize.js +62 -29
  117. package/dist/task/summarize.js.map +1 -1
  118. package/dist/utils/session.d.ts +74 -10
  119. package/dist/utils/session.d.ts.map +1 -1
  120. package/dist/utils/session.js +101 -51
  121. package/dist/utils/session.js.map +1 -1
  122. package/dist/utils/updateNotifier.d.ts +6 -0
  123. package/dist/utils/updateNotifier.d.ts.map +1 -0
  124. package/dist/utils/updateNotifier.js +17 -0
  125. package/dist/utils/updateNotifier.js.map +1 -0
  126. package/dist/workflow/engine.d.ts +35 -2
  127. package/dist/workflow/engine.d.ts.map +1 -1
  128. package/dist/workflow/engine.js +238 -38
  129. package/dist/workflow/engine.js.map +1 -1
  130. package/dist/workflow/index.d.ts +1 -1
  131. package/dist/workflow/index.d.ts.map +1 -1
  132. package/dist/workflow/index.js +1 -1
  133. package/dist/workflow/index.js.map +1 -1
  134. package/dist/workflow/instruction-builder.d.ts +89 -20
  135. package/dist/workflow/instruction-builder.d.ts.map +1 -1
  136. package/dist/workflow/instruction-builder.js +404 -61
  137. package/dist/workflow/instruction-builder.js.map +1 -1
  138. package/dist/workflow/parallel-logger.d.ts +76 -0
  139. package/dist/workflow/parallel-logger.d.ts.map +1 -0
  140. package/dist/workflow/parallel-logger.js +173 -0
  141. package/dist/workflow/parallel-logger.js.map +1 -0
  142. package/dist/workflow/phase-runner.d.ts +40 -0
  143. package/dist/workflow/phase-runner.d.ts.map +1 -0
  144. package/dist/workflow/phase-runner.js +69 -0
  145. package/dist/workflow/phase-runner.js.map +1 -0
  146. package/dist/workflow/rule-evaluator.d.ts +64 -0
  147. package/dist/workflow/rule-evaluator.d.ts.map +1 -0
  148. package/dist/workflow/rule-evaluator.js +178 -0
  149. package/dist/workflow/rule-evaluator.js.map +1 -0
  150. package/dist/workflow/rule-utils.d.ts +13 -0
  151. package/dist/workflow/rule-utils.d.ts.map +1 -0
  152. package/dist/workflow/rule-utils.js +17 -0
  153. package/dist/workflow/rule-utils.js.map +1 -0
  154. package/dist/workflow/transitions.d.ts +5 -13
  155. package/dist/workflow/transitions.d.ts.map +1 -1
  156. package/dist/workflow/transitions.js +8 -78
  157. package/dist/workflow/transitions.js.map +1 -1
  158. package/dist/workflow/types.d.ts +2 -1
  159. package/dist/workflow/types.d.ts.map +1 -1
  160. package/package.json +4 -1
  161. package/resources/global/en/agents/default/ai-antipattern-reviewer.md +193 -0
  162. package/resources/global/en/agents/default/{architect.md → architecture-reviewer.md} +144 -44
  163. package/resources/global/en/agents/default/coder.md +7 -7
  164. package/resources/global/en/agents/default/planner.md +29 -9
  165. package/resources/global/en/agents/default/{security.md → security-reviewer.md} +23 -5
  166. package/resources/global/en/agents/default/supervisor.md +13 -2
  167. package/resources/global/en/agents/expert/frontend-reviewer.md +0 -17
  168. package/resources/global/en/agents/expert/qa-reviewer.md +0 -16
  169. package/resources/global/en/agents/expert/security-reviewer.md +0 -16
  170. package/resources/global/en/agents/expert-cqrs/cqrs-es-reviewer.md +0 -17
  171. package/resources/global/en/agents/templates/coder.md +128 -0
  172. package/resources/global/en/agents/templates/planner.md +44 -0
  173. package/resources/global/en/agents/templates/reviewer.md +57 -0
  174. package/resources/global/en/agents/templates/supervisor.md +64 -0
  175. package/resources/global/en/workflows/default.yaml +235 -770
  176. package/resources/global/en/workflows/expert-cqrs.yaml +325 -697
  177. package/resources/global/en/workflows/expert.yaml +354 -722
  178. package/resources/global/en/workflows/magi.yaml +45 -52
  179. package/resources/global/en/workflows/research.yaml +18 -99
  180. package/resources/global/en/workflows/simple.yaml +156 -421
  181. package/resources/global/ja/agents/default/{ai-reviewer.md → ai-antipattern-reviewer.md} +92 -15
  182. package/resources/global/ja/agents/default/{architect.md → architecture-reviewer.md} +148 -48
  183. package/resources/global/ja/agents/default/coder.md +7 -7
  184. package/resources/global/ja/agents/default/planner.md +29 -9
  185. package/resources/global/ja/agents/default/{security.md → security-reviewer.md} +23 -5
  186. package/resources/global/ja/agents/default/supervisor.md +13 -2
  187. package/resources/global/ja/agents/expert/frontend-reviewer.md +0 -18
  188. package/resources/global/ja/agents/expert/qa-reviewer.md +0 -16
  189. package/resources/global/ja/agents/expert/security-reviewer.md +0 -16
  190. package/resources/global/ja/agents/expert-cqrs/cqrs-es-reviewer.md +0 -18
  191. package/resources/global/ja/agents/templates/coder.md +128 -0
  192. package/resources/global/ja/agents/templates/planner.md +44 -0
  193. package/resources/global/ja/agents/templates/reviewer.md +57 -0
  194. package/resources/global/ja/agents/templates/supervisor.md +64 -0
  195. package/resources/global/ja/workflows/default.yaml +230 -771
  196. package/resources/global/ja/workflows/expert-cqrs.yaml +316 -832
  197. package/resources/global/ja/workflows/expert.yaml +331 -711
  198. package/resources/global/ja/workflows/magi.yaml +45 -52
  199. package/resources/global/ja/workflows/research.yaml +18 -99
  200. package/resources/global/ja/workflows/simple.yaml +149 -415
  201. package/resources/project/dotgitignore +10 -0
  202. package/resources/project/tasks/TASK-FORMAT +37 -0
  203. package/dist/commands/reviewTasks.d.ts +0 -43
  204. package/dist/commands/reviewTasks.d.ts.map +0 -1
  205. package/dist/commands/reviewTasks.js.map +0 -1
  206. package/dist/task/worktree.d.ts +0 -70
  207. package/dist/task/worktree.d.ts.map +0 -1
  208. package/dist/task/worktree.js +0 -221
  209. package/dist/task/worktree.js.map +0 -1
  210. package/resources/global/en/agents/default/ai-reviewer.md +0 -116
@@ -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,43 +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 = 'diff' | 'instruct' | '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
- * Show full diff in an interactive pager (less).
16
- * Falls back to direct output if pager is unavailable.
17
- */
18
- export declare function showFullDiff(cwd: string, defaultBranch: string, branch: string): void;
19
- /**
20
- * Try-merge (squash): stage changes from branch without committing.
21
- * Keeps the worktree and branch intact for further review.
22
- * User can inspect staged changes and commit manually if satisfied.
23
- */
24
- export declare function tryMergeWorktreeBranch(projectDir: string, item: WorktreeReviewItem): boolean;
25
- /**
26
- * Merge & cleanup: if already merged, skip merge and just cleanup.
27
- * Otherwise merge first, then cleanup (remove worktree + delete branch).
28
- */
29
- export declare function mergeWorktreeBranch(projectDir: string, item: WorktreeReviewItem): boolean;
30
- /**
31
- * Delete a worktree and its branch (discard changes).
32
- */
33
- export declare function deleteWorktreeBranch(projectDir: string, item: WorktreeReviewItem): boolean;
34
- /**
35
- * Instruct worktree: give additional instructions to modify the worktree.
36
- * Executes a task on the worktree and auto-commits if successful.
37
- */
38
- export declare function instructWorktree(projectDir: string, item: WorktreeReviewItem): Promise<boolean>;
39
- /**
40
- * Main entry point: review worktree tasks interactively.
41
- */
42
- export declare function reviewTasks(cwd: string): Promise<void>;
43
- //# 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;AAY7B,gDAAgD;AAChD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5E;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAW1E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb,IAAI,CAYN;AAwCD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAqB5F;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;AAsED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,OAAO,CAAC,CA8ClB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0E5D"}
@@ -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"}
@@ -1,221 +0,0 @@
1
- /**
2
- * Git worktree management
3
- *
4
- * Creates and removes git worktrees for task isolation.
5
- */
6
- import * as fs from 'node:fs';
7
- import * as path from 'node:path';
8
- import { execFileSync } from 'node:child_process';
9
- import { createLogger } from '../utils/debug.js';
10
- import { slugify } from '../utils/slug.js';
11
- import { isPathSafe } from '../config/paths.js';
12
- const log = createLogger('worktree');
13
- /**
14
- * Generate a timestamp string for paths/branches
15
- */
16
- function generateTimestamp() {
17
- return new Date().toISOString().replace(/[:.]/g, '').slice(0, 15);
18
- }
19
- /**
20
- * Resolve the worktree path based on options.
21
- * Validates that custom paths stay within the project directory.
22
- *
23
- * @throws Error if a custom path escapes projectDir (path traversal)
24
- */
25
- function resolveWorktreePath(projectDir, options) {
26
- if (typeof options.worktree === 'string') {
27
- const resolved = path.isAbsolute(options.worktree)
28
- ? options.worktree
29
- : path.resolve(projectDir, options.worktree);
30
- if (!isPathSafe(projectDir, resolved)) {
31
- throw new Error(`Worktree path escapes project directory: ${options.worktree}`);
32
- }
33
- return resolved;
34
- }
35
- // worktree: true → .takt/worktrees/{timestamp}-{task-slug}/
36
- const timestamp = generateTimestamp();
37
- const slug = slugify(options.taskSlug);
38
- const dirName = slug ? `${timestamp}-${slug}` : timestamp;
39
- return path.join(projectDir, '.takt', 'worktrees', dirName);
40
- }
41
- /**
42
- * Resolve the branch name based on options
43
- */
44
- function resolveBranchName(options) {
45
- if (options.branch) {
46
- return options.branch;
47
- }
48
- // Auto-generate: takt/{timestamp}-{task-slug}
49
- const timestamp = generateTimestamp();
50
- const slug = slugify(options.taskSlug);
51
- return slug ? `takt/${timestamp}-${slug}` : `takt/${timestamp}`;
52
- }
53
- /**
54
- * Check if a git branch exists
55
- */
56
- function branchExists(projectDir, branch) {
57
- try {
58
- execFileSync('git', ['rev-parse', '--verify', branch], {
59
- cwd: projectDir,
60
- stdio: 'pipe',
61
- });
62
- return true;
63
- }
64
- catch {
65
- return false;
66
- }
67
- }
68
- /**
69
- * Create a git worktree for a task
70
- *
71
- * @returns WorktreeResult with path and branch
72
- * @throws Error if git worktree creation fails
73
- */
74
- export function createWorktree(projectDir, options) {
75
- const worktreePath = resolveWorktreePath(projectDir, options);
76
- const branch = resolveBranchName(options);
77
- log.info('Creating worktree', { path: worktreePath, branch });
78
- // Ensure parent directory exists
79
- fs.mkdirSync(path.dirname(worktreePath), { recursive: true });
80
- // Create worktree (use execFileSync to avoid shell injection)
81
- if (branchExists(projectDir, branch)) {
82
- execFileSync('git', ['worktree', 'add', worktreePath, branch], {
83
- cwd: projectDir,
84
- stdio: 'pipe',
85
- });
86
- }
87
- else {
88
- execFileSync('git', ['worktree', 'add', '-b', branch, worktreePath], {
89
- cwd: projectDir,
90
- stdio: 'pipe',
91
- });
92
- }
93
- log.info('Worktree created', { path: worktreePath, branch });
94
- return { path: worktreePath, branch };
95
- }
96
- /**
97
- * Remove a git worktree
98
- */
99
- export function removeWorktree(projectDir, worktreePath) {
100
- log.info('Removing worktree', { path: worktreePath });
101
- try {
102
- execFileSync('git', ['worktree', 'remove', worktreePath, '--force'], {
103
- cwd: projectDir,
104
- stdio: 'pipe',
105
- });
106
- log.info('Worktree removed', { path: worktreePath });
107
- }
108
- catch (err) {
109
- log.error('Failed to remove worktree', { path: worktreePath, error: String(err) });
110
- }
111
- }
112
- // --- Review-related types and helpers ---
113
- const TAKT_BRANCH_PREFIX = 'takt/';
114
- /**
115
- * Detect the default branch name (main or master).
116
- * Falls back to 'main'.
117
- */
118
- export function detectDefaultBranch(cwd) {
119
- try {
120
- const ref = execFileSync('git', ['symbolic-ref', 'refs/remotes/origin/HEAD'], { cwd, encoding: 'utf-8', stdio: 'pipe' }).trim();
121
- // ref is like "refs/remotes/origin/main"
122
- const parts = ref.split('/');
123
- return parts[parts.length - 1] || 'main';
124
- }
125
- catch {
126
- // Fallback: check if 'main' or 'master' exists
127
- try {
128
- execFileSync('git', ['rev-parse', '--verify', 'main'], {
129
- cwd, encoding: 'utf-8', stdio: 'pipe',
130
- });
131
- return 'main';
132
- }
133
- catch {
134
- try {
135
- execFileSync('git', ['rev-parse', '--verify', 'master'], {
136
- cwd, encoding: 'utf-8', stdio: 'pipe',
137
- });
138
- return 'master';
139
- }
140
- catch {
141
- return 'main';
142
- }
143
- }
144
- }
145
- }
146
- /**
147
- * Parse `git worktree list --porcelain` output into WorktreeInfo entries.
148
- * Only includes worktrees on branches with the takt/ prefix.
149
- */
150
- export function parseTaktWorktrees(porcelainOutput) {
151
- const entries = [];
152
- const blocks = porcelainOutput.trim().split('\n\n');
153
- for (const block of blocks) {
154
- const lines = block.split('\n');
155
- let wtPath = '';
156
- let commit = '';
157
- let branch = '';
158
- for (const line of lines) {
159
- if (line.startsWith('worktree ')) {
160
- wtPath = line.slice('worktree '.length);
161
- }
162
- else if (line.startsWith('HEAD ')) {
163
- commit = line.slice('HEAD '.length);
164
- }
165
- else if (line.startsWith('branch ')) {
166
- const ref = line.slice('branch '.length);
167
- branch = ref.replace('refs/heads/', '');
168
- }
169
- }
170
- if (wtPath && branch.startsWith(TAKT_BRANCH_PREFIX)) {
171
- entries.push({ path: wtPath, branch, commit });
172
- }
173
- }
174
- return entries;
175
- }
176
- /**
177
- * List all takt-managed worktrees.
178
- */
179
- export function listTaktWorktrees(projectDir) {
180
- try {
181
- const output = execFileSync('git', ['worktree', 'list', '--porcelain'], { cwd: projectDir, encoding: 'utf-8', stdio: 'pipe' });
182
- return parseTaktWorktrees(output);
183
- }
184
- catch (err) {
185
- log.error('Failed to list worktrees', { error: String(err) });
186
- return [];
187
- }
188
- }
189
- /**
190
- * Get the number of files changed between the default branch and a given branch.
191
- */
192
- export function getFilesChanged(cwd, defaultBranch, branch) {
193
- try {
194
- const output = execFileSync('git', ['diff', '--numstat', `${defaultBranch}...${branch}`], { cwd, encoding: 'utf-8', stdio: 'pipe' });
195
- return output.trim().split('\n').filter(l => l.length > 0).length;
196
- }
197
- catch {
198
- return 0;
199
- }
200
- }
201
- /**
202
- * Extract a human-readable task slug from a takt branch name.
203
- * e.g. "takt/20260128T032800-fix-auth" → "fix-auth"
204
- */
205
- export function extractTaskSlug(branch) {
206
- const name = branch.replace(TAKT_BRANCH_PREFIX, '');
207
- // Remove timestamp prefix (format: YYYYMMDDTHHmmss- or similar)
208
- const withoutTimestamp = name.replace(/^\d{8,}T?\d{0,6}-?/, '');
209
- return withoutTimestamp || name;
210
- }
211
- /**
212
- * Build review items from worktree list, enriching with diff stats.
213
- */
214
- export function buildReviewItems(projectDir, worktrees, defaultBranch) {
215
- return worktrees.map(wt => ({
216
- info: wt,
217
- filesChanged: getFilesChanged(projectDir, defaultBranch, wt.branch),
218
- taskSlug: extractTaskSlug(wt.branch),
219
- }));
220
- }
221
- //# sourceMappingURL=worktree.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/task/worktree.ts"],"names":[],"mappings":"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"}
@@ -1,116 +0,0 @@
1
- # AI Code Reviewer Agent
2
-
3
- You are an **AI-generated code expert**. You review code generated by AI coding assistants for patterns and issues rarely seen in human-written code.
4
-
5
- ## Role
6
-
7
- - Detect AI-specific code patterns and anti-patterns
8
- - Verify that assumptions made by AI are correct
9
- - Check for "confidently wrong" implementations
10
- - Ensure code fits the context of the existing codebase
11
-
12
- **Don't:**
13
- - Review architecture (Architect's job)
14
- - Review security vulnerabilities (Security's job)
15
- - Write code yourself
16
-
17
- ## Why This Role Exists
18
-
19
- AI-generated code has unique characteristics:
20
- - Generated faster than humans can review → Quality gaps emerge
21
- - AI lacks business context → May implement technically correct but contextually wrong solutions
22
- - AI can be confidently wrong → Code that looks plausible but doesn't work
23
- - AI repeats patterns from training data → May use outdated or inappropriate patterns
24
-
25
- ## Review Perspectives
26
-
27
- ### 1. Assumption Validation
28
-
29
- **AI often makes assumptions. Verify them.**
30
-
31
- | Check | Question |
32
- |-------|----------|
33
- | Requirements | Does the implementation match what was actually requested? |
34
- | Context | Does it follow existing codebase conventions? |
35
- | Domain | Are business rules correctly understood? |
36
- | Edge Cases | Did AI consider realistic edge cases? |
37
-
38
- **Red flags:**
39
- - Implementation seems to answer a different question
40
- - Uses patterns not found elsewhere in the codebase
41
- - Overly generic solution for a specific problem
42
-
43
- ### 2. Plausible-But-Wrong Detection
44
-
45
- **AI generates code that looks correct but is wrong.**
46
-
47
- | Pattern | Example |
48
- |---------|---------|
49
- | Syntactically correct but semantically wrong | Validation that checks format but misses business rules |
50
- | Hallucinated API | Calling methods that don't exist in the library version being used |
51
- | Outdated patterns | Using deprecated approaches from training data |
52
- | Over-engineering | Adding abstraction layers unnecessary for the task |
53
- | Under-engineering | Missing error handling for realistic scenarios |
54
-
55
- **Verification approach:**
56
- 1. Can this code actually compile/run?
57
- 2. Do the imported modules/functions exist?
58
- 3. Is the API used correctly for this library version?
59
-
60
- ### 3. Copy-Paste Pattern Detection
61
-
62
- **AI often repeats the same patterns, including mistakes.**
63
-
64
- | Check | Action |
65
- |-------|--------|
66
- | Repeated dangerous patterns | Same vulnerability in multiple places |
67
- | Inconsistent implementations | Same logic implemented differently across files |
68
- | Boilerplate explosion | Unnecessary repetition that could be abstracted |
69
-
70
- ### 4. Context Fit Assessment
71
-
72
- **Does the code fit this specific project?**
73
-
74
- | Aspect | Verify |
75
- |--------|--------|
76
- | Naming conventions | Matches existing codebase style |
77
- | Error handling style | Consistent with project patterns |
78
- | Logging approach | Uses project's logging conventions |
79
- | Test style | Matches existing test patterns |
80
-
81
- **Questions to ask:**
82
- - Would a developer familiar with this codebase write it this way?
83
- - Does it feel like it belongs here?
84
- - Are there unexplained deviations from project conventions?
85
-
86
- ### 5. Scope Creep Detection
87
-
88
- **AI tends to over-deliver. Check for unnecessary additions.**
89
-
90
- | Check | Problem |
91
- |-------|---------|
92
- | Extra features | Functionality that wasn't requested |
93
- | Premature abstraction | Interfaces/abstractions for single implementations |
94
- | Over-configuration | Making things configurable when they don't need to be |
95
- | Gold plating | "Nice-to-have" additions that weren't asked for |
96
-
97
- **Principle:** The best code is the minimum code that solves the problem.
98
-
99
- ### 6. Decision Traceability Review
100
-
101
- **Verify that Coder's decision log is reasonable.**
102
-
103
- | Check | Question |
104
- |-------|----------|
105
- | Decisions are documented | Are non-obvious choices explained? |
106
- | Reasoning is sound | Does the rationale make sense? |
107
- | Alternatives considered | Were other approaches evaluated? |
108
- | Assumptions explicit | Are assumptions stated and reasonable? |
109
-
110
- ## Important
111
-
112
- **Focus on AI-specific issues.** Don't duplicate what Architect or Security reviewers will check.
113
-
114
- **Trust but verify.** AI-generated code often looks professional. Your job is to catch subtle issues that pass initial inspection.
115
-
116
- **Remember:** You are the bridge between AI generation speed and human quality standards. Catch what automation tools miss.