@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,255 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useChatMessages = void 0;
4
+ const react_1 = require("react");
5
+ const AIChatSDK_1 = require("../AIChatSDK");
6
+ const AIChatWidget_utils_1 = require("../components/AIChatWidget.utils");
7
+ /**
8
+ * Custom hook for managing chat messages and sending
9
+ */
10
+ const useChatMessages = ({ enableStreaming = true, context = {}, contextDescription, onMessageSent, onResponseReceived, onError, onNavigationSuggest, onApiActionsSuggested, onToolSuggested, }) => {
11
+ const [messages, setMessages] = (0, react_1.useState)([]);
12
+ const [isTyping, setIsTyping] = (0, react_1.useState)(false);
13
+ const [isSending, setIsSending] = (0, react_1.useState)(false);
14
+ const [streamingMessage, setStreamingMessage] = (0, react_1.useState)('');
15
+ const flatListRef = (0, react_1.useRef)(null);
16
+ // 🆕 Keep pending tool responses until AI message arrives
17
+ const pendingToolResponsesRef = (0, react_1.useRef)([]);
18
+ const scrollToBottom = (animated = true) => {
19
+ setTimeout(() => {
20
+ flatListRef.current?.scrollToEnd({ animated });
21
+ }, 100);
22
+ };
23
+ const handleSend = async (message) => {
24
+ if (isSending)
25
+ return;
26
+ setIsSending(true);
27
+ setIsTyping(true);
28
+ setStreamingMessage('');
29
+ // Add user message
30
+ const userMessage = {
31
+ id: Date.now().toString(),
32
+ role: 'user',
33
+ text: message,
34
+ content: message,
35
+ timestamp: new Date(),
36
+ };
37
+ setMessages((prev) => [...prev, userMessage]);
38
+ onMessageSent?.(message);
39
+ scrollToBottom();
40
+ try {
41
+ const sdk = AIChatSDK_1.AIChatSDK.getInstance();
42
+ if (enableStreaming) {
43
+ // ⏱️ Start timing for first chunk
44
+ const messageSentTime = performance.now();
45
+ let firstChunkReceived = false;
46
+ await sdk.sendMessageStream(message,
47
+ // onChunk
48
+ (chunk) => {
49
+ // ⏱️ Log time to first chunk (TTFC)
50
+ if (!firstChunkReceived) {
51
+ const ttfc = performance.now() - messageSentTime;
52
+ console.log(`⚡ Time to First Chunk (TTFC): ${ttfc.toFixed(2)}ms`);
53
+ firstChunkReceived = true;
54
+ }
55
+ // 🔧 Her chunk geldiğinde birleşmiş metne ekle
56
+ setStreamingMessage((prevMessage) => {
57
+ const updatedMessage = prevMessage + chunk;
58
+ // 🔧 Birleşmiş metin üzerinde tüm backend marker'larını filtrele
59
+ const cleanedMessage = updatedMessage
60
+ .replace(/__NAVIGATE__/g, '') // Simple navigation marker
61
+ .replace(/__NAVIGATION__:[^\n]*/g, '') // Navigation with JSON data
62
+ .replace(/__TOOL__:[^\n]*/g, '') // Tool marker with key
63
+ .replace(/__PARAMS__:[^\n]*/g, '') // Tool marker with key
64
+ .replace(/__ERROR__:[^\n]*/g, '') // Error marker
65
+ .trim();
66
+ return cleanedMessage;
67
+ });
68
+ scrollToBottom();
69
+ },
70
+ // onComplete
71
+ (response) => {
72
+ setIsTyping(false);
73
+ setStreamingMessage('');
74
+ const actionButtons = (0, AIChatWidget_utils_1.buildActionButtons)(response);
75
+ // 🔧 Clean final message from any remaining markers
76
+ let finalMessage = response.message || response.text || '';
77
+ finalMessage = finalMessage
78
+ .replace(/__NAVIGATE__/g, '') // Simple navigation marker
79
+ .replace(/__NAVIGATION__:[^\n]*/g, '') // Navigation with JSON data
80
+ .replace(/__TOOL__:[^\n]*/g, '') // Tool marker with key
81
+ .replace(/__PARAMS__:[^\n]*/g, '') // Tool marker with key
82
+ .replace(/__ERROR__:[^\n]*/g, '') // Error marker
83
+ .trim();
84
+ const aiMessage = {
85
+ id: response.id,
86
+ role: 'assistant',
87
+ text: finalMessage,
88
+ content: finalMessage,
89
+ timestamp: new Date(response.timestamp),
90
+ actions: actionButtons.length > 0 ? actionButtons : undefined,
91
+ metadata: {
92
+ handledBy: 'backend',
93
+ confidence: response.confidence,
94
+ tokensUsed: response.tokensUsed,
95
+ },
96
+ };
97
+ setMessages((prev) => [...prev, aiMessage]);
98
+ onResponseReceived?.(response);
99
+ // 🆕 Process pending tool responses now that AI message has arrived
100
+ if (pendingToolResponsesRef.current.length > 0) {
101
+ console.log('🔄 Processing pending tool responses:', pendingToolResponsesRef.current.length);
102
+ pendingToolResponsesRef.current.forEach(({ toolKey, data, tool }) => {
103
+ const position = tool?.response?.position || 'after';
104
+ if (position === 'before') {
105
+ // Add tool message BEFORE the AI message we just added
106
+ setMessages((prev) => {
107
+ const toolMessage = {
108
+ id: Date.now().toString() + '_tool',
109
+ role: 'assistant',
110
+ text: '',
111
+ content: '',
112
+ timestamp: new Date(),
113
+ toolResponse: { toolKey, data, tool },
114
+ };
115
+ // Insert before last message (which is the AI message)
116
+ return [...prev.slice(0, -1), toolMessage, prev[prev.length - 1]];
117
+ });
118
+ }
119
+ else {
120
+ // Merge tool response with the AI message we just added
121
+ setMessages((prev) => {
122
+ const lastMessage = prev[prev.length - 1];
123
+ const updatedMessage = {
124
+ ...lastMessage,
125
+ toolResponse: { toolKey, data, tool },
126
+ };
127
+ console.log('✅ Merged tool with AI message:', toolKey);
128
+ return [...prev.slice(0, -1), updatedMessage];
129
+ });
130
+ }
131
+ const sdk = AIChatSDK_1.AIChatSDK.getInstance();
132
+ sdk.addToolResponse(toolKey, data, tool);
133
+ });
134
+ // Clear pending queue
135
+ pendingToolResponsesRef.current = [];
136
+ // Scroll after tool responses are processed
137
+ scrollToBottom();
138
+ }
139
+ // Handle navigation suggestion
140
+ if (response.navigationSuggestion && onNavigationSuggest) {
141
+ console.log('🧭 Navigation suggested:', response.navigationSuggestion.screenName);
142
+ onNavigationSuggest(response.navigationSuggestion);
143
+ }
144
+ // Handle API suggestions
145
+ if (response.apiSuggestions && response.apiSuggestions.length > 0) {
146
+ console.log(`🔌 ${response.apiSuggestions.length} API actions available`);
147
+ if (onApiActionsSuggested) {
148
+ onApiActionsSuggested(response.apiSuggestions);
149
+ }
150
+ }
151
+ setIsSending(false);
152
+ },
153
+ // onError
154
+ (err) => {
155
+ handleError(err);
156
+ }, context, contextDescription,
157
+ // onToolSuggested
158
+ async (tools) => {
159
+ console.log('🛠️ Tool suggestions received:', tools);
160
+ if (onToolSuggested) {
161
+ const addToolResponseToWidget = (toolKey, data, tool) => {
162
+ console.log('🔧 Adding tool response to widget:', {
163
+ toolKey,
164
+ tool,
165
+ position: tool?.response?.position
166
+ });
167
+ // 🔧 Try to add to existing AI message first
168
+ setMessages((prev) => {
169
+ // Check if we already have an assistant message (streaming completed)
170
+ const lastMsg = prev[prev.length - 1];
171
+ if (lastMsg && lastMsg.role === 'assistant' && !lastMsg.toolResponse) {
172
+ // AI message exists, merge tool response immediately
173
+ console.log('✅ Merging tool response with existing AI message');
174
+ const updatedMsg = {
175
+ ...lastMsg,
176
+ toolResponse: { toolKey, data, tool },
177
+ };
178
+ return [...prev.slice(0, -1), updatedMsg];
179
+ }
180
+ else {
181
+ // AI message doesn't exist yet, add to pending queue
182
+ console.log('📦 AI message not ready yet, adding to pending queue');
183
+ pendingToolResponsesRef.current.push({ toolKey, data, tool });
184
+ return prev; // No change yet
185
+ }
186
+ });
187
+ console.log('📦 Current pending queue size:', pendingToolResponsesRef.current.length);
188
+ // Register in SDK
189
+ const sdk = AIChatSDK_1.AIChatSDK.getInstance();
190
+ sdk.addToolResponse(toolKey, data, tool);
191
+ };
192
+ // ⚠️ CRITICAL: Wait for tool processing before continuing
193
+ console.log('⏳ Waiting for tool processing to complete...');
194
+ await onToolSuggested(tools, addToolResponseToWidget);
195
+ console.log('✅ Tool processing completed');
196
+ }
197
+ });
198
+ }
199
+ else {
200
+ // Non-streaming
201
+ const response = await sdk.sendMessage(message, context, contextDescription);
202
+ const aiMessage = {
203
+ id: response.id,
204
+ role: 'assistant',
205
+ text: response.message || response.text || '',
206
+ content: response.message || response.text || '',
207
+ timestamp: new Date(response.timestamp),
208
+ metadata: {
209
+ handledBy: response.handledBy || response.handled,
210
+ confidence: response.confidence,
211
+ tokensUsed: response.tokensUsed,
212
+ },
213
+ };
214
+ setMessages((prev) => [...prev, aiMessage]);
215
+ onResponseReceived?.(response);
216
+ if (response.navigationSuggestion && onNavigationSuggest) {
217
+ console.log('🧭 Navigation suggested:', response.navigationSuggestion);
218
+ onNavigationSuggest(response.navigationSuggestion);
219
+ }
220
+ scrollToBottom();
221
+ setIsTyping(false);
222
+ setIsSending(false);
223
+ }
224
+ }
225
+ catch (err) {
226
+ handleError(err);
227
+ }
228
+ };
229
+ const handleError = (err) => {
230
+ setIsTyping(false);
231
+ setStreamingMessage('');
232
+ setIsSending(false);
233
+ const errorMessage = err.message || 'Unknown error';
234
+ onError?.(err instanceof Error ? err : new Error(errorMessage));
235
+ const errorMsg = {
236
+ id: Date.now().toString(),
237
+ role: 'assistant',
238
+ text: '❌ Sorry, an error occurred. Please try again.',
239
+ content: '❌ Sorry, an error occurred. Please try again.',
240
+ timestamp: new Date(),
241
+ };
242
+ setMessages((prev) => [...prev, errorMsg]);
243
+ };
244
+ return {
245
+ messages,
246
+ isTyping,
247
+ isSending,
248
+ streamingMessage,
249
+ flatListRef,
250
+ handleSend,
251
+ setMessages,
252
+ };
253
+ };
254
+ exports.useChatMessages = useChatMessages;
255
+ //# sourceMappingURL=useChatMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChatMessages.js","sourceRoot":"","sources":["../../src/hooks/useChatMessages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface UseContextManagerOptions {
2
+ initialContext?: Record<string, any>;
3
+ debounceMs?: number;
4
+ }
5
+ export interface UseContextManagerResult {
6
+ currentContext: Record<string, any>;
7
+ updateContext: (newContext: Record<string, any>) => void;
8
+ }
9
+ /**
10
+ * Custom hook for managing context with debouncing
11
+ */
12
+ export declare const useContextManager: ({ initialContext, debounceMs, }?: UseContextManagerOptions) => UseContextManagerResult;
13
+ //# sourceMappingURL=useContextManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useContextManager.d.ts","sourceRoot":"","sources":["../../src/hooks/useContextManager.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,wBAAwB;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CAC1D;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,kCAG/B,wBAA6B,KAAG,uBAqClC,CAAC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useContextManager = void 0;
4
+ const react_1 = require("react");
5
+ /**
6
+ * Custom hook for managing context with debouncing
7
+ */
8
+ const useContextManager = ({ initialContext = {}, debounceMs = 500, } = {}) => {
9
+ const [currentContext, setCurrentContext] = (0, react_1.useState)(initialContext);
10
+ const debounceTimer = (0, react_1.useRef)(null);
11
+ const updateContext = (newContext) => {
12
+ // Clear existing timer
13
+ if (debounceTimer.current) {
14
+ clearTimeout(debounceTimer.current);
15
+ }
16
+ // Set new timer
17
+ debounceTimer.current = setTimeout(() => {
18
+ console.log('🔄 Context updated:', newContext);
19
+ setCurrentContext(newContext);
20
+ }, debounceMs);
21
+ };
22
+ // Cleanup on unmount
23
+ (0, react_1.useEffect)(() => {
24
+ return () => {
25
+ if (debounceTimer.current) {
26
+ clearTimeout(debounceTimer.current);
27
+ }
28
+ };
29
+ }, []);
30
+ // Handle external context updates
31
+ (0, react_1.useEffect)(() => {
32
+ if (initialContext) {
33
+ updateContext(initialContext);
34
+ }
35
+ }, [initialContext]);
36
+ return {
37
+ currentContext,
38
+ updateContext,
39
+ };
40
+ };
41
+ exports.useContextManager = useContextManager;
42
+ //# sourceMappingURL=useContextManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useContextManager.js","sourceRoot":"","sources":["../../src/hooks/useContextManager.ts"],"names":[],"mappings":";;;AAAA,iCAAoD;AAYpD;;GAEG;AACI,MAAM,iBAAiB,GAAG,CAAC,EAChC,cAAc,GAAG,EAAE,EACnB,UAAU,GAAG,GAAG,MACY,EAAE,EAA2B,EAAE;IAC3D,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAsB,cAAc,CAAC,CAAC;IAC1F,MAAM,aAAa,GAAG,IAAA,cAAM,EAAwB,IAAI,CAAC,CAAC;IAE1D,MAAM,aAAa,GAAG,CAAC,UAA+B,EAAE,EAAE;QACxD,uBAAuB;QACvB,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YAC1B,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QAED,gBAAgB;QAChB,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACtC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;YAC/C,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC,EAAE,UAAU,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,qBAAqB;IACrB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC1B,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,kCAAkC;IAClC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,cAAc,EAAE,CAAC;YACnB,aAAa,CAAC,cAAc,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,OAAO;QACL,cAAc;QACd,aAAa;KACd,CAAC;AACJ,CAAC,CAAC;AAxCW,QAAA,iBAAiB,qBAwC5B"}
@@ -0,0 +1,18 @@
1
+ export interface UseSDKOptions {
2
+ apiKey: string;
3
+ apiUrl?: string;
4
+ enableLocalAI?: boolean;
5
+ onReady?: () => void;
6
+ onError?: (error: Error) => void;
7
+ }
8
+ export interface UseSDKResult {
9
+ sdkReady: boolean;
10
+ error: string | null;
11
+ initializeSDK: () => Promise<void>;
12
+ loadHistory: () => Promise<any[]>;
13
+ }
14
+ /**
15
+ * Custom hook for managing SDK initialization and lifecycle
16
+ */
17
+ export declare const useSDK: ({ apiKey, apiUrl, enableLocalAI, onReady, onError, }: UseSDKOptions) => UseSDKResult;
18
+ //# sourceMappingURL=useSDK.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSDK.d.ts","sourceRoot":"","sources":["../../src/hooks/useSDK.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,WAAW,EAAE,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,sDAMpB,aAAa,KAAG,YAwDlB,CAAC"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSDK = void 0;
4
+ const react_1 = require("react");
5
+ const AIChatSDK_1 = require("../AIChatSDK");
6
+ /**
7
+ * Custom hook for managing SDK initialization and lifecycle
8
+ */
9
+ const useSDK = ({ apiKey, apiUrl, enableLocalAI, onReady, onError, }) => {
10
+ const [sdkReady, setSdkReady] = (0, react_1.useState)(false);
11
+ const [error, setError] = (0, react_1.useState)(null);
12
+ const initializeSDK = async () => {
13
+ try {
14
+ const sdk = AIChatSDK_1.AIChatSDK.getInstance();
15
+ const status = sdk.getStatus();
16
+ if (status === 'ready') {
17
+ setSdkReady(true);
18
+ onReady?.();
19
+ return;
20
+ }
21
+ await sdk.initialize({
22
+ apiKey,
23
+ apiUrl,
24
+ enableLocalAI,
25
+ onStatusChange: (status) => {
26
+ if (status === 'ready') {
27
+ setSdkReady(true);
28
+ onReady?.();
29
+ }
30
+ else if (status === 'error') {
31
+ setError('Failed to initialize SDK');
32
+ onError?.(new Error('SDK initialization failed'));
33
+ }
34
+ },
35
+ });
36
+ }
37
+ catch (err) {
38
+ const errorMessage = err instanceof Error ? err.message : 'Unknown error';
39
+ setError(errorMessage);
40
+ onError?.(err instanceof Error ? err : new Error(errorMessage));
41
+ }
42
+ };
43
+ const loadHistory = async () => {
44
+ try {
45
+ const sdk = AIChatSDK_1.AIChatSDK.getInstance();
46
+ return await sdk.getConversationHistory();
47
+ }
48
+ catch (err) {
49
+ console.error('Error loading history:', err);
50
+ return [];
51
+ }
52
+ };
53
+ (0, react_1.useEffect)(() => {
54
+ initializeSDK();
55
+ }, []);
56
+ return {
57
+ sdkReady,
58
+ error,
59
+ initializeSDK,
60
+ loadHistory,
61
+ };
62
+ };
63
+ exports.useSDK = useSDK;
64
+ //# sourceMappingURL=useSDK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSDK.js","sourceRoot":"","sources":["../../src/hooks/useSDK.ts"],"names":[],"mappings":";;;AAAA,iCAA4C;AAC5C,4CAAyC;AAiBzC;;GAEG;AACI,MAAM,MAAM,GAAG,CAAC,EACrB,MAAM,EACN,MAAM,EACN,aAAa,EACb,OAAO,EACP,OAAO,GACO,EAAgB,EAAE;IAChC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,qBAAS,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;YAE/B,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,WAAW,CAAC,IAAI,CAAC,CAAC;gBAClB,OAAO,EAAE,EAAE,CAAC;gBACZ,OAAO;YACT,CAAC;YAED,MAAM,GAAG,CAAC,UAAU,CAAC;gBACnB,MAAM;gBACN,MAAM;gBACN,aAAa;gBACb,cAAc,EAAE,CAAC,MAAc,EAAE,EAAE;oBACjC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;wBACvB,WAAW,CAAC,IAAI,CAAC,CAAC;wBAClB,OAAO,EAAE,EAAE,CAAC;oBACd,CAAC;yBAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;wBAC9B,QAAQ,CAAC,0BAA0B,CAAC,CAAC;wBACrC,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC1E,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO,EAAE,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,IAAoB,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,qBAAS,CAAC,WAAW,EAAE,CAAC;YACpC,OAAO,MAAM,GAAG,CAAC,sBAAsB,EAAE,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,aAAa,EAAE,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,QAAQ;QACR,KAAK;QACL,aAAa;QACb,WAAW;KACZ,CAAC;AACJ,CAAC,CAAC;AA9DW,QAAA,MAAM,UA8DjB"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * AIChatSDK for React Native
3
+ * AI-powered conversational interface with navigation intelligence
4
+ */
5
+ export { AIChatSDK, getSDK } from './AIChatSDK';
6
+ export * from './components';
7
+ export * from './themes';
8
+ export { BackendService } from './services/BackendService';
9
+ export { LocalAIClassifier } from './services/LocalAIClassifier';
10
+ export { ConversationManager } from './services/ConversationManager';
11
+ export { NavigationHandler } from './services/NavigationHandler';
12
+ export * from './registry';
13
+ export * from './types';
14
+ export * from './constants';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGhD,cAAc,cAAc,CAAC;AAG7B,cAAc,UAAU,CAAC;AAGzB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGjE,cAAc,YAAY,CAAC;AAI3B,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /**
3
+ * AIChatSDK for React Native
4
+ * AI-powered conversational interface with navigation intelligence
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.NavigationHandler = exports.ConversationManager = exports.LocalAIClassifier = exports.BackendService = exports.getSDK = exports.AIChatSDK = void 0;
22
+ // Main SDK export
23
+ var AIChatSDK_1 = require("./AIChatSDK");
24
+ Object.defineProperty(exports, "AIChatSDK", { enumerable: true, get: function () { return AIChatSDK_1.AIChatSDK; } });
25
+ Object.defineProperty(exports, "getSDK", { enumerable: true, get: function () { return AIChatSDK_1.getSDK; } });
26
+ // UI Components
27
+ __exportStar(require("./components"), exports);
28
+ // Theme System
29
+ __exportStar(require("./themes"), exports);
30
+ // Services
31
+ var BackendService_1 = require("./services/BackendService");
32
+ Object.defineProperty(exports, "BackendService", { enumerable: true, get: function () { return BackendService_1.BackendService; } });
33
+ var LocalAIClassifier_1 = require("./services/LocalAIClassifier");
34
+ Object.defineProperty(exports, "LocalAIClassifier", { enumerable: true, get: function () { return LocalAIClassifier_1.LocalAIClassifier; } });
35
+ var ConversationManager_1 = require("./services/ConversationManager");
36
+ Object.defineProperty(exports, "ConversationManager", { enumerable: true, get: function () { return ConversationManager_1.ConversationManager; } });
37
+ var NavigationHandler_1 = require("./services/NavigationHandler");
38
+ Object.defineProperty(exports, "NavigationHandler", { enumerable: true, get: function () { return NavigationHandler_1.NavigationHandler; } });
39
+ // Registry
40
+ __exportStar(require("./registry"), exports);
41
+ // Export types
42
+ // Export types
43
+ __exportStar(require("./types"), exports);
44
+ // Export constants
45
+ __exportStar(require("./constants"), exports);
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,kBAAkB;AAClB,yCAAgD;AAAvC,sGAAA,SAAS,OAAA;AAAE,mGAAA,MAAM,OAAA;AAE1B,gBAAgB;AAChB,+CAA6B;AAE7B,eAAe;AACf,2CAAyB;AAEzB,WAAW;AACX,4DAA2D;AAAlD,gHAAA,cAAc,OAAA;AACvB,kEAAiE;AAAxD,sHAAA,iBAAiB,OAAA;AAC1B,sEAAqE;AAA5D,0HAAA,mBAAmB,OAAA;AAC5B,kEAAiE;AAAxD,sHAAA,iBAAiB,OAAA;AAE1B,WAAW;AACX,6CAA2B;AAE3B,eAAe;AACf,eAAe;AACf,0CAAwB;AAExB,mBAAmB;AACnB,8CAA4B"}
@@ -0,0 +1,48 @@
1
+ import { ComponentTemplate, TemplateRegistryEntry } from '../types/template';
2
+ /**
3
+ * Template Registry
4
+ *
5
+ * Manages template-based components separately from code-based components.
6
+ */
7
+ declare class TemplateRegistryClass {
8
+ private templates;
9
+ /**
10
+ * Register a template
11
+ */
12
+ registerTemplate(template: ComponentTemplate): void;
13
+ /**
14
+ * Get a template by ID
15
+ */
16
+ getTemplate(templateId: string): ComponentTemplate | undefined;
17
+ /**
18
+ * Check if template exists
19
+ */
20
+ hasTemplate(templateId: string): boolean;
21
+ /**
22
+ * Get all templates
23
+ */
24
+ getAllTemplates(): ComponentTemplate[];
25
+ /**
26
+ * Unregister a template
27
+ */
28
+ unregisterTemplate(templateId: string): boolean;
29
+ /**
30
+ * Clear all templates
31
+ */
32
+ clearTemplates(): void;
33
+ /**
34
+ * Get template count
35
+ */
36
+ getTemplateCount(): number;
37
+ /**
38
+ * Import templates from API response
39
+ */
40
+ importTemplates(templates: ComponentTemplate[]): void;
41
+ /**
42
+ * Export templates for storage
43
+ */
44
+ exportTemplates(): TemplateRegistryEntry[];
45
+ }
46
+ export declare const TemplateRegistry: TemplateRegistryClass;
47
+ export {};
48
+ //# sourceMappingURL=TemplateRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateRegistry.d.ts","sourceRoot":"","sources":["../../src/registry/TemplateRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE7E;;;;GAIG;AACH,cAAM,qBAAqB;IACzB,OAAO,CAAC,SAAS,CAA6C;IAE9D;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAKnD;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI9D;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIxC;;OAEG;IACH,eAAe,IAAI,iBAAiB,EAAE;IAItC;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI/C;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAOrD;;OAEG;IACH,eAAe,IAAI,qBAAqB,EAAE;CAQ3C;AAGD,eAAO,MAAM,gBAAgB,uBAA8B,CAAC"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TemplateRegistry = void 0;
4
+ /**
5
+ * Template Registry
6
+ *
7
+ * Manages template-based components separately from code-based components.
8
+ */
9
+ class TemplateRegistryClass {
10
+ templates = new Map();
11
+ /**
12
+ * Register a template
13
+ */
14
+ registerTemplate(template) {
15
+ console.log(`📝 Registering template: ${template.templateId}`);
16
+ this.templates.set(template.templateId, template);
17
+ }
18
+ /**
19
+ * Get a template by ID
20
+ */
21
+ getTemplate(templateId) {
22
+ return this.templates.get(templateId);
23
+ }
24
+ /**
25
+ * Check if template exists
26
+ */
27
+ hasTemplate(templateId) {
28
+ return this.templates.has(templateId);
29
+ }
30
+ /**
31
+ * Get all templates
32
+ */
33
+ getAllTemplates() {
34
+ return Array.from(this.templates.values());
35
+ }
36
+ /**
37
+ * Unregister a template
38
+ */
39
+ unregisterTemplate(templateId) {
40
+ return this.templates.delete(templateId);
41
+ }
42
+ /**
43
+ * Clear all templates
44
+ */
45
+ clearTemplates() {
46
+ this.templates.clear();
47
+ }
48
+ /**
49
+ * Get template count
50
+ */
51
+ getTemplateCount() {
52
+ return this.templates.size;
53
+ }
54
+ /**
55
+ * Import templates from API response
56
+ */
57
+ importTemplates(templates) {
58
+ console.log(`📦 Importing ${templates.length} templates`);
59
+ templates.forEach(template => {
60
+ this.registerTemplate(template);
61
+ });
62
+ }
63
+ /**
64
+ * Export templates for storage
65
+ */
66
+ exportTemplates() {
67
+ return Array.from(this.templates.values()).map(template => ({
68
+ id: template.templateId,
69
+ template,
70
+ createdAt: new Date(),
71
+ updatedAt: new Date(),
72
+ }));
73
+ }
74
+ }
75
+ // Singleton instance
76
+ exports.TemplateRegistry = new TemplateRegistryClass();
77
+ //# sourceMappingURL=TemplateRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateRegistry.js","sourceRoot":"","sources":["../../src/registry/TemplateRegistry.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACH,MAAM,qBAAqB;IACjB,SAAS,GAAmC,IAAI,GAAG,EAAE,CAAC;IAE9D;;OAEG;IACH,gBAAgB,CAAC,QAA2B;QAC1C,OAAO,CAAC,GAAG,CAAC,4BAA4B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,UAAkB;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,UAAkB;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,UAAkB;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,SAA8B;QAC5C,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,CAAC,MAAM,YAAY,CAAC,CAAC;QAC1D,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1D,EAAE,EAAE,QAAQ,CAAC,UAAU;YACvB,QAAQ;YACR,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CAAC,CAAC;IACN,CAAC;CACF;AAED,qBAAqB;AACR,QAAA,gBAAgB,GAAG,IAAI,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Registry exports
3
+ */
4
+ export { TemplateRegistry } from './TemplateRegistry';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}