react-native-mcp-kit 1.0.0 → 2.0.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 (167) hide show
  1. package/README.md +220 -720
  2. package/dist/babel/stripPlugin.d.ts.map +1 -1
  3. package/dist/babel/stripPlugin.js +40 -3
  4. package/dist/babel/stripPlugin.js.map +1 -1
  5. package/dist/bin/ios-hid +0 -0
  6. package/dist/client/contexts/McpContext/McpProvider.d.ts +1 -1
  7. package/dist/client/contexts/McpContext/McpProvider.d.ts.map +1 -1
  8. package/dist/client/contexts/McpContext/McpProvider.js +67 -4
  9. package/dist/client/contexts/McpContext/McpProvider.js.map +1 -1
  10. package/dist/client/contexts/McpContext/types.d.ts +11 -1
  11. package/dist/client/contexts/McpContext/types.d.ts.map +1 -1
  12. package/dist/client/core/McpClient.d.ts +7 -0
  13. package/dist/client/core/McpClient.d.ts.map +1 -1
  14. package/dist/client/core/McpClient.js +73 -2
  15. package/dist/client/core/McpClient.js.map +1 -1
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +1 -2
  19. package/dist/index.js.map +1 -1
  20. package/dist/modules/device/device.d.ts.map +1 -1
  21. package/dist/modules/device/device.js +16 -4
  22. package/dist/modules/device/device.js.map +1 -1
  23. package/dist/modules/fiberTree/fiberTree.d.ts.map +1 -1
  24. package/dist/modules/fiberTree/fiberTree.js +61 -15
  25. package/dist/modules/fiberTree/fiberTree.js.map +1 -1
  26. package/dist/modules/fiberTree/types.d.ts +9 -0
  27. package/dist/modules/fiberTree/types.d.ts.map +1 -1
  28. package/dist/modules/fiberTree/utils.d.ts +2 -1
  29. package/dist/modules/fiberTree/utils.d.ts.map +1 -1
  30. package/dist/modules/fiberTree/utils.js +57 -1
  31. package/dist/modules/fiberTree/utils.js.map +1 -1
  32. package/dist/modules/index.d.ts +0 -1
  33. package/dist/modules/index.d.ts.map +1 -1
  34. package/dist/modules/index.js +1 -3
  35. package/dist/modules/index.js.map +1 -1
  36. package/dist/modules/navigation/navigation.d.ts.map +1 -1
  37. package/dist/modules/navigation/navigation.js +32 -40
  38. package/dist/modules/navigation/navigation.js.map +1 -1
  39. package/dist/modules/navigation/types.d.ts +2 -1
  40. package/dist/modules/navigation/types.d.ts.map +1 -1
  41. package/dist/modules/network/network.d.ts.map +1 -1
  42. package/dist/modules/network/network.js +16 -1
  43. package/dist/modules/network/network.js.map +1 -1
  44. package/dist/server/bridge.d.ts +38 -12
  45. package/dist/server/bridge.d.ts.map +1 -1
  46. package/dist/server/bridge.js +136 -56
  47. package/dist/server/bridge.js.map +1 -1
  48. package/dist/server/cli.js +10 -1
  49. package/dist/server/cli.js.map +1 -1
  50. package/dist/server/host/deviceResolver.d.ts +53 -0
  51. package/dist/server/host/deviceResolver.d.ts.map +1 -0
  52. package/dist/server/host/deviceResolver.js +555 -0
  53. package/dist/server/host/deviceResolver.js.map +1 -0
  54. package/dist/server/host/helpers.d.ts +33 -0
  55. package/dist/server/host/helpers.d.ts.map +1 -0
  56. package/dist/server/host/helpers.js +42 -0
  57. package/dist/server/host/helpers.js.map +1 -0
  58. package/dist/server/host/hostModule.d.ts +4 -0
  59. package/dist/server/host/hostModule.d.ts.map +1 -0
  60. package/dist/server/host/hostModule.js +26 -0
  61. package/dist/server/host/hostModule.js.map +1 -0
  62. package/dist/server/host/index.d.ts +4 -0
  63. package/dist/server/host/index.d.ts.map +1 -0
  64. package/dist/server/host/index.js +8 -0
  65. package/dist/server/host/index.js.map +1 -0
  66. package/dist/server/host/iosInput.d.ts +15 -0
  67. package/dist/server/host/iosInput.d.ts.map +1 -0
  68. package/dist/server/host/iosInput.js +93 -0
  69. package/dist/server/host/iosInput.js.map +1 -0
  70. package/dist/server/host/modules/screenshot.d.ts +4 -0
  71. package/dist/server/host/modules/screenshot.d.ts.map +1 -0
  72. package/dist/server/host/modules/screenshot.js +615 -0
  73. package/dist/server/host/modules/screenshot.js.map +1 -0
  74. package/dist/server/host/processRunner.d.ts +19 -0
  75. package/dist/server/host/processRunner.d.ts.map +1 -0
  76. package/dist/server/host/processRunner.js +58 -0
  77. package/dist/server/host/processRunner.js.map +1 -0
  78. package/dist/server/host/tools/capture.d.ts +6 -0
  79. package/dist/server/host/tools/capture.d.ts.map +1 -0
  80. package/dist/server/host/tools/capture.js +148 -0
  81. package/dist/server/host/tools/capture.js.map +1 -0
  82. package/dist/server/host/tools/devices.d.ts +4 -0
  83. package/dist/server/host/tools/devices.d.ts.map +1 -0
  84. package/dist/server/host/tools/devices.js +17 -0
  85. package/dist/server/host/tools/devices.js.map +1 -0
  86. package/dist/server/host/tools/input.d.ts +7 -0
  87. package/dist/server/host/tools/input.d.ts.map +1 -0
  88. package/dist/server/host/tools/input.js +286 -0
  89. package/dist/server/host/tools/input.js.map +1 -0
  90. package/dist/server/host/tools/lifecycle.d.ts +6 -0
  91. package/dist/server/host/tools/lifecycle.d.ts.map +1 -0
  92. package/dist/server/host/tools/lifecycle.js +271 -0
  93. package/dist/server/host/tools/lifecycle.js.map +1 -0
  94. package/dist/server/host/types.d.ts +17 -0
  95. package/dist/server/host/types.d.ts.map +1 -0
  96. package/dist/{modules/components → server/host}/types.js.map +1 -1
  97. package/dist/server/host/wda.d.ts +15 -0
  98. package/dist/server/host/wda.d.ts.map +1 -0
  99. package/dist/server/host/wda.js +100 -0
  100. package/dist/server/host/wda.js.map +1 -0
  101. package/dist/server/index.d.ts.map +1 -1
  102. package/dist/server/index.js +10 -17
  103. package/dist/server/index.js.map +1 -1
  104. package/dist/server/mcpServer.d.ts +5 -10
  105. package/dist/server/mcpServer.d.ts.map +1 -1
  106. package/dist/server/mcpServer.js +438 -153
  107. package/dist/server/mcpServer.js.map +1 -1
  108. package/dist/server/types.d.ts +2 -8
  109. package/dist/server/types.d.ts.map +1 -1
  110. package/dist/shared/protocol.d.ts +6 -0
  111. package/dist/shared/protocol.d.ts.map +1 -1
  112. package/package.json +6 -12
  113. package/dist/client/contexts/McpTreeContext/McpTracker.d.ts +0 -10
  114. package/dist/client/contexts/McpTreeContext/McpTracker.d.ts.map +0 -1
  115. package/dist/client/contexts/McpTreeContext/McpTracker.js +0 -101
  116. package/dist/client/contexts/McpTreeContext/McpTracker.js.map +0 -1
  117. package/dist/client/contexts/McpTreeContext/McpTreeContext.d.ts +0 -2
  118. package/dist/client/contexts/McpTreeContext/McpTreeContext.d.ts.map +0 -1
  119. package/dist/client/contexts/McpTreeContext/McpTreeContext.js +0 -6
  120. package/dist/client/contexts/McpTreeContext/McpTreeContext.js.map +0 -1
  121. package/dist/client/contexts/McpTreeContext/McpTreeRegistry.d.ts +0 -16
  122. package/dist/client/contexts/McpTreeContext/McpTreeRegistry.d.ts.map +0 -1
  123. package/dist/client/contexts/McpTreeContext/McpTreeRegistry.js +0 -96
  124. package/dist/client/contexts/McpTreeContext/McpTreeRegistry.js.map +0 -1
  125. package/dist/client/contexts/McpTreeContext/index.d.ts +0 -5
  126. package/dist/client/contexts/McpTreeContext/index.d.ts.map +0 -1
  127. package/dist/client/contexts/McpTreeContext/index.js +0 -10
  128. package/dist/client/contexts/McpTreeContext/index.js.map +0 -1
  129. package/dist/client/contexts/McpTreeContext/types.d.ts +0 -14
  130. package/dist/client/contexts/McpTreeContext/types.d.ts.map +0 -1
  131. package/dist/client/contexts/McpTreeContext/types.js.map +0 -1
  132. package/dist/modules/components/components.d.ts +0 -8
  133. package/dist/modules/components/components.d.ts.map +0 -1
  134. package/dist/modules/components/components.js +0 -315
  135. package/dist/modules/components/components.js.map +0 -1
  136. package/dist/modules/components/index.d.ts +0 -3
  137. package/dist/modules/components/index.d.ts.map +0 -1
  138. package/dist/modules/components/index.js +0 -6
  139. package/dist/modules/components/index.js.map +0 -1
  140. package/dist/modules/components/types.d.ts +0 -18
  141. package/dist/modules/components/types.d.ts.map +0 -1
  142. package/dist/modules/components/types.js +0 -3
  143. package/dist/modules/components/utils.d.ts +0 -18
  144. package/dist/modules/components/utils.d.ts.map +0 -1
  145. package/dist/modules/components/utils.js +0 -386
  146. package/dist/modules/components/utils.js.map +0 -1
  147. package/dist/modules/screenshot/index.d.ts +0 -3
  148. package/dist/modules/screenshot/index.d.ts.map +0 -1
  149. package/dist/modules/screenshot/index.js +0 -6
  150. package/dist/modules/screenshot/index.js.map +0 -1
  151. package/dist/modules/screenshot/screenshot.d.ts +0 -4
  152. package/dist/modules/screenshot/screenshot.d.ts.map +0 -1
  153. package/dist/modules/screenshot/screenshot.js +0 -89
  154. package/dist/modules/screenshot/screenshot.js.map +0 -1
  155. package/dist/modules/screenshot/types.d.ts +0 -5
  156. package/dist/modules/screenshot/types.d.ts.map +0 -1
  157. package/dist/modules/screenshot/types.js +0 -3
  158. package/dist/modules/screenshot/types.js.map +0 -1
  159. package/dist/modules/tree/index.d.ts +0 -2
  160. package/dist/modules/tree/index.d.ts.map +0 -1
  161. package/dist/modules/tree/index.js +0 -6
  162. package/dist/modules/tree/index.js.map +0 -1
  163. package/dist/modules/tree/tree.d.ts +0 -3
  164. package/dist/modules/tree/tree.d.ts.map +0 -1
  165. package/dist/modules/tree/tree.js +0 -274
  166. package/dist/modules/tree/tree.js.map +0 -1
  167. /package/dist/{client/contexts/McpTreeContext → server/host}/types.js +0 -0
@@ -0,0 +1,555 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.enrichDevicesWithClientStatus = exports.resolveDevice = exports.listAndroidDevices = exports.listIosSimulators = exports.clearDeviceCache = void 0;
4
+ const processRunner_1 = require("./processRunner");
5
+ const CACHE_TTL_MS = 5_000;
6
+ const LIST_TIMEOUT_MS = 5_000;
7
+ let iosCache = null;
8
+ let androidCache = null;
9
+ const clearDeviceCache = () => {
10
+ iosCache = null;
11
+ androidCache = null;
12
+ };
13
+ exports.clearDeviceCache = clearDeviceCache;
14
+ const listIosSimulators = async (runner) => {
15
+ if (iosCache && Date.now() - iosCache.timestamp < CACHE_TTL_MS) {
16
+ return iosCache.result;
17
+ }
18
+ const proc = await runner('xcrun', ['simctl', 'list', 'devices', '--json'], {
19
+ timeoutMs: LIST_TIMEOUT_MS,
20
+ });
21
+ if (proc.exitCode !== 0) {
22
+ throw new Error(`xcrun simctl list failed (exit ${proc.exitCode}): ${proc.stderr.toString('utf8').trim().slice(0, 500)}`);
23
+ }
24
+ const parsed = JSON.parse(proc.stdout.toString('utf8'));
25
+ const out = [];
26
+ for (const runtime of Object.values(parsed.devices ?? {})) {
27
+ for (const d of runtime) {
28
+ if (typeof d.udid === 'string' && typeof d.name === 'string' && typeof d.state === 'string') {
29
+ out.push({ name: d.name, state: d.state, udid: d.udid });
30
+ }
31
+ }
32
+ }
33
+ iosCache = { result: out, timestamp: Date.now() };
34
+ return out;
35
+ };
36
+ exports.listIosSimulators = listIosSimulators;
37
+ const listAndroidDevices = async (runner) => {
38
+ if (androidCache && Date.now() - androidCache.timestamp < CACHE_TTL_MS) {
39
+ return androidCache.result;
40
+ }
41
+ const proc = await runner('adb', ['devices'], { timeoutMs: LIST_TIMEOUT_MS });
42
+ if (proc.exitCode !== 0) {
43
+ throw new Error(`adb devices failed (exit ${proc.exitCode}): ${proc.stderr.toString('utf8').trim().slice(0, 500)}`);
44
+ }
45
+ const lines = proc.stdout.toString('utf8').split('\n');
46
+ const out = [];
47
+ for (const raw of lines.slice(1)) {
48
+ const line = raw.trim();
49
+ if (!line) {
50
+ continue;
51
+ }
52
+ const match = line.match(/^(\S+)\s+(\S+)\s*$/);
53
+ if (match?.[1] && match[2]) {
54
+ out.push({ serial: match[1], state: match[2] });
55
+ }
56
+ }
57
+ androidCache = { result: out, timestamp: Date.now() };
58
+ return out;
59
+ };
60
+ exports.listAndroidDevices = listAndroidDevices;
61
+ const matchIosSimByClient = (sims, client) => {
62
+ const bootedIos = sims.filter((s) => {
63
+ return s.state === 'Booted';
64
+ });
65
+ if (bootedIos.length === 0) {
66
+ return null;
67
+ }
68
+ if (!client.label) {
69
+ return bootedIos.length === 1 ? bootedIos[0] : null;
70
+ }
71
+ const label = client.label;
72
+ const exact = bootedIos.filter((s) => {
73
+ return s.name === label;
74
+ });
75
+ if (exact.length === 1) {
76
+ return exact[0];
77
+ }
78
+ const substring = bootedIos.filter((s) => {
79
+ return s.name.includes(label);
80
+ });
81
+ if (substring.length === 1) {
82
+ return substring[0];
83
+ }
84
+ if (exact.length === 0 && substring.length === 0 && bootedIos.length === 1) {
85
+ return bootedIos[0];
86
+ }
87
+ return null;
88
+ };
89
+ const matchAndroidDeviceByClient = (devices) => {
90
+ const online = devices.filter((d) => {
91
+ return d.state === 'device';
92
+ });
93
+ return online.length === 1 ? online[0] : null;
94
+ };
95
+ const resolveIosClient = async (client, runner) => {
96
+ try {
97
+ const sims = await (0, exports.listIosSimulators)(runner);
98
+ const matched = matchIosSimByClient(sims, client);
99
+ if (matched) {
100
+ return {
101
+ device: {
102
+ bundleId: client.bundleId,
103
+ displayName: matched.name,
104
+ nativeId: matched.udid,
105
+ platform: 'ios',
106
+ },
107
+ ok: true,
108
+ };
109
+ }
110
+ const bootedList = sims
111
+ .filter((s) => {
112
+ return s.state === 'Booted';
113
+ })
114
+ .map((s) => {
115
+ return `${s.name} (${s.udid})`;
116
+ })
117
+ .join(', ');
118
+ return {
119
+ error: `Cannot resolve iOS client '${client.id}' to a booted simulator. Label hint: "${client.label ?? '(none)'}". Booted sims: ${bootedList || '(none)'}.`,
120
+ ok: false,
121
+ };
122
+ }
123
+ catch (err) {
124
+ if (err instanceof processRunner_1.ProcessNotFoundError) {
125
+ return {
126
+ error: 'xcrun not found. iOS host tools require Xcode command line tools (macOS only).',
127
+ ok: false,
128
+ };
129
+ }
130
+ return {
131
+ error: `Failed to list iOS simulators: ${err.message}`,
132
+ ok: false,
133
+ };
134
+ }
135
+ };
136
+ const resolveAndroidClient = async (client, runner) => {
137
+ try {
138
+ const devices = await (0, exports.listAndroidDevices)(runner);
139
+ const matched = matchAndroidDeviceByClient(devices);
140
+ if (matched) {
141
+ return {
142
+ device: {
143
+ bundleId: client.bundleId,
144
+ displayName: matched.serial,
145
+ nativeId: matched.serial,
146
+ platform: 'android',
147
+ },
148
+ ok: true,
149
+ };
150
+ }
151
+ const onlineList = devices
152
+ .filter((d) => {
153
+ return d.state === 'device';
154
+ })
155
+ .map((d) => {
156
+ return d.serial;
157
+ })
158
+ .join(', ');
159
+ return {
160
+ error: `Cannot resolve Android client '${client.id}' to an online device. Online devices: ${onlineList || '(none)'}.`,
161
+ ok: false,
162
+ };
163
+ }
164
+ catch (err) {
165
+ if (err instanceof processRunner_1.ProcessNotFoundError) {
166
+ return {
167
+ error: 'adb not found. Android host tools require Android platform-tools on PATH.',
168
+ ok: false,
169
+ };
170
+ }
171
+ return {
172
+ error: `Failed to list Android devices: ${err.message}`,
173
+ ok: false,
174
+ };
175
+ }
176
+ };
177
+ const resolveClientToDevice = async (client, runner) => {
178
+ if (client.platform === 'ios') {
179
+ return resolveIosClient(client, runner);
180
+ }
181
+ if (client.platform === 'android') {
182
+ return resolveAndroidClient(client, runner);
183
+ }
184
+ return {
185
+ error: `Client '${client.id}' has unknown platform '${client.platform ?? '(none)'}'. Cannot resolve to a native device.`,
186
+ ok: false,
187
+ };
188
+ };
189
+ const scanIosDevices = async (runner) => {
190
+ try {
191
+ const sims = await (0, exports.listIosSimulators)(runner);
192
+ const booted = sims.filter((s) => {
193
+ return s.state === 'Booted';
194
+ });
195
+ if (booted.length === 0) {
196
+ return {
197
+ error: 'No booted iOS simulator found. Boot one via Simulator.app or `xcrun simctl boot <udid>`.',
198
+ ok: false,
199
+ };
200
+ }
201
+ if (booted.length === 1) {
202
+ const only = booted[0];
203
+ return {
204
+ device: { displayName: only.name, nativeId: only.udid, platform: 'ios' },
205
+ ok: true,
206
+ };
207
+ }
208
+ const list = booted
209
+ .map((s) => {
210
+ return `${s.name} (${s.udid})`;
211
+ })
212
+ .join(', ');
213
+ return {
214
+ error: `Multiple iOS simulators booted: ${list}. Specify clientId or a more precise target.`,
215
+ ok: false,
216
+ };
217
+ }
218
+ catch (err) {
219
+ if (err instanceof processRunner_1.ProcessNotFoundError) {
220
+ return {
221
+ error: 'xcrun not found. iOS host tools require Xcode command line tools (macOS only).',
222
+ ok: false,
223
+ };
224
+ }
225
+ return {
226
+ error: `Failed to list iOS simulators: ${err.message}`,
227
+ ok: false,
228
+ };
229
+ }
230
+ };
231
+ const scanAndroidDevices = async (runner) => {
232
+ try {
233
+ const devices = await (0, exports.listAndroidDevices)(runner);
234
+ const online = devices.filter((d) => {
235
+ return d.state === 'device';
236
+ });
237
+ if (online.length === 0) {
238
+ return {
239
+ error: 'No online Android device found. Start an emulator or connect a device.',
240
+ ok: false,
241
+ };
242
+ }
243
+ if (online.length === 1) {
244
+ const only = online[0];
245
+ return {
246
+ device: {
247
+ displayName: only.serial,
248
+ nativeId: only.serial,
249
+ platform: 'android',
250
+ },
251
+ ok: true,
252
+ };
253
+ }
254
+ const list = online
255
+ .map((d) => {
256
+ return d.serial;
257
+ })
258
+ .join(', ');
259
+ return {
260
+ error: `Multiple Android devices online: ${list}. Specify clientId.`,
261
+ ok: false,
262
+ };
263
+ }
264
+ catch (err) {
265
+ if (err instanceof processRunner_1.ProcessNotFoundError) {
266
+ return {
267
+ error: 'adb not found. Android host tools require Android platform-tools on PATH.',
268
+ ok: false,
269
+ };
270
+ }
271
+ return {
272
+ error: `Failed to list Android devices: ${err.message}`,
273
+ ok: false,
274
+ };
275
+ }
276
+ };
277
+ const resolveIosByUdid = async (udid, runner) => {
278
+ try {
279
+ const sims = await (0, exports.listIosSimulators)(runner);
280
+ const match = sims.find((s) => {
281
+ return s.udid === udid;
282
+ });
283
+ if (!match) {
284
+ const available = sims
285
+ .map((s) => {
286
+ return `${s.udid} (${s.name})`;
287
+ })
288
+ .join(', ') || '(none)';
289
+ return {
290
+ error: `iOS simulator with UDID '${udid}' not found. Available: ${available}`,
291
+ ok: false,
292
+ };
293
+ }
294
+ if (match.state !== 'Booted') {
295
+ return {
296
+ error: `iOS simulator '${match.name}' (${udid}) is in state '${match.state}', not Booted. Boot it first via xcrun simctl boot.`,
297
+ ok: false,
298
+ };
299
+ }
300
+ return {
301
+ device: {
302
+ displayName: match.name,
303
+ nativeId: match.udid,
304
+ platform: 'ios',
305
+ },
306
+ ok: true,
307
+ };
308
+ }
309
+ catch (err) {
310
+ if (err instanceof processRunner_1.ProcessNotFoundError) {
311
+ return {
312
+ error: 'xcrun not found. iOS host tools require Xcode command line tools (macOS only).',
313
+ ok: false,
314
+ };
315
+ }
316
+ return {
317
+ error: `Failed to list iOS simulators: ${err.message}`,
318
+ ok: false,
319
+ };
320
+ }
321
+ };
322
+ const resolveAndroidBySerial = async (serial, runner) => {
323
+ try {
324
+ const devices = await (0, exports.listAndroidDevices)(runner);
325
+ const match = devices.find((d) => {
326
+ return d.serial === serial;
327
+ });
328
+ if (!match) {
329
+ const available = devices
330
+ .map((d) => {
331
+ return d.serial;
332
+ })
333
+ .join(', ') || '(none)';
334
+ return {
335
+ error: `Android device with serial '${serial}' not found. Available: ${available}`,
336
+ ok: false,
337
+ };
338
+ }
339
+ if (match.state !== 'device') {
340
+ return {
341
+ error: `Android device '${serial}' is in state '${match.state}', not 'device' (ready). Wait for boot to complete.`,
342
+ ok: false,
343
+ };
344
+ }
345
+ return {
346
+ device: {
347
+ displayName: match.serial,
348
+ nativeId: match.serial,
349
+ platform: 'android',
350
+ },
351
+ ok: true,
352
+ };
353
+ }
354
+ catch (err) {
355
+ if (err instanceof processRunner_1.ProcessNotFoundError) {
356
+ return {
357
+ error: 'adb not found. Android host tools require Android platform-tools on PATH.',
358
+ ok: false,
359
+ };
360
+ }
361
+ return {
362
+ error: `Failed to list Android devices: ${err.message}`,
363
+ ok: false,
364
+ };
365
+ }
366
+ };
367
+ const scanForDevice = async (platform, runner) => {
368
+ if (platform === 'ios') {
369
+ return scanIosDevices(runner);
370
+ }
371
+ if (platform === 'android') {
372
+ return scanAndroidDevices(runner);
373
+ }
374
+ const iosResult = await scanIosDevices(runner);
375
+ if (iosResult.ok) {
376
+ return iosResult;
377
+ }
378
+ const androidResult = await scanAndroidDevices(runner);
379
+ if (androidResult.ok) {
380
+ return androidResult;
381
+ }
382
+ return {
383
+ error: `No device available. iOS: ${iosResult.error} Android: ${androidResult.error}`,
384
+ ok: false,
385
+ };
386
+ };
387
+ const resolveDevice = async (ctx, options, runner) => {
388
+ // Step 0: explicit native identifier — highest priority, bypasses everything else
389
+ if (options.udid) {
390
+ return resolveIosByUdid(options.udid, runner);
391
+ }
392
+ if (options.serial) {
393
+ return resolveAndroidBySerial(options.serial, runner);
394
+ }
395
+ // Step 1: explicit clientId — resolve it, no bare-scan fallback
396
+ if (ctx.requestedClientId) {
397
+ const client = ctx.bridge.getClient(ctx.requestedClientId);
398
+ if (!client) {
399
+ const available = ctx.bridge
400
+ .listClients()
401
+ .map((c) => {
402
+ return c.id;
403
+ })
404
+ .join(', ') || '(none)';
405
+ return {
406
+ error: `Client '${ctx.requestedClientId}' not connected. Available: ${available}`,
407
+ ok: false,
408
+ };
409
+ }
410
+ return resolveClientToDevice(client, runner);
411
+ }
412
+ // Step 2: exactly one connected client matching the platform filter → auto-pick
413
+ const clients = ctx.bridge.listClients();
414
+ const filtered = options.platform
415
+ ? clients.filter((c) => {
416
+ return c.platform === options.platform;
417
+ })
418
+ : clients;
419
+ if (filtered.length === 1) {
420
+ return resolveClientToDevice(filtered[0], runner);
421
+ }
422
+ // Step 3: multiple matching clients → ambiguous, error
423
+ if (filtered.length > 1) {
424
+ const labels = filtered
425
+ .map((c) => {
426
+ return c.label ? `${c.id} (${c.label})` : c.id;
427
+ })
428
+ .join(', ');
429
+ return {
430
+ error: `Multiple clients connected: ${labels}. Specify clientId.`,
431
+ ok: false,
432
+ };
433
+ }
434
+ // Step 4: no clients matched — fall through to bare platform scan
435
+ return scanForDevice(options.platform, runner);
436
+ };
437
+ exports.resolveDevice = resolveDevice;
438
+ const enrichDevicesWithClientStatus = async (bridge, runner) => {
439
+ const iosPromise = (0, exports.listIosSimulators)(runner)
440
+ .then((sims) => {
441
+ return { ok: true, sims };
442
+ })
443
+ .catch((err) => {
444
+ if (err instanceof processRunner_1.ProcessNotFoundError) {
445
+ return { error: 'xcrun not found', ok: false };
446
+ }
447
+ return { error: err.message, ok: false };
448
+ });
449
+ const androidPromise = (0, exports.listAndroidDevices)(runner)
450
+ .then((devices) => {
451
+ return { devices, ok: true };
452
+ })
453
+ .catch((err) => {
454
+ if (err instanceof processRunner_1.ProcessNotFoundError) {
455
+ return { error: 'adb not found', ok: false };
456
+ }
457
+ return { error: err.message, ok: false };
458
+ });
459
+ const [iosRaw, androidRaw] = await Promise.all([iosPromise, androidPromise]);
460
+ const clients = bridge.listClients();
461
+ const iosClients = clients.filter((c) => {
462
+ return c.platform === 'ios';
463
+ });
464
+ const androidClients = clients.filter((c) => {
465
+ return c.platform === 'android';
466
+ });
467
+ let iosOut;
468
+ if (iosRaw.ok) {
469
+ const enriched = iosRaw.sims.map((sim) => {
470
+ return { ...sim, connected: false };
471
+ });
472
+ for (const client of iosClients) {
473
+ if (!client.label) {
474
+ continue;
475
+ }
476
+ const label = client.label;
477
+ const exact = enriched.filter((s) => {
478
+ return s.state === 'Booted' && !s.connected && s.name === label;
479
+ });
480
+ if (exact.length === 1) {
481
+ exact[0].connected = true;
482
+ exact[0].clientId = client.id;
483
+ continue;
484
+ }
485
+ const substring = enriched.filter((s) => {
486
+ return s.state === 'Booted' && !s.connected && s.name.includes(label);
487
+ });
488
+ if (substring.length === 1) {
489
+ substring[0].connected = true;
490
+ substring[0].clientId = client.id;
491
+ }
492
+ }
493
+ enriched.sort((a, b) => {
494
+ const rank = (item) => {
495
+ if (item.connected) {
496
+ return 0;
497
+ }
498
+ return item.state === 'Booted' ? 1 : 2;
499
+ };
500
+ const aRank = rank(a);
501
+ const bRank = rank(b);
502
+ if (aRank !== bRank) {
503
+ return aRank - bRank;
504
+ }
505
+ if (a.connected && b.connected) {
506
+ return (a.clientId ?? '').localeCompare(b.clientId ?? '');
507
+ }
508
+ return a.name.localeCompare(b.name);
509
+ });
510
+ iosOut = enriched;
511
+ }
512
+ else {
513
+ iosOut = { error: iosRaw.error };
514
+ }
515
+ let androidOut;
516
+ if (androidRaw.ok) {
517
+ const enriched = androidRaw.devices.map((d) => {
518
+ return { ...d, connected: false };
519
+ });
520
+ const onlineIdx = enriched.findIndex((d) => {
521
+ return d.state === 'device';
522
+ });
523
+ const onlineCount = enriched.filter((d) => {
524
+ return d.state === 'device';
525
+ }).length;
526
+ if (onlineCount === 1 && androidClients.length === 1 && onlineIdx >= 0) {
527
+ enriched[onlineIdx].connected = true;
528
+ enriched[onlineIdx].clientId = androidClients[0].id;
529
+ }
530
+ enriched.sort((a, b) => {
531
+ const rank = (item) => {
532
+ if (item.connected) {
533
+ return 0;
534
+ }
535
+ return item.state === 'device' ? 1 : 2;
536
+ };
537
+ const aRank = rank(a);
538
+ const bRank = rank(b);
539
+ if (aRank !== bRank) {
540
+ return aRank - bRank;
541
+ }
542
+ if (a.connected && b.connected) {
543
+ return (a.clientId ?? '').localeCompare(b.clientId ?? '');
544
+ }
545
+ return a.serial.localeCompare(b.serial);
546
+ });
547
+ androidOut = enriched;
548
+ }
549
+ else {
550
+ androidOut = { error: androidRaw.error };
551
+ }
552
+ return { android: androidOut, ios: iosOut };
553
+ };
554
+ exports.enrichDevicesWithClientStatus = enrichDevicesWithClientStatus;
555
+ //# sourceMappingURL=deviceResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceResolver.js","sourceRoot":"","sources":["../../../src/server/host/deviceResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export interface AppTargetError {
2
+ error: string;
3
+ }
4
+ export declare const NATIVE_ID_SCHEMA: {
5
+ readonly serial: {
6
+ readonly description: "Optional explicit adb serial of the target Android device (e.g. \"emulator-5554\"). Highest priority — bypasses clientId and platform-based device selection. Use values from host__list_devices output.";
7
+ readonly type: "string";
8
+ };
9
+ readonly udid: {
10
+ readonly description: "Optional explicit simctl UDID of the target iOS simulator. Highest priority — bypasses clientId and platform-based device selection. Use values from host__list_devices output.";
11
+ readonly type: "string";
12
+ };
13
+ };
14
+ export declare const PLATFORM_ARG_SCHEMA: {
15
+ readonly description: "Optional platform filter: \"ios\" or \"android\". Ignored when clientId is provided on the outer call tool (the client's own platform is used instead).";
16
+ readonly enum: readonly ["android", "ios"];
17
+ readonly type: "string";
18
+ };
19
+ export declare const parsePlatformArg: (value: unknown) => "android" | "ios" | undefined;
20
+ export declare const parseStringArg: (value: unknown) => string | undefined;
21
+ export declare const parseResolveOptions: (args: Record<string, unknown>) => {
22
+ platform?: "android" | "ios";
23
+ serial?: string;
24
+ udid?: string;
25
+ };
26
+ export declare const parseCoord: (value: unknown, name: string) => {
27
+ ok: true;
28
+ value: number;
29
+ } | {
30
+ error: string;
31
+ ok: false;
32
+ };
33
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/server/host/helpers.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;CAWnB,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;CAKtB,CAAC;AAEX,eAAO,MAAM,gBAAgB,UAAW,OAAO,KAAG,SAAS,GAAG,KAAK,GAAG,SAErE,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,OAAO,KAAG,MAAM,GAAG,SAExD,CAAC;AAEF,eAAO,MAAM,mBAAmB,SACxB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B;IAAE,QAAQ,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAMhE,CAAC;AAEF,eAAO,MAAM,UAAU,UACd,OAAO,QACR,MAAM,KACX;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,KAAK,CAAA;CAK1D,CAAC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCoord = exports.parseResolveOptions = exports.parseStringArg = exports.parsePlatformArg = exports.PLATFORM_ARG_SCHEMA = exports.NATIVE_ID_SCHEMA = void 0;
4
+ exports.NATIVE_ID_SCHEMA = {
5
+ serial: {
6
+ description: 'Optional explicit adb serial of the target Android device (e.g. "emulator-5554"). Highest priority — bypasses clientId and platform-based device selection. Use values from host__list_devices output.',
7
+ type: 'string',
8
+ },
9
+ udid: {
10
+ description: 'Optional explicit simctl UDID of the target iOS simulator. Highest priority — bypasses clientId and platform-based device selection. Use values from host__list_devices output.',
11
+ type: 'string',
12
+ },
13
+ };
14
+ exports.PLATFORM_ARG_SCHEMA = {
15
+ description: 'Optional platform filter: "ios" or "android". Ignored when clientId is provided on the outer call tool (the client\'s own platform is used instead).',
16
+ enum: ['android', 'ios'],
17
+ type: 'string',
18
+ };
19
+ const parsePlatformArg = (value) => {
20
+ return value === 'ios' || value === 'android' ? value : undefined;
21
+ };
22
+ exports.parsePlatformArg = parsePlatformArg;
23
+ const parseStringArg = (value) => {
24
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
25
+ };
26
+ exports.parseStringArg = parseStringArg;
27
+ const parseResolveOptions = (args) => {
28
+ return {
29
+ platform: (0, exports.parsePlatformArg)(args.platform),
30
+ serial: (0, exports.parseStringArg)(args.serial),
31
+ udid: (0, exports.parseStringArg)(args.udid),
32
+ };
33
+ };
34
+ exports.parseResolveOptions = parseResolveOptions;
35
+ const parseCoord = (value, name) => {
36
+ if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {
37
+ return { error: `'${name}' must be a non-negative finite number`, ok: false };
38
+ }
39
+ return { ok: true, value: Math.floor(value) };
40
+ };
41
+ exports.parseCoord = parseCoord;
42
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/server/host/helpers.ts"],"names":[],"mappings":";;;AAIa,QAAA,gBAAgB,GAAG;IAC9B,MAAM,EAAE;QACN,WAAW,EACT,wMAAwM;QAC1M,IAAI,EAAE,QAAQ;KACf;IACD,IAAI,EAAE;QACJ,WAAW,EACT,iLAAiL;QACnL,IAAI,EAAE,QAAQ;KACf;CACO,CAAC;AAEE,QAAA,mBAAmB,GAAG;IACjC,WAAW,EACT,sJAAsJ;IACxJ,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;IACxB,IAAI,EAAE,QAAQ;CACN,CAAC;AAEJ,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAAiC,EAAE;IAChF,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B;AAEK,MAAM,cAAc,GAAG,CAAC,KAAc,EAAsB,EAAE;IACnE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB;AAEK,MAAM,mBAAmB,GAAG,CACjC,IAA6B,EACqC,EAAE;IACpE,OAAO;QACL,QAAQ,EAAE,IAAA,wBAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC;QACzC,MAAM,EAAE,IAAA,sBAAc,EAAC,IAAI,CAAC,MAAM,CAAC;QACnC,IAAI,EAAE,IAAA,sBAAc,EAAC,IAAI,CAAC,IAAI,CAAC;KAChC,CAAC;AACJ,CAAC,CAAC;AARW,QAAA,mBAAmB,uBAQ9B;AAEK,MAAM,UAAU,GAAG,CACxB,KAAc,EACd,IAAY,EACgD,EAAE;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACtE,OAAO,EAAE,KAAK,EAAE,IAAI,IAAI,wCAAwC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IAChF,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AAChD,CAAC,CAAC;AARW,QAAA,UAAU,cAQrB"}
@@ -0,0 +1,4 @@
1
+ import { type ProcessRunner } from './processRunner';
2
+ import { type HostModule } from './types';
3
+ export declare const hostModule: (runner: ProcessRunner) => HostModule;
4
+ //# sourceMappingURL=hostModule.d.ts.map