appium-mcp 1.76.0 → 1.78.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.
Files changed (63) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +169 -70
  3. package/dist/cli/index.d.ts +2 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +49 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/command.js +1 -1
  8. package/dist/command.js.map +1 -1
  9. package/dist/core.d.ts +12 -0
  10. package/dist/core.d.ts.map +1 -0
  11. package/dist/core.js +10 -0
  12. package/dist/core.js.map +1 -0
  13. package/dist/create-server.d.ts +50 -0
  14. package/dist/create-server.d.ts.map +1 -0
  15. package/dist/create-server.js +180 -0
  16. package/dist/create-server.js.map +1 -0
  17. package/dist/index.js +2 -36
  18. package/dist/index.js.map +1 -1
  19. package/dist/plugin.d.ts +209 -0
  20. package/dist/plugin.d.ts.map +1 -0
  21. package/dist/plugin.js +367 -0
  22. package/dist/plugin.js.map +1 -0
  23. package/dist/server.d.ts +1 -2
  24. package/dist/server.d.ts.map +1 -1
  25. package/dist/server.js +2 -67
  26. package/dist/server.js.map +1 -1
  27. package/dist/session-store.d.ts +8 -8
  28. package/dist/session-store.d.ts.map +1 -1
  29. package/dist/session-store.js +3 -2
  30. package/dist/session-store.js.map +1 -1
  31. package/dist/tests/__mocks__/@appium/support.d.ts +54 -61
  32. package/dist/tests/__mocks__/@appium/support.d.ts.map +1 -1
  33. package/dist/tests/__mocks__/@appium/support.js +42 -70
  34. package/dist/tests/__mocks__/@appium/support.js.map +1 -1
  35. package/dist/tests/create-server.test.d.ts +2 -0
  36. package/dist/tests/create-server.test.d.ts.map +1 -0
  37. package/dist/tests/create-server.test.js +253 -0
  38. package/dist/tests/create-server.test.js.map +1 -0
  39. package/dist/tests/plugin.test.d.ts +2 -0
  40. package/dist/tests/plugin.test.d.ts.map +1 -0
  41. package/dist/tests/plugin.test.js +340 -0
  42. package/dist/tests/plugin.test.js.map +1 -0
  43. package/dist/tests/tools/llm-wording.test.js +4 -1
  44. package/dist/tests/tools/llm-wording.test.js.map +1 -1
  45. package/dist/tests/verify.test.d.ts +2 -0
  46. package/dist/tests/verify.test.d.ts.map +1 -0
  47. package/dist/tests/verify.test.js +133 -0
  48. package/dist/tests/verify.test.js.map +1 -0
  49. package/dist/tests/vision-finder.test.d.ts +1 -1
  50. package/dist/tests/vision-finder.test.js +24 -6
  51. package/dist/tests/vision-finder.test.js.map +1 -1
  52. package/package.json +13 -1
  53. package/scripts/verify-names.mjs +12 -0
  54. package/server.json +2 -2
  55. package/src/cli/index.ts +58 -0
  56. package/src/command.ts +1 -1
  57. package/src/core.ts +28 -0
  58. package/src/create-server.ts +252 -0
  59. package/src/index.ts +2 -42
  60. package/src/plugin.ts +557 -0
  61. package/src/resources/submodules.zip +0 -0
  62. package/src/server.ts +2 -87
  63. package/src/session-store.ts +12 -11
package/dist/plugin.js ADDED
@@ -0,0 +1,367 @@
1
+ /**
2
+ * Plugin system for Appium MCP.
3
+ *
4
+ * This module defines the `AppiumMcpPlugin` interface and related types, as well
5
+ * as the `PluginManager` class which handles plugin registration, lifecycle, and
6
+ * tool call interception.
7
+ */
8
+ import { getDriver, getSessionId, getSessionInfo, listSessions, } from './session-store.js';
9
+ import log from './logger.js';
10
+ import registerTools from './tools/index.js';
11
+ const CORE_SOURCE = 'appium-mcp core';
12
+ export class McpRegistry {
13
+ server;
14
+ constructor(server) {
15
+ this.server = server;
16
+ }
17
+ /**
18
+ * Register one MCP tool. Tool calls are wrapped by plugin call hooks.
19
+ *
20
+ * Delegates to FastMCP `addTool`.
21
+ *
22
+ * @see https://github.com/punkpeye/fastmcp#tools
23
+ */
24
+ addTool(name, description, parameters, execute) {
25
+ this.server.addTool({ name, description, parameters, execute });
26
+ }
27
+ /**
28
+ * Register multiple MCP tools.
29
+ *
30
+ * Delegates to FastMCP `addTool` for each definition.
31
+ *
32
+ * @see https://github.com/punkpeye/fastmcp#tools
33
+ */
34
+ addTools(defs) {
35
+ for (const def of defs) {
36
+ this.addTool(def.name, def.description, def.parameters, def.execute);
37
+ }
38
+ }
39
+ /**
40
+ * Register one MCP prompt.
41
+ *
42
+ * Delegates to FastMCP `addPrompt`.
43
+ *
44
+ * @see https://github.com/punkpeye/fastmcp#prompts
45
+ */
46
+ addPrompt(prompt) {
47
+ this.server.addPrompt(prompt);
48
+ }
49
+ /**
50
+ * Register multiple MCP prompts.
51
+ *
52
+ * Delegates to FastMCP `addPrompt` for each definition.
53
+ *
54
+ * @see https://github.com/punkpeye/fastmcp#prompts
55
+ */
56
+ addPrompts(prompts) {
57
+ for (const prompt of prompts) {
58
+ this.addPrompt(prompt);
59
+ }
60
+ }
61
+ /**
62
+ * Register one MCP resource.
63
+ *
64
+ * Delegates to FastMCP `addResource`.
65
+ *
66
+ * @see https://github.com/punkpeye/fastmcp#resources
67
+ */
68
+ addResource(resource) {
69
+ this.server.addResource(resource);
70
+ }
71
+ /**
72
+ * Register multiple MCP resources.
73
+ *
74
+ * Delegates to FastMCP `addResource` for each definition.
75
+ *
76
+ * @see https://github.com/punkpeye/fastmcp#resources
77
+ */
78
+ addResources(resources) {
79
+ for (const resource of resources) {
80
+ this.addResource(resource);
81
+ }
82
+ }
83
+ /**
84
+ * Register one MCP resource template.
85
+ *
86
+ * Delegates to FastMCP `addResourceTemplate`.
87
+ *
88
+ * @see https://github.com/punkpeye/fastmcp#resource-templates
89
+ */
90
+ addResourceTemplate(resourceTemplate) {
91
+ this.server.addResourceTemplate(resourceTemplate);
92
+ }
93
+ /**
94
+ * Register multiple MCP resource templates.
95
+ *
96
+ * Delegates to FastMCP `addResourceTemplate` for each definition.
97
+ *
98
+ * @see https://github.com/punkpeye/fastmcp#resource-templates
99
+ */
100
+ addResourceTemplates(resourceTemplates) {
101
+ for (const resourceTemplate of resourceTemplates) {
102
+ this.addResourceTemplate(resourceTemplate);
103
+ }
104
+ }
105
+ }
106
+ /**
107
+ * Safe Appium MCP primitives exposed to plugins.
108
+ */
109
+ export class AppiumMcpCore {
110
+ /**
111
+ * Return the currently active Appium session id, if one exists.
112
+ */
113
+ getSessionId() {
114
+ return getSessionId();
115
+ }
116
+ /**
117
+ * Return metadata for a specific session, or the active session if `sessionId` is not provided.
118
+ */
119
+ getSessionInfo(sessionId) {
120
+ return getSessionInfo(sessionId);
121
+ }
122
+ /**
123
+ * Return the active driver, or a driver for a specific Appium session id.
124
+ */
125
+ getDriver(sessionId) {
126
+ return getDriver(sessionId);
127
+ }
128
+ /**
129
+ * Return metadata for all Appium sessions tracked by this server.
130
+ */
131
+ listSessions() {
132
+ return listSessions();
133
+ }
134
+ }
135
+ export class PluginManager {
136
+ pluginMap = new Map();
137
+ server;
138
+ core;
139
+ capabilityPluginNames = new Set();
140
+ addToolInterceptorInstalled = false;
141
+ constructor(server) {
142
+ this.server = server;
143
+ this.core = new AppiumMcpCore();
144
+ }
145
+ register(plugins) {
146
+ for (const plugin of plugins) {
147
+ if (this.pluginMap.has(plugin.name)) {
148
+ log.warn(`[PluginManager] Duplicate plugin name "${plugin.name}" – skipping.`);
149
+ continue;
150
+ }
151
+ this.pluginMap.set(plugin.name, plugin);
152
+ log.info(`[PluginManager] Registered plugin "${plugin.name}" v${plugin.version}`);
153
+ }
154
+ this.installAddToolInterceptor();
155
+ }
156
+ registerPluginCapabilities() {
157
+ const registry = new McpRegistry(this.server);
158
+ for (const plugin of this.pluginMap.values()) {
159
+ if (this.capabilityPluginNames.has(plugin.name)) {
160
+ log.warn(`[PluginManager] Duplicate plugin name "${plugin.name}" – skipping.`);
161
+ continue;
162
+ }
163
+ this.capabilityPluginNames.add(plugin.name);
164
+ if (typeof plugin.register === 'function') {
165
+ plugin.register(registry, this.core);
166
+ }
167
+ }
168
+ }
169
+ async initialize() {
170
+ const ctx = {
171
+ core: this.core,
172
+ plugins: this.pluginMap,
173
+ };
174
+ for (const plugin of this.pluginMap.values()) {
175
+ if (typeof plugin.initialize === 'function') {
176
+ await plugin.initialize(ctx);
177
+ }
178
+ }
179
+ }
180
+ async destroy() {
181
+ for (const plugin of Array.from(this.pluginMap.values()).reverse()) {
182
+ if (typeof plugin.destroy === 'function') {
183
+ await plugin.destroy();
184
+ }
185
+ }
186
+ }
187
+ installAddToolInterceptor() {
188
+ if (this.addToolInterceptorInstalled) {
189
+ return;
190
+ }
191
+ this.addToolInterceptorInstalled = true;
192
+ const originalAddTool = this.server.addTool.bind(this.server);
193
+ this.server.addTool = (toolDef) => {
194
+ const wrappedExecute = async (args, mcpCtx) => {
195
+ const sessionCtx = {
196
+ getSessionId: () => getSessionId(),
197
+ getSessionInfo: (sessionId) => getSessionInfo(sessionId),
198
+ getDriver: (sessionId) => getDriver(sessionId),
199
+ listSessions,
200
+ };
201
+ const toolCtx = {
202
+ toolName: toolDef.name,
203
+ args: (args || {}),
204
+ session: sessionCtx,
205
+ };
206
+ for (const plugin of this.pluginMap.values()) {
207
+ if (typeof plugin.beforeCall !== 'function') {
208
+ continue;
209
+ }
210
+ const override = await plugin.beforeCall(toolCtx);
211
+ if (override != null) {
212
+ return {
213
+ content: override.content,
214
+ isError: override.isError,
215
+ };
216
+ }
217
+ }
218
+ const rawResult = (await toolDef.execute(args, mcpCtx));
219
+ let hookResult = {
220
+ isError: rawResult.isError ?? false,
221
+ content: rawResult.content,
222
+ };
223
+ for (const plugin of this.pluginMap.values()) {
224
+ if (typeof plugin.afterCall !== 'function') {
225
+ continue;
226
+ }
227
+ const modified = await plugin.afterCall(toolCtx, hookResult);
228
+ if (modified != null) {
229
+ hookResult = modified;
230
+ }
231
+ }
232
+ return {
233
+ content: hookResult.content,
234
+ isError: hookResult.isError,
235
+ };
236
+ };
237
+ return originalAddTool({ ...toolDef, execute: wrappedExecute });
238
+ };
239
+ }
240
+ }
241
+ /**
242
+ * Verify that plugin and tool names are unique across a set of plugins
243
+ * and report any duplicates or registration errors.
244
+ * @param options - Options for verification, including the list of plugins and any pre-existing errors.
245
+ * @returns A report detailing any duplicates or errors found during verification.
246
+ */
247
+ export function verifyAppiumMcpNames(options = {}) {
248
+ const plugins = options.plugins ?? [];
249
+ const errors = [...(options.errors ?? [])];
250
+ const duplicates = [];
251
+ const toolEntries = [];
252
+ let currentSource = CORE_SOURCE;
253
+ const collector = {
254
+ addTool(toolDef) {
255
+ toolEntries.push({
256
+ name: toolDef.name,
257
+ source: currentSource,
258
+ });
259
+ },
260
+ addPrompt() { },
261
+ addResource() { },
262
+ addResourceTemplate() { },
263
+ };
264
+ const pluginEntries = plugins.map((plugin) => ({
265
+ name: plugin.name,
266
+ source: `plugin:${plugin.name}@${plugin.version}`,
267
+ }));
268
+ duplicates.push(...findDuplicates('plugin', pluginEntries));
269
+ const seenPluginNames = new Set();
270
+ const registry = new McpRegistry(collector);
271
+ const core = new AppiumMcpCore();
272
+ for (const plugin of plugins) {
273
+ if (seenPluginNames.has(plugin.name)) {
274
+ continue;
275
+ }
276
+ seenPluginNames.add(plugin.name);
277
+ if (typeof plugin.register !== 'function') {
278
+ continue;
279
+ }
280
+ currentSource = `plugin:${plugin.name}`;
281
+ try {
282
+ plugin.register(registry, core);
283
+ }
284
+ catch (err) {
285
+ errors.push({
286
+ source: currentSource,
287
+ message: errorMessage(err),
288
+ });
289
+ }
290
+ }
291
+ currentSource = CORE_SOURCE;
292
+ try {
293
+ withSuppressedRegistrationLogs(() => registerTools(collector));
294
+ }
295
+ catch (err) {
296
+ errors.push({
297
+ source: currentSource,
298
+ message: errorMessage(err),
299
+ });
300
+ }
301
+ duplicates.push(...findDuplicates('tool', toolEntries));
302
+ return {
303
+ ok: duplicates.length === 0 && errors.length === 0,
304
+ pluginCount: new Set(pluginEntries.map((entry) => entry.name)).size,
305
+ toolCount: toolEntries.length,
306
+ duplicates,
307
+ errors,
308
+ };
309
+ }
310
+ export function formatVerificationReport(report) {
311
+ const lines = [
312
+ `Checked ${report.pluginCount} plugin name(s) and ${report.toolCount} tool name(s).`,
313
+ ];
314
+ if (report.ok) {
315
+ lines.push('No duplicate plugin or tool names found.');
316
+ return lines.join('\n');
317
+ }
318
+ if (report.duplicates.length > 0) {
319
+ lines.push('Duplicate names found:');
320
+ for (const duplicate of report.duplicates) {
321
+ const sources = duplicate.entries
322
+ .map((entry) => ` - ${entry.source}`)
323
+ .join('\n');
324
+ lines.push(` ${duplicate.kind}: ${duplicate.name}\n${sources}`);
325
+ }
326
+ }
327
+ if (report.errors.length > 0) {
328
+ lines.push('Registration/load errors found:');
329
+ for (const error of report.errors) {
330
+ lines.push(` ${error.source}: ${error.message}`);
331
+ }
332
+ }
333
+ return lines.join('\n');
334
+ }
335
+ function withSuppressedRegistrationLogs(fn) {
336
+ const mutableLog = log;
337
+ const originalInfo = mutableLog.info;
338
+ mutableLog.info = () => { };
339
+ try {
340
+ fn();
341
+ }
342
+ finally {
343
+ mutableLog.info = originalInfo;
344
+ }
345
+ }
346
+ function findDuplicates(kind, entries) {
347
+ const byName = new Map();
348
+ for (const entry of entries) {
349
+ const existing = byName.get(entry.name) ?? [];
350
+ existing.push(entry);
351
+ byName.set(entry.name, existing);
352
+ }
353
+ return Array.from(byName.entries())
354
+ .filter(([, duplicateEntries]) => duplicateEntries.length > 1)
355
+ .map(([name, duplicateEntries]) => ({
356
+ kind,
357
+ name,
358
+ entries: duplicateEntries,
359
+ }));
360
+ }
361
+ function errorMessage(err) {
362
+ if (err instanceof Error) {
363
+ return err.message;
364
+ }
365
+ return String(err);
366
+ }
367
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { FastMCP } from 'fastmcp';
2
- declare const server: FastMCP<import("fastmcp").FastMCPSessionAuth>;
1
+ declare const server: import("fastmcp").FastMCP<import("fastmcp").FastMCPSessionAuth>;
3
2
  export default server;
4
3
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAyClC,QAAA,MAAM,MAAM,+CAIV,CAAC;AA2CH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,MAAM,iEAA0B,CAAC;AACvC,eAAe,MAAM,CAAC"}
package/dist/server.js CHANGED
@@ -1,69 +1,4 @@
1
- import { FastMCP } from 'fastmcp';
2
- import pkg from '../package.json' with { type: 'json' };
3
- import registerTools from './tools/index.js';
4
- import registerResources from './resources/index.js';
5
- import { listSessions, safeDeleteAllSessions } from './session-store.js';
6
- import log from './logger.js';
7
- // FastMCP types `version` as a literal `${number}.${number}.${number}` template,
8
- // while `package.json.version` is just `string`. The cast is the supported
9
- // escape hatch for projects that want the published version to flow through.
10
- const SERVER_VERSION = pkg.version;
11
- const SERVER_INSTRUCTIONS = [
12
- 'Appium mobile automation through MCP. Defaults that avoid broken flows:',
13
- '- Establish a driver session first: select_device and appium_session_management (action=create) for local/embedded mode, or attach to a remote session when the user supplies a server URL.',
14
- '- Call only tools this server actually registers (appium_find_element, appium_gesture, appium_session_management, etc.); do not invent tool names or aliases.',
15
- '- Prefer stable locators: accessibility id and id before long xpath; use xpath only when nothing else works.',
16
- '- Use appium_gesture for taps and drags; when something is off-screen, use action=scroll_to_element instead of spamming appium_find_element alone.',
17
- '- For local Appium install, doctor, or smoke tests, run appium_skills before guessing commands.',
18
- ].join('\n');
19
- /**
20
- * MCP disconnect policy for Appium sessions tracked by this server.
21
- * - delete_all (default): end every owned session when the MCP client disconnects (avoids leaked drivers).
22
- * - skip: keep sessions across disconnects — needed for flaky HTTP/stream clients that reconnect briefly.
23
- */
24
- function disconnectSessionPolicyFromEnv() {
25
- const raw = process.env.APPIUM_MCP_ON_CLIENT_DISCONNECT?.trim().toLowerCase();
26
- if (raw === 'skip') {
27
- return 'skip';
28
- }
29
- if (raw !== 'delete_all') {
30
- log.warn(`APPIUM_MCP_ON_CLIENT_DISCONNECT="${raw}" is not recognized (expected delete_all or skip); defaulting to delete_all`);
31
- }
32
- return 'delete_all';
33
- }
34
- const server = new FastMCP({
35
- name: 'MCP Appium',
36
- version: SERVER_VERSION,
37
- instructions: SERVER_INSTRUCTIONS,
38
- });
39
- registerResources(server);
40
- registerTools(server);
41
- // Handle client connection and disconnection events
42
- server.on('connect', (event) => {
43
- log.info('Client connected:', event.session);
44
- });
45
- server.on('disconnect', async (event) => {
46
- log.info('Client disconnected:', event.session);
47
- const policy = disconnectSessionPolicyFromEnv();
48
- const ownedSessions = listSessions().filter((session) => session.ownership === 'owned');
49
- if (ownedSessions.length > 0 && policy === 'skip') {
50
- log.info(`${ownedSessions.length} owned session(s) retained after MCP disconnect ` +
51
- '(APPIUM_MCP_ON_CLIENT_DISCONNECT=skip). Delete explicitly via appium_session_management (action=delete) when finished.');
52
- return;
53
- }
54
- if (ownedSessions.length > 0) {
55
- try {
56
- log.info(`${ownedSessions.length} owned session(s) detected on disconnect, cleaning up...`);
57
- const deletedCount = await safeDeleteAllSessions();
58
- log.info(`${deletedCount} session(s) cleaned up successfully on disconnect.`);
59
- }
60
- catch (error) {
61
- log.error('Error cleaning up session on disconnect:', error);
62
- }
63
- }
64
- else {
65
- log.info('No owned sessions to clean up on disconnect.');
66
- }
67
- });
1
+ import { createAppiumMcpServer } from './create-server.js';
2
+ const server = createAppiumMcpServer();
68
3
  export default server;
69
4
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACxD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,GAAG,MAAM,aAAa,CAAC;AAE9B,iFAAiF;AACjF,2EAA2E;AAC3E,6EAA6E;AAC7E,MAAM,cAAc,GAAG,GAAG,CAAC,OAA0C,CAAC;AAEtE,MAAM,mBAAmB,GAAG;IAC1B,yEAAyE;IACzE,6LAA6L;IAC7L,+JAA+J;IAC/J,8GAA8G;IAC9G,oJAAoJ;IACpJ,iGAAiG;CAClG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAIb;;;;GAIG;AACH,SAAS,8BAA8B;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9E,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CACN,oCAAoC,GAAG,6EAA6E,CACrH,CAAC;IACJ,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC;IACzB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,cAAc;IACvB,YAAY,EAAE,mBAAmB;CAClC,CAAC,CAAC;AAEH,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,aAAa,CAAC,MAAM,CAAC,CAAC;AAEtB,oDAAoD;AACpD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;IAC7B,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IACtC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,8BAA8B,EAAE,CAAC;IAEhD,MAAM,aAAa,GAAG,YAAY,EAAE,CAAC,MAAM,CACzC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,KAAK,OAAO,CAC3C,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAClD,GAAG,CAAC,IAAI,CACN,GAAG,aAAa,CAAC,MAAM,kDAAkD;YACvE,wHAAwH,CAC3H,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CACN,GAAG,aAAa,CAAC,MAAM,0DAA0D,CAClF,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,qBAAqB,EAAE,CAAC;YACnD,GAAG,CAAC,IAAI,CACN,GAAG,YAAY,oDAAoD,CACpE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC;AACvC,eAAe,MAAM,CAAC"}
@@ -5,13 +5,7 @@ export type DriverInstance = Client | AndroidUiautomator2Driver | XCUITestDriver
5
5
  export type NullableDriverInstance = DriverInstance | null;
6
6
  export type SessionCapabilities = Record<string, any>;
7
7
  export type SessionOwnership = 'owned' | 'attached';
8
- interface SessionMetadata {
9
- platform: string | null;
10
- automationName: string | null;
11
- deviceName: string | null;
12
- capabilities: SessionCapabilities;
13
- }
14
- interface SessionInfo {
8
+ export interface SessionInfo {
15
9
  driver: DriverInstance;
16
10
  sessionId: string;
17
11
  currentContext: string | null;
@@ -20,6 +14,12 @@ interface SessionInfo {
20
14
  metadata: SessionMetadata;
21
15
  remoteServerUrl?: string;
22
16
  }
17
+ interface SessionMetadata {
18
+ platform: string | null;
19
+ automationName: string | null;
20
+ deviceName: string | null;
21
+ capabilities: SessionCapabilities;
22
+ }
23
23
  export declare const PLATFORM: {
24
24
  android: string;
25
25
  ios: string;
@@ -84,7 +84,7 @@ export declare function listSessions(): Array<{
84
84
  export declare function getSessionOwnership(sessionId?: string): SessionOwnership | null;
85
85
  export declare function setActiveSession(sessionId: string): boolean;
86
86
  export declare function setCurrentContext(context: string, sessionId?: string): boolean;
87
- export declare function getSessionInfo(sessionId: string | null): SessionInfo | null;
87
+ export declare function getSessionInfo(sessionId?: string): SessionInfo | null;
88
88
  export declare function getCurrentContext(sessionId?: string): string | null;
89
89
  export declare function isDeletingSessionInProgress(sessionId?: string): boolean;
90
90
  export declare function hasActiveSession(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"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"}
@@ -160,10 +160,11 @@ export function setCurrentContext(context, sessionId) {
160
160
  return true;
161
161
  }
162
162
  export function getSessionInfo(sessionId) {
163
- if (!sessionId) {
163
+ const id = sessionId ?? activeSessionId;
164
+ if (!id) {
164
165
  return null;
165
166
  }
166
- return sessions.get(sessionId) ?? null;
167
+ return sessions.get(id) ?? null;
167
168
  }
168
169
  export function getCurrentContext(sessionId) {
169
170
  const id = sessionId ?? activeSessionId;
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"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"}