@within-7/minto 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/agents/AgentsCommand.js +22 -24
- package/dist/commands/agents/AgentsCommand.js.map +2 -2
- package/dist/commands/context.js +2 -1
- package/dist/commands/context.js.map +2 -2
- package/dist/commands/export.js +2 -1
- package/dist/commands/export.js.map +2 -2
- package/dist/commands/mcp-interactive.js +7 -6
- package/dist/commands/mcp-interactive.js.map +2 -2
- package/dist/commands/model.js +3 -2
- package/dist/commands/model.js.map +2 -2
- package/dist/commands/permissions.js +4 -3
- package/dist/commands/permissions.js.map +2 -2
- package/dist/commands/plugin/AddMarketplaceForm.js +3 -2
- package/dist/commands/plugin/AddMarketplaceForm.js.map +2 -2
- package/dist/commands/plugin/ConfirmDialog.js +2 -1
- package/dist/commands/plugin/ConfirmDialog.js.map +2 -2
- package/dist/commands/plugin/ErrorView.js +2 -1
- package/dist/commands/plugin/ErrorView.js.map +2 -2
- package/dist/commands/plugin/InstalledPluginsByMarketplace.js +5 -4
- package/dist/commands/plugin/InstalledPluginsByMarketplace.js.map +2 -2
- package/dist/commands/plugin/InstalledPluginsManager.js +5 -4
- package/dist/commands/plugin/InstalledPluginsManager.js.map +2 -2
- package/dist/commands/plugin/MainMenu.js +2 -1
- package/dist/commands/plugin/MainMenu.js.map +2 -2
- package/dist/commands/plugin/MarketplaceManager.js +5 -4
- package/dist/commands/plugin/MarketplaceManager.js.map +2 -2
- package/dist/commands/plugin/MarketplaceSelector.js +4 -3
- package/dist/commands/plugin/MarketplaceSelector.js.map +2 -2
- package/dist/commands/plugin/PlaceholderScreen.js +3 -2
- package/dist/commands/plugin/PlaceholderScreen.js.map +2 -2
- package/dist/commands/plugin/PluginBrowser.js +6 -5
- package/dist/commands/plugin/PluginBrowser.js.map +2 -2
- package/dist/commands/plugin/PluginDetailsInstall.js +5 -4
- package/dist/commands/plugin/PluginDetailsInstall.js.map +2 -2
- package/dist/commands/plugin/PluginDetailsManage.js +4 -3
- package/dist/commands/plugin/PluginDetailsManage.js.map +2 -2
- package/dist/commands/plugin.js +16 -15
- package/dist/commands/plugin.js.map +2 -2
- package/dist/commands/sandbox.js +4 -3
- package/dist/commands/sandbox.js.map +2 -2
- package/dist/commands/setup.js +2 -1
- package/dist/commands/setup.js.map +2 -2
- package/dist/commands/status.js +2 -1
- package/dist/commands/status.js.map +2 -2
- package/dist/commands/undo.js +245 -0
- package/dist/commands/undo.js.map +7 -0
- package/dist/commands.js +2 -0
- package/dist/commands.js.map +2 -2
- package/dist/components/AgentThinkingBlock.js +1 -1
- package/dist/components/AgentThinkingBlock.js.map +2 -2
- package/dist/components/AsciiLogo.js +7 -8
- package/dist/components/AsciiLogo.js.map +2 -2
- package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js +3 -2
- package/dist/components/AskUserQuestionDialog/AskUserQuestionDialog.js.map +2 -2
- package/dist/components/AskUserQuestionDialog/QuestionView.js +2 -1
- package/dist/components/AskUserQuestionDialog/QuestionView.js.map +2 -2
- package/dist/components/CollapsibleHint.js +2 -1
- package/dist/components/CollapsibleHint.js.map +2 -2
- package/dist/components/Config.js +3 -2
- package/dist/components/Config.js.map +2 -2
- package/dist/components/ConsoleOAuthFlow.js +2 -1
- package/dist/components/ConsoleOAuthFlow.js.map +2 -2
- package/dist/components/Cost.js +2 -1
- package/dist/components/Cost.js.map +2 -2
- package/dist/components/HeaderBar.js +13 -8
- package/dist/components/HeaderBar.js.map +2 -2
- package/dist/components/HistorySearchOverlay.js +4 -3
- package/dist/components/HistorySearchOverlay.js.map +2 -2
- package/dist/components/HotkeyHelpPanel.js +8 -11
- package/dist/components/HotkeyHelpPanel.js.map +2 -2
- package/dist/components/InvalidConfigDialog.js +2 -1
- package/dist/components/InvalidConfigDialog.js.map +2 -2
- package/dist/components/Logo.js +23 -67
- package/dist/components/Logo.js.map +2 -2
- package/dist/components/MCPServerApprovalDialog.js +2 -1
- package/dist/components/MCPServerApprovalDialog.js.map +2 -2
- package/dist/components/MCPServerDialogCopy.js +2 -1
- package/dist/components/MCPServerDialogCopy.js.map +2 -2
- package/dist/components/MCPServerMultiselectDialog.js +2 -1
- package/dist/components/MCPServerMultiselectDialog.js.map +2 -2
- package/dist/components/MessageSelector.js +4 -3
- package/dist/components/MessageSelector.js.map +2 -2
- package/dist/components/ModeIndicator.js +2 -1
- package/dist/components/ModeIndicator.js.map +2 -2
- package/dist/components/ModelConfig.js +4 -3
- package/dist/components/ModelConfig.js.map +2 -2
- package/dist/components/ModelListManager.js +4 -3
- package/dist/components/ModelListManager.js.map +2 -2
- package/dist/components/ModelSelector/ModelSelector.js +26 -13
- package/dist/components/ModelSelector/ModelSelector.js.map +2 -2
- package/dist/components/Onboarding.js +3 -2
- package/dist/components/Onboarding.js.map +2 -2
- package/dist/components/OperationSummary.js +130 -0
- package/dist/components/OperationSummary.js.map +7 -0
- package/dist/components/PromptInput.js +88 -75
- package/dist/components/PromptInput.js.map +2 -2
- package/dist/components/SensitiveFileWarning.js +31 -0
- package/dist/components/SensitiveFileWarning.js.map +7 -0
- package/dist/components/Spinner.js +71 -22
- package/dist/components/Spinner.js.map +2 -2
- package/dist/components/StructuredDiff.js +6 -8
- package/dist/components/StructuredDiff.js.map +2 -2
- package/dist/components/SubagentBlock.js +4 -2
- package/dist/components/SubagentBlock.js.map +2 -2
- package/dist/components/SubagentProgress.js +7 -4
- package/dist/components/SubagentProgress.js.map +2 -2
- package/dist/components/TaskCard.js +14 -11
- package/dist/components/TaskCard.js.map +2 -2
- package/dist/components/TextInput.js +9 -1
- package/dist/components/TextInput.js.map +2 -2
- package/dist/components/TodoPanel.js +44 -26
- package/dist/components/TodoPanel.js.map +2 -2
- package/dist/components/ToolUseLoader.js +2 -2
- package/dist/components/ToolUseLoader.js.map +2 -2
- package/dist/components/TreeConnector.js +4 -3
- package/dist/components/TreeConnector.js.map +2 -2
- package/dist/components/TrustDialog.js +2 -1
- package/dist/components/TrustDialog.js.map +2 -2
- package/dist/components/binary-feedback/BinaryFeedbackView.js +2 -1
- package/dist/components/binary-feedback/BinaryFeedbackView.js.map +2 -2
- package/dist/components/messages/AssistantTextMessage.js +17 -9
- package/dist/components/messages/AssistantTextMessage.js.map +2 -2
- package/dist/components/messages/AssistantToolUseMessage.js +8 -4
- package/dist/components/messages/AssistantToolUseMessage.js.map +2 -2
- package/dist/components/messages/GroupRenderer.js +2 -1
- package/dist/components/messages/GroupRenderer.js.map +2 -2
- package/dist/components/messages/NestedTasksPreview.js +13 -1
- package/dist/components/messages/NestedTasksPreview.js.map +2 -2
- package/dist/components/messages/ParallelTasksGroupView.js +4 -3
- package/dist/components/messages/ParallelTasksGroupView.js.map +2 -2
- package/dist/components/messages/TaskInModuleView.js +35 -15
- package/dist/components/messages/TaskInModuleView.js.map +2 -2
- package/dist/components/messages/TaskOutputContent.js +9 -6
- package/dist/components/messages/TaskOutputContent.js.map +2 -2
- package/dist/components/messages/UserPromptMessage.js +2 -2
- package/dist/components/messages/UserPromptMessage.js.map +2 -2
- package/dist/constants/colors.js +90 -72
- package/dist/constants/colors.js.map +2 -2
- package/dist/constants/toolInputExamples.js +84 -0
- package/dist/constants/toolInputExamples.js.map +7 -0
- package/dist/core/backupManager.js +321 -0
- package/dist/core/backupManager.js.map +7 -0
- package/dist/core/costTracker.js +9 -18
- package/dist/core/costTracker.js.map +2 -2
- package/dist/core/gitAutoCommit.js +287 -0
- package/dist/core/gitAutoCommit.js.map +7 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +2 -2
- package/dist/core/operationTracker.js +212 -0
- package/dist/core/operationTracker.js.map +7 -0
- package/dist/core/permissions/rules/allowedToolsRule.js +1 -1
- package/dist/core/permissions/rules/allowedToolsRule.js.map +2 -2
- package/dist/core/permissions/rules/autoEscalationRule.js +5 -0
- package/dist/core/permissions/rules/autoEscalationRule.js.map +2 -2
- package/dist/core/permissions/rules/projectBoundaryRule.js +5 -0
- package/dist/core/permissions/rules/projectBoundaryRule.js.map +2 -2
- package/dist/core/permissions/rules/sensitivePathsRule.js +5 -0
- package/dist/core/permissions/rules/sensitivePathsRule.js.map +2 -2
- package/dist/core/tokenStats.js +9 -0
- package/dist/core/tokenStats.js.map +7 -0
- package/dist/core/tokenStatsManager.js +331 -0
- package/dist/core/tokenStatsManager.js.map +7 -0
- package/dist/entrypoints/cli.js +115 -87
- package/dist/entrypoints/cli.js.map +2 -2
- package/dist/hooks/useAgentTokenStats.js +72 -0
- package/dist/hooks/useAgentTokenStats.js.map +7 -0
- package/dist/hooks/useAgentTranscripts.js +30 -6
- package/dist/hooks/useAgentTranscripts.js.map +2 -2
- package/dist/hooks/useLogMessages.js +12 -1
- package/dist/hooks/useLogMessages.js.map +2 -2
- package/dist/i18n/locales/en.js +6 -5
- package/dist/i18n/locales/en.js.map +2 -2
- package/dist/i18n/locales/zh-CN.js +6 -5
- package/dist/i18n/locales/zh-CN.js.map +2 -2
- package/dist/i18n/types.js.map +1 -1
- package/dist/permissions.js +28 -1
- package/dist/permissions.js.map +2 -2
- package/dist/query.js +78 -4
- package/dist/query.js.map +3 -3
- package/dist/screens/REPL.js +23 -3
- package/dist/screens/REPL.js.map +2 -2
- package/dist/services/claude.js +54 -3
- package/dist/services/claude.js.map +2 -2
- package/dist/services/intelligentCompactor.js +1 -1
- package/dist/services/intelligentCompactor.js.map +2 -2
- package/dist/services/mcpClient.js +81 -25
- package/dist/services/mcpClient.js.map +2 -2
- package/dist/services/sandbox/filesystemBoundary.js +58 -17
- package/dist/services/sandbox/filesystemBoundary.js.map +2 -2
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js +3 -2
- package/dist/tools/AskExpertModelTool/AskExpertModelTool.js.map +2 -2
- package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js +2 -1
- package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js.map +2 -2
- package/dist/tools/BashTool/BashTool.js +22 -3
- package/dist/tools/BashTool/BashTool.js.map +2 -2
- package/dist/tools/BashTool/prompt.js +178 -34
- package/dist/tools/BashTool/prompt.js.map +2 -2
- package/dist/tools/FileEditTool/prompt.js +6 -3
- package/dist/tools/FileEditTool/prompt.js.map +2 -2
- package/dist/tools/FileWriteTool/prompt.js +4 -2
- package/dist/tools/FileWriteTool/prompt.js.map +2 -2
- package/dist/tools/MultiEditTool/prompt.js +5 -3
- package/dist/tools/MultiEditTool/prompt.js.map +2 -2
- package/dist/tools/NotebookEditTool/NotebookEditTool.js +2 -1
- package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +2 -2
- package/dist/tools/PlanModeTool/EnterPlanModeTool.js +3 -2
- package/dist/tools/PlanModeTool/EnterPlanModeTool.js.map +2 -2
- package/dist/tools/PlanModeTool/ExitPlanModeTool.js +3 -2
- package/dist/tools/PlanModeTool/ExitPlanModeTool.js.map +2 -2
- package/dist/tools/PlanModeTool/prompt.js +1 -1
- package/dist/tools/PlanModeTool/prompt.js.map +1 -1
- package/dist/tools/SkillTool/SkillTool.js +4 -3
- package/dist/tools/SkillTool/SkillTool.js.map +2 -2
- package/dist/tools/SkillTool/prompt.js +1 -1
- package/dist/tools/SkillTool/prompt.js.map +1 -1
- package/dist/tools/TaskOutputTool/TaskOutputTool.js +3 -2
- package/dist/tools/TaskOutputTool/TaskOutputTool.js.map +2 -2
- package/dist/tools/TaskTool/TaskTool.js +8 -0
- package/dist/tools/TaskTool/TaskTool.js.map +2 -2
- package/dist/utils/CircuitBreaker.js +242 -0
- package/dist/utils/CircuitBreaker.js.map +7 -0
- package/dist/utils/ask.js +2 -0
- package/dist/utils/ask.js.map +2 -2
- package/dist/utils/config.js +47 -5
- package/dist/utils/config.js.map +2 -2
- package/dist/utils/credentials/CredentialStore.js +1 -0
- package/dist/utils/credentials/CredentialStore.js.map +7 -0
- package/dist/utils/credentials/EncryptedFileStore.js +157 -0
- package/dist/utils/credentials/EncryptedFileStore.js.map +7 -0
- package/dist/utils/credentials/index.js +37 -0
- package/dist/utils/credentials/index.js.map +7 -0
- package/dist/utils/credentials/migration.js +82 -0
- package/dist/utils/credentials/migration.js.map +7 -0
- package/dist/utils/markdown.js +13 -1
- package/dist/utils/markdown.js.map +2 -2
- package/dist/utils/permissions/filesystem.js +5 -1
- package/dist/utils/permissions/filesystem.js.map +2 -2
- package/dist/utils/safePath.js +132 -0
- package/dist/utils/safePath.js.map +7 -0
- package/dist/utils/sensitiveFiles.js +125 -0
- package/dist/utils/sensitiveFiles.js.map +7 -0
- package/dist/utils/taskDisplayUtils.js +9 -9
- package/dist/utils/taskDisplayUtils.js.map +2 -2
- package/dist/utils/theme.js +6 -6
- package/dist/utils/theme.js.map +1 -1
- package/dist/utils/toolRiskClassification.js +207 -0
- package/dist/utils/toolRiskClassification.js.map +7 -0
- package/dist/utils/tooling/safeRender.js +5 -4
- package/dist/utils/tooling/safeRender.js.map +2 -2
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- package/package.json +9 -7
- package/dist/hooks/useCancelRequest.js +0 -31
- package/dist/hooks/useCancelRequest.js.map +0 -7
package/dist/utils/theme.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getGlobalConfig } from "./config.js";
|
|
2
2
|
const lightTheme = {
|
|
3
3
|
bashBorder: "#FF6E57",
|
|
4
|
-
minto: "#
|
|
4
|
+
minto: "#B668C8",
|
|
5
5
|
noting: "#222222",
|
|
6
6
|
permission: "#e9c61aff",
|
|
7
7
|
secondaryBorder: "#999",
|
|
@@ -19,7 +19,7 @@ const lightTheme = {
|
|
|
19
19
|
addedDimmed: "#c7e1cb",
|
|
20
20
|
removedDimmed: "#fdd2d8"
|
|
21
21
|
},
|
|
22
|
-
brand: "#
|
|
22
|
+
brand: "#667EEA",
|
|
23
23
|
dimmedText: "#888",
|
|
24
24
|
mutedText: "#999",
|
|
25
25
|
secondaryTextNew: "#666",
|
|
@@ -30,7 +30,7 @@ const lightTheme = {
|
|
|
30
30
|
};
|
|
31
31
|
const lightDaltonizedTheme = {
|
|
32
32
|
bashBorder: "#FF6E57",
|
|
33
|
-
minto: "#
|
|
33
|
+
minto: "#B668C8",
|
|
34
34
|
noting: "#222222",
|
|
35
35
|
permission: "#3366ff",
|
|
36
36
|
secondaryBorder: "#999",
|
|
@@ -59,7 +59,7 @@ const lightDaltonizedTheme = {
|
|
|
59
59
|
};
|
|
60
60
|
const darkTheme = {
|
|
61
61
|
bashBorder: "#FF6E57",
|
|
62
|
-
minto: "#
|
|
62
|
+
minto: "#B668C8",
|
|
63
63
|
noting: "#222222",
|
|
64
64
|
permission: "#b1b9f9",
|
|
65
65
|
secondaryBorder: "#888",
|
|
@@ -77,7 +77,7 @@ const darkTheme = {
|
|
|
77
77
|
addedDimmed: "#47584a",
|
|
78
78
|
removedDimmed: "#69484d"
|
|
79
79
|
},
|
|
80
|
-
brand: "#
|
|
80
|
+
brand: "#667EEA",
|
|
81
81
|
dimmedText: "#666",
|
|
82
82
|
mutedText: "#555",
|
|
83
83
|
secondaryTextNew: "#999",
|
|
@@ -88,7 +88,7 @@ const darkTheme = {
|
|
|
88
88
|
};
|
|
89
89
|
const darkDaltonizedTheme = {
|
|
90
90
|
bashBorder: "#FF6E57",
|
|
91
|
-
minto: "#
|
|
91
|
+
minto: "#B668C8",
|
|
92
92
|
noting: "#222222",
|
|
93
93
|
permission: "#99ccff",
|
|
94
94
|
secondaryBorder: "#888",
|
package/dist/utils/theme.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/theme.ts"],
|
|
4
|
-
"sourcesContent": ["import { getGlobalConfig } from './config'\n\nexport interface Theme {\n bashBorder: string\n minto: string\n noting: string\n permission: string\n secondaryBorder: string\n text: string\n secondaryText: string\n suggestion: string\n success: string\n error: string\n warning: string\n primary: string\n secondary: string\n diff: {\n added: string\n removed: string\n addedDimmed: string\n removedDimmed: string\n }\n // Additional color properties used in components\n brand: string\n dimmedText: string\n mutedText: string\n secondaryTextNew: string\n selectionBg: string\n info: string\n dim: string\n primaryText: string\n}\n\nconst lightTheme: Theme = {\n bashBorder: '#FF6E57',\n minto: '#
|
|
4
|
+
"sourcesContent": ["import { getGlobalConfig } from './config'\n\nexport interface Theme {\n bashBorder: string\n minto: string\n noting: string\n permission: string\n secondaryBorder: string\n text: string\n secondaryText: string\n suggestion: string\n success: string\n error: string\n warning: string\n primary: string\n secondary: string\n diff: {\n added: string\n removed: string\n addedDimmed: string\n removedDimmed: string\n }\n // Additional color properties used in components\n brand: string\n dimmedText: string\n mutedText: string\n secondaryTextNew: string\n selectionBg: string\n info: string\n dim: string\n primaryText: string\n}\n\nconst lightTheme: Theme = {\n bashBorder: '#FF6E57',\n minto: '#B668C8',\n noting: '#222222',\n permission: '#e9c61aff',\n secondaryBorder: '#999',\n text: '#000',\n secondaryText: '#666',\n suggestion: '#32e98aff',\n success: '#2c7a39',\n error: '#ab2b3f',\n warning: '#966c1e',\n primary: '#000',\n secondary: '#666',\n diff: {\n added: '#69db7c',\n removed: '#ffa8b4',\n addedDimmed: '#c7e1cb',\n removedDimmed: '#fdd2d8',\n },\n brand: '#667EEA',\n dimmedText: '#888',\n mutedText: '#999',\n secondaryTextNew: '#666',\n selectionBg: '#3C3C3C',\n info: '#3399ff',\n dim: '#aaa',\n primaryText: '#000',\n}\n\nconst lightDaltonizedTheme: Theme = {\n bashBorder: '#FF6E57',\n minto: '#B668C8',\n noting: '#222222',\n permission: '#3366ff',\n secondaryBorder: '#999',\n text: '#000',\n secondaryText: '#666',\n suggestion: '#3366ff',\n success: '#006699',\n error: '#cc0000',\n warning: '#ff9900',\n primary: '#000',\n secondary: '#666',\n diff: {\n added: '#99ccff',\n removed: '#ffcccc',\n addedDimmed: '#d1e7fd',\n removedDimmed: '#ffe9e9',\n },\n brand: '#3366ff',\n dimmedText: '#888',\n mutedText: '#999',\n secondaryTextNew: '#666',\n selectionBg: '#3C3C3C',\n info: '#3366ff',\n dim: '#aaa',\n primaryText: '#000',\n}\n\nconst darkTheme: Theme = {\n bashBorder: '#FF6E57',\n minto: '#B668C8',\n noting: '#222222',\n permission: '#b1b9f9',\n secondaryBorder: '#888',\n text: '#fff',\n secondaryText: '#999',\n suggestion: '#b1b9f9',\n success: '#4eba65',\n error: '#ff6b80',\n warning: '#ffc107',\n primary: '#fff',\n secondary: '#999',\n diff: {\n added: '#225c2b',\n removed: '#7a2936',\n addedDimmed: '#47584a',\n removedDimmed: '#69484d',\n },\n brand: '#667EEA',\n dimmedText: '#666',\n mutedText: '#555',\n secondaryTextNew: '#999',\n selectionBg: '#3C3C3C',\n info: '#5DADE2',\n dim: '#444',\n primaryText: '#fff',\n}\n\nconst darkDaltonizedTheme: Theme = {\n bashBorder: '#FF6E57',\n minto: '#B668C8',\n noting: '#222222',\n permission: '#99ccff',\n secondaryBorder: '#888',\n text: '#fff',\n secondaryText: '#999',\n suggestion: '#99ccff',\n success: '#3399ff',\n error: '#ff6666',\n warning: '#ffcc00',\n primary: '#fff',\n secondary: '#999',\n diff: {\n added: '#004466',\n removed: '#660000',\n addedDimmed: '#3e515b',\n removedDimmed: '#3e2c2c',\n },\n brand: '#99ccff',\n dimmedText: '#666',\n mutedText: '#555',\n secondaryTextNew: '#999',\n selectionBg: '#3C3C3C',\n info: '#99ccff',\n dim: '#444',\n primaryText: '#fff',\n}\n\nexport type ThemeNames =\n | 'dark'\n | 'light'\n | 'light-daltonized'\n | 'dark-daltonized'\n\nexport function getTheme(overrideTheme?: ThemeNames): Theme {\n const config = getGlobalConfig()\n switch (overrideTheme ?? config.theme) {\n case 'light':\n return lightTheme\n case 'light-daltonized':\n return lightDaltonizedTheme\n case 'dark-daltonized':\n return darkDaltonizedTheme\n default:\n return darkTheme\n }\n}\n"],
|
|
5
5
|
"mappings": "AAAA,SAAS,uBAAuB;AAiChC,MAAM,aAAoB;AAAA,EACxB,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,IACb,eAAe;AAAA,EACjB;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,MAAM;AAAA,EACN,KAAK;AAAA,EACL,aAAa;AACf;AAEA,MAAM,uBAA8B;AAAA,EAClC,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,IACb,eAAe;AAAA,EACjB;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,MAAM;AAAA,EACN,KAAK;AAAA,EACL,aAAa;AACf;AAEA,MAAM,YAAmB;AAAA,EACvB,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,IACb,eAAe;AAAA,EACjB;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,MAAM;AAAA,EACN,KAAK;AAAA,EACL,aAAa;AACf;AAEA,MAAM,sBAA6B;AAAA,EACjC,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,IACb,eAAe;AAAA,EACjB;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,MAAM;AAAA,EACN,KAAK;AAAA,EACL,aAAa;AACf;AAQO,SAAS,SAAS,eAAmC;AAC1D,QAAM,SAAS,gBAAgB;AAC/B,UAAQ,iBAAiB,OAAO,OAAO;AAAA,IACrC,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
const TOOL_RISK_LEVELS = {
|
|
2
|
+
// 🟢 Safe layer: Read-only, no side effects
|
|
3
|
+
Read: "safe",
|
|
4
|
+
Glob: "safe",
|
|
5
|
+
Grep: "safe",
|
|
6
|
+
LS: "safe",
|
|
7
|
+
WebSearch: "safe",
|
|
8
|
+
WebFetch: "safe",
|
|
9
|
+
Think: "safe",
|
|
10
|
+
AskUserQuestion: "safe",
|
|
11
|
+
MemoryRead: "safe",
|
|
12
|
+
NotebookRead: "safe",
|
|
13
|
+
TaskOutput: "safe",
|
|
14
|
+
EnterPlanMode: "safe",
|
|
15
|
+
ExitPlanMode: "safe",
|
|
16
|
+
TaskList: "safe",
|
|
17
|
+
TaskGet: "safe",
|
|
18
|
+
Skill: "safe",
|
|
19
|
+
// 🟡 Monitored layer: Has side effects but reversible/low risk
|
|
20
|
+
Edit: "monitored",
|
|
21
|
+
Write: "monitored",
|
|
22
|
+
NotebookEdit: "monitored",
|
|
23
|
+
MemoryWrite: "monitored",
|
|
24
|
+
TodoWrite: "monitored",
|
|
25
|
+
Task: "monitored",
|
|
26
|
+
TaskCreate: "monitored",
|
|
27
|
+
TaskUpdate: "monitored",
|
|
28
|
+
TaskStop: "monitored",
|
|
29
|
+
// 🔴 Dangerous layer: Requires confirmation (Bash handled separately)
|
|
30
|
+
Bash: "dangerous",
|
|
31
|
+
MCPTool: "dangerous"
|
|
32
|
+
};
|
|
33
|
+
const SAFE_BASH_PATTERNS = [
|
|
34
|
+
// Git - all common operations
|
|
35
|
+
/^git\s+(status|diff|log|branch|show|remote|fetch|pull|push|commit|add|checkout|merge|rebase|stash|tag|clone|init|config|rev-parse|symbolic-ref)/i,
|
|
36
|
+
// File viewing (read-only)
|
|
37
|
+
/^ls(\s|$)/i,
|
|
38
|
+
/^cat\s/i,
|
|
39
|
+
/^head\s/i,
|
|
40
|
+
/^tail\s/i,
|
|
41
|
+
/^pwd$/i,
|
|
42
|
+
/^echo\s/i,
|
|
43
|
+
/^which\s/i,
|
|
44
|
+
/^tree(\s|$)/i,
|
|
45
|
+
/^date$/i,
|
|
46
|
+
/^whoami$/i,
|
|
47
|
+
/^find\s/i,
|
|
48
|
+
/^wc\s/i,
|
|
49
|
+
/^grep\s/i,
|
|
50
|
+
/^rg\s/i,
|
|
51
|
+
/^less\s/i,
|
|
52
|
+
/^more\s/i,
|
|
53
|
+
/^file\s/i,
|
|
54
|
+
/^stat\s/i,
|
|
55
|
+
/^du\s/i,
|
|
56
|
+
/^df\s/i,
|
|
57
|
+
// Package managers - common development operations
|
|
58
|
+
/^npm\s+(install|i|ci|run|test|start|build|list|ls|outdated|view|info|init|publish|pack|version|audit|dedupe)/i,
|
|
59
|
+
/^npx\s/i,
|
|
60
|
+
/^bun\s+(install|i|add|remove|run|test|build|pm|create|init|link|unlink|update|outdated)/i,
|
|
61
|
+
/^bunx\s/i,
|
|
62
|
+
/^yarn\s+(install|add|remove|run|test|build|init|create|link|unlink|upgrade|outdated)/i,
|
|
63
|
+
/^pnpm\s+(install|i|add|remove|run|test|build|init|create|link|unlink|update|outdated)/i,
|
|
64
|
+
/^pip\s+(install|list|show|freeze|check)/i,
|
|
65
|
+
/^pip3\s+(install|list|show|freeze|check)/i,
|
|
66
|
+
/^poetry\s+(install|add|remove|run|build|init|check|show)/i,
|
|
67
|
+
/^cargo\s+(build|run|test|check|clippy|fmt|doc|bench|new|init|add|remove)/i,
|
|
68
|
+
/^go\s+(build|run|test|get|mod|fmt|vet|generate)/i,
|
|
69
|
+
/^composer\s+(install|require|remove|update|dump-autoload)/i,
|
|
70
|
+
/^gem\s+(install|list|update)/i,
|
|
71
|
+
/^bundle\s+(install|exec|update)/i,
|
|
72
|
+
// Version queries
|
|
73
|
+
/^(node|npm|bun|yarn|pnpm|python|python3|pip|pip3|cargo|rustc|go|java|ruby|php)\s+(--version|-v|-V)$/i,
|
|
74
|
+
/^(node|npm|bun|yarn|pnpm|python|python3|pip|pip3|cargo|rustc|go|java|ruby|php)\s+-version$/i,
|
|
75
|
+
// Build and test tools
|
|
76
|
+
/^make(\s|$)/i,
|
|
77
|
+
/^cmake\s/i,
|
|
78
|
+
/^ninja(\s|$)/i,
|
|
79
|
+
/^pytest(\s|$)/i,
|
|
80
|
+
/^jest(\s|$)/i,
|
|
81
|
+
/^vitest(\s|$)/i,
|
|
82
|
+
/^mocha(\s|$)/i,
|
|
83
|
+
/^ava(\s|$)/i,
|
|
84
|
+
/^tape(\s|$)/i,
|
|
85
|
+
/^tap(\s|$)/i,
|
|
86
|
+
/^tsc(\s|$)/i,
|
|
87
|
+
/^eslint(\s|$)/i,
|
|
88
|
+
/^prettier(\s|$)/i,
|
|
89
|
+
/^biome(\s|$)/i,
|
|
90
|
+
// Docker (read-only and common operations)
|
|
91
|
+
/^docker\s+(ps|images|logs|inspect|version|info|stats|top|port|diff)/i,
|
|
92
|
+
/^docker\s+(build|run|exec|pull|push|start|stop|restart)/i,
|
|
93
|
+
/^docker-compose\s+(ps|logs|config|up|down|build|pull|restart)/i,
|
|
94
|
+
// Kubernetes (read-only)
|
|
95
|
+
/^kubectl\s+(get|describe|logs|explain|version|config|cluster-info)/i,
|
|
96
|
+
// Environment and shell
|
|
97
|
+
/^env$/i,
|
|
98
|
+
/^printenv/i,
|
|
99
|
+
/^export\s/i,
|
|
100
|
+
/^source\s/i,
|
|
101
|
+
/^\.\s/i,
|
|
102
|
+
// Process viewing
|
|
103
|
+
/^ps(\s|$)/i,
|
|
104
|
+
/^top$/i,
|
|
105
|
+
/^htop$/i,
|
|
106
|
+
// Network diagnostics (read-only)
|
|
107
|
+
/^ping\s/i,
|
|
108
|
+
/^traceroute\s/i,
|
|
109
|
+
/^dig\s/i,
|
|
110
|
+
/^nslookup\s/i,
|
|
111
|
+
/^host\s/i,
|
|
112
|
+
/^ifconfig$/i,
|
|
113
|
+
/^ip\s+(addr|link|route)/i,
|
|
114
|
+
// Archive viewing
|
|
115
|
+
/^tar\s+(-t|--list)/i,
|
|
116
|
+
/^unzip\s+-l/i,
|
|
117
|
+
/^zipinfo\s/i,
|
|
118
|
+
// Text processing
|
|
119
|
+
/^sort(\s|$)/i,
|
|
120
|
+
/^uniq(\s|$)/i,
|
|
121
|
+
/^cut(\s|$)/i,
|
|
122
|
+
/^awk\s/i,
|
|
123
|
+
/^sed\s/i,
|
|
124
|
+
/^tr\s/i,
|
|
125
|
+
/^diff\s/i,
|
|
126
|
+
/^md5sum\s/i,
|
|
127
|
+
/^sha256sum\s/i,
|
|
128
|
+
// Directory operations (safe)
|
|
129
|
+
/^mkdir\s/i,
|
|
130
|
+
/^touch\s/i,
|
|
131
|
+
/^cp\s/i,
|
|
132
|
+
/^mv\s/i
|
|
133
|
+
];
|
|
134
|
+
const DANGEROUS_BASH_PATTERNS = [
|
|
135
|
+
// File deletion
|
|
136
|
+
/\brm\s/i,
|
|
137
|
+
/\brmdir\s/i,
|
|
138
|
+
/\bunlink\s/i,
|
|
139
|
+
// Privilege escalation
|
|
140
|
+
/\bsudo\s/i,
|
|
141
|
+
/\bsu\s/i,
|
|
142
|
+
/\bdoas\s/i,
|
|
143
|
+
/\bpkexec\s/i,
|
|
144
|
+
// Permission changes
|
|
145
|
+
/\bchmod\s/i,
|
|
146
|
+
/\bchown\s/i,
|
|
147
|
+
/\bchgrp\s/i,
|
|
148
|
+
// Disk operations
|
|
149
|
+
/\bmkfs\b/i,
|
|
150
|
+
/\bfdisk\s/i,
|
|
151
|
+
/\bparted\s/i,
|
|
152
|
+
/\bdd\s+if=/i,
|
|
153
|
+
/\bshred\s/i,
|
|
154
|
+
// System control
|
|
155
|
+
/\bsystemctl\s/i,
|
|
156
|
+
/\bservice\s/i,
|
|
157
|
+
/\breboot\b/i,
|
|
158
|
+
/\bshutdown\s/i,
|
|
159
|
+
/\bhalt\b/i,
|
|
160
|
+
/\bpoweroff\b/i,
|
|
161
|
+
// Dangerous redirections
|
|
162
|
+
/>\s*\/(?!tmp|dev\/null)/i,
|
|
163
|
+
// Redirect to root paths (except /tmp and /dev/null)
|
|
164
|
+
/>\s*~\//i,
|
|
165
|
+
// Redirect to home directory paths
|
|
166
|
+
// Shell execution from network
|
|
167
|
+
/\|\s*(bash|sh|zsh|fish)/i,
|
|
168
|
+
/curl.*\|\s*(bash|sh)/i,
|
|
169
|
+
/wget.*\|\s*(bash|sh)/i,
|
|
170
|
+
// Environment destruction
|
|
171
|
+
/\bkillall\s/i,
|
|
172
|
+
/\bpkill\s/i,
|
|
173
|
+
/kill\s+-9/i,
|
|
174
|
+
// Network dangerous
|
|
175
|
+
/\bnc\s+-l/i,
|
|
176
|
+
// netcat listen mode
|
|
177
|
+
/\biptables\s/i,
|
|
178
|
+
/\bufw\s/i,
|
|
179
|
+
// Crontab
|
|
180
|
+
/\bcrontab\s+-r/i,
|
|
181
|
+
// Git destructive
|
|
182
|
+
/\bgit\s+(reset\s+--hard|clean\s+-f|push\s+--force|push\s+-f)/i
|
|
183
|
+
];
|
|
184
|
+
function classifyBashCommand(command) {
|
|
185
|
+
const normalizedCommand = command.trim().replace(/\s+/g, " ");
|
|
186
|
+
if (DANGEROUS_BASH_PATTERNS.some((p) => p.test(normalizedCommand))) {
|
|
187
|
+
return "dangerous";
|
|
188
|
+
}
|
|
189
|
+
if (SAFE_BASH_PATTERNS.some((p) => p.test(normalizedCommand))) {
|
|
190
|
+
return "safe";
|
|
191
|
+
}
|
|
192
|
+
return "monitored";
|
|
193
|
+
}
|
|
194
|
+
function getToolRiskLevel(toolName, input) {
|
|
195
|
+
if (toolName === "Bash" && input?.command) {
|
|
196
|
+
return classifyBashCommand(input.command);
|
|
197
|
+
}
|
|
198
|
+
return TOOL_RISK_LEVELS[toolName] ?? "dangerous";
|
|
199
|
+
}
|
|
200
|
+
export {
|
|
201
|
+
DANGEROUS_BASH_PATTERNS,
|
|
202
|
+
SAFE_BASH_PATTERNS,
|
|
203
|
+
TOOL_RISK_LEVELS,
|
|
204
|
+
classifyBashCommand,
|
|
205
|
+
getToolRiskLevel
|
|
206
|
+
};
|
|
207
|
+
//# sourceMappingURL=toolRiskClassification.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/toolRiskClassification.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Tool Risk Classification System\n *\n * Classifies tools into three risk levels for the Smart Safety Mode:\n * - safe: Read-only operations, no side effects\n * - monitored: Has side effects but reversible/low risk\n * - dangerous: Potentially destructive, requires confirmation\n */\n\nexport type RiskLevel = 'safe' | 'monitored' | 'dangerous'\n\n/**\n * Default risk levels for each tool type\n */\nexport const TOOL_RISK_LEVELS: Record<string, RiskLevel> = {\n // \uD83D\uDFE2 Safe layer: Read-only, no side effects\n Read: 'safe',\n Glob: 'safe',\n Grep: 'safe',\n LS: 'safe',\n WebSearch: 'safe',\n WebFetch: 'safe',\n Think: 'safe',\n AskUserQuestion: 'safe',\n MemoryRead: 'safe',\n NotebookRead: 'safe',\n TaskOutput: 'safe',\n EnterPlanMode: 'safe',\n ExitPlanMode: 'safe',\n TaskList: 'safe',\n TaskGet: 'safe',\n Skill: 'safe',\n\n // \uD83D\uDFE1 Monitored layer: Has side effects but reversible/low risk\n Edit: 'monitored',\n Write: 'monitored',\n NotebookEdit: 'monitored',\n MemoryWrite: 'monitored',\n TodoWrite: 'monitored',\n Task: 'monitored',\n TaskCreate: 'monitored',\n TaskUpdate: 'monitored',\n TaskStop: 'monitored',\n\n // \uD83D\uDD34 Dangerous layer: Requires confirmation (Bash handled separately)\n Bash: 'dangerous',\n MCPTool: 'dangerous',\n}\n\n/**\n * Safe Bash command patterns - automatically allowed even in Smart/Strict mode\n * These patterns match common development commands that are low-risk\n */\nexport const SAFE_BASH_PATTERNS: RegExp[] = [\n // Git - all common operations\n /^git\\s+(status|diff|log|branch|show|remote|fetch|pull|push|commit|add|checkout|merge|rebase|stash|tag|clone|init|config|rev-parse|symbolic-ref)/i,\n\n // File viewing (read-only)\n /^ls(\\s|$)/i,\n /^cat\\s/i,\n /^head\\s/i,\n /^tail\\s/i,\n /^pwd$/i,\n /^echo\\s/i,\n /^which\\s/i,\n /^tree(\\s|$)/i,\n /^date$/i,\n /^whoami$/i,\n /^find\\s/i,\n /^wc\\s/i,\n /^grep\\s/i,\n /^rg\\s/i,\n /^less\\s/i,\n /^more\\s/i,\n /^file\\s/i,\n /^stat\\s/i,\n /^du\\s/i,\n /^df\\s/i,\n\n // Package managers - common development operations\n /^npm\\s+(install|i|ci|run|test|start|build|list|ls|outdated|view|info|init|publish|pack|version|audit|dedupe)/i,\n /^npx\\s/i,\n /^bun\\s+(install|i|add|remove|run|test|build|pm|create|init|link|unlink|update|outdated)/i,\n /^bunx\\s/i,\n /^yarn\\s+(install|add|remove|run|test|build|init|create|link|unlink|upgrade|outdated)/i,\n /^pnpm\\s+(install|i|add|remove|run|test|build|init|create|link|unlink|update|outdated)/i,\n /^pip\\s+(install|list|show|freeze|check)/i,\n /^pip3\\s+(install|list|show|freeze|check)/i,\n /^poetry\\s+(install|add|remove|run|build|init|check|show)/i,\n /^cargo\\s+(build|run|test|check|clippy|fmt|doc|bench|new|init|add|remove)/i,\n /^go\\s+(build|run|test|get|mod|fmt|vet|generate)/i,\n /^composer\\s+(install|require|remove|update|dump-autoload)/i,\n /^gem\\s+(install|list|update)/i,\n /^bundle\\s+(install|exec|update)/i,\n\n // Version queries\n /^(node|npm|bun|yarn|pnpm|python|python3|pip|pip3|cargo|rustc|go|java|ruby|php)\\s+(--version|-v|-V)$/i,\n /^(node|npm|bun|yarn|pnpm|python|python3|pip|pip3|cargo|rustc|go|java|ruby|php)\\s+-version$/i,\n\n // Build and test tools\n /^make(\\s|$)/i,\n /^cmake\\s/i,\n /^ninja(\\s|$)/i,\n /^pytest(\\s|$)/i,\n /^jest(\\s|$)/i,\n /^vitest(\\s|$)/i,\n /^mocha(\\s|$)/i,\n /^ava(\\s|$)/i,\n /^tape(\\s|$)/i,\n /^tap(\\s|$)/i,\n /^tsc(\\s|$)/i,\n /^eslint(\\s|$)/i,\n /^prettier(\\s|$)/i,\n /^biome(\\s|$)/i,\n\n // Docker (read-only and common operations)\n /^docker\\s+(ps|images|logs|inspect|version|info|stats|top|port|diff)/i,\n /^docker\\s+(build|run|exec|pull|push|start|stop|restart)/i,\n /^docker-compose\\s+(ps|logs|config|up|down|build|pull|restart)/i,\n\n // Kubernetes (read-only)\n /^kubectl\\s+(get|describe|logs|explain|version|config|cluster-info)/i,\n\n // Environment and shell\n /^env$/i,\n /^printenv/i,\n /^export\\s/i,\n /^source\\s/i,\n /^\\.\\s/i,\n\n // Process viewing\n /^ps(\\s|$)/i,\n /^top$/i,\n /^htop$/i,\n\n // Network diagnostics (read-only)\n /^ping\\s/i,\n /^traceroute\\s/i,\n /^dig\\s/i,\n /^nslookup\\s/i,\n /^host\\s/i,\n /^ifconfig$/i,\n /^ip\\s+(addr|link|route)/i,\n\n // Archive viewing\n /^tar\\s+(-t|--list)/i,\n /^unzip\\s+-l/i,\n /^zipinfo\\s/i,\n\n // Text processing\n /^sort(\\s|$)/i,\n /^uniq(\\s|$)/i,\n /^cut(\\s|$)/i,\n /^awk\\s/i,\n /^sed\\s/i,\n /^tr\\s/i,\n /^diff\\s/i,\n /^md5sum\\s/i,\n /^sha256sum\\s/i,\n\n // Directory operations (safe)\n /^mkdir\\s/i,\n /^touch\\s/i,\n /^cp\\s/i,\n /^mv\\s/i,\n]\n\n/**\n * Dangerous Bash command patterns - always require confirmation\n * These patterns match potentially destructive commands\n */\nexport const DANGEROUS_BASH_PATTERNS: RegExp[] = [\n // File deletion\n /\\brm\\s/i,\n /\\brmdir\\s/i,\n /\\bunlink\\s/i,\n\n // Privilege escalation\n /\\bsudo\\s/i,\n /\\bsu\\s/i,\n /\\bdoas\\s/i,\n /\\bpkexec\\s/i,\n\n // Permission changes\n /\\bchmod\\s/i,\n /\\bchown\\s/i,\n /\\bchgrp\\s/i,\n\n // Disk operations\n /\\bmkfs\\b/i,\n /\\bfdisk\\s/i,\n /\\bparted\\s/i,\n /\\bdd\\s+if=/i,\n /\\bshred\\s/i,\n\n // System control\n /\\bsystemctl\\s/i,\n /\\bservice\\s/i,\n /\\breboot\\b/i,\n /\\bshutdown\\s/i,\n /\\bhalt\\b/i,\n /\\bpoweroff\\b/i,\n\n // Dangerous redirections\n />\\s*\\/(?!tmp|dev\\/null)/i, // Redirect to root paths (except /tmp and /dev/null)\n />\\s*~\\//i, // Redirect to home directory paths\n\n // Shell execution from network\n /\\|\\s*(bash|sh|zsh|fish)/i,\n /curl.*\\|\\s*(bash|sh)/i,\n /wget.*\\|\\s*(bash|sh)/i,\n\n // Environment destruction\n /\\bkillall\\s/i,\n /\\bpkill\\s/i,\n /kill\\s+-9/i,\n\n // Network dangerous\n /\\bnc\\s+-l/i, // netcat listen mode\n /\\biptables\\s/i,\n /\\bufw\\s/i,\n\n // Crontab\n /\\bcrontab\\s+-r/i,\n\n // Git destructive\n /\\bgit\\s+(reset\\s+--hard|clean\\s+-f|push\\s+--force|push\\s+-f)/i,\n]\n\n/**\n * Classify a Bash command into a risk level\n *\n * @param command The bash command to classify\n * @returns The risk level of the command\n */\nexport function classifyBashCommand(command: string): RiskLevel {\n // Trim and normalize whitespace\n const normalizedCommand = command.trim().replace(/\\s+/g, ' ')\n\n // Check dangerous patterns first (higher priority)\n if (DANGEROUS_BASH_PATTERNS.some(p => p.test(normalizedCommand))) {\n return 'dangerous'\n }\n\n // Check safe patterns\n if (SAFE_BASH_PATTERNS.some(p => p.test(normalizedCommand))) {\n return 'safe'\n }\n\n // Default to monitored (allows in Smart mode, asks in Strict mode)\n return 'monitored'\n}\n\n/**\n * Get the risk level for a tool\n *\n * @param toolName The name of the tool\n * @param input Optional tool input for command-specific classification\n * @returns The risk level of the tool\n */\nexport function getToolRiskLevel(\n toolName: string,\n input?: { command?: string },\n): RiskLevel {\n // Special handling for Bash commands\n if (toolName === 'Bash' && input?.command) {\n return classifyBashCommand(input.command)\n }\n\n // Look up in the static table\n return TOOL_RISK_LEVELS[toolName] ?? 'dangerous'\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
|
+
import { SEMANTIC_COLORS } from "../../constants/colors.js";
|
|
3
4
|
function DefaultToolResult({
|
|
4
5
|
output
|
|
5
6
|
}) {
|
|
@@ -18,14 +19,14 @@ function DefaultToolResult({
|
|
|
18
19
|
} else {
|
|
19
20
|
displayContent = String(output);
|
|
20
21
|
}
|
|
21
|
-
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, {
|
|
22
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, displayContent));
|
|
22
23
|
}
|
|
23
24
|
function ErrorToolResult({
|
|
24
25
|
error,
|
|
25
26
|
toolName
|
|
26
27
|
}) {
|
|
27
28
|
const errorMessage = error instanceof Error ? error.message : String(error || "Unknown error");
|
|
28
|
-
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, { color: "red" }, toolName ? `[${toolName}] ` : "", "Error rendering result:"), /* @__PURE__ */ React.createElement(Text, {
|
|
29
|
+
return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column" }, /* @__PURE__ */ React.createElement(Text, { color: "red" }, toolName ? `[${toolName}] ` : "", "Error rendering result:"), /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, errorMessage));
|
|
29
30
|
}
|
|
30
31
|
function safeRenderToolResult(tool, output, options) {
|
|
31
32
|
if (!tool) {
|
|
@@ -46,10 +47,10 @@ function safeRenderToolResult(tool, output, options) {
|
|
|
46
47
|
}
|
|
47
48
|
function safeRenderToolUseMessage(tool, input, options) {
|
|
48
49
|
if (!tool) {
|
|
49
|
-
return /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, {
|
|
50
|
+
return /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, "Unknown tool call"));
|
|
50
51
|
}
|
|
51
52
|
if (!tool.renderToolUseMessage) {
|
|
52
|
-
return /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, null, /* @__PURE__ */ React.createElement(Text, { color: "cyan" }, tool.name), options.verbose && /* @__PURE__ */ React.createElement(Text, {
|
|
53
|
+
return /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Text, null, /* @__PURE__ */ React.createElement(Text, { color: "cyan" }, tool.name), options.verbose && /* @__PURE__ */ React.createElement(Text, { color: SEMANTIC_COLORS.dim }, " ", JSON.stringify(input).slice(0, 100))));
|
|
53
54
|
}
|
|
54
55
|
try {
|
|
55
56
|
const rendered = tool.renderToolUseMessage(input, options);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/utils/tooling/safeRender.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * Safe Rendering Utilities for Tool Results\n *\n * Provides null-safe wrappers for tool rendering methods to prevent\n * crashes from undefined returns or exceptions.\n *\n * Part of Phase 1.3: Null Guards Completion\n */\n\nimport * as React from 'react'\nimport { Box, Text } from 'ink'\nimport { Tool } from '@tool'\n\n/**\n * Default tool result component when tool doesn't provide a renderer.\n */\nexport function DefaultToolResult({\n output,\n}: {\n output: unknown\n}): React.ReactElement {\n let displayContent: string\n\n if (output === null || output === undefined) {\n displayContent = '(no output)'\n } else if (typeof output === 'string') {\n displayContent = output.length > 500 ? output.slice(0, 500) + '...' : output\n } else if (typeof output === 'object') {\n try {\n const json = JSON.stringify(output, null, 2)\n displayContent = json.length > 500 ? json.slice(0, 500) + '...' : json\n } catch {\n displayContent = '[Object - cannot stringify]'\n }\n } else {\n displayContent = String(output)\n }\n\n return (\n <Box flexDirection=\"column\">\n <Text
|
|
5
|
-
"mappings": "AASA,YAAY,WAAW;AACvB,SAAS,KAAK,YAAY;
|
|
4
|
+
"sourcesContent": ["/**\n * Safe Rendering Utilities for Tool Results\n *\n * Provides null-safe wrappers for tool rendering methods to prevent\n * crashes from undefined returns or exceptions.\n *\n * Part of Phase 1.3: Null Guards Completion\n */\n\nimport * as React from 'react'\nimport { Box, Text } from 'ink'\nimport { Tool } from '@tool'\nimport { SEMANTIC_COLORS } from '@constants/colors'\n\n/**\n * Default tool result component when tool doesn't provide a renderer.\n */\nexport function DefaultToolResult({\n output,\n}: {\n output: unknown\n}): React.ReactElement {\n let displayContent: string\n\n if (output === null || output === undefined) {\n displayContent = '(no output)'\n } else if (typeof output === 'string') {\n displayContent = output.length > 500 ? output.slice(0, 500) + '...' : output\n } else if (typeof output === 'object') {\n try {\n const json = JSON.stringify(output, null, 2)\n displayContent = json.length > 500 ? json.slice(0, 500) + '...' : json\n } catch {\n displayContent = '[Object - cannot stringify]'\n }\n } else {\n displayContent = String(output)\n }\n\n return (\n <Box flexDirection=\"column\">\n <Text color={SEMANTIC_COLORS.dim}>{displayContent}</Text>\n </Box>\n )\n}\n\n/**\n * Error display component for tool rendering failures.\n */\nexport function ErrorToolResult({\n error,\n toolName,\n}: {\n error: unknown\n toolName?: string\n}): React.ReactElement {\n const errorMessage =\n error instanceof Error ? error.message : String(error || 'Unknown error')\n\n return (\n <Box flexDirection=\"column\">\n <Text color=\"red\">\n {toolName ? `[${toolName}] ` : ''}Error rendering result:\n </Text>\n <Text color={SEMANTIC_COLORS.dim}>{errorMessage}</Text>\n </Box>\n )\n}\n\n/**\n * Safely render a tool result with comprehensive error handling.\n *\n * @param tool - The tool that produced the result\n * @param output - The tool's output data\n * @param options - Rendering options\n * @returns A React node that is guaranteed to be renderable\n */\nexport function safeRenderToolResult(\n tool: Tool | undefined | null,\n output: unknown,\n options: { verbose: boolean },\n): React.ReactNode {\n // No tool provided\n if (!tool) {\n return <DefaultToolResult output={output} />\n }\n\n // Tool doesn't have a renderer\n if (!tool.renderToolResultMessage) {\n return <DefaultToolResult output={output} />\n }\n\n try {\n const rendered = tool.renderToolResultMessage(output, options)\n\n // Handle null/undefined returns\n if (rendered === null || rendered === undefined) {\n return <DefaultToolResult output={output} />\n }\n\n return rendered\n } catch (error) {\n // Catch any rendering errors\n return <ErrorToolResult error={error} toolName={tool.name} />\n }\n}\n\n/**\n * Safely render a tool use message with comprehensive error handling.\n *\n * @param tool - The tool being used\n * @param input - The tool's input parameters\n * @param options - Rendering options\n * @returns A React node that is guaranteed to be renderable\n */\nexport function safeRenderToolUseMessage(\n tool: Tool | undefined | null,\n input: unknown,\n options: { verbose: boolean },\n): React.ReactNode {\n // No tool provided\n if (!tool) {\n return (\n <Box>\n <Text color={SEMANTIC_COLORS.dim}>Unknown tool call</Text>\n </Box>\n )\n }\n\n // Tool doesn't have a renderer\n if (!tool.renderToolUseMessage) {\n return (\n <Box>\n <Text>\n <Text color=\"cyan\">{tool.name}</Text>\n {options.verbose && (\n <Text color={SEMANTIC_COLORS.dim}>\n {' '}\n {JSON.stringify(input).slice(0, 100)}\n </Text>\n )}\n </Text>\n </Box>\n )\n }\n\n try {\n const rendered = tool.renderToolUseMessage(input, options)\n\n // Handle null/undefined returns\n if (rendered === null || rendered === undefined) {\n return (\n <Box>\n <Text color=\"cyan\">{tool.name}</Text>\n </Box>\n )\n }\n\n return rendered\n } catch (error) {\n return <ErrorToolResult error={error} toolName={tool.name} />\n }\n}\n\n/**\n * Safely render a tool rejection message with comprehensive error handling.\n *\n * @param tool - The tool that was rejected\n * @param args - Arguments to pass to the rejection renderer\n * @returns A React node that is guaranteed to be renderable\n */\nexport function safeRenderToolRejectedMessage(\n tool: Tool | undefined | null,\n ...args: unknown[]\n): React.ReactNode {\n // No tool or no renderer\n if (!tool || !tool.renderToolUseRejectedMessage) {\n return (\n <Box>\n <Text color=\"yellow\">Tool use rejected</Text>\n </Box>\n )\n }\n\n try {\n const rendered = tool.renderToolUseRejectedMessage(...args)\n\n // Handle null/undefined returns\n if (rendered === null || rendered === undefined) {\n return (\n <Box>\n <Text color=\"yellow\">{tool.name} rejected</Text>\n </Box>\n )\n }\n\n return rendered\n } catch (error) {\n return <ErrorToolResult error={error} toolName={tool.name} />\n }\n}\n\n/**\n * Type guard to check if a value is a valid React node.\n */\nexport function isValidReactNode(value: unknown): value is React.ReactNode {\n if (value === null || value === undefined) {\n return true // React accepts null/undefined\n }\n\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ) {\n return true\n }\n\n if (Array.isArray(value)) {\n return value.every(isValidReactNode)\n }\n\n // Check for React element\n if (typeof value === 'object' && value !== null) {\n return '$$typeof' in value || React.isValidElement(value)\n }\n\n return false\n}\n\n/**\n * Wrap a potentially unsafe render function with error boundaries.\n *\n * @param renderFn - The render function to wrap\n * @param fallback - Fallback content on error\n * @returns A safe render function\n */\nexport function wrapRenderFunction<TArgs extends unknown[]>(\n renderFn: (...args: TArgs) => React.ReactNode,\n fallback: React.ReactNode,\n): (...args: TArgs) => React.ReactNode {\n return (...args: TArgs) => {\n try {\n const result = renderFn(...args)\n if (result === null || result === undefined) {\n return fallback\n }\n return result\n } catch {\n return fallback\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/version.js
CHANGED
package/dist/version.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/version.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Application version\n * This file is auto-generated during build process\n */\n\nexport const VERSION = '0.
|
|
4
|
+
"sourcesContent": ["/**\n * Application version\n * This file is auto-generated during build process\n */\n\nexport const VERSION = '0.3.0'\nexport const BUILD_DATE = '2026-02-02T01:21:32.241Z'\n"],
|
|
5
5
|
"mappings": "AAKO,MAAM,UAAU;AAChB,MAAM,aAAa;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@within-7/minto",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"bin": {
|
|
5
5
|
"minto": "cli.js"
|
|
6
6
|
},
|
|
@@ -40,14 +40,16 @@
|
|
|
40
40
|
"prepare": "",
|
|
41
41
|
"publish:packages": "node scripts/publish-platform-packages.mjs",
|
|
42
42
|
"publish:dev": "node scripts/publish-dev.js",
|
|
43
|
-
"publish:release": "node scripts/publish-release.js"
|
|
43
|
+
"publish:release": "node scripts/publish-release.js",
|
|
44
|
+
"release": "node scripts/release-full.js",
|
|
45
|
+
"release:dry-run": "node scripts/release-full.js --dry-run"
|
|
44
46
|
},
|
|
45
47
|
"optionalDependencies": {
|
|
46
|
-
"@within-7/minto-darwin-arm64": "0.
|
|
47
|
-
"@within-7/minto-darwin-x64": "0.
|
|
48
|
-
"@within-7/minto-linux-arm64": "0.
|
|
49
|
-
"@within-7/minto-linux-x64": "0.
|
|
50
|
-
"@within-7/minto-win32-x64": "0.
|
|
48
|
+
"@within-7/minto-darwin-arm64": "0.3.0",
|
|
49
|
+
"@within-7/minto-darwin-x64": "0.3.0",
|
|
50
|
+
"@within-7/minto-linux-arm64": "0.3.0",
|
|
51
|
+
"@within-7/minto-linux-x64": "0.3.0",
|
|
52
|
+
"@within-7/minto-win32-x64": "0.3.0"
|
|
51
53
|
},
|
|
52
54
|
"dependencies": {
|
|
53
55
|
"@anthropic-ai/bedrock-sdk": "^0.12.6",
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { useInput } from "ink";
|
|
2
|
-
function useCancelRequest(setToolJSX, setToolUseConfirm, setBinaryFeedbackContext, onCancel, isLoading, isMessageSelectorVisible, abortSignal, hasInputContent) {
|
|
3
|
-
useInput((_, key) => {
|
|
4
|
-
if (!key.escape) {
|
|
5
|
-
return;
|
|
6
|
-
}
|
|
7
|
-
if (abortSignal?.aborted) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
if (!abortSignal) {
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
if (!isLoading) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
if (isMessageSelectorVisible) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
if (hasInputContent) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
setToolJSX(null);
|
|
23
|
-
setToolUseConfirm(null);
|
|
24
|
-
setBinaryFeedbackContext(null);
|
|
25
|
-
onCancel();
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
export {
|
|
29
|
-
useCancelRequest
|
|
30
|
-
};
|
|
31
|
-
//# sourceMappingURL=useCancelRequest.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/hooks/useCancelRequest.ts"],
|
|
4
|
-
"sourcesContent": ["import { useInput } from 'ink'\nimport { ToolUseConfirm } from '@components/permissions/PermissionRequest'\nimport { BinaryFeedbackContext } from '@screens/REPL'\nimport type { SetToolJSXFn } from '@tool'\n\nexport function useCancelRequest(\n setToolJSX: SetToolJSXFn,\n setToolUseConfirm: (toolUseConfirm: ToolUseConfirm | null) => void,\n setBinaryFeedbackContext: (bfContext: BinaryFeedbackContext | null) => void,\n onCancel: () => void,\n isLoading: boolean,\n isMessageSelectorVisible: boolean,\n abortSignal?: AbortSignal,\n /** If true, ESC will first clear input before canceling. Pass input.length > 0 */\n hasInputContent?: boolean,\n) {\n useInput((_, key) => {\n if (!key.escape) {\n return\n }\n if (abortSignal?.aborted) {\n return\n }\n if (!abortSignal) {\n return\n }\n if (!isLoading) {\n return\n }\n if (isMessageSelectorVisible) {\n // Esc closes the message selector\n return\n }\n // If input has content, let PromptInput handle ESC to clear input first\n if (hasInputContent) {\n return\n }\n\n setToolJSX(null)\n setToolUseConfirm(null)\n setBinaryFeedbackContext(null)\n onCancel()\n })\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,gBAAgB;AAKlB,SAAS,iBACd,YACA,mBACA,0BACA,UACA,WACA,0BACA,aAEA,iBACA;AACA,WAAS,CAAC,GAAG,QAAQ;AACnB,QAAI,CAAC,IAAI,QAAQ;AACf;AAAA,IACF;AACA,QAAI,aAAa,SAAS;AACxB;AAAA,IACF;AACA,QAAI,CAAC,aAAa;AAChB;AAAA,IACF;AACA,QAAI,CAAC,WAAW;AACd;AAAA,IACF;AACA,QAAI,0BAA0B;AAE5B;AAAA,IACF;AAEA,QAAI,iBAAiB;AACnB;AAAA,IACF;AAEA,eAAW,IAAI;AACf,sBAAkB,IAAI;AACtB,6BAAyB,IAAI;AAC7B,aAAS;AAAA,EACX,CAAC;AACH;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|