@compilr-dev/cli 0.4.0 → 0.5.0
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 +30 -12
- package/dist/agent.d.ts +74 -1
- package/dist/agent.js +259 -76
- package/dist/anchors/index.d.ts +9 -0
- package/dist/anchors/index.js +9 -0
- package/dist/anchors/project-anchors.d.ts +79 -0
- package/dist/anchors/project-anchors.js +202 -0
- package/dist/commands/handler-types.d.ts +68 -0
- package/dist/commands/handler-types.js +8 -0
- package/dist/commands/handlers/agent-commands.d.ts +13 -0
- package/dist/commands/handlers/agent-commands.js +305 -0
- package/dist/commands/handlers/design-commands.d.ts +15 -0
- package/dist/commands/handlers/design-commands.js +334 -0
- package/dist/commands/handlers/index.d.ts +20 -0
- package/dist/commands/handlers/index.js +43 -0
- package/dist/commands/handlers/overlay-commands.d.ts +21 -0
- package/dist/commands/handlers/overlay-commands.js +287 -0
- package/dist/commands/handlers/project-commands.d.ts +11 -0
- package/dist/commands/handlers/project-commands.js +167 -0
- package/dist/commands/handlers/simple-commands.d.ts +19 -0
- package/dist/commands/handlers/simple-commands.js +144 -0
- package/dist/commands/index.d.ts +2 -1
- package/dist/commands/registry.d.ts +50 -0
- package/dist/commands/registry.js +75 -0
- package/dist/commands-v2/handlers/context.d.ts +13 -0
- package/dist/commands-v2/handlers/context.js +348 -0
- package/dist/commands-v2/handlers/core.d.ts +13 -0
- package/dist/commands-v2/handlers/core.js +165 -0
- package/dist/commands-v2/handlers/debug.d.ts +11 -0
- package/dist/commands-v2/handlers/debug.js +159 -0
- package/dist/commands-v2/handlers/index.d.ts +12 -0
- package/dist/commands-v2/handlers/index.js +24 -0
- package/dist/commands-v2/handlers/project.d.ts +22 -0
- package/dist/commands-v2/handlers/project.js +814 -0
- package/dist/commands-v2/handlers/settings.d.ts +15 -0
- package/dist/commands-v2/handlers/settings.js +235 -0
- package/dist/commands-v2/index.d.ts +13 -0
- package/dist/commands-v2/index.js +15 -0
- package/dist/commands-v2/registry.d.ts +37 -0
- package/dist/commands-v2/registry.js +80 -0
- package/dist/commands-v2/types.d.ts +75 -0
- package/dist/commands-v2/types.js +7 -0
- package/dist/commands.js +110 -7
- package/dist/index.js +288 -29
- package/dist/input-handlers/index.d.ts +7 -0
- package/dist/input-handlers/index.js +7 -0
- package/dist/input-handlers/memory-handler.d.ts +26 -0
- package/dist/input-handlers/memory-handler.js +68 -0
- package/dist/repl-helpers.d.ts +63 -0
- package/dist/repl-helpers.js +318 -0
- package/dist/repl-v2.d.ts +155 -0
- package/dist/repl-v2.js +774 -0
- package/dist/repl.d.ts +32 -4
- package/dist/repl.js +250 -977
- package/dist/settings/index.d.ts +23 -0
- package/dist/settings/index.js +48 -0
- package/dist/settings/paths.d.ts +110 -0
- package/dist/settings/paths.js +264 -0
- package/dist/templates/compilr-md.js +7 -4
- package/dist/templates/index.js +3 -4
- package/dist/themes/colors.js +3 -1
- package/dist/themes/registry.d.ts +5 -36
- package/dist/themes/registry.js +11 -95
- package/dist/themes/types.d.ts +3 -38
- package/dist/themes/types.js +2 -2
- package/dist/tools/anchor-tools.d.ts +31 -0
- package/dist/tools/anchor-tools.js +255 -0
- package/dist/tools/backlog-wrappers.d.ts +54 -0
- package/dist/tools/backlog-wrappers.js +338 -0
- package/dist/tools/backlog.js +1 -1
- package/dist/tools/db-tools.d.ts +65 -0
- package/dist/tools/db-tools.js +19 -0
- package/dist/tools/document-db.d.ts +43 -0
- package/dist/tools/document-db.js +220 -0
- package/dist/tools/project-db.d.ts +102 -0
- package/dist/tools/project-db.js +370 -0
- package/dist/tools/workitem-db.d.ts +103 -0
- package/dist/tools/workitem-db.js +549 -0
- package/dist/tools.js +13 -3
- package/dist/ui/agents-overlay-v2.d.ts +43 -0
- package/dist/ui/agents-overlay-v2.js +809 -0
- package/dist/ui/agents-overlay.d.ts +5 -5
- package/dist/ui/agents-overlay.js +782 -420
- package/dist/ui/anchors-overlay.d.ts +12 -0
- package/dist/ui/anchors-overlay.js +775 -0
- package/dist/ui/arch-type-overlay.d.ts +1 -6
- package/dist/ui/arch-type-overlay.js +175 -203
- package/dist/ui/ask-user-overlay-v2.d.ts +26 -0
- package/dist/ui/ask-user-overlay-v2.js +555 -0
- package/dist/ui/ask-user-overlay.d.ts +2 -2
- package/dist/ui/ask-user-overlay.js +443 -535
- package/dist/ui/ask-user-simple-overlay-v2.d.ts +25 -0
- package/dist/ui/ask-user-simple-overlay-v2.js +215 -0
- package/dist/ui/ask-user-simple-overlay.d.ts +2 -2
- package/dist/ui/ask-user-simple-overlay.js +182 -209
- package/dist/ui/backlog-overlay.d.ts +16 -1
- package/dist/ui/backlog-overlay.js +525 -659
- package/dist/ui/base/index.d.ts +26 -0
- package/dist/ui/base/index.js +33 -0
- package/dist/ui/base/inline-overlay-utils.d.ts +217 -0
- package/dist/ui/base/inline-overlay-utils.js +320 -0
- package/dist/ui/base/inline-overlay.d.ts +159 -0
- package/dist/ui/base/inline-overlay.js +257 -0
- package/dist/ui/base/key-utils.d.ts +15 -0
- package/dist/ui/base/key-utils.js +30 -0
- package/dist/ui/base/overlay-base-v2.d.ts +193 -0
- package/dist/ui/base/overlay-base-v2.js +246 -0
- package/dist/ui/base/overlay-base.d.ts +156 -0
- package/dist/ui/base/overlay-base.js +238 -0
- package/dist/ui/base/overlay-lifecycle.d.ts +65 -0
- package/dist/ui/base/overlay-lifecycle.js +159 -0
- package/dist/ui/base/overlay-types.d.ts +185 -0
- package/dist/ui/base/overlay-types.js +7 -0
- package/dist/ui/base/render-utils.d.ts +8 -0
- package/dist/ui/base/render-utils.js +11 -0
- package/dist/ui/base/screen-stack.d.ts +148 -0
- package/dist/ui/base/screen-stack.js +184 -0
- package/dist/ui/base/tabbed-list-overlay-v2.d.ts +103 -0
- package/dist/ui/base/tabbed-list-overlay-v2.js +317 -0
- package/dist/ui/base/tabbed-list-overlay.d.ts +153 -0
- package/dist/ui/base/tabbed-list-overlay.js +369 -0
- package/dist/ui/commands-overlay-v2.d.ts +33 -0
- package/dist/ui/commands-overlay-v2.js +441 -0
- package/dist/ui/commands-overlay.d.ts +7 -2
- package/dist/ui/commands-overlay.js +384 -355
- package/dist/ui/config-overlay.d.ts +5 -4
- package/dist/ui/config-overlay.js +243 -513
- package/dist/ui/conversation.d.ts +75 -4
- package/dist/ui/conversation.js +374 -161
- package/dist/ui/docs-overlay.d.ts +17 -0
- package/dist/ui/docs-overlay.js +303 -0
- package/dist/ui/ephemeral.d.ts +1 -1
- package/dist/ui/ephemeral.js +1 -1
- package/dist/ui/features/index.d.ts +34 -0
- package/dist/ui/features/index.js +34 -0
- package/dist/ui/features/input-feature.d.ts +85 -0
- package/dist/ui/features/input-feature.js +238 -0
- package/dist/ui/features/list-feature.d.ts +155 -0
- package/dist/ui/features/list-feature.js +244 -0
- package/dist/ui/features/pagination-feature.d.ts +154 -0
- package/dist/ui/features/pagination-feature.js +238 -0
- package/dist/ui/features/search-feature.d.ts +148 -0
- package/dist/ui/features/search-feature.js +185 -0
- package/dist/ui/features/tab-feature.d.ts +194 -0
- package/dist/ui/features/tab-feature.js +307 -0
- package/dist/ui/footer-v2.d.ts +222 -0
- package/dist/ui/footer-v2.js +1349 -0
- package/dist/ui/footer.d.ts +107 -0
- package/dist/ui/footer.js +359 -67
- package/dist/ui/guardrail-overlay.d.ts +29 -0
- package/dist/ui/guardrail-overlay.js +145 -0
- package/dist/ui/help-overlay-v2.d.ts +34 -0
- package/dist/ui/help-overlay-v2.js +309 -0
- package/dist/ui/help-overlay.d.ts +16 -0
- package/dist/ui/help-overlay.js +316 -0
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +1 -3
- package/dist/ui/init-overlay-v2.d.ts +34 -0
- package/dist/ui/init-overlay-v2.js +600 -0
- package/dist/ui/init-overlay.d.ts +12 -2
- package/dist/ui/init-overlay.js +349 -270
- package/dist/ui/input-prompt-v2.d.ts +1 -0
- package/dist/ui/input-prompt-v2.js +14 -6
- package/dist/ui/input-prompt.d.ts +116 -33
- package/dist/ui/input-prompt.js +536 -337
- package/dist/ui/iteration-limit-overlay-v2.d.ts +21 -0
- package/dist/ui/iteration-limit-overlay-v2.js +114 -0
- package/dist/ui/iteration-limit-overlay.d.ts +2 -2
- package/dist/ui/iteration-limit-overlay.js +92 -128
- package/dist/ui/keys-overlay-v2.d.ts +41 -0
- package/dist/ui/keys-overlay-v2.js +248 -0
- package/dist/ui/keys-overlay.d.ts +1 -0
- package/dist/ui/keys-overlay.js +203 -141
- package/dist/ui/line-utils.d.ts +88 -0
- package/dist/ui/line-utils.js +150 -0
- package/dist/ui/live-region.d.ts +161 -0
- package/dist/ui/live-region.js +387 -0
- package/dist/ui/mascot/expressions.d.ts +32 -0
- package/dist/ui/mascot/expressions.js +213 -0
- package/dist/ui/mascot/index.d.ts +8 -0
- package/dist/ui/mascot/index.js +8 -0
- package/dist/ui/mascot/renderer.d.ts +19 -0
- package/dist/ui/mascot/renderer.js +97 -0
- package/dist/ui/mascot-overlay-v2.d.ts +41 -0
- package/dist/ui/mascot-overlay-v2.js +138 -0
- package/dist/ui/mascot-overlay.d.ts +21 -0
- package/dist/ui/mascot-overlay.js +146 -0
- package/dist/ui/model-overlay-v2.d.ts +49 -0
- package/dist/ui/model-overlay-v2.js +118 -0
- package/dist/ui/model-overlay.d.ts +27 -0
- package/dist/ui/model-overlay.js +221 -0
- package/dist/ui/model-warning-overlay.js +3 -5
- package/dist/ui/new-overlay.d.ts +34 -0
- package/dist/ui/new-overlay.js +604 -0
- package/dist/ui/overlay/impl/agents-overlay-v2.d.ts +45 -0
- package/dist/ui/overlay/impl/agents-overlay-v2.js +825 -0
- package/dist/ui/overlay/impl/anchors-overlay-v2.d.ts +47 -0
- package/dist/ui/overlay/impl/anchors-overlay-v2.js +783 -0
- package/dist/ui/overlay/impl/arch-type-overlay-v2.d.ts +37 -0
- package/dist/ui/overlay/impl/arch-type-overlay-v2.js +240 -0
- package/dist/ui/overlay/impl/ask-user-overlay-v2.d.ts +72 -0
- package/dist/ui/overlay/impl/ask-user-overlay-v2.js +584 -0
- package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.d.ts +46 -0
- package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.js +204 -0
- package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +49 -0
- package/dist/ui/overlay/impl/backlog-overlay-v2.js +642 -0
- package/dist/ui/overlay/impl/commands-overlay-v2.d.ts +33 -0
- package/dist/ui/overlay/impl/commands-overlay-v2.js +441 -0
- package/dist/ui/overlay/impl/config-overlay-v2.d.ts +100 -0
- package/dist/ui/overlay/impl/config-overlay-v2.js +654 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +55 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.js +359 -0
- package/dist/ui/overlay/impl/docs-overlay-v2.d.ts +45 -0
- package/dist/ui/overlay/impl/docs-overlay-v2.js +114 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +77 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.js +1071 -0
- package/dist/ui/overlay/impl/guardrail-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/guardrail-overlay-v2.js +114 -0
- package/dist/ui/overlay/impl/help-overlay-v2.d.ts +34 -0
- package/dist/ui/overlay/impl/help-overlay-v2.js +309 -0
- package/dist/ui/overlay/impl/init-overlay-v2.d.ts +77 -0
- package/dist/ui/overlay/impl/init-overlay-v2.js +593 -0
- package/dist/ui/overlay/impl/init-setup-overlay-v2.d.ts +25 -0
- package/dist/ui/overlay/impl/init-setup-overlay-v2.js +97 -0
- package/dist/ui/overlay/impl/iteration-limit-overlay-v2.d.ts +35 -0
- package/dist/ui/overlay/impl/iteration-limit-overlay-v2.js +105 -0
- package/dist/ui/overlay/impl/keys-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/keys-overlay-v2.js +248 -0
- package/dist/ui/overlay/impl/mascot-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/mascot-overlay-v2.js +138 -0
- package/dist/ui/overlay/impl/model-overlay-v2.d.ts +49 -0
- package/dist/ui/overlay/impl/model-overlay-v2.js +118 -0
- package/dist/ui/overlay/impl/model-warning-overlay-v2.d.ts +46 -0
- package/dist/ui/overlay/impl/model-warning-overlay-v2.js +132 -0
- package/dist/ui/overlay/impl/new-overlay-v2.d.ts +77 -0
- package/dist/ui/overlay/impl/new-overlay-v2.js +593 -0
- package/dist/ui/overlay/impl/permission-overlay-v2.d.ts +36 -0
- package/dist/ui/overlay/impl/permission-overlay-v2.js +380 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +36 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.js +499 -0
- package/dist/ui/overlay/impl/theme-overlay-v2.d.ts +42 -0
- package/dist/ui/overlay/impl/theme-overlay-v2.js +135 -0
- package/dist/ui/overlay/impl/tools-overlay-v2.d.ts +47 -0
- package/dist/ui/overlay/impl/tools-overlay-v2.js +218 -0
- package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +31 -0
- package/dist/ui/overlay/impl/tutorial-overlay-v2.js +1035 -0
- package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +80 -0
- package/dist/ui/overlay/impl/workflow-overlay-v2.js +637 -0
- package/dist/ui/overlay/index.d.ts +33 -0
- package/dist/ui/overlay/index.js +35 -0
- package/dist/ui/overlay/key-utils.d.ts +6 -0
- package/dist/ui/overlay/key-utils.js +6 -0
- package/dist/ui/overlay/overlay-types.d.ts +128 -0
- package/dist/ui/overlay/overlay-types.js +22 -0
- package/dist/ui/overlay/types.d.ts +135 -0
- package/dist/ui/overlay/types.js +22 -0
- package/dist/ui/overlays/help-overlay-v2.d.ts +28 -0
- package/dist/ui/overlays/help-overlay-v2.js +198 -0
- package/dist/ui/overlays/index.d.ts +11 -0
- package/dist/ui/overlays/index.js +11 -0
- package/dist/ui/overlays.d.ts +0 -4
- package/dist/ui/overlays.js +0 -444
- package/dist/ui/permission-overlay-v2.d.ts +36 -0
- package/dist/ui/permission-overlay-v2.js +380 -0
- package/dist/ui/permission-overlay.d.ts +1 -1
- package/dist/ui/permission-overlay.js +186 -298
- package/dist/ui/projects-overlay.d.ts +19 -0
- package/dist/ui/projects-overlay.js +484 -0
- package/dist/ui/providers/types.d.ts +178 -0
- package/dist/ui/providers/types.js +9 -0
- package/dist/ui/render-modes.d.ts +36 -0
- package/dist/ui/render-modes.js +44 -0
- package/dist/ui/startup-menu.d.ts +36 -0
- package/dist/ui/startup-menu.js +236 -0
- package/dist/ui/subagent-renderer.d.ts +117 -0
- package/dist/ui/subagent-renderer.js +334 -0
- package/dist/ui/terminal-codes.d.ts +94 -0
- package/dist/ui/terminal-codes.js +124 -0
- package/dist/ui/terminal-renderer.d.ts +221 -0
- package/dist/ui/terminal-renderer.js +751 -0
- package/dist/ui/terminal-ui.d.ts +463 -0
- package/dist/ui/terminal-ui.js +2296 -0
- package/dist/ui/terminal.d.ts +20 -0
- package/dist/ui/terminal.js +72 -0
- package/dist/ui/theme-overlay-v2.d.ts +42 -0
- package/dist/ui/theme-overlay-v2.js +135 -0
- package/dist/ui/theme-overlay.d.ts +24 -0
- package/dist/ui/theme-overlay.js +127 -0
- package/dist/ui/todo-zone.js +53 -25
- package/dist/ui/tool-formatters.d.ts +16 -0
- package/dist/ui/tool-formatters.js +516 -0
- package/dist/ui/tools-overlay-v2.d.ts +47 -0
- package/dist/ui/tools-overlay-v2.js +218 -0
- package/dist/ui/tools-overlay.d.ts +10 -2
- package/dist/ui/tools-overlay.js +172 -220
- package/dist/ui/tutorial-overlay-v2.d.ts +31 -0
- package/dist/ui/tutorial-overlay-v2.js +1035 -0
- package/dist/ui/tutorial-overlay.d.ts +1 -0
- package/dist/ui/tutorial-overlay.js +400 -302
- package/dist/ui/workflow-overlay.d.ts +22 -0
- package/dist/ui/workflow-overlay.js +636 -0
- package/dist/utils/debug-log.d.ts +28 -0
- package/dist/utils/debug-log.js +57 -0
- package/dist/utils/model-tiers.js +1 -1
- package/dist/utils/path-safety.d.ts +56 -0
- package/dist/utils/path-safety.js +239 -0
- package/dist/workflow/guided-mode-injector.d.ts +42 -0
- package/dist/workflow/guided-mode-injector.js +191 -0
- package/dist/workflow/index.d.ts +8 -0
- package/dist/workflow/index.js +8 -0
- package/dist/workflow/step-criteria.d.ts +62 -0
- package/dist/workflow/step-criteria.js +150 -0
- package/dist/workflow/step-tracker.d.ts +92 -0
- package/dist/workflow/step-tracker.js +141 -0
- package/package.json +12 -5
|
@@ -18,6 +18,7 @@ import type { CommandOption } from './types.js';
|
|
|
18
18
|
export declare const DEFAULT_COMMANDS: CommandOption[];
|
|
19
19
|
/**
|
|
20
20
|
* Strip ANSI codes from string
|
|
21
|
+
* Uses unified line-utils for consistent behavior across components.
|
|
21
22
|
*/
|
|
22
23
|
export declare function stripAnsi(str: string): string;
|
|
23
24
|
export interface InputPromptEvents {
|
|
@@ -19,6 +19,8 @@ import { getStyles } from '../themes/index.js';
|
|
|
19
19
|
import * as terminal from './terminal.js';
|
|
20
20
|
import { getAutocompleteCommands } from '../commands.js';
|
|
21
21
|
import { getFileMatches, extractAtMention, replaceAtMention, } from './file-autocomplete.js';
|
|
22
|
+
import { debugRender } from '../utils/debug-log.js';
|
|
23
|
+
import { stripAnsi as unifiedStripAnsi, getPhysicalLineCountWithOffset, } from './line-utils.js';
|
|
22
24
|
// =============================================================================
|
|
23
25
|
// Constants
|
|
24
26
|
// =============================================================================
|
|
@@ -32,19 +34,17 @@ export const DEFAULT_COMMANDS = getAutocompleteCommands();
|
|
|
32
34
|
// =============================================================================
|
|
33
35
|
/**
|
|
34
36
|
* Strip ANSI codes from string
|
|
37
|
+
* Uses unified line-utils for consistent behavior across components.
|
|
35
38
|
*/
|
|
36
39
|
export function stripAnsi(str) {
|
|
37
|
-
|
|
38
|
-
return str.replace(/\x1B\[[0-9;]*[a-zA-Z]/g, '');
|
|
40
|
+
return unifiedStripAnsi(str);
|
|
39
41
|
}
|
|
40
42
|
/**
|
|
41
43
|
* Calculate physical lines for wrapped text
|
|
44
|
+
* Uses unified line-utils for consistent behavior across components.
|
|
42
45
|
*/
|
|
43
46
|
function calcPhysicalLines(text, startCol, termWidth) {
|
|
44
|
-
|
|
45
|
-
return 1;
|
|
46
|
-
const totalLen = startCol + text.length;
|
|
47
|
-
return Math.ceil(totalLen / termWidth) || 1;
|
|
47
|
+
return getPhysicalLineCountWithOffset(text, startCol, termWidth);
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
50
|
* Calculate fuzzy match score for a query against a target string.
|
|
@@ -344,6 +344,8 @@ export class InputPrompt extends EventEmitter {
|
|
|
344
344
|
}
|
|
345
345
|
row += Math.floor(cursorAbsPos / termWidth);
|
|
346
346
|
const col = cursorAbsPos % termWidth;
|
|
347
|
+
debugRender('InputPrompt:getCursorInfo', `termWidth=${termWidth} cursorPos=${this.state.cursorPos} currentLine=${this.state.currentLine} promptLen=${this.promptLen}`);
|
|
348
|
+
debugRender('InputPrompt:getCursorInfo', `cursorAbsPos=${cursorAbsPos} row=${row} col=${col}`);
|
|
347
349
|
return { row, col };
|
|
348
350
|
}
|
|
349
351
|
/**
|
|
@@ -550,6 +552,7 @@ export class InputPrompt extends EventEmitter {
|
|
|
550
552
|
const isTab = key === '\t';
|
|
551
553
|
const isShiftTab = data.length === 3 && data[0] === 0x1b && data[1] === 0x5b && data[2] === 0x5a;
|
|
552
554
|
const isCtrlC = key === '\x03';
|
|
555
|
+
const isCtrlO = key === '\x0f'; // Ctrl+O for toggle subagent expand
|
|
553
556
|
const isUpArrow = data.length === 3 && data[0] === 0x1b && data[1] === 0x5b && data[2] === 0x41;
|
|
554
557
|
const isDownArrow = data.length === 3 && data[0] === 0x1b && data[1] === 0x5b && data[2] === 0x42;
|
|
555
558
|
const isLeftArrow = data.length === 3 && data[0] === 0x1b && data[1] === 0x5b && data[2] === 0x44;
|
|
@@ -579,6 +582,11 @@ export class InputPrompt extends EventEmitter {
|
|
|
579
582
|
this.emit('cancel');
|
|
580
583
|
return;
|
|
581
584
|
}
|
|
585
|
+
// Ctrl+O - toggle subagent expand (only when agent is running)
|
|
586
|
+
if (isCtrlO) {
|
|
587
|
+
this.emit('toggleSubagentExpand');
|
|
588
|
+
return;
|
|
589
|
+
}
|
|
582
590
|
// Escape - close autocomplete, double Esc clears input, or emit escape for agent abort
|
|
583
591
|
if (isEscape) {
|
|
584
592
|
const now = Date.now();
|
|
@@ -1,56 +1,118 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Input Prompt
|
|
2
|
+
* Input Prompt v2 (Event-Driven)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Refactored input handling with event-driven architecture.
|
|
5
|
+
* - Emits events instead of blocking with getInput()
|
|
6
|
+
* - Supports queue mode for capturing input during agent execution
|
|
7
|
+
* - Always captures keystrokes (no blocking)
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
9
|
+
* Events:
|
|
10
|
+
* - 'submit' - User pressed Enter with input
|
|
11
|
+
* - 'command' - User submitted a slash command
|
|
12
|
+
* - 'cancel' - User pressed Ctrl+C
|
|
13
|
+
* - 'escape' - User pressed Esc (for aborting agent)
|
|
14
|
+
* - 'change' - Input text changed
|
|
10
15
|
*/
|
|
11
|
-
import
|
|
16
|
+
import { EventEmitter } from 'events';
|
|
17
|
+
import type { CommandOption } from './types.js';
|
|
12
18
|
export declare const DEFAULT_COMMANDS: CommandOption[];
|
|
13
19
|
/**
|
|
14
20
|
* Strip ANSI codes from string
|
|
21
|
+
* Uses unified line-utils for consistent behavior across components.
|
|
15
22
|
*/
|
|
16
23
|
export declare function stripAnsi(str: string): string;
|
|
24
|
+
export interface InputPromptEvents {
|
|
25
|
+
submit: (input: string) => void;
|
|
26
|
+
command: (command: string, args: string) => void;
|
|
27
|
+
cancel: () => void;
|
|
28
|
+
escape: () => void;
|
|
29
|
+
change: (input: string) => void;
|
|
30
|
+
modeChange: () => void;
|
|
31
|
+
}
|
|
17
32
|
export interface InputPromptOptions {
|
|
18
33
|
prompt?: string;
|
|
19
34
|
showSeparators?: boolean;
|
|
20
35
|
commands?: CommandOption[];
|
|
21
|
-
getTodos?: () => TodoItem[];
|
|
22
36
|
}
|
|
23
|
-
export declare class InputPrompt {
|
|
24
|
-
private
|
|
25
|
-
private
|
|
37
|
+
export declare class InputPrompt extends EventEmitter {
|
|
38
|
+
private prompt;
|
|
39
|
+
private promptLen;
|
|
26
40
|
private readonly showSeparators;
|
|
27
41
|
private readonly commands;
|
|
28
|
-
private readonly getTodos?;
|
|
29
42
|
private state;
|
|
30
43
|
private autocomplete;
|
|
44
|
+
private fileAutocomplete;
|
|
31
45
|
private readonly history;
|
|
32
46
|
private historyIndex;
|
|
33
47
|
private savedInput;
|
|
48
|
+
private queueMode;
|
|
49
|
+
private queuedInputs;
|
|
34
50
|
private renderedLines;
|
|
35
51
|
private dropdownLines;
|
|
36
52
|
private linesAboveCursor;
|
|
37
53
|
private hasSeparators;
|
|
38
54
|
private isRunning;
|
|
39
|
-
private
|
|
55
|
+
private lastEscTime;
|
|
56
|
+
private readonly DOUBLE_ESC_THRESHOLD_MS;
|
|
57
|
+
private suggestion;
|
|
40
58
|
constructor(options?: InputPromptOptions);
|
|
41
59
|
/**
|
|
42
|
-
*
|
|
43
|
-
|
|
60
|
+
* Update the prompt string (for dynamic theme changes)
|
|
61
|
+
*/
|
|
62
|
+
setPrompt(prompt: string): void;
|
|
63
|
+
/**
|
|
64
|
+
* Set a suggestion for the next action (ghost text)
|
|
65
|
+
*/
|
|
66
|
+
setSuggestion(action: string | null): void;
|
|
67
|
+
/**
|
|
68
|
+
* Get the current suggestion
|
|
44
69
|
*/
|
|
45
|
-
|
|
70
|
+
getSuggestion(): string | null;
|
|
46
71
|
/**
|
|
47
|
-
*
|
|
72
|
+
* Clear the current suggestion
|
|
73
|
+
*/
|
|
74
|
+
clearSuggestion(): void;
|
|
75
|
+
/**
|
|
76
|
+
* Start input capture (non-blocking, event-driven)
|
|
48
77
|
*/
|
|
49
78
|
start(): void;
|
|
50
79
|
/**
|
|
51
|
-
* Stop input
|
|
80
|
+
* Stop input capture
|
|
52
81
|
*/
|
|
53
82
|
stop(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Check if running
|
|
85
|
+
*/
|
|
86
|
+
isActive(): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Enable/disable queue mode
|
|
89
|
+
* In queue mode, Enter adds to queue instead of emitting 'submit'
|
|
90
|
+
*/
|
|
91
|
+
setQueueMode(enabled: boolean): void;
|
|
92
|
+
/**
|
|
93
|
+
* Check if in queue mode
|
|
94
|
+
*/
|
|
95
|
+
isQueueMode(): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Get all queued inputs (FIFO order)
|
|
98
|
+
*/
|
|
99
|
+
getQueuedInputs(): string[];
|
|
100
|
+
/**
|
|
101
|
+
* Pop the first queued input
|
|
102
|
+
*/
|
|
103
|
+
popQueuedInput(): string | null;
|
|
104
|
+
/**
|
|
105
|
+
* Check if there are queued inputs
|
|
106
|
+
*/
|
|
107
|
+
hasQueuedInput(): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Get number of queued inputs
|
|
110
|
+
*/
|
|
111
|
+
getQueueLength(): number;
|
|
112
|
+
/**
|
|
113
|
+
* Clear the queue
|
|
114
|
+
*/
|
|
115
|
+
clearQueue(): void;
|
|
54
116
|
/**
|
|
55
117
|
* Get current buffer value
|
|
56
118
|
*/
|
|
@@ -60,28 +122,50 @@ export declare class InputPrompt {
|
|
|
60
122
|
*/
|
|
61
123
|
setValue(value: string): void;
|
|
62
124
|
/**
|
|
63
|
-
* Clear
|
|
64
|
-
*/
|
|
65
|
-
clear(): void;
|
|
66
|
-
/**
|
|
67
|
-
* Get number of rendered lines
|
|
125
|
+
* Clear input buffer
|
|
68
126
|
*/
|
|
69
|
-
|
|
127
|
+
clearInput(): void;
|
|
70
128
|
/**
|
|
71
129
|
* Add command to history
|
|
72
130
|
*/
|
|
73
131
|
addToHistory(input: string): void;
|
|
74
|
-
private resetState;
|
|
75
|
-
private updateAutocomplete;
|
|
76
132
|
/**
|
|
77
|
-
*
|
|
133
|
+
* Render the input prompt - returns array of lines
|
|
134
|
+
* Does NOT write to terminal (Footer handles that)
|
|
78
135
|
*/
|
|
79
|
-
|
|
136
|
+
render(): string[];
|
|
137
|
+
/**
|
|
138
|
+
* Get the cursor position info for rendering
|
|
139
|
+
*/
|
|
140
|
+
getCursorInfo(): {
|
|
141
|
+
row: number;
|
|
142
|
+
col: number;
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* Get autocomplete dropdown lines (if active)
|
|
146
|
+
*/
|
|
147
|
+
getAutocompleteLines(): string[];
|
|
148
|
+
/**
|
|
149
|
+
* Check if autocomplete is showing
|
|
150
|
+
*/
|
|
151
|
+
isAutocompleteActive(): boolean;
|
|
152
|
+
/**
|
|
153
|
+
* Get height of rendered content
|
|
154
|
+
*/
|
|
155
|
+
getHeight(): number;
|
|
156
|
+
/**
|
|
157
|
+
* @deprecated Use event-driven start() instead
|
|
158
|
+
* Kept for backwards compatibility during migration
|
|
159
|
+
*/
|
|
160
|
+
getInput(): Promise<{
|
|
161
|
+
action: string;
|
|
162
|
+
value?: string;
|
|
163
|
+
command?: string;
|
|
164
|
+
args?: string;
|
|
165
|
+
}>;
|
|
166
|
+
private resetState;
|
|
167
|
+
private updateAutocomplete;
|
|
80
168
|
private getSeparatorLine;
|
|
81
|
-
private renderTodos;
|
|
82
|
-
private render;
|
|
83
|
-
private renderDropdown;
|
|
84
|
-
private clearDropdown;
|
|
85
169
|
private readonly handleData;
|
|
86
170
|
private handleKey;
|
|
87
171
|
private handleEnter;
|
|
@@ -93,5 +177,4 @@ export declare class InputPrompt {
|
|
|
93
177
|
private handleWordLeft;
|
|
94
178
|
private handleWordRight;
|
|
95
179
|
private handleBackspace;
|
|
96
|
-
private finishInput;
|
|
97
180
|
}
|