@midscene/android 1.5.4-beta-20260310084708.0 → 1.5.4
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/dist/es/cli.mjs +24 -1
- package/dist/es/index.mjs +23 -0
- package/dist/es/mcp-server.mjs +24 -1
- package/dist/lib/cli.js +24 -1
- package/dist/lib/index.js +23 -0
- package/dist/lib/mcp-server.js +24 -1
- package/package.json +4 -4
package/dist/es/cli.mjs
CHANGED
|
@@ -706,6 +706,12 @@ class AndroidDevice {
|
|
|
706
706
|
]).default('replace').optional().describe('Input mode: "replace" (default) - clear the field and input the value; "typeOnly" - type the value directly without clearing the field first; "clear" - clear the field without inputting new text.')),
|
|
707
707
|
locate: getMidsceneLocationSchema().describe('The input field to be filled').optional()
|
|
708
708
|
}),
|
|
709
|
+
sample: {
|
|
710
|
+
value: 'test@example.com',
|
|
711
|
+
locate: {
|
|
712
|
+
prompt: 'the email input field'
|
|
713
|
+
}
|
|
714
|
+
},
|
|
709
715
|
call: async (param)=>{
|
|
710
716
|
const element = param.locate;
|
|
711
717
|
if ('typeOnly' !== param.mode) await this.clearInput(element);
|
|
@@ -773,6 +779,11 @@ class AndroidDevice {
|
|
|
773
779
|
duration: z.number().optional().describe('The duration of the long press in milliseconds'),
|
|
774
780
|
locate: getMidsceneLocationSchema().describe('The element to be long pressed')
|
|
775
781
|
}),
|
|
782
|
+
sample: {
|
|
783
|
+
locate: {
|
|
784
|
+
prompt: 'the message bubble'
|
|
785
|
+
}
|
|
786
|
+
},
|
|
776
787
|
call: async (param)=>{
|
|
777
788
|
const element = param.locate;
|
|
778
789
|
if (!element) throw new Error('LongPress requires an element to be located');
|
|
@@ -792,6 +803,12 @@ class AndroidDevice {
|
|
|
792
803
|
duration: z.number().optional().describe('The duration of the pull (in milliseconds)'),
|
|
793
804
|
locate: getMidsceneLocationSchema().optional().describe('The element to start the pull from (optional)')
|
|
794
805
|
}),
|
|
806
|
+
sample: {
|
|
807
|
+
direction: 'down',
|
|
808
|
+
locate: {
|
|
809
|
+
prompt: 'the center of the content list area'
|
|
810
|
+
}
|
|
811
|
+
},
|
|
795
812
|
call: async (param)=>{
|
|
796
813
|
const element = param.locate;
|
|
797
814
|
const startPoint = element ? {
|
|
@@ -1726,6 +1743,9 @@ const createPlatformActions = (device)=>({
|
|
|
1726
1743
|
description: 'Execute ADB shell command on Android device',
|
|
1727
1744
|
interfaceAlias: 'runAdbShell',
|
|
1728
1745
|
paramSchema: runAdbShellParamSchema,
|
|
1746
|
+
sample: {
|
|
1747
|
+
command: 'dumpsys window displays | grep -E "mCurrentFocus"'
|
|
1748
|
+
},
|
|
1729
1749
|
call: async (param)=>{
|
|
1730
1750
|
if (!param.command || '' === param.command.trim()) throw new Error('RunAdbShell requires a non-empty command parameter');
|
|
1731
1751
|
const adb = await device.getAdb();
|
|
@@ -1737,6 +1757,9 @@ const createPlatformActions = (device)=>({
|
|
|
1737
1757
|
description: 'Launch an Android app or URL',
|
|
1738
1758
|
interfaceAlias: 'launch',
|
|
1739
1759
|
paramSchema: launchParamSchema,
|
|
1760
|
+
sample: {
|
|
1761
|
+
uri: 'com.example.app'
|
|
1762
|
+
},
|
|
1740
1763
|
call: async (param)=>{
|
|
1741
1764
|
if (!param.uri || '' === param.uri.trim()) throw new Error('Launch requires a non-empty uri parameter');
|
|
1742
1765
|
await device.launch(param.uri);
|
|
@@ -1885,7 +1908,7 @@ class AndroidMidsceneTools extends BaseMidsceneTools {
|
|
|
1885
1908
|
const tools = new AndroidMidsceneTools();
|
|
1886
1909
|
runToolsCLI(tools, 'midscene-android', {
|
|
1887
1910
|
stripPrefix: 'android_',
|
|
1888
|
-
version: "1.5.4
|
|
1911
|
+
version: "1.5.4"
|
|
1889
1912
|
}).catch((e)=>{
|
|
1890
1913
|
if (!(e instanceof CLIError)) console.error(e);
|
|
1891
1914
|
process.exit(e instanceof CLIError ? e.exitCode : 1);
|
package/dist/es/index.mjs
CHANGED
|
@@ -609,6 +609,12 @@ class AndroidDevice {
|
|
|
609
609
|
]).default('replace').optional().describe('Input mode: "replace" (default) - clear the field and input the value; "typeOnly" - type the value directly without clearing the field first; "clear" - clear the field without inputting new text.')),
|
|
610
610
|
locate: getMidsceneLocationSchema().describe('The input field to be filled').optional()
|
|
611
611
|
}),
|
|
612
|
+
sample: {
|
|
613
|
+
value: 'test@example.com',
|
|
614
|
+
locate: {
|
|
615
|
+
prompt: 'the email input field'
|
|
616
|
+
}
|
|
617
|
+
},
|
|
612
618
|
call: async (param)=>{
|
|
613
619
|
const element = param.locate;
|
|
614
620
|
if ('typeOnly' !== param.mode) await this.clearInput(element);
|
|
@@ -676,6 +682,11 @@ class AndroidDevice {
|
|
|
676
682
|
duration: z.number().optional().describe('The duration of the long press in milliseconds'),
|
|
677
683
|
locate: getMidsceneLocationSchema().describe('The element to be long pressed')
|
|
678
684
|
}),
|
|
685
|
+
sample: {
|
|
686
|
+
locate: {
|
|
687
|
+
prompt: 'the message bubble'
|
|
688
|
+
}
|
|
689
|
+
},
|
|
679
690
|
call: async (param)=>{
|
|
680
691
|
const element = param.locate;
|
|
681
692
|
if (!element) throw new Error('LongPress requires an element to be located');
|
|
@@ -695,6 +706,12 @@ class AndroidDevice {
|
|
|
695
706
|
duration: z.number().optional().describe('The duration of the pull (in milliseconds)'),
|
|
696
707
|
locate: getMidsceneLocationSchema().optional().describe('The element to start the pull from (optional)')
|
|
697
708
|
}),
|
|
709
|
+
sample: {
|
|
710
|
+
direction: 'down',
|
|
711
|
+
locate: {
|
|
712
|
+
prompt: 'the center of the content list area'
|
|
713
|
+
}
|
|
714
|
+
},
|
|
698
715
|
call: async (param)=>{
|
|
699
716
|
const element = param.locate;
|
|
700
717
|
const startPoint = element ? {
|
|
@@ -1629,6 +1646,9 @@ const createPlatformActions = (device)=>({
|
|
|
1629
1646
|
description: 'Execute ADB shell command on Android device',
|
|
1630
1647
|
interfaceAlias: 'runAdbShell',
|
|
1631
1648
|
paramSchema: runAdbShellParamSchema,
|
|
1649
|
+
sample: {
|
|
1650
|
+
command: 'dumpsys window displays | grep -E "mCurrentFocus"'
|
|
1651
|
+
},
|
|
1632
1652
|
call: async (param)=>{
|
|
1633
1653
|
if (!param.command || '' === param.command.trim()) throw new Error('RunAdbShell requires a non-empty command parameter');
|
|
1634
1654
|
const adb = await device.getAdb();
|
|
@@ -1640,6 +1660,9 @@ const createPlatformActions = (device)=>({
|
|
|
1640
1660
|
description: 'Launch an Android app or URL',
|
|
1641
1661
|
interfaceAlias: 'launch',
|
|
1642
1662
|
paramSchema: launchParamSchema,
|
|
1663
|
+
sample: {
|
|
1664
|
+
uri: 'com.example.app'
|
|
1665
|
+
},
|
|
1643
1666
|
call: async (param)=>{
|
|
1644
1667
|
if (!param.uri || '' === param.uri.trim()) throw new Error('Launch requires a non-empty uri parameter');
|
|
1645
1668
|
await device.launch(param.uri);
|
package/dist/es/mcp-server.mjs
CHANGED
|
@@ -705,6 +705,12 @@ class AndroidDevice {
|
|
|
705
705
|
]).default('replace').optional().describe('Input mode: "replace" (default) - clear the field and input the value; "typeOnly" - type the value directly without clearing the field first; "clear" - clear the field without inputting new text.')),
|
|
706
706
|
locate: getMidsceneLocationSchema().describe('The input field to be filled').optional()
|
|
707
707
|
}),
|
|
708
|
+
sample: {
|
|
709
|
+
value: 'test@example.com',
|
|
710
|
+
locate: {
|
|
711
|
+
prompt: 'the email input field'
|
|
712
|
+
}
|
|
713
|
+
},
|
|
708
714
|
call: async (param)=>{
|
|
709
715
|
const element = param.locate;
|
|
710
716
|
if ('typeOnly' !== param.mode) await this.clearInput(element);
|
|
@@ -772,6 +778,11 @@ class AndroidDevice {
|
|
|
772
778
|
duration: z.number().optional().describe('The duration of the long press in milliseconds'),
|
|
773
779
|
locate: getMidsceneLocationSchema().describe('The element to be long pressed')
|
|
774
780
|
}),
|
|
781
|
+
sample: {
|
|
782
|
+
locate: {
|
|
783
|
+
prompt: 'the message bubble'
|
|
784
|
+
}
|
|
785
|
+
},
|
|
775
786
|
call: async (param)=>{
|
|
776
787
|
const element = param.locate;
|
|
777
788
|
if (!element) throw new Error('LongPress requires an element to be located');
|
|
@@ -791,6 +802,12 @@ class AndroidDevice {
|
|
|
791
802
|
duration: z.number().optional().describe('The duration of the pull (in milliseconds)'),
|
|
792
803
|
locate: getMidsceneLocationSchema().optional().describe('The element to start the pull from (optional)')
|
|
793
804
|
}),
|
|
805
|
+
sample: {
|
|
806
|
+
direction: 'down',
|
|
807
|
+
locate: {
|
|
808
|
+
prompt: 'the center of the content list area'
|
|
809
|
+
}
|
|
810
|
+
},
|
|
794
811
|
call: async (param)=>{
|
|
795
812
|
const element = param.locate;
|
|
796
813
|
const startPoint = element ? {
|
|
@@ -1725,6 +1742,9 @@ const createPlatformActions = (device)=>({
|
|
|
1725
1742
|
description: 'Execute ADB shell command on Android device',
|
|
1726
1743
|
interfaceAlias: 'runAdbShell',
|
|
1727
1744
|
paramSchema: runAdbShellParamSchema,
|
|
1745
|
+
sample: {
|
|
1746
|
+
command: 'dumpsys window displays | grep -E "mCurrentFocus"'
|
|
1747
|
+
},
|
|
1728
1748
|
call: async (param)=>{
|
|
1729
1749
|
if (!param.command || '' === param.command.trim()) throw new Error('RunAdbShell requires a non-empty command parameter');
|
|
1730
1750
|
const adb = await device.getAdb();
|
|
@@ -1736,6 +1756,9 @@ const createPlatformActions = (device)=>({
|
|
|
1736
1756
|
description: 'Launch an Android app or URL',
|
|
1737
1757
|
interfaceAlias: 'launch',
|
|
1738
1758
|
paramSchema: launchParamSchema,
|
|
1759
|
+
sample: {
|
|
1760
|
+
uri: 'com.example.app'
|
|
1761
|
+
},
|
|
1739
1762
|
call: async (param)=>{
|
|
1740
1763
|
if (!param.uri || '' === param.uri.trim()) throw new Error('Launch requires a non-empty uri parameter');
|
|
1741
1764
|
await device.launch(param.uri);
|
|
@@ -1888,7 +1911,7 @@ class AndroidMCPServer extends BaseMCPServer {
|
|
|
1888
1911
|
constructor(toolsManager){
|
|
1889
1912
|
super({
|
|
1890
1913
|
name: '@midscene/android-mcp',
|
|
1891
|
-
version: "1.5.4
|
|
1914
|
+
version: "1.5.4",
|
|
1892
1915
|
description: 'Control the Android device using natural language commands'
|
|
1893
1916
|
}, toolsManager);
|
|
1894
1917
|
}
|
package/dist/lib/cli.js
CHANGED
|
@@ -721,6 +721,12 @@ var __webpack_exports__ = {};
|
|
|
721
721
|
]).default('replace').optional().describe('Input mode: "replace" (default) - clear the field and input the value; "typeOnly" - type the value directly without clearing the field first; "clear" - clear the field without inputting new text.')),
|
|
722
722
|
locate: (0, core_namespaceObject.getMidsceneLocationSchema)().describe('The input field to be filled').optional()
|
|
723
723
|
}),
|
|
724
|
+
sample: {
|
|
725
|
+
value: 'test@example.com',
|
|
726
|
+
locate: {
|
|
727
|
+
prompt: 'the email input field'
|
|
728
|
+
}
|
|
729
|
+
},
|
|
724
730
|
call: async (param)=>{
|
|
725
731
|
const element = param.locate;
|
|
726
732
|
if ('typeOnly' !== param.mode) await this.clearInput(element);
|
|
@@ -788,6 +794,11 @@ var __webpack_exports__ = {};
|
|
|
788
794
|
duration: core_namespaceObject.z.number().optional().describe('The duration of the long press in milliseconds'),
|
|
789
795
|
locate: (0, core_namespaceObject.getMidsceneLocationSchema)().describe('The element to be long pressed')
|
|
790
796
|
}),
|
|
797
|
+
sample: {
|
|
798
|
+
locate: {
|
|
799
|
+
prompt: 'the message bubble'
|
|
800
|
+
}
|
|
801
|
+
},
|
|
791
802
|
call: async (param)=>{
|
|
792
803
|
const element = param.locate;
|
|
793
804
|
if (!element) throw new Error('LongPress requires an element to be located');
|
|
@@ -807,6 +818,12 @@ var __webpack_exports__ = {};
|
|
|
807
818
|
duration: core_namespaceObject.z.number().optional().describe('The duration of the pull (in milliseconds)'),
|
|
808
819
|
locate: (0, core_namespaceObject.getMidsceneLocationSchema)().optional().describe('The element to start the pull from (optional)')
|
|
809
820
|
}),
|
|
821
|
+
sample: {
|
|
822
|
+
direction: 'down',
|
|
823
|
+
locate: {
|
|
824
|
+
prompt: 'the center of the content list area'
|
|
825
|
+
}
|
|
826
|
+
},
|
|
810
827
|
call: async (param)=>{
|
|
811
828
|
const element = param.locate;
|
|
812
829
|
const startPoint = element ? {
|
|
@@ -1741,6 +1758,9 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
1741
1758
|
description: 'Execute ADB shell command on Android device',
|
|
1742
1759
|
interfaceAlias: 'runAdbShell',
|
|
1743
1760
|
paramSchema: runAdbShellParamSchema,
|
|
1761
|
+
sample: {
|
|
1762
|
+
command: 'dumpsys window displays | grep -E "mCurrentFocus"'
|
|
1763
|
+
},
|
|
1744
1764
|
call: async (param)=>{
|
|
1745
1765
|
if (!param.command || '' === param.command.trim()) throw new Error('RunAdbShell requires a non-empty command parameter');
|
|
1746
1766
|
const adb = await device.getAdb();
|
|
@@ -1752,6 +1772,9 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
1752
1772
|
description: 'Launch an Android app or URL',
|
|
1753
1773
|
interfaceAlias: 'launch',
|
|
1754
1774
|
paramSchema: launchParamSchema,
|
|
1775
|
+
sample: {
|
|
1776
|
+
uri: 'com.example.app'
|
|
1777
|
+
},
|
|
1755
1778
|
call: async (param)=>{
|
|
1756
1779
|
if (!param.uri || '' === param.uri.trim()) throw new Error('Launch requires a non-empty uri parameter');
|
|
1757
1780
|
await device.launch(param.uri);
|
|
@@ -1900,7 +1923,7 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
1900
1923
|
const tools = new AndroidMidsceneTools();
|
|
1901
1924
|
(0, cli_namespaceObject.runToolsCLI)(tools, 'midscene-android', {
|
|
1902
1925
|
stripPrefix: 'android_',
|
|
1903
|
-
version: "1.5.4
|
|
1926
|
+
version: "1.5.4"
|
|
1904
1927
|
}).catch((e)=>{
|
|
1905
1928
|
if (!(e instanceof cli_namespaceObject.CLIError)) console.error(e);
|
|
1906
1929
|
process.exit(e instanceof cli_namespaceObject.CLIError ? e.exitCode : 1);
|
package/dist/lib/index.js
CHANGED
|
@@ -642,6 +642,12 @@ var __webpack_exports__ = {};
|
|
|
642
642
|
]).default('replace').optional().describe('Input mode: "replace" (default) - clear the field and input the value; "typeOnly" - type the value directly without clearing the field first; "clear" - clear the field without inputting new text.')),
|
|
643
643
|
locate: (0, core_namespaceObject.getMidsceneLocationSchema)().describe('The input field to be filled').optional()
|
|
644
644
|
}),
|
|
645
|
+
sample: {
|
|
646
|
+
value: 'test@example.com',
|
|
647
|
+
locate: {
|
|
648
|
+
prompt: 'the email input field'
|
|
649
|
+
}
|
|
650
|
+
},
|
|
645
651
|
call: async (param)=>{
|
|
646
652
|
const element = param.locate;
|
|
647
653
|
if ('typeOnly' !== param.mode) await this.clearInput(element);
|
|
@@ -709,6 +715,11 @@ var __webpack_exports__ = {};
|
|
|
709
715
|
duration: core_namespaceObject.z.number().optional().describe('The duration of the long press in milliseconds'),
|
|
710
716
|
locate: (0, core_namespaceObject.getMidsceneLocationSchema)().describe('The element to be long pressed')
|
|
711
717
|
}),
|
|
718
|
+
sample: {
|
|
719
|
+
locate: {
|
|
720
|
+
prompt: 'the message bubble'
|
|
721
|
+
}
|
|
722
|
+
},
|
|
712
723
|
call: async (param)=>{
|
|
713
724
|
const element = param.locate;
|
|
714
725
|
if (!element) throw new Error('LongPress requires an element to be located');
|
|
@@ -728,6 +739,12 @@ var __webpack_exports__ = {};
|
|
|
728
739
|
duration: core_namespaceObject.z.number().optional().describe('The duration of the pull (in milliseconds)'),
|
|
729
740
|
locate: (0, core_namespaceObject.getMidsceneLocationSchema)().optional().describe('The element to start the pull from (optional)')
|
|
730
741
|
}),
|
|
742
|
+
sample: {
|
|
743
|
+
direction: 'down',
|
|
744
|
+
locate: {
|
|
745
|
+
prompt: 'the center of the content list area'
|
|
746
|
+
}
|
|
747
|
+
},
|
|
731
748
|
call: async (param)=>{
|
|
732
749
|
const element = param.locate;
|
|
733
750
|
const startPoint = element ? {
|
|
@@ -1662,6 +1679,9 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
1662
1679
|
description: 'Execute ADB shell command on Android device',
|
|
1663
1680
|
interfaceAlias: 'runAdbShell',
|
|
1664
1681
|
paramSchema: runAdbShellParamSchema,
|
|
1682
|
+
sample: {
|
|
1683
|
+
command: 'dumpsys window displays | grep -E "mCurrentFocus"'
|
|
1684
|
+
},
|
|
1665
1685
|
call: async (param)=>{
|
|
1666
1686
|
if (!param.command || '' === param.command.trim()) throw new Error('RunAdbShell requires a non-empty command parameter');
|
|
1667
1687
|
const adb = await device.getAdb();
|
|
@@ -1673,6 +1693,9 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
1673
1693
|
description: 'Launch an Android app or URL',
|
|
1674
1694
|
interfaceAlias: 'launch',
|
|
1675
1695
|
paramSchema: launchParamSchema,
|
|
1696
|
+
sample: {
|
|
1697
|
+
uri: 'com.example.app'
|
|
1698
|
+
},
|
|
1676
1699
|
call: async (param)=>{
|
|
1677
1700
|
if (!param.uri || '' === param.uri.trim()) throw new Error('Launch requires a non-empty uri parameter');
|
|
1678
1701
|
await device.launch(param.uri);
|
package/dist/lib/mcp-server.js
CHANGED
|
@@ -736,6 +736,12 @@ var __webpack_exports__ = {};
|
|
|
736
736
|
]).default('replace').optional().describe('Input mode: "replace" (default) - clear the field and input the value; "typeOnly" - type the value directly without clearing the field first; "clear" - clear the field without inputting new text.')),
|
|
737
737
|
locate: (0, core_namespaceObject.getMidsceneLocationSchema)().describe('The input field to be filled').optional()
|
|
738
738
|
}),
|
|
739
|
+
sample: {
|
|
740
|
+
value: 'test@example.com',
|
|
741
|
+
locate: {
|
|
742
|
+
prompt: 'the email input field'
|
|
743
|
+
}
|
|
744
|
+
},
|
|
739
745
|
call: async (param)=>{
|
|
740
746
|
const element = param.locate;
|
|
741
747
|
if ('typeOnly' !== param.mode) await this.clearInput(element);
|
|
@@ -803,6 +809,11 @@ var __webpack_exports__ = {};
|
|
|
803
809
|
duration: core_namespaceObject.z.number().optional().describe('The duration of the long press in milliseconds'),
|
|
804
810
|
locate: (0, core_namespaceObject.getMidsceneLocationSchema)().describe('The element to be long pressed')
|
|
805
811
|
}),
|
|
812
|
+
sample: {
|
|
813
|
+
locate: {
|
|
814
|
+
prompt: 'the message bubble'
|
|
815
|
+
}
|
|
816
|
+
},
|
|
806
817
|
call: async (param)=>{
|
|
807
818
|
const element = param.locate;
|
|
808
819
|
if (!element) throw new Error('LongPress requires an element to be located');
|
|
@@ -822,6 +833,12 @@ var __webpack_exports__ = {};
|
|
|
822
833
|
duration: core_namespaceObject.z.number().optional().describe('The duration of the pull (in milliseconds)'),
|
|
823
834
|
locate: (0, core_namespaceObject.getMidsceneLocationSchema)().optional().describe('The element to start the pull from (optional)')
|
|
824
835
|
}),
|
|
836
|
+
sample: {
|
|
837
|
+
direction: 'down',
|
|
838
|
+
locate: {
|
|
839
|
+
prompt: 'the center of the content list area'
|
|
840
|
+
}
|
|
841
|
+
},
|
|
825
842
|
call: async (param)=>{
|
|
826
843
|
const element = param.locate;
|
|
827
844
|
const startPoint = element ? {
|
|
@@ -1756,6 +1773,9 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
1756
1773
|
description: 'Execute ADB shell command on Android device',
|
|
1757
1774
|
interfaceAlias: 'runAdbShell',
|
|
1758
1775
|
paramSchema: runAdbShellParamSchema,
|
|
1776
|
+
sample: {
|
|
1777
|
+
command: 'dumpsys window displays | grep -E "mCurrentFocus"'
|
|
1778
|
+
},
|
|
1759
1779
|
call: async (param)=>{
|
|
1760
1780
|
if (!param.command || '' === param.command.trim()) throw new Error('RunAdbShell requires a non-empty command parameter');
|
|
1761
1781
|
const adb = await device.getAdb();
|
|
@@ -1767,6 +1787,9 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
1767
1787
|
description: 'Launch an Android app or URL',
|
|
1768
1788
|
interfaceAlias: 'launch',
|
|
1769
1789
|
paramSchema: launchParamSchema,
|
|
1790
|
+
sample: {
|
|
1791
|
+
uri: 'com.example.app'
|
|
1792
|
+
},
|
|
1770
1793
|
call: async (param)=>{
|
|
1771
1794
|
if (!param.uri || '' === param.uri.trim()) throw new Error('Launch requires a non-empty uri parameter');
|
|
1772
1795
|
await device.launch(param.uri);
|
|
@@ -1919,7 +1942,7 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
1919
1942
|
constructor(toolsManager){
|
|
1920
1943
|
super({
|
|
1921
1944
|
name: '@midscene/android-mcp',
|
|
1922
|
-
version: "1.5.4
|
|
1945
|
+
version: "1.5.4",
|
|
1923
1946
|
description: 'Control the Android device using natural language commands'
|
|
1924
1947
|
}, toolsManager);
|
|
1925
1948
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@midscene/android",
|
|
3
|
-
"version": "1.5.4
|
|
3
|
+
"version": "1.5.4",
|
|
4
4
|
"description": "Android automation library for Midscene",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Android UI automation",
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"@yume-chan/stream-extra": "^1.0.0",
|
|
42
42
|
"appium-adb": "12.12.1",
|
|
43
43
|
"sharp": "^0.34.3",
|
|
44
|
-
"@midscene/core": "1.5.4
|
|
45
|
-
"@midscene/shared": "1.5.4
|
|
44
|
+
"@midscene/core": "1.5.4",
|
|
45
|
+
"@midscene/shared": "1.5.4"
|
|
46
46
|
},
|
|
47
47
|
"optionalDependencies": {
|
|
48
48
|
"@ffmpeg-installer/ffmpeg": "^1.1.0"
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"tsx": "^4.19.2",
|
|
57
57
|
"vitest": "3.0.5",
|
|
58
58
|
"zod": "3.24.3",
|
|
59
|
-
"@midscene/playground": "1.5.4
|
|
59
|
+
"@midscene/playground": "1.5.4"
|
|
60
60
|
},
|
|
61
61
|
"license": "MIT",
|
|
62
62
|
"scripts": {
|