takt 0.1.0 → 0.1.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/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +2 -1
- package/dist/agents/runner.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +7 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/config.d.ts +33 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +110 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/workflow.js +1 -1
- package/dist/commands/workflow.js.map +1 -1
- package/dist/config/initialization.js +1 -1
- package/dist/config/initialization.js.map +1 -1
- package/dist/config/projectConfig.d.ts +12 -1
- package/dist/config/projectConfig.d.ts.map +1 -1
- package/dist/config/projectConfig.js +1 -0
- package/dist/config/projectConfig.js.map +1 -1
- package/dist/{interactive/prompt.d.ts → prompt/index.d.ts} +3 -1
- package/dist/prompt/index.d.ts.map +1 -0
- package/dist/{interactive/prompt.js → prompt/index.js} +11 -1
- package/dist/prompt/index.js.map +1 -0
- package/package.json +1 -1
- package/dist/cli/agentExecution.d.ts +0 -16
- package/dist/cli/agentExecution.d.ts.map +0 -1
- package/dist/cli/agentExecution.js +0 -40
- package/dist/cli/agentExecution.js.map +0 -1
- package/dist/cli/help.d.ts +0 -8
- package/dist/cli/help.d.ts.map +0 -1
- package/dist/cli/help.js +0 -46
- package/dist/cli/help.js.map +0 -1
- package/dist/cli/index.d.ts +0 -8
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -8
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/taskBatch.d.ts +0 -8
- package/dist/cli/taskBatch.d.ts.map +0 -1
- package/dist/cli/taskBatch.js +0 -69
- package/dist/cli/taskBatch.js.map +0 -1
- package/dist/cli/workflowExecution.d.ts +0 -18
- package/dist/cli/workflowExecution.d.ts.map +0 -1
- package/dist/cli/workflowExecution.js +0 -112
- package/dist/cli/workflowExecution.js.map +0 -1
- package/dist/commands/agentExecution.d.ts +0 -8
- package/dist/commands/agentExecution.d.ts.map +0 -1
- package/dist/commands/agentExecution.js +0 -44
- package/dist/commands/agentExecution.js.map +0 -1
- package/dist/interactive/commands/agent.d.ts +0 -7
- package/dist/interactive/commands/agent.d.ts.map +0 -1
- package/dist/interactive/commands/agent.js +0 -65
- package/dist/interactive/commands/agent.js.map +0 -1
- package/dist/interactive/commands/basic.d.ts +0 -7
- package/dist/interactive/commands/basic.d.ts.map +0 -1
- package/dist/interactive/commands/basic.js +0 -81
- package/dist/interactive/commands/basic.js.map +0 -1
- package/dist/interactive/commands/index.d.ts +0 -12
- package/dist/interactive/commands/index.d.ts.map +0 -1
- package/dist/interactive/commands/index.js +0 -14
- package/dist/interactive/commands/index.js.map +0 -1
- package/dist/interactive/commands/registry.d.ts +0 -41
- package/dist/interactive/commands/registry.d.ts.map +0 -1
- package/dist/interactive/commands/registry.js +0 -37
- package/dist/interactive/commands/registry.js.map +0 -1
- package/dist/interactive/commands/session.d.ts +0 -7
- package/dist/interactive/commands/session.d.ts.map +0 -1
- package/dist/interactive/commands/session.js +0 -75
- package/dist/interactive/commands/session.js.map +0 -1
- package/dist/interactive/commands/task.d.ts +0 -7
- package/dist/interactive/commands/task.d.ts.map +0 -1
- package/dist/interactive/commands/task.js +0 -156
- package/dist/interactive/commands/task.js.map +0 -1
- package/dist/interactive/commands/workflow.d.ts +0 -7
- package/dist/interactive/commands/workflow.d.ts.map +0 -1
- package/dist/interactive/commands/workflow.js +0 -56
- package/dist/interactive/commands/workflow.js.map +0 -1
- package/dist/interactive/escape-tracker.d.ts +0 -37
- package/dist/interactive/escape-tracker.d.ts.map +0 -1
- package/dist/interactive/escape-tracker.js +0 -52
- package/dist/interactive/escape-tracker.js.map +0 -1
- package/dist/interactive/handlers.d.ts +0 -24
- package/dist/interactive/handlers.d.ts.map +0 -1
- package/dist/interactive/handlers.js +0 -191
- package/dist/interactive/handlers.js.map +0 -1
- package/dist/interactive/history-manager.d.ts +0 -45
- package/dist/interactive/history-manager.d.ts.map +0 -1
- package/dist/interactive/history-manager.js +0 -91
- package/dist/interactive/history-manager.js.map +0 -1
- package/dist/interactive/index.d.ts +0 -8
- package/dist/interactive/index.d.ts.map +0 -1
- package/dist/interactive/index.js +0 -8
- package/dist/interactive/index.js.map +0 -1
- package/dist/interactive/ink/components/App.d.ts +0 -16
- package/dist/interactive/ink/components/App.d.ts.map +0 -1
- package/dist/interactive/ink/components/App.js +0 -123
- package/dist/interactive/ink/components/App.js.map +0 -1
- package/dist/interactive/ink/components/AskUserQuestion.d.ts +0 -16
- package/dist/interactive/ink/components/AskUserQuestion.d.ts.map +0 -1
- package/dist/interactive/ink/components/AskUserQuestion.js +0 -139
- package/dist/interactive/ink/components/AskUserQuestion.js.map +0 -1
- package/dist/interactive/ink/components/Header.d.ts +0 -20
- package/dist/interactive/ink/components/Header.d.ts.map +0 -1
- package/dist/interactive/ink/components/Header.js +0 -7
- package/dist/interactive/ink/components/Header.js.map +0 -1
- package/dist/interactive/ink/components/HelpView.d.ts +0 -13
- package/dist/interactive/ink/components/HelpView.d.ts.map +0 -1
- package/dist/interactive/ink/components/HelpView.js +0 -45
- package/dist/interactive/ink/components/HelpView.js.map +0 -1
- package/dist/interactive/ink/components/IterationLimit.d.ts +0 -19
- package/dist/interactive/ink/components/IterationLimit.d.ts.map +0 -1
- package/dist/interactive/ink/components/IterationLimit.js +0 -59
- package/dist/interactive/ink/components/IterationLimit.js.map +0 -1
- package/dist/interactive/ink/components/ModalRouter.d.ts +0 -11
- package/dist/interactive/ink/components/ModalRouter.d.ts.map +0 -1
- package/dist/interactive/ink/components/ModalRouter.js +0 -71
- package/dist/interactive/ink/components/ModalRouter.js.map +0 -1
- package/dist/interactive/ink/components/PermissionPrompt.d.ts +0 -17
- package/dist/interactive/ink/components/PermissionPrompt.d.ts.map +0 -1
- package/dist/interactive/ink/components/PermissionPrompt.js +0 -102
- package/dist/interactive/ink/components/PermissionPrompt.js.map +0 -1
- package/dist/interactive/ink/components/PromptInput.d.ts +0 -26
- package/dist/interactive/ink/components/PromptInput.d.ts.map +0 -1
- package/dist/interactive/ink/components/PromptInput.js +0 -70
- package/dist/interactive/ink/components/PromptInput.js.map +0 -1
- package/dist/interactive/ink/components/Spinner.d.ts +0 -14
- package/dist/interactive/ink/components/Spinner.d.ts.map +0 -1
- package/dist/interactive/ink/components/Spinner.js +0 -8
- package/dist/interactive/ink/components/Spinner.js.map +0 -1
- package/dist/interactive/ink/components/StreamingOutput.d.ts +0 -25
- package/dist/interactive/ink/components/StreamingOutput.d.ts.map +0 -1
- package/dist/interactive/ink/components/StreamingOutput.js +0 -8
- package/dist/interactive/ink/components/StreamingOutput.js.map +0 -1
- package/dist/interactive/ink/components/UserInputPrompt.d.ts +0 -18
- package/dist/interactive/ink/components/UserInputPrompt.d.ts.map +0 -1
- package/dist/interactive/ink/components/UserInputPrompt.js +0 -30
- package/dist/interactive/ink/components/UserInputPrompt.js.map +0 -1
- package/dist/interactive/ink/components/WorkflowSelector.d.ts +0 -18
- package/dist/interactive/ink/components/WorkflowSelector.d.ts.map +0 -1
- package/dist/interactive/ink/components/WorkflowSelector.js +0 -65
- package/dist/interactive/ink/components/WorkflowSelector.js.map +0 -1
- package/dist/interactive/ink/constants.d.ts +0 -8
- package/dist/interactive/ink/constants.d.ts.map +0 -1
- package/dist/interactive/ink/constants.js +0 -8
- package/dist/interactive/ink/constants.js.map +0 -1
- package/dist/interactive/ink/context/AppContext.d.ts +0 -26
- package/dist/interactive/ink/context/AppContext.d.ts.map +0 -1
- package/dist/interactive/ink/context/AppContext.js +0 -30
- package/dist/interactive/ink/context/AppContext.js.map +0 -1
- package/dist/interactive/ink/context/appReducer.d.ts +0 -13
- package/dist/interactive/ink/context/appReducer.d.ts.map +0 -1
- package/dist/interactive/ink/context/appReducer.js +0 -183
- package/dist/interactive/ink/context/appReducer.js.map +0 -1
- package/dist/interactive/ink/context/types.d.ts +0 -144
- package/dist/interactive/ink/context/types.d.ts.map +0 -1
- package/dist/interactive/ink/context/types.js +0 -5
- package/dist/interactive/ink/context/types.js.map +0 -1
- package/dist/interactive/ink/hooks/keyDetection.d.ts +0 -116
- package/dist/interactive/ink/hooks/keyDetection.d.ts.map +0 -1
- package/dist/interactive/ink/hooks/keyDetection.js +0 -183
- package/dist/interactive/ink/hooks/keyDetection.js.map +0 -1
- package/dist/interactive/ink/hooks/multilineInputLogic.d.ts +0 -50
- package/dist/interactive/ink/hooks/multilineInputLogic.d.ts.map +0 -1
- package/dist/interactive/ink/hooks/multilineInputLogic.js +0 -150
- package/dist/interactive/ink/hooks/multilineInputLogic.js.map +0 -1
- package/dist/interactive/ink/hooks/useCommands.d.ts +0 -20
- package/dist/interactive/ink/hooks/useCommands.d.ts.map +0 -1
- package/dist/interactive/ink/hooks/useCommands.js +0 -129
- package/dist/interactive/ink/hooks/useCommands.js.map +0 -1
- package/dist/interactive/ink/hooks/useHistory.d.ts +0 -28
- package/dist/interactive/ink/hooks/useHistory.d.ts.map +0 -1
- package/dist/interactive/ink/hooks/useHistory.js +0 -59
- package/dist/interactive/ink/hooks/useHistory.js.map +0 -1
- package/dist/interactive/ink/hooks/useMultilineInput.d.ts +0 -49
- package/dist/interactive/ink/hooks/useMultilineInput.d.ts.map +0 -1
- package/dist/interactive/ink/hooks/useMultilineInput.js +0 -106
- package/dist/interactive/ink/hooks/useMultilineInput.js.map +0 -1
- package/dist/interactive/ink/hooks/usePermissionHandlers.d.ts +0 -16
- package/dist/interactive/ink/hooks/usePermissionHandlers.d.ts.map +0 -1
- package/dist/interactive/ink/hooks/usePermissionHandlers.js +0 -172
- package/dist/interactive/ink/hooks/usePermissionHandlers.js.map +0 -1
- package/dist/interactive/ink/hooks/useRawKeypress.d.ts +0 -41
- package/dist/interactive/ink/hooks/useRawKeypress.d.ts.map +0 -1
- package/dist/interactive/ink/hooks/useRawKeypress.js +0 -79
- package/dist/interactive/ink/hooks/useRawKeypress.js.map +0 -1
- package/dist/interactive/ink/hooks/useTaskQueue.d.ts +0 -32
- package/dist/interactive/ink/hooks/useTaskQueue.d.ts.map +0 -1
- package/dist/interactive/ink/hooks/useTaskQueue.js +0 -68
- package/dist/interactive/ink/hooks/useTaskQueue.js.map +0 -1
- package/dist/interactive/ink/hooks/useWorkflow.d.ts +0 -45
- package/dist/interactive/ink/hooks/useWorkflow.d.ts.map +0 -1
- package/dist/interactive/ink/hooks/useWorkflow.js +0 -93
- package/dist/interactive/ink/hooks/useWorkflow.js.map +0 -1
- package/dist/interactive/ink/hooks/useWorkflowExecution.d.ts +0 -14
- package/dist/interactive/ink/hooks/useWorkflowExecution.d.ts.map +0 -1
- package/dist/interactive/ink/hooks/useWorkflowExecution.js +0 -144
- package/dist/interactive/ink/hooks/useWorkflowExecution.js.map +0 -1
- package/dist/interactive/ink/index.d.ts +0 -30
- package/dist/interactive/ink/index.d.ts.map +0 -1
- package/dist/interactive/ink/index.js +0 -33
- package/dist/interactive/ink/index.js.map +0 -1
- package/dist/interactive/ink/utils/workflow.d.ts +0 -11
- package/dist/interactive/ink/utils/workflow.d.ts.map +0 -1
- package/dist/interactive/ink/utils/workflow.js +0 -19
- package/dist/interactive/ink/utils/workflow.js.map +0 -1
- package/dist/interactive/input-buffer.d.ts +0 -67
- package/dist/interactive/input-buffer.d.ts.map +0 -1
- package/dist/interactive/input-buffer.js +0 -162
- package/dist/interactive/input-buffer.js.map +0 -1
- package/dist/interactive/input-handlers.d.ts +0 -50
- package/dist/interactive/input-handlers.d.ts.map +0 -1
- package/dist/interactive/input-handlers.js +0 -170
- package/dist/interactive/input-handlers.js.map +0 -1
- package/dist/interactive/input.d.ts +0 -43
- package/dist/interactive/input.d.ts.map +0 -1
- package/dist/interactive/input.js +0 -74
- package/dist/interactive/input.js.map +0 -1
- package/dist/interactive/keyDetection.d.ts +0 -85
- package/dist/interactive/keyDetection.d.ts.map +0 -1
- package/dist/interactive/keyDetection.js +0 -167
- package/dist/interactive/keyDetection.js.map +0 -1
- package/dist/interactive/multilineInputLogic.d.ts +0 -30
- package/dist/interactive/multilineInputLogic.d.ts.map +0 -1
- package/dist/interactive/multilineInputLogic.js +0 -143
- package/dist/interactive/multilineInputLogic.js.map +0 -1
- package/dist/interactive/passthrough.d.ts +0 -30
- package/dist/interactive/passthrough.d.ts.map +0 -1
- package/dist/interactive/passthrough.js +0 -94
- package/dist/interactive/passthrough.js.map +0 -1
- package/dist/interactive/permission.d.ts +0 -33
- package/dist/interactive/permission.d.ts.map +0 -1
- package/dist/interactive/permission.js +0 -231
- package/dist/interactive/permission.js.map +0 -1
- package/dist/interactive/prompt.d.ts.map +0 -1
- package/dist/interactive/prompt.js.map +0 -1
- package/dist/interactive/repl.d.ts +0 -13
- package/dist/interactive/repl.d.ts.map +0 -1
- package/dist/interactive/repl.js +0 -202
- package/dist/interactive/repl.js.map +0 -1
- package/dist/interactive/types.d.ts +0 -35
- package/dist/interactive/types.d.ts.map +0 -1
- package/dist/interactive/types.js +0 -5
- package/dist/interactive/types.js.map +0 -1
- package/dist/interactive/ui.d.ts +0 -16
- package/dist/interactive/ui.d.ts.map +0 -1
- package/dist/interactive/ui.js +0 -122
- package/dist/interactive/ui.js.map +0 -1
- package/dist/interactive/user-input.d.ts +0 -26
- package/dist/interactive/user-input.d.ts.map +0 -1
- package/dist/interactive/user-input.js +0 -115
- package/dist/interactive/user-input.js.map +0 -1
- package/dist/interactive/workflow-executor.d.ts +0 -20
- package/dist/interactive/workflow-executor.d.ts.map +0 -1
- package/dist/interactive/workflow-executor.js +0 -200
- package/dist/interactive/workflow-executor.js.map +0 -1
package/dist/interactive/ui.js
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Interactive mode UI functions
|
|
3
|
-
*
|
|
4
|
-
* Provides display and visual functions for the interactive REPL.
|
|
5
|
-
*/
|
|
6
|
-
import chalk from 'chalk';
|
|
7
|
-
import { header, info, error, divider } from '../utils/ui.js';
|
|
8
|
-
import { loadAllWorkflows } from '../config/index.js';
|
|
9
|
-
/** Clear screen */
|
|
10
|
-
export function clearScreen() {
|
|
11
|
-
console.clear();
|
|
12
|
-
}
|
|
13
|
-
/** Print welcome banner */
|
|
14
|
-
export function printWelcome(state) {
|
|
15
|
-
console.log(chalk.bold.cyan('═'.repeat(60)));
|
|
16
|
-
console.log(chalk.bold.cyan(' TAKT Interactive Mode'));
|
|
17
|
-
console.log(chalk.bold.cyan('═'.repeat(60)));
|
|
18
|
-
console.log(chalk.gray(`Project: ${state.cwd}`));
|
|
19
|
-
console.log(chalk.gray(`Workflow: ${state.workflowName}`));
|
|
20
|
-
if (state.sacrificeMyPcMode) {
|
|
21
|
-
console.log(chalk.red.bold('Mode: SACRIFICE-MY-PC 💀 (auto-approve all)'));
|
|
22
|
-
}
|
|
23
|
-
console.log(chalk.gray('Type /help for commands, /quit to exit'));
|
|
24
|
-
console.log(chalk.bold.cyan('═'.repeat(60)));
|
|
25
|
-
console.log();
|
|
26
|
-
}
|
|
27
|
-
/** Print help message */
|
|
28
|
-
export function printHelp() {
|
|
29
|
-
header('TAKT Commands');
|
|
30
|
-
console.log(`
|
|
31
|
-
${chalk.bold.yellow('Basic Operations:')}
|
|
32
|
-
[message] Send message to current workflow
|
|
33
|
-
Up/Down Arrow Navigate input history (persisted across sessions)
|
|
34
|
-
Enter Submit input (execute)
|
|
35
|
-
|
|
36
|
-
${chalk.bold.cyan('Multi-line input:')}
|
|
37
|
-
末尾に \\ 行末にバックスラッシュで継続 (mac Terminal.app推奨)
|
|
38
|
-
Ctrl+J 改行を挿入 (全ターミナルで動作)
|
|
39
|
-
Ctrl+Enter 改行を挿入 (対応ターミナルのみ)
|
|
40
|
-
Option+Enter 改行を挿入 (iTerm2等)
|
|
41
|
-
|
|
42
|
-
/help, /h Show this help
|
|
43
|
-
/quit, /exit, /q Exit takt
|
|
44
|
-
|
|
45
|
-
${chalk.bold.yellow('Workflow Management:')}
|
|
46
|
-
/switch, /sw Switch workflow (interactive selection)
|
|
47
|
-
/workflow [name] Show or change current workflow
|
|
48
|
-
/workflows List available workflows
|
|
49
|
-
|
|
50
|
-
${chalk.bold.yellow('Session Management:')}
|
|
51
|
-
/clear Clear session and start fresh
|
|
52
|
-
/cls Clear screen only (keep session)
|
|
53
|
-
/reset Full reset (session + workflow)
|
|
54
|
-
/status Show current session info
|
|
55
|
-
/history Show conversation history
|
|
56
|
-
|
|
57
|
-
${chalk.bold.yellow('Agent Operations:')}
|
|
58
|
-
/agents List available agents
|
|
59
|
-
/agent <name> Run a single agent with next input
|
|
60
|
-
|
|
61
|
-
${chalk.bold.yellow('Task Execution:')}
|
|
62
|
-
/task, /t Show task list
|
|
63
|
-
/task run Execute next task
|
|
64
|
-
/task run <name> Execute specified task
|
|
65
|
-
|
|
66
|
-
${chalk.bold.yellow('Mode Control:')}
|
|
67
|
-
/sacrifice, /yolo Toggle sacrifice-my-pc mode (auto-approve all)
|
|
68
|
-
/safe Disable sacrifice mode
|
|
69
|
-
|
|
70
|
-
${chalk.bold.yellow('Workflows:')}
|
|
71
|
-
default Coder -> Architect loop (default)
|
|
72
|
-
|
|
73
|
-
${chalk.bold.cyan('Examples:')}
|
|
74
|
-
Implement a login feature
|
|
75
|
-
Review src/auth.ts and suggest improvements
|
|
76
|
-
Add tests for the previous code
|
|
77
|
-
`);
|
|
78
|
-
}
|
|
79
|
-
/** Show workflow selector UI */
|
|
80
|
-
export async function selectWorkflow(state, rl) {
|
|
81
|
-
const workflows = loadAllWorkflows();
|
|
82
|
-
const workflowList = Array.from(workflows.entries()).sort((a, b) => a[0].localeCompare(b[0]));
|
|
83
|
-
if (workflowList.length === 0) {
|
|
84
|
-
error('No workflows available');
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
87
|
-
console.log();
|
|
88
|
-
divider('═', 60);
|
|
89
|
-
console.log(chalk.bold.magenta(' Workflow Selection'));
|
|
90
|
-
divider('═', 60);
|
|
91
|
-
console.log();
|
|
92
|
-
workflowList.forEach(([name, workflow], index) => {
|
|
93
|
-
const current = name === state.workflowName ? chalk.green(' (current)') : '';
|
|
94
|
-
const desc = workflow.description || `${name} workflow`;
|
|
95
|
-
console.log(chalk.cyan(` [${index + 1}] ${name}${current}`));
|
|
96
|
-
console.log(chalk.gray(` ${desc}`));
|
|
97
|
-
});
|
|
98
|
-
console.log(chalk.yellow(` [0] Cancel`));
|
|
99
|
-
console.log();
|
|
100
|
-
divider('═', 60);
|
|
101
|
-
return new Promise((resolve) => {
|
|
102
|
-
rl.question(chalk.cyan('Select workflow (number)> '), (input) => {
|
|
103
|
-
const trimmed = input.trim();
|
|
104
|
-
if (!trimmed || trimmed === '0') {
|
|
105
|
-
info('Cancelled');
|
|
106
|
-
resolve(null);
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
const index = parseInt(trimmed, 10) - 1;
|
|
110
|
-
const entry = workflowList[index];
|
|
111
|
-
if (index >= 0 && entry) {
|
|
112
|
-
const [name] = entry;
|
|
113
|
-
resolve(name);
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
error('Invalid selection');
|
|
117
|
-
resolve(null);
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=ui.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/interactive/ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* User input request handlers for workflow execution
|
|
3
|
-
*
|
|
4
|
-
* Handles user input prompts when an agent is blocked
|
|
5
|
-
* or iteration limits are reached.
|
|
6
|
-
*/
|
|
7
|
-
import type { InputHistoryManager } from './input.js';
|
|
8
|
-
import { createReadlineInterface } from './input.js';
|
|
9
|
-
import type { UserInputRequest, IterationLimitRequest } from '../workflow/engine.js';
|
|
10
|
-
/**
|
|
11
|
-
* Request user input for blocked workflow step.
|
|
12
|
-
*
|
|
13
|
-
* Displays the blocked message and prompts the user for additional information.
|
|
14
|
-
* Returns null if the user cancels or provides empty input.
|
|
15
|
-
*/
|
|
16
|
-
export declare function requestUserInput(request: UserInputRequest, rl: ReturnType<typeof createReadlineInterface>, historyManager: InputHistoryManager): Promise<string | null>;
|
|
17
|
-
/**
|
|
18
|
-
* Handle iteration limit reached.
|
|
19
|
-
* Ask user if they want to continue and how many additional iterations.
|
|
20
|
-
*
|
|
21
|
-
* Returns:
|
|
22
|
-
* - number: The number of additional iterations to continue
|
|
23
|
-
* - null: User chose to stop the workflow
|
|
24
|
-
*/
|
|
25
|
-
export declare function requestIterationContinue(request: IterationLimitRequest, rl: ReturnType<typeof createReadlineInterface>, historyManager: InputHistoryManager): Promise<number | null>;
|
|
26
|
-
//# sourceMappingURL=user-input.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user-input.d.ts","sourceRoot":"","sources":["../../src/interactive/user-input.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAqB,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAIrF;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,gBAAgB,EACzB,EAAE,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,EAC9C,cAAc,EAAE,mBAAmB,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoCxB;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,qBAAqB,EAC9B,EAAE,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,EAC9C,cAAc,EAAE,mBAAmB,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2DxB"}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* User input request handlers for workflow execution
|
|
3
|
-
*
|
|
4
|
-
* Handles user input prompts when an agent is blocked
|
|
5
|
-
* or iteration limits are reached.
|
|
6
|
-
*/
|
|
7
|
-
import chalk from 'chalk';
|
|
8
|
-
import { multiLineQuestion } from './input.js';
|
|
9
|
-
import { info } from '../utils/ui.js';
|
|
10
|
-
import { playInfoSound } from '../utils/notification.js';
|
|
11
|
-
/**
|
|
12
|
-
* Request user input for blocked workflow step.
|
|
13
|
-
*
|
|
14
|
-
* Displays the blocked message and prompts the user for additional information.
|
|
15
|
-
* Returns null if the user cancels or provides empty input.
|
|
16
|
-
*/
|
|
17
|
-
export async function requestUserInput(request, rl, historyManager) {
|
|
18
|
-
// Play notification sound to alert user
|
|
19
|
-
playInfoSound();
|
|
20
|
-
console.log();
|
|
21
|
-
console.log(chalk.yellow('━'.repeat(60)));
|
|
22
|
-
console.log(chalk.yellow.bold('❓ エージェントからの質問'));
|
|
23
|
-
console.log(chalk.gray(`ステップ: ${request.step.name} (${request.step.agentDisplayName})`));
|
|
24
|
-
console.log();
|
|
25
|
-
console.log(chalk.white(request.response.content));
|
|
26
|
-
console.log(chalk.yellow('━'.repeat(60)));
|
|
27
|
-
console.log();
|
|
28
|
-
console.log(chalk.cyan('回答を入力してください(キャンセル: Ctrl+C)'));
|
|
29
|
-
console.log();
|
|
30
|
-
return new Promise((resolve) => {
|
|
31
|
-
multiLineQuestion(rl, {
|
|
32
|
-
promptStr: chalk.magenta('回答> '),
|
|
33
|
-
onCtrlC: () => {
|
|
34
|
-
console.log();
|
|
35
|
-
info('ユーザー入力がキャンセルされました');
|
|
36
|
-
resolve(null);
|
|
37
|
-
return true; // Cancel input
|
|
38
|
-
},
|
|
39
|
-
historyManager,
|
|
40
|
-
}).then((input) => {
|
|
41
|
-
if (input.trim() === '') {
|
|
42
|
-
info('空の入力のためキャンセルされました');
|
|
43
|
-
resolve(null);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
resolve(input);
|
|
47
|
-
}
|
|
48
|
-
}).catch(() => {
|
|
49
|
-
resolve(null);
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Handle iteration limit reached.
|
|
55
|
-
* Ask user if they want to continue and how many additional iterations.
|
|
56
|
-
*
|
|
57
|
-
* Returns:
|
|
58
|
-
* - number: The number of additional iterations to continue
|
|
59
|
-
* - null: User chose to stop the workflow
|
|
60
|
-
*/
|
|
61
|
-
export async function requestIterationContinue(request, rl, historyManager) {
|
|
62
|
-
// Play notification sound to alert user
|
|
63
|
-
playInfoSound();
|
|
64
|
-
console.log();
|
|
65
|
-
console.log(chalk.yellow('━'.repeat(60)));
|
|
66
|
-
console.log(chalk.yellow.bold('⏸ イテレーション上限に達しました'));
|
|
67
|
-
console.log(chalk.gray(`現在: ${request.currentIteration}/${request.maxIterations} イテレーション`));
|
|
68
|
-
console.log(chalk.gray(`ステップ: ${request.currentStep}`));
|
|
69
|
-
console.log(chalk.yellow('━'.repeat(60)));
|
|
70
|
-
console.log();
|
|
71
|
-
console.log(chalk.cyan('続けますか?'));
|
|
72
|
-
console.log(chalk.gray(' - 数字を入力: 追加イテレーション数(例: 5)'));
|
|
73
|
-
console.log(chalk.gray(' - Enter: デフォルト10イテレーション追加'));
|
|
74
|
-
console.log(chalk.gray(' - Ctrl+C または "n": 終了'));
|
|
75
|
-
console.log();
|
|
76
|
-
return new Promise((resolve) => {
|
|
77
|
-
multiLineQuestion(rl, {
|
|
78
|
-
promptStr: chalk.magenta('追加イテレーション> '),
|
|
79
|
-
onCtrlC: () => {
|
|
80
|
-
console.log();
|
|
81
|
-
info('ワークフローを終了します');
|
|
82
|
-
resolve(null);
|
|
83
|
-
return true;
|
|
84
|
-
},
|
|
85
|
-
historyManager,
|
|
86
|
-
}).then((input) => {
|
|
87
|
-
const trimmed = input.trim().toLowerCase();
|
|
88
|
-
// User wants to stop
|
|
89
|
-
if (trimmed === 'n' || trimmed === 'no' || trimmed === 'q' || trimmed === 'quit') {
|
|
90
|
-
info('ワークフローを終了します');
|
|
91
|
-
resolve(null);
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
// Empty input = default 10 iterations
|
|
95
|
-
if (trimmed === '' || trimmed === 'y' || trimmed === 'yes') {
|
|
96
|
-
info('10 イテレーション追加します');
|
|
97
|
-
resolve(10);
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
// Try to parse as number
|
|
101
|
-
const num = parseInt(trimmed, 10);
|
|
102
|
-
if (!isNaN(num) && num > 0 && num <= 100) {
|
|
103
|
-
info(`${num} イテレーション追加します`);
|
|
104
|
-
resolve(num);
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
// Invalid input, treat as continue with default
|
|
108
|
-
info('10 イテレーション追加します');
|
|
109
|
-
resolve(10);
|
|
110
|
-
}).catch(() => {
|
|
111
|
-
resolve(null);
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
//# sourceMappingURL=user-input.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user-input.js","sourceRoot":"","sources":["../../src/interactive/user-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workflow executor for interactive mode
|
|
3
|
-
*
|
|
4
|
-
* Handles the execution of multi-agent workflows,
|
|
5
|
-
* including streaming output and state management.
|
|
6
|
-
*/
|
|
7
|
-
import { createReadlineInterface } from './input.js';
|
|
8
|
-
import type { InteractiveState } from './types.js';
|
|
9
|
-
/**
|
|
10
|
-
* Execute multi-agent workflow with streaming output.
|
|
11
|
-
*
|
|
12
|
-
* This is the main workflow execution function that:
|
|
13
|
-
* - Loads and validates the workflow configuration
|
|
14
|
-
* - Sets up stream handlers for real-time output
|
|
15
|
-
* - Manages agent sessions for conversation continuity
|
|
16
|
-
* - Handles blocked states and user input requests
|
|
17
|
-
* - Logs session data for debugging
|
|
18
|
-
*/
|
|
19
|
-
export declare function executeMultiAgentWorkflow(message: string, state: InteractiveState, rl: ReturnType<typeof createReadlineInterface>, requestedIterations?: number): Promise<string>;
|
|
20
|
-
//# sourceMappingURL=workflow-executor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-executor.d.ts","sourceRoot":"","sources":["../../src/interactive/workflow-executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8BH,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAYrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAInD;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,gBAAgB,EACvB,EAAE,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,EAC9C,mBAAmB,GAAE,MAAW,GAC/B,OAAO,CAAC,MAAM,CAAC,CA2LjB"}
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workflow executor for interactive mode
|
|
3
|
-
*
|
|
4
|
-
* Handles the execution of multi-agent workflows,
|
|
5
|
-
* including streaming output and state management.
|
|
6
|
-
*/
|
|
7
|
-
import chalk from 'chalk';
|
|
8
|
-
import { loadWorkflow, getBuiltinWorkflow, } from '../config/index.js';
|
|
9
|
-
import { loadAgentSessions, updateAgentSession, } from '../config/paths.js';
|
|
10
|
-
import { WorkflowEngine } from '../workflow/engine.js';
|
|
11
|
-
import { info, error, success, StreamDisplay, } from '../utils/ui.js';
|
|
12
|
-
import { playWarningSound, notifySuccess, notifyError, notifyWarning, } from '../utils/notification.js';
|
|
13
|
-
import { createSessionLog, addToSessionLog, finalizeSessionLog, saveSessionLog, } from '../utils/session.js';
|
|
14
|
-
import { createInteractivePermissionHandler, createPermissionState, resetPermissionStateForIteration, } from './permission.js';
|
|
15
|
-
import { createAgentAnswerHandler, createAskUserQuestionHandler, createSacrificeModeQuestionHandler, } from './handlers.js';
|
|
16
|
-
import { requestUserInput, requestIterationContinue } from './user-input.js';
|
|
17
|
-
/**
|
|
18
|
-
* Execute multi-agent workflow with streaming output.
|
|
19
|
-
*
|
|
20
|
-
* This is the main workflow execution function that:
|
|
21
|
-
* - Loads and validates the workflow configuration
|
|
22
|
-
* - Sets up stream handlers for real-time output
|
|
23
|
-
* - Manages agent sessions for conversation continuity
|
|
24
|
-
* - Handles blocked states and user input requests
|
|
25
|
-
* - Logs session data for debugging
|
|
26
|
-
*/
|
|
27
|
-
export async function executeMultiAgentWorkflow(message, state, rl, requestedIterations = 10) {
|
|
28
|
-
const builtin = getBuiltinWorkflow(state.workflowName);
|
|
29
|
-
let config = builtin || loadWorkflow(state.workflowName);
|
|
30
|
-
if (!config) {
|
|
31
|
-
error(`Workflow "${state.workflowName}" not found.`);
|
|
32
|
-
info('Available workflows: /workflow list');
|
|
33
|
-
return `[ERROR] Workflow "${state.workflowName}" not found`;
|
|
34
|
-
}
|
|
35
|
-
// Apply requested iteration count
|
|
36
|
-
if (requestedIterations !== config.maxIterations) {
|
|
37
|
-
config = { ...config, maxIterations: requestedIterations };
|
|
38
|
-
}
|
|
39
|
-
const sessionLog = createSessionLog(message, state.cwd, config.name);
|
|
40
|
-
// Track current display for streaming
|
|
41
|
-
const displayRef = { current: null };
|
|
42
|
-
// Create stream handler that delegates to current display
|
|
43
|
-
const streamHandler = (event) => {
|
|
44
|
-
if (!displayRef.current)
|
|
45
|
-
return;
|
|
46
|
-
if (event.type === 'result')
|
|
47
|
-
return;
|
|
48
|
-
displayRef.current.createHandler()(event);
|
|
49
|
-
};
|
|
50
|
-
// Create user input handler for blocked state
|
|
51
|
-
const userInputHandler = async (request) => {
|
|
52
|
-
// In sacrifice mode, auto-skip blocked states
|
|
53
|
-
if (state.sacrificeMyPcMode) {
|
|
54
|
-
info('[SACRIFICE MODE] Auto-skipping blocked state');
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
// Flush current display before prompting
|
|
58
|
-
if (displayRef.current) {
|
|
59
|
-
displayRef.current.flushThinking();
|
|
60
|
-
displayRef.current.flushText();
|
|
61
|
-
displayRef.current = null;
|
|
62
|
-
}
|
|
63
|
-
return requestUserInput(request, rl, state.historyManager);
|
|
64
|
-
};
|
|
65
|
-
// Create iteration limit handler
|
|
66
|
-
// Note: Even in sacrifice mode, we ask user for iteration continuation
|
|
67
|
-
// to prevent runaway execution
|
|
68
|
-
const iterationLimitHandler = async (request) => {
|
|
69
|
-
// Flush current display before prompting
|
|
70
|
-
if (displayRef.current) {
|
|
71
|
-
displayRef.current.flushThinking();
|
|
72
|
-
displayRef.current.flushText();
|
|
73
|
-
displayRef.current = null;
|
|
74
|
-
}
|
|
75
|
-
return requestIterationContinue(request, rl, state.historyManager);
|
|
76
|
-
};
|
|
77
|
-
// Load saved agent sessions for session resumption
|
|
78
|
-
const savedSessions = loadAgentSessions(state.cwd);
|
|
79
|
-
// Session update handler - persist session IDs when they change
|
|
80
|
-
const sessionUpdateHandler = (agentName, sessionId) => {
|
|
81
|
-
updateAgentSession(state.cwd, agentName, sessionId);
|
|
82
|
-
};
|
|
83
|
-
// Create permission state for iteration-scoped permissions
|
|
84
|
-
const permissionState = createPermissionState();
|
|
85
|
-
// Create interactive permission handler (sacrifice mode uses bypassPermissions)
|
|
86
|
-
const permissionHandler = state.sacrificeMyPcMode
|
|
87
|
-
? undefined // No handler needed - we'll use bypassPermissions mode
|
|
88
|
-
: createInteractivePermissionHandler(rl, permissionState);
|
|
89
|
-
// Create AskUserQuestion handler
|
|
90
|
-
// Priority: sacrifice mode > answerAgent > interactive user input
|
|
91
|
-
let askUserQuestionHandler;
|
|
92
|
-
if (state.sacrificeMyPcMode) {
|
|
93
|
-
askUserQuestionHandler = createSacrificeModeQuestionHandler();
|
|
94
|
-
}
|
|
95
|
-
else if (config.answerAgent) {
|
|
96
|
-
// Use another agent to answer questions
|
|
97
|
-
info(`質問回答エージェント: ${config.answerAgent}`);
|
|
98
|
-
askUserQuestionHandler = createAgentAnswerHandler(config.answerAgent, state.cwd);
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
// Interactive user input
|
|
102
|
-
askUserQuestionHandler = createAskUserQuestionHandler(rl, state.historyManager);
|
|
103
|
-
}
|
|
104
|
-
const engine = new WorkflowEngine(config, state.cwd, message, {
|
|
105
|
-
onStream: streamHandler,
|
|
106
|
-
onUserInput: userInputHandler,
|
|
107
|
-
initialSessions: savedSessions,
|
|
108
|
-
onSessionUpdate: sessionUpdateHandler,
|
|
109
|
-
onPermissionRequest: permissionHandler,
|
|
110
|
-
initialUserInputs: state.sharedUserInputs,
|
|
111
|
-
onAskUserQuestion: askUserQuestionHandler,
|
|
112
|
-
onIterationLimit: iterationLimitHandler,
|
|
113
|
-
bypassPermissions: state.sacrificeMyPcMode,
|
|
114
|
-
});
|
|
115
|
-
engine.on('step:start', (step, iteration) => {
|
|
116
|
-
// Reset iteration-scoped permission state at start of each step
|
|
117
|
-
resetPermissionStateForIteration(permissionState);
|
|
118
|
-
info(`[${iteration}/${config.maxIterations}] ${step.name} (${step.agentDisplayName})`);
|
|
119
|
-
displayRef.current = new StreamDisplay(step.agentDisplayName);
|
|
120
|
-
});
|
|
121
|
-
engine.on('step:complete', (step, stepResponse) => {
|
|
122
|
-
if (displayRef.current) {
|
|
123
|
-
displayRef.current.flushThinking();
|
|
124
|
-
displayRef.current.flushText();
|
|
125
|
-
displayRef.current = null;
|
|
126
|
-
}
|
|
127
|
-
console.log();
|
|
128
|
-
addToSessionLog(sessionLog, step.name, stepResponse);
|
|
129
|
-
});
|
|
130
|
-
// Handle user input event (after user provides input for blocked step)
|
|
131
|
-
engine.on('step:user_input', (step, userInput) => {
|
|
132
|
-
console.log();
|
|
133
|
-
info(`ユーザー入力を受け取りました。${step.name} を再実行します...`);
|
|
134
|
-
console.log(chalk.gray(`入力内容: ${userInput.slice(0, 100)}${userInput.length > 100 ? '...' : ''}`));
|
|
135
|
-
console.log();
|
|
136
|
-
});
|
|
137
|
-
let wasInterrupted = false;
|
|
138
|
-
let loopDetected = false;
|
|
139
|
-
let wasBlocked = false;
|
|
140
|
-
engine.on('workflow:abort', (_, reason) => {
|
|
141
|
-
if (displayRef.current) {
|
|
142
|
-
displayRef.current.flushThinking();
|
|
143
|
-
displayRef.current.flushText();
|
|
144
|
-
displayRef.current = null;
|
|
145
|
-
}
|
|
146
|
-
if (reason?.includes('interrupted')) {
|
|
147
|
-
wasInterrupted = true;
|
|
148
|
-
}
|
|
149
|
-
if (reason?.includes('Loop detected')) {
|
|
150
|
-
loopDetected = true;
|
|
151
|
-
}
|
|
152
|
-
if (reason?.includes('blocked') || reason?.includes('no user input')) {
|
|
153
|
-
wasBlocked = true;
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
try {
|
|
157
|
-
const finalState = await engine.run();
|
|
158
|
-
const statusVal = finalState.status === 'completed' ? 'completed' : 'aborted';
|
|
159
|
-
finalizeSessionLog(sessionLog, statusVal);
|
|
160
|
-
saveSessionLog(sessionLog, state.sessionId, state.cwd);
|
|
161
|
-
if (finalState.status === 'completed') {
|
|
162
|
-
success('Workflow completed!');
|
|
163
|
-
notifySuccess('TAKT', `ワークフロー完了 (${finalState.iteration} iterations)`);
|
|
164
|
-
return '[WORKFLOW COMPLETE]';
|
|
165
|
-
}
|
|
166
|
-
else if (wasInterrupted) {
|
|
167
|
-
info('Workflow interrupted by user');
|
|
168
|
-
// User intentionally interrupted - sound only, no system notification needed
|
|
169
|
-
playWarningSound();
|
|
170
|
-
return '[WORKFLOW INTERRUPTED]';
|
|
171
|
-
}
|
|
172
|
-
else if (loopDetected) {
|
|
173
|
-
error('Workflow aborted due to loop detection');
|
|
174
|
-
info('Tip: ループが検出されました。タスクを見直すか、/agent coder を直接使用してください。');
|
|
175
|
-
notifyError('TAKT', 'ループ検出により中断されました');
|
|
176
|
-
return '[WORKFLOW ABORTED: Loop detected]';
|
|
177
|
-
}
|
|
178
|
-
else if (wasBlocked) {
|
|
179
|
-
info('Workflow aborted: エージェントがブロックされ、ユーザー入力が提供されませんでした');
|
|
180
|
-
notifyWarning('TAKT', 'ユーザー入力待ちで中断されました');
|
|
181
|
-
return '[WORKFLOW ABORTED: Blocked]';
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
error('Workflow aborted');
|
|
185
|
-
notifyError('TAKT', 'ワークフローが中断されました');
|
|
186
|
-
return '[WORKFLOW ABORTED]';
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
catch (err) {
|
|
190
|
-
if (displayRef.current) {
|
|
191
|
-
displayRef.current.flushThinking();
|
|
192
|
-
displayRef.current.flushText();
|
|
193
|
-
}
|
|
194
|
-
const errMsg = `[ERROR] ${err instanceof Error ? err.message : String(err)}`;
|
|
195
|
-
error(errMsg);
|
|
196
|
-
notifyError('TAKT', `エラー: ${err instanceof Error ? err.message : String(err)}`);
|
|
197
|
-
return errMsg;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
//# sourceMappingURL=workflow-executor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-executor.js","sourceRoot":"","sources":["../../src/interactive/workflow-executor.ts"],"names":[],"mappings":"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"}
|