@creatoria/miniapp-mcp 0.1.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 +469 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +144 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/defaults.d.ts +73 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +118 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/loader.d.ts +50 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +189 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/core/element-ref.d.ts +44 -0
- package/dist/core/element-ref.d.ts.map +1 -0
- package/dist/core/element-ref.js +213 -0
- package/dist/core/element-ref.js.map +1 -0
- package/dist/core/logger.d.ts +55 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +378 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/output.d.ts +21 -0
- package/dist/core/output.d.ts.map +1 -0
- package/dist/core/output.js +56 -0
- package/dist/core/output.js.map +1 -0
- package/dist/core/report-generator.d.ts +24 -0
- package/dist/core/report-generator.d.ts.map +1 -0
- package/dist/core/report-generator.js +212 -0
- package/dist/core/report-generator.js.map +1 -0
- package/dist/core/session.d.ts +83 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +306 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/timeout.d.ts +49 -0
- package/dist/core/timeout.d.ts.map +1 -0
- package/dist/core/timeout.js +67 -0
- package/dist/core/timeout.js.map +1 -0
- package/dist/core/tool-logger.d.ts +83 -0
- package/dist/core/tool-logger.d.ts.map +1 -0
- package/dist/core/tool-logger.js +453 -0
- package/dist/core/tool-logger.js.map +1 -0
- package/dist/core/validation.d.ts +39 -0
- package/dist/core/validation.d.ts.map +1 -0
- package/dist/core/validation.js +93 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +85 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/assert.d.ts +108 -0
- package/dist/tools/assert.d.ts.map +1 -0
- package/dist/tools/assert.js +291 -0
- package/dist/tools/assert.js.map +1 -0
- package/dist/tools/automator.d.ts +45 -0
- package/dist/tools/automator.d.ts.map +1 -0
- package/dist/tools/automator.js +186 -0
- package/dist/tools/automator.js.map +1 -0
- package/dist/tools/element.d.ts +253 -0
- package/dist/tools/element.d.ts.map +1 -0
- package/dist/tools/element.js +615 -0
- package/dist/tools/element.js.map +1 -0
- package/dist/tools/index.d.ts +97 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +1565 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/miniprogram.d.ts +79 -0
- package/dist/tools/miniprogram.d.ts.map +1 -0
- package/dist/tools/miniprogram.js +245 -0
- package/dist/tools/miniprogram.js.map +1 -0
- package/dist/tools/network.d.ts +65 -0
- package/dist/tools/network.d.ts.map +1 -0
- package/dist/tools/network.js +205 -0
- package/dist/tools/network.js.map +1 -0
- package/dist/tools/page.d.ts +108 -0
- package/dist/tools/page.d.ts.map +1 -0
- package/dist/tools/page.js +307 -0
- package/dist/tools/page.js.map +1 -0
- package/dist/tools/record.d.ts +86 -0
- package/dist/tools/record.d.ts.map +1 -0
- package/dist/tools/record.js +316 -0
- package/dist/tools/record.js.map +1 -0
- package/dist/tools/snapshot.d.ts +82 -0
- package/dist/tools/snapshot.d.ts.map +1 -0
- package/dist/tools/snapshot.js +258 -0
- package/dist/tools/snapshot.js.map +1 -0
- package/dist/types.d.ts +240 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/docs/SIMPLE_USAGE.md +210 -0
- package/docs/api/README.md +244 -0
- package/docs/api/assert.md +1015 -0
- package/docs/api/automator.md +345 -0
- package/docs/api/element.md +1454 -0
- package/docs/api/miniprogram.md +558 -0
- package/docs/api/network.md +883 -0
- package/docs/api/page.md +909 -0
- package/docs/api/record.md +963 -0
- package/docs/api/snapshot.md +792 -0
- package/docs/architecture.E-Docs.md +1359 -0
- package/docs/architecture.F1.md +720 -0
- package/docs/architecture.F2.md +871 -0
- package/docs/architecture.F3.md +905 -0
- package/docs/architecture.md +90 -0
- package/docs/charter.A1.align.yaml +170 -0
- package/docs/charter.A2.align.yaml +199 -0
- package/docs/charter.A3.align.yaml +242 -0
- package/docs/charter.A4.align.yaml +227 -0
- package/docs/charter.B1.align.yaml +179 -0
- package/docs/charter.B2.align.yaml +200 -0
- package/docs/charter.B3.align.yaml +200 -0
- package/docs/charter.B4.align.yaml +188 -0
- package/docs/charter.C1.align.yaml +190 -0
- package/docs/charter.C2.align.yaml +202 -0
- package/docs/charter.C3.align.yaml +211 -0
- package/docs/charter.C4.align.yaml +263 -0
- package/docs/charter.C5.align.yaml +220 -0
- package/docs/charter.D1.align.yaml +190 -0
- package/docs/charter.D2.align.yaml +234 -0
- package/docs/charter.D3.align.yaml +206 -0
- package/docs/charter.E-Docs.align.yaml +294 -0
- package/docs/charter.F1.align.yaml +193 -0
- package/docs/charter.F2.align.yaml +248 -0
- package/docs/charter.F3.align.yaml +287 -0
- package/docs/charter.G.align.yaml +174 -0
- package/docs/charter.align.yaml +111 -0
- package/docs/examples/session-report-usage.md +449 -0
- package/docs/maintenance.md +682 -0
- package/docs/playwright-mcp/350/260/203/347/240/224.md +53 -0
- package/docs/setup-guide.md +775 -0
- package/docs/tasks.A1.atomize.md +296 -0
- package/docs/tasks.A2.atomize.md +408 -0
- package/docs/tasks.A3.atomize.md +564 -0
- package/docs/tasks.A4.atomize.md +496 -0
- package/docs/tasks.B1.atomize.md +352 -0
- package/docs/tasks.B2.atomize.md +561 -0
- package/docs/tasks.B3.atomize.md +508 -0
- package/docs/tasks.B4.atomize.md +504 -0
- package/docs/tasks.C1.atomize.md +540 -0
- package/docs/tasks.C2.atomize.md +665 -0
- package/docs/tasks.C3.atomize.md +745 -0
- package/docs/tasks.C4.atomize.md +908 -0
- package/docs/tasks.C5.atomize.md +755 -0
- package/docs/tasks.D1.atomize.md +547 -0
- package/docs/tasks.D2.atomize.md +619 -0
- package/docs/tasks.D3.atomize.md +790 -0
- package/docs/tasks.E-Docs.atomize.md +1204 -0
- package/docs/tasks.atomize.md +189 -0
- package/docs/troubleshooting.md +855 -0
- package/docs//345/256/214/346/225/264/345/256/236/347/216/260/346/226/271/346/241/210.md +155 -0
- package/docs//345/274/200/345/217/221/344/273/273/345/212/241/350/256/241/345/210/222.md +110 -0
- package/docs//345/276/256/344/277/241/345/260/217/347/250/213/345/272/217/350/207/252/345/212/250/345/214/226API/345/256/214/346/225/264/346/226/207/346/241/243.md +894 -0
- package/docs//345/276/256/344/277/241/345/260/217/347/250/213/345/272/217/350/207/252/345/212/250/345/214/226/345/256/214/346/225/264/346/223/215/344/275/234/346/211/213/345/206/214.md +1885 -0
- package/docs//346/216/245/345/217/243/346/226/271/346/241/210.md +565 -0
- package/docs//347/254/254/344/270/200/347/211/210/346/234/254/346/226/271/346/241/210.md +380 -0
- package/package.json +87 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default configuration values for the MCP server
|
|
3
|
+
*/
|
|
4
|
+
import type { ServerConfig, SessionConfig } from '../types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Default CLI path for WeChat DevTools on macOS
|
|
7
|
+
*/
|
|
8
|
+
export declare const DEFAULT_CLI_PATH_MACOS = "/Applications/wechatwebdevtools.app/Contents/MacOS/cli";
|
|
9
|
+
/**
|
|
10
|
+
* Default automation port for WeChat DevTools
|
|
11
|
+
*/
|
|
12
|
+
export declare const DEFAULT_AUTOMATION_PORT = 9420;
|
|
13
|
+
/**
|
|
14
|
+
* Default output directory for artifacts (relative to cwd)
|
|
15
|
+
*/
|
|
16
|
+
export declare const DEFAULT_OUTPUT_DIR = ".mcp-artifacts";
|
|
17
|
+
/**
|
|
18
|
+
* Default session timeout (30 minutes in milliseconds)
|
|
19
|
+
*/
|
|
20
|
+
export declare const DEFAULT_SESSION_TIMEOUT: number;
|
|
21
|
+
/**
|
|
22
|
+
* Default global timeout for operations (30 seconds in milliseconds)
|
|
23
|
+
*/
|
|
24
|
+
export declare const DEFAULT_TIMEOUT: number;
|
|
25
|
+
/**
|
|
26
|
+
* Default timeout for evaluate operations (5 seconds in milliseconds)
|
|
27
|
+
*/
|
|
28
|
+
export declare const DEFAULT_EVALUATE_TIMEOUT: number;
|
|
29
|
+
/**
|
|
30
|
+
* Default timeout for launch operations (60 seconds in milliseconds)
|
|
31
|
+
*/
|
|
32
|
+
export declare const DEFAULT_LAUNCH_TIMEOUT: number;
|
|
33
|
+
/**
|
|
34
|
+
* Default timeout for screenshot operations (10 seconds in milliseconds)
|
|
35
|
+
*/
|
|
36
|
+
export declare const DEFAULT_SCREENSHOT_TIMEOUT: number;
|
|
37
|
+
/**
|
|
38
|
+
* Default capabilities (all tools enabled)
|
|
39
|
+
*/
|
|
40
|
+
export declare const DEFAULT_CAPABILITIES: string[];
|
|
41
|
+
/**
|
|
42
|
+
* Default log level
|
|
43
|
+
*/
|
|
44
|
+
export declare const DEFAULT_LOG_LEVEL: "info";
|
|
45
|
+
/**
|
|
46
|
+
* Default log buffer size (number of log entries)
|
|
47
|
+
*/
|
|
48
|
+
export declare const DEFAULT_LOG_BUFFER_SIZE = 100;
|
|
49
|
+
/**
|
|
50
|
+
* Default log flush interval (5 seconds in milliseconds)
|
|
51
|
+
*/
|
|
52
|
+
export declare const DEFAULT_LOG_FLUSH_INTERVAL = 5000;
|
|
53
|
+
/**
|
|
54
|
+
* Default server configuration
|
|
55
|
+
*/
|
|
56
|
+
export declare const DEFAULT_SERVER_CONFIG: Required<ServerConfig>;
|
|
57
|
+
/**
|
|
58
|
+
* Default session configuration
|
|
59
|
+
*/
|
|
60
|
+
export declare const DEFAULT_SESSION_CONFIG: Required<SessionConfig>;
|
|
61
|
+
/**
|
|
62
|
+
* Get default CLI path for current platform
|
|
63
|
+
*/
|
|
64
|
+
export declare function getDefaultCliPath(): string;
|
|
65
|
+
/**
|
|
66
|
+
* Merge user config with defaults for server config
|
|
67
|
+
*/
|
|
68
|
+
export declare function mergeServerConfig(userConfig: Partial<ServerConfig>): Required<ServerConfig>;
|
|
69
|
+
/**
|
|
70
|
+
* Merge user config with defaults for session config
|
|
71
|
+
*/
|
|
72
|
+
export declare function mergeSessionConfig(userConfig: Partial<SessionConfig>): Required<SessionConfig>;
|
|
73
|
+
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE9D;;GAEG;AACH,eAAO,MAAM,sBAAsB,2DAA2D,CAAA;AAE9F;;GAEG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAA;AAE3C;;GAEG;AACH,eAAO,MAAM,kBAAkB,mBAAmB,CAAA;AAElD;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAiB,CAAA;AAErD;;GAEG;AACH,eAAO,MAAM,eAAe,QAAY,CAAA;AAExC;;GAEG;AACH,eAAO,MAAM,wBAAwB,QAAW,CAAA;AAEhD;;GAEG;AACH,eAAO,MAAM,sBAAsB,QAAY,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,0BAA0B,QAAY,CAAA;AAEnD;;GAEG;AACH,eAAO,MAAM,oBAAoB,UAAW,CAAA;AAE5C;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAG,MAAe,CAAA;AAEhD;;GAEG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAA;AAE1C;;GAEG;AACH,eAAO,MAAM,0BAA0B,OAAO,CAAA;AAE9C;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,YAAY,CAexD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,aAAa,CAQ1D,CAAA;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAO1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAS3F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAO9F"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default configuration values for the MCP server
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Default CLI path for WeChat DevTools on macOS
|
|
6
|
+
*/
|
|
7
|
+
export const DEFAULT_CLI_PATH_MACOS = '/Applications/wechatwebdevtools.app/Contents/MacOS/cli';
|
|
8
|
+
/**
|
|
9
|
+
* Default automation port for WeChat DevTools
|
|
10
|
+
*/
|
|
11
|
+
export const DEFAULT_AUTOMATION_PORT = 9420;
|
|
12
|
+
/**
|
|
13
|
+
* Default output directory for artifacts (relative to cwd)
|
|
14
|
+
*/
|
|
15
|
+
export const DEFAULT_OUTPUT_DIR = '.mcp-artifacts';
|
|
16
|
+
/**
|
|
17
|
+
* Default session timeout (30 minutes in milliseconds)
|
|
18
|
+
*/
|
|
19
|
+
export const DEFAULT_SESSION_TIMEOUT = 30 * 60 * 1000;
|
|
20
|
+
/**
|
|
21
|
+
* Default global timeout for operations (30 seconds in milliseconds)
|
|
22
|
+
*/
|
|
23
|
+
export const DEFAULT_TIMEOUT = 30 * 1000;
|
|
24
|
+
/**
|
|
25
|
+
* Default timeout for evaluate operations (5 seconds in milliseconds)
|
|
26
|
+
*/
|
|
27
|
+
export const DEFAULT_EVALUATE_TIMEOUT = 5 * 1000;
|
|
28
|
+
/**
|
|
29
|
+
* Default timeout for launch operations (60 seconds in milliseconds)
|
|
30
|
+
*/
|
|
31
|
+
export const DEFAULT_LAUNCH_TIMEOUT = 60 * 1000;
|
|
32
|
+
/**
|
|
33
|
+
* Default timeout for screenshot operations (10 seconds in milliseconds)
|
|
34
|
+
*/
|
|
35
|
+
export const DEFAULT_SCREENSHOT_TIMEOUT = 10 * 1000;
|
|
36
|
+
/**
|
|
37
|
+
* Default capabilities (all tools enabled)
|
|
38
|
+
*/
|
|
39
|
+
export const DEFAULT_CAPABILITIES = ['core'];
|
|
40
|
+
/**
|
|
41
|
+
* Default log level
|
|
42
|
+
*/
|
|
43
|
+
export const DEFAULT_LOG_LEVEL = 'info';
|
|
44
|
+
/**
|
|
45
|
+
* Default log buffer size (number of log entries)
|
|
46
|
+
*/
|
|
47
|
+
export const DEFAULT_LOG_BUFFER_SIZE = 100;
|
|
48
|
+
/**
|
|
49
|
+
* Default log flush interval (5 seconds in milliseconds)
|
|
50
|
+
*/
|
|
51
|
+
export const DEFAULT_LOG_FLUSH_INTERVAL = 5000;
|
|
52
|
+
/**
|
|
53
|
+
* Default server configuration
|
|
54
|
+
*/
|
|
55
|
+
export const DEFAULT_SERVER_CONFIG = {
|
|
56
|
+
projectPath: '', // Must be provided by user
|
|
57
|
+
cliPath: process.platform === 'darwin' ? DEFAULT_CLI_PATH_MACOS : '',
|
|
58
|
+
port: DEFAULT_AUTOMATION_PORT,
|
|
59
|
+
autoPort: DEFAULT_AUTOMATION_PORT, // Alias for port
|
|
60
|
+
capabilities: DEFAULT_CAPABILITIES,
|
|
61
|
+
outputDir: DEFAULT_OUTPUT_DIR,
|
|
62
|
+
timeout: DEFAULT_TIMEOUT,
|
|
63
|
+
sessionTimeout: DEFAULT_SESSION_TIMEOUT,
|
|
64
|
+
logLevel: DEFAULT_LOG_LEVEL,
|
|
65
|
+
enableFileLog: false,
|
|
66
|
+
logBufferSize: DEFAULT_LOG_BUFFER_SIZE,
|
|
67
|
+
logFlushInterval: DEFAULT_LOG_FLUSH_INTERVAL,
|
|
68
|
+
enableSessionReport: false, // F3: Session report generation (default: disabled)
|
|
69
|
+
enableFailureSnapshot: false, // F2: Automatic failure snapshot capture (default: disabled)
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Default session configuration
|
|
73
|
+
*/
|
|
74
|
+
export const DEFAULT_SESSION_CONFIG = {
|
|
75
|
+
projectPath: '', // Must be provided by user
|
|
76
|
+
cliPath: process.platform === 'darwin' ? DEFAULT_CLI_PATH_MACOS : '',
|
|
77
|
+
port: DEFAULT_AUTOMATION_PORT,
|
|
78
|
+
timeout: DEFAULT_TIMEOUT,
|
|
79
|
+
evaluateTimeout: DEFAULT_EVALUATE_TIMEOUT,
|
|
80
|
+
launchTimeout: DEFAULT_LAUNCH_TIMEOUT,
|
|
81
|
+
screenshotTimeout: DEFAULT_SCREENSHOT_TIMEOUT,
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Get default CLI path for current platform
|
|
85
|
+
*/
|
|
86
|
+
export function getDefaultCliPath() {
|
|
87
|
+
if (process.platform === 'darwin') {
|
|
88
|
+
return DEFAULT_CLI_PATH_MACOS;
|
|
89
|
+
}
|
|
90
|
+
// Windows and Linux paths are not standardized
|
|
91
|
+
// User must provide via config
|
|
92
|
+
return '';
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Merge user config with defaults for server config
|
|
96
|
+
*/
|
|
97
|
+
export function mergeServerConfig(userConfig) {
|
|
98
|
+
return {
|
|
99
|
+
...DEFAULT_SERVER_CONFIG,
|
|
100
|
+
...userConfig,
|
|
101
|
+
// Ensure cliPath has a sensible default if not provided
|
|
102
|
+
cliPath: userConfig.cliPath || getDefaultCliPath(),
|
|
103
|
+
// Ensure capabilities is always an array
|
|
104
|
+
capabilities: userConfig.capabilities || DEFAULT_CAPABILITIES,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Merge user config with defaults for session config
|
|
109
|
+
*/
|
|
110
|
+
export function mergeSessionConfig(userConfig) {
|
|
111
|
+
return {
|
|
112
|
+
...DEFAULT_SESSION_CONFIG,
|
|
113
|
+
...userConfig,
|
|
114
|
+
// Ensure cliPath has a sensible default if not provided
|
|
115
|
+
cliPath: userConfig.cliPath || getDefaultCliPath(),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration loader with support for files, environment variables, and CLI args
|
|
3
|
+
* Priority: CLI args > Environment variables > Config file > Defaults
|
|
4
|
+
*/
|
|
5
|
+
import type { ServerConfig } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Find config file in current directory or parent directories
|
|
8
|
+
*/
|
|
9
|
+
export declare function findConfigFile(startDir?: string): string | null;
|
|
10
|
+
/**
|
|
11
|
+
* Auto-detect miniprogram project path
|
|
12
|
+
* Searches for project.config.json or app.json in current dir and subdirectories
|
|
13
|
+
*/
|
|
14
|
+
export declare function autoDetectProjectPath(startDir?: string): string | null;
|
|
15
|
+
/**
|
|
16
|
+
* Load config from file
|
|
17
|
+
*/
|
|
18
|
+
export declare function loadConfigFile(filePath: string): Partial<ServerConfig>;
|
|
19
|
+
/**
|
|
20
|
+
* Load config from environment variables
|
|
21
|
+
* Supported variables:
|
|
22
|
+
* - MCP_PROJECT_PATH
|
|
23
|
+
* - MCP_CLI_PATH
|
|
24
|
+
* - MCP_PORT
|
|
25
|
+
* - MCP_CAPABILITIES (comma-separated)
|
|
26
|
+
* - MCP_OUTPUT_DIR
|
|
27
|
+
* - MCP_TIMEOUT
|
|
28
|
+
* - MCP_SESSION_TIMEOUT
|
|
29
|
+
*/
|
|
30
|
+
export declare function loadConfigFromEnv(): Partial<ServerConfig>;
|
|
31
|
+
/**
|
|
32
|
+
* Merge configs with priority: cliConfig > envConfig > fileConfig > defaults
|
|
33
|
+
*/
|
|
34
|
+
export declare function mergeConfigs(fileConfig?: Partial<ServerConfig>, envConfig?: Partial<ServerConfig>, cliConfig?: Partial<ServerConfig>): Required<ServerConfig>;
|
|
35
|
+
/**
|
|
36
|
+
* Load complete configuration from all sources
|
|
37
|
+
*
|
|
38
|
+
* @param options - Optional overrides
|
|
39
|
+
* @param options.configPath - Explicit config file path (skips auto-discovery)
|
|
40
|
+
* @param options.cliConfig - CLI arguments config
|
|
41
|
+
* @param options.skipEnv - Skip loading from environment variables
|
|
42
|
+
* @param options.skipFile - Skip loading from config file
|
|
43
|
+
*/
|
|
44
|
+
export declare function loadConfig(options?: {
|
|
45
|
+
configPath?: string;
|
|
46
|
+
cliConfig?: Partial<ServerConfig>;
|
|
47
|
+
skipEnv?: boolean;
|
|
48
|
+
skipFile?: boolean;
|
|
49
|
+
}): Required<ServerConfig>;
|
|
50
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAc/C;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAoB9E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAwBrF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAiBtE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAAC,YAAY,CAAC,CAyCzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,UAAU,GAAE,OAAO,CAAC,YAAY,CAAM,EACtC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,EACrC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GACpC,QAAQ,CAAC,YAAY,CAAC,CAYxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IACjC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACd,GACL,QAAQ,CAAC,YAAY,CAAC,CAwCxB"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration loader with support for files, environment variables, and CLI args
|
|
3
|
+
* Priority: CLI args > Environment variables > Config file > Defaults
|
|
4
|
+
*/
|
|
5
|
+
import { readFileSync, existsSync } from 'fs';
|
|
6
|
+
import { join } from 'path';
|
|
7
|
+
import { mergeServerConfig } from './defaults.js';
|
|
8
|
+
/**
|
|
9
|
+
* Config file names to search for (in order of priority)
|
|
10
|
+
*/
|
|
11
|
+
const CONFIG_FILE_NAMES = ['.mcp.json', 'mcp.config.json', '.mcp.config.json'];
|
|
12
|
+
/**
|
|
13
|
+
* Environment variable prefix
|
|
14
|
+
* @unused Reserved for future environment variable support
|
|
15
|
+
*/
|
|
16
|
+
const _ENV_PREFIX = 'MCP_';
|
|
17
|
+
/**
|
|
18
|
+
* Find config file in current directory or parent directories
|
|
19
|
+
*/
|
|
20
|
+
export function findConfigFile(startDir = process.cwd()) {
|
|
21
|
+
let currentDir = startDir;
|
|
22
|
+
// Search up to 5 levels
|
|
23
|
+
for (let i = 0; i < 5; i++) {
|
|
24
|
+
for (const fileName of CONFIG_FILE_NAMES) {
|
|
25
|
+
const filePath = join(currentDir, fileName);
|
|
26
|
+
if (existsSync(filePath)) {
|
|
27
|
+
return filePath;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const parentDir = join(currentDir, '..');
|
|
31
|
+
if (parentDir === currentDir) {
|
|
32
|
+
break; // Reached root
|
|
33
|
+
}
|
|
34
|
+
currentDir = parentDir;
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Auto-detect miniprogram project path
|
|
40
|
+
* Searches for project.config.json or app.json in current dir and subdirectories
|
|
41
|
+
*/
|
|
42
|
+
export function autoDetectProjectPath(startDir = process.cwd()) {
|
|
43
|
+
const indicators = ['project.config.json', 'app.json'];
|
|
44
|
+
// Check current directory first
|
|
45
|
+
for (const indicator of indicators) {
|
|
46
|
+
if (existsSync(join(startDir, indicator))) {
|
|
47
|
+
return startDir;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Check common subdirectories
|
|
51
|
+
const commonDirs = ['dist', 'build', 'miniprogram', 'src'];
|
|
52
|
+
for (const dir of commonDirs) {
|
|
53
|
+
const subDir = join(startDir, dir);
|
|
54
|
+
if (existsSync(subDir)) {
|
|
55
|
+
for (const indicator of indicators) {
|
|
56
|
+
if (existsSync(join(subDir, indicator))) {
|
|
57
|
+
return subDir;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Load config from file
|
|
66
|
+
*/
|
|
67
|
+
export function loadConfigFile(filePath) {
|
|
68
|
+
try {
|
|
69
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
70
|
+
const config = JSON.parse(content);
|
|
71
|
+
// Validate that it's an object (not array or null)
|
|
72
|
+
if (typeof config !== 'object' || config === null || Array.isArray(config)) {
|
|
73
|
+
throw new Error('Config file must contain a JSON object');
|
|
74
|
+
}
|
|
75
|
+
return config;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
if (error instanceof SyntaxError) {
|
|
79
|
+
throw new Error(`Invalid JSON in config file ${filePath}: ${error.message}`);
|
|
80
|
+
}
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Load config from environment variables
|
|
86
|
+
* Supported variables:
|
|
87
|
+
* - MCP_PROJECT_PATH
|
|
88
|
+
* - MCP_CLI_PATH
|
|
89
|
+
* - MCP_PORT
|
|
90
|
+
* - MCP_CAPABILITIES (comma-separated)
|
|
91
|
+
* - MCP_OUTPUT_DIR
|
|
92
|
+
* - MCP_TIMEOUT
|
|
93
|
+
* - MCP_SESSION_TIMEOUT
|
|
94
|
+
*/
|
|
95
|
+
export function loadConfigFromEnv() {
|
|
96
|
+
const config = {};
|
|
97
|
+
if (process.env.MCP_PROJECT_PATH) {
|
|
98
|
+
config.projectPath = process.env.MCP_PROJECT_PATH;
|
|
99
|
+
}
|
|
100
|
+
if (process.env.MCP_CLI_PATH) {
|
|
101
|
+
config.cliPath = process.env.MCP_CLI_PATH;
|
|
102
|
+
}
|
|
103
|
+
if (process.env.MCP_PORT) {
|
|
104
|
+
const port = parseInt(process.env.MCP_PORT, 10);
|
|
105
|
+
if (!isNaN(port)) {
|
|
106
|
+
config.port = port;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (process.env.MCP_CAPABILITIES) {
|
|
110
|
+
config.capabilities = process.env.MCP_CAPABILITIES.split(',').map((s) => s.trim());
|
|
111
|
+
}
|
|
112
|
+
if (process.env.MCP_OUTPUT_DIR) {
|
|
113
|
+
config.outputDir = process.env.MCP_OUTPUT_DIR;
|
|
114
|
+
}
|
|
115
|
+
if (process.env.MCP_TIMEOUT) {
|
|
116
|
+
const timeout = parseInt(process.env.MCP_TIMEOUT, 10);
|
|
117
|
+
if (!isNaN(timeout)) {
|
|
118
|
+
config.timeout = timeout;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (process.env.MCP_SESSION_TIMEOUT) {
|
|
122
|
+
const timeout = parseInt(process.env.MCP_SESSION_TIMEOUT, 10);
|
|
123
|
+
if (!isNaN(timeout)) {
|
|
124
|
+
config.sessionTimeout = timeout;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return config;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Merge configs with priority: cliConfig > envConfig > fileConfig > defaults
|
|
131
|
+
*/
|
|
132
|
+
export function mergeConfigs(fileConfig = {}, envConfig = {}, cliConfig = {}) {
|
|
133
|
+
// Start with file config
|
|
134
|
+
let merged = { ...fileConfig };
|
|
135
|
+
// Override with env config
|
|
136
|
+
merged = { ...merged, ...envConfig };
|
|
137
|
+
// Override with CLI config
|
|
138
|
+
merged = { ...merged, ...cliConfig };
|
|
139
|
+
// Merge with defaults (fills in missing values)
|
|
140
|
+
return mergeServerConfig(merged);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Load complete configuration from all sources
|
|
144
|
+
*
|
|
145
|
+
* @param options - Optional overrides
|
|
146
|
+
* @param options.configPath - Explicit config file path (skips auto-discovery)
|
|
147
|
+
* @param options.cliConfig - CLI arguments config
|
|
148
|
+
* @param options.skipEnv - Skip loading from environment variables
|
|
149
|
+
* @param options.skipFile - Skip loading from config file
|
|
150
|
+
*/
|
|
151
|
+
export function loadConfig(options = {}) {
|
|
152
|
+
const { configPath, cliConfig = {}, skipEnv = false, skipFile = false } = options;
|
|
153
|
+
// Load from file
|
|
154
|
+
let fileConfig = {};
|
|
155
|
+
if (!skipFile) {
|
|
156
|
+
const foundPath = configPath || findConfigFile();
|
|
157
|
+
if (foundPath) {
|
|
158
|
+
try {
|
|
159
|
+
fileConfig = loadConfigFile(foundPath);
|
|
160
|
+
console.error(`Loaded config from: ${foundPath}`);
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
console.error(`Failed to load config file: ${error}`);
|
|
164
|
+
// Continue with empty file config
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Load from environment
|
|
169
|
+
let envConfig = {};
|
|
170
|
+
if (!skipEnv) {
|
|
171
|
+
envConfig = loadConfigFromEnv();
|
|
172
|
+
const envKeys = Object.keys(envConfig);
|
|
173
|
+
if (envKeys.length > 0) {
|
|
174
|
+
console.error(`Loaded config from environment: ${envKeys.join(', ')}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// Auto-detect project path if not specified
|
|
178
|
+
let finalCliConfig = { ...cliConfig };
|
|
179
|
+
if (!finalCliConfig.projectPath && !fileConfig.projectPath && !envConfig.projectPath) {
|
|
180
|
+
const detected = autoDetectProjectPath();
|
|
181
|
+
if (detected) {
|
|
182
|
+
finalCliConfig.projectPath = detected;
|
|
183
|
+
console.error(`Auto-detected project path: ${detected}`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// Merge all configs
|
|
187
|
+
return mergeConfigs(fileConfig, envConfig, finalCliConfig);
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ElementRef resolver for locating elements in miniProgram pages
|
|
3
|
+
* Supports multiple location strategies: refId, selector, xpath, index
|
|
4
|
+
*
|
|
5
|
+
* Cache Invalidation:
|
|
6
|
+
* - Element cache is automatically cleared when page navigation is detected
|
|
7
|
+
* - Cached elements are validated against current page before use
|
|
8
|
+
* - Stale elements (from different pages) are removed automatically
|
|
9
|
+
*/
|
|
10
|
+
import type { SessionState, ElementRefInput, ResolvedElement } from '../types.js';
|
|
11
|
+
import type { Page } from '../types/miniprogram-automator.js';
|
|
12
|
+
/**
|
|
13
|
+
* Generate a unique reference ID for caching elements
|
|
14
|
+
*/
|
|
15
|
+
export declare function generateRefId(): string;
|
|
16
|
+
/**
|
|
17
|
+
* Check if page has changed and clear stale element cache
|
|
18
|
+
* Called before each element resolution to ensure cache validity
|
|
19
|
+
*
|
|
20
|
+
* @param state - Session state with element cache
|
|
21
|
+
* @param currentPagePath - Current page path
|
|
22
|
+
*/
|
|
23
|
+
export declare function invalidateStaleCacheEntries(state: SessionState, currentPagePath: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* Resolve page object from sessionState
|
|
26
|
+
* @param state - Session state containing miniProgram instance
|
|
27
|
+
* @param pagePath - Optional page path. If not provided, uses currentPage
|
|
28
|
+
* @returns Page object
|
|
29
|
+
* @throws Error if miniProgram not connected or page not found
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolvePage(state: SessionState, pagePath?: string): Promise<Page>;
|
|
32
|
+
/**
|
|
33
|
+
* Resolve element using various location strategies
|
|
34
|
+
* @param state - Session state containing element cache
|
|
35
|
+
* @param ref - Element reference input with location strategy
|
|
36
|
+
* @returns Resolved element with page, element object, and optional refId
|
|
37
|
+
* @throws Error if element not found or invalid reference
|
|
38
|
+
*/
|
|
39
|
+
export declare function resolveElement(state: SessionState, ref: ElementRefInput): Promise<ResolvedElement>;
|
|
40
|
+
/**
|
|
41
|
+
* Validate ElementRefInput and provide helpful error messages
|
|
42
|
+
*/
|
|
43
|
+
export declare function validateElementRef(ref: ElementRefInput): void;
|
|
44
|
+
//# sourceMappingURL=element-ref.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element-ref.d.ts","sourceRoot":"","sources":["../../src/core/element-ref.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACjF,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,mCAAmC,CAAA;AAEtE;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAgB9F;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCvF;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,eAAe,CAAC,CAoI1B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAwB7D"}
|