centaurus-cli 3.0.0 → 3.1.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/dist/ai/types.js +0 -1
- package/dist/ai/types.js.map +1 -1
- package/dist/cli-adapter.js +5047 -5037
- package/dist/cli-adapter.js.map +1 -1
- package/dist/commands/CommandParser.js +372 -315
- package/dist/commands/CommandParser.js.map +1 -1
- package/dist/config/build-config.js +11 -42
- package/dist/config/build-config.js.map +1 -1
- package/dist/config/defaultConfig.js +94 -82
- package/dist/config/defaultConfig.js.map +1 -1
- package/dist/config/manager.js +144 -160
- package/dist/config/manager.js.map +1 -1
- package/dist/config/mcp-config-manager.js +411 -364
- package/dist/config/mcp-config-manager.js.map +1 -1
- package/dist/config/models.js +118 -185
- package/dist/config/models.js.map +1 -1
- package/dist/config/slash-commands.js +186 -184
- package/dist/config/slash-commands.js.map +1 -1
- package/dist/config/types.js +33 -26
- package/dist/config/types.js.map +1 -1
- package/dist/context/command-detector.js +63 -67
- package/dist/context/command-detector.js.map +1 -1
- package/dist/context/context-manager.js +533 -518
- package/dist/context/context-manager.js.map +1 -1
- package/dist/context/handlers/docker-handler.js +518 -576
- package/dist/context/handlers/docker-handler.js.map +1 -1
- package/dist/context/handlers/ssh-handler.js +1050 -1109
- package/dist/context/handlers/ssh-handler.js.map +1 -1
- package/dist/context/handlers/wsl-handler.js +558 -630
- package/dist/context/handlers/wsl-handler.js.map +1 -1
- package/dist/context/index.js +42 -6
- package/dist/context/index.js.map +1 -1
- package/dist/context/subshell-handler.js +0 -4
- package/dist/context/subshell-handler.js.map +1 -1
- package/dist/context/types.js +20 -31
- package/dist/context/types.js.map +1 -1
- package/dist/hooks/useConnectivity.js +13 -10
- package/dist/hooks/useConnectivity.js.map +1 -1
- package/dist/hooks/useTerminalDimensions.js +67 -79
- package/dist/hooks/useTerminalDimensions.js.map +1 -1
- package/dist/index.js +228 -251
- package/dist/index.js.map +1 -1
- package/dist/mcp/mcp-command-handler.js +297 -260
- package/dist/mcp/mcp-command-handler.js.map +1 -1
- package/dist/mcp/mcp-server-manager.js +139 -155
- package/dist/mcp/mcp-server-manager.js.map +1 -1
- package/dist/mcp/mcp-tool-wrapper.js +74 -94
- package/dist/mcp/mcp-tool-wrapper.js.map +1 -1
- package/dist/services/ai-autocomplete-agent.js +169 -181
- package/dist/services/ai-autocomplete-agent.js.map +1 -1
- package/dist/services/ai-context-injector.js +180 -93
- package/dist/services/ai-context-injector.js.map +1 -1
- package/dist/services/ai-service-client.js +513 -456
- package/dist/services/ai-service-client.js.map +1 -1
- package/dist/services/api-client.js +443 -441
- package/dist/services/api-client.js.map +1 -1
- package/dist/services/auth-handler.js +162 -198
- package/dist/services/auth-handler.js.map +1 -1
- package/dist/services/background-task-manager.js +258 -282
- package/dist/services/background-task-manager.js.map +1 -1
- package/dist/services/checkpoint-manager.js +1513 -973
- package/dist/services/checkpoint-manager.js.map +1 -1
- package/dist/services/clipboard-service.js +151 -200
- package/dist/services/clipboard-service.js.map +1 -1
- package/dist/services/connectivity-manager.js +63 -65
- package/dist/services/connectivity-manager.js.map +1 -1
- package/dist/services/conversation-manager.js +118 -121
- package/dist/services/conversation-manager.js.map +1 -1
- package/dist/services/environment-context-injector.js +160 -187
- package/dist/services/environment-context-injector.js.map +1 -1
- package/dist/services/fast-context-agent.js +203 -243
- package/dist/services/fast-context-agent.js.map +1 -1
- package/dist/services/input-detection-agent.js +190 -202
- package/dist/services/input-detection-agent.js.map +1 -1
- package/dist/services/input-requirement-detector.js +155 -189
- package/dist/services/input-requirement-detector.js.map +1 -1
- package/dist/services/local-chat-storage.js +342 -365
- package/dist/services/local-chat-storage.js.map +1 -1
- package/dist/services/monitored-shell-manager.js +225 -233
- package/dist/services/monitored-shell-manager.js.map +1 -1
- package/dist/services/ollama-service.js +293 -310
- package/dist/services/ollama-service.js.map +1 -1
- package/dist/services/rules-storage.js +142 -0
- package/dist/services/rules-storage.js.map +1 -0
- package/dist/services/session-quota-manager.js +219 -235
- package/dist/services/session-quota-manager.js.map +1 -1
- package/dist/services/shell-input-agent.js +299 -334
- package/dist/services/shell-input-agent.js.map +1 -1
- package/dist/services/sub-agent-manager.js +459 -501
- package/dist/services/sub-agent-manager.js.map +1 -1
- package/dist/services/warpify-detector.js +133 -183
- package/dist/services/warpify-detector.js.map +1 -1
- package/dist/services/workflow-storage.js +202 -217
- package/dist/services/workflow-storage.js.map +1 -1
- package/dist/test-ssh-handler.js +148 -193
- package/dist/test-ssh-handler.js.map +1 -1
- package/dist/tools/add-mcp.js +161 -0
- package/dist/tools/add-mcp.js.map +1 -0
- package/dist/tools/background-command.js +240 -273
- package/dist/tools/background-command.js.map +1 -1
- package/dist/tools/command.js +447 -440
- package/dist/tools/command.js.map +1 -1
- package/dist/tools/create-image.js +172 -202
- package/dist/tools/create-image.js.map +1 -1
- package/dist/tools/enter-remote-session.js +169 -215
- package/dist/tools/enter-remote-session.js.map +1 -1
- package/dist/tools/fast-context.js +60 -67
- package/dist/tools/fast-context.js.map +1 -1
- package/dist/tools/file-ops.js +605 -537
- package/dist/tools/file-ops.js.map +1 -1
- package/dist/tools/find-files.js +262 -303
- package/dist/tools/find-files.js.map +1 -1
- package/dist/tools/get-diff.js +423 -400
- package/dist/tools/get-diff.js.map +1 -1
- package/dist/tools/grep-search.js +966 -948
- package/dist/tools/grep-search.js.map +1 -1
- package/dist/tools/inspect-symbol.js +308 -323
- package/dist/tools/inspect-symbol.js.map +1 -1
- package/dist/tools/plan-mode.js +459 -503
- package/dist/tools/plan-mode.js.map +1 -1
- package/dist/tools/read-binary-file.js +160 -190
- package/dist/tools/read-binary-file.js.map +1 -1
- package/dist/tools/registry.js +100 -84
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/reproduce_issue.js +170 -151
- package/dist/tools/reproduce_issue.js.map +1 -1
- package/dist/tools/sub-agent.js +223 -228
- package/dist/tools/sub-agent.js.map +1 -1
- package/dist/tools/task-complete.js +28 -27
- package/dist/tools/task-complete.js.map +1 -1
- package/dist/tools/types.js +0 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/tools/validation.js +96 -118
- package/dist/tools/validation.js.map +1 -1
- package/dist/tools/web-search.js +194 -194
- package/dist/tools/web-search.js.map +1 -1
- package/dist/tools/workflow-tool.js +77 -82
- package/dist/tools/workflow-tool.js.map +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/rule.js +1 -0
- package/dist/types/rule.js.map +1 -0
- package/dist/types/workflow.js +0 -7
- package/dist/types/workflow.js.map +1 -1
- package/dist/ui/components/AgentTimer.js +24 -25
- package/dist/ui/components/AgentTimer.js.map +1 -1
- package/dist/ui/components/App.js +3266 -3249
- package/dist/ui/components/App.js.map +1 -1
- package/dist/ui/components/AuthScreen.js +22 -34
- package/dist/ui/components/AuthScreen.js.map +1 -1
- package/dist/ui/components/AuthWelcomeScreen.js +30 -24
- package/dist/ui/components/AuthWelcomeScreen.js.map +1 -1
- package/dist/ui/components/Breadcrumbs.js +53 -82
- package/dist/ui/components/Breadcrumbs.js.map +1 -1
- package/dist/ui/components/CircularSelectInput.js +59 -67
- package/dist/ui/components/CircularSelectInput.js.map +1 -1
- package/dist/ui/components/ClipboardFileAutocomplete.js +78 -39
- package/dist/ui/components/ClipboardFileAutocomplete.js.map +1 -1
- package/dist/ui/components/CodeBlock.js +24 -42
- package/dist/ui/components/CodeBlock.js.map +1 -1
- package/dist/ui/components/ConfigViewer.js +18 -25
- package/dist/ui/components/ConfigViewer.js.map +1 -1
- package/dist/ui/components/ConfirmPrompt.js +49 -71
- package/dist/ui/components/ConfirmPrompt.js.map +1 -1
- package/dist/ui/components/ConnectionStatusMessage.js +32 -83
- package/dist/ui/components/ConnectionStatusMessage.js.map +1 -1
- package/dist/ui/components/ContextWindowIndicator.js +34 -49
- package/dist/ui/components/ContextWindowIndicator.js.map +1 -1
- package/dist/ui/components/DetailedPlanReviewScreen.js +104 -106
- package/dist/ui/components/DetailedPlanReviewScreen.js.map +1 -1
- package/dist/ui/components/DiffViewer.js +68 -121
- package/dist/ui/components/DiffViewer.js.map +1 -1
- package/dist/ui/components/ErrorBoundary.js +40 -48
- package/dist/ui/components/ErrorBoundary.js.map +1 -1
- package/dist/ui/components/FileCreationPreview.js +29 -60
- package/dist/ui/components/FileCreationPreview.js.map +1 -1
- package/dist/ui/components/FileOperation.js +34 -29
- package/dist/ui/components/FileOperation.js.map +1 -1
- package/dist/ui/components/FileTagAutocomplete.js +55 -25
- package/dist/ui/components/FileTagAutocomplete.js.map +1 -1
- package/dist/ui/components/FontRecommendation.js.map +1 -1
- package/dist/ui/components/GitDiffBreadcrumb.js +29 -0
- package/dist/ui/components/GitDiffBreadcrumb.js.map +1 -0
- package/dist/ui/components/InputBox.js +1620 -2150
- package/dist/ui/components/InputBox.js.map +1 -1
- package/dist/ui/components/InteractiveShell.js +234 -352
- package/dist/ui/components/InteractiveShell.js.map +1 -1
- package/dist/ui/components/KeyboardHelp.js +34 -35
- package/dist/ui/components/KeyboardHelp.js.map +1 -1
- package/dist/ui/components/LoadingIndicator.js +22 -25
- package/dist/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/ui/components/MCPAddScreen.js +40 -51
- package/dist/ui/components/MCPAddScreen.js.map +1 -1
- package/dist/ui/components/MCPListScreen.js +40 -48
- package/dist/ui/components/MCPListScreen.js.map +1 -1
- package/dist/ui/components/MCPServerListScreen.js +49 -56
- package/dist/ui/components/MCPServerListScreen.js.map +1 -1
- package/dist/ui/components/MarkdownRenderer.js +69 -96
- package/dist/ui/components/MarkdownRenderer.js.map +1 -1
- package/dist/ui/components/MessageBox.js +66 -48
- package/dist/ui/components/MessageBox.js.map +1 -1
- package/dist/ui/components/MessageDisplay.js +150 -142
- package/dist/ui/components/MessageDisplay.js.map +1 -1
- package/dist/ui/components/MonitorModeAIPanel.js +46 -65
- package/dist/ui/components/MonitorModeAIPanel.js.map +1 -1
- package/dist/ui/components/MultiLineInput.js +243 -277
- package/dist/ui/components/MultiLineInput.js.map +1 -1
- package/dist/ui/components/PasswordPrompt.js +37 -18
- package/dist/ui/components/PasswordPrompt.js.map +1 -1
- package/dist/ui/components/PlanAcceptedMessage.js +27 -38
- package/dist/ui/components/PlanAcceptedMessage.js.map +1 -1
- package/dist/ui/components/PlanReviewScreen.js +46 -50
- package/dist/ui/components/PlanReviewScreen.js.map +1 -1
- package/dist/ui/components/RulesEditorScreen.js +81 -0
- package/dist/ui/components/RulesEditorScreen.js.map +1 -0
- package/dist/ui/components/SelectPrompt.js +19 -8
- package/dist/ui/components/SelectPrompt.js.map +1 -1
- package/dist/ui/components/ShimmerText.js +44 -0
- package/dist/ui/components/ShimmerText.js.map +1 -0
- package/dist/ui/components/SlashCommandAutocomplete.js +49 -22
- package/dist/ui/components/SlashCommandAutocomplete.js.map +1 -1
- package/dist/ui/components/StatusBar.js +56 -87
- package/dist/ui/components/StatusBar.js.map +1 -1
- package/dist/ui/components/StreamingMessageDisplay.js +116 -99
- package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
- package/dist/ui/components/TaskCompletedMessage.js +28 -23
- package/dist/ui/components/TaskCompletedMessage.js.map +1 -1
- package/dist/ui/components/TaskProgressIndicator.js +44 -70
- package/dist/ui/components/TaskProgressIndicator.js.map +1 -1
- package/dist/ui/components/ThinkingDisplay.js +44 -41
- package/dist/ui/components/ThinkingDisplay.js.map +1 -1
- package/dist/ui/components/ToolExecutionMessage.js +772 -1326
- package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
- package/dist/ui/components/ToolExecutionStatus.js +53 -84
- package/dist/ui/components/ToolExecutionStatus.js.map +1 -1
- package/dist/ui/components/ToolResult.js +22 -15
- package/dist/ui/components/ToolResult.js.map +1 -1
- package/dist/ui/components/VersionUpdatePrompt.js +88 -120
- package/dist/ui/components/VersionUpdatePrompt.js.map +1 -1
- package/dist/ui/components/WelcomeBanner.js +176 -26
- package/dist/ui/components/WelcomeBanner.js.map +1 -1
- package/dist/ui/components/WorkflowCreatorScreen.js +94 -161
- package/dist/ui/components/WorkflowCreatorScreen.js.map +1 -1
- package/dist/utils/ansi-encoder.js +30 -61
- package/dist/utils/ansi-encoder.js.map +1 -1
- package/dist/utils/chat-formatter.js +327 -305
- package/dist/utils/chat-formatter.js.map +1 -1
- package/dist/utils/command-history.js +152 -174
- package/dist/utils/command-history.js.map +1 -1
- package/dist/utils/context-sanitizer.js +49 -112
- package/dist/utils/context-sanitizer.js.map +1 -1
- package/dist/utils/conversation-logger.js +292 -324
- package/dist/utils/conversation-logger.js.map +1 -1
- package/dist/utils/custom-commands-manager.js +126 -131
- package/dist/utils/custom-commands-manager.js.map +1 -1
- package/dist/utils/editor-utils.js +732 -837
- package/dist/utils/editor-utils.js.map +1 -1
- package/dist/utils/file.js +174 -213
- package/dist/utils/file.js.map +1 -1
- package/dist/utils/git-stats.js +169 -0
- package/dist/utils/git-stats.js.map +1 -0
- package/dist/utils/input-classifier.js +960 -482
- package/dist/utils/input-classifier.js.map +1 -1
- package/dist/utils/logger.js +48 -73
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/markdown-parser.js +277 -310
- package/dist/utils/markdown-parser.js.map +1 -1
- package/dist/utils/rule-reference-resolver.js +54 -0
- package/dist/utils/rule-reference-resolver.js.map +1 -0
- package/dist/utils/shell.js +144 -156
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/state.js +23 -22
- package/dist/utils/state.js.map +1 -1
- package/dist/utils/syntax-checker.js +279 -327
- package/dist/utils/syntax-checker.js.map +1 -1
- package/dist/utils/terminal-output.js +199 -302
- package/dist/utils/terminal-output.js.map +1 -1
- package/dist/utils/text-clipboard.js +47 -70
- package/dist/utils/text-clipboard.js.map +1 -1
- package/dist/utils/unicode-sanitizer.js +134 -197
- package/dist/utils/unicode-sanitizer.js.map +1 -1
- package/dist/utils/version-checker.js +46 -56
- package/dist/utils/version-checker.js.map +1 -1
- package/package.json +6 -4
- package/dist/ai/types.d.ts +0 -20
- package/dist/ai/types.d.ts.map +0 -1
- package/dist/cli-adapter.d.ts +0 -511
- package/dist/cli-adapter.d.ts.map +0 -1
- package/dist/commands/CommandParser.d.ts +0 -27
- package/dist/commands/CommandParser.d.ts.map +0 -1
- package/dist/config/build-config.d.ts +0 -42
- package/dist/config/build-config.d.ts.map +0 -1
- package/dist/config/defaultConfig.d.ts +0 -79
- package/dist/config/defaultConfig.d.ts.map +0 -1
- package/dist/config/manager.d.ts +0 -62
- package/dist/config/manager.d.ts.map +0 -1
- package/dist/config/mcp-config-manager.d.ts +0 -79
- package/dist/config/mcp-config-manager.d.ts.map +0 -1
- package/dist/config/models.d.ts +0 -83
- package/dist/config/models.d.ts.map +0 -1
- package/dist/config/slash-commands.d.ts +0 -23
- package/dist/config/slash-commands.d.ts.map +0 -1
- package/dist/config/types.d.ts +0 -35
- package/dist/config/types.d.ts.map +0 -1
- package/dist/context/command-detector.d.ts +0 -50
- package/dist/context/command-detector.d.ts.map +0 -1
- package/dist/context/context-manager.d.ts +0 -157
- package/dist/context/context-manager.d.ts.map +0 -1
- package/dist/context/handlers/docker-handler.d.ts +0 -130
- package/dist/context/handlers/docker-handler.d.ts.map +0 -1
- package/dist/context/handlers/ssh-handler.d.ts +0 -201
- package/dist/context/handlers/ssh-handler.d.ts.map +0 -1
- package/dist/context/handlers/wsl-handler.d.ts +0 -146
- package/dist/context/handlers/wsl-handler.d.ts.map +0 -1
- package/dist/context/index.d.ts +0 -8
- package/dist/context/index.d.ts.map +0 -1
- package/dist/context/subshell-handler.d.ts +0 -165
- package/dist/context/subshell-handler.d.ts.map +0 -1
- package/dist/context/types.d.ts +0 -70
- package/dist/context/types.d.ts.map +0 -1
- package/dist/hooks/useConnectivity.d.ts +0 -2
- package/dist/hooks/useConnectivity.d.ts.map +0 -1
- package/dist/hooks/useTerminalDimensions.d.ts +0 -41
- package/dist/hooks/useTerminalDimensions.d.ts.map +0 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +0 -1
- package/dist/mcp/mcp-command-handler.d.ts +0 -47
- package/dist/mcp/mcp-command-handler.d.ts.map +0 -1
- package/dist/mcp/mcp-server-manager.d.ts +0 -30
- package/dist/mcp/mcp-server-manager.d.ts.map +0 -1
- package/dist/mcp/mcp-tool-wrapper.d.ts +0 -12
- package/dist/mcp/mcp-tool-wrapper.d.ts.map +0 -1
- package/dist/services/ai-autocomplete-agent.d.ts +0 -39
- package/dist/services/ai-autocomplete-agent.d.ts.map +0 -1
- package/dist/services/ai-context-injector.d.ts +0 -41
- package/dist/services/ai-context-injector.d.ts.map +0 -1
- package/dist/services/ai-service-client.d.ts +0 -128
- package/dist/services/ai-service-client.d.ts.map +0 -1
- package/dist/services/api-client.d.ts +0 -353
- package/dist/services/api-client.d.ts.map +0 -1
- package/dist/services/auth-handler.d.ts +0 -30
- package/dist/services/auth-handler.d.ts.map +0 -1
- package/dist/services/background-task-manager.d.ts +0 -114
- package/dist/services/background-task-manager.d.ts.map +0 -1
- package/dist/services/checkpoint-manager.d.ts +0 -167
- package/dist/services/checkpoint-manager.d.ts.map +0 -1
- package/dist/services/clipboard-service.d.ts +0 -37
- package/dist/services/clipboard-service.d.ts.map +0 -1
- package/dist/services/connectivity-manager.d.ts +0 -18
- package/dist/services/connectivity-manager.d.ts.map +0 -1
- package/dist/services/conversation-manager.d.ts +0 -73
- package/dist/services/conversation-manager.d.ts.map +0 -1
- package/dist/services/environment-context-injector.d.ts +0 -69
- package/dist/services/environment-context-injector.d.ts.map +0 -1
- package/dist/services/fast-context-agent.d.ts +0 -12
- package/dist/services/fast-context-agent.d.ts.map +0 -1
- package/dist/services/input-detection-agent.d.ts +0 -40
- package/dist/services/input-detection-agent.d.ts.map +0 -1
- package/dist/services/input-requirement-detector.d.ts +0 -28
- package/dist/services/input-requirement-detector.d.ts.map +0 -1
- package/dist/services/local-chat-storage.d.ts +0 -182
- package/dist/services/local-chat-storage.d.ts.map +0 -1
- package/dist/services/monitored-shell-manager.d.ts +0 -120
- package/dist/services/monitored-shell-manager.d.ts.map +0 -1
- package/dist/services/ollama-service.d.ts +0 -197
- package/dist/services/ollama-service.d.ts.map +0 -1
- package/dist/services/session-quota-manager.d.ts +0 -101
- package/dist/services/session-quota-manager.d.ts.map +0 -1
- package/dist/services/shell-input-agent.d.ts +0 -89
- package/dist/services/shell-input-agent.d.ts.map +0 -1
- package/dist/services/sub-agent-manager.d.ts +0 -140
- package/dist/services/sub-agent-manager.d.ts.map +0 -1
- package/dist/services/warpify-detector.d.ts +0 -43
- package/dist/services/warpify-detector.d.ts.map +0 -1
- package/dist/services/workflow-storage.d.ts +0 -72
- package/dist/services/workflow-storage.d.ts.map +0 -1
- package/dist/test-ssh-handler.d.ts +0 -8
- package/dist/test-ssh-handler.d.ts.map +0 -1
- package/dist/tools/background-command.d.ts +0 -11
- package/dist/tools/background-command.d.ts.map +0 -1
- package/dist/tools/command.d.ts +0 -3
- package/dist/tools/command.d.ts.map +0 -1
- package/dist/tools/create-image.d.ts +0 -10
- package/dist/tools/create-image.d.ts.map +0 -1
- package/dist/tools/enter-remote-session.d.ts +0 -48
- package/dist/tools/enter-remote-session.d.ts.map +0 -1
- package/dist/tools/fast-context.d.ts +0 -3
- package/dist/tools/fast-context.d.ts.map +0 -1
- package/dist/tools/file-ops.d.ts +0 -7
- package/dist/tools/file-ops.d.ts.map +0 -1
- package/dist/tools/find-files.d.ts +0 -49
- package/dist/tools/find-files.d.ts.map +0 -1
- package/dist/tools/get-diff.d.ts +0 -14
- package/dist/tools/get-diff.d.ts.map +0 -1
- package/dist/tools/grep-search.d.ts +0 -155
- package/dist/tools/grep-search.d.ts.map +0 -1
- package/dist/tools/inspect-symbol.d.ts +0 -32
- package/dist/tools/inspect-symbol.d.ts.map +0 -1
- package/dist/tools/plan-mode.d.ts +0 -140
- package/dist/tools/plan-mode.d.ts.map +0 -1
- package/dist/tools/read-binary-file.d.ts +0 -10
- package/dist/tools/read-binary-file.d.ts.map +0 -1
- package/dist/tools/registry.d.ts +0 -31
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/reproduce_issue.d.ts +0 -2
- package/dist/tools/reproduce_issue.d.ts.map +0 -1
- package/dist/tools/sub-agent.d.ts +0 -9
- package/dist/tools/sub-agent.d.ts.map +0 -1
- package/dist/tools/task-complete.d.ts +0 -3
- package/dist/tools/task-complete.d.ts.map +0 -1
- package/dist/tools/types.d.ts +0 -40
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/validation.d.ts +0 -47
- package/dist/tools/validation.d.ts.map +0 -1
- package/dist/tools/web-search.d.ts +0 -24
- package/dist/tools/web-search.d.ts.map +0 -1
- package/dist/tools/workflow-tool.d.ts +0 -11
- package/dist/tools/workflow-tool.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -123
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/workflow.d.ts +0 -110
- package/dist/types/workflow.d.ts.map +0 -1
- package/dist/ui/components/AgentTimer.d.ts +0 -7
- package/dist/ui/components/AgentTimer.d.ts.map +0 -1
- package/dist/ui/components/App.d.ts +0 -197
- package/dist/ui/components/App.d.ts.map +0 -1
- package/dist/ui/components/AuthScreen.d.ts +0 -8
- package/dist/ui/components/AuthScreen.d.ts.map +0 -1
- package/dist/ui/components/AuthWelcomeScreen.d.ts +0 -8
- package/dist/ui/components/AuthWelcomeScreen.d.ts.map +0 -1
- package/dist/ui/components/Breadcrumbs.d.ts +0 -13
- package/dist/ui/components/Breadcrumbs.d.ts.map +0 -1
- package/dist/ui/components/CircularSelectInput.d.ts +0 -24
- package/dist/ui/components/CircularSelectInput.d.ts.map +0 -1
- package/dist/ui/components/ClipboardFileAutocomplete.d.ts +0 -10
- package/dist/ui/components/ClipboardFileAutocomplete.d.ts.map +0 -1
- package/dist/ui/components/CodeBlock.d.ts +0 -9
- package/dist/ui/components/CodeBlock.d.ts.map +0 -1
- package/dist/ui/components/ConfigViewer.d.ts +0 -11
- package/dist/ui/components/ConfigViewer.d.ts.map +0 -1
- package/dist/ui/components/ConfirmPrompt.d.ts +0 -13
- package/dist/ui/components/ConfirmPrompt.d.ts.map +0 -1
- package/dist/ui/components/ConnectionStatusMessage.d.ts +0 -17
- package/dist/ui/components/ConnectionStatusMessage.d.ts.map +0 -1
- package/dist/ui/components/ContextWindowIndicator.d.ts +0 -8
- package/dist/ui/components/ContextWindowIndicator.d.ts.map +0 -1
- package/dist/ui/components/DetailedPlanReviewScreen.d.ts +0 -17
- package/dist/ui/components/DetailedPlanReviewScreen.d.ts.map +0 -1
- package/dist/ui/components/DiffViewer.d.ts +0 -9
- package/dist/ui/components/DiffViewer.d.ts.map +0 -1
- package/dist/ui/components/ErrorBoundary.d.ts +0 -17
- package/dist/ui/components/ErrorBoundary.d.ts.map +0 -1
- package/dist/ui/components/FileCreationPreview.d.ts +0 -8
- package/dist/ui/components/FileCreationPreview.d.ts.map +0 -1
- package/dist/ui/components/FileOperation.d.ts +0 -10
- package/dist/ui/components/FileOperation.d.ts.map +0 -1
- package/dist/ui/components/FileTagAutocomplete.d.ts +0 -11
- package/dist/ui/components/FileTagAutocomplete.d.ts.map +0 -1
- package/dist/ui/components/FontRecommendation.d.ts +0 -1
- package/dist/ui/components/FontRecommendation.d.ts.map +0 -1
- package/dist/ui/components/InputBox.d.ts +0 -42
- package/dist/ui/components/InputBox.d.ts.map +0 -1
- package/dist/ui/components/InteractiveShell.d.ts +0 -30
- package/dist/ui/components/InteractiveShell.d.ts.map +0 -1
- package/dist/ui/components/KeyboardHelp.d.ts +0 -7
- package/dist/ui/components/KeyboardHelp.d.ts.map +0 -1
- package/dist/ui/components/LoadingIndicator.d.ts +0 -3
- package/dist/ui/components/LoadingIndicator.d.ts.map +0 -1
- package/dist/ui/components/MCPAddScreen.d.ts +0 -13
- package/dist/ui/components/MCPAddScreen.d.ts.map +0 -1
- package/dist/ui/components/MCPListScreen.d.ts +0 -17
- package/dist/ui/components/MCPListScreen.d.ts.map +0 -1
- package/dist/ui/components/MCPServerListScreen.d.ts +0 -16
- package/dist/ui/components/MCPServerListScreen.d.ts.map +0 -1
- package/dist/ui/components/MarkdownRenderer.d.ts +0 -8
- package/dist/ui/components/MarkdownRenderer.d.ts.map +0 -1
- package/dist/ui/components/MessageBox.d.ts +0 -10
- package/dist/ui/components/MessageBox.d.ts.map +0 -1
- package/dist/ui/components/MessageDisplay.d.ts +0 -14
- package/dist/ui/components/MessageDisplay.d.ts.map +0 -1
- package/dist/ui/components/MonitorModeAIPanel.d.ts +0 -23
- package/dist/ui/components/MonitorModeAIPanel.d.ts.map +0 -1
- package/dist/ui/components/MultiLineInput.d.ts +0 -13
- package/dist/ui/components/MultiLineInput.d.ts.map +0 -1
- package/dist/ui/components/PasswordPrompt.d.ts +0 -9
- package/dist/ui/components/PasswordPrompt.d.ts.map +0 -1
- package/dist/ui/components/PlanAcceptedMessage.d.ts +0 -20
- package/dist/ui/components/PlanAcceptedMessage.d.ts.map +0 -1
- package/dist/ui/components/PlanReviewScreen.d.ts +0 -14
- package/dist/ui/components/PlanReviewScreen.d.ts.map +0 -1
- package/dist/ui/components/SelectPrompt.d.ts +0 -12
- package/dist/ui/components/SelectPrompt.d.ts.map +0 -1
- package/dist/ui/components/SlashCommandAutocomplete.d.ts +0 -13
- package/dist/ui/components/SlashCommandAutocomplete.d.ts.map +0 -1
- package/dist/ui/components/StatusBar.d.ts +0 -14
- package/dist/ui/components/StatusBar.d.ts.map +0 -1
- package/dist/ui/components/StreamingMessageDisplay.d.ts +0 -15
- package/dist/ui/components/StreamingMessageDisplay.d.ts.map +0 -1
- package/dist/ui/components/TaskCompletedMessage.d.ts +0 -14
- package/dist/ui/components/TaskCompletedMessage.d.ts.map +0 -1
- package/dist/ui/components/TaskProgressIndicator.d.ts +0 -18
- package/dist/ui/components/TaskProgressIndicator.d.ts.map +0 -1
- package/dist/ui/components/ThinkingDisplay.d.ts +0 -15
- package/dist/ui/components/ThinkingDisplay.d.ts.map +0 -1
- package/dist/ui/components/ToolExecutionMessage.d.ts +0 -8
- package/dist/ui/components/ToolExecutionMessage.d.ts.map +0 -1
- package/dist/ui/components/ToolExecutionStatus.d.ts +0 -10
- package/dist/ui/components/ToolExecutionStatus.d.ts.map +0 -1
- package/dist/ui/components/ToolResult.d.ts +0 -10
- package/dist/ui/components/ToolResult.d.ts.map +0 -1
- package/dist/ui/components/VersionUpdatePrompt.d.ts +0 -9
- package/dist/ui/components/VersionUpdatePrompt.d.ts.map +0 -1
- package/dist/ui/components/WelcomeBanner.d.ts +0 -3
- package/dist/ui/components/WelcomeBanner.d.ts.map +0 -1
- package/dist/ui/components/WorkflowCreatorScreen.d.ts +0 -25
- package/dist/ui/components/WorkflowCreatorScreen.d.ts.map +0 -1
- package/dist/utils/ansi-encoder.d.ts +0 -7
- package/dist/utils/ansi-encoder.d.ts.map +0 -1
- package/dist/utils/chat-formatter.d.ts +0 -12
- package/dist/utils/chat-formatter.d.ts.map +0 -1
- package/dist/utils/command-history.d.ts +0 -24
- package/dist/utils/command-history.d.ts.map +0 -1
- package/dist/utils/context-sanitizer.d.ts +0 -50
- package/dist/utils/context-sanitizer.d.ts.map +0 -1
- package/dist/utils/conversation-logger.d.ts +0 -142
- package/dist/utils/conversation-logger.d.ts.map +0 -1
- package/dist/utils/custom-commands-manager.d.ts +0 -59
- package/dist/utils/custom-commands-manager.d.ts.map +0 -1
- package/dist/utils/editor-utils.d.ts +0 -101
- package/dist/utils/editor-utils.d.ts.map +0 -1
- package/dist/utils/file.d.ts +0 -61
- package/dist/utils/file.d.ts.map +0 -1
- package/dist/utils/input-classifier.d.ts +0 -25
- package/dist/utils/input-classifier.d.ts.map +0 -1
- package/dist/utils/logger.d.ts +0 -17
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/markdown-parser.d.ts +0 -60
- package/dist/utils/markdown-parser.d.ts.map +0 -1
- package/dist/utils/shell.d.ts +0 -47
- package/dist/utils/shell.d.ts.map +0 -1
- package/dist/utils/state.d.ts +0 -13
- package/dist/utils/state.d.ts.map +0 -1
- package/dist/utils/syntax-checker.d.ts +0 -24
- package/dist/utils/syntax-checker.d.ts.map +0 -1
- package/dist/utils/terminal-output.d.ts +0 -25
- package/dist/utils/terminal-output.d.ts.map +0 -1
- package/dist/utils/text-clipboard.d.ts +0 -12
- package/dist/utils/text-clipboard.d.ts.map +0 -1
- package/dist/utils/unicode-sanitizer.d.ts +0 -44
- package/dist/utils/unicode-sanitizer.d.ts.map +0 -1
- package/dist/utils/version-checker.d.ts +0 -14
- package/dist/utils/version-checker.d.ts.map +0 -1
|
@@ -1,20 +1,39 @@
|
|
|
1
|
-
import React, { useState } from
|
|
2
|
-
import { Box, Text } from
|
|
3
|
-
import TextInput from
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
import TextInput from "ink-text-input";
|
|
4
|
+
const PasswordPrompt = ({ message, onSubmit, onCancel }) => {
|
|
5
|
+
const [password, setPassword] = useState("");
|
|
6
|
+
const handleSubmit = () => {
|
|
7
|
+
if (password.trim()) {
|
|
8
|
+
onSubmit(password);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
return /* @__PURE__ */ React.createElement(
|
|
12
|
+
Box,
|
|
13
|
+
{
|
|
14
|
+
flexDirection: "column",
|
|
15
|
+
borderStyle: "round",
|
|
16
|
+
borderColor: "cyan",
|
|
17
|
+
paddingX: 1,
|
|
18
|
+
paddingY: 0,
|
|
19
|
+
marginY: 1
|
|
20
|
+
},
|
|
21
|
+
/* @__PURE__ */ React.createElement(Box, { marginY: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "cyan", bold: true }, message)),
|
|
22
|
+
/* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, "> "), /* @__PURE__ */ React.createElement(
|
|
23
|
+
TextInput,
|
|
24
|
+
{
|
|
25
|
+
value: password,
|
|
26
|
+
onChange: setPassword,
|
|
27
|
+
onSubmit: handleSubmit,
|
|
28
|
+
placeholder: "Enter password...",
|
|
29
|
+
mask: "*",
|
|
30
|
+
showCursor: true
|
|
31
|
+
}
|
|
32
|
+
)),
|
|
33
|
+
/* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "Press Enter to submit \u2022 Ctrl+C to cancel"))
|
|
34
|
+
);
|
|
35
|
+
};
|
|
36
|
+
export {
|
|
37
|
+
PasswordPrompt
|
|
19
38
|
};
|
|
20
39
|
//# sourceMappingURL=PasswordPrompt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/components/PasswordPrompt.tsx"],"sourcesContent":["import React, { useState } from 'react';\r\nimport { Box, Text } from 'ink';\r\nimport TextInput from 'ink-text-input';\r\n\r\ninterface PasswordPromptProps {\r\n message: string;\r\n onSubmit: (password: string) => void;\r\n onCancel: () => void;\r\n}\r\n\r\nexport const PasswordPrompt: React.FC<PasswordPromptProps> = ({ message, onSubmit, onCancel }) => {\r\n const [password, setPassword] = useState('');\r\n\r\n const handleSubmit = () => {\r\n if (password.trim()) {\r\n onSubmit(password);\r\n }\r\n };\r\n\r\n return (\r\n <Box\r\n flexDirection=\"column\"\r\n borderStyle=\"round\"\r\n borderColor=\"cyan\"\r\n paddingX={1}\r\n paddingY={0}\r\n marginY={1}\r\n >\r\n <Box marginY={1}>\r\n <Text color=\"cyan\" bold>{message}</Text>\r\n </Box>\r\n <Box>\r\n <Text color=\"#666666\">> </Text>\r\n <TextInput\r\n value={password}\r\n onChange={setPassword}\r\n onSubmit={handleSubmit}\r\n placeholder=\"Enter password...\"\r\n mask=\"*\"\r\n showCursor={true}\r\n />\r\n </Box>\r\n <Box marginTop={1}>\r\n <Text color=\"#666666\" dimColor>\r\n Press Enter to submit • Ctrl+C to cancel\r\n </Text>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"AAAA,OAAO,SAAS,gBAAgB;AAChC,SAAS,KAAK,YAAY;AAC1B,OAAO,eAAe;AAQf,MAAM,iBAAgD,CAAC,EAAE,SAAS,UAAU,SAAS,MAAM;AAChG,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,EAAE;AAE3C,QAAM,eAAe,MAAM;AACzB,QAAI,SAAS,KAAK,GAAG;AACnB,eAAS,QAAQ;AAAA,IACnB;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAc;AAAA,MACd,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,SAAS;AAAA;AAAA,IAET,oCAAC,OAAI,SAAS,KACZ,oCAAC,QAAK,OAAM,QAAO,MAAI,QAAE,OAAQ,CACnC;AAAA,IACA,oCAAC,WACC,oCAAC,QAAK,OAAM,aAAU,IAAK,GAC3B;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU;AAAA,QACV,UAAU;AAAA,QACV,aAAY;AAAA,QACZ,MAAK;AAAA,QACL,YAAY;AAAA;AAAA,IACd,CACF;AAAA,IACA,oCAAC,OAAI,WAAW,KACd,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAAC,+CAE/B,CACF;AAAA,EACF;AAEJ;","names":[]}
|
|
@@ -1,40 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
subIndex + 1,
|
|
29
|
-
". ",
|
|
30
|
-
subtask.description))))))))),
|
|
31
|
-
React.createElement(Box, { marginTop: 0, marginLeft: 2 },
|
|
32
|
-
React.createElement(Text, { color: "#666666", dimColor: true },
|
|
33
|
-
"Starting execution of ",
|
|
34
|
-
totalTasks || 0,
|
|
35
|
-
" task",
|
|
36
|
-
(totalTasks || 0) > 1 ? 's' : '',
|
|
37
|
-
"..."))));
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
const PlanAcceptedMessage = ({
|
|
4
|
+
planTitle,
|
|
5
|
+
totalTasks,
|
|
6
|
+
tasks
|
|
7
|
+
}) => {
|
|
8
|
+
return /* @__PURE__ */ React.createElement(
|
|
9
|
+
Box,
|
|
10
|
+
{
|
|
11
|
+
flexDirection: "column",
|
|
12
|
+
borderStyle: "round",
|
|
13
|
+
borderColor: "#00cc66",
|
|
14
|
+
paddingX: 1,
|
|
15
|
+
paddingY: 0,
|
|
16
|
+
marginY: 0,
|
|
17
|
+
alignSelf: "flex-start"
|
|
18
|
+
},
|
|
19
|
+
/* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "\u2713 "), /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "Plan Accepted"), planTitle && /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " - ", planTitle)),
|
|
20
|
+
tasks && tasks.length > 0 && /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginTop: 0, marginLeft: 2 }, tasks.map((task, taskIndex) => /* @__PURE__ */ React.createElement(Box, { key: taskIndex, flexDirection: "column" }, /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#00ccff" }, "[ ] "), /* @__PURE__ */ React.createElement(Text, { color: "#cccccc", wrap: "wrap" }, taskIndex + 1, ". ", task.description)), task.subtasks && task.subtasks.map((subtask, subIndex) => /* @__PURE__ */ React.createElement(Box, { key: subIndex, marginLeft: 3 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666" }, "[ ] "), /* @__PURE__ */ React.createElement(Text, { color: "#888888", wrap: "wrap" }, taskIndex + 1, ".", subIndex + 1, ". ", subtask.description)))))),
|
|
21
|
+
/* @__PURE__ */ React.createElement(Box, { marginTop: 0, marginLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "Starting execution of ", totalTasks || 0, " task", (totalTasks || 0) > 1 ? "s" : "", "..."))
|
|
22
|
+
);
|
|
23
|
+
};
|
|
24
|
+
var PlanAcceptedMessage_default = PlanAcceptedMessage;
|
|
25
|
+
export {
|
|
26
|
+
PlanAcceptedMessage,
|
|
27
|
+
PlanAcceptedMessage_default as default
|
|
38
28
|
};
|
|
39
|
-
export default PlanAcceptedMessage;
|
|
40
29
|
//# sourceMappingURL=PlanAcceptedMessage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/components/PlanAcceptedMessage.tsx"],"sourcesContent":["/**\r\n * PlanAcceptedMessage Component\r\n * Displays a message when the plan is accepted and execution begins\r\n * Shows all tasks and subtasks as a static reference\r\n */\r\n\r\nimport React from 'react';\r\nimport { Box, Text } from 'ink';\r\n\r\ninterface TaskItem {\r\n description: string;\r\n subtasks?: Array<{ description: string }>;\r\n}\r\n\r\ninterface PlanAcceptedMessageProps {\r\n planTitle?: string;\r\n totalTasks?: number;\r\n tasks?: TaskItem[];\r\n}\r\n\r\nexport const PlanAcceptedMessage: React.FC<PlanAcceptedMessageProps> = ({\r\n planTitle,\r\n totalTasks,\r\n tasks\r\n}) => {\r\n return (\r\n <Box\r\n flexDirection=\"column\"\r\n borderStyle=\"round\"\r\n borderColor=\"#00cc66\"\r\n paddingX={1}\r\n paddingY={0}\r\n marginY={0}\r\n alignSelf=\"flex-start\"\r\n >\r\n {/* Header */}\r\n <Box>\r\n <Text color=\"#00cc66\" bold>✓ </Text>\r\n <Text color=\"#00cc66\" bold>Plan Accepted</Text>\r\n {planTitle && (\r\n <Text color=\"#888888\"> - {planTitle}</Text>\r\n )}\r\n </Box>\r\n\r\n {/* Task List */}\r\n {tasks && tasks.length > 0 && (\r\n <Box flexDirection=\"column\" marginTop={0} marginLeft={2}>\r\n {tasks.map((task, taskIndex) => (\r\n <Box key={taskIndex} flexDirection=\"column\">\r\n {/* Main task */}\r\n <Box>\r\n <Text color=\"#00ccff\">[ ] </Text>\r\n <Text color=\"#cccccc\" wrap=\"wrap\">\r\n {taskIndex + 1}. {task.description}\r\n </Text>\r\n </Box>\r\n {/* Subtasks */}\r\n {task.subtasks && task.subtasks.map((subtask, subIndex) => (\r\n <Box key={subIndex} marginLeft={3}>\r\n <Text color=\"#666666\">[ ] </Text>\r\n <Text color=\"#888888\" wrap=\"wrap\">\r\n {taskIndex + 1}.{subIndex + 1}. {subtask.description}\r\n </Text>\r\n </Box>\r\n ))}\r\n </Box>\r\n ))}\r\n </Box>\r\n )}\r\n\r\n {/* Starting message */}\r\n <Box marginTop={0} marginLeft={2}>\r\n <Text color=\"#666666\" dimColor>\r\n Starting execution of {totalTasks || 0} task{(totalTasks || 0) > 1 ? 's' : ''}...\r\n </Text>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default PlanAcceptedMessage;\r\n"],"mappings":"AAMA,OAAO,WAAW;AAClB,SAAS,KAAK,YAAY;AAanB,MAAM,sBAA0D,CAAC;AAAA,EACpE;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,SACI;AAAA,IAAC;AAAA;AAAA,MACG,eAAc;AAAA,MACd,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAU;AAAA;AAAA,IAGV,oCAAC,WACG,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,SAAE,GAC7B,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,eAAa,GACvC,aACG,oCAAC,QAAK,OAAM,aAAU,OAAI,SAAU,CAE5C;AAAA,IAGC,SAAS,MAAM,SAAS,KACrB,oCAAC,OAAI,eAAc,UAAS,WAAW,GAAG,YAAY,KACjD,MAAM,IAAI,CAAC,MAAM,cACd,oCAAC,OAAI,KAAK,WAAW,eAAc,YAE/B,oCAAC,WACG,oCAAC,QAAK,OAAM,aAAU,MAAI,GAC1B,oCAAC,QAAK,OAAM,WAAU,MAAK,UACtB,YAAY,GAAE,MAAG,KAAK,WAC3B,CACJ,GAEC,KAAK,YAAY,KAAK,SAAS,IAAI,CAAC,SAAS,aAC1C,oCAAC,OAAI,KAAK,UAAU,YAAY,KAC5B,oCAAC,QAAK,OAAM,aAAU,MAAI,GAC1B,oCAAC,QAAK,OAAM,WAAU,MAAK,UACtB,YAAY,GAAE,KAAE,WAAW,GAAE,MAAG,QAAQ,WAC7C,CACJ,CACH,CACL,CACH,CACL;AAAA,IAIJ,oCAAC,OAAI,WAAW,GAAG,YAAY,KAC3B,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAAC,0BACJ,cAAc,GAAE,UAAO,cAAc,KAAK,IAAI,MAAM,IAAG,KAClF,CACJ;AAAA,EACJ;AAER;AAEA,IAAO,8BAAQ;","names":[]}
|
|
@@ -1,52 +1,48 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
React.createElement(Text, { color: "#888888" }, " or "),
|
|
48
|
-
React.createElement(Text, { color: "#ffaa00", bold: true }, "N"),
|
|
49
|
-
React.createElement(Text, { color: "#888888" }, " to edit plan (provide feedback)")))));
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Box, Text, useInput } from "ink";
|
|
3
|
+
const PlanReviewScreen = ({
|
|
4
|
+
plan,
|
|
5
|
+
onApprove,
|
|
6
|
+
onEdit
|
|
7
|
+
}) => {
|
|
8
|
+
useInput((input, key) => {
|
|
9
|
+
if (key.return || input.toLowerCase() === "y") {
|
|
10
|
+
onApprove();
|
|
11
|
+
} else if (input.toLowerCase() === "e" || input.toLowerCase() === "n") {
|
|
12
|
+
onEdit();
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", paddingX: 2, paddingY: 1 }, /* @__PURE__ */ React.createElement(
|
|
16
|
+
Box,
|
|
17
|
+
{
|
|
18
|
+
borderStyle: "double",
|
|
19
|
+
borderColor: "#ffaa00",
|
|
20
|
+
paddingX: 2,
|
|
21
|
+
paddingY: 1,
|
|
22
|
+
marginBottom: 1
|
|
23
|
+
},
|
|
24
|
+
/* @__PURE__ */ React.createElement(Text, { color: "#ffaa00", bold: true }, "\u{1F4CB} PLAN REVIEW")
|
|
25
|
+
), /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#00ccff", bold: true }, plan.title)), plan.summary && /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, plan.summary)), /* @__PURE__ */ React.createElement(
|
|
26
|
+
Box,
|
|
27
|
+
{
|
|
28
|
+
flexDirection: "column",
|
|
29
|
+
borderStyle: "round",
|
|
30
|
+
borderColor: "#666666",
|
|
31
|
+
paddingX: 1,
|
|
32
|
+
paddingY: 1,
|
|
33
|
+
marginBottom: 1
|
|
34
|
+
},
|
|
35
|
+
/* @__PURE__ */ React.createElement(Text, { color: "#888888", dimColor: true }, "Tasks to execute:"),
|
|
36
|
+
/* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginTop: 1 }, plan.steps.map((step, index) => {
|
|
37
|
+
const complexityColor = step.estimatedComplexity === "high" ? "#ff6666" : step.estimatedComplexity === "medium" ? "#ffaa00" : "#00cc66";
|
|
38
|
+
const complexityLabel = step.estimatedComplexity ? ` [${step.estimatedComplexity}]` : "";
|
|
39
|
+
return /* @__PURE__ */ React.createElement(Box, { key: step.id }, /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, index + 1, ". "), /* @__PURE__ */ React.createElement(Text, null, step.description), step.estimatedComplexity && /* @__PURE__ */ React.createElement(Text, { color: complexityColor }, complexityLabel));
|
|
40
|
+
}))
|
|
41
|
+
), /* @__PURE__ */ React.createElement(Box, { marginTop: 1, flexDirection: "column" }, /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, "Press "), /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "Enter"), /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " or "), /* @__PURE__ */ React.createElement(Text, { color: "#00cc66", bold: true }, "Y"), /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " to proceed with plan")), /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, "Press "), /* @__PURE__ */ React.createElement(Text, { color: "#ffaa00", bold: true }, "E"), /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " or "), /* @__PURE__ */ React.createElement(Text, { color: "#ffaa00", bold: true }, "N"), /* @__PURE__ */ React.createElement(Text, { color: "#888888" }, " to edit plan (provide feedback)"))));
|
|
42
|
+
};
|
|
43
|
+
var PlanReviewScreen_default = PlanReviewScreen;
|
|
44
|
+
export {
|
|
45
|
+
PlanReviewScreen,
|
|
46
|
+
PlanReviewScreen_default as default
|
|
50
47
|
};
|
|
51
|
-
export default PlanReviewScreen;
|
|
52
48
|
//# sourceMappingURL=PlanReviewScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/components/PlanReviewScreen.tsx"],"sourcesContent":["/**\r\n * PlanReviewScreen Component\r\n * Dedicated screen for reviewing and approving/editing a plan\r\n */\r\n\r\nimport React from 'react';\r\nimport { Box, Text, useInput } from 'ink';\r\nimport { Plan } from '../../tools/plan-mode.js';\r\n\r\ninterface PlanReviewScreenProps {\r\n plan: Plan;\r\n onApprove: () => void;\r\n onEdit: () => void;\r\n}\r\n\r\nexport const PlanReviewScreen: React.FC<PlanReviewScreenProps> = ({\r\n plan,\r\n onApprove,\r\n onEdit\r\n}) => {\r\n // Handle keyboard input\r\n useInput((input, key) => {\r\n if (key.return || input.toLowerCase() === 'y') {\r\n onApprove();\r\n } else if (input.toLowerCase() === 'e' || input.toLowerCase() === 'n') {\r\n onEdit();\r\n }\r\n });\r\n\r\n return (\r\n <Box flexDirection=\"column\" paddingX={2} paddingY={1}>\r\n {/* Header */}\r\n <Box\r\n borderStyle=\"double\"\r\n borderColor=\"#ffaa00\"\r\n paddingX={2}\r\n paddingY={1}\r\n marginBottom={1}\r\n >\r\n <Text color=\"#ffaa00\" bold>📋 PLAN REVIEW</Text>\r\n </Box>\r\n\r\n {/* Plan Title */}\r\n <Box marginBottom={1}>\r\n <Text color=\"#00ccff\" bold>{plan.title}</Text>\r\n </Box>\r\n\r\n {/* Plan Summary */}\r\n {plan.summary && (\r\n <Box marginBottom={1}>\r\n <Text color=\"#888888\">{plan.summary}</Text>\r\n </Box>\r\n )}\r\n\r\n {/* Tasks List */}\r\n <Box\r\n flexDirection=\"column\"\r\n borderStyle=\"round\"\r\n borderColor=\"#666666\"\r\n paddingX={1}\r\n paddingY={1}\r\n marginBottom={1}\r\n >\r\n <Text color=\"#888888\" dimColor>Tasks to execute:</Text>\r\n <Box flexDirection=\"column\" marginTop={1}>\r\n {plan.steps.map((step, index) => {\r\n const complexityColor = step.estimatedComplexity === 'high' ? '#ff6666' :\r\n step.estimatedComplexity === 'medium' ? '#ffaa00' : '#00cc66';\r\n const complexityLabel = step.estimatedComplexity ? ` [${step.estimatedComplexity}]` : '';\r\n\r\n return (\r\n <Box key={step.id}>\r\n <Text color=\"#888888\">{index + 1}. </Text>\r\n <Text>{step.description}</Text>\r\n {step.estimatedComplexity && (\r\n <Text color={complexityColor}>{complexityLabel}</Text>\r\n )}\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n </Box>\r\n\r\n {/* Action Buttons */}\r\n <Box marginTop={1} flexDirection=\"column\">\r\n <Box>\r\n <Text color=\"#888888\">Press </Text>\r\n <Text color=\"#00cc66\" bold>Enter</Text>\r\n <Text color=\"#888888\"> or </Text>\r\n <Text color=\"#00cc66\" bold>Y</Text>\r\n <Text color=\"#888888\"> to proceed with plan</Text>\r\n </Box>\r\n <Box>\r\n <Text color=\"#888888\">Press </Text>\r\n <Text color=\"#ffaa00\" bold>E</Text>\r\n <Text color=\"#888888\"> or </Text>\r\n <Text color=\"#ffaa00\" bold>N</Text>\r\n <Text color=\"#888888\"> to edit plan (provide feedback)</Text>\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default PlanReviewScreen;\r\n"],"mappings":"AAKA,OAAO,WAAW;AAClB,SAAS,KAAK,MAAM,gBAAgB;AAS7B,MAAM,mBAAoD,CAAC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AAEF,WAAS,CAAC,OAAO,QAAQ;AACrB,QAAI,IAAI,UAAU,MAAM,YAAY,MAAM,KAAK;AAC3C,gBAAU;AAAA,IACd,WAAW,MAAM,YAAY,MAAM,OAAO,MAAM,YAAY,MAAM,KAAK;AACnE,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AAED,SACI,oCAAC,OAAI,eAAc,UAAS,UAAU,GAAG,UAAU,KAE/C;AAAA,IAAC;AAAA;AAAA,MACG,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,cAAc;AAAA;AAAA,IAEd,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,uBAAc;AAAA,EAC7C,GAGA,oCAAC,OAAI,cAAc,KACf,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAE,KAAK,KAAM,CAC3C,GAGC,KAAK,WACF,oCAAC,OAAI,cAAc,KACf,oCAAC,QAAK,OAAM,aAAW,KAAK,OAAQ,CACxC,GAIJ;AAAA,IAAC;AAAA;AAAA,MACG,eAAc;AAAA,MACd,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,cAAc;AAAA;AAAA,IAEd,oCAAC,QAAK,OAAM,WAAU,UAAQ,QAAC,mBAAiB;AAAA,IAChD,oCAAC,OAAI,eAAc,UAAS,WAAW,KAClC,KAAK,MAAM,IAAI,CAAC,MAAM,UAAU;AAC7B,YAAM,kBAAkB,KAAK,wBAAwB,SAAS,YAC1D,KAAK,wBAAwB,WAAW,YAAY;AACxD,YAAM,kBAAkB,KAAK,sBAAsB,KAAK,KAAK,mBAAmB,MAAM;AAEtF,aACI,oCAAC,OAAI,KAAK,KAAK,MACX,oCAAC,QAAK,OAAM,aAAW,QAAQ,GAAE,IAAE,GACnC,oCAAC,YAAM,KAAK,WAAY,GACvB,KAAK,uBACF,oCAAC,QAAK,OAAO,mBAAkB,eAAgB,CAEvD;AAAA,IAER,CAAC,CACL;AAAA,EACJ,GAGA,oCAAC,OAAI,WAAW,GAAG,eAAc,YAC7B,oCAAC,WACG,oCAAC,QAAK,OAAM,aAAU,QAAM,GAC5B,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,OAAK,GAChC,oCAAC,QAAK,OAAM,aAAU,MAAI,GAC1B,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,GAAC,GAC5B,oCAAC,QAAK,OAAM,aAAU,uBAAqB,CAC/C,GACA,oCAAC,WACG,oCAAC,QAAK,OAAM,aAAU,QAAM,GAC5B,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,GAAC,GAC5B,oCAAC,QAAK,OAAM,aAAU,MAAI,GAC1B,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAC,GAAC,GAC5B,oCAAC,QAAK,OAAM,aAAU,kCAAgC,CAC1D,CACJ,CACJ;AAER;AAEA,IAAO,2BAAQ;","names":[]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import React, { useCallback, useState } from "react";
|
|
2
|
+
import { Box, Text, useInput } from "ink";
|
|
3
|
+
import TextInput from "ink-text-input";
|
|
4
|
+
import { MultiLineInput } from "./MultiLineInput.js";
|
|
5
|
+
const RulesEditorScreen = ({
|
|
6
|
+
mode,
|
|
7
|
+
initialName,
|
|
8
|
+
initialContent,
|
|
9
|
+
onSave,
|
|
10
|
+
onCancel
|
|
11
|
+
}) => {
|
|
12
|
+
const [editorState, setEditorState] = useState("editing");
|
|
13
|
+
const [content, setContent] = useState(initialContent || "");
|
|
14
|
+
const [ruleName, setRuleName] = useState(initialName || "");
|
|
15
|
+
const [error, setError] = useState(null);
|
|
16
|
+
const screenTitle = mode === "edit" ? "Edit Rule" : "Create Rule";
|
|
17
|
+
const editorViewportHeight = 12;
|
|
18
|
+
const showTransientError = useCallback((message) => {
|
|
19
|
+
setError(message);
|
|
20
|
+
setTimeout(() => setError(null), 3e3);
|
|
21
|
+
}, []);
|
|
22
|
+
useInput((input, key) => {
|
|
23
|
+
if (key.escape) {
|
|
24
|
+
onCancel();
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (editorState === "editing" && key.ctrl && input.toLowerCase() === "s") {
|
|
28
|
+
if (!content.trim()) {
|
|
29
|
+
showTransientError("Rule content cannot be empty.");
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
setEditorState("naming");
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
const handleNameSubmit = useCallback((name) => {
|
|
36
|
+
if (!name.trim()) {
|
|
37
|
+
showTransientError("Rule name is required.");
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const result = onSave(name.trim(), content, initialName);
|
|
41
|
+
if (!result.success) {
|
|
42
|
+
showTransientError(result.error || "Failed to save rule.");
|
|
43
|
+
}
|
|
44
|
+
}, [content, initialName, onSave, showTransientError]);
|
|
45
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", paddingX: 1 }, /* @__PURE__ */ React.createElement(Box, { borderStyle: "round", borderColor: "#00ccff", paddingX: 2, paddingY: 1, marginBottom: 1 }, /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, { color: "#00ccff", bold: true }, screenTitle), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Write reusable instructions here. Save them, then reference them inside prompts with", /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, " @rules:<name>"), ".")), /* @__PURE__ */ React.createElement(Box, { marginTop: 1, flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "Enter"), " New line"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "Ctrl+S"), " Save and name this rule"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "Ctrl/Cmd+Arrow"), " Move by word"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "Home / End"), " Jump within the current line"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "ESC"), " Cancel")))), error && /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "red" }, "\u26A0\uFE0F ", error)), editorState === "editing" && /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, initialName && /* @__PURE__ */ React.createElement(Box, { marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Editing rule: ", /* @__PURE__ */ React.createElement(Text, { color: "#00ccff", bold: true }, initialName))), /* @__PURE__ */ React.createElement(
|
|
46
|
+
Box,
|
|
47
|
+
{
|
|
48
|
+
borderStyle: "round",
|
|
49
|
+
borderColor: "#257aa5ff",
|
|
50
|
+
paddingX: 1,
|
|
51
|
+
paddingY: 0,
|
|
52
|
+
width: "100%",
|
|
53
|
+
minHeight: editorViewportHeight + 2
|
|
54
|
+
},
|
|
55
|
+
/* @__PURE__ */ React.createElement(
|
|
56
|
+
MultiLineInput,
|
|
57
|
+
{
|
|
58
|
+
value: content,
|
|
59
|
+
onChange: setContent,
|
|
60
|
+
onSubmit: () => {
|
|
61
|
+
},
|
|
62
|
+
submitOnEnter: false,
|
|
63
|
+
minHeight: editorViewportHeight,
|
|
64
|
+
maxHeight: editorViewportHeight,
|
|
65
|
+
placeholder: "Type reusable instructions here..."
|
|
66
|
+
}
|
|
67
|
+
)
|
|
68
|
+
)), editorState === "naming" && /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, { bold: true, color: "#00ccff" }, "Save Rule"), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, null, "Rule name: "), /* @__PURE__ */ React.createElement(
|
|
69
|
+
TextInput,
|
|
70
|
+
{
|
|
71
|
+
value: ruleName,
|
|
72
|
+
onChange: setRuleName,
|
|
73
|
+
onSubmit: handleNameSubmit,
|
|
74
|
+
placeholder: "frontend-review"
|
|
75
|
+
}
|
|
76
|
+
)), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Names are normalized for mentions, for example ", /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "frontend review"), "becomes ", /* @__PURE__ */ React.createElement(Text, { color: "#ffd700" }, "frontend-review"), "."))));
|
|
77
|
+
};
|
|
78
|
+
export {
|
|
79
|
+
RulesEditorScreen
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=RulesEditorScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/components/RulesEditorScreen.tsx"],"sourcesContent":["/**\r\n * Rules Editor Screen\r\n *\r\n * A multiline editor for reusable prompt rules referenced via @rules:<name>.\r\n */\r\n\r\nimport React, { useCallback, useState } from 'react';\r\nimport { Box, Text, useInput } from 'ink';\r\nimport TextInput from 'ink-text-input';\r\nimport { MultiLineInput } from './MultiLineInput.js';\r\nimport { SaveRuleResult } from '../../types/rule.js';\r\n\r\ninterface RulesEditorScreenProps {\r\n mode: 'add' | 'edit';\r\n initialName?: string;\r\n initialContent?: string;\r\n onSave: (name: string, content: string, previousName?: string) => SaveRuleResult;\r\n onCancel: () => void;\r\n}\r\n\r\ntype EditorState = 'editing' | 'naming';\r\n\r\nexport const RulesEditorScreen: React.FC<RulesEditorScreenProps> = ({\r\n mode,\r\n initialName,\r\n initialContent,\r\n onSave,\r\n onCancel\r\n}) => {\r\n const [editorState, setEditorState] = useState<EditorState>('editing');\r\n const [content, setContent] = useState(initialContent || '');\r\n const [ruleName, setRuleName] = useState(initialName || '');\r\n const [error, setError] = useState<string | null>(null);\r\n\r\n const screenTitle = mode === 'edit' ? 'Edit Rule' : 'Create Rule';\r\n const editorViewportHeight = 12;\r\n\r\n const showTransientError = useCallback((message: string) => {\r\n setError(message);\r\n setTimeout(() => setError(null), 3000);\r\n }, []);\r\n\r\n useInput((input, key) => {\r\n if (key.escape) {\r\n onCancel();\r\n return;\r\n }\r\n\r\n if (editorState === 'editing' && key.ctrl && input.toLowerCase() === 's') {\r\n if (!content.trim()) {\r\n showTransientError('Rule content cannot be empty.');\r\n return;\r\n }\r\n\r\n setEditorState('naming');\r\n }\r\n });\r\n\r\n const handleNameSubmit = useCallback((name: string) => {\r\n if (!name.trim()) {\r\n showTransientError('Rule name is required.');\r\n return;\r\n }\r\n\r\n const result = onSave(name.trim(), content, initialName);\r\n if (!result.success) {\r\n showTransientError(result.error || 'Failed to save rule.');\r\n }\r\n }, [content, initialName, onSave, showTransientError]);\r\n\r\n return (\r\n <Box flexDirection=\"column\" paddingX={1}>\r\n <Box borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={2} paddingY={1} marginBottom={1}>\r\n <Box flexDirection=\"column\">\r\n <Text color=\"#00ccff\" bold>{screenTitle}</Text>\r\n <Box marginTop={1}>\r\n <Text dimColor>\r\n Write reusable instructions here. Save them, then reference them inside prompts with\r\n <Text color=\"#ffd700\"> @rules:<name></Text>.\r\n </Text>\r\n </Box>\r\n <Box marginTop={1} flexDirection=\"column\">\r\n <Text dimColor>\r\n <Text color=\"#ffd700\">Enter</Text> New line\r\n </Text>\r\n <Text dimColor>\r\n <Text color=\"#ffd700\">Ctrl+S</Text> Save and name this rule\r\n </Text>\r\n <Text dimColor>\r\n <Text color=\"#ffd700\">Ctrl/Cmd+Arrow</Text> Move by word\r\n </Text>\r\n <Text dimColor>\r\n <Text color=\"#ffd700\">Home / End</Text> Jump within the current line\r\n </Text>\r\n <Text dimColor>\r\n <Text color=\"#ffd700\">ESC</Text> Cancel\r\n </Text>\r\n </Box>\r\n </Box>\r\n </Box>\r\n\r\n {error && (\r\n <Box marginBottom={1}>\r\n <Text color=\"red\">⚠️ {error}</Text>\r\n </Box>\r\n )}\r\n\r\n {editorState === 'editing' && (\r\n <Box flexDirection=\"column\">\r\n {initialName && (\r\n <Box marginBottom={1}>\r\n <Text dimColor>\r\n Editing rule: <Text color=\"#00ccff\" bold>{initialName}</Text>\r\n </Text>\r\n </Box>\r\n )}\r\n <Box\r\n borderStyle=\"round\"\r\n borderColor=\"#257aa5ff\"\r\n paddingX={1}\r\n paddingY={0}\r\n width=\"100%\"\r\n minHeight={editorViewportHeight + 2}\r\n >\r\n <MultiLineInput\r\n value={content}\r\n onChange={setContent}\r\n onSubmit={() => {\r\n // The rules editor saves via Ctrl+S so Enter always inserts a newline.\r\n }}\r\n submitOnEnter={false}\r\n minHeight={editorViewportHeight}\r\n maxHeight={editorViewportHeight}\r\n placeholder=\"Type reusable instructions here...\"\r\n />\r\n </Box>\r\n </Box>\r\n )}\r\n\r\n {editorState === 'naming' && (\r\n <Box flexDirection=\"column\">\r\n <Text bold color=\"#00ccff\">Save Rule</Text>\r\n <Box marginTop={1}>\r\n <Text>Rule name: </Text>\r\n <TextInput\r\n value={ruleName}\r\n onChange={setRuleName}\r\n onSubmit={handleNameSubmit}\r\n placeholder=\"frontend-review\"\r\n />\r\n </Box>\r\n <Box marginTop={1}>\r\n <Text dimColor>\r\n Names are normalized for mentions, for example <Text color=\"#ffd700\">frontend review</Text>\r\n becomes <Text color=\"#ffd700\">frontend-review</Text>.\r\n </Text>\r\n </Box>\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"AAMA,OAAO,SAAS,aAAa,gBAAgB;AAC7C,SAAS,KAAK,MAAM,gBAAgB;AACpC,OAAO,eAAe;AACtB,SAAS,sBAAsB;AAaxB,MAAM,oBAAsD,CAAC;AAAA,EAChE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAAM;AACF,QAAM,CAAC,aAAa,cAAc,IAAI,SAAsB,SAAS;AACrE,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,kBAAkB,EAAE;AAC3D,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,eAAe,EAAE;AAC1D,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AAEtD,QAAM,cAAc,SAAS,SAAS,cAAc;AACpD,QAAM,uBAAuB;AAE7B,QAAM,qBAAqB,YAAY,CAAC,YAAoB;AACxD,aAAS,OAAO;AAChB,eAAW,MAAM,SAAS,IAAI,GAAG,GAAI;AAAA,EACzC,GAAG,CAAC,CAAC;AAEL,WAAS,CAAC,OAAO,QAAQ;AACrB,QAAI,IAAI,QAAQ;AACZ,eAAS;AACT;AAAA,IACJ;AAEA,QAAI,gBAAgB,aAAa,IAAI,QAAQ,MAAM,YAAY,MAAM,KAAK;AACtE,UAAI,CAAC,QAAQ,KAAK,GAAG;AACjB,2BAAmB,+BAA+B;AAClD;AAAA,MACJ;AAEA,qBAAe,QAAQ;AAAA,IAC3B;AAAA,EACJ,CAAC;AAED,QAAM,mBAAmB,YAAY,CAAC,SAAiB;AACnD,QAAI,CAAC,KAAK,KAAK,GAAG;AACd,yBAAmB,wBAAwB;AAC3C;AAAA,IACJ;AAEA,UAAM,SAAS,OAAO,KAAK,KAAK,GAAG,SAAS,WAAW;AACvD,QAAI,CAAC,OAAO,SAAS;AACjB,yBAAmB,OAAO,SAAS,sBAAsB;AAAA,IAC7D;AAAA,EACJ,GAAG,CAAC,SAAS,aAAa,QAAQ,kBAAkB,CAAC;AAErD,SACI,oCAAC,OAAI,eAAc,UAAS,UAAU,KAClC,oCAAC,OAAI,aAAY,SAAQ,aAAY,WAAU,UAAU,GAAG,UAAU,GAAG,cAAc,KACnF,oCAAC,OAAI,eAAc,YACf,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAE,WAAY,GACxC,oCAAC,OAAI,WAAW,KACZ,oCAAC,QAAK,UAAQ,QAAC,wFAEX,oCAAC,QAAK,OAAM,aAAU,gBAAoB,GAAO,GACrD,CACJ,GACA,oCAAC,OAAI,WAAW,GAAG,eAAc,YAC7B,oCAAC,QAAK,UAAQ,QACV,oCAAC,QAAK,OAAM,aAAU,OAAK,GAAO,WACtC,GACA,oCAAC,QAAK,UAAQ,QACV,oCAAC,QAAK,OAAM,aAAU,QAAM,GAAO,0BACvC,GACA,oCAAC,QAAK,UAAQ,QACV,oCAAC,QAAK,OAAM,aAAU,gBAAc,GAAO,eAC/C,GACA,oCAAC,QAAK,UAAQ,QACV,oCAAC,QAAK,OAAM,aAAU,YAAU,GAAO,+BAC3C,GACA,oCAAC,QAAK,UAAQ,QACV,oCAAC,QAAK,OAAM,aAAU,KAAG,GAAO,SACpC,CACJ,CACJ,CACJ,GAEC,SACG,oCAAC,OAAI,cAAc,KACf,oCAAC,QAAK,OAAM,SAAM,iBAAI,KAAM,CAChC,GAGH,gBAAgB,aACb,oCAAC,OAAI,eAAc,YACd,eACG,oCAAC,OAAI,cAAc,KACf,oCAAC,QAAK,UAAQ,QAAC,kBACG,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAE,WAAY,CAC1D,CACJ,GAEJ;AAAA,IAAC;AAAA;AAAA,MACG,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,UAAU;AAAA,MACV,UAAU;AAAA,MACV,OAAM;AAAA,MACN,WAAW,uBAAuB;AAAA;AAAA,IAElC;AAAA,MAAC;AAAA;AAAA,QACG,OAAO;AAAA,QACP,UAAU;AAAA,QACV,UAAU,MAAM;AAAA,QAEhB;AAAA,QACA,eAAe;AAAA,QACf,WAAW;AAAA,QACX,WAAW;AAAA,QACX,aAAY;AAAA;AAAA,IAChB;AAAA,EACJ,CACJ,GAGH,gBAAgB,YACb,oCAAC,OAAI,eAAc,YACf,oCAAC,QAAK,MAAI,MAAC,OAAM,aAAU,WAAS,GACpC,oCAAC,OAAI,WAAW,KACZ,oCAAC,YAAK,aAAW,GACjB;AAAA,IAAC;AAAA;AAAA,MACG,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAU;AAAA,MACV,aAAY;AAAA;AAAA,EAChB,CACJ,GACA,oCAAC,OAAI,WAAW,KACZ,oCAAC,QAAK,UAAQ,QAAC,mDACoC,oCAAC,QAAK,OAAM,aAAU,iBAAe,GAAO,YACnF,oCAAC,QAAK,OAAM,aAAU,iBAAe,GAAO,GACxD,CACJ,CACJ,CAER;AAER;","names":[]}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import { Box, Text } from
|
|
3
|
-
import SelectInput from
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
import SelectInput from "ink-select-input";
|
|
4
|
+
const SelectPrompt = ({
|
|
5
|
+
message,
|
|
6
|
+
choices,
|
|
7
|
+
onSelect,
|
|
8
|
+
width
|
|
9
|
+
}) => {
|
|
10
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#00ccff", paddingX: 1, width }, /* @__PURE__ */ React.createElement(Text, { color: "#00ccff", bold: true }, message), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(
|
|
11
|
+
SelectInput,
|
|
12
|
+
{
|
|
13
|
+
items: choices,
|
|
14
|
+
onSelect: (item) => onSelect(item.value)
|
|
15
|
+
}
|
|
16
|
+
)));
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
SelectPrompt
|
|
9
20
|
};
|
|
10
21
|
//# sourceMappingURL=SelectPrompt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/components/SelectPrompt.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, Text } from 'ink';\r\nimport SelectInput from 'ink-select-input';\r\n\r\ninterface SelectPromptProps {\r\n message: string;\r\n choices: Array<{ label: string; value: string }>;\r\n onSelect: (value: string) => void;\r\n width?: number;\r\n}\r\n\r\nexport const SelectPrompt: React.FC<SelectPromptProps> = ({\r\n message,\r\n choices,\r\n onSelect,\r\n width\r\n}) => {\r\n return (\r\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"#00ccff\" paddingX={1} width={width}>\r\n <Text color=\"#00ccff\" bold>{message}</Text>\r\n <Box marginTop={1}>\r\n <SelectInput\r\n items={choices}\r\n onSelect={(item) => onSelect(item.value)}\r\n />\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n"],"mappings":"AAAA,OAAO,WAAW;AAClB,SAAS,KAAK,YAAY;AAC1B,OAAO,iBAAiB;AASjB,MAAM,eAA4C,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SACE,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAY,WAAU,UAAU,GAAG,SACjF,oCAAC,QAAK,OAAM,WAAU,MAAI,QAAE,OAAQ,GACpC,oCAAC,OAAI,WAAW,KACd;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,UAAU,CAAC,SAAS,SAAS,KAAK,KAAK;AAAA;AAAA,EACzC,CACF,CACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React, { useState, useEffect } from "react";
|
|
2
|
+
import { Text } from "ink";
|
|
3
|
+
const SHIMMER_HALF_WIDTH = 6;
|
|
4
|
+
const SHIMMER_SPEED_MS = 65;
|
|
5
|
+
const SHIMMER_GRADIENT = ["#ffffff", "#cccccc", "#888888"];
|
|
6
|
+
const SHIMMER_GRADIENT_DIM = ["#999999", "#6a6a6a", "#4a4a4a"];
|
|
7
|
+
function getShimmerColor(dist, baseColor, dim) {
|
|
8
|
+
if (dist >= SHIMMER_HALF_WIDTH) return baseColor;
|
|
9
|
+
const gradient = dim ? SHIMMER_GRADIENT_DIM : SHIMMER_GRADIENT;
|
|
10
|
+
const idx = Math.min(
|
|
11
|
+
gradient.length - 1,
|
|
12
|
+
Math.floor(dist / SHIMMER_HALF_WIDTH * gradient.length)
|
|
13
|
+
);
|
|
14
|
+
return gradient[idx] ?? baseColor;
|
|
15
|
+
}
|
|
16
|
+
const ShimmerText = ({
|
|
17
|
+
text,
|
|
18
|
+
baseColor = "#555555",
|
|
19
|
+
bold = false,
|
|
20
|
+
dimShimmer = false
|
|
21
|
+
}) => {
|
|
22
|
+
const [shimmerPos, setShimmerPos] = useState(-SHIMMER_HALF_WIDTH);
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
const interval = setInterval(() => {
|
|
25
|
+
setShimmerPos((pos) => {
|
|
26
|
+
const next = pos + 1;
|
|
27
|
+
return next > text.length + SHIMMER_HALF_WIDTH ? -SHIMMER_HALF_WIDTH : next;
|
|
28
|
+
});
|
|
29
|
+
}, SHIMMER_SPEED_MS);
|
|
30
|
+
return () => clearInterval(interval);
|
|
31
|
+
}, [text.length]);
|
|
32
|
+
if (!text) return null;
|
|
33
|
+
const len = text.length;
|
|
34
|
+
const shimStart = Math.max(0, shimmerPos - SHIMMER_HALF_WIDTH);
|
|
35
|
+
const shimEnd = Math.min(len, shimmerPos + SHIMMER_HALF_WIDTH);
|
|
36
|
+
const preText = shimStart > 0 ? text.slice(0, shimStart) : "";
|
|
37
|
+
const shimChars = Array.from(text.slice(shimStart, shimEnd));
|
|
38
|
+
const postText = shimEnd < len ? text.slice(shimEnd) : "";
|
|
39
|
+
return /* @__PURE__ */ React.createElement(Text, { bold }, preText ? /* @__PURE__ */ React.createElement(Text, { color: baseColor }, preText) : null, shimChars.map((char, i) => /* @__PURE__ */ React.createElement(Text, { key: shimStart + i, color: getShimmerColor(Math.abs(shimStart + i - shimmerPos), baseColor, dimShimmer) }, char)), postText ? /* @__PURE__ */ React.createElement(Text, { color: baseColor }, postText) : null);
|
|
40
|
+
};
|
|
41
|
+
export {
|
|
42
|
+
ShimmerText
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=ShimmerText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/components/ShimmerText.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\r\nimport { Text } from 'ink';\r\n\r\nconst SHIMMER_HALF_WIDTH = 6; // chars each side of the peak that receive highlight\r\nconst SHIMMER_SPEED_MS = 65; // ms per step — lower = faster sweep\r\nconst SHIMMER_GRADIENT = ['#ffffff', '#cccccc', '#888888'] as const;\r\nconst SHIMMER_GRADIENT_DIM = ['#999999', '#6a6a6a', '#4a4a4a'] as const;\r\n\r\nfunction getShimmerColor(dist: number, baseColor: string, dim: boolean): string {\r\n if (dist >= SHIMMER_HALF_WIDTH) return baseColor;\r\n const gradient = dim ? SHIMMER_GRADIENT_DIM : SHIMMER_GRADIENT;\r\n const idx = Math.min(\r\n gradient.length - 1,\r\n Math.floor((dist / SHIMMER_HALF_WIDTH) * gradient.length)\r\n );\r\n return gradient[idx] ?? baseColor;\r\n}\r\n\r\ninterface ShimmerTextProps {\r\n text: string;\r\n /** Color of the text outside the shimmer window */\r\n baseColor?: string;\r\n bold?: boolean;\r\n /** Use a subtler, dimmer shimmer gradient instead of the full white peak */\r\n dimShimmer?: boolean;\r\n}\r\n\r\n/**\r\n * Renders text with a white shimmer that sweeps left-to-right continuously.\r\n * Peaks at white (or light grey if dimShimmer=true), fades back to `baseColor`.\r\n */\r\nexport const ShimmerText: React.FC<ShimmerTextProps> = ({\r\n text,\r\n baseColor = '#555555',\r\n bold = false,\r\n dimShimmer = false,\r\n}) => {\r\n const [shimmerPos, setShimmerPos] = useState(-SHIMMER_HALF_WIDTH);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setShimmerPos(pos => {\r\n const next = pos + 1;\r\n // Once the shimmer has fully exited the right side, restart from the left\r\n return next > text.length + SHIMMER_HALF_WIDTH ? -SHIMMER_HALF_WIDTH : next;\r\n });\r\n }, SHIMMER_SPEED_MS);\r\n return () => clearInterval(interval);\r\n }, [text.length]);\r\n\r\n if (!text) return null;\r\n\r\n const len = text.length;\r\n const shimStart = Math.max(0, shimmerPos - SHIMMER_HALF_WIDTH);\r\n const shimEnd = Math.min(len, shimmerPos + SHIMMER_HALF_WIDTH);\r\n\r\n const preText = shimStart > 0 ? text.slice(0, shimStart) : '';\r\n const shimChars = Array.from(text.slice(shimStart, shimEnd));\r\n const postText = shimEnd < len ? text.slice(shimEnd) : '';\r\n\r\n return (\r\n <Text bold={bold}>\r\n {preText ? <Text color={baseColor}>{preText}</Text> : null}\r\n {shimChars.map((char, i) => (\r\n <Text key={shimStart + i} color={getShimmerColor(Math.abs(shimStart + i - shimmerPos), baseColor, dimShimmer)}>\r\n {char}\r\n </Text>\r\n ))}\r\n {postText ? <Text color={baseColor}>{postText}</Text> : null}\r\n </Text>\r\n );\r\n};\r\n"],"mappings":"AAAA,OAAO,SAAS,UAAU,iBAAiB;AAC3C,SAAS,YAAY;AAErB,MAAM,qBAAqB;AAC3B,MAAM,mBAAmB;AACzB,MAAM,mBAAyB,CAAC,WAAW,WAAW,SAAS;AAC/D,MAAM,uBAAyB,CAAC,WAAW,WAAW,SAAS;AAE/D,SAAS,gBAAgB,MAAc,WAAmB,KAAsB;AAC9E,MAAI,QAAQ,mBAAoB,QAAO;AACvC,QAAM,WAAW,MAAM,uBAAuB;AAC9C,QAAM,MAAM,KAAK;AAAA,IACf,SAAS,SAAS;AAAA,IAClB,KAAK,MAAO,OAAO,qBAAsB,SAAS,MAAM;AAAA,EAC1D;AACA,SAAO,SAAS,GAAG,KAAK;AAC1B;AAeO,MAAM,cAA0C,CAAC;AAAA,EACtD;AAAA,EACA,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,aAAa;AACf,MAAM;AACJ,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,CAAC,kBAAkB;AAEhE,YAAU,MAAM;AACd,UAAM,WAAW,YAAY,MAAM;AACjC,oBAAc,SAAO;AACnB,cAAM,OAAO,MAAM;AAEnB,eAAO,OAAO,KAAK,SAAS,qBAAqB,CAAC,qBAAqB;AAAA,MACzE,CAAC;AAAA,IACH,GAAG,gBAAgB;AACnB,WAAO,MAAM,cAAc,QAAQ;AAAA,EACrC,GAAG,CAAC,KAAK,MAAM,CAAC;AAEhB,MAAI,CAAC,KAAM,QAAO;AAElB,QAAM,MAAM,KAAK;AACjB,QAAM,YAAY,KAAK,IAAI,GAAG,aAAa,kBAAkB;AAC7D,QAAM,UAAU,KAAK,IAAI,KAAK,aAAa,kBAAkB;AAE7D,QAAM,UAAU,YAAY,IAAI,KAAK,MAAM,GAAG,SAAS,IAAI;AAC3D,QAAM,YAAY,MAAM,KAAK,KAAK,MAAM,WAAW,OAAO,CAAC;AAC3D,QAAM,WAAW,UAAU,MAAM,KAAK,MAAM,OAAO,IAAI;AAEvD,SACE,oCAAC,QAAK,QACH,UAAU,oCAAC,QAAK,OAAO,aAAY,OAAQ,IAAU,MACrD,UAAU,IAAI,CAAC,MAAM,MACpB,oCAAC,QAAK,KAAK,YAAY,GAAG,OAAO,gBAAgB,KAAK,IAAI,YAAY,IAAI,UAAU,GAAG,WAAW,UAAU,KACzG,IACH,CACD,GACA,WAAW,oCAAC,QAAK,OAAO,aAAY,QAAS,IAAU,IAC1D;AAEJ;","names":[]}
|
|
@@ -1,24 +1,51 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import { Box, Text } from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
const SlashCommandAutocomplete = ({
|
|
4
|
+
commands,
|
|
5
|
+
selectedIndex,
|
|
6
|
+
maxVisibleItems,
|
|
7
|
+
scrollOffset
|
|
8
|
+
}) => {
|
|
9
|
+
if (commands.length === 0 || maxVisibleItems === 0) return null;
|
|
10
|
+
const visibleCommands = commands.slice(scrollOffset, scrollOffset + maxVisibleItems);
|
|
11
|
+
const hasMoreAbove = scrollOffset > 0;
|
|
12
|
+
const hasMoreBelow = scrollOffset + maxVisibleItems < commands.length;
|
|
13
|
+
return /* @__PURE__ */ React.createElement(
|
|
14
|
+
Box,
|
|
15
|
+
{
|
|
16
|
+
flexDirection: "column",
|
|
17
|
+
borderStyle: "round",
|
|
18
|
+
borderColor: "white",
|
|
19
|
+
paddingX: 1,
|
|
20
|
+
marginLeft: 1,
|
|
21
|
+
marginTop: 0
|
|
22
|
+
},
|
|
23
|
+
hasMoreAbove && /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "\u2191 more"),
|
|
24
|
+
visibleCommands.map((cmd, index) => {
|
|
25
|
+
const actualIndex = scrollOffset + index;
|
|
26
|
+
const isSelected = actualIndex === selectedIndex;
|
|
27
|
+
return /* @__PURE__ */ React.createElement(
|
|
28
|
+
Box,
|
|
29
|
+
{
|
|
30
|
+
key: cmd.name,
|
|
31
|
+
paddingX: 1
|
|
32
|
+
},
|
|
33
|
+
/* @__PURE__ */ React.createElement(
|
|
34
|
+
Text,
|
|
35
|
+
{
|
|
36
|
+
color: isSelected ? "#00ccff" : "#666666",
|
|
37
|
+
bold: isSelected,
|
|
38
|
+
inverse: isSelected
|
|
39
|
+
},
|
|
40
|
+
cmd.name
|
|
41
|
+
),
|
|
42
|
+
/* @__PURE__ */ React.createElement(Text, { color: "#666666" }, " ", cmd.description)
|
|
43
|
+
);
|
|
44
|
+
}),
|
|
45
|
+
hasMoreBelow && /* @__PURE__ */ React.createElement(Text, { color: "#666666", dimColor: true }, "\u2193 more")
|
|
46
|
+
);
|
|
47
|
+
};
|
|
48
|
+
export {
|
|
49
|
+
SlashCommandAutocomplete
|
|
23
50
|
};
|
|
24
51
|
//# sourceMappingURL=SlashCommandAutocomplete.js.map
|