@nexus-cortex/tui 4.47.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/LICENSE +202 -0
- package/NOTICE +2 -0
- package/README.md +13 -0
- package/bin/cli-full.js +23 -0
- package/bin/cortex-ui.js +26 -0
- package/bin/ink-ui.js +108 -0
- package/bin/launcher-dev.js +266 -0
- package/bin/launcher.js +516 -0
- package/dist/commands/agent/InteractiveAgentMenu.d.ts +100 -0
- package/dist/commands/agent/InteractiveAgentMenu.d.ts.map +1 -0
- package/dist/commands/agent/InteractiveAgentMenu.js +909 -0
- package/dist/commands/agent/InteractiveAgentMenu.js.map +1 -0
- package/dist/commands/agent/index.d.ts +55 -0
- package/dist/commands/agent/index.d.ts.map +1 -0
- package/dist/commands/agent/index.js +714 -0
- package/dist/commands/agent/index.js.map +1 -0
- package/dist/commands/chat/interactive.d.ts +13 -0
- package/dist/commands/chat/interactive.d.ts.map +1 -0
- package/dist/commands/chat/interactive.js +2055 -0
- package/dist/commands/chat/interactive.js.map +1 -0
- package/dist/commands/system-message/EditorLauncher.d.ts +65 -0
- package/dist/commands/system-message/EditorLauncher.d.ts.map +1 -0
- package/dist/commands/system-message/EditorLauncher.js +143 -0
- package/dist/commands/system-message/EditorLauncher.js.map +1 -0
- package/dist/commands/system-message/InlineEditor.d.ts +23 -0
- package/dist/commands/system-message/InlineEditor.d.ts.map +1 -0
- package/dist/commands/system-message/InlineEditor.js +225 -0
- package/dist/commands/system-message/InlineEditor.js.map +1 -0
- package/dist/commands/system-message/InteractiveMenu.d.ts +76 -0
- package/dist/commands/system-message/InteractiveMenu.d.ts.map +1 -0
- package/dist/commands/system-message/InteractiveMenu.js +979 -0
- package/dist/commands/system-message/InteractiveMenu.js.map +1 -0
- package/dist/commands/system-message/index.d.ts +56 -0
- package/dist/commands/system-message/index.d.ts.map +1 -0
- package/dist/commands/system-message/index.js +694 -0
- package/dist/commands/system-message/index.js.map +1 -0
- package/dist/commands/ui/artifacts.d.ts +14 -0
- package/dist/commands/ui/artifacts.d.ts.map +1 -0
- package/dist/commands/ui/artifacts.js +22 -0
- package/dist/commands/ui/artifacts.js.map +1 -0
- package/dist/commands/ui/config.d.ts +12 -0
- package/dist/commands/ui/config.d.ts.map +1 -0
- package/dist/commands/ui/config.js +26 -0
- package/dist/commands/ui/config.js.map +1 -0
- package/dist/commands/ui/context.d.ts +16 -0
- package/dist/commands/ui/context.d.ts.map +1 -0
- package/dist/commands/ui/context.js +28 -0
- package/dist/commands/ui/context.js.map +1 -0
- package/dist/commands/ui/middleware.d.ts +14 -0
- package/dist/commands/ui/middleware.d.ts.map +1 -0
- package/dist/commands/ui/middleware.js +22 -0
- package/dist/commands/ui/middleware.js.map +1 -0
- package/dist/commands/ui/models.d.ts +14 -0
- package/dist/commands/ui/models.d.ts.map +1 -0
- package/dist/commands/ui/models.js +50 -0
- package/dist/commands/ui/models.js.map +1 -0
- package/dist/commands/ui/permissions.d.ts +14 -0
- package/dist/commands/ui/permissions.d.ts.map +1 -0
- package/dist/commands/ui/permissions.js +22 -0
- package/dist/commands/ui/permissions.js.map +1 -0
- package/dist/commands/ui/sessions.d.ts +13 -0
- package/dist/commands/ui/sessions.d.ts.map +1 -0
- package/dist/commands/ui/sessions.js +45 -0
- package/dist/commands/ui/sessions.js.map +1 -0
- package/dist/commands/ui/system-messages.d.ts +5 -0
- package/dist/commands/ui/system-messages.d.ts.map +1 -0
- package/dist/commands/ui/system-messages.js +19 -0
- package/dist/commands/ui/system-messages.js.map +1 -0
- package/dist/commands/ui/themes.d.ts +12 -0
- package/dist/commands/ui/themes.d.ts.map +1 -0
- package/dist/commands/ui/themes.js +40 -0
- package/dist/commands/ui/themes.js.map +1 -0
- package/dist/commands/ui/tmux.d.ts +5 -0
- package/dist/commands/ui/tmux.d.ts.map +1 -0
- package/dist/commands/ui/tmux.js +19 -0
- package/dist/commands/ui/tmux.js.map +1 -0
- package/dist/cortex.d.ts +12 -0
- package/dist/cortex.d.ts.map +1 -0
- package/dist/cortex.js +320 -0
- package/dist/cortex.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +112 -0
- package/dist/index.js.map +1 -0
- package/dist/ink-ui/CortexApp.d.ts +28 -0
- package/dist/ink-ui/CortexApp.d.ts.map +1 -0
- package/dist/ink-ui/CortexApp.js +2291 -0
- package/dist/ink-ui/CortexApp.js.map +1 -0
- package/dist/ink-ui/SimpleInputBuffer.d.ts +63 -0
- package/dist/ink-ui/SimpleInputBuffer.d.ts.map +1 -0
- package/dist/ink-ui/SimpleInputBuffer.js +369 -0
- package/dist/ink-ui/SimpleInputBuffer.js.map +1 -0
- package/dist/ink-ui/commands/slashCommands.d.ts +40 -0
- package/dist/ink-ui/commands/slashCommands.d.ts.map +1 -0
- package/dist/ink-ui/commands/slashCommands.js +111 -0
- package/dist/ink-ui/commands/slashCommands.js.map +1 -0
- package/dist/ink-ui/commands/types.d.ts +161 -0
- package/dist/ink-ui/commands/types.d.ts.map +1 -0
- package/dist/ink-ui/commands/types.js +12 -0
- package/dist/ink-ui/commands/types.js.map +1 -0
- package/dist/ink-ui/components/ApprovalDialog.d.ts +21 -0
- package/dist/ink-ui/components/ApprovalDialog.d.ts.map +1 -0
- package/dist/ink-ui/components/ApprovalDialog.js +81 -0
- package/dist/ink-ui/components/ApprovalDialog.js.map +1 -0
- package/dist/ink-ui/components/CommandSuggestions.d.ts +19 -0
- package/dist/ink-ui/components/CommandSuggestions.d.ts.map +1 -0
- package/dist/ink-ui/components/CommandSuggestions.js +36 -0
- package/dist/ink-ui/components/CommandSuggestions.js.map +1 -0
- package/dist/ink-ui/components/DiffPreview.d.ts +60 -0
- package/dist/ink-ui/components/DiffPreview.d.ts.map +1 -0
- package/dist/ink-ui/components/DiffPreview.js +195 -0
- package/dist/ink-ui/components/DiffPreview.js.map +1 -0
- package/dist/ink-ui/components/DocumentPreview.d.ts +50 -0
- package/dist/ink-ui/components/DocumentPreview.d.ts.map +1 -0
- package/dist/ink-ui/components/DocumentPreview.js +92 -0
- package/dist/ink-ui/components/DocumentPreview.js.map +1 -0
- package/dist/ink-ui/components/MarkdownText.d.ts +27 -0
- package/dist/ink-ui/components/MarkdownText.d.ts.map +1 -0
- package/dist/ink-ui/components/MarkdownText.js +342 -0
- package/dist/ink-ui/components/MarkdownText.js.map +1 -0
- package/dist/ink-ui/components/MenuRenderer.d.ts +26 -0
- package/dist/ink-ui/components/MenuRenderer.d.ts.map +1 -0
- package/dist/ink-ui/components/MenuRenderer.js +264 -0
- package/dist/ink-ui/components/MenuRenderer.js.map +1 -0
- package/dist/ink-ui/components/ModelPickerDialog.d.ts +33 -0
- package/dist/ink-ui/components/ModelPickerDialog.d.ts.map +1 -0
- package/dist/ink-ui/components/ModelPickerDialog.js +98 -0
- package/dist/ink-ui/components/ModelPickerDialog.js.map +1 -0
- package/dist/ink-ui/components/StreamDisplay.d.ts +31 -0
- package/dist/ink-ui/components/StreamDisplay.d.ts.map +1 -0
- package/dist/ink-ui/components/StreamDisplay.js +573 -0
- package/dist/ink-ui/components/StreamDisplay.js.map +1 -0
- package/dist/ink-ui/components/SubAgentPanel.d.ts +98 -0
- package/dist/ink-ui/components/SubAgentPanel.d.ts.map +1 -0
- package/dist/ink-ui/components/SubAgentPanel.js +155 -0
- package/dist/ink-ui/components/SubAgentPanel.js.map +1 -0
- package/dist/ink-ui/components/ThinkingDisplay.d.ts +46 -0
- package/dist/ink-ui/components/ThinkingDisplay.d.ts.map +1 -0
- package/dist/ink-ui/components/ThinkingDisplay.js +176 -0
- package/dist/ink-ui/components/ThinkingDisplay.js.map +1 -0
- package/dist/ink-ui/components/ToolCallDisplay.d.ts +51 -0
- package/dist/ink-ui/components/ToolCallDisplay.d.ts.map +1 -0
- package/dist/ink-ui/components/ToolCallDisplay.js +378 -0
- package/dist/ink-ui/components/ToolCallDisplay.js.map +1 -0
- package/dist/ink-ui/components/WritePreview.d.ts +42 -0
- package/dist/ink-ui/components/WritePreview.d.ts.map +1 -0
- package/dist/ink-ui/components/WritePreview.js +100 -0
- package/dist/ink-ui/components/WritePreview.js.map +1 -0
- package/dist/ink-ui/contexts/KeypressContext.d.ts +32 -0
- package/dist/ink-ui/contexts/KeypressContext.d.ts.map +1 -0
- package/dist/ink-ui/contexts/KeypressContext.js +529 -0
- package/dist/ink-ui/contexts/KeypressContext.js.map +1 -0
- package/dist/ink-ui/contexts/SessionContext.d.ts +46 -0
- package/dist/ink-ui/contexts/SessionContext.d.ts.map +1 -0
- package/dist/ink-ui/contexts/SessionContext.js +162 -0
- package/dist/ink-ui/contexts/SessionContext.js.map +1 -0
- package/dist/ink-ui/core-stubs.d.ts +270 -0
- package/dist/ink-ui/core-stubs.d.ts.map +1 -0
- package/dist/ink-ui/core-stubs.js +276 -0
- package/dist/ink-ui/core-stubs.js.map +1 -0
- package/dist/ink-ui/cortex-types.d.ts +214 -0
- package/dist/ink-ui/cortex-types.d.ts.map +1 -0
- package/dist/ink-ui/cortex-types.js +52 -0
- package/dist/ink-ui/cortex-types.js.map +1 -0
- package/dist/ink-ui/hooks/useCortexStream.d.ts +75 -0
- package/dist/ink-ui/hooks/useCortexStream.d.ts.map +1 -0
- package/dist/ink-ui/hooks/useCortexStream.js +518 -0
- package/dist/ink-ui/hooks/useCortexStream.js.map +1 -0
- package/dist/ink-ui/hooks/useFocus.d.ts +11 -0
- package/dist/ink-ui/hooks/useFocus.d.ts.map +1 -0
- package/dist/ink-ui/hooks/useFocus.js +51 -0
- package/dist/ink-ui/hooks/useFocus.js.map +1 -0
- package/dist/ink-ui/hooks/useHistoryManager.d.ts +23 -0
- package/dist/ink-ui/hooks/useHistoryManager.d.ts.map +1 -0
- package/dist/ink-ui/hooks/useHistoryManager.js +63 -0
- package/dist/ink-ui/hooks/useHistoryManager.js.map +1 -0
- package/dist/ink-ui/hooks/useKeypress.d.ts +18 -0
- package/dist/ink-ui/hooks/useKeypress.d.ts.map +1 -0
- package/dist/ink-ui/hooks/useKeypress.js +27 -0
- package/dist/ink-ui/hooks/useKeypress.js.map +1 -0
- package/dist/ink-ui/hooks/useReactApprovalHandler.d.ts +74 -0
- package/dist/ink-ui/hooks/useReactApprovalHandler.d.ts.map +1 -0
- package/dist/ink-ui/hooks/useReactApprovalHandler.js +83 -0
- package/dist/ink-ui/hooks/useReactApprovalHandler.js.map +1 -0
- package/dist/ink-ui/hooks/useTerminalSize.d.ts +10 -0
- package/dist/ink-ui/hooks/useTerminalSize.d.ts.map +1 -0
- package/dist/ink-ui/hooks/useTerminalSize.js +28 -0
- package/dist/ink-ui/hooks/useTerminalSize.js.map +1 -0
- package/dist/ink-ui/semantic-colors.d.ts +8 -0
- package/dist/ink-ui/semantic-colors.d.ts.map +1 -0
- package/dist/ink-ui/semantic-colors.js +24 -0
- package/dist/ink-ui/semantic-colors.js.map +1 -0
- package/dist/ink-ui/state/extensions.d.ts +68 -0
- package/dist/ink-ui/state/extensions.d.ts.map +1 -0
- package/dist/ink-ui/state/extensions.js +97 -0
- package/dist/ink-ui/state/extensions.js.map +1 -0
- package/dist/ink-ui/themes/ansi-light.d.ts +8 -0
- package/dist/ink-ui/themes/ansi-light.d.ts.map +1 -0
- package/dist/ink-ui/themes/ansi-light.js +143 -0
- package/dist/ink-ui/themes/ansi-light.js.map +1 -0
- package/dist/ink-ui/themes/ansi.d.ts +8 -0
- package/dist/ink-ui/themes/ansi.d.ts.map +1 -0
- package/dist/ink-ui/themes/ansi.js +153 -0
- package/dist/ink-ui/themes/ansi.js.map +1 -0
- package/dist/ink-ui/themes/atom-one-dark.d.ts +8 -0
- package/dist/ink-ui/themes/atom-one-dark.d.ts.map +1 -0
- package/dist/ink-ui/themes/atom-one-dark.js +140 -0
- package/dist/ink-ui/themes/atom-one-dark.js.map +1 -0
- package/dist/ink-ui/themes/ayu-light.d.ts +8 -0
- package/dist/ink-ui/themes/ayu-light.d.ts.map +1 -0
- package/dist/ink-ui/themes/ayu-light.js +132 -0
- package/dist/ink-ui/themes/ayu-light.js.map +1 -0
- package/dist/ink-ui/themes/ayu.d.ts +8 -0
- package/dist/ink-ui/themes/ayu.d.ts.map +1 -0
- package/dist/ink-ui/themes/ayu.js +106 -0
- package/dist/ink-ui/themes/ayu.js.map +1 -0
- package/dist/ink-ui/themes/color-utils.d.ts +23 -0
- package/dist/ink-ui/themes/color-utils.d.ts.map +1 -0
- package/dist/ink-ui/themes/color-utils.js +237 -0
- package/dist/ink-ui/themes/color-utils.js.map +1 -0
- package/dist/ink-ui/themes/default-light.d.ts +8 -0
- package/dist/ink-ui/themes/default-light.d.ts.map +1 -0
- package/dist/ink-ui/themes/default-light.js +100 -0
- package/dist/ink-ui/themes/default-light.js.map +1 -0
- package/dist/ink-ui/themes/default.d.ts +8 -0
- package/dist/ink-ui/themes/default.d.ts.map +1 -0
- package/dist/ink-ui/themes/default.js +143 -0
- package/dist/ink-ui/themes/default.js.map +1 -0
- package/dist/ink-ui/themes/dracula.d.ts +8 -0
- package/dist/ink-ui/themes/dracula.d.ts.map +1 -0
- package/dist/ink-ui/themes/dracula.js +117 -0
- package/dist/ink-ui/themes/dracula.js.map +1 -0
- package/dist/ink-ui/themes/github-dark.d.ts +8 -0
- package/dist/ink-ui/themes/github-dark.d.ts.map +1 -0
- package/dist/ink-ui/themes/github-dark.js +140 -0
- package/dist/ink-ui/themes/github-dark.js.map +1 -0
- package/dist/ink-ui/themes/github-light.d.ts +8 -0
- package/dist/ink-ui/themes/github-light.d.ts.map +1 -0
- package/dist/ink-ui/themes/github-light.js +142 -0
- package/dist/ink-ui/themes/github-light.js.map +1 -0
- package/dist/ink-ui/themes/googlecode.d.ts +8 -0
- package/dist/ink-ui/themes/googlecode.d.ts.map +1 -0
- package/dist/ink-ui/themes/googlecode.js +139 -0
- package/dist/ink-ui/themes/googlecode.js.map +1 -0
- package/dist/ink-ui/themes/no-color.d.ts +8 -0
- package/dist/ink-ui/themes/no-color.d.ts.map +1 -0
- package/dist/ink-ui/themes/no-color.js +118 -0
- package/dist/ink-ui/themes/no-color.js.map +1 -0
- package/dist/ink-ui/themes/semantic-tokens.d.ts +40 -0
- package/dist/ink-ui/themes/semantic-tokens.d.ts.map +1 -0
- package/dist/ink-ui/themes/semantic-tokens.js +100 -0
- package/dist/ink-ui/themes/semantic-tokens.js.map +1 -0
- package/dist/ink-ui/themes/shades-of-purple.d.ts +12 -0
- package/dist/ink-ui/themes/shades-of-purple.d.ts.map +1 -0
- package/dist/ink-ui/themes/shades-of-purple.js +306 -0
- package/dist/ink-ui/themes/shades-of-purple.js.map +1 -0
- package/dist/ink-ui/themes/theme-manager.d.ts +67 -0
- package/dist/ink-ui/themes/theme-manager.d.ts.map +1 -0
- package/dist/ink-ui/themes/theme-manager.js +263 -0
- package/dist/ink-ui/themes/theme-manager.js.map +1 -0
- package/dist/ink-ui/themes/theme.d.ts +134 -0
- package/dist/ink-ui/themes/theme.d.ts.map +1 -0
- package/dist/ink-ui/themes/theme.js +390 -0
- package/dist/ink-ui/themes/theme.js.map +1 -0
- package/dist/ink-ui/themes/xcode.d.ts +8 -0
- package/dist/ink-ui/themes/xcode.d.ts.map +1 -0
- package/dist/ink-ui/themes/xcode.js +147 -0
- package/dist/ink-ui/themes/xcode.js.map +1 -0
- package/dist/ink-ui/types.d.ts +306 -0
- package/dist/ink-ui/types.d.ts.map +1 -0
- package/dist/ink-ui/types.js +65 -0
- package/dist/ink-ui/types.js.map +1 -0
- package/dist/ink-ui/utils/input.d.ts +18 -0
- package/dist/ink-ui/utils/input.d.ts.map +1 -0
- package/dist/ink-ui/utils/input.js +51 -0
- package/dist/ink-ui/utils/input.js.map +1 -0
- package/dist/ink-ui/utils/mouse.d.ts +33 -0
- package/dist/ink-ui/utils/mouse.d.ts.map +1 -0
- package/dist/ink-ui/utils/mouse.js +182 -0
- package/dist/ink-ui/utils/mouse.js.map +1 -0
- package/dist/services/BuiltinCommandLoader.d.ts +21 -0
- package/dist/services/BuiltinCommandLoader.d.ts.map +1 -0
- package/dist/services/BuiltinCommandLoader.js +182 -0
- package/dist/services/BuiltinCommandLoader.js.map +1 -0
- package/dist/services/CommandService.d.ts +39 -0
- package/dist/services/CommandService.d.ts.map +1 -0
- package/dist/services/CommandService.js +49 -0
- package/dist/services/CommandService.js.map +1 -0
- package/dist/services/FileCommandLoader.d.ts +16 -0
- package/dist/services/FileCommandLoader.d.ts.map +1 -0
- package/dist/services/FileCommandLoader.js +19 -0
- package/dist/services/FileCommandLoader.js.map +1 -0
- package/dist/services/McpPromptLoader.d.ts +16 -0
- package/dist/services/McpPromptLoader.d.ts.map +1 -0
- package/dist/services/McpPromptLoader.js +19 -0
- package/dist/services/McpPromptLoader.js.map +1 -0
- package/dist/services/index.d.ts +8 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +8 -0
- package/dist/services/index.js.map +1 -0
- package/dist/ui/ChalkMenuRenderer.d.ts +22 -0
- package/dist/ui/ChalkMenuRenderer.d.ts.map +1 -0
- package/dist/ui/ChalkMenuRenderer.js +478 -0
- package/dist/ui/ChalkMenuRenderer.js.map +1 -0
- package/dist/ui/ChalkModelPicker.d.ts +20 -0
- package/dist/ui/ChalkModelPicker.d.ts.map +1 -0
- package/dist/ui/ChalkModelPicker.js +363 -0
- package/dist/ui/ChalkModelPicker.js.map +1 -0
- package/dist/ui/ChalkThemePicker.d.ts +20 -0
- package/dist/ui/ChalkThemePicker.d.ts.map +1 -0
- package/dist/ui/ChalkThemePicker.js +370 -0
- package/dist/ui/ChalkThemePicker.js.map +1 -0
- package/dist/ui/InkApprovalDialog.d.ts +8 -0
- package/dist/ui/InkApprovalDialog.d.ts.map +1 -0
- package/dist/ui/InkApprovalDialog.js +25 -0
- package/dist/ui/InkApprovalDialog.js.map +1 -0
- package/dist/ui/InkCommandPalette.d.ts +43 -0
- package/dist/ui/InkCommandPalette.d.ts.map +1 -0
- package/dist/ui/InkCommandPalette.js +105 -0
- package/dist/ui/InkCommandPalette.js.map +1 -0
- package/dist/ui/InkConfigMenu.d.ts +24 -0
- package/dist/ui/InkConfigMenu.d.ts.map +1 -0
- package/dist/ui/InkConfigMenu.js +259 -0
- package/dist/ui/InkConfigMenu.js.map +1 -0
- package/dist/ui/InkHelp.d.ts +25 -0
- package/dist/ui/InkHelp.d.ts.map +1 -0
- package/dist/ui/InkHelp.js +55 -0
- package/dist/ui/InkHelp.js.map +1 -0
- package/dist/ui/InkMenuPicker.d.ts +19 -0
- package/dist/ui/InkMenuPicker.d.ts.map +1 -0
- package/dist/ui/InkMenuPicker.js +33 -0
- package/dist/ui/InkMenuPicker.js.map +1 -0
- package/dist/ui/InkModelPicker.d.ts +23 -0
- package/dist/ui/InkModelPicker.d.ts.map +1 -0
- package/dist/ui/InkModelPicker.js +53 -0
- package/dist/ui/InkModelPicker.js.map +1 -0
- package/dist/ui/PersistentInput.d.ts +91 -0
- package/dist/ui/PersistentInput.d.ts.map +1 -0
- package/dist/ui/PersistentInput.js +283 -0
- package/dist/ui/PersistentInput.js.map +1 -0
- package/dist/ui/RawInput.d.ts +27 -0
- package/dist/ui/RawInput.d.ts.map +1 -0
- package/dist/ui/RawInput.js +731 -0
- package/dist/ui/RawInput.js.map +1 -0
- package/dist/ui/SlashCommandAutocomplete.d.ts +94 -0
- package/dist/ui/SlashCommandAutocomplete.d.ts.map +1 -0
- package/dist/ui/SlashCommandAutocomplete.js +274 -0
- package/dist/ui/SlashCommandAutocomplete.js.map +1 -0
- package/dist/ui/SplashScreen.d.ts +76 -0
- package/dist/ui/SplashScreen.d.ts.map +1 -0
- package/dist/ui/SplashScreen.js +316 -0
- package/dist/ui/SplashScreen.js.map +1 -0
- package/dist/ui/components/ArtifactDashboard.d.ts +16 -0
- package/dist/ui/components/ArtifactDashboard.d.ts.map +1 -0
- package/dist/ui/components/ArtifactDashboard.js +102 -0
- package/dist/ui/components/ArtifactDashboard.js.map +1 -0
- package/dist/ui/components/ChatInput.d.ts +36 -0
- package/dist/ui/components/ChatInput.d.ts.map +1 -0
- package/dist/ui/components/ChatInput.js +11 -0
- package/dist/ui/components/ChatInput.js.map +1 -0
- package/dist/ui/components/ConfigWizard.d.ts +17 -0
- package/dist/ui/components/ConfigWizard.d.ts.map +1 -0
- package/dist/ui/components/ConfigWizard.js +134 -0
- package/dist/ui/components/ConfigWizard.js.map +1 -0
- package/dist/ui/components/ContextViewer.d.ts +18 -0
- package/dist/ui/components/ContextViewer.d.ts.map +1 -0
- package/dist/ui/components/ContextViewer.js +85 -0
- package/dist/ui/components/ContextViewer.js.map +1 -0
- package/dist/ui/components/MiddlewareDashboard.d.ts +16 -0
- package/dist/ui/components/MiddlewareDashboard.d.ts.map +1 -0
- package/dist/ui/components/MiddlewareDashboard.js +98 -0
- package/dist/ui/components/MiddlewareDashboard.js.map +1 -0
- package/dist/ui/components/ModelPicker.d.ts +24 -0
- package/dist/ui/components/ModelPicker.d.ts.map +1 -0
- package/dist/ui/components/ModelPicker.js +96 -0
- package/dist/ui/components/ModelPicker.js.map +1 -0
- package/dist/ui/components/MultiLineInput.d.ts +27 -0
- package/dist/ui/components/MultiLineInput.d.ts.map +1 -0
- package/dist/ui/components/MultiLineInput.js +182 -0
- package/dist/ui/components/MultiLineInput.js.map +1 -0
- package/dist/ui/components/PermissionsBrowser.d.ts +16 -0
- package/dist/ui/components/PermissionsBrowser.d.ts.map +1 -0
- package/dist/ui/components/PermissionsBrowser.js +110 -0
- package/dist/ui/components/PermissionsBrowser.js.map +1 -0
- package/dist/ui/components/SessionBrowser.d.ts +19 -0
- package/dist/ui/components/SessionBrowser.d.ts.map +1 -0
- package/dist/ui/components/SessionBrowser.js +66 -0
- package/dist/ui/components/SessionBrowser.js.map +1 -0
- package/dist/ui/components/StatusBar.d.ts +32 -0
- package/dist/ui/components/StatusBar.d.ts.map +1 -0
- package/dist/ui/components/StatusBar.js +27 -0
- package/dist/ui/components/StatusBar.js.map +1 -0
- package/dist/ui/components/SystemMessageBrowser.d.ts +11 -0
- package/dist/ui/components/SystemMessageBrowser.d.ts.map +1 -0
- package/dist/ui/components/SystemMessageBrowser.js +106 -0
- package/dist/ui/components/SystemMessageBrowser.js.map +1 -0
- package/dist/ui/components/ThemePicker.d.ts +11 -0
- package/dist/ui/components/ThemePicker.d.ts.map +1 -0
- package/dist/ui/components/ThemePicker.js +62 -0
- package/dist/ui/components/ThemePicker.js.map +1 -0
- package/dist/ui/components/TmuxBrowser.d.ts +11 -0
- package/dist/ui/components/TmuxBrowser.d.ts.map +1 -0
- package/dist/ui/components/TmuxBrowser.js +85 -0
- package/dist/ui/components/TmuxBrowser.js.map +1 -0
- package/dist/ui/components/index.d.ts +22 -0
- package/dist/ui/components/index.d.ts.map +1 -0
- package/dist/ui/components/index.js +21 -0
- package/dist/ui/components/index.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* InkConfigMenu — Interactive settings browser
|
|
4
|
+
*
|
|
5
|
+
* Renders all SETTINGS_METADATA grouped by category with current values.
|
|
6
|
+
* Booleans toggle with Space/Enter. Choices cycle with Space/Enter.
|
|
7
|
+
* Numbers/strings edited inline. Changes write to .env, set process.env,
|
|
8
|
+
* and call updateRuntimeConfig for config-stored keys.
|
|
9
|
+
*
|
|
10
|
+
* Used by both neoncortex (inline overlay) and cortex-cli (imperative render).
|
|
11
|
+
*/
|
|
12
|
+
import { useState, useCallback, useMemo } from 'react';
|
|
13
|
+
import { render, Box, Text, useInput } from 'ink';
|
|
14
|
+
import { SETTINGS_METADATA, SettingsLoader, SettingsWriter, DEFAULT_SETTINGS, getRuntimeConfigEntry, isLiveToggleable, } from '@nexus-cortex/core';
|
|
15
|
+
const API_KEY_FIELDS = SETTINGS_METADATA
|
|
16
|
+
.filter(s => s.category === 'api_keys')
|
|
17
|
+
.map(s => s.key);
|
|
18
|
+
import { Colors } from '@nexus-cortex/cli/dist/themes/colors.js';
|
|
19
|
+
const CATEGORY_LABELS = {
|
|
20
|
+
api_keys: 'API Keys',
|
|
21
|
+
models: 'Models',
|
|
22
|
+
system: 'System',
|
|
23
|
+
mentorship: 'Mentorship',
|
|
24
|
+
context: 'Context Management',
|
|
25
|
+
session: 'Session',
|
|
26
|
+
loop_control: 'Loop Control',
|
|
27
|
+
server_side_tools: 'Tools & Execution',
|
|
28
|
+
model_router: 'Model Router',
|
|
29
|
+
agent_workspace: 'Agent Workspace',
|
|
30
|
+
training: 'Training & Audit',
|
|
31
|
+
runtime: 'Runtime',
|
|
32
|
+
};
|
|
33
|
+
const CATEGORY_ORDER = [
|
|
34
|
+
'models',
|
|
35
|
+
'system',
|
|
36
|
+
'runtime',
|
|
37
|
+
'loop_control',
|
|
38
|
+
'context',
|
|
39
|
+
'mentorship',
|
|
40
|
+
'server_side_tools',
|
|
41
|
+
'model_router',
|
|
42
|
+
'training',
|
|
43
|
+
'session',
|
|
44
|
+
'agent_workspace',
|
|
45
|
+
'api_keys',
|
|
46
|
+
];
|
|
47
|
+
function buildFlatList() {
|
|
48
|
+
const items = [];
|
|
49
|
+
for (const cat of CATEGORY_ORDER) {
|
|
50
|
+
const settings = SETTINGS_METADATA.filter(s => s.category === cat);
|
|
51
|
+
if (settings.length === 0)
|
|
52
|
+
continue;
|
|
53
|
+
items.push({ type: 'header', category: cat });
|
|
54
|
+
for (const s of settings) {
|
|
55
|
+
items.push({ type: 'setting', setting: s });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return items;
|
|
59
|
+
}
|
|
60
|
+
function getCurrentValue(key, loader) {
|
|
61
|
+
const fromEnv = process.env[key];
|
|
62
|
+
if (fromEnv !== undefined && fromEnv !== '')
|
|
63
|
+
return fromEnv;
|
|
64
|
+
return loader.get(key) || '';
|
|
65
|
+
}
|
|
66
|
+
function formatValue(setting, value) {
|
|
67
|
+
if (setting.secret && value) {
|
|
68
|
+
return value.length > 8
|
|
69
|
+
? value.substring(0, 4) + '...' + value.substring(value.length - 4)
|
|
70
|
+
: '***';
|
|
71
|
+
}
|
|
72
|
+
if (setting.type === 'boolean') {
|
|
73
|
+
return value === 'true' ? 'ON' : 'OFF';
|
|
74
|
+
}
|
|
75
|
+
if (!value && setting.default) {
|
|
76
|
+
return setting.default;
|
|
77
|
+
}
|
|
78
|
+
return value || '(not set)';
|
|
79
|
+
}
|
|
80
|
+
const ConfigMenu = ({ onClose, projectPath, onUpdateRuntimeConfig }) => {
|
|
81
|
+
const flatList = buildFlatList();
|
|
82
|
+
const selectableIndices = flatList.map((item, i) => item.type === 'setting' ? i : -1).filter(i => i >= 0);
|
|
83
|
+
const [selectedIdx, setSelectedIdx] = useState(0);
|
|
84
|
+
const [editMode, setEditMode] = useState(false);
|
|
85
|
+
const [editBuffer, setEditBuffer] = useState('');
|
|
86
|
+
const [scrollOffset, setScrollOffset] = useState(0);
|
|
87
|
+
const [refreshKey, setRefreshKey] = useState(0);
|
|
88
|
+
const [resetConfirm, setResetConfirm] = useState(false);
|
|
89
|
+
const [statusMsg, setStatusMsg] = useState('');
|
|
90
|
+
// Stable instances: rebuilt-per-render objects defeat useCallback dependency checks.
|
|
91
|
+
const loader = useMemo(() => new SettingsLoader(projectPath), [projectPath]);
|
|
92
|
+
const writer = useMemo(() => new SettingsWriter(projectPath), [projectPath]);
|
|
93
|
+
const termHeight = process.stdout.rows || 30;
|
|
94
|
+
const maxVisible = Math.max(5, termHeight - 8);
|
|
95
|
+
const currentFlatIdx = selectableIndices[selectedIdx] ?? 0;
|
|
96
|
+
const currentItem = flatList[currentFlatIdx];
|
|
97
|
+
const currentSetting = currentItem?.setting;
|
|
98
|
+
const applyChange = useCallback((setting, newValue) => {
|
|
99
|
+
writer.update({ [setting.key]: newValue });
|
|
100
|
+
process.env[setting.key] = newValue;
|
|
101
|
+
const entry = getRuntimeConfigEntry(setting.key);
|
|
102
|
+
if (entry?.tier === 'config' && entry.mapper && onUpdateRuntimeConfig) {
|
|
103
|
+
onUpdateRuntimeConfig(entry.mapper(newValue));
|
|
104
|
+
}
|
|
105
|
+
setRefreshKey(k => k + 1);
|
|
106
|
+
}, [writer, onUpdateRuntimeConfig]);
|
|
107
|
+
const doReset = useCallback(() => {
|
|
108
|
+
// Preserve API keys; reset everything else to benchmark-proven defaults.
|
|
109
|
+
const preserved = {};
|
|
110
|
+
for (const key of API_KEY_FIELDS) {
|
|
111
|
+
const val = process.env[key] || loader.get(key);
|
|
112
|
+
if (val)
|
|
113
|
+
preserved[key] = val;
|
|
114
|
+
}
|
|
115
|
+
const resetEnv = { ...DEFAULT_SETTINGS, ...preserved };
|
|
116
|
+
writer.backup();
|
|
117
|
+
writer.write(resetEnv);
|
|
118
|
+
for (const [key, val] of Object.entries(resetEnv)) {
|
|
119
|
+
process.env[key] = val;
|
|
120
|
+
const entry = getRuntimeConfigEntry(key);
|
|
121
|
+
if (entry?.tier === 'config' && entry.mapper && onUpdateRuntimeConfig) {
|
|
122
|
+
onUpdateRuntimeConfig(entry.mapper(val));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const preservedCount = Object.keys(preserved).length;
|
|
126
|
+
setStatusMsg(`[OK] Reset to optimal defaults (${preservedCount} API keys preserved, backup saved)`);
|
|
127
|
+
setRefreshKey(k => k + 1);
|
|
128
|
+
}, [writer, loader, onUpdateRuntimeConfig]);
|
|
129
|
+
const toggleOrCycle = useCallback(() => {
|
|
130
|
+
if (!currentSetting)
|
|
131
|
+
return;
|
|
132
|
+
if (currentSetting.secret)
|
|
133
|
+
return;
|
|
134
|
+
const current = getCurrentValue(currentSetting.key, loader);
|
|
135
|
+
if (currentSetting.type === 'boolean') {
|
|
136
|
+
applyChange(currentSetting, current === 'true' ? 'false' : 'true');
|
|
137
|
+
}
|
|
138
|
+
else if (currentSetting.type === 'choice' && currentSetting.choices) {
|
|
139
|
+
const idx = currentSetting.choices.indexOf(current);
|
|
140
|
+
const next = (idx + 1) % currentSetting.choices.length;
|
|
141
|
+
applyChange(currentSetting, currentSetting.choices[next]);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
setEditBuffer(current);
|
|
145
|
+
setEditMode(true);
|
|
146
|
+
}
|
|
147
|
+
}, [currentSetting, loader, applyChange]);
|
|
148
|
+
useInput((input, key) => {
|
|
149
|
+
if (editMode && currentSetting) {
|
|
150
|
+
if (key.escape) {
|
|
151
|
+
setEditMode(false);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
if (key.return) {
|
|
155
|
+
if (editBuffer.trim()) {
|
|
156
|
+
applyChange(currentSetting, editBuffer.trim());
|
|
157
|
+
}
|
|
158
|
+
setEditMode(false);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
if (key.backspace || key.delete) {
|
|
162
|
+
setEditBuffer(b => b.slice(0, -1));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
if (input && !key.ctrl && !key.meta) {
|
|
166
|
+
setEditBuffer(b => b + input);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
// Reset confirmation gate — intercepts all other input while active.
|
|
172
|
+
if (resetConfirm) {
|
|
173
|
+
if (input === 'y' || input === 'Y' || key.return) {
|
|
174
|
+
doReset();
|
|
175
|
+
setResetConfirm(false);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
setResetConfirm(false);
|
|
179
|
+
setStatusMsg('Reset cancelled');
|
|
180
|
+
}
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (key.escape || input === 'q') {
|
|
184
|
+
onClose();
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
if (input === 'r' || input === 'R') {
|
|
188
|
+
setResetConfirm(true);
|
|
189
|
+
setStatusMsg('');
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
if (key.upArrow || input === 'k') {
|
|
193
|
+
setSelectedIdx(i => {
|
|
194
|
+
const next = i > 0 ? i - 1 : selectableIndices.length - 1;
|
|
195
|
+
const flatIdx = selectableIndices[next];
|
|
196
|
+
if (flatIdx < scrollOffset)
|
|
197
|
+
setScrollOffset(flatIdx > 0 ? flatIdx - 1 : 0);
|
|
198
|
+
return next;
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
else if (key.downArrow || input === 'j') {
|
|
202
|
+
setSelectedIdx(i => {
|
|
203
|
+
const next = i < selectableIndices.length - 1 ? i + 1 : 0;
|
|
204
|
+
const flatIdx = selectableIndices[next];
|
|
205
|
+
if (flatIdx >= scrollOffset + maxVisible)
|
|
206
|
+
setScrollOffset(flatIdx - maxVisible + 2);
|
|
207
|
+
if (next === 0)
|
|
208
|
+
setScrollOffset(0);
|
|
209
|
+
return next;
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
else if (key.return || input === ' ') {
|
|
213
|
+
toggleOrCycle();
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
const visibleItems = flatList.slice(scrollOffset, scrollOffset + maxVisible);
|
|
217
|
+
const showScrollUp = scrollOffset > 0;
|
|
218
|
+
const showScrollDown = scrollOffset + maxVisible < flatList.length;
|
|
219
|
+
const descriptionText = currentSetting?.description || '';
|
|
220
|
+
const liveLabel = currentSetting ? (isLiveToggleable(currentSetting.key) ? '(live)' : '(restart required)') : '';
|
|
221
|
+
// Force re-read on refresh
|
|
222
|
+
void refreshKey;
|
|
223
|
+
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: Colors.AccentCyan, children: "\u2501\u2501\u2501 Configuration Settings \u2501\u2501\u2501" }) }), showScrollUp && _jsx(Text, { color: Colors.Gray, children: " \u25B2 more" }), visibleItems.map((item, vIdx) => {
|
|
224
|
+
const flatIdx = scrollOffset + vIdx;
|
|
225
|
+
if (item.type === 'header') {
|
|
226
|
+
return (_jsx(Box, { marginTop: vIdx > 0 ? 1 : 0, children: _jsx(Text, { bold: true, color: Colors.AccentGreen, children: CATEGORY_LABELS[item.category] || item.category }) }, `h-${item.category}`));
|
|
227
|
+
}
|
|
228
|
+
const s = item.setting;
|
|
229
|
+
const isSelected = flatIdx === currentFlatIdx;
|
|
230
|
+
const value = getCurrentValue(s.key, loader);
|
|
231
|
+
const display = formatValue(s, value);
|
|
232
|
+
const live = isLiveToggleable(s.key);
|
|
233
|
+
if (isSelected && editMode) {
|
|
234
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: Colors.AccentCyan, children: '> ' }), _jsxs(Text, { color: Colors.AccentCyan, children: [s.displayName, ": "] }), _jsx(Text, { color: Colors.AccentYellow, children: editBuffer }), _jsx(Text, { color: Colors.Gray, children: '█' })] }, s.key));
|
|
235
|
+
}
|
|
236
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: isSelected ? Colors.AccentCyan : Colors.Gray, children: isSelected ? '> ' : ' ' }), _jsx(Box, { width: 35, children: _jsx(Text, { color: isSelected ? Colors.White : Colors.Gray, wrap: "truncate", children: s.displayName }) }), _jsx(Box, { width: 25, children: _jsx(Text, { color: s.type === 'boolean'
|
|
237
|
+
? value === 'true' ? Colors.AccentGreen : Colors.Gray
|
|
238
|
+
: Colors.AccentYellow, wrap: "truncate", children: display }) }), _jsx(Text, { color: live ? Colors.AccentGreen : Colors.Gray, dimColor: !live, children: live ? 'live' : 'restart' })] }, s.key));
|
|
239
|
+
}), showScrollDown && _jsx(Text, { color: Colors.Gray, children: " \u25BC more" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: Colors.Gray, wrap: "wrap", children: descriptionText }), currentSetting && (_jsxs(Text, { dimColor: true, children: [currentSetting.key, " ", liveLabel] }))] }), statusMsg && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.AccentGreen, children: statusMsg }) })), _jsx(Box, { marginTop: 1, children: resetConfirm ? (_jsx(Text, { color: Colors.AccentYellow, children: "Reset ALL settings to optimal defaults? API keys preserved, backup saved. (y/N)" })) : (_jsx(Text, { dimColor: true, children: editMode
|
|
240
|
+
? 'Type value, Enter to save, ESC to cancel'
|
|
241
|
+
: 'Arrows navigate · Space/Enter toggle · r reset defaults · ESC/q close' })) })] }));
|
|
242
|
+
};
|
|
243
|
+
/**
|
|
244
|
+
* Show interactive config menu (imperative entry point for cortex-cli)
|
|
245
|
+
*/
|
|
246
|
+
export async function showConfigMenu(projectPath, onUpdateRuntimeConfig) {
|
|
247
|
+
return new Promise((resolve) => {
|
|
248
|
+
const { unmount, waitUntilExit } = render(_jsx(ConfigMenu, { projectPath: projectPath, onUpdateRuntimeConfig: onUpdateRuntimeConfig, onClose: () => {
|
|
249
|
+
unmount();
|
|
250
|
+
resolve();
|
|
251
|
+
} }));
|
|
252
|
+
waitUntilExit().catch(() => {
|
|
253
|
+
resolve();
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
export { ConfigMenu };
|
|
258
|
+
export default showConfigMenu;
|
|
259
|
+
//# sourceMappingURL=InkConfigMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InkConfigMenu.js","sourceRoot":"","sources":["../../src/ui/InkConfigMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InkHelp - Imperative wrapper for unified Help display
|
|
3
|
+
*
|
|
4
|
+
* Allows fuzzycortex (chalk-based CLI) to use the same help rendering
|
|
5
|
+
* as neoncortex, ensuring consistent command display across both CLIs.
|
|
6
|
+
*
|
|
7
|
+
* @module ui/InkHelp
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Show interactive help screen
|
|
11
|
+
*
|
|
12
|
+
* Renders the unified help display showing all commands from core registry.
|
|
13
|
+
* This is the imperative entry point for fuzzycortex.
|
|
14
|
+
*
|
|
15
|
+
* @returns Promise that resolves when help is closed
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* await showHelp();
|
|
20
|
+
* // Help screen is displayed, user presses ESC to close
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function showHelp(): Promise<void>;
|
|
24
|
+
export default showHelp;
|
|
25
|
+
//# sourceMappingURL=InkHelp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InkHelp.d.ts","sourceRoot":"","sources":["../../src/ui/InkHelp.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAwGH;;;;;;;;;;;;;GAaG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAe9C;AAED,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { render, Box, Text, useInput } from 'ink';
|
|
3
|
+
import { slashCommandRegistry } from '@nexus-cortex/core';
|
|
4
|
+
import { Colors } from '@nexus-cortex/cli/dist/themes/colors.js';
|
|
5
|
+
const HelpDisplay = ({ onClose }) => {
|
|
6
|
+
const allCommands = slashCommandRegistry.getAllCommands();
|
|
7
|
+
const categories = slashCommandRegistry.getCategories();
|
|
8
|
+
// Group commands by category
|
|
9
|
+
const grouped = {};
|
|
10
|
+
for (const cmd of allCommands) {
|
|
11
|
+
if (!grouped[cmd.category])
|
|
12
|
+
grouped[cmd.category] = [];
|
|
13
|
+
grouped[cmd.category].push(cmd);
|
|
14
|
+
}
|
|
15
|
+
useInput((input, key) => {
|
|
16
|
+
// Close on ESC, q, or Enter
|
|
17
|
+
if (key.escape || input === 'q' || key.return) {
|
|
18
|
+
onClose();
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsxs(Text, { bold: true, color: Colors.AccentCyan, children: ["\u2501\u2501\u2501 CORTEX Help (", allCommands.length, " commands) \u2501\u2501\u2501"] }), _jsx(Text, {}), _jsx(Text, { bold: true, color: Colors.AccentYellow, children: "Basics:" }), _jsxs(Text, { children: [_jsx(Text, { bold: true, color: Colors.AccentCyan, children: "@" }), _jsx(Text, { children: " - Add file context (e.g., @src/myFile.ts)" })] }), _jsxs(Text, { children: [_jsx(Text, { bold: true, color: Colors.AccentCyan, children: "!" }), _jsx(Text, { children: " - Execute shell command (e.g., !npm run build)" })] }), _jsx(Text, {}), categories.map((category) => {
|
|
22
|
+
const cmds = grouped[category.name];
|
|
23
|
+
if (!cmds || cmds.length === 0)
|
|
24
|
+
return null;
|
|
25
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { bold: true, color: Colors.AccentGreen, children: [category.icon, " ", category.label, ":"] }), cmds.map((cmd) => (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsxs(Text, { color: Colors.AccentCyan, children: [" /", cmd.name] }), cmd.altName && _jsxs(Text, { dimColor: true, children: [" (/", cmd.altName, ")"] }), _jsxs(Text, { dimColor: true, children: [" ", cmd.description] })] }), cmd.subcommands &&
|
|
26
|
+
cmd.subcommands.map((sub) => (_jsxs(Text, { children: [_jsxs(Text, { color: Colors.Gray, children: [" ", sub.name] }), sub.altName && _jsxs(Text, { dimColor: true, children: [" (", sub.altName, ")"] }), _jsxs(Text, { dimColor: true, children: [" ", sub.description] })] }, sub.name)))] }, cmd.name))), _jsx(Text, {})] }, category.name));
|
|
27
|
+
}), _jsx(Text, { bold: true, color: Colors.AccentYellow, children: "Keyboard Shortcuts:" }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "Enter" }), " Send message / Execute command"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "Tab" }), " Toggle thinking display"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "Shift+Tab" }), " Toggle auto-approve (YOLO)"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "Ctrl+E" }), " Expand/collapse documents"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "ESC" }), " Cancel / Close dialogs"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "Ctrl+C" }), " Exit application"] }), _jsx(Text, {}), _jsx(Text, { bold: true, color: Colors.AccentYellow, children: "Input Features:" }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "\u2191/\u2193" }), " Navigate history / autocomplete"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "Shift+Enter" }), " Multi-line input"] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: Colors.AccentCyan, children: "/" }), " Open command palette"] }), _jsx(Text, {}), _jsx(Text, { dimColor: true, children: "Press ESC, Enter, or 'q' to close" })] }));
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Show interactive help screen
|
|
31
|
+
*
|
|
32
|
+
* Renders the unified help display showing all commands from core registry.
|
|
33
|
+
* This is the imperative entry point for fuzzycortex.
|
|
34
|
+
*
|
|
35
|
+
* @returns Promise that resolves when help is closed
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* await showHelp();
|
|
40
|
+
* // Help screen is displayed, user presses ESC to close
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export async function showHelp() {
|
|
44
|
+
return new Promise((resolve) => {
|
|
45
|
+
const { unmount, waitUntilExit } = render(_jsx(HelpDisplay, { onClose: () => {
|
|
46
|
+
unmount();
|
|
47
|
+
resolve();
|
|
48
|
+
} }));
|
|
49
|
+
waitUntilExit().catch(() => {
|
|
50
|
+
resolve();
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
export default showHelp;
|
|
55
|
+
//# sourceMappingURL=InkHelp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InkHelp.js","sourceRoot":"","sources":["../../src/ui/InkHelp.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ink-based Menu Picker for fuzzycortex
|
|
3
|
+
*
|
|
4
|
+
* This wraps the same MenuRenderer component used in neoncortex,
|
|
5
|
+
* providing a unified visual experience across both CLI modes.
|
|
6
|
+
*
|
|
7
|
+
* Uses Ink's render() to display the React component from within
|
|
8
|
+
* the readline-based fuzzycortex interactive loop.
|
|
9
|
+
*/
|
|
10
|
+
import type { InteractiveMenuDefinition, MenuResult } from '@nexus-cortex/core';
|
|
11
|
+
export type { InteractiveMenuDefinition, MenuResult };
|
|
12
|
+
/**
|
|
13
|
+
* Show an interactive menu using Ink rendering
|
|
14
|
+
*
|
|
15
|
+
* This creates an Ink app, renders the MenuRenderer,
|
|
16
|
+
* and returns when the user completes the menu.
|
|
17
|
+
*/
|
|
18
|
+
export declare function showInteractiveMenu(definition: InteractiveMenuDefinition, initialValues: Record<string, unknown>, onLiveUpdate?: (key: string, value: unknown) => Promise<void>): Promise<MenuResult>;
|
|
19
|
+
//# sourceMappingURL=InkMenuPicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InkMenuPicker.d.ts","sourceRoot":"","sources":["../../src/ui/InkMenuPicker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhF,YAAY,EAAE,yBAAyB,EAAE,UAAU,EAAE,CAAC;AA6BtD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,yBAAyB,EACrC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAC5D,OAAO,CAAC,UAAU,CAAC,CAwBrB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { render } from 'ink';
|
|
3
|
+
import { MenuRenderer } from '../ink-ui/components/MenuRenderer.js';
|
|
4
|
+
/**
|
|
5
|
+
* Wrapper component that handles the menu lifecycle
|
|
6
|
+
*/
|
|
7
|
+
const MenuPickerApp = ({ definition, initialValues, onComplete, onLiveUpdate, }) => {
|
|
8
|
+
return (_jsx(MenuRenderer, { definition: definition, initialValues: initialValues, onComplete: onComplete, onLiveUpdate: onLiveUpdate, isActive: true }));
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Show an interactive menu using Ink rendering
|
|
12
|
+
*
|
|
13
|
+
* This creates an Ink app, renders the MenuRenderer,
|
|
14
|
+
* and returns when the user completes the menu.
|
|
15
|
+
*/
|
|
16
|
+
export async function showInteractiveMenu(definition, initialValues, onLiveUpdate) {
|
|
17
|
+
return new Promise((resolve) => {
|
|
18
|
+
// Create the Ink app
|
|
19
|
+
const { unmount, waitUntilExit } = render(_jsx(MenuPickerApp, { definition: definition, initialValues: initialValues, onComplete: (result) => {
|
|
20
|
+
unmount();
|
|
21
|
+
resolve(result);
|
|
22
|
+
}, onLiveUpdate: onLiveUpdate }));
|
|
23
|
+
// Handle cleanup on exit
|
|
24
|
+
waitUntilExit().catch(() => {
|
|
25
|
+
resolve({
|
|
26
|
+
action: 'cancel',
|
|
27
|
+
changes: {},
|
|
28
|
+
hasChanges: false,
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=InkMenuPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InkMenuPicker.js","sourceRoot":"","sources":["../../src/ui/InkMenuPicker.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAapE;;GAEG;AACH,MAAM,aAAa,GAAiC,CAAC,EACnD,UAAU,EACV,aAAa,EACb,UAAU,EACV,YAAY,GACb,EAAE,EAAE;IACH,OAAO,CACL,KAAC,YAAY,IACX,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,IAAI,GACd,CACH,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAqC,EACrC,aAAsC,EACtC,YAA6D;IAE7D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,qBAAqB;QACrB,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CACvC,KAAC,aAAa,IACZ,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;gBACrB,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,EACD,YAAY,EAAE,YAAY,GAC1B,CACH,CAAC;QAEF,yBAAyB;QACzB,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;YACzB,OAAO,CAAC;gBACN,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ink-based Model Picker for fuzzycortex
|
|
3
|
+
*
|
|
4
|
+
* This wraps the same ModelPickerDialog component used in neoncortex,
|
|
5
|
+
* providing a unified visual experience across both CLI modes.
|
|
6
|
+
*
|
|
7
|
+
* Uses Ink's render() to display the React component from within
|
|
8
|
+
* the readline-based fuzzycortex interactive loop.
|
|
9
|
+
*/
|
|
10
|
+
import type { ModelDisplayInfo, ModelPickerResult } from '@nexus-cortex/core';
|
|
11
|
+
export type { ModelDisplayInfo, ModelPickerResult };
|
|
12
|
+
/**
|
|
13
|
+
* Show the model picker using Ink rendering
|
|
14
|
+
*
|
|
15
|
+
* This creates an Ink app, renders the ModelPickerDialog,
|
|
16
|
+
* and returns when the user makes a selection or cancels.
|
|
17
|
+
*/
|
|
18
|
+
export declare function showModelPicker(models: ModelDisplayInfo[], currentModelId: string): Promise<ModelPickerResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Run the model picker with callback for model switching
|
|
21
|
+
*/
|
|
22
|
+
export declare function runModelPicker(models: ModelDisplayInfo[], currentModelId: string, onSelect: (modelId: string) => Promise<void>): Promise<void>;
|
|
23
|
+
//# sourceMappingURL=InkModelPicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InkModelPicker.d.ts","sourceRoot":"","sources":["../../src/ui/InkModelPicker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG9E,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;AAyCpD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EAAE,EAC1B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAwB5B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,gBAAgB,EAAE,EAC1B,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { render } from 'ink';
|
|
3
|
+
import { ModelPickerDialog } from '../ink-ui/components/ModelPickerDialog.js';
|
|
4
|
+
import { persistModelForPlatform } from '@nexus-cortex/cli/dist/themes/colors.js';
|
|
5
|
+
// Platform identifier
|
|
6
|
+
const PLATFORM = 'fuzzycortex';
|
|
7
|
+
/**
|
|
8
|
+
* Wrapper component that handles the picker lifecycle
|
|
9
|
+
*/
|
|
10
|
+
const ModelPickerApp = ({ models, currentModelId, onComplete, }) => {
|
|
11
|
+
const handleSelect = (modelId) => {
|
|
12
|
+
// Persist model choice for fuzzycortex platform
|
|
13
|
+
persistModelForPlatform(PLATFORM, modelId);
|
|
14
|
+
onComplete({ selected: true, modelId });
|
|
15
|
+
};
|
|
16
|
+
const handleCancel = () => {
|
|
17
|
+
onComplete({ selected: false });
|
|
18
|
+
};
|
|
19
|
+
return (_jsx(ModelPickerDialog, { models: models, currentModelId: currentModelId, onSelect: handleSelect, onCancel: handleCancel, loading: false }));
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Show the model picker using Ink rendering
|
|
23
|
+
*
|
|
24
|
+
* This creates an Ink app, renders the ModelPickerDialog,
|
|
25
|
+
* and returns when the user makes a selection or cancels.
|
|
26
|
+
*/
|
|
27
|
+
export async function showModelPicker(models, currentModelId) {
|
|
28
|
+
return new Promise((resolve) => {
|
|
29
|
+
if (models.length === 0) {
|
|
30
|
+
resolve({ selected: false });
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// Create the Ink app
|
|
34
|
+
const { unmount, waitUntilExit } = render(_jsx(ModelPickerApp, { models: models, currentModelId: currentModelId, onComplete: (result) => {
|
|
35
|
+
unmount();
|
|
36
|
+
resolve(result);
|
|
37
|
+
} }));
|
|
38
|
+
// Handle cleanup on exit
|
|
39
|
+
waitUntilExit().catch(() => {
|
|
40
|
+
resolve({ selected: false });
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Run the model picker with callback for model switching
|
|
46
|
+
*/
|
|
47
|
+
export async function runModelPicker(models, currentModelId, onSelect) {
|
|
48
|
+
const result = await showModelPicker(models, currentModelId);
|
|
49
|
+
if (result.selected && result.modelId) {
|
|
50
|
+
await onSelect(result.modelId);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=InkModelPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InkModelPicker.js","sourceRoot":"","sources":["../../src/ui/InkModelPicker.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAiB,MAAM,yCAAyC,CAAC;AAMjG,sBAAsB;AACtB,MAAM,QAAQ,GAAa,aAAa,CAAC;AAQzC;;GAEG;AACH,MAAM,cAAc,GAAkC,CAAC,EACrD,MAAM,EACN,cAAc,EACd,UAAU,GACX,EAAE,EAAE;IAEH,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,EAAE;QACvC,gDAAgD;QAChD,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3C,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,iBAAiB,IAChB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,KAAK,GACd,CACH,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAA0B,EAC1B,cAAsB;IAEtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CACvC,KAAC,cAAc,IACb,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;gBACrB,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,GACD,CACH,CAAC;QAEF,yBAAyB;QACzB,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;YACzB,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAA0B,EAC1B,cAAsB,EACtB,QAA4C;IAE5C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAE7D,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple Streaming Output Handler
|
|
3
|
+
*
|
|
4
|
+
* During streaming: Just outputs text normally, captures keystrokes for queuing
|
|
5
|
+
* No scroll regions, no fancy input frame - just reliable output
|
|
6
|
+
*/
|
|
7
|
+
export interface PersistentInputOptions {
|
|
8
|
+
getStatusState: () => any;
|
|
9
|
+
theme: any;
|
|
10
|
+
onToggleThinking?: () => void;
|
|
11
|
+
onToggleAutoApprove?: () => void;
|
|
12
|
+
onToggleDocuments?: () => void;
|
|
13
|
+
onEscape?: () => void;
|
|
14
|
+
}
|
|
15
|
+
export declare class PersistentInput {
|
|
16
|
+
private options;
|
|
17
|
+
private queuedMessages;
|
|
18
|
+
private isStreaming;
|
|
19
|
+
private inputHandler;
|
|
20
|
+
private currentInput;
|
|
21
|
+
private spinnerTimer;
|
|
22
|
+
private spinnerFrame;
|
|
23
|
+
private spinnerStartTime;
|
|
24
|
+
private spinnerPhase;
|
|
25
|
+
private spinnerVisible;
|
|
26
|
+
constructor(options: PersistentInputOptions);
|
|
27
|
+
/**
|
|
28
|
+
* Start streaming mode - captures keystrokes but doesn't show input box
|
|
29
|
+
*/
|
|
30
|
+
startCapture(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Stop streaming mode
|
|
33
|
+
*/
|
|
34
|
+
stopCapture(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Handle keystrokes during streaming
|
|
37
|
+
*/
|
|
38
|
+
private handleInput;
|
|
39
|
+
/**
|
|
40
|
+
* Get and clear queued messages
|
|
41
|
+
*/
|
|
42
|
+
getQueuedMessages(): string[];
|
|
43
|
+
/**
|
|
44
|
+
* Check if there are queued messages
|
|
45
|
+
*/
|
|
46
|
+
hasQueuedMessages(): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Pause input capture (for permission dialogs)
|
|
49
|
+
*/
|
|
50
|
+
pause(): void;
|
|
51
|
+
/**
|
|
52
|
+
* Resume input capture after pause
|
|
53
|
+
*/
|
|
54
|
+
resume(): void;
|
|
55
|
+
/**
|
|
56
|
+
* Check if currently capturing
|
|
57
|
+
*/
|
|
58
|
+
isCapturing(): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Write output to stdout, respecting the spinner.
|
|
61
|
+
* If the spinner is active, clears the spinner line before writing,
|
|
62
|
+
* then re-renders it after — prevents garbled interleaving.
|
|
63
|
+
*/
|
|
64
|
+
writeOutput(text: string): void;
|
|
65
|
+
/**
|
|
66
|
+
* Print a line (with trailing newline), respecting the spinner.
|
|
67
|
+
*/
|
|
68
|
+
printLine(text?: string): void;
|
|
69
|
+
/**
|
|
70
|
+
* Show animated thinking indicator with spinner, phase, and elapsed time
|
|
71
|
+
*/
|
|
72
|
+
showThinking(): void;
|
|
73
|
+
/**
|
|
74
|
+
* Update the spinner phase (e.g. "Running ReadFile", "Generating")
|
|
75
|
+
*/
|
|
76
|
+
setPhase(phase: string): void;
|
|
77
|
+
/**
|
|
78
|
+
* Clear thinking indicator (replace with newline)
|
|
79
|
+
*/
|
|
80
|
+
clearThinking(): void;
|
|
81
|
+
/**
|
|
82
|
+
* Get elapsed time since spinner started
|
|
83
|
+
*/
|
|
84
|
+
getElapsed(): number;
|
|
85
|
+
private renderSpinnerFrame;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Create a persistent input instance
|
|
89
|
+
*/
|
|
90
|
+
export declare function createPersistentInput(options: PersistentInputOptions): PersistentInput;
|
|
91
|
+
//# sourceMappingURL=PersistentInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PersistentInput.d.ts","sourceRoot":"","sources":["../../src/ui/PersistentInput.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,GAAG,CAAC;IAC1B,KAAK,EAAE,GAAG,CAAC;IACX,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,YAAY,CAAyC;IAC7D,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,cAAc,CAAkB;gBAE5B,OAAO,EAAE,sBAAsB;IAI3C;;OAEG;IACH,YAAY,IAAI,IAAI;IAmBpB;;OAEG;IACH,WAAW,IAAI,IAAI;IAyBnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAkEnB;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAM7B;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAqBb;;OAEG;IACH,MAAM,IAAI,IAAI;IAqBd;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAU/B;;OAEG;IACH,SAAS,CAAC,IAAI,GAAE,MAAW,GAAG,IAAI;IAUlC;;OAEG;IACH,YAAY,IAAI,IAAI;IASpB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B;;OAEG;IACH,aAAa,IAAI,IAAI;IAWrB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB,OAAO,CAAC,kBAAkB;CAO3B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAEtF"}
|