@within-7/minto 0.0.5-dev.1
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 +201 -0
- package/README.md +1097 -0
- package/README.zh-CN.md +1097 -0
- package/cli.js +59 -0
- package/dist/Tool.js +1 -0
- package/dist/Tool.js.map +7 -0
- package/dist/commands/agents.js +2086 -0
- package/dist/commands/agents.js.map +7 -0
- package/dist/commands/approvedTools.js +36 -0
- package/dist/commands/approvedTools.js.map +7 -0
- package/dist/commands/bug.js +21 -0
- package/dist/commands/bug.js.map +7 -0
- package/dist/commands/build.js +74 -0
- package/dist/commands/build.js.map +7 -0
- package/dist/commands/clear.js +37 -0
- package/dist/commands/clear.js.map +7 -0
- package/dist/commands/compact.js +82 -0
- package/dist/commands/compact.js.map +7 -0
- package/dist/commands/compression.js +57 -0
- package/dist/commands/compression.js.map +7 -0
- package/dist/commands/config.js +20 -0
- package/dist/commands/config.js.map +7 -0
- package/dist/commands/cost.js +19 -0
- package/dist/commands/cost.js.map +7 -0
- package/dist/commands/ctx_viz.js +152 -0
- package/dist/commands/ctx_viz.js.map +7 -0
- package/dist/commands/doctor.js +25 -0
- package/dist/commands/doctor.js.map +7 -0
- package/dist/commands/help.js +20 -0
- package/dist/commands/help.js.map +7 -0
- package/dist/commands/init.js +38 -0
- package/dist/commands/init.js.map +7 -0
- package/dist/commands/listen.js +37 -0
- package/dist/commands/listen.js.map +7 -0
- package/dist/commands/login.js +37 -0
- package/dist/commands/login.js.map +7 -0
- package/dist/commands/logout.js +33 -0
- package/dist/commands/logout.js.map +7 -0
- package/dist/commands/mcp-interactive.js +267 -0
- package/dist/commands/mcp-interactive.js.map +7 -0
- package/dist/commands/mcp.js +40 -0
- package/dist/commands/mcp.js.map +7 -0
- package/dist/commands/mcp_refresh.js +40 -0
- package/dist/commands/mcp_refresh.js.map +7 -0
- package/dist/commands/model.js +41 -0
- package/dist/commands/model.js.map +7 -0
- package/dist/commands/modelstatus.js +21 -0
- package/dist/commands/modelstatus.js.map +7 -0
- package/dist/commands/onboarding.js +36 -0
- package/dist/commands/onboarding.js.map +7 -0
- package/dist/commands/plugin/AddMarketplaceForm.js +62 -0
- package/dist/commands/plugin/AddMarketplaceForm.js.map +7 -0
- package/dist/commands/plugin/ConfirmDialog.js +71 -0
- package/dist/commands/plugin/ConfirmDialog.js.map +7 -0
- package/dist/commands/plugin/ErrorView.js +33 -0
- package/dist/commands/plugin/ErrorView.js.map +7 -0
- package/dist/commands/plugin/InstalledPluginsByMarketplace.js +135 -0
- package/dist/commands/plugin/InstalledPluginsByMarketplace.js.map +7 -0
- package/dist/commands/plugin/InstalledPluginsManager.js +99 -0
- package/dist/commands/plugin/InstalledPluginsManager.js.map +7 -0
- package/dist/commands/plugin/LoadingView.js +14 -0
- package/dist/commands/plugin/LoadingView.js.map +7 -0
- package/dist/commands/plugin/MainMenu.js +57 -0
- package/dist/commands/plugin/MainMenu.js.map +7 -0
- package/dist/commands/plugin/MarketplaceManager.js +155 -0
- package/dist/commands/plugin/MarketplaceManager.js.map +7 -0
- package/dist/commands/plugin/MarketplaceSelector.js +119 -0
- package/dist/commands/plugin/MarketplaceSelector.js.map +7 -0
- package/dist/commands/plugin/PlaceholderScreen.js +16 -0
- package/dist/commands/plugin/PlaceholderScreen.js.map +7 -0
- package/dist/commands/plugin/PluginBrowser.js +180 -0
- package/dist/commands/plugin/PluginBrowser.js.map +7 -0
- package/dist/commands/plugin/PluginDetailsInstall.js +152 -0
- package/dist/commands/plugin/PluginDetailsInstall.js.map +7 -0
- package/dist/commands/plugin/PluginDetailsManage.js +200 -0
- package/dist/commands/plugin/PluginDetailsManage.js.map +7 -0
- package/dist/commands/plugin/components.js +16 -0
- package/dist/commands/plugin/components.js.map +7 -0
- package/dist/commands/plugin/example-usage.js +63 -0
- package/dist/commands/plugin/example-usage.js.map +7 -0
- package/dist/commands/plugin/types.js +1 -0
- package/dist/commands/plugin/types.js.map +7 -0
- package/dist/commands/plugin/utils.js +77 -0
- package/dist/commands/plugin/utils.js.map +7 -0
- package/dist/commands/plugin-interactive.js +446 -0
- package/dist/commands/plugin-interactive.js.map +7 -0
- package/dist/commands/plugin.js +523 -0
- package/dist/commands/plugin.js.map +7 -0
- package/dist/commands/pr_comments.js +61 -0
- package/dist/commands/pr_comments.js.map +7 -0
- package/dist/commands/quit.js +16 -0
- package/dist/commands/quit.js.map +7 -0
- package/dist/commands/refreshCommands.js +43 -0
- package/dist/commands/refreshCommands.js.map +7 -0
- package/dist/commands/release-notes.js +30 -0
- package/dist/commands/release-notes.js.map +7 -0
- package/dist/commands/resume.js +35 -0
- package/dist/commands/resume.js.map +7 -0
- package/dist/commands/review.js +51 -0
- package/dist/commands/review.js.map +7 -0
- package/dist/commands/terminalSetup.js +164 -0
- package/dist/commands/terminalSetup.js.map +7 -0
- package/dist/commands.js +104 -0
- package/dist/commands.js.map +7 -0
- package/dist/components/AgentResponseBlock.js +41 -0
- package/dist/components/AgentResponseBlock.js.map +7 -0
- package/dist/components/AgentThinkingBlock.js +40 -0
- package/dist/components/AgentThinkingBlock.js.map +7 -0
- package/dist/components/AsciiLogo.js +19 -0
- package/dist/components/AsciiLogo.js.map +7 -0
- package/dist/components/BackgroundTasksPanel.js +124 -0
- package/dist/components/BackgroundTasksPanel.js.map +7 -0
- package/dist/components/Bug.js +147 -0
- package/dist/components/Bug.js.map +7 -0
- package/dist/components/Config.js +166 -0
- package/dist/components/Config.js.map +7 -0
- package/dist/components/ConsoleOAuthFlow.js +178 -0
- package/dist/components/ConsoleOAuthFlow.js.map +7 -0
- package/dist/components/Cost.js +13 -0
- package/dist/components/Cost.js.map +7 -0
- package/dist/components/CostThresholdDialog.js +38 -0
- package/dist/components/CostThresholdDialog.js.map +7 -0
- package/dist/components/CustomSelect/option-map.js +32 -0
- package/dist/components/CustomSelect/option-map.js.map +7 -0
- package/dist/components/CustomSelect/select-option.js +34 -0
- package/dist/components/CustomSelect/select-option.js.map +7 -0
- package/dist/components/CustomSelect/select.js +64 -0
- package/dist/components/CustomSelect/select.js.map +7 -0
- package/dist/components/CustomSelect/theme.js +1 -0
- package/dist/components/CustomSelect/theme.js.map +7 -0
- package/dist/components/CustomSelect/use-select-state.js +220 -0
- package/dist/components/CustomSelect/use-select-state.js.map +7 -0
- package/dist/components/CustomSelect/use-select.js +21 -0
- package/dist/components/CustomSelect/use-select.js.map +7 -0
- package/dist/components/FallbackToolUseRejectedMessage.js +11 -0
- package/dist/components/FallbackToolUseRejectedMessage.js.map +7 -0
- package/dist/components/FileEditToolUpdatedMessage.js +32 -0
- package/dist/components/FileEditToolUpdatedMessage.js.map +7 -0
- package/dist/components/HeaderBar.js +57 -0
- package/dist/components/HeaderBar.js.map +7 -0
- package/dist/components/Help.js +46 -0
- package/dist/components/Help.js.map +7 -0
- package/dist/components/HighlightedCode.js +30 -0
- package/dist/components/HighlightedCode.js.map +7 -0
- package/dist/components/HistorySearchOverlay.js +48 -0
- package/dist/components/HistorySearchOverlay.js.map +7 -0
- package/dist/components/InteractionRoundBlock.js +56 -0
- package/dist/components/InteractionRoundBlock.js.map +7 -0
- package/dist/components/InvalidConfigDialog.js +83 -0
- package/dist/components/InvalidConfigDialog.js.map +7 -0
- package/dist/components/Link.js +18 -0
- package/dist/components/Link.js.map +7 -0
- package/dist/components/LogSelector.js +50 -0
- package/dist/components/LogSelector.js.map +7 -0
- package/dist/components/Logo.js +96 -0
- package/dist/components/Logo.js.map +7 -0
- package/dist/components/MCPServerApprovalDialog.js +79 -0
- package/dist/components/MCPServerApprovalDialog.js.map +7 -0
- package/dist/components/MCPServerDialogCopy.js +11 -0
- package/dist/components/MCPServerDialogCopy.js.map +7 -0
- package/dist/components/MCPServerMultiselectDialog.js +80 -0
- package/dist/components/MCPServerMultiselectDialog.js.map +7 -0
- package/dist/components/Message.js +146 -0
- package/dist/components/Message.js.map +7 -0
- package/dist/components/MessageResponse.js +9 -0
- package/dist/components/MessageResponse.js.map +7 -0
- package/dist/components/MessageSelector.js +125 -0
- package/dist/components/MessageSelector.js.map +7 -0
- package/dist/components/ModeIndicator.js +38 -0
- package/dist/components/ModeIndicator.js.map +7 -0
- package/dist/components/ModelConfig.js +208 -0
- package/dist/components/ModelConfig.js.map +7 -0
- package/dist/components/ModelListManager.js +140 -0
- package/dist/components/ModelListManager.js.map +7 -0
- package/dist/components/ModelSelector.js +2062 -0
- package/dist/components/ModelSelector.js.map +7 -0
- package/dist/components/ModelStatusDisplay.js +87 -0
- package/dist/components/ModelStatusDisplay.js.map +7 -0
- package/dist/components/Onboarding.js +153 -0
- package/dist/components/Onboarding.js.map +7 -0
- package/dist/components/PressEnterToContinue.js +10 -0
- package/dist/components/PressEnterToContinue.js.map +7 -0
- package/dist/components/ProjectOnboarding.js +99 -0
- package/dist/components/ProjectOnboarding.js.map +7 -0
- package/dist/components/PromptInput.js +755 -0
- package/dist/components/PromptInput.js.map +7 -0
- package/dist/components/QuitSummary.js +81 -0
- package/dist/components/QuitSummary.js.map +7 -0
- package/dist/components/SentryErrorBoundary.js +27 -0
- package/dist/components/SentryErrorBoundary.js.map +7 -0
- package/dist/components/Spinner.js +101 -0
- package/dist/components/Spinner.js.map +7 -0
- package/dist/components/SpinnerSymbol.js +78 -0
- package/dist/components/SpinnerSymbol.js.map +7 -0
- package/dist/components/StreamingBashOutput.js +70 -0
- package/dist/components/StreamingBashOutput.js.map +7 -0
- package/dist/components/StructuredDiff.js +148 -0
- package/dist/components/StructuredDiff.js.map +7 -0
- package/dist/components/SubagentBlock.js +157 -0
- package/dist/components/SubagentBlock.js.map +7 -0
- package/dist/components/SubagentManager.js +65 -0
- package/dist/components/SubagentManager.js.map +7 -0
- package/dist/components/SubagentProgress.js +109 -0
- package/dist/components/SubagentProgress.js.map +7 -0
- package/dist/components/SubagentStatusMarker.js +37 -0
- package/dist/components/SubagentStatusMarker.js.map +7 -0
- package/dist/components/TaskCard.js +170 -0
- package/dist/components/TaskCard.js.map +7 -0
- package/dist/components/TextInput.js +100 -0
- package/dist/components/TextInput.js.map +7 -0
- package/dist/components/TimelineRenderer.js +31 -0
- package/dist/components/TimelineRenderer.js.map +7 -0
- package/dist/components/TodoChangeBlock.js +29 -0
- package/dist/components/TodoChangeBlock.js.map +7 -0
- package/dist/components/TodoChangeLine.js +22 -0
- package/dist/components/TodoChangeLine.js.map +7 -0
- package/dist/components/TodoItem.js +35 -0
- package/dist/components/TodoItem.js.map +7 -0
- package/dist/components/TodoPanel.js +55 -0
- package/dist/components/TodoPanel.js.map +7 -0
- package/dist/components/TokenWarning.js +19 -0
- package/dist/components/TokenWarning.js.map +7 -0
- package/dist/components/ToolExecutionBlock.js +18 -0
- package/dist/components/ToolExecutionBlock.js.map +7 -0
- package/dist/components/ToolUseLoader.js +24 -0
- package/dist/components/ToolUseLoader.js.map +7 -0
- package/dist/components/TrustDialog.js +71 -0
- package/dist/components/TrustDialog.js.map +7 -0
- package/dist/components/UserQueryBlock.js +12 -0
- package/dist/components/UserQueryBlock.js.map +7 -0
- package/dist/components/binary-feedback/BinaryFeedback.js +50 -0
- package/dist/components/binary-feedback/BinaryFeedback.js.map +7 -0
- package/dist/components/binary-feedback/BinaryFeedbackOption.js +94 -0
- package/dist/components/binary-feedback/BinaryFeedbackOption.js.map +7 -0
- package/dist/components/binary-feedback/BinaryFeedbackView.js +139 -0
- package/dist/components/binary-feedback/BinaryFeedbackView.js.map +7 -0
- package/dist/components/binary-feedback/utils.js +108 -0
- package/dist/components/binary-feedback/utils.js.map +7 -0
- package/dist/components/messages/AssistantBashOutputMessage.js +23 -0
- package/dist/components/messages/AssistantBashOutputMessage.js.map +7 -0
- package/dist/components/messages/AssistantLocalCommandOutputMessage.js +36 -0
- package/dist/components/messages/AssistantLocalCommandOutputMessage.js.map +7 -0
- package/dist/components/messages/AssistantRedactedThinkingMessage.js +12 -0
- package/dist/components/messages/AssistantRedactedThinkingMessage.js.map +7 -0
- package/dist/components/messages/AssistantTextMessage.js +78 -0
- package/dist/components/messages/AssistantTextMessage.js.map +7 -0
- package/dist/components/messages/AssistantThinkingMessage.js +27 -0
- package/dist/components/messages/AssistantThinkingMessage.js.map +7 -0
- package/dist/components/messages/AssistantToolUseMessage.js +91 -0
- package/dist/components/messages/AssistantToolUseMessage.js.map +7 -0
- package/dist/components/messages/TaskProgressMessage.js +11 -0
- package/dist/components/messages/TaskProgressMessage.js.map +7 -0
- package/dist/components/messages/TaskToolMessage.js +39 -0
- package/dist/components/messages/TaskToolMessage.js.map +7 -0
- package/dist/components/messages/UserBashInputMessage.js +18 -0
- package/dist/components/messages/UserBashInputMessage.js.map +7 -0
- package/dist/components/messages/UserCommandMessage.js +20 -0
- package/dist/components/messages/UserCommandMessage.js.map +7 -0
- package/dist/components/messages/UserKodingInputMessage.js +18 -0
- package/dist/components/messages/UserKodingInputMessage.js.map +7 -0
- package/dist/components/messages/UserPromptMessage.js +20 -0
- package/dist/components/messages/UserPromptMessage.js.map +7 -0
- package/dist/components/messages/UserTextMessage.js +25 -0
- package/dist/components/messages/UserTextMessage.js.map +7 -0
- package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +10 -0
- package/dist/components/messages/UserToolResultMessage/UserToolCanceledMessage.js.map +7 -0
- package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js +15 -0
- package/dist/components/messages/UserToolResultMessage/UserToolErrorMessage.js.map +7 -0
- package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js +25 -0
- package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js.map +7 -0
- package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js +47 -0
- package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js.map +7 -0
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +23 -0
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +7 -0
- package/dist/components/messages/UserToolResultMessage/utils.js +50 -0
- package/dist/components/messages/UserToolResultMessage/utils.js.map +7 -0
- package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js +112 -0
- package/dist/components/permissions/BashPermissionRequest/BashPermissionRequest.js.map +7 -0
- package/dist/components/permissions/FallbackPermissionRequest.js +131 -0
- package/dist/components/permissions/FallbackPermissionRequest.js.map +7 -0
- package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +159 -0
- package/dist/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js.map +7 -0
- package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js +58 -0
- package/dist/components/permissions/FileEditPermissionRequest/FileEditToolDiff.js.map +7 -0
- package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +153 -0
- package/dist/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js.map +7 -0
- package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +70 -0
- package/dist/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js.map +7 -0
- package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +212 -0
- package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js.map +7 -0
- package/dist/components/permissions/PermissionRequest.js +70 -0
- package/dist/components/permissions/PermissionRequest.js.map +7 -0
- package/dist/components/permissions/PermissionRequestTitle.js +52 -0
- package/dist/components/permissions/PermissionRequestTitle.js.map +7 -0
- package/dist/components/permissions/hooks.js +23 -0
- package/dist/components/permissions/hooks.js.map +7 -0
- package/dist/components/permissions/toolUseOptions.js +46 -0
- package/dist/components/permissions/toolUseOptions.js.map +7 -0
- package/dist/components/permissions/utils.js +21 -0
- package/dist/components/permissions/utils.js.map +7 -0
- package/dist/constants/claude-asterisk-ascii-art.js +242 -0
- package/dist/constants/claude-asterisk-ascii-art.js.map +7 -0
- package/dist/constants/colors.js +126 -0
- package/dist/constants/colors.js.map +7 -0
- package/dist/constants/compressionPrompts.js +73 -0
- package/dist/constants/compressionPrompts.js.map +7 -0
- package/dist/constants/figures.js +6 -0
- package/dist/constants/figures.js.map +7 -0
- package/dist/constants/macros.js +11 -0
- package/dist/constants/macros.js.map +7 -0
- package/dist/constants/modelCapabilities.js +154 -0
- package/dist/constants/modelCapabilities.js.map +7 -0
- package/dist/constants/models.js +1034 -0
- package/dist/constants/models.js.map +7 -0
- package/dist/constants/oauth.js +18 -0
- package/dist/constants/oauth.js.map +7 -0
- package/dist/constants/product.js +26 -0
- package/dist/constants/product.js.map +7 -0
- package/dist/constants/prompts.js +168 -0
- package/dist/constants/prompts.js.map +7 -0
- package/dist/constants/releaseNotes.js +9 -0
- package/dist/constants/releaseNotes.js.map +7 -0
- package/dist/constants/symbols.js +50 -0
- package/dist/constants/symbols.js.map +7 -0
- package/dist/context/PermissionContext.js +111 -0
- package/dist/context/PermissionContext.js.map +7 -0
- package/dist/context.js +278 -0
- package/dist/context.js.map +7 -0
- package/dist/cost-tracker.js +76 -0
- package/dist/cost-tracker.js.map +7 -0
- package/dist/entrypoints/cli-wrapper.js +61 -0
- package/dist/entrypoints/cli-wrapper.js.map +7 -0
- package/dist/entrypoints/cli.js +1115 -0
- package/dist/entrypoints/cli.js.map +7 -0
- package/dist/entrypoints/mcp.js +150 -0
- package/dist/entrypoints/mcp.js.map +7 -0
- package/dist/history.js +25 -0
- package/dist/history.js.map +7 -0
- package/dist/hooks/useApiKeyVerification.js +12 -0
- package/dist/hooks/useApiKeyVerification.js.map +7 -0
- package/dist/hooks/useArrowKeyHistory.js +50 -0
- package/dist/hooks/useArrowKeyHistory.js.map +7 -0
- package/dist/hooks/useCanUseTool.js +87 -0
- package/dist/hooks/useCanUseTool.js.map +7 -0
- package/dist/hooks/useCancelRequest.js +28 -0
- package/dist/hooks/useCancelRequest.js.map +7 -0
- package/dist/hooks/useDoublePress.js +31 -0
- package/dist/hooks/useDoublePress.js.map +7 -0
- package/dist/hooks/useExitOnCtrlCD.js +26 -0
- package/dist/hooks/useExitOnCtrlCD.js.map +7 -0
- package/dist/hooks/useHistorySearch.js +62 -0
- package/dist/hooks/useHistorySearch.js.map +7 -0
- package/dist/hooks/useInterval.js +18 -0
- package/dist/hooks/useInterval.js.map +7 -0
- package/dist/hooks/useLogMessages.js +14 -0
- package/dist/hooks/useLogMessages.js.map +7 -0
- package/dist/hooks/useLogStartupTime.js +10 -0
- package/dist/hooks/useLogStartupTime.js.map +7 -0
- package/dist/hooks/useNotifyAfterTimeout.js +42 -0
- package/dist/hooks/useNotifyAfterTimeout.js.map +7 -0
- package/dist/hooks/usePermissionRequestLogging.js +23 -0
- package/dist/hooks/usePermissionRequestLogging.js.map +7 -0
- package/dist/hooks/useTerminalSize.js +38 -0
- package/dist/hooks/useTerminalSize.js.map +7 -0
- package/dist/hooks/useTextInput.js +252 -0
- package/dist/hooks/useTextInput.js.map +7 -0
- package/dist/hooks/useUnifiedCompletion.js +929 -0
- package/dist/hooks/useUnifiedCompletion.js.map +7 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +7 -0
- package/dist/messages.js +33 -0
- package/dist/messages.js.map +7 -0
- package/dist/package.json +4 -0
- package/dist/permissions.js +194 -0
- package/dist/permissions.js.map +7 -0
- package/dist/query.js +499 -0
- package/dist/query.js.map +7 -0
- package/dist/screens/Doctor.js +22 -0
- package/dist/screens/Doctor.js.map +7 -0
- package/dist/screens/LogList.js +55 -0
- package/dist/screens/LogList.js.map +7 -0
- package/dist/screens/REPL.js +671 -0
- package/dist/screens/REPL.js.map +7 -0
- package/dist/screens/ResumeConversation.js +56 -0
- package/dist/screens/ResumeConversation.js.map +7 -0
- package/dist/services/adapters/base.js +29 -0
- package/dist/services/adapters/base.js.map +7 -0
- package/dist/services/adapters/chatCompletions.js +69 -0
- package/dist/services/adapters/chatCompletions.js.map +7 -0
- package/dist/services/adapters/responsesAPI.js +126 -0
- package/dist/services/adapters/responsesAPI.js.map +7 -0
- package/dist/services/claude.js +1573 -0
- package/dist/services/claude.js.map +7 -0
- package/dist/services/compressionService.js +210 -0
- package/dist/services/compressionService.js.map +7 -0
- package/dist/services/customCommands.js +437 -0
- package/dist/services/customCommands.js.map +7 -0
- package/dist/services/fileFreshness.js +275 -0
- package/dist/services/fileFreshness.js.map +7 -0
- package/dist/services/gpt5ConnectionTest.js +248 -0
- package/dist/services/gpt5ConnectionTest.js.map +7 -0
- package/dist/services/hookExecutor.js +276 -0
- package/dist/services/hookExecutor.js.map +7 -0
- package/dist/services/mainAgentCompressor.js +84 -0
- package/dist/services/mainAgentCompressor.js.map +7 -0
- package/dist/services/mcpClient.js +449 -0
- package/dist/services/mcpClient.js.map +7 -0
- package/dist/services/mcpServerApproval.js +55 -0
- package/dist/services/mcpServerApproval.js.map +7 -0
- package/dist/services/mentionProcessor.js +201 -0
- package/dist/services/mentionProcessor.js.map +7 -0
- package/dist/services/modelAdapterFactory.js +47 -0
- package/dist/services/modelAdapterFactory.js.map +7 -0
- package/dist/services/notifier.js +35 -0
- package/dist/services/notifier.js.map +7 -0
- package/dist/services/oauth.js +247 -0
- package/dist/services/oauth.js.map +7 -0
- package/dist/services/openai.js +995 -0
- package/dist/services/openai.js.map +7 -0
- package/dist/services/responseStateManager.js +68 -0
- package/dist/services/responseStateManager.js.map +7 -0
- package/dist/services/sentry.js +9 -0
- package/dist/services/sentry.js.map +7 -0
- package/dist/services/subagentAbortManager.js +95 -0
- package/dist/services/subagentAbortManager.js.map +7 -0
- package/dist/services/subagentCompressor.js +146 -0
- package/dist/services/subagentCompressor.js.map +7 -0
- package/dist/services/systemReminder.js +335 -0
- package/dist/services/systemReminder.js.map +7 -0
- package/dist/services/vcr.js +133 -0
- package/dist/services/vcr.js.map +7 -0
- package/dist/tools/ArchitectTool/ArchitectTool.js +119 -0
- package/dist/tools/ArchitectTool/ArchitectTool.js.map +7 -0
- package/dist/tools/ArchitectTool/prompt.js +18 -0
- package/dist/tools/ArchitectTool/prompt.js.map +7 -0
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +423 -0
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +7 -0
- package/dist/tools/BashOutputTool/BashOutputTool.js +120 -0
- package/dist/tools/BashOutputTool/BashOutputTool.js.map +7 -0
- package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js +11 -0
- package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js.map +7 -0
- package/dist/tools/BashOutputTool/prompt.js +13 -0
- package/dist/tools/BashOutputTool/prompt.js.map +7 -0
- package/dist/tools/BashTool/BashTool.js +209 -0
- package/dist/tools/BashTool/BashTool.js.map +7 -0
- package/dist/tools/BashTool/BashToolResultMessage.js +21 -0
- package/dist/tools/BashTool/BashToolResultMessage.js.map +7 -0
- package/dist/tools/BashTool/OutputLine.js +30 -0
- package/dist/tools/BashTool/OutputLine.js.map +7 -0
- package/dist/tools/BashTool/prompt.js +180 -0
- package/dist/tools/BashTool/prompt.js.map +7 -0
- package/dist/tools/BashTool/utils.js +51 -0
- package/dist/tools/BashTool/utils.js.map +7 -0
- package/dist/tools/FileEditTool/FileEditTool.js +226 -0
- package/dist/tools/FileEditTool/FileEditTool.js.map +7 -0
- package/dist/tools/FileEditTool/prompt.js +54 -0
- package/dist/tools/FileEditTool/prompt.js.map +7 -0
- package/dist/tools/FileEditTool/utils.js +42 -0
- package/dist/tools/FileEditTool/utils.js.map +7 -0
- package/dist/tools/FileReadTool/FileReadTool.js +272 -0
- package/dist/tools/FileReadTool/FileReadTool.js.map +7 -0
- package/dist/tools/FileReadTool/prompt.js +10 -0
- package/dist/tools/FileReadTool/prompt.js.map +7 -0
- package/dist/tools/FileWriteTool/FileWriteTool.js +202 -0
- package/dist/tools/FileWriteTool/FileWriteTool.js.map +7 -0
- package/dist/tools/FileWriteTool/prompt.js +14 -0
- package/dist/tools/FileWriteTool/prompt.js.map +7 -0
- package/dist/tools/GlobTool/GlobTool.js +88 -0
- package/dist/tools/GlobTool/GlobTool.js.map +7 -0
- package/dist/tools/GlobTool/prompt.js +12 -0
- package/dist/tools/GlobTool/prompt.js.map +7 -0
- package/dist/tools/GrepTool/GrepTool.js +107 -0
- package/dist/tools/GrepTool/GrepTool.js.map +7 -0
- package/dist/tools/GrepTool/prompt.js +15 -0
- package/dist/tools/GrepTool/prompt.js.map +7 -0
- package/dist/tools/KillShellTool/KillShellTool.js +92 -0
- package/dist/tools/KillShellTool/KillShellTool.js.map +7 -0
- package/dist/tools/KillShellTool/KillShellToolResultMessage.js +11 -0
- package/dist/tools/KillShellTool/KillShellToolResultMessage.js.map +7 -0
- package/dist/tools/KillShellTool/prompt.js +12 -0
- package/dist/tools/KillShellTool/prompt.js.map +7 -0
- package/dist/tools/MCPTool/MCPTool.js +90 -0
- package/dist/tools/MCPTool/MCPTool.js.map +7 -0
- package/dist/tools/MCPTool/prompt.js +7 -0
- package/dist/tools/MCPTool/prompt.js.map +7 -0
- package/dist/tools/MemoryReadTool/MemoryReadTool.js +103 -0
- package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +7 -0
- package/dist/tools/MemoryReadTool/prompt.js +7 -0
- package/dist/tools/MemoryReadTool/prompt.js.map +7 -0
- package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +77 -0
- package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +7 -0
- package/dist/tools/MemoryWriteTool/prompt.js +7 -0
- package/dist/tools/MemoryWriteTool/prompt.js.map +7 -0
- package/dist/tools/MultiEditTool/MultiEditTool.js +301 -0
- package/dist/tools/MultiEditTool/MultiEditTool.js.map +7 -0
- package/dist/tools/MultiEditTool/prompt.js +48 -0
- package/dist/tools/MultiEditTool/prompt.js.map +7 -0
- package/dist/tools/NotebookEditTool/NotebookEditTool.js +238 -0
- package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +7 -0
- package/dist/tools/NotebookEditTool/prompt.js +7 -0
- package/dist/tools/NotebookEditTool/prompt.js.map +7 -0
- package/dist/tools/NotebookReadTool/NotebookReadTool.js +212 -0
- package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +7 -0
- package/dist/tools/NotebookReadTool/prompt.js +7 -0
- package/dist/tools/NotebookReadTool/prompt.js.map +7 -0
- package/dist/tools/SkillTool/SkillTool.js +209 -0
- package/dist/tools/SkillTool/SkillTool.js.map +7 -0
- package/dist/tools/SkillTool/prompt.js +81 -0
- package/dist/tools/SkillTool/prompt.js.map +7 -0
- package/dist/tools/TaskTool/TaskTool.js +381 -0
- package/dist/tools/TaskTool/TaskTool.js.map +7 -0
- package/dist/tools/TaskTool/constants.js +5 -0
- package/dist/tools/TaskTool/constants.js.map +7 -0
- package/dist/tools/TaskTool/prompt.js +111 -0
- package/dist/tools/TaskTool/prompt.js.map +7 -0
- package/dist/tools/ThinkTool/ThinkTool.js +40 -0
- package/dist/tools/ThinkTool/ThinkTool.js.map +7 -0
- package/dist/tools/ThinkTool/prompt.js +16 -0
- package/dist/tools/ThinkTool/prompt.js.map +7 -0
- package/dist/tools/TodoWriteTool/TodoWriteTool.js +243 -0
- package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +7 -0
- package/dist/tools/TodoWriteTool/prompt.js +66 -0
- package/dist/tools/TodoWriteTool/prompt.js.map +7 -0
- package/dist/tools/URLFetcherTool/URLFetcherTool.js +137 -0
- package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +7 -0
- package/dist/tools/URLFetcherTool/cache.js +45 -0
- package/dist/tools/URLFetcherTool/cache.js.map +7 -0
- package/dist/tools/URLFetcherTool/htmlToMarkdown.js +42 -0
- package/dist/tools/URLFetcherTool/htmlToMarkdown.js.map +7 -0
- package/dist/tools/URLFetcherTool/prompt.js +22 -0
- package/dist/tools/URLFetcherTool/prompt.js.map +7 -0
- package/dist/tools/WebSearchTool/WebSearchTool.js +86 -0
- package/dist/tools/WebSearchTool/WebSearchTool.js.map +7 -0
- package/dist/tools/WebSearchTool/prompt.js +17 -0
- package/dist/tools/WebSearchTool/prompt.js.map +7 -0
- package/dist/tools/WebSearchTool/searchProviders.js +48 -0
- package/dist/tools/WebSearchTool/searchProviders.js.map +7 -0
- package/dist/tools/lsTool/lsTool.js +201 -0
- package/dist/tools/lsTool/lsTool.js.map +7 -0
- package/dist/tools/lsTool/prompt.js +5 -0
- package/dist/tools/lsTool/prompt.js.map +7 -0
- package/dist/tools.js +70 -0
- package/dist/tools.js.map +7 -0
- package/dist/types/PermissionMode.js +82 -0
- package/dist/types/PermissionMode.js.map +7 -0
- package/dist/types/RequestContext.js +47 -0
- package/dist/types/RequestContext.js.map +7 -0
- package/dist/types/common.d.js +1 -0
- package/dist/types/common.d.js.map +7 -0
- package/dist/types/conversation.js +1 -0
- package/dist/types/conversation.js.map +7 -0
- package/dist/types/hooks.js +38 -0
- package/dist/types/hooks.js.map +7 -0
- package/dist/types/interactionRound.js +1 -0
- package/dist/types/interactionRound.js.map +7 -0
- package/dist/types/logs.js +1 -0
- package/dist/types/logs.js.map +7 -0
- package/dist/types/marketplace.js +101 -0
- package/dist/types/marketplace.js.map +7 -0
- package/dist/types/modelCapabilities.js +1 -0
- package/dist/types/modelCapabilities.js.map +7 -0
- package/dist/types/notebook.js +1 -0
- package/dist/types/notebook.js.map +7 -0
- package/dist/types/plugin.js +83 -0
- package/dist/types/plugin.js.map +7 -0
- package/dist/types/subagent.js +1 -0
- package/dist/types/subagent.js.map +7 -0
- package/dist/utils/BackgroundShellManager.js +215 -0
- package/dist/utils/BackgroundShellManager.js.map +7 -0
- package/dist/utils/Cursor.js +315 -0
- package/dist/utils/Cursor.js.map +7 -0
- package/dist/utils/PersistentShell.js +371 -0
- package/dist/utils/PersistentShell.js.map +7 -0
- package/dist/utils/advancedFuzzyMatcher.js +206 -0
- package/dist/utils/advancedFuzzyMatcher.js.map +7 -0
- package/dist/utils/agentLoader.js +244 -0
- package/dist/utils/agentLoader.js.map +7 -0
- package/dist/utils/agentStorage.js +59 -0
- package/dist/utils/agentStorage.js.map +7 -0
- package/dist/utils/array.js +7 -0
- package/dist/utils/array.js.map +7 -0
- package/dist/utils/ask.js +77 -0
- package/dist/utils/ask.js.map +7 -0
- package/dist/utils/auth.js +11 -0
- package/dist/utils/auth.js.map +7 -0
- package/dist/utils/autoCompactCore.js +126 -0
- package/dist/utils/autoCompactCore.js.map +7 -0
- package/dist/utils/autoUpdater.js +107 -0
- package/dist/utils/autoUpdater.js.map +7 -0
- package/dist/utils/browser.js +15 -0
- package/dist/utils/browser.js.map +7 -0
- package/dist/utils/cleanup.js +54 -0
- package/dist/utils/cleanup.js.map +7 -0
- package/dist/utils/commands.js +207 -0
- package/dist/utils/commands.js.map +7 -0
- package/dist/utils/commonUnixCommands.js +687 -0
- package/dist/utils/commonUnixCommands.js.map +7 -0
- package/dist/utils/compressionMode.js +47 -0
- package/dist/utils/compressionMode.js.map +7 -0
- package/dist/utils/config.js +651 -0
- package/dist/utils/config.js.map +7 -0
- package/dist/utils/conversationRecovery.js +35 -0
- package/dist/utils/conversationRecovery.js.map +7 -0
- package/dist/utils/debugLogger.js +889 -0
- package/dist/utils/debugLogger.js.map +7 -0
- package/dist/utils/diff.js +32 -0
- package/dist/utils/diff.js.map +7 -0
- package/dist/utils/env.js +44 -0
- package/dist/utils/env.js.map +7 -0
- package/dist/utils/errors.js +23 -0
- package/dist/utils/errors.js.map +7 -0
- package/dist/utils/execFileNoThrow.js +44 -0
- package/dist/utils/execFileNoThrow.js.map +7 -0
- package/dist/utils/expertChatStorage.js +78 -0
- package/dist/utils/expertChatStorage.js.map +7 -0
- package/dist/utils/file.js +282 -0
- package/dist/utils/file.js.map +7 -0
- package/dist/utils/fileRecoveryCore.js +41 -0
- package/dist/utils/fileRecoveryCore.js.map +7 -0
- package/dist/utils/format.js +41 -0
- package/dist/utils/format.js.map +7 -0
- package/dist/utils/fuzzyMatcher.js +252 -0
- package/dist/utils/fuzzyMatcher.js.map +7 -0
- package/dist/utils/generators.js +46 -0
- package/dist/utils/generators.js.map +7 -0
- package/dist/utils/git.js +83 -0
- package/dist/utils/git.js.map +7 -0
- package/dist/utils/hookManager.js +238 -0
- package/dist/utils/hookManager.js.map +7 -0
- package/dist/utils/http.js +7 -0
- package/dist/utils/http.js.map +7 -0
- package/dist/utils/imagePaste.js +29 -0
- package/dist/utils/imagePaste.js.map +7 -0
- package/dist/utils/json.js +16 -0
- package/dist/utils/json.js.map +7 -0
- package/dist/utils/log.js +329 -0
- package/dist/utils/log.js.map +7 -0
- package/dist/utils/markdown.js +187 -0
- package/dist/utils/markdown.js.map +7 -0
- package/dist/utils/marketplaceManager.js +474 -0
- package/dist/utils/marketplaceManager.js.map +7 -0
- package/dist/utils/messageContextManager.js +195 -0
- package/dist/utils/messageContextManager.js.map +7 -0
- package/dist/utils/messages.js +650 -0
- package/dist/utils/messages.js.map +7 -0
- package/dist/utils/model.js +677 -0
- package/dist/utils/model.js.map +7 -0
- package/dist/utils/permissions/filesystem.js +80 -0
- package/dist/utils/permissions/filesystem.js.map +7 -0
- package/dist/utils/pluginInstaller.js +491 -0
- package/dist/utils/pluginInstaller.js.map +7 -0
- package/dist/utils/pluginLoader.js +582 -0
- package/dist/utils/pluginLoader.js.map +7 -0
- package/dist/utils/pluginRegistry.js +111 -0
- package/dist/utils/pluginRegistry.js.map +7 -0
- package/dist/utils/pluginValidator.js +774 -0
- package/dist/utils/pluginValidator.js.map +7 -0
- package/dist/utils/ptyCompat.js +125 -0
- package/dist/utils/ptyCompat.js.map +7 -0
- package/dist/utils/replStateMachine.js +145 -0
- package/dist/utils/replStateMachine.js.map +7 -0
- package/dist/utils/ripgrep.js +131 -0
- package/dist/utils/ripgrep.js.map +7 -0
- package/dist/utils/roundConverter.js +262 -0
- package/dist/utils/roundConverter.js.map +7 -0
- package/dist/utils/secureFile.js +483 -0
- package/dist/utils/secureFile.js.map +7 -0
- package/dist/utils/sessionState.js +22 -0
- package/dist/utils/sessionState.js.map +7 -0
- package/dist/utils/skillLoader.js +79 -0
- package/dist/utils/skillLoader.js.map +7 -0
- package/dist/utils/state.js +24 -0
- package/dist/utils/state.js.map +7 -0
- package/dist/utils/style.js +31 -0
- package/dist/utils/style.js.map +7 -0
- package/dist/utils/terminal.js +47 -0
- package/dist/utils/terminal.js.map +7 -0
- package/dist/utils/theme.js +102 -0
- package/dist/utils/theme.js.map +7 -0
- package/dist/utils/thinking.js +59 -0
- package/dist/utils/thinking.js.map +7 -0
- package/dist/utils/todoChangeCalculator.js +64 -0
- package/dist/utils/todoChangeCalculator.js.map +7 -0
- package/dist/utils/todoStorage.js +291 -0
- package/dist/utils/todoStorage.js.map +7 -0
- package/dist/utils/tokens.js +30 -0
- package/dist/utils/tokens.js.map +7 -0
- package/dist/utils/toolExecutionController.js +109 -0
- package/dist/utils/toolExecutionController.js.map +7 -0
- package/dist/utils/unaryLogging.js +6 -0
- package/dist/utils/unaryLogging.js.map +7 -0
- package/dist/utils/user.js +40 -0
- package/dist/utils/user.js.map +7 -0
- package/dist/utils/validate.js +132 -0
- package/dist/utils/validate.js.map +7 -0
- package/dist/version.js +7 -0
- package/dist/version.js.map +7 -0
- package/dist/yoga.wasm +0 -0
- package/package.json +113 -0
- package/scripts/postinstall.js +18 -0
- package/yoga.wasm +0 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ModelConfig } from "../components/ModelConfig.js";
|
|
3
|
+
import { enableConfigs } from "../utils/config.js";
|
|
4
|
+
import { triggerModelConfigChange } from "../messages.js";
|
|
5
|
+
const help = "Change your AI provider and model settings";
|
|
6
|
+
const description = "Change your AI provider and model settings";
|
|
7
|
+
const isEnabled = true;
|
|
8
|
+
const isHidden = false;
|
|
9
|
+
const name = "model";
|
|
10
|
+
const type = "local-jsx";
|
|
11
|
+
function userFacingName() {
|
|
12
|
+
return name;
|
|
13
|
+
}
|
|
14
|
+
async function call(onDone, context) {
|
|
15
|
+
const { abortController } = context;
|
|
16
|
+
enableConfigs();
|
|
17
|
+
abortController?.abort?.();
|
|
18
|
+
return /* @__PURE__ */ React.createElement(
|
|
19
|
+
ModelConfig,
|
|
20
|
+
{
|
|
21
|
+
onClose: () => {
|
|
22
|
+
import("../utils/model.js").then(({ reloadModelManager }) => {
|
|
23
|
+
reloadModelManager();
|
|
24
|
+
triggerModelConfigChange();
|
|
25
|
+
onDone();
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
call,
|
|
33
|
+
description,
|
|
34
|
+
help,
|
|
35
|
+
isEnabled,
|
|
36
|
+
isHidden,
|
|
37
|
+
name,
|
|
38
|
+
type,
|
|
39
|
+
userFacingName
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/commands/model.tsx"],
|
|
4
|
+
"sourcesContent": ["import React from 'react'\nimport { render } from 'ink'\nimport { ModelConfig } from '@components/ModelConfig'\nimport { enableConfigs } from '@utils/config'\nimport { triggerModelConfigChange } from '@messages'\n\nexport const help = 'Change your AI provider and model settings'\nexport const description = 'Change your AI provider and model settings'\nexport const isEnabled = true\nexport const isHidden = false\nexport const name = 'model'\nexport const type = 'local-jsx'\n\nexport function userFacingName(): string {\n return name\n}\n\nexport async function call(\n onDone: (result?: string) => void,\n context: any,\n): Promise<React.ReactNode> {\n const { abortController } = context\n enableConfigs()\n abortController?.abort?.()\n return (\n <ModelConfig\n onClose={() => {\n // Force ModelManager reload to ensure UI sync - wait for completion before closing\n import('@utils/model').then(({ reloadModelManager }) => {\n reloadModelManager()\n // \uD83D\uDD27 Critical fix: Trigger global UI refresh after model config changes\n // This ensures PromptInput component detects ModelManager singleton state changes\n triggerModelConfigChange()\n // Only close after reload is complete to ensure UI synchronization\n onDone()\n })\n }}\n />\n )\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAO,WAAW;AAElB,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB;AAC9B,SAAS,gCAAgC;AAElC,MAAM,OAAO;AACb,MAAM,cAAc;AACpB,MAAM,YAAY;AAClB,MAAM,WAAW;AACjB,MAAM,OAAO;AACb,MAAM,OAAO;AAEb,SAAS,iBAAyB;AACvC,SAAO;AACT;AAEA,eAAsB,KACpB,QACA,SAC0B;AAC1B,QAAM,EAAE,gBAAgB,IAAI;AAC5B,gBAAc;AACd,mBAAiB,QAAQ;AACzB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,MAAM;AAEb,eAAO,cAAc,EAAE,KAAK,CAAC,EAAE,mBAAmB,MAAM;AACtD,6BAAmB;AAGnB,mCAAyB;AAEzB,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ModelStatusDisplay } from "../components/ModelStatusDisplay.js";
|
|
3
|
+
const modelstatus = {
|
|
4
|
+
name: "modelstatus",
|
|
5
|
+
description: "Display current model configuration and status",
|
|
6
|
+
aliases: ["ms", "model-status"],
|
|
7
|
+
isEnabled: true,
|
|
8
|
+
isHidden: false,
|
|
9
|
+
userFacingName() {
|
|
10
|
+
return "modelstatus";
|
|
11
|
+
},
|
|
12
|
+
type: "local-jsx",
|
|
13
|
+
call(onDone) {
|
|
14
|
+
return Promise.resolve(/* @__PURE__ */ React.createElement(ModelStatusDisplay, { onClose: onDone }));
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
var modelstatus_default = modelstatus;
|
|
18
|
+
export {
|
|
19
|
+
modelstatus_default as default
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=modelstatus.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/commands/modelstatus.tsx"],
|
|
4
|
+
"sourcesContent": ["import React from 'react'\nimport type { Command } from '@commands'\nimport { ModelStatusDisplay } from '@components/ModelStatusDisplay'\n\nconst modelstatus: Command = {\n name: 'modelstatus',\n description: 'Display current model configuration and status',\n aliases: ['ms', 'model-status'],\n isEnabled: true,\n isHidden: false,\n userFacingName() {\n return 'modelstatus'\n },\n type: 'local-jsx',\n call(onDone) {\n return Promise.resolve(<ModelStatusDisplay onClose={onDone} />)\n },\n}\n\nexport default modelstatus\n"],
|
|
5
|
+
"mappings": "AAAA,OAAO,WAAW;AAElB,SAAS,0BAA0B;AAEnC,MAAM,cAAuB;AAAA,EAC3B,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS,CAAC,MAAM,cAAc;AAAA,EAC9B,WAAW;AAAA,EACX,UAAU;AAAA,EACV,iBAAiB;AACf,WAAO;AAAA,EACT;AAAA,EACA,MAAM;AAAA,EACN,KAAK,QAAQ;AACX,WAAO,QAAQ,QAAQ,oCAAC,sBAAmB,SAAS,QAAQ,CAAE;AAAA,EAChE;AACF;AAEA,IAAO,sBAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Onboarding } from "../components/Onboarding.js";
|
|
3
|
+
import { clearTerminal } from "../utils/terminal.js";
|
|
4
|
+
import { getGlobalConfig, saveGlobalConfig } from "../utils/config.js";
|
|
5
|
+
import { clearConversation } from "./clear.js";
|
|
6
|
+
var onboarding_default = {
|
|
7
|
+
type: "local-jsx",
|
|
8
|
+
name: "onboarding",
|
|
9
|
+
description: "Run through the onboarding flow",
|
|
10
|
+
isEnabled: true,
|
|
11
|
+
isHidden: false,
|
|
12
|
+
async call(onDone, context) {
|
|
13
|
+
await clearTerminal();
|
|
14
|
+
const config = getGlobalConfig();
|
|
15
|
+
saveGlobalConfig({
|
|
16
|
+
...config,
|
|
17
|
+
theme: "dark"
|
|
18
|
+
});
|
|
19
|
+
return /* @__PURE__ */ React.createElement(
|
|
20
|
+
Onboarding,
|
|
21
|
+
{
|
|
22
|
+
onDone: async () => {
|
|
23
|
+
clearConversation(context);
|
|
24
|
+
onDone();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
},
|
|
29
|
+
userFacingName() {
|
|
30
|
+
return "onboarding";
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
export {
|
|
34
|
+
onboarding_default as default
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=onboarding.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/commands/onboarding.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react'\nimport type { Command } from '@commands'\nimport { Onboarding } from '@components/Onboarding'\nimport { clearTerminal } from '@utils/terminal'\nimport { getGlobalConfig, saveGlobalConfig } from '@utils/config'\nimport { clearConversation } from './clear'\n\nexport default {\n type: 'local-jsx',\n name: 'onboarding',\n description: 'Run through the onboarding flow',\n isEnabled: true,\n isHidden: false,\n async call(onDone, context) {\n await clearTerminal()\n const config = getGlobalConfig()\n saveGlobalConfig({\n ...config,\n theme: 'dark',\n })\n\n return (\n <Onboarding\n onDone={async () => {\n clearConversation(context)\n onDone()\n }}\n />\n )\n },\n userFacingName() {\n return 'onboarding'\n },\n} satisfies Command\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;AAEvB,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B,SAAS,iBAAiB,wBAAwB;AAClD,SAAS,yBAAyB;AAElC,IAAO,qBAAQ;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,MAAM,KAAK,QAAQ,SAAS;AAC1B,UAAM,cAAc;AACpB,UAAM,SAAS,gBAAgB;AAC/B,qBAAiB;AAAA,MACf,GAAG;AAAA,MACH,OAAO;AAAA,IACT,CAAC;AAED,WACE;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ,YAAY;AAClB,4BAAkB,OAAO;AACzB,iBAAO;AAAA,QACT;AAAA;AAAA,IACF;AAAA,EAEJ;AAAA,EACA,iBAAiB;AACf,WAAO;AAAA,EACT;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import { Box, Text, useInput } from "ink";
|
|
3
|
+
import { SimpleSpinner } from "../../components/Spinner.js";
|
|
4
|
+
import TextInput from "../../components/TextInput.js";
|
|
5
|
+
import { addMarketplace } from "../../utils/marketplaceManager.js";
|
|
6
|
+
import { MarketplaceError } from "../../types/marketplace.js";
|
|
7
|
+
import { getTheme } from "../../utils/theme.js";
|
|
8
|
+
const AddMarketplaceForm = ({
|
|
9
|
+
onNavigate,
|
|
10
|
+
onBack
|
|
11
|
+
}) => {
|
|
12
|
+
const [source, setSource] = useState("");
|
|
13
|
+
const [adding, setAdding] = useState(false);
|
|
14
|
+
const [error, setError] = useState(null);
|
|
15
|
+
const [cursorOffset, setCursorOffset] = useState(0);
|
|
16
|
+
const theme = getTheme();
|
|
17
|
+
const handleSubmit = async () => {
|
|
18
|
+
if (!source.trim()) {
|
|
19
|
+
setError("Source cannot be empty");
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
setAdding(true);
|
|
23
|
+
setError(null);
|
|
24
|
+
try {
|
|
25
|
+
const marketplace = await addMarketplace(source);
|
|
26
|
+
onBack();
|
|
27
|
+
} catch (err) {
|
|
28
|
+
if (err instanceof MarketplaceError) {
|
|
29
|
+
setError(err.message);
|
|
30
|
+
} else {
|
|
31
|
+
setError(err instanceof Error ? err.message : "Failed to add marketplace");
|
|
32
|
+
}
|
|
33
|
+
} finally {
|
|
34
|
+
setAdding(false);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
useInput((input, key) => {
|
|
38
|
+
if (key.escape && !adding) {
|
|
39
|
+
onBack();
|
|
40
|
+
} else if (key.return && !adding) {
|
|
41
|
+
handleSubmit();
|
|
42
|
+
}
|
|
43
|
+
}, { isActive: !adding });
|
|
44
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: theme.primary, padding: 1 }, /* @__PURE__ */ React.createElement(Text, { bold: true, color: theme.primary }, "Add Marketplace"), /* @__PURE__ */ React.createElement(Box, { marginTop: 1, flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, null, "Enter marketplace source:"), /* @__PURE__ */ React.createElement(Box, { marginTop: 1, flexDirection: "column", marginLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Examples:"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " \u2022 owner/repo (GitHub shorthand)"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " \u2022 git@github.com:owner/repo.git (SSH URL)"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " \u2022 https://github.com/owner/repo.git (HTTPS URL)"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " \u2022 ./path/to/local/marketplace (Local path)"))), /* @__PURE__ */ React.createElement(Box, { marginTop: 1, flexDirection: "column" }, /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: theme.success }, "Source: "), /* @__PURE__ */ React.createElement(
|
|
45
|
+
TextInput,
|
|
46
|
+
{
|
|
47
|
+
value: source,
|
|
48
|
+
onChange: setSource,
|
|
49
|
+
placeholder: "Enter source...",
|
|
50
|
+
focus: !adding,
|
|
51
|
+
showCursor: !adding,
|
|
52
|
+
isDimmed: adding,
|
|
53
|
+
columns: 60,
|
|
54
|
+
cursorOffset,
|
|
55
|
+
onChangeCursorOffset: setCursorOffset
|
|
56
|
+
}
|
|
57
|
+
))), error && /* @__PURE__ */ React.createElement(Box, { marginTop: 1, borderStyle: "round", borderColor: theme.error, padding: 1 }, /* @__PURE__ */ React.createElement(Text, { color: theme.error }, "\u2717 ", error)), adding && /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(SimpleSpinner, null), /* @__PURE__ */ React.createElement(Text, { color: theme.primary }, " Adding marketplace...")), !adding && /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, /* @__PURE__ */ React.createElement(Text, { color: theme.success }, "Enter"), " to add \xB7 ", /* @__PURE__ */ React.createElement(Text, { color: theme.error }, "Esc"), " to cancel")));
|
|
58
|
+
};
|
|
59
|
+
export {
|
|
60
|
+
AddMarketplaceForm
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=AddMarketplaceForm.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/commands/plugin/AddMarketplaceForm.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * AddMarketplaceForm Component\n *\n * Interactive form for adding new plugin marketplaces\n */\n\nimport React, { useState } from 'react'\nimport { Box, Text, useInput } from 'ink'\nimport { SimpleSpinner } from '@components/Spinner'\nimport TextInput from '@components/TextInput'\nimport { addMarketplace } from '@utils/marketplaceManager'\nimport { MarketplaceError } from '../../types/marketplace'\nimport { getTheme } from '@utils/theme'\n\nexport interface NavigationProps {\n onNavigate: (params: { screen: string; [key: string]: any }) => void\n onBack: () => void\n}\n\nexport const AddMarketplaceForm: React.FC<NavigationProps> = ({\n onNavigate,\n onBack\n}) => {\n const [source, setSource] = useState('')\n const [adding, setAdding] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [cursorOffset, setCursorOffset] = useState(0)\n const theme = getTheme()\n\n const handleSubmit = async () => {\n if (!source.trim()) {\n setError('Source cannot be empty')\n return\n }\n\n setAdding(true)\n setError(null)\n\n try {\n const marketplace = await addMarketplace(source)\n // Success - navigate back to marketplace manager\n onBack()\n } catch (err) {\n if (err instanceof MarketplaceError) {\n setError(err.message)\n } else {\n setError(err instanceof Error ? err.message : 'Failed to add marketplace')\n }\n } finally {\n setAdding(false)\n }\n }\n\n useInput((input, key) => {\n if (key.escape && !adding) {\n onBack()\n } else if (key.return && !adding) {\n handleSubmit()\n }\n }, { isActive: !adding })\n\n return (\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={theme.primary} padding={1}>\n <Text bold color={theme.primary}>Add Marketplace</Text>\n\n <Box marginTop={1} flexDirection=\"column\">\n <Text>Enter marketplace source:</Text>\n <Box marginTop={1} flexDirection=\"column\" marginLeft={2}>\n <Text dimColor>Examples:</Text>\n <Text dimColor> \u2022 owner/repo (GitHub shorthand)</Text>\n <Text dimColor> \u2022 git@github.com:owner/repo.git (SSH URL)</Text>\n <Text dimColor> \u2022 https://github.com/owner/repo.git (HTTPS URL)</Text>\n <Text dimColor> \u2022 ./path/to/local/marketplace (Local path)</Text>\n </Box>\n </Box>\n\n <Box marginTop={1} flexDirection=\"column\">\n <Box>\n <Text color={theme.success}>Source: </Text>\n <TextInput\n value={source}\n onChange={setSource}\n placeholder=\"Enter source...\"\n focus={!adding}\n showCursor={!adding}\n isDimmed={adding}\n columns={60}\n cursorOffset={cursorOffset}\n onChangeCursorOffset={setCursorOffset}\n />\n </Box>\n </Box>\n\n {error && (\n <Box marginTop={1} borderStyle=\"round\" borderColor={theme.error} padding={1}>\n <Text color={theme.error}>\u2717 {error}</Text>\n </Box>\n )}\n\n {adding && (\n <Box marginTop={1}>\n <SimpleSpinner />\n <Text color={theme.primary}> Adding marketplace...</Text>\n </Box>\n )}\n\n {!adding && (\n <Box marginTop={1}>\n <Text dimColor>\n <Text color={theme.success}>Enter</Text> to add \u00B7 <Text color={theme.error}>Esc</Text> to cancel\n </Text>\n </Box>\n )}\n </Box>\n )\n}\n"],
|
|
5
|
+
"mappings": "AAMA,OAAO,SAAS,gBAAgB;AAChC,SAAS,KAAK,MAAM,gBAAgB;AACpC,SAAS,qBAAqB;AAC9B,OAAO,eAAe;AACtB,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAOlB,MAAM,qBAAgD,CAAC;AAAA,EAC5D;AAAA,EACA;AACF,MAAM;AACJ,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,EAAE;AACvC,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAC1C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AACtD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,CAAC;AAClD,QAAM,QAAQ,SAAS;AAEvB,QAAM,eAAe,YAAY;AAC/B,QAAI,CAAC,OAAO,KAAK,GAAG;AAClB,eAAS,wBAAwB;AACjC;AAAA,IACF;AAEA,cAAU,IAAI;AACd,aAAS,IAAI;AAEb,QAAI;AACF,YAAM,cAAc,MAAM,eAAe,MAAM;AAE/C,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,UAAI,eAAe,kBAAkB;AACnC,iBAAS,IAAI,OAAO;AAAA,MACtB,OAAO;AACL,iBAAS,eAAe,QAAQ,IAAI,UAAU,2BAA2B;AAAA,MAC3E;AAAA,IACF,UAAE;AACA,gBAAU,KAAK;AAAA,IACjB;AAAA,EACF;AAEA,WAAS,CAAC,OAAO,QAAQ;AACvB,QAAI,IAAI,UAAU,CAAC,QAAQ;AACzB,aAAO;AAAA,IACT,WAAW,IAAI,UAAU,CAAC,QAAQ;AAChC,mBAAa;AAAA,IACf;AAAA,EACF,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC;AAExB,SACE,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAa,MAAM,SAAS,SAAS,KACnF,oCAAC,QAAK,MAAI,MAAC,OAAO,MAAM,WAAS,iBAAe,GAEhD,oCAAC,OAAI,WAAW,GAAG,eAAc,YAC/B,oCAAC,YAAK,2BAAyB,GAC/B,oCAAC,OAAI,WAAW,GAAG,eAAc,UAAS,YAAY,KACpD,oCAAC,QAAK,UAAQ,QAAC,WAAS,GACxB,oCAAC,QAAK,UAAQ,QAAC,uCAAgC,GAC/C,oCAAC,QAAK,UAAQ,QAAC,iDAA0C,GACzD,oCAAC,QAAK,UAAQ,QAAC,uDAAgD,GAC/D,oCAAC,QAAK,UAAQ,QAAC,kDAA2C,CAC5D,CACF,GAEA,oCAAC,OAAI,WAAW,GAAG,eAAc,YAC/B,oCAAC,WACC,oCAAC,QAAK,OAAO,MAAM,WAAS,UAAQ,GACpC;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,OAAO,CAAC;AAAA,MACR,YAAY,CAAC;AAAA,MACb,UAAU;AAAA,MACV,SAAS;AAAA,MACT;AAAA,MACA,sBAAsB;AAAA;AAAA,EACxB,CACF,CACF,GAEC,SACC,oCAAC,OAAI,WAAW,GAAG,aAAY,SAAQ,aAAa,MAAM,OAAO,SAAS,KACxE,oCAAC,QAAK,OAAO,MAAM,SAAO,WAAG,KAAM,CACrC,GAGD,UACC,oCAAC,OAAI,WAAW,KACd,oCAAC,mBAAc,GACf,oCAAC,QAAK,OAAO,MAAM,WAAS,wBAAsB,CACpD,GAGD,CAAC,UACA,oCAAC,OAAI,WAAW,KACd,oCAAC,QAAK,UAAQ,QACZ,oCAAC,QAAK,OAAO,MAAM,WAAS,OAAK,GAAO,iBAAU,oCAAC,QAAK,OAAO,MAAM,SAAO,KAAG,GAAO,YACxF,CACF,CAEJ;AAEJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Box, Text, useInput } from "ink";
|
|
3
|
+
import { getTheme } from "../../utils/theme.js";
|
|
4
|
+
const ConfirmDialog = ({
|
|
5
|
+
title,
|
|
6
|
+
message,
|
|
7
|
+
onConfirm,
|
|
8
|
+
onCancel,
|
|
9
|
+
confirmColor,
|
|
10
|
+
confirmText = "Yes",
|
|
11
|
+
cancelText = "No"
|
|
12
|
+
}) => {
|
|
13
|
+
const theme = getTheme();
|
|
14
|
+
const [focused, setFocused] = React.useState("cancel");
|
|
15
|
+
useInput((input, key) => {
|
|
16
|
+
if (key.escape) {
|
|
17
|
+
onCancel();
|
|
18
|
+
} else if (key.return) {
|
|
19
|
+
if (focused === "confirm") {
|
|
20
|
+
onConfirm();
|
|
21
|
+
} else {
|
|
22
|
+
onCancel();
|
|
23
|
+
}
|
|
24
|
+
} else if (key.leftArrow) {
|
|
25
|
+
setFocused(focused === "confirm" ? "cancel" : "confirm");
|
|
26
|
+
} else if (key.rightArrow) {
|
|
27
|
+
setFocused(focused === "confirm" ? "cancel" : "confirm");
|
|
28
|
+
} else if (input === "y" || input === "Y") {
|
|
29
|
+
onConfirm();
|
|
30
|
+
} else if (input === "n" || input === "N") {
|
|
31
|
+
onCancel();
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: theme.warning, padding: 1 }, /* @__PURE__ */ React.createElement(Text, { bold: true, color: theme.warning }, title), /* @__PURE__ */ React.createElement(Box, { marginTop: 1, flexDirection: "column" }, message.split("\n").map((line, idx) => {
|
|
35
|
+
return /* @__PURE__ */ React.createElement(Text, { ...{ key: `line-${idx}` } }, line);
|
|
36
|
+
})), /* @__PURE__ */ React.createElement(Box, { marginTop: 1, gap: 2 }, /* @__PURE__ */ React.createElement(
|
|
37
|
+
Box,
|
|
38
|
+
{
|
|
39
|
+
borderStyle: focused === "confirm" ? "round" : "single",
|
|
40
|
+
borderColor: focused === "confirm" ? confirmColor || theme.success : theme.secondaryText,
|
|
41
|
+
paddingX: 2
|
|
42
|
+
},
|
|
43
|
+
/* @__PURE__ */ React.createElement(
|
|
44
|
+
Text,
|
|
45
|
+
{
|
|
46
|
+
color: focused === "confirm" ? confirmColor || theme.success : theme.secondaryText,
|
|
47
|
+
bold: focused === "confirm"
|
|
48
|
+
},
|
|
49
|
+
confirmText
|
|
50
|
+
)
|
|
51
|
+
), /* @__PURE__ */ React.createElement(
|
|
52
|
+
Box,
|
|
53
|
+
{
|
|
54
|
+
borderStyle: focused === "cancel" ? "round" : "single",
|
|
55
|
+
borderColor: focused === "cancel" ? theme.primary : theme.secondaryText,
|
|
56
|
+
paddingX: 2
|
|
57
|
+
},
|
|
58
|
+
/* @__PURE__ */ React.createElement(
|
|
59
|
+
Text,
|
|
60
|
+
{
|
|
61
|
+
color: focused === "cancel" ? theme.primary : theme.secondaryText,
|
|
62
|
+
bold: focused === "cancel"
|
|
63
|
+
},
|
|
64
|
+
cancelText
|
|
65
|
+
)
|
|
66
|
+
)), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "\u2190 \u2192 navigate \xB7 ", /* @__PURE__ */ React.createElement(Text, { color: theme.success }, "Enter"), " confirm \xB7 ", /* @__PURE__ */ React.createElement(Text, { color: theme.error }, "Esc"), " cancel")));
|
|
67
|
+
};
|
|
68
|
+
export {
|
|
69
|
+
ConfirmDialog
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=ConfirmDialog.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/commands/plugin/ConfirmDialog.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * ConfirmDialog Component\n *\n * Reusable confirmation dialog for marketplace operations\n */\n\nimport React from 'react'\nimport { Box, Text, useInput } from 'ink'\nimport { getTheme } from '@utils/theme'\n\nexport interface ConfirmDialogProps {\n title: string\n message: string\n onConfirm: () => void\n onCancel: () => void\n confirmColor?: string\n confirmText?: string\n cancelText?: string\n}\n\nexport const ConfirmDialog: React.FC<ConfirmDialogProps> = ({\n title,\n message,\n onConfirm,\n onCancel,\n confirmColor,\n confirmText = 'Yes',\n cancelText = 'No'\n}) => {\n const theme = getTheme()\n const [focused, setFocused] = React.useState<'confirm' | 'cancel'>('cancel')\n\n useInput((input, key) => {\n if (key.escape) {\n onCancel()\n } else if (key.return) {\n if (focused === 'confirm') {\n onConfirm()\n } else {\n onCancel()\n }\n } else if (key.leftArrow) {\n setFocused(focused === 'confirm' ? 'cancel' : 'confirm')\n } else if (key.rightArrow) {\n setFocused(focused === 'confirm' ? 'cancel' : 'confirm')\n } else if (input === 'y' || input === 'Y') {\n onConfirm()\n } else if (input === 'n' || input === 'N') {\n onCancel()\n }\n })\n\n return (\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={theme.warning} padding={1}>\n <Text bold color={theme.warning}>{title}</Text>\n\n <Box marginTop={1} flexDirection=\"column\">\n {message.split('\\n').map((line, idx) => {\n // Handle React Text component which doesn't accept key prop in its type definition\n // but we need unique keys for list rendering\n return <Text {...{ key: `line-${idx}` } as any}>{line}</Text>\n })}\n </Box>\n\n <Box marginTop={1} gap={2}>\n <Box\n borderStyle={focused === 'confirm' ? 'round' : 'single'}\n borderColor={focused === 'confirm' ? (confirmColor || theme.success) : theme.secondaryText}\n paddingX={2}\n >\n <Text\n color={focused === 'confirm' ? (confirmColor || theme.success) : theme.secondaryText}\n bold={focused === 'confirm'}\n >\n {confirmText}\n </Text>\n </Box>\n\n <Box\n borderStyle={focused === 'cancel' ? 'round' : 'single'}\n borderColor={focused === 'cancel' ? theme.primary : theme.secondaryText}\n paddingX={2}\n >\n <Text\n color={focused === 'cancel' ? theme.primary : theme.secondaryText}\n bold={focused === 'cancel'}\n >\n {cancelText}\n </Text>\n </Box>\n </Box>\n\n <Box marginTop={1}>\n <Text dimColor>\n \u2190 \u2192 navigate \u00B7 <Text color={theme.success}>Enter</Text> confirm \u00B7 <Text color={theme.error}>Esc</Text> cancel\n </Text>\n </Box>\n </Box>\n )\n}\n"],
|
|
5
|
+
"mappings": "AAMA,OAAO,WAAW;AAClB,SAAS,KAAK,MAAM,gBAAgB;AACpC,SAAS,gBAAgB;AAYlB,MAAM,gBAA8C,CAAC;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,aAAa;AACf,MAAM;AACJ,QAAM,QAAQ,SAAS;AACvB,QAAM,CAAC,SAAS,UAAU,IAAI,MAAM,SAA+B,QAAQ;AAE3E,WAAS,CAAC,OAAO,QAAQ;AACvB,QAAI,IAAI,QAAQ;AACd,eAAS;AAAA,IACX,WAAW,IAAI,QAAQ;AACrB,UAAI,YAAY,WAAW;AACzB,kBAAU;AAAA,MACZ,OAAO;AACL,iBAAS;AAAA,MACX;AAAA,IACF,WAAW,IAAI,WAAW;AACxB,iBAAW,YAAY,YAAY,WAAW,SAAS;AAAA,IACzD,WAAW,IAAI,YAAY;AACzB,iBAAW,YAAY,YAAY,WAAW,SAAS;AAAA,IACzD,WAAW,UAAU,OAAO,UAAU,KAAK;AACzC,gBAAU;AAAA,IACZ,WAAW,UAAU,OAAO,UAAU,KAAK;AACzC,eAAS;AAAA,IACX;AAAA,EACF,CAAC;AAED,SACE,oCAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAa,MAAM,SAAS,SAAS,KACnF,oCAAC,QAAK,MAAI,MAAC,OAAO,MAAM,WAAU,KAAM,GAExC,oCAAC,OAAI,WAAW,GAAG,eAAc,YAC9B,QAAQ,MAAM,IAAI,EAAE,IAAI,CAAC,MAAM,QAAQ;AAGtC,WAAO,oCAAC,QAAM,GAAG,EAAE,KAAK,QAAQ,GAAG,GAAG,KAAW,IAAK;AAAA,EACxD,CAAC,CACH,GAEA,oCAAC,OAAI,WAAW,GAAG,KAAK,KACtB;AAAA,IAAC;AAAA;AAAA,MACC,aAAa,YAAY,YAAY,UAAU;AAAA,MAC/C,aAAa,YAAY,YAAa,gBAAgB,MAAM,UAAW,MAAM;AAAA,MAC7E,UAAU;AAAA;AAAA,IAEV;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,YAAY,YAAa,gBAAgB,MAAM,UAAW,MAAM;AAAA,QACvE,MAAM,YAAY;AAAA;AAAA,MAEjB;AAAA,IACH;AAAA,EACF,GAEA;AAAA,IAAC;AAAA;AAAA,MACC,aAAa,YAAY,WAAW,UAAU;AAAA,MAC9C,aAAa,YAAY,WAAW,MAAM,UAAU,MAAM;AAAA,MAC1D,UAAU;AAAA;AAAA,IAEV;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,YAAY,WAAW,MAAM,UAAU,MAAM;AAAA,QACpD,MAAM,YAAY;AAAA;AAAA,MAEjB;AAAA,IACH;AAAA,EACF,CACF,GAEA,oCAAC,OAAI,WAAW,KACd,oCAAC,QAAK,UAAQ,QAAC,gCACE,oCAAC,QAAK,OAAO,MAAM,WAAS,OAAK,GAAO,kBAAW,oCAAC,QAAK,OAAO,MAAM,SAAO,KAAG,GAAO,SACxG,CACF,CACF;AAEJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Box, Text, useInput } from "ink";
|
|
3
|
+
import { getTheme } from "../../utils/theme.js";
|
|
4
|
+
const ErrorView = ({
|
|
5
|
+
error,
|
|
6
|
+
onRetry,
|
|
7
|
+
onBack
|
|
8
|
+
}) => {
|
|
9
|
+
const theme = getTheme();
|
|
10
|
+
useInput((input, key) => {
|
|
11
|
+
if (key.escape) {
|
|
12
|
+
onBack();
|
|
13
|
+
} else if (input === "r" && onRetry) {
|
|
14
|
+
onRetry();
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
return /* @__PURE__ */ React.createElement(
|
|
18
|
+
Box,
|
|
19
|
+
{
|
|
20
|
+
flexDirection: "column",
|
|
21
|
+
borderStyle: "round",
|
|
22
|
+
borderColor: theme.error,
|
|
23
|
+
padding: 1
|
|
24
|
+
},
|
|
25
|
+
/* @__PURE__ */ React.createElement(Text, { bold: true, color: theme.error }, "Error"),
|
|
26
|
+
/* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, null, error)),
|
|
27
|
+
/* @__PURE__ */ React.createElement(Box, { marginTop: 1, flexDirection: "column" }, onRetry && /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Press ", /* @__PURE__ */ React.createElement(Text, { bold: true }, "r"), " to retry"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Press ", /* @__PURE__ */ React.createElement(Text, { bold: true }, "Esc"), " to go back"))
|
|
28
|
+
);
|
|
29
|
+
};
|
|
30
|
+
export {
|
|
31
|
+
ErrorView
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=ErrorView.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/commands/plugin/ErrorView.tsx"],
|
|
4
|
+
"sourcesContent": ["import React from 'react'\nimport { Box, Text, useInput } from 'ink'\nimport { getTheme } from '@utils/theme'\n\nexport interface ErrorViewProps {\n error: string\n onRetry?: () => void\n onBack: () => void\n}\n\nexport const ErrorView: React.FC<ErrorViewProps> = ({\n error,\n onRetry,\n onBack,\n}) => {\n const theme = getTheme()\n\n useInput((input, key) => {\n if (key.escape) {\n onBack()\n } else if (input === 'r' && onRetry) {\n onRetry()\n }\n })\n\n return (\n <Box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={theme.error}\n padding={1}\n >\n <Text bold color={theme.error}>\n Error\n </Text>\n <Box marginTop={1}>\n <Text>{error}</Text>\n </Box>\n <Box marginTop={1} flexDirection=\"column\">\n {onRetry && (\n <Text dimColor>\n Press <Text bold>r</Text> to retry\n </Text>\n )}\n <Text dimColor>\n Press <Text bold>Esc</Text> to go back\n </Text>\n </Box>\n </Box>\n )\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAO,WAAW;AAClB,SAAS,KAAK,MAAM,gBAAgB;AACpC,SAAS,gBAAgB;AAQlB,MAAM,YAAsC,CAAC;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,QAAQ,SAAS;AAEvB,WAAS,CAAC,OAAO,QAAQ;AACvB,QAAI,IAAI,QAAQ;AACd,aAAO;AAAA,IACT,WAAW,UAAU,OAAO,SAAS;AACnC,cAAQ;AAAA,IACV;AAAA,EACF,CAAC;AAED,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAc;AAAA,MACd,aAAY;AAAA,MACZ,aAAa,MAAM;AAAA,MACnB,SAAS;AAAA;AAAA,IAET,oCAAC,QAAK,MAAI,MAAC,OAAO,MAAM,SAAO,OAE/B;AAAA,IACA,oCAAC,OAAI,WAAW,KACd,oCAAC,YAAM,KAAM,CACf;AAAA,IACA,oCAAC,OAAI,WAAW,GAAG,eAAc,YAC9B,WACC,oCAAC,QAAK,UAAQ,QAAC,UACP,oCAAC,QAAK,MAAI,QAAC,GAAC,GAAO,WAC3B,GAEF,oCAAC,QAAK,UAAQ,QAAC,UACP,oCAAC,QAAK,MAAI,QAAC,KAAG,GAAO,aAC7B,CACF;AAAA,EACF;AAEJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import React, { useState, useEffect, useCallback } from "react";
|
|
2
|
+
import { Box, Text, useInput } from "ink";
|
|
3
|
+
import { loadAllPlugins, togglePluginEnabled, getPlugin } from "../../utils/pluginLoader.js";
|
|
4
|
+
import { getTheme } from "../../utils/theme.js";
|
|
5
|
+
const InstalledPluginsByMarketplace = ({ marketplace, onNavigate, onBack }) => {
|
|
6
|
+
const [plugins, setPlugins] = useState([]);
|
|
7
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
8
|
+
const [showConfirm, setShowConfirm] = useState(false);
|
|
9
|
+
const [confirmAction, setConfirmAction] = useState(null);
|
|
10
|
+
const theme = getTheme();
|
|
11
|
+
const loadPlugins = useCallback(() => {
|
|
12
|
+
const allPlugins = loadAllPlugins();
|
|
13
|
+
const filtered = allPlugins.filter((p) => {
|
|
14
|
+
if (marketplace.name === "local") {
|
|
15
|
+
if (p.source.type === "marketplace") return false;
|
|
16
|
+
if (p.source.type === "local" && p.source.path.includes("/.minto/plugins/")) {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
return p.source.type === "local";
|
|
20
|
+
} else {
|
|
21
|
+
if (p.source.type === "marketplace") {
|
|
22
|
+
return p.source.marketplace === marketplace.name;
|
|
23
|
+
}
|
|
24
|
+
return p.location.includes(marketplace.name);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
const withMarks = filtered.map((p) => ({
|
|
28
|
+
...p,
|
|
29
|
+
markedForUpdate: false,
|
|
30
|
+
markedForUninstall: false
|
|
31
|
+
}));
|
|
32
|
+
setPlugins(withMarks);
|
|
33
|
+
}, [marketplace]);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
loadPlugins();
|
|
36
|
+
}, [loadPlugins]);
|
|
37
|
+
const handleToggleEnabled = useCallback(() => {
|
|
38
|
+
if (plugins[selectedIndex]) {
|
|
39
|
+
try {
|
|
40
|
+
const newState = togglePluginEnabled(plugins[selectedIndex].manifest.name);
|
|
41
|
+
loadPlugins();
|
|
42
|
+
} catch (error) {
|
|
43
|
+
console.error("Error toggling plugin:", error);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}, [plugins, selectedIndex, loadPlugins]);
|
|
47
|
+
const handleMarkUpdate = useCallback(() => {
|
|
48
|
+
if (plugins[selectedIndex]) {
|
|
49
|
+
setPlugins((prev) => {
|
|
50
|
+
const updated = [...prev];
|
|
51
|
+
updated[selectedIndex] = {
|
|
52
|
+
...updated[selectedIndex],
|
|
53
|
+
markedForUpdate: !updated[selectedIndex].markedForUpdate
|
|
54
|
+
};
|
|
55
|
+
return updated;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}, [plugins, selectedIndex]);
|
|
59
|
+
const handleMarkUninstall = useCallback(() => {
|
|
60
|
+
if (plugins[selectedIndex]) {
|
|
61
|
+
setShowConfirm(true);
|
|
62
|
+
setConfirmAction("uninstall");
|
|
63
|
+
}
|
|
64
|
+
}, [plugins, selectedIndex]);
|
|
65
|
+
const handleConfirmUninstall = useCallback(() => {
|
|
66
|
+
if (plugins[selectedIndex]) {
|
|
67
|
+
setPlugins((prev) => {
|
|
68
|
+
const updated = [...prev];
|
|
69
|
+
updated[selectedIndex] = {
|
|
70
|
+
...updated[selectedIndex],
|
|
71
|
+
markedForUninstall: !updated[selectedIndex].markedForUninstall
|
|
72
|
+
};
|
|
73
|
+
return updated;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
setShowConfirm(false);
|
|
77
|
+
setConfirmAction(null);
|
|
78
|
+
}, [plugins, selectedIndex]);
|
|
79
|
+
const handleViewDetails = useCallback(() => {
|
|
80
|
+
if (plugins[selectedIndex]) {
|
|
81
|
+
const plugin = getPlugin(plugins[selectedIndex].manifest.name);
|
|
82
|
+
if (plugin) {
|
|
83
|
+
onNavigate({
|
|
84
|
+
screen: "plugin-details-manage",
|
|
85
|
+
plugin
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}, [plugins, selectedIndex, onNavigate]);
|
|
90
|
+
useInput((input, key) => {
|
|
91
|
+
if (showConfirm) {
|
|
92
|
+
if (key.return || input === "y") {
|
|
93
|
+
handleConfirmUninstall();
|
|
94
|
+
} else if (key.escape || input === "n") {
|
|
95
|
+
setShowConfirm(false);
|
|
96
|
+
setConfirmAction(null);
|
|
97
|
+
}
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (key.escape) {
|
|
101
|
+
onBack();
|
|
102
|
+
} else if (key.upArrow) {
|
|
103
|
+
setSelectedIndex((prev) => Math.max(0, prev - 1));
|
|
104
|
+
} else if (key.downArrow) {
|
|
105
|
+
setSelectedIndex((prev) => Math.min(plugins.length - 1, prev + 1));
|
|
106
|
+
} else if (input === " ") {
|
|
107
|
+
handleToggleEnabled();
|
|
108
|
+
} else if (input === "u") {
|
|
109
|
+
handleMarkUpdate();
|
|
110
|
+
} else if (key.delete || input === "d") {
|
|
111
|
+
handleMarkUninstall();
|
|
112
|
+
} else if (key.return) {
|
|
113
|
+
handleViewDetails();
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
if (showConfirm && confirmAction === "uninstall") {
|
|
117
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", padding: 1 }, /* @__PURE__ */ React.createElement(Text, { bold: true, color: theme.warning }, "Confirm Uninstall Mark"), /* @__PURE__ */ React.createElement(Text, null, ""), /* @__PURE__ */ React.createElement(Text, null, 'Mark plugin "', plugins[selectedIndex]?.manifest.name, '" for uninstallation?'), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "This will mark the plugin for removal. Use batch actions to complete."), /* @__PURE__ */ React.createElement(Text, null, ""), /* @__PURE__ */ React.createElement(Text, null, /* @__PURE__ */ React.createElement(Text, { color: theme.success }, "Y"), "es / ", /* @__PURE__ */ React.createElement(Text, { color: theme.error }, "N"), "o"));
|
|
118
|
+
}
|
|
119
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", padding: 1 }, /* @__PURE__ */ React.createElement(Text, { bold: true, color: theme.primary }, marketplace.name, " \u203A Manage Plugins (", plugins.length, ")"), /* @__PURE__ */ React.createElement(Text, null, ""), plugins.length === 0 ? /* @__PURE__ */ React.createElement(Box, { marginLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { color: theme.warning }, "No plugins installed from this marketplace")) : plugins.map((plugin, index) => {
|
|
120
|
+
const isSelected = index === selectedIndex;
|
|
121
|
+
const statusIcon = plugin.enabled ? "\u25CF" : "\u25CB";
|
|
122
|
+
const marks = [];
|
|
123
|
+
if (plugin.markedForUpdate) marks.push("\u2B06");
|
|
124
|
+
if (plugin.markedForUninstall) marks.push("\u2717");
|
|
125
|
+
return /* @__PURE__ */ React.createElement(Box, { key: plugin.manifest.name, flexDirection: "column", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: isSelected ? theme.success : void 0 }, isSelected ? "\u276F " : " ", statusIcon, " ", plugin.manifest.displayName || plugin.manifest.name), marks.length > 0 && /* @__PURE__ */ React.createElement(Text, { color: theme.warning }, " ", marks.join(" "))), /* @__PURE__ */ React.createElement(Box, { marginLeft: 4 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, plugin.manifest.description, " \xB7 v", plugin.manifest.version)), isSelected && /* @__PURE__ */ React.createElement(Box, { marginLeft: 4 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Components:", " ", [
|
|
126
|
+
plugin.agents.length > 0 && `${plugin.agents.length} agent(s)`,
|
|
127
|
+
plugin.commands.length > 0 && `${plugin.commands.length} command(s)`,
|
|
128
|
+
plugin.skills.length > 0 && `${plugin.skills.length} skill(s)`
|
|
129
|
+
].filter(Boolean).join(", ") || "none")));
|
|
130
|
+
}), /* @__PURE__ */ React.createElement(Text, null, ""), /* @__PURE__ */ React.createElement(Box, { marginLeft: 2, flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Space Toggle \xB7 U Mark Update \xB7 D/Del Mark Uninstall"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Enter Details \xB7 Esc Back")));
|
|
131
|
+
};
|
|
132
|
+
export {
|
|
133
|
+
InstalledPluginsByMarketplace
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=InstalledPluginsByMarketplace.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/commands/plugin/InstalledPluginsByMarketplace.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * Installed Plugins By Marketplace\n *\n * Displays all plugins from a specific marketplace with management actions.\n * Supports enable/disable toggle, marking for update/uninstall, and viewing details.\n */\n\nimport React, { useState, useEffect, useCallback } from 'react'\nimport { Box, Text, useInput } from 'ink'\nimport { loadAllPlugins, togglePluginEnabled, getPlugin } from '@utils/pluginLoader'\nimport { LoadedPlugin } from '../../types/plugin'\nimport { RegisteredMarketplace } from '../../types/marketplace'\nimport { getTheme } from '@utils/theme'\nimport { NavigationProps } from './types'\n\ninterface InstalledPluginsByMarketplaceProps extends NavigationProps {\n marketplace: RegisteredMarketplace\n}\n\ninterface PluginWithMarks extends LoadedPlugin {\n markedForUpdate?: boolean\n markedForUninstall?: boolean\n}\n\nexport const InstalledPluginsByMarketplace: React.FC<\n InstalledPluginsByMarketplaceProps\n> = ({ marketplace, onNavigate, onBack }) => {\n const [plugins, setPlugins] = useState<PluginWithMarks[]>([])\n const [selectedIndex, setSelectedIndex] = useState(0)\n const [showConfirm, setShowConfirm] = useState(false)\n const [confirmAction, setConfirmAction] = useState<'uninstall' | null>(null)\n const theme = getTheme()\n\n const loadPlugins = useCallback(() => {\n const allPlugins = loadAllPlugins()\n\n // Filter plugins for this marketplace\n const filtered = allPlugins.filter((p) => {\n if (marketplace.name === 'local') {\n // Local includes plugins not from any marketplace\n if (p.source.type === 'marketplace') return false\n if (p.source.type === 'local' && p.source.path.includes('/.minto/plugins/')) {\n return true\n }\n return p.source.type === 'local'\n } else {\n // Check if from this marketplace\n if (p.source.type === 'marketplace') {\n return p.source.marketplace === marketplace.name\n }\n // Also check location path\n return p.location.includes(marketplace.name)\n }\n })\n\n // Convert to PluginWithMarks format\n const withMarks: PluginWithMarks[] = filtered.map((p) => ({\n ...p,\n markedForUpdate: false,\n markedForUninstall: false,\n }))\n\n setPlugins(withMarks)\n }, [marketplace])\n\n useEffect(() => {\n loadPlugins()\n }, [loadPlugins])\n\n const handleToggleEnabled = useCallback(() => {\n if (plugins[selectedIndex]) {\n try {\n const newState = togglePluginEnabled(plugins[selectedIndex].manifest.name)\n // Reload plugins to reflect changes\n loadPlugins()\n } catch (error) {\n console.error('Error toggling plugin:', error)\n }\n }\n }, [plugins, selectedIndex, loadPlugins])\n\n const handleMarkUpdate = useCallback(() => {\n if (plugins[selectedIndex]) {\n setPlugins((prev) => {\n const updated = [...prev]\n updated[selectedIndex] = {\n ...updated[selectedIndex],\n markedForUpdate: !updated[selectedIndex].markedForUpdate,\n }\n return updated\n })\n }\n }, [plugins, selectedIndex])\n\n const handleMarkUninstall = useCallback(() => {\n if (plugins[selectedIndex]) {\n setShowConfirm(true)\n setConfirmAction('uninstall')\n }\n }, [plugins, selectedIndex])\n\n const handleConfirmUninstall = useCallback(() => {\n if (plugins[selectedIndex]) {\n setPlugins((prev) => {\n const updated = [...prev]\n updated[selectedIndex] = {\n ...updated[selectedIndex],\n markedForUninstall: !updated[selectedIndex].markedForUninstall,\n }\n return updated\n })\n }\n setShowConfirm(false)\n setConfirmAction(null)\n }, [plugins, selectedIndex])\n\n const handleViewDetails = useCallback(() => {\n if (plugins[selectedIndex]) {\n const plugin = getPlugin(plugins[selectedIndex].manifest.name)\n if (plugin) {\n onNavigate({\n screen: 'plugin-details-manage',\n plugin,\n })\n }\n }\n }, [plugins, selectedIndex, onNavigate])\n\n useInput((input, key) => {\n if (showConfirm) {\n if (key.return || input === 'y') {\n handleConfirmUninstall()\n } else if (key.escape || input === 'n') {\n setShowConfirm(false)\n setConfirmAction(null)\n }\n return\n }\n\n if (key.escape) {\n onBack()\n } else if (key.upArrow) {\n setSelectedIndex((prev) => Math.max(0, prev - 1))\n } else if (key.downArrow) {\n setSelectedIndex((prev) => Math.min(plugins.length - 1, prev + 1))\n } else if (input === ' ') {\n handleToggleEnabled()\n } else if (input === 'u') {\n handleMarkUpdate()\n } else if (key.delete || input === 'd') {\n handleMarkUninstall()\n } else if (key.return) {\n handleViewDetails()\n }\n })\n\n if (showConfirm && confirmAction === 'uninstall') {\n return (\n <Box flexDirection=\"column\" borderStyle=\"round\" padding={1}>\n <Text bold color={theme.warning}>\n Confirm Uninstall Mark\n </Text>\n <Text>{''}</Text>\n <Text>\n Mark plugin \"{plugins[selectedIndex]?.manifest.name}\" for uninstallation?\n </Text>\n <Text dimColor>\n This will mark the plugin for removal. Use batch actions to complete.\n </Text>\n <Text>{''}</Text>\n <Text>\n <Text color={theme.success}>Y</Text>es / <Text color={theme.error}>N</Text>o\n </Text>\n </Box>\n )\n }\n\n return (\n <Box flexDirection=\"column\" borderStyle=\"round\" padding={1}>\n <Text bold color={theme.primary}>\n {marketplace.name} \u203A Manage Plugins ({plugins.length})\n </Text>\n <Text>{''}</Text>\n\n {plugins.length === 0 ? (\n <Box marginLeft={2}>\n <Text color={theme.warning}>No plugins installed from this marketplace</Text>\n </Box>\n ) : (\n plugins.map((plugin, index) => {\n const isSelected = index === selectedIndex\n const statusIcon = plugin.enabled ? '\u25CF' : '\u25CB'\n const marks = []\n\n if (plugin.markedForUpdate) marks.push('\u2B06')\n if (plugin.markedForUninstall) marks.push('\u2717')\n\n return (\n <Box key={plugin.manifest.name} flexDirection=\"column\" marginBottom={1}>\n <Box>\n <Text color={isSelected ? theme.success : undefined}>\n {isSelected ? '\u276F ' : ' '}\n {statusIcon} {plugin.manifest.displayName || plugin.manifest.name}\n </Text>\n {marks.length > 0 && (\n <Text color={theme.warning}> {marks.join(' ')}</Text>\n )}\n </Box>\n <Box marginLeft={4}>\n <Text dimColor>\n {plugin.manifest.description} \u00B7 v{plugin.manifest.version}\n </Text>\n </Box>\n {isSelected && (\n <Box marginLeft={4}>\n <Text dimColor>\n Components:{' '}\n {[\n plugin.agents.length > 0 && `${plugin.agents.length} agent(s)`,\n plugin.commands.length > 0 &&\n `${plugin.commands.length} command(s)`,\n plugin.skills.length > 0 && `${plugin.skills.length} skill(s)`,\n ]\n .filter(Boolean)\n .join(', ') || 'none'}\n </Text>\n </Box>\n )}\n </Box>\n )\n })\n )}\n\n <Text>{''}</Text>\n <Box marginLeft={2} flexDirection=\"column\">\n <Text dimColor>Space Toggle \u00B7 U Mark Update \u00B7 D/Del Mark Uninstall</Text>\n <Text dimColor>Enter Details \u00B7 Esc Back</Text>\n </Box>\n </Box>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import React, { useState, useEffect } from "react";
|
|
2
|
+
import { Box, Text, useInput } from "ink";
|
|
3
|
+
import { loadAllPlugins } from "../../utils/pluginLoader.js";
|
|
4
|
+
import { listMarketplaces, getMarketplace } from "../../utils/marketplaceManager.js";
|
|
5
|
+
import { getTheme } from "../../utils/theme.js";
|
|
6
|
+
const InstalledPluginsManager = ({
|
|
7
|
+
onNavigate,
|
|
8
|
+
onBack
|
|
9
|
+
}) => {
|
|
10
|
+
const [marketplaces, setMarketplaces] = useState([]);
|
|
11
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
12
|
+
const [loading, setLoading] = useState(true);
|
|
13
|
+
const theme = getTheme();
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
setLoading(true);
|
|
16
|
+
const timer = setTimeout(() => {
|
|
17
|
+
try {
|
|
18
|
+
const plugins = loadAllPlugins();
|
|
19
|
+
const registeredMarketplaces = listMarketplaces();
|
|
20
|
+
const marketplaceNames = new Set(registeredMarketplaces.map((m) => m.name));
|
|
21
|
+
const grouped = {};
|
|
22
|
+
for (const plugin of plugins) {
|
|
23
|
+
let marketplaceName = "local";
|
|
24
|
+
if (plugin.source.type === "marketplace") {
|
|
25
|
+
marketplaceName = plugin.source.marketplace;
|
|
26
|
+
} else {
|
|
27
|
+
for (const marketplace of registeredMarketplaces) {
|
|
28
|
+
if (plugin.location.includes(marketplace.name)) {
|
|
29
|
+
marketplaceName = marketplace.name;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (!grouped[marketplaceName]) {
|
|
35
|
+
grouped[marketplaceName] = [];
|
|
36
|
+
}
|
|
37
|
+
grouped[marketplaceName].push(plugin);
|
|
38
|
+
}
|
|
39
|
+
const groups = Object.entries(grouped).map(
|
|
40
|
+
([name, plugins2]) => ({
|
|
41
|
+
name,
|
|
42
|
+
plugins: plugins2,
|
|
43
|
+
installedCount: plugins2.length,
|
|
44
|
+
enabledCount: plugins2.filter((p) => p.enabled).length
|
|
45
|
+
})
|
|
46
|
+
);
|
|
47
|
+
groups.sort((a, b) => {
|
|
48
|
+
if (a.name === "local") return 1;
|
|
49
|
+
if (b.name === "local") return -1;
|
|
50
|
+
return a.name.localeCompare(b.name);
|
|
51
|
+
});
|
|
52
|
+
setMarketplaces(groups);
|
|
53
|
+
} finally {
|
|
54
|
+
setLoading(false);
|
|
55
|
+
}
|
|
56
|
+
}, 100);
|
|
57
|
+
return () => clearTimeout(timer);
|
|
58
|
+
}, []);
|
|
59
|
+
useInput((input, key) => {
|
|
60
|
+
if (key.escape) {
|
|
61
|
+
onBack();
|
|
62
|
+
} else if (key.upArrow) {
|
|
63
|
+
setSelectedIndex((prev) => Math.max(0, prev - 1));
|
|
64
|
+
} else if (key.downArrow) {
|
|
65
|
+
setSelectedIndex((prev) => Math.min(marketplaces.length - 1, prev + 1));
|
|
66
|
+
} else if (key.return) {
|
|
67
|
+
if (marketplaces[selectedIndex]) {
|
|
68
|
+
const selectedMarketplace = marketplaces[selectedIndex].name;
|
|
69
|
+
const registeredMarketplace = getMarketplace(selectedMarketplace);
|
|
70
|
+
onNavigate({
|
|
71
|
+
screen: "installed-plugins-by-marketplace",
|
|
72
|
+
marketplace: registeredMarketplace || {
|
|
73
|
+
name: selectedMarketplace,
|
|
74
|
+
source: { type: "local", path: selectedMarketplace },
|
|
75
|
+
manifest: {
|
|
76
|
+
name: selectedMarketplace,
|
|
77
|
+
version: "1.0.0",
|
|
78
|
+
plugins: [],
|
|
79
|
+
owner: { name: "local", email: "" }
|
|
80
|
+
},
|
|
81
|
+
lastUpdated: /* @__PURE__ */ new Date(),
|
|
82
|
+
enabled: true
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
if (loading) {
|
|
89
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", padding: 1 }, /* @__PURE__ */ React.createElement(Text, { bold: true, color: theme.primary }, "Manage Installed Plugins"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Loading installed plugins..."));
|
|
90
|
+
}
|
|
91
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", borderStyle: "round", padding: 1 }, /* @__PURE__ */ React.createElement(Text, { bold: true, color: theme.primary }, "Manage Installed Plugins"), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "Select a marketplace to manage plugins:"), /* @__PURE__ */ React.createElement(Text, null, ""), marketplaces.length === 0 ? /* @__PURE__ */ React.createElement(Box, { marginLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { color: theme.warning }, "No plugins installed")) : marketplaces.map((group, index) => {
|
|
92
|
+
const isSelected = index === selectedIndex;
|
|
93
|
+
return /* @__PURE__ */ React.createElement(Box, { key: group.name, marginLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { color: isSelected ? theme.success : void 0 }, isSelected ? "\u276F " : " ", group.name), /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " ", "(", group.enabledCount, "/", group.installedCount, " enabled)"));
|
|
94
|
+
}), /* @__PURE__ */ React.createElement(Text, null, ""), /* @__PURE__ */ React.createElement(Box, { marginLeft: 2 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, "\u2191\u2193 Navigate \xB7 Enter Select \xB7 Esc Back")));
|
|
95
|
+
};
|
|
96
|
+
export {
|
|
97
|
+
InstalledPluginsManager
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=InstalledPluginsManager.js.map
|