@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,182 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* MultiLineInput - A growing text input component for Ink
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Multi-line text that grows as you type
|
|
7
|
+
* - Proper cursor navigation
|
|
8
|
+
* - Handles paste correctly
|
|
9
|
+
* - Wraps long lines visually
|
|
10
|
+
*/
|
|
11
|
+
import { useState } from 'react';
|
|
12
|
+
import { Box, Text, useInput, useApp } from 'ink';
|
|
13
|
+
import chalk from 'chalk';
|
|
14
|
+
export const MultiLineInput = ({ onSubmit, placeholder = 'Type your message...', prompt = '> ', focus = true, promptColor = chalk.cyan, textColor = chalk.white, placeholderColor = chalk.gray, }) => {
|
|
15
|
+
const [lines, setLines] = useState(['']);
|
|
16
|
+
const [cursorRow, setCursorRow] = useState(0);
|
|
17
|
+
const [cursorCol, setCursorCol] = useState(0);
|
|
18
|
+
const { exit } = useApp();
|
|
19
|
+
const text = lines.join('\n');
|
|
20
|
+
const isEmpty = text === '';
|
|
21
|
+
// Get current line safely
|
|
22
|
+
const currentLine = lines[cursorRow] || '';
|
|
23
|
+
useInput((input, key) => {
|
|
24
|
+
if (!focus)
|
|
25
|
+
return;
|
|
26
|
+
// Submit on Enter (without shift/ctrl for multi-line)
|
|
27
|
+
if (key.return && !key.shift && !key.ctrl) {
|
|
28
|
+
if (text.trim()) {
|
|
29
|
+
onSubmit(text);
|
|
30
|
+
setLines(['']);
|
|
31
|
+
setCursorRow(0);
|
|
32
|
+
setCursorCol(0);
|
|
33
|
+
}
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
// New line on Shift+Enter
|
|
37
|
+
if (key.return && key.shift) {
|
|
38
|
+
const newLines = [...lines];
|
|
39
|
+
const before = currentLine.slice(0, cursorCol);
|
|
40
|
+
const after = currentLine.slice(cursorCol);
|
|
41
|
+
newLines[cursorRow] = before;
|
|
42
|
+
newLines.splice(cursorRow + 1, 0, after);
|
|
43
|
+
setLines(newLines);
|
|
44
|
+
setCursorRow(cursorRow + 1);
|
|
45
|
+
setCursorCol(0);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
// Backspace
|
|
49
|
+
if (key.backspace || key.delete) {
|
|
50
|
+
if (cursorCol > 0) {
|
|
51
|
+
// Delete character before cursor
|
|
52
|
+
const newLines = [...lines];
|
|
53
|
+
newLines[cursorRow] = currentLine.slice(0, cursorCol - 1) + currentLine.slice(cursorCol);
|
|
54
|
+
setLines(newLines);
|
|
55
|
+
setCursorCol(cursorCol - 1);
|
|
56
|
+
}
|
|
57
|
+
else if (cursorRow > 0) {
|
|
58
|
+
// Join with previous line
|
|
59
|
+
const newLines = [...lines];
|
|
60
|
+
const prevLine = newLines[cursorRow - 1] || '';
|
|
61
|
+
const newCol = prevLine.length;
|
|
62
|
+
newLines[cursorRow - 1] = prevLine + currentLine;
|
|
63
|
+
newLines.splice(cursorRow, 1);
|
|
64
|
+
setLines(newLines);
|
|
65
|
+
setCursorRow(cursorRow - 1);
|
|
66
|
+
setCursorCol(newCol);
|
|
67
|
+
}
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// Arrow keys
|
|
71
|
+
if (key.leftArrow) {
|
|
72
|
+
if (cursorCol > 0) {
|
|
73
|
+
setCursorCol(cursorCol - 1);
|
|
74
|
+
}
|
|
75
|
+
else if (cursorRow > 0) {
|
|
76
|
+
setCursorRow(cursorRow - 1);
|
|
77
|
+
setCursorCol((lines[cursorRow - 1] || '').length);
|
|
78
|
+
}
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (key.rightArrow) {
|
|
82
|
+
if (cursorCol < currentLine.length) {
|
|
83
|
+
setCursorCol(cursorCol + 1);
|
|
84
|
+
}
|
|
85
|
+
else if (cursorRow < lines.length - 1) {
|
|
86
|
+
setCursorRow(cursorRow + 1);
|
|
87
|
+
setCursorCol(0);
|
|
88
|
+
}
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (key.upArrow) {
|
|
92
|
+
if (cursorRow > 0) {
|
|
93
|
+
setCursorRow(cursorRow - 1);
|
|
94
|
+
setCursorCol(Math.min(cursorCol, (lines[cursorRow - 1] || '').length));
|
|
95
|
+
}
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (key.downArrow) {
|
|
99
|
+
if (cursorRow < lines.length - 1) {
|
|
100
|
+
setCursorRow(cursorRow + 1);
|
|
101
|
+
setCursorCol(Math.min(cursorCol, (lines[cursorRow + 1] || '').length));
|
|
102
|
+
}
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
// Home/End
|
|
106
|
+
if (key.ctrl && input === 'a') {
|
|
107
|
+
setCursorCol(0);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (key.ctrl && input === 'e') {
|
|
111
|
+
setCursorCol(currentLine.length);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
// Escape - could cancel or do nothing
|
|
115
|
+
if (key.escape) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// Ctrl+C - exit
|
|
119
|
+
if (key.ctrl && input === 'c') {
|
|
120
|
+
exit();
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
// Regular character input (including paste)
|
|
124
|
+
if (input && !key.ctrl && !key.meta) {
|
|
125
|
+
// Handle multi-line paste
|
|
126
|
+
const pastedLines = input.split('\n');
|
|
127
|
+
if (pastedLines.length === 1) {
|
|
128
|
+
// Single line - insert at cursor
|
|
129
|
+
const newLines = [...lines];
|
|
130
|
+
newLines[cursorRow] = currentLine.slice(0, cursorCol) + input + currentLine.slice(cursorCol);
|
|
131
|
+
setLines(newLines);
|
|
132
|
+
setCursorCol(cursorCol + input.length);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
// Multi-line paste
|
|
136
|
+
const newLines = [...lines];
|
|
137
|
+
const before = currentLine.slice(0, cursorCol);
|
|
138
|
+
const after = currentLine.slice(cursorCol);
|
|
139
|
+
// First pasted line joins with content before cursor
|
|
140
|
+
newLines[cursorRow] = before + pastedLines[0];
|
|
141
|
+
// Middle lines inserted as-is
|
|
142
|
+
for (let i = 1; i < pastedLines.length - 1; i++) {
|
|
143
|
+
const middleLine = pastedLines[i];
|
|
144
|
+
if (middleLine !== undefined) {
|
|
145
|
+
newLines.splice(cursorRow + i, 0, middleLine);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Last pasted line joins with content after cursor
|
|
149
|
+
const lastPastedLine = pastedLines[pastedLines.length - 1] ?? '';
|
|
150
|
+
newLines.splice(cursorRow + pastedLines.length - 1, 0, lastPastedLine + after);
|
|
151
|
+
// Remove the original line's remainder if we split it
|
|
152
|
+
if (pastedLines.length > 1) {
|
|
153
|
+
newLines.splice(cursorRow + pastedLines.length, 1);
|
|
154
|
+
}
|
|
155
|
+
setLines(newLines);
|
|
156
|
+
setCursorRow(cursorRow + pastedLines.length - 1);
|
|
157
|
+
setCursorCol(lastPastedLine.length);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}, { isActive: focus });
|
|
161
|
+
// Render lines with cursor
|
|
162
|
+
const renderLines = () => {
|
|
163
|
+
if (isEmpty) {
|
|
164
|
+
return (_jsxs(Box, { children: [_jsx(Text, { children: promptColor(prompt) }), _jsx(Text, { children: placeholderColor(placeholder) }), _jsx(Text, { inverse: true, children: " " })] }));
|
|
165
|
+
}
|
|
166
|
+
return lines.map((line, rowIndex) => {
|
|
167
|
+
const isCurrentRow = rowIndex === cursorRow;
|
|
168
|
+
const showPrompt = rowIndex === 0;
|
|
169
|
+
if (isCurrentRow) {
|
|
170
|
+
// Show cursor on this line
|
|
171
|
+
const before = line.slice(0, cursorCol);
|
|
172
|
+
const cursorChar = line[cursorCol] || ' ';
|
|
173
|
+
const after = line.slice(cursorCol + 1);
|
|
174
|
+
return (_jsxs(Box, { children: [_jsx(Text, { children: showPrompt ? promptColor(prompt) : ' ' }), _jsx(Text, { children: textColor(before) }), _jsx(Text, { inverse: true, children: cursorChar }), _jsx(Text, { children: textColor(after) })] }, `line-${rowIndex}`));
|
|
175
|
+
}
|
|
176
|
+
return (_jsxs(Box, { children: [_jsx(Text, { children: showPrompt ? promptColor(prompt) : ' ' }), _jsx(Text, { children: textColor(line) })] }, `line-${rowIndex}`));
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
return (_jsx(Box, { flexDirection: "column", children: renderLines() }));
|
|
180
|
+
};
|
|
181
|
+
export default MultiLineInput;
|
|
182
|
+
//# sourceMappingURL=MultiLineInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiLineInput.js","sourceRoot":"","sources":["../../../src/ui/components/MultiLineInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PermissionsBrowser - Interactive permissions viewer
|
|
3
|
+
*
|
|
4
|
+
* Browse and view permission modes, policies, and tool permissions
|
|
5
|
+
* in an interactive terminal UI.
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
8
|
+
interface PermissionsBrowserProps {
|
|
9
|
+
/** Server URL */
|
|
10
|
+
serverUrl?: string;
|
|
11
|
+
/** Callback when user exits browser */
|
|
12
|
+
onExit?: () => void;
|
|
13
|
+
}
|
|
14
|
+
export declare const PermissionsBrowser: React.FC<PermissionsBrowserProps>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=PermissionsBrowser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionsBrowser.d.ts","sourceRoot":"","sources":["../../../src/ui/components/PermissionsBrowser.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AA0BnD,UAAU,uBAAuB;IAC/B,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA8RhE,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* PermissionsBrowser - Interactive permissions viewer
|
|
4
|
+
*
|
|
5
|
+
* Browse and view permission modes, policies, and tool permissions
|
|
6
|
+
* in an interactive terminal UI.
|
|
7
|
+
*/
|
|
8
|
+
import { useState, useEffect } from 'react';
|
|
9
|
+
import { Box, Text, useInput } from 'ink';
|
|
10
|
+
import SelectInput from 'ink-select-input';
|
|
11
|
+
import Spinner from 'ink-spinner';
|
|
12
|
+
import { CortexClient } from '@nexus-cortex/cli/dist/client/CortexClient.js';
|
|
13
|
+
export const PermissionsBrowser = ({ serverUrl = 'http://localhost:4000', onExit, }) => {
|
|
14
|
+
const [viewMode, setViewMode] = useState('menu');
|
|
15
|
+
const [loading, setLoading] = useState(false);
|
|
16
|
+
const [error, setError] = useState(null);
|
|
17
|
+
// Data states
|
|
18
|
+
const [approvalMode, setApprovalMode] = useState(null);
|
|
19
|
+
const [policies, setPolicies] = useState([]);
|
|
20
|
+
const [toolPermissions, setToolPermissions] = useState({});
|
|
21
|
+
// Handle keyboard input
|
|
22
|
+
useInput((input, key) => {
|
|
23
|
+
if (key.escape || (input === 'q' && viewMode !== 'menu')) {
|
|
24
|
+
setViewMode('menu');
|
|
25
|
+
setError(null);
|
|
26
|
+
}
|
|
27
|
+
if (key.ctrl && input === 'c') {
|
|
28
|
+
onExit?.();
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
// Fetch data based on view mode
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (viewMode === 'menu')
|
|
34
|
+
return;
|
|
35
|
+
const fetchData = async () => {
|
|
36
|
+
setLoading(true);
|
|
37
|
+
setError(null);
|
|
38
|
+
const client = new CortexClient(serverUrl);
|
|
39
|
+
try {
|
|
40
|
+
switch (viewMode) {
|
|
41
|
+
case 'mode':
|
|
42
|
+
const mode = await client.getApprovalMode();
|
|
43
|
+
setApprovalMode(mode);
|
|
44
|
+
break;
|
|
45
|
+
case 'policies':
|
|
46
|
+
const policiesResp = await client.get('/permissions/policies');
|
|
47
|
+
setPolicies(policiesResp.policies || []);
|
|
48
|
+
break;
|
|
49
|
+
case 'tools':
|
|
50
|
+
const toolsResp = await client.get('/permissions/tools');
|
|
51
|
+
setToolPermissions(toolsResp.permissions || {});
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
setLoading(false);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
setError(err.message);
|
|
58
|
+
setLoading(false);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
fetchData();
|
|
62
|
+
}, [viewMode, serverUrl]);
|
|
63
|
+
const handleMenuSelect = (item) => {
|
|
64
|
+
if (item.value === 'menu') {
|
|
65
|
+
onExit?.();
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
setViewMode(item.value);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const renderMenu = () => (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: "magenta", children: " Permissions Browser" }) }), _jsx(Text, { dimColor: true, children: "Select a view:" }), _jsx(Box, { marginTop: 1, children: _jsx(SelectInput, { items: [
|
|
72
|
+
{ label: ' Permission Mode', value: 'mode' },
|
|
73
|
+
{ label: ' Active Policies', value: 'policies' },
|
|
74
|
+
{ label: ' Tool Permissions', value: 'tools' },
|
|
75
|
+
{ label: '← Exit', value: 'menu' },
|
|
76
|
+
], onSelect: handleMenuSelect }) })] }));
|
|
77
|
+
const renderMode = () => {
|
|
78
|
+
if (loading) {
|
|
79
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: _jsx(Spinner, { type: "dots" }) }), _jsx(Text, { children: " Loading permission mode..." })] }));
|
|
80
|
+
}
|
|
81
|
+
if (!approvalMode)
|
|
82
|
+
return null;
|
|
83
|
+
let mode;
|
|
84
|
+
if (approvalMode.yoloMode) {
|
|
85
|
+
mode = 'auto (YOLO)';
|
|
86
|
+
}
|
|
87
|
+
else if (approvalMode.autoApproveActions) {
|
|
88
|
+
mode = 'interactive (auto-approve)';
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
mode = 'interactive';
|
|
92
|
+
}
|
|
93
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: "cyan", children: " Permission Mode" }) }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { children: [_jsx(Text, { color: "green", children: "Current Mode: " }), _jsx(Text, { bold: true, color: approvalMode.yoloMode ? 'yellow' : 'white', children: mode })] }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { children: [_jsx(Text, { color: "green", children: "Auto-Approve: " }), _jsx(Text, { color: approvalMode.autoApproveActions ? 'green' : 'red', children: approvalMode.autoApproveActions ? 'enabled' : 'disabled' })] }) }), approvalMode.yoloMode && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "yellow", children: "\u26A0 YOLO Mode active - All actions auto-approved!" }) })), approvalMode.context && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["Context: ", approvalMode.context] }) }))] }), _jsxs(Box, { marginTop: 2, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "Available modes:" }), _jsx(Text, { dimColor: true, children: " \u2022 interactive - Prompt for approval on each tool" }), _jsx(Text, { dimColor: true, children: " \u2022 auto - Auto-approve all tools (YOLO)" })] }), _jsx(Box, { marginTop: 2, children: _jsx(Text, { dimColor: true, children: "Press ESC or Q to return to menu" }) })] }));
|
|
94
|
+
};
|
|
95
|
+
const renderPolicies = () => {
|
|
96
|
+
if (loading) {
|
|
97
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: _jsx(Spinner, { type: "dots" }) }), _jsx(Text, { children: " Loading policies..." })] }));
|
|
98
|
+
}
|
|
99
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { bold: true, color: "cyan", children: [" Active Policies (", policies.length, ")"] }) }), policies.length === 0 ? (_jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "No active policies configured." }) })) : (_jsx(Box, { flexDirection: "column", marginTop: 1, children: policies.map((policy, index) => (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, color: "white", children: policy.name }), _jsxs(Box, { marginLeft: 2, flexDirection: "column", children: [_jsxs(Text, { children: [_jsx(Text, { color: "green", children: "Type: " }), _jsx(Text, { children: policy.type })] }), _jsxs(Text, { children: [_jsx(Text, { color: "green", children: "Status: " }), _jsx(Text, { color: policy.enabled ? 'green' : 'red', children: policy.enabled ? 'Enabled' : 'Disabled' })] }), policy.description && (_jsx(Text, { dimColor: true, children: policy.description }))] })] }, index))) })), _jsx(Box, { marginTop: 2, children: _jsx(Text, { dimColor: true, children: "Press ESC or Q to return to menu" }) })] }));
|
|
100
|
+
};
|
|
101
|
+
const renderTools = () => {
|
|
102
|
+
if (loading) {
|
|
103
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: _jsx(Spinner, { type: "dots" }) }), _jsx(Text, { children: " Loading tool permissions..." })] }));
|
|
104
|
+
}
|
|
105
|
+
const toolEntries = Object.entries(toolPermissions);
|
|
106
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { bold: true, color: "cyan", children: [" Tool Permissions (", toolEntries.length, ")"] }) }), toolEntries.length === 0 ? (_jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "No tool permissions configured." }) })) : (_jsx(Box, { flexDirection: "column", marginTop: 1, children: toolEntries.map(([toolName, permission], index) => (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Text, { children: [_jsxs(Text, { color: "white", children: [toolName, ": "] }), _jsx(Text, { color: permission.granted ? 'green' : 'red', children: permission.granted ? '✓ Granted' : '✗ Denied' })] }), permission.reason && (_jsx(Box, { marginLeft: 2, children: _jsx(Text, { dimColor: true, children: permission.reason }) }))] }, index))) })), _jsxs(Box, { marginTop: 2, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "Manage permissions:" }), _jsx(Text, { dimColor: true, children: " cortex permissions grant <tool>" }), _jsx(Text, { dimColor: true, children: " cortex permissions revoke <tool>" })] }), _jsx(Box, { marginTop: 2, children: _jsx(Text, { dimColor: true, children: "Press ESC or Q to return to menu" }) })] }));
|
|
107
|
+
};
|
|
108
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [error ? (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: "red", children: ["\u2717 Error: ", error] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Press ESC or Q to return to menu" }) })] })) : (_jsxs(_Fragment, { children: [viewMode === 'menu' && renderMenu(), viewMode === 'mode' && renderMode(), viewMode === 'policies' && renderPolicies(), viewMode === 'tools' && renderTools()] })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Press Ctrl+C to exit" }) })] }));
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=PermissionsBrowser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionsBrowser.js","sourceRoot":"","sources":["../../../src/ui/components/PermissionsBrowser.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SessionBrowser Component
|
|
3
|
+
* Interactive UI for browsing and selecting chat sessions
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
export interface Session {
|
|
7
|
+
id: string;
|
|
8
|
+
model: string;
|
|
9
|
+
messageCount: number;
|
|
10
|
+
created: string;
|
|
11
|
+
lastActive?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SessionBrowserProps {
|
|
14
|
+
serverUrl?: string;
|
|
15
|
+
onSelect: (session: Session) => void;
|
|
16
|
+
onExit: () => void;
|
|
17
|
+
}
|
|
18
|
+
export declare const SessionBrowser: React.FC<SessionBrowserProps>;
|
|
19
|
+
//# sourceMappingURL=SessionBrowser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionBrowser.d.ts","sourceRoot":"","sources":["../../../src/ui/components/SessionBrowser.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAOD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAwGxD,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* SessionBrowser Component
|
|
4
|
+
* Interactive UI for browsing and selecting chat sessions
|
|
5
|
+
*/
|
|
6
|
+
import { useState, useEffect } from 'react';
|
|
7
|
+
import { Box, Text } from 'ink';
|
|
8
|
+
import SelectInput from 'ink-select-input';
|
|
9
|
+
import Spinner from 'ink-spinner';
|
|
10
|
+
import { CortexClient } from '@nexus-cortex/cli/dist/client/CortexClient.js';
|
|
11
|
+
export const SessionBrowser = ({ serverUrl = 'http://localhost:4000', onSelect, onExit, }) => {
|
|
12
|
+
const [sessions, setSessions] = useState([]);
|
|
13
|
+
const [loading, setLoading] = useState(true);
|
|
14
|
+
const [error, setError] = useState(null);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
const client = new CortexClient(serverUrl);
|
|
17
|
+
client
|
|
18
|
+
.get('/sessions')
|
|
19
|
+
.then((data) => {
|
|
20
|
+
// Handle both array and object with sessions property
|
|
21
|
+
const sessionList = Array.isArray(data) ? data : data.sessions || [];
|
|
22
|
+
setSessions(sessionList);
|
|
23
|
+
setLoading(false);
|
|
24
|
+
})
|
|
25
|
+
.catch((err) => {
|
|
26
|
+
setError(err.message);
|
|
27
|
+
setLoading(false);
|
|
28
|
+
});
|
|
29
|
+
}, [serverUrl]);
|
|
30
|
+
// Loading state
|
|
31
|
+
if (loading) {
|
|
32
|
+
return (_jsx(Box, { flexDirection: "column", padding: 1, children: _jsxs(Text, { color: "cyan", children: [_jsx(Spinner, { type: "dots" }), " Loading sessions..."] }) }));
|
|
33
|
+
}
|
|
34
|
+
// Error state
|
|
35
|
+
if (error) {
|
|
36
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsxs(Text, { color: "red", children: ["\u2717 Error loading sessions: ", error] }), _jsx(Text, { color: "gray", dimColor: true, children: "Press any key to exit" })] }));
|
|
37
|
+
}
|
|
38
|
+
// No sessions found
|
|
39
|
+
if (sessions.length === 0) {
|
|
40
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Text, { color: "yellow", children: "\u26A0 No sessions found" }), _jsx(Text, { color: "gray", dimColor: true, children: "Start a new chat to create a session" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", dimColor: true, children: "Press any key to exit" }) })] }));
|
|
41
|
+
}
|
|
42
|
+
// Format sessions for selection
|
|
43
|
+
const items = sessions.map((session) => {
|
|
44
|
+
const sessionId = session.id.slice(0, 8);
|
|
45
|
+
const messageInfo = `${session.messageCount || 0} messages`;
|
|
46
|
+
const dateInfo = session.created
|
|
47
|
+
? new Date(session.created).toLocaleDateString()
|
|
48
|
+
: 'Unknown date';
|
|
49
|
+
return {
|
|
50
|
+
label: `${sessionId} - ${session.model} - ${messageInfo} - ${dateInfo}`,
|
|
51
|
+
value: session,
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
// Add exit option
|
|
55
|
+
items.push({ label: '← Exit', value: null });
|
|
56
|
+
const handleSelect = (item) => {
|
|
57
|
+
if (item.value) {
|
|
58
|
+
onSelect(item.value);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
onExit();
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Session Browser" }), _jsx(Text, { color: "gray", dimColor: true, children: "Use \u2191/\u2193 to navigate, Enter to select, Ctrl+C to exit" }), _jsx(Box, { marginTop: 1, children: _jsx(SelectInput, { items: items, onSelect: handleSelect }) })] }));
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=SessionBrowser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionBrowser.js","sourceRoot":"","sources":["../../../src/ui/components/SessionBrowser.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StatusBar - Displays current mode/state below the input
|
|
3
|
+
*
|
|
4
|
+
* Shows:
|
|
5
|
+
* - Current model
|
|
6
|
+
* - Auto-approve status
|
|
7
|
+
* - Thinking mode status
|
|
8
|
+
* - Debug mode
|
|
9
|
+
*/
|
|
10
|
+
import React from 'react';
|
|
11
|
+
export interface StatusBarProps {
|
|
12
|
+
/** Current model name */
|
|
13
|
+
model?: string;
|
|
14
|
+
/** Auto-approve mode enabled */
|
|
15
|
+
autoApprove?: boolean;
|
|
16
|
+
/** Show thinking enabled */
|
|
17
|
+
showThinking?: boolean;
|
|
18
|
+
/** Debug mode enabled */
|
|
19
|
+
debug?: boolean;
|
|
20
|
+
/** Streaming state */
|
|
21
|
+
streaming?: boolean;
|
|
22
|
+
/** Custom status message */
|
|
23
|
+
message?: string;
|
|
24
|
+
/** Theme colors */
|
|
25
|
+
dimColor?: (text: string) => string;
|
|
26
|
+
accentColor?: (text: string) => string;
|
|
27
|
+
successColor?: (text: string) => string;
|
|
28
|
+
warningColor?: (text: string) => string;
|
|
29
|
+
}
|
|
30
|
+
export declare const StatusBar: React.FC<StatusBarProps>;
|
|
31
|
+
export default StatusBar;
|
|
32
|
+
//# sourceMappingURL=StatusBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../../src/ui/components/StatusBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAqD9C,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
export const StatusBar = ({ model, autoApprove = false, showThinking = false, debug = false, streaming = false, message, dimColor = chalk.gray, accentColor = chalk.cyan, successColor = chalk.green, warningColor = chalk.yellow, }) => {
|
|
5
|
+
const parts = [];
|
|
6
|
+
// Model
|
|
7
|
+
if (model) {
|
|
8
|
+
parts.push(accentColor(model));
|
|
9
|
+
}
|
|
10
|
+
// Mode indicators
|
|
11
|
+
if (autoApprove) {
|
|
12
|
+
parts.push(warningColor('YOLO'));
|
|
13
|
+
}
|
|
14
|
+
if (showThinking) {
|
|
15
|
+
parts.push(successColor('THINK'));
|
|
16
|
+
}
|
|
17
|
+
if (debug) {
|
|
18
|
+
parts.push(warningColor('DEBUG'));
|
|
19
|
+
}
|
|
20
|
+
if (streaming) {
|
|
21
|
+
parts.push(accentColor('●'));
|
|
22
|
+
}
|
|
23
|
+
const statusText = parts.join(dimColor(' │ '));
|
|
24
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { children: dimColor('─'.repeat(60)) }), _jsxs(Box, { children: [_jsx(Text, { children: dimColor(' ') }), _jsx(Text, { children: statusText }), message && (_jsxs(_Fragment, { children: [_jsx(Text, { children: dimColor(' │ ') }), _jsx(Text, { children: dimColor(message) })] }))] })] }));
|
|
25
|
+
};
|
|
26
|
+
export default StatusBar;
|
|
27
|
+
//# sourceMappingURL=StatusBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../src/ui/components/StatusBar.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAsB1B,MAAM,CAAC,MAAM,SAAS,GAA6B,CAAC,EAClD,KAAK,EACL,WAAW,GAAG,KAAK,EACnB,YAAY,GAAG,KAAK,EACpB,KAAK,GAAG,KAAK,EACb,SAAS,GAAG,KAAK,EACjB,OAAO,EACP,QAAQ,GAAG,KAAK,CAAC,IAAI,EACrB,WAAW,GAAG,KAAK,CAAC,IAAI,EACxB,YAAY,GAAG,KAAK,CAAC,KAAK,EAC1B,YAAY,GAAG,KAAK,CAAC,MAAM,GAC5B,EAAE,EAAE;IACH,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,QAAQ;IACR,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,kBAAkB;IAClB,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/C,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,cAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAQ,EACvC,MAAC,GAAG,eACF,KAAC,IAAI,cAAE,QAAQ,CAAC,GAAG,CAAC,GAAQ,EAC5B,KAAC,IAAI,cAAE,UAAU,GAAQ,EACxB,OAAO,IAAI,CACV,8BACE,KAAC,IAAI,cAAE,QAAQ,CAAC,KAAK,CAAC,GAAQ,EAC9B,KAAC,IAAI,cAAE,QAAQ,CAAC,OAAO,CAAC,GAAQ,IAC/B,CACJ,IACG,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Message Browser - Browse available system messages
|
|
3
|
+
*/
|
|
4
|
+
import React from 'react';
|
|
5
|
+
interface SystemMessageBrowserProps {
|
|
6
|
+
serverUrl?: string;
|
|
7
|
+
onExit: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const SystemMessageBrowser: React.FC<SystemMessageBrowserProps>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=SystemMessageBrowser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SystemMessageBrowser.d.ts","sourceRoot":"","sources":["../../../src/ui/components/SystemMessageBrowser.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,UAAU,yBAAyB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAYD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA6KpE,CAAC"}
|