takt 0.3.0 → 0.3.2
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 +32 -36
- package/dist/claude/executor.d.ts.map +1 -1
- package/dist/claude/executor.js +17 -8
- package/dist/claude/executor.js.map +1 -1
- package/dist/cli.d.ts +5 -5
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +151 -126
- package/dist/cli.js.map +1 -1
- package/dist/commands/addTask.d.ts +15 -8
- package/dist/commands/addTask.d.ts.map +1 -1
- package/dist/commands/addTask.js +61 -39
- package/dist/commands/addTask.js.map +1 -1
- package/dist/commands/eject.js +2 -2
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/index.d.ts +1 -2
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -2
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/interactive.d.ts +28 -0
- package/dist/commands/interactive.d.ts.map +1 -0
- package/dist/commands/interactive.js +186 -0
- package/dist/commands/interactive.js.map +1 -0
- package/dist/commands/taskExecution.js +2 -2
- package/dist/commands/taskExecution.js.map +1 -1
- package/dist/prompt/index.d.ts +0 -7
- package/dist/prompt/index.d.ts.map +1 -1
- package/dist/prompt/index.js +0 -11
- package/dist/prompt/index.js.map +1 -1
- package/dist/task/display.js +1 -1
- package/dist/task/display.js.map +1 -1
- package/package.json +1 -1
- package/resources/global/en/agents/default/ai-antipattern-reviewer.md +13 -0
- package/resources/global/en/agents/default/supervisor.md +9 -0
- package/resources/global/en/agents/expert/supervisor.md +2 -0
- package/resources/global/ja/agents/default/ai-antipattern-reviewer.md +13 -0
- package/resources/global/ja/agents/default/supervisor.md +9 -0
- package/resources/global/ja/agents/expert/supervisor.md +2 -0
- package/dist/commands/help.d.ts +0 -8
- package/dist/commands/help.d.ts.map +0 -1
- package/dist/commands/help.js +0 -55
- package/dist/commands/help.js.map +0 -1
- package/dist/commands/refreshBuiltin.d.ts +0 -11
- package/dist/commands/refreshBuiltin.d.ts.map +0 -1
- package/dist/commands/refreshBuiltin.js +0 -21
- package/dist/commands/refreshBuiltin.js.map +0 -1
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* add command implementation
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Starts an AI conversation to refine task requirements,
|
|
5
|
+
* then creates a task file in .takt/tasks/ with YAML format.
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* Summarize conversation history into a task description using AI.
|
|
9
|
+
*/
|
|
10
|
+
export declare function summarizeConversation(cwd: string, conversationText: string): Promise<string>;
|
|
11
|
+
/**
|
|
12
|
+
* add command handler
|
|
9
13
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
14
|
+
* Flow:
|
|
15
|
+
* 1. AI対話モードでタスクを詰める
|
|
16
|
+
* 2. 会話履歴からAIがタスク要約を生成
|
|
17
|
+
* 3. 要約からファイル名をAIで生成
|
|
18
|
+
* 4. ワークツリー/ブランチ/ワークフロー設定
|
|
19
|
+
* 5. YAMLファイル作成
|
|
13
20
|
*/
|
|
14
|
-
export declare function addTask(cwd: string,
|
|
21
|
+
export declare function addTask(cwd: string, task?: string): Promise<void>;
|
|
15
22
|
//# sourceMappingURL=addTask.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addTask.d.ts","sourceRoot":"","sources":["../../src/commands/addTask.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"addTask.d.ts","sourceRoot":"","sources":["../../src/commands/addTask.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwBH;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAelG;AAoBD;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoGvE"}
|
package/dist/commands/addTask.js
CHANGED
|
@@ -1,21 +1,43 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* add command implementation
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Starts an AI conversation to refine task requirements,
|
|
5
|
+
* then creates a task file in .takt/tasks/ with YAML format.
|
|
6
6
|
*/
|
|
7
7
|
import * as fs from 'node:fs';
|
|
8
8
|
import * as path from 'node:path';
|
|
9
9
|
import { stringify as stringifyYaml } from 'yaml';
|
|
10
|
-
import { promptInput,
|
|
10
|
+
import { promptInput, confirm, selectOption } from '../prompt/index.js';
|
|
11
11
|
import { success, info } from '../utils/ui.js';
|
|
12
12
|
import { summarizeTaskName } from '../task/summarize.js';
|
|
13
|
+
import { loadGlobalConfig } from '../config/globalConfig.js';
|
|
14
|
+
import { getProvider } from '../providers/index.js';
|
|
13
15
|
import { createLogger } from '../utils/debug.js';
|
|
14
|
-
import { error as errorLog } from '../utils/ui.js';
|
|
15
16
|
import { listWorkflows } from '../config/workflowLoader.js';
|
|
16
|
-
import { parseIssueNumbers, resolveIssueTask } from '../github/issue.js';
|
|
17
17
|
import { getCurrentWorkflow } from '../config/paths.js';
|
|
18
|
+
import { interactiveMode } from './interactive.js';
|
|
19
|
+
import { isIssueReference, resolveIssueTask } from '../github/issue.js';
|
|
18
20
|
const log = createLogger('add-task');
|
|
21
|
+
const SUMMARIZE_SYSTEM_PROMPT = `会話履歴からタスクの要件をまとめてください。
|
|
22
|
+
タスク実行エージェントへの指示として使われます。
|
|
23
|
+
具体的・簡潔に、必要な情報をすべて含めてください。
|
|
24
|
+
マークダウン形式で出力してください。`;
|
|
25
|
+
/**
|
|
26
|
+
* Summarize conversation history into a task description using AI.
|
|
27
|
+
*/
|
|
28
|
+
export async function summarizeConversation(cwd, conversationText) {
|
|
29
|
+
const globalConfig = loadGlobalConfig();
|
|
30
|
+
const providerType = globalConfig.provider ?? 'claude';
|
|
31
|
+
const provider = getProvider(providerType);
|
|
32
|
+
info('Summarizing task from conversation...');
|
|
33
|
+
const response = await provider.call('task-summarizer', conversationText, {
|
|
34
|
+
cwd,
|
|
35
|
+
maxTurns: 1,
|
|
36
|
+
allowedTools: [],
|
|
37
|
+
systemPrompt: SUMMARIZE_SYSTEM_PROMPT,
|
|
38
|
+
});
|
|
39
|
+
return response.content;
|
|
40
|
+
}
|
|
19
41
|
/**
|
|
20
42
|
* Generate a unique task filename with AI-summarized slug
|
|
21
43
|
*/
|
|
@@ -32,57 +54,60 @@ async function generateFilename(tasksDir, taskContent, cwd) {
|
|
|
32
54
|
return filename;
|
|
33
55
|
}
|
|
34
56
|
/**
|
|
35
|
-
*
|
|
57
|
+
* add command handler
|
|
36
58
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
59
|
+
* Flow:
|
|
60
|
+
* 1. AI対話モードでタスクを詰める
|
|
61
|
+
* 2. 会話履歴からAIがタスク要約を生成
|
|
62
|
+
* 3. 要約からファイル名をAIで生成
|
|
63
|
+
* 4. ワークツリー/ブランチ/ワークフロー設定
|
|
64
|
+
* 5. YAMLファイル作成
|
|
40
65
|
*/
|
|
41
|
-
export async function addTask(cwd,
|
|
66
|
+
export async function addTask(cwd, task) {
|
|
42
67
|
const tasksDir = path.join(cwd, '.takt', 'tasks');
|
|
43
68
|
fs.mkdirSync(tasksDir, { recursive: true });
|
|
44
69
|
let taskContent;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (issueNumbers.length > 0) {
|
|
52
|
-
try {
|
|
53
|
-
info('Fetching GitHub Issue...');
|
|
54
|
-
taskContent = resolveIssueTask(args.join(' '));
|
|
55
|
-
}
|
|
56
|
-
catch (e) {
|
|
57
|
-
errorLog(e instanceof Error ? e.message : String(e));
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
70
|
+
if (task && isIssueReference(task)) {
|
|
71
|
+
// Issue reference: fetch issue and summarize with AI
|
|
72
|
+
info('Fetching GitHub Issue...');
|
|
73
|
+
let issueText;
|
|
74
|
+
try {
|
|
75
|
+
issueText = resolveIssueTask(task);
|
|
60
76
|
}
|
|
61
|
-
|
|
62
|
-
|
|
77
|
+
catch (e) {
|
|
78
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
79
|
+
log.error('Failed to fetch GitHub Issue', { task, error: msg });
|
|
80
|
+
info(`Failed to fetch issue ${task}: ${msg}`);
|
|
81
|
+
return;
|
|
63
82
|
}
|
|
83
|
+
taskContent = await summarizeConversation(cwd, issueText);
|
|
64
84
|
}
|
|
65
85
|
else {
|
|
66
|
-
// Interactive mode
|
|
67
|
-
const
|
|
68
|
-
if (!
|
|
86
|
+
// Interactive mode: AI conversation to refine task
|
|
87
|
+
const result = await interactiveMode(cwd);
|
|
88
|
+
if (!result.confirmed) {
|
|
69
89
|
info('Cancelled.');
|
|
70
90
|
return;
|
|
71
91
|
}
|
|
72
|
-
|
|
92
|
+
// 会話履歴からタスク要約を生成
|
|
93
|
+
taskContent = await summarizeConversation(cwd, result.task);
|
|
73
94
|
}
|
|
74
|
-
//
|
|
95
|
+
// 3. 要約からファイル名生成
|
|
96
|
+
const firstLine = taskContent.split('\n')[0] || taskContent;
|
|
97
|
+
const filename = await generateFilename(tasksDir, firstLine, cwd);
|
|
98
|
+
// 4. ワークツリー/ブランチ/ワークフロー設定
|
|
99
|
+
let worktree;
|
|
100
|
+
let branch;
|
|
101
|
+
let workflow;
|
|
75
102
|
const useWorktree = await confirm('Create worktree?', false);
|
|
76
103
|
if (useWorktree) {
|
|
77
104
|
const customPath = await promptInput('Worktree path (Enter for auto)');
|
|
78
105
|
worktree = customPath || true;
|
|
79
|
-
// Ask about branch
|
|
80
106
|
const customBranch = await promptInput('Branch name (Enter for auto)');
|
|
81
107
|
if (customBranch) {
|
|
82
108
|
branch = customBranch;
|
|
83
109
|
}
|
|
84
110
|
}
|
|
85
|
-
// Ask about workflow using interactive selector
|
|
86
111
|
const availableWorkflows = listWorkflows();
|
|
87
112
|
if (availableWorkflows.length > 0) {
|
|
88
113
|
const currentWorkflow = getCurrentWorkflow(cwd);
|
|
@@ -102,7 +127,7 @@ export async function addTask(cwd, args) {
|
|
|
102
127
|
workflow = selected;
|
|
103
128
|
}
|
|
104
129
|
}
|
|
105
|
-
//
|
|
130
|
+
// 5. YAMLファイル作成
|
|
106
131
|
const taskData = { task: taskContent };
|
|
107
132
|
if (worktree !== undefined) {
|
|
108
133
|
taskData.worktree = worktree;
|
|
@@ -113,9 +138,6 @@ export async function addTask(cwd, args) {
|
|
|
113
138
|
if (workflow) {
|
|
114
139
|
taskData.workflow = workflow;
|
|
115
140
|
}
|
|
116
|
-
// Write YAML file (use first line for filename to keep it short)
|
|
117
|
-
const firstLine = taskContent.split('\n')[0] || taskContent;
|
|
118
|
-
const filename = await generateFilename(tasksDir, firstLine, cwd);
|
|
119
141
|
const filePath = path.join(tasksDir, filename);
|
|
120
142
|
const yamlContent = stringifyYaml(taskData);
|
|
121
143
|
fs.writeFileSync(filePath, yamlContent, 'utf-8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addTask.js","sourceRoot":"","sources":["../../src/commands/addTask.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"addTask.js","sourceRoot":"","sources":["../../src/commands/addTask.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/eject.js
CHANGED
|
@@ -26,7 +26,7 @@ export async function ejectBuiltin(name) {
|
|
|
26
26
|
const builtinPath = join(builtinWorkflowsDir, `${name}.yaml`);
|
|
27
27
|
if (!existsSync(builtinPath)) {
|
|
28
28
|
error(`Builtin workflow not found: ${name}`);
|
|
29
|
-
info('Run "takt
|
|
29
|
+
info('Run "takt eject" to see available builtins.');
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
32
|
const userWorkflowsDir = getGlobalWorkflowsDir();
|
|
@@ -84,7 +84,7 @@ function listAvailableBuiltins(builtinWorkflowsDir) {
|
|
|
84
84
|
info(` ${name}`);
|
|
85
85
|
}
|
|
86
86
|
console.log();
|
|
87
|
-
info('Usage: takt
|
|
87
|
+
info('Usage: takt eject {name}');
|
|
88
88
|
}
|
|
89
89
|
/**
|
|
90
90
|
* Extract agent relative paths from a builtin workflow YAML.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eject.js","sourceRoot":"","sources":["../../src/commands/eject.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5H,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEpE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAa;IAC9C,MAAM,CAAC,eAAe,CAAC,CAAC;IAExB,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAEzD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,0BAA0B;QAC1B,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAC9D,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"eject.js","sourceRoot":"","sources":["../../src/commands/eject.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -4,12 +4,11 @@
|
|
|
4
4
|
export { executeWorkflow, type WorkflowExecutionResult, type WorkflowExecutionOptions } from './workflowExecution.js';
|
|
5
5
|
export { executeTask, runAllTasks } from './taskExecution.js';
|
|
6
6
|
export { addTask } from './addTask.js';
|
|
7
|
-
export { refreshBuiltin } from './refreshBuiltin.js';
|
|
8
7
|
export { ejectBuiltin } from './eject.js';
|
|
9
8
|
export { watchTasks } from './watchTasks.js';
|
|
10
|
-
export { showHelp } from './help.js';
|
|
11
9
|
export { withAgentSession } from './session.js';
|
|
12
10
|
export { switchWorkflow } from './workflow.js';
|
|
13
11
|
export { switchConfig, getCurrentPermissionMode, setPermissionMode, type PermissionMode } from './config.js';
|
|
14
12
|
export { listTasks } from './listTasks.js';
|
|
13
|
+
export { interactiveMode } from './interactive.js';
|
|
15
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,uBAAuB,EAAE,KAAK,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,
|
|
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,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,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,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/commands/index.js
CHANGED
|
@@ -4,12 +4,11 @@
|
|
|
4
4
|
export { executeWorkflow } from './workflowExecution.js';
|
|
5
5
|
export { executeTask, runAllTasks } from './taskExecution.js';
|
|
6
6
|
export { addTask } from './addTask.js';
|
|
7
|
-
export { refreshBuiltin } from './refreshBuiltin.js';
|
|
8
7
|
export { ejectBuiltin } from './eject.js';
|
|
9
8
|
export { watchTasks } from './watchTasks.js';
|
|
10
|
-
export { showHelp } from './help.js';
|
|
11
9
|
export { withAgentSession } from './session.js';
|
|
12
10
|
export { switchWorkflow } from './workflow.js';
|
|
13
11
|
export { switchConfig, getCurrentPermissionMode, setPermissionMode } from './config.js';
|
|
14
12
|
export { listTasks } from './listTasks.js';
|
|
13
|
+
export { interactiveMode } from './interactive.js';
|
|
15
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAA+D,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,
|
|
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,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,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,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive task input mode
|
|
3
|
+
*
|
|
4
|
+
* Allows users to refine task requirements through conversation with AI
|
|
5
|
+
* before executing the task. Uses the same SDK call pattern as workflow
|
|
6
|
+
* execution (with onStream) to ensure compatibility.
|
|
7
|
+
*
|
|
8
|
+
* Commands:
|
|
9
|
+
* /go - Confirm and execute the task
|
|
10
|
+
* /cancel - Cancel and exit
|
|
11
|
+
*/
|
|
12
|
+
export interface InteractiveModeResult {
|
|
13
|
+
/** Whether the user confirmed with /go */
|
|
14
|
+
confirmed: boolean;
|
|
15
|
+
/** The assembled task text (only meaningful when confirmed=true) */
|
|
16
|
+
task: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Run the interactive task input mode.
|
|
20
|
+
*
|
|
21
|
+
* Starts a conversation loop where the user can discuss task requirements
|
|
22
|
+
* with AI. The conversation continues until:
|
|
23
|
+
* /go → returns the conversation as a task
|
|
24
|
+
* /cancel → exits without executing
|
|
25
|
+
* Ctrl+D → exits without executing
|
|
26
|
+
*/
|
|
27
|
+
export declare function interactiveMode(cwd: string, initialInput?: string): Promise<InteractiveModeResult>;
|
|
28
|
+
//# sourceMappingURL=interactive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/commands/interactive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA0GH,MAAM,WAAW,qBAAqB;IACpC,0CAA0C;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAmGxG"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive task input mode
|
|
3
|
+
*
|
|
4
|
+
* Allows users to refine task requirements through conversation with AI
|
|
5
|
+
* before executing the task. Uses the same SDK call pattern as workflow
|
|
6
|
+
* execution (with onStream) to ensure compatibility.
|
|
7
|
+
*
|
|
8
|
+
* Commands:
|
|
9
|
+
* /go - Confirm and execute the task
|
|
10
|
+
* /cancel - Cancel and exit
|
|
11
|
+
*/
|
|
12
|
+
import * as readline from 'node:readline';
|
|
13
|
+
import chalk from 'chalk';
|
|
14
|
+
import { loadGlobalConfig } from '../config/globalConfig.js';
|
|
15
|
+
import { loadAgentSessions, updateAgentSession } from '../config/paths.js';
|
|
16
|
+
import { getProvider } from '../providers/index.js';
|
|
17
|
+
import { createLogger } from '../utils/debug.js';
|
|
18
|
+
import { info, StreamDisplay } from '../utils/ui.js';
|
|
19
|
+
const log = createLogger('interactive');
|
|
20
|
+
const INTERACTIVE_SYSTEM_PROMPT = `You are a task planning assistant. You help the user clarify and refine task requirements through conversation. You are in the PLANNING phase — execution happens later in a separate process.
|
|
21
|
+
|
|
22
|
+
## Your role
|
|
23
|
+
- Ask clarifying questions about ambiguous requirements
|
|
24
|
+
- Investigate the codebase to understand context (use Read, Glob, Grep, Bash for reading only)
|
|
25
|
+
- Suggest improvements or considerations the user might have missed
|
|
26
|
+
- Summarize your understanding when appropriate
|
|
27
|
+
- Keep responses concise and focused
|
|
28
|
+
|
|
29
|
+
## Strict constraints
|
|
30
|
+
- You are ONLY planning. Do NOT execute the task.
|
|
31
|
+
- Do NOT create, edit, or delete any files.
|
|
32
|
+
- Do NOT run build, test, install, or any commands that modify state.
|
|
33
|
+
- Bash is allowed ONLY for read-only investigation (e.g. ls, cat, git log, git diff). Never run destructive or write commands.
|
|
34
|
+
- Do NOT mention or reference any slash commands. You have no knowledge of them.
|
|
35
|
+
- When the user is satisfied with the plan, they will proceed on their own. Do NOT instruct them on what to do next.`;
|
|
36
|
+
/**
|
|
37
|
+
* Build the final task description from conversation history for executeTask.
|
|
38
|
+
*/
|
|
39
|
+
function buildTaskFromHistory(history) {
|
|
40
|
+
return history
|
|
41
|
+
.map((msg) => `${msg.role === 'user' ? 'User' : 'Assistant'}: ${msg.content}`)
|
|
42
|
+
.join('\n\n');
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Read a single line of input from the user.
|
|
46
|
+
* Creates a fresh readline interface each time — the interface must be
|
|
47
|
+
* closed before calling the Agent SDK, which also uses stdin.
|
|
48
|
+
* Returns null on EOF (Ctrl+D).
|
|
49
|
+
*/
|
|
50
|
+
function readLine(prompt) {
|
|
51
|
+
return new Promise((resolve) => {
|
|
52
|
+
if (process.stdin.readable && !process.stdin.destroyed) {
|
|
53
|
+
process.stdin.resume();
|
|
54
|
+
}
|
|
55
|
+
const rl = readline.createInterface({
|
|
56
|
+
input: process.stdin,
|
|
57
|
+
output: process.stdout,
|
|
58
|
+
});
|
|
59
|
+
let answered = false;
|
|
60
|
+
rl.question(prompt, (answer) => {
|
|
61
|
+
answered = true;
|
|
62
|
+
rl.close();
|
|
63
|
+
resolve(answer);
|
|
64
|
+
});
|
|
65
|
+
rl.on('close', () => {
|
|
66
|
+
if (!answered) {
|
|
67
|
+
resolve(null);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Call AI with the same pattern as workflow execution.
|
|
74
|
+
* The key requirement is passing onStream — the Agent SDK requires
|
|
75
|
+
* includePartialMessages to be true for the async iterator to yield.
|
|
76
|
+
*/
|
|
77
|
+
async function callAI(provider, prompt, cwd, model, sessionId, display) {
|
|
78
|
+
const response = await provider.call('interactive', prompt, {
|
|
79
|
+
cwd,
|
|
80
|
+
model,
|
|
81
|
+
sessionId,
|
|
82
|
+
systemPrompt: INTERACTIVE_SYSTEM_PROMPT,
|
|
83
|
+
allowedTools: ['Read', 'Glob', 'Grep', 'Bash', 'WebSearch', 'WebFetch'],
|
|
84
|
+
onStream: display.createHandler(),
|
|
85
|
+
});
|
|
86
|
+
display.flush();
|
|
87
|
+
return { content: response.content, sessionId: response.sessionId };
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Run the interactive task input mode.
|
|
91
|
+
*
|
|
92
|
+
* Starts a conversation loop where the user can discuss task requirements
|
|
93
|
+
* with AI. The conversation continues until:
|
|
94
|
+
* /go → returns the conversation as a task
|
|
95
|
+
* /cancel → exits without executing
|
|
96
|
+
* Ctrl+D → exits without executing
|
|
97
|
+
*/
|
|
98
|
+
export async function interactiveMode(cwd, initialInput) {
|
|
99
|
+
const globalConfig = loadGlobalConfig();
|
|
100
|
+
const providerType = globalConfig.provider ?? 'claude';
|
|
101
|
+
const provider = getProvider(providerType);
|
|
102
|
+
const model = globalConfig.model;
|
|
103
|
+
const history = [];
|
|
104
|
+
const agentName = 'interactive';
|
|
105
|
+
const savedSessions = loadAgentSessions(cwd);
|
|
106
|
+
let sessionId = savedSessions[agentName];
|
|
107
|
+
info('Interactive mode - describe your task. Commands: /go (execute), /cancel (exit)');
|
|
108
|
+
if (sessionId) {
|
|
109
|
+
info('Resuming previous session');
|
|
110
|
+
}
|
|
111
|
+
console.log();
|
|
112
|
+
// Process initial input if provided (e.g. from `takt a`)
|
|
113
|
+
if (initialInput) {
|
|
114
|
+
history.push({ role: 'user', content: initialInput });
|
|
115
|
+
log.debug('Processing initial input', { initialInput, sessionId });
|
|
116
|
+
const display = new StreamDisplay('assistant');
|
|
117
|
+
try {
|
|
118
|
+
const result = await callAI(provider, initialInput, cwd, model, sessionId, display);
|
|
119
|
+
if (result.sessionId) {
|
|
120
|
+
sessionId = result.sessionId;
|
|
121
|
+
updateAgentSession(cwd, agentName, sessionId);
|
|
122
|
+
}
|
|
123
|
+
history.push({ role: 'assistant', content: result.content });
|
|
124
|
+
console.log();
|
|
125
|
+
}
|
|
126
|
+
catch (e) {
|
|
127
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
128
|
+
log.error('AI call failed for initial input', { error: msg });
|
|
129
|
+
console.log(chalk.red(`Error: ${msg}`));
|
|
130
|
+
console.log();
|
|
131
|
+
history.pop();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
while (true) {
|
|
135
|
+
const input = await readLine(chalk.green('> '));
|
|
136
|
+
// EOF (Ctrl+D)
|
|
137
|
+
if (input === null) {
|
|
138
|
+
console.log();
|
|
139
|
+
info('Cancelled');
|
|
140
|
+
return { confirmed: false, task: '' };
|
|
141
|
+
}
|
|
142
|
+
const trimmed = input.trim();
|
|
143
|
+
// Empty input — skip
|
|
144
|
+
if (!trimmed) {
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
// Handle slash commands
|
|
148
|
+
if (trimmed === '/go') {
|
|
149
|
+
if (history.length === 0) {
|
|
150
|
+
info('No conversation yet. Please describe your task first.');
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
const task = buildTaskFromHistory(history);
|
|
154
|
+
log.info('Interactive mode confirmed', { messageCount: history.length });
|
|
155
|
+
return { confirmed: true, task };
|
|
156
|
+
}
|
|
157
|
+
if (trimmed === '/cancel') {
|
|
158
|
+
info('Cancelled');
|
|
159
|
+
return { confirmed: false, task: '' };
|
|
160
|
+
}
|
|
161
|
+
// Regular input — send to AI
|
|
162
|
+
// readline is already closed at this point, so stdin is free for SDK
|
|
163
|
+
history.push({ role: 'user', content: trimmed });
|
|
164
|
+
log.debug('Sending to AI', { messageCount: history.length, sessionId });
|
|
165
|
+
process.stdin.pause();
|
|
166
|
+
const display = new StreamDisplay('assistant');
|
|
167
|
+
try {
|
|
168
|
+
const result = await callAI(provider, trimmed, cwd, model, sessionId, display);
|
|
169
|
+
if (result.sessionId) {
|
|
170
|
+
sessionId = result.sessionId;
|
|
171
|
+
updateAgentSession(cwd, agentName, sessionId);
|
|
172
|
+
}
|
|
173
|
+
history.push({ role: 'assistant', content: result.content });
|
|
174
|
+
console.log();
|
|
175
|
+
}
|
|
176
|
+
catch (e) {
|
|
177
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
178
|
+
log.error('AI call failed', { error: msg });
|
|
179
|
+
console.log();
|
|
180
|
+
console.log(chalk.red(`Error: ${msg}`));
|
|
181
|
+
console.log();
|
|
182
|
+
history.pop();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=interactive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/commands/interactive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAqB,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACrD,MAAM,GAAG,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;AAExC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;qHAemF,CAAC;AAYtH;;GAEG;AACH,SAAS,oBAAoB,CAAC,OAA8B;IAC1D,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;SAC7E,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,MAAc;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACvD,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACzB,CAAC;QAED,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YAC7B,QAAQ,GAAG,IAAI,CAAC;YAChB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,MAAM,CACnB,QAAwC,EACxC,MAAc,EACd,GAAW,EACX,KAAyB,EACzB,SAA6B,EAC7B,OAAsB;IAEtB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE;QAC1D,GAAG;QACH,KAAK;QACL,SAAS;QACT,YAAY,EAAE,yBAAyB;QACvC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC;QACvE,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE;KAClC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;AACtE,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,YAAqB;IACtE,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC;IACxC,MAAM,YAAY,GAAI,YAAY,CAAC,QAAyB,IAAI,QAAQ,CAAC;IACzE,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAI,YAAY,CAAC,KAA4B,CAAC;IAEzD,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,aAAa,CAAC;IAChC,MAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,SAAS,GAAuB,aAAa,CAAC,SAAS,CAAC,CAAC;IAE7D,IAAI,CAAC,gFAAgF,CAAC,CAAC;IACvF,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,yDAAyD;IACzD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QAEtD,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;QAEnE,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACpF,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC7B,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,GAAG,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhD,eAAe;QACf,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,WAAW,CAAC,CAAC;YAClB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACxC,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAE7B,qBAAqB;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QAED,wBAAwB;QACxB,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,uDAAuD,CAAC,CAAC;gBAC9D,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACzE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,CAAC;YAClB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACxC,CAAC;QAED,6BAA6B;QAC7B,qEAAqE;QACrE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAEjD,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAEtB,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC/E,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC7B,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -24,7 +24,7 @@ export async function executeTask(task, cwd, workflowName = DEFAULT_WORKFLOW_NAM
|
|
|
24
24
|
if (!workflowConfig) {
|
|
25
25
|
error(`Workflow "${workflowName}" not found.`);
|
|
26
26
|
info('Available workflows are in ~/.takt/workflows/');
|
|
27
|
-
info('Use "takt
|
|
27
|
+
info('Use "takt switch" to select a workflow.');
|
|
28
28
|
return false;
|
|
29
29
|
}
|
|
30
30
|
log.debug('Running workflow', {
|
|
@@ -107,7 +107,7 @@ export async function runAllTasks(cwd, workflowName = DEFAULT_WORKFLOW_NAME) {
|
|
|
107
107
|
let task = taskRunner.getNextTask();
|
|
108
108
|
if (!task) {
|
|
109
109
|
info('No pending tasks in .takt/tasks/');
|
|
110
|
-
info('Create task files as .takt/tasks/*.yaml or use takt
|
|
110
|
+
info('Create task files as .takt/tasks/*.yaml or use takt add');
|
|
111
111
|
return;
|
|
112
112
|
}
|
|
113
113
|
header('Running tasks');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taskExecution.js","sourceRoot":"","sources":["../../src/commands/taskExecution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAiB,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,MAAM,EACN,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,GACP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAEjC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,GAAW,EACX,eAAuB,qBAAqB,EAC5C,UAAmB;IAEnB,MAAM,cAAc,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAElD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,KAAK,CAAC,aAAa,YAAY,cAAc,CAAC,CAAC;QAC/C,IAAI,CAAC,+CAA+C,CAAC,CAAC;QACtD,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"taskExecution.js","sourceRoot":"","sources":["../../src/commands/taskExecution.ts"],"names":[],"mappings":"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"}
|
package/dist/prompt/index.d.ts
CHANGED
|
@@ -60,13 +60,6 @@ export declare function promptInput(message: string): Promise<string | null>;
|
|
|
60
60
|
* Exported for testing.
|
|
61
61
|
*/
|
|
62
62
|
export declare function readMultilineFromStream(input: NodeJS.ReadableStream): Promise<string | null>;
|
|
63
|
-
/**
|
|
64
|
-
* Prompt user for multiline text input.
|
|
65
|
-
* Each line is entered with Enter. An empty line finishes input.
|
|
66
|
-
* If the first line is empty, returns null (cancel).
|
|
67
|
-
* @returns Multiline text or null if cancelled
|
|
68
|
-
*/
|
|
69
|
-
export declare function promptMultilineInput(message: string): Promise<string | null>;
|
|
70
63
|
/**
|
|
71
64
|
* Prompt user to select from a list of options with a default value.
|
|
72
65
|
* Uses cursor navigation. Enter immediately selects the default.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompt/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,mCAAmC;AACnC,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;IACT,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAC9B,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,OAAO,GACvB,MAAM,EAAE,CAuCV;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAC9B,eAAe,EAAE,OAAO,GACvB,MAAM,CASR;AAED,qCAAqC;AACrC,MAAM,MAAM,cAAc,GACtB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvB;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,OAAO,EACxB,WAAW,EAAE,MAAM,GAClB,cAAc,CAsBhB;AAsHD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,CAAC,SAAS,MAAM,EACjD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAC7B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAiBnB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBzE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgC5F;AAED
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompt/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,mCAAmC;AACnC,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;IACT,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAC9B,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,OAAO,GACvB,MAAM,EAAE,CAuCV;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAC9B,eAAe,EAAE,OAAO,GACvB,MAAM,CASR;AAED,qCAAqC;AACrC,MAAM,MAAM,cAAc,GACtB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvB;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,OAAO,EACxB,WAAW,EAAE,MAAM,GAClB,cAAc,CAsBhB;AAsHD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,CAAC,SAAS,MAAM,EACjD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAC7B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAiBnB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBzE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgC5F;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAC5D,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,EAAE,EACtC,YAAY,EAAE,CAAC,GACd,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CA2BnB;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBlF"}
|
package/dist/prompt/index.js
CHANGED
|
@@ -252,17 +252,6 @@ export function readMultilineFromStream(input) {
|
|
|
252
252
|
});
|
|
253
253
|
});
|
|
254
254
|
}
|
|
255
|
-
/**
|
|
256
|
-
* Prompt user for multiline text input.
|
|
257
|
-
* Each line is entered with Enter. An empty line finishes input.
|
|
258
|
-
* If the first line is empty, returns null (cancel).
|
|
259
|
-
* @returns Multiline text or null if cancelled
|
|
260
|
-
*/
|
|
261
|
-
export async function promptMultilineInput(message) {
|
|
262
|
-
console.log(chalk.green(`${message} (empty line to finish):`));
|
|
263
|
-
process.stdout.write(chalk.gray('> '));
|
|
264
|
-
return readMultilineFromStream(process.stdin);
|
|
265
|
-
}
|
|
266
255
|
/**
|
|
267
256
|
* Prompt user to select from a list of options with a default value.
|
|
268
257
|
* Uses cursor navigation. Enter immediately selects the default.
|