@within-7/minto 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.js +155 -37
- package/dist/Tool.js +38 -0
- package/dist/Tool.js.map +3 -3
- package/dist/commands/agents/AgentsCommand.js +52 -26
- package/dist/commands/agents/AgentsCommand.js.map +2 -2
- package/dist/commands/agents/constants.js +1 -1
- package/dist/commands/agents/constants.js.map +1 -1
- package/dist/commands/agents/index.js +1 -1
- package/dist/commands/bug.js +74 -7
- package/dist/commands/bug.js.map +3 -3
- package/dist/commands/clear.js +3 -0
- package/dist/commands/clear.js.map +2 -2
- package/dist/commands/compact.js +37 -0
- package/dist/commands/compact.js.map +2 -2
- package/dist/commands/context.js +84 -0
- package/dist/commands/context.js.map +7 -0
- package/dist/commands/ctx_viz.js +18 -10
- package/dist/commands/ctx_viz.js.map +2 -2
- package/dist/commands/doctor.js +158 -12
- package/dist/commands/doctor.js.map +2 -2
- package/dist/commands/export.js +156 -0
- package/dist/commands/export.js.map +7 -0
- package/dist/commands/mcp-interactive.js +21 -12
- package/dist/commands/mcp-interactive.js.map +2 -2
- package/dist/commands/model.js +6 -5
- package/dist/commands/model.js.map +2 -2
- package/dist/commands/permissions.js +86 -0
- package/dist/commands/permissions.js.map +7 -0
- package/dist/commands/quit.js +3 -1
- package/dist/commands/quit.js.map +2 -2
- package/dist/commands/sandbox.js +104 -0
- package/dist/commands/sandbox.js.map +7 -0
- package/dist/commands/status.js +58 -0
- package/dist/commands/status.js.map +7 -0
- package/dist/commands/tasks.js +108 -0
- package/dist/commands/tasks.js.map +7 -0
- package/dist/commands/todos.js +123 -0
- package/dist/commands/todos.js.map +7 -0
- package/dist/commands.js +20 -2
- package/dist/commands.js.map +2 -2
- package/dist/components/AgentThinkingBlock.js +10 -18
- package/dist/components/AgentThinkingBlock.js.map +2 -2
- package/dist/components/BackgroundTasksPanel.js +78 -29
- package/dist/components/BackgroundTasksPanel.js.map +2 -2
- package/dist/components/BashStreamingProgress.js +24 -0
- package/dist/components/BashStreamingProgress.js.map +7 -0
- package/dist/components/CollapsibleHint.js +14 -0
- package/dist/components/CollapsibleHint.js.map +7 -0
- package/dist/components/FileEditToolUpdatedMessage.js +1 -1
- package/dist/components/FileEditToolUpdatedMessage.js.map +2 -2
- package/dist/components/HotkeyHelpPanel.js +137 -0
- package/dist/components/HotkeyHelpPanel.js.map +7 -0
- package/dist/components/Logo.js +5 -5
- package/dist/components/Logo.js.map +2 -2
- package/dist/components/Message.js +23 -7
- package/dist/components/Message.js.map +3 -3
- package/dist/components/ModelConfig.js +16 -3
- package/dist/components/ModelConfig.js.map +2 -2
- package/dist/components/ModelListManager.js +3 -3
- package/dist/components/ModelListManager.js.map +2 -2
- package/dist/components/ModelSelector/ModelSelector.js +1 -1
- package/dist/components/Onboarding.js +19 -14
- package/dist/components/Onboarding.js.map +2 -2
- package/dist/components/ProgressBar.js +74 -0
- package/dist/components/ProgressBar.js.map +7 -0
- package/dist/components/PromptInput.js +156 -46
- package/dist/components/PromptInput.js.map +2 -2
- package/dist/components/RequestStatusIndicator.js +194 -0
- package/dist/components/RequestStatusIndicator.js.map +7 -0
- package/dist/components/Spinner.js +92 -27
- package/dist/components/Spinner.js.map +2 -2
- package/dist/components/SpinnerSymbol.js +21 -27
- package/dist/components/SpinnerSymbol.js.map +2 -2
- package/dist/components/StreamingBashOutput.js +9 -8
- package/dist/components/StreamingBashOutput.js.map +2 -2
- package/dist/components/SubagentBlock.js +1 -1
- package/dist/components/SubagentBlock.js.map +1 -1
- package/dist/components/SubagentProgress.js +10 -11
- package/dist/components/SubagentProgress.js.map +2 -2
- package/dist/components/TaskCard.js +16 -13
- package/dist/components/TaskCard.js.map +2 -2
- package/dist/components/TodoChangeBlock.js +1 -1
- package/dist/components/TodoChangeBlock.js.map +2 -2
- package/dist/components/TodoPanel.js +120 -29
- package/dist/components/TodoPanel.js.map +3 -3
- package/dist/components/TokenCounter.js +74 -0
- package/dist/components/TokenCounter.js.map +7 -0
- package/dist/components/TokenWarning.js +2 -1
- package/dist/components/TokenWarning.js.map +2 -2
- package/dist/components/TreeConnector.js +25 -0
- package/dist/components/TreeConnector.js.map +7 -0
- package/dist/components/TurnCompletionIndicator.js +18 -0
- package/dist/components/TurnCompletionIndicator.js.map +7 -0
- package/dist/components/messages/AssistantTextMessage.js +5 -2
- package/dist/components/messages/AssistantTextMessage.js.map +2 -2
- package/dist/components/messages/AssistantThinkingMessage.js +18 -3
- package/dist/components/messages/AssistantThinkingMessage.js.map +2 -2
- package/dist/components/messages/AssistantToolUseMessage.js +11 -8
- package/dist/components/messages/AssistantToolUseMessage.js.map +2 -2
- package/dist/components/messages/GroupRenderer.js +53 -0
- package/dist/components/messages/GroupRenderer.js.map +7 -0
- package/dist/components/messages/NestedTasksPreview.js +12 -0
- package/dist/components/messages/NestedTasksPreview.js.map +7 -0
- package/dist/components/messages/ParallelTasksGroupView.js +92 -0
- package/dist/components/messages/ParallelTasksGroupView.js.map +7 -0
- package/dist/components/messages/TaskInModuleView.js +198 -0
- package/dist/components/messages/TaskInModuleView.js.map +7 -0
- package/dist/components/messages/TaskOutputContent.js +53 -0
- package/dist/components/messages/TaskOutputContent.js.map +7 -0
- package/dist/components/messages/UserPromptMessage.js +1 -1
- package/dist/components/messages/UserPromptMessage.js.map +2 -2
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +2 -3
- package/dist/components/messages/UserToolResultMessage/UserToolSuccessMessage.js.map +2 -2
- package/dist/components/permissions/FallbackPermissionRequest.js +4 -4
- package/dist/components/permissions/FallbackPermissionRequest.js.map +2 -2
- package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +4 -4
- package/dist/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js.map +2 -2
- package/dist/constants/colors.js +48 -0
- package/dist/constants/colors.js.map +2 -2
- package/dist/constants/formatRules.js +102 -0
- package/dist/constants/formatRules.js.map +7 -0
- package/dist/constants/prompts.js +12 -34
- package/dist/constants/prompts.js.map +2 -2
- package/dist/constants/symbols.js +64 -6
- package/dist/constants/symbols.js.map +2 -2
- package/dist/constants/timing.js +5 -0
- package/dist/constants/timing.js.map +2 -2
- package/dist/core/config/defaults.js +84 -0
- package/dist/core/config/defaults.js.map +7 -0
- package/dist/core/config/index.js +111 -0
- package/dist/core/config/index.js.map +7 -0
- package/dist/core/config/loader.js +221 -0
- package/dist/core/config/loader.js.map +7 -0
- package/dist/core/config/migrations.js +128 -0
- package/dist/core/config/migrations.js.map +7 -0
- package/dist/core/config/schema.js +178 -0
- package/dist/core/config/schema.js.map +7 -0
- package/dist/core/costTracker.js +138 -0
- package/dist/core/costTracker.js.map +7 -0
- package/dist/core/index.js +5 -0
- package/dist/core/index.js.map +7 -0
- package/dist/core/permissions/auditLog.js +204 -0
- package/dist/core/permissions/auditLog.js.map +7 -0
- package/dist/core/permissions/engine/index.js +3 -0
- package/dist/core/permissions/engine/index.js.map +7 -0
- package/dist/core/permissions/engine/permissionEngine.js +106 -0
- package/dist/core/permissions/engine/permissionEngine.js.map +7 -0
- package/dist/core/permissions/engine/types.js +1 -0
- package/dist/core/permissions/engine/types.js.map +7 -0
- package/dist/core/permissions/index.js +84 -0
- package/dist/core/permissions/index.js.map +7 -0
- package/dist/core/permissions/ruleEngine.js +259 -0
- package/dist/core/permissions/ruleEngine.js.map +7 -0
- package/dist/core/permissions/rules/allowedToolsRule.js +62 -0
- package/dist/core/permissions/rules/allowedToolsRule.js.map +7 -0
- package/dist/core/permissions/rules/autoEscalationRule.js +291 -0
- package/dist/core/permissions/rules/autoEscalationRule.js.map +7 -0
- package/dist/core/permissions/rules/index.js +46 -0
- package/dist/core/permissions/rules/index.js.map +7 -0
- package/dist/core/permissions/rules/planModeRule.js +55 -0
- package/dist/core/permissions/rules/planModeRule.js.map +7 -0
- package/dist/core/permissions/rules/projectBoundaryRule.js +168 -0
- package/dist/core/permissions/rules/projectBoundaryRule.js.map +7 -0
- package/dist/core/permissions/rules/safeModeRule.js +65 -0
- package/dist/core/permissions/rules/safeModeRule.js.map +7 -0
- package/dist/core/permissions/rules/sensitivePathsRule.js +340 -0
- package/dist/core/permissions/rules/sensitivePathsRule.js.map +7 -0
- package/dist/core/permissions/types.js +127 -0
- package/dist/core/permissions/types.js.map +7 -0
- package/dist/core/tools/executor.js +143 -0
- package/dist/core/tools/executor.js.map +7 -0
- package/dist/core/tools/index.js +15 -0
- package/dist/core/tools/index.js.map +7 -0
- package/dist/core/tools/registry.js +183 -0
- package/dist/core/tools/registry.js.map +7 -0
- package/dist/core/tools/types.js +1 -0
- package/dist/core/tools/types.js.map +7 -0
- package/dist/cost-tracker.js +23 -15
- package/dist/cost-tracker.js.map +2 -2
- package/dist/entrypoints/cli.js +43 -43
- package/dist/entrypoints/cli.js.map +2 -2
- package/dist/entrypoints/mcp.js +12 -4
- package/dist/entrypoints/mcp.js.map +2 -2
- package/dist/history.js +14 -3
- package/dist/history.js.map +2 -2
- package/dist/hooks/useAgentTranscripts.js +116 -0
- package/dist/hooks/useAgentTranscripts.js.map +7 -0
- package/dist/hooks/useAnimationSync.js +53 -0
- package/dist/hooks/useAnimationSync.js.map +7 -0
- package/dist/hooks/useArrowKeyHistory.js +4 -2
- package/dist/hooks/useArrowKeyHistory.js.map +2 -2
- package/dist/hooks/useCanUseTool.js +3 -1
- package/dist/hooks/useCanUseTool.js.map +2 -2
- package/dist/hooks/useCancelRequest.js +4 -1
- package/dist/hooks/useCancelRequest.js.map +2 -2
- package/dist/hooks/useExitOnCtrlCD.js +9 -5
- package/dist/hooks/useExitOnCtrlCD.js.map +2 -2
- package/dist/hooks/useHookStatus.js +40 -0
- package/dist/hooks/useHookStatus.js.map +7 -0
- package/dist/hooks/useLogMessages.js +17 -1
- package/dist/hooks/useLogMessages.js.map +2 -2
- package/dist/hooks/useMessageGroups.js +43 -0
- package/dist/hooks/useMessageGroups.js.map +7 -0
- package/dist/hooks/useTerminalSize.js +62 -6
- package/dist/hooks/useTerminalSize.js.map +2 -2
- package/dist/hooks/useUnifiedCompletion.js +69 -0
- package/dist/hooks/useUnifiedCompletion.js.map +2 -2
- package/dist/i18n/index.js +109 -0
- package/dist/i18n/index.js.map +7 -0
- package/dist/i18n/locales/en.js +347 -0
- package/dist/i18n/locales/en.js.map +7 -0
- package/dist/i18n/locales/index.js +7 -0
- package/dist/i18n/locales/index.js.map +7 -0
- package/dist/i18n/locales/zh-CN.js +347 -0
- package/dist/i18n/locales/zh-CN.js.map +7 -0
- package/dist/i18n/types.js +8 -0
- package/dist/i18n/types.js.map +7 -0
- package/dist/query.js +175 -17
- package/dist/query.js.map +3 -3
- package/dist/screens/REPL.js +501 -192
- package/dist/screens/REPL.js.map +3 -3
- package/dist/services/adapters/chatCompletions.js +3 -1
- package/dist/services/adapters/chatCompletions.js.map +2 -2
- package/dist/services/adapters/messageNormalizer.js +354 -0
- package/dist/services/adapters/messageNormalizer.js.map +7 -0
- package/dist/services/adapters/responsesAPI.js +6 -3
- package/dist/services/adapters/responsesAPI.js.map +2 -2
- package/dist/services/checkpointManager.js +386 -0
- package/dist/services/checkpointManager.js.map +7 -0
- package/dist/services/claude.js +138 -11
- package/dist/services/claude.js.map +3 -3
- package/dist/services/compressionService.js +50 -1
- package/dist/services/compressionService.js.map +2 -2
- package/dist/services/contextMonitor.js +162 -0
- package/dist/services/contextMonitor.js.map +7 -0
- package/dist/services/customCommands.js +60 -41
- package/dist/services/customCommands.js.map +2 -2
- package/dist/services/hookExecutor.js +173 -1
- package/dist/services/hookExecutor.js.map +2 -2
- package/dist/services/intelligentCompactor.js +281 -0
- package/dist/services/intelligentCompactor.js.map +7 -0
- package/dist/services/lspConfig.js +109 -0
- package/dist/services/lspConfig.js.map +7 -0
- package/dist/services/mcpClient.js +273 -34
- package/dist/services/mcpClient.js.map +2 -2
- package/dist/services/modelOrchestrator.js +310 -0
- package/dist/services/modelOrchestrator.js.map +7 -0
- package/dist/services/openai.js +8 -1
- package/dist/services/openai.js.map +2 -2
- package/dist/services/outputStyles.js +138 -0
- package/dist/services/outputStyles.js.map +7 -0
- package/dist/services/plugins/index.js +5 -0
- package/dist/services/plugins/index.js.map +7 -0
- package/dist/services/plugins/lspServers.js +188 -0
- package/dist/services/plugins/lspServers.js.map +7 -0
- package/dist/services/plugins/pluginRuntime.js +229 -0
- package/dist/services/plugins/pluginRuntime.js.map +7 -0
- package/dist/services/plugins/pluginValidation.js +219 -0
- package/dist/services/plugins/pluginValidation.js.map +7 -0
- package/dist/services/plugins/skillMarketplace.js +556 -0
- package/dist/services/plugins/skillMarketplace.js.map +7 -0
- package/dist/services/responseStateManager.js +37 -3
- package/dist/services/responseStateManager.js.map +2 -2
- package/dist/services/sandbox/filesystemBoundary.js +300 -0
- package/dist/services/sandbox/filesystemBoundary.js.map +7 -0
- package/dist/services/sandbox/index.js +14 -0
- package/dist/services/sandbox/index.js.map +7 -0
- package/dist/services/sandbox/networkProxy.js +293 -0
- package/dist/services/sandbox/networkProxy.js.map +7 -0
- package/dist/services/sandbox/sandboxController.js +574 -0
- package/dist/services/sandbox/sandboxController.js.map +7 -0
- package/dist/services/sandbox/types.js +50 -0
- package/dist/services/sandbox/types.js.map +7 -0
- package/dist/services/sessionMemory.js +266 -0
- package/dist/services/sessionMemory.js.map +7 -0
- package/dist/services/taskRouter.js +324 -0
- package/dist/services/taskRouter.js.map +7 -0
- package/dist/tools/ArchitectTool/ArchitectTool.js +7 -1
- package/dist/tools/ArchitectTool/ArchitectTool.js.map +2 -2
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +3 -0
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +2 -2
- package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js.map +2 -2
- package/dist/tools/BaseTool.js +72 -0
- package/dist/tools/BaseTool.js.map +7 -0
- package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js +3 -0
- package/dist/tools/BashOutputTool/BashOutputToolResultMessage.js.map +2 -2
- package/dist/tools/BashTool/BashTool.js +60 -3
- package/dist/tools/BashTool/BashTool.js.map +2 -2
- package/dist/tools/BashTool/BashToolResultMessage.js +3 -0
- package/dist/tools/BashTool/BashToolResultMessage.js.map +2 -2
- package/dist/tools/BashTool/OutputLine.js +54 -0
- package/dist/tools/BashTool/OutputLine.js.map +2 -2
- package/dist/tools/BashTool/prompt.js +192 -3
- package/dist/tools/BashTool/prompt.js.map +2 -2
- package/dist/tools/FileEditTool/FileEditTool.js +29 -4
- package/dist/tools/FileEditTool/FileEditTool.js.map +2 -2
- package/dist/tools/FileWriteTool/FileWriteTool.js +5 -5
- package/dist/tools/FileWriteTool/FileWriteTool.js.map +2 -2
- package/dist/tools/GlobTool/GlobTool.js +4 -2
- package/dist/tools/GlobTool/GlobTool.js.map +2 -2
- package/dist/tools/GrepTool/GrepTool.js +36 -7
- package/dist/tools/GrepTool/GrepTool.js.map +2 -2
- package/dist/tools/KillShellTool/KillShellToolResultMessage.js +3 -0
- package/dist/tools/KillShellTool/KillShellToolResultMessage.js.map +2 -2
- package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js +109 -0
- package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js.map +7 -0
- package/dist/tools/ListMcpResourcesTool/prompt.js +19 -0
- package/dist/tools/ListMcpResourcesTool/prompt.js.map +7 -0
- package/dist/tools/LspTool/LspTool.js +664 -0
- package/dist/tools/LspTool/LspTool.js.map +7 -0
- package/dist/tools/LspTool/prompt.js +27 -0
- package/dist/tools/LspTool/prompt.js.map +7 -0
- package/dist/tools/MCPTool/MCPTool.js +9 -1
- package/dist/tools/MCPTool/MCPTool.js.map +2 -2
- package/dist/tools/MemoryReadTool/MemoryReadTool.js +19 -6
- package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +2 -2
- package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +6 -6
- package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +2 -2
- package/dist/tools/MultiEditTool/MultiEditTool.js +19 -2
- package/dist/tools/MultiEditTool/MultiEditTool.js.map +2 -2
- package/dist/tools/NotebookEditTool/NotebookEditTool.js +5 -1
- package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +2 -2
- package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +2 -2
- package/dist/tools/PlanModeTool/EnterPlanModeTool.js +74 -0
- package/dist/tools/PlanModeTool/EnterPlanModeTool.js.map +7 -0
- package/dist/tools/PlanModeTool/ExitPlanModeTool.js +108 -0
- package/dist/tools/PlanModeTool/ExitPlanModeTool.js.map +7 -0
- package/dist/tools/PlanModeTool/prompt.js +94 -0
- package/dist/tools/PlanModeTool/prompt.js.map +7 -0
- package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js +130 -0
- package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js.map +7 -0
- package/dist/tools/ReadMcpResourceTool/prompt.js +17 -0
- package/dist/tools/ReadMcpResourceTool/prompt.js.map +7 -0
- package/dist/tools/SkillTool/SkillTool.js +6 -1
- package/dist/tools/SkillTool/SkillTool.js.map +2 -2
- package/dist/tools/SlashCommandTool/SlashCommandTool.js +260 -0
- package/dist/tools/SlashCommandTool/SlashCommandTool.js.map +7 -0
- package/dist/tools/SlashCommandTool/prompt.js +35 -0
- package/dist/tools/SlashCommandTool/prompt.js.map +7 -0
- package/dist/tools/TaskOutputTool/TaskOutputTool.js +189 -0
- package/dist/tools/TaskOutputTool/TaskOutputTool.js.map +7 -0
- package/dist/tools/TaskOutputTool/prompt.js +15 -0
- package/dist/tools/TaskOutputTool/prompt.js.map +7 -0
- package/dist/tools/TaskTool/TaskTool.js +302 -104
- package/dist/tools/TaskTool/TaskTool.js.map +2 -2
- package/dist/tools/TaskTool/prompt.js.map +2 -2
- package/dist/tools/TodoWriteTool/TodoWriteTool.js +42 -77
- package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +2 -2
- package/dist/tools/URLFetcherTool/URLFetcherTool.js +4 -1
- package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +2 -2
- package/dist/tools/URLFetcherTool/cache.js +55 -8
- package/dist/tools/URLFetcherTool/cache.js.map +2 -2
- package/dist/tools.js +31 -2
- package/dist/tools.js.map +2 -2
- package/dist/types/hooks.js +4 -0
- package/dist/types/hooks.js.map +2 -2
- package/dist/types/marketplace.js.map +2 -2
- package/dist/types/messageGroup.js +36 -0
- package/dist/types/messageGroup.js.map +7 -0
- package/dist/types/plugin.js.map +2 -2
- package/dist/types/thinking.js +1 -0
- package/dist/types/thinking.js.map +7 -0
- package/dist/utils/BackgroundShellManager.js +136 -39
- package/dist/utils/BackgroundShellManager.js.map +2 -2
- package/dist/utils/MessageBatchBuffer.js +102 -0
- package/dist/utils/MessageBatchBuffer.js.map +7 -0
- package/dist/utils/PersistentShell.js +151 -1
- package/dist/utils/PersistentShell.js.map +2 -2
- package/dist/utils/agentLoader.js +1 -23
- package/dist/utils/agentLoader.js.map +2 -2
- package/dist/utils/agentTranscripts.js +641 -0
- package/dist/utils/agentTranscripts.js.map +7 -0
- package/dist/utils/animationManager.js +213 -0
- package/dist/utils/animationManager.js.map +7 -0
- package/dist/utils/animationSync.js +110 -0
- package/dist/utils/animationSync.js.map +7 -0
- package/dist/utils/asyncFile.js +215 -0
- package/dist/utils/asyncFile.js.map +7 -0
- package/dist/utils/backgroundAgentManager.js +231 -0
- package/dist/utils/backgroundAgentManager.js.map +7 -0
- package/dist/utils/config.js +63 -7
- package/dist/utils/config.js.map +2 -2
- package/dist/utils/conversationRecovery.js +19 -0
- package/dist/utils/conversationRecovery.js.map +2 -2
- package/dist/utils/exit.js +73 -0
- package/dist/utils/exit.js.map +7 -0
- package/dist/utils/format.js +73 -5
- package/dist/utils/format.js.map +2 -2
- package/dist/utils/generators.js +76 -6
- package/dist/utils/generators.js.map +2 -2
- package/dist/utils/globalErrorHandler.js +149 -0
- package/dist/utils/globalErrorHandler.js.map +7 -0
- package/dist/utils/groupHandlers/index.js +8 -0
- package/dist/utils/groupHandlers/index.js.map +7 -0
- package/dist/utils/groupHandlers/parallelTasksHandler.js +140 -0
- package/dist/utils/groupHandlers/parallelTasksHandler.js.map +7 -0
- package/dist/utils/groupHandlers/taskHandler.js +104 -0
- package/dist/utils/groupHandlers/taskHandler.js.map +7 -0
- package/dist/utils/groupHandlers/types.js +1 -0
- package/dist/utils/groupHandlers/types.js.map +7 -0
- package/dist/utils/logRotation.js +224 -0
- package/dist/utils/logRotation.js.map +7 -0
- package/dist/utils/marketplaceManager.js +3 -5
- package/dist/utils/marketplaceManager.js.map +2 -2
- package/dist/utils/memSafety.js +264 -0
- package/dist/utils/memSafety.js.map +7 -0
- package/dist/utils/messageGroupManager.js +274 -0
- package/dist/utils/messageGroupManager.js.map +7 -0
- package/dist/utils/messages.js +13 -4
- package/dist/utils/messages.js.map +2 -2
- package/dist/utils/model.js +119 -15
- package/dist/utils/model.js.map +3 -3
- package/dist/utils/permissions/filesystem.js +157 -5
- package/dist/utils/permissions/filesystem.js.map +2 -2
- package/dist/utils/plan/planMode.js +143 -0
- package/dist/utils/plan/planMode.js.map +7 -0
- package/dist/utils/pluginLoader.js +17 -21
- package/dist/utils/pluginLoader.js.map +2 -2
- package/dist/utils/ripgrep.js +55 -2
- package/dist/utils/ripgrep.js.map +2 -2
- package/dist/utils/sanitizeInput.js +32 -0
- package/dist/utils/sanitizeInput.js.map +7 -0
- package/dist/utils/secureKeyStorage.js +312 -0
- package/dist/utils/secureKeyStorage.js.map +7 -0
- package/dist/utils/session/sessionPlugins.js +67 -0
- package/dist/utils/session/sessionPlugins.js.map +7 -0
- package/dist/utils/taskDisplayUtils.js +257 -0
- package/dist/utils/taskDisplayUtils.js.map +7 -0
- package/dist/utils/teamConfig.js +2 -1
- package/dist/utils/teamConfig.js.map +2 -2
- package/dist/utils/todoStorage.js +92 -2
- package/dist/utils/todoStorage.js.map +2 -2
- package/dist/utils/toolTimeout.js +136 -0
- package/dist/utils/toolTimeout.js.map +7 -0
- package/dist/utils/tooling/safeRender.js +115 -0
- package/dist/utils/tooling/safeRender.js.map +7 -0
- package/dist/utils/userFriendlyError.js +346 -0
- package/dist/utils/userFriendlyError.js.map +7 -0
- package/dist/utils/vendor/ripgrep/arm64-darwin/rg +0 -0
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- package/package.json +14 -4
- package/scripts/postinstall.js +128 -38
- package/dist/commands/agents.js +0 -2086
- package/dist/commands/agents.js.map +0 -7
- package/dist/commands/build.js +0 -74
- package/dist/commands/build.js.map +0 -7
- package/dist/commands/compression.js +0 -57
- package/dist/commands/compression.js.map +0 -7
- package/dist/commands/listen.js +0 -37
- package/dist/commands/listen.js.map +0 -7
- package/dist/commands/login.js +0 -37
- package/dist/commands/login.js.map +0 -7
- package/dist/commands/logout.js +0 -33
- package/dist/commands/logout.js.map +0 -7
- package/dist/commands/mcp.js +0 -40
- package/dist/commands/mcp.js.map +0 -7
- package/dist/commands/mcp_refresh.js +0 -40
- package/dist/commands/mcp_refresh.js.map +0 -7
- package/dist/commands/modelstatus.js +0 -21
- package/dist/commands/modelstatus.js.map +0 -7
- package/dist/commands/onboarding.js +0 -36
- package/dist/commands/onboarding.js.map +0 -7
- package/dist/commands/plugin-interactive.js +0 -446
- package/dist/commands/plugin-interactive.js.map +0 -7
- package/dist/commands/pr_comments.js +0 -61
- package/dist/commands/pr_comments.js.map +0 -7
- package/dist/commands/release-notes.js +0 -30
- package/dist/commands/release-notes.js.map +0 -7
- package/dist/commands/review.js +0 -51
- package/dist/commands/review.js.map +0 -7
- package/dist/components/Bug.js +0 -147
- package/dist/components/Bug.js.map +0 -7
- package/dist/components/ModelSelector.js +0 -2062
- package/dist/components/ModelSelector.js.map +0 -7
- package/dist/components/ModelStatusDisplay.js +0 -87
- package/dist/components/ModelStatusDisplay.js.map +0 -7
- package/dist/entrypoints/cli-wrapper.js +0 -61
- package/dist/entrypoints/cli-wrapper.js.map +0 -7
- package/dist/screens/Doctor.js +0 -22
- package/dist/screens/Doctor.js.map +0 -7
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
class NetworkProxy {
|
|
2
|
+
policy;
|
|
3
|
+
violations = [];
|
|
4
|
+
pendingDomains = /* @__PURE__ */ new Set();
|
|
5
|
+
approvedDomains = /* @__PURE__ */ new Set();
|
|
6
|
+
deniedDomains = /* @__PURE__ */ new Set();
|
|
7
|
+
constructor(policy) {
|
|
8
|
+
this.policy = policy;
|
|
9
|
+
for (const domain of policy.allowedDomains) {
|
|
10
|
+
this.approvedDomains.add(domain.toLowerCase());
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Update the network policy
|
|
15
|
+
*/
|
|
16
|
+
updatePolicy(policy) {
|
|
17
|
+
this.policy = { ...this.policy, ...policy };
|
|
18
|
+
if (policy.allowedDomains) {
|
|
19
|
+
this.approvedDomains.clear();
|
|
20
|
+
for (const domain of policy.allowedDomains) {
|
|
21
|
+
this.approvedDomains.add(domain.toLowerCase());
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if network access to a domain is allowed
|
|
27
|
+
*/
|
|
28
|
+
checkAccess(request) {
|
|
29
|
+
const domain = request.domain.toLowerCase();
|
|
30
|
+
if (this.policy.blockAll) {
|
|
31
|
+
const violation2 = this.createViolation(
|
|
32
|
+
"network_blocked",
|
|
33
|
+
`Network access is blocked: attempted connection to ${domain}`,
|
|
34
|
+
domain
|
|
35
|
+
);
|
|
36
|
+
this.violations.push(violation2);
|
|
37
|
+
return { allowed: false, violation: violation2, domain };
|
|
38
|
+
}
|
|
39
|
+
if (this.deniedDomains.has(domain)) {
|
|
40
|
+
const violation2 = this.createViolation(
|
|
41
|
+
"network_domain_denied",
|
|
42
|
+
`Network access denied: ${domain} was previously rejected`,
|
|
43
|
+
domain
|
|
44
|
+
);
|
|
45
|
+
this.violations.push(violation2);
|
|
46
|
+
return { allowed: false, violation: violation2, domain };
|
|
47
|
+
}
|
|
48
|
+
if (this.isDomainApproved(domain)) {
|
|
49
|
+
return { allowed: true, domain };
|
|
50
|
+
}
|
|
51
|
+
if (this.policy.promptForNewDomains) {
|
|
52
|
+
this.pendingDomains.add(domain);
|
|
53
|
+
return {
|
|
54
|
+
allowed: false,
|
|
55
|
+
promptRequired: true,
|
|
56
|
+
domain
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const violation = this.createViolation(
|
|
60
|
+
"network_domain_denied",
|
|
61
|
+
`Network access denied: ${domain} is not in the allowed list`,
|
|
62
|
+
domain
|
|
63
|
+
);
|
|
64
|
+
this.violations.push(violation);
|
|
65
|
+
return { allowed: false, violation, domain };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Analyze a command for network operations
|
|
69
|
+
*/
|
|
70
|
+
analyzeCommand(command) {
|
|
71
|
+
const networkRequests = [];
|
|
72
|
+
const violations = [];
|
|
73
|
+
const urlPatterns = [
|
|
74
|
+
// HTTP/HTTPS URLs
|
|
75
|
+
/https?:\/\/([^\/\s:]+)(?::\d+)?/gi,
|
|
76
|
+
// curl/wget commands
|
|
77
|
+
/(?:curl|wget)\s+(?:[^\s]*\s+)*["']?(https?:\/\/)?([^\/\s"':]+)/gi,
|
|
78
|
+
// SSH/SCP commands
|
|
79
|
+
/(?:ssh|scp)\s+(?:[^\s]*\s+)*(?:\w+@)?([^:\s\/]+)/gi,
|
|
80
|
+
// git remote URLs
|
|
81
|
+
/git(?:@|:\/\/)([^:\/\s]+)/gi,
|
|
82
|
+
// npm registry
|
|
83
|
+
/registry\.npmjs\.org/gi,
|
|
84
|
+
// Package install commands that might download
|
|
85
|
+
/(?:npm|yarn|pnpm|bun)\s+(?:install|add|i)\s+/gi,
|
|
86
|
+
/pip\s+install\s+/gi
|
|
87
|
+
];
|
|
88
|
+
for (const pattern of urlPatterns) {
|
|
89
|
+
const matches = command.matchAll(pattern);
|
|
90
|
+
for (const match of matches) {
|
|
91
|
+
let domain = match[1] || match[2] || match[0];
|
|
92
|
+
domain = domain.replace(/^https?:\/\//, "").replace(/\/.*$/, "").replace(/:.*$/, "").toLowerCase();
|
|
93
|
+
if (domain && this.isValidDomain(domain)) {
|
|
94
|
+
const protocol = this.detectProtocol(command, domain);
|
|
95
|
+
networkRequests.push({
|
|
96
|
+
domain,
|
|
97
|
+
protocol,
|
|
98
|
+
requestType: "outbound"
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (this.commandImpliesNetwork(command)) {
|
|
104
|
+
const impliedDomains = this.getImpliedDomains(command);
|
|
105
|
+
for (const domain of impliedDomains) {
|
|
106
|
+
if (!networkRequests.find((r) => r.domain === domain)) {
|
|
107
|
+
networkRequests.push({
|
|
108
|
+
domain,
|
|
109
|
+
protocol: "https",
|
|
110
|
+
requestType: "outbound"
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
for (const request of networkRequests) {
|
|
116
|
+
const result = this.checkAccess(request);
|
|
117
|
+
if (!result.allowed && result.violation) {
|
|
118
|
+
violations.push({
|
|
119
|
+
...result.violation,
|
|
120
|
+
command
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return { networkRequests, violations };
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Approve a pending domain
|
|
128
|
+
*/
|
|
129
|
+
approveDomain(domain) {
|
|
130
|
+
const lowerDomain = domain.toLowerCase();
|
|
131
|
+
this.approvedDomains.add(lowerDomain);
|
|
132
|
+
this.pendingDomains.delete(lowerDomain);
|
|
133
|
+
this.deniedDomains.delete(lowerDomain);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Deny a pending domain
|
|
137
|
+
*/
|
|
138
|
+
denyDomain(domain) {
|
|
139
|
+
const lowerDomain = domain.toLowerCase();
|
|
140
|
+
this.deniedDomains.add(lowerDomain);
|
|
141
|
+
this.pendingDomains.delete(lowerDomain);
|
|
142
|
+
this.approvedDomains.delete(lowerDomain);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get pending domains that need approval
|
|
146
|
+
*/
|
|
147
|
+
getPendingDomains() {
|
|
148
|
+
return [...this.pendingDomains];
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get all approved domains
|
|
152
|
+
*/
|
|
153
|
+
getApprovedDomains() {
|
|
154
|
+
return [...this.approvedDomains];
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get all denied domains
|
|
158
|
+
*/
|
|
159
|
+
getDeniedDomains() {
|
|
160
|
+
return [...this.deniedDomains];
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get all recorded violations
|
|
164
|
+
*/
|
|
165
|
+
getViolations() {
|
|
166
|
+
return [...this.violations];
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Clear violation history
|
|
170
|
+
*/
|
|
171
|
+
clearViolations() {
|
|
172
|
+
this.violations = [];
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Check if a domain is approved (supports wildcards)
|
|
176
|
+
*/
|
|
177
|
+
isDomainApproved(domain) {
|
|
178
|
+
if (this.approvedDomains.has(domain)) {
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
for (const approved of this.approvedDomains) {
|
|
182
|
+
if (approved.startsWith("*.")) {
|
|
183
|
+
const suffix = approved.slice(2);
|
|
184
|
+
if (domain.endsWith(suffix) || domain === suffix.slice(1)) {
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (domain.endsWith(`.${approved}`)) {
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Validate a domain format
|
|
196
|
+
*/
|
|
197
|
+
isValidDomain(domain) {
|
|
198
|
+
if (!domain || domain.length < 3) return false;
|
|
199
|
+
const domainRegex = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;
|
|
200
|
+
return domainRegex.test(domain);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Detect protocol from command context
|
|
204
|
+
*/
|
|
205
|
+
detectProtocol(command, domain) {
|
|
206
|
+
if (command.includes("ssh") || command.includes("scp")) {
|
|
207
|
+
return "ssh";
|
|
208
|
+
}
|
|
209
|
+
if (command.includes("git@") || command.includes("git://")) {
|
|
210
|
+
return "git";
|
|
211
|
+
}
|
|
212
|
+
if (command.includes("https://")) {
|
|
213
|
+
return "https";
|
|
214
|
+
}
|
|
215
|
+
if (command.includes("http://")) {
|
|
216
|
+
return "http";
|
|
217
|
+
}
|
|
218
|
+
return "https";
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Check if a command implies network access
|
|
222
|
+
*/
|
|
223
|
+
commandImpliesNetwork(command) {
|
|
224
|
+
const networkCommands = [
|
|
225
|
+
/\bnpm\s+(install|i|add|update|publish)\b/,
|
|
226
|
+
/\byarn\s+(add|upgrade|publish)\b/,
|
|
227
|
+
/\bpnpm\s+(add|update|publish)\b/,
|
|
228
|
+
/\bbun\s+(add|update|install)\b/,
|
|
229
|
+
/\bpip\s+install\b/,
|
|
230
|
+
/\bcargo\s+(install|update|publish)\b/,
|
|
231
|
+
/\bgo\s+(get|install)\b/,
|
|
232
|
+
/\bgem\s+install\b/,
|
|
233
|
+
/\bcomposer\s+(install|require|update)\b/,
|
|
234
|
+
/\bcurl\b/,
|
|
235
|
+
/\bwget\b/,
|
|
236
|
+
/\bgit\s+(clone|fetch|pull|push)\b/
|
|
237
|
+
];
|
|
238
|
+
return networkCommands.some((pattern) => pattern.test(command));
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Get implied domains for package manager commands
|
|
242
|
+
*/
|
|
243
|
+
getImpliedDomains(command) {
|
|
244
|
+
const domains = [];
|
|
245
|
+
if (/\bnpm\b/.test(command)) {
|
|
246
|
+
domains.push("registry.npmjs.org");
|
|
247
|
+
}
|
|
248
|
+
if (/\byarn\b/.test(command)) {
|
|
249
|
+
domains.push("registry.yarnpkg.com", "registry.npmjs.org");
|
|
250
|
+
}
|
|
251
|
+
if (/\bpnpm\b/.test(command)) {
|
|
252
|
+
domains.push("registry.npmjs.org");
|
|
253
|
+
}
|
|
254
|
+
if (/\bbun\b/.test(command)) {
|
|
255
|
+
domains.push("registry.npmjs.org");
|
|
256
|
+
}
|
|
257
|
+
if (/\bpip\b/.test(command)) {
|
|
258
|
+
domains.push("pypi.org", "files.pythonhosted.org");
|
|
259
|
+
}
|
|
260
|
+
if (/\bcargo\b/.test(command)) {
|
|
261
|
+
domains.push("crates.io", "static.crates.io");
|
|
262
|
+
}
|
|
263
|
+
if (/\bgo\s+(get|install)\b/.test(command)) {
|
|
264
|
+
domains.push("proxy.golang.org", "sum.golang.org");
|
|
265
|
+
}
|
|
266
|
+
if (/\bgem\b/.test(command)) {
|
|
267
|
+
domains.push("rubygems.org");
|
|
268
|
+
}
|
|
269
|
+
if (/\bcomposer\b/.test(command)) {
|
|
270
|
+
domains.push("packagist.org", "repo.packagist.org");
|
|
271
|
+
}
|
|
272
|
+
if (/\bgit\s+(clone|fetch|pull|push)\b/.test(command)) {
|
|
273
|
+
domains.push("github.com", "gitlab.com", "bitbucket.org");
|
|
274
|
+
}
|
|
275
|
+
return domains;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Create a violation record
|
|
279
|
+
*/
|
|
280
|
+
createViolation(type, details, domain) {
|
|
281
|
+
return {
|
|
282
|
+
type,
|
|
283
|
+
timestamp: Date.now(),
|
|
284
|
+
command: "",
|
|
285
|
+
details,
|
|
286
|
+
domain
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
export {
|
|
291
|
+
NetworkProxy
|
|
292
|
+
};
|
|
293
|
+
//# sourceMappingURL=networkProxy.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/services/sandbox/networkProxy.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Network Proxy Service\n *\n * Validates and controls network access for sandboxed commands.\n * Provides domain-based access control and logging.\n */\n\nimport type { NetworkPolicy, SandboxViolation } from './types'\n\n/**\n * Result of a network access check\n */\nexport interface NetworkCheckResult {\n allowed: boolean\n violation?: SandboxViolation\n promptRequired?: boolean\n domain?: string\n}\n\n/**\n * Network access request\n */\nexport interface NetworkAccessRequest {\n domain: string\n protocol?: 'http' | 'https' | 'ssh' | 'git' | 'other'\n port?: number\n requestType?: 'outbound' | 'inbound'\n}\n\n/**\n * Network Proxy Controller\n */\nexport class NetworkProxy {\n private policy: NetworkPolicy\n private violations: SandboxViolation[] = []\n private pendingDomains: Set<string> = new Set()\n private approvedDomains: Set<string> = new Set()\n private deniedDomains: Set<string> = new Set()\n\n constructor(policy: NetworkPolicy) {\n this.policy = policy\n // Initialize approved domains from policy\n for (const domain of policy.allowedDomains) {\n this.approvedDomains.add(domain.toLowerCase())\n }\n }\n\n /**\n * Update the network policy\n */\n updatePolicy(policy: Partial<NetworkPolicy>): void {\n this.policy = { ...this.policy, ...policy }\n if (policy.allowedDomains) {\n this.approvedDomains.clear()\n for (const domain of policy.allowedDomains) {\n this.approvedDomains.add(domain.toLowerCase())\n }\n }\n }\n\n /**\n * Check if network access to a domain is allowed\n */\n checkAccess(request: NetworkAccessRequest): NetworkCheckResult {\n const domain = request.domain.toLowerCase()\n\n // Check if all network access is blocked\n if (this.policy.blockAll) {\n const violation = this.createViolation(\n 'network_blocked',\n `Network access is blocked: attempted connection to ${domain}`,\n domain,\n )\n this.violations.push(violation)\n return { allowed: false, violation, domain }\n }\n\n // Check if domain was previously denied\n if (this.deniedDomains.has(domain)) {\n const violation = this.createViolation(\n 'network_domain_denied',\n `Network access denied: ${domain} was previously rejected`,\n domain,\n )\n this.violations.push(violation)\n return { allowed: false, violation, domain }\n }\n\n // Check if domain is in approved list\n if (this.isDomainApproved(domain)) {\n return { allowed: true, domain }\n }\n\n // Check if we should prompt for new domains\n if (this.policy.promptForNewDomains) {\n this.pendingDomains.add(domain)\n return {\n allowed: false,\n promptRequired: true,\n domain,\n }\n }\n\n // Default deny\n const violation = this.createViolation(\n 'network_domain_denied',\n `Network access denied: ${domain} is not in the allowed list`,\n domain,\n )\n this.violations.push(violation)\n return { allowed: false, violation, domain }\n }\n\n /**\n * Analyze a command for network operations\n */\n analyzeCommand(command: string): {\n networkRequests: NetworkAccessRequest[]\n violations: SandboxViolation[]\n } {\n const networkRequests: NetworkAccessRequest[] = []\n const violations: SandboxViolation[] = []\n\n // Extract URLs and domains from command\n const urlPatterns = [\n // HTTP/HTTPS URLs\n /https?:\\/\\/([^\\/\\s:]+)(?::\\d+)?/gi,\n // curl/wget commands\n /(?:curl|wget)\\s+(?:[^\\s]*\\s+)*[\"']?(https?:\\/\\/)?([^\\/\\s\"':]+)/gi,\n // SSH/SCP commands\n /(?:ssh|scp)\\s+(?:[^\\s]*\\s+)*(?:\\w+@)?([^:\\s\\/]+)/gi,\n // git remote URLs\n /git(?:@|:\\/\\/)([^:\\/\\s]+)/gi,\n // npm registry\n /registry\\.npmjs\\.org/gi,\n // Package install commands that might download\n /(?:npm|yarn|pnpm|bun)\\s+(?:install|add|i)\\s+/gi,\n /pip\\s+install\\s+/gi,\n ]\n\n for (const pattern of urlPatterns) {\n const matches = command.matchAll(pattern)\n for (const match of matches) {\n let domain = match[1] || match[2] || match[0]\n // Clean up the domain\n domain = domain\n .replace(/^https?:\\/\\//, '')\n .replace(/\\/.*$/, '')\n .replace(/:.*$/, '')\n .toLowerCase()\n\n if (domain && this.isValidDomain(domain)) {\n const protocol = this.detectProtocol(command, domain)\n networkRequests.push({\n domain,\n protocol,\n requestType: 'outbound',\n })\n }\n }\n }\n\n // Check for package manager commands that imply network access\n if (this.commandImpliesNetwork(command)) {\n // Add common package registries\n const impliedDomains = this.getImpliedDomains(command)\n for (const domain of impliedDomains) {\n if (!networkRequests.find(r => r.domain === domain)) {\n networkRequests.push({\n domain,\n protocol: 'https',\n requestType: 'outbound',\n })\n }\n }\n }\n\n // Validate all network requests\n for (const request of networkRequests) {\n const result = this.checkAccess(request)\n if (!result.allowed && result.violation) {\n violations.push({\n ...result.violation,\n command,\n })\n }\n }\n\n return { networkRequests, violations }\n }\n\n /**\n * Approve a pending domain\n */\n approveDomain(domain: string): void {\n const lowerDomain = domain.toLowerCase()\n this.approvedDomains.add(lowerDomain)\n this.pendingDomains.delete(lowerDomain)\n this.deniedDomains.delete(lowerDomain)\n }\n\n /**\n * Deny a pending domain\n */\n denyDomain(domain: string): void {\n const lowerDomain = domain.toLowerCase()\n this.deniedDomains.add(lowerDomain)\n this.pendingDomains.delete(lowerDomain)\n this.approvedDomains.delete(lowerDomain)\n }\n\n /**\n * Get pending domains that need approval\n */\n getPendingDomains(): string[] {\n return [...this.pendingDomains]\n }\n\n /**\n * Get all approved domains\n */\n getApprovedDomains(): string[] {\n return [...this.approvedDomains]\n }\n\n /**\n * Get all denied domains\n */\n getDeniedDomains(): string[] {\n return [...this.deniedDomains]\n }\n\n /**\n * Get all recorded violations\n */\n getViolations(): SandboxViolation[] {\n return [...this.violations]\n }\n\n /**\n * Clear violation history\n */\n clearViolations(): void {\n this.violations = []\n }\n\n /**\n * Check if a domain is approved (supports wildcards)\n */\n private isDomainApproved(domain: string): boolean {\n // Direct match\n if (this.approvedDomains.has(domain)) {\n return true\n }\n\n // Check for wildcard matches\n for (const approved of this.approvedDomains) {\n if (approved.startsWith('*.')) {\n const suffix = approved.slice(2)\n if (domain.endsWith(suffix) || domain === suffix.slice(1)) {\n return true\n }\n }\n // Check if domain is a subdomain of approved\n if (domain.endsWith(`.${approved}`)) {\n return true\n }\n }\n\n return false\n }\n\n /**\n * Validate a domain format\n */\n private isValidDomain(domain: string): boolean {\n if (!domain || domain.length < 3) return false\n // Basic domain validation\n const domainRegex =\n /^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i\n return domainRegex.test(domain)\n }\n\n /**\n * Detect protocol from command context\n */\n private detectProtocol(\n command: string,\n domain: string,\n ): NetworkAccessRequest['protocol'] {\n if (command.includes('ssh') || command.includes('scp')) {\n return 'ssh'\n }\n if (command.includes('git@') || command.includes('git://')) {\n return 'git'\n }\n if (command.includes('https://')) {\n return 'https'\n }\n if (command.includes('http://')) {\n return 'http'\n }\n return 'https' // Default to https\n }\n\n /**\n * Check if a command implies network access\n */\n private commandImpliesNetwork(command: string): boolean {\n const networkCommands = [\n /\\bnpm\\s+(install|i|add|update|publish)\\b/,\n /\\byarn\\s+(add|upgrade|publish)\\b/,\n /\\bpnpm\\s+(add|update|publish)\\b/,\n /\\bbun\\s+(add|update|install)\\b/,\n /\\bpip\\s+install\\b/,\n /\\bcargo\\s+(install|update|publish)\\b/,\n /\\bgo\\s+(get|install)\\b/,\n /\\bgem\\s+install\\b/,\n /\\bcomposer\\s+(install|require|update)\\b/,\n /\\bcurl\\b/,\n /\\bwget\\b/,\n /\\bgit\\s+(clone|fetch|pull|push)\\b/,\n ]\n\n return networkCommands.some(pattern => pattern.test(command))\n }\n\n /**\n * Get implied domains for package manager commands\n */\n private getImpliedDomains(command: string): string[] {\n const domains: string[] = []\n\n if (/\\bnpm\\b/.test(command)) {\n domains.push('registry.npmjs.org')\n }\n if (/\\byarn\\b/.test(command)) {\n domains.push('registry.yarnpkg.com', 'registry.npmjs.org')\n }\n if (/\\bpnpm\\b/.test(command)) {\n domains.push('registry.npmjs.org')\n }\n if (/\\bbun\\b/.test(command)) {\n domains.push('registry.npmjs.org')\n }\n if (/\\bpip\\b/.test(command)) {\n domains.push('pypi.org', 'files.pythonhosted.org')\n }\n if (/\\bcargo\\b/.test(command)) {\n domains.push('crates.io', 'static.crates.io')\n }\n if (/\\bgo\\s+(get|install)\\b/.test(command)) {\n domains.push('proxy.golang.org', 'sum.golang.org')\n }\n if (/\\bgem\\b/.test(command)) {\n domains.push('rubygems.org')\n }\n if (/\\bcomposer\\b/.test(command)) {\n domains.push('packagist.org', 'repo.packagist.org')\n }\n if (/\\bgit\\s+(clone|fetch|pull|push)\\b/.test(command)) {\n domains.push('github.com', 'gitlab.com', 'bitbucket.org')\n }\n\n return domains\n }\n\n /**\n * Create a violation record\n */\n private createViolation(\n type: SandboxViolation['type'],\n details: string,\n domain: string,\n ): SandboxViolation {\n return {\n type,\n timestamp: Date.now(),\n command: '',\n details,\n domain,\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["violation"]
|
|
7
|
+
}
|