@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,573 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* StreamDisplay - Sequential display of stream content
|
|
4
|
+
*
|
|
5
|
+
* Renders content in EXACT order it arrives from the core library:
|
|
6
|
+
* thinking → tool call → tool result → thinking → tool call → tool result → conclusion
|
|
7
|
+
*
|
|
8
|
+
* NO accumulation, NO reordering. Just render the sequence.
|
|
9
|
+
*/
|
|
10
|
+
import { useMemo, useState, useEffect, useRef } from 'react';
|
|
11
|
+
import { Box, Text, useStdout } from 'ink';
|
|
12
|
+
import { Colors } from '@nexus-cortex/cli/dist/themes/colors.js';
|
|
13
|
+
import { StreamEventType, ToolCallStatus } from '../cortex-types.js';
|
|
14
|
+
import { DiffPreview, UnifiedDiffDisplay } from './DiffPreview.js';
|
|
15
|
+
import { theme } from '../semantic-colors.js';
|
|
16
|
+
/**
|
|
17
|
+
* Lightweight inline markdown renderer — no context providers needed.
|
|
18
|
+
* Ported from MarkdownRenderer.ts (fuzzycortex) for visual parity.
|
|
19
|
+
* Handles: headings (4 levels), code blocks with syntax highlighting,
|
|
20
|
+
* bold, italic, inline code, links, blockquotes, lists (ul/ol), HRs.
|
|
21
|
+
*/
|
|
22
|
+
const SimpleMarkdown = ({ text, width }) => {
|
|
23
|
+
const responseColor = theme.text.response ?? theme.text.primary;
|
|
24
|
+
const primaryColor = theme.text.link ?? Colors.AccentCyan;
|
|
25
|
+
const secondaryColor = theme.text.accent ?? Colors.AccentPurple;
|
|
26
|
+
const infoColor = Colors.AccentCyan;
|
|
27
|
+
const codeColor = theme.text.secondary ?? '#888888';
|
|
28
|
+
const lines = text.split(/\r?\n/);
|
|
29
|
+
const blocks = [];
|
|
30
|
+
let inCodeBlock = false;
|
|
31
|
+
let codeLines = [];
|
|
32
|
+
let codeLang = '';
|
|
33
|
+
let lastEmpty = true;
|
|
34
|
+
const INDENT = 2;
|
|
35
|
+
const renderInline = (line, color) => {
|
|
36
|
+
const parts = [];
|
|
37
|
+
let i = 0;
|
|
38
|
+
let key = 0;
|
|
39
|
+
while (i < line.length) {
|
|
40
|
+
// Link: [text](url)
|
|
41
|
+
if (line[i] === '[') {
|
|
42
|
+
const closeBracket = line.indexOf(']', i + 1);
|
|
43
|
+
if (closeBracket > i && line[closeBracket + 1] === '(') {
|
|
44
|
+
const closeParen = line.indexOf(')', closeBracket + 2);
|
|
45
|
+
if (closeParen > closeBracket) {
|
|
46
|
+
const linkText = line.slice(i + 1, closeBracket);
|
|
47
|
+
const url = line.slice(closeBracket + 2, closeParen);
|
|
48
|
+
parts.push(_jsx(Text, { color: infoColor, children: linkText }, key++));
|
|
49
|
+
parts.push(_jsx(Text, { dimColor: true, children: ` (${url})` }, key++));
|
|
50
|
+
i = closeParen + 1;
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Inline code
|
|
56
|
+
if (line[i] === '`') {
|
|
57
|
+
const end = line.indexOf('`', i + 1);
|
|
58
|
+
if (end > i) {
|
|
59
|
+
parts.push(_jsx(Text, { color: codeColor, children: line.slice(i + 1, end) }, key++));
|
|
60
|
+
i = end + 1;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Bold **text**
|
|
65
|
+
if (line[i] === '*' && line[i + 1] === '*') {
|
|
66
|
+
const end = line.indexOf('**', i + 2);
|
|
67
|
+
if (end > i) {
|
|
68
|
+
parts.push(_jsx(Text, { bold: true, color: color, children: line.slice(i + 2, end) }, key++));
|
|
69
|
+
i = end + 2;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Italic *text* (not ** which is bold)
|
|
74
|
+
if (line[i] === '*' && line[i + 1] !== '*') {
|
|
75
|
+
const end = line.indexOf('*', i + 1);
|
|
76
|
+
if (end > i && line[end + 1] !== '*') {
|
|
77
|
+
parts.push(_jsx(Text, { italic: true, color: color, children: line.slice(i + 1, end) }, key++));
|
|
78
|
+
i = end + 1;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Regular text — accumulate until next special char
|
|
83
|
+
let j = i + 1;
|
|
84
|
+
while (j < line.length && line[j] !== '`' && line[j] !== '*' && line[j] !== '[')
|
|
85
|
+
j++;
|
|
86
|
+
parts.push(_jsx(Text, { color: color, children: line.slice(i, j) }, key++));
|
|
87
|
+
i = j;
|
|
88
|
+
}
|
|
89
|
+
return _jsx(_Fragment, { children: parts });
|
|
90
|
+
};
|
|
91
|
+
const highlightCode = (line, lang) => {
|
|
92
|
+
if (!lang || !['typescript', 'javascript', 'ts', 'js', 'tsx', 'jsx'].includes(lang)) {
|
|
93
|
+
return _jsx(Text, { color: codeColor, children: line });
|
|
94
|
+
}
|
|
95
|
+
const keywords = /\b(const|let|var|function|class|interface|type|import|export|from|return|if|else|for|while|async|await|new|this|extends|implements|enum|readonly|private|public|protected|static|abstract|override)\b/;
|
|
96
|
+
const parts = [];
|
|
97
|
+
let remaining = line;
|
|
98
|
+
let key = 0;
|
|
99
|
+
while (remaining.length > 0) {
|
|
100
|
+
// Check for string literals
|
|
101
|
+
const strMatch = remaining.match(/^(["'`])(?:(?=(\\?))\2.)*?\1/);
|
|
102
|
+
if (strMatch) {
|
|
103
|
+
parts.push(_jsx(Text, { color: "#98c379", children: strMatch[0] }, key++));
|
|
104
|
+
remaining = remaining.slice(strMatch[0].length);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
// Check for comments
|
|
108
|
+
if (remaining.startsWith('//')) {
|
|
109
|
+
parts.push(_jsx(Text, { dimColor: true, children: remaining }, key++));
|
|
110
|
+
remaining = '';
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
// Check for keywords
|
|
114
|
+
const kwMatch = remaining.match(keywords);
|
|
115
|
+
if (kwMatch && kwMatch.index === 0) {
|
|
116
|
+
parts.push(_jsx(Text, { color: "#c678dd", children: kwMatch[0] }, key++));
|
|
117
|
+
remaining = remaining.slice(kwMatch[0].length);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
// Check for numbers
|
|
121
|
+
const numMatch = remaining.match(/^\b\d+(\.\d+)?\b/);
|
|
122
|
+
if (numMatch) {
|
|
123
|
+
parts.push(_jsx(Text, { color: "#d19a66", children: numMatch[0] }, key++));
|
|
124
|
+
remaining = remaining.slice(numMatch[0].length);
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
// Take one char of plain code
|
|
128
|
+
const nextSpecial = remaining.slice(1).search(/["'`]|\/\/|\b(?:const|let|var|function|class|interface|type|import|export|from|return|if|else|for|while|async|await|new|this)\b|\b\d/);
|
|
129
|
+
const take = nextSpecial === -1 ? remaining.length : nextSpecial + 1;
|
|
130
|
+
parts.push(_jsx(Text, { color: codeColor, children: remaining.slice(0, take) }, key++));
|
|
131
|
+
remaining = remaining.slice(take);
|
|
132
|
+
}
|
|
133
|
+
return _jsx(_Fragment, { children: parts });
|
|
134
|
+
};
|
|
135
|
+
const ruleWidth = Math.min(width - INDENT, 80);
|
|
136
|
+
const rule = '─'.repeat(ruleWidth);
|
|
137
|
+
const flushCode = (idx) => {
|
|
138
|
+
const lang = codeLang;
|
|
139
|
+
blocks.push(_jsxs(Box, { flexDirection: "column", paddingLeft: INDENT, children: [_jsx(Text, { dimColor: true, children: rule }), lang && _jsx(Text, { dimColor: true, children: ` [${lang}]` }), codeLines.map((cl, ci) => (_jsx(Box, { paddingLeft: INDENT, children: highlightCode(cl, lang) }, ci))), _jsx(Text, { dimColor: true, children: rule })] }, `code-${idx}`));
|
|
140
|
+
codeLines = [];
|
|
141
|
+
codeLang = '';
|
|
142
|
+
};
|
|
143
|
+
for (let idx = 0; idx < lines.length; idx++) {
|
|
144
|
+
const line = lines[idx];
|
|
145
|
+
// Code fence toggle
|
|
146
|
+
if (/^ *(`{3,}|~{3,})/.test(line)) {
|
|
147
|
+
if (inCodeBlock) {
|
|
148
|
+
flushCode(idx);
|
|
149
|
+
inCodeBlock = false;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
inCodeBlock = true;
|
|
153
|
+
const m = line.match(/(`{3,}|~{3,})\s*(\w*)/);
|
|
154
|
+
codeLang = m?.[2] || '';
|
|
155
|
+
}
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (inCodeBlock) {
|
|
159
|
+
codeLines.push(line);
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
// Empty line
|
|
163
|
+
if (!line.trim()) {
|
|
164
|
+
if (!lastEmpty) {
|
|
165
|
+
blocks.push(_jsx(Box, { height: 1 }, `sp-${idx}`));
|
|
166
|
+
lastEmpty = true;
|
|
167
|
+
}
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
lastEmpty = false;
|
|
171
|
+
// Headings — per-level colors with spacing, matching MarkdownRenderer
|
|
172
|
+
const hm = line.match(/^(#{1,4})\s+(.*)/);
|
|
173
|
+
if (hm) {
|
|
174
|
+
const level = hm[1].length;
|
|
175
|
+
const hColor = level === 1 ? primaryColor
|
|
176
|
+
: level === 2 ? secondaryColor
|
|
177
|
+
: level === 3 ? infoColor
|
|
178
|
+
: responseColor;
|
|
179
|
+
const spacing = level <= 2;
|
|
180
|
+
blocks.push(_jsxs(Box, { flexDirection: "column", children: [spacing && _jsx(Box, { height: 1 }), _jsx(Box, { paddingLeft: INDENT, children: _jsx(Text, { bold: true, color: hColor, children: renderInline(hm[2], hColor) }) }), spacing && _jsx(Box, { height: 1 })] }, `h-${idx}`));
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
// HR — full width rule
|
|
184
|
+
if (/^[-*_]{3,}\s*$/.test(line.trim())) {
|
|
185
|
+
blocks.push(_jsx(Box, { children: _jsx(Text, { dimColor: true, children: '─'.repeat(Math.min(width, 80)) }) }, `hr-${idx}`));
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
// Blockquote
|
|
189
|
+
if (line.trim().startsWith('> ')) {
|
|
190
|
+
const content = line.trim().substring(2);
|
|
191
|
+
blocks.push(_jsxs(Box, { paddingLeft: INDENT, children: [_jsx(Text, { dimColor: true, children: '│ ' }), _jsx(Text, { dimColor: true, wrap: "wrap", children: renderInline(content, responseColor) })] }, `bq-${idx}`));
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
// Unordered list — colored bullet
|
|
195
|
+
const ulm = line.match(/^(\s*)([-*+])\s+(.*)/);
|
|
196
|
+
if (ulm) {
|
|
197
|
+
const indent = Math.floor(ulm[1].length / 2);
|
|
198
|
+
blocks.push(_jsxs(Box, { paddingLeft: INDENT + indent * 2, children: [_jsx(Text, { color: infoColor, children: '• ' }), _jsx(Text, { wrap: "wrap", color: responseColor, children: renderInline(ulm[3], responseColor) })] }, `ul-${idx}`));
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
// Ordered list — colored number
|
|
202
|
+
const olm = line.match(/^(\s*)(\d+)\.\s+(.*)/);
|
|
203
|
+
if (olm) {
|
|
204
|
+
const indent = Math.floor(olm[1].length / 2);
|
|
205
|
+
blocks.push(_jsxs(Box, { paddingLeft: INDENT + indent * 2, children: [_jsx(Text, { color: infoColor, children: `${olm[2]}. ` }), _jsx(Text, { wrap: "wrap", color: responseColor, children: renderInline(olm[3], responseColor) })] }, `ol-${idx}`));
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
// Regular paragraph — indented, matching fuzzycortex's 2-space indent
|
|
209
|
+
blocks.push(_jsx(Box, { paddingLeft: INDENT, children: _jsx(Text, { wrap: "wrap", color: responseColor, children: renderInline(line, responseColor) }) }, `p-${idx}`));
|
|
210
|
+
}
|
|
211
|
+
// Flush unclosed code block
|
|
212
|
+
if (inCodeBlock && codeLines.length > 0)
|
|
213
|
+
flushCode(lines.length);
|
|
214
|
+
return _jsx(_Fragment, { children: blocks });
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Word-wrap code line to a specific width, breaking at logical points
|
|
218
|
+
*/
|
|
219
|
+
function wrapCodeLine(text, width) {
|
|
220
|
+
if (width <= 0 || !text || text.length <= width)
|
|
221
|
+
return [text];
|
|
222
|
+
const result = [];
|
|
223
|
+
let remaining = text;
|
|
224
|
+
while (remaining.length > width) {
|
|
225
|
+
let breakPoint = width;
|
|
226
|
+
const breakChars = [' ', ',', '(', ')', '{', '}', '[', ']', '+', '-', '=', '/', '|', '&'];
|
|
227
|
+
for (const char of breakChars) {
|
|
228
|
+
const lastIndex = remaining.lastIndexOf(char, width);
|
|
229
|
+
if (lastIndex > width * 0.4) {
|
|
230
|
+
breakPoint = lastIndex + 1;
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
result.push(remaining.slice(0, breakPoint));
|
|
235
|
+
remaining = remaining.slice(breakPoint);
|
|
236
|
+
}
|
|
237
|
+
if (remaining) {
|
|
238
|
+
result.push(remaining);
|
|
239
|
+
}
|
|
240
|
+
return result.length > 0 ? result : [''];
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Word-wrap text to fit within width, breaking at word boundaries
|
|
244
|
+
*/
|
|
245
|
+
function wordWrap(text, width) {
|
|
246
|
+
if (width <= 0 || !text)
|
|
247
|
+
return [text];
|
|
248
|
+
const words = text.split(/\s+/);
|
|
249
|
+
const lines = [];
|
|
250
|
+
let currentLine = '';
|
|
251
|
+
for (const word of words) {
|
|
252
|
+
if (!word)
|
|
253
|
+
continue;
|
|
254
|
+
if (!currentLine) {
|
|
255
|
+
currentLine = word;
|
|
256
|
+
}
|
|
257
|
+
else if (currentLine.length + 1 + word.length <= width) {
|
|
258
|
+
currentLine += ' ' + word;
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
lines.push(currentLine);
|
|
262
|
+
currentLine = word;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
if (currentLine)
|
|
266
|
+
lines.push(currentLine);
|
|
267
|
+
return lines.length > 0 ? lines : [''];
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Detect language from file extension
|
|
271
|
+
*/
|
|
272
|
+
function detectLanguage(filePath) {
|
|
273
|
+
const ext = filePath.split('.').pop()?.toLowerCase();
|
|
274
|
+
const langMap = {
|
|
275
|
+
'py': 'python', 'js': 'javascript', 'ts': 'typescript', 'tsx': 'typescript',
|
|
276
|
+
'jsx': 'javascript', 'rs': 'rust', 'go': 'go', 'java': 'java',
|
|
277
|
+
'c': 'c', 'cpp': 'c++', 'h': 'c', 'rb': 'ruby', 'sh': 'shell',
|
|
278
|
+
'bash': 'shell', 'zsh': 'shell', 'md': 'markdown', 'json': 'json',
|
|
279
|
+
'yaml': 'yaml', 'yml': 'yaml', 'html': 'html', 'css': 'css',
|
|
280
|
+
};
|
|
281
|
+
return ext ? langMap[ext] : undefined;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Format bytes to human readable size
|
|
285
|
+
*/
|
|
286
|
+
function formatBytes(bytes) {
|
|
287
|
+
if (bytes < 1024)
|
|
288
|
+
return `${bytes} B`;
|
|
289
|
+
if (bytes < 1024 * 1024)
|
|
290
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
291
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Inline Write preview component - shows file content with line numbers
|
|
295
|
+
* (same style as WritePreview for consistency)
|
|
296
|
+
*/
|
|
297
|
+
const InlineWritePreview = ({ filePath, content, maxLines = 50 }) => {
|
|
298
|
+
const { stdout } = useStdout();
|
|
299
|
+
const terminalWidth = stdout?.columns || 80;
|
|
300
|
+
const lines = useMemo(() => content.split('\n'), [content]);
|
|
301
|
+
const displayLines = useMemo(() => lines.slice(0, maxLines), [lines, maxLines]);
|
|
302
|
+
const truncated = lines.length > maxLines;
|
|
303
|
+
const language = detectLanguage(filePath);
|
|
304
|
+
const byteSize = new TextEncoder().encode(content).length;
|
|
305
|
+
// Calculate code width: terminal - marginLeft(3) - lineNum(7) - some margin
|
|
306
|
+
const codeWidth = Math.max(terminalWidth - 14, 30);
|
|
307
|
+
return (_jsxs(Box, { flexDirection: "column", marginLeft: 2, marginTop: 0.5, children: [_jsxs(Box, { children: [_jsx(Text, { color: Colors.AccentGreen, children: "+ Creating " }), _jsx(Text, { color: Colors.White, bold: true, children: filePath.split('/').slice(-2).join('/') }), _jsxs(Text, { dimColor: true, children: [" (", lines.length, " lines, ", formatBytes(byteSize), ")"] }), language && _jsxs(Text, { dimColor: true, children: [" [", language, "]"] })] }), _jsxs(Box, { flexDirection: "column", marginLeft: 2, marginTop: 1, children: [displayLines.map((line, lineIndex) => {
|
|
308
|
+
const wrappedLines = wrapCodeLine(line, codeWidth);
|
|
309
|
+
return (_jsx(Box, { flexDirection: "column", children: wrappedLines.map((wrappedLine, wrapIndex) => (_jsxs(Box, { children: [wrapIndex === 0 ? (_jsxs(Text, { dimColor: true, children: [String(lineIndex + 1).padStart(4, ' '), " \u2502 "] })) : (_jsx(Text, { dimColor: true, children: ' │ ' })), _jsx(Text, { children: wrappedLine })] }, wrapIndex))) }, lineIndex));
|
|
310
|
+
}), truncated && (_jsxs(Text, { dimColor: true, children: [" ... ", lines.length - maxLines, " more lines"] }))] })] }));
|
|
311
|
+
};
|
|
312
|
+
/**
|
|
313
|
+
* Derive streaming phase from events for indicator display.
|
|
314
|
+
*/
|
|
315
|
+
function derivePhase(events) {
|
|
316
|
+
if (events.length === 0)
|
|
317
|
+
return 'Thinking';
|
|
318
|
+
const last = events[events.length - 1];
|
|
319
|
+
if (last.type === StreamEventType.Thinking)
|
|
320
|
+
return 'Thinking';
|
|
321
|
+
if (last.type === StreamEventType.ToolCall) {
|
|
322
|
+
const name = last.toolCall?.name || 'tool';
|
|
323
|
+
return `Running ${name}`;
|
|
324
|
+
}
|
|
325
|
+
if (last.type === StreamEventType.ToolResult)
|
|
326
|
+
return 'Thinking';
|
|
327
|
+
return 'Generating';
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Estimate output tokens from accumulated text + thinking chars.
|
|
331
|
+
*/
|
|
332
|
+
function estimateTokens(events) {
|
|
333
|
+
let chars = 0;
|
|
334
|
+
for (const e of events) {
|
|
335
|
+
if (e.type === StreamEventType.Text && e.text)
|
|
336
|
+
chars += e.text.length;
|
|
337
|
+
if (e.type === StreamEventType.Thinking && e.thinking)
|
|
338
|
+
chars += e.thinking.length;
|
|
339
|
+
}
|
|
340
|
+
return Math.ceil(chars / 4);
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Format elapsed seconds as compact string: "1.2s", "12s", "1m 5s"
|
|
344
|
+
*/
|
|
345
|
+
function formatElapsed(ms) {
|
|
346
|
+
const s = ms / 1000;
|
|
347
|
+
if (s < 10)
|
|
348
|
+
return `${s.toFixed(1)}s`;
|
|
349
|
+
if (s < 60)
|
|
350
|
+
return `${Math.floor(s)}s`;
|
|
351
|
+
const m = Math.floor(s / 60);
|
|
352
|
+
const rem = Math.floor(s % 60);
|
|
353
|
+
return `${m}m ${rem}s`;
|
|
354
|
+
}
|
|
355
|
+
const SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
356
|
+
/**
|
|
357
|
+
* Streaming indicator: spinner + phase + elapsed + token estimate
|
|
358
|
+
*/
|
|
359
|
+
const StreamingIndicator = ({ events, startTime }) => {
|
|
360
|
+
const [frame, setFrame] = useState(0);
|
|
361
|
+
const [elapsed, setElapsed] = useState(0);
|
|
362
|
+
useEffect(() => {
|
|
363
|
+
const timer = setInterval(() => {
|
|
364
|
+
setFrame(f => (f + 1) % SPINNER_FRAMES.length);
|
|
365
|
+
setElapsed(Date.now() - startTime);
|
|
366
|
+
}, 80);
|
|
367
|
+
return () => clearInterval(timer);
|
|
368
|
+
}, [startTime]);
|
|
369
|
+
const phase = derivePhase(events);
|
|
370
|
+
const tokens = estimateTokens(events);
|
|
371
|
+
const timeStr = formatElapsed(elapsed);
|
|
372
|
+
return (_jsxs(Box, { gap: 1, children: [_jsx(Text, { color: Colors.AccentCyan, children: SPINNER_FRAMES[frame] }), _jsx(Text, { color: Colors.AccentCyan, children: phase }), _jsx(Text, { dimColor: true, children: timeStr }), tokens > 0 && _jsxs(Text, { dimColor: true, children: ["~", tokens, " tokens"] })] }));
|
|
373
|
+
};
|
|
374
|
+
/**
|
|
375
|
+
* Get status indicator for tool calls
|
|
376
|
+
*/
|
|
377
|
+
function getToolStatus(status) {
|
|
378
|
+
switch (status) {
|
|
379
|
+
case ToolCallStatus.Pending:
|
|
380
|
+
return { color: Colors.AccentYellow, symbol: '○' };
|
|
381
|
+
case ToolCallStatus.Executing:
|
|
382
|
+
return { color: Colors.AccentCyan, symbol: '●' };
|
|
383
|
+
case ToolCallStatus.Success:
|
|
384
|
+
return { color: Colors.AccentGreen, symbol: '✓' };
|
|
385
|
+
case ToolCallStatus.Error:
|
|
386
|
+
return { color: Colors.AccentRed, symbol: '✗' };
|
|
387
|
+
default:
|
|
388
|
+
return { color: Colors.Gray, symbol: '?' };
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Format tool input for display
|
|
393
|
+
*/
|
|
394
|
+
function formatToolInput(name, args) {
|
|
395
|
+
if (!args)
|
|
396
|
+
return '';
|
|
397
|
+
const lowerName = name.toLowerCase();
|
|
398
|
+
switch (lowerName) {
|
|
399
|
+
case 'read':
|
|
400
|
+
return args.file_path ? `file: ${args.file_path}` : '';
|
|
401
|
+
case 'write':
|
|
402
|
+
return args.file_path ? `file: ${args.file_path}` : '';
|
|
403
|
+
case 'edit':
|
|
404
|
+
return args.file_path ? `file: ${args.file_path}` : '';
|
|
405
|
+
case 'glob':
|
|
406
|
+
return args.pattern ? `pattern: ${args.pattern}` : '';
|
|
407
|
+
case 'grep':
|
|
408
|
+
return args.pattern ? `pattern: ${args.pattern}` : '';
|
|
409
|
+
case 'bash':
|
|
410
|
+
const cmd = args.command || '';
|
|
411
|
+
return cmd.length > 60 ? cmd.slice(0, 60) + '...' : cmd;
|
|
412
|
+
default:
|
|
413
|
+
const first = Object.values(args).find(v => typeof v === 'string');
|
|
414
|
+
if (first) {
|
|
415
|
+
const s = String(first);
|
|
416
|
+
return s.length > 60 ? s.slice(0, 60) + '...' : s;
|
|
417
|
+
}
|
|
418
|
+
return '';
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Format tool result for display
|
|
423
|
+
*/
|
|
424
|
+
function formatToolResult(name, result) {
|
|
425
|
+
if (!result)
|
|
426
|
+
return '';
|
|
427
|
+
if (result.isError || result.error) {
|
|
428
|
+
const err = result.error || 'Error';
|
|
429
|
+
return err.length > 80 ? err.slice(0, 80) + '...' : err;
|
|
430
|
+
}
|
|
431
|
+
if (!result.output)
|
|
432
|
+
return 'Completed';
|
|
433
|
+
const lowerName = name.toLowerCase();
|
|
434
|
+
switch (lowerName) {
|
|
435
|
+
case 'read':
|
|
436
|
+
const lineCount = result.output.split('\n').length;
|
|
437
|
+
return `${lineCount} line${lineCount !== 1 ? 's' : ''} read`;
|
|
438
|
+
case 'write':
|
|
439
|
+
return 'File created/written';
|
|
440
|
+
case 'edit':
|
|
441
|
+
return 'File modified successfully';
|
|
442
|
+
case 'glob':
|
|
443
|
+
const fileCount = result.output.split('\n').filter(Boolean).length;
|
|
444
|
+
return `Found ${fileCount} file${fileCount !== 1 ? 's' : ''}`;
|
|
445
|
+
case 'grep':
|
|
446
|
+
const matchCount = result.output.split('\n').filter(Boolean).length;
|
|
447
|
+
return `Found ${matchCount} match${matchCount !== 1 ? 'es' : ''}`;
|
|
448
|
+
case 'bash':
|
|
449
|
+
const lines = result.output.split('\n').filter(line => line.trim());
|
|
450
|
+
if (lines.length === 0)
|
|
451
|
+
return 'Command executed';
|
|
452
|
+
if (lines.length === 1) {
|
|
453
|
+
return lines[0].length > 60 ? lines[0].slice(0, 60) + '...' : lines[0];
|
|
454
|
+
}
|
|
455
|
+
return `${lines.length} lines of output`;
|
|
456
|
+
default:
|
|
457
|
+
return result.output.length > 80 ? result.output.slice(0, 80) + '...' : result.output;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Render a single tool call with its result
|
|
462
|
+
*/
|
|
463
|
+
const ToolCallItem = ({ toolCall, inputArgs }) => {
|
|
464
|
+
const { color, symbol } = getToolStatus(toolCall.status);
|
|
465
|
+
const isExecuting = toolCall.status === ToolCallStatus.Executing || toolCall.status === ToolCallStatus.Pending;
|
|
466
|
+
const isComplete = toolCall.status === ToolCallStatus.Success;
|
|
467
|
+
const result = toolCall.resultDisplay ? formatToolResult(toolCall.name, toolCall.resultDisplay) : '';
|
|
468
|
+
// Special handling for Write operations to show content preview
|
|
469
|
+
const isWriteOperation = toolCall.name.toLowerCase() === 'write' && inputArgs;
|
|
470
|
+
const input = !isWriteOperation ? formatToolInput(toolCall.name, inputArgs) : '';
|
|
471
|
+
const filePath = inputArgs?.file_path;
|
|
472
|
+
const content = inputArgs?.content || '';
|
|
473
|
+
// Special handling for Edit operations with diff (case-insensitive check)
|
|
474
|
+
const isEditOperation = toolCall.name.toLowerCase() === 'edit';
|
|
475
|
+
const hasDiff = toolCall.resultDisplay?.metadata?.diff;
|
|
476
|
+
// Check if we have old/new strings for preview (before approval)
|
|
477
|
+
const oldStr = inputArgs?.old_string;
|
|
478
|
+
const newStr = inputArgs?.new_string;
|
|
479
|
+
const hasPreviewData = isEditOperation && oldStr !== undefined && newStr !== undefined;
|
|
480
|
+
return (_jsxs(Box, { flexDirection: "column", marginY: 0.5, children: [_jsxs(Box, { children: [_jsxs(Text, { color: color, children: [symbol, " "] }), _jsx(Text, { bold: true, children: toolCall.name }), input && _jsxs(Text, { dimColor: true, children: [" ", input] }), isWriteOperation && filePath && _jsxs(Text, { dimColor: true, children: [" file: ", filePath] }), isExecuting && !hasPreviewData && _jsx(Text, { color: Colors.AccentCyan, dimColor: true, children: " (running...)" })] }), isEditOperation && isExecuting && hasPreviewData && (_jsx(Box, { marginLeft: 2, children: _jsx(DiffPreview, { oldString: oldStr, newString: newStr, filePath: filePath || 'file', compact: false }) })), isWriteOperation && content && filePath && (_jsx(InlineWritePreview, { filePath: filePath, content: content, maxLines: 50 })), isEditOperation && isComplete && hasDiff && (_jsx(Box, { marginLeft: 3, marginTop: 0.5, children: _jsx(UnifiedDiffDisplay, { diffString: toolCall.resultDisplay.metadata.diff, filePath: toolCall.resultDisplay?.metadata?.fileStats?.path || filePath || 'file', compact: false, fileStats: toolCall.resultDisplay?.metadata?.fileStats }) })), result && !(isEditOperation && isComplete && hasDiff) && (_jsxs(Box, { marginLeft: 3, marginTop: 0.5, children: [_jsx(Text, { dimColor: true, children: "\u2192 " }), _jsx(Text, { children: result })] }))] }));
|
|
481
|
+
};
|
|
482
|
+
/**
|
|
483
|
+
* Turn summary line — shown after model response completes.
|
|
484
|
+
* CC-style: "duration · input/output tokens"
|
|
485
|
+
*/
|
|
486
|
+
const TurnSummaryLine = ({ durationMs, events, usage }) => {
|
|
487
|
+
const elapsed = formatElapsed(durationMs);
|
|
488
|
+
const toolCount = events.filter(e => e.type === StreamEventType.ToolCall).length;
|
|
489
|
+
const parts = [elapsed];
|
|
490
|
+
if (usage && (usage.inputTokens > 0 || usage.outputTokens > 0)) {
|
|
491
|
+
parts.push(`${usage.inputTokens.toLocaleString()} in / ${usage.outputTokens.toLocaleString()} out`);
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
const estimated = estimateTokens(events);
|
|
495
|
+
if (estimated > 0)
|
|
496
|
+
parts.push(`~${estimated} tokens`);
|
|
497
|
+
}
|
|
498
|
+
if (toolCount > 0) {
|
|
499
|
+
parts.push(`${toolCount} tool${toolCount !== 1 ? 's' : ''}`);
|
|
500
|
+
}
|
|
501
|
+
return (_jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: parts.join(' · ') }) }));
|
|
502
|
+
};
|
|
503
|
+
/**
|
|
504
|
+
* Main StreamDisplay - renders events sequentially as they arrive
|
|
505
|
+
*/
|
|
506
|
+
export const StreamDisplay = ({ events, isStreaming, showThinking: _showThinking = true, // Not used - interleaved thinking always shown
|
|
507
|
+
streamStartTime, turnUsage, }) => {
|
|
508
|
+
const { stdout } = useStdout();
|
|
509
|
+
const terminalWidth = stdout?.columns || 80;
|
|
510
|
+
const startTimeRef = useRef(streamStartTime || Date.now());
|
|
511
|
+
useEffect(() => {
|
|
512
|
+
if (streamStartTime)
|
|
513
|
+
startTimeRef.current = streamStartTime;
|
|
514
|
+
}, [streamStartTime]);
|
|
515
|
+
if (events.length === 0) {
|
|
516
|
+
return isStreaming ? (_jsx(StreamingIndicator, { events: events, startTime: startTimeRef.current })) : null;
|
|
517
|
+
}
|
|
518
|
+
// Consolidate consecutive text/thinking chunks for cleaner display
|
|
519
|
+
// but maintain the sequential order
|
|
520
|
+
const consolidated = [];
|
|
521
|
+
for (const event of events) {
|
|
522
|
+
const last = consolidated[consolidated.length - 1];
|
|
523
|
+
if (event.type === StreamEventType.UserMessage && event.userMessage) {
|
|
524
|
+
// User message - always add as separate item (never consolidate)
|
|
525
|
+
consolidated.push({ type: 'user', content: event.userMessage, id: event.id });
|
|
526
|
+
}
|
|
527
|
+
else if (event.type === StreamEventType.Text && event.text) {
|
|
528
|
+
if (last?.type === 'text') {
|
|
529
|
+
last.content = (last.content || '') + event.text;
|
|
530
|
+
}
|
|
531
|
+
else {
|
|
532
|
+
consolidated.push({ type: 'text', content: event.text, id: event.id });
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
else if (event.type === StreamEventType.Thinking && event.thinking) {
|
|
536
|
+
if (last?.type === 'thinking') {
|
|
537
|
+
last.content = (last.content || '') + event.thinking;
|
|
538
|
+
}
|
|
539
|
+
else {
|
|
540
|
+
consolidated.push({ type: 'thinking', content: event.thinking, id: event.id });
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
else if (event.type === StreamEventType.ToolCall && event.toolCall) {
|
|
544
|
+
consolidated.push({
|
|
545
|
+
type: 'tool',
|
|
546
|
+
toolCall: event.toolCall,
|
|
547
|
+
toolInputArgs: event.toolInputArgs,
|
|
548
|
+
id: event.id,
|
|
549
|
+
});
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
return (_jsxs(Box, { flexDirection: "column", children: [consolidated.map((item) => {
|
|
553
|
+
// User message
|
|
554
|
+
if (item.type === 'user' && item.content) {
|
|
555
|
+
return (_jsxs(Box, { marginY: 1, children: [_jsx(Text, { color: Colors.AccentBlue, children: "\u276F " }), _jsx(Text, { children: item.content })] }, item.id));
|
|
556
|
+
}
|
|
557
|
+
// Interleaved thinking (reasoning between tool calls) - ALWAYS show
|
|
558
|
+
// This is the model's natural reasoning output, not toggleable extended thinking
|
|
559
|
+
if (item.type === 'thinking' && item.content) {
|
|
560
|
+
const thinkingLines = wordWrap(item.content, terminalWidth - 2);
|
|
561
|
+
return (_jsx(Box, { flexDirection: "column", children: thinkingLines.map((line, i) => (_jsx(Text, { dimColor: true, italic: true, children: line }, i))) }, item.id));
|
|
562
|
+
}
|
|
563
|
+
if (item.type === 'text' && item.content) {
|
|
564
|
+
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: 2, flexShrink: 0, children: _jsx(Text, { color: theme.text.accent, children: '✦ ' }) }), _jsx(Box, { flexGrow: 1, flexDirection: "column", children: _jsx(SimpleMarkdown, { text: item.content, width: terminalWidth - 2 }) })] }, item.id));
|
|
565
|
+
}
|
|
566
|
+
if (item.type === 'tool' && item.toolCall) {
|
|
567
|
+
return (_jsx(ToolCallItem, { toolCall: item.toolCall, inputArgs: item.toolInputArgs }, item.id));
|
|
568
|
+
}
|
|
569
|
+
return null;
|
|
570
|
+
}), isStreaming && (_jsx(StreamingIndicator, { events: events, startTime: startTimeRef.current })), !isStreaming && events.length > 0 && (_jsx(TurnSummaryLine, { durationMs: Date.now() - startTimeRef.current, events: events, usage: turnUsage }))] }));
|
|
571
|
+
};
|
|
572
|
+
export default StreamDisplay;
|
|
573
|
+
//# sourceMappingURL=StreamDisplay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamDisplay.js","sourceRoot":"","sources":["../../../src/ink-ui/components/StreamDisplay.tsx"],"names":[],"mappings":"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"}
|