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
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Key detection logic for terminal input handling
|
|
3
|
-
*
|
|
4
|
-
* Provides type definitions, constants, and functions for detecting
|
|
5
|
-
* special key combinations across different terminal emulators.
|
|
6
|
-
*
|
|
7
|
-
* This module handles:
|
|
8
|
-
* - Escape sequence tracking for iTerm2-style Option+Enter
|
|
9
|
-
* - Newline/submit/cancel trigger detection
|
|
10
|
-
* - Navigation and character input classification
|
|
11
|
-
*/
|
|
12
|
-
// ============================================================================
|
|
13
|
-
// Constants
|
|
14
|
-
// ============================================================================
|
|
15
|
-
/**
|
|
16
|
-
* Threshold (ms) for detecting iTerm2-style Option+Enter (Escape + Enter).
|
|
17
|
-
* Based on:
|
|
18
|
-
* - Typical keyboard repeat delay is 200-500ms
|
|
19
|
-
* - Terminal escape sequence transmission is near-instantaneous (<10ms)
|
|
20
|
-
* - Human intentional Esc→Enter would take at least 100-150ms
|
|
21
|
-
*/
|
|
22
|
-
export const ESCAPE_SEQUENCE_THRESHOLD_MS = 50;
|
|
23
|
-
/**
|
|
24
|
-
* Delay (ms) to allow Ink's initial render and terminal setup before enabling
|
|
25
|
-
* raw keypress events. 100ms is sufficient for most terminals; shorter delays
|
|
26
|
-
* may cause race conditions with Ink's terminal control.
|
|
27
|
-
*/
|
|
28
|
-
export const KEYPRESS_INIT_DELAY_MS = 100;
|
|
29
|
-
// ============================================================================
|
|
30
|
-
// Escape Sequence Tracker
|
|
31
|
-
// ============================================================================
|
|
32
|
-
/**
|
|
33
|
-
* Tracks Escape key timing for detecting iTerm2-style Option+Enter.
|
|
34
|
-
*
|
|
35
|
-
* iTerm2 (and some other Mac terminals) send Option+Enter as two separate events:
|
|
36
|
-
* Escape followed by Enter. This tracker detects this pattern by checking if
|
|
37
|
-
* Enter is pressed shortly after Escape.
|
|
38
|
-
*/
|
|
39
|
-
export class EscapeSequenceTracker {
|
|
40
|
-
lastEscapeTime = 0;
|
|
41
|
-
thresholdMs;
|
|
42
|
-
constructor(thresholdMs = ESCAPE_SEQUENCE_THRESHOLD_MS) {
|
|
43
|
-
this.thresholdMs = thresholdMs;
|
|
44
|
-
}
|
|
45
|
-
/** Record that Escape key was pressed */
|
|
46
|
-
trackEscape() {
|
|
47
|
-
this.lastEscapeTime = Date.now();
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Check if Enter was pressed within threshold of Escape.
|
|
51
|
-
* Resets the tracker if true to prevent repeated triggers.
|
|
52
|
-
*/
|
|
53
|
-
isEscapeThenEnter() {
|
|
54
|
-
const elapsed = Date.now() - this.lastEscapeTime;
|
|
55
|
-
const isRecent = elapsed < this.thresholdMs && this.lastEscapeTime > 0;
|
|
56
|
-
if (isRecent) {
|
|
57
|
-
this.lastEscapeTime = 0; // Reset to prevent accidental triggers
|
|
58
|
-
}
|
|
59
|
-
return isRecent;
|
|
60
|
-
}
|
|
61
|
-
/** Reset the tracker state */
|
|
62
|
-
reset() {
|
|
63
|
-
this.lastEscapeTime = 0;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
// ============================================================================
|
|
67
|
-
// Key Detection Functions
|
|
68
|
-
// ============================================================================
|
|
69
|
-
/**
|
|
70
|
-
* Determines if a key event should trigger newline input.
|
|
71
|
-
*
|
|
72
|
-
* Supported patterns:
|
|
73
|
-
* - Ctrl+O: Universal alternative (works in all terminals)
|
|
74
|
-
* - Ctrl+Enter: ctrl flag with Enter key
|
|
75
|
-
* - Option+Enter (meta): meta flag with Enter key (some terminals)
|
|
76
|
-
* - Shift+Enter: shift flag with Enter key (some terminals)
|
|
77
|
-
* - Option+Enter (escape sequence): '\x1b\r' sequence (Terminal.app)
|
|
78
|
-
* - Option+Enter (iTerm2): Escape + Enter as separate events
|
|
79
|
-
* - Escape+OM: '\x1bOM' sequence (some terminals)
|
|
80
|
-
*/
|
|
81
|
-
export function isNewLineTrigger(key, escapeTracker) {
|
|
82
|
-
const isEnterKey = key.name === 'return' || key.name === 'enter';
|
|
83
|
-
// Ctrl+O - universal alternative that works in all terminals
|
|
84
|
-
if (key.ctrl && key.name === 'o') {
|
|
85
|
-
return true;
|
|
86
|
-
}
|
|
87
|
-
// Modifier + Enter combinations
|
|
88
|
-
const modifiedEnter = isEnterKey && (key.ctrl || key.meta || key.shift);
|
|
89
|
-
// Escape sequences sent as single events
|
|
90
|
-
const escapeSequences = key.sequence === '\x1b\r' ||
|
|
91
|
-
key.sequence === '\u001b\r' ||
|
|
92
|
-
key.sequence === '\x1bOM' ||
|
|
93
|
-
key.sequence === '\u001bOM';
|
|
94
|
-
// iTerm2-style: Escape followed by Enter within threshold
|
|
95
|
-
const iterm2Style = isEnterKey && escapeTracker.isEscapeThenEnter();
|
|
96
|
-
return modifiedEnter || escapeSequences || iterm2Style;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Determines if a key event should submit input.
|
|
100
|
-
*
|
|
101
|
-
* Supports:
|
|
102
|
-
* - Plain Enter (no modifiers)
|
|
103
|
-
* - Ctrl+J (legacy/universal)
|
|
104
|
-
*/
|
|
105
|
-
export function isSubmitTrigger(key) {
|
|
106
|
-
const isEnterKey = key.name === 'return' || key.name === 'enter';
|
|
107
|
-
// Plain Enter submits (no modifiers)
|
|
108
|
-
if (isEnterKey && !key.shift && !key.meta && !key.ctrl) {
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
// Ctrl+J also submits (works in all terminals)
|
|
112
|
-
if (key.ctrl && key.name === 'j') {
|
|
113
|
-
return true;
|
|
114
|
-
}
|
|
115
|
-
return false;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Determines if a key event is a cancel trigger (Ctrl+C)
|
|
119
|
-
*/
|
|
120
|
-
export function isCancelTrigger(key) {
|
|
121
|
-
return Boolean(key.ctrl && key.name === 'c');
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Determines if a key event is a navigation key
|
|
125
|
-
*/
|
|
126
|
-
export function isNavigationKey(key) {
|
|
127
|
-
if (key.name === 'up')
|
|
128
|
-
return 'up';
|
|
129
|
-
if (key.name === 'down')
|
|
130
|
-
return 'down';
|
|
131
|
-
if (key.name === 'left')
|
|
132
|
-
return 'left';
|
|
133
|
-
if (key.name === 'right')
|
|
134
|
-
return 'right';
|
|
135
|
-
return null;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Determines if a key event is a backspace
|
|
139
|
-
*/
|
|
140
|
-
export function isBackspaceKey(key) {
|
|
141
|
-
return key.name === 'backspace' || key.name === 'delete';
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Classify a raw key event into a normalized action
|
|
145
|
-
*/
|
|
146
|
-
export function classifyKeyEvent(str, key, escapeTracker) {
|
|
147
|
-
// Track Escape key for iTerm2-style detection
|
|
148
|
-
if (key.name === 'escape' || key.sequence === '\x1b') {
|
|
149
|
-
escapeTracker.trackEscape();
|
|
150
|
-
return { type: 'escape' };
|
|
151
|
-
}
|
|
152
|
-
// Cancel (Ctrl+C)
|
|
153
|
-
if (isCancelTrigger(key)) {
|
|
154
|
-
return { type: 'cancel' };
|
|
155
|
-
}
|
|
156
|
-
// Newline triggers (check BEFORE submit)
|
|
157
|
-
if (isNewLineTrigger(key, escapeTracker)) {
|
|
158
|
-
return { type: 'newline' };
|
|
159
|
-
}
|
|
160
|
-
// Submit triggers
|
|
161
|
-
if (isSubmitTrigger(key)) {
|
|
162
|
-
return { type: 'submit' };
|
|
163
|
-
}
|
|
164
|
-
// Navigation
|
|
165
|
-
const navDir = isNavigationKey(key);
|
|
166
|
-
if (navDir) {
|
|
167
|
-
return { type: 'navigation', direction: navDir };
|
|
168
|
-
}
|
|
169
|
-
// Backspace
|
|
170
|
-
if (isBackspaceKey(key)) {
|
|
171
|
-
return { type: 'backspace' };
|
|
172
|
-
}
|
|
173
|
-
// Character input (skip control characters and meta combinations)
|
|
174
|
-
if (str && !key.ctrl && !key.meta && str.length > 0) {
|
|
175
|
-
// Filter out non-printable characters
|
|
176
|
-
const printable = str.replace(/[\x00-\x1f\x7f]/g, '');
|
|
177
|
-
if (printable.length > 0) {
|
|
178
|
-
return { type: 'character', char: printable };
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
return { type: 'ignored' };
|
|
182
|
-
}
|
|
183
|
-
//# sourceMappingURL=keyDetection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keyDetection.js","sourceRoot":"","sources":["../../../../src/interactive/ink/hooks/keyDetection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pure functions for multiline input state handling
|
|
3
|
-
*
|
|
4
|
-
* This module is responsible ONLY for state transformations.
|
|
5
|
-
* Key detection logic is centralized in useRawKeypress.ts.
|
|
6
|
-
*
|
|
7
|
-
* These functions are extracted to enable unit testing without React hooks.
|
|
8
|
-
*/
|
|
9
|
-
export interface MultilineInputState {
|
|
10
|
-
lines: string[];
|
|
11
|
-
currentLine: number;
|
|
12
|
-
cursor: number;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Handles character input and returns new state
|
|
16
|
-
*/
|
|
17
|
-
export declare function handleCharacterInput(state: MultilineInputState, input: string): MultilineInputState;
|
|
18
|
-
/**
|
|
19
|
-
* Handles new line insertion and returns new state
|
|
20
|
-
*/
|
|
21
|
-
export declare function handleNewLine(state: MultilineInputState): MultilineInputState;
|
|
22
|
-
/**
|
|
23
|
-
* Handles backspace and returns new state
|
|
24
|
-
*/
|
|
25
|
-
export declare function handleBackspace(state: MultilineInputState): MultilineInputState;
|
|
26
|
-
/**
|
|
27
|
-
* Handles left arrow navigation
|
|
28
|
-
*/
|
|
29
|
-
export declare function handleLeftArrow(state: MultilineInputState): MultilineInputState;
|
|
30
|
-
/**
|
|
31
|
-
* Handles right arrow navigation
|
|
32
|
-
*/
|
|
33
|
-
export declare function handleRightArrow(state: MultilineInputState): MultilineInputState;
|
|
34
|
-
/**
|
|
35
|
-
* Handles up arrow navigation
|
|
36
|
-
*/
|
|
37
|
-
export declare function handleUpArrow(state: MultilineInputState): MultilineInputState;
|
|
38
|
-
/**
|
|
39
|
-
* Handles down arrow navigation
|
|
40
|
-
*/
|
|
41
|
-
export declare function handleDownArrow(state: MultilineInputState): MultilineInputState;
|
|
42
|
-
/**
|
|
43
|
-
* Get full input as a single string
|
|
44
|
-
*/
|
|
45
|
-
export declare function getFullInput(state: MultilineInputState): string;
|
|
46
|
-
/**
|
|
47
|
-
* Create initial state
|
|
48
|
-
*/
|
|
49
|
-
export declare function createInitialState(): MultilineInputState;
|
|
50
|
-
//# sourceMappingURL=multilineInputLogic.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multilineInputLogic.d.ts","sourceRoot":"","sources":["../../../../src/interactive/ink/hooks/multilineInputLogic.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,MAAM,GACZ,mBAAmB,CAYrB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,CAa7E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,CA2B/E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,CAc/E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,CAehF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,CAS7E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,CAS/E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,mBAAmB,CAMxD"}
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pure functions for multiline input state handling
|
|
3
|
-
*
|
|
4
|
-
* This module is responsible ONLY for state transformations.
|
|
5
|
-
* Key detection logic is centralized in useRawKeypress.ts.
|
|
6
|
-
*
|
|
7
|
-
* These functions are extracted to enable unit testing without React hooks.
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* Handles character input and returns new state
|
|
11
|
-
*/
|
|
12
|
-
export function handleCharacterInput(state, input) {
|
|
13
|
-
if (!input)
|
|
14
|
-
return state;
|
|
15
|
-
const newLines = [...state.lines];
|
|
16
|
-
const line = newLines[state.currentLine] ?? '';
|
|
17
|
-
newLines[state.currentLine] = line.slice(0, state.cursor) + input + line.slice(state.cursor);
|
|
18
|
-
return {
|
|
19
|
-
lines: newLines,
|
|
20
|
-
currentLine: state.currentLine,
|
|
21
|
-
cursor: state.cursor + input.length,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Handles new line insertion and returns new state
|
|
26
|
-
*/
|
|
27
|
-
export function handleNewLine(state) {
|
|
28
|
-
const newLines = [...state.lines];
|
|
29
|
-
const currentLineContent = newLines[state.currentLine] ?? '';
|
|
30
|
-
const before = currentLineContent.slice(0, state.cursor);
|
|
31
|
-
const after = currentLineContent.slice(state.cursor);
|
|
32
|
-
newLines[state.currentLine] = before;
|
|
33
|
-
newLines.splice(state.currentLine + 1, 0, after);
|
|
34
|
-
return {
|
|
35
|
-
lines: newLines,
|
|
36
|
-
currentLine: state.currentLine + 1,
|
|
37
|
-
cursor: 0,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Handles backspace and returns new state
|
|
42
|
-
*/
|
|
43
|
-
export function handleBackspace(state) {
|
|
44
|
-
if (state.cursor > 0) {
|
|
45
|
-
// Delete character before cursor
|
|
46
|
-
const newLines = [...state.lines];
|
|
47
|
-
const line = newLines[state.currentLine] ?? '';
|
|
48
|
-
newLines[state.currentLine] = line.slice(0, state.cursor - 1) + line.slice(state.cursor);
|
|
49
|
-
return {
|
|
50
|
-
lines: newLines,
|
|
51
|
-
currentLine: state.currentLine,
|
|
52
|
-
cursor: state.cursor - 1,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
else if (state.currentLine > 0) {
|
|
56
|
-
// Merge with previous line
|
|
57
|
-
const prevLineLen = state.lines[state.currentLine - 1]?.length ?? 0;
|
|
58
|
-
const newLines = [...state.lines];
|
|
59
|
-
newLines[state.currentLine - 1] = (newLines[state.currentLine - 1] ?? '') + (newLines[state.currentLine] ?? '');
|
|
60
|
-
newLines.splice(state.currentLine, 1);
|
|
61
|
-
return {
|
|
62
|
-
lines: newLines,
|
|
63
|
-
currentLine: state.currentLine - 1,
|
|
64
|
-
cursor: prevLineLen,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
return state;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Handles left arrow navigation
|
|
71
|
-
*/
|
|
72
|
-
export function handleLeftArrow(state) {
|
|
73
|
-
if (state.cursor > 0) {
|
|
74
|
-
return {
|
|
75
|
-
...state,
|
|
76
|
-
cursor: state.cursor - 1,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
else if (state.currentLine > 0) {
|
|
80
|
-
return {
|
|
81
|
-
...state,
|
|
82
|
-
currentLine: state.currentLine - 1,
|
|
83
|
-
cursor: state.lines[state.currentLine - 1]?.length ?? 0,
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
return state;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Handles right arrow navigation
|
|
90
|
-
*/
|
|
91
|
-
export function handleRightArrow(state) {
|
|
92
|
-
const lineLen = state.lines[state.currentLine]?.length ?? 0;
|
|
93
|
-
if (state.cursor < lineLen) {
|
|
94
|
-
return {
|
|
95
|
-
...state,
|
|
96
|
-
cursor: state.cursor + 1,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
else if (state.currentLine < state.lines.length - 1) {
|
|
100
|
-
return {
|
|
101
|
-
...state,
|
|
102
|
-
currentLine: state.currentLine + 1,
|
|
103
|
-
cursor: 0,
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
return state;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Handles up arrow navigation
|
|
110
|
-
*/
|
|
111
|
-
export function handleUpArrow(state) {
|
|
112
|
-
if (state.currentLine > 0) {
|
|
113
|
-
return {
|
|
114
|
-
...state,
|
|
115
|
-
currentLine: state.currentLine - 1,
|
|
116
|
-
cursor: Math.min(state.cursor, state.lines[state.currentLine - 1]?.length ?? 0),
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
return state;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Handles down arrow navigation
|
|
123
|
-
*/
|
|
124
|
-
export function handleDownArrow(state) {
|
|
125
|
-
if (state.currentLine < state.lines.length - 1) {
|
|
126
|
-
return {
|
|
127
|
-
...state,
|
|
128
|
-
currentLine: state.currentLine + 1,
|
|
129
|
-
cursor: Math.min(state.cursor, state.lines[state.currentLine + 1]?.length ?? 0),
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
return state;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Get full input as a single string
|
|
136
|
-
*/
|
|
137
|
-
export function getFullInput(state) {
|
|
138
|
-
return state.lines.join('\n').trim();
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Create initial state
|
|
142
|
-
*/
|
|
143
|
-
export function createInitialState() {
|
|
144
|
-
return {
|
|
145
|
-
lines: [''],
|
|
146
|
-
currentLine: 0,
|
|
147
|
-
cursor: 0,
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
//# sourceMappingURL=multilineInputLogic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multilineInputLogic.js","sourceRoot":"","sources":["../../../../src/interactive/ink/hooks/multilineInputLogic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Command handling hook
|
|
3
|
-
*/
|
|
4
|
-
export interface CommandResult {
|
|
5
|
-
handled: boolean;
|
|
6
|
-
shouldExit?: boolean;
|
|
7
|
-
/** Tasks to execute via workflow (all pending tasks) */
|
|
8
|
-
executeTasks?: {
|
|
9
|
-
name: string;
|
|
10
|
-
content: string;
|
|
11
|
-
}[];
|
|
12
|
-
}
|
|
13
|
-
export interface CommandsResult {
|
|
14
|
-
handleCommand: (input: string) => CommandResult;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Hook for handling slash commands
|
|
18
|
-
*/
|
|
19
|
-
export declare function useCommands(): CommandsResult;
|
|
20
|
-
//# sourceMappingURL=useCommands.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCommands.d.ts","sourceRoot":"","sources":["../../../../src/interactive/ink/hooks/useCommands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wDAAwD;IACxD,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACpD;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,aAAa,CAAC;CACjD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,cAAc,CAwI5C"}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Command handling hook
|
|
3
|
-
*/
|
|
4
|
-
import { useCallback } from 'react';
|
|
5
|
-
import { useApp } from '../context/AppContext.js';
|
|
6
|
-
import { setWorkflowByName } from '../utils/workflow.js';
|
|
7
|
-
import { listCustomAgents } from '../../../config/loader.js';
|
|
8
|
-
import { TaskRunner } from '../../../task/runner.js';
|
|
9
|
-
/**
|
|
10
|
-
* Hook for handling slash commands
|
|
11
|
-
*/
|
|
12
|
-
export function useCommands() {
|
|
13
|
-
const { state, dispatch } = useApp();
|
|
14
|
-
const handleCommand = useCallback((input) => {
|
|
15
|
-
if (!input.startsWith('/')) {
|
|
16
|
-
return { handled: false };
|
|
17
|
-
}
|
|
18
|
-
const parts = input.slice(1).split(' ');
|
|
19
|
-
const command = parts[0]?.toLowerCase();
|
|
20
|
-
const args = parts.slice(1);
|
|
21
|
-
switch (command) {
|
|
22
|
-
case 'quit':
|
|
23
|
-
case 'exit':
|
|
24
|
-
case 'q':
|
|
25
|
-
return { handled: true, shouldExit: true };
|
|
26
|
-
case 'help':
|
|
27
|
-
case 'h':
|
|
28
|
-
dispatch({ type: 'SHOW_MODAL', payload: { type: 'help' } });
|
|
29
|
-
return { handled: true };
|
|
30
|
-
case 'sacrifice':
|
|
31
|
-
case 'yolo':
|
|
32
|
-
dispatch({ type: 'TOGGLE_SACRIFICE_MODE' });
|
|
33
|
-
return { handled: true };
|
|
34
|
-
case 'safe':
|
|
35
|
-
if (state.sacrificeMode) {
|
|
36
|
-
dispatch({ type: 'TOGGLE_SACRIFICE_MODE' });
|
|
37
|
-
}
|
|
38
|
-
return { handled: true };
|
|
39
|
-
case 'clear':
|
|
40
|
-
dispatch({ type: 'RESET_CONVERSATION' });
|
|
41
|
-
return { handled: true };
|
|
42
|
-
case 'cls':
|
|
43
|
-
dispatch({ type: 'CLEAR_STREAM' });
|
|
44
|
-
return { handled: true };
|
|
45
|
-
case 'switch':
|
|
46
|
-
case 'sw':
|
|
47
|
-
dispatch({ type: 'SHOW_MODAL', payload: { type: 'workflowSelector' } });
|
|
48
|
-
return { handled: true };
|
|
49
|
-
case 'workflow':
|
|
50
|
-
if (args.length > 0) {
|
|
51
|
-
const newWorkflow = args.join(' ');
|
|
52
|
-
if (!setWorkflowByName(newWorkflow, state.cwd, dispatch)) {
|
|
53
|
-
dispatch({ type: 'SET_ERROR', payload: `Workflow not found: ${newWorkflow}` });
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return { handled: true };
|
|
57
|
-
case 'workflows':
|
|
58
|
-
dispatch({ type: 'SHOW_MODAL', payload: { type: 'workflowSelector' } });
|
|
59
|
-
return { handled: true };
|
|
60
|
-
case 'agents': {
|
|
61
|
-
const agents = listCustomAgents();
|
|
62
|
-
const agentList = agents.length > 0
|
|
63
|
-
? agents.join(', ')
|
|
64
|
-
: 'No custom agents defined';
|
|
65
|
-
dispatch({ type: 'SET_INFO', payload: `Available agents: ${agentList}. Built-in: coder, architect, supervisor` });
|
|
66
|
-
return { handled: true };
|
|
67
|
-
}
|
|
68
|
-
case 'task':
|
|
69
|
-
case 'tasks': {
|
|
70
|
-
const taskRunner = new TaskRunner(state.cwd);
|
|
71
|
-
const subCommand = args[0]?.toLowerCase();
|
|
72
|
-
if (subCommand === 'run') {
|
|
73
|
-
// /task run [name] - 全タスクをワークフローで実行(nameを指定した場合はそこから開始)
|
|
74
|
-
const taskName = args[1];
|
|
75
|
-
const allTasks = taskRunner.listTasks();
|
|
76
|
-
if (allTasks.length === 0) {
|
|
77
|
-
dispatch({
|
|
78
|
-
type: 'SET_ERROR',
|
|
79
|
-
payload: 'No tasks available. Add .md files to .wolf/tasks/',
|
|
80
|
-
});
|
|
81
|
-
return { handled: true };
|
|
82
|
-
}
|
|
83
|
-
// nameが指定された場合、そのタスクから開始
|
|
84
|
-
let startIndex = 0;
|
|
85
|
-
if (taskName) {
|
|
86
|
-
startIndex = allTasks.findIndex(t => t.name === taskName);
|
|
87
|
-
if (startIndex === -1) {
|
|
88
|
-
dispatch({
|
|
89
|
-
type: 'SET_ERROR',
|
|
90
|
-
payload: `Task not found: ${taskName}`,
|
|
91
|
-
});
|
|
92
|
-
return { handled: true };
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
// Return all tasks from startIndex for execution by App.tsx
|
|
96
|
-
const tasksToExecute = allTasks.slice(startIndex).map(t => ({
|
|
97
|
-
name: t.name,
|
|
98
|
-
content: t.content,
|
|
99
|
-
}));
|
|
100
|
-
return {
|
|
101
|
-
handled: true,
|
|
102
|
-
executeTasks: tasksToExecute,
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
// /task list or /tasks - タスク一覧表示
|
|
106
|
-
const tasks = taskRunner.listTasks();
|
|
107
|
-
if (tasks.length === 0) {
|
|
108
|
-
dispatch({
|
|
109
|
-
type: 'SET_INFO',
|
|
110
|
-
payload: `No tasks found. Add .md files to ${taskRunner.getTasksDir()}`,
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
const taskList = tasks.map((t, i) => `${i + 1}. ${t.name}`).join('\n');
|
|
115
|
-
dispatch({
|
|
116
|
-
type: 'SET_INFO',
|
|
117
|
-
payload: `Tasks (${tasks.length}):\n${taskList}\n\nUse /task run [name] to execute`,
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
return { handled: true };
|
|
121
|
-
}
|
|
122
|
-
default:
|
|
123
|
-
dispatch({ type: 'SET_ERROR', payload: `Unknown command: ${command}` });
|
|
124
|
-
return { handled: true };
|
|
125
|
-
}
|
|
126
|
-
}, [state.sacrificeMode, state.cwd, dispatch]);
|
|
127
|
-
return { handleCommand };
|
|
128
|
-
}
|
|
129
|
-
//# sourceMappingURL=useCommands.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCommands.js","sourceRoot":"","sources":["../../../../src/interactive/ink/hooks/useCommands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Input history management hook
|
|
3
|
-
*/
|
|
4
|
-
interface UseHistoryOptions {
|
|
5
|
-
/** Project directory for history persistence */
|
|
6
|
-
projectDir: string;
|
|
7
|
-
}
|
|
8
|
-
interface UseHistoryResult {
|
|
9
|
-
/** Navigate to previous history entry */
|
|
10
|
-
navigatePrevious: (currentInput: string) => string | undefined;
|
|
11
|
-
/** Navigate to next history entry */
|
|
12
|
-
navigateNext: () => {
|
|
13
|
-
entry: string;
|
|
14
|
-
isCurrentInput: boolean;
|
|
15
|
-
} | undefined;
|
|
16
|
-
/** Add entry to history */
|
|
17
|
-
addEntry: (entry: string) => void;
|
|
18
|
-
/** Reset navigation index */
|
|
19
|
-
resetIndex: () => void;
|
|
20
|
-
/** Current history length */
|
|
21
|
-
length: number;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Hook for managing input history with keyboard navigation
|
|
25
|
-
*/
|
|
26
|
-
export declare function useHistory({ projectDir }: UseHistoryOptions): UseHistoryResult;
|
|
27
|
-
export {};
|
|
28
|
-
//# sourceMappingURL=useHistory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useHistory.d.ts","sourceRoot":"","sources":["../../../../src/interactive/ink/hooks/useHistory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,UAAU,iBAAiB;IACzB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,gBAAgB;IACxB,yCAAyC;IACzC,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC/D,qCAAqC;IACrC,YAAY,EAAE,MAAM;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;IAC3E,2BAA2B;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,6BAA6B;IAC7B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE,iBAAiB,GAAG,gBAAgB,CA2D9E"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Input history management hook
|
|
3
|
-
*/
|
|
4
|
-
import { useState, useCallback, useRef } from 'react';
|
|
5
|
-
import { loadInputHistory, addToInputHistory, } from '../../../config/paths.js';
|
|
6
|
-
/**
|
|
7
|
-
* Hook for managing input history with keyboard navigation
|
|
8
|
-
*/
|
|
9
|
-
export function useHistory({ projectDir }) {
|
|
10
|
-
// Load initial history
|
|
11
|
-
const [history] = useState(() => loadInputHistory(projectDir));
|
|
12
|
-
const indexRef = useRef(history.length);
|
|
13
|
-
const savedCurrentInputRef = useRef('');
|
|
14
|
-
const navigatePrevious = useCallback((currentInput) => {
|
|
15
|
-
if (indexRef.current <= 0) {
|
|
16
|
-
return undefined;
|
|
17
|
-
}
|
|
18
|
-
// Save current input if at the end
|
|
19
|
-
if (indexRef.current === history.length) {
|
|
20
|
-
savedCurrentInputRef.current = currentInput;
|
|
21
|
-
}
|
|
22
|
-
indexRef.current--;
|
|
23
|
-
return history[indexRef.current];
|
|
24
|
-
}, [history]);
|
|
25
|
-
const navigateNext = useCallback(() => {
|
|
26
|
-
if (indexRef.current >= history.length) {
|
|
27
|
-
return undefined;
|
|
28
|
-
}
|
|
29
|
-
indexRef.current++;
|
|
30
|
-
if (indexRef.current === history.length) {
|
|
31
|
-
return { entry: savedCurrentInputRef.current, isCurrentInput: true };
|
|
32
|
-
}
|
|
33
|
-
const entry = history[indexRef.current];
|
|
34
|
-
return entry ? { entry, isCurrentInput: false } : undefined;
|
|
35
|
-
}, [history]);
|
|
36
|
-
const addEntry = useCallback((entry) => {
|
|
37
|
-
if (entry.trim()) {
|
|
38
|
-
// Add to in-memory history
|
|
39
|
-
history.push(entry);
|
|
40
|
-
// Persist to file
|
|
41
|
-
addToInputHistory(projectDir, entry);
|
|
42
|
-
// Reset index to end
|
|
43
|
-
indexRef.current = history.length;
|
|
44
|
-
savedCurrentInputRef.current = '';
|
|
45
|
-
}
|
|
46
|
-
}, [history, projectDir]);
|
|
47
|
-
const resetIndex = useCallback(() => {
|
|
48
|
-
indexRef.current = history.length;
|
|
49
|
-
savedCurrentInputRef.current = '';
|
|
50
|
-
}, [history.length]);
|
|
51
|
-
return {
|
|
52
|
-
navigatePrevious,
|
|
53
|
-
navigateNext,
|
|
54
|
-
addEntry,
|
|
55
|
-
resetIndex,
|
|
56
|
-
length: history.length,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=useHistory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useHistory.js","sourceRoot":"","sources":["../../../../src/interactive/ink/hooks/useHistory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAoBlC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,UAAU,EAAqB;IAC1D,uBAAuB;IACvB,MAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAW,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,MAAM,CAAS,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,oBAAoB,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;IAEhD,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,YAAoB,EAAsB,EAAE;QAChF,IAAI,QAAQ,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,mCAAmC;QACnC,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YACxC,oBAAoB,CAAC,OAAO,GAAG,YAAY,CAAC;QAC9C,CAAC;QAED,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,YAAY,GAAG,WAAW,CAAC,GAA2D,EAAE;QAC5F,IAAI,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,QAAQ,CAAC,OAAO,EAAE,CAAC;QAEnB,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YACxC,OAAO,EAAE,KAAK,EAAE,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;QACvE,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,KAAa,EAAQ,EAAE;QACnD,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,2BAA2B;YAC3B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,kBAAkB;YAClB,iBAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACrC,qBAAqB;YACrB,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;YAClC,oBAAoB,CAAC,OAAO,GAAG,EAAE,CAAC;QACpC,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAE1B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAS,EAAE;QACxC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAClC,oBAAoB,CAAC,OAAO,GAAG,EAAE,CAAC;IACpC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAErB,OAAO;QACL,gBAAgB;QAChB,YAAY;QACZ,QAAQ;QACR,UAAU;QACV,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;AACJ,CAAC"}
|