@xiuchang-midscene/shared 2.0.2 → 2.0.3

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.
Files changed (166) hide show
  1. package/dist/es/oss/index.mjs +1 -1
  2. package/dist/lib/oss/index.js +1 -1
  3. package/package.json +1 -1
  4. package/src/oss/index.ts +1 -1
  5. package/dist/es/baseDB.mjs.bak +0 -109
  6. package/dist/es/build/copy-static.mjs.bak +0 -31
  7. package/dist/es/build/rspack-config.mjs.bak +0 -4
  8. package/dist/es/cli/cli-runner.mjs.bak +0 -140
  9. package/dist/es/cli/index.mjs.bak +0 -2
  10. package/dist/es/common.mjs.bak +0 -37
  11. package/dist/es/constants/example-code.mjs.bak +0 -223
  12. package/dist/es/constants/index.mjs.bak +0 -23
  13. package/dist/es/env/basic.mjs.bak +0 -6
  14. package/dist/es/env/constants.mjs.bak +0 -70
  15. package/dist/es/env/global-config-manager.mjs.bak +0 -94
  16. package/dist/es/env/helper.mjs.bak +0 -43
  17. package/dist/es/env/index.mjs.bak +0 -5
  18. package/dist/es/env/init-debug.mjs.bak +0 -18
  19. package/dist/es/env/model-config-manager.mjs.bak +0 -79
  20. package/dist/es/env/parse-model-config.mjs.bak +0 -132
  21. package/dist/es/env/types.mjs.bak +0 -220
  22. package/dist/es/env/utils.mjs.bak +0 -26
  23. package/dist/es/extractor/constants.mjs.bak +0 -2
  24. package/dist/es/extractor/debug.mjs.bak +0 -6
  25. package/dist/es/extractor/dom-util.mjs.bak +0 -92
  26. package/dist/es/extractor/index.mjs.bak +0 -5
  27. package/dist/es/extractor/locator.mjs.bak +0 -250
  28. package/dist/es/extractor/tree.mjs.bak +0 -78
  29. package/dist/es/extractor/util.mjs.bak +0 -245
  30. package/dist/es/extractor/web-extractor.mjs.bak +0 -303
  31. package/dist/es/img/box-select.mjs.bak +0 -824
  32. package/dist/es/img/canvas-fallback.mjs.bak +0 -238
  33. package/dist/es/img/get-photon.mjs.bak +0 -45
  34. package/dist/es/img/get-sharp.mjs.bak +0 -11
  35. package/dist/es/img/index.mjs.bak +0 -4
  36. package/dist/es/img/info.mjs.bak +0 -29
  37. package/dist/es/img/transform.mjs.bak +0 -295
  38. package/dist/es/index.mjs.bak +0 -4
  39. package/dist/es/logger.mjs.bak +0 -64
  40. package/dist/es/mcp/base-server.mjs.bak +0 -281
  41. package/dist/es/mcp/base-tools.mjs.bak +0 -91
  42. package/dist/es/mcp/chrome-path.mjs.bak +0 -35
  43. package/dist/es/mcp/index.mjs.bak +0 -7
  44. package/dist/es/mcp/inject-report-html-plugin.mjs.bak +0 -53
  45. package/dist/es/mcp/launcher-helper.mjs.bak +0 -52
  46. package/dist/es/mcp/tool-generator.mjs.bak +0 -297
  47. package/dist/es/mcp/types.mjs.bak +0 -3
  48. package/dist/es/node/fs.mjs.bak +0 -44
  49. package/dist/es/node/index.mjs.bak +0 -2
  50. package/dist/es/node/port.mjs.bak +0 -24
  51. package/dist/es/oss/demo.mjs.bak +0 -30
  52. package/dist/es/oss/index.mjs.bak +0 -90
  53. package/dist/es/polyfills/async-hooks.mjs.bak +0 -2
  54. package/dist/es/polyfills/index.mjs.bak +0 -1
  55. package/dist/es/types/index.mjs.bak +0 -3
  56. package/dist/es/us-keyboard-layout.mjs.bak +0 -1414
  57. package/dist/es/utils.mjs.bak +0 -72
  58. package/dist/es/zod-schema-utils.mjs.bak +0 -54
  59. package/dist/lib/baseDB.js.bak +0 -149
  60. package/dist/lib/build/copy-static.js.bak +0 -79
  61. package/dist/lib/build/rspack-config.js.bak +0 -38
  62. package/dist/lib/cli/cli-runner.js.bak +0 -196
  63. package/dist/lib/cli/index.js.bak +0 -48
  64. package/dist/lib/common.js.bak +0 -93
  65. package/dist/lib/constants/example-code.js.bak +0 -260
  66. package/dist/lib/constants/index.js.bak +0 -96
  67. package/dist/lib/env/basic.js.bak +0 -40
  68. package/dist/lib/env/constants.js.bak +0 -113
  69. package/dist/lib/env/global-config-manager.js.bak +0 -128
  70. package/dist/lib/env/helper.js.bak +0 -80
  71. package/dist/lib/env/index.js.bak +0 -90
  72. package/dist/lib/env/init-debug.js.bak +0 -52
  73. package/dist/lib/env/model-config-manager.js.bak +0 -113
  74. package/dist/lib/env/parse-model-config.js.bak +0 -178
  75. package/dist/lib/env/types.js.bak +0 -554
  76. package/dist/lib/env/utils.js.bak +0 -72
  77. package/dist/lib/extractor/constants.js.bak +0 -42
  78. package/dist/lib/extractor/debug.js.bak +0 -12
  79. package/dist/lib/extractor/dom-util.js.bak +0 -153
  80. package/dist/lib/extractor/index.js.bak +0 -81
  81. package/dist/lib/extractor/locator.js.bak +0 -296
  82. package/dist/lib/extractor/tree.js.bak +0 -124
  83. package/dist/lib/extractor/util.js.bak +0 -336
  84. package/dist/lib/extractor/web-extractor.js.bak +0 -349
  85. package/dist/lib/img/box-select.js.bak +0 -875
  86. package/dist/lib/img/canvas-fallback.js.bak +0 -305
  87. package/dist/lib/img/get-photon.js.bak +0 -82
  88. package/dist/lib/img/get-sharp.js.bak +0 -45
  89. package/dist/lib/img/index.js.bak +0 -95
  90. package/dist/lib/img/info.js.bak +0 -83
  91. package/dist/lib/img/transform.js.bak +0 -387
  92. package/dist/lib/index.js.bak +0 -47
  93. package/dist/lib/logger.js.bak +0 -114
  94. package/dist/lib/mcp/base-server.js.bak +0 -331
  95. package/dist/lib/mcp/base-tools.js.bak +0 -125
  96. package/dist/lib/mcp/chrome-path.js.bak +0 -72
  97. package/dist/lib/mcp/index.js.bak +0 -100
  98. package/dist/lib/mcp/inject-report-html-plugin.js.bak +0 -98
  99. package/dist/lib/mcp/launcher-helper.js.bak +0 -86
  100. package/dist/lib/mcp/tool-generator.js.bak +0 -334
  101. package/dist/lib/mcp/types.js.bak +0 -40
  102. package/dist/lib/node/fs.js.bak +0 -97
  103. package/dist/lib/node/index.js.bak +0 -65
  104. package/dist/lib/node/port.js.bak +0 -61
  105. package/dist/lib/oss/demo.js.bak +0 -36
  106. package/dist/lib/oss/index.js.bak +0 -138
  107. package/dist/lib/polyfills/async-hooks.js.bak +0 -36
  108. package/dist/lib/polyfills/index.js.bak +0 -58
  109. package/dist/lib/types/index.js.bak +0 -37
  110. package/dist/lib/us-keyboard-layout.js.bak +0 -1457
  111. package/dist/lib/utils.js.bak +0 -148
  112. package/dist/lib/zod-schema-utils.js.bak +0 -97
  113. package/dist/types/baseDB.d.ts.bak +0 -25
  114. package/dist/types/build/copy-static.d.ts.bak +0 -31
  115. package/dist/types/build/rspack-config.d.ts.bak +0 -8
  116. package/dist/types/cli/cli-runner.d.ts.bak +0 -14
  117. package/dist/types/cli/index.d.ts.bak +0 -2
  118. package/dist/types/common.d.ts.bak +0 -12
  119. package/dist/types/constants/example-code.d.ts.bak +0 -2
  120. package/dist/types/constants/index.d.ts.bak +0 -21
  121. package/dist/types/env/basic.d.ts.bak +0 -6
  122. package/dist/types/env/constants.d.ts.bak +0 -40
  123. package/dist/types/env/global-config-manager.d.ts.bak +0 -32
  124. package/dist/types/env/helper.d.ts.bak +0 -4
  125. package/dist/types/env/index.d.ts.bak +0 -4
  126. package/dist/types/env/init-debug.d.ts.bak +0 -1
  127. package/dist/types/env/model-config-manager.d.ts.bak +0 -25
  128. package/dist/types/env/parse-model-config.d.ts.bak +0 -31
  129. package/dist/types/env/types.d.ts.bak +0 -318
  130. package/dist/types/env/utils.d.ts.bak +0 -38
  131. package/dist/types/extractor/constants.d.ts.bak +0 -1
  132. package/dist/types/extractor/debug.d.ts.bak +0 -1
  133. package/dist/types/extractor/dom-util.d.ts.bak +0 -56
  134. package/dist/types/extractor/index.d.ts.bak +0 -32
  135. package/dist/types/extractor/locator.d.ts.bak +0 -9
  136. package/dist/types/extractor/tree.d.ts.bak +0 -6
  137. package/dist/types/extractor/util.d.ts.bak +0 -47
  138. package/dist/types/extractor/web-extractor.d.ts.bak +0 -19
  139. package/dist/types/img/box-select.d.ts.bak +0 -26
  140. package/dist/types/img/canvas-fallback.d.ts.bak +0 -105
  141. package/dist/types/img/get-photon.d.ts.bak +0 -19
  142. package/dist/types/img/get-sharp.d.ts.bak +0 -3
  143. package/dist/types/img/index.d.ts.bak +0 -3
  144. package/dist/types/img/info.d.ts.bak +0 -29
  145. package/dist/types/img/transform.d.ts.bak +0 -107
  146. package/dist/types/index.d.ts.bak +0 -4
  147. package/dist/types/logger.d.ts.bak +0 -5
  148. package/dist/types/mcp/base-server.d.ts.bak +0 -93
  149. package/dist/types/mcp/base-tools.d.ts.bak +0 -79
  150. package/dist/types/mcp/chrome-path.d.ts.bak +0 -2
  151. package/dist/types/mcp/index.d.ts.bak +0 -7
  152. package/dist/types/mcp/inject-report-html-plugin.d.ts.bak +0 -18
  153. package/dist/types/mcp/launcher-helper.d.ts.bak +0 -94
  154. package/dist/types/mcp/tool-generator.d.ts.bak +0 -10
  155. package/dist/types/mcp/types.d.ts.bak +0 -103
  156. package/dist/types/node/fs.d.ts.bak +0 -15
  157. package/dist/types/node/index.d.ts.bak +0 -2
  158. package/dist/types/node/port.d.ts.bak +0 -8
  159. package/dist/types/oss/demo.d.ts.bak +0 -1
  160. package/dist/types/oss/index.d.ts.bak +0 -34
  161. package/dist/types/polyfills/async-hooks.d.ts.bak +0 -6
  162. package/dist/types/polyfills/index.d.ts.bak +0 -4
  163. package/dist/types/types/index.d.ts.bak +0 -34
  164. package/dist/types/us-keyboard-layout.d.ts.bak +0 -32
  165. package/dist/types/utils.d.ts.bak +0 -34
  166. package/dist/types/zod-schema-utils.d.ts.bak +0 -23
@@ -1,331 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.n = (module)=>{
5
- var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
- __webpack_require__.d(getter, {
7
- a: getter
8
- });
9
- return getter;
10
- };
11
- })();
12
- (()=>{
13
- __webpack_require__.d = (exports1, definition)=>{
14
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
- enumerable: true,
16
- get: definition[key]
17
- });
18
- };
19
- })();
20
- (()=>{
21
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
22
- })();
23
- (()=>{
24
- __webpack_require__.r = (exports1)=>{
25
- if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
26
- value: 'Module'
27
- });
28
- Object.defineProperty(exports1, '__esModule', {
29
- value: true
30
- });
31
- };
32
- })();
33
- var __webpack_exports__ = {};
34
- __webpack_require__.r(__webpack_exports__);
35
- __webpack_require__.d(__webpack_exports__, {
36
- CLI_ARGS_CONFIG: ()=>CLI_ARGS_CONFIG,
37
- launchMCPServer: ()=>launchMCPServer,
38
- BaseMCPServer: ()=>BaseMCPServer
39
- });
40
- const external_node_crypto_namespaceObject = require("node:crypto");
41
- const utils_namespaceObject = require("@midscene/shared/utils");
42
- const mcp_js_namespaceObject = require("@modelcontextprotocol/sdk/server/mcp.js");
43
- const stdio_js_namespaceObject = require("@modelcontextprotocol/sdk/server/stdio.js");
44
- const streamableHttp_js_namespaceObject = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
45
- const external_express_namespaceObject = require("express");
46
- var external_express_default = /*#__PURE__*/ __webpack_require__.n(external_express_namespaceObject);
47
- function _define_property(obj, key, value) {
48
- if (key in obj) Object.defineProperty(obj, key, {
49
- value: value,
50
- enumerable: true,
51
- configurable: true,
52
- writable: true
53
- });
54
- else obj[key] = value;
55
- return obj;
56
- }
57
- const CLI_ARGS_CONFIG = {
58
- mode: {
59
- type: 'string',
60
- default: 'stdio'
61
- },
62
- port: {
63
- type: 'string',
64
- default: '3000'
65
- },
66
- host: {
67
- type: 'string',
68
- default: 'localhost'
69
- }
70
- };
71
- function launchMCPServer(server, args) {
72
- if ('http' === args.mode) return server.launchHttp({
73
- port: Number.parseInt(args.port || '3000', 10),
74
- host: args.host || 'localhost'
75
- });
76
- return server.launch();
77
- }
78
- const SESSION_TIMEOUT_MS = 1800000;
79
- const CLEANUP_INTERVAL_MS = 300000;
80
- const MAX_SESSIONS = 100;
81
- class BaseMCPServer {
82
- async initializeToolsManager() {
83
- (0, utils_namespaceObject.setIsMcp)(true);
84
- this.toolsManager = this.providedToolsManager || this.createToolsManager();
85
- try {
86
- await this.toolsManager.initTools();
87
- } catch (error) {
88
- const message = error instanceof Error ? error.message : String(error);
89
- console.error(`Failed to initialize tools: ${message}`);
90
- console.error('Tools will be initialized on first use');
91
- }
92
- this.toolsManager.attachToServer(this.mcpServer);
93
- }
94
- async performCleanup() {
95
- console.error(`${this.config.name} closing...`);
96
- this.mcpServer.close();
97
- await this.toolsManager?.destroy?.().catch(console.error);
98
- }
99
- async launch() {
100
- console.log = (...args)=>{
101
- console.error('[LOG]', ...args);
102
- };
103
- console.info = (...args)=>{
104
- console.error('[INFO]', ...args);
105
- };
106
- console.debug = (...args)=>{
107
- console.error('[DEBUG]', ...args);
108
- };
109
- await this.initializeToolsManager();
110
- const transport = new stdio_js_namespaceObject.StdioServerTransport();
111
- try {
112
- await this.mcpServer.connect(transport);
113
- } catch (error) {
114
- const message = error instanceof Error ? error.message : String(error);
115
- console.error(`Failed to connect MCP stdio transport: ${message}`);
116
- throw new Error(`Failed to initialize MCP stdio transport: ${message}`);
117
- }
118
- let isShuttingDown = false;
119
- const cleanup = ()=>{
120
- if (isShuttingDown) return;
121
- isShuttingDown = true;
122
- console.error(`${this.config.name} shutting down...`);
123
- this.performCleanup().finally(()=>process.exit(0));
124
- };
125
- process.on('uncaughtException', (error)=>{
126
- if ('EPIPE' === error.code || 'ERR_STREAM_DESTROYED' === error.code) return void cleanup();
127
- console.error(`[${this.config.name}] Uncaught Exception:`, error);
128
- console.error('Stack:', error.stack);
129
- });
130
- process.on('unhandledRejection', (reason)=>{
131
- console.error(`[${this.config.name}] Unhandled Rejection:`, reason);
132
- if (reason instanceof Error) console.error('Stack:', reason.stack);
133
- });
134
- process.stdin.on('close', cleanup);
135
- process.stdin.on('end', cleanup);
136
- process.stdout.on('error', cleanup);
137
- process.once('SIGINT', cleanup);
138
- process.once('SIGTERM', cleanup);
139
- process.once('SIGHUP', cleanup);
140
- return {
141
- close: async ()=>{
142
- this.performCleanup();
143
- }
144
- };
145
- }
146
- async launchHttp(options) {
147
- if (!Number.isInteger(options.port) || options.port < 1 || options.port > 65535) throw new Error(`Invalid port number: ${options.port}. Port must be between 1 and 65535.`);
148
- await this.initializeToolsManager();
149
- const app = external_express_default()();
150
- app.use(external_express_default().json({
151
- limit: '10mb'
152
- }));
153
- const sessions = new Map();
154
- app.all('/mcp', async (req, res)=>{
155
- const startTime = Date.now();
156
- const requestId = (0, external_node_crypto_namespaceObject.randomUUID)().substring(0, 8);
157
- try {
158
- const rawSessionId = req.headers['mcp-session-id'];
159
- const sessionId = Array.isArray(rawSessionId) ? rawSessionId[0] : rawSessionId;
160
- let session = sessionId ? sessions.get(sessionId) : void 0;
161
- if (!session && 'POST' === req.method) {
162
- if (sessions.size >= MAX_SESSIONS) {
163
- console.error(`[${new Date().toISOString()}] [${requestId}] Session limit reached: ${sessions.size}/${MAX_SESSIONS}`);
164
- res.status(503).json({
165
- error: 'Too many active sessions',
166
- message: 'Server is at maximum capacity. Please try again later.'
167
- });
168
- return;
169
- }
170
- session = await this.createHttpSession(sessions);
171
- console.log(`[${new Date().toISOString()}] [${requestId}] New session created: ${session.transport.sessionId}`);
172
- }
173
- if (session) {
174
- session.lastAccessedAt = new Date();
175
- await session.transport.handleRequest(req, res, req.body);
176
- const duration = Date.now() - startTime;
177
- console.log(`[${new Date().toISOString()}] [${requestId}] Request completed in ${duration}ms`);
178
- } else {
179
- console.error(`[${new Date().toISOString()}] [${requestId}] Invalid session or GET without session`);
180
- res.status(400).json({
181
- error: 'Invalid session or GET without session'
182
- });
183
- }
184
- } catch (error) {
185
- const message = error instanceof Error ? error.message : String(error);
186
- const duration = Date.now() - startTime;
187
- console.error(`[${new Date().toISOString()}] [${requestId}] MCP request error after ${duration}ms: ${message}`);
188
- if (!res.headersSent) res.status(500).json({
189
- error: 'Internal server error',
190
- message: 'Failed to process MCP request'
191
- });
192
- }
193
- });
194
- const host = options.host || 'localhost';
195
- const server = app.listen(options.port, host, ()=>{
196
- console.log(`${this.config.name} HTTP server listening on http://${host}:${options.port}/mcp`);
197
- }).on('error', (error)=>{
198
- if ('EADDRINUSE' === error.code) console.error(`ERROR: Port ${options.port} is already in use.\nPlease try a different port: --port=<number>\nExample: --mode=http --port=${options.port + 1}`);
199
- else if ('EACCES' === error.code) console.error(`ERROR: Permission denied to bind to port ${options.port}.\nPorts below 1024 require root/admin privileges.\nPlease use a port above 1024 or run with elevated privileges.`);
200
- else console.error(`ERROR: Failed to start HTTP server on ${host}:${options.port}\nReason: ${error.message}\nCode: ${error.code || 'unknown'}`);
201
- process.exit(1);
202
- });
203
- const cleanupInterval = this.startSessionCleanup(sessions);
204
- this.setupHttpShutdownHandlers(server, sessions, cleanupInterval);
205
- return {
206
- port: options.port,
207
- host,
208
- close: async ()=>{
209
- clearInterval(cleanupInterval);
210
- for (const session of sessions.values())try {
211
- await session.transport.close();
212
- } catch (error) {
213
- const message = error instanceof Error ? error.message : String(error);
214
- console.error(`Failed to close session ${session.transport.sessionId}: ${message}`);
215
- }
216
- sessions.clear();
217
- return new Promise((resolve)=>{
218
- server.close(async (err)=>{
219
- if (err) console.error('Error closing HTTP server:', err);
220
- await this.performCleanup();
221
- resolve();
222
- });
223
- });
224
- }
225
- };
226
- }
227
- async createHttpSession(sessions) {
228
- const transport = new streamableHttp_js_namespaceObject.StreamableHTTPServerTransport({
229
- sessionIdGenerator: ()=>(0, external_node_crypto_namespaceObject.randomUUID)(),
230
- onsessioninitialized: (sid)=>{
231
- sessions.set(sid, {
232
- transport,
233
- createdAt: new Date(),
234
- lastAccessedAt: new Date()
235
- });
236
- console.log(`[${new Date().toISOString()}] Session ${sid} initialized (total: ${sessions.size})`);
237
- }
238
- });
239
- transport.onclose = ()=>{
240
- if (transport.sessionId) {
241
- sessions.delete(transport.sessionId);
242
- console.log(`[${new Date().toISOString()}] Session ${transport.sessionId} closed (remaining: ${sessions.size})`);
243
- }
244
- };
245
- try {
246
- await this.mcpServer.connect(transport);
247
- } catch (error) {
248
- const message = error instanceof Error ? error.message : String(error);
249
- console.error(`[${new Date().toISOString()}] Failed to connect MCP transport: ${message}`);
250
- if (transport.sessionId) sessions.delete(transport.sessionId);
251
- throw new Error(`Failed to initialize MCP session: ${message}`);
252
- }
253
- return {
254
- transport,
255
- createdAt: new Date(),
256
- lastAccessedAt: new Date()
257
- };
258
- }
259
- startSessionCleanup(sessions) {
260
- return setInterval(()=>{
261
- const now = Date.now();
262
- for (const [sid, session] of sessions)if (now - session.lastAccessedAt.getTime() > SESSION_TIMEOUT_MS) try {
263
- session.transport.close();
264
- sessions.delete(sid);
265
- console.log(`[${new Date().toISOString()}] Session ${sid} cleaned up due to inactivity (remaining: ${sessions.size})`);
266
- } catch (error) {
267
- const message = error instanceof Error ? error.message : String(error);
268
- console.error(`[${new Date().toISOString()}] Failed to close session ${sid} during cleanup: ${message}`);
269
- sessions.delete(sid);
270
- }
271
- }, CLEANUP_INTERVAL_MS);
272
- }
273
- setupHttpShutdownHandlers(server, sessions, cleanupInterval) {
274
- const cleanup = ()=>{
275
- console.error(`${this.config.name} shutting down...`);
276
- clearInterval(cleanupInterval);
277
- for (const session of sessions.values())try {
278
- session.transport.close();
279
- } catch (error) {
280
- const message = error instanceof Error ? error.message : String(error);
281
- console.error(`Error closing session during shutdown: ${message}`);
282
- }
283
- sessions.clear();
284
- try {
285
- server.close(()=>{
286
- this.performCleanup().finally(()=>process.exit(0));
287
- });
288
- setTimeout(()=>{
289
- console.error('Forcefully shutting down after timeout');
290
- this.performCleanup().finally(()=>process.exit(1));
291
- }, 5000);
292
- } catch (error) {
293
- const message = error instanceof Error ? error.message : String(error);
294
- console.error(`Error closing HTTP server: ${message}`);
295
- this.performCleanup().finally(()=>process.exit(1));
296
- }
297
- };
298
- process.once('SIGINT', cleanup);
299
- process.once('SIGTERM', cleanup);
300
- }
301
- getServer() {
302
- return this.mcpServer;
303
- }
304
- getToolsManager() {
305
- return this.toolsManager;
306
- }
307
- constructor(config, toolsManager){
308
- _define_property(this, "mcpServer", void 0);
309
- _define_property(this, "toolsManager", void 0);
310
- _define_property(this, "config", void 0);
311
- _define_property(this, "providedToolsManager", void 0);
312
- this.config = config;
313
- this.mcpServer = new mcp_js_namespaceObject.McpServer({
314
- name: config.name,
315
- version: config.version,
316
- description: config.description
317
- });
318
- this.providedToolsManager = toolsManager;
319
- }
320
- }
321
- exports.BaseMCPServer = __webpack_exports__.BaseMCPServer;
322
- exports.CLI_ARGS_CONFIG = __webpack_exports__.CLI_ARGS_CONFIG;
323
- exports.launchMCPServer = __webpack_exports__.launchMCPServer;
324
- for(var __rspack_i in __webpack_exports__)if (-1 === [
325
- "BaseMCPServer",
326
- "CLI_ARGS_CONFIG",
327
- "launchMCPServer"
328
- ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
329
- Object.defineProperty(exports, '__esModule', {
330
- value: true
331
- });
@@ -1,125 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
9
- };
10
- })();
11
- (()=>{
12
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
- })();
14
- (()=>{
15
- __webpack_require__.r = (exports1)=>{
16
- if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
- value: 'Module'
18
- });
19
- Object.defineProperty(exports1, '__esModule', {
20
- value: true
21
- });
22
- };
23
- })();
24
- var __webpack_exports__ = {};
25
- __webpack_require__.r(__webpack_exports__);
26
- __webpack_require__.d(__webpack_exports__, {
27
- BaseMidsceneTools: ()=>BaseMidsceneTools
28
- });
29
- const img_namespaceObject = require("@midscene/shared/img");
30
- const logger_namespaceObject = require("@midscene/shared/logger");
31
- const external_tool_generator_js_namespaceObject = require("./tool-generator.js");
32
- function _define_property(obj, key, value) {
33
- if (key in obj) Object.defineProperty(obj, key, {
34
- value: value,
35
- enumerable: true,
36
- configurable: true,
37
- writable: true
38
- });
39
- else obj[key] = value;
40
- return obj;
41
- }
42
- const debug = (0, logger_namespaceObject.getDebug)('mcp:base-tools');
43
- class BaseMidsceneTools {
44
- preparePlatformTools() {
45
- return [];
46
- }
47
- async initTools() {
48
- this.toolDefinitions = [];
49
- const platformTools = this.preparePlatformTools();
50
- this.toolDefinitions.push(...platformTools);
51
- let actionSpace;
52
- if (this.agent) {
53
- actionSpace = await this.agent.getActionSpace();
54
- debug('Action space from agent:', actionSpace.map((a)=>a.name).join(', '));
55
- } else {
56
- const tempDevice = this.createTemporaryDevice();
57
- actionSpace = tempDevice.actionSpace();
58
- await tempDevice.destroy?.();
59
- debug('Action space from temporary device:', actionSpace.map((a)=>a.name).join(', '));
60
- }
61
- const actionTools = (0, external_tool_generator_js_namespaceObject.generateToolsFromActionSpace)(actionSpace, ()=>this.ensureAgent());
62
- const commonTools = (0, external_tool_generator_js_namespaceObject.generateCommonTools)(()=>this.ensureAgent());
63
- this.toolDefinitions.push(...actionTools, ...commonTools);
64
- debug('Total tools prepared:', this.toolDefinitions.length);
65
- }
66
- attachToServer(server) {
67
- this.mcpServer = server;
68
- if (0 === this.toolDefinitions.length) debug('Warning: No tools to register. Tools may be initialized lazily.');
69
- for (const toolDef of this.toolDefinitions)this.mcpServer.tool(toolDef.name, toolDef.description, toolDef.schema, toolDef.handler);
70
- debug('Registered', this.toolDefinitions.length, 'tools');
71
- }
72
- async destroy() {
73
- await this.agent?.destroy?.();
74
- }
75
- getToolDefinitions() {
76
- return this.toolDefinitions;
77
- }
78
- setAgent(agent) {
79
- this.agent = agent;
80
- }
81
- buildScreenshotContent(screenshot) {
82
- const { mimeType, body } = (0, img_namespaceObject.parseBase64)(screenshot);
83
- return [
84
- {
85
- type: 'image',
86
- data: body,
87
- mimeType
88
- }
89
- ];
90
- }
91
- buildTextResult(text) {
92
- return {
93
- content: [
94
- {
95
- type: 'text',
96
- text
97
- }
98
- ]
99
- };
100
- }
101
- createDisconnectHandler(platformName) {
102
- return async ()=>{
103
- if (!this.agent) return this.buildTextResult('No active connection to disconnect');
104
- try {
105
- await this.agent.destroy?.();
106
- } catch (error) {
107
- debug('Failed to destroy agent during disconnect:', error);
108
- }
109
- this.agent = void 0;
110
- return this.buildTextResult(`Disconnected from ${platformName}`);
111
- };
112
- }
113
- constructor(){
114
- _define_property(this, "mcpServer", void 0);
115
- _define_property(this, "agent", void 0);
116
- _define_property(this, "toolDefinitions", []);
117
- }
118
- }
119
- exports.BaseMidsceneTools = __webpack_exports__.BaseMidsceneTools;
120
- for(var __rspack_i in __webpack_exports__)if (-1 === [
121
- "BaseMidsceneTools"
122
- ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
123
- Object.defineProperty(exports, '__esModule', {
124
- value: true
125
- });
@@ -1,72 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
9
- };
10
- })();
11
- (()=>{
12
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
- })();
14
- (()=>{
15
- __webpack_require__.r = (exports1)=>{
16
- if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
- value: 'Module'
18
- });
19
- Object.defineProperty(exports1, '__esModule', {
20
- value: true
21
- });
22
- };
23
- })();
24
- var __webpack_exports__ = {};
25
- __webpack_require__.r(__webpack_exports__);
26
- __webpack_require__.d(__webpack_exports__, {
27
- getSystemChromePath: ()=>getSystemChromePath,
28
- resolveChromePath: ()=>resolveChromePath
29
- });
30
- const external_node_fs_namespaceObject = require("node:fs");
31
- const index_js_namespaceObject = require("../env/index.js");
32
- function getSystemChromePath() {
33
- const platform = process.platform;
34
- const chromePaths = {
35
- darwin: [
36
- '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
37
- '/Applications/Chromium.app/Contents/MacOS/Chromium'
38
- ],
39
- win32: [
40
- 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',
41
- 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
42
- `C:\\Users\\${process.env.USERNAME ?? process.env.USER}\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe`
43
- ],
44
- linux: [
45
- '/opt/google/chrome/chrome',
46
- '/opt/google/chrome/google-chrome',
47
- '/usr/bin/google-chrome-stable',
48
- '/usr/bin/google-chrome',
49
- '/usr/bin/chromium-browser',
50
- '/usr/bin/chromium',
51
- '/snap/bin/chromium'
52
- ]
53
- };
54
- const paths = chromePaths[platform] ?? [];
55
- return paths.find((p)=>(0, external_node_fs_namespaceObject.existsSync)(p));
56
- }
57
- function resolveChromePath() {
58
- const envPath = index_js_namespaceObject.globalConfigManager.getEnvConfigValue(index_js_namespaceObject.MIDSCENE_MCP_CHROME_PATH);
59
- if (envPath && 'auto' !== envPath && (0, external_node_fs_namespaceObject.existsSync)(envPath)) return envPath;
60
- const systemPath = getSystemChromePath();
61
- if (systemPath) return systemPath;
62
- throw new Error('Chrome not found. Install Google Chrome or set MIDSCENE_MCP_CHROME_PATH environment variable.');
63
- }
64
- exports.getSystemChromePath = __webpack_exports__.getSystemChromePath;
65
- exports.resolveChromePath = __webpack_exports__.resolveChromePath;
66
- for(var __rspack_i in __webpack_exports__)if (-1 === [
67
- "getSystemChromePath",
68
- "resolveChromePath"
69
- ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
70
- Object.defineProperty(exports, '__esModule', {
71
- value: true
72
- });
@@ -1,100 +0,0 @@
1
- "use strict";
2
- var __webpack_modules__ = {
3
- "./base-server" (module) {
4
- module.exports = require("./base-server.js");
5
- },
6
- "./base-tools" (module) {
7
- module.exports = require("./base-tools.js");
8
- },
9
- "./chrome-path" (module) {
10
- module.exports = require("./chrome-path.js");
11
- },
12
- "./inject-report-html-plugin" (module) {
13
- module.exports = require("./inject-report-html-plugin.js");
14
- },
15
- "./launcher-helper" (module) {
16
- module.exports = require("./launcher-helper.js");
17
- },
18
- "./tool-generator" (module) {
19
- module.exports = require("./tool-generator.js");
20
- },
21
- "./types" (module) {
22
- module.exports = require("./types.js");
23
- }
24
- };
25
- var __webpack_module_cache__ = {};
26
- function __webpack_require__(moduleId) {
27
- var cachedModule = __webpack_module_cache__[moduleId];
28
- if (void 0 !== cachedModule) return cachedModule.exports;
29
- var module = __webpack_module_cache__[moduleId] = {
30
- exports: {}
31
- };
32
- __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
33
- return module.exports;
34
- }
35
- (()=>{
36
- __webpack_require__.n = (module)=>{
37
- var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
38
- __webpack_require__.d(getter, {
39
- a: getter
40
- });
41
- return getter;
42
- };
43
- })();
44
- (()=>{
45
- __webpack_require__.d = (exports1, definition)=>{
46
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
47
- enumerable: true,
48
- get: definition[key]
49
- });
50
- };
51
- })();
52
- (()=>{
53
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
54
- })();
55
- (()=>{
56
- __webpack_require__.r = (exports1)=>{
57
- if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
58
- value: 'Module'
59
- });
60
- Object.defineProperty(exports1, '__esModule', {
61
- value: true
62
- });
63
- };
64
- })();
65
- var __webpack_exports__ = {};
66
- (()=>{
67
- __webpack_require__.r(__webpack_exports__);
68
- var _base_server__rspack_import_0 = __webpack_require__("./base-server");
69
- var __rspack_reexport = {};
70
- for(const __rspack_import_key in _base_server__rspack_import_0)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_base_server__rspack_import_0[__rspack_import_key];
71
- __webpack_require__.d(__webpack_exports__, __rspack_reexport);
72
- var _base_tools__rspack_import_1 = __webpack_require__("./base-tools");
73
- var __rspack_reexport = {};
74
- for(const __rspack_import_key in _base_tools__rspack_import_1)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_base_tools__rspack_import_1[__rspack_import_key];
75
- __webpack_require__.d(__webpack_exports__, __rspack_reexport);
76
- var _tool_generator__rspack_import_2 = __webpack_require__("./tool-generator");
77
- var __rspack_reexport = {};
78
- for(const __rspack_import_key in _tool_generator__rspack_import_2)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_tool_generator__rspack_import_2[__rspack_import_key];
79
- __webpack_require__.d(__webpack_exports__, __rspack_reexport);
80
- var _types__rspack_import_3 = __webpack_require__("./types");
81
- var __rspack_reexport = {};
82
- for(const __rspack_import_key in _types__rspack_import_3)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_types__rspack_import_3[__rspack_import_key];
83
- __webpack_require__.d(__webpack_exports__, __rspack_reexport);
84
- var _inject_report_html_plugin__rspack_import_4 = __webpack_require__("./inject-report-html-plugin");
85
- var __rspack_reexport = {};
86
- for(const __rspack_import_key in _inject_report_html_plugin__rspack_import_4)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_inject_report_html_plugin__rspack_import_4[__rspack_import_key];
87
- __webpack_require__.d(__webpack_exports__, __rspack_reexport);
88
- var _launcher_helper__rspack_import_5 = __webpack_require__("./launcher-helper");
89
- var __rspack_reexport = {};
90
- for(const __rspack_import_key in _launcher_helper__rspack_import_5)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_launcher_helper__rspack_import_5[__rspack_import_key];
91
- __webpack_require__.d(__webpack_exports__, __rspack_reexport);
92
- var _chrome_path__rspack_import_6 = __webpack_require__("./chrome-path");
93
- var __rspack_reexport = {};
94
- for(const __rspack_import_key in _chrome_path__rspack_import_6)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_chrome_path__rspack_import_6[__rspack_import_key];
95
- __webpack_require__.d(__webpack_exports__, __rspack_reexport);
96
- })();
97
- for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
98
- Object.defineProperty(exports, '__esModule', {
99
- value: true
100
- });