react-native-mcp-kit 2.3.1 → 3.0.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 (60) hide show
  1. package/README.md +12 -7
  2. package/dist/babel/stripPlugin.d.ts.map +1 -1
  3. package/dist/babel/stripPlugin.js +18 -3
  4. package/dist/babel/stripPlugin.js.map +1 -1
  5. package/dist/babel/testIdPlugin.d.ts.map +1 -1
  6. package/dist/babel/testIdPlugin.js +466 -7
  7. package/dist/babel/testIdPlugin.js.map +1 -1
  8. package/dist/bin/ios-hid +0 -0
  9. package/dist/client/contexts/McpContext/McpProvider.d.ts.map +1 -1
  10. package/dist/client/contexts/McpContext/McpProvider.js +0 -6
  11. package/dist/client/contexts/McpContext/McpProvider.js.map +1 -1
  12. package/dist/client/contexts/McpContext/types.d.ts +0 -2
  13. package/dist/client/contexts/McpContext/types.d.ts.map +1 -1
  14. package/dist/client/core/McpClient.d.ts +0 -2
  15. package/dist/client/core/McpClient.d.ts.map +1 -1
  16. package/dist/client/core/McpClient.js +1 -17
  17. package/dist/client/core/McpClient.js.map +1 -1
  18. package/dist/client/index.d.ts +0 -1
  19. package/dist/client/index.d.ts.map +1 -1
  20. package/dist/client/index.js +1 -3
  21. package/dist/client/index.js.map +1 -1
  22. package/dist/index.d.ts +2 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/modules/fiberTree/fiberTree.d.ts +17 -0
  27. package/dist/modules/fiberTree/fiberTree.d.ts.map +1 -1
  28. package/dist/modules/fiberTree/fiberTree.js +554 -2
  29. package/dist/modules/fiberTree/fiberTree.js.map +1 -1
  30. package/dist/modules/fiberTree/utils.d.ts +1 -0
  31. package/dist/modules/fiberTree/utils.d.ts.map +1 -1
  32. package/dist/modules/fiberTree/utils.js +7 -6
  33. package/dist/modules/fiberTree/utils.js.map +1 -1
  34. package/dist/server/bridge.d.ts +0 -1
  35. package/dist/server/bridge.d.ts.map +1 -1
  36. package/dist/server/bridge.js +0 -15
  37. package/dist/server/bridge.js.map +1 -1
  38. package/dist/server/canonicalize.d.ts +8 -0
  39. package/dist/server/canonicalize.d.ts.map +1 -0
  40. package/dist/server/canonicalize.js +23 -0
  41. package/dist/server/canonicalize.js.map +1 -0
  42. package/dist/server/host/tools/connectionStatus.d.ts +9 -0
  43. package/dist/server/host/tools/connectionStatus.d.ts.map +1 -0
  44. package/dist/server/host/tools/connectionStatus.js +39 -0
  45. package/dist/server/host/tools/connectionStatus.js.map +1 -0
  46. package/dist/server/index.d.ts.map +1 -1
  47. package/dist/server/index.js +35 -2
  48. package/dist/server/index.js.map +1 -1
  49. package/dist/server/inputSchemaToZod.d.ts +19 -0
  50. package/dist/server/inputSchemaToZod.d.ts.map +1 -0
  51. package/dist/server/inputSchemaToZod.js +89 -0
  52. package/dist/server/inputSchemaToZod.js.map +1 -0
  53. package/dist/server/mcpServer.d.ts.map +1 -1
  54. package/dist/server/mcpServer.js +3 -86
  55. package/dist/server/mcpServer.js.map +1 -1
  56. package/dist/shared/protocol.d.ts +9 -10
  57. package/dist/shared/protocol.d.ts.map +1 -1
  58. package/dist/shared/protocol.js +9 -1
  59. package/dist/shared/protocol.js.map +1 -1
  60. package/package.json +1 -1
@@ -10,17 +10,370 @@ const DEFAULT_EXCLUDE = [
10
10
  'StrictMode',
11
11
  'Suspense',
12
12
  ];
13
+ // Map of built-in React hook names → agent-friendly `kind` labels. Anything
14
+ // matching `/^use[A-Z]/` that is NOT in this table is treated as "Custom".
15
+ const HOOK_KIND = {
16
+ useCallback: 'Callback',
17
+ useContext: 'Context',
18
+ useDebugValue: 'DebugValue',
19
+ useDeferredValue: 'DeferredValue',
20
+ useEffect: 'Effect',
21
+ useId: 'Id',
22
+ useImperativeHandle: 'ImperativeHandle',
23
+ useInsertionEffect: 'InsertionEffect',
24
+ useLayoutEffect: 'LayoutEffect',
25
+ useMemo: 'Memo',
26
+ useReducer: 'Reducer',
27
+ useRef: 'Ref',
28
+ useState: 'State',
29
+ useSyncExternalStore: 'SyncExternalStore',
30
+ useTransition: 'Transition',
31
+ };
32
+ // Cheap, conservative component detector: the binding name starts with a
33
+ // capital letter and the function body mentions JSX somewhere. Covers
34
+ // `function LoginForm() { return <View />; }` and
35
+ // `const LoginForm = (props) => <View />;`. HOC-wrapped components
36
+ // (memo / forwardRef / observer) are handled in `VariableDeclarator` by
37
+ // unwrapping the call expression first via `findInnerFunctionBodyPath`.
38
+ const isCapitalized = (name) => {
39
+ return (!!name &&
40
+ name.length > 0 &&
41
+ name[0] === name[0]?.toUpperCase() &&
42
+ name[0] !== name[0]?.toLowerCase());
43
+ };
44
+ /**
45
+ * Walk a function body collecting hook-call metadata in source order. Names
46
+ * come from the consuming binding:
47
+ * const [count, setCount] = useState(0) → "count"
48
+ * const memoValue = useMemo(...) → "memoValue"
49
+ * useEffect(...) → "effect:<index>"
50
+ * The `kind` is taken from HOOK_KIND for built-ins, or "Custom" for any
51
+ * other identifier matching `/^use[A-Z]/`.
52
+ */
53
+ const collectHooksInBody = (body, t) => {
54
+ const hooks = [];
55
+ const anonCounters = {};
56
+ body.traverse({
57
+ CallExpression(callPath) {
58
+ const callee = callPath.node.callee;
59
+ // Three call shapes:
60
+ // useState(x) — direct identifier
61
+ // React.useState(x) — MemberExpression (compiled react libs)
62
+ // _React2.useState(x) — MemberExpression (bundler-mangled)
63
+ let hookIdent;
64
+ let isMemberCall = false;
65
+ if (t.isIdentifier(callee)) {
66
+ hookIdent = callee.name;
67
+ }
68
+ else if (t.isMemberExpression(callee) &&
69
+ !callee.computed &&
70
+ t.isIdentifier(callee.property)) {
71
+ hookIdent = callee.property.name;
72
+ isMemberCall = true;
73
+ }
74
+ if (!hookIdent || !/^use[A-Z]/.test(hookIdent))
75
+ return;
76
+ const kind = HOOK_KIND[hookIdent] ?? 'Custom';
77
+ // Resolve hook name from the consuming binding when possible.
78
+ let hookName;
79
+ const parent = callPath.parent;
80
+ if (t.isVariableDeclarator(parent)) {
81
+ const id = parent.id;
82
+ if (t.isIdentifier(id)) {
83
+ hookName = id.name;
84
+ }
85
+ else if (t.isArrayPattern(id)) {
86
+ // const [value, setter] = useState(0) → pick the first binding
87
+ const first = id.elements[0];
88
+ if (first && t.isIdentifier(first)) {
89
+ hookName = first.name;
90
+ }
91
+ }
92
+ else if (t.isObjectPattern(id)) {
93
+ // const { foo } = useCustomHook() — rare, name it after the first key
94
+ const firstProp = id.properties[0];
95
+ if (firstProp && t.isObjectProperty(firstProp) && t.isIdentifier(firstProp.key)) {
96
+ hookName = firstProp.key.name;
97
+ }
98
+ }
99
+ }
100
+ if (!hookName) {
101
+ // Naked hook call (typical for useEffect). Generate a positional name
102
+ // keyed by the hook kind so "effect:0" / "effect:1" don't collide
103
+ // with state hooks if user has multiple effects.
104
+ const counterKey = kind.toLowerCase();
105
+ const index = anonCounters[counterKey] ?? 0;
106
+ anonCounters[counterKey] = index + 1;
107
+ hookName = `${counterKey}:${index}`;
108
+ }
109
+ const entry = { hook: hookIdent, kind, name: hookName };
110
+ if (kind === 'Custom' && !isMemberCall) {
111
+ // Only attach a function reference for direct-identifier calls where
112
+ // we can verify the binding is module-scoped (import / top-level
113
+ // const/let/var/function). MemberExpression calls (React.useX) are
114
+ // always built-in hooks anyway — kind ends up mapped, no expansion
115
+ // needed. Local/parameter names would throw ReferenceError at the
116
+ // injection site (which is module-level).
117
+ const binding = callPath.scope.getBinding(hookIdent);
118
+ if (binding && binding.scope.block.type === 'Program') {
119
+ entry.fnIdent = hookIdent;
120
+ }
121
+ }
122
+ hooks.push(entry);
123
+ },
124
+ Function(innerPath) {
125
+ // Don't descend into nested functions — their hooks are not this
126
+ // component's hooks. `useCallback(() => {...})` is still traversed
127
+ // because the wrapper call is a call expression visited before we
128
+ // skip into the body (we only skip the nested function's own
129
+ // declaration/body traversal).
130
+ innerPath.skip();
131
+ },
132
+ });
133
+ return hooks;
134
+ };
135
+ const buildHooksArrayExpr = (hooks, t) => {
136
+ return t.arrayExpression(hooks.map((h) => {
137
+ const props = [
138
+ t.objectProperty(t.identifier('name'), t.stringLiteral(h.name)),
139
+ t.objectProperty(t.identifier('kind'), t.stringLiteral(h.kind)),
140
+ t.objectProperty(t.identifier('hook'), t.stringLiteral(h.hook)),
141
+ ];
142
+ if (h.fnIdent) {
143
+ // fn: useAuth (runtime reads .__mcp_hooks off this identifier)
144
+ props.push(t.objectProperty(t.identifier('fn'), t.identifier(h.fnIdent)));
145
+ }
146
+ return t.objectExpression(props);
147
+ }));
148
+ };
149
+ // Build:
150
+ // try {
151
+ // Object.defineProperty(Outer, '__mcp_hooks', {
152
+ // configurable: true,
153
+ // get: () => Inner.__mcp_hooks,
154
+ // });
155
+ // } catch {}
156
+ // Used for the identifier-ref HOC case (`const Outer = memo(Inner)`) where
157
+ // we can't statically collect hooks from the wrapped function. The getter
158
+ // forwards to the inner binding's metadata at read time, sidestepping
159
+ // declaration order, hoisting, scope, and custom-HOC return shape.
160
+ //
161
+ // The try/catch is mandatory: the HOC's return value is statically unknown
162
+ // — it could be a primitive (number / string), `null`/`undefined`, or a
163
+ // frozen / sealed object. Any of those make `Object.defineProperty` throw
164
+ // `TypeError` in strict mode (which ES modules always are). A throw at
165
+ // module-init kills the bundle. Swallowing here is harmless: the worst
166
+ // outcome is metadata not being attached to that one binding, exactly as
167
+ // if the plugin had skipped it.
168
+ const buildHooksGetterStmt = (outer, inner, t) => {
169
+ const defineCall = t.expressionStatement(t.callExpression(t.memberExpression(t.identifier('Object'), t.identifier('defineProperty')), [
170
+ t.identifier(outer),
171
+ t.stringLiteral('__mcp_hooks'),
172
+ t.objectExpression([
173
+ t.objectProperty(t.identifier('configurable'), t.booleanLiteral(true)),
174
+ t.objectProperty(t.identifier('get'), t.arrowFunctionExpression([], t.memberExpression(t.identifier(inner), t.identifier('__mcp_hooks')))),
175
+ ]),
176
+ ]));
177
+ // Optional-catch-binding (ES2019): `catch {}` — supported by Hermes.
178
+ return t.tryStatement(t.blockStatement([defineCall]), t.catchClause(null, t.blockStatement([])));
179
+ };
180
+ // Build the `ComponentName.__mcp_hooks = [...]` statement. Used at
181
+ // `Program:exit` time when we drain the deferred queue.
182
+ const buildAssignmentStmt = (componentName, hooks, t) => {
183
+ return t.expressionStatement(t.assignmentExpression('=', t.memberExpression(t.identifier(componentName), t.identifier('__mcp_hooks')), buildHooksArrayExpr(hooks, t)));
184
+ };
185
+ // Queue a `ComponentName.__mcp_hooks = [...]` insertion for `Program:exit`.
186
+ // Inserting during the main traversal is unsafe: react-refresh's babel
187
+ // plugin replaces HOC-wrapped function expressions via `replaceWith`, which
188
+ // re-traverses the rebuilt subtree and (in our experience) drops sibling
189
+ // statements we'd inserted via `insertAfter` on the original declarator.
190
+ // Deferring to `Program:exit` keeps our writes visible to the final output
191
+ // without interfering with replaceWith semantics.
192
+ const queueHooksAssignment = (state, statementPath, componentName, hooks) => {
193
+ if (hooks.length === 0)
194
+ return;
195
+ const queue = (state.pendingInjects ??= []);
196
+ queue.push({ hooks, kind: 'assignment', outer: componentName, statementPath });
197
+ };
198
+ const queueHooksGetter = (state, statementPath, outer, inner) => {
199
+ const queue = (state.pendingInjects ??= []);
200
+ queue.push({ inner, kind: 'getter', outer, statementPath });
201
+ };
202
+ // Heuristic: the function body must reference JSX. Otherwise it's just a
203
+ // plain capitalized helper that happens to share the naming convention.
204
+ const bodyUsesJSX = (bodyPath) => {
205
+ let uses = false;
206
+ bodyPath.traverse({
207
+ JSXElement() {
208
+ uses = true;
209
+ },
210
+ JSXFragment() {
211
+ uses = true;
212
+ },
213
+ });
214
+ return uses;
215
+ };
216
+ // Is this a candidate custom hook definition? Name matches `use[A-Z]...`
217
+ // and the body contains at least one built-in or custom hook call. Matches
218
+ // userland hooks AND library hook sources that happen to pass through our
219
+ // babel transform (Metro runs plugins on node_modules by default).
220
+ const isCustomHookName = (name) => {
221
+ return !!name && /^use[A-Z]/.test(name);
222
+ };
223
+ // Recognize callee shapes that look like an HOC application without locking
224
+ // to a hardcoded name list. Two shapes pass:
225
+ // 1. `memo(fn)` / `forwardRef(fn)` / `withAuth(fn)` — bare Identifier callee.
226
+ // 2. `React.memo(fn)` / `Mobx.observer(fn)` — MemberExpression where the
227
+ // object identifier resolves to a module (import) binding. This rules
228
+ // out `arr.map(fn)` and similar local-method calls, which would
229
+ // otherwise produce harmless-but-noisy metadata on a non-component
230
+ // binding. Property access on a deep chain (`a.b.c(fn)`) is rejected.
231
+ const isLikelyHocCallee = (callPath, t) => {
232
+ const callee = callPath.node.callee;
233
+ if (t.isIdentifier(callee))
234
+ return true;
235
+ if (t.isMemberExpression(callee) &&
236
+ !callee.computed &&
237
+ t.isIdentifier(callee.property) &&
238
+ t.isIdentifier(callee.object)) {
239
+ const binding = callPath.scope.getBinding(callee.object.name);
240
+ return !!binding && binding.kind === 'module';
241
+ }
242
+ return false;
243
+ };
244
+ // Walk down a CallExpression chain (`memo(forwardRef(...))`,
245
+ // `withAuth(observer(...))`, etc.) to whatever the chain bottoms out at.
246
+ // Returns null if no unwrap happened (the start was not a recognized HOC
247
+ // chain). Each link must look like a plausible HOC application via
248
+ // `isLikelyHocCallee`, so non-HOC calls that happen to take a function
249
+ // argument (e.g. `arr.map(fn)`) don't trigger metadata attachment on the
250
+ // outer binding.
251
+ //
252
+ // Transparently steps through `AssignmentExpression` and `SequenceExpression`
253
+ // wrappers — react-refresh injects `_c = <fn>` and similar synthetic
254
+ // expression wraps around the inner component during its `VariableDeclaration`
255
+ // enter visitor (which runs before our `VariableDeclarator` visitor). Without
256
+ // the step-through, our unwrap would dead-end at the AssignmentExpression
257
+ // and miss the inner arrow / function expression entirely.
258
+ const unwrapTransparentExpr = (path) => {
259
+ let cur = path;
260
+ // Bound the loop to defend against pathological ASTs.
261
+ for (let i = 0; i < 8; i++) {
262
+ if (cur.isAssignmentExpression() && cur.node.operator === '=') {
263
+ cur = cur.get('right');
264
+ continue;
265
+ }
266
+ if (cur.isSequenceExpression()) {
267
+ const exprs = cur.get('expressions');
268
+ if (exprs.length === 0)
269
+ break;
270
+ cur = exprs[exprs.length - 1];
271
+ continue;
272
+ }
273
+ break;
274
+ }
275
+ return cur;
276
+ };
277
+ const unwrapHocChainToBottom = (startPath, t) => {
278
+ let cur = unwrapTransparentExpr(startPath);
279
+ let unwrapped = false;
280
+ while (cur.isCallExpression() && cur.node.arguments.length > 0 && isLikelyHocCallee(cur, t)) {
281
+ const arg0 = cur.get('arguments.0');
282
+ if (!arg0.node)
283
+ return null;
284
+ cur = unwrapTransparentExpr(arg0);
285
+ unwrapped = true;
286
+ }
287
+ return unwrapped ? cur : null;
288
+ };
289
+ // Two consumers of the unwrap walk:
290
+ // 1. Inline-function case (`memo(() => <JSX />)`) — find the body so we can
291
+ // collect hooks and attach metadata directly to the outer binding.
292
+ // 2. Identifier-ref case (`memo(InnerFn)`) — record `{ outer, inner }` so a
293
+ // deferred copy `Outer.__mcp_hooks = Inner.__mcp_hooks` can be emitted
294
+ // at Program:exit. The inline case can't use the deferred copy approach
295
+ // because there's no name to copy from.
296
+ const findInnerFunctionBodyPath = (startPath, t) => {
297
+ const bottom = unwrapHocChainToBottom(startPath, t);
298
+ if (!bottom)
299
+ return null;
300
+ if (bottom.isArrowFunctionExpression() || bottom.isFunctionExpression()) {
301
+ return bottom.get('body');
302
+ }
303
+ return null;
304
+ };
305
+ const findInnerIdentifier = (startPath, t) => {
306
+ const bottom = unwrapHocChainToBottom(startPath, t);
307
+ if (!bottom)
308
+ return null;
309
+ return bottom.isIdentifier() ? bottom : null;
310
+ };
311
+ const bodyCallsHook = (bodyPath, t) => {
312
+ let hit = false;
313
+ bodyPath.traverse({
314
+ CallExpression(callPath) {
315
+ if (hit)
316
+ return;
317
+ const callee = callPath.node.callee;
318
+ if (t.isIdentifier(callee) && /^use[A-Z]/.test(callee.name)) {
319
+ hit = true;
320
+ return;
321
+ }
322
+ if (t.isMemberExpression(callee) &&
323
+ !callee.computed &&
324
+ t.isIdentifier(callee.property) &&
325
+ /^use[A-Z]/.test(callee.property.name)) {
326
+ hit = true;
327
+ }
328
+ },
329
+ Function(innerPath) {
330
+ innerPath.skip();
331
+ },
332
+ });
333
+ return hit;
334
+ };
13
335
  function testIdPlugin({ types: t }) {
14
336
  return {
15
337
  name: 'react-native-mcp-test-id',
16
338
  visitor: {
339
+ // === Part 2: attach __mcp_hooks metadata. ===
340
+ // Two candidate shapes per function declaration:
341
+ // 1. Component — capitalized name + JSX in body (React component).
342
+ // 2. Custom hook — name matches /^use[A-Z]/ + body contains hook calls.
343
+ // The VariableDeclarator visitor below covers the
344
+ // `const Foo = (...) => {...}` / `const useX = (...) => {...}` forms,
345
+ // plus HOC-wrapped components: `const Foo = anyHoc((props) => <JSX />)`
346
+ // and nested chains thereof.
347
+ FunctionDeclaration(path, state) {
348
+ const id = path.node.id;
349
+ if (!id)
350
+ return;
351
+ const bodyPath = path.get('body');
352
+ const pluginState = state;
353
+ // Component: capitalized name + (JSX in body OR hook calls in body).
354
+ // The hook-call branch covers components that legitimately return
355
+ // null / non-JSX values — portal-like, context-only, or
356
+ // imperative-handle wrappers. Under the Rules of Hooks, only
357
+ // components and custom hooks may call hooks, so a capitalized
358
+ // function that calls them is unambiguously a component.
359
+ if (isCapitalized(id.name) && (bodyUsesJSX(bodyPath) || bodyCallsHook(bodyPath, t))) {
360
+ const hooks = collectHooksInBody(bodyPath, t);
361
+ queueHooksAssignment(pluginState, path, id.name, hooks);
362
+ return;
363
+ }
364
+ // Custom hook: name matches use[A-Z] + body calls at least one hook.
365
+ if (isCustomHookName(id.name) && bodyCallsHook(bodyPath, t)) {
366
+ const hooks = collectHooksInBody(bodyPath, t);
367
+ queueHooksAssignment(pluginState, path, id.name, hooks);
368
+ }
369
+ },
370
+ // === Part 1: stamp data-mcp-id on capitalized JSX elements. ===
17
371
  JSXOpeningElement(path, state) {
18
372
  const opts = (state.opts ?? {});
19
373
  const attrName = opts.attr ?? DEFAULT_ATTR;
20
374
  const separator = opts.separator ?? ':';
21
375
  const exclude = opts.exclude ?? DEFAULT_EXCLUDE;
22
376
  const include = opts.include;
23
- // Get component name
24
377
  const nameNode = path.node.name;
25
378
  let componentName;
26
379
  if (t.isJSXIdentifier(nameNode)) {
@@ -32,15 +385,12 @@ function testIdPlugin({ types: t }) {
32
385
  else {
33
386
  return;
34
387
  }
35
- // Skip lowercase elements
36
388
  if (componentName[0] === componentName[0]?.toLowerCase())
37
389
  return;
38
- // Check include/exclude
39
390
  if (include && !include.includes(componentName))
40
391
  return;
41
392
  if (exclude.includes(componentName))
42
393
  return;
43
- // Get file info
44
394
  const filename = state.filename ?? 'unknown';
45
395
  const relativePath = filename.includes('/src/')
46
396
  ? (filename.split('/src/').pop() ?? filename)
@@ -48,21 +398,130 @@ function testIdPlugin({ types: t }) {
48
398
  const shortFile = relativePath.replace(/\.(tsx?|jsx?)$/, '');
49
399
  const line = path.node.loc?.start.line ?? 0;
50
400
  const generatedId = `${componentName}${separator}${shortFile}${separator}${line}`;
51
- // Check if attr already exists
52
401
  const existingAttr = path.node.attributes.find((attr) => {
53
402
  return t.isJSXAttribute(attr) && t.isJSXIdentifier(attr.name, { name: attrName });
54
403
  });
55
404
  if (existingAttr && t.isJSXAttribute(existingAttr)) {
56
- // Augment existing value with file:line
57
405
  if (t.isStringLiteral(existingAttr.value)) {
58
406
  const existing = existingAttr.value.value;
59
407
  existingAttr.value = t.stringLiteral(`${existing}${separator}${shortFile}${separator}${line}`);
60
408
  }
61
409
  return;
62
410
  }
63
- // Add attribute
64
411
  path.node.attributes.push(t.jsxAttribute(t.jsxIdentifier(attrName), t.stringLiteral(generatedId)));
65
412
  },
413
+ // === Part 3: drain deferred-injection queue at module end. ===
414
+ // Runs after all other plugins' visitors (in particular react-refresh's
415
+ // replaceWith on HOC-wrapped components) have finished mutating the
416
+ // tree. Each queued entry's `statementPath` is the original declaration
417
+ // statement — still valid at this point because none of the upstream
418
+ // plugins replace top-level statements, only their inner expressions.
419
+ // We dedupe by `outer` name to defend against multiple visitor passes
420
+ // queuing the same component twice.
421
+ Program: {
422
+ exit(_programPath, state) {
423
+ const pluginState = state;
424
+ const queue = pluginState.pendingInjects;
425
+ if (!queue || queue.length === 0)
426
+ return;
427
+ const seen = new Set();
428
+ for (const entry of queue) {
429
+ if (seen.has(entry.outer))
430
+ continue;
431
+ seen.add(entry.outer);
432
+ if (!entry.statementPath.node)
433
+ continue; // statement was removed by another pass
434
+ if (entry.kind === 'assignment') {
435
+ entry.statementPath.insertAfter(buildAssignmentStmt(entry.outer, entry.hooks, t));
436
+ }
437
+ else {
438
+ entry.statementPath.insertAfter(buildHooksGetterStmt(entry.outer, entry.inner, t));
439
+ }
440
+ }
441
+ pluginState.pendingInjects = [];
442
+ },
443
+ },
444
+ VariableDeclarator(path, state) {
445
+ const id = path.node.id;
446
+ if (!t.isIdentifier(id))
447
+ return;
448
+ let initNode = path.node.init;
449
+ if (!initNode)
450
+ return;
451
+ const pluginState = state;
452
+ // Unwrap TypeScript casts: `as Foo`, `as const`, `<Foo>x` (legacy
453
+ // angle-bracket assertion), and `x satisfies Foo`. Without this,
454
+ // `const Wrapped = memo(arrow) as { ... }` fails our HOC unwrap
455
+ // because we'd see TSAsExpression instead of the inner CallExpression.
456
+ // Pattern in the wild: 21vek's PageFlashListWithBanner /
457
+ // ListProductRow / RangeFilter use `as` to attach generic call
458
+ // signatures + displayName onto memo'd components.
459
+ let initPathForUnwrap = path.get('init');
460
+ for (let i = 0; i < 4; i++) {
461
+ if (t.isTSAsExpression(initNode) ||
462
+ t.isTSTypeAssertion(initNode) ||
463
+ t.isTSSatisfiesExpression(initNode) ||
464
+ t.isTSNonNullExpression(initNode)) {
465
+ initPathForUnwrap = initPathForUnwrap.get('expression');
466
+ initNode = initPathForUnwrap.node;
467
+ continue;
468
+ }
469
+ break;
470
+ }
471
+ const init = initNode;
472
+ // Resolve the function body to inspect. Three shapes:
473
+ // const Foo = (props) => <JSX /> — direct arrow / fn
474
+ // const Foo = memo((props) => <JSX />) — single-HOC wrap
475
+ // const Foo = memo(forwardRef((p, r) => ...)) — nested HOC chain
476
+ // For HOC wrappers, attaching `Foo.__mcp_hooks = [...]` on the outer
477
+ // binding works because `memo()` / `forwardRef()` return plain JS
478
+ // objects that React stores in `fiber.type` — the runtime read path
479
+ // is identical to the bare-component case. The unwrap is name-
480
+ // agnostic (any Identifier or import-namespaced MemberExpression
481
+ // callee qualifies), so custom HOCs like `withAuth(...)` work too.
482
+ let bodyPath = null;
483
+ if (t.isArrowFunctionExpression(init) || t.isFunctionExpression(init)) {
484
+ bodyPath = initPathForUnwrap.get('body');
485
+ }
486
+ else if (t.isCallExpression(init)) {
487
+ bodyPath = findInnerFunctionBodyPath(initPathForUnwrap, t);
488
+ // Identifier-ref HOC case: `const Foo = memo(InnerFn)`. The inner
489
+ // arg is a name, not an inline function — so we can't statically
490
+ // collect hooks here. Instead, install a getter on `Foo` that
491
+ // forwards to `Inner.__mcp_hooks` at read time.
492
+ if (!bodyPath && isCapitalized(id.name)) {
493
+ const inner = findInnerIdentifier(initPathForUnwrap, t);
494
+ if (inner && inner.scope.getBinding(inner.node.name)) {
495
+ const stmt = path.getStatementParent();
496
+ if (stmt) {
497
+ queueHooksGetter(pluginState, stmt, id.name, inner.node.name);
498
+ }
499
+ }
500
+ }
501
+ }
502
+ if (!bodyPath || !bodyPath.node)
503
+ return;
504
+ // Component: capitalized + (JSX in body OR hook calls). Same
505
+ // rationale as FunctionDeclaration above — Rules of Hooks pin a
506
+ // capitalized hook-calling function to "component", so JSX is
507
+ // sufficient but not necessary (covers `return null` portals).
508
+ if (isCapitalized(id.name) && (bodyUsesJSX(bodyPath) || bodyCallsHook(bodyPath, t))) {
509
+ const hooks = collectHooksInBody(bodyPath, t);
510
+ const statement = path.getStatementParent();
511
+ if (!statement)
512
+ return;
513
+ queueHooksAssignment(pluginState, statement, id.name, hooks);
514
+ return;
515
+ }
516
+ // Custom hook: use[A-Z] + body calls hooks.
517
+ if (isCustomHookName(id.name) && bodyCallsHook(bodyPath, t)) {
518
+ const hooks = collectHooksInBody(bodyPath, t);
519
+ const statement = path.getStatementParent();
520
+ if (!statement)
521
+ return;
522
+ queueHooksAssignment(pluginState, statement, id.name, hooks);
523
+ }
524
+ },
66
525
  },
67
526
  };
68
527
  }
@@ -1 +1 @@
1
- {"version":3,"file":"testIdPlugin.js","sourceRoot":"","sources":["../../src/babel/testIdPlugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testIdPlugin.js","sourceRoot":"","sources":["../../src/babel/testIdPlugin.ts"],"names":[],"mappings":"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"}
package/dist/bin/ios-hid CHANGED
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"McpProvider.d.ts","sourceRoot":"","sources":["../../../../src/client/contexts/McpContext/McpProvider.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAiBtE,eAAO,MAAM,WAAW,8EAQrB,gBAAgB,oGAsElB,CAAC"}
1
+ {"version":3,"file":"McpProvider.d.ts","sourceRoot":"","sources":["../../../../src/client/contexts/McpContext/McpProvider.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAiBtE,eAAO,MAAM,WAAW,8EAQrB,gBAAgB,oGAgElB,CAAC"}
@@ -75,12 +75,6 @@ const McpProvider = ({ children, debug, i18n, modules, navigationRef, queryClien
75
75
  registerTool: (name, tool) => {
76
76
  client.registerTool(name, tool);
77
77
  },
78
- removeState: (key) => {
79
- client.removeState(key);
80
- },
81
- setState: (key, value) => {
82
- client.setState(key, value);
83
- },
84
78
  unregisterTool: (name) => {
85
79
  client.unregisterTool(name);
86
80
  },
@@ -1 +1 @@
1
- {"version":3,"file":"McpProvider.js","sourceRoot":"","sources":["../../../../src/client/contexts/McpContext/McpProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"McpProvider.js","sourceRoot":"","sources":["../../../../src/client/contexts/McpContext/McpProvider.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,6 @@ import { type QueryClientLike } from '../../../modules/reactQuery/types';
6
6
  import { type NamedStorage } from '../../../modules/storage/types';
7
7
  export interface McpContextValue {
8
8
  registerTool: (name: string, tool: ToolHandler) => void;
9
- removeState: (key: string) => void;
10
- setState: (key: string, value: unknown) => void;
11
9
  unregisterTool: (name: string) => void;
12
10
  }
13
11
  export interface McpProviderProps {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/client/contexts/McpContext/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACxD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,CAAC;IAEpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAKhB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/client/contexts/McpContext/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACxD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,CAAC;IAEpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAKhB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B"}
@@ -26,8 +26,6 @@ export declare class McpClient {
26
26
  registerModule(module: McpModule): void;
27
27
  registerModules(modules: McpModule[]): void;
28
28
  registerTool(name: string, tool: ToolHandler): void;
29
- removeState(key: string): void;
30
- setState(key: string, value: unknown): void;
31
29
  unregisterTool(name: string): void;
32
30
  private log;
33
31
  private sendRegistration;
@@ -1 +1 @@
1
- {"version":3,"file":"McpClient.d.ts","sourceRoot":"","sources":["../../../src/client/core/McpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzE,OAAO,EACL,KAAK,aAAa,EAKnB,MAAM,mBAAmB,CAAC;AAkJ3B,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0B;IAEjD,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,YAAY,CAAsB;IAE1C,OAAO;IAuCP,OAAO,CAAC,iBAAiB;IAsBzB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,SAAS,CAAC,EAAE,aAAa,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,SAAS;IA2Bb,MAAM,CAAC,WAAW,IAAI,SAAS;IAS/B,OAAO,IAAI,IAAI;IAMf,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAInC,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAMvC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;IAa3C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IAcnD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQ9B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAS3C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAUlC,OAAO,CAAC,GAAG;IASX,OAAO,CAAC,gBAAgB;CAuBzB"}
1
+ {"version":3,"file":"McpClient.d.ts","sourceRoot":"","sources":["../../../src/client/core/McpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzE,OAAO,EAEL,KAAK,aAAa,EAKnB,MAAM,mBAAmB,CAAC;AAiJ3B,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0B;IAEjD,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,YAAY,CAAsB;IAE1C,OAAO;IAuCP,OAAO,CAAC,iBAAiB;IAsBzB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,SAAS,CAAC,EAAE,aAAa,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,SAAS;IA2Bb,MAAM,CAAC,WAAW,IAAI,SAAS;IAS/B,OAAO,IAAI,IAAI;IAMf,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAInC,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAMvC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;IAa3C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IAcnD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAUlC,OAAO,CAAC,GAAG;IASX,OAAO,CAAC,gBAAgB;CAuBzB"}