@mobileai/react-native 0.9.17 → 0.9.18

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 (213) hide show
  1. package/package.json +2 -5
  2. package/lib/module/__cli_tmp__.js.map +0 -1
  3. package/lib/module/components/AIAgent.js.map +0 -1
  4. package/lib/module/components/AIZone.js.map +0 -1
  5. package/lib/module/components/AgentChatBar.js.map +0 -1
  6. package/lib/module/components/AgentErrorBoundary.js.map +0 -1
  7. package/lib/module/components/AgentOverlay.js.map +0 -1
  8. package/lib/module/components/DiscoveryTooltip.js.map +0 -1
  9. package/lib/module/components/HighlightOverlay.js.map +0 -1
  10. package/lib/module/components/Icons.js.map +0 -1
  11. package/lib/module/components/ProactiveHint.js.map +0 -1
  12. package/lib/module/components/cards/InfoCard.js.map +0 -1
  13. package/lib/module/components/cards/ReviewSummary.js.map +0 -1
  14. package/lib/module/config/endpoints.js.map +0 -1
  15. package/lib/module/core/ActionRegistry.js.map +0 -1
  16. package/lib/module/core/AgentRuntime.js.map +0 -1
  17. package/lib/module/core/FiberTreeWalker.js.map +0 -1
  18. package/lib/module/core/IdleDetector.js.map +0 -1
  19. package/lib/module/core/MCPBridge.js.map +0 -1
  20. package/lib/module/core/ScreenDehydrator.js.map +0 -1
  21. package/lib/module/core/ZoneRegistry.js.map +0 -1
  22. package/lib/module/core/systemPrompt.js.map +0 -1
  23. package/lib/module/core/types.js.map +0 -1
  24. package/lib/module/hooks/useAction.js.map +0 -1
  25. package/lib/module/index.js.map +0 -1
  26. package/lib/module/plugin/withAppIntents.js.map +0 -1
  27. package/lib/module/providers/GeminiProvider.js.map +0 -1
  28. package/lib/module/providers/OpenAIProvider.js.map +0 -1
  29. package/lib/module/providers/ProviderFactory.js.map +0 -1
  30. package/lib/module/services/AudioInputService.js.map +0 -1
  31. package/lib/module/services/AudioOutputService.js.map +0 -1
  32. package/lib/module/services/KnowledgeBaseService.js.map +0 -1
  33. package/lib/module/services/VoiceService.js.map +0 -1
  34. package/lib/module/services/flags/FlagService.js.map +0 -1
  35. package/lib/module/services/telemetry/MobileAI.js.map +0 -1
  36. package/lib/module/services/telemetry/PiiScrubber.js.map +0 -1
  37. package/lib/module/services/telemetry/TelemetryService.js.map +0 -1
  38. package/lib/module/services/telemetry/TouchAutoCapture.js.map +0 -1
  39. package/lib/module/services/telemetry/device.js.map +0 -1
  40. package/lib/module/services/telemetry/deviceMetadata.js.map +0 -1
  41. package/lib/module/services/telemetry/index.js.map +0 -1
  42. package/lib/module/services/telemetry/types.js.map +0 -1
  43. package/lib/module/support/CSATSurvey.js.map +0 -1
  44. package/lib/module/support/EscalationEventSource.js.map +0 -1
  45. package/lib/module/support/EscalationSocket.js.map +0 -1
  46. package/lib/module/support/SupportChatModal.js.map +0 -1
  47. package/lib/module/support/SupportGreeting.js.map +0 -1
  48. package/lib/module/support/TicketStore.js.map +0 -1
  49. package/lib/module/support/escalateTool.js.map +0 -1
  50. package/lib/module/support/index.js.map +0 -1
  51. package/lib/module/support/supportPrompt.js.map +0 -1
  52. package/lib/module/support/types.js.map +0 -1
  53. package/lib/module/tools/datePickerTool.js.map +0 -1
  54. package/lib/module/tools/guideTool.js.map +0 -1
  55. package/lib/module/tools/index.js.map +0 -1
  56. package/lib/module/tools/keyboardTool.js.map +0 -1
  57. package/lib/module/tools/longPressTool.js.map +0 -1
  58. package/lib/module/tools/pickerTool.js.map +0 -1
  59. package/lib/module/tools/restoreTool.js.map +0 -1
  60. package/lib/module/tools/scrollTool.js.map +0 -1
  61. package/lib/module/tools/simplifyTool.js.map +0 -1
  62. package/lib/module/tools/sliderTool.js.map +0 -1
  63. package/lib/module/tools/tapTool.js.map +0 -1
  64. package/lib/module/tools/typeTool.js.map +0 -1
  65. package/lib/module/tools/types.js.map +0 -1
  66. package/lib/module/types/jsx.d.js.map +0 -1
  67. package/lib/module/utils/audioUtils.js.map +0 -1
  68. package/lib/module/utils/logger.js.map +0 -1
  69. package/lib/typescript/babel.config.d.ts.map +0 -1
  70. package/lib/typescript/bin/generate-map.d.cts.map +0 -1
  71. package/lib/typescript/eslint.config.d.mts.map +0 -1
  72. package/lib/typescript/generate-map.d.ts.map +0 -1
  73. package/lib/typescript/src/__cli_tmp__.d.ts.map +0 -1
  74. package/lib/typescript/src/components/AIAgent.d.ts.map +0 -1
  75. package/lib/typescript/src/components/AIZone.d.ts.map +0 -1
  76. package/lib/typescript/src/components/AgentChatBar.d.ts.map +0 -1
  77. package/lib/typescript/src/components/AgentErrorBoundary.d.ts.map +0 -1
  78. package/lib/typescript/src/components/AgentOverlay.d.ts.map +0 -1
  79. package/lib/typescript/src/components/DiscoveryTooltip.d.ts.map +0 -1
  80. package/lib/typescript/src/components/HighlightOverlay.d.ts.map +0 -1
  81. package/lib/typescript/src/components/Icons.d.ts.map +0 -1
  82. package/lib/typescript/src/components/ProactiveHint.d.ts.map +0 -1
  83. package/lib/typescript/src/components/cards/InfoCard.d.ts.map +0 -1
  84. package/lib/typescript/src/components/cards/ReviewSummary.d.ts.map +0 -1
  85. package/lib/typescript/src/config/endpoints.d.ts.map +0 -1
  86. package/lib/typescript/src/core/ActionRegistry.d.ts.map +0 -1
  87. package/lib/typescript/src/core/AgentRuntime.d.ts.map +0 -1
  88. package/lib/typescript/src/core/FiberTreeWalker.d.ts.map +0 -1
  89. package/lib/typescript/src/core/IdleDetector.d.ts.map +0 -1
  90. package/lib/typescript/src/core/MCPBridge.d.ts.map +0 -1
  91. package/lib/typescript/src/core/ScreenDehydrator.d.ts.map +0 -1
  92. package/lib/typescript/src/core/ZoneRegistry.d.ts.map +0 -1
  93. package/lib/typescript/src/core/systemPrompt.d.ts.map +0 -1
  94. package/lib/typescript/src/core/types.d.ts.map +0 -1
  95. package/lib/typescript/src/hooks/useAction.d.ts.map +0 -1
  96. package/lib/typescript/src/index.d.ts.map +0 -1
  97. package/lib/typescript/src/plugin/withAppIntents.d.ts.map +0 -1
  98. package/lib/typescript/src/providers/GeminiProvider.d.ts.map +0 -1
  99. package/lib/typescript/src/providers/OpenAIProvider.d.ts.map +0 -1
  100. package/lib/typescript/src/providers/ProviderFactory.d.ts.map +0 -1
  101. package/lib/typescript/src/services/AudioInputService.d.ts.map +0 -1
  102. package/lib/typescript/src/services/AudioOutputService.d.ts.map +0 -1
  103. package/lib/typescript/src/services/KnowledgeBaseService.d.ts.map +0 -1
  104. package/lib/typescript/src/services/VoiceService.d.ts.map +0 -1
  105. package/lib/typescript/src/services/flags/FlagService.d.ts.map +0 -1
  106. package/lib/typescript/src/services/telemetry/MobileAI.d.ts.map +0 -1
  107. package/lib/typescript/src/services/telemetry/PiiScrubber.d.ts.map +0 -1
  108. package/lib/typescript/src/services/telemetry/TelemetryService.d.ts.map +0 -1
  109. package/lib/typescript/src/services/telemetry/TouchAutoCapture.d.ts.map +0 -1
  110. package/lib/typescript/src/services/telemetry/device.d.ts.map +0 -1
  111. package/lib/typescript/src/services/telemetry/deviceMetadata.d.ts.map +0 -1
  112. package/lib/typescript/src/services/telemetry/index.d.ts.map +0 -1
  113. package/lib/typescript/src/services/telemetry/types.d.ts.map +0 -1
  114. package/lib/typescript/src/support/CSATSurvey.d.ts.map +0 -1
  115. package/lib/typescript/src/support/EscalationEventSource.d.ts.map +0 -1
  116. package/lib/typescript/src/support/EscalationSocket.d.ts.map +0 -1
  117. package/lib/typescript/src/support/SupportChatModal.d.ts.map +0 -1
  118. package/lib/typescript/src/support/SupportGreeting.d.ts.map +0 -1
  119. package/lib/typescript/src/support/TicketStore.d.ts.map +0 -1
  120. package/lib/typescript/src/support/escalateTool.d.ts.map +0 -1
  121. package/lib/typescript/src/support/index.d.ts.map +0 -1
  122. package/lib/typescript/src/support/supportPrompt.d.ts.map +0 -1
  123. package/lib/typescript/src/support/types.d.ts.map +0 -1
  124. package/lib/typescript/src/tools/datePickerTool.d.ts.map +0 -1
  125. package/lib/typescript/src/tools/guideTool.d.ts.map +0 -1
  126. package/lib/typescript/src/tools/index.d.ts.map +0 -1
  127. package/lib/typescript/src/tools/keyboardTool.d.ts.map +0 -1
  128. package/lib/typescript/src/tools/longPressTool.d.ts.map +0 -1
  129. package/lib/typescript/src/tools/pickerTool.d.ts.map +0 -1
  130. package/lib/typescript/src/tools/restoreTool.d.ts.map +0 -1
  131. package/lib/typescript/src/tools/scrollTool.d.ts.map +0 -1
  132. package/lib/typescript/src/tools/simplifyTool.d.ts.map +0 -1
  133. package/lib/typescript/src/tools/sliderTool.d.ts.map +0 -1
  134. package/lib/typescript/src/tools/tapTool.d.ts.map +0 -1
  135. package/lib/typescript/src/tools/typeTool.d.ts.map +0 -1
  136. package/lib/typescript/src/tools/types.d.ts.map +0 -1
  137. package/lib/typescript/src/utils/audioUtils.d.ts.map +0 -1
  138. package/lib/typescript/src/utils/logger.d.ts.map +0 -1
  139. package/src/__cli_tmp__.tsx +0 -9
  140. package/src/cli/analyzers/chain-analyzer.ts +0 -183
  141. package/src/cli/extractors/ai-extractor.ts +0 -6
  142. package/src/cli/extractors/ast-extractor.ts +0 -551
  143. package/src/cli/generate-intents.ts +0 -140
  144. package/src/cli/generate-map.ts +0 -121
  145. package/src/cli/generate-swift.ts +0 -116
  146. package/src/cli/scanners/expo-scanner.ts +0 -203
  147. package/src/cli/scanners/rn-scanner.ts +0 -445
  148. package/src/components/AIAgent.tsx +0 -1716
  149. package/src/components/AIZone.tsx +0 -147
  150. package/src/components/AgentChatBar.tsx +0 -1143
  151. package/src/components/AgentErrorBoundary.tsx +0 -78
  152. package/src/components/AgentOverlay.tsx +0 -73
  153. package/src/components/DiscoveryTooltip.tsx +0 -148
  154. package/src/components/HighlightOverlay.tsx +0 -136
  155. package/src/components/Icons.tsx +0 -253
  156. package/src/components/ProactiveHint.tsx +0 -145
  157. package/src/components/cards/InfoCard.tsx +0 -58
  158. package/src/components/cards/ReviewSummary.tsx +0 -76
  159. package/src/config/endpoints.ts +0 -22
  160. package/src/core/ActionRegistry.ts +0 -105
  161. package/src/core/AgentRuntime.ts +0 -1471
  162. package/src/core/FiberTreeWalker.ts +0 -930
  163. package/src/core/IdleDetector.ts +0 -72
  164. package/src/core/MCPBridge.ts +0 -163
  165. package/src/core/ScreenDehydrator.ts +0 -53
  166. package/src/core/ZoneRegistry.ts +0 -44
  167. package/src/core/systemPrompt.ts +0 -431
  168. package/src/core/types.ts +0 -521
  169. package/src/hooks/useAction.ts +0 -182
  170. package/src/index.ts +0 -83
  171. package/src/plugin/withAppIntents.ts +0 -98
  172. package/src/providers/GeminiProvider.ts +0 -357
  173. package/src/providers/OpenAIProvider.ts +0 -379
  174. package/src/providers/ProviderFactory.ts +0 -36
  175. package/src/services/AudioInputService.ts +0 -226
  176. package/src/services/AudioOutputService.ts +0 -236
  177. package/src/services/KnowledgeBaseService.ts +0 -156
  178. package/src/services/VoiceService.ts +0 -451
  179. package/src/services/flags/FlagService.ts +0 -137
  180. package/src/services/telemetry/MobileAI.ts +0 -66
  181. package/src/services/telemetry/PiiScrubber.ts +0 -17
  182. package/src/services/telemetry/TelemetryService.ts +0 -323
  183. package/src/services/telemetry/TouchAutoCapture.ts +0 -165
  184. package/src/services/telemetry/device.ts +0 -93
  185. package/src/services/telemetry/deviceMetadata.ts +0 -13
  186. package/src/services/telemetry/index.ts +0 -13
  187. package/src/services/telemetry/types.ts +0 -75
  188. package/src/support/CSATSurvey.tsx +0 -304
  189. package/src/support/EscalationEventSource.ts +0 -190
  190. package/src/support/EscalationSocket.ts +0 -152
  191. package/src/support/SupportChatModal.tsx +0 -563
  192. package/src/support/SupportGreeting.tsx +0 -161
  193. package/src/support/TicketStore.ts +0 -100
  194. package/src/support/escalateTool.ts +0 -174
  195. package/src/support/index.ts +0 -29
  196. package/src/support/supportPrompt.ts +0 -55
  197. package/src/support/types.ts +0 -155
  198. package/src/tools/datePickerTool.ts +0 -60
  199. package/src/tools/guideTool.ts +0 -76
  200. package/src/tools/index.ts +0 -20
  201. package/src/tools/keyboardTool.ts +0 -30
  202. package/src/tools/longPressTool.ts +0 -61
  203. package/src/tools/pickerTool.ts +0 -115
  204. package/src/tools/restoreTool.ts +0 -33
  205. package/src/tools/scrollTool.ts +0 -156
  206. package/src/tools/simplifyTool.ts +0 -33
  207. package/src/tools/sliderTool.ts +0 -65
  208. package/src/tools/tapTool.ts +0 -93
  209. package/src/tools/typeTool.ts +0 -113
  210. package/src/tools/types.ts +0 -58
  211. package/src/types/jsx.d.ts +0 -20
  212. package/src/utils/audioUtils.ts +0 -54
  213. 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
- };