takt 0.1.0 → 0.1.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 +78 -4
- package/dist/agents/runner.d.ts +3 -0
- package/dist/agents/runner.d.ts.map +1 -1
- package/dist/agents/runner.js +70 -14
- package/dist/agents/runner.js.map +1 -1
- package/dist/claude/client.d.ts +1 -1
- package/dist/claude/client.d.ts.map +1 -1
- package/dist/claude/client.js +4 -3
- package/dist/claude/client.js.map +1 -1
- package/dist/claude/index.d.ts +1 -1
- package/dist/claude/index.d.ts.map +1 -1
- package/dist/claude/index.js.map +1 -1
- package/dist/claude/process.d.ts +1 -1
- package/dist/claude/process.d.ts.map +1 -1
- package/dist/claude/process.js.map +1 -1
- package/dist/claude/types.d.ts +7 -0
- package/dist/claude/types.d.ts.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -4
- package/dist/cli.js.map +1 -1
- package/dist/codex/client.d.ts +26 -0
- package/dist/codex/client.d.ts.map +1 -0
- package/dist/codex/client.js +418 -0
- package/dist/codex/client.js.map +1 -0
- package/dist/codex/index.d.ts +5 -0
- package/dist/codex/index.d.ts.map +1 -0
- package/dist/codex/index.js +5 -0
- package/dist/codex/index.js.map +1 -0
- 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/commands/workflowExecution.d.ts.map +1 -1
- package/dist/commands/workflowExecution.js +3 -1
- package/dist/commands/workflowExecution.js.map +1 -1
- package/dist/config/globalConfig.d.ts +2 -0
- package/dist/config/globalConfig.d.ts.map +1 -1
- package/dist/config/globalConfig.js +12 -0
- package/dist/config/globalConfig.js.map +1 -1
- package/dist/config/initialization.d.ts +10 -0
- package/dist/config/initialization.d.ts.map +1 -1
- package/dist/config/initialization.js +26 -4
- package/dist/config/initialization.js.map +1 -1
- package/dist/config/projectConfig.d.ts +14 -1
- package/dist/config/projectConfig.d.ts.map +1 -1
- package/dist/config/projectConfig.js +4 -0
- package/dist/config/projectConfig.js.map +1 -1
- package/dist/config/workflowLoader.d.ts.map +1 -1
- package/dist/config/workflowLoader.js +3 -0
- package/dist/config/workflowLoader.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/models/schemas.d.ts +54 -3
- package/dist/models/schemas.d.ts.map +1 -1
- package/dist/models/schemas.js +34 -46
- package/dist/models/schemas.js.map +1 -1
- package/dist/models/types.d.ts +12 -2
- package/dist/models/types.d.ts.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/dist/resources/index.d.ts +9 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +21 -2
- package/dist/resources/index.js.map +1 -1
- package/dist/utils/session.d.ts +5 -0
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +19 -0
- package/dist/utils/session.js.map +1 -1
- package/dist/utils/ui.d.ts +7 -0
- package/dist/utils/ui.d.ts.map +1 -1
- package/dist/utils/ui.js +51 -0
- package/dist/utils/ui.js.map +1 -1
- package/dist/workflow/engine.d.ts +10 -0
- package/dist/workflow/engine.d.ts.map +1 -1
- package/dist/workflow/engine.js +31 -0
- package/dist/workflow/engine.js.map +1 -1
- package/dist/workflow/instruction-builder.d.ts +3 -0
- package/dist/workflow/instruction-builder.d.ts.map +1 -1
- package/dist/workflow/instruction-builder.js +5 -0
- 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/package.json +3 -1
- package/resources/global/en/agents/default/ai-reviewer.md +136 -0
- package/resources/global/en/agents/default/architect.md +81 -30
- package/resources/global/en/agents/default/coder.md +60 -44
- package/resources/global/en/agents/default/planner.md +78 -0
- package/resources/global/en/agents/default/security.md +67 -75
- package/resources/global/en/agents/default/supervisor.md +94 -86
- package/resources/global/en/agents/expert-review/cqrs-es-reviewer.md +199 -0
- package/resources/global/en/agents/expert-review/frontend-reviewer.md +260 -0
- package/resources/global/en/agents/expert-review/qa-reviewer.md +260 -0
- package/resources/global/en/agents/expert-review/security-reviewer.md +222 -0
- package/resources/global/en/agents/expert-review/supervisor.md +186 -0
- package/resources/global/en/config.yaml +8 -0
- package/resources/global/en/workflows/default.yaml +474 -21
- package/resources/global/en/workflows/expert-review.yaml +936 -0
- package/resources/global/en/workflows/magi.yaml +18 -0
- package/resources/global/en/workflows/research.yaml +18 -0
- package/resources/global/ja/agents/default/ai-reviewer.md +136 -0
- package/resources/global/ja/agents/default/architect.md +81 -30
- package/resources/global/ja/agents/default/coder.md +21 -6
- package/resources/global/ja/agents/default/planner.md +78 -0
- package/resources/global/ja/agents/default/security.md +20 -28
- package/resources/global/ja/agents/default/supervisor.md +54 -46
- package/resources/global/ja/agents/expert-review/cqrs-es-reviewer.md +199 -0
- package/resources/global/ja/agents/expert-review/frontend-reviewer.md +260 -0
- package/resources/global/ja/agents/expert-review/qa-reviewer.md +260 -0
- package/resources/global/ja/agents/expert-review/security-reviewer.md +222 -0
- package/resources/global/ja/agents/expert-review/supervisor.md +186 -0
- package/resources/global/ja/config.yaml +8 -0
- package/resources/global/ja/workflows/default.yaml +485 -32
- package/resources/global/ja/workflows/expert-review.yaml +936 -0
- package/resources/global/ja/workflows/magi.yaml +18 -0
- package/resources/global/ja/workflows/research.yaml +18 -0
- 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
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Escape sequence tracking for iTerm2-style Option+Enter detection
|
|
3
|
-
*
|
|
4
|
-
* iTerm2 (and some other Mac terminals) send Option+Enter as two separate events:
|
|
5
|
-
* Escape followed by Enter. This module provides a tracker to detect this pattern
|
|
6
|
-
* by checking if Enter is pressed shortly after Escape.
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Tracks Escape key timing for detecting iTerm2-style Option+Enter.
|
|
10
|
-
*
|
|
11
|
-
* The threshold of 50ms is based on:
|
|
12
|
-
* - Typical keyboard repeat delay is 200-500ms
|
|
13
|
-
* - Terminal escape sequence transmission is near-instantaneous (<10ms)
|
|
14
|
-
* - Human intentional Esc→Enter would take at least 100-150ms
|
|
15
|
-
* - 50ms provides a safe margin to detect machine-generated sequences
|
|
16
|
-
* while avoiding false positives from intentional key presses
|
|
17
|
-
*/
|
|
18
|
-
export class EscapeSequenceTracker {
|
|
19
|
-
lastEscapeTime = 0;
|
|
20
|
-
thresholdMs;
|
|
21
|
-
/**
|
|
22
|
-
* @param thresholdMs Time window to consider Esc+Enter as Option+Enter (default: 50ms)
|
|
23
|
-
*/
|
|
24
|
-
constructor(thresholdMs = 50) {
|
|
25
|
-
this.thresholdMs = thresholdMs;
|
|
26
|
-
}
|
|
27
|
-
/** Record that Escape key was pressed */
|
|
28
|
-
trackEscape() {
|
|
29
|
-
this.lastEscapeTime = Date.now();
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Check if Enter was pressed within threshold of Escape.
|
|
33
|
-
* Resets the tracker if true to prevent repeated triggers.
|
|
34
|
-
*/
|
|
35
|
-
isEscapeThenEnter() {
|
|
36
|
-
const elapsed = Date.now() - this.lastEscapeTime;
|
|
37
|
-
const isRecent = elapsed < this.thresholdMs && this.lastEscapeTime > 0;
|
|
38
|
-
if (isRecent) {
|
|
39
|
-
this.lastEscapeTime = 0; // Reset to prevent accidental triggers
|
|
40
|
-
}
|
|
41
|
-
return isRecent;
|
|
42
|
-
}
|
|
43
|
-
/** Reset the tracker state */
|
|
44
|
-
reset() {
|
|
45
|
-
this.lastEscapeTime = 0;
|
|
46
|
-
}
|
|
47
|
-
/** Get the threshold value (for testing) */
|
|
48
|
-
getThreshold() {
|
|
49
|
-
return this.thresholdMs;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=escape-tracker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"escape-tracker.js","sourceRoot":"","sources":["../../src/interactive/escape-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;GASG;AACH,MAAM,OAAO,qBAAqB;IACxB,cAAc,GAAW,CAAC,CAAC;IAClB,WAAW,CAAS;IAErC;;OAEG;IACH,YAAY,cAAsB,EAAE;QAClC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,yCAAyC;IACzC,WAAW;QACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,iBAAiB;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;QACjD,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACvE,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,uCAAuC;QAClE,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,8BAA8B;IAC9B,KAAK;QACH,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,4CAA4C;IAC5C,YAAY;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Interactive handlers for user questions and input
|
|
3
|
-
*
|
|
4
|
-
* Handles AskUserQuestion tool responses and user input prompts
|
|
5
|
-
* during workflow execution.
|
|
6
|
-
*/
|
|
7
|
-
import type { InputHistoryManager } from './input.js';
|
|
8
|
-
import { createReadlineInterface } from './input.js';
|
|
9
|
-
import type { AskUserQuestionHandler } from '../claude/process.js';
|
|
10
|
-
/**
|
|
11
|
-
* Create a handler that uses another agent to answer questions.
|
|
12
|
-
* This allows automatic question answering by delegating to a specified agent.
|
|
13
|
-
*/
|
|
14
|
-
export declare function createAgentAnswerHandler(answerAgentName: string, cwd: string): AskUserQuestionHandler;
|
|
15
|
-
/**
|
|
16
|
-
* Handle AskUserQuestion tool from Claude Code.
|
|
17
|
-
* Displays questions to the user and collects their answers.
|
|
18
|
-
*/
|
|
19
|
-
export declare function createAskUserQuestionHandler(rl: ReturnType<typeof createReadlineInterface>, historyManager: InputHistoryManager): AskUserQuestionHandler;
|
|
20
|
-
/**
|
|
21
|
-
* Create a handler for sacrifice mode that auto-skips all questions.
|
|
22
|
-
*/
|
|
23
|
-
export declare function createSacrificeModeQuestionHandler(): AskUserQuestionHandler;
|
|
24
|
-
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/interactive/handlers.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,EAAwB,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAIzF;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,MAAM,GACV,sBAAsB,CA+ExB;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,EAC9C,cAAc,EAAE,mBAAmB,GAClC,sBAAsB,CAkGxB;AAED;;GAEG;AACH,wBAAgB,kCAAkC,IAAI,sBAAsB,CAK3E"}
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Interactive handlers for user questions and input
|
|
3
|
-
*
|
|
4
|
-
* Handles AskUserQuestion tool responses and user input prompts
|
|
5
|
-
* during workflow execution.
|
|
6
|
-
*/
|
|
7
|
-
import chalk from 'chalk';
|
|
8
|
-
import { multiLineQuestion } from './input.js';
|
|
9
|
-
import { runAgent } from '../agents/runner.js';
|
|
10
|
-
import { info } from '../utils/ui.js';
|
|
11
|
-
/**
|
|
12
|
-
* Create a handler that uses another agent to answer questions.
|
|
13
|
-
* This allows automatic question answering by delegating to a specified agent.
|
|
14
|
-
*/
|
|
15
|
-
export function createAgentAnswerHandler(answerAgentName, cwd) {
|
|
16
|
-
return async (input) => {
|
|
17
|
-
const answers = {};
|
|
18
|
-
console.log();
|
|
19
|
-
console.log(chalk.magenta('━'.repeat(60)));
|
|
20
|
-
console.log(chalk.magenta.bold(`🤖 ${answerAgentName} が質問に回答します`));
|
|
21
|
-
console.log(chalk.magenta('━'.repeat(60)));
|
|
22
|
-
for (let i = 0; i < input.questions.length; i++) {
|
|
23
|
-
const q = input.questions[i];
|
|
24
|
-
if (!q)
|
|
25
|
-
continue;
|
|
26
|
-
const questionKey = `q${i}`;
|
|
27
|
-
// Build a prompt for the answer agent
|
|
28
|
-
let prompt = `以下の質問に回答してください。回答のみを出力してください。\n\n`;
|
|
29
|
-
prompt += `質問: ${q.question}\n`;
|
|
30
|
-
if (q.options && q.options.length > 0) {
|
|
31
|
-
prompt += `\n選択肢:\n`;
|
|
32
|
-
q.options.forEach((opt, idx) => {
|
|
33
|
-
prompt += `${idx + 1}. ${opt.label}`;
|
|
34
|
-
if (opt.description) {
|
|
35
|
-
prompt += ` - ${opt.description}`;
|
|
36
|
-
}
|
|
37
|
-
prompt += '\n';
|
|
38
|
-
});
|
|
39
|
-
prompt += `\n選択肢の番号またはラベルで回答してください。選択肢以外の回答も可能です。`;
|
|
40
|
-
}
|
|
41
|
-
console.log(chalk.gray(`質問: ${q.question}`));
|
|
42
|
-
try {
|
|
43
|
-
const response = await runAgent(answerAgentName, prompt, {
|
|
44
|
-
cwd,
|
|
45
|
-
// Don't use session for answer agent - each question is independent
|
|
46
|
-
});
|
|
47
|
-
// Extract the answer from agent response
|
|
48
|
-
const answerContent = response.content.trim();
|
|
49
|
-
// If the agent selected a numbered option, convert to label
|
|
50
|
-
const options = q.options;
|
|
51
|
-
if (options && options.length > 0) {
|
|
52
|
-
const num = parseInt(answerContent, 10);
|
|
53
|
-
if (num >= 1 && num <= options.length) {
|
|
54
|
-
const selectedOption = options[num - 1];
|
|
55
|
-
answers[questionKey] = selectedOption?.label ?? answerContent;
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
// Check if agent replied with exact label
|
|
59
|
-
const matchedOption = options.find(opt => opt.label.toLowerCase() === answerContent.toLowerCase());
|
|
60
|
-
if (matchedOption) {
|
|
61
|
-
answers[questionKey] = matchedOption.label;
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
answers[questionKey] = answerContent;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
answers[questionKey] = answerContent;
|
|
70
|
-
}
|
|
71
|
-
console.log(chalk.green(`回答: ${answers[questionKey]}`));
|
|
72
|
-
}
|
|
73
|
-
catch (err) {
|
|
74
|
-
console.log(chalk.red(`エージェントエラー: ${err instanceof Error ? err.message : String(err)}`));
|
|
75
|
-
// Fall back to empty answer on error
|
|
76
|
-
answers[questionKey] = '';
|
|
77
|
-
}
|
|
78
|
-
console.log();
|
|
79
|
-
}
|
|
80
|
-
console.log(chalk.magenta('━'.repeat(60)));
|
|
81
|
-
console.log();
|
|
82
|
-
return answers;
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Handle AskUserQuestion tool from Claude Code.
|
|
87
|
-
* Displays questions to the user and collects their answers.
|
|
88
|
-
*/
|
|
89
|
-
export function createAskUserQuestionHandler(rl, historyManager) {
|
|
90
|
-
return async (input) => {
|
|
91
|
-
const answers = {};
|
|
92
|
-
console.log();
|
|
93
|
-
console.log(chalk.blue('━'.repeat(60)));
|
|
94
|
-
console.log(chalk.blue.bold('❓ Claude Code からの質問'));
|
|
95
|
-
console.log(chalk.blue('━'.repeat(60)));
|
|
96
|
-
console.log();
|
|
97
|
-
for (let i = 0; i < input.questions.length; i++) {
|
|
98
|
-
const q = input.questions[i];
|
|
99
|
-
if (!q)
|
|
100
|
-
continue;
|
|
101
|
-
const questionKey = `q${i}`;
|
|
102
|
-
// Show the question
|
|
103
|
-
if (q.header) {
|
|
104
|
-
console.log(chalk.cyan.bold(`[${q.header}]`));
|
|
105
|
-
}
|
|
106
|
-
console.log(chalk.white(q.question));
|
|
107
|
-
// Show options if available
|
|
108
|
-
const options = q.options;
|
|
109
|
-
if (options && options.length > 0) {
|
|
110
|
-
console.log();
|
|
111
|
-
options.forEach((opt, idx) => {
|
|
112
|
-
const label = chalk.yellow(` ${idx + 1}. ${opt.label}`);
|
|
113
|
-
const desc = opt.description ? chalk.gray(` - ${opt.description}`) : '';
|
|
114
|
-
console.log(label + desc);
|
|
115
|
-
});
|
|
116
|
-
console.log(chalk.gray(` ${options.length + 1}. その他(自由入力)`));
|
|
117
|
-
console.log();
|
|
118
|
-
// Prompt for selection
|
|
119
|
-
const answer = await new Promise((resolve) => {
|
|
120
|
-
multiLineQuestion(rl, {
|
|
121
|
-
promptStr: chalk.magenta('選択> '),
|
|
122
|
-
onCtrlC: () => {
|
|
123
|
-
resolve('');
|
|
124
|
-
return true;
|
|
125
|
-
},
|
|
126
|
-
historyManager,
|
|
127
|
-
}).then(resolve).catch(() => resolve(''));
|
|
128
|
-
});
|
|
129
|
-
const trimmed = answer.trim();
|
|
130
|
-
const num = parseInt(trimmed, 10);
|
|
131
|
-
if (num >= 1 && num <= options.length) {
|
|
132
|
-
// User selected an option
|
|
133
|
-
const selectedOption = options[num - 1];
|
|
134
|
-
answers[questionKey] = selectedOption?.label ?? '';
|
|
135
|
-
}
|
|
136
|
-
else if (num === options.length + 1 || isNaN(num)) {
|
|
137
|
-
// User selected "Other" or entered free text
|
|
138
|
-
if (isNaN(num) && trimmed !== '') {
|
|
139
|
-
answers[questionKey] = trimmed;
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
console.log(chalk.cyan('自由入力してください:'));
|
|
143
|
-
const freeAnswer = await new Promise((resolve) => {
|
|
144
|
-
multiLineQuestion(rl, {
|
|
145
|
-
promptStr: chalk.magenta('回答> '),
|
|
146
|
-
onCtrlC: () => {
|
|
147
|
-
resolve('');
|
|
148
|
-
return true;
|
|
149
|
-
},
|
|
150
|
-
historyManager,
|
|
151
|
-
}).then(resolve).catch(() => resolve(''));
|
|
152
|
-
});
|
|
153
|
-
answers[questionKey] = freeAnswer.trim();
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
answers[questionKey] = trimmed;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
// No options, free text input
|
|
162
|
-
console.log();
|
|
163
|
-
const answer = await new Promise((resolve) => {
|
|
164
|
-
multiLineQuestion(rl, {
|
|
165
|
-
promptStr: chalk.magenta('回答> '),
|
|
166
|
-
onCtrlC: () => {
|
|
167
|
-
resolve('');
|
|
168
|
-
return true;
|
|
169
|
-
},
|
|
170
|
-
historyManager,
|
|
171
|
-
}).then(resolve).catch(() => resolve(''));
|
|
172
|
-
});
|
|
173
|
-
answers[questionKey] = answer.trim();
|
|
174
|
-
}
|
|
175
|
-
console.log();
|
|
176
|
-
}
|
|
177
|
-
console.log(chalk.blue('━'.repeat(60)));
|
|
178
|
-
console.log();
|
|
179
|
-
return answers;
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Create a handler for sacrifice mode that auto-skips all questions.
|
|
184
|
-
*/
|
|
185
|
-
export function createSacrificeModeQuestionHandler() {
|
|
186
|
-
return async (_input) => {
|
|
187
|
-
info('[SACRIFICE MODE] Auto-skipping AskUserQuestion');
|
|
188
|
-
return {};
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
//# sourceMappingURL=handlers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/interactive/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Input history management with persistence
|
|
3
|
-
*
|
|
4
|
-
* Manages input history for the interactive REPL, providing:
|
|
5
|
-
* - In-memory history for session use
|
|
6
|
-
* - Persistent storage for cross-session recall
|
|
7
|
-
* - Navigation through history entries
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* Manages input history with persistence.
|
|
11
|
-
* Provides a unified interface for in-memory and file-based history.
|
|
12
|
-
*/
|
|
13
|
-
export declare class InputHistoryManager {
|
|
14
|
-
private history;
|
|
15
|
-
private readonly projectDir;
|
|
16
|
-
private index;
|
|
17
|
-
private currentInput;
|
|
18
|
-
constructor(projectDir: string);
|
|
19
|
-
/** Add an entry to history (both in-memory and persistent) */
|
|
20
|
-
add(input: string): void;
|
|
21
|
-
/** Get the current history array (read-only) */
|
|
22
|
-
getHistory(): readonly string[];
|
|
23
|
-
/** Get the current history index */
|
|
24
|
-
getIndex(): number;
|
|
25
|
-
/** Reset index to the end of history */
|
|
26
|
-
resetIndex(): void;
|
|
27
|
-
/** Save the current input before navigating history */
|
|
28
|
-
saveCurrentInput(input: string): void;
|
|
29
|
-
/** Get the saved current input */
|
|
30
|
-
getCurrentInput(): string;
|
|
31
|
-
/** Navigate to the previous entry. Returns the entry or undefined if at start. */
|
|
32
|
-
navigatePrevious(): string | undefined;
|
|
33
|
-
/** Navigate to the next entry. Returns the entry, current input at end, or undefined. */
|
|
34
|
-
navigateNext(): {
|
|
35
|
-
entry: string;
|
|
36
|
-
isCurrentInput: boolean;
|
|
37
|
-
} | undefined;
|
|
38
|
-
/** Check if currently at a history entry (not at the end) */
|
|
39
|
-
isAtHistoryEntry(): boolean;
|
|
40
|
-
/** Get the entry at the current index */
|
|
41
|
-
getCurrentEntry(): string | undefined;
|
|
42
|
-
/** Get the total number of history entries */
|
|
43
|
-
get length(): number;
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=history-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"history-manager.d.ts","sourceRoot":"","sources":["../../src/interactive/history-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAS;gBAEjB,UAAU,EAAE,MAAM;IAO9B,8DAA8D;IAC9D,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQxB,gDAAgD;IAChD,UAAU,IAAI,SAAS,MAAM,EAAE;IAI/B,oCAAoC;IACpC,QAAQ,IAAI,MAAM;IAIlB,wCAAwC;IACxC,UAAU,IAAI,IAAI;IAKlB,uDAAuD;IACvD,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMrC,kCAAkC;IAClC,eAAe,IAAI,MAAM;IAIzB,kFAAkF;IAClF,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAQtC,yFAAyF;IACzF,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS;IActE,6DAA6D;IAC7D,gBAAgB,IAAI,OAAO;IAI3B,yCAAyC;IACzC,eAAe,IAAI,MAAM,GAAG,SAAS;IAIrC,8CAA8C;IAC9C,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF"}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Input history management with persistence
|
|
3
|
-
*
|
|
4
|
-
* Manages input history for the interactive REPL, providing:
|
|
5
|
-
* - In-memory history for session use
|
|
6
|
-
* - Persistent storage for cross-session recall
|
|
7
|
-
* - Navigation through history entries
|
|
8
|
-
*/
|
|
9
|
-
import { loadInputHistory, saveInputHistory, } from '../config/paths.js';
|
|
10
|
-
/**
|
|
11
|
-
* Manages input history with persistence.
|
|
12
|
-
* Provides a unified interface for in-memory and file-based history.
|
|
13
|
-
*/
|
|
14
|
-
export class InputHistoryManager {
|
|
15
|
-
history;
|
|
16
|
-
projectDir;
|
|
17
|
-
index;
|
|
18
|
-
currentInput;
|
|
19
|
-
constructor(projectDir) {
|
|
20
|
-
this.projectDir = projectDir;
|
|
21
|
-
this.history = loadInputHistory(projectDir);
|
|
22
|
-
this.index = this.history.length;
|
|
23
|
-
this.currentInput = '';
|
|
24
|
-
}
|
|
25
|
-
/** Add an entry to history (both in-memory and persistent) */
|
|
26
|
-
add(input) {
|
|
27
|
-
// Don't add consecutive duplicates
|
|
28
|
-
if (this.history[this.history.length - 1] !== input) {
|
|
29
|
-
this.history.push(input);
|
|
30
|
-
saveInputHistory(this.projectDir, this.history);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/** Get the current history array (read-only) */
|
|
34
|
-
getHistory() {
|
|
35
|
-
return this.history;
|
|
36
|
-
}
|
|
37
|
-
/** Get the current history index */
|
|
38
|
-
getIndex() {
|
|
39
|
-
return this.index;
|
|
40
|
-
}
|
|
41
|
-
/** Reset index to the end of history */
|
|
42
|
-
resetIndex() {
|
|
43
|
-
this.index = this.history.length;
|
|
44
|
-
this.currentInput = '';
|
|
45
|
-
}
|
|
46
|
-
/** Save the current input before navigating history */
|
|
47
|
-
saveCurrentInput(input) {
|
|
48
|
-
if (this.index === this.history.length) {
|
|
49
|
-
this.currentInput = input;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/** Get the saved current input */
|
|
53
|
-
getCurrentInput() {
|
|
54
|
-
return this.currentInput;
|
|
55
|
-
}
|
|
56
|
-
/** Navigate to the previous entry. Returns the entry or undefined if at start. */
|
|
57
|
-
navigatePrevious() {
|
|
58
|
-
if (this.index > 0) {
|
|
59
|
-
this.index--;
|
|
60
|
-
return this.history[this.index];
|
|
61
|
-
}
|
|
62
|
-
return undefined;
|
|
63
|
-
}
|
|
64
|
-
/** Navigate to the next entry. Returns the entry, current input at end, or undefined. */
|
|
65
|
-
navigateNext() {
|
|
66
|
-
if (this.index < this.history.length) {
|
|
67
|
-
this.index++;
|
|
68
|
-
if (this.index === this.history.length) {
|
|
69
|
-
return { entry: this.currentInput, isCurrentInput: true };
|
|
70
|
-
}
|
|
71
|
-
const entry = this.history[this.index];
|
|
72
|
-
if (entry !== undefined) {
|
|
73
|
-
return { entry, isCurrentInput: false };
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return undefined;
|
|
77
|
-
}
|
|
78
|
-
/** Check if currently at a history entry (not at the end) */
|
|
79
|
-
isAtHistoryEntry() {
|
|
80
|
-
return this.index < this.history.length;
|
|
81
|
-
}
|
|
82
|
-
/** Get the entry at the current index */
|
|
83
|
-
getCurrentEntry() {
|
|
84
|
-
return this.history[this.index];
|
|
85
|
-
}
|
|
86
|
-
/** Get the total number of history entries */
|
|
87
|
-
get length() {
|
|
88
|
-
return this.history.length;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=history-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"history-manager.js","sourceRoot":"","sources":["../../src/interactive/history-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interactive/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interactive/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Main ink application component
|
|
3
|
-
*/
|
|
4
|
-
import React from 'react';
|
|
5
|
-
interface AppProps {
|
|
6
|
-
/** Current working directory */
|
|
7
|
-
cwd: string;
|
|
8
|
-
/** Initial workflow name */
|
|
9
|
-
workflowName?: string;
|
|
10
|
-
/** Initial task to execute */
|
|
11
|
-
initialTask?: string;
|
|
12
|
-
}
|
|
13
|
-
/** Main application wrapper with context provider */
|
|
14
|
-
export declare function App({ cwd, workflowName, initialTask }: AppProps): React.ReactElement;
|
|
15
|
-
export {};
|
|
16
|
-
//# sourceMappingURL=App.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../../src/interactive/ink/components/App.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAiMxE,UAAU,QAAQ;IAChB,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qDAAqD;AACrD,wBAAgB,GAAG,CAAC,EAAE,GAAG,EAAE,YAA4B,EAAE,WAAW,EAAE,EAAE,QAAQ,GAAG,KAAK,CAAC,YAAY,CAMpG"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* Main ink application component
|
|
4
|
-
*/
|
|
5
|
-
import { useCallback, useState, useEffect, useRef } from 'react';
|
|
6
|
-
import { Box, Text, useInput, useApp as useInkApp } from 'ink';
|
|
7
|
-
import { AppProvider, useApp } from '../context/AppContext.js';
|
|
8
|
-
import { useWorkflowExecution } from '../hooks/useWorkflowExecution.js';
|
|
9
|
-
import { useCommands } from '../hooks/useCommands.js';
|
|
10
|
-
import { useTaskQueue } from '../hooks/useTaskQueue.js';
|
|
11
|
-
import { DOUBLE_CTRL_C_TIMEOUT_MS } from '../constants.js';
|
|
12
|
-
import { loadAllWorkflows } from '../../../config/loader.js';
|
|
13
|
-
import { Header } from './Header.js';
|
|
14
|
-
import { PromptInput } from './PromptInput.js';
|
|
15
|
-
import { StreamingOutput } from './StreamingOutput.js';
|
|
16
|
-
import { Spinner } from './Spinner.js';
|
|
17
|
-
import { ModalRouter } from './ModalRouter.js';
|
|
18
|
-
/** Main application content */
|
|
19
|
-
function AppContent({ initialTask }) {
|
|
20
|
-
const { state, dispatch } = useApp();
|
|
21
|
-
const { exit } = useInkApp();
|
|
22
|
-
const [hasExecutedInitial, setHasExecutedInitial] = useState(false);
|
|
23
|
-
const lastCtrlCRef = useRef(0);
|
|
24
|
-
const { executeWorkflow, executePassthroughMode, interruptWorkflow } = useWorkflowExecution();
|
|
25
|
-
const { handleCommand } = useCommands();
|
|
26
|
-
// Execute task content via workflow
|
|
27
|
-
const executeTaskContent = useCallback((taskName, content) => {
|
|
28
|
-
dispatch({ type: 'SET_CURRENT_TASK', payload: taskName });
|
|
29
|
-
if (state.workflowName === 'passthrough') {
|
|
30
|
-
executePassthroughMode(content);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
executeWorkflow(content);
|
|
34
|
-
}
|
|
35
|
-
}, [state.workflowName, executeWorkflow, executePassthroughMode, dispatch]);
|
|
36
|
-
// Task queue management
|
|
37
|
-
const { enqueueTasks } = useTaskQueue({
|
|
38
|
-
executeTask: executeTaskContent,
|
|
39
|
-
isProcessing: state.isProcessing,
|
|
40
|
-
});
|
|
41
|
-
// Load all workflows on mount
|
|
42
|
-
useEffect(() => {
|
|
43
|
-
const allWorkflows = loadAllWorkflows();
|
|
44
|
-
dispatch({ type: 'SET_ALL_WORKFLOWS', payload: allWorkflows });
|
|
45
|
-
}, [dispatch]);
|
|
46
|
-
// Handle input submission
|
|
47
|
-
const handleSubmit = useCallback((input) => {
|
|
48
|
-
// Clear any info message on new input
|
|
49
|
-
dispatch({ type: 'CLEAR_INFO' });
|
|
50
|
-
// Check for commands
|
|
51
|
-
if (input.startsWith('/')) {
|
|
52
|
-
const result = handleCommand(input);
|
|
53
|
-
if (result.handled) {
|
|
54
|
-
if (result.shouldExit) {
|
|
55
|
-
exit();
|
|
56
|
-
}
|
|
57
|
-
// Handle task execution (multiple tasks)
|
|
58
|
-
if (result.executeTasks && result.executeTasks.length > 0) {
|
|
59
|
-
enqueueTasks(result.executeTasks);
|
|
60
|
-
}
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
// Execute workflow or passthrough
|
|
65
|
-
if (state.workflowName === 'passthrough') {
|
|
66
|
-
executePassthroughMode(input);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
executeWorkflow(input);
|
|
70
|
-
}
|
|
71
|
-
}, [handleCommand, state.workflowName, executeWorkflow, executePassthroughMode, exit, enqueueTasks, dispatch]);
|
|
72
|
-
// Handle Ctrl+C
|
|
73
|
-
useInput((input, key) => {
|
|
74
|
-
if (input === 'c' && key.ctrl) {
|
|
75
|
-
const now = Date.now();
|
|
76
|
-
if (state.isProcessing) {
|
|
77
|
-
// Try to interrupt
|
|
78
|
-
if (interruptWorkflow()) {
|
|
79
|
-
dispatch({ type: 'SET_ERROR', payload: 'Interrupted. Press Ctrl+C again to exit.' });
|
|
80
|
-
lastCtrlCRef.current = now;
|
|
81
|
-
}
|
|
82
|
-
else if (now - lastCtrlCRef.current < DOUBLE_CTRL_C_TIMEOUT_MS) {
|
|
83
|
-
exit();
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
lastCtrlCRef.current = now;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
else if (state.modal.type !== 'none') {
|
|
90
|
-
// Close modal
|
|
91
|
-
dispatch({ type: 'HIDE_MODAL' });
|
|
92
|
-
}
|
|
93
|
-
else if (now - lastCtrlCRef.current < DOUBLE_CTRL_C_TIMEOUT_MS) {
|
|
94
|
-
// Double Ctrl+C to exit
|
|
95
|
-
exit();
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
lastCtrlCRef.current = now;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
// Execute initial task if provided
|
|
103
|
-
useEffect(() => {
|
|
104
|
-
if (initialTask && !hasExecutedInitial && !state.isProcessing) {
|
|
105
|
-
setHasExecutedInitial(true);
|
|
106
|
-
handleSubmit(initialTask);
|
|
107
|
-
}
|
|
108
|
-
}, [initialTask, hasExecutedInitial, state.isProcessing, handleSubmit]);
|
|
109
|
-
const hasModal = state.modal.type !== 'none';
|
|
110
|
-
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Header, { workflowName: state.workflowName, sacrificeMode: state.sacrificeMode, stepInfo: state.isProcessing ? {
|
|
111
|
-
name: state.currentStep,
|
|
112
|
-
iteration: state.iteration,
|
|
113
|
-
maxIterations: state.maxIterations,
|
|
114
|
-
} : undefined }), state.error && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: "red", children: ["Error: ", state.error] }) })), state.info && (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "cyan", children: state.info }) })), hasModal && (_jsx(Box, { marginBottom: 1, children: _jsx(ModalRouter, {}) })), !hasModal && (state.isProcessing || state.streamContent) && (_jsx(StreamingOutput, { content: state.streamContent, isStreaming: state.isProcessing, thinking: state.thinkingContent, agentName: state.currentAgent, stepName: state.currentStep, iteration: {
|
|
115
|
-
current: state.iteration,
|
|
116
|
-
max: state.maxIterations,
|
|
117
|
-
} })), !hasModal && state.isProcessing && !state.streamContent && (_jsx(Spinner, { message: `${state.currentAgent || 'Processing'}...` })), !hasModal && !state.isProcessing && (_jsx(Box, { marginTop: 1, children: _jsx(PromptInput, { prompt: state.sacrificeMode ? 'wolf> ' : 'wolf> ', onSubmit: handleSubmit, projectDir: state.cwd, disabled: state.isProcessing }) })), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "gray", dimColor: true, children: ["Ctrl+C to ", state.isProcessing ? 'interrupt' : 'exit', " | /help for commands"] }) })] }));
|
|
118
|
-
}
|
|
119
|
-
/** Main application wrapper with context provider */
|
|
120
|
-
export function App({ cwd, workflowName = 'passthrough', initialTask }) {
|
|
121
|
-
return (_jsx(AppProvider, { cwd: cwd, workflowName: workflowName, children: _jsx(AppContent, { initialTask: initialTask }) }));
|
|
122
|
-
}
|
|
123
|
-
//# sourceMappingURL=App.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../../../src/interactive/ink/components/App.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AskUserQuestion component for ink
|
|
3
|
-
*
|
|
4
|
-
* Displays questions from Claude and collects user answers
|
|
5
|
-
*/
|
|
6
|
-
import React from 'react';
|
|
7
|
-
import type { AskUserQuestionInput } from '../../../claude/process.js';
|
|
8
|
-
export interface AskUserQuestionProps {
|
|
9
|
-
/** Questions to display */
|
|
10
|
-
input: AskUserQuestionInput;
|
|
11
|
-
/** Callback when all questions are answered */
|
|
12
|
-
onComplete: (answers: Record<string, string>) => void;
|
|
13
|
-
}
|
|
14
|
-
/** AskUserQuestion component */
|
|
15
|
-
export declare function AskUserQuestion({ input, onComplete, }: AskUserQuestionProps): React.ReactElement;
|
|
16
|
-
//# sourceMappingURL=AskUserQuestion.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AskUserQuestion.d.ts","sourceRoot":"","sources":["../../../../src/interactive/ink/components/AskUserQuestion.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAcvE,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,KAAK,EAAE,oBAAoB,CAAC;IAC5B,+CAA+C;IAC/C,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;CACvD;AAuKD,gCAAgC;AAChC,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,UAAU,GACX,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,CA6C3C"}
|