appium-mcp 1.6.1 → 1.7.1

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/.releaserc CHANGED
@@ -29,7 +29,7 @@
29
29
  }],
30
30
  "@semantic-release/npm",
31
31
  ["@semantic-release/git", {
32
- "assets": ["docs", "package.json", "CHANGELOG.md"],
32
+ "assets": ["docs", "package.json", "package-lock.json", "CHANGELOG.md", "server.json"],
33
33
  "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
34
34
  }],
35
35
  "@semantic-release/github"
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [1.7.1](https://github.com/appium/appium-mcp/compare/v1.7.0...v1.7.1) (2026-01-06)
2
+
3
+ ### Bug Fixes
4
+
5
+ * fix the scheme version for modelcontextprotocol ([#76](https://github.com/appium/appium-mcp/issues/76)) ([117112e](https://github.com/appium/appium-mcp/commit/117112e63528c2f413d6e355305473c283f103fb))
6
+
7
+ ## [1.7.0](https://github.com/appium/appium-mcp/compare/v1.6.1...v1.7.0) (2026-01-05)
8
+
9
+ ### Features
10
+
11
+ * Add interactive UI experiences to mcp ([#75](https://github.com/appium/appium-mcp/issues/75)) ([b0b49c7](https://github.com/appium/appium-mcp/commit/b0b49c7deec5eebaca7ac50060844cedcbf1d8b5))
12
+
1
13
  ## [1.6.1](https://github.com/appium/appium-mcp/compare/v1.6.0...v1.6.1) (2026-01-05)
2
14
 
3
15
  ### Bug Fixes
@@ -1,5 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { getDriver, getPlatformName } from '../../session-store.js';
3
+ import { createUIResource, createAppListUI, addUIResourceToResponse, } from '../../ui/mcp-ui-utils.js';
3
4
  async function listAppsFromDevice() {
4
5
  const driver = await getDriver();
5
6
  if (!driver) {
@@ -34,7 +35,7 @@ export default function listApps(server) {
34
35
  execute: async () => {
35
36
  try {
36
37
  const apps = await listAppsFromDevice();
37
- return {
38
+ const textResponse = {
38
39
  content: [
39
40
  {
40
41
  type: 'text',
@@ -42,6 +43,9 @@ export default function listApps(server) {
42
43
  },
43
44
  ],
44
45
  };
46
+ // Add interactive app list UI
47
+ const uiResource = createUIResource(`ui://appium-mcp/app-list/${Date.now()}`, createAppListUI(apps));
48
+ return addUIResourceToResponse(textResponse, uiResource);
45
49
  }
46
50
  catch (err) {
47
51
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"list-apps.js","sourceRoot":"","sources":["../../../src/tools/app-management/list-apps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEpE,KAAK,UAAU,kBAAkB;IAC/B,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3C,OAAO;QACP,KAAK;QACL,SAAS;QACT,MAAM;QACN,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,IAAI,GAAU,WAAW;SAC5B,KAAK,CAAC,UAAU,CAAC;SACjB,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAC5B,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;QAChB,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE;QACrB,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC,CAAC;IAEN,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,MAAe;IAC9C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE5B,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,wCAAwC;QACrD,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,kBAAkB,EAAE,CAAC;gBACxC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;yBACzD;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,6BAA6B,GAAG,CAAC,QAAQ,EAAE,EAAE;yBACpD;qBACF;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"list-apps.js","sourceRoot":"","sources":["../../../src/tools/app-management/list-apps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAElC,KAAK,UAAU,kBAAkB;IAC/B,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3C,OAAO;QACP,KAAK;QACL,SAAS;QACT,MAAM;QACN,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,IAAI,GAAU,WAAW;SAC5B,KAAK,CAAC,UAAU,CAAC;SACjB,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAC5B,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;QAChB,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE;QACrB,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC,CAAC;IAEN,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,MAAe;IAC9C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE5B,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,wCAAwC;QACrD,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,kBAAkB,EAAE,CAAC;gBACxC,MAAM,YAAY,GAAG;oBACnB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;yBACzD;qBACF;iBACF,CAAC;gBAEF,8BAA8B;gBAC9B,MAAM,UAAU,GAAG,gBAAgB,CACjC,4BAA4B,IAAI,CAAC,GAAG,EAAE,EAAE,EACxC,eAAe,CAAC,IAAI,CAAC,CACtB,CAAC;gBAEF,OAAO,uBAAuB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC3D,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,6BAA6B,GAAG,CAAC,QAAQ,EAAE,EAAE;yBACpD;qBACF;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { getDriver } from '../../session-store.js';
3
+ import { createUIResource, createContextSwitcherUI, addUIResourceToResponse, } from '../../ui/mcp-ui-utils.js';
3
4
  export default function getContexts(server) {
4
5
  server.addTool({
5
6
  name: 'appium_get_contexts',
@@ -29,7 +30,7 @@ export default function getContexts(server) {
29
30
  ],
30
31
  };
31
32
  }
32
- return {
33
+ const textResponse = {
33
34
  content: [
34
35
  {
35
36
  type: 'text',
@@ -37,6 +38,9 @@ export default function getContexts(server) {
37
38
  },
38
39
  ],
39
40
  };
41
+ // Add interactive context switcher UI
42
+ const uiResource = createUIResource(`ui://appium-mcp/context-switcher/${Date.now()}`, createContextSwitcherUI(contexts, currentContext));
43
+ return addUIResourceToResponse(textResponse, uiResource);
40
44
  }
41
45
  catch (err) {
42
46
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"get-contexts.js","sourceRoot":"","sources":["../../../src/tools/context/get-contexts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,MAAe;IACjD,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,oLAAoL;QACtL,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,OAAY,EAAgB,EAAE;YACvD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBACnD,MAAM,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;oBAC5C,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;iBACrC,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvC,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,wBAAwB;6BAC/B;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,uBAAuB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,sBAAsB,cAAc,IAAI,KAAK,EAAE;yBAC9G;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,kCAAkC,GAAG,CAAC,QAAQ,EAAE,EAAE;yBACzD;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"get-contexts.js","sourceRoot":"","sources":["../../../src/tools/context/get-contexts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,MAAe;IACjD,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,oLAAoL;QACtL,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,OAAY,EAAgB,EAAE;YACvD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBACnD,MAAM,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;oBAC5C,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;iBACrC,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvC,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,wBAAwB;6BAC/B;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAED,MAAM,YAAY,GAAG;oBACnB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,uBAAuB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,sBAAsB,cAAc,IAAI,KAAK,EAAE;yBAC9G;qBACF;iBACF,CAAC;gBAEF,sCAAsC;gBACtC,MAAM,UAAU,GAAG,gBAAgB,CACjC,oCAAoC,IAAI,CAAC,GAAG,EAAE,EAAE,EAChD,uBAAuB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAClD,CAAC;gBAEF,OAAO,uBAAuB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC3D,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,kCAAkC,GAAG,CAAC,QAAQ,EAAE,EAAE;yBACzD;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { getDriver } from '../../session-store.js';
3
+ import { createUIResource, createPageSourceInspectorUI, addUIResourceToResponse, } from '../../ui/mcp-ui-utils.js';
3
4
  export default function getPageSource(server) {
4
5
  server.addTool({
5
6
  name: 'appium_get_page_source',
@@ -19,7 +20,7 @@ export default function getPageSource(server) {
19
20
  if (!pageSource) {
20
21
  throw new Error('Page source is empty or null');
21
22
  }
22
- return {
23
+ const textResponse = {
23
24
  content: [
24
25
  {
25
26
  type: 'text',
@@ -30,6 +31,9 @@ export default function getPageSource(server) {
30
31
  },
31
32
  ],
32
33
  };
34
+ // Add interactive page source inspector UI
35
+ const uiResource = createUIResource(`ui://appium-mcp/page-source-inspector/${Date.now()}`, createPageSourceInspectorUI(pageSource));
36
+ return addUIResourceToResponse(textResponse, uiResource);
33
37
  }
34
38
  catch (err) {
35
39
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"get-page-source.js","sourceRoot":"","sources":["../../../src/tools/interactions/get-page-source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,MAAe;IACnD,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,mDAAmD;QAChE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,OAAY,EAAgB,EAAE;YACvD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;gBAEhD,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAClD,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EACF,wCAAwC;gCACxC,SAAS;gCACT,UAAU;gCACV,KAAK;yBACR;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,qCAAqC,GAAG,CAAC,QAAQ,EAAE,EAAE;yBAC5D;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"get-page-source.js","sourceRoot":"","sources":["../../../src/tools/interactions/get-page-source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,MAAe;IACnD,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EAAE,mDAAmD;QAChE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,OAAY,EAAgB,EAAE;YACvD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;gBAEhD,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAClD,CAAC;gBAED,MAAM,YAAY,GAAG;oBACnB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EACF,wCAAwC;gCACxC,SAAS;gCACT,UAAU;gCACV,KAAK;yBACR;qBACF;iBACF,CAAC;gBAEF,2CAA2C;gBAC3C,MAAM,UAAU,GAAG,gBAAgB,CACjC,yCAAyC,IAAI,CAAC,GAAG,EAAE,EAAE,EACrD,2BAA2B,CAAC,UAAU,CAAC,CACxC,CAAC;gBAEF,OAAO,uBAAuB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC3D,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,qCAAqC,GAAG,CAAC,QAAQ,EAAE,EAAE;yBAC5D;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { getDriver } from '../../session-store.js';
2
2
  import { writeFile, mkdir } from 'fs/promises';
3
3
  import { join, isAbsolute } from 'path';
4
+ import { createUIResource, createScreenshotViewerUI, addUIResourceToResponse, } from '../../ui/mcp-ui-utils.js';
4
5
  /**
5
6
  * Resolves the screenshot directory path.
6
7
  * - If SCREENSHOTS_DIR is not set, returns process.cwd()
@@ -42,7 +43,7 @@ export async function executeScreenshot(deps = defaultDeps) {
42
43
  const filepath = join(screenshotDir, filename);
43
44
  // Save screenshot to disk
44
45
  await deps.writeFile(filepath, screenshotBuffer);
45
- return {
46
+ const textResponse = {
46
47
  content: [
47
48
  {
48
49
  type: 'text',
@@ -50,6 +51,9 @@ export async function executeScreenshot(deps = defaultDeps) {
50
51
  },
51
52
  ],
52
53
  };
54
+ // Add interactive screenshot viewer UI
55
+ const uiResource = createUIResource(`ui://appium-mcp/screenshot-viewer/${Date.now()}`, createScreenshotViewerUI(screenshotBase64, filepath));
56
+ return addUIResourceToResponse(textResponse, uiResource);
53
57
  }
54
58
  catch (err) {
55
59
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../../src/tools/interactions/screenshot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAExC;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAElD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;AAC5C,CAAC;AAUD,MAAM,WAAW,GAAmB;IAClC,SAAS;IACT,SAAS;IACT,KAAK;IACL,oBAAoB;IACpB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;CAC1B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAuB,WAAW;IAElC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;QAEtD,2BAA2B;QAC3B,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAEjE,mCAAmC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,cAAc,SAAS,MAAM,CAAC;QAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAElD,yCAAyC;QACzC,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAErD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAE/C,0BAA0B;QAC1B,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAEjD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,qCAAqC,QAAQ,EAAE;iBACtD;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,mCAAmC,GAAG,CAAC,QAAQ,EAAE,EAAE;iBAC1D;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,MAAe;IAChD,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,iEAAiE;QACnE,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,KAAK,IAAkB,EAAE,CAAC,iBAAiB,EAAE;KACvD,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../../src/tools/interactions/screenshot.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ import { setSession, hasActiveSession, safeDeleteSession, } from '../../session-
10
10
  import { getSelectedDevice, getSelectedDeviceType, getSelectedDeviceInfo, clearSelectedDevice, } from './select-device.js';
11
11
  import { IOSManager } from '../../devicemanager/ios-manager.js';
12
12
  import log from '../../logger.js';
13
+ import { createUIResource, createSessionDashboardUI, addUIResourceToResponse, } from '../../ui/mcp-ui-utils.js';
13
14
  /**
14
15
  * Load capabilities configuration from file if specified in environment
15
16
  */
@@ -173,15 +174,29 @@ export default function createSession(server) {
173
174
  log.info(`Creating new ${platform.toUpperCase()} session with capabilities:`, JSON.stringify(finalCapabilities, null, 2));
174
175
  const sessionId = await createDriverSession(driver, finalCapabilities);
175
176
  setSession(driver, sessionId);
176
- log.info(`${platform.toUpperCase()} session created successfully with ID: ${sessionId}`);
177
- return {
177
+ // Safely convert sessionId to string for display
178
+ const sessionIdStr = typeof sessionId === 'string'
179
+ ? sessionId
180
+ : String(sessionId || 'Unknown');
181
+ log.info(`${platform.toUpperCase()} session created successfully with ID: ${sessionIdStr}`);
182
+ const textResponse = {
178
183
  content: [
179
184
  {
180
185
  type: 'text',
181
- text: `${platform.toUpperCase()} session created successfully with ID: ${sessionId}\nPlatform: ${finalCapabilities.platformName}\nAutomation: ${finalCapabilities['appium:automationName']}\nDevice: ${finalCapabilities['appium:deviceName']}`,
186
+ text: `${platform.toUpperCase()} session created successfully with ID: ${sessionIdStr}\nPlatform: ${finalCapabilities.platformName}\nAutomation: ${finalCapabilities['appium:automationName']}\nDevice: ${finalCapabilities['appium:deviceName']}`,
182
187
  },
183
188
  ],
184
189
  };
190
+ // Add interactive session dashboard UI
191
+ const uiResource = createUIResource(`ui://appium-mcp/session-dashboard/${sessionIdStr}`, createSessionDashboardUI({
192
+ sessionId: sessionIdStr,
193
+ platform: finalCapabilities.platformName,
194
+ automationName: finalCapabilities['appium:automationName'],
195
+ deviceName: finalCapabilities['appium:deviceName'],
196
+ platformVersion: finalCapabilities['appium:platformVersion'],
197
+ udid: finalCapabilities['appium:udid'],
198
+ }));
199
+ return addUIResourceToResponse(textResponse, uiResource);
185
200
  }
186
201
  catch (error) {
187
202
  log.error('Error creating session:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"create-session.js","sourceRoot":"","sources":["../../../src/tools/session/create-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-session.js","sourceRoot":"","sources":["../../../src/tools/session/create-session.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { ADBManager } from '../../devicemanager/adb-manager.js';
5
5
  import { IOSManager } from '../../devicemanager/ios-manager.js';
6
6
  import { z } from 'zod';
7
7
  import log from '../../logger.js';
8
+ import { createUIResource, createDevicePickerUI, addUIResourceToResponse, } from '../../ui/mcp-ui-utils.js';
8
9
  // Store selected device globally
9
10
  let selectedDeviceUdid = null;
10
11
  let selectedDeviceType = null;
@@ -72,7 +73,7 @@ function formatAndroidListResponse(devices) {
72
73
  const deviceList = devices
73
74
  .map((device, index) => ` ${index + 1}. ${device.udid}`)
74
75
  .join('\n');
75
- return {
76
+ const textResponse = {
76
77
  content: [
77
78
  {
78
79
  type: 'text',
@@ -80,6 +81,9 @@ function formatAndroidListResponse(devices) {
80
81
  },
81
82
  ],
82
83
  };
84
+ // Add interactive UI picker
85
+ const uiResource = createUIResource(`ui://appium-mcp/device-picker/android-${Date.now()}`, createDevicePickerUI(devices, 'android'));
86
+ return addUIResourceToResponse(textResponse, uiResource);
83
87
  }
84
88
  /**
85
89
  * Validate iOS device type
@@ -142,7 +146,7 @@ function formatIOSListResponse(devices, iosDeviceType) {
142
146
  const deviceList = devices
143
147
  .map((device, index) => ` ${index + 1}. ${device.name} (${device.udid})${device.state ? ` - ${device.state}` : ''}`)
144
148
  .join('\n');
145
- return {
149
+ const textResponse = {
146
150
  content: [
147
151
  {
148
152
  type: 'text',
@@ -150,6 +154,9 @@ function formatIOSListResponse(devices, iosDeviceType) {
150
154
  },
151
155
  ],
152
156
  };
157
+ // Add interactive UI picker
158
+ const uiResource = createUIResource(`ui://appium-mcp/device-picker/ios-${iosDeviceType}-${Date.now()}`, createDevicePickerUI(devices, 'ios', iosDeviceType));
159
+ return addUIResourceToResponse(textResponse, uiResource);
153
160
  }
154
161
  /**
155
162
  * Handle Android device selection
@@ -1 +1 @@
1
- {"version":3,"file":"select-device.js","sourceRoot":"","sources":["../../../src/tools/session/select-device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select-device.js","sourceRoot":"","sources":["../../../src/tools/session/select-device.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@
12
12
  import { z } from 'zod';
13
13
  import { getDriver } from '../../session-store.js';
14
14
  import { generateAllElementLocators } from '../../locators/generate-all-locators.js';
15
+ import { createUIResource, createLocatorGeneratorUI, addUIResourceToResponse, } from '../../ui/mcp-ui-utils.js';
15
16
  export default function generateLocators(server) {
16
17
  server.addTool({
17
18
  name: 'generate_locators',
@@ -41,7 +42,7 @@ export default function generateLocators(server) {
41
42
  const interactableElements = generateAllElementLocators(sampleXML, true, driverName, {
42
43
  fetchableOnly: true,
43
44
  });
44
- return {
45
+ const textResponse = {
45
46
  content: [
46
47
  {
47
48
  type: 'text',
@@ -54,6 +55,9 @@ export default function generateLocators(server) {
54
55
  },
55
56
  ],
56
57
  };
58
+ // Add interactive locator generator UI
59
+ const uiResource = createUIResource(`ui://appium-mcp/locator-generator/${Date.now()}`, createLocatorGeneratorUI(interactableElements));
60
+ return addUIResourceToResponse(textResponse, uiResource);
57
61
  }
58
62
  catch (parseError) {
59
63
  log.error('Error parsing XML:', parseError);
@@ -1 +1 @@
1
- {"version":3,"file":"locators.js","sourceRoot":"","sources":["../../../src/tools/test-generation/locators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAGrF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,MAAW;IAClD,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,yCAAyC;QACtD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE,GAAG,EAAO,EAAgB,EAAE;YACvD,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAChC,IAAI,CAAC;gBACH,kCAAkC;gBAElC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC;oBACH,sCAAsC;oBACtC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;oBAChD,MAAM,UAAU,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;oBACpE,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;oBAClD,CAAC;oBACD,MAAM,SAAS,GAAG,UAAU,CAAC;oBAC7B,MAAM,WAAW,GAAG,0BAA0B,CAC5C,SAAS,EACT,IAAI,EACJ,UAAU,CACX,CAAC;oBACF,MAAM,oBAAoB,GAAG,0BAA0B,CACrD,SAAS,EACT,IAAI,EACJ,UAAU,EACV;wBACE,aAAa,EAAE,IAAI;qBACpB,CACF,CAAC;oBACF,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oCACnB,oBAAoB;oCACpB,OAAO,EAAE,oCAAoC;oCAC7C,WAAW,EAAE;4FAC6D;iCAC3E,CAAC;6BACH;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,UAAe,EAAE,CAAC;oBACzB,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;oBAC5C,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"locators.js","sourceRoot":"","sources":["../../../src/tools/test-generation/locators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAErF,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,MAAW;IAClD,MAAM,CAAC,OAAO,CAAC;QACb,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,yCAAyC;QACtD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE,GAAG,EAAO,EAAgB,EAAE;YACvD,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAChC,IAAI,CAAC;gBACH,kCAAkC;gBAElC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC;oBACH,sCAAsC;oBACtC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;oBAChD,MAAM,UAAU,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;oBACpE,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;oBAClD,CAAC;oBACD,MAAM,SAAS,GAAG,UAAU,CAAC;oBAC7B,MAAM,WAAW,GAAG,0BAA0B,CAC5C,SAAS,EACT,IAAI,EACJ,UAAU,CACX,CAAC;oBACF,MAAM,oBAAoB,GAAG,0BAA0B,CACrD,SAAS,EACT,IAAI,EACJ,UAAU,EACV;wBACE,aAAa,EAAE,IAAI;qBACpB,CACF,CAAC;oBAEF,MAAM,YAAY,GAAG;wBACnB,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oCACnB,oBAAoB;oCACpB,OAAO,EAAE,oCAAoC;oCAC7C,WAAW,EAAE;4FAC6D;iCAC3E,CAAC;6BACH;yBACF;qBACF,CAAC;oBAEF,uCAAuC;oBACvC,MAAM,UAAU,GAAG,gBAAgB,CACjC,qCAAqC,IAAI,CAAC,GAAG,EAAE,EAAE,EACjD,wBAAwB,CAAC,oBAAoB,CAAC,CAC/C,CAAC;oBAEF,OAAO,uBAAuB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;gBAC3D,CAAC;gBAAC,OAAO,UAAe,EAAE,CAAC;oBACzB,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;oBAC5C,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * MCP-UI Utility Functions
3
+ *
4
+ * This module provides utilities for creating UI resources using MCP-UI protocol.
5
+ * It enables interactive UI components to be returned alongside text responses.
6
+ *
7
+ * Reference: https://mcpui.dev/guide/introduction
8
+ */
9
+ /**
10
+ * Creates a UIResource object following MCP-UI protocol
11
+ * @param uri - Unique identifier using ui:// scheme (e.g., 'ui://appium-mcp/device-picker')
12
+ * @param htmlContent - HTML string to render in the iframe
13
+ * @returns UIResource object ready to be included in MCP response content
14
+ */
15
+ export declare function createUIResource(uri: string, htmlContent: string): {
16
+ type: 'resource';
17
+ resource: {
18
+ uri: string;
19
+ mimeType: 'text/html';
20
+ text: string;
21
+ };
22
+ };
23
+ /**
24
+ * Creates a device picker UI component
25
+ * @param devices - Array of device objects with name, udid, state, etc.
26
+ * @param platform - 'android' or 'ios'
27
+ * @param deviceType - 'simulator' or 'real' for iOS
28
+ * @returns HTML string for device picker UI
29
+ */
30
+ export declare function createDevicePickerUI(devices: Array<{
31
+ name?: string;
32
+ udid: string;
33
+ state?: string;
34
+ type?: string;
35
+ }>, platform: 'android' | 'ios', deviceType?: 'simulator' | 'real'): string;
36
+ /**
37
+ * Creates a screenshot viewer UI component
38
+ * @param screenshotBase64 - Base64 encoded PNG image
39
+ * @param filepath - Path where screenshot was saved
40
+ * @returns HTML string for screenshot viewer
41
+ */
42
+ export declare function createScreenshotViewerUI(screenshotBase64: string, filepath: string): string;
43
+ /**
44
+ * Creates a session dashboard UI component
45
+ * @param sessionInfo - Session information object
46
+ * @returns HTML string for session dashboard
47
+ */
48
+ export declare function createSessionDashboardUI(sessionInfo: {
49
+ sessionId: string | any;
50
+ platform: string;
51
+ automationName: string;
52
+ deviceName?: string;
53
+ platformVersion?: string;
54
+ udid?: string;
55
+ }): string;
56
+ /**
57
+ * Creates a locator generator UI component
58
+ * @param locators - Array of elements with locators
59
+ * @returns HTML string for locator generator UI
60
+ */
61
+ export declare function createLocatorGeneratorUI(locators: Array<{
62
+ tagName: string;
63
+ locators: Record<string, string>;
64
+ text: string;
65
+ contentDesc: string;
66
+ resourceId: string;
67
+ clickable: boolean;
68
+ enabled: boolean;
69
+ displayed: boolean;
70
+ }>): string;
71
+ /**
72
+ * Creates a page source inspector UI component
73
+ * @param pageSource - XML page source string
74
+ * @returns HTML string for page source inspector
75
+ */
76
+ export declare function createPageSourceInspectorUI(pageSource: string): string;
77
+ /**
78
+ * Creates a context switcher UI component
79
+ * @param contexts - Array of context names
80
+ * @param currentContext - Currently active context name
81
+ * @returns HTML string for context switcher
82
+ */
83
+ export declare function createContextSwitcherUI(contexts: string[], currentContext: string | null): string;
84
+ /**
85
+ * Creates an app list UI component
86
+ * @param apps - Array of app objects with packageName and appName
87
+ * @returns HTML string for app list
88
+ */
89
+ export declare function createAppListUI(apps: Array<{
90
+ packageName: string;
91
+ appName?: string;
92
+ }>): string;
93
+ /**
94
+ * Creates a test code viewer UI component
95
+ * @param code - Generated test code string
96
+ * @param language - Code language (java, javascript, etc.)
97
+ * @returns HTML string for test code viewer
98
+ */
99
+ export declare function createTestCodeViewerUI(code: string, language?: string): string;
100
+ /**
101
+ * Helper function to add UI resource to response content
102
+ * Returns both text and UI resource for backward compatibility
103
+ */
104
+ export declare function addUIResourceToResponse(response: {
105
+ content: Array<{
106
+ type: string;
107
+ text?: string;
108
+ }>;
109
+ }, uiResource: ReturnType<typeof createUIResource>): {
110
+ content: Array<any>;
111
+ };