react-native-mcp-kit 1.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 (271) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +868 -0
  3. package/dist/babel/index.d.ts +3 -0
  4. package/dist/babel/index.d.ts.map +1 -0
  5. package/dist/babel/index.js +11 -0
  6. package/dist/babel/index.js.map +1 -0
  7. package/dist/babel/stripPlugin.d.ts +5 -0
  8. package/dist/babel/stripPlugin.d.ts.map +1 -0
  9. package/dist/babel/stripPlugin.js +100 -0
  10. package/dist/babel/stripPlugin.js.map +1 -0
  11. package/dist/babel/testIdPlugin.d.ts +5 -0
  12. package/dist/babel/testIdPlugin.d.ts.map +1 -0
  13. package/dist/babel/testIdPlugin.js +69 -0
  14. package/dist/babel/testIdPlugin.js.map +1 -0
  15. package/dist/client/contexts/McpContext/McpContext.d.ts +3 -0
  16. package/dist/client/contexts/McpContext/McpContext.d.ts.map +1 -0
  17. package/dist/client/contexts/McpContext/McpContext.js +6 -0
  18. package/dist/client/contexts/McpContext/McpContext.js.map +1 -0
  19. package/dist/client/contexts/McpContext/McpProvider.d.ts +3 -0
  20. package/dist/client/contexts/McpContext/McpProvider.d.ts.map +1 -0
  21. package/dist/client/contexts/McpContext/McpProvider.js +28 -0
  22. package/dist/client/contexts/McpContext/McpProvider.js.map +1 -0
  23. package/dist/client/contexts/McpContext/index.d.ts +4 -0
  24. package/dist/client/contexts/McpContext/index.d.ts.map +1 -0
  25. package/dist/client/contexts/McpContext/index.js +8 -0
  26. package/dist/client/contexts/McpContext/index.js.map +1 -0
  27. package/dist/client/contexts/McpContext/types.d.ts +12 -0
  28. package/dist/client/contexts/McpContext/types.d.ts.map +1 -0
  29. package/dist/client/contexts/McpContext/types.js +3 -0
  30. package/dist/client/contexts/McpContext/types.js.map +1 -0
  31. package/dist/client/contexts/McpTreeContext/McpTracker.d.ts +10 -0
  32. package/dist/client/contexts/McpTreeContext/McpTracker.d.ts.map +1 -0
  33. package/dist/client/contexts/McpTreeContext/McpTracker.js +101 -0
  34. package/dist/client/contexts/McpTreeContext/McpTracker.js.map +1 -0
  35. package/dist/client/contexts/McpTreeContext/McpTreeContext.d.ts +2 -0
  36. package/dist/client/contexts/McpTreeContext/McpTreeContext.d.ts.map +1 -0
  37. package/dist/client/contexts/McpTreeContext/McpTreeContext.js +6 -0
  38. package/dist/client/contexts/McpTreeContext/McpTreeContext.js.map +1 -0
  39. package/dist/client/contexts/McpTreeContext/McpTreeRegistry.d.ts +16 -0
  40. package/dist/client/contexts/McpTreeContext/McpTreeRegistry.d.ts.map +1 -0
  41. package/dist/client/contexts/McpTreeContext/McpTreeRegistry.js +96 -0
  42. package/dist/client/contexts/McpTreeContext/McpTreeRegistry.js.map +1 -0
  43. package/dist/client/contexts/McpTreeContext/index.d.ts +5 -0
  44. package/dist/client/contexts/McpTreeContext/index.d.ts.map +1 -0
  45. package/dist/client/contexts/McpTreeContext/index.js +10 -0
  46. package/dist/client/contexts/McpTreeContext/index.js.map +1 -0
  47. package/dist/client/contexts/McpTreeContext/types.d.ts +14 -0
  48. package/dist/client/contexts/McpTreeContext/types.d.ts.map +1 -0
  49. package/dist/client/contexts/McpTreeContext/types.js +3 -0
  50. package/dist/client/contexts/McpTreeContext/types.js.map +1 -0
  51. package/dist/client/core/McpClient.d.ts +25 -0
  52. package/dist/client/core/McpClient.d.ts.map +1 -0
  53. package/dist/client/core/McpClient.js +183 -0
  54. package/dist/client/core/McpClient.js.map +1 -0
  55. package/dist/client/hooks/useMcpModule.d.ts +4 -0
  56. package/dist/client/hooks/useMcpModule.d.ts.map +1 -0
  57. package/dist/client/hooks/useMcpModule.js +17 -0
  58. package/dist/client/hooks/useMcpModule.js.map +1 -0
  59. package/dist/client/hooks/useMcpState.d.ts +3 -0
  60. package/dist/client/hooks/useMcpState.d.ts.map +1 -0
  61. package/dist/client/hooks/useMcpState.js +20 -0
  62. package/dist/client/hooks/useMcpState.js.map +1 -0
  63. package/dist/client/hooks/useMcpTool.d.ts +4 -0
  64. package/dist/client/hooks/useMcpTool.d.ts.map +1 -0
  65. package/dist/client/hooks/useMcpTool.js +20 -0
  66. package/dist/client/hooks/useMcpTool.js.map +1 -0
  67. package/dist/client/index.d.ts +8 -0
  68. package/dist/client/index.d.ts.map +1 -0
  69. package/dist/client/index.js +15 -0
  70. package/dist/client/index.js.map +1 -0
  71. package/dist/client/models/types.d.ts +12 -0
  72. package/dist/client/models/types.d.ts.map +1 -0
  73. package/dist/client/models/types.js +3 -0
  74. package/dist/client/models/types.js.map +1 -0
  75. package/dist/client/utils/connection.d.ts +17 -0
  76. package/dist/client/utils/connection.d.ts.map +1 -0
  77. package/dist/client/utils/connection.js +71 -0
  78. package/dist/client/utils/connection.js.map +1 -0
  79. package/dist/client/utils/moduleRunner.d.ts +13 -0
  80. package/dist/client/utils/moduleRunner.d.ts.map +1 -0
  81. package/dist/client/utils/moduleRunner.js +59 -0
  82. package/dist/client/utils/moduleRunner.js.map +1 -0
  83. package/dist/index.d.ts +5 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +25 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/modules/alert/alert.d.ts +3 -0
  88. package/dist/modules/alert/alert.d.ts.map +1 -0
  89. package/dist/modules/alert/alert.js +50 -0
  90. package/dist/modules/alert/alert.js.map +1 -0
  91. package/dist/modules/alert/index.d.ts +2 -0
  92. package/dist/modules/alert/index.d.ts.map +1 -0
  93. package/dist/modules/alert/index.js +6 -0
  94. package/dist/modules/alert/index.js.map +1 -0
  95. package/dist/modules/components/components.d.ts +8 -0
  96. package/dist/modules/components/components.d.ts.map +1 -0
  97. package/dist/modules/components/components.js +315 -0
  98. package/dist/modules/components/components.js.map +1 -0
  99. package/dist/modules/components/index.d.ts +3 -0
  100. package/dist/modules/components/index.d.ts.map +1 -0
  101. package/dist/modules/components/index.js +6 -0
  102. package/dist/modules/components/index.js.map +1 -0
  103. package/dist/modules/components/types.d.ts +18 -0
  104. package/dist/modules/components/types.d.ts.map +1 -0
  105. package/dist/modules/components/types.js +3 -0
  106. package/dist/modules/components/types.js.map +1 -0
  107. package/dist/modules/components/utils.d.ts +18 -0
  108. package/dist/modules/components/utils.d.ts.map +1 -0
  109. package/dist/modules/components/utils.js +386 -0
  110. package/dist/modules/components/utils.js.map +1 -0
  111. package/dist/modules/console/console.d.ts +4 -0
  112. package/dist/modules/console/console.d.ts.map +1 -0
  113. package/dist/modules/console/console.js +176 -0
  114. package/dist/modules/console/console.js.map +1 -0
  115. package/dist/modules/console/index.d.ts +3 -0
  116. package/dist/modules/console/index.d.ts.map +1 -0
  117. package/dist/modules/console/index.js +6 -0
  118. package/dist/modules/console/index.js.map +1 -0
  119. package/dist/modules/console/types.d.ts +13 -0
  120. package/dist/modules/console/types.d.ts.map +1 -0
  121. package/dist/modules/console/types.js +3 -0
  122. package/dist/modules/console/types.js.map +1 -0
  123. package/dist/modules/device/device.d.ts +3 -0
  124. package/dist/modules/device/device.d.ts.map +1 -0
  125. package/dist/modules/device/device.js +182 -0
  126. package/dist/modules/device/device.js.map +1 -0
  127. package/dist/modules/device/index.d.ts +3 -0
  128. package/dist/modules/device/index.d.ts.map +1 -0
  129. package/dist/modules/device/index.js +6 -0
  130. package/dist/modules/device/index.js.map +1 -0
  131. package/dist/modules/device/types.d.ts +24 -0
  132. package/dist/modules/device/types.d.ts.map +1 -0
  133. package/dist/modules/device/types.js +3 -0
  134. package/dist/modules/device/types.js.map +1 -0
  135. package/dist/modules/errors/errors.d.ts +4 -0
  136. package/dist/modules/errors/errors.d.ts.map +1 -0
  137. package/dist/modules/errors/errors.js +133 -0
  138. package/dist/modules/errors/errors.js.map +1 -0
  139. package/dist/modules/errors/index.d.ts +3 -0
  140. package/dist/modules/errors/index.d.ts.map +1 -0
  141. package/dist/modules/errors/index.js +6 -0
  142. package/dist/modules/errors/index.js.map +1 -0
  143. package/dist/modules/errors/types.d.ts +12 -0
  144. package/dist/modules/errors/types.d.ts.map +1 -0
  145. package/dist/modules/errors/types.js +3 -0
  146. package/dist/modules/errors/types.js.map +1 -0
  147. package/dist/modules/fiberTree/fiberTree.d.ts +8 -0
  148. package/dist/modules/fiberTree/fiberTree.d.ts.map +1 -0
  149. package/dist/modules/fiberTree/fiberTree.js +337 -0
  150. package/dist/modules/fiberTree/fiberTree.js.map +1 -0
  151. package/dist/modules/fiberTree/index.d.ts +3 -0
  152. package/dist/modules/fiberTree/index.d.ts.map +1 -0
  153. package/dist/modules/fiberTree/index.js +6 -0
  154. package/dist/modules/fiberTree/index.js.map +1 -0
  155. package/dist/modules/fiberTree/types.d.ts +18 -0
  156. package/dist/modules/fiberTree/types.d.ts.map +1 -0
  157. package/dist/modules/fiberTree/types.js +3 -0
  158. package/dist/modules/fiberTree/types.js.map +1 -0
  159. package/dist/modules/fiberTree/utils.d.ts +18 -0
  160. package/dist/modules/fiberTree/utils.d.ts.map +1 -0
  161. package/dist/modules/fiberTree/utils.js +386 -0
  162. package/dist/modules/fiberTree/utils.js.map +1 -0
  163. package/dist/modules/i18next/i18next.d.ts +4 -0
  164. package/dist/modules/i18next/i18next.d.ts.map +1 -0
  165. package/dist/modules/i18next/i18next.js +133 -0
  166. package/dist/modules/i18next/i18next.js.map +1 -0
  167. package/dist/modules/i18next/index.d.ts +3 -0
  168. package/dist/modules/i18next/index.d.ts.map +1 -0
  169. package/dist/modules/i18next/index.js +6 -0
  170. package/dist/modules/i18next/index.js.map +1 -0
  171. package/dist/modules/i18next/types.d.ts +12 -0
  172. package/dist/modules/i18next/types.d.ts.map +1 -0
  173. package/dist/modules/i18next/types.js +3 -0
  174. package/dist/modules/i18next/types.js.map +1 -0
  175. package/dist/modules/index.d.ts +12 -0
  176. package/dist/modules/index.d.ts.map +1 -0
  177. package/dist/modules/index.js +26 -0
  178. package/dist/modules/index.js.map +1 -0
  179. package/dist/modules/navigation/index.d.ts +3 -0
  180. package/dist/modules/navigation/index.d.ts.map +1 -0
  181. package/dist/modules/navigation/index.js +6 -0
  182. package/dist/modules/navigation/index.js.map +1 -0
  183. package/dist/modules/navigation/navigation.d.ts +4 -0
  184. package/dist/modules/navigation/navigation.d.ts.map +1 -0
  185. package/dist/modules/navigation/navigation.js +240 -0
  186. package/dist/modules/navigation/navigation.js.map +1 -0
  187. package/dist/modules/navigation/types.d.ts +34 -0
  188. package/dist/modules/navigation/types.d.ts.map +1 -0
  189. package/dist/modules/navigation/types.js +3 -0
  190. package/dist/modules/navigation/types.js.map +1 -0
  191. package/dist/modules/network/index.d.ts +3 -0
  192. package/dist/modules/network/index.d.ts.map +1 -0
  193. package/dist/modules/network/index.js +6 -0
  194. package/dist/modules/network/index.js.map +1 -0
  195. package/dist/modules/network/network.d.ts +4 -0
  196. package/dist/modules/network/network.d.ts.map +1 -0
  197. package/dist/modules/network/network.js +276 -0
  198. package/dist/modules/network/network.js.map +1 -0
  199. package/dist/modules/network/types.d.ts +26 -0
  200. package/dist/modules/network/types.d.ts.map +1 -0
  201. package/dist/modules/network/types.js +3 -0
  202. package/dist/modules/network/types.js.map +1 -0
  203. package/dist/modules/reactQuery/index.d.ts +3 -0
  204. package/dist/modules/reactQuery/index.d.ts.map +1 -0
  205. package/dist/modules/reactQuery/index.js +6 -0
  206. package/dist/modules/reactQuery/index.js.map +1 -0
  207. package/dist/modules/reactQuery/reactQuery.d.ts +4 -0
  208. package/dist/modules/reactQuery/reactQuery.d.ts.map +1 -0
  209. package/dist/modules/reactQuery/reactQuery.js +160 -0
  210. package/dist/modules/reactQuery/reactQuery.js.map +1 -0
  211. package/dist/modules/reactQuery/types.d.ts +29 -0
  212. package/dist/modules/reactQuery/types.d.ts.map +1 -0
  213. package/dist/modules/reactQuery/types.js +3 -0
  214. package/dist/modules/reactQuery/types.js.map +1 -0
  215. package/dist/modules/screenshot/index.d.ts +3 -0
  216. package/dist/modules/screenshot/index.d.ts.map +1 -0
  217. package/dist/modules/screenshot/index.js +6 -0
  218. package/dist/modules/screenshot/index.js.map +1 -0
  219. package/dist/modules/screenshot/screenshot.d.ts +4 -0
  220. package/dist/modules/screenshot/screenshot.d.ts.map +1 -0
  221. package/dist/modules/screenshot/screenshot.js +89 -0
  222. package/dist/modules/screenshot/screenshot.js.map +1 -0
  223. package/dist/modules/screenshot/types.d.ts +5 -0
  224. package/dist/modules/screenshot/types.d.ts.map +1 -0
  225. package/dist/modules/screenshot/types.js +3 -0
  226. package/dist/modules/screenshot/types.js.map +1 -0
  227. package/dist/modules/storage/index.d.ts +3 -0
  228. package/dist/modules/storage/index.d.ts.map +1 -0
  229. package/dist/modules/storage/index.js +6 -0
  230. package/dist/modules/storage/index.js.map +1 -0
  231. package/dist/modules/storage/storage.d.ts +4 -0
  232. package/dist/modules/storage/storage.d.ts.map +1 -0
  233. package/dist/modules/storage/storage.js +124 -0
  234. package/dist/modules/storage/storage.js.map +1 -0
  235. package/dist/modules/storage/types.d.ts +11 -0
  236. package/dist/modules/storage/types.d.ts.map +1 -0
  237. package/dist/modules/storage/types.js +3 -0
  238. package/dist/modules/storage/types.js.map +1 -0
  239. package/dist/modules/tree/index.d.ts +2 -0
  240. package/dist/modules/tree/index.d.ts.map +1 -0
  241. package/dist/modules/tree/index.js +6 -0
  242. package/dist/modules/tree/index.js.map +1 -0
  243. package/dist/modules/tree/tree.d.ts +3 -0
  244. package/dist/modules/tree/tree.d.ts.map +1 -0
  245. package/dist/modules/tree/tree.js +274 -0
  246. package/dist/modules/tree/tree.js.map +1 -0
  247. package/dist/server/bridge.d.ts +24 -0
  248. package/dist/server/bridge.d.ts.map +1 -0
  249. package/dist/server/bridge.js +152 -0
  250. package/dist/server/bridge.js.map +1 -0
  251. package/dist/server/cli.d.ts +3 -0
  252. package/dist/server/cli.d.ts.map +1 -0
  253. package/dist/server/cli.js +17 -0
  254. package/dist/server/cli.js.map +1 -0
  255. package/dist/server/index.d.ts +4 -0
  256. package/dist/server/index.d.ts.map +1 -0
  257. package/dist/server/index.js +30 -0
  258. package/dist/server/index.js.map +1 -0
  259. package/dist/server/mcpServer.d.ts +19 -0
  260. package/dist/server/mcpServer.d.ts.map +1 -0
  261. package/dist/server/mcpServer.js +303 -0
  262. package/dist/server/mcpServer.js.map +1 -0
  263. package/dist/server/types.d.ts +12 -0
  264. package/dist/server/types.d.ts.map +1 -0
  265. package/dist/server/types.js +3 -0
  266. package/dist/server/types.js.map +1 -0
  267. package/dist/shared/protocol.d.ts +54 -0
  268. package/dist/shared/protocol.d.ts.map +1 -0
  269. package/dist/shared/protocol.js +8 -0
  270. package/dist/shared/protocol.js.map +1 -0
  271. package/package.json +95 -0
package/dist/index.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.storageModule = exports.screenshotModule = exports.reactQueryModule = exports.networkModule = exports.navigationModule = exports.i18nextModule = exports.errorsModule = exports.deviceModule = exports.consoleModule = exports.fiberTreeModule = exports.alertModule = exports.useMcpTool = exports.useMcpState = exports.useMcpModule = exports.McpProvider = exports.McpContext = exports.McpClient = void 0;
4
+ // Client (safe for React Native)
5
+ var index_1 = require("./client/index");
6
+ Object.defineProperty(exports, "McpClient", { enumerable: true, get: function () { return index_1.McpClient; } });
7
+ Object.defineProperty(exports, "McpContext", { enumerable: true, get: function () { return index_1.McpContext; } });
8
+ Object.defineProperty(exports, "McpProvider", { enumerable: true, get: function () { return index_1.McpProvider; } });
9
+ Object.defineProperty(exports, "useMcpModule", { enumerable: true, get: function () { return index_1.useMcpModule; } });
10
+ Object.defineProperty(exports, "useMcpState", { enumerable: true, get: function () { return index_1.useMcpState; } });
11
+ Object.defineProperty(exports, "useMcpTool", { enumerable: true, get: function () { return index_1.useMcpTool; } });
12
+ // Modules (safe for React Native)
13
+ var index_2 = require("./modules/index");
14
+ Object.defineProperty(exports, "alertModule", { enumerable: true, get: function () { return index_2.alertModule; } });
15
+ Object.defineProperty(exports, "fiberTreeModule", { enumerable: true, get: function () { return index_2.fiberTreeModule; } });
16
+ Object.defineProperty(exports, "consoleModule", { enumerable: true, get: function () { return index_2.consoleModule; } });
17
+ Object.defineProperty(exports, "deviceModule", { enumerable: true, get: function () { return index_2.deviceModule; } });
18
+ Object.defineProperty(exports, "errorsModule", { enumerable: true, get: function () { return index_2.errorsModule; } });
19
+ Object.defineProperty(exports, "i18nextModule", { enumerable: true, get: function () { return index_2.i18nextModule; } });
20
+ Object.defineProperty(exports, "navigationModule", { enumerable: true, get: function () { return index_2.navigationModule; } });
21
+ Object.defineProperty(exports, "networkModule", { enumerable: true, get: function () { return index_2.networkModule; } });
22
+ Object.defineProperty(exports, "reactQueryModule", { enumerable: true, get: function () { return index_2.reactQueryModule; } });
23
+ Object.defineProperty(exports, "screenshotModule", { enumerable: true, get: function () { return index_2.screenshotModule; } });
24
+ Object.defineProperty(exports, "storageModule", { enumerable: true, get: function () { return index_2.storageModule; } });
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,wCAOwB;AANtB,kGAAA,SAAS,OAAA;AACT,mGAAA,UAAU,OAAA;AACV,oGAAA,WAAW,OAAA;AACX,qGAAA,YAAY,OAAA;AACZ,oGAAA,WAAW,OAAA;AACX,mGAAA,UAAU,OAAA;AASZ,kCAAkC;AAClC,yCAYyB;AAXvB,oGAAA,WAAW,OAAA;AACX,wGAAA,eAAe,OAAA;AACf,sGAAA,aAAa,OAAA;AACb,qGAAA,YAAY,OAAA;AACZ,qGAAA,YAAY,OAAA;AACZ,sGAAA,aAAa,OAAA;AACb,yGAAA,gBAAgB,OAAA;AAChB,sGAAA,aAAa,OAAA;AACb,yGAAA,gBAAgB,OAAA;AAChB,yGAAA,gBAAgB,OAAA;AAChB,sGAAA,aAAa,OAAA"}
@@ -0,0 +1,3 @@
1
+ import { type McpModule } from '../../client/models/types';
2
+ export declare const alertModule: () => McpModule;
3
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/modules/alert/alert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAWvD,eAAO,MAAM,WAAW,QAAO,SAmD9B,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.alertModule = void 0;
4
+ const ALERT_TIMEOUT = 60_000;
5
+ const alertModule = () => {
6
+ const getRN = () => {
7
+ // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports
8
+ return require('react-native');
9
+ };
10
+ return {
11
+ description: 'Show native alert dialogs with custom buttons. Returns which button was pressed.',
12
+ name: 'alert',
13
+ tools: {
14
+ show: {
15
+ description: 'Show an alert dialog with custom buttons. Each button can have a style (default, cancel, destructive). Returns the pressed button label and index.',
16
+ handler: (args) => {
17
+ const { Alert } = getRN();
18
+ const rawButtons = args.buttons;
19
+ const buttons = rawButtons
20
+ ? rawButtons.map((b) => {
21
+ return typeof b === 'string' ? { text: b } : b;
22
+ })
23
+ : [{ text: 'OK' }];
24
+ return new Promise((resolve) => {
25
+ Alert.alert(args.title || 'Alert', args.message || '', buttons.map((btn, index) => {
26
+ return {
27
+ onPress: () => {
28
+ resolve({ button: btn.text, index });
29
+ },
30
+ style: btn.style ?? 'default',
31
+ text: btn.text,
32
+ };
33
+ }));
34
+ });
35
+ },
36
+ inputSchema: {
37
+ buttons: {
38
+ description: 'Array of buttons. Each can be a string or {text, style?}. Style: "default", "cancel", "destructive". Default: ["OK"]',
39
+ type: 'array',
40
+ },
41
+ message: { description: 'Alert message body', type: 'string' },
42
+ title: { description: 'Alert title', type: 'string' },
43
+ },
44
+ timeout: ALERT_TIMEOUT,
45
+ },
46
+ },
47
+ };
48
+ };
49
+ exports.alertModule = alertModule;
50
+ //# sourceMappingURL=alert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.js","sourceRoot":"","sources":["../../../src/modules/alert/alert.ts"],"names":[],"mappings":";;;AAEA,MAAM,aAAa,GAAG,MAAM,CAAC;AAStB,MAAM,WAAW,GAAG,GAAc,EAAE;IACzC,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,qGAAqG;QACrG,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,OAAO;QACL,WAAW,EAAE,kFAAkF;QAC/F,IAAI,EAAE,OAAO;QACb,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,WAAW,EACT,oJAAoJ;gBACtJ,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBAChB,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC;oBAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAkD,CAAC;oBAC3E,MAAM,OAAO,GAAkB,UAAU;wBACvC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;4BACnB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;wBACjD,CAAC,CAAC;wBACJ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAErB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;wBAC7B,KAAK,CAAC,KAAK,CACR,IAAI,CAAC,KAAgB,IAAI,OAAO,EAChC,IAAI,CAAC,OAAkB,IAAI,EAAE,EAC9B,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;4BACzB,OAAO;gCACL,OAAO,EAAE,GAAG,EAAE;oCACZ,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gCACvC,CAAC;gCACD,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;gCAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;6BACf,CAAC;wBACJ,CAAC,CAAC,CACH,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,WAAW,EAAE;oBACX,OAAO,EAAE;wBACP,WAAW,EACT,sHAAsH;wBACxH,IAAI,EAAE,OAAO;qBACd;oBACD,OAAO,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC9D,KAAK,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACtD;gBACD,OAAO,EAAE,aAAa;aACvB;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAnDW,QAAA,WAAW,eAmDtB"}
@@ -0,0 +1,2 @@
1
+ export { alertModule } from './alert';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/alert/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.alertModule = void 0;
4
+ var alert_1 = require("./alert");
5
+ Object.defineProperty(exports, "alertModule", { enumerable: true, get: function () { return alert_1.alertModule; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/alert/index.ts"],"names":[],"mappings":";;;AAAA,iCAAsC;AAA7B,oGAAA,WAAW,OAAA"}
@@ -0,0 +1,8 @@
1
+ import { type RefObject } from 'react';
2
+ import { type McpModule } from '../../client/models/types';
3
+ interface ComponentsModuleOptions {
4
+ rootRef?: RefObject<unknown>;
5
+ }
6
+ export declare const componentsModule: (options?: ComponentsModuleOptions) => McpModule;
7
+ export {};
8
+ //# sourceMappingURL=components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/modules/components/components.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAmCvD,UAAU,uBAAuB;IAC/B,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CAC9B;AAED,eAAO,MAAM,gBAAgB,aAAc,uBAAuB,KAAG,SAiTpE,CAAC"}
@@ -0,0 +1,315 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.componentsModule = void 0;
4
+ const utils_1 = require("./utils");
5
+ const DEFAULT_DEPTH = 10;
6
+ const FIND_SCHEMA = {
7
+ index: {
8
+ description: 'Zero-based index when multiple components match (default: 0, i.e. first match)',
9
+ type: 'number',
10
+ },
11
+ mcpId: { description: 'data-mcp-id to search for', type: 'string' },
12
+ name: { description: 'Component name to search for', type: 'string' },
13
+ testID: { description: 'testID to search for', type: 'string' },
14
+ text: { description: 'Text content to search for', type: 'string' },
15
+ within: {
16
+ description: 'Search within a parent component path. Use "/" for nesting, ":N" for index. E.g. "Checkbox/Pressable", "Button:1/View"',
17
+ type: 'string',
18
+ },
19
+ };
20
+ const componentsModule = (options) => {
21
+ if (options?.rootRef) {
22
+ (0, utils_1.setRootRef)(options.rootRef);
23
+ }
24
+ const findInRoot = (root, segment) => {
25
+ if (!root)
26
+ return null;
27
+ // Support "Name:index" format, e.g. "Button:1"
28
+ const [name, indexStr] = segment.split(':');
29
+ if (!name)
30
+ return null;
31
+ const idx = indexStr ? parseInt(indexStr, 10) : 0;
32
+ const allByMcpId = (0, utils_1.findAllByQuery)(root, { mcpId: name });
33
+ if (allByMcpId.length > 0)
34
+ return allByMcpId[idx] ?? null;
35
+ const allByTestID = (0, utils_1.findAllByQuery)(root, { testID: name });
36
+ if (allByTestID.length > 0)
37
+ return allByTestID[idx] ?? null;
38
+ const allByName = (0, utils_1.findAllByQuery)(root, { name });
39
+ return allByName[idx] ?? null;
40
+ };
41
+ const findComponent = (args) => {
42
+ let root = (0, utils_1.getFiberRoot)();
43
+ if (!root)
44
+ return null;
45
+ // "within" supports recursive path with index: "Parent/Child:1/GrandChild"
46
+ if (args.within) {
47
+ const path = args.within.split('/');
48
+ for (const segment of path) {
49
+ root = findInRoot(root, segment);
50
+ if (!root)
51
+ return null;
52
+ }
53
+ }
54
+ const index = args.index ?? 0;
55
+ if (args.mcpId) {
56
+ const all = (0, utils_1.findAllByQuery)(root, { mcpId: args.mcpId });
57
+ return all[index] ?? null;
58
+ }
59
+ if (args.testID) {
60
+ const all = (0, utils_1.findAllByQuery)(root, { testID: args.testID });
61
+ return all[index] ?? null;
62
+ }
63
+ if (args.name) {
64
+ const all = (0, utils_1.findAllByQuery)(root, { name: args.name });
65
+ return all[index] ?? null;
66
+ }
67
+ if (args.text) {
68
+ const all = (0, utils_1.findAllByQuery)(root, { text: args.text });
69
+ return all[index] ?? null;
70
+ }
71
+ return null;
72
+ };
73
+ const requireRoot = () => {
74
+ const root = (0, utils_1.getFiberRoot)();
75
+ if (!root) {
76
+ return { error: 'Fiber root not available. The app may not have rendered yet.' };
77
+ }
78
+ return null;
79
+ };
80
+ return {
81
+ name: 'components',
82
+ tools: {
83
+ call_ref: {
84
+ description: 'Call a method on the native ref/instance of a component (e.g. focus, blur, measure). Use get_ref_methods first to see available methods.',
85
+ handler: (args) => {
86
+ const rootError = requireRoot();
87
+ if (rootError)
88
+ return rootError;
89
+ const fiber = findComponent(args);
90
+ if (!fiber)
91
+ return { error: 'Component not found' };
92
+ const instance = (0, utils_1.getNativeInstance)(fiber);
93
+ if (!instance) {
94
+ return { error: `Component "${(0, utils_1.getComponentName)(fiber)}" has no native instance` };
95
+ }
96
+ const methodName = args.method;
97
+ const methodArgs = args.args;
98
+ const method = instance[methodName];
99
+ if (typeof method !== 'function') {
100
+ return {
101
+ availableMethods: (0, utils_1.getAvailableMethods)(instance),
102
+ error: `No method "${methodName}" on native instance`,
103
+ };
104
+ }
105
+ try {
106
+ const bound = method.bind(instance);
107
+ const result = bound(...(methodArgs ?? []));
108
+ return {
109
+ component: (0, utils_1.getComponentName)(fiber),
110
+ method: methodName,
111
+ result,
112
+ success: true,
113
+ };
114
+ }
115
+ catch (e) {
116
+ return {
117
+ error: `Method "${methodName}" threw: ${e instanceof Error ? e.message : String(e)}`,
118
+ };
119
+ }
120
+ },
121
+ inputSchema: {
122
+ ...FIND_SCHEMA,
123
+ args: { description: 'Arguments to pass to the method as array', type: 'array' },
124
+ method: {
125
+ description: 'Method name to call (e.g. "focus", "blur", "measure")',
126
+ type: 'string',
127
+ },
128
+ },
129
+ },
130
+ find_all: {
131
+ description: 'Find all components matching a query (by testID, name, text, or props presence). Supports within for scoped search.',
132
+ handler: (args) => {
133
+ const rootError = requireRoot();
134
+ if (rootError)
135
+ return rootError;
136
+ let root = (0, utils_1.getFiberRoot)();
137
+ if (args.within) {
138
+ const path = args.within.split('/');
139
+ for (const segment of path) {
140
+ root = findInRoot(root, segment);
141
+ if (!root)
142
+ return { error: `Parent "${args.within}" not found` };
143
+ }
144
+ }
145
+ const query = {
146
+ hasProps: args.hasProps,
147
+ mcpId: args.mcpId,
148
+ name: args.name,
149
+ testID: args.testID,
150
+ text: args.text,
151
+ };
152
+ const fibers = (0, utils_1.findAllByQuery)(root, query);
153
+ return fibers.map((fiber) => {
154
+ return {
155
+ mcpId: fiber.memoizedProps?.['data-mcp-id'],
156
+ name: (0, utils_1.getComponentName)(fiber),
157
+ props: (0, utils_1.serializeProps)(fiber.memoizedProps),
158
+ testID: fiber.memoizedProps?.testID,
159
+ };
160
+ });
161
+ },
162
+ inputSchema: {
163
+ hasProps: {
164
+ description: 'Filter by props presence (array of prop names)',
165
+ type: 'array',
166
+ },
167
+ mcpId: { description: 'data-mcp-id to match', type: 'string' },
168
+ name: { description: 'Component name to match', type: 'string' },
169
+ testID: { description: 'testID to match', type: 'string' },
170
+ text: { description: 'Text content to match (substring)', type: 'string' },
171
+ within: FIND_SCHEMA.within,
172
+ },
173
+ },
174
+ get_children: {
175
+ description: 'Get children of a component found by testID, name, or text',
176
+ handler: (args) => {
177
+ const rootError = requireRoot();
178
+ if (rootError)
179
+ return rootError;
180
+ const fiber = findComponent(args);
181
+ if (!fiber)
182
+ return { error: 'Component not found' };
183
+ const depth = args.depth || DEFAULT_DEPTH;
184
+ const serialized = (0, utils_1.serializeFiber)(fiber, depth);
185
+ return serialized?.children ?? [];
186
+ },
187
+ inputSchema: {
188
+ ...FIND_SCHEMA,
189
+ depth: { description: 'Max depth to traverse (default: 10)', type: 'number' },
190
+ },
191
+ },
192
+ get_component: {
193
+ description: 'Find a component by testID, name, or text and return its details',
194
+ handler: (args) => {
195
+ const rootError = requireRoot();
196
+ if (rootError)
197
+ return rootError;
198
+ const root = (0, utils_1.getFiberRoot)();
199
+ let fiber = null;
200
+ if (args.mcpId) {
201
+ fiber = (0, utils_1.findByMcpId)(root, args.mcpId);
202
+ }
203
+ else if (args.testID) {
204
+ fiber = (0, utils_1.findByTestID)(root, args.testID);
205
+ }
206
+ else if (args.name) {
207
+ fiber = (0, utils_1.findByName)(root, args.name);
208
+ }
209
+ else if (args.text) {
210
+ fiber = (0, utils_1.findByText)(root, args.text);
211
+ }
212
+ if (!fiber)
213
+ return { error: 'Component not found' };
214
+ const depth = args.depth || DEFAULT_DEPTH;
215
+ return (0, utils_1.serializeFiber)(fiber, depth);
216
+ },
217
+ inputSchema: {
218
+ depth: { description: 'Max depth to traverse children (default: 3)', type: 'number' },
219
+ mcpId: { description: 'data-mcp-id to search for', type: 'string' },
220
+ name: { description: 'Component name to search for', type: 'string' },
221
+ testID: { description: 'testID to search for', type: 'string' },
222
+ text: { description: 'Text content to search for', type: 'string' },
223
+ },
224
+ },
225
+ get_props: {
226
+ description: 'Get all props of a component found by testID, name, or text',
227
+ handler: (args) => {
228
+ const rootError = requireRoot();
229
+ if (rootError)
230
+ return rootError;
231
+ const fiber = findComponent(args);
232
+ if (!fiber)
233
+ return { error: 'Component not found' };
234
+ return {
235
+ name: (0, utils_1.getComponentName)(fiber),
236
+ props: (0, utils_1.serializeProps)(fiber.memoizedProps),
237
+ };
238
+ },
239
+ inputSchema: FIND_SCHEMA,
240
+ },
241
+ get_ref_methods: {
242
+ description: 'List available methods on the native ref/instance of a component',
243
+ handler: (args) => {
244
+ const rootError = requireRoot();
245
+ if (rootError)
246
+ return rootError;
247
+ const fiber = findComponent(args);
248
+ if (!fiber)
249
+ return { error: 'Component not found' };
250
+ const instance = (0, utils_1.getNativeInstance)(fiber);
251
+ if (!instance) {
252
+ return { error: `Component "${(0, utils_1.getComponentName)(fiber)}" has no native instance` };
253
+ }
254
+ return {
255
+ component: (0, utils_1.getComponentName)(fiber),
256
+ methods: (0, utils_1.getAvailableMethods)(instance),
257
+ };
258
+ },
259
+ inputSchema: FIND_SCHEMA,
260
+ },
261
+ get_tree: {
262
+ description: 'Get the React component tree. Returns component names, types, props, and testIDs.',
263
+ handler: (args) => {
264
+ const rootError = requireRoot();
265
+ if (rootError)
266
+ return rootError;
267
+ const root = (0, utils_1.getFiberRoot)();
268
+ const depth = args.depth || DEFAULT_DEPTH;
269
+ return (0, utils_1.serializeFiber)(root, depth);
270
+ },
271
+ inputSchema: {
272
+ depth: { description: 'Max depth to traverse (default: 3)', type: 'number' },
273
+ },
274
+ },
275
+ invoke: {
276
+ description: 'Call any callback prop on a component found by testID, name, or text. Use this to simulate press, scroll, text input, or any other interaction.',
277
+ handler: (args) => {
278
+ const rootError = requireRoot();
279
+ if (rootError)
280
+ return rootError;
281
+ const fiber = findComponent(args);
282
+ if (!fiber)
283
+ return { error: 'Component not found' };
284
+ const callbackName = args.callback;
285
+ const callbackArgs = args.args;
286
+ const callback = fiber.memoizedProps?.[callbackName];
287
+ if (typeof callback !== 'function') {
288
+ const availableCallbacks = Object.keys(fiber.memoizedProps ?? {}).filter((key) => {
289
+ return typeof fiber.memoizedProps[key] === 'function';
290
+ });
291
+ return {
292
+ availableCallbacks,
293
+ error: `Component "${(0, utils_1.getComponentName)(fiber)}" has no "${callbackName}" callback`,
294
+ };
295
+ }
296
+ const result = callback(...(callbackArgs ?? []));
297
+ return { component: (0, utils_1.getComponentName)(fiber), result, success: true };
298
+ },
299
+ inputSchema: {
300
+ ...FIND_SCHEMA,
301
+ args: {
302
+ description: 'Arguments to pass to the callback as array (e.g. [true] or ["text"])',
303
+ type: 'array',
304
+ },
305
+ callback: {
306
+ description: 'Name of the callback prop to call (e.g. "onPress", "onChangeText")',
307
+ type: 'string',
308
+ },
309
+ },
310
+ },
311
+ },
312
+ };
313
+ };
314
+ exports.componentsModule = componentsModule;
315
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../../src/modules/components/components.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { componentsModule } from './components';
2
+ export { type ComponentQuery, type ComponentType, type SerializedComponent } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.componentsModule = void 0;
4
+ var components_1 = require("./components");
5
+ Object.defineProperty(exports, "componentsModule", { enumerable: true, get: function () { return components_1.componentsModule; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/components/index.ts"],"names":[],"mappings":";;;AAAA,2CAAgD;AAAvC,8GAAA,gBAAgB,OAAA"}
@@ -0,0 +1,18 @@
1
+ export type ComponentType = 'composite' | 'host' | 'other' | 'text';
2
+ export interface SerializedComponent {
3
+ children: SerializedComponent[];
4
+ name: string;
5
+ props: Record<string, unknown>;
6
+ type: ComponentType;
7
+ mcpId?: string;
8
+ testID?: string;
9
+ text?: string;
10
+ }
11
+ export interface ComponentQuery {
12
+ hasProps?: string[];
13
+ mcpId?: string;
14
+ name?: string;
15
+ testID?: string;
16
+ text?: string;
17
+ }
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modules/components/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/modules/components/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { type ComponentQuery, type SerializedComponent } from './types';
2
+ type Fiber = any;
3
+ export declare const setRootRef: (ref: unknown) => void;
4
+ export declare const getFiberRoot: () => Fiber | null;
5
+ export declare const getComponentName: (fiber: Fiber) => string;
6
+ export declare const serializeProps: (props: Record<string, unknown> | null) => Record<string, unknown>;
7
+ export declare const serializeFiber: (fiber: Fiber, maxDepth: number, currentDepth?: number) => SerializedComponent | null;
8
+ export declare const findFiber: (root: Fiber, predicate: (fiber: Fiber) => boolean) => Fiber | null;
9
+ export declare const findAllFibers: (root: Fiber, predicate: (fiber: Fiber) => boolean) => Fiber[];
10
+ export declare const findByMcpId: (root: Fiber, mcpId: string) => Fiber | null;
11
+ export declare const findByTestID: (root: Fiber, testID: string) => Fiber | null;
12
+ export declare const findByName: (root: Fiber, name: string) => Fiber | null;
13
+ export declare const findByText: (root: Fiber, text: string) => Fiber | null;
14
+ export declare const findAllByQuery: (root: Fiber, query: ComponentQuery) => Fiber[];
15
+ export declare const getNativeInstance: (fiber: Fiber) => unknown;
16
+ export declare const getAvailableMethods: (instance: unknown) => string[];
17
+ export {};
18
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/modules/components/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAsB,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAY5F,KAAK,KAAK,GAAG,GAAG,CAAC;AAKjB,eAAO,MAAM,UAAU,QAAS,OAAO,KAAG,IAEzC,CAAC;AAeF,eAAO,MAAM,YAAY,QAAO,KAAK,GAAG,IAKvC,CAAC;AAEF,eAAO,MAAM,gBAAgB,UAAW,KAAK,KAAG,MA+B/C,CAAC;AAkFF,eAAO,MAAM,cAAc,UAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAc5F,CAAC;AAoBF,eAAO,MAAM,cAAc,UAClB,KAAK,YACF,MAAM,4BAEf,mBAAmB,GAAG,IAaxB,CAAC;AA4EF,eAAO,MAAM,SAAS,SAAU,KAAK,aAAa,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,KAAG,KAAK,GAAG,IAWrF,CAAC;AAEF,eAAO,MAAM,aAAa,SAAU,KAAK,aAAa,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,KAAG,KAAK,EAgBtF,CAAC;AAEF,eAAO,MAAM,WAAW,SAAU,KAAK,SAAS,MAAM,KAAG,KAAK,GAAG,IAIhE,CAAC;AAEF,eAAO,MAAM,YAAY,SAAU,KAAK,UAAU,MAAM,KAAG,KAAK,GAAG,IAIlE,CAAC;AAEF,eAAO,MAAM,UAAU,SAAU,KAAK,QAAQ,MAAM,KAAG,KAAK,GAAG,IAI9D,CAAC;AAEF,eAAO,MAAM,UAAU,SAAU,KAAK,QAAQ,MAAM,KAAG,KAAK,GAAG,IAK9D,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,KAAK,SAAS,cAAc,KAAG,KAAK,EAsBxE,CAAC;AAgBF,eAAO,MAAM,iBAAiB,UAAW,KAAK,KAAG,OAoBhD,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAAc,OAAO,KAAG,MAAM,EAiB7D,CAAC"}