react-native-mcp-kit 2.1.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +29 -13
  2. package/dist/bin/ios-hid +0 -0
  3. package/dist/client/contexts/McpContext/McpProvider.d.ts.map +1 -1
  4. package/dist/client/contexts/McpContext/McpProvider.js +6 -3
  5. package/dist/client/contexts/McpContext/McpProvider.js.map +1 -1
  6. package/dist/modules/alert/alert.d.ts.map +1 -1
  7. package/dist/modules/alert/alert.js +6 -5
  8. package/dist/modules/alert/alert.js.map +1 -1
  9. package/dist/modules/console/console.d.ts.map +1 -1
  10. package/dist/modules/console/console.js +18 -13
  11. package/dist/modules/console/console.js.map +1 -1
  12. package/dist/modules/device/device.d.ts.map +1 -1
  13. package/dist/modules/device/device.js +23 -27
  14. package/dist/modules/device/device.js.map +1 -1
  15. package/dist/modules/errors/errors.d.ts.map +1 -1
  16. package/dist/modules/errors/errors.js +92 -11
  17. package/dist/modules/errors/errors.js.map +1 -1
  18. package/dist/modules/errors/types.d.ts +8 -0
  19. package/dist/modules/errors/types.d.ts.map +1 -1
  20. package/dist/modules/fiberTree/fiberTree.d.ts +4 -0
  21. package/dist/modules/fiberTree/fiberTree.d.ts.map +1 -1
  22. package/dist/modules/fiberTree/fiberTree.js +353 -114
  23. package/dist/modules/fiberTree/fiberTree.js.map +1 -1
  24. package/dist/modules/fiberTree/index.d.ts +1 -0
  25. package/dist/modules/fiberTree/index.d.ts.map +1 -1
  26. package/dist/modules/fiberTree/index.js +14 -1
  27. package/dist/modules/fiberTree/index.js.map +1 -1
  28. package/dist/modules/fiberTree/types.d.ts +40 -0
  29. package/dist/modules/fiberTree/types.d.ts.map +1 -1
  30. package/dist/modules/fiberTree/utils.d.ts +13 -0
  31. package/dist/modules/fiberTree/utils.d.ts.map +1 -1
  32. package/dist/modules/fiberTree/utils.js +195 -23
  33. package/dist/modules/fiberTree/utils.js.map +1 -1
  34. package/dist/modules/i18next/i18next.d.ts.map +1 -1
  35. package/dist/modules/i18next/i18next.js +30 -16
  36. package/dist/modules/i18next/i18next.js.map +1 -1
  37. package/dist/modules/index.d.ts +1 -0
  38. package/dist/modules/index.d.ts.map +1 -1
  39. package/dist/modules/index.js +3 -1
  40. package/dist/modules/index.js.map +1 -1
  41. package/dist/modules/logBox/index.d.ts +2 -0
  42. package/dist/modules/logBox/index.d.ts.map +1 -0
  43. package/dist/modules/logBox/index.js +6 -0
  44. package/dist/modules/logBox/index.js.map +1 -0
  45. package/dist/modules/logBox/logBox.d.ts +3 -0
  46. package/dist/modules/logBox/logBox.d.ts.map +1 -0
  47. package/dist/modules/logBox/logBox.js +234 -0
  48. package/dist/modules/logBox/logBox.js.map +1 -0
  49. package/dist/modules/navigation/navigation.d.ts.map +1 -1
  50. package/dist/modules/navigation/navigation.js +130 -42
  51. package/dist/modules/navigation/navigation.js.map +1 -1
  52. package/dist/modules/network/network.d.ts.map +1 -1
  53. package/dist/modules/network/network.js +262 -67
  54. package/dist/modules/network/network.js.map +1 -1
  55. package/dist/modules/network/types.d.ts +35 -3
  56. package/dist/modules/network/types.d.ts.map +1 -1
  57. package/dist/modules/reactQuery/reactQuery.d.ts.map +1 -1
  58. package/dist/modules/reactQuery/reactQuery.js +25 -15
  59. package/dist/modules/reactQuery/reactQuery.js.map +1 -1
  60. package/dist/modules/storage/storage.d.ts.map +1 -1
  61. package/dist/modules/storage/storage.js +23 -16
  62. package/dist/modules/storage/storage.js.map +1 -1
  63. package/dist/server/host/hostModule.d.ts.map +1 -1
  64. package/dist/server/host/hostModule.js +19 -1
  65. package/dist/server/host/hostModule.js.map +1 -1
  66. package/dist/server/host/tools/capture.d.ts.map +1 -1
  67. package/dist/server/host/tools/capture.js +111 -28
  68. package/dist/server/host/tools/capture.js.map +1 -1
  69. package/dist/server/host/tools/devices.js +1 -1
  70. package/dist/server/host/tools/devices.js.map +1 -1
  71. package/dist/server/host/tools/input.d.ts +3 -0
  72. package/dist/server/host/tools/input.d.ts.map +1 -1
  73. package/dist/server/host/tools/input.js +197 -5
  74. package/dist/server/host/tools/input.js.map +1 -1
  75. package/dist/server/host/tools/lifecycle.d.ts.map +1 -1
  76. package/dist/server/host/tools/lifecycle.js +5 -4
  77. package/dist/server/host/tools/lifecycle.js.map +1 -1
  78. package/dist/server/host/tools/symbolicate.d.ts +3 -0
  79. package/dist/server/host/tools/symbolicate.d.ts.map +1 -0
  80. package/dist/server/host/tools/symbolicate.js +199 -0
  81. package/dist/server/host/tools/symbolicate.js.map +1 -0
  82. package/dist/server/host/tools/tapFiber.d.ts +3 -0
  83. package/dist/server/host/tools/tapFiber.d.ts.map +1 -0
  84. package/dist/server/host/tools/tapFiber.js +89 -0
  85. package/dist/server/host/tools/tapFiber.js.map +1 -0
  86. package/dist/server/host/types.d.ts +14 -0
  87. package/dist/server/host/types.d.ts.map +1 -1
  88. package/dist/server/mcpServer.d.ts +6 -0
  89. package/dist/server/mcpServer.d.ts.map +1 -1
  90. package/dist/server/mcpServer.js +456 -94
  91. package/dist/server/mcpServer.js.map +1 -1
  92. package/package.json +20 -4
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tapFiberTool = void 0;
4
+ const protocol_1 = require("../../../shared/protocol");
5
+ const TAP_FIBER_TIMEOUT_MS = 10_000;
6
+ const tapFiberTool = () => {
7
+ return {
8
+ description: `The canonical way to simulate a user tap — locates a fiber via fiber_tree__query and taps its center through the real OS gesture pipeline, so Pressable feedback, gesture responders, and hit-test run as under a real finger. One call instead of query + host__tap.
9
+
10
+ Requires exactly one resolved match after the chain. Pass \`index\` when the chain legitimately yields multiple and you want the Nth (0-based). When ambiguous without \`index\`, returns a candidate list with bounds so you can narrow \`steps\` or pick an index.
11
+
12
+ Returns { tapped: true, mcpId?, name, testID?, bounds, device } on success.
13
+ On ambiguity: { error: "N matches...", candidates: [...], total }.
14
+ On no match: { error: "no match for given steps", total: 0 }.
15
+ On unmounted: { error: "fiber has no measurable host view", mcpId?, name }.`,
16
+ handler: async (args, ctx) => {
17
+ const steps = args.steps;
18
+ if (!Array.isArray(steps) || steps.length === 0) {
19
+ return { error: 'tap_fiber requires a non-empty `steps` array.' };
20
+ }
21
+ const clientId = args.clientId ?? ctx.requestedClientId;
22
+ const index = args.index;
23
+ const queryResult = await ctx.dispatch(`fiber_tree${protocol_1.MODULE_SEPARATOR}query`, { limit: 10, select: ['bounds', 'mcpId', 'name', 'testID'], steps }, clientId);
24
+ if (!queryResult.ok) {
25
+ return { error: `fiber_tree__query failed: ${queryResult.error}` };
26
+ }
27
+ const result = queryResult.result;
28
+ const matches = result.matches ?? [];
29
+ if (matches.length === 0) {
30
+ return { error: 'no match for given steps', total: result.total ?? 0 };
31
+ }
32
+ if (matches.length > 1 && typeof index !== 'number') {
33
+ return {
34
+ candidates: matches.map((m) => {
35
+ return {
36
+ bounds: m.bounds ?? null,
37
+ mcpId: m.mcpId,
38
+ name: m.name,
39
+ testID: m.testID,
40
+ };
41
+ }),
42
+ error: `${matches.length} matches — pass \`index\` or narrow \`steps\`.`,
43
+ total: result.total ?? matches.length,
44
+ };
45
+ }
46
+ const pick = matches[typeof index === 'number' ? index : 0];
47
+ if (!pick) {
48
+ return { error: `index ${index} out of range (have ${matches.length}).` };
49
+ }
50
+ if (!pick.bounds) {
51
+ return {
52
+ error: 'fiber has no measurable host view — likely unmounted / virtualized.',
53
+ mcpId: pick.mcpId,
54
+ name: pick.name,
55
+ };
56
+ }
57
+ const tapResult = await ctx.dispatch(`host${protocol_1.MODULE_SEPARATOR}tap`, { x: pick.bounds.centerX, y: pick.bounds.centerY }, clientId);
58
+ if (!tapResult.ok) {
59
+ return { error: `host__tap failed: ${tapResult.error}` };
60
+ }
61
+ return {
62
+ bounds: pick.bounds,
63
+ device: tapResult.result.device,
64
+ mcpId: pick.mcpId,
65
+ name: pick.name,
66
+ tapped: true,
67
+ testID: pick.testID,
68
+ };
69
+ },
70
+ inputSchema: {
71
+ clientId: {
72
+ description: 'Target client ID (optional when one client is connected).',
73
+ type: 'string',
74
+ },
75
+ index: {
76
+ description: 'Pick the Nth match when the chain returns multiple (0-based).',
77
+ type: 'number',
78
+ },
79
+ steps: {
80
+ description: 'Same shape as fiber_tree__query steps — ordered criteria + optional scope.',
81
+ examples: [[{ testID: 'searchBar' }], [{ name: 'HomeScreen' }, { testID: 'addToCartBtn' }]],
82
+ type: 'array',
83
+ },
84
+ },
85
+ timeout: TAP_FIBER_TIMEOUT_MS,
86
+ };
87
+ };
88
+ exports.tapFiberTool = tapFiberTool;
89
+ //# sourceMappingURL=tapFiber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tapFiber.js","sourceRoot":"","sources":["../../../../src/server/host/tools/tapFiber.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,20 @@
1
1
  import { type Bridge } from '../../server/bridge';
2
+ /**
3
+ * Dispatch another tool (host or client module) by full name. Host tools like
4
+ * tap_fiber use it to chain fiber_tree__query + host__tap without the agent
5
+ * needing a round-trip. Returns raw handler result on success or a reason on
6
+ * failure — the caller decides how to surface it.
7
+ */
8
+ export type HostDispatch = (tool: string, args: Record<string, unknown>, clientId?: string) => Promise<{
9
+ ok: true;
10
+ result: unknown;
11
+ } | {
12
+ error: string;
13
+ ok: false;
14
+ }>;
2
15
  export interface HostContext {
3
16
  bridge: Bridge;
17
+ dispatch: HostDispatch;
4
18
  requestedClientId?: string;
5
19
  }
6
20
  export interface HostToolHandler {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/host/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/host/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,CAAC,EAAE,MAAM,KACd,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAE3E,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -8,6 +8,12 @@ export declare class McpServerWrapper {
8
8
  constructor(bridge: Bridge, hostModules?: HostModule[]);
9
9
  start(): Promise<void>;
10
10
  private registerTools;
11
+ /**
12
+ * Execute a single tool by full name, returning the raw handler result.
13
+ * Used by both the `call` tool and meta-tools like `wait_until` that need to
14
+ * invoke other tools without going through the full MCP content wrapping.
15
+ */
16
+ private dispatchTool;
11
17
  private buildToolGroups;
12
18
  private formatResult;
13
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcpServer.d.ts","sourceRoot":"","sources":["../../src/server/mcpServer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,MAAM,EAAoB,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,KAAK,UAAU,EAAwB,MAAM,cAAc,CAAC;AAgIrE,qBAAa,gBAAgB;IAMzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,GAAG,CAAY;gBAGJ,MAAM,EAAE,MAAM,EAC/B,WAAW,GAAE,UAAU,EAAO;IAuB1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,OAAO,CAAC,aAAa;IA4gBrB,OAAO,CAAC,eAAe;IAyCvB,OAAO,CAAC,YAAY;CAerB"}
1
+ {"version":3,"file":"mcpServer.d.ts","sourceRoot":"","sources":["../../src/server/mcpServer.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,MAAM,EAAoB,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,KAAK,UAAU,EAAwB,MAAM,cAAc,CAAC;AAgSrE,qBAAa,gBAAgB;IAMzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,GAAG,CAAY;gBAGJ,MAAM,EAAE,MAAM,EAC/B,WAAW,GAAE,UAAU,EAAO;IAuB1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,OAAO,CAAC,aAAa;IA8oBrB;;;;OAIG;YACW,YAAY;IAkG1B,OAAO,CAAC,eAAe;IAyCvB,OAAO,CAAC,YAAY;CAiBrB"}