@volkansuner/aichat-react-native 0.1.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 (203) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +528 -0
  3. package/dist/AIChatSDK.d.ts +75 -0
  4. package/dist/AIChatSDK.d.ts.map +1 -0
  5. package/dist/AIChatSDK.js +357 -0
  6. package/dist/AIChatSDK.js.map +1 -0
  7. package/dist/components/AIChatProvider.d.ts +25 -0
  8. package/dist/components/AIChatProvider.d.ts.map +1 -0
  9. package/dist/components/AIChatProvider.js +93 -0
  10. package/dist/components/AIChatProvider.js.map +1 -0
  11. package/dist/components/AIChatWidget.d.ts +62 -0
  12. package/dist/components/AIChatWidget.d.ts.map +1 -0
  13. package/dist/components/AIChatWidget.handlers.d.ts +15 -0
  14. package/dist/components/AIChatWidget.handlers.d.ts.map +1 -0
  15. package/dist/components/AIChatWidget.handlers.js +180 -0
  16. package/dist/components/AIChatWidget.handlers.js.map +1 -0
  17. package/dist/components/AIChatWidget.js +403 -0
  18. package/dist/components/AIChatWidget.js.map +1 -0
  19. package/dist/components/AIChatWidget.styles.d.ts +17 -0
  20. package/dist/components/AIChatWidget.styles.d.ts.map +1 -0
  21. package/dist/components/AIChatWidget.styles.js +68 -0
  22. package/dist/components/AIChatWidget.styles.js.map +1 -0
  23. package/dist/components/AIChatWidget.types.d.ts +250 -0
  24. package/dist/components/AIChatWidget.types.d.ts.map +1 -0
  25. package/dist/components/AIChatWidget.types.js +3 -0
  26. package/dist/components/AIChatWidget.types.js.map +1 -0
  27. package/dist/components/AIChatWidget.utils.d.ts +12 -0
  28. package/dist/components/AIChatWidget.utils.d.ts.map +1 -0
  29. package/dist/components/AIChatWidget.utils.js +109 -0
  30. package/dist/components/AIChatWidget.utils.js.map +1 -0
  31. package/dist/components/ConfigError.d.ts +33 -0
  32. package/dist/components/ConfigError.d.ts.map +1 -0
  33. package/dist/components/ConfigError.js +195 -0
  34. package/dist/components/ConfigError.js.map +1 -0
  35. package/dist/components/FloatingButton.d.ts +12 -0
  36. package/dist/components/FloatingButton.d.ts.map +1 -0
  37. package/dist/components/FloatingButton.js +163 -0
  38. package/dist/components/FloatingButton.js.map +1 -0
  39. package/dist/components/InputArea.d.ts +58 -0
  40. package/dist/components/InputArea.d.ts.map +1 -0
  41. package/dist/components/InputArea.js +135 -0
  42. package/dist/components/InputArea.js.map +1 -0
  43. package/dist/components/MarkdownText.d.ts +16 -0
  44. package/dist/components/MarkdownText.d.ts.map +1 -0
  45. package/dist/components/MarkdownText.js +263 -0
  46. package/dist/components/MarkdownText.js.map +1 -0
  47. package/dist/components/MessageBubble.d.ts +101 -0
  48. package/dist/components/MessageBubble.d.ts.map +1 -0
  49. package/dist/components/MessageBubble.js +377 -0
  50. package/dist/components/MessageBubble.js.map +1 -0
  51. package/dist/components/NavigationSuggestion.d.ts +13 -0
  52. package/dist/components/NavigationSuggestion.d.ts.map +1 -0
  53. package/dist/components/NavigationSuggestion.js +117 -0
  54. package/dist/components/NavigationSuggestion.js.map +1 -0
  55. package/dist/components/QuickReplies.d.ts +15 -0
  56. package/dist/components/QuickReplies.d.ts.map +1 -0
  57. package/dist/components/QuickReplies.js +49 -0
  58. package/dist/components/QuickReplies.js.map +1 -0
  59. package/dist/components/TemplateRenderer.d.ts +17 -0
  60. package/dist/components/TemplateRenderer.d.ts.map +1 -0
  61. package/dist/components/TemplateRenderer.js +397 -0
  62. package/dist/components/TemplateRenderer.js.map +1 -0
  63. package/dist/components/TypingIndicator.d.ts +29 -0
  64. package/dist/components/TypingIndicator.d.ts.map +1 -0
  65. package/dist/components/TypingIndicator.js +110 -0
  66. package/dist/components/TypingIndicator.js.map +1 -0
  67. package/dist/components/defaults/DefaultCard.d.ts +15 -0
  68. package/dist/components/defaults/DefaultCard.d.ts.map +1 -0
  69. package/dist/components/defaults/DefaultCard.js +157 -0
  70. package/dist/components/defaults/DefaultCard.js.map +1 -0
  71. package/dist/components/defaults/DefaultDetail.d.ts +15 -0
  72. package/dist/components/defaults/DefaultDetail.d.ts.map +1 -0
  73. package/dist/components/defaults/DefaultDetail.js +139 -0
  74. package/dist/components/defaults/DefaultDetail.js.map +1 -0
  75. package/dist/components/defaults/DefaultList.d.ts +13 -0
  76. package/dist/components/defaults/DefaultList.d.ts.map +1 -0
  77. package/dist/components/defaults/DefaultList.js +99 -0
  78. package/dist/components/defaults/DefaultList.js.map +1 -0
  79. package/dist/components/defaults/DefaultTable.d.ts +15 -0
  80. package/dist/components/defaults/DefaultTable.d.ts.map +1 -0
  81. package/dist/components/defaults/DefaultTable.js +205 -0
  82. package/dist/components/defaults/DefaultTable.js.map +1 -0
  83. package/dist/components/defaults/index.d.ts +15 -0
  84. package/dist/components/defaults/index.d.ts.map +1 -0
  85. package/dist/components/defaults/index.js +26 -0
  86. package/dist/components/defaults/index.js.map +1 -0
  87. package/dist/components/index.d.ts +17 -0
  88. package/dist/components/index.d.ts.map +1 -0
  89. package/dist/components/index.js +33 -0
  90. package/dist/components/index.js.map +1 -0
  91. package/dist/constants.d.ts +41 -0
  92. package/dist/constants.d.ts.map +1 -0
  93. package/dist/constants.js +52 -0
  94. package/dist/constants.js.map +1 -0
  95. package/dist/hooks/useAIChatConfig.d.ts +61 -0
  96. package/dist/hooks/useAIChatConfig.d.ts.map +1 -0
  97. package/dist/hooks/useAIChatConfig.js +95 -0
  98. package/dist/hooks/useAIChatConfig.js.map +1 -0
  99. package/dist/hooks/useChatMessages.d.ts +27 -0
  100. package/dist/hooks/useChatMessages.d.ts.map +1 -0
  101. package/dist/hooks/useChatMessages.js +255 -0
  102. package/dist/hooks/useChatMessages.js.map +1 -0
  103. package/dist/hooks/useContextManager.d.ts +13 -0
  104. package/dist/hooks/useContextManager.d.ts.map +1 -0
  105. package/dist/hooks/useContextManager.js +42 -0
  106. package/dist/hooks/useContextManager.js.map +1 -0
  107. package/dist/hooks/useSDK.d.ts +18 -0
  108. package/dist/hooks/useSDK.d.ts.map +1 -0
  109. package/dist/hooks/useSDK.js +64 -0
  110. package/dist/hooks/useSDK.js.map +1 -0
  111. package/dist/index.d.ts +15 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +46 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/registry/TemplateRegistry.d.ts +48 -0
  116. package/dist/registry/TemplateRegistry.d.ts.map +1 -0
  117. package/dist/registry/TemplateRegistry.js +77 -0
  118. package/dist/registry/TemplateRegistry.js.map +1 -0
  119. package/dist/registry/index.d.ts +5 -0
  120. package/dist/registry/index.d.ts.map +1 -0
  121. package/dist/registry/index.js +9 -0
  122. package/dist/registry/index.js.map +1 -0
  123. package/dist/services/BackendService.d.ts +47 -0
  124. package/dist/services/BackendService.d.ts.map +1 -0
  125. package/dist/services/BackendService.js +362 -0
  126. package/dist/services/BackendService.js.map +1 -0
  127. package/dist/services/ConversationManager.d.ts +40 -0
  128. package/dist/services/ConversationManager.d.ts.map +1 -0
  129. package/dist/services/ConversationManager.js +95 -0
  130. package/dist/services/ConversationManager.js.map +1 -0
  131. package/dist/services/LocalAIClassifier.d.ts +32 -0
  132. package/dist/services/LocalAIClassifier.d.ts.map +1 -0
  133. package/dist/services/LocalAIClassifier.js +149 -0
  134. package/dist/services/LocalAIClassifier.js.map +1 -0
  135. package/dist/services/NavigationHandler.d.ts +30 -0
  136. package/dist/services/NavigationHandler.d.ts.map +1 -0
  137. package/dist/services/NavigationHandler.js +74 -0
  138. package/dist/services/NavigationHandler.js.map +1 -0
  139. package/dist/themes/dark.d.ts +6 -0
  140. package/dist/themes/dark.d.ts.map +1 -0
  141. package/dist/themes/dark.js +130 -0
  142. package/dist/themes/dark.js.map +1 -0
  143. package/dist/themes/index.d.ts +13 -0
  144. package/dist/themes/index.d.ts.map +1 -0
  145. package/dist/themes/index.js +34 -0
  146. package/dist/themes/index.js.map +1 -0
  147. package/dist/themes/light.d.ts +6 -0
  148. package/dist/themes/light.d.ts.map +1 -0
  149. package/dist/themes/light.js +130 -0
  150. package/dist/themes/light.js.map +1 -0
  151. package/dist/themes/types.d.ts +143 -0
  152. package/dist/themes/types.d.ts.map +1 -0
  153. package/dist/themes/types.js +6 -0
  154. package/dist/themes/types.js.map +1 -0
  155. package/dist/types/api.d.ts +118 -0
  156. package/dist/types/api.d.ts.map +1 -0
  157. package/dist/types/api.js +6 -0
  158. package/dist/types/api.js.map +1 -0
  159. package/dist/types/chat.d.ts +154 -0
  160. package/dist/types/chat.d.ts.map +1 -0
  161. package/dist/types/chat.js +6 -0
  162. package/dist/types/chat.js.map +1 -0
  163. package/dist/types/components.d.ts +69 -0
  164. package/dist/types/components.d.ts.map +1 -0
  165. package/dist/types/components.js +17 -0
  166. package/dist/types/components.js.map +1 -0
  167. package/dist/types/config.d.ts +122 -0
  168. package/dist/types/config.d.ts.map +1 -0
  169. package/dist/types/config.js +18 -0
  170. package/dist/types/config.js.map +1 -0
  171. package/dist/types/document.d.ts +108 -0
  172. package/dist/types/document.d.ts.map +1 -0
  173. package/dist/types/document.js +7 -0
  174. package/dist/types/document.js.map +1 -0
  175. package/dist/types/index.d.ts +14 -0
  176. package/dist/types/index.d.ts.map +1 -0
  177. package/dist/types/index.js +31 -0
  178. package/dist/types/index.js.map +1 -0
  179. package/dist/types/local-ai.d.ts +48 -0
  180. package/dist/types/local-ai.d.ts.map +1 -0
  181. package/dist/types/local-ai.js +17 -0
  182. package/dist/types/local-ai.js.map +1 -0
  183. package/dist/types/navigation.d.ts +89 -0
  184. package/dist/types/navigation.d.ts.map +1 -0
  185. package/dist/types/navigation.js +6 -0
  186. package/dist/types/navigation.js.map +1 -0
  187. package/dist/types/sdk.d.ts +47 -0
  188. package/dist/types/sdk.d.ts.map +1 -0
  189. package/dist/types/sdk.js +6 -0
  190. package/dist/types/sdk.js.map +1 -0
  191. package/dist/types/template.d.ts +220 -0
  192. package/dist/types/template.d.ts.map +1 -0
  193. package/dist/types/template.js +8 -0
  194. package/dist/types/template.js.map +1 -0
  195. package/dist/utils/configLoader.d.ts +69 -0
  196. package/dist/utils/configLoader.d.ts.map +1 -0
  197. package/dist/utils/configLoader.js +278 -0
  198. package/dist/utils/configLoader.js.map +1 -0
  199. package/dist/utils/deepMerge.d.ts +47 -0
  200. package/dist/utils/deepMerge.d.ts.map +1 -0
  201. package/dist/utils/deepMerge.js +71 -0
  202. package/dist/utils/deepMerge.js.map +1 -0
  203. package/package.json +65 -0
@@ -0,0 +1,357 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getSDK = exports.AIChatSDK = void 0;
7
+ const async_storage_1 = __importDefault(require("@react-native-async-storage/async-storage"));
8
+ const LocalAIClassifier_1 = require("./services/LocalAIClassifier");
9
+ const BackendService_1 = require("./services/BackendService");
10
+ const ConversationManager_1 = require("./services/ConversationManager");
11
+ const NavigationHandler_1 = require("./services/NavigationHandler");
12
+ /**
13
+ * AIChatSDK - Main SDK class
14
+ * Provides AI-powered conversational interface for React Native apps
15
+ */
16
+ class AIChatSDK {
17
+ static instance = null;
18
+ config = null;
19
+ status = 'uninitialized';
20
+ localAI = null;
21
+ backendService = null;
22
+ conversationManager = null;
23
+ navigationHandler = null;
24
+ constructor() { }
25
+ /**
26
+ * Get singleton instance
27
+ */
28
+ static getInstance() {
29
+ if (!AIChatSDK.instance) {
30
+ AIChatSDK.instance = new AIChatSDK();
31
+ }
32
+ return AIChatSDK.instance;
33
+ }
34
+ /**
35
+ * Initialize SDK
36
+ */
37
+ async initialize(config) {
38
+ if (this.status === 'ready') {
39
+ console.warn('AIChatSDK is already initialized');
40
+ return;
41
+ }
42
+ this.status = 'initializing';
43
+ this.config = config;
44
+ try {
45
+ // Resolve API key (support both single key and multiple keys)
46
+ const apiKey = this.resolveApiKey(config);
47
+ if (!apiKey) {
48
+ throw new Error('No API key found. Please provide either config.apiKey or config.keys');
49
+ }
50
+ // Save config to storage
51
+ await async_storage_1.default.setItem('@aichat/config', JSON.stringify(config));
52
+ // Initialize services
53
+ this.backendService = new BackendService_1.BackendService(apiKey, config.apiUrl);
54
+ this.conversationManager = new ConversationManager_1.ConversationManager();
55
+ this.navigationHandler = new NavigationHandler_1.NavigationHandler(config.navigationRef);
56
+ // Initialize local AI if enabled
57
+ if (config.enableLocalAI !== false) {
58
+ this.localAI = new LocalAIClassifier_1.LocalAIClassifier(config.localAI);
59
+ await this.localAI.initialize();
60
+ }
61
+ this.status = 'ready';
62
+ if (config.onStatusChange) {
63
+ config.onStatusChange('ready');
64
+ }
65
+ console.log('✅ AIChatSDK initialized successfully');
66
+ }
67
+ catch (error) {
68
+ this.status = 'error';
69
+ if (config.onStatusChange) {
70
+ config.onStatusChange('error');
71
+ }
72
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
73
+ throw new Error(`Failed to initialize AIChatSDK: ${errorMessage}`);
74
+ }
75
+ }
76
+ /**
77
+ * Send a chat message
78
+ */
79
+ async sendMessage(message, context, contextDescription) {
80
+ if (this.status !== 'ready') {
81
+ throw new Error('SDK not initialized. Call initialize() first.');
82
+ }
83
+ if (!message.trim()) {
84
+ throw new Error('Message cannot be empty');
85
+ }
86
+ try {
87
+ // Add user message to conversation
88
+ const userMessage = {
89
+ id: this.generateId(),
90
+ role: 'user',
91
+ text: message,
92
+ content: message,
93
+ timestamp: new Date(),
94
+ };
95
+ this.conversationManager?.addMessage(userMessage);
96
+ // Try local AI first if enabled
97
+ if (this.localAI && this.config?.enableLocalAI !== false) {
98
+ const localResult = await this.localAI.classify(message);
99
+ // If confidence is high enough, handle locally
100
+ if (localResult.confidence >= (this.config?.localAI?.confidenceThreshold || 0.85)) {
101
+ const response = await this.handleLocalResponse(message, localResult);
102
+ // Add to conversation
103
+ this.conversationManager?.addMessage({
104
+ id: this.generateId(),
105
+ role: 'assistant',
106
+ text: response.text || response.message || '',
107
+ content: response.text || response.message || '',
108
+ timestamp: response.timestamp,
109
+ metadata: {
110
+ handledBy: 'local',
111
+ confidence: localResult.confidence,
112
+ },
113
+ });
114
+ return response;
115
+ }
116
+ }
117
+ // Fall back to backend
118
+ const sessionId = await this.conversationManager?.getSessionId() || this.generateId();
119
+ const response = await this.backendService.sendMessage(message, sessionId, context, contextDescription);
120
+ // Add to conversation
121
+ this.conversationManager?.addMessage({
122
+ id: response.id,
123
+ role: 'assistant',
124
+ text: response.message || response.text || '',
125
+ content: response.message || response.text || '',
126
+ timestamp: response.timestamp,
127
+ metadata: {
128
+ handledBy: 'backend',
129
+ confidence: response.confidence,
130
+ tokensUsed: response.tokensUsed,
131
+ },
132
+ });
133
+ // Handle navigation if suggested
134
+ if (response.navigationSuggestion && this.config?.onNavigationSuggest) {
135
+ this.config.onNavigationSuggest(response.navigationSuggestion);
136
+ }
137
+ return response;
138
+ }
139
+ catch (error) {
140
+ console.error('Error sending message:', error);
141
+ throw error;
142
+ }
143
+ }
144
+ /**
145
+ * 🆕 Send message with streaming response
146
+ */
147
+ async sendMessageStream(message, onChunk, onComplete, onError, context, contextDescription, onToolSuggestions // 🆕 Tool suggestions callback
148
+ ) {
149
+ if (this.status !== 'ready') {
150
+ throw new Error('SDK not initialized. Call initialize() first.');
151
+ }
152
+ if (!message.trim()) {
153
+ throw new Error('Message cannot be empty');
154
+ }
155
+ try {
156
+ // Add user message to conversation
157
+ const userMessage = {
158
+ id: this.generateId(),
159
+ role: 'user',
160
+ text: message,
161
+ content: message,
162
+ timestamp: new Date(),
163
+ };
164
+ this.conversationManager?.addMessage(userMessage);
165
+ // Skip local AI for streaming, always use backend
166
+ const sessionId = await this.conversationManager?.getSessionId() || this.generateId();
167
+ await this.backendService.sendMessageStream(message, sessionId, onChunk, (response) => {
168
+ // Add to conversation
169
+ this.conversationManager?.addMessage({
170
+ id: response.id,
171
+ role: 'assistant',
172
+ text: response.message || response.text || '',
173
+ content: response.message || response.text || '',
174
+ timestamp: response.timestamp,
175
+ metadata: {
176
+ handledBy: 'backend',
177
+ confidence: response.confidence,
178
+ tokensUsed: response.tokensUsed,
179
+ },
180
+ });
181
+ // Handle navigation if suggested
182
+ if (response.navigationSuggestion && this.config?.onNavigationSuggest) {
183
+ this.config.onNavigationSuggest(response.navigationSuggestion);
184
+ }
185
+ onComplete?.(response);
186
+ }, (error) => {
187
+ console.error('Stream error:', error);
188
+ onError?.(error);
189
+ }, context, contextDescription, onToolSuggestions // 🆕 Pass tool suggestions callback
190
+ );
191
+ }
192
+ catch (error) {
193
+ console.error('Error sending streaming message:', error);
194
+ if (onError) {
195
+ onError(error instanceof Error ? error : new Error('Unknown error'));
196
+ }
197
+ else {
198
+ throw error;
199
+ }
200
+ }
201
+ }
202
+ /**
203
+ * Handle local AI response
204
+ */
205
+ async handleLocalResponse(_message, classification) {
206
+ // Simple local responses based on intent
207
+ let responseText = '';
208
+ let navigationSuggestion;
209
+ switch (classification.intent) {
210
+ case 'navigate':
211
+ responseText = 'I can help you navigate there.';
212
+ navigationSuggestion = classification.entities?.screen
213
+ ? {
214
+ screenName: classification.entities.screen,
215
+ route: classification.entities.screen,
216
+ confidence: classification.confidence,
217
+ confirmed: true,
218
+ message: `Navigate to ${classification.entities.screen}`,
219
+ }
220
+ : undefined;
221
+ break;
222
+ case 'search':
223
+ responseText = 'Let me help you search for that.';
224
+ break;
225
+ case 'general':
226
+ responseText = 'How can I assist you?';
227
+ break;
228
+ default:
229
+ responseText = 'I understand. How can I help?';
230
+ }
231
+ return {
232
+ id: this.generateId(),
233
+ text: responseText,
234
+ message: responseText,
235
+ timestamp: new Date(),
236
+ handledBy: 'local',
237
+ handled: 'local',
238
+ confidence: classification.confidence,
239
+ navigationSuggestion,
240
+ };
241
+ }
242
+ /**
243
+ * Get conversation history
244
+ */
245
+ async getConversationHistory() {
246
+ if (!this.conversationManager) {
247
+ throw new Error('SDK not initialized');
248
+ }
249
+ return this.conversationManager.getHistory();
250
+ }
251
+ /**
252
+ * Clear conversation history
253
+ */
254
+ async clearConversation() {
255
+ if (!this.conversationManager) {
256
+ throw new Error('SDK not initialized');
257
+ }
258
+ await this.conversationManager.clear();
259
+ }
260
+ /**
261
+ * 🆕 Add tool response to conversation
262
+ * Use this after executing a tool to display the results
263
+ */
264
+ addToolResponse(toolKey, data, tool) {
265
+ if (!this.conversationManager) {
266
+ throw new Error('SDK not initialized');
267
+ }
268
+ const message = {
269
+ id: this.generateId(),
270
+ role: 'assistant',
271
+ text: '', // Will be rendered by component
272
+ content: '',
273
+ timestamp: new Date(),
274
+ toolResponse: {
275
+ toolKey,
276
+ data,
277
+ tool,
278
+ },
279
+ };
280
+ this.conversationManager.addMessage(message);
281
+ return message;
282
+ }
283
+ /**
284
+ * Get SDK status
285
+ */
286
+ getStatus() {
287
+ return this.status;
288
+ }
289
+ /**
290
+ * Get SDK configuration
291
+ */
292
+ getConfig() {
293
+ return this.config;
294
+ }
295
+ /**
296
+ * Navigate to screen
297
+ */
298
+ navigate(screenName, params) {
299
+ if (!this.navigationHandler) {
300
+ throw new Error('Navigation handler not initialized');
301
+ }
302
+ this.navigationHandler.navigate(screenName, params);
303
+ }
304
+ /**
305
+ * Generate unique ID
306
+ */
307
+ generateId() {
308
+ return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
309
+ }
310
+ /**
311
+ * Resolve API key from config
312
+ * Priority: config.apiKey > config.keys[platform] > config.keys.default
313
+ */
314
+ resolveApiKey(config) {
315
+ // 1. Direct apiKey (backward compatibility)
316
+ if (config.apiKey) {
317
+ return config.apiKey;
318
+ }
319
+ // 2. No keys object
320
+ if (!config.keys || Object.keys(config.keys).length === 0) {
321
+ return null;
322
+ }
323
+ // 3. Platform-specific key
324
+ if (config.platform && config.keys[config.platform]) {
325
+ return config.keys[config.platform];
326
+ }
327
+ // 4. Auto-detect platform
328
+ const Platform = require('react-native').Platform;
329
+ if (Platform.OS && config.keys[Platform.OS]) {
330
+ return config.keys[Platform.OS];
331
+ }
332
+ // 5. Fallback to 'default' or first available key
333
+ if (config.keys.default) {
334
+ return config.keys.default;
335
+ }
336
+ // Return first available key
337
+ const firstKey = Object.values(config.keys)[0];
338
+ return firstKey || null;
339
+ }
340
+ /**
341
+ * Destroy SDK instance
342
+ */
343
+ async destroy() {
344
+ await this.localAI?.destroy();
345
+ this.localAI = null;
346
+ this.backendService = null;
347
+ this.conversationManager = null;
348
+ this.navigationHandler = null;
349
+ this.status = 'uninitialized';
350
+ AIChatSDK.instance = null;
351
+ }
352
+ }
353
+ exports.AIChatSDK = AIChatSDK;
354
+ // Export singleton instance getter
355
+ const getSDK = () => AIChatSDK.getInstance();
356
+ exports.getSDK = getSDK;
357
+ //# sourceMappingURL=AIChatSDK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatSDK.js","sourceRoot":"","sources":["../src/AIChatSDK.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { Theme } from '../themes';
3
+ interface AIChatProviderProps {
4
+ apiKey: string;
5
+ apiUrl?: string;
6
+ theme?: 'light' | 'dark' | Theme;
7
+ mode?: 'floating' | 'fullscreen' | 'inline';
8
+ position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
9
+ enableLocalAI?: boolean;
10
+ onNavigationSuggest?: (suggestion: any) => void;
11
+ onNavigationAction?: (suggestion: any) => void;
12
+ onApiActionsSuggested?: (suggestions: any[]) => void;
13
+ onApiActionExecute?: (action: any, complete: (result: {
14
+ success: boolean;
15
+ data?: any;
16
+ error?: string;
17
+ }) => void) => void;
18
+ }
19
+ /**
20
+ * AIChatProvider - Main component that connects UI with SDK
21
+ * This is what users will import and use in their app
22
+ */
23
+ export declare function AIChatProvider({ apiKey, apiUrl, theme: themeProp, mode, position, enableLocalAI, onNavigationSuggest, onNavigationAction, onApiActionsSuggested, onApiActionExecute, }: AIChatProviderProps): React.JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=AIChatProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatProvider.d.ts","sourceRoot":"","sources":["../../src/components/AIChatProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,OAAO,EAAyB,KAAK,EAAE,MAAM,WAAW,CAAC;AAGzD,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;IACjC,IAAI,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC5C,QAAQ,CAAC,EAAE,cAAc,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,CAAC;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;IAChD,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/C,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACrD,kBAAkB,CAAC,EAAE,CACnB,MAAM,EAAE,GAAG,EACX,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,KACzE,IAAI,CAAC;CACX;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,MAAM,EACN,KAAK,EAAE,SAAmB,EAC1B,IAAiB,EACjB,QAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,GACnB,EAAE,mBAAmB,qBA+DrB"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.AIChatProvider = AIChatProvider;
37
+ const react_1 = __importStar(require("react"));
38
+ const AIChatWidget_1 = require("./AIChatWidget");
39
+ const FloatingButton_1 = require("./FloatingButton");
40
+ const themes_1 = require("../themes");
41
+ const react_native_1 = require("react-native");
42
+ /**
43
+ * AIChatProvider - Main component that connects UI with SDK
44
+ * This is what users will import and use in their app
45
+ */
46
+ function AIChatProvider({ apiKey, apiUrl, theme: themeProp = 'light', mode = 'floating', position = 'bottom-right', enableLocalAI, onNavigationSuggest, onNavigationAction, onApiActionsSuggested, onApiActionExecute, }) {
47
+ const [isOpen, setIsOpen] = (0, react_1.useState)(mode !== 'floating');
48
+ const [unreadCount, setUnreadCount] = (0, react_1.useState)(0);
49
+ // Get theme
50
+ const theme = typeof themeProp === 'string'
51
+ ? themeProp === 'dark'
52
+ ? themes_1.darkTheme
53
+ : themes_1.lightTheme
54
+ : themeProp;
55
+ // Handle opening chat
56
+ const handleToggle = () => {
57
+ setIsOpen((prev) => !prev);
58
+ if (!isOpen) {
59
+ setUnreadCount(0);
60
+ }
61
+ };
62
+ // Floating mode with button
63
+ if (mode === 'floating') {
64
+ return (<react_native_1.View style={styles.container} pointerEvents="box-none">
65
+ {isOpen && (<react_native_1.View style={styles.widgetContainer}>
66
+ <AIChatWidget_1.AIChatWidget apiKey={apiKey} apiUrl={apiUrl} theme={theme} enableLocalAI={enableLocalAI} onNavigationSuggest={onNavigationSuggest} onNavigationAction={onNavigationAction} onApiActionsSuggested={onApiActionsSuggested} onApiActionExecute={onApiActionExecute}/>
67
+ </react_native_1.View>)}
68
+ <FloatingButton_1.FloatingButton isOpen={isOpen} onPress={handleToggle} unreadCount={unreadCount} theme={theme} position={position}/>
69
+ </react_native_1.View>);
70
+ }
71
+ // Fullscreen or inline mode
72
+ return (<AIChatWidget_1.AIChatWidget apiKey={apiKey} apiUrl={apiUrl} theme={theme} mode={mode} enableLocalAI={enableLocalAI} onNavigationSuggest={onNavigationSuggest} onNavigationAction={onNavigationAction} onApiActionsSuggested={onApiActionsSuggested} onApiActionExecute={onApiActionExecute}/>);
73
+ }
74
+ const styles = react_native_1.StyleSheet.create({
75
+ container: {
76
+ ...react_native_1.StyleSheet.absoluteFillObject,
77
+ zIndex: 9999,
78
+ },
79
+ widgetContainer: {
80
+ position: 'absolute',
81
+ bottom: 100,
82
+ right: 24,
83
+ width: 360,
84
+ height: 600,
85
+ maxHeight: '80%',
86
+ shadowColor: '#000',
87
+ shadowOffset: { width: 0, height: 4 },
88
+ shadowOpacity: 0.3,
89
+ shadowRadius: 8,
90
+ elevation: 8,
91
+ },
92
+ });
93
+ //# sourceMappingURL=AIChatProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatProvider.js","sourceRoot":"","sources":["../../src/components/AIChatProvider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import React from 'react';
2
+ import { AIChatWidgetProps } from './AIChatWidget.types';
3
+ /**
4
+ * AIChatWidget Component
5
+ *
6
+ * Main chat widget component with full UI and functionality.
7
+ *
8
+ * 🚀 Zero-Config Support:
9
+ * All config props (apiKey, projectId, apiUrl) are OPTIONAL!
10
+ * SDK automatically loads from aichat.config.js or environment variables.
11
+ *
12
+ * Features:
13
+ * - Three display modes: fullscreen, inline, floating
14
+ * - Complete chat UI with message list and input
15
+ * - Integration with AIChatSDK for backend communication
16
+ * - Auto-loading theme from API (via projectId)
17
+ * - Theme support (light/dark) with overrides
18
+ * - Multi-key support (platform-specific API keys)
19
+ * - Typing indicators and streaming responses
20
+ * - Tool Registry integration
21
+ * - Message metadata display
22
+ * - Error handling with clear config errors
23
+ *
24
+ * @example Zero-config usage (recommended)
25
+ * ```tsx
26
+ * // Create aichat.config.js in project root:
27
+ * // module.exports = {
28
+ * // projectId: '68e4c834c62d2ff6533d6fb0',
29
+ * // keys: {
30
+ * // ios: 'aichat_pk_ios_xxx',
31
+ * // android: 'aichat_pk_android_xxx'
32
+ * // }
33
+ * // }
34
+ *
35
+ * <AIChatWidget />
36
+ * ```
37
+ *
38
+ * @example Explicit config
39
+ * ```tsx
40
+ * <AIChatWidget
41
+ * apiKey="aichat_pk_xxx"
42
+ * projectId="68e4c834c62d2ff6533d6fb0"
43
+ * mode="fullscreen"
44
+ * theme="light"
45
+ * title="AI Assistant"
46
+ * />
47
+ * ```
48
+ *
49
+ * @example With theme override
50
+ * ```tsx
51
+ * <AIChatWidget
52
+ * themeOverride={{
53
+ * colors: {
54
+ * userBubble: '#FF0000',
55
+ * userBubbleText: '#FFFFFF'
56
+ * }
57
+ * }}
58
+ * />
59
+ * ```
60
+ */
61
+ export declare function AIChatWidget({ style, apiKey: apiKeyProp, keys: keysProp, platform: platformProp, apiUrl: apiUrlProp, projectId: projectIdProp, mode, theme: themeName, customTheme, themeOverride, enableLocalAI, enableStreaming, context: userContext, contextDescription, components: customComponents, showMetadata, showTimestamps, placeholder, maxMessageLength, onReady, onMessageSent, onResponseReceived, onError, onNavigationSuggest, onNavigationAction, onApiActionsSuggested, onToolSuggested, onApiActionExecute, onApiActionSuggest, }: AIChatWidgetProps): React.JSX.Element;
62
+ //# sourceMappingURL=AIChatWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatWidget.d.ts","sourceRoot":"","sources":["../../src/components/AIChatWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAQ5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAmBzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,aAAa,EACxB,IAAmB,EACnB,KAAK,EAAE,SAAmB,EAC1B,WAAW,EACX,aAAa,EACb,aAAqB,EACrB,eAAsB,EACtB,OAAO,EAAE,WAAW,EACpB,kBAAkB,EAClB,UAAU,EAAE,gBAAgB,EAC5B,YAAoB,EACpB,cAAqB,EACrB,WAAiC,EACjC,gBAAsB,EACtB,OAAO,EACP,aAAa,EACb,kBAAkB,EAClB,OAAO,EACP,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GAEnB,EAAE,iBAAiB,qBAmZnB"}
@@ -0,0 +1,15 @@
1
+ import { ChatMessage } from '../types/chat';
2
+ import { ComponentRegistry } from '../types/components';
3
+ import { ApiActionResult } from './AIChatWidget.types';
4
+ export interface ActionHandlerOptions {
5
+ onNavigationAction?: (suggestion: any) => void;
6
+ onApiActionExecute?: (action: any, toolDefinition: any | null, mappedParameters: Record<string, any> | null, complete: (result: ApiActionResult) => void) => void;
7
+ onApiActionSuggest?: (suggestions: any[], executeAction: (actionId: string, result: any) => void) => void;
8
+ componentRegistry: ComponentRegistry;
9
+ setMessages: React.Dispatch<React.SetStateAction<ChatMessage[]>>;
10
+ }
11
+ /**
12
+ * Handle action button clicks
13
+ */
14
+ export declare const createActionHandler: (options: ActionHandlerOptions) => (action: any) => void;
15
+ //# sourceMappingURL=AIChatWidget.handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIChatWidget.handlers.d.ts","sourceRoot":"","sources":["../../src/components/AIChatWidget.handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/C,kBAAkB,CAAC,EAAE,CACnB,MAAM,EAAE,GAAG,EACX,cAAc,EAAE,GAAG,GAAG,IAAI,EAC1B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAC5C,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,KACxC,IAAI,CAAC;IACV,kBAAkB,CAAC,EAAE,CACnB,WAAW,EAAE,GAAG,EAAE,EAClB,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,KACnD,IAAI,CAAC;IACV,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;CAClE;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,oBAAoB,MASvD,QAAQ,GAAG,SAmBpB,CAAC"}