@mobileai/react-native 0.9.17 → 0.9.19

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 (292) hide show
  1. package/LICENSE +28 -20
  2. package/MobileAIFloatingOverlay.podspec +25 -0
  3. package/android/build.gradle +61 -0
  4. package/android/src/main/AndroidManifest.xml +3 -0
  5. package/android/src/main/java/com/mobileai/overlay/FloatingOverlayView.kt +151 -0
  6. package/android/src/main/java/com/mobileai/overlay/MobileAIOverlayPackage.kt +23 -0
  7. package/android/src/newarch/com/mobileai/overlay/FloatingOverlayViewManager.kt +45 -0
  8. package/android/src/oldarch/com/mobileai/overlay/FloatingOverlayViewManager.kt +29 -0
  9. package/ios/MobileAIFloatingOverlayComponentView.mm +73 -0
  10. package/lib/module/components/AIAgent.js +902 -136
  11. package/lib/module/components/AIConsentDialog.js +439 -0
  12. package/lib/module/components/AgentChatBar.js +828 -134
  13. package/lib/module/components/AgentOverlay.js +2 -1
  14. package/lib/module/components/DiscoveryTooltip.js +21 -9
  15. package/lib/module/components/FloatingOverlayWrapper.js +108 -0
  16. package/lib/module/components/Icons.js +123 -0
  17. package/lib/module/config/endpoints.js +12 -2
  18. package/lib/module/core/AgentRuntime.js +373 -27
  19. package/lib/module/core/FiberAdapter.js +56 -0
  20. package/lib/module/core/FiberTreeWalker.js +186 -80
  21. package/lib/module/core/IdleDetector.js +19 -0
  22. package/lib/module/core/NativeAlertInterceptor.js +191 -0
  23. package/lib/module/core/systemPrompt.js +203 -45
  24. package/lib/module/index.js +3 -0
  25. package/lib/module/providers/GeminiProvider.js +72 -56
  26. package/lib/module/providers/ProviderFactory.js +6 -2
  27. package/lib/module/services/AudioInputService.js +3 -12
  28. package/lib/module/services/AudioOutputService.js +1 -13
  29. package/lib/module/services/ConversationService.js +166 -0
  30. package/lib/module/services/MobileAIKnowledgeRetriever.js +41 -0
  31. package/lib/module/services/VoiceService.js +29 -8
  32. package/lib/module/services/telemetry/MobileAI.js +44 -0
  33. package/lib/module/services/telemetry/TelemetryService.js +13 -1
  34. package/lib/module/services/telemetry/TouchAutoCapture.js +44 -18
  35. package/lib/module/specs/FloatingOverlayNativeComponent.ts +19 -0
  36. package/lib/module/support/CSATSurvey.js +95 -12
  37. package/lib/module/support/EscalationSocket.js +70 -1
  38. package/lib/module/support/ReportedIssueEventSource.js +148 -0
  39. package/lib/module/support/escalateTool.js +4 -2
  40. package/lib/module/support/index.js +1 -0
  41. package/lib/module/support/reportIssueTool.js +127 -0
  42. package/lib/module/support/supportPrompt.js +77 -9
  43. package/lib/module/tools/guideTool.js +2 -1
  44. package/lib/module/tools/longPressTool.js +4 -3
  45. package/lib/module/tools/pickerTool.js +6 -4
  46. package/lib/module/tools/tapTool.js +12 -3
  47. package/lib/module/tools/typeTool.js +19 -10
  48. package/lib/module/utils/logger.js +175 -6
  49. package/lib/typescript/react-native.config.d.ts +11 -0
  50. package/lib/typescript/src/components/AIAgent.d.ts +28 -2
  51. package/lib/typescript/src/components/AIConsentDialog.d.ts +153 -0
  52. package/lib/typescript/src/components/AgentChatBar.d.ts +15 -2
  53. package/lib/typescript/src/components/DiscoveryTooltip.d.ts +3 -1
  54. package/lib/typescript/src/components/FloatingOverlayWrapper.d.ts +51 -0
  55. package/lib/typescript/src/components/Icons.d.ts +8 -0
  56. package/lib/typescript/src/config/endpoints.d.ts +5 -3
  57. package/lib/typescript/src/core/AgentRuntime.d.ts +4 -0
  58. package/lib/typescript/src/core/FiberAdapter.d.ts +25 -0
  59. package/lib/typescript/src/core/FiberTreeWalker.d.ts +2 -0
  60. package/lib/typescript/src/core/IdleDetector.d.ts +11 -0
  61. package/lib/typescript/src/core/NativeAlertInterceptor.d.ts +55 -0
  62. package/lib/typescript/src/core/types.d.ts +106 -1
  63. package/lib/typescript/src/index.d.ts +9 -4
  64. package/lib/typescript/src/providers/GeminiProvider.d.ts +6 -5
  65. package/lib/typescript/src/services/ConversationService.d.ts +55 -0
  66. package/lib/typescript/src/services/MobileAIKnowledgeRetriever.d.ts +9 -0
  67. package/lib/typescript/src/services/telemetry/MobileAI.d.ts +7 -0
  68. package/lib/typescript/src/services/telemetry/TelemetryService.d.ts +1 -1
  69. package/lib/typescript/src/services/telemetry/TouchAutoCapture.d.ts +9 -6
  70. package/lib/typescript/src/services/telemetry/types.d.ts +3 -1
  71. package/lib/typescript/src/specs/FloatingOverlayNativeComponent.d.ts +17 -0
  72. package/lib/typescript/src/support/EscalationSocket.d.ts +17 -0
  73. package/lib/typescript/src/support/ReportedIssueEventSource.d.ts +24 -0
  74. package/lib/typescript/src/support/escalateTool.d.ts +5 -0
  75. package/lib/typescript/src/support/index.d.ts +2 -1
  76. package/lib/typescript/src/support/reportIssueTool.d.ts +20 -0
  77. package/lib/typescript/src/support/types.d.ts +56 -1
  78. package/lib/typescript/src/utils/logger.d.ts +15 -0
  79. package/package.json +20 -9
  80. package/react-native.config.js +12 -0
  81. package/lib/module/__cli_tmp__.js.map +0 -1
  82. package/lib/module/components/AIAgent.js.map +0 -1
  83. package/lib/module/components/AIZone.js.map +0 -1
  84. package/lib/module/components/AgentChatBar.js.map +0 -1
  85. package/lib/module/components/AgentErrorBoundary.js.map +0 -1
  86. package/lib/module/components/AgentOverlay.js.map +0 -1
  87. package/lib/module/components/DiscoveryTooltip.js.map +0 -1
  88. package/lib/module/components/HighlightOverlay.js.map +0 -1
  89. package/lib/module/components/Icons.js.map +0 -1
  90. package/lib/module/components/ProactiveHint.js.map +0 -1
  91. package/lib/module/components/cards/InfoCard.js.map +0 -1
  92. package/lib/module/components/cards/ReviewSummary.js.map +0 -1
  93. package/lib/module/config/endpoints.js.map +0 -1
  94. package/lib/module/core/ActionRegistry.js.map +0 -1
  95. package/lib/module/core/AgentRuntime.js.map +0 -1
  96. package/lib/module/core/FiberTreeWalker.js.map +0 -1
  97. package/lib/module/core/IdleDetector.js.map +0 -1
  98. package/lib/module/core/MCPBridge.js.map +0 -1
  99. package/lib/module/core/ScreenDehydrator.js.map +0 -1
  100. package/lib/module/core/ZoneRegistry.js.map +0 -1
  101. package/lib/module/core/systemPrompt.js.map +0 -1
  102. package/lib/module/core/types.js.map +0 -1
  103. package/lib/module/hooks/useAction.js.map +0 -1
  104. package/lib/module/index.js.map +0 -1
  105. package/lib/module/plugin/withAppIntents.js.map +0 -1
  106. package/lib/module/providers/GeminiProvider.js.map +0 -1
  107. package/lib/module/providers/OpenAIProvider.js.map +0 -1
  108. package/lib/module/providers/ProviderFactory.js.map +0 -1
  109. package/lib/module/services/AudioInputService.js.map +0 -1
  110. package/lib/module/services/AudioOutputService.js.map +0 -1
  111. package/lib/module/services/KnowledgeBaseService.js.map +0 -1
  112. package/lib/module/services/VoiceService.js.map +0 -1
  113. package/lib/module/services/flags/FlagService.js.map +0 -1
  114. package/lib/module/services/telemetry/MobileAI.js.map +0 -1
  115. package/lib/module/services/telemetry/PiiScrubber.js.map +0 -1
  116. package/lib/module/services/telemetry/TelemetryService.js.map +0 -1
  117. package/lib/module/services/telemetry/TouchAutoCapture.js.map +0 -1
  118. package/lib/module/services/telemetry/device.js.map +0 -1
  119. package/lib/module/services/telemetry/deviceMetadata.js.map +0 -1
  120. package/lib/module/services/telemetry/index.js.map +0 -1
  121. package/lib/module/services/telemetry/types.js.map +0 -1
  122. package/lib/module/support/CSATSurvey.js.map +0 -1
  123. package/lib/module/support/EscalationEventSource.js.map +0 -1
  124. package/lib/module/support/EscalationSocket.js.map +0 -1
  125. package/lib/module/support/SupportChatModal.js.map +0 -1
  126. package/lib/module/support/SupportGreeting.js.map +0 -1
  127. package/lib/module/support/TicketStore.js.map +0 -1
  128. package/lib/module/support/escalateTool.js.map +0 -1
  129. package/lib/module/support/index.js.map +0 -1
  130. package/lib/module/support/supportPrompt.js.map +0 -1
  131. package/lib/module/support/types.js.map +0 -1
  132. package/lib/module/tools/datePickerTool.js.map +0 -1
  133. package/lib/module/tools/guideTool.js.map +0 -1
  134. package/lib/module/tools/index.js.map +0 -1
  135. package/lib/module/tools/keyboardTool.js.map +0 -1
  136. package/lib/module/tools/longPressTool.js.map +0 -1
  137. package/lib/module/tools/pickerTool.js.map +0 -1
  138. package/lib/module/tools/restoreTool.js.map +0 -1
  139. package/lib/module/tools/scrollTool.js.map +0 -1
  140. package/lib/module/tools/simplifyTool.js.map +0 -1
  141. package/lib/module/tools/sliderTool.js.map +0 -1
  142. package/lib/module/tools/tapTool.js.map +0 -1
  143. package/lib/module/tools/typeTool.js.map +0 -1
  144. package/lib/module/tools/types.js.map +0 -1
  145. package/lib/module/types/jsx.d.js.map +0 -1
  146. package/lib/module/utils/audioUtils.js.map +0 -1
  147. package/lib/module/utils/logger.js.map +0 -1
  148. package/lib/typescript/babel.config.d.ts.map +0 -1
  149. package/lib/typescript/bin/generate-map.d.cts.map +0 -1
  150. package/lib/typescript/eslint.config.d.mts.map +0 -1
  151. package/lib/typescript/generate-map.d.ts.map +0 -1
  152. package/lib/typescript/src/__cli_tmp__.d.ts.map +0 -1
  153. package/lib/typescript/src/components/AIAgent.d.ts.map +0 -1
  154. package/lib/typescript/src/components/AIZone.d.ts.map +0 -1
  155. package/lib/typescript/src/components/AgentChatBar.d.ts.map +0 -1
  156. package/lib/typescript/src/components/AgentErrorBoundary.d.ts.map +0 -1
  157. package/lib/typescript/src/components/AgentOverlay.d.ts.map +0 -1
  158. package/lib/typescript/src/components/DiscoveryTooltip.d.ts.map +0 -1
  159. package/lib/typescript/src/components/HighlightOverlay.d.ts.map +0 -1
  160. package/lib/typescript/src/components/Icons.d.ts.map +0 -1
  161. package/lib/typescript/src/components/ProactiveHint.d.ts.map +0 -1
  162. package/lib/typescript/src/components/cards/InfoCard.d.ts.map +0 -1
  163. package/lib/typescript/src/components/cards/ReviewSummary.d.ts.map +0 -1
  164. package/lib/typescript/src/config/endpoints.d.ts.map +0 -1
  165. package/lib/typescript/src/core/ActionRegistry.d.ts.map +0 -1
  166. package/lib/typescript/src/core/AgentRuntime.d.ts.map +0 -1
  167. package/lib/typescript/src/core/FiberTreeWalker.d.ts.map +0 -1
  168. package/lib/typescript/src/core/IdleDetector.d.ts.map +0 -1
  169. package/lib/typescript/src/core/MCPBridge.d.ts.map +0 -1
  170. package/lib/typescript/src/core/ScreenDehydrator.d.ts.map +0 -1
  171. package/lib/typescript/src/core/ZoneRegistry.d.ts.map +0 -1
  172. package/lib/typescript/src/core/systemPrompt.d.ts.map +0 -1
  173. package/lib/typescript/src/core/types.d.ts.map +0 -1
  174. package/lib/typescript/src/hooks/useAction.d.ts.map +0 -1
  175. package/lib/typescript/src/index.d.ts.map +0 -1
  176. package/lib/typescript/src/plugin/withAppIntents.d.ts.map +0 -1
  177. package/lib/typescript/src/providers/GeminiProvider.d.ts.map +0 -1
  178. package/lib/typescript/src/providers/OpenAIProvider.d.ts.map +0 -1
  179. package/lib/typescript/src/providers/ProviderFactory.d.ts.map +0 -1
  180. package/lib/typescript/src/services/AudioInputService.d.ts.map +0 -1
  181. package/lib/typescript/src/services/AudioOutputService.d.ts.map +0 -1
  182. package/lib/typescript/src/services/KnowledgeBaseService.d.ts.map +0 -1
  183. package/lib/typescript/src/services/VoiceService.d.ts.map +0 -1
  184. package/lib/typescript/src/services/flags/FlagService.d.ts.map +0 -1
  185. package/lib/typescript/src/services/telemetry/MobileAI.d.ts.map +0 -1
  186. package/lib/typescript/src/services/telemetry/PiiScrubber.d.ts.map +0 -1
  187. package/lib/typescript/src/services/telemetry/TelemetryService.d.ts.map +0 -1
  188. package/lib/typescript/src/services/telemetry/TouchAutoCapture.d.ts.map +0 -1
  189. package/lib/typescript/src/services/telemetry/device.d.ts.map +0 -1
  190. package/lib/typescript/src/services/telemetry/deviceMetadata.d.ts.map +0 -1
  191. package/lib/typescript/src/services/telemetry/index.d.ts.map +0 -1
  192. package/lib/typescript/src/services/telemetry/types.d.ts.map +0 -1
  193. package/lib/typescript/src/support/CSATSurvey.d.ts.map +0 -1
  194. package/lib/typescript/src/support/EscalationEventSource.d.ts.map +0 -1
  195. package/lib/typescript/src/support/EscalationSocket.d.ts.map +0 -1
  196. package/lib/typescript/src/support/SupportChatModal.d.ts.map +0 -1
  197. package/lib/typescript/src/support/SupportGreeting.d.ts.map +0 -1
  198. package/lib/typescript/src/support/TicketStore.d.ts.map +0 -1
  199. package/lib/typescript/src/support/escalateTool.d.ts.map +0 -1
  200. package/lib/typescript/src/support/index.d.ts.map +0 -1
  201. package/lib/typescript/src/support/supportPrompt.d.ts.map +0 -1
  202. package/lib/typescript/src/support/types.d.ts.map +0 -1
  203. package/lib/typescript/src/tools/datePickerTool.d.ts.map +0 -1
  204. package/lib/typescript/src/tools/guideTool.d.ts.map +0 -1
  205. package/lib/typescript/src/tools/index.d.ts.map +0 -1
  206. package/lib/typescript/src/tools/keyboardTool.d.ts.map +0 -1
  207. package/lib/typescript/src/tools/longPressTool.d.ts.map +0 -1
  208. package/lib/typescript/src/tools/pickerTool.d.ts.map +0 -1
  209. package/lib/typescript/src/tools/restoreTool.d.ts.map +0 -1
  210. package/lib/typescript/src/tools/scrollTool.d.ts.map +0 -1
  211. package/lib/typescript/src/tools/simplifyTool.d.ts.map +0 -1
  212. package/lib/typescript/src/tools/sliderTool.d.ts.map +0 -1
  213. package/lib/typescript/src/tools/tapTool.d.ts.map +0 -1
  214. package/lib/typescript/src/tools/typeTool.d.ts.map +0 -1
  215. package/lib/typescript/src/tools/types.d.ts.map +0 -1
  216. package/lib/typescript/src/utils/audioUtils.d.ts.map +0 -1
  217. package/lib/typescript/src/utils/logger.d.ts.map +0 -1
  218. package/src/__cli_tmp__.tsx +0 -9
  219. package/src/cli/analyzers/chain-analyzer.ts +0 -183
  220. package/src/cli/extractors/ai-extractor.ts +0 -6
  221. package/src/cli/extractors/ast-extractor.ts +0 -551
  222. package/src/cli/generate-intents.ts +0 -140
  223. package/src/cli/generate-map.ts +0 -121
  224. package/src/cli/generate-swift.ts +0 -116
  225. package/src/cli/scanners/expo-scanner.ts +0 -203
  226. package/src/cli/scanners/rn-scanner.ts +0 -445
  227. package/src/components/AIAgent.tsx +0 -1716
  228. package/src/components/AIZone.tsx +0 -147
  229. package/src/components/AgentChatBar.tsx +0 -1143
  230. package/src/components/AgentErrorBoundary.tsx +0 -78
  231. package/src/components/AgentOverlay.tsx +0 -73
  232. package/src/components/DiscoveryTooltip.tsx +0 -148
  233. package/src/components/HighlightOverlay.tsx +0 -136
  234. package/src/components/Icons.tsx +0 -253
  235. package/src/components/ProactiveHint.tsx +0 -145
  236. package/src/components/cards/InfoCard.tsx +0 -58
  237. package/src/components/cards/ReviewSummary.tsx +0 -76
  238. package/src/config/endpoints.ts +0 -22
  239. package/src/core/ActionRegistry.ts +0 -105
  240. package/src/core/AgentRuntime.ts +0 -1471
  241. package/src/core/FiberTreeWalker.ts +0 -930
  242. package/src/core/IdleDetector.ts +0 -72
  243. package/src/core/MCPBridge.ts +0 -163
  244. package/src/core/ScreenDehydrator.ts +0 -53
  245. package/src/core/ZoneRegistry.ts +0 -44
  246. package/src/core/systemPrompt.ts +0 -431
  247. package/src/core/types.ts +0 -521
  248. package/src/hooks/useAction.ts +0 -182
  249. package/src/index.ts +0 -83
  250. package/src/plugin/withAppIntents.ts +0 -98
  251. package/src/providers/GeminiProvider.ts +0 -357
  252. package/src/providers/OpenAIProvider.ts +0 -379
  253. package/src/providers/ProviderFactory.ts +0 -36
  254. package/src/services/AudioInputService.ts +0 -226
  255. package/src/services/AudioOutputService.ts +0 -236
  256. package/src/services/KnowledgeBaseService.ts +0 -156
  257. package/src/services/VoiceService.ts +0 -451
  258. package/src/services/flags/FlagService.ts +0 -137
  259. package/src/services/telemetry/MobileAI.ts +0 -66
  260. package/src/services/telemetry/PiiScrubber.ts +0 -17
  261. package/src/services/telemetry/TelemetryService.ts +0 -323
  262. package/src/services/telemetry/TouchAutoCapture.ts +0 -165
  263. package/src/services/telemetry/device.ts +0 -93
  264. package/src/services/telemetry/deviceMetadata.ts +0 -13
  265. package/src/services/telemetry/index.ts +0 -13
  266. package/src/services/telemetry/types.ts +0 -75
  267. package/src/support/CSATSurvey.tsx +0 -304
  268. package/src/support/EscalationEventSource.ts +0 -190
  269. package/src/support/EscalationSocket.ts +0 -152
  270. package/src/support/SupportChatModal.tsx +0 -563
  271. package/src/support/SupportGreeting.tsx +0 -161
  272. package/src/support/TicketStore.ts +0 -100
  273. package/src/support/escalateTool.ts +0 -174
  274. package/src/support/index.ts +0 -29
  275. package/src/support/supportPrompt.ts +0 -55
  276. package/src/support/types.ts +0 -155
  277. package/src/tools/datePickerTool.ts +0 -60
  278. package/src/tools/guideTool.ts +0 -76
  279. package/src/tools/index.ts +0 -20
  280. package/src/tools/keyboardTool.ts +0 -30
  281. package/src/tools/longPressTool.ts +0 -61
  282. package/src/tools/pickerTool.ts +0 -115
  283. package/src/tools/restoreTool.ts +0 -33
  284. package/src/tools/scrollTool.ts +0 -156
  285. package/src/tools/simplifyTool.ts +0 -33
  286. package/src/tools/sliderTool.ts +0 -65
  287. package/src/tools/tapTool.ts +0 -93
  288. package/src/tools/typeTool.ts +0 -113
  289. package/src/tools/types.ts +0 -58
  290. package/src/types/jsx.d.ts +0 -20
  291. package/src/utils/audioUtils.ts +0 -54
  292. package/src/utils/logger.ts +0 -38
@@ -1,113 +0,0 @@
1
- /**
2
- * Type Tool — Reliable multi-strategy text input.
3
- *
4
- * For uncontrolled TextInputs (defaultValue, no onChangeText):
5
- * 1. Walk fiber subtree (BFS) to find the native host view whose
6
- * memoizedProps has `onChange` — this is RN's internal `_onChange`.
7
- * 2. ALSO walk to find the native stateNode with `setNativeProps` to
8
- * update the VISUAL text in the native view.
9
- *
10
- * Both steps are needed:
11
- * - `onChange` → updates React's internal lastNativeText state
12
- * - `setNativeProps` → updates what the user sees on screen
13
- *
14
- * No hardcoded fiber tag numbers. Detection is purely behavior-based.
15
- */
16
-
17
- import { walkFiberTree } from '../core/FiberTreeWalker';
18
- import type { AgentTool, ToolContext } from './types';
19
-
20
- /** BFS through fiber children. Returns first node where predicate matches. */
21
- function findFiberNode(rootFiber: any, predicate: (node: any) => boolean, maxDepth = 10): any | null {
22
- if (!rootFiber?.child) return null;
23
- const queue: { node: any; depth: number }[] = [{ node: rootFiber.child, depth: 0 }];
24
- while (queue.length > 0) {
25
- const { node, depth } = queue.shift()!;
26
- if (!node || depth > maxDepth) continue;
27
- if (predicate(node)) return node;
28
- if (node.child) queue.push({ node: node.child, depth: depth + 1 });
29
- if (node.sibling) queue.push({ node: node.sibling, depth: depth + 1 });
30
- }
31
- return null;
32
- }
33
-
34
- export function createTypeTool(context: ToolContext): AgentTool {
35
- return {
36
- name: 'type',
37
- description: 'Type text into a text-input element by its index.',
38
- parameters: {
39
- index: { type: 'number', description: 'The index of the text-input element', required: true },
40
- text: { type: 'string', description: 'The text to type', required: true },
41
- },
42
- execute: async (args) => {
43
- const { interactives: elements } = walkFiberTree(context.getRootRef(), context.getWalkConfig());
44
- const element = elements.find(el => el.index === args.index);
45
-
46
- if (!element) {
47
- return `❌ Element with index ${args.index} not found.`;
48
- }
49
-
50
- const props = element.props;
51
- const label = element.label || `[${element.type}]`;
52
- const fiberNode = element.fiberNode;
53
-
54
- // ── Strategy 1: controlled via onChangeText ───────────────────────────
55
- if (typeof props.onChangeText === 'function') {
56
- try {
57
- props.onChangeText(args.text);
58
- await new Promise(resolve => setTimeout(resolve, 300));
59
- return `✅ Typed "${args.text}" into [${args.index}] "${label}"`;
60
- } catch (err: any) {
61
- return `❌ onChangeText failed: ${err.message}`;
62
- }
63
- }
64
-
65
- // ── Strategy 2: uncontrolled — find native onChange + setNativeProps ──
66
- // For TextInputs with defaultValue only.
67
- // We need BOTH:
68
- // a) find the onChange handler (RN's internal _onChange) to update React state
69
- // b) find the native stateNode to call setNativeProps to update visual display
70
- if (fiberNode) {
71
- // Find native onChange handler (behavior-based, no tag numbers)
72
- const nativeOnChangeFiber = fiberNode.memoizedProps?.onChange
73
- ? fiberNode
74
- : findFiberNode(fiberNode, n => typeof n.memoizedProps?.onChange === 'function');
75
-
76
- // Find native stateNode (host component with setNativeProps)
77
- const nativeStateFiber = fiberNode.stateNode?.setNativeProps
78
- ? fiberNode
79
- : findFiberNode(fiberNode, n => n.stateNode && typeof n.stateNode.setNativeProps === 'function');
80
-
81
- const onChange = nativeOnChangeFiber?.memoizedProps?.onChange;
82
- const nativeInstance = nativeStateFiber?.stateNode;
83
-
84
- if (onChange || nativeInstance) {
85
- try {
86
- // Step 1: Update visual text in native view
87
- if (nativeInstance && typeof nativeInstance.setNativeProps === 'function') {
88
- nativeInstance.setNativeProps({ text: args.text });
89
- }
90
-
91
- // Step 2: Notify React's internal onChange so lastNativeText stays in sync
92
- if (typeof onChange === 'function') {
93
- onChange({
94
- nativeEvent: {
95
- text: args.text,
96
- eventCount: 1,
97
- target: 0,
98
- },
99
- });
100
- }
101
-
102
- await new Promise(resolve => setTimeout(resolve, 300));
103
- return `✅ Typed "${args.text}" into [${args.index}] "${label}"`;
104
- } catch (err: any) {
105
- return `❌ Type failed: ${err.message}`;
106
- }
107
- }
108
- }
109
-
110
- return `❌ Element [${args.index}] "${label}" is not a typeable text input. No onChange or native stateNode found in fiber tree.`;
111
- },
112
- };
113
- }
@@ -1,58 +0,0 @@
1
- /**
2
- * Tool Module Types — shared interfaces for all agent tools.
3
- *
4
- * Each tool is a standalone module that exports a factory function
5
- * returning an AgentTool. This enables:
6
- * - Clean separation of concerns (one file per interaction type)
7
- * - Shared context via ToolContext (fiber tree, navigation, screen)
8
- * - Consistent parameter validation via ToolParameter schema
9
- */
10
-
11
- import type { WalkConfig } from '../core/FiberTreeWalker';
12
-
13
- // ─── Tool Parameter Schema ─────────────────────────────────
14
-
15
- export interface ToolParameter {
16
- type: 'string' | 'number' | 'boolean';
17
- description: string;
18
- required?: boolean;
19
- enum?: string[];
20
- }
21
-
22
- // ─── Agent Tool Interface ───────────────────────────────────
23
-
24
- export interface AgentTool {
25
- /** Unique tool name (used as key in tools map) */
26
- name: string;
27
- /** Description shown to the AI model for tool selection */
28
- description: string;
29
- /** Parameter schema for the AI model */
30
- parameters: Record<string, ToolParameter>;
31
- /** Execute the tool with validated args */
32
- execute: (args: any) => Promise<string>;
33
- }
34
-
35
- // ─── Tool Context (shared dependencies injected by AgentRuntime) ──
36
-
37
- export interface ToolContext {
38
- /** Root React ref for fiber tree access (getter to avoid stale closure) */
39
- getRootRef: () => any;
40
- /** Walk configuration (blacklist/whitelist/screen scoping) */
41
- getWalkConfig: () => WalkConfig;
42
- /** Get the current active screen name */
43
- getCurrentScreenName: () => string;
44
- /** Navigation ref getter (React Navigation / Expo Router) */
45
- getNavRef?: () => any;
46
- /** Expo Router ref */
47
- routerRef?: any;
48
- /** Get available route names */
49
- getRouteNames?: () => string[];
50
- /** Find nested screen path */
51
- findScreenPath?: (screenName: string) => string[];
52
- /** Build nested navigation params */
53
- buildNestedParams?: (path: string[], params?: any) => any;
54
- /** Capture screenshot (optional) */
55
- captureScreenshot?: () => Promise<string | null>;
56
- /** Get the most recently dehydrated screen (with layout coords) */
57
- getLastDehydratedRoot?: () => any;
58
- }
@@ -1,20 +0,0 @@
1
- import 'react-native';
2
-
3
- declare module 'react-native' {
4
- // Augment core component props to support declarative AI priorities
5
- interface ViewProps {
6
- aiPriority?: 'high' | 'low';
7
- }
8
- interface TextProps {
9
- aiPriority?: 'high' | 'low';
10
- }
11
- interface PressableProps {
12
- aiPriority?: 'high' | 'low';
13
- }
14
- interface TextInputProps {
15
- aiPriority?: 'high' | 'low';
16
- }
17
- interface ImageProps {
18
- aiPriority?: 'high' | 'low';
19
- }
20
- }
@@ -1,54 +0,0 @@
1
- /**
2
- * Audio utility functions for PCM conversion.
3
- *
4
- * Used by AudioInputService and AudioOutputService to convert between
5
- * Float32 (Web Audio API) and Int16 (Gemini Live API) PCM formats.
6
- */
7
-
8
- /**
9
- * Convert Float32Array PCM samples to Int16 PCM and encode as base64.
10
- * Gemini Live API expects Int16 little-endian PCM.
11
- */
12
- export function float32ToInt16Base64(float32Data: Float32Array): string {
13
- const int16Buffer = new Int16Array(float32Data.length);
14
- for (let i = 0; i < float32Data.length; i++) {
15
- // Clamp to [-1, 1] and scale to Int16 range
16
- const sample = Math.max(-1, Math.min(1, float32Data[i] || 0));
17
- int16Buffer[i] = sample < 0 ? sample * 0x8000 : sample * 0x7fff;
18
- }
19
-
20
- // Convert Int16Array to base64
21
- const bytes = new Uint8Array(int16Buffer.buffer);
22
- let binary = '';
23
- for (let i = 0; i < bytes.length; i++) {
24
- binary += String.fromCharCode(bytes[i] || 0);
25
- }
26
-
27
- return typeof global.btoa === 'function'
28
- ? global.btoa(binary)
29
- : Buffer.from(binary, 'binary').toString('base64');
30
- }
31
-
32
- /**
33
- * Decode base64 Int16 PCM to Float32Array.
34
- * Used for manual decoding when decodePCMInBase64 is unavailable.
35
- */
36
- export function base64ToFloat32(base64: string): Float32Array {
37
- const binaryString = typeof global.atob === 'function'
38
- ? global.atob(base64)
39
- : Buffer.from(base64, 'base64').toString('binary');
40
-
41
- const bytes = new Uint8Array(binaryString.length);
42
- for (let i = 0; i < binaryString.length; i++) {
43
- bytes[i] = binaryString.charCodeAt(i);
44
- }
45
-
46
- const int16Data = new Int16Array(bytes.buffer);
47
- const float32Data = new Float32Array(int16Data.length);
48
- for (let i = 0; i < int16Data.length; i++) {
49
- // Scale Int16 back to Float32 [-1, 1]
50
- float32Data[i] = (int16Data[i] || 0) / 0x8000;
51
- }
52
-
53
- return float32Data;
54
- }
@@ -1,38 +0,0 @@
1
- /**
2
- * Logger utility — prefixed console output for easy filtering.
3
- *
4
- * Disabled by default. Enable via `logger.setEnabled(true)` or
5
- * pass `debug={true}` to the <AIAgent> component.
6
- */
7
- const TAG = '[AIAgent]';
8
-
9
- let enabled = false;
10
-
11
- export const logger = {
12
- /** Enable or disable all SDK logging. */
13
- setEnabled: (value: boolean) => {
14
- enabled = value;
15
- },
16
-
17
- /** Check if logging is enabled. */
18
- isEnabled: () => enabled,
19
-
20
- info: (context: string, ...args: any[]) => {
21
- if (enabled) console.log(`${TAG} [${context}]`, ...args);
22
- },
23
-
24
- warn: (context: string, ...args: any[]) => {
25
- if (enabled) console.warn(`${TAG} [${context}]`, ...args);
26
- },
27
-
28
- error: (context: string, ...args: any[]) => {
29
- // Errors always log regardless of enabled flag
30
- console.error(`${TAG} [${context}]`, ...args);
31
- },
32
-
33
- debug: (context: string, ...args: any[]) => {
34
- if (enabled && __DEV__) {
35
- console.log(`${TAG} [${context}] 🐛`, ...args);
36
- }
37
- },
38
- };