@within-7/minto 0.4.1 → 0.4.2
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/Tool.js +7 -0
- package/dist/Tool.js.map +2 -2
- package/dist/commands/agents/AgentsCommand.js +1 -1
- package/dist/commands/agents/AgentsCommand.js.map +2 -2
- package/dist/commands/agents/constants.js +2 -2
- package/dist/commands/agents/constants.js.map +2 -2
- package/dist/commands/clear.js +4 -3
- package/dist/commands/clear.js.map +2 -2
- package/dist/commands/compact.js +2 -2
- package/dist/commands/compact.js.map +1 -1
- package/dist/commands/context.js +3 -1
- package/dist/commands/context.js.map +2 -2
- package/dist/commands/login.js +128 -0
- package/dist/commands/login.js.map +7 -0
- package/dist/commands/memory.js +33 -82
- package/dist/commands/memory.js.map +2 -2
- package/dist/commands/quit.js +3 -1
- package/dist/commands/quit.js.map +2 -2
- package/dist/commands/resume.js +39 -239
- package/dist/commands/resume.js.map +2 -2
- package/dist/commands/tasks.js +1 -1
- package/dist/commands/tasks.js.map +2 -2
- package/dist/commands/terminalSetup.js +6 -2
- package/dist/commands/terminalSetup.js.map +2 -2
- package/dist/commands.js +2 -0
- package/dist/commands.js.map +2 -2
- package/dist/components/AgentDetailView.js +126 -0
- package/dist/components/AgentDetailView.js.map +7 -0
- package/dist/components/AgentThinkingBlock.js +1 -1
- package/dist/components/AgentThinkingBlock.js.map +2 -2
- package/dist/components/AgentViewBanner.js +22 -0
- package/dist/components/AgentViewBanner.js.map +7 -0
- package/dist/components/HeaderBar.js +1 -1
- package/dist/components/HeaderBar.js.map +2 -2
- package/dist/components/Help.js +8 -1
- package/dist/components/Help.js.map +2 -2
- package/dist/components/HotkeyHelpPanel.js +26 -8
- package/dist/components/HotkeyHelpPanel.js.map +2 -2
- package/dist/components/IdleNotificationBar.js +10 -0
- package/dist/components/IdleNotificationBar.js.map +7 -0
- package/dist/components/ModelSelector/ModelSelector.js +55 -20
- package/dist/components/ModelSelector/ModelSelector.js.map +2 -2
- package/dist/components/PromptInput.js +186 -115
- package/dist/components/PromptInput.js.map +2 -2
- package/dist/components/RewindPanel.js +272 -0
- package/dist/components/RewindPanel.js.map +7 -0
- package/dist/components/Spinner.js +10 -21
- package/dist/components/Spinner.js.map +2 -2
- package/dist/components/StreamingTextPreview.js +29 -0
- package/dist/components/StreamingTextPreview.js.map +7 -0
- package/dist/components/SubagentBlock.js +3 -2
- package/dist/components/SubagentBlock.js.map +2 -2
- package/dist/components/SubagentProgress.js +4 -4
- package/dist/components/SubagentProgress.js.map +2 -2
- package/dist/components/TabbedListView/SearchInput.js +1 -1
- package/dist/components/TabbedListView/SearchInput.js.map +2 -2
- package/dist/components/TabbedListView/TabbedListView.js +87 -41
- package/dist/components/TabbedListView/TabbedListView.js.map +2 -2
- package/dist/components/TaskCard.js +4 -4
- package/dist/components/TaskCard.js.map +2 -2
- package/dist/components/TeamMemberPanel.js +107 -0
- package/dist/components/TeamMemberPanel.js.map +7 -0
- package/dist/components/ThinkingSelector.js +84 -0
- package/dist/components/ThinkingSelector.js.map +7 -0
- package/dist/components/TitledDivider.js +26 -0
- package/dist/components/TitledDivider.js.map +7 -0
- package/dist/components/TodoPanel.js +31 -30
- package/dist/components/TodoPanel.js.map +2 -2
- package/dist/components/TokenWarning.js +28 -7
- package/dist/components/TokenWarning.js.map +2 -2
- package/dist/components/messages/AssistantTextMessage.js +5 -2
- package/dist/components/messages/AssistantTextMessage.js.map +2 -2
- package/dist/components/messages/AssistantToolUseMessage.js +9 -1
- package/dist/components/messages/AssistantToolUseMessage.js.map +2 -2
- package/dist/components/messages/DefaultToolResultFallback.js +11 -0
- package/dist/components/messages/DefaultToolResultFallback.js.map +7 -0
- package/dist/components/messages/ParallelTasksGroupView.js +14 -6
- package/dist/components/messages/ParallelTasksGroupView.js.map +2 -2
- package/dist/components/messages/TaskInModuleView.js +27 -27
- package/dist/components/messages/TaskInModuleView.js.map +2 -2
- package/dist/components/messages/UserGuidanceMessage.js +26 -0
- package/dist/components/messages/UserGuidanceMessage.js.map +7 -0
- package/dist/components/messages/UserPromptMessage.js +2 -1
- package/dist/components/messages/UserPromptMessage.js.map +2 -2
- package/dist/components/messages/UserTeamNotificationMessage.js +91 -0
- package/dist/components/messages/UserTeamNotificationMessage.js.map +7 -0
- package/dist/components/messages/UserTextMessage.js +8 -0
- package/dist/components/messages/UserTextMessage.js.map +2 -2
- package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js +4 -2
- package/dist/components/messages/UserToolResultMessage/UserToolRejectMessage.js.map +2 -2
- package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js +18 -1
- package/dist/components/messages/UserToolResultMessage/UserToolResultMessage.js.map +2 -2
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +12 -1
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +2 -2
- package/dist/components/permissions/PermissionRequest.js +4 -0
- package/dist/components/permissions/PermissionRequest.js.map +2 -2
- package/dist/components/permissions/PlanApprovalRequest.js +164 -0
- package/dist/components/permissions/PlanApprovalRequest.js.map +7 -0
- package/dist/constants/agentTeams.js +17 -0
- package/dist/constants/agentTeams.js.map +7 -0
- package/dist/constants/macros.js +2 -1
- package/dist/constants/macros.js.map +2 -2
- package/dist/constants/prompts/agentPrompt.js +1 -0
- package/dist/constants/prompts/agentPrompt.js.map +2 -2
- package/dist/constants/prompts/autoMemory.js +39 -0
- package/dist/constants/prompts/autoMemory.js.map +7 -0
- package/dist/constants/prompts/codeConventions.js +1 -13
- package/dist/constants/prompts/codeConventions.js.map +2 -2
- package/dist/constants/prompts/doingTasks.js +21 -2
- package/dist/constants/prompts/doingTasks.js.map +2 -2
- package/dist/constants/prompts/envInfo.js +6 -7
- package/dist/constants/prompts/envInfo.js.map +2 -2
- package/dist/constants/prompts/index.js +27 -5
- package/dist/constants/prompts/index.js.map +2 -2
- package/dist/constants/prompts/taskManagement.js +2 -43
- package/dist/constants/prompts/taskManagement.js.map +2 -2
- package/dist/constants/prompts/teamOverlays.js +50 -0
- package/dist/constants/prompts/teamOverlays.js.map +7 -0
- package/dist/constants/prompts/toneAndStyle.js +4 -29
- package/dist/constants/prompts/toneAndStyle.js.map +2 -2
- package/dist/constants/prompts/toolUsagePolicy.js +7 -22
- package/dist/constants/prompts/toolUsagePolicy.js.map +2 -2
- package/dist/constants/toolInputExamples.js +2 -2
- package/dist/constants/toolInputExamples.js.map +2 -2
- package/dist/context.js +39 -6
- package/dist/context.js.map +2 -2
- package/dist/core/backupManager.js +1 -1
- package/dist/core/backupManager.js.map +2 -2
- package/dist/core/permissions/rules/planModeRule.js +1 -1
- package/dist/core/permissions/rules/planModeRule.js.map +1 -1
- package/dist/core/permissions/rules/safeModeRule.js +1 -1
- package/dist/core/permissions/rules/safeModeRule.js.map +1 -1
- package/dist/engine/AgentEngine.js +902 -0
- package/dist/engine/AgentEngine.js.map +7 -0
- package/dist/engine/EngineRegistry.js +89 -0
- package/dist/engine/EngineRegistry.js.map +7 -0
- package/dist/engine/foregroundAdapter.js +191 -0
- package/dist/engine/foregroundAdapter.js.map +7 -0
- package/dist/engine/index.js +15 -0
- package/dist/engine/index.js.map +7 -0
- package/dist/engine/types.js +1 -0
- package/dist/engine/types.js.map +7 -0
- package/dist/entrypoints/cli.js +410 -79
- package/dist/entrypoints/cli.js.map +3 -3
- package/dist/hooks/useAgentEngine.js +129 -0
- package/dist/hooks/useAgentEngine.js.map +7 -0
- package/dist/hooks/useAgentTokenStats.js +0 -16
- package/dist/hooks/useAgentTokenStats.js.map +2 -2
- package/dist/hooks/useCanUseTool.js +47 -2
- package/dist/hooks/useCanUseTool.js.map +2 -2
- package/dist/hooks/useDeferredLoading.js +4 -1
- package/dist/hooks/useDeferredLoading.js.map +2 -2
- package/dist/hooks/useIdleNotifications.js +66 -0
- package/dist/hooks/useIdleNotifications.js.map +7 -0
- package/dist/hooks/useSessionTracking.js +9 -7
- package/dist/hooks/useSessionTracking.js.map +2 -2
- package/dist/hooks/useTeamMembers.js +51 -0
- package/dist/hooks/useTeamMembers.js.map +7 -0
- package/dist/i18n/locales/en.js +77 -12
- package/dist/i18n/locales/en.js.map +2 -2
- package/dist/i18n/locales/zh-CN.js +77 -12
- package/dist/i18n/locales/zh-CN.js.map +2 -2
- package/dist/i18n/types.js.map +1 -1
- package/dist/messages.js.map +2 -2
- package/dist/permissions.js +113 -7
- package/dist/permissions.js.map +2 -2
- package/dist/query.js +135 -37
- package/dist/query.js.map +2 -2
- package/dist/screens/REPL.js +504 -361
- package/dist/screens/REPL.js.map +3 -3
- package/dist/screens/ResumeConversation.js +199 -14
- package/dist/screens/ResumeConversation.js.map +2 -2
- package/dist/services/adapters/base.js.map +1 -1
- package/dist/services/agentTeams/backends/headless.js +108 -0
- package/dist/services/agentTeams/backends/headless.js.map +7 -0
- package/dist/services/agentTeams/backends/inProcess.js +102 -0
- package/dist/services/agentTeams/backends/inProcess.js.map +7 -0
- package/dist/services/agentTeams/backends/resolver.js +18 -0
- package/dist/services/agentTeams/backends/resolver.js.map +7 -0
- package/dist/services/agentTeams/backends/tmux.js +168 -0
- package/dist/services/agentTeams/backends/tmux.js.map +7 -0
- package/dist/services/agentTeams/backends/types.js +1 -0
- package/dist/services/agentTeams/backends/types.js.map +7 -0
- package/dist/services/agentTeams/heartbeat.js +88 -0
- package/dist/services/agentTeams/heartbeat.js.map +7 -0
- package/dist/services/agentTeams/index.js +42 -2
- package/dist/services/agentTeams/index.js.map +2 -2
- package/dist/services/agentTeams/injectionChannel.js +105 -0
- package/dist/services/agentTeams/injectionChannel.js.map +7 -0
- package/dist/services/agentTeams/mailbox.js +410 -30
- package/dist/services/agentTeams/mailbox.js.map +2 -2
- package/dist/services/agentTeams/messageFormatter.js +80 -0
- package/dist/services/agentTeams/messageFormatter.js.map +7 -0
- package/dist/services/agentTeams/permissionDelegation.js +71 -0
- package/dist/services/agentTeams/permissionDelegation.js.map +7 -0
- package/dist/services/agentTeams/teamEvents.js +45 -0
- package/dist/services/agentTeams/teamEvents.js.map +7 -0
- package/dist/services/agentTeams/teamManager.js +251 -34
- package/dist/services/agentTeams/teamManager.js.map +2 -2
- package/dist/services/agentTeams/teamTaskStore.js +290 -61
- package/dist/services/agentTeams/teamTaskStore.js.map +2 -2
- package/dist/services/agentTeams/teammateSpawner.js +99 -18
- package/dist/services/agentTeams/teammateSpawner.js.map +2 -2
- package/dist/services/hookExecutor.js +51 -8
- package/dist/services/hookExecutor.js.map +2 -2
- package/dist/services/llm/anthropicProvider.js +56 -59
- package/dist/services/llm/anthropicProvider.js.map +2 -2
- package/dist/services/llm/dispatch.js +24 -5
- package/dist/services/llm/dispatch.js.map +2 -2
- package/dist/services/llm/openaiProvider.js +115 -136
- package/dist/services/llm/openaiProvider.js.map +3 -3
- package/dist/services/llm/types.js +89 -15
- package/dist/services/llm/types.js.map +2 -2
- package/dist/services/mcpClient.js +80 -4
- package/dist/services/mcpClient.js.map +2 -2
- package/dist/services/mintoAuth.js +299 -0
- package/dist/services/mintoAuth.js.map +7 -0
- package/dist/services/oauth.js +3 -3
- package/dist/services/oauth.js.map +2 -2
- package/dist/services/openai.js +91 -20
- package/dist/services/openai.js.map +2 -2
- package/dist/services/plugins/pluginRuntime.js +11 -5
- package/dist/services/plugins/pluginRuntime.js.map +2 -2
- package/dist/services/plugins/pluginValidation.js +4 -2
- package/dist/services/plugins/pluginValidation.js.map +2 -2
- package/dist/services/sandbox/sandboxController.js +11 -3
- package/dist/services/sandbox/sandboxController.js.map +2 -2
- package/dist/services/sessionMemoryInjector.js +77 -0
- package/dist/services/sessionMemoryInjector.js.map +7 -0
- package/dist/services/systemReminder.js +130 -8
- package/dist/services/systemReminder.js.map +2 -2
- package/dist/services/taskStore.js +199 -8
- package/dist/services/taskStore.js.map +3 -3
- package/dist/services/topicDetector.js +169 -0
- package/dist/services/topicDetector.js.map +7 -0
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +0 -13
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +2 -2
- package/dist/tools/BashTool/BashTool.js +51 -28
- package/dist/tools/BashTool/BashTool.js.map +2 -2
- package/dist/tools/BashTool/prompt.js +95 -118
- package/dist/tools/BashTool/prompt.js.map +2 -2
- package/dist/tools/BashTool/utils.js +39 -1
- package/dist/tools/BashTool/utils.js.map +2 -2
- package/dist/tools/EnterWorktreeTool/EnterWorktreeTool.js +121 -0
- package/dist/tools/EnterWorktreeTool/EnterWorktreeTool.js.map +7 -0
- package/dist/tools/EnterWorktreeTool/prompt.js +22 -0
- package/dist/tools/EnterWorktreeTool/prompt.js.map +7 -0
- package/dist/tools/FileEditTool/FileEditTool.js +9 -4
- package/dist/tools/FileEditTool/FileEditTool.js.map +2 -2
- package/dist/tools/FileEditTool/prompt.js +3 -7
- package/dist/tools/FileEditTool/prompt.js.map +2 -2
- package/dist/tools/FileReadTool/FileReadTool.js +125 -3
- package/dist/tools/FileReadTool/FileReadTool.js.map +2 -2
- package/dist/tools/FileReadTool/prompt.js +1 -2
- package/dist/tools/FileReadTool/prompt.js.map +2 -2
- package/dist/tools/FileWriteTool/prompt.js +3 -5
- package/dist/tools/FileWriteTool/prompt.js.map +2 -2
- package/dist/tools/GlobTool/GlobTool.js +3 -2
- package/dist/tools/GlobTool/GlobTool.js.map +2 -2
- package/dist/tools/GrepTool/GrepTool.js +16 -5
- package/dist/tools/GrepTool/GrepTool.js.map +2 -2
- package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js.map +2 -2
- package/dist/tools/MCPSearchTool/MCPSearchTool.js +172 -0
- package/dist/tools/MCPSearchTool/MCPSearchTool.js.map +7 -0
- package/dist/tools/MCPSearchTool/prompt.js +77 -0
- package/dist/tools/MCPSearchTool/prompt.js.map +7 -0
- package/dist/tools/MultiEditTool/prompt.js +4 -7
- package/dist/tools/MultiEditTool/prompt.js.map +2 -2
- package/dist/tools/PlanModeTool/EnterPlanModeTool.js +12 -8
- package/dist/tools/PlanModeTool/EnterPlanModeTool.js.map +2 -2
- package/dist/tools/PlanModeTool/ExitPlanModeTool.js +54 -1
- package/dist/tools/PlanModeTool/ExitPlanModeTool.js.map +2 -2
- package/dist/tools/PlanModeTool/prompt.js +23 -74
- package/dist/tools/PlanModeTool/prompt.js.map +2 -2
- package/dist/tools/SendMessageTool/SendMessageTool.js +341 -0
- package/dist/tools/SendMessageTool/SendMessageTool.js.map +7 -0
- package/dist/tools/SendMessageTool/prompt.js +44 -0
- package/dist/tools/SendMessageTool/prompt.js.map +7 -0
- package/dist/tools/TaskCreateTool/prompt.js +15 -4
- package/dist/tools/TaskCreateTool/prompt.js.map +2 -2
- package/dist/tools/TaskListTool/prompt.js +18 -3
- package/dist/tools/TaskListTool/prompt.js.map +2 -2
- package/dist/tools/TaskOutputTool/prompt.js +4 -3
- package/dist/tools/TaskOutputTool/prompt.js.map +2 -2
- package/dist/tools/TaskTool/TaskTool.js +762 -98
- package/dist/tools/TaskTool/TaskTool.js.map +3 -3
- package/dist/tools/TaskTool/constants.js +8 -2
- package/dist/tools/TaskTool/constants.js.map +2 -2
- package/dist/tools/TaskTool/prompt.js +74 -70
- package/dist/tools/TaskTool/prompt.js.map +2 -2
- package/dist/tools/TaskUpdateTool/TaskUpdateTool.js +15 -1
- package/dist/tools/TaskUpdateTool/TaskUpdateTool.js.map +2 -2
- package/dist/tools/TeamCreateTool/TeamCreateTool.js +129 -0
- package/dist/tools/TeamCreateTool/TeamCreateTool.js.map +7 -0
- package/dist/tools/TeamCreateTool/prompt.js +58 -0
- package/dist/tools/TeamCreateTool/prompt.js.map +7 -0
- package/dist/tools/TeamDeleteTool/TeamDeleteTool.js +151 -0
- package/dist/tools/TeamDeleteTool/TeamDeleteTool.js.map +7 -0
- package/dist/tools/TeamDeleteTool/prompt.js +16 -0
- package/dist/tools/TeamDeleteTool/prompt.js.map +7 -0
- package/dist/tools/URLFetcherTool/URLFetcherTool.js +106 -15
- package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +2 -2
- package/dist/tools/URLFetcherTool/prompt.js +3 -2
- package/dist/tools/URLFetcherTool/prompt.js.map +2 -2
- package/dist/tools/WebSearchTool/WebSearchTool.js +2 -1
- package/dist/tools/WebSearchTool/WebSearchTool.js.map +2 -2
- package/dist/tools/WebSearchTool/prompt.js +5 -4
- package/dist/tools/WebSearchTool/prompt.js.map +2 -2
- package/dist/tools.js +100 -20
- package/dist/tools.js.map +2 -2
- package/dist/types/PermissionMode.js +35 -6
- package/dist/types/PermissionMode.js.map +2 -2
- package/dist/types/hooks.js +2 -0
- package/dist/types/hooks.js.map +2 -2
- package/dist/types/plugin.js +2 -0
- package/dist/types/plugin.js.map +3 -3
- package/dist/utils/CircuitBreaker.js +15 -9
- package/dist/utils/CircuitBreaker.js.map +2 -2
- package/dist/utils/agentLoader.js +249 -112
- package/dist/utils/agentLoader.js.map +2 -2
- package/dist/utils/animationManager.js +40 -3
- package/dist/utils/animationManager.js.map +2 -2
- package/dist/utils/ask.js +7 -6
- package/dist/utils/ask.js.map +2 -2
- package/dist/utils/atomicWrite.js +23 -0
- package/dist/utils/atomicWrite.js.map +7 -0
- package/dist/utils/autoCompactCore.js +73 -56
- package/dist/utils/autoCompactCore.js.map +2 -2
- package/dist/utils/autoMemoryPaths.js +89 -0
- package/dist/utils/autoMemoryPaths.js.map +7 -0
- package/dist/utils/config.js +63 -38
- package/dist/utils/config.js.map +2 -2
- package/dist/utils/configSchema.js +13 -8
- package/dist/utils/configSchema.js.map +2 -2
- package/dist/utils/credentials/index.js +14 -0
- package/dist/utils/credentials/index.js.map +2 -2
- package/dist/utils/dualPath.js +24 -0
- package/dist/utils/dualPath.js.map +7 -0
- package/dist/utils/exit.js +66 -7
- package/dist/utils/exit.js.map +2 -2
- package/dist/utils/externalEditor.js +155 -0
- package/dist/utils/externalEditor.js.map +7 -0
- package/dist/utils/fileLock.js +67 -0
- package/dist/utils/fileLock.js.map +7 -0
- package/dist/utils/format.js +24 -14
- package/dist/utils/format.js.map +2 -2
- package/dist/utils/globalErrorHandler.js +5 -96
- package/dist/utils/globalErrorHandler.js.map +3 -3
- package/dist/utils/groupHandlers/parallelTasksHandler.js +5 -3
- package/dist/utils/groupHandlers/parallelTasksHandler.js.map +2 -2
- package/dist/utils/groupHandlers/taskHandler.js +2 -2
- package/dist/utils/groupHandlers/taskHandler.js.map +2 -2
- package/dist/utils/hookManager.js +64 -6
- package/dist/utils/hookManager.js.map +2 -2
- package/dist/utils/log.js +6 -2
- package/dist/utils/log.js.map +2 -2
- package/dist/utils/markdown.js +237 -19
- package/dist/utils/markdown.js.map +2 -2
- package/dist/utils/messageContextManager.js +18 -5
- package/dist/utils/messageContextManager.js.map +2 -2
- package/dist/utils/messageGroupManager.js +1 -1
- package/dist/utils/messageGroupManager.js.map +2 -2
- package/dist/utils/messages.js +104 -46
- package/dist/utils/messages.js.map +2 -2
- package/dist/utils/model.js +2 -2
- package/dist/utils/model.js.map +2 -2
- package/dist/utils/pasteCache.js +8 -4
- package/dist/utils/pasteCache.js.map +2 -2
- package/dist/utils/pluginLoader.js +18 -0
- package/dist/utils/pluginLoader.js.map +2 -2
- package/dist/utils/secureKeyStorage.js +36 -7
- package/dist/utils/secureKeyStorage.js.map +2 -2
- package/dist/utils/simpleMode.js +7 -0
- package/dist/utils/simpleMode.js.map +7 -0
- package/dist/utils/streamingState.js +11 -1
- package/dist/utils/streamingState.js.map +2 -2
- package/dist/utils/taskDisplayUtils.js +2 -1
- package/dist/utils/taskDisplayUtils.js.map +2 -2
- package/dist/utils/teamConfig.js +2 -2
- package/dist/utils/teamConfig.js.map +2 -2
- package/dist/utils/thinking.js +6 -2
- package/dist/utils/thinking.js.map +3 -3
- package/dist/utils/tokenProgress.js +55 -0
- package/dist/utils/tokenProgress.js.map +7 -0
- package/dist/utils/toolRiskClassification.js +26 -17
- package/dist/utils/toolRiskClassification.js.map +2 -2
- package/dist/utils/tooling/toolError.js +12 -0
- package/dist/utils/tooling/toolError.js.map +7 -0
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- package/package.json +10 -8
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import React, { useState, useEffect } from "react";
|
|
1
|
+
import React, { useState, useEffect, useRef } from "react";
|
|
2
2
|
import { Text, useInput } from "ink";
|
|
3
3
|
import { getModelManager } from "../../utils/model.js";
|
|
4
4
|
import { useExitOnCtrlCD } from "../../hooks/useExitOnCtrlCD.js";
|
|
5
5
|
import {
|
|
6
6
|
getGlobalConfig,
|
|
7
7
|
setAllPointersToModel,
|
|
8
|
-
setModelPointer
|
|
8
|
+
setModelPointer,
|
|
9
|
+
resolveApiKey
|
|
9
10
|
} from "../../utils/config.js";
|
|
10
11
|
import models, { providers } from "../../constants/models.js";
|
|
11
12
|
import OpenAI from "openai";
|
|
@@ -43,9 +44,17 @@ function ModelSelector({
|
|
|
43
44
|
const isEditMode = !!editingModel;
|
|
44
45
|
const [screenStack, setScreenStack] = useState([isEditMode ? "testAndSave" : "provider"]);
|
|
45
46
|
const currentScreen = screenStack[screenStack.length - 1];
|
|
47
|
+
const currentScreenRef = useRef(currentScreen);
|
|
48
|
+
currentScreenRef.current = currentScreen;
|
|
49
|
+
const pendingTimerRef = useRef(null);
|
|
46
50
|
const navigateTo = (screen) => {
|
|
47
51
|
setScreenStack((prev) => [...prev, screen]);
|
|
48
52
|
};
|
|
53
|
+
const navigateToIfStillOn = (expectedScreen, targetScreen) => {
|
|
54
|
+
if (currentScreenRef.current === expectedScreen) {
|
|
55
|
+
navigateTo(targetScreen);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
49
58
|
const goBack = () => {
|
|
50
59
|
if (screenStack.length > 1) {
|
|
51
60
|
setScreenStack((prev) => prev.slice(0, -1));
|
|
@@ -84,6 +93,15 @@ function ModelSelector({
|
|
|
84
93
|
const [modelSearchCursorOffset, setModelSearchCursorOffset] = useState(0);
|
|
85
94
|
const [cursorOffset, setCursorOffset] = useState(0);
|
|
86
95
|
const [apiKeyEdited, setApiKeyEdited] = useState(isEditMode);
|
|
96
|
+
const [originalEncryptedRef, setOriginalEncryptedRef] = useState(editingModel?.apiKey?.startsWith("encrypted:") ? editingModel.apiKey : null);
|
|
97
|
+
const [apiKeyUserModified, setApiKeyUserModified] = useState(false);
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
if (editingModel?.apiKey?.startsWith("encrypted:")) {
|
|
100
|
+
resolveApiKey(editingModel).then((resolved) => {
|
|
101
|
+
if (resolved) setApiKey(resolved);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}, []);
|
|
87
105
|
const [fetchRetryCount, setFetchRetryCount] = useState(0);
|
|
88
106
|
const [isRetrying, setIsRetrying] = useState(false);
|
|
89
107
|
const [isTestingConnection, setIsTestingConnection] = useState(false);
|
|
@@ -98,7 +116,9 @@ function ModelSelector({
|
|
|
98
116
|
"http://localhost:11434/v1"
|
|
99
117
|
);
|
|
100
118
|
const [ollamaBaseUrlCursorOffset, setOllamaBaseUrlCursorOffset] = useState(0);
|
|
101
|
-
const [customBaseUrl, setCustomBaseUrl] = useState(
|
|
119
|
+
const [customBaseUrl, setCustomBaseUrl] = useState(
|
|
120
|
+
editingModel?.provider === "custom-openai" ? editingModel?.baseURL ?? "" : ""
|
|
121
|
+
);
|
|
102
122
|
const [customBaseUrlCursorOffset, setCustomBaseUrlCursorOffset] = useState(0);
|
|
103
123
|
const [providerBaseUrl, setProviderBaseUrl] = useState(
|
|
104
124
|
editingModel?.baseURL ?? ""
|
|
@@ -742,7 +762,7 @@ function ModelSelector({
|
|
|
742
762
|
);
|
|
743
763
|
setAvailableModels(enrichedModels);
|
|
744
764
|
if (enrichedModels.length > 0) {
|
|
745
|
-
|
|
765
|
+
navigateToIfStillOn("baseUrl", "model");
|
|
746
766
|
} else {
|
|
747
767
|
setModelLoadError("No models found in your Ollama installation");
|
|
748
768
|
}
|
|
@@ -803,9 +823,10 @@ function ModelSelector({
|
|
|
803
823
|
|
|
804
824
|
\u26A1 Automatically switching to manual model configuration...`
|
|
805
825
|
);
|
|
806
|
-
setTimeout(() => {
|
|
826
|
+
pendingTimerRef.current = setTimeout(() => {
|
|
827
|
+
pendingTimerRef.current = null;
|
|
807
828
|
setModelLoadError(null);
|
|
808
|
-
|
|
829
|
+
navigateToIfStillOn("apiKey", "modelInput");
|
|
809
830
|
}, 2e3);
|
|
810
831
|
} else {
|
|
811
832
|
setModelLoadError(
|
|
@@ -815,65 +836,66 @@ function ModelSelector({
|
|
|
815
836
|
return [];
|
|
816
837
|
}
|
|
817
838
|
async function fetchModels() {
|
|
839
|
+
const originScreen = currentScreenRef.current;
|
|
818
840
|
setIsLoadingModels(true);
|
|
819
841
|
setModelLoadError(null);
|
|
820
842
|
try {
|
|
821
843
|
if (selectedProvider === "anthropic") {
|
|
822
844
|
const anthropicModels = await fetchAnthropicCompatibleProviderModels();
|
|
823
845
|
setAvailableModels(anthropicModels);
|
|
824
|
-
|
|
846
|
+
navigateToIfStillOn(originScreen, "model");
|
|
825
847
|
return anthropicModels;
|
|
826
848
|
}
|
|
827
849
|
if (selectedProvider === "custom-openai") {
|
|
828
850
|
const customModels = await fetchCustomOpenAIModels();
|
|
829
851
|
setAvailableModels(customModels);
|
|
830
|
-
|
|
852
|
+
navigateToIfStillOn(originScreen, "model");
|
|
831
853
|
return customModels;
|
|
832
854
|
}
|
|
833
855
|
if (selectedProvider === "gemini") {
|
|
834
856
|
const geminiModels = await fetchGeminiModels();
|
|
835
857
|
setAvailableModels(geminiModels);
|
|
836
|
-
|
|
858
|
+
navigateToIfStillOn(originScreen, "model");
|
|
837
859
|
return geminiModels;
|
|
838
860
|
}
|
|
839
861
|
if (selectedProvider === "kimi") {
|
|
840
862
|
const kimiModels = await fetchKimiModels();
|
|
841
863
|
setAvailableModels(kimiModels);
|
|
842
|
-
|
|
864
|
+
navigateToIfStillOn(originScreen, "model");
|
|
843
865
|
return kimiModels;
|
|
844
866
|
}
|
|
845
867
|
if (selectedProvider === "deepseek") {
|
|
846
868
|
const deepseekModels = await fetchDeepSeekModels();
|
|
847
869
|
setAvailableModels(deepseekModels);
|
|
848
|
-
|
|
870
|
+
navigateToIfStillOn(originScreen, "model");
|
|
849
871
|
return deepseekModels;
|
|
850
872
|
}
|
|
851
873
|
if (selectedProvider === "siliconflow") {
|
|
852
874
|
const siliconflowModels = await fetchSiliconFlowModels();
|
|
853
875
|
setAvailableModels(siliconflowModels);
|
|
854
|
-
|
|
876
|
+
navigateToIfStillOn(originScreen, "model");
|
|
855
877
|
return siliconflowModels;
|
|
856
878
|
}
|
|
857
879
|
if (selectedProvider === "qwen") {
|
|
858
880
|
const qwenModels = await fetchQwenModels();
|
|
859
881
|
setAvailableModels(qwenModels);
|
|
860
|
-
|
|
882
|
+
navigateToIfStillOn(originScreen, "model");
|
|
861
883
|
return qwenModels;
|
|
862
884
|
}
|
|
863
885
|
if (selectedProvider === "glm") {
|
|
864
886
|
const glmModels = await fetchGLMModels();
|
|
865
887
|
setAvailableModels(glmModels);
|
|
866
|
-
|
|
888
|
+
navigateToIfStillOn(originScreen, "model");
|
|
867
889
|
return glmModels;
|
|
868
890
|
}
|
|
869
891
|
if (selectedProvider === "baidu-qianfan") {
|
|
870
892
|
const baiduModels = await fetchBaiduQianfanModels();
|
|
871
893
|
setAvailableModels(baiduModels);
|
|
872
|
-
|
|
894
|
+
navigateToIfStillOn(originScreen, "model");
|
|
873
895
|
return baiduModels;
|
|
874
896
|
}
|
|
875
897
|
if (selectedProvider === "azure") {
|
|
876
|
-
|
|
898
|
+
navigateToIfStillOn(originScreen, "modelInput");
|
|
877
899
|
return [];
|
|
878
900
|
}
|
|
879
901
|
let baseURL = providerBaseUrl || providers[selectedProvider]?.baseURL;
|
|
@@ -903,7 +925,7 @@ function ModelSelector({
|
|
|
903
925
|
});
|
|
904
926
|
}
|
|
905
927
|
setAvailableModels(fetchedModels);
|
|
906
|
-
|
|
928
|
+
navigateToIfStillOn(originScreen, "model");
|
|
907
929
|
return fetchedModels;
|
|
908
930
|
} catch (error) {
|
|
909
931
|
throw error;
|
|
@@ -1409,9 +1431,10 @@ function ModelSelector({
|
|
|
1409
1431
|
if (isEditMode && editingModel) {
|
|
1410
1432
|
try {
|
|
1411
1433
|
const modelManager = getModelManager();
|
|
1434
|
+
const saveApiKey = !apiKeyUserModified && originalEncryptedRef ? originalEncryptedRef : apiKey || editingModel.apiKey;
|
|
1412
1435
|
modelManager.updateModel(editingModel.modelName, {
|
|
1413
1436
|
baseURL: providerBaseUrl || editingModel.baseURL,
|
|
1414
|
-
apiKey:
|
|
1437
|
+
apiKey: saveApiKey,
|
|
1415
1438
|
maxTokens: parseInt(maxTokens) || editingModel.maxTokens,
|
|
1416
1439
|
contextLength: contextLength || editingModel.contextLength,
|
|
1417
1440
|
reasoningEffort
|
|
@@ -1438,7 +1461,11 @@ function ModelSelector({
|
|
|
1438
1461
|
onDone();
|
|
1439
1462
|
}
|
|
1440
1463
|
const handleBack = () => {
|
|
1441
|
-
if (
|
|
1464
|
+
if (pendingTimerRef.current) {
|
|
1465
|
+
clearTimeout(pendingTimerRef.current);
|
|
1466
|
+
pendingTimerRef.current = null;
|
|
1467
|
+
}
|
|
1468
|
+
if (screenStack.length <= 1) {
|
|
1442
1469
|
if (onCancel) {
|
|
1443
1470
|
onCancel();
|
|
1444
1471
|
} else {
|
|
@@ -1464,6 +1491,7 @@ function ModelSelector({
|
|
|
1464
1491
|
}
|
|
1465
1492
|
function handleApiKeyChange(value) {
|
|
1466
1493
|
setApiKeyEdited(true);
|
|
1494
|
+
setApiKeyUserModified(true);
|
|
1467
1495
|
setApiKey(value);
|
|
1468
1496
|
}
|
|
1469
1497
|
function handleModelSearchChange(value) {
|
|
@@ -1516,6 +1544,14 @@ function ModelSelector({
|
|
|
1516
1544
|
return;
|
|
1517
1545
|
}
|
|
1518
1546
|
});
|
|
1547
|
+
useEffect(() => {
|
|
1548
|
+
if (currentScreen !== "modelParams") return;
|
|
1549
|
+
const formFields = getFormFieldsForModelParams();
|
|
1550
|
+
const currentField = formFields[activeFieldIndex];
|
|
1551
|
+
if (!currentField || currentField.name === "submit") {
|
|
1552
|
+
handleModelParamsSubmit();
|
|
1553
|
+
}
|
|
1554
|
+
}, [currentScreen, activeFieldIndex]);
|
|
1519
1555
|
function getFormFieldsForModelParams() {
|
|
1520
1556
|
return [
|
|
1521
1557
|
{
|
|
@@ -1654,7 +1690,6 @@ function ModelSelector({
|
|
|
1654
1690
|
}
|
|
1655
1691
|
);
|
|
1656
1692
|
}
|
|
1657
|
-
handleModelParamsSubmit();
|
|
1658
1693
|
return null;
|
|
1659
1694
|
}
|
|
1660
1695
|
if (currentScreen === "resourceName") {
|