snow-ai 0.4.16 → 0.4.17
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/bundle/cli.mjs +477445 -0
- package/bundle/sql-wasm.wasm +0 -0
- package/package.json +31 -26
- package/dist/agents/codebaseIndexAgent.d.ts +0 -102
- package/dist/agents/codebaseIndexAgent.js +0 -641
- package/dist/agents/codebaseReviewAgent.d.ts +0 -61
- package/dist/agents/codebaseReviewAgent.js +0 -301
- package/dist/agents/compactAgent.d.ts +0 -55
- package/dist/agents/compactAgent.js +0 -306
- package/dist/agents/promptOptimizeAgent.d.ts +0 -54
- package/dist/agents/promptOptimizeAgent.js +0 -268
- package/dist/agents/reviewAgent.d.ts +0 -50
- package/dist/agents/reviewAgent.js +0 -265
- package/dist/agents/summaryAgent.d.ts +0 -57
- package/dist/agents/summaryAgent.js +0 -260
- package/dist/api/anthropic.d.ts +0 -44
- package/dist/api/anthropic.js +0 -598
- package/dist/api/chat.d.ts +0 -73
- package/dist/api/chat.js +0 -386
- package/dist/api/embedding.d.ts +0 -34
- package/dist/api/embedding.js +0 -80
- package/dist/api/gemini.d.ts +0 -31
- package/dist/api/gemini.js +0 -445
- package/dist/api/models.d.ts +0 -15
- package/dist/api/models.js +0 -139
- package/dist/api/responses.d.ts +0 -38
- package/dist/api/responses.js +0 -515
- package/dist/api/systemPrompt.d.ts +0 -4
- package/dist/api/systemPrompt.js +0 -408
- package/dist/api/types.d.ts +0 -53
- package/dist/api/types.js +0 -4
- package/dist/app.d.ts +0 -8
- package/dist/app.js +0 -112
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +0 -199
- package/dist/hooks/useAgentPicker.d.ts +0 -14
- package/dist/hooks/useAgentPicker.js +0 -119
- package/dist/hooks/useClipboard.d.ts +0 -4
- package/dist/hooks/useClipboard.js +0 -175
- package/dist/hooks/useCommandHandler.d.ts +0 -35
- package/dist/hooks/useCommandHandler.js +0 -346
- package/dist/hooks/useCommandPanel.d.ts +0 -17
- package/dist/hooks/useCommandPanel.js +0 -114
- package/dist/hooks/useConversation.d.ts +0 -49
- package/dist/hooks/useConversation.js +0 -1052
- package/dist/hooks/useFilePicker.d.ts +0 -18
- package/dist/hooks/useFilePicker.js +0 -224
- package/dist/hooks/useGlobalExit.d.ts +0 -5
- package/dist/hooks/useGlobalExit.js +0 -34
- package/dist/hooks/useGlobalNavigation.d.ts +0 -6
- package/dist/hooks/useGlobalNavigation.js +0 -17
- package/dist/hooks/useHistoryNavigation.d.ts +0 -35
- package/dist/hooks/useHistoryNavigation.js +0 -133
- package/dist/hooks/useInputBuffer.d.ts +0 -6
- package/dist/hooks/useInputBuffer.js +0 -45
- package/dist/hooks/useKeyboardInput.d.ts +0 -80
- package/dist/hooks/useKeyboardInput.js +0 -608
- package/dist/hooks/useSessionManagement.d.ts +0 -10
- package/dist/hooks/useSessionManagement.js +0 -43
- package/dist/hooks/useSessionSave.d.ts +0 -8
- package/dist/hooks/useSessionSave.js +0 -63
- package/dist/hooks/useSnapshotState.d.ts +0 -26
- package/dist/hooks/useSnapshotState.js +0 -28
- package/dist/hooks/useStreamingState.d.ts +0 -33
- package/dist/hooks/useStreamingState.js +0 -105
- package/dist/hooks/useTerminalFocus.d.ts +0 -28
- package/dist/hooks/useTerminalFocus.js +0 -87
- package/dist/hooks/useTerminalSize.d.ts +0 -4
- package/dist/hooks/useTerminalSize.js +0 -20
- package/dist/hooks/useTodoPicker.d.ts +0 -16
- package/dist/hooks/useTodoPicker.js +0 -94
- package/dist/hooks/useToolConfirmation.d.ts +0 -19
- package/dist/hooks/useToolConfirmation.js +0 -61
- package/dist/hooks/useVSCodeState.d.ts +0 -8
- package/dist/hooks/useVSCodeState.js +0 -81
- package/dist/i18n/I18nContext.d.ts +0 -14
- package/dist/i18n/I18nContext.js +0 -24
- package/dist/i18n/index.d.ts +0 -3
- package/dist/i18n/index.js +0 -2
- package/dist/i18n/lang/en.d.ts +0 -2
- package/dist/i18n/lang/en.js +0 -502
- package/dist/i18n/lang/es.d.ts +0 -2
- package/dist/i18n/lang/es.js +0 -502
- package/dist/i18n/lang/ja.d.ts +0 -2
- package/dist/i18n/lang/ja.js +0 -502
- package/dist/i18n/lang/ko.d.ts +0 -2
- package/dist/i18n/lang/ko.js +0 -502
- package/dist/i18n/lang/zh-TW.d.ts +0 -2
- package/dist/i18n/lang/zh-TW.js +0 -502
- package/dist/i18n/lang/zh.d.ts +0 -2
- package/dist/i18n/lang/zh.js +0 -502
- package/dist/i18n/translations.d.ts +0 -2
- package/dist/i18n/translations.js +0 -14
- package/dist/i18n/types.d.ts +0 -478
- package/dist/i18n/types.js +0 -1
- package/dist/mcp/aceCodeSearch.d.ts +0 -247
- package/dist/mcp/aceCodeSearch.js +0 -1058
- package/dist/mcp/bash.d.ts +0 -50
- package/dist/mcp/bash.js +0 -153
- package/dist/mcp/codebaseSearch.d.ts +0 -44
- package/dist/mcp/codebaseSearch.js +0 -275
- package/dist/mcp/filesystem.d.ts +0 -392
- package/dist/mcp/filesystem.js +0 -1445
- package/dist/mcp/ideDiagnostics.d.ts +0 -36
- package/dist/mcp/ideDiagnostics.js +0 -90
- package/dist/mcp/notebook.d.ts +0 -10
- package/dist/mcp/notebook.js +0 -367
- package/dist/mcp/subagent.d.ts +0 -37
- package/dist/mcp/subagent.js +0 -113
- package/dist/mcp/todo.d.ts +0 -46
- package/dist/mcp/todo.js +0 -511
- package/dist/mcp/types/aceCodeSearch.types.d.ts +0 -92
- package/dist/mcp/types/aceCodeSearch.types.js +0 -4
- package/dist/mcp/types/bash.types.d.ts +0 -13
- package/dist/mcp/types/bash.types.js +0 -4
- package/dist/mcp/types/filesystem.types.d.ts +0 -210
- package/dist/mcp/types/filesystem.types.js +0 -27
- package/dist/mcp/types/todo.types.d.ts +0 -27
- package/dist/mcp/types/todo.types.js +0 -4
- package/dist/mcp/types/websearch.types.d.ts +0 -30
- package/dist/mcp/types/websearch.types.js +0 -4
- package/dist/mcp/utils/aceCodeSearch/filesystem.utils.d.ts +0 -34
- package/dist/mcp/utils/aceCodeSearch/filesystem.utils.js +0 -146
- package/dist/mcp/utils/aceCodeSearch/language.utils.d.ts +0 -14
- package/dist/mcp/utils/aceCodeSearch/language.utils.js +0 -418
- package/dist/mcp/utils/aceCodeSearch/search.utils.d.ts +0 -31
- package/dist/mcp/utils/aceCodeSearch/search.utils.js +0 -136
- package/dist/mcp/utils/aceCodeSearch/symbol.utils.d.ts +0 -20
- package/dist/mcp/utils/aceCodeSearch/symbol.utils.js +0 -141
- package/dist/mcp/utils/bash/security.utils.d.ts +0 -20
- package/dist/mcp/utils/bash/security.utils.js +0 -34
- package/dist/mcp/utils/filesystem/batch-operations.utils.d.ts +0 -39
- package/dist/mcp/utils/filesystem/batch-operations.utils.js +0 -182
- package/dist/mcp/utils/filesystem/code-analysis.utils.d.ts +0 -18
- package/dist/mcp/utils/filesystem/code-analysis.utils.js +0 -165
- package/dist/mcp/utils/filesystem/match-finder.utils.d.ts +0 -16
- package/dist/mcp/utils/filesystem/match-finder.utils.js +0 -85
- package/dist/mcp/utils/filesystem/office-parser.utils.d.ts +0 -43
- package/dist/mcp/utils/filesystem/office-parser.utils.js +0 -163
- package/dist/mcp/utils/filesystem/path-fixer.utils.d.ts +0 -7
- package/dist/mcp/utils/filesystem/path-fixer.utils.js +0 -60
- package/dist/mcp/utils/filesystem/similarity.utils.d.ts +0 -22
- package/dist/mcp/utils/filesystem/similarity.utils.js +0 -75
- package/dist/mcp/utils/todo/date.utils.d.ts +0 -9
- package/dist/mcp/utils/todo/date.utils.js +0 -14
- package/dist/mcp/utils/websearch/browser.utils.d.ts +0 -8
- package/dist/mcp/utils/websearch/browser.utils.js +0 -58
- package/dist/mcp/utils/websearch/text.utils.d.ts +0 -16
- package/dist/mcp/utils/websearch/text.utils.js +0 -39
- package/dist/mcp/websearch.d.ts +0 -88
- package/dist/mcp/websearch.js +0 -375
- package/dist/test/logger-test.d.ts +0 -1
- package/dist/test/logger-test.js +0 -7
- package/dist/types/index.d.ts +0 -15
- package/dist/types/index.js +0 -1
- package/dist/ui/components/AgentPickerPanel.d.ts +0 -10
- package/dist/ui/components/AgentPickerPanel.js +0 -74
- package/dist/ui/components/ChatInput.d.ts +0 -46
- package/dist/ui/components/ChatInput.js +0 -384
- package/dist/ui/components/CommandPanel.d.ts +0 -15
- package/dist/ui/components/CommandPanel.js +0 -80
- package/dist/ui/components/DiffViewer.d.ts +0 -11
- package/dist/ui/components/DiffViewer.js +0 -178
- package/dist/ui/components/FileList.d.ts +0 -15
- package/dist/ui/components/FileList.js +0 -360
- package/dist/ui/components/FileRollbackConfirmation.d.ts +0 -8
- package/dist/ui/components/FileRollbackConfirmation.js +0 -108
- package/dist/ui/components/HelpPanel.d.ts +0 -2
- package/dist/ui/components/HelpPanel.js +0 -67
- package/dist/ui/components/MCPInfoPanel.d.ts +0 -2
- package/dist/ui/components/MCPInfoPanel.js +0 -108
- package/dist/ui/components/MCPInfoScreen.d.ts +0 -7
- package/dist/ui/components/MCPInfoScreen.js +0 -115
- package/dist/ui/components/MarkdownRenderer.d.ts +0 -6
- package/dist/ui/components/MarkdownRenderer.js +0 -70
- package/dist/ui/components/Menu.d.ts +0 -17
- package/dist/ui/components/Menu.js +0 -88
- package/dist/ui/components/MessageList.d.ts +0 -56
- package/dist/ui/components/MessageList.js +0 -97
- package/dist/ui/components/PendingMessages.d.ts +0 -13
- package/dist/ui/components/PendingMessages.js +0 -29
- package/dist/ui/components/PendingToolCalls.d.ts +0 -11
- package/dist/ui/components/PendingToolCalls.js +0 -35
- package/dist/ui/components/ScrollableSelectInput.d.ts +0 -29
- package/dist/ui/components/ScrollableSelectInput.js +0 -157
- package/dist/ui/components/SessionListPanel.d.ts +0 -7
- package/dist/ui/components/SessionListPanel.js +0 -175
- package/dist/ui/components/SessionListScreen.d.ts +0 -7
- package/dist/ui/components/SessionListScreen.js +0 -217
- package/dist/ui/components/SessionListScreenWrapper.d.ts +0 -7
- package/dist/ui/components/SessionListScreenWrapper.js +0 -14
- package/dist/ui/components/ShimmerText.d.ts +0 -9
- package/dist/ui/components/ShimmerText.js +0 -30
- package/dist/ui/components/TodoPickerPanel.d.ts +0 -14
- package/dist/ui/components/TodoPickerPanel.js +0 -119
- package/dist/ui/components/TodoTree.d.ts +0 -15
- package/dist/ui/components/TodoTree.js +0 -60
- package/dist/ui/components/ToolConfirmation.d.ts +0 -21
- package/dist/ui/components/ToolConfirmation.js +0 -204
- package/dist/ui/components/ToolResultPreview.d.ts +0 -13
- package/dist/ui/components/ToolResultPreview.js +0 -337
- package/dist/ui/components/UsagePanel.d.ts +0 -2
- package/dist/ui/components/UsagePanel.js +0 -394
- package/dist/ui/contexts/ThemeContext.d.ts +0 -13
- package/dist/ui/contexts/ThemeContext.js +0 -28
- package/dist/ui/pages/ChatScreen.d.ts +0 -6
- package/dist/ui/pages/ChatScreen.js +0 -1519
- package/dist/ui/pages/CodeBaseConfigScreen.d.ts +0 -8
- package/dist/ui/pages/CodeBaseConfigScreen.js +0 -350
- package/dist/ui/pages/ConfigScreen.d.ts +0 -8
- package/dist/ui/pages/ConfigScreen.js +0 -1101
- package/dist/ui/pages/CustomHeadersScreen.d.ts +0 -6
- package/dist/ui/pages/CustomHeadersScreen.js +0 -502
- package/dist/ui/pages/HeadlessModeScreen.d.ts +0 -7
- package/dist/ui/pages/HeadlessModeScreen.js +0 -381
- package/dist/ui/pages/LanguageSettingsScreen.d.ts +0 -7
- package/dist/ui/pages/LanguageSettingsScreen.js +0 -91
- package/dist/ui/pages/MCPConfigScreen.d.ts +0 -6
- package/dist/ui/pages/MCPConfigScreen.js +0 -55
- package/dist/ui/pages/ProxyConfigScreen.d.ts +0 -8
- package/dist/ui/pages/ProxyConfigScreen.js +0 -149
- package/dist/ui/pages/SensitiveCommandConfigScreen.d.ts +0 -7
- package/dist/ui/pages/SensitiveCommandConfigScreen.js +0 -271
- package/dist/ui/pages/SubAgentConfigScreen.d.ts +0 -9
- package/dist/ui/pages/SubAgentConfigScreen.js +0 -435
- package/dist/ui/pages/SubAgentListScreen.d.ts +0 -9
- package/dist/ui/pages/SubAgentListScreen.js +0 -131
- package/dist/ui/pages/SystemPromptConfigScreen.d.ts +0 -6
- package/dist/ui/pages/SystemPromptConfigScreen.js +0 -326
- package/dist/ui/pages/ThemeSettingsScreen.d.ts +0 -7
- package/dist/ui/pages/ThemeSettingsScreen.js +0 -106
- package/dist/ui/pages/WelcomeScreen.d.ts +0 -7
- package/dist/ui/pages/WelcomeScreen.js +0 -217
- package/dist/ui/themes/index.d.ts +0 -23
- package/dist/ui/themes/index.js +0 -140
- package/dist/utils/apiConfig.d.ts +0 -126
- package/dist/utils/apiConfig.js +0 -423
- package/dist/utils/autoCompress.d.ts +0 -15
- package/dist/utils/autoCompress.js +0 -24
- package/dist/utils/chatExporter.d.ts +0 -9
- package/dist/utils/chatExporter.js +0 -118
- package/dist/utils/checkpointManager.d.ts +0 -74
- package/dist/utils/checkpointManager.js +0 -181
- package/dist/utils/codebaseConfig.d.ts +0 -16
- package/dist/utils/codebaseConfig.js +0 -67
- package/dist/utils/codebaseDatabase.d.ts +0 -102
- package/dist/utils/codebaseDatabase.js +0 -333
- package/dist/utils/codebaseSearchEvents.d.ts +0 -16
- package/dist/utils/codebaseSearchEvents.js +0 -13
- package/dist/utils/commandExecutor.d.ts +0 -13
- package/dist/utils/commandExecutor.js +0 -26
- package/dist/utils/commands/agent.d.ts +0 -2
- package/dist/utils/commands/agent.js +0 -12
- package/dist/utils/commands/clear.d.ts +0 -2
- package/dist/utils/commands/clear.js +0 -12
- package/dist/utils/commands/compact.d.ts +0 -2
- package/dist/utils/commands/compact.js +0 -12
- package/dist/utils/commands/export.d.ts +0 -2
- package/dist/utils/commands/export.js +0 -12
- package/dist/utils/commands/help.d.ts +0 -2
- package/dist/utils/commands/help.js +0 -11
- package/dist/utils/commands/home.d.ts +0 -2
- package/dist/utils/commands/home.js +0 -34
- package/dist/utils/commands/ide.d.ts +0 -2
- package/dist/utils/commands/ide.js +0 -32
- package/dist/utils/commands/init.d.ts +0 -2
- package/dist/utils/commands/init.js +0 -93
- package/dist/utils/commands/mcp.d.ts +0 -2
- package/dist/utils/commands/mcp.js +0 -12
- package/dist/utils/commands/resume.d.ts +0 -2
- package/dist/utils/commands/resume.js +0 -12
- package/dist/utils/commands/review.d.ts +0 -2
- package/dist/utils/commands/review.js +0 -81
- package/dist/utils/commands/role.d.ts +0 -2
- package/dist/utils/commands/role.js +0 -37
- package/dist/utils/commands/todoPicker.d.ts +0 -2
- package/dist/utils/commands/todoPicker.js +0 -12
- package/dist/utils/commands/usage.d.ts +0 -2
- package/dist/utils/commands/usage.js +0 -12
- package/dist/utils/commands/yolo.d.ts +0 -2
- package/dist/utils/commands/yolo.js +0 -12
- package/dist/utils/configManager.d.ts +0 -45
- package/dist/utils/configManager.js +0 -303
- package/dist/utils/contextCompressor.d.ts +0 -16
- package/dist/utils/contextCompressor.js +0 -334
- package/dist/utils/devMode.d.ts +0 -13
- package/dist/utils/devMode.js +0 -54
- package/dist/utils/escapeHandler.d.ts +0 -79
- package/dist/utils/escapeHandler.js +0 -153
- package/dist/utils/fileDialog.d.ts +0 -9
- package/dist/utils/fileDialog.js +0 -74
- package/dist/utils/fileUtils.d.ts +0 -40
- package/dist/utils/fileUtils.js +0 -185
- package/dist/utils/historyManager.d.ts +0 -45
- package/dist/utils/historyManager.js +0 -159
- package/dist/utils/incrementalSnapshot.d.ts +0 -109
- package/dist/utils/incrementalSnapshot.js +0 -383
- package/dist/utils/index.d.ts +0 -11
- package/dist/utils/index.js +0 -18
- package/dist/utils/languageConfig.d.ts +0 -21
- package/dist/utils/languageConfig.js +0 -61
- package/dist/utils/logger.d.ts +0 -37
- package/dist/utils/logger.js +0 -122
- package/dist/utils/mcpToolsManager.d.ts +0 -52
- package/dist/utils/mcpToolsManager.js +0 -878
- package/dist/utils/messageFormatter.d.ts +0 -12
- package/dist/utils/messageFormatter.js +0 -115
- package/dist/utils/notebookManager.d.ts +0 -59
- package/dist/utils/notebookManager.js +0 -213
- package/dist/utils/patch-highlight.d.ts +0 -5
- package/dist/utils/patch-highlight.js +0 -23
- package/dist/utils/processManager.d.ts +0 -27
- package/dist/utils/processManager.js +0 -75
- package/dist/utils/proxyUtils.d.ts +0 -15
- package/dist/utils/proxyUtils.js +0 -50
- package/dist/utils/resourceMonitor.d.ts +0 -65
- package/dist/utils/resourceMonitor.js +0 -175
- package/dist/utils/retryUtils.d.ts +0 -49
- package/dist/utils/retryUtils.js +0 -303
- package/dist/utils/sensitiveCommandManager.d.ts +0 -53
- package/dist/utils/sensitiveCommandManager.js +0 -308
- package/dist/utils/sessionConverter.d.ts +0 -7
- package/dist/utils/sessionConverter.js +0 -306
- package/dist/utils/sessionManager.d.ts +0 -53
- package/dist/utils/sessionManager.js +0 -371
- package/dist/utils/subAgentConfig.d.ts +0 -50
- package/dist/utils/subAgentConfig.js +0 -221
- package/dist/utils/subAgentExecutor.d.ts +0 -40
- package/dist/utils/subAgentExecutor.js +0 -434
- package/dist/utils/terminal.d.ts +0 -5
- package/dist/utils/terminal.js +0 -13
- package/dist/utils/textBuffer.d.ts +0 -99
- package/dist/utils/textBuffer.js +0 -547
- package/dist/utils/textUtils.d.ts +0 -37
- package/dist/utils/textUtils.js +0 -102
- package/dist/utils/themeConfig.d.ts +0 -21
- package/dist/utils/themeConfig.js +0 -61
- package/dist/utils/todoPreprocessor.d.ts +0 -5
- package/dist/utils/todoPreprocessor.js +0 -18
- package/dist/utils/todoScanner.d.ts +0 -8
- package/dist/utils/todoScanner.js +0 -148
- package/dist/utils/toolDisplayConfig.d.ts +0 -16
- package/dist/utils/toolDisplayConfig.js +0 -47
- package/dist/utils/toolExecutor.d.ts +0 -37
- package/dist/utils/toolExecutor.js +0 -224
- package/dist/utils/usageLogger.d.ts +0 -11
- package/dist/utils/usageLogger.js +0 -114
- package/dist/utils/vscodeConnection.d.ts +0 -76
- package/dist/utils/vscodeConnection.js +0 -430
- package/dist/utils/workspaceSnapshot.d.ts +0 -63
- package/dist/utils/workspaceSnapshot.js +0 -300
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { ToolCall } from './toolExecutor.js';
|
|
2
|
-
/**
|
|
3
|
-
* Format tool call display information for UI rendering
|
|
4
|
-
*/
|
|
5
|
-
export declare function formatToolCallMessage(toolCall: ToolCall): {
|
|
6
|
-
toolName: string;
|
|
7
|
-
args: Array<{
|
|
8
|
-
key: string;
|
|
9
|
-
value: string;
|
|
10
|
-
isLast: boolean;
|
|
11
|
-
}>;
|
|
12
|
-
};
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Format tool call display information for UI rendering
|
|
3
|
-
*/
|
|
4
|
-
export function formatToolCallMessage(toolCall) {
|
|
5
|
-
try {
|
|
6
|
-
const args = JSON.parse(toolCall.function.arguments);
|
|
7
|
-
const argEntries = Object.entries(args);
|
|
8
|
-
const formattedArgs = [];
|
|
9
|
-
// Edit 工具的长内容参数列表
|
|
10
|
-
const editToolLongContentParams = [
|
|
11
|
-
'searchContent',
|
|
12
|
-
'replaceContent',
|
|
13
|
-
'newContent',
|
|
14
|
-
'oldContent',
|
|
15
|
-
'content',
|
|
16
|
-
'completeOldContent',
|
|
17
|
-
'completeNewContent',
|
|
18
|
-
];
|
|
19
|
-
// Edit 工具名称列表
|
|
20
|
-
const editTools = [
|
|
21
|
-
'filesystem-edit',
|
|
22
|
-
'filesystem-edit_search',
|
|
23
|
-
'filesystem-create',
|
|
24
|
-
];
|
|
25
|
-
const isEditTool = editTools.includes(toolCall.function.name);
|
|
26
|
-
if (argEntries.length > 0) {
|
|
27
|
-
argEntries.forEach(([key, value], idx, arr) => {
|
|
28
|
-
let valueStr;
|
|
29
|
-
// 对 edit 工具的长内容参数进行特殊处理
|
|
30
|
-
if (isEditTool && editToolLongContentParams.includes(key)) {
|
|
31
|
-
if (typeof value === 'string') {
|
|
32
|
-
const lines = value.split('\n');
|
|
33
|
-
const lineCount = lines.length;
|
|
34
|
-
if (lineCount > 3) {
|
|
35
|
-
// 多行内容:显示行数统计
|
|
36
|
-
valueStr = `<${lineCount} lines>`;
|
|
37
|
-
}
|
|
38
|
-
else if (value.length > 60) {
|
|
39
|
-
// 单行但很长:截断显示
|
|
40
|
-
valueStr = `"${value.slice(0, 60)}..."`;
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
// 短内容:正常显示
|
|
44
|
-
valueStr = `"${value}"`;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
valueStr = JSON.stringify(value);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
// 其他参数:智能处理不同类型
|
|
53
|
-
if (typeof value === 'string') {
|
|
54
|
-
// 字符串类型
|
|
55
|
-
valueStr =
|
|
56
|
-
value.length > 60 ? `"${value.slice(0, 60)}..."` : `"${value}"`;
|
|
57
|
-
}
|
|
58
|
-
else if (Array.isArray(value)) {
|
|
59
|
-
// 数组类型:显示元素数量
|
|
60
|
-
if (value.length === 0) {
|
|
61
|
-
valueStr = '[]';
|
|
62
|
-
}
|
|
63
|
-
else if (value.length === 1) {
|
|
64
|
-
// 单个元素:尝试简化显示
|
|
65
|
-
const item = value[0];
|
|
66
|
-
if (typeof item === 'object' && item !== null) {
|
|
67
|
-
const keys = Object.keys(item);
|
|
68
|
-
valueStr = `[{${keys.slice(0, 2).join(', ')}${keys.length > 2 ? ', ...' : ''}}]`;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
valueStr = JSON.stringify(value);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
// 多个元素:显示数量
|
|
76
|
-
valueStr = `<array with ${value.length} items>`;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
else if (typeof value === 'object' && value !== null) {
|
|
80
|
-
// 对象类型:显示键名
|
|
81
|
-
const keys = Object.keys(value);
|
|
82
|
-
if (keys.length === 0) {
|
|
83
|
-
valueStr = '{}';
|
|
84
|
-
}
|
|
85
|
-
else if (keys.length <= 3) {
|
|
86
|
-
valueStr = `{${keys.join(', ')}}`;
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
valueStr = `{${keys.slice(0, 3).join(', ')}, ...}`;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
// 其他类型(数字、布尔等)
|
|
94
|
-
valueStr = JSON.stringify(value);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
formattedArgs.push({
|
|
98
|
-
key,
|
|
99
|
-
value: valueStr,
|
|
100
|
-
isLast: idx === arr.length - 1,
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
return {
|
|
105
|
-
toolName: toolCall.function.name,
|
|
106
|
-
args: formattedArgs,
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
catch (e) {
|
|
110
|
-
return {
|
|
111
|
-
toolName: toolCall.function.name,
|
|
112
|
-
args: [],
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 备忘录条目接口
|
|
3
|
-
*/
|
|
4
|
-
export interface NotebookEntry {
|
|
5
|
-
id: string;
|
|
6
|
-
filePath: string;
|
|
7
|
-
note: string;
|
|
8
|
-
createdAt: string;
|
|
9
|
-
updatedAt: string;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* 添加备忘录
|
|
13
|
-
* @param filePath 文件路径
|
|
14
|
-
* @param note 备忘说明
|
|
15
|
-
* @returns 添加的备忘录条目
|
|
16
|
-
*/
|
|
17
|
-
export declare function addNotebook(filePath: string, note: string): NotebookEntry;
|
|
18
|
-
/**
|
|
19
|
-
* 查询备忘录
|
|
20
|
-
* @param filePathPattern 文件路径(支持模糊匹配)
|
|
21
|
-
* @param topN 返回最新的N条记录(默认10)
|
|
22
|
-
* @returns 匹配的备忘录条目列表
|
|
23
|
-
*/
|
|
24
|
-
export declare function queryNotebook(filePathPattern?: string, topN?: number): NotebookEntry[];
|
|
25
|
-
/**
|
|
26
|
-
* 获取指定文件的所有备忘录
|
|
27
|
-
* @param filePath 文件路径
|
|
28
|
-
* @returns 该文件的所有备忘录
|
|
29
|
-
*/
|
|
30
|
-
export declare function getNotebooksByFile(filePath: string): NotebookEntry[];
|
|
31
|
-
/**
|
|
32
|
-
* 更新备忘录内容
|
|
33
|
-
* @param notebookId 备忘录ID
|
|
34
|
-
* @param newNote 新的备忘说明
|
|
35
|
-
* @returns 更新后的备忘录条目,如果未找到则返回null
|
|
36
|
-
*/
|
|
37
|
-
export declare function updateNotebook(notebookId: string, newNote: string): NotebookEntry | null;
|
|
38
|
-
/**
|
|
39
|
-
* 删除备忘录
|
|
40
|
-
* @param notebookId 备忘录ID
|
|
41
|
-
* @returns 是否删除成功
|
|
42
|
-
*/
|
|
43
|
-
export declare function deleteNotebook(notebookId: string): boolean;
|
|
44
|
-
/**
|
|
45
|
-
* 清空指定文件的所有备忘录
|
|
46
|
-
* @param filePath 文件路径
|
|
47
|
-
*/
|
|
48
|
-
export declare function clearNotebooksByFile(filePath: string): void;
|
|
49
|
-
/**
|
|
50
|
-
* 获取所有备忘录统计信息
|
|
51
|
-
*/
|
|
52
|
-
export declare function getNotebookStats(): {
|
|
53
|
-
totalFiles: number;
|
|
54
|
-
totalEntries: number;
|
|
55
|
-
files: Array<{
|
|
56
|
-
path: string;
|
|
57
|
-
count: number;
|
|
58
|
-
}>;
|
|
59
|
-
};
|
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
const MAX_ENTRIES_PER_FILE = 50;
|
|
4
|
-
/**
|
|
5
|
-
* 获取备忘录存储目录
|
|
6
|
-
*/
|
|
7
|
-
function getNotebookDir() {
|
|
8
|
-
const projectRoot = process.cwd();
|
|
9
|
-
const notebookDir = path.join(projectRoot, '.snow', 'notebook');
|
|
10
|
-
if (!fs.existsSync(notebookDir)) {
|
|
11
|
-
fs.mkdirSync(notebookDir, { recursive: true });
|
|
12
|
-
}
|
|
13
|
-
return notebookDir;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* 获取当前项目的备忘录文件路径
|
|
17
|
-
*/
|
|
18
|
-
function getNotebookFilePath() {
|
|
19
|
-
const projectRoot = process.cwd();
|
|
20
|
-
const projectName = path.basename(projectRoot);
|
|
21
|
-
const notebookDir = getNotebookDir();
|
|
22
|
-
return path.join(notebookDir, `${projectName}.json`);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* 读取备忘录数据
|
|
26
|
-
*/
|
|
27
|
-
function readNotebookData() {
|
|
28
|
-
const filePath = getNotebookFilePath();
|
|
29
|
-
if (!fs.existsSync(filePath)) {
|
|
30
|
-
return {};
|
|
31
|
-
}
|
|
32
|
-
try {
|
|
33
|
-
const content = fs.readFileSync(filePath, 'utf-8');
|
|
34
|
-
return JSON.parse(content);
|
|
35
|
-
}
|
|
36
|
-
catch (error) {
|
|
37
|
-
console.error('Failed to read notebook data:', error);
|
|
38
|
-
return {};
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* 保存备忘录数据
|
|
43
|
-
*/
|
|
44
|
-
function saveNotebookData(data) {
|
|
45
|
-
const filePath = getNotebookFilePath();
|
|
46
|
-
try {
|
|
47
|
-
fs.writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf-8');
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
console.error('Failed to save notebook data:', error);
|
|
51
|
-
throw error;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* 规范化文件路径(转换为相对于项目根目录的路径)
|
|
56
|
-
*/
|
|
57
|
-
function normalizePath(filePath) {
|
|
58
|
-
const projectRoot = process.cwd();
|
|
59
|
-
// 如果是绝对路径,转换为相对路径
|
|
60
|
-
if (path.isAbsolute(filePath)) {
|
|
61
|
-
return path.relative(projectRoot, filePath).replace(/\\/g, '/');
|
|
62
|
-
}
|
|
63
|
-
// 已经是相对路径,规范化斜杠并移除 ./ 前缀
|
|
64
|
-
let normalized = filePath.replace(/\\/g, '/');
|
|
65
|
-
// 移除开头的 ./ 前缀
|
|
66
|
-
if (normalized.startsWith('./')) {
|
|
67
|
-
normalized = normalized.substring(2);
|
|
68
|
-
}
|
|
69
|
-
return normalized;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* 添加备忘录
|
|
73
|
-
* @param filePath 文件路径
|
|
74
|
-
* @param note 备忘说明
|
|
75
|
-
* @returns 添加的备忘录条目
|
|
76
|
-
*/
|
|
77
|
-
export function addNotebook(filePath, note) {
|
|
78
|
-
const normalizedPath = normalizePath(filePath);
|
|
79
|
-
const data = readNotebookData();
|
|
80
|
-
if (!data[normalizedPath]) {
|
|
81
|
-
data[normalizedPath] = [];
|
|
82
|
-
}
|
|
83
|
-
// 创建新的备忘录条目(使用本地时间)
|
|
84
|
-
const now = new Date();
|
|
85
|
-
const localTimeStr = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}T${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}.${String(now.getMilliseconds()).padStart(3, '0')}`;
|
|
86
|
-
const entry = {
|
|
87
|
-
id: `notebook-${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
|
|
88
|
-
filePath: normalizedPath,
|
|
89
|
-
note,
|
|
90
|
-
createdAt: localTimeStr,
|
|
91
|
-
updatedAt: localTimeStr,
|
|
92
|
-
};
|
|
93
|
-
// 添加到数组开头(最新的在前面)
|
|
94
|
-
data[normalizedPath].unshift(entry);
|
|
95
|
-
// 限制每个文件最多50条备忘录
|
|
96
|
-
if (data[normalizedPath].length > MAX_ENTRIES_PER_FILE) {
|
|
97
|
-
data[normalizedPath] = data[normalizedPath].slice(0, MAX_ENTRIES_PER_FILE);
|
|
98
|
-
}
|
|
99
|
-
saveNotebookData(data);
|
|
100
|
-
return entry;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* 查询备忘录
|
|
104
|
-
* @param filePathPattern 文件路径(支持模糊匹配)
|
|
105
|
-
* @param topN 返回最新的N条记录(默认10)
|
|
106
|
-
* @returns 匹配的备忘录条目列表
|
|
107
|
-
*/
|
|
108
|
-
export function queryNotebook(filePathPattern = '', topN = 10) {
|
|
109
|
-
const data = readNotebookData();
|
|
110
|
-
const results = [];
|
|
111
|
-
// 规范化搜索模式(移除 ./ 前缀等)
|
|
112
|
-
const normalizedPattern = filePathPattern
|
|
113
|
-
? normalizePath(filePathPattern).toLowerCase()
|
|
114
|
-
: '';
|
|
115
|
-
// 遍历所有文件路径
|
|
116
|
-
for (const [filePath, entries] of Object.entries(data)) {
|
|
117
|
-
// 如果没有指定模式,或者文件路径包含模式
|
|
118
|
-
if (!normalizedPattern ||
|
|
119
|
-
filePath.toLowerCase().includes(normalizedPattern)) {
|
|
120
|
-
results.push(...entries);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
// 按创建时间倒序排序(最新的在前)
|
|
124
|
-
results.sort((a, b) => {
|
|
125
|
-
return new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime();
|
|
126
|
-
});
|
|
127
|
-
// 返回 TopN 条记录
|
|
128
|
-
return results.slice(0, topN);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* 获取指定文件的所有备忘录
|
|
132
|
-
* @param filePath 文件路径
|
|
133
|
-
* @returns 该文件的所有备忘录
|
|
134
|
-
*/
|
|
135
|
-
export function getNotebooksByFile(filePath) {
|
|
136
|
-
const normalizedPath = normalizePath(filePath);
|
|
137
|
-
const data = readNotebookData();
|
|
138
|
-
return data[normalizedPath] || [];
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* 更新备忘录内容
|
|
142
|
-
* @param notebookId 备忘录ID
|
|
143
|
-
* @param newNote 新的备忘说明
|
|
144
|
-
* @returns 更新后的备忘录条目,如果未找到则返回null
|
|
145
|
-
*/
|
|
146
|
-
export function updateNotebook(notebookId, newNote) {
|
|
147
|
-
const data = readNotebookData();
|
|
148
|
-
let updatedEntry = null;
|
|
149
|
-
for (const [, entries] of Object.entries(data)) {
|
|
150
|
-
const entry = entries.find(e => e.id === notebookId);
|
|
151
|
-
if (entry) {
|
|
152
|
-
// 更新笔记内容和更新时间
|
|
153
|
-
entry.note = newNote;
|
|
154
|
-
const now = new Date();
|
|
155
|
-
entry.updatedAt = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}T${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}.${String(now.getMilliseconds()).padStart(3, '0')}`;
|
|
156
|
-
updatedEntry = entry;
|
|
157
|
-
break;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
if (updatedEntry) {
|
|
161
|
-
saveNotebookData(data);
|
|
162
|
-
}
|
|
163
|
-
return updatedEntry;
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* 删除备忘录
|
|
167
|
-
* @param notebookId 备忘录ID
|
|
168
|
-
* @returns 是否删除成功
|
|
169
|
-
*/
|
|
170
|
-
export function deleteNotebook(notebookId) {
|
|
171
|
-
const data = readNotebookData();
|
|
172
|
-
let found = false;
|
|
173
|
-
for (const [, entries] of Object.entries(data)) {
|
|
174
|
-
const index = entries.findIndex(entry => entry.id === notebookId);
|
|
175
|
-
if (index !== -1) {
|
|
176
|
-
entries.splice(index, 1);
|
|
177
|
-
found = true;
|
|
178
|
-
break;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
if (found) {
|
|
182
|
-
saveNotebookData(data);
|
|
183
|
-
}
|
|
184
|
-
return found;
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* 清空指定文件的所有备忘录
|
|
188
|
-
* @param filePath 文件路径
|
|
189
|
-
*/
|
|
190
|
-
export function clearNotebooksByFile(filePath) {
|
|
191
|
-
const normalizedPath = normalizePath(filePath);
|
|
192
|
-
const data = readNotebookData();
|
|
193
|
-
if (data[normalizedPath]) {
|
|
194
|
-
delete data[normalizedPath];
|
|
195
|
-
saveNotebookData(data);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* 获取所有备忘录统计信息
|
|
200
|
-
*/
|
|
201
|
-
export function getNotebookStats() {
|
|
202
|
-
const data = readNotebookData();
|
|
203
|
-
const files = Object.entries(data).map(([path, entries]) => ({
|
|
204
|
-
path,
|
|
205
|
-
count: entries.length,
|
|
206
|
-
}));
|
|
207
|
-
const totalEntries = files.reduce((sum, file) => sum + file.count, 0);
|
|
208
|
-
return {
|
|
209
|
-
totalFiles: files.length,
|
|
210
|
-
totalEntries,
|
|
211
|
-
files: files.sort((a, b) => b.count - a.count),
|
|
212
|
-
};
|
|
213
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Patch cli-highlight to gracefully handle unknown languages
|
|
3
|
-
* This must be loaded BEFORE any modules that use cli-highlight
|
|
4
|
-
*/
|
|
5
|
-
import { createRequire } from 'node:module';
|
|
6
|
-
const require = createRequire(import.meta.url);
|
|
7
|
-
const cliHighlightModule = require('cli-highlight');
|
|
8
|
-
const originalHighlight = cliHighlightModule.highlight;
|
|
9
|
-
// Override the highlight function to handle unknown languages gracefully
|
|
10
|
-
cliHighlightModule.highlight = function (code, options) {
|
|
11
|
-
try {
|
|
12
|
-
return originalHighlight(code, options);
|
|
13
|
-
}
|
|
14
|
-
catch (error) {
|
|
15
|
-
// If the error is about an unknown language, return the original code without highlighting
|
|
16
|
-
if (error?.message?.includes('Unknown language') ||
|
|
17
|
-
error?.message?.includes('Could not find the language')) {
|
|
18
|
-
return code;
|
|
19
|
-
}
|
|
20
|
-
// Re-throw other unexpected errors
|
|
21
|
-
throw error;
|
|
22
|
-
}
|
|
23
|
-
};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { ChildProcess } from 'child_process';
|
|
2
|
-
/**
|
|
3
|
-
* Process Manager
|
|
4
|
-
* Tracks and manages all child processes to ensure proper cleanup
|
|
5
|
-
*/
|
|
6
|
-
declare class ProcessManager {
|
|
7
|
-
private processes;
|
|
8
|
-
private isShuttingDown;
|
|
9
|
-
/**
|
|
10
|
-
* Register a child process for tracking
|
|
11
|
-
*/
|
|
12
|
-
register(process: ChildProcess): void;
|
|
13
|
-
/**
|
|
14
|
-
* Kill a specific process gracefully
|
|
15
|
-
*/
|
|
16
|
-
private killProcess;
|
|
17
|
-
/**
|
|
18
|
-
* Kill all tracked processes
|
|
19
|
-
*/
|
|
20
|
-
killAll(): void;
|
|
21
|
-
/**
|
|
22
|
-
* Get count of active processes
|
|
23
|
-
*/
|
|
24
|
-
getActiveCount(): number;
|
|
25
|
-
}
|
|
26
|
-
export declare const processManager: ProcessManager;
|
|
27
|
-
export {};
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Process Manager
|
|
3
|
-
* Tracks and manages all child processes to ensure proper cleanup
|
|
4
|
-
*/
|
|
5
|
-
class ProcessManager {
|
|
6
|
-
constructor() {
|
|
7
|
-
Object.defineProperty(this, "processes", {
|
|
8
|
-
enumerable: true,
|
|
9
|
-
configurable: true,
|
|
10
|
-
writable: true,
|
|
11
|
-
value: new Set()
|
|
12
|
-
});
|
|
13
|
-
Object.defineProperty(this, "isShuttingDown", {
|
|
14
|
-
enumerable: true,
|
|
15
|
-
configurable: true,
|
|
16
|
-
writable: true,
|
|
17
|
-
value: false
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Register a child process for tracking
|
|
22
|
-
*/
|
|
23
|
-
register(process) {
|
|
24
|
-
if (this.isShuttingDown) {
|
|
25
|
-
// If we're already shutting down, kill immediately
|
|
26
|
-
this.killProcess(process);
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
this.processes.add(process);
|
|
30
|
-
// Auto-remove when process exits
|
|
31
|
-
const cleanup = () => {
|
|
32
|
-
this.processes.delete(process);
|
|
33
|
-
};
|
|
34
|
-
process.once('exit', cleanup);
|
|
35
|
-
process.once('error', cleanup);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Kill a specific process gracefully
|
|
39
|
-
*/
|
|
40
|
-
killProcess(process) {
|
|
41
|
-
try {
|
|
42
|
-
if (process.pid && !process.killed) {
|
|
43
|
-
// Try graceful termination first
|
|
44
|
-
process.kill('SIGTERM');
|
|
45
|
-
// Force kill after 1 second if still alive
|
|
46
|
-
setTimeout(() => {
|
|
47
|
-
if (process.pid && !process.killed) {
|
|
48
|
-
process.kill('SIGKILL');
|
|
49
|
-
}
|
|
50
|
-
}, 1000);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
catch (error) {
|
|
54
|
-
// Process might already be dead, ignore errors
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Kill all tracked processes
|
|
59
|
-
*/
|
|
60
|
-
killAll() {
|
|
61
|
-
this.isShuttingDown = true;
|
|
62
|
-
for (const process of this.processes) {
|
|
63
|
-
this.killProcess(process);
|
|
64
|
-
}
|
|
65
|
-
this.processes.clear();
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Get count of active processes
|
|
69
|
-
*/
|
|
70
|
-
getActiveCount() {
|
|
71
|
-
return this.processes.size;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
// Export singleton instance
|
|
75
|
-
export const processManager = new ProcessManager();
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { Agent as HttpAgent } from 'http';
|
|
2
|
-
import type { Agent as HttpsAgent } from 'https';
|
|
3
|
-
/**
|
|
4
|
-
* 创建代理 Agent(如果启用了代理)
|
|
5
|
-
* @param targetUrl - 目标 URL,用于判断是否使用 HTTPS
|
|
6
|
-
* @returns HTTP/HTTPS Agent,如果未启用代理则返回 undefined
|
|
7
|
-
*/
|
|
8
|
-
export declare function createProxyAgent(targetUrl: string): HttpAgent | HttpsAgent | undefined;
|
|
9
|
-
/**
|
|
10
|
-
* 为 fetch 请求添加代理支持
|
|
11
|
-
* @param url - 请求 URL
|
|
12
|
-
* @param options - fetch 选项
|
|
13
|
-
* @returns 添加了代理支持的 fetch 选项
|
|
14
|
-
*/
|
|
15
|
-
export declare function addProxyToFetchOptions(url: string, options?: RequestInit): RequestInit;
|
package/dist/utils/proxyUtils.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { getProxyConfig } from './apiConfig.js';
|
|
2
|
-
import { HttpsProxyAgent } from 'https-proxy-agent';
|
|
3
|
-
import { HttpProxyAgent } from 'http-proxy-agent';
|
|
4
|
-
/**
|
|
5
|
-
* 创建代理 Agent(如果启用了代理)
|
|
6
|
-
* @param targetUrl - 目标 URL,用于判断是否使用 HTTPS
|
|
7
|
-
* @returns HTTP/HTTPS Agent,如果未启用代理则返回 undefined
|
|
8
|
-
*/
|
|
9
|
-
export function createProxyAgent(targetUrl) {
|
|
10
|
-
const proxyConfig = getProxyConfig();
|
|
11
|
-
// 如果代理未启用,直接返回 undefined
|
|
12
|
-
if (!proxyConfig.enabled) {
|
|
13
|
-
return undefined;
|
|
14
|
-
}
|
|
15
|
-
// 构建代理 URL
|
|
16
|
-
const proxyUrl = `http://127.0.0.1:${proxyConfig.port}`;
|
|
17
|
-
// 根据目标 URL 协议选择合适的代理 Agent
|
|
18
|
-
try {
|
|
19
|
-
const url = new URL(targetUrl);
|
|
20
|
-
if (url.protocol === 'https:') {
|
|
21
|
-
return new HttpsProxyAgent(proxyUrl);
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
return new HttpProxyAgent(proxyUrl);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
// URL 解析失败,默认使用 HTTPS
|
|
29
|
-
return new HttpsProxyAgent(proxyUrl);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* 为 fetch 请求添加代理支持
|
|
34
|
-
* @param url - 请求 URL
|
|
35
|
-
* @param options - fetch 选项
|
|
36
|
-
* @returns 添加了代理支持的 fetch 选项
|
|
37
|
-
*/
|
|
38
|
-
export function addProxyToFetchOptions(url, options = {}) {
|
|
39
|
-
const agent = createProxyAgent(url);
|
|
40
|
-
if (!agent) {
|
|
41
|
-
return options;
|
|
42
|
-
}
|
|
43
|
-
// 添加 agent 到 fetch 选项
|
|
44
|
-
// 注意:Node.js 的 fetch 支持 dispatcher 选项
|
|
45
|
-
return {
|
|
46
|
-
...options,
|
|
47
|
-
// @ts-ignore - Node.js fetch 支持 agent
|
|
48
|
-
agent,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resource Monitor - Track memory usage and potential leaks
|
|
3
|
-
*/
|
|
4
|
-
interface ResourceStats {
|
|
5
|
-
timestamp: number;
|
|
6
|
-
memoryUsage: NodeJS.MemoryUsage;
|
|
7
|
-
activeEncoders: number;
|
|
8
|
-
activeMCPConnections: number;
|
|
9
|
-
}
|
|
10
|
-
declare class ResourceMonitor {
|
|
11
|
-
private stats;
|
|
12
|
-
private readonly maxStatsHistory;
|
|
13
|
-
private activeEncoders;
|
|
14
|
-
private activeMCPConnections;
|
|
15
|
-
private monitoringInterval;
|
|
16
|
-
/**
|
|
17
|
-
* Start monitoring resources
|
|
18
|
-
*/
|
|
19
|
-
startMonitoring(intervalMs?: number): void;
|
|
20
|
-
/**
|
|
21
|
-
* Stop monitoring resources
|
|
22
|
-
*/
|
|
23
|
-
stopMonitoring(): void;
|
|
24
|
-
/**
|
|
25
|
-
* Collect current resource stats
|
|
26
|
-
*/
|
|
27
|
-
private collectStats;
|
|
28
|
-
/**
|
|
29
|
-
* Track encoder creation
|
|
30
|
-
*/
|
|
31
|
-
trackEncoderCreated(): void;
|
|
32
|
-
/**
|
|
33
|
-
* Track encoder freed
|
|
34
|
-
*/
|
|
35
|
-
trackEncoderFreed(): void;
|
|
36
|
-
/**
|
|
37
|
-
* Track MCP connection opened
|
|
38
|
-
*/
|
|
39
|
-
trackMCPConnectionOpened(serviceName: string): void;
|
|
40
|
-
/**
|
|
41
|
-
* Track MCP connection closed
|
|
42
|
-
*/
|
|
43
|
-
trackMCPConnectionClosed(serviceName: string): void;
|
|
44
|
-
/**
|
|
45
|
-
* Get current stats
|
|
46
|
-
*/
|
|
47
|
-
getCurrentStats(): ResourceStats | null;
|
|
48
|
-
/**
|
|
49
|
-
* Get stats history
|
|
50
|
-
*/
|
|
51
|
-
getStatsHistory(): ResourceStats[];
|
|
52
|
-
/**
|
|
53
|
-
* Check if there are potential memory leaks
|
|
54
|
-
*/
|
|
55
|
-
checkForLeaks(): {
|
|
56
|
-
hasLeak: boolean;
|
|
57
|
-
reasons: string[];
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* Force garbage collection if available
|
|
61
|
-
*/
|
|
62
|
-
forceGC(): void;
|
|
63
|
-
}
|
|
64
|
-
export declare const resourceMonitor: ResourceMonitor;
|
|
65
|
-
export {};
|