takt 0.1.7 → 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 (156) hide show
  1. package/README.md +179 -43
  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 +73 -18
  13. package/dist/cli.js.map +1 -1
  14. package/dist/commands/addTask.d.ts +15 -0
  15. package/dist/commands/addTask.d.ts.map +1 -0
  16. package/dist/commands/addTask.js +119 -0
  17. package/dist/commands/addTask.js.map +1 -0
  18. package/dist/commands/help.d.ts.map +1 -1
  19. package/dist/commands/help.js +18 -5
  20. package/dist/commands/help.js.map +1 -1
  21. package/dist/commands/index.d.ts +4 -0
  22. package/dist/commands/index.d.ts.map +1 -1
  23. package/dist/commands/index.js +4 -0
  24. package/dist/commands/index.js.map +1 -1
  25. package/dist/commands/refreshBuiltin.d.ts +11 -0
  26. package/dist/commands/refreshBuiltin.d.ts.map +1 -0
  27. package/dist/commands/refreshBuiltin.js +37 -0
  28. package/dist/commands/refreshBuiltin.js.map +1 -0
  29. package/dist/commands/reviewTasks.d.ts +32 -0
  30. package/dist/commands/reviewTasks.d.ts.map +1 -0
  31. package/dist/commands/reviewTasks.js +198 -0
  32. package/dist/commands/reviewTasks.js.map +1 -0
  33. package/dist/commands/taskExecution.d.ts +24 -1
  34. package/dist/commands/taskExecution.d.ts.map +1 -1
  35. package/dist/commands/taskExecution.js +100 -36
  36. package/dist/commands/taskExecution.js.map +1 -1
  37. package/dist/commands/watchTasks.d.ts +12 -0
  38. package/dist/commands/watchTasks.d.ts.map +1 -0
  39. package/dist/commands/watchTasks.js +68 -0
  40. package/dist/commands/watchTasks.js.map +1 -0
  41. package/dist/commands/workflowExecution.d.ts +5 -1
  42. package/dist/commands/workflowExecution.d.ts.map +1 -1
  43. package/dist/commands/workflowExecution.js +35 -12
  44. package/dist/commands/workflowExecution.js.map +1 -1
  45. package/dist/config/initialization.d.ts +2 -0
  46. package/dist/config/initialization.d.ts.map +1 -1
  47. package/dist/config/initialization.js +12 -2
  48. package/dist/config/initialization.js.map +1 -1
  49. package/dist/config/paths.d.ts +1 -1
  50. package/dist/config/paths.d.ts.map +1 -1
  51. package/dist/config/paths.js +1 -1
  52. package/dist/config/paths.js.map +1 -1
  53. package/dist/config/sessionStore.d.ts +5 -0
  54. package/dist/config/sessionStore.d.ts.map +1 -1
  55. package/dist/config/sessionStore.js +1 -1
  56. package/dist/config/sessionStore.js.map +1 -1
  57. package/dist/config/workflowLoader.d.ts.map +1 -1
  58. package/dist/config/workflowLoader.js +1 -0
  59. package/dist/config/workflowLoader.js.map +1 -1
  60. package/dist/models/schemas.d.ts +22 -0
  61. package/dist/models/schemas.d.ts.map +1 -1
  62. package/dist/models/schemas.js +8 -0
  63. package/dist/models/schemas.js.map +1 -1
  64. package/dist/models/types.d.ts +8 -2
  65. package/dist/models/types.d.ts.map +1 -1
  66. package/dist/prompt/index.d.ts +60 -11
  67. package/dist/prompt/index.d.ts.map +1 -1
  68. package/dist/prompt/index.js +246 -72
  69. package/dist/prompt/index.js.map +1 -1
  70. package/dist/providers/claude.d.ts.map +1 -1
  71. package/dist/providers/claude.js +2 -0
  72. package/dist/providers/claude.js.map +1 -1
  73. package/dist/providers/index.d.ts +3 -1
  74. package/dist/providers/index.d.ts.map +1 -1
  75. package/dist/providers/index.js.map +1 -1
  76. package/dist/resources/index.d.ts +5 -0
  77. package/dist/resources/index.d.ts.map +1 -1
  78. package/dist/resources/index.js +33 -9
  79. package/dist/resources/index.js.map +1 -1
  80. package/dist/task/autoCommit.d.ts +28 -0
  81. package/dist/task/autoCommit.d.ts.map +1 -0
  82. package/dist/task/autoCommit.js +68 -0
  83. package/dist/task/autoCommit.js.map +1 -0
  84. package/dist/task/display.d.ts.map +1 -1
  85. package/dist/task/display.js +19 -1
  86. package/dist/task/display.js.map +1 -1
  87. package/dist/task/index.d.ts +5 -0
  88. package/dist/task/index.d.ts.map +1 -1
  89. package/dist/task/index.js +5 -0
  90. package/dist/task/index.js.map +1 -1
  91. package/dist/task/parser.d.ts +33 -0
  92. package/dist/task/parser.d.ts.map +1 -0
  93. package/dist/task/parser.js +86 -0
  94. package/dist/task/parser.js.map +1 -0
  95. package/dist/task/runner.d.ts +6 -0
  96. package/dist/task/runner.d.ts.map +1 -1
  97. package/dist/task/runner.js +33 -42
  98. package/dist/task/runner.js.map +1 -1
  99. package/dist/task/schema.d.ts +32 -0
  100. package/dist/task/schema.d.ts.map +1 -0
  101. package/dist/task/schema.js +31 -0
  102. package/dist/task/schema.js.map +1 -0
  103. package/dist/task/watcher.d.ts +33 -0
  104. package/dist/task/watcher.d.ts.map +1 -0
  105. package/dist/task/watcher.js +69 -0
  106. package/dist/task/watcher.js.map +1 -0
  107. package/dist/task/worktree.d.ts +70 -0
  108. package/dist/task/worktree.d.ts.map +1 -0
  109. package/dist/task/worktree.js +221 -0
  110. package/dist/task/worktree.js.map +1 -0
  111. package/dist/utils/debug.d.ts +6 -1
  112. package/dist/utils/debug.d.ts.map +1 -1
  113. package/dist/utils/debug.js +30 -24
  114. package/dist/utils/debug.js.map +1 -1
  115. package/dist/utils/index.d.ts +1 -0
  116. package/dist/utils/index.d.ts.map +1 -1
  117. package/dist/utils/index.js +1 -0
  118. package/dist/utils/index.js.map +1 -1
  119. package/dist/utils/session.d.ts +20 -0
  120. package/dist/utils/session.d.ts.map +1 -1
  121. package/dist/utils/session.js +32 -3
  122. package/dist/utils/session.js.map +1 -1
  123. package/dist/utils/slug.d.ts +12 -0
  124. package/dist/utils/slug.d.ts.map +1 -0
  125. package/dist/utils/slug.js +18 -0
  126. package/dist/utils/slug.js.map +1 -0
  127. package/dist/utils/text.d.ts +22 -0
  128. package/dist/utils/text.d.ts.map +1 -0
  129. package/dist/utils/text.js +54 -0
  130. package/dist/utils/text.js.map +1 -0
  131. package/dist/workflow/engine.d.ts +5 -6
  132. package/dist/workflow/engine.d.ts.map +1 -1
  133. package/dist/workflow/engine.js +32 -12
  134. package/dist/workflow/engine.js.map +1 -1
  135. package/dist/workflow/index.d.ts +2 -2
  136. package/dist/workflow/index.d.ts.map +1 -1
  137. package/dist/workflow/index.js +2 -2
  138. package/dist/workflow/index.js.map +1 -1
  139. package/dist/workflow/instruction-builder.d.ts +31 -2
  140. package/dist/workflow/instruction-builder.d.ts.map +1 -1
  141. package/dist/workflow/instruction-builder.js +69 -1
  142. package/dist/workflow/instruction-builder.js.map +1 -1
  143. package/dist/workflow/transitions.d.ts.map +1 -1
  144. package/dist/workflow/transitions.js +1 -0
  145. package/dist/workflow/transitions.js.map +1 -1
  146. package/dist/workflow/types.d.ts +5 -1
  147. package/dist/workflow/types.d.ts.map +1 -1
  148. package/package.json +3 -2
  149. package/resources/global/en/workflows/default.yaml +22 -1
  150. package/resources/global/en/workflows/simple.yaml +18 -1
  151. package/resources/global/ja/agents/default/ai-reviewer.md +24 -1
  152. package/resources/global/ja/agents/default/architect.md +157 -4
  153. package/resources/global/ja/agents/default/coder.md +1 -0
  154. package/resources/global/ja/workflows/default.yaml +38 -1
  155. package/resources/global/ja/workflows/expert-review.yaml +169 -10
  156. package/resources/global/ja/workflows/simple.yaml +18 -1
package/dist/cli.js CHANGED
@@ -15,12 +15,30 @@ import { resolve } from 'node:path';
15
15
  import { initGlobalDirs, initProjectDirs, loadGlobalConfig, getEffectiveDebugConfig, } from './config/index.js';
16
16
  import { clearAgentSessions, getCurrentWorkflow, isVerboseMode } from './config/paths.js';
17
17
  import { info, error, success, setLogLevel } from './utils/ui.js';
18
- import { initDebugLogger, createLogger } from './utils/debug.js';
19
- import { executeTask, runAllTasks, showHelp, switchWorkflow, switchConfig, } from './commands/index.js';
18
+ import { initDebugLogger, createLogger, setVerboseConsole } from './utils/debug.js';
19
+ import { executeTask, runAllTasks, showHelp, switchWorkflow, switchConfig, addTask, refreshBuiltin, watchTasks, reviewTasks, } from './commands/index.js';
20
20
  import { listWorkflows } from './config/workflowLoader.js';
21
- import { selectOptionWithDefault } from './prompt/index.js';
21
+ import { selectOptionWithDefault, confirm } from './prompt/index.js';
22
+ import { createWorktree } from './task/worktree.js';
23
+ import { autoCommitWorktree } from './task/autoCommit.js';
22
24
  import { DEFAULT_WORKFLOW_NAME } from './constants.js';
23
25
  const log = createLogger('cli');
26
+ /**
27
+ * Ask user whether to create a worktree, and create one if confirmed.
28
+ * Returns the execution directory and whether a worktree was created.
29
+ */
30
+ export async function confirmAndCreateWorktree(cwd, task) {
31
+ const useWorktree = await confirm('Create worktree?', false);
32
+ if (!useWorktree) {
33
+ return { execCwd: cwd, isWorktree: false };
34
+ }
35
+ const result = createWorktree(cwd, {
36
+ worktree: true,
37
+ taskSlug: task,
38
+ });
39
+ info(`Worktree created: ${result.path} (branch: ${result.branch})`);
40
+ return { execCwd: result.path, isWorktree: true };
41
+ }
24
42
  const program = new Command();
25
43
  program
26
44
  .name('takt')
@@ -34,30 +52,37 @@ program
34
52
  await initGlobalDirs();
35
53
  // Initialize project directories (.takt/)
36
54
  initProjectDirs(cwd);
37
- // Initialize debug logger from config
38
- const debugConfig = getEffectiveDebugConfig(cwd);
55
+ // Determine verbose mode and initialize logging
56
+ const verbose = isVerboseMode(cwd);
57
+ let debugConfig = getEffectiveDebugConfig(cwd);
58
+ // verbose=true enables file logging automatically
59
+ if (verbose && (!debugConfig || !debugConfig.enabled)) {
60
+ debugConfig = { enabled: true };
61
+ }
39
62
  initDebugLogger(debugConfig, cwd);
40
- log.info('TAKT CLI starting', {
41
- version: '0.1.0',
42
- cwd,
43
- task: task || null,
44
- });
45
- // Set log level from config
46
- if (isVerboseMode(cwd)) {
63
+ // Enable verbose console output (stderr) for debug logs
64
+ if (verbose) {
65
+ setVerboseConsole(true);
47
66
  setLogLevel('debug');
48
- log.debug('Verbose mode enabled (from config)');
49
67
  }
50
68
  else {
51
69
  const config = loadGlobalConfig();
52
70
  setLogLevel(config.logLevel);
53
71
  }
72
+ log.info('TAKT CLI starting', {
73
+ version: '0.1.0',
74
+ cwd,
75
+ task: task || null,
76
+ verbose,
77
+ });
54
78
  // Handle slash commands
55
79
  if (task?.startsWith('/')) {
56
80
  const parts = task.slice(1).split(/\s+/);
57
81
  const command = parts[0]?.toLowerCase() || '';
58
82
  const args = parts.slice(1);
59
83
  switch (command) {
60
- case 'run-tasks': {
84
+ case 'run-tasks':
85
+ case 'run': {
61
86
  const workflow = getCurrentWorkflow(cwd);
62
87
  await runAllTasks(cwd, workflow);
63
88
  return;
@@ -76,9 +101,23 @@ program
76
101
  case 'config':
77
102
  await switchConfig(cwd, args[0]);
78
103
  return;
104
+ case 'add-task':
105
+ case 'add':
106
+ await addTask(cwd, args);
107
+ return;
108
+ case 'refresh-builtin':
109
+ await refreshBuiltin();
110
+ return;
111
+ case 'watch':
112
+ await watchTasks(cwd);
113
+ return;
114
+ case 'review-tasks':
115
+ case 'review':
116
+ await reviewTasks(cwd);
117
+ return;
79
118
  default:
80
119
  error(`Unknown command: /${command}`);
81
- info('Available: /run-tasks, /switch, /clear, /help, /config');
120
+ info('Available: /run-tasks (/run), /watch, /add-task (/add), /review-tasks (/review), /switch (/sw), /clear, /refresh-builtin, /help, /config');
82
121
  process.exit(1);
83
122
  }
84
123
  }
@@ -109,10 +148,26 @@ program
109
148
  : (availableWorkflows.includes(DEFAULT_WORKFLOW_NAME)
110
149
  ? DEFAULT_WORKFLOW_NAME
111
150
  : availableWorkflows[0] || DEFAULT_WORKFLOW_NAME);
112
- selectedWorkflow = await selectOptionWithDefault('Select workflow:', options, defaultWorkflow);
151
+ const selected = await selectOptionWithDefault('Select workflow:', options, defaultWorkflow);
152
+ if (selected === null) {
153
+ info('Cancelled');
154
+ return;
155
+ }
156
+ selectedWorkflow = selected;
157
+ }
158
+ // Ask whether to create a worktree
159
+ const { execCwd, isWorktree } = await confirmAndCreateWorktree(cwd, task);
160
+ log.info('Starting task execution', { task, workflow: selectedWorkflow, worktree: isWorktree });
161
+ const taskSuccess = await executeTask(task, execCwd, selectedWorkflow, cwd);
162
+ if (taskSuccess && isWorktree) {
163
+ const commitResult = autoCommitWorktree(execCwd, task);
164
+ if (commitResult.success && commitResult.commitHash) {
165
+ success(`Auto-committed: ${commitResult.commitHash}`);
166
+ }
167
+ else if (!commitResult.success) {
168
+ error(`Auto-commit failed: ${commitResult.message}`);
169
+ }
113
170
  }
114
- log.info('Starting task execution', { task, workflow: selectedWorkflow });
115
- const taskSuccess = await executeTask(task, cwd, selectedWorkflow);
116
171
  if (!taskSuccess) {
117
172
  process.exit(1);
118
173
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EACL,WAAW,EACX,WAAW,EACX,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,OAAO,EACP,cAAc,EACd,UAAU,EACV,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;AAOhC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,GAAW,EACX,IAAY;IAEZ,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAE7D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE;QACjC,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IACH,IAAI,CAAC,qBAAqB,MAAM,CAAC,IAAI,aAAa,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,oCAAoC,CAAC;KACjD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,QAAQ,CAAC,QAAQ,EAAE,kCAAkC,CAAC;KACtD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEnC,sCAAsC;IACtC,MAAM,cAAc,EAAE,CAAC;IAEvB,0CAA0C;IAC1C,eAAe,CAAC,GAAG,CAAC,CAAC;IAErB,gDAAgD;IAChD,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,WAAW,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAE/C,kDAAkD;IAClD,IAAI,OAAO,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,WAAW,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAClC,CAAC;IAED,eAAe,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAElC,wDAAwD;IACxD,IAAI,OAAO,EAAE,CAAC;QACZ,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,WAAW,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE;QAC5B,OAAO,EAAE,OAAO;QAChB,GAAG;QACH,IAAI,EAAE,IAAI,IAAI,IAAI;QAClB,OAAO;KACR,CAAC,CAAC;IAEH,wBAAwB;IACxB,IAAI,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5B,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,WAAW,CAAC;YACjB,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBACzC,MAAM,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACjC,OAAO;YACT,CAAC;YAED,KAAK,OAAO;gBACV,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBACxB,OAAO,CAAC,wBAAwB,CAAC,CAAC;gBAClC,OAAO;YAET,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,OAAO;YAET,KAAK,MAAM;gBACT,QAAQ,EAAE,CAAC;gBACX,OAAO;YAET,KAAK,QAAQ;gBACX,MAAM,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,OAAO;YAET,KAAK,UAAU,CAAC;YAChB,KAAK,KAAK;gBACR,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACzB,OAAO;YAET,KAAK,iBAAiB;gBACpB,MAAM,cAAc,EAAE,CAAC;gBACvB,OAAO;YAET,KAAK,OAAO;gBACV,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;gBACtB,OAAO;YAET,KAAK,cAAc,CAAC;YACpB,KAAK,QAAQ;gBACX,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;gBACvB,OAAO;YAET;gBACE,KAAK,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;gBACtC,IAAI,CAAC,0IAA0I,CAAC,CAAC;gBACjJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,IAAI,IAAI,EAAE,CAAC;QACT,oDAAoD;QACpD,MAAM,kBAAkB,GAAG,aAAa,EAAE,CAAC;QAC3C,MAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAEhD,IAAI,gBAAwB,CAAC;QAE7B,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,sCAAsC;YACtC,gBAAgB,GAAG,qBAAqB,CAAC;YACzC,IAAI,CAAC,sCAAsC,gBAAgB,EAAE,CAAC,CAAC;QACjE,CAAC;aAAM,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,qCAAqC;YACrC,gBAAgB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,4CAA4C;YAC5C,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAChD,KAAK,EAAE,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI;gBAC5D,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC,CAAC;YAEJ,qEAAqE;YACrE,MAAM,eAAe,GAAG,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAClE,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,qBAAqB,CAAC;oBACjD,CAAC,CAAC,qBAAqB;oBACvB,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC;YAExD,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAC5C,kBAAkB,EAClB,OAAO,EACP,eAAe,CAChB,CAAC;YAEF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YAED,gBAAgB,GAAG,QAAQ,CAAC;QAC9B,CAAC;QAED,mCAAmC;QACnC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAE1E,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QAChG,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAE5E,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACvD,IAAI,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;gBACpD,OAAO,CAAC,mBAAmB,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;gBACjC,KAAK,CAAC,uBAAuB,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO;IACT,CAAC;IAED,+BAA+B;IAC/B,QAAQ,EAAE,CAAC;AACb,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * /add-task command implementation
3
+ *
4
+ * Creates a new task file in .takt/tasks/ with YAML format.
5
+ * Supports worktree and branch options.
6
+ */
7
+ /**
8
+ * /add-task command handler
9
+ *
10
+ * Usage:
11
+ * takt /add-task "タスク内容" # Quick add (no worktree)
12
+ * takt /add-task # Interactive mode
13
+ */
14
+ export declare function addTask(cwd: string, args: string[]): Promise<void>;
15
+ //# sourceMappingURL=addTask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addTask.d.ts","sourceRoot":"","sources":["../../src/commands/addTask.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgCH;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFxE"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * /add-task command implementation
3
+ *
4
+ * Creates a new task file in .takt/tasks/ with YAML format.
5
+ * Supports worktree and branch options.
6
+ */
7
+ import * as fs from 'node:fs';
8
+ import * as path from 'node:path';
9
+ import { stringify as stringifyYaml } from 'yaml';
10
+ import { promptInput, promptMultilineInput, confirm, selectOption } from '../prompt/index.js';
11
+ import { success, info } from '../utils/ui.js';
12
+ import { slugify } from '../utils/slug.js';
13
+ import { createLogger } from '../utils/debug.js';
14
+ import { listWorkflows } from '../config/workflowLoader.js';
15
+ import { getCurrentWorkflow } from '../config/paths.js';
16
+ const log = createLogger('add-task');
17
+ /**
18
+ * Generate a unique task filename
19
+ */
20
+ function generateFilename(tasksDir, taskContent) {
21
+ const slug = slugify(taskContent);
22
+ const base = slug || 'task';
23
+ let filename = `${base}.yaml`;
24
+ let counter = 1;
25
+ while (fs.existsSync(path.join(tasksDir, filename))) {
26
+ filename = `${base}-${counter}.yaml`;
27
+ counter++;
28
+ }
29
+ return filename;
30
+ }
31
+ /**
32
+ * /add-task command handler
33
+ *
34
+ * Usage:
35
+ * takt /add-task "タスク内容" # Quick add (no worktree)
36
+ * takt /add-task # Interactive mode
37
+ */
38
+ export async function addTask(cwd, args) {
39
+ const tasksDir = path.join(cwd, '.takt', 'tasks');
40
+ fs.mkdirSync(tasksDir, { recursive: true });
41
+ let taskContent;
42
+ let worktree;
43
+ let branch;
44
+ let workflow;
45
+ if (args.length > 0) {
46
+ // Argument mode: task content provided directly
47
+ taskContent = args.join(' ');
48
+ }
49
+ else {
50
+ // Interactive mode (multiline: empty line to finish)
51
+ const input = await promptMultilineInput('Task content');
52
+ if (!input) {
53
+ info('Cancelled.');
54
+ return;
55
+ }
56
+ taskContent = input;
57
+ }
58
+ // Ask about worktree
59
+ const useWorktree = await confirm('Create worktree?', false);
60
+ if (useWorktree) {
61
+ const customPath = await promptInput('Worktree path (Enter for auto)');
62
+ worktree = customPath || true;
63
+ // Ask about branch
64
+ const customBranch = await promptInput('Branch name (Enter for auto)');
65
+ if (customBranch) {
66
+ branch = customBranch;
67
+ }
68
+ }
69
+ // Ask about workflow using interactive selector
70
+ const availableWorkflows = listWorkflows();
71
+ if (availableWorkflows.length > 0) {
72
+ const currentWorkflow = getCurrentWorkflow(cwd);
73
+ const defaultWorkflow = availableWorkflows.includes(currentWorkflow)
74
+ ? currentWorkflow
75
+ : availableWorkflows[0];
76
+ const options = availableWorkflows.map((name) => ({
77
+ label: name === currentWorkflow ? `${name} (current)` : name,
78
+ value: name,
79
+ }));
80
+ const selected = await selectOption('Select workflow:', options);
81
+ if (selected === null) {
82
+ info('Cancelled.');
83
+ return;
84
+ }
85
+ if (selected !== defaultWorkflow) {
86
+ workflow = selected;
87
+ }
88
+ }
89
+ // Build task data
90
+ const taskData = { task: taskContent };
91
+ if (worktree !== undefined) {
92
+ taskData.worktree = worktree;
93
+ }
94
+ if (branch) {
95
+ taskData.branch = branch;
96
+ }
97
+ if (workflow) {
98
+ taskData.workflow = workflow;
99
+ }
100
+ // Write YAML file (use first line for filename to keep it short)
101
+ const firstLine = taskContent.split('\n')[0] || taskContent;
102
+ const filename = generateFilename(tasksDir, firstLine);
103
+ const filePath = path.join(tasksDir, filename);
104
+ const yamlContent = stringifyYaml(taskData);
105
+ fs.writeFileSync(filePath, yamlContent, 'utf-8');
106
+ log.info('Task created', { filePath, taskData });
107
+ success(`Task created: ${filename}`);
108
+ info(` Path: ${filePath}`);
109
+ if (worktree) {
110
+ info(` Worktree: ${typeof worktree === 'string' ? worktree : 'auto'}`);
111
+ }
112
+ if (branch) {
113
+ info(` Branch: ${branch}`);
114
+ }
115
+ if (workflow) {
116
+ info(` Workflow: ${workflow}`);
117
+ }
118
+ }
119
+ //# sourceMappingURL=addTask.js.map
@@ -0,0 +1 @@
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,CA2B/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"}
@@ -10,18 +10,31 @@ export function showHelp() {
10
10
  header('TAKT - Task Agent Koordination Tool');
11
11
  console.log(`
12
12
  Usage:
13
- takt {task} Execute task with current workflow (continues session)
14
- takt /run-tasks Run all pending tasks from .takt/tasks/
15
- takt /switch Switch workflow interactively
16
- takt /clear Clear agent conversation sessions (reset to initial state)
17
- takt /help Show this help
13
+ takt {task} Execute task with current workflow (continues session)
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)
18
+ takt /switch Switch workflow interactively
19
+ takt /clear Clear agent conversation sessions (reset to initial state)
20
+ takt /refresh-builtin Overwrite builtin agents/workflows with latest version
21
+ takt /help Show this help
18
22
 
19
23
  Examples:
20
24
  takt "Fix the bug in main.ts" # Execute task (continues session)
25
+ takt /add-task "認証機能を追加する" # Quick add task
26
+ takt /add-task # Interactive task creation
21
27
  takt /clear # Clear sessions, start fresh
28
+ takt /watch # Watch & auto-execute tasks
29
+ takt /refresh-builtin # Update builtin resources
30
+ takt /review-tasks # Review & merge worktree results
22
31
  takt /switch
23
32
  takt /run-tasks
24
33
 
34
+ Task files (.takt/tasks/):
35
+ .md files Plain text tasks (backward compatible)
36
+ .yaml files Structured tasks with worktree/branch/workflow options
37
+
25
38
  Configuration (.takt/config.yaml):
26
39
  workflow: default # Current workflow
27
40
  verbose: true # Enable verbose output
@@ -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;;;;;;;;;;;;;;;;;CAiBb,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"}
@@ -3,8 +3,12 @@
3
3
  */
4
4
  export { executeWorkflow, type WorkflowExecutionResult, type WorkflowExecutionOptions } from './workflowExecution.js';
5
5
  export { executeTask, runAllTasks } from './taskExecution.js';
6
+ export { addTask } from './addTask.js';
7
+ export { refreshBuiltin } from './refreshBuiltin.js';
8
+ export { watchTasks } from './watchTasks.js';
6
9
  export { showHelp } from './help.js';
7
10
  export { withAgentSession } from './session.js';
8
11
  export { switchWorkflow } from './workflow.js';
9
12
  export { switchConfig, getCurrentPermissionMode, setPermissionMode, type PermissionMode } from './config.js';
13
+ export { reviewTasks } from './reviewTasks.js';
10
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,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"}
@@ -3,8 +3,12 @@
3
3
  */
4
4
  export { executeWorkflow } from './workflowExecution.js';
5
5
  export { executeTask, runAllTasks } from './taskExecution.js';
6
+ export { addTask } from './addTask.js';
7
+ export { refreshBuiltin } from './refreshBuiltin.js';
8
+ export { watchTasks } from './watchTasks.js';
6
9
  export { showHelp } from './help.js';
7
10
  export { withAgentSession } from './session.js';
8
11
  export { switchWorkflow } from './workflow.js';
9
12
  export { switchConfig, getCurrentPermissionMode, setPermissionMode } from './config.js';
13
+ export { reviewTasks } from './reviewTasks.js';
10
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,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,11 @@
1
+ /**
2
+ * /refresh-builtin command implementation
3
+ *
4
+ * Overwrites builtin workflow and agent files in ~/.takt/ with the latest
5
+ * embedded resources. Does NOT touch config.yaml or user-added files.
6
+ */
7
+ /**
8
+ * Refresh builtin agents and workflows to latest version.
9
+ */
10
+ export declare function refreshBuiltin(): Promise<void>;
11
+ //# sourceMappingURL=refreshBuiltin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refreshBuiltin.d.ts","sourceRoot":"","sources":["../../src/commands/refreshBuiltin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAwBpD"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * /refresh-builtin command implementation
3
+ *
4
+ * Overwrites builtin workflow and agent files in ~/.takt/ with the latest
5
+ * embedded resources. Does NOT touch config.yaml or user-added files.
6
+ */
7
+ import { getGlobalConfigDir } from '../config/paths.js';
8
+ import { getLanguage } from '../config/globalConfig.js';
9
+ import { forceRefreshLanguageResources } from '../resources/index.js';
10
+ import { header, success, info, error } from '../utils/ui.js';
11
+ import { createLogger } from '../utils/debug.js';
12
+ const log = createLogger('refresh-builtin');
13
+ /**
14
+ * Refresh builtin agents and workflows to latest version.
15
+ */
16
+ export async function refreshBuiltin() {
17
+ const globalDir = getGlobalConfigDir();
18
+ const lang = getLanguage();
19
+ header('Refresh Builtin Resources');
20
+ info(`Language: ${lang}`);
21
+ info(`Target: ${globalDir}`);
22
+ try {
23
+ const overwritten = forceRefreshLanguageResources(globalDir, lang);
24
+ log.info('Builtin resources refreshed', { count: overwritten.length, lang });
25
+ console.log();
26
+ success(`${overwritten.length} files refreshed.`);
27
+ for (const filePath of overwritten) {
28
+ info(` ✓ ${filePath}`);
29
+ }
30
+ }
31
+ catch (err) {
32
+ const message = err instanceof Error ? err.message : String(err);
33
+ log.error('Failed to refresh builtin resources', { error: message });
34
+ error(`Failed to refresh: ${message}`);
35
+ }
36
+ }
37
+ //# sourceMappingURL=refreshBuiltin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refreshBuiltin.js","sourceRoot":"","sources":["../../src/commands/refreshBuiltin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,GAAG,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAE3B,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACpC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IAC1B,IAAI,CAAC,WAAW,SAAS,EAAE,CAAC,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,6BAA6B,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAEnE,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7E,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAElD,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,GAAG,CAAC,KAAK,CAAC,qCAAqC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACrE,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,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"}