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.
- package/README.md +179 -43
- 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 +73 -18
- package/dist/cli.js.map +1 -1
- package/dist/commands/addTask.d.ts +15 -0
- package/dist/commands/addTask.d.ts.map +1 -0
- package/dist/commands/addTask.js +119 -0
- package/dist/commands/addTask.js.map +1 -0
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +18 -5
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.d.ts +4 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +4 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/refreshBuiltin.d.ts +11 -0
- package/dist/commands/refreshBuiltin.d.ts.map +1 -0
- package/dist/commands/refreshBuiltin.js +37 -0
- package/dist/commands/refreshBuiltin.js.map +1 -0
- 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 +24 -1
- package/dist/commands/taskExecution.d.ts.map +1 -1
- package/dist/commands/taskExecution.js +100 -36
- package/dist/commands/taskExecution.js.map +1 -1
- package/dist/commands/watchTasks.d.ts +12 -0
- package/dist/commands/watchTasks.d.ts.map +1 -0
- package/dist/commands/watchTasks.js +68 -0
- package/dist/commands/watchTasks.js.map +1 -0
- 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/resources/index.d.ts +5 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +33 -9
- package/dist/resources/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/display.d.ts.map +1 -1
- package/dist/task/display.js +19 -1
- package/dist/task/display.js.map +1 -1
- package/dist/task/index.d.ts +5 -0
- package/dist/task/index.d.ts.map +1 -1
- package/dist/task/index.js +5 -0
- package/dist/task/index.js.map +1 -1
- package/dist/task/parser.d.ts +33 -0
- package/dist/task/parser.d.ts.map +1 -0
- package/dist/task/parser.js +86 -0
- package/dist/task/parser.js.map +1 -0
- package/dist/task/runner.d.ts +6 -0
- package/dist/task/runner.d.ts.map +1 -1
- package/dist/task/runner.js +33 -42
- package/dist/task/runner.js.map +1 -1
- package/dist/task/schema.d.ts +32 -0
- package/dist/task/schema.d.ts.map +1 -0
- package/dist/task/schema.js +31 -0
- package/dist/task/schema.js.map +1 -0
- package/dist/task/watcher.d.ts +33 -0
- package/dist/task/watcher.d.ts.map +1 -0
- package/dist/task/watcher.js +69 -0
- package/dist/task/watcher.js.map +1 -0
- package/dist/task/worktree.d.ts +70 -0
- package/dist/task/worktree.d.ts.map +1 -0
- package/dist/task/worktree.js +221 -0
- package/dist/task/worktree.js.map +1 -0
- 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/slug.d.ts +12 -0
- package/dist/utils/slug.d.ts.map +1 -0
- package/dist/utils/slug.js +18 -0
- package/dist/utils/slug.js.map +1 -0
- 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 +3 -2
- 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 +157 -4
- package/resources/global/ja/agents/default/coder.md +1 -0
- package/resources/global/ja/workflows/default.yaml +38 -1
- package/resources/global/ja/workflows/expert-review.yaml +169 -10
- 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
|
-
//
|
|
38
|
-
const
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
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":";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,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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
|
@@ -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}
|
|
14
|
-
takt /run-tasks
|
|
15
|
-
takt /
|
|
16
|
-
takt /
|
|
17
|
-
takt /
|
|
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
|
|
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
|
@@ -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"}
|
package/dist/commands/index.js
CHANGED
|
@@ -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"}
|