@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
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { enableMouseEvents, disableMouseEvents } from '../core-stubs.js';
|
|
7
|
+
import { SGR_MOUSE_REGEX, X11_MOUSE_REGEX, SGR_EVENT_PREFIX, X11_EVENT_PREFIX, couldBeMouseSequence as inputCouldBeMouseSequence, } from './input.js';
|
|
8
|
+
export function getMouseEventName(buttonCode, isRelease) {
|
|
9
|
+
const isMove = (buttonCode & 32) !== 0;
|
|
10
|
+
if (buttonCode === 66) {
|
|
11
|
+
return 'scroll-left';
|
|
12
|
+
}
|
|
13
|
+
else if (buttonCode === 67) {
|
|
14
|
+
return 'scroll-right';
|
|
15
|
+
}
|
|
16
|
+
else if ((buttonCode & 64) === 64) {
|
|
17
|
+
if ((buttonCode & 1) === 0) {
|
|
18
|
+
return 'scroll-up';
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
return 'scroll-down';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
else if (isMove) {
|
|
25
|
+
return 'move';
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const button = buttonCode & 3;
|
|
29
|
+
const type = isRelease ? 'release' : 'press';
|
|
30
|
+
switch (button) {
|
|
31
|
+
case 0:
|
|
32
|
+
return `left-${type}`;
|
|
33
|
+
case 1:
|
|
34
|
+
return `middle-${type}`;
|
|
35
|
+
case 2:
|
|
36
|
+
return `right-${type}`;
|
|
37
|
+
default:
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function getButtonFromCode(code) {
|
|
43
|
+
const button = code & 3;
|
|
44
|
+
switch (button) {
|
|
45
|
+
case 0:
|
|
46
|
+
return 'left';
|
|
47
|
+
case 1:
|
|
48
|
+
return 'middle';
|
|
49
|
+
case 2:
|
|
50
|
+
return 'right';
|
|
51
|
+
default:
|
|
52
|
+
return 'none';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export function parseSGRMouseEvent(buffer) {
|
|
56
|
+
const match = buffer.match(SGR_MOUSE_REGEX);
|
|
57
|
+
if (match && match[1] && match[2] && match[3] && match[4]) {
|
|
58
|
+
const buttonCode = parseInt(match[1], 10);
|
|
59
|
+
const col = parseInt(match[2], 10);
|
|
60
|
+
const row = parseInt(match[3], 10);
|
|
61
|
+
const action = match[4];
|
|
62
|
+
const isRelease = action === 'm';
|
|
63
|
+
const shift = (buttonCode & 4) !== 0;
|
|
64
|
+
const meta = (buttonCode & 8) !== 0;
|
|
65
|
+
const ctrl = (buttonCode & 16) !== 0;
|
|
66
|
+
const name = getMouseEventName(buttonCode, isRelease);
|
|
67
|
+
if (name) {
|
|
68
|
+
return {
|
|
69
|
+
event: {
|
|
70
|
+
name,
|
|
71
|
+
ctrl,
|
|
72
|
+
meta,
|
|
73
|
+
shift,
|
|
74
|
+
col,
|
|
75
|
+
row,
|
|
76
|
+
button: getButtonFromCode(buttonCode),
|
|
77
|
+
},
|
|
78
|
+
length: match[0].length,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
export function parseX11MouseEvent(buffer) {
|
|
86
|
+
const match = buffer.match(X11_MOUSE_REGEX);
|
|
87
|
+
if (!match || !match[1])
|
|
88
|
+
return null;
|
|
89
|
+
// The 3 bytes are in match[1]
|
|
90
|
+
const matchData = match[1];
|
|
91
|
+
const b = matchData.charCodeAt(0) - 32;
|
|
92
|
+
const col = matchData.charCodeAt(1) - 32;
|
|
93
|
+
const row = matchData.charCodeAt(2) - 32;
|
|
94
|
+
const shift = (b & 4) !== 0;
|
|
95
|
+
const meta = (b & 8) !== 0;
|
|
96
|
+
const ctrl = (b & 16) !== 0;
|
|
97
|
+
const isMove = (b & 32) !== 0;
|
|
98
|
+
const isWheel = (b & 64) !== 0;
|
|
99
|
+
let name = null;
|
|
100
|
+
if (isWheel) {
|
|
101
|
+
const button = b & 3;
|
|
102
|
+
switch (button) {
|
|
103
|
+
case 0:
|
|
104
|
+
name = 'scroll-up';
|
|
105
|
+
break;
|
|
106
|
+
case 1:
|
|
107
|
+
name = 'scroll-down';
|
|
108
|
+
break;
|
|
109
|
+
default:
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else if (isMove) {
|
|
114
|
+
name = 'move';
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
const button = b & 3;
|
|
118
|
+
if (button === 3) {
|
|
119
|
+
// X11 reports 'release' (3) for all button releases without specifying which one.
|
|
120
|
+
// We'll default to 'left-release' as a best-effort guess if we don't track state.
|
|
121
|
+
name = 'left-release';
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
switch (button) {
|
|
125
|
+
case 0:
|
|
126
|
+
name = 'left-press';
|
|
127
|
+
break;
|
|
128
|
+
case 1:
|
|
129
|
+
name = 'middle-press';
|
|
130
|
+
break;
|
|
131
|
+
case 2:
|
|
132
|
+
name = 'right-press';
|
|
133
|
+
break;
|
|
134
|
+
default:
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (name) {
|
|
140
|
+
let button = getButtonFromCode(b);
|
|
141
|
+
if (name === 'left-release' && button === 'none') {
|
|
142
|
+
button = 'left';
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
event: {
|
|
146
|
+
name,
|
|
147
|
+
ctrl,
|
|
148
|
+
meta,
|
|
149
|
+
shift,
|
|
150
|
+
col,
|
|
151
|
+
row,
|
|
152
|
+
button,
|
|
153
|
+
},
|
|
154
|
+
length: match[0].length,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
export function parseMouseEvent(buffer) {
|
|
160
|
+
return parseSGRMouseEvent(buffer) || parseX11MouseEvent(buffer);
|
|
161
|
+
}
|
|
162
|
+
export function isIncompleteMouseSequence(buffer) {
|
|
163
|
+
if (!inputCouldBeMouseSequence(buffer))
|
|
164
|
+
return false;
|
|
165
|
+
// If it matches a complete sequence, it's not incomplete.
|
|
166
|
+
if (parseMouseEvent(buffer))
|
|
167
|
+
return false;
|
|
168
|
+
if (buffer.startsWith(X11_EVENT_PREFIX)) {
|
|
169
|
+
// X11 needs exactly 3 bytes after prefix.
|
|
170
|
+
return buffer.length < X11_EVENT_PREFIX.length + 3;
|
|
171
|
+
}
|
|
172
|
+
if (buffer.startsWith(SGR_EVENT_PREFIX)) {
|
|
173
|
+
// SGR sequences end with 'm' or 'M'.
|
|
174
|
+
// If it doesn't have it yet, it's incomplete.
|
|
175
|
+
// Add a reasonable max length check to fail early on garbage.
|
|
176
|
+
return !/[mM]/.test(buffer) && buffer.length < 50;
|
|
177
|
+
}
|
|
178
|
+
// It's a prefix of the prefix (e.g. "ESC" or "ESC [")
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
export { enableMouseEvents, disableMouseEvents };
|
|
182
|
+
//# sourceMappingURL=mouse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mouse.js","sourceRoot":"","sources":["../../../src/ink-ui/utils/mouse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BuiltinCommandLoader - Loads built-in slash commands
|
|
3
|
+
*
|
|
4
|
+
* Provides core commands like /mentorship, /model, /session, etc.
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandLoader } from './CommandService.js';
|
|
7
|
+
import type { SlashCommand } from '../ink-ui/commands/types.js';
|
|
8
|
+
import type { Config } from '../ink-ui/core-stubs.js';
|
|
9
|
+
/**
|
|
10
|
+
* BuiltinCommandLoader loads all built-in slash commands
|
|
11
|
+
*/
|
|
12
|
+
export declare class BuiltinCommandLoader implements CommandLoader {
|
|
13
|
+
private config;
|
|
14
|
+
constructor(config: Config | null);
|
|
15
|
+
loadCommands(_signal?: AbortSignal): Promise<SlashCommand[]>;
|
|
16
|
+
/**
|
|
17
|
+
* Create the /mentorship command with subcommands
|
|
18
|
+
*/
|
|
19
|
+
private createMentorshipCommand;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=BuiltinCommandLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuiltinCommandLoader.d.ts","sourceRoot":"","sources":["../../src/services/BuiltinCommandLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAuC,MAAM,6BAA6B,CAAC;AAErG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AA2CtD;;GAEG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IACxD,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,MAAM,GAAG,IAAI;IAI3B,YAAY,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAclE;;OAEG;IACH,OAAO,CAAC,uBAAuB;CA4HhC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BuiltinCommandLoader - Loads built-in slash commands
|
|
3
|
+
*
|
|
4
|
+
* Provides core commands like /mentorship, /model, /session, etc.
|
|
5
|
+
*/
|
|
6
|
+
import { CommandKind } from '../ink-ui/commands/types.js';
|
|
7
|
+
import { MentorshipConfigService } from '@nexus-cortex/core';
|
|
8
|
+
import { existsSync, readFileSync, realpathSync } from 'fs';
|
|
9
|
+
import { dirname, join } from 'path';
|
|
10
|
+
import { fileURLToPath } from 'url';
|
|
11
|
+
// Get installation root from this file's location
|
|
12
|
+
// Use realpathSync to resolve symlinks (important for npm link)
|
|
13
|
+
// Compiled file is at: packages/cli/dist/services/BuiltinCommandLoader.js
|
|
14
|
+
// Installation root is 4 levels up: services -> dist -> cli -> packages -> root
|
|
15
|
+
const __filename = realpathSync(fileURLToPath(import.meta.url));
|
|
16
|
+
const __dirname = dirname(__filename);
|
|
17
|
+
const CLI_INSTALLATION_ROOT = join(__dirname, '..', '..', '..', '..');
|
|
18
|
+
/**
|
|
19
|
+
* Find the Nexus Cortex installation root
|
|
20
|
+
* Priority:
|
|
21
|
+
* 1. CORTEX_ROOT env var (set by launcher)
|
|
22
|
+
* 2. CLI_INSTALLATION_ROOT (derived from this file's location)
|
|
23
|
+
*/
|
|
24
|
+
function findInstallationRoot(_config) {
|
|
25
|
+
// Priority 1: Environment variable
|
|
26
|
+
const cortexRoot = (process.env.CORTEX_ROOT);
|
|
27
|
+
if (cortexRoot && existsSync(cortexRoot)) {
|
|
28
|
+
return cortexRoot;
|
|
29
|
+
}
|
|
30
|
+
// Priority 2: Use CLI's own installation location (most reliable)
|
|
31
|
+
if (existsSync(join(CLI_INSTALLATION_ROOT, 'package.json'))) {
|
|
32
|
+
try {
|
|
33
|
+
const packageJson = JSON.parse(readFileSync(join(CLI_INSTALLATION_ROOT, 'package.json'), 'utf-8'));
|
|
34
|
+
if (packageJson.name === 'nexus-cortex-monorepo') {
|
|
35
|
+
return CLI_INSTALLATION_ROOT;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// Invalid package.json, continue
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Fallback: return CLI installation root anyway
|
|
43
|
+
return CLI_INSTALLATION_ROOT;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* BuiltinCommandLoader loads all built-in slash commands
|
|
47
|
+
*/
|
|
48
|
+
export class BuiltinCommandLoader {
|
|
49
|
+
config;
|
|
50
|
+
constructor(config) {
|
|
51
|
+
this.config = config;
|
|
52
|
+
}
|
|
53
|
+
async loadCommands(_signal) {
|
|
54
|
+
const commands = [];
|
|
55
|
+
// Add mentorship command
|
|
56
|
+
commands.push(this.createMentorshipCommand());
|
|
57
|
+
// Add other built-in commands here as needed
|
|
58
|
+
// commands.push(this.createHelpCommand());
|
|
59
|
+
// commands.push(this.createClearCommand());
|
|
60
|
+
// etc.
|
|
61
|
+
return commands;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Create the /mentorship command with subcommands
|
|
65
|
+
*/
|
|
66
|
+
createMentorshipCommand() {
|
|
67
|
+
const config = this.config;
|
|
68
|
+
const getProjectPath = () => {
|
|
69
|
+
return findInstallationRoot(config);
|
|
70
|
+
};
|
|
71
|
+
return {
|
|
72
|
+
name: 'mentorship',
|
|
73
|
+
description: 'AI-to-AI mentorship system',
|
|
74
|
+
kind: CommandKind.BUILT_IN,
|
|
75
|
+
subCommands: [
|
|
76
|
+
{
|
|
77
|
+
name: 'status',
|
|
78
|
+
description: 'Show mentorship status',
|
|
79
|
+
kind: CommandKind.BUILT_IN,
|
|
80
|
+
action: () => {
|
|
81
|
+
const projectPath = getProjectPath();
|
|
82
|
+
const service = new MentorshipConfigService(projectPath);
|
|
83
|
+
const summary = service.getSummary();
|
|
84
|
+
const statusIcon = summary.status === 'enabled' ? '[ON]' : '[OFF]';
|
|
85
|
+
const content = [
|
|
86
|
+
'',
|
|
87
|
+
` Mentorship: ${statusIcon} ${summary.status.toUpperCase()}`,
|
|
88
|
+
` Helper: ${summary.helperModel}`,
|
|
89
|
+
` Triggers: ${summary.triggers.join(', ')}`,
|
|
90
|
+
'',
|
|
91
|
+
' /mentorship enable|disable|config',
|
|
92
|
+
'',
|
|
93
|
+
].join('\n');
|
|
94
|
+
return { type: 'message', messageType: 'info', content };
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: 'enable',
|
|
99
|
+
description: 'Enable mentorship',
|
|
100
|
+
kind: CommandKind.BUILT_IN,
|
|
101
|
+
action: async () => {
|
|
102
|
+
const projectPath = getProjectPath();
|
|
103
|
+
const service = new MentorshipConfigService(projectPath);
|
|
104
|
+
await service.quickEnable();
|
|
105
|
+
return {
|
|
106
|
+
type: 'message',
|
|
107
|
+
messageType: 'info',
|
|
108
|
+
content: '\n Mentorship enabled\n',
|
|
109
|
+
};
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
name: 'disable',
|
|
114
|
+
description: 'Disable mentorship',
|
|
115
|
+
kind: CommandKind.BUILT_IN,
|
|
116
|
+
action: async () => {
|
|
117
|
+
const projectPath = getProjectPath();
|
|
118
|
+
const service = new MentorshipConfigService(projectPath);
|
|
119
|
+
await service.quickDisable();
|
|
120
|
+
return {
|
|
121
|
+
type: 'message',
|
|
122
|
+
messageType: 'info',
|
|
123
|
+
content: '\n Mentorship disabled\n',
|
|
124
|
+
};
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: 'config',
|
|
129
|
+
description: 'Open configuration menu',
|
|
130
|
+
kind: CommandKind.BUILT_IN,
|
|
131
|
+
action: (_context) => {
|
|
132
|
+
// For now, show a message that config menu is not yet implemented in Ink UI
|
|
133
|
+
// TODO: Implement MenuRenderer integration here
|
|
134
|
+
const projectPath = getProjectPath();
|
|
135
|
+
const service = new MentorshipConfigService(projectPath);
|
|
136
|
+
const summary = service.getSummary();
|
|
137
|
+
const config = service.getConfig();
|
|
138
|
+
const content = [
|
|
139
|
+
'',
|
|
140
|
+
' Mentorship Configuration',
|
|
141
|
+
' ========================',
|
|
142
|
+
'',
|
|
143
|
+
` Status: ${summary.status === 'enabled' ? 'ENABLED' : 'DISABLED'}`,
|
|
144
|
+
` Helper Model: ${config.helperModel}`,
|
|
145
|
+
'',
|
|
146
|
+
' Triggers:',
|
|
147
|
+
` Error Trigger: ${config.triggerOnError ? 'ON' : 'OFF'} (threshold: ${config.errorThreshold})`,
|
|
148
|
+
` Keywords: ${config.keywordsEnabled ? 'ON' : 'OFF'}`,
|
|
149
|
+
` Turn-Based: ${config.turnBasedEnabled ? 'ON' : 'OFF'} (every ${config.turnInterval} turns)`,
|
|
150
|
+
` Pattern Detection: ${config.patternDetection ? 'ON' : 'OFF'} (threshold: ${config.patternThreshold})`,
|
|
151
|
+
'',
|
|
152
|
+
' Advanced:',
|
|
153
|
+
` Interleaved: ${config.interleavedThinking ? 'ON' : 'OFF'}`,
|
|
154
|
+
'',
|
|
155
|
+
' Use /mentorship enable|disable for quick toggles',
|
|
156
|
+
'',
|
|
157
|
+
].join('\n');
|
|
158
|
+
return { type: 'message', messageType: 'info', content };
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
// Default action when just /mentorship is called - show status
|
|
163
|
+
action: () => {
|
|
164
|
+
const projectPath = getProjectPath();
|
|
165
|
+
const service = new MentorshipConfigService(projectPath);
|
|
166
|
+
const summary = service.getSummary();
|
|
167
|
+
const statusIcon = summary.status === 'enabled' ? '[ON]' : '[OFF]';
|
|
168
|
+
const content = [
|
|
169
|
+
'',
|
|
170
|
+
` Mentorship: ${statusIcon} ${summary.status.toUpperCase()}`,
|
|
171
|
+
` Helper: ${summary.helperModel}`,
|
|
172
|
+
` Triggers: ${summary.triggers.join(', ')}`,
|
|
173
|
+
'',
|
|
174
|
+
' /mentorship enable|disable|config',
|
|
175
|
+
'',
|
|
176
|
+
].join('\n');
|
|
177
|
+
return { type: 'message', messageType: 'info', content };
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=BuiltinCommandLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuiltinCommandLoader.js","sourceRoot":"","sources":["../../src/services/BuiltinCommandLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CommandService - Manages slash command loading and registration
|
|
3
|
+
*
|
|
4
|
+
* Provides a unified interface for loading commands from multiple sources:
|
|
5
|
+
* - Built-in commands (mentorship, model, session, etc.)
|
|
6
|
+
* - File-based commands (.cortex/commands/*.md)
|
|
7
|
+
* - MCP prompts (from enabled MCP servers)
|
|
8
|
+
*/
|
|
9
|
+
import type { SlashCommand } from '../ink-ui/commands/types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Interface for command loaders
|
|
12
|
+
*/
|
|
13
|
+
export interface CommandLoader {
|
|
14
|
+
/**
|
|
15
|
+
* Load commands from this source
|
|
16
|
+
* @param signal Abort signal for cancellation
|
|
17
|
+
*/
|
|
18
|
+
loadCommands(signal?: AbortSignal): Promise<SlashCommand[]>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* CommandService manages all slash commands
|
|
22
|
+
*/
|
|
23
|
+
export declare class CommandService {
|
|
24
|
+
private commands;
|
|
25
|
+
private constructor();
|
|
26
|
+
/**
|
|
27
|
+
* Create a CommandService by loading commands from all loaders
|
|
28
|
+
*/
|
|
29
|
+
static create(loaders: CommandLoader[], signal?: AbortSignal): Promise<CommandService>;
|
|
30
|
+
/**
|
|
31
|
+
* Get all loaded commands
|
|
32
|
+
*/
|
|
33
|
+
getCommands(): readonly SlashCommand[];
|
|
34
|
+
/**
|
|
35
|
+
* Find a command by name
|
|
36
|
+
*/
|
|
37
|
+
findCommand(name: string): SlashCommand | undefined;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=CommandService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandService.d.ts","sourceRoot":"","sources":["../../src/services/CommandService.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,YAAY,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CAC7D;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAA0B;IAE1C,OAAO;IAIP;;OAEG;WACU,MAAM,CACjB,OAAO,EAAE,aAAa,EAAE,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC;IAkB1B;;OAEG;IACH,WAAW,IAAI,SAAS,YAAY,EAAE;IAItC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;CAKpD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CommandService - Manages slash command loading and registration
|
|
3
|
+
*
|
|
4
|
+
* Provides a unified interface for loading commands from multiple sources:
|
|
5
|
+
* - Built-in commands (mentorship, model, session, etc.)
|
|
6
|
+
* - File-based commands (.cortex/commands/*.md)
|
|
7
|
+
* - MCP prompts (from enabled MCP servers)
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* CommandService manages all slash commands
|
|
11
|
+
*/
|
|
12
|
+
export class CommandService {
|
|
13
|
+
commands;
|
|
14
|
+
constructor(commands) {
|
|
15
|
+
this.commands = Object.freeze(commands);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create a CommandService by loading commands from all loaders
|
|
19
|
+
*/
|
|
20
|
+
static async create(loaders, signal) {
|
|
21
|
+
const allCommands = [];
|
|
22
|
+
for (const loader of loaders) {
|
|
23
|
+
if (signal?.aborted)
|
|
24
|
+
break;
|
|
25
|
+
try {
|
|
26
|
+
const commands = await loader.loadCommands(signal);
|
|
27
|
+
allCommands.push(...commands);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
// Log but don't fail - allow other loaders to continue
|
|
31
|
+
console.error('Failed to load commands from loader:', error);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return new CommandService(allCommands);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get all loaded commands
|
|
38
|
+
*/
|
|
39
|
+
getCommands() {
|
|
40
|
+
return this.commands;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Find a command by name
|
|
44
|
+
*/
|
|
45
|
+
findCommand(name) {
|
|
46
|
+
return this.commands.find(cmd => cmd.name === name || cmd.altNames?.includes(name));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=CommandService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandService.js","sourceRoot":"","sources":["../../src/services/CommandService.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,QAAQ,CAA0B;IAE1C,YAAoB,QAAwB;QAC1C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,OAAwB,EACxB,MAAoB;QAEpB,MAAM,WAAW,GAAmB,EAAE,CAAC;QAEvC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM;YAE3B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACnD,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAChC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,uDAAuD;gBACvD,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,OAAO,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CACzD,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FileCommandLoader - Loads slash commands from .cortex/commands/*.md files
|
|
3
|
+
*
|
|
4
|
+
* Allows users to define custom commands in markdown files.
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandLoader } from './CommandService.js';
|
|
7
|
+
import type { SlashCommand } from '../ink-ui/commands/types.js';
|
|
8
|
+
import type { Config } from '../ink-ui/core-stubs.js';
|
|
9
|
+
/**
|
|
10
|
+
* FileCommandLoader loads commands from markdown files
|
|
11
|
+
*/
|
|
12
|
+
export declare class FileCommandLoader implements CommandLoader {
|
|
13
|
+
constructor(_config: Config | null);
|
|
14
|
+
loadCommands(_signal?: AbortSignal): Promise<SlashCommand[]>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=FileCommandLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileCommandLoader.d.ts","sourceRoot":"","sources":["../../src/services/FileCommandLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;GAEG;AACH,qBAAa,iBAAkB,YAAW,aAAa;gBACzC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B,YAAY,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAKnE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FileCommandLoader - Loads slash commands from .cortex/commands/*.md files
|
|
3
|
+
*
|
|
4
|
+
* Allows users to define custom commands in markdown files.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* FileCommandLoader loads commands from markdown files
|
|
8
|
+
*/
|
|
9
|
+
export class FileCommandLoader {
|
|
10
|
+
constructor(_config) {
|
|
11
|
+
// Config will be used when implementing file-based command loading
|
|
12
|
+
}
|
|
13
|
+
async loadCommands(_signal) {
|
|
14
|
+
// TODO: Implement file-based command loading from .cortex/commands/*.md
|
|
15
|
+
// For now, return empty array
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=FileCommandLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileCommandLoader.js","sourceRoot":"","sources":["../../src/services/FileCommandLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAC5B,YAAY,OAAsB;QAChC,mEAAmE;IACrE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAqB;QACtC,wEAAwE;QACxE,8BAA8B;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* McpPromptLoader - Loads slash commands from MCP prompts
|
|
3
|
+
*
|
|
4
|
+
* Discovers prompts from enabled MCP servers and exposes them as commands.
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandLoader } from './CommandService.js';
|
|
7
|
+
import type { SlashCommand } from '../ink-ui/commands/types.js';
|
|
8
|
+
import type { Config } from '../ink-ui/core-stubs.js';
|
|
9
|
+
/**
|
|
10
|
+
* McpPromptLoader loads commands from MCP server prompts
|
|
11
|
+
*/
|
|
12
|
+
export declare class McpPromptLoader implements CommandLoader {
|
|
13
|
+
constructor(_config: Config | null);
|
|
14
|
+
loadCommands(_signal?: AbortSignal): Promise<SlashCommand[]>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=McpPromptLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"McpPromptLoader.d.ts","sourceRoot":"","sources":["../../src/services/McpPromptLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;GAEG;AACH,qBAAa,eAAgB,YAAW,aAAa;gBACvC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B,YAAY,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAKnE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* McpPromptLoader - Loads slash commands from MCP prompts
|
|
3
|
+
*
|
|
4
|
+
* Discovers prompts from enabled MCP servers and exposes them as commands.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* McpPromptLoader loads commands from MCP server prompts
|
|
8
|
+
*/
|
|
9
|
+
export class McpPromptLoader {
|
|
10
|
+
constructor(_config) {
|
|
11
|
+
// Config will be used when implementing MCP prompt loading
|
|
12
|
+
}
|
|
13
|
+
async loadCommands(_signal) {
|
|
14
|
+
// TODO: Implement MCP prompt loading from enabled servers
|
|
15
|
+
// For now, return empty array
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=McpPromptLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"McpPromptLoader.js","sourceRoot":"","sources":["../../src/services/McpPromptLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B,YAAY,OAAsB;QAChC,2DAA2D;IAC7D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAqB;QACtC,0DAA0D;QAC1D,8BAA8B;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Services - Shared service classes for CLI
|
|
3
|
+
*/
|
|
4
|
+
export { CommandService, type CommandLoader } from './CommandService.js';
|
|
5
|
+
export { BuiltinCommandLoader } from './BuiltinCommandLoader.js';
|
|
6
|
+
export { FileCommandLoader } from './FileCommandLoader.js';
|
|
7
|
+
export { McpPromptLoader } from './McpPromptLoader.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Services - Shared service classes for CLI
|
|
3
|
+
*/
|
|
4
|
+
export { CommandService } from './CommandService.js';
|
|
5
|
+
export { BuiltinCommandLoader } from './BuiltinCommandLoader.js';
|
|
6
|
+
export { FileCommandLoader } from './FileCommandLoader.js';
|
|
7
|
+
export { McpPromptLoader } from './McpPromptLoader.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAsB,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chalk-based Menu Renderer for Nexus Cortex
|
|
3
|
+
*
|
|
4
|
+
* Generic renderer for InteractiveMenuDefinition that works with any menu.
|
|
5
|
+
* Uses raw terminal input for interactive navigation.
|
|
6
|
+
*/
|
|
7
|
+
import type { InteractiveMenuDefinition, MenuResult, MenuRenderer } from '@nexus-cortex/core';
|
|
8
|
+
/**
|
|
9
|
+
* ChalkMenuRenderer - Interactive menu renderer using raw terminal input
|
|
10
|
+
*/
|
|
11
|
+
export declare class ChalkMenuRenderer implements MenuRenderer {
|
|
12
|
+
render(definition: InteractiveMenuDefinition, initialValues: Record<string, unknown>, onLiveUpdate?: (key: string, value: unknown) => Promise<void>): Promise<MenuResult>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create a ChalkMenuRenderer instance
|
|
16
|
+
*/
|
|
17
|
+
export declare function createChalkMenuRenderer(): ChalkMenuRenderer;
|
|
18
|
+
/**
|
|
19
|
+
* Helper to show a menu and handle the result
|
|
20
|
+
*/
|
|
21
|
+
export declare function showInteractiveMenu(definition: InteractiveMenuDefinition, initialValues: Record<string, unknown>, onLiveUpdate?: (key: string, value: unknown) => Promise<void>): Promise<MenuResult>;
|
|
22
|
+
//# sourceMappingURL=ChalkMenuRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChalkMenuRenderer.d.ts","sourceRoot":"","sources":["../../src/ui/ChalkMenuRenderer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,yBAAyB,EAEzB,UAAU,EACV,YAAY,EACb,MAAM,oBAAoB,CAAC;AA8R5B;;GAEG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IAC9C,MAAM,CACV,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;CA6QvB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D;AAED;;GAEG;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,CAGrB"}
|