react-native-mcp-kit 4.2.0 → 4.3.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 (239) hide show
  1. package/dist/babel/testIdPlugin/collectHooks.d.ts +13 -0
  2. package/dist/babel/testIdPlugin/collectHooks.d.ts.map +1 -0
  3. package/dist/babel/testIdPlugin/collectHooks.js +112 -0
  4. package/dist/babel/testIdPlugin/collectHooks.js.map +1 -0
  5. package/dist/babel/testIdPlugin/constants.d.ts +6 -0
  6. package/dist/babel/testIdPlugin/constants.d.ts.map +1 -0
  7. package/dist/babel/testIdPlugin/constants.js +49 -0
  8. package/dist/babel/testIdPlugin/constants.js.map +1 -0
  9. package/dist/babel/testIdPlugin/helpers.d.ts +7 -0
  10. package/dist/babel/testIdPlugin/helpers.d.ts.map +1 -0
  11. package/dist/babel/testIdPlugin/helpers.js +77 -0
  12. package/dist/babel/testIdPlugin/helpers.js.map +1 -0
  13. package/dist/babel/testIdPlugin/hocUnwrap.d.ts +4 -0
  14. package/dist/babel/testIdPlugin/hocUnwrap.d.ts.map +1 -0
  15. package/dist/babel/testIdPlugin/hocUnwrap.js +94 -0
  16. package/dist/babel/testIdPlugin/hocUnwrap.js.map +1 -0
  17. package/dist/babel/{testIdPlugin.d.ts → testIdPlugin/index.d.ts} +1 -1
  18. package/dist/babel/testIdPlugin/index.d.ts.map +1 -0
  19. package/dist/babel/testIdPlugin/index.js +205 -0
  20. package/dist/babel/testIdPlugin/index.js.map +1 -0
  21. package/dist/babel/testIdPlugin/inject.d.ts +7 -0
  22. package/dist/babel/testIdPlugin/inject.d.ts.map +1 -0
  23. package/dist/babel/testIdPlugin/inject.js +86 -0
  24. package/dist/babel/testIdPlugin/inject.js.map +1 -0
  25. package/dist/babel/testIdPlugin/types.d.ts +59 -0
  26. package/dist/babel/testIdPlugin/types.d.ts.map +1 -0
  27. package/dist/babel/testIdPlugin/types.js +3 -0
  28. package/dist/babel/testIdPlugin/types.js.map +1 -0
  29. package/dist/bin/ios-hid +0 -0
  30. package/dist/index.d.ts +1 -1
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +2 -1
  33. package/dist/index.js.map +1 -1
  34. package/dist/modules/fiberTree/hooks/extract.d.ts +6 -0
  35. package/dist/modules/fiberTree/hooks/extract.d.ts.map +1 -0
  36. package/dist/modules/fiberTree/hooks/extract.js +187 -0
  37. package/dist/modules/fiberTree/hooks/extract.js.map +1 -0
  38. package/dist/modules/fiberTree/hooks/flatten.d.ts +4 -0
  39. package/dist/modules/fiberTree/hooks/flatten.d.ts.map +1 -0
  40. package/dist/modules/fiberTree/hooks/flatten.js +81 -0
  41. package/dist/modules/fiberTree/hooks/flatten.js.map +1 -0
  42. package/dist/modules/fiberTree/hooks/index.d.ts +5 -0
  43. package/dist/modules/fiberTree/hooks/index.d.ts.map +1 -0
  44. package/dist/modules/fiberTree/hooks/index.js +10 -0
  45. package/dist/modules/fiberTree/hooks/index.js.map +1 -0
  46. package/dist/modules/fiberTree/hooks/options.d.ts +9 -0
  47. package/dist/modules/fiberTree/hooks/options.d.ts.map +1 -0
  48. package/dist/modules/fiberTree/hooks/options.js +27 -0
  49. package/dist/modules/fiberTree/hooks/options.js.map +1 -0
  50. package/dist/modules/fiberTree/hooks/patterns.d.ts +2 -0
  51. package/dist/modules/fiberTree/hooks/patterns.d.ts.map +1 -0
  52. package/dist/modules/fiberTree/hooks/patterns.js +26 -0
  53. package/dist/modules/fiberTree/hooks/patterns.js.map +1 -0
  54. package/dist/modules/fiberTree/hooks/shape.d.ts +3 -0
  55. package/dist/modules/fiberTree/hooks/shape.d.ts.map +1 -0
  56. package/dist/modules/fiberTree/hooks/shape.js +66 -0
  57. package/dist/modules/fiberTree/hooks/shape.js.map +1 -0
  58. package/dist/modules/fiberTree/hooks/slotCount.d.ts +2 -0
  59. package/dist/modules/fiberTree/hooks/slotCount.d.ts.map +1 -0
  60. package/dist/modules/fiberTree/hooks/slotCount.js +93 -0
  61. package/dist/modules/fiberTree/hooks/slotCount.js.map +1 -0
  62. package/dist/modules/fiberTree/{hooks.d.ts → hooks/types.d.ts} +1 -34
  63. package/dist/modules/fiberTree/hooks/types.d.ts.map +1 -0
  64. package/dist/modules/fiberTree/hooks/types.js +3 -0
  65. package/dist/modules/fiberTree/hooks/types.js.map +1 -0
  66. package/dist/modules/fiberTree/hooks/value.d.ts +2 -0
  67. package/dist/modules/fiberTree/hooks/value.d.ts.map +1 -0
  68. package/dist/modules/fiberTree/hooks/value.js +89 -0
  69. package/dist/modules/fiberTree/hooks/value.js.map +1 -0
  70. package/dist/modules/fiberTree/utils/constants.d.ts +8 -0
  71. package/dist/modules/fiberTree/utils/constants.d.ts.map +1 -0
  72. package/dist/modules/fiberTree/utils/constants.js +15 -0
  73. package/dist/modules/fiberTree/utils/constants.js.map +1 -0
  74. package/dist/modules/fiberTree/utils/index.d.ts +9 -0
  75. package/dist/modules/fiberTree/utils/index.d.ts.map +1 -0
  76. package/dist/modules/fiberTree/utils/index.js +34 -0
  77. package/dist/modules/fiberTree/utils/index.js.map +1 -0
  78. package/dist/modules/fiberTree/utils/match.d.ts +4 -0
  79. package/dist/modules/fiberTree/utils/match.d.ts.map +1 -0
  80. package/dist/modules/fiberTree/utils/match.js +169 -0
  81. package/dist/modules/fiberTree/utils/match.js.map +1 -0
  82. package/dist/modules/fiberTree/utils/naming.d.ts +4 -0
  83. package/dist/modules/fiberTree/utils/naming.d.ts.map +1 -0
  84. package/dist/modules/fiberTree/utils/naming.js +52 -0
  85. package/dist/modules/fiberTree/utils/naming.js.map +1 -0
  86. package/dist/modules/fiberTree/utils/native.d.ts +5 -0
  87. package/dist/modules/fiberTree/utils/native.d.ts.map +1 -0
  88. package/dist/modules/fiberTree/utils/native.js +101 -0
  89. package/dist/modules/fiberTree/utils/native.js.map +1 -0
  90. package/dist/modules/fiberTree/utils/projection.d.ts +9 -0
  91. package/dist/modules/fiberTree/utils/projection.d.ts.map +1 -0
  92. package/dist/modules/fiberTree/utils/projection.js +75 -0
  93. package/dist/modules/fiberTree/utils/projection.js.map +1 -0
  94. package/dist/modules/fiberTree/utils/root.d.ts +4 -0
  95. package/dist/modules/fiberTree/utils/root.d.ts.map +1 -0
  96. package/dist/modules/fiberTree/utils/root.js +30 -0
  97. package/dist/modules/fiberTree/utils/root.js.map +1 -0
  98. package/dist/modules/fiberTree/utils/screen.d.ts +10 -0
  99. package/dist/modules/fiberTree/utils/screen.d.ts.map +1 -0
  100. package/dist/modules/fiberTree/utils/screen.js +39 -0
  101. package/dist/modules/fiberTree/utils/screen.js.map +1 -0
  102. package/dist/modules/fiberTree/utils/serialize.d.ts +4 -0
  103. package/dist/modules/fiberTree/utils/serialize.d.ts.map +1 -0
  104. package/dist/modules/fiberTree/utils/serialize.js +102 -0
  105. package/dist/modules/fiberTree/utils/serialize.js.map +1 -0
  106. package/dist/modules/fiberTree/utils/traverse.d.ts +12 -0
  107. package/dist/modules/fiberTree/utils/traverse.d.ts.map +1 -0
  108. package/dist/modules/fiberTree/utils/traverse.js +107 -0
  109. package/dist/modules/fiberTree/utils/traverse.js.map +1 -0
  110. package/dist/server/dispatch.d.ts +15 -0
  111. package/dist/server/dispatch.d.ts.map +1 -0
  112. package/dist/server/dispatch.js +121 -0
  113. package/dist/server/dispatch.js.map +1 -0
  114. package/dist/server/helpers.d.ts +129 -0
  115. package/dist/server/helpers.d.ts.map +1 -0
  116. package/dist/server/helpers.js +250 -0
  117. package/dist/server/helpers.js.map +1 -0
  118. package/dist/server/host/deviceResolver/byClient.d.ts +5 -0
  119. package/dist/server/host/deviceResolver/byClient.d.ts.map +1 -0
  120. package/dist/server/host/deviceResolver/byClient.js +171 -0
  121. package/dist/server/host/deviceResolver/byClient.js.map +1 -0
  122. package/dist/server/host/deviceResolver/byId.d.ts +5 -0
  123. package/dist/server/host/deviceResolver/byId.d.ts.map +1 -0
  124. package/dist/server/host/deviceResolver/byId.js +81 -0
  125. package/dist/server/host/deviceResolver/byId.js.map +1 -0
  126. package/dist/server/host/deviceResolver/enrich.d.ts +5 -0
  127. package/dist/server/host/deviceResolver/enrich.d.ts.map +1 -0
  128. package/dist/server/host/deviceResolver/enrich.js +123 -0
  129. package/dist/server/host/deviceResolver/enrich.js.map +1 -0
  130. package/dist/server/host/deviceResolver/index.d.ts +13 -0
  131. package/dist/server/host/deviceResolver/index.d.ts.map +1 -0
  132. package/dist/server/host/deviceResolver/index.js +65 -0
  133. package/dist/server/host/deviceResolver/index.js.map +1 -0
  134. package/dist/server/host/deviceResolver/list.d.ts +10 -0
  135. package/dist/server/host/deviceResolver/list.d.ts.map +1 -0
  136. package/dist/server/host/deviceResolver/list.js +119 -0
  137. package/dist/server/host/deviceResolver/list.js.map +1 -0
  138. package/dist/server/host/deviceResolver/scan.d.ts +4 -0
  139. package/dist/server/host/deviceResolver/scan.d.ts.map +1 -0
  140. package/dist/server/host/deviceResolver/scan.js +102 -0
  141. package/dist/server/host/deviceResolver/scan.js.map +1 -0
  142. package/dist/server/host/{deviceResolver.d.ts → deviceResolver/types.d.ts} +1 -16
  143. package/dist/server/host/deviceResolver/types.d.ts.map +1 -0
  144. package/dist/server/host/deviceResolver/types.js +3 -0
  145. package/dist/server/host/deviceResolver/types.js.map +1 -0
  146. package/dist/server/host/tools/input/android.d.ts +15 -0
  147. package/dist/server/host/tools/input/android.d.ts.map +1 -0
  148. package/dist/server/host/tools/input/android.js +88 -0
  149. package/dist/server/host/tools/input/android.js.map +1 -0
  150. package/dist/server/host/tools/input/constants.d.ts +14 -0
  151. package/dist/server/host/tools/input/constants.d.ts.map +1 -0
  152. package/dist/server/host/tools/input/constants.js +41 -0
  153. package/dist/server/host/tools/input/constants.js.map +1 -0
  154. package/dist/server/host/tools/input/drag.d.ts +4 -0
  155. package/dist/server/host/tools/input/drag.d.ts.map +1 -0
  156. package/dist/server/host/tools/input/drag.js +76 -0
  157. package/dist/server/host/tools/input/drag.js.map +1 -0
  158. package/dist/server/host/tools/input/index.d.ts +8 -0
  159. package/dist/server/host/tools/input/index.d.ts.map +1 -0
  160. package/dist/server/host/tools/input/index.js +18 -0
  161. package/dist/server/host/tools/input/index.js.map +1 -0
  162. package/dist/server/host/tools/input/longPress.d.ts +4 -0
  163. package/dist/server/host/tools/input/longPress.d.ts.map +1 -0
  164. package/dist/server/host/tools/input/longPress.js +49 -0
  165. package/dist/server/host/tools/input/longPress.js.map +1 -0
  166. package/dist/server/host/tools/input/pressKey.d.ts +4 -0
  167. package/dist/server/host/tools/input/pressKey.d.ts.map +1 -0
  168. package/dist/server/host/tools/input/pressKey.js +42 -0
  169. package/dist/server/host/tools/input/pressKey.js.map +1 -0
  170. package/dist/server/host/tools/input/swipe.d.ts +4 -0
  171. package/dist/server/host/tools/input/swipe.d.ts.map +1 -0
  172. package/dist/server/host/tools/input/swipe.js +71 -0
  173. package/dist/server/host/tools/input/swipe.js.map +1 -0
  174. package/dist/server/host/tools/input/tap.d.ts +4 -0
  175. package/dist/server/host/tools/input/tap.d.ts.map +1 -0
  176. package/dist/server/host/tools/input/tap.js +49 -0
  177. package/dist/server/host/tools/input/tap.js.map +1 -0
  178. package/dist/server/host/tools/input/typeText.d.ts +4 -0
  179. package/dist/server/host/tools/input/typeText.d.ts.map +1 -0
  180. package/dist/server/host/tools/input/typeText.js +52 -0
  181. package/dist/server/host/tools/input/typeText.js.map +1 -0
  182. package/dist/server/host/tools/input/typeTextBatch.d.ts +4 -0
  183. package/dist/server/host/tools/input/typeTextBatch.d.ts.map +1 -0
  184. package/dist/server/host/tools/input/typeTextBatch.js +106 -0
  185. package/dist/server/host/tools/input/typeTextBatch.js.map +1 -0
  186. package/dist/server/instructions.d.ts +2 -0
  187. package/dist/server/instructions.d.ts.map +1 -0
  188. package/dist/server/instructions.js +89 -0
  189. package/dist/server/instructions.js.map +1 -0
  190. package/dist/server/mcpServer.d.ts +0 -12
  191. package/dist/server/mcpServer.d.ts.map +1 -1
  192. package/dist/server/mcpServer.js +26 -877
  193. package/dist/server/mcpServer.js.map +1 -1
  194. package/dist/server/predicate.d.ts +31 -0
  195. package/dist/server/predicate.d.ts.map +1 -0
  196. package/dist/server/predicate.js +104 -0
  197. package/dist/server/predicate.js.map +1 -0
  198. package/dist/server/tools/assert.d.ts +4 -0
  199. package/dist/server/tools/assert.d.ts.map +1 -0
  200. package/dist/server/tools/assert.js +103 -0
  201. package/dist/server/tools/assert.js.map +1 -0
  202. package/dist/server/tools/call.d.ts +4 -0
  203. package/dist/server/tools/call.d.ts.map +1 -0
  204. package/dist/server/tools/call.js +48 -0
  205. package/dist/server/tools/call.js.map +1 -0
  206. package/dist/server/tools/connectionStatus.d.ts +4 -0
  207. package/dist/server/tools/connectionStatus.d.ts.map +1 -0
  208. package/dist/server/tools/connectionStatus.js +41 -0
  209. package/dist/server/tools/connectionStatus.js.map +1 -0
  210. package/dist/server/tools/describeTool.d.ts +4 -0
  211. package/dist/server/tools/describeTool.d.ts.map +1 -0
  212. package/dist/server/tools/describeTool.js +149 -0
  213. package/dist/server/tools/describeTool.js.map +1 -0
  214. package/dist/server/tools/listTools.d.ts +4 -0
  215. package/dist/server/tools/listTools.d.ts.map +1 -0
  216. package/dist/server/tools/listTools.js +116 -0
  217. package/dist/server/tools/listTools.js.map +1 -0
  218. package/dist/server/tools/waitUntil.d.ts +4 -0
  219. package/dist/server/tools/waitUntil.d.ts.map +1 -0
  220. package/dist/server/tools/waitUntil.js +169 -0
  221. package/dist/server/tools/waitUntil.js.map +1 -0
  222. package/package.json +2 -2
  223. package/dist/babel/testIdPlugin.d.ts.map +0 -1
  224. package/dist/babel/testIdPlugin.js +0 -585
  225. package/dist/babel/testIdPlugin.js.map +0 -1
  226. package/dist/modules/fiberTree/hooks.d.ts.map +0 -1
  227. package/dist/modules/fiberTree/hooks.js +0 -550
  228. package/dist/modules/fiberTree/hooks.js.map +0 -1
  229. package/dist/modules/fiberTree/utils.d.ts +0 -39
  230. package/dist/modules/fiberTree/utils.d.ts.map +0 -1
  231. package/dist/modules/fiberTree/utils.js +0 -641
  232. package/dist/modules/fiberTree/utils.js.map +0 -1
  233. package/dist/server/host/deviceResolver.d.ts.map +0 -1
  234. package/dist/server/host/deviceResolver.js +0 -621
  235. package/dist/server/host/deviceResolver.js.map +0 -1
  236. package/dist/server/host/tools/input.d.ts +0 -10
  237. package/dist/server/host/tools/input.d.ts.map +0 -1
  238. package/dist/server/host/tools/input.js +0 -503
  239. package/dist/server/host/tools/input.js.map +0 -1
@@ -1,503 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pressKeyTool = exports.typeTextBatchTool = exports.dragTool = exports.longPressTool = exports.typeTextTool = exports.swipeTool = exports.tapTool = void 0;
4
- const deviceResolver_1 = require("../../../server/host/deviceResolver");
5
- const helpers_1 = require("../../../server/host/helpers");
6
- const iosInput_1 = require("../../../server/host/iosInput");
7
- const processRunner_1 = require("../../../server/host/processRunner");
8
- const INPUT_TIMEOUT_MS = 5_000;
9
- const SWIPE_DURATION_DEFAULT_MS = 300;
10
- const SWIPE_DURATION_MIN_MS = 50;
11
- const SWIPE_DURATION_MAX_MS = 5_000;
12
- const LONG_PRESS_DURATION_DEFAULT_MS = 700;
13
- const DRAG_HOLD_DEFAULT_MS = 500;
14
- const DRAG_MOVE_DEFAULT_MS = 400;
15
- const BATCH_FOCUS_DELAY_DEFAULT_MS = 200;
16
- const BATCH_FOCUS_DELAY_MAX_MS = 5_000;
17
- const ANDROID_KEYCODES = {
18
- back: 'KEYCODE_BACK',
19
- backspace: 'KEYCODE_DEL',
20
- enter: 'KEYCODE_ENTER',
21
- escape: 'KEYCODE_ESCAPE',
22
- home: 'KEYCODE_HOME',
23
- menu: 'KEYCODE_MENU',
24
- power: 'KEYCODE_POWER',
25
- space: 'KEYCODE_SPACE',
26
- tab: 'KEYCODE_TAB',
27
- volume_down: 'KEYCODE_VOLUME_DOWN',
28
- volume_up: 'KEYCODE_VOLUME_UP',
29
- };
30
- const KEY_NAMES = Object.keys(ANDROID_KEYCODES).sort();
31
- const escapeAdbInputText = (text) => {
32
- const spaced = text.replace(/\s/g, '%s');
33
- return spaced.replace(/([\\'"`$&|;<>()[\]{}*?!#~])/g, '\\$1');
34
- };
35
- const clampSwipeDuration = (value) => {
36
- if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0) {
37
- return SWIPE_DURATION_DEFAULT_MS;
38
- }
39
- return Math.max(SWIPE_DURATION_MIN_MS, Math.min(SWIPE_DURATION_MAX_MS, Math.floor(value)));
40
- };
41
- const runAdbInput = async (serial, args, runner, action) => {
42
- try {
43
- const proc = await runner('adb', ['-s', serial, 'shell', 'input', ...args], {
44
- timeoutMs: INPUT_TIMEOUT_MS,
45
- });
46
- if (proc.timedOut) {
47
- return { error: `Android ${action} timed out after ${INPUT_TIMEOUT_MS}ms` };
48
- }
49
- if (proc.exitCode !== 0) {
50
- return {
51
- error: `adb shell input ${action} failed (exit ${proc.exitCode}): ${proc.stderr.toString('utf8').trim().slice(0, 500)}`,
52
- };
53
- }
54
- return { ok: true };
55
- }
56
- catch (err) {
57
- if (err instanceof processRunner_1.ProcessNotFoundError) {
58
- return {
59
- error: 'adb not found. Android host tools require Android platform-tools on PATH.',
60
- };
61
- }
62
- return { error: `Failed to run Android ${action}: ${err.message}` };
63
- }
64
- };
65
- const tapAndroid = (serial, x, y, runner) => {
66
- return runAdbInput(serial, ['tap', String(x), String(y)], runner, 'tap');
67
- };
68
- const swipeAndroid = (serial, x1, y1, x2, y2, durationMs, runner) => {
69
- return runAdbInput(serial, ['swipe', String(x1), String(y1), String(x2), String(y2), String(durationMs)], runner, 'swipe');
70
- };
71
- // `adb shell input text` maps characters through the default virtual keyboard
72
- // keymap, which only covers ASCII. Anything outside that set crashes the input
73
- // service with an opaque "Attempt to get length of null array" NPE. Refuse it
74
- // up front with an actionable message.
75
- // eslint-disable-next-line no-control-regex
76
- const NON_ASCII_RE = /[^\x00-\x7F]/;
77
- const typeTextAndroid = async (serial, text, submit, runner) => {
78
- if (NON_ASCII_RE.test(text)) {
79
- return {
80
- error: 'Android type_text only supports ASCII — `adb shell input text` has no code path for non-ASCII characters. Workarounds: tap the target field then drive the content some other way (e.g. fiber_tree__call on onChangeText), or paste from the device clipboard via a helper app.',
81
- };
82
- }
83
- // Select all + delete existing text first (consistent with iOS behavior).
84
- // `input keycombination` sends keys simultaneously (Ctrl+A = select all).
85
- try {
86
- const selAll = await runner('adb', ['-s', serial, 'shell', 'input', 'keycombination', '113', '29'], {
87
- timeoutMs: INPUT_TIMEOUT_MS,
88
- });
89
- if (selAll.exitCode === 0) {
90
- await runAdbInput(serial, ['keyevent', 'KEYCODE_DEL'], runner, 'clear');
91
- }
92
- }
93
- catch {
94
- // keycombination not supported — skip clear, just append
95
- }
96
- const escaped = escapeAdbInputText(text);
97
- const typed = await runAdbInput(serial, ['text', escaped], runner, 'text');
98
- if ('error' in typed) {
99
- return typed;
100
- }
101
- if (submit) {
102
- return runAdbInput(serial, ['keyevent', 'KEYCODE_ENTER'], runner, 'submit');
103
- }
104
- return typed;
105
- };
106
- const pressKeyAndroid = (serial, key, runner) => {
107
- const keycode = ANDROID_KEYCODES[key];
108
- if (!keycode) {
109
- return Promise.resolve({
110
- error: `Unknown key '${key}'. Supported: ${KEY_NAMES.join(', ')}.`,
111
- });
112
- }
113
- return runAdbInput(serial, ['keyevent', keycode], runner, 'keyevent');
114
- };
115
- const tapTool = (runner) => {
116
- return {
117
- description: 'Primary way to deliver a tap to the app, at physical-pixel (x, y). Runs through the real OS gesture pipeline so Pressable feedback, gesture responders, and hit-test all fire. For a fiber-targeted tap without copying bounds by hand, prefer host__tap_fiber.',
118
- handler: async (args, ctx) => {
119
- const resolved = await (0, deviceResolver_1.resolveDevice)(ctx, (0, helpers_1.parseResolveOptions)(args), runner);
120
- if (!resolved.ok) {
121
- return { error: resolved.error };
122
- }
123
- const x = (0, helpers_1.parseCoord)(args.x, 'x');
124
- if (!x.ok)
125
- return { error: x.error };
126
- const y = (0, helpers_1.parseCoord)(args.y, 'y');
127
- if (!y.ok)
128
- return { error: y.error };
129
- const result = resolved.device.platform === 'ios'
130
- ? await (0, iosInput_1.tapIos)(resolved.device.nativeId, x.value, y.value, runner)
131
- : await tapAndroid(resolved.device.nativeId, x.value, y.value, runner);
132
- if ('error' in result) {
133
- return { error: result.error };
134
- }
135
- return { device: resolved.device, tapped: true, x: x.value, y: y.value };
136
- },
137
- inputSchema: {
138
- platform: helpers_1.PLATFORM_ARG_SCHEMA,
139
- x: {
140
- description: 'Absolute x pixel coordinate (top-left origin).',
141
- minimum: 0,
142
- type: 'number',
143
- },
144
- y: {
145
- description: 'Absolute y pixel coordinate (top-left origin).',
146
- minimum: 0,
147
- type: 'number',
148
- },
149
- ...helpers_1.NATIVE_ID_SCHEMA,
150
- },
151
- timeout: INPUT_TIMEOUT_MS,
152
- };
153
- };
154
- exports.tapTool = tapTool;
155
- const swipeTool = (runner) => {
156
- return {
157
- description: 'Primary way to deliver a swipe / scroll gesture, from (x1, y1) to (x2, y2) in physical pixels. Runs through the OS gesture pipeline — Pan responders, scroll momentum, and gesture handlers all behave as under a finger. durationMs default 300, clamped 50..5000.',
158
- handler: async (args, ctx) => {
159
- const resolved = await (0, deviceResolver_1.resolveDevice)(ctx, (0, helpers_1.parseResolveOptions)(args), runner);
160
- if (!resolved.ok) {
161
- return { error: resolved.error };
162
- }
163
- const x1 = (0, helpers_1.parseCoord)(args.x1, 'x1');
164
- if (!x1.ok)
165
- return { error: x1.error };
166
- const y1 = (0, helpers_1.parseCoord)(args.y1, 'y1');
167
- if (!y1.ok)
168
- return { error: y1.error };
169
- const x2 = (0, helpers_1.parseCoord)(args.x2, 'x2');
170
- if (!x2.ok)
171
- return { error: x2.error };
172
- const y2 = (0, helpers_1.parseCoord)(args.y2, 'y2');
173
- if (!y2.ok)
174
- return { error: y2.error };
175
- const durationMs = clampSwipeDuration(args.durationMs);
176
- const result = resolved.device.platform === 'ios'
177
- ? await (0, iosInput_1.swipeIos)(resolved.device.nativeId, x1.value, y1.value, x2.value, y2.value, durationMs, runner)
178
- : await swipeAndroid(resolved.device.nativeId, x1.value, y1.value, x2.value, y2.value, durationMs, runner);
179
- if ('error' in result) {
180
- return { error: result.error };
181
- }
182
- return {
183
- device: resolved.device,
184
- durationMs,
185
- from: { x: x1.value, y: y1.value },
186
- swiped: true,
187
- to: { x: x2.value, y: y2.value },
188
- };
189
- },
190
- inputSchema: {
191
- durationMs: {
192
- default: SWIPE_DURATION_DEFAULT_MS,
193
- description: 'Total swipe duration in milliseconds.',
194
- maximum: SWIPE_DURATION_MAX_MS,
195
- minimum: SWIPE_DURATION_MIN_MS,
196
- type: 'number',
197
- },
198
- platform: helpers_1.PLATFORM_ARG_SCHEMA,
199
- x1: {
200
- description: 'Start x pixel coordinate (top-left origin).',
201
- minimum: 0,
202
- type: 'number',
203
- },
204
- x2: { description: 'End x pixel coordinate (top-left origin).', minimum: 0, type: 'number' },
205
- y1: {
206
- description: 'Start y pixel coordinate (top-left origin).',
207
- minimum: 0,
208
- type: 'number',
209
- },
210
- y2: { description: 'End y pixel coordinate (top-left origin).', minimum: 0, type: 'number' },
211
- ...helpers_1.NATIVE_ID_SCHEMA,
212
- },
213
- timeout: INPUT_TIMEOUT_MS + SWIPE_DURATION_MAX_MS,
214
- };
215
- };
216
- exports.swipeTool = swipeTool;
217
- const typeTextTool = (runner) => {
218
- return {
219
- description: "Primary way to type into the currently focused text input — replaces existing content (select-all then paste). submit:true presses ENTER after typing. iOS: unicode via clipboard paste, keyboard-layout immune. Android: ASCII only (adb input text limitation); for non-Latin scripts fall back to fiber_tree__call on the input's onChangeText.",
220
- handler: async (args, ctx) => {
221
- const resolved = await (0, deviceResolver_1.resolveDevice)(ctx, (0, helpers_1.parseResolveOptions)(args), runner);
222
- if (!resolved.ok) {
223
- return { error: resolved.error };
224
- }
225
- const text = typeof args.text === 'string' ? args.text : undefined;
226
- if (text === undefined) {
227
- return { error: "'text' is required and must be a string" };
228
- }
229
- const submit = args.submit === true;
230
- const result = resolved.device.platform === 'ios'
231
- ? await (0, iosInput_1.typeTextIos)(resolved.device.nativeId, text, submit, runner)
232
- : await typeTextAndroid(resolved.device.nativeId, text, submit, runner);
233
- if ('error' in result) {
234
- return { error: result.error };
235
- }
236
- return {
237
- device: resolved.device,
238
- length: text.length,
239
- submitted: submit,
240
- typed: true,
241
- };
242
- },
243
- inputSchema: {
244
- platform: helpers_1.PLATFORM_ARG_SCHEMA,
245
- submit: {
246
- default: false,
247
- description: 'Press ENTER after typing (e.g. to submit a search).',
248
- type: 'boolean',
249
- },
250
- text: {
251
- description: 'Text to type into the currently focused input field. Whitespace and shell metacharacters are escaped automatically.',
252
- type: 'string',
253
- },
254
- ...helpers_1.NATIVE_ID_SCHEMA,
255
- },
256
- timeout: INPUT_TIMEOUT_MS,
257
- };
258
- };
259
- exports.typeTextTool = typeTextTool;
260
- const clampLongPressDuration = (value) => {
261
- if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0) {
262
- return LONG_PRESS_DURATION_DEFAULT_MS;
263
- }
264
- return Math.max(SWIPE_DURATION_MIN_MS, Math.min(SWIPE_DURATION_MAX_MS, Math.floor(value)));
265
- };
266
- const longPressTool = (runner) => {
267
- return {
268
- description: 'Primary way to deliver a long-press: hold a touch at (x, y) for durationMs through the OS gesture pipeline. Default 700ms — above the RN Pressable long-press threshold (~500ms) with margin. Internally a zero-distance swipe kept alive for the full duration on both platforms.',
269
- handler: async (args, ctx) => {
270
- const resolved = await (0, deviceResolver_1.resolveDevice)(ctx, (0, helpers_1.parseResolveOptions)(args), runner);
271
- if (!resolved.ok) {
272
- return { error: resolved.error };
273
- }
274
- const x = (0, helpers_1.parseCoord)(args.x, 'x');
275
- if (!x.ok)
276
- return { error: x.error };
277
- const y = (0, helpers_1.parseCoord)(args.y, 'y');
278
- if (!y.ok)
279
- return { error: y.error };
280
- const durationMs = clampLongPressDuration(args.durationMs);
281
- const result = resolved.device.platform === 'ios'
282
- ? await (0, iosInput_1.swipeIos)(resolved.device.nativeId, x.value, y.value, x.value, y.value, durationMs, runner)
283
- : await swipeAndroid(resolved.device.nativeId, x.value, y.value, x.value, y.value, durationMs, runner);
284
- if ('error' in result) {
285
- return { error: result.error };
286
- }
287
- return { device: resolved.device, durationMs, longPressed: true, x: x.value, y: y.value };
288
- },
289
- inputSchema: {
290
- durationMs: {
291
- default: LONG_PRESS_DURATION_DEFAULT_MS,
292
- description: 'Hold duration in milliseconds.',
293
- maximum: SWIPE_DURATION_MAX_MS,
294
- minimum: SWIPE_DURATION_MIN_MS,
295
- type: 'number',
296
- },
297
- platform: helpers_1.PLATFORM_ARG_SCHEMA,
298
- x: { description: 'Absolute x pixel coordinate.', minimum: 0, type: 'number' },
299
- y: { description: 'Absolute y pixel coordinate.', minimum: 0, type: 'number' },
300
- ...helpers_1.NATIVE_ID_SCHEMA,
301
- },
302
- timeout: INPUT_TIMEOUT_MS + SWIPE_DURATION_MAX_MS,
303
- };
304
- };
305
- exports.longPressTool = longPressTool;
306
- const dragTool = (runner) => {
307
- return {
308
- description: 'Primary way to deliver a hold-then-drag gesture — swipe-to-delete, drag-to-reorder, pull-to-refresh-with-hold. Total gesture time = holdMs + durationMs (both platforms emit a single slow swipe — the hold is simulated by lingering near the start, not a true stop-then-move pause). When precise hold timing matters (e.g. iOS haptic long-press triggers), test + tune holdMs empirically.',
309
- handler: async (args, ctx) => {
310
- const resolved = await (0, deviceResolver_1.resolveDevice)(ctx, (0, helpers_1.parseResolveOptions)(args), runner);
311
- if (!resolved.ok) {
312
- return { error: resolved.error };
313
- }
314
- const x1 = (0, helpers_1.parseCoord)(args.x1, 'x1');
315
- if (!x1.ok)
316
- return { error: x1.error };
317
- const y1 = (0, helpers_1.parseCoord)(args.y1, 'y1');
318
- if (!y1.ok)
319
- return { error: y1.error };
320
- const x2 = (0, helpers_1.parseCoord)(args.x2, 'x2');
321
- if (!x2.ok)
322
- return { error: x2.error };
323
- const y2 = (0, helpers_1.parseCoord)(args.y2, 'y2');
324
- if (!y2.ok)
325
- return { error: y2.error };
326
- const holdMs = typeof args.holdMs === 'number' && Number.isFinite(args.holdMs) && args.holdMs >= 0
327
- ? Math.min(SWIPE_DURATION_MAX_MS, Math.floor(args.holdMs))
328
- : DRAG_HOLD_DEFAULT_MS;
329
- const moveMs = clampSwipeDuration(args.durationMs ?? DRAG_MOVE_DEFAULT_MS);
330
- const total = Math.min(SWIPE_DURATION_MAX_MS, holdMs + moveMs);
331
- const result = resolved.device.platform === 'ios'
332
- ? await (0, iosInput_1.swipeIos)(resolved.device.nativeId, x1.value, y1.value, x2.value, y2.value, total, runner)
333
- : await swipeAndroid(resolved.device.nativeId, x1.value, y1.value, x2.value, y2.value, total, runner);
334
- if ('error' in result) {
335
- return { error: result.error };
336
- }
337
- return {
338
- device: resolved.device,
339
- dragged: true,
340
- from: { x: x1.value, y: y1.value },
341
- holdMs,
342
- moveMs,
343
- to: { x: x2.value, y: y2.value },
344
- totalMs: total,
345
- };
346
- },
347
- inputSchema: {
348
- durationMs: {
349
- default: DRAG_MOVE_DEFAULT_MS,
350
- description: 'Move portion in milliseconds.',
351
- maximum: SWIPE_DURATION_MAX_MS,
352
- minimum: SWIPE_DURATION_MIN_MS,
353
- type: 'number',
354
- },
355
- holdMs: {
356
- default: DRAG_HOLD_DEFAULT_MS,
357
- description: 'Hold time near start before the motion. 0 to skip hold.',
358
- maximum: SWIPE_DURATION_MAX_MS,
359
- minimum: 0,
360
- type: 'number',
361
- },
362
- platform: helpers_1.PLATFORM_ARG_SCHEMA,
363
- x1: { description: 'Start x pixel coordinate.', minimum: 0, type: 'number' },
364
- x2: { description: 'End x pixel coordinate.', minimum: 0, type: 'number' },
365
- y1: { description: 'Start y pixel coordinate.', minimum: 0, type: 'number' },
366
- y2: { description: 'End y pixel coordinate.', minimum: 0, type: 'number' },
367
- ...helpers_1.NATIVE_ID_SCHEMA,
368
- },
369
- timeout: INPUT_TIMEOUT_MS + SWIPE_DURATION_MAX_MS,
370
- };
371
- };
372
- exports.dragTool = dragTool;
373
- const typeTextBatchTool = (runner) => {
374
- return {
375
- description: `Primary way to fill multiple text fields in one call. Each field: { x, y, text, submit? }. For each entry — tap to focus, wait focusDelayMs, then type via the same semantics as host__type_text (select-all → paste on iOS; adb input text on Android). Stops on the first error and returns { filled, failedAt, error? }.
376
-
377
- focusDelayMs default is ${BATCH_FOCUS_DELAY_DEFAULT_MS}ms — tuned for in-place TextInputs (login / signup forms, already-mounted fields). When the tap triggers a screen transition (e.g. searchBar → SearchScreen) the target input won't be mounted yet and the typed text is lost; bump focusDelayMs to 700-800. Set to 0 when the input is already focused.`,
378
- handler: async (args, ctx) => {
379
- const resolved = await (0, deviceResolver_1.resolveDevice)(ctx, (0, helpers_1.parseResolveOptions)(args), runner);
380
- if (!resolved.ok) {
381
- return { error: resolved.error };
382
- }
383
- const fields = args.fields;
384
- if (!Array.isArray(fields) || fields.length === 0) {
385
- return { error: "'fields' must be a non-empty array of { x, y, text, submit? }." };
386
- }
387
- const focusDelayMs = typeof args.focusDelayMs === 'number' && Number.isFinite(args.focusDelayMs)
388
- ? Math.max(0, Math.min(BATCH_FOCUS_DELAY_MAX_MS, Math.floor(args.focusDelayMs)))
389
- : BATCH_FOCUS_DELAY_DEFAULT_MS;
390
- const results = [];
391
- for (let i = 0; i < fields.length; i++) {
392
- const raw = fields[i];
393
- if (!raw || typeof raw !== 'object') {
394
- return { error: `fields[${i}]: must be an object.`, failedAt: i, filled: results.length };
395
- }
396
- const x = (0, helpers_1.parseCoord)(raw.x, `fields[${i}].x`);
397
- if (!x.ok)
398
- return { error: x.error, failedAt: i, filled: results.length };
399
- const y = (0, helpers_1.parseCoord)(raw.y, `fields[${i}].y`);
400
- if (!y.ok)
401
- return { error: y.error, failedAt: i, filled: results.length };
402
- if (typeof raw.text !== 'string') {
403
- return {
404
- error: `fields[${i}].text must be a string.`,
405
- failedAt: i,
406
- filled: results.length,
407
- };
408
- }
409
- const submit = raw.submit === true;
410
- const focused = resolved.device.platform === 'ios'
411
- ? await (0, iosInput_1.tapIos)(resolved.device.nativeId, x.value, y.value, runner)
412
- : await tapAndroid(resolved.device.nativeId, x.value, y.value, runner);
413
- if ('error' in focused) {
414
- return { error: focused.error, failedAt: i, filled: results.length };
415
- }
416
- // Give the soft keyboard (or a screen transition to a search-style
417
- // view) a beat to come up before typing. Tunable per-call because
418
- // navigation-triggering taps need more than in-place input focus.
419
- if (focusDelayMs > 0) {
420
- await new Promise((r) => {
421
- return setTimeout(r, focusDelayMs);
422
- });
423
- }
424
- const typed = resolved.device.platform === 'ios'
425
- ? await (0, iosInput_1.typeTextIos)(resolved.device.nativeId, raw.text, submit, runner)
426
- : await typeTextAndroid(resolved.device.nativeId, raw.text, submit, runner);
427
- if ('error' in typed) {
428
- return { error: typed.error, failedAt: i, filled: results.length };
429
- }
430
- results.push({ submitted: submit, x: x.value, y: y.value });
431
- }
432
- return { device: resolved.device, fields: results, filled: results.length };
433
- },
434
- inputSchema: {
435
- fields: {
436
- description: 'Ordered list of { x, y, text, submit? } entries. Each entry taps the coordinate to focus the input, waits focusDelayMs, then types the text.',
437
- examples: [
438
- [
439
- { text: 'alice@example.com', x: 120, y: 400 },
440
- { submit: true, text: 'pa55word', x: 120, y: 520 },
441
- ],
442
- ],
443
- items: {
444
- properties: {
445
- submit: { default: false, type: 'boolean' },
446
- text: { type: 'string' },
447
- x: { minimum: 0, type: 'number' },
448
- y: { minimum: 0, type: 'number' },
449
- },
450
- required: ['x', 'y', 'text'],
451
- type: 'object',
452
- },
453
- minItems: 1,
454
- type: 'array',
455
- },
456
- focusDelayMs: {
457
- default: BATCH_FOCUS_DELAY_DEFAULT_MS,
458
- description: 'Delay between tap and type. Use 0 to skip when the input is already focused.',
459
- maximum: BATCH_FOCUS_DELAY_MAX_MS,
460
- minimum: 0,
461
- type: 'number',
462
- },
463
- platform: helpers_1.PLATFORM_ARG_SCHEMA,
464
- ...helpers_1.NATIVE_ID_SCHEMA,
465
- },
466
- timeout: INPUT_TIMEOUT_MS * 6,
467
- };
468
- };
469
- exports.typeTextBatchTool = typeTextBatchTool;
470
- const pressKeyTool = (runner) => {
471
- return {
472
- description: `Primary way to press a hardware / semantic key — routes through the OS so native handlers (back, home, volume, etc.) fire. Accepted: ${KEY_NAMES.join(', ')}. iOS lacks back / menu / power / volume_up / volume_down.`,
473
- handler: async (args, ctx) => {
474
- const resolved = await (0, deviceResolver_1.resolveDevice)(ctx, (0, helpers_1.parseResolveOptions)(args), runner);
475
- if (!resolved.ok) {
476
- return { error: resolved.error };
477
- }
478
- const key = (0, helpers_1.parseStringArg)(args.key);
479
- if (!key) {
480
- return { error: `'key' is required. Supported: ${KEY_NAMES.join(', ')}.` };
481
- }
482
- const result = resolved.device.platform === 'ios'
483
- ? await (0, iosInput_1.pressKeyIos)(resolved.device.nativeId, key, runner)
484
- : await pressKeyAndroid(resolved.device.nativeId, key, runner);
485
- if ('error' in result) {
486
- return { error: result.error };
487
- }
488
- return { device: resolved.device, key, pressed: true };
489
- },
490
- inputSchema: {
491
- key: {
492
- description: `Semantic key name. Mapped to the target platform's native key code internally. Supported: ${KEY_NAMES.join(', ')}.`,
493
- enum: KEY_NAMES,
494
- type: 'string',
495
- },
496
- platform: helpers_1.PLATFORM_ARG_SCHEMA,
497
- ...helpers_1.NATIVE_ID_SCHEMA,
498
- },
499
- timeout: INPUT_TIMEOUT_MS,
500
- };
501
- };
502
- exports.pressKeyTool = pressKeyTool;
503
- //# sourceMappingURL=input.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../../src/server/host/tools/input.ts"],"names":[],"mappings":"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"}