@lmcc-dev/mult-fetch-mcp-server 1.1.0 → 1.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/README.md +8 -8
- package/README.zh.md +16 -8
- package/dist/i18n-test-report.json +8 -0
- package/dist/i18n-unused-keys-report.json +8 -0
- package/dist/src/client.js +50 -35
- package/dist/src/index.js +0 -0
- package/dist/src/lib/BrowserFetcher.js +12 -12
- package/dist/src/lib/NodeFetcher.js +22 -22
- package/dist/src/lib/fetch.js +40 -0
- package/dist/src/lib/fetchers/FetcherFactory.js +43 -0
- package/dist/src/lib/fetchers/browser/BrowserFetcher.js +381 -0
- package/dist/src/lib/fetchers/browser/BrowserInstance.js +180 -0
- package/dist/src/lib/fetchers/browser/PageOperations.js +168 -0
- package/dist/src/lib/fetchers/common/types.js +41 -0
- package/dist/src/lib/fetchers/common/utils.js +141 -0
- package/dist/src/lib/fetchers/index.js +62 -0
- package/dist/src/lib/fetchers/node/HttpClient.js +239 -0
- package/dist/src/lib/fetchers/node/NodeFetcher.js +180 -0
- package/dist/src/lib/i18n/index.js +105 -17
- package/dist/src/lib/i18n/keys/base.js +41 -0
- package/dist/src/lib/i18n/keys/browser.js +91 -0
- package/dist/src/lib/i18n/keys/client.js +68 -0
- package/dist/src/lib/i18n/keys/errors.js +49 -0
- package/dist/src/lib/i18n/keys/factory.js +46 -0
- package/dist/src/lib/i18n/keys/fetcher.js +87 -0
- package/dist/src/lib/i18n/keys/index.js +16 -0
- package/dist/src/lib/i18n/keys/node.js +69 -0
- package/dist/src/lib/i18n/keys/prompts.js +79 -0
- package/dist/src/lib/i18n/keys/resources.js +53 -0
- package/dist/src/lib/i18n/keys/server.js +67 -0
- package/dist/src/lib/i18n/keys/tools.js +39 -0
- package/dist/src/lib/i18n/keys.js +488 -119
- package/dist/src/lib/i18n/locales/en/browser.js +67 -57
- package/dist/src/lib/i18n/locales/en/client.js +57 -33
- package/dist/src/lib/i18n/locales/en/errors.js +36 -12
- package/dist/src/lib/i18n/locales/en/factory.js +38 -0
- package/dist/src/lib/i18n/locales/en/fetcher.js +8 -2
- package/dist/src/lib/i18n/locales/en/index.js +10 -8
- package/dist/src/lib/i18n/locales/en/node.js +57 -35
- package/dist/src/lib/i18n/locales/en/prompts.js +42 -65
- package/dist/src/lib/i18n/locales/en/resources.js +52 -55
- package/dist/src/lib/i18n/locales/en/server.js +49 -24
- package/dist/src/lib/i18n/locales/en/tools.js +27 -19
- package/dist/src/lib/i18n/locales/zh/browser.js +71 -62
- package/dist/src/lib/i18n/locales/zh/client.js +57 -32
- package/dist/src/lib/i18n/locales/zh/errors.js +36 -12
- package/dist/src/lib/i18n/locales/zh/factory.js +38 -0
- package/dist/src/lib/i18n/locales/zh/fetcher.js +36 -30
- package/dist/src/lib/i18n/locales/zh/index.js +10 -8
- package/dist/src/lib/i18n/locales/zh/node.js +61 -36
- package/dist/src/lib/i18n/locales/zh/prompts.js +35 -57
- package/dist/src/lib/i18n/locales/zh/resources.js +52 -55
- package/dist/src/lib/i18n/locales/zh/server.js +51 -25
- package/dist/src/lib/i18n/locales/zh/tools.js +27 -19
- package/dist/src/lib/i18n/logger.js +90 -19
- package/dist/src/lib/logger.js +135 -14
- package/dist/src/lib/server/browser.js +2 -2
- package/dist/src/lib/server/fetcher.js +13 -34
- package/dist/src/lib/server/index.js +2 -2
- package/dist/src/lib/server/prompts.js +1 -1
- package/dist/src/lib/server/resources.js +1 -1
- package/dist/src/lib/server/tools.js +46 -10
- package/dist/src/lib/utils/ErrorHandler.js +125 -0
- package/dist/src/mcp-server.js +0 -0
- package/dist/src/test-i18n.js +139 -0
- package/dist/tests/BrowserFetcher.test.js +0 -0
- package/dist/tests/NodeFetcher.test.js +0 -0
- package/dist/tests/client.test.js +42 -81
- package/dist/tests/fetch.test.js +70 -0
- package/dist/tests/fetchers/Fetcher.test.js +108 -0
- package/dist/tests/fetchers/browser/BrowserFetcher.test.js +195 -0
- package/dist/tests/fetchers/browser/BrowserInstance.test.js +163 -0
- package/dist/tests/fetchers/node/NodeFetcher.test.js +211 -0
- package/dist/tests/i18n-missing-keys.js +364 -0
- package/dist/tests/i18n-remove-unused-keys.js +236 -0
- package/dist/tests/i18n-test-report.json +2004 -0
- package/dist/tests/i18n-unused-keys.js +425 -0
- package/dist/tests/i18n.test.js +6 -7
- package/dist/tests/logger.test.js +14 -13
- package/dist/tests/mcp-server.test.js +7 -7
- package/dist/tests/server/browser.test.js +25 -21
- package/dist/tests/server/fetcher.test.js +58 -101
- package/dist/tests/server/index.test.js +30 -30
- package/dist/tests/server/prompts.test.js +36 -33
- package/dist/tests/server/resources.test.js +120 -84
- package/dist/tests/server/tools.test.js +7 -6
- package/dist/tests/setup.js +36 -0
- package/dist/tests/src/lib/i18n/index.js +108 -0
- package/dist/tests/src/lib/i18n/keys/base.js +47 -0
- package/dist/tests/src/lib/i18n/keys/browser.js +93 -0
- package/dist/tests/src/lib/i18n/keys/client.js +70 -0
- package/dist/tests/src/lib/i18n/keys/errors.js +34 -0
- package/dist/tests/src/lib/i18n/keys/fetcher.js +84 -0
- package/dist/tests/src/lib/i18n/keys/index.js +31 -0
- package/dist/tests/src/lib/i18n/keys/node.js +56 -0
- package/dist/tests/src/lib/i18n/keys/prompts.js +82 -0
- package/dist/tests/src/lib/i18n/keys/resources.js +50 -0
- package/dist/tests/src/lib/i18n/keys/server.js +64 -0
- package/dist/tests/src/lib/i18n/keys/tools.js +34 -0
- package/dist/tests/src/lib/i18n/locales/en/browser.js +88 -0
- package/dist/tests/src/lib/i18n/locales/en/client.js +66 -0
- package/dist/tests/src/lib/i18n/locales/en/errors.js +28 -0
- package/dist/tests/src/lib/i18n/locales/en/fetcher.js +71 -0
- package/dist/tests/src/lib/i18n/locales/en/index.js +29 -0
- package/dist/tests/src/lib/i18n/locales/en/node.js +51 -0
- package/dist/tests/src/lib/i18n/locales/en/prompts.js +52 -0
- package/dist/tests/src/lib/i18n/locales/en/resources.js +50 -0
- package/dist/tests/src/lib/i18n/locales/en/server.js +56 -0
- package/dist/tests/src/lib/i18n/locales/en/tools.js +28 -0
- package/dist/tests/src/lib/i18n/locales/zh/browser.js +87 -0
- package/dist/tests/src/lib/i18n/locales/zh/client.js +66 -0
- package/dist/tests/src/lib/i18n/locales/zh/errors.js +28 -0
- package/dist/tests/src/lib/i18n/locales/zh/fetcher.js +71 -0
- package/dist/tests/src/lib/i18n/locales/zh/index.js +29 -0
- package/dist/tests/src/lib/i18n/locales/zh/node.js +51 -0
- package/dist/tests/src/lib/i18n/locales/zh/prompts.js +53 -0
- package/dist/tests/src/lib/i18n/locales/zh/resources.js +50 -0
- package/dist/tests/src/lib/i18n/locales/zh/server.js +57 -0
- package/dist/tests/src/lib/i18n/locales/zh/tools.js +28 -0
- package/dist/tests/src/lib/i18n/logger.js +114 -0
- package/dist/tests/src/lib/logger.js +181 -0
- package/dist/tests/test-direct-client.js +0 -0
- package/dist/tests/test-i18n.js +530 -0
- package/dist/tests/test-mcp-methods.js +1 -1
- package/dist/tests/test-mcp.js +0 -0
- package/dist/tests/test-mini4k.js +0 -0
- package/dist/tests/tests/test-i18n.js +588 -0
- package/dist/tests/types.test.js +1 -1
- package/dist/tests/utils/ErrorHandler.test.js +144 -0
- package/dist/vitest.config.js +29 -0
- package/package.json +31 -27
- package/dist/src/cli-language.js +0 -78
- package/dist/src/client.d.ts +0 -6
- package/dist/src/client.js.map +0 -1
- package/dist/src/index.d.ts +0 -15
- package/dist/src/index.js.map +0 -1
- package/dist/src/lib/BrowserFetcher.d.ts +0 -175
- package/dist/src/lib/BrowserFetcher.js.map +0 -1
- package/dist/src/lib/NodeFetcher.d.ts +0 -92
- package/dist/src/lib/NodeFetcher.js.map +0 -1
- package/dist/src/lib/example.js +0 -93
- package/dist/src/lib/i18n/index.js.map +0 -1
- package/dist/src/lib/i18n/locales/en/browser.d.ts +0 -61
- package/dist/src/lib/i18n/locales/en/browser.js.map +0 -1
- package/dist/src/lib/i18n/locales/en/client.d.ts +0 -39
- package/dist/src/lib/i18n/locales/en/client.js.map +0 -1
- package/dist/src/lib/i18n/locales/en/errors.d.ts +0 -17
- package/dist/src/lib/i18n/locales/en/errors.js.map +0 -1
- package/dist/src/lib/i18n/locales/en/fetcher.d.ts +0 -66
- package/dist/src/lib/i18n/locales/en/fetcher.js.map +0 -1
- package/dist/src/lib/i18n/locales/en/index.d.ts +0 -344
- package/dist/src/lib/i18n/locales/en/index.js.map +0 -1
- package/dist/src/lib/i18n/locales/en/node.d.ts +0 -41
- package/dist/src/lib/i18n/locales/en/node.js.map +0 -1
- package/dist/src/lib/i18n/locales/en/prompts.d.ts +0 -65
- package/dist/src/lib/i18n/locales/en/prompts.js.map +0 -1
- package/dist/src/lib/i18n/locales/en/resources.d.ts +0 -41
- package/dist/src/lib/i18n/locales/en/resources.js.map +0 -1
- package/dist/src/lib/i18n/locales/en/server.d.ts +0 -30
- package/dist/src/lib/i18n/locales/en/server.js.map +0 -1
- package/dist/src/lib/i18n/locales/en/tools.d.ts +0 -24
- package/dist/src/lib/i18n/locales/en/tools.js.map +0 -1
- package/dist/src/lib/i18n/locales/zh/browser.d.ts +0 -61
- package/dist/src/lib/i18n/locales/zh/browser.js.map +0 -1
- package/dist/src/lib/i18n/locales/zh/client.d.ts +0 -38
- package/dist/src/lib/i18n/locales/zh/client.js.map +0 -1
- package/dist/src/lib/i18n/locales/zh/errors.d.ts +0 -17
- package/dist/src/lib/i18n/locales/zh/errors.js.map +0 -1
- package/dist/src/lib/i18n/locales/zh/fetcher.d.ts +0 -66
- package/dist/src/lib/i18n/locales/zh/fetcher.js.map +0 -1
- package/dist/src/lib/i18n/locales/zh/index.d.ts +0 -343
- package/dist/src/lib/i18n/locales/zh/index.js.map +0 -1
- package/dist/src/lib/i18n/locales/zh/node.d.ts +0 -41
- package/dist/src/lib/i18n/locales/zh/node.js.map +0 -1
- package/dist/src/lib/i18n/locales/zh/prompts.d.ts +0 -65
- package/dist/src/lib/i18n/locales/zh/prompts.js.map +0 -1
- package/dist/src/lib/i18n/locales/zh/resources.d.ts +0 -41
- package/dist/src/lib/i18n/locales/zh/resources.js.map +0 -1
- package/dist/src/lib/i18n/locales/zh/server.d.ts +0 -30
- package/dist/src/lib/i18n/locales/zh/server.js.map +0 -1
- package/dist/src/lib/i18n/locales/zh/tools.d.ts +0 -24
- package/dist/src/lib/i18n/locales/zh/tools.js.map +0 -1
- package/dist/src/lib/i18n/logger.d.ts +0 -38
- package/dist/src/lib/i18n/logger.js.map +0 -1
- package/dist/src/lib/logger.d.ts +0 -32
- package/dist/src/lib/logger.js.map +0 -1
- package/dist/src/lib/server/browser.d.ts +0 -34
- package/dist/src/lib/server/browser.js.map +0 -1
- package/dist/src/lib/server/fetcher.d.ts +0 -20
- package/dist/src/lib/server/fetcher.js.map +0 -1
- package/dist/src/lib/server/index.d.ts +0 -10
- package/dist/src/lib/server/index.js.map +0 -1
- package/dist/src/lib/server/logger.js +0 -23
- package/dist/src/lib/server/prompts.d.ts +0 -11
- package/dist/src/lib/server/prompts.js.map +0 -1
- package/dist/src/lib/server/resources.d.ts +0 -11
- package/dist/src/lib/server/resources.js.map +0 -1
- package/dist/src/lib/server/tools.d.ts +0 -12
- package/dist/src/lib/server/tools.js.map +0 -1
- package/dist/src/lib/server/types.d.ts +0 -71
- package/dist/src/lib/server/types.js.map +0 -1
- package/dist/src/lib/types.d.ts +0 -119
- package/dist/src/lib/types.js.map +0 -1
- package/dist/src/mcp-server.d.ts +0 -6
- package/dist/src/mcp-server.js.map +0 -1
- package/dist/tests/jest.setup.d.ts +0 -6
- package/dist/tests/jest.setup.js +0 -30
- package/dist/tests/jest.setup.js.map +0 -1
- package/dist/tests/test-direct-client.d.ts +0 -6
- package/dist/tests/test-direct-client.js.map +0 -1
- package/dist/tests/test-mcp-methods.d.ts +0 -6
- package/dist/tests/test-mcp-methods.js.map +0 -1
- package/dist/tests/test-mcp.d.ts +0 -6
- package/dist/tests/test-mcp.js.map +0 -1
- package/dist/tests/test-mini4k.d.ts +0 -6
- package/dist/tests/test-mini4k.js.map +0 -1
|
@@ -3,70 +3,47 @@
|
|
|
3
3
|
* Co-Author: AI Assistant (Claude)
|
|
4
4
|
* Description: This code was collaboratively developed by Martin and AI Assistant.
|
|
5
5
|
*/
|
|
6
|
+
import { PROMPTS_KEYS } from '../../keys/prompts.js';
|
|
6
7
|
export default {
|
|
7
|
-
// Prompt list and get
|
|
8
|
-
list: {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
},
|
|
14
|
-
//
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
description: "Fetch website content",
|
|
49
|
-
result: "Website content fetch result",
|
|
50
|
-
message: "I want to fetch the content of a website",
|
|
51
|
-
response: "I can help you fetch website content. Please provide the website URL and desired format.",
|
|
52
|
-
instruction: "Please fetch the content of the following website",
|
|
53
|
-
formatInstruction: "Please return the content in the following format",
|
|
54
|
-
browserInstruction: "Use browser mode"
|
|
55
|
-
},
|
|
56
|
-
// Extract content prompt
|
|
57
|
-
extractContent: {
|
|
58
|
-
description: "Extract specific content from a website",
|
|
59
|
-
result: "Content extraction result",
|
|
60
|
-
message: "Please extract content from the following website",
|
|
61
|
-
selectorInstruction: "Use the following CSS selector to extract content",
|
|
62
|
-
dataTypeInstruction: "Extract the following type of data"
|
|
63
|
-
},
|
|
64
|
-
// Debug fetch prompt
|
|
65
|
-
debugFetch: {
|
|
66
|
-
description: "Debug website fetching issues",
|
|
67
|
-
result: "Fetch issue debugging result",
|
|
68
|
-
message: "I'm having issues fetching the following website",
|
|
69
|
-
errorDetails: "Error details",
|
|
70
|
-
instruction: "Please analyze possible causes and provide solutions. Consider the following points:\n1. Does the website have anti-scraping measures\n2. Is browser mode needed\n3. Are specific headers required\n4. Is redirect or cookie handling needed\n5. Does the website require JavaScript rendering"
|
|
71
|
-
}
|
|
8
|
+
// 提示列表和获取 (Prompt list and get)
|
|
9
|
+
[PROMPTS_KEYS.list.request]: 'Received prompt list request: {{params}}',
|
|
10
|
+
[PROMPTS_KEYS.get.request]: 'Received prompt get request: {{promptName}}, {{args}}',
|
|
11
|
+
// 错误消息 (Error messages)
|
|
12
|
+
[PROMPTS_KEYS.notFound]: 'Prompt template not found',
|
|
13
|
+
[PROMPTS_KEYS.missingRequiredArg]: 'Missing required argument',
|
|
14
|
+
[PROMPTS_KEYS.useBrowserValue]: 'Processing useBrowser parameter: original={{original}}, parsed={{parsed}}',
|
|
15
|
+
// 通用提示 (Generic prompt)
|
|
16
|
+
[PROMPTS_KEYS.generic.result]: 'Execute generic prompt',
|
|
17
|
+
[PROMPTS_KEYS.generic.message]: 'Execute prompt template',
|
|
18
|
+
[PROMPTS_KEYS.generic.args]: 'Arguments',
|
|
19
|
+
// 是/否 (Yes/No)
|
|
20
|
+
[PROMPTS_KEYS.yes]: 'Yes',
|
|
21
|
+
[PROMPTS_KEYS.no]: 'No',
|
|
22
|
+
// 提示描述和参数 (Prompt descriptions and parameters)
|
|
23
|
+
[PROMPTS_KEYS.url.description]: 'Website URL',
|
|
24
|
+
[PROMPTS_KEYS.format.description]: 'Return format, options: html, json, text, markdown',
|
|
25
|
+
[PROMPTS_KEYS.useBrowser.description]: 'Whether to use browser mode to fetch content',
|
|
26
|
+
[PROMPTS_KEYS.selector.description]: 'CSS selector for extracting specific content',
|
|
27
|
+
[PROMPTS_KEYS.dataType.description]: 'Type of data to extract, such as tables, lists, contact info, etc.',
|
|
28
|
+
[PROMPTS_KEYS.error.description]: 'Error information encountered during fetching',
|
|
29
|
+
// 获取网站提示 (Fetch website prompt)
|
|
30
|
+
[PROMPTS_KEYS.fetchWebsite.description]: 'Fetch website content',
|
|
31
|
+
[PROMPTS_KEYS.fetchWebsite.result]: 'Website content fetch result',
|
|
32
|
+
[PROMPTS_KEYS.fetchWebsite.message]: 'I want to fetch the content of a website',
|
|
33
|
+
[PROMPTS_KEYS.fetchWebsite.response]: 'I can help you fetch website content. Please provide the website URL and desired format.',
|
|
34
|
+
[PROMPTS_KEYS.fetchWebsite.instruction]: 'Please fetch the content of the following website',
|
|
35
|
+
[PROMPTS_KEYS.fetchWebsite.formatInstruction]: 'Please return the content in the following format',
|
|
36
|
+
[PROMPTS_KEYS.fetchWebsite.browserInstruction]: 'Use browser mode',
|
|
37
|
+
// 提取内容提示 (Extract content prompt)
|
|
38
|
+
[PROMPTS_KEYS.extractContent.description]: 'Extract specific content from a website',
|
|
39
|
+
[PROMPTS_KEYS.extractContent.result]: 'Content extraction result',
|
|
40
|
+
[PROMPTS_KEYS.extractContent.message]: 'Please extract content from the following website',
|
|
41
|
+
[PROMPTS_KEYS.extractContent.selectorInstruction]: 'Use the following CSS selector to extract content',
|
|
42
|
+
[PROMPTS_KEYS.extractContent.dataTypeInstruction]: 'Extract the following type of data',
|
|
43
|
+
// 调试获取提示 (Debug fetch prompt)
|
|
44
|
+
[PROMPTS_KEYS.debugFetch.description]: 'Debug website fetching issues',
|
|
45
|
+
[PROMPTS_KEYS.debugFetch.result]: 'Fetch issue debugging result',
|
|
46
|
+
[PROMPTS_KEYS.debugFetch.message]: 'I\'m having issues fetching the following website',
|
|
47
|
+
[PROMPTS_KEYS.debugFetch.errorDetails]: 'Error details',
|
|
48
|
+
[PROMPTS_KEYS.debugFetch.instruction]: 'Please analyze possible causes and provide solutions. Consider the following points:\n1. Does the website have anti-scraping measures\n2. Is browser mode needed\n3. Are specific headers required\n4. Is redirect or cookie handling needed\n5. Does the website require JavaScript rendering'
|
|
72
49
|
};
|
|
@@ -3,60 +3,57 @@
|
|
|
3
3
|
* Co-Author: AI Assistant (Claude)
|
|
4
4
|
* Description: This code was collaboratively developed by Martin and AI Assistant.
|
|
5
5
|
*/
|
|
6
|
-
import { RESOURCES_KEYS } from '../../keys.js';
|
|
7
|
-
// 资源相关消息 (
|
|
8
|
-
export
|
|
9
|
-
//
|
|
10
|
-
[RESOURCES_KEYS.list.request]: "
|
|
11
|
-
[RESOURCES_KEYS.list.success]: "
|
|
12
|
-
[RESOURCES_KEYS.list.error]: "Error
|
|
13
|
-
|
|
14
|
-
[RESOURCES_KEYS.
|
|
15
|
-
|
|
16
|
-
[RESOURCES_KEYS.get.
|
|
17
|
-
[RESOURCES_KEYS.get.
|
|
18
|
-
|
|
19
|
-
[RESOURCES_KEYS.
|
|
20
|
-
[RESOURCES_KEYS.
|
|
21
|
-
|
|
22
|
-
[RESOURCES_KEYS.
|
|
23
|
-
|
|
24
|
-
[RESOURCES_KEYS.
|
|
25
|
-
[RESOURCES_KEYS.
|
|
26
|
-
[RESOURCES_KEYS.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
[RESOURCES_KEYS.
|
|
30
|
-
[RESOURCES_KEYS.
|
|
31
|
-
[RESOURCES_KEYS.
|
|
32
|
-
[RESOURCES_KEYS.
|
|
33
|
-
//
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
6
|
+
import { RESOURCES_KEYS } from '../../keys/resources.js';
|
|
7
|
+
// 资源相关消息 (Resource related messages)
|
|
8
|
+
export default {
|
|
9
|
+
// 列表操作 (List operations)
|
|
10
|
+
[RESOURCES_KEYS.list.request]: "List resources request received",
|
|
11
|
+
[RESOURCES_KEYS.list.success]: "Resources listed successfully",
|
|
12
|
+
[RESOURCES_KEYS.list.error]: "Error listing resources: {{error}}",
|
|
13
|
+
[RESOURCES_KEYS.list.notFound]: "No resources found",
|
|
14
|
+
[RESOURCES_KEYS.list.duplicate]: "Duplicate resource found in list",
|
|
15
|
+
// 获取操作 (Get operations)
|
|
16
|
+
[RESOURCES_KEYS.get.request]: "Get resource request received",
|
|
17
|
+
[RESOURCES_KEYS.get.success]: "Resource retrieved successfully",
|
|
18
|
+
[RESOURCES_KEYS.get.error]: "Error retrieving resource: {{error}}",
|
|
19
|
+
[RESOURCES_KEYS.get.notFound]: "Resource not found",
|
|
20
|
+
[RESOURCES_KEYS.get.duplicate]: "Duplicate resource found",
|
|
21
|
+
// 读取操作 (Read operations)
|
|
22
|
+
[RESOURCES_KEYS.read.request]: "Read resource request received",
|
|
23
|
+
[RESOURCES_KEYS.read.success]: "Resource read successfully",
|
|
24
|
+
[RESOURCES_KEYS.read.error]: "Error reading resource: {{error}}",
|
|
25
|
+
[RESOURCES_KEYS.read.notFound]: "Resource to read not found",
|
|
26
|
+
[RESOURCES_KEYS.readError]: "Error reading resource: {{error}}",
|
|
27
|
+
// 创建操作 (Create operations)
|
|
28
|
+
[RESOURCES_KEYS.create.request]: "Create resource request received",
|
|
29
|
+
[RESOURCES_KEYS.create.success]: "Resource created successfully",
|
|
30
|
+
[RESOURCES_KEYS.create.error]: "Error creating resource: {{error}}",
|
|
31
|
+
[RESOURCES_KEYS.create.notFound]: "Parent resource not found",
|
|
32
|
+
[RESOURCES_KEYS.create.duplicate]: "Resource already exists",
|
|
33
|
+
// 更新操作 (Update operations)
|
|
34
|
+
[RESOURCES_KEYS.update.request]: "Update resource request received",
|
|
35
|
+
[RESOURCES_KEYS.update.success]: "Resource updated successfully",
|
|
36
|
+
[RESOURCES_KEYS.update.error]: "Error updating resource: {{error}}",
|
|
37
|
+
[RESOURCES_KEYS.update.notFound]: "Resource to update not found",
|
|
38
|
+
[RESOURCES_KEYS.update.duplicate]: "Update would create duplicate resource",
|
|
39
|
+
// 删除操作 (Delete operations)
|
|
40
|
+
[RESOURCES_KEYS.delete.request]: "Delete resource request received",
|
|
41
|
+
[RESOURCES_KEYS.delete.success]: "Resource deleted successfully",
|
|
42
|
+
[RESOURCES_KEYS.delete.error]: "Error deleting resource: {{error}}",
|
|
43
|
+
[RESOURCES_KEYS.delete.notFound]: "Resource to delete not found",
|
|
44
|
+
[RESOURCES_KEYS.delete.duplicate]: "Multiple resources match delete criteria",
|
|
45
|
+
// 其他资源相关消息 (Other resource related messages)
|
|
46
|
+
[RESOURCES_KEYS.fileReadError]: "Error reading file: {{error}}",
|
|
47
|
+
[RESOURCES_KEYS.invalidUri]: "Invalid URI: {{uri}}",
|
|
48
|
+
[RESOURCES_KEYS.notFound]: "Resource not found: {{path}}",
|
|
37
49
|
// 资源描述 (Resource descriptions)
|
|
38
|
-
readme:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
client: {
|
|
48
|
-
description: "MCP client implementation, used for communicating with the server"
|
|
49
|
-
},
|
|
50
|
-
// 资源模板描述 (Resource template descriptions)
|
|
51
|
-
sourceFile: {
|
|
52
|
-
name: "Source Code File",
|
|
53
|
-
description: "Access project source code files"
|
|
54
|
-
},
|
|
55
|
-
docFile: {
|
|
56
|
-
name: "Documentation File",
|
|
57
|
-
description: "Access project documentation files"
|
|
58
|
-
},
|
|
59
|
-
filename: {
|
|
60
|
-
description: "Filename, including extension"
|
|
61
|
-
}
|
|
50
|
+
[RESOURCES_KEYS.readme.description]: "Project README file",
|
|
51
|
+
[RESOURCES_KEYS.package.description]: "Package configuration file",
|
|
52
|
+
[RESOURCES_KEYS.index.description]: "Main entry point file",
|
|
53
|
+
[RESOURCES_KEYS.client.description]: "Client implementation file",
|
|
54
|
+
[RESOURCES_KEYS.sourceFile.name]: "Source file",
|
|
55
|
+
[RESOURCES_KEYS.sourceFile.description]: "Source code file",
|
|
56
|
+
[RESOURCES_KEYS.docFile.name]: "Documentation file",
|
|
57
|
+
[RESOURCES_KEYS.docFile.description]: "Documentation file",
|
|
58
|
+
[RESOURCES_KEYS.filename.description]: "File name"
|
|
62
59
|
};
|
|
@@ -3,30 +3,55 @@
|
|
|
3
3
|
* Co-Author: AI Assistant (Claude)
|
|
4
4
|
* Description: This code was collaboratively developed by Martin and AI Assistant.
|
|
5
5
|
*/
|
|
6
|
+
import { SERVER_KEYS } from '../../keys/server.js';
|
|
6
7
|
// 服务器相关消息 (Server related messages)
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
started: "MCP server started",
|
|
11
|
-
stopping: "MCP server stopping...",
|
|
12
|
-
stopped: "MCP server stopped",
|
|
13
|
-
error: "MCP server error: {{error}}",
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
8
|
+
export default {
|
|
9
|
+
// 服务器状态相关 (Server status related)
|
|
10
|
+
[SERVER_KEYS.starting]: "MCP server starting...",
|
|
11
|
+
[SERVER_KEYS.started]: "MCP server started",
|
|
12
|
+
[SERVER_KEYS.stopping]: "MCP server stopping...",
|
|
13
|
+
[SERVER_KEYS.stopped]: "MCP server stopped",
|
|
14
|
+
[SERVER_KEYS.error]: "MCP server error: {{error}}",
|
|
15
|
+
[SERVER_KEYS.startupError]: "MCP server startup error: {{error}}",
|
|
16
|
+
// 连接相关 (Connection related)
|
|
17
|
+
[SERVER_KEYS.connecting]: "Connecting to MCP transport: {{transport}}",
|
|
18
|
+
[SERVER_KEYS.connected]: "Connected to MCP transport",
|
|
19
|
+
[SERVER_KEYS.connectionFailed]: "Failed to connect to MCP transport: {{error}}",
|
|
20
|
+
[SERVER_KEYS.disconnected]: "Disconnected from MCP transport: {{transport}}",
|
|
21
|
+
[SERVER_KEYS.connectionError]: "Error connecting to MCP transport: {{error}}",
|
|
22
|
+
// 请求处理相关 (Request handling related)
|
|
23
|
+
[SERVER_KEYS.requestReceived]: "Received request: {{id}}",
|
|
24
|
+
[SERVER_KEYS.requestProcessed]: "Processed {{method}} request: {{path}} ({{time}}ms)",
|
|
25
|
+
[SERVER_KEYS.requestError]: "Error processing {{name}} request: {{error}}",
|
|
26
|
+
// 浏览器相关 (Browser related)
|
|
27
|
+
[SERVER_KEYS.initializingBrowser]: "Initializing browser instance...",
|
|
28
|
+
[SERVER_KEYS.browserInitialized]: "Browser instance initialized",
|
|
29
|
+
[SERVER_KEYS.browserInitFailed]: "Browser initialization failed: {{error}}",
|
|
30
|
+
[SERVER_KEYS.closingBrowser]: "Closing browser instance...",
|
|
31
|
+
[SERVER_KEYS.browserClosed]: "Browser instance closed",
|
|
32
|
+
// 工具相关 (Tool related)
|
|
33
|
+
[SERVER_KEYS.tool.requestReceived]: "Received {{name}} tool request",
|
|
34
|
+
[SERVER_KEYS.tool.requestProcessed]: "Processed {{name}} tool request ({{time}}ms)",
|
|
35
|
+
[SERVER_KEYS.tool.requestError]: "Error processing {{name}} request: {{error}}",
|
|
36
|
+
// 入口相关 (Entry related)
|
|
37
|
+
[SERVER_KEYS.entry.loaded]: "MCP server entry point loaded",
|
|
38
|
+
// 原有键 (Original keys)
|
|
39
|
+
[SERVER_KEYS.receivedRequest]: "Received request: {{id}}",
|
|
40
|
+
[SERVER_KEYS.processingRequest]: "Processing request: {{id}}",
|
|
41
|
+
[SERVER_KEYS.requestCompleted]: "Request completed: {{id}}",
|
|
42
|
+
[SERVER_KEYS.requestFailed]: "Request failed for tool: {{tool}}, error: {{error}}",
|
|
43
|
+
[SERVER_KEYS.receivedInterruptSignal]: "Received interrupt signal, shutting down server...",
|
|
44
|
+
[SERVER_KEYS.receivedTerminateSignal]: "Received terminate signal, shutting down server...",
|
|
45
|
+
[SERVER_KEYS.uncaughtException]: "Uncaught exception: {{error}}",
|
|
46
|
+
[SERVER_KEYS.debug]: "{{message}}",
|
|
47
|
+
[SERVER_KEYS.listeningOn]: "Server listening on port {{port}}",
|
|
22
48
|
// 新增的翻译键 (New translation keys)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
connectionError: "Error connecting to transport: {{error}}"
|
|
49
|
+
[SERVER_KEYS.receivedToolRequest]: "Received tool request: {{name}}",
|
|
50
|
+
[SERVER_KEYS.processingToolRequestError]: "Error processing tool request: {{name}}, {{error}}",
|
|
51
|
+
[SERVER_KEYS.usingBrowserMode]: "Using browser mode for: {{url}}",
|
|
52
|
+
[SERVER_KEYS.usingAutoDetectMode]: "Using auto-detect mode for: {{url}}",
|
|
53
|
+
[SERVER_KEYS.switchingToBrowserMode]: "Standard mode failed, switching to browser mode: {{url}}",
|
|
54
|
+
[SERVER_KEYS.fetchError]: "Error fetching {{type}}: {{error}}",
|
|
55
|
+
[SERVER_KEYS.serverError]: "MCP server error: {{error}}",
|
|
56
|
+
[SERVER_KEYS.transportError]: "MCP transport error: {{error}}"
|
|
32
57
|
};
|
|
@@ -3,23 +3,31 @@
|
|
|
3
3
|
* Co-Author: AI Assistant (Claude)
|
|
4
4
|
* Description: This code was collaboratively developed by Martin and AI Assistant.
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
},
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
},
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
6
|
+
import { TOOLS_KEYS } from '../../keys/tools.js';
|
|
7
|
+
export default {
|
|
8
|
+
// 工具描述 (Tool descriptions)
|
|
9
|
+
[TOOLS_KEYS.fetchHtmlDescription]: 'Fetch a website and return the content as HTML',
|
|
10
|
+
[TOOLS_KEYS.fetchJsonDescription]: 'Fetch a JSON file from a URL',
|
|
11
|
+
[TOOLS_KEYS.fetchTxtDescription]: 'Fetch a website, return the content as plain text (no HTML)',
|
|
12
|
+
[TOOLS_KEYS.fetchMarkdownDescription]: 'Fetch a website and return the content as Markdown',
|
|
13
|
+
// 参数描述 (Parameter descriptions)
|
|
14
|
+
[TOOLS_KEYS.urlDescription]: 'URL of the website to fetch',
|
|
15
|
+
// 错误消息 (Error messages)
|
|
16
|
+
[TOOLS_KEYS.fetchHtmlError]: 'Error fetching HTML: {{error}}',
|
|
17
|
+
[TOOLS_KEYS.fetchJsonError]: 'Error fetching JSON: {{error}}',
|
|
18
|
+
[TOOLS_KEYS.fetchTxtError]: 'Error fetching text: {{error}}',
|
|
19
|
+
[TOOLS_KEYS.fetchMarkdownError]: 'Error fetching Markdown: {{error}}',
|
|
20
|
+
[TOOLS_KEYS.jsonParseWarning]: 'Warning: JSON parse error: {{error}}',
|
|
21
|
+
// 成功消息 (Success messages)
|
|
22
|
+
[TOOLS_KEYS.fetchHtmlSuccess]: 'Successfully fetched HTML from {{url}}',
|
|
23
|
+
[TOOLS_KEYS.fetchJsonSuccess]: 'Successfully fetched JSON from {{url}}',
|
|
24
|
+
[TOOLS_KEYS.fetchTxtSuccess]: 'Successfully fetched text from {{url}}',
|
|
25
|
+
[TOOLS_KEYS.fetchMarkdownSuccess]: 'Successfully fetched Markdown from {{url}}',
|
|
26
|
+
// 工具调用相关 (Tool call related)
|
|
27
|
+
[TOOLS_KEYS.callReceived]: 'Received tool call: {{name}} with args: {{args}}',
|
|
28
|
+
[TOOLS_KEYS.unknownTool]: 'Unknown tool: {{name}}',
|
|
29
|
+
[TOOLS_KEYS.callError]: 'Error calling tool {{name}}: {{error}}',
|
|
30
|
+
[TOOLS_KEYS.missingUrl]: 'Missing URL parameter',
|
|
31
|
+
[TOOLS_KEYS.fetchRequest]: 'Fetching {{type}} from URL: {{url}}',
|
|
32
|
+
[TOOLS_KEYS.fetchError]: 'Error fetching from URL {{url}}: {{error}}'
|
|
25
33
|
};
|
|
@@ -3,74 +3,83 @@
|
|
|
3
3
|
* Co-Author: AI Assistant (Claude)
|
|
4
4
|
* Description: This code was collaboratively developed by Martin and AI Assistant.
|
|
5
5
|
*/
|
|
6
|
-
import { BROWSER_KEYS } from '../../keys.js';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
[BROWSER_KEYS.closing]: "
|
|
6
|
+
import { BROWSER_KEYS } from '../../keys/browser.js';
|
|
7
|
+
export default {
|
|
8
|
+
// 浏览器生命周期 (Browser lifecycle)
|
|
9
|
+
[BROWSER_KEYS.closing]: "关闭浏览器...",
|
|
10
10
|
[BROWSER_KEYS.closed]: "浏览器已关闭",
|
|
11
11
|
[BROWSER_KEYS.starting]: "启动新的浏览器实例",
|
|
12
12
|
[BROWSER_KEYS.startingFailed]: "浏览器启动失败: {{error}}",
|
|
13
|
-
[BROWSER_KEYS.alreadyRunning]: "
|
|
14
|
-
|
|
15
|
-
[BROWSER_KEYS.
|
|
13
|
+
[BROWSER_KEYS.alreadyRunning]: "浏览器正在启动,请等待...",
|
|
14
|
+
// 页面操作 (Page operations)
|
|
15
|
+
[BROWSER_KEYS.creatingPage]: "创建新页面",
|
|
16
|
+
[BROWSER_KEYS.navigatingTo]: "导航到 URL: {{url}}",
|
|
16
17
|
[BROWSER_KEYS.waitingForSelector]: "等待选择器: {{selector}}",
|
|
17
|
-
[BROWSER_KEYS.waitingForTimeout]: "等待超时: {{timeout}}",
|
|
18
|
+
[BROWSER_KEYS.waitingForTimeout]: "等待超时: {{timeout}}ms",
|
|
18
19
|
[BROWSER_KEYS.scrollingToBottom]: "自动滚动页面...",
|
|
20
|
+
[BROWSER_KEYS.scrollError]: "滚动时出错: {{error}}",
|
|
19
21
|
[BROWSER_KEYS.gettingContent]: "获取页面内容...",
|
|
20
|
-
[BROWSER_KEYS.
|
|
21
|
-
|
|
22
|
-
[BROWSER_KEYS.
|
|
23
|
-
[BROWSER_KEYS.
|
|
24
|
-
[BROWSER_KEYS.
|
|
25
|
-
[BROWSER_KEYS.
|
|
26
|
-
[BROWSER_KEYS.
|
|
27
|
-
|
|
28
|
-
[BROWSER_KEYS.
|
|
22
|
+
[BROWSER_KEYS.contentLength]: "内容长度: {{length}} 字节",
|
|
23
|
+
// Cookie 相关 (Cookie related)
|
|
24
|
+
[BROWSER_KEYS.savingCookies]: "保存域名的 Cookie: {{domain}}",
|
|
25
|
+
[BROWSER_KEYS.cookiesSaved]: "Cookie 保存成功",
|
|
26
|
+
[BROWSER_KEYS.loadingCookies]: "加载域名的 Cookie: {{domain}}",
|
|
27
|
+
[BROWSER_KEYS.cookiesLoaded]: "Cookie 加载成功",
|
|
28
|
+
[BROWSER_KEYS.noCookiesFound]: "未找到域名的 Cookie: {{domain}}",
|
|
29
|
+
// 错误相关 (Error related)
|
|
30
|
+
[BROWSER_KEYS.errorLoadingCookies]: "加载 Cookie 错误: {{error}}",
|
|
31
|
+
[BROWSER_KEYS.errorSavingCookies]: "保存 Cookie 错误: {{error}}",
|
|
32
|
+
[BROWSER_KEYS.errorNavigating]: "导航到 URL 错误: {{error}}",
|
|
33
|
+
[BROWSER_KEYS.errorGettingContent]: "获取内容错误: {{error}}",
|
|
29
34
|
[BROWSER_KEYS.errorClosingBrowser]: "关闭浏览器错误: {{error}}",
|
|
30
35
|
[BROWSER_KEYS.errorCreatingPage]: "创建页面错误: {{error}}",
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
36
|
+
[BROWSER_KEYS.closingError]: "浏览器关闭过程中出错: {{error}}",
|
|
37
|
+
// 额外的浏览器相关键 (Additional browser related keys)
|
|
38
|
+
[BROWSER_KEYS.waiting]: "浏览器正在启动,请等待...",
|
|
39
|
+
[BROWSER_KEYS.startupSuccess]: "浏览器启动成功",
|
|
40
|
+
[BROWSER_KEYS.navigating]: "导航到 URL: {{url}}",
|
|
41
|
+
[BROWSER_KEYS.scrolling]: "自动滚动页面...",
|
|
42
|
+
[BROWSER_KEYS.scrollCompleted]: "自动滚动完成",
|
|
43
|
+
[BROWSER_KEYS.contentTruncated]: "内容过大,正在截断...",
|
|
44
|
+
[BROWSER_KEYS.pageClosed]: "页面已关闭",
|
|
45
|
+
[BROWSER_KEYS.fetchError]: "浏览器获取错误: {{error}}",
|
|
46
|
+
[BROWSER_KEYS.highMemory]: "检测到高内存使用: {{usage}}MB",
|
|
47
|
+
[BROWSER_KEYS.closingDueToMemory]: "由于内存使用过高而关闭浏览器",
|
|
48
|
+
[BROWSER_KEYS.forcingGC]: "强制垃圾回收",
|
|
49
|
+
[BROWSER_KEYS.memoryCheckError]: "检查内存使用错误: {{error}}",
|
|
50
|
+
[BROWSER_KEYS.usingCookies]: "使用域名的 Cookie: {{domain}}",
|
|
51
|
+
[BROWSER_KEYS.usingProxy]: "使用代理: {{proxy}}",
|
|
52
|
+
// Cloudflare 相关 (Cloudflare related)
|
|
53
|
+
[BROWSER_KEYS.checkingCloudflare]: "检查 Cloudflare 保护",
|
|
54
|
+
[BROWSER_KEYS.cloudflareDetected]: "检测到 Cloudflare 保护",
|
|
55
|
+
[BROWSER_KEYS.simulatingHuman]: "模拟人类交互以绕过 Cloudflare",
|
|
56
|
+
[BROWSER_KEYS.simulatingHumanError]: "模拟人类交互错误: {{error}}",
|
|
57
|
+
[BROWSER_KEYS.stillOnCloudflare]: "绕过尝试后仍在 Cloudflare 页面",
|
|
58
|
+
[BROWSER_KEYS.bypassFailed]: "Cloudflare 绕过失败",
|
|
59
|
+
[BROWSER_KEYS.cloudflareError]: "Cloudflare 错误: {{error}}",
|
|
60
|
+
[BROWSER_KEYS.continuingWithoutBypass]: "继续而不绕过 Cloudflare",
|
|
61
|
+
[BROWSER_KEYS.unableToBypassCloudflare]: "无法绕过 Cloudflare 保护",
|
|
62
|
+
// 获取和重试相关 (Fetch and retry related)
|
|
63
|
+
[BROWSER_KEYS.fetchingWithRetry]: "重试获取: 第 {{attempt}} 次,共 {{maxAttempts}} 次",
|
|
64
|
+
[BROWSER_KEYS.memoryUsage]: "当前内存使用: {{usage}}MB",
|
|
65
|
+
[BROWSER_KEYS.memoryTooHigh]: "内存使用过高: {{usage}}MB",
|
|
66
|
+
[BROWSER_KEYS.contentTooLarge]: "内容过大: {{size}} 字节",
|
|
67
|
+
[BROWSER_KEYS.failedToParseJSON]: "解析 JSON 失败: {{error}}",
|
|
68
|
+
[BROWSER_KEYS.startingBrowserFetchForMarkdown]: "开始浏览器获取 Markdown",
|
|
69
|
+
[BROWSER_KEYS.errorInBrowserFetchForMarkdown]: "浏览器获取 Markdown 错误: {{error}}",
|
|
70
|
+
[BROWSER_KEYS.fetchRequest]: "获取请求: {{url}}",
|
|
71
|
+
[BROWSER_KEYS.usingStoredCookies]: "使用存储的域名 Cookie: {{domain}}",
|
|
72
|
+
[BROWSER_KEYS.closingInstance]: "关闭浏览器实例",
|
|
73
|
+
[BROWSER_KEYS.fetchErrorWithAttempt]: "获取错误 (第 {{attempt}} 次): {{error}}",
|
|
74
|
+
[BROWSER_KEYS.retryingAfterDelay]: "延迟 {{delay}}ms 后重试",
|
|
75
|
+
// 浏览器启动相关 (Browser startup related)
|
|
76
|
+
[BROWSER_KEYS.browserStartupSuccess]: "浏览器启动成功",
|
|
77
|
+
[BROWSER_KEYS.browserStartupFailed]: "浏览器启动失败: {{error}}",
|
|
78
|
+
[BROWSER_KEYS.usingCustomChromePath]: "使用自定义 Chrome 路径: {{path}}",
|
|
79
|
+
[BROWSER_KEYS.browserDisconnected]: "浏览器已断开连接",
|
|
80
|
+
[BROWSER_KEYS.waitingForBrowserStart]: "等待浏览器启动...",
|
|
81
|
+
[BROWSER_KEYS.reusingExistingBrowser]: "重用现有浏览器实例",
|
|
82
|
+
[BROWSER_KEYS.startingBrowser]: "启动浏览器...",
|
|
83
|
+
[BROWSER_KEYS.browserStarted]: "浏览器已启动",
|
|
84
|
+
[BROWSER_KEYS.browserStartError]: "浏览器启动错误: {{error}}"
|
|
76
85
|
};
|