@cmdoss/memwal-sdk 0.6.0 → 0.6.2

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 (273) hide show
  1. package/ARCHITECTURE.md +547 -463
  2. package/BENCHMARKS.md +238 -238
  3. package/README.md +181 -142
  4. package/dist/ai-sdk/PDWVectorStore.d.ts.map +1 -1
  5. package/dist/ai-sdk/PDWVectorStore.js +4 -1
  6. package/dist/ai-sdk/PDWVectorStore.js.map +1 -1
  7. package/dist/ai-sdk/types.d.ts +2 -2
  8. package/dist/ai-sdk/types.d.ts.map +1 -1
  9. package/dist/browser.d.ts +12 -13
  10. package/dist/browser.d.ts.map +1 -1
  11. package/dist/browser.js +18 -12
  12. package/dist/browser.js.map +1 -1
  13. package/dist/client/ClientMemoryManager.d.ts +1 -0
  14. package/dist/client/ClientMemoryManager.d.ts.map +1 -1
  15. package/dist/client/ClientMemoryManager.js +5 -1
  16. package/dist/client/ClientMemoryManager.js.map +1 -1
  17. package/dist/client/SimplePDWClient.d.ts +23 -0
  18. package/dist/client/SimplePDWClient.d.ts.map +1 -1
  19. package/dist/client/SimplePDWClient.js +19 -6
  20. package/dist/client/SimplePDWClient.js.map +1 -1
  21. package/dist/client/namespaces/BatchNamespace.js +2 -2
  22. package/dist/client/namespaces/BatchNamespace.js.map +1 -1
  23. package/dist/client/namespaces/IndexNamespace.d.ts +38 -9
  24. package/dist/client/namespaces/IndexNamespace.d.ts.map +1 -1
  25. package/dist/client/namespaces/IndexNamespace.js +77 -10
  26. package/dist/client/namespaces/IndexNamespace.js.map +1 -1
  27. package/dist/client/namespaces/MemoryNamespace.js +3 -3
  28. package/dist/client/namespaces/MemoryNamespace.js.map +1 -1
  29. package/dist/client/namespaces/SearchNamespace.d.ts.map +1 -1
  30. package/dist/client/namespaces/SearchNamespace.js +25 -14
  31. package/dist/client/namespaces/SearchNamespace.js.map +1 -1
  32. package/dist/client/namespaces/StorageNamespace.js +4 -4
  33. package/dist/client/namespaces/StorageNamespace.js.map +1 -1
  34. package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts.map +1 -1
  35. package/dist/client/namespaces/consolidated/BlockchainNamespace.js +49 -1
  36. package/dist/client/namespaces/consolidated/BlockchainNamespace.js.map +1 -1
  37. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts +46 -0
  38. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts.map +1 -1
  39. package/dist/client/namespaces/consolidated/StorageNamespace.js +36 -2
  40. package/dist/client/namespaces/consolidated/StorageNamespace.js.map +1 -1
  41. package/dist/client/signers/DappKitSigner.d.ts +136 -0
  42. package/dist/client/signers/DappKitSigner.d.ts.map +1 -0
  43. package/dist/client/signers/DappKitSigner.js +128 -0
  44. package/dist/client/signers/DappKitSigner.js.map +1 -0
  45. package/dist/client/signers/KeypairSigner.d.ts +4 -0
  46. package/dist/client/signers/KeypairSigner.d.ts.map +1 -1
  47. package/dist/client/signers/KeypairSigner.js +6 -0
  48. package/dist/client/signers/KeypairSigner.js.map +1 -1
  49. package/dist/client/signers/UnifiedSigner.d.ts +10 -0
  50. package/dist/client/signers/UnifiedSigner.d.ts.map +1 -1
  51. package/dist/client/signers/WalletAdapterSigner.d.ts +7 -0
  52. package/dist/client/signers/WalletAdapterSigner.d.ts.map +1 -1
  53. package/dist/client/signers/WalletAdapterSigner.js +9 -0
  54. package/dist/client/signers/WalletAdapterSigner.js.map +1 -1
  55. package/dist/client/signers/index.d.ts +3 -0
  56. package/dist/client/signers/index.d.ts.map +1 -1
  57. package/dist/client/signers/index.js +2 -0
  58. package/dist/client/signers/index.js.map +1 -1
  59. package/dist/generated/utils/index.js +1 -1
  60. package/dist/generated/utils/index.js.map +1 -1
  61. package/dist/graph/GraphService.js +1 -1
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +2 -0
  65. package/dist/index.js.map +1 -1
  66. package/dist/permissions/ConsentRepository.browser.d.ts +56 -0
  67. package/dist/permissions/ConsentRepository.browser.d.ts.map +1 -0
  68. package/dist/permissions/ConsentRepository.browser.js +198 -0
  69. package/dist/permissions/ConsentRepository.browser.js.map +1 -0
  70. package/dist/services/CapabilityService.js +1 -1
  71. package/dist/services/CapabilityService.js.map +1 -1
  72. package/dist/services/EncryptionService.js +1 -1
  73. package/dist/services/EncryptionService.js.map +1 -1
  74. package/dist/services/GeminiAIService.d.ts.map +1 -1
  75. package/dist/services/GeminiAIService.js +283 -27
  76. package/dist/services/GeminiAIService.js.map +1 -1
  77. package/dist/services/MemoryIndexService.d.ts +31 -2
  78. package/dist/services/MemoryIndexService.d.ts.map +1 -1
  79. package/dist/services/MemoryIndexService.js +75 -3
  80. package/dist/services/MemoryIndexService.js.map +1 -1
  81. package/dist/services/StorageService.d.ts +8 -8
  82. package/dist/services/StorageService.d.ts.map +1 -1
  83. package/dist/services/StorageService.js.map +1 -1
  84. package/dist/services/VectorService.js +2 -2
  85. package/dist/services/VectorService.js.map +1 -1
  86. package/dist/services/storage/BlobAttributesManager.d.ts +4 -4
  87. package/dist/services/storage/BlobAttributesManager.d.ts.map +1 -1
  88. package/dist/services/storage/BlobAttributesManager.js +6 -15
  89. package/dist/services/storage/BlobAttributesManager.js.map +1 -1
  90. package/dist/services/storage/QuiltBatchManager.d.ts +33 -8
  91. package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -1
  92. package/dist/services/storage/QuiltBatchManager.js +153 -48
  93. package/dist/services/storage/QuiltBatchManager.js.map +1 -1
  94. package/dist/services/storage/WalrusMetadataManager.d.ts +2 -2
  95. package/dist/services/storage/WalrusMetadataManager.d.ts.map +1 -1
  96. package/dist/services/storage/WalrusMetadataManager.js +2 -5
  97. package/dist/services/storage/WalrusMetadataManager.js.map +1 -1
  98. package/dist/services/storage/WalrusStorageManager.d.ts +2 -2
  99. package/dist/services/storage/WalrusStorageManager.d.ts.map +1 -1
  100. package/dist/services/storage/WalrusStorageManager.js +7 -11
  101. package/dist/services/storage/WalrusStorageManager.js.map +1 -1
  102. package/dist/utils/rebuildIndexNode.d.ts.map +1 -1
  103. package/dist/utils/rebuildIndexNode.js +109 -35
  104. package/dist/utils/rebuildIndexNode.js.map +1 -1
  105. package/dist/vector/NodeHnswService.d.ts.map +1 -1
  106. package/dist/vector/NodeHnswService.js +26 -7
  107. package/dist/vector/NodeHnswService.js.map +1 -1
  108. package/dist/wallet/MainWalletService.js +1 -1
  109. package/dist/wallet/MainWalletService.js.map +1 -1
  110. package/package.json +10 -3
  111. package/src/access/index.ts +8 -8
  112. package/src/aggregation/index.ts +8 -8
  113. package/src/ai-sdk/PDWVectorStore.ts +4 -1
  114. package/src/ai-sdk/types.ts +2 -2
  115. package/src/browser.ts +28 -24
  116. package/src/client/ClientMemoryManager.ts +6 -1
  117. package/src/client/SimplePDWClient.ts +57 -15
  118. package/src/client/namespaces/BatchNamespace.ts +2 -2
  119. package/src/client/namespaces/IndexNamespace.ts +89 -11
  120. package/src/client/namespaces/MemoryNamespace.ts +3 -3
  121. package/src/client/namespaces/SearchNamespace.ts +27 -14
  122. package/src/client/namespaces/StorageNamespace.ts +4 -4
  123. package/src/client/namespaces/consolidated/BlockchainNamespace.ts +55 -1
  124. package/src/client/namespaces/consolidated/StorageNamespace.ts +59 -2
  125. package/src/client/signers/DappKitSigner.ts +207 -0
  126. package/src/client/signers/KeypairSigner.ts +7 -0
  127. package/src/client/signers/UnifiedSigner.ts +11 -0
  128. package/src/client/signers/WalletAdapterSigner.ts +10 -0
  129. package/src/client/signers/index.ts +7 -0
  130. package/src/generated/pdw/capability.ts +319 -319
  131. package/src/generated/utils/index.ts +1 -1
  132. package/src/graph/GraphService.ts +1 -1
  133. package/src/index.ts +16 -0
  134. package/src/permissions/ConsentRepository.browser.ts +249 -0
  135. package/src/permissions/index.ts +9 -9
  136. package/src/services/CapabilityService.ts +1 -1
  137. package/src/services/EncryptionService.ts +1 -1
  138. package/src/services/GeminiAIService.ts +283 -27
  139. package/src/services/MemoryIndexService.ts +85 -3
  140. package/src/services/StorageService.ts +8 -8
  141. package/src/services/VectorService.ts +2 -2
  142. package/src/services/storage/BlobAttributesManager.ts +10 -19
  143. package/src/services/storage/QuiltBatchManager.ts +178 -50
  144. package/src/services/storage/WalrusMetadataManager.ts +4 -7
  145. package/src/services/storage/WalrusStorageManager.ts +10 -13
  146. package/src/utils/rebuildIndexNode.ts +126 -43
  147. package/src/vector/NodeHnswService.ts +29 -7
  148. package/src/wallet/MainWalletService.ts +1 -1
  149. package/src/wallet/index.ts +17 -17
  150. package/dist/api/client.d.ts +0 -43
  151. package/dist/api/client.d.ts.map +0 -1
  152. package/dist/api/client.js +0 -136
  153. package/dist/api/client.js.map +0 -1
  154. package/dist/chat/index.d.ts +0 -13
  155. package/dist/chat/index.d.ts.map +0 -1
  156. package/dist/chat/index.js +0 -14
  157. package/dist/chat/index.js.map +0 -1
  158. package/dist/client/namespaces/ChatNamespace.d.ts +0 -110
  159. package/dist/client/namespaces/ChatNamespace.d.ts.map +0 -1
  160. package/dist/client/namespaces/ChatNamespace.js +0 -123
  161. package/dist/client/namespaces/ChatNamespace.js.map +0 -1
  162. package/dist/encryption/index.d.ts +0 -14
  163. package/dist/encryption/index.d.ts.map +0 -1
  164. package/dist/encryption/index.js +0 -14
  165. package/dist/encryption/index.js.map +0 -1
  166. package/dist/graph/BrowserKnowledgeGraphManager.d.ts +0 -101
  167. package/dist/graph/BrowserKnowledgeGraphManager.d.ts.map +0 -1
  168. package/dist/graph/BrowserKnowledgeGraphManager.js +0 -411
  169. package/dist/graph/BrowserKnowledgeGraphManager.js.map +0 -1
  170. package/dist/hooks.wip/index.d.ts +0 -55
  171. package/dist/hooks.wip/index.d.ts.map +0 -1
  172. package/dist/hooks.wip/index.js +0 -58
  173. package/dist/hooks.wip/index.js.map +0 -1
  174. package/dist/hooks.wip/useCreateMemory.d.ts +0 -111
  175. package/dist/hooks.wip/useCreateMemory.d.ts.map +0 -1
  176. package/dist/hooks.wip/useCreateMemory.js +0 -149
  177. package/dist/hooks.wip/useCreateMemory.js.map +0 -1
  178. package/dist/hooks.wip/useCreateMemoryBatch.d.ts +0 -122
  179. package/dist/hooks.wip/useCreateMemoryBatch.d.ts.map +0 -1
  180. package/dist/hooks.wip/useCreateMemoryBatch.js +0 -221
  181. package/dist/hooks.wip/useCreateMemoryBatch.js.map +0 -1
  182. package/dist/hooks.wip/useKnowledgeGraph.d.ts +0 -66
  183. package/dist/hooks.wip/useKnowledgeGraph.d.ts.map +0 -1
  184. package/dist/hooks.wip/useKnowledgeGraph.js +0 -229
  185. package/dist/hooks.wip/useKnowledgeGraph.js.map +0 -1
  186. package/dist/hooks.wip/useMemoryChat.d.ts +0 -106
  187. package/dist/hooks.wip/useMemoryChat.d.ts.map +0 -1
  188. package/dist/hooks.wip/useMemoryChat.js +0 -284
  189. package/dist/hooks.wip/useMemoryChat.js.map +0 -1
  190. package/dist/hooks.wip/useMemoryIndex.d.ts +0 -90
  191. package/dist/hooks.wip/useMemoryIndex.d.ts.map +0 -1
  192. package/dist/hooks.wip/useMemoryIndex.js +0 -218
  193. package/dist/hooks.wip/useMemoryIndex.js.map +0 -1
  194. package/dist/hooks.wip/useMemoryManager.d.ts +0 -35
  195. package/dist/hooks.wip/useMemoryManager.d.ts.map +0 -1
  196. package/dist/hooks.wip/useMemoryManager.js +0 -86
  197. package/dist/hooks.wip/useMemoryManager.js.map +0 -1
  198. package/dist/hooks.wip/useMemorySearch.d.ts +0 -100
  199. package/dist/hooks.wip/useMemorySearch.d.ts.map +0 -1
  200. package/dist/hooks.wip/useMemorySearch.js +0 -278
  201. package/dist/hooks.wip/useMemorySearch.js.map +0 -1
  202. package/dist/hooks.wip/useMemoryServices.d.ts +0 -80
  203. package/dist/hooks.wip/useMemoryServices.d.ts.map +0 -1
  204. package/dist/hooks.wip/useMemoryServices.js +0 -264
  205. package/dist/hooks.wip/useMemoryServices.js.map +0 -1
  206. package/dist/hooks.wip/usePDWRAG.d.ts +0 -112
  207. package/dist/hooks.wip/usePDWRAG.d.ts.map +0 -1
  208. package/dist/hooks.wip/usePDWRAG.js +0 -121
  209. package/dist/hooks.wip/usePDWRAG.js.map +0 -1
  210. package/dist/hooks.wip/usePDWVectorStore.d.ts +0 -68
  211. package/dist/hooks.wip/usePDWVectorStore.d.ts.map +0 -1
  212. package/dist/hooks.wip/usePDWVectorStore.js +0 -102
  213. package/dist/hooks.wip/usePDWVectorStore.js.map +0 -1
  214. package/dist/hooks.wip/useRetrieveEmbedding.d.ts +0 -138
  215. package/dist/hooks.wip/useRetrieveEmbedding.d.ts.map +0 -1
  216. package/dist/hooks.wip/useRetrieveEmbedding.js +0 -121
  217. package/dist/hooks.wip/useRetrieveEmbedding.js.map +0 -1
  218. package/dist/hooks.wip/useSearchMemories.d.ts +0 -103
  219. package/dist/hooks.wip/useSearchMemories.d.ts.map +0 -1
  220. package/dist/hooks.wip/useSearchMemories.js +0 -146
  221. package/dist/hooks.wip/useSearchMemories.js.map +0 -1
  222. package/dist/hooks.wip/useStoreEmbedding.d.ts +0 -174
  223. package/dist/hooks.wip/useStoreEmbedding.d.ts.map +0 -1
  224. package/dist/hooks.wip/useStoreEmbedding.js +0 -167
  225. package/dist/hooks.wip/useStoreEmbedding.js.map +0 -1
  226. package/dist/hooks.wip/useWalletMemories.d.ts +0 -119
  227. package/dist/hooks.wip/useWalletMemories.d.ts.map +0 -1
  228. package/dist/hooks.wip/useWalletMemories.js +0 -166
  229. package/dist/hooks.wip/useWalletMemories.js.map +0 -1
  230. package/dist/hooks.wip/utils/cache.d.ts +0 -25
  231. package/dist/hooks.wip/utils/cache.d.ts.map +0 -1
  232. package/dist/hooks.wip/utils/cache.js +0 -38
  233. package/dist/hooks.wip/utils/cache.js.map +0 -1
  234. package/dist/hooks.wip/utils/types.d.ts +0 -138
  235. package/dist/hooks.wip/utils/types.d.ts.map +0 -1
  236. package/dist/hooks.wip/utils/types.js +0 -5
  237. package/dist/hooks.wip/utils/types.js.map +0 -1
  238. package/dist/infrastructure/ai/EmbeddingService.d.ts +0 -101
  239. package/dist/infrastructure/ai/EmbeddingService.d.ts.map +0 -1
  240. package/dist/infrastructure/ai/EmbeddingService.js +0 -242
  241. package/dist/infrastructure/ai/EmbeddingService.js.map +0 -1
  242. package/dist/infrastructure/ai/GeminiAIService.d.ts +0 -84
  243. package/dist/infrastructure/ai/GeminiAIService.d.ts.map +0 -1
  244. package/dist/infrastructure/ai/GeminiAIService.js +0 -300
  245. package/dist/infrastructure/ai/GeminiAIService.js.map +0 -1
  246. package/dist/infrastructure/ai/index.d.ts +0 -8
  247. package/dist/infrastructure/ai/index.d.ts.map +0 -1
  248. package/dist/infrastructure/ai/index.js +0 -8
  249. package/dist/infrastructure/ai/index.js.map +0 -1
  250. package/dist/memory/index.d.ts +0 -13
  251. package/dist/memory/index.d.ts.map +0 -1
  252. package/dist/memory/index.js +0 -14
  253. package/dist/memory/index.js.map +0 -1
  254. package/dist/services/ChatService.d.ts +0 -89
  255. package/dist/services/ChatService.d.ts.map +0 -1
  256. package/dist/services/ChatService.js +0 -319
  257. package/dist/services/ChatService.js.map +0 -1
  258. package/dist/transactions/index.d.ts +0 -13
  259. package/dist/transactions/index.d.ts.map +0 -1
  260. package/dist/transactions/index.js +0 -14
  261. package/dist/transactions/index.js.map +0 -1
  262. package/dist/types/wallet.d.ts +0 -12
  263. package/dist/types/wallet.d.ts.map +0 -1
  264. package/dist/types/wallet.js +0 -13
  265. package/dist/types/wallet.js.map +0 -1
  266. package/dist/view/ViewService.d.ts +0 -136
  267. package/dist/view/ViewService.d.ts.map +0 -1
  268. package/dist/view/ViewService.js +0 -325
  269. package/dist/view/ViewService.js.map +0 -1
  270. package/dist/view/index.d.ts +0 -7
  271. package/dist/view/index.d.ts.map +0 -1
  272. package/dist/view/index.js +0 -7
  273. package/dist/view/index.js.map +0 -1
@@ -1,242 +0,0 @@
1
- /**
2
- * EmbeddingService - Local AI Embedding Generation
3
- *
4
- * Provides local embedding generation using Google Gemini API,
5
- * eliminating the need for backend API calls for vector operations.
6
- */
7
- import { GoogleGenAI } from '@google/genai';
8
- /**
9
- * Local embedding service using Google Gemini API
10
- */
11
- export class EmbeddingService {
12
- constructor(config = {}) {
13
- this.requestCount = 0;
14
- this.lastReset = Date.now();
15
- // Try config first, then environment variables, then throw error
16
- const apiKey = config.apiKey ||
17
- process.env.GEMINI_API_KEY ||
18
- process.env.GOOGLE_AI_API_KEY;
19
- if (!apiKey) {
20
- throw new Error('Gemini API key is required for embedding generation. ' +
21
- 'Provide it via:\n' +
22
- '1. config.apiKey parameter\n' +
23
- '2. GEMINI_API_KEY environment variable\n' +
24
- '3. GOOGLE_AI_API_KEY environment variable\n' +
25
- 'Get your API key from: https://makersuite.google.com/app/apikey');
26
- }
27
- this.genAI = new GoogleGenAI({ apiKey });
28
- this.model = config.model || 'text-embedding-004';
29
- this.dimensions = config.dimensions || 3072;
30
- this.maxRequestsPerMinute = config.requestsPerMinute || 1500; // Gemini rate limit
31
- if (process.env.NODE_ENV === 'development') {
32
- console.log(`✅ EmbeddingService initialized with model: ${this.model}`);
33
- }
34
- }
35
- /**
36
- * Generate embedding for a single text
37
- */
38
- async embedText(options) {
39
- const startTime = Date.now();
40
- // Validate input
41
- if (!options.text || typeof options.text !== 'string' || options.text.trim().length === 0) {
42
- throw new Error('Invalid or empty text provided for embedding');
43
- }
44
- await this.checkRateLimit();
45
- try {
46
- const taskType = this.getTaskType(options.type);
47
- const result = await this.genAI.models.embedContent({
48
- model: this.model,
49
- contents: options.text,
50
- config: {
51
- taskType,
52
- outputDimensionality: this.dimensions
53
- }
54
- });
55
- this.requestCount++;
56
- const vector = result.embeddings?.[0]?.values;
57
- if (!vector || vector.length === 0) {
58
- throw new Error('Empty embedding vector received from Gemini API');
59
- }
60
- // Ensure vector has expected dimensions
61
- if (vector.length !== this.dimensions && process.env.NODE_ENV === 'development') {
62
- console.warn(`Expected ${this.dimensions} dimensions, got ${vector.length}`);
63
- }
64
- return {
65
- vector: Array.from(vector), // Convert to regular array
66
- dimension: vector.length,
67
- model: this.model,
68
- processingTime: Date.now() - startTime,
69
- };
70
- }
71
- catch (error) {
72
- throw new Error(`Embedding generation failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
73
- }
74
- }
75
- /**
76
- * Generate embeddings for multiple texts (batched)
77
- */
78
- async embedBatch(texts, options = {}) {
79
- const startTime = Date.now();
80
- const results = [];
81
- let successCount = 0;
82
- let failedCount = 0;
83
- // Process in smaller batches to respect rate limits
84
- const batchSize = 10;
85
- const totalBatches = Math.ceil(texts.length / batchSize);
86
- for (let i = 0; i < totalBatches; i++) {
87
- const batch = texts.slice(i * batchSize, (i + 1) * batchSize);
88
- const batchPromises = batch.map(async (text) => {
89
- try {
90
- const result = await this.embedText({ ...options, text });
91
- successCount++;
92
- return result.vector;
93
- }
94
- catch (error) {
95
- failedCount++;
96
- if (process.env.NODE_ENV === 'development') {
97
- console.warn(`Failed to embed text: ${text.substring(0, 100)}...`);
98
- }
99
- // Return zero vector as fallback
100
- return new Array(this.dimensions).fill(0);
101
- }
102
- });
103
- const batchResults = await Promise.all(batchPromises);
104
- results.push(...batchResults);
105
- // Add delay between batches to respect rate limits
106
- if (i < totalBatches - 1) {
107
- await this.delay(100); // 100ms delay between batches
108
- }
109
- }
110
- const totalTime = Date.now() - startTime;
111
- return {
112
- vectors: results,
113
- dimension: this.dimensions,
114
- model: this.model,
115
- totalProcessingTime: totalTime,
116
- averageProcessingTime: totalTime / texts.length,
117
- successCount,
118
- failedCount,
119
- };
120
- }
121
- /**
122
- * Calculate cosine similarity between two vectors
123
- */
124
- calculateCosineSimilarity(vectorA, vectorB) {
125
- if (vectorA.length !== vectorB.length) {
126
- throw new Error(`Vector dimension mismatch: ${vectorA.length} vs ${vectorB.length}`);
127
- }
128
- let dotProduct = 0;
129
- let normA = 0;
130
- let normB = 0;
131
- for (let i = 0; i < vectorA.length; i++) {
132
- dotProduct += vectorA[i] * vectorB[i];
133
- normA += vectorA[i] * vectorA[i];
134
- normB += vectorB[i] * vectorB[i];
135
- }
136
- const magnitude = Math.sqrt(normA) * Math.sqrt(normB);
137
- if (magnitude === 0) {
138
- return 0; // Handle zero vectors
139
- }
140
- return dotProduct / magnitude;
141
- }
142
- /**
143
- * Calculate Euclidean distance between two vectors
144
- */
145
- calculateEuclideanDistance(vectorA, vectorB) {
146
- if (vectorA.length !== vectorB.length) {
147
- throw new Error(`Vector dimension mismatch: ${vectorA.length} vs ${vectorB.length}`);
148
- }
149
- let sum = 0;
150
- for (let i = 0; i < vectorA.length; i++) {
151
- const diff = vectorA[i] - vectorB[i];
152
- sum += diff * diff;
153
- }
154
- return Math.sqrt(sum);
155
- }
156
- /**
157
- * Normalize a vector to unit length
158
- */
159
- normalizeVector(vector) {
160
- const magnitude = Math.sqrt(vector.reduce((sum, val) => sum + val * val, 0));
161
- if (magnitude === 0) {
162
- return vector; // Return as-is if zero vector
163
- }
164
- return vector.map(val => val / magnitude);
165
- }
166
- /**
167
- * Find the most similar vectors to a query vector
168
- */
169
- findMostSimilar(queryVector, candidateVectors, k = 5) {
170
- const similarities = candidateVectors.map((vector, index) => {
171
- const similarity = this.calculateCosineSimilarity(queryVector, vector);
172
- const distance = this.calculateEuclideanDistance(queryVector, vector);
173
- return { index, similarity, distance };
174
- });
175
- // Sort by similarity (highest first)
176
- similarities.sort((a, b) => b.similarity - a.similarity);
177
- return similarities.slice(0, k);
178
- }
179
- /**
180
- * Get embedding statistics
181
- */
182
- getStats() {
183
- const now = Date.now();
184
- const requestsThisMinute = (now - this.lastReset) < 60000 ? this.requestCount : 0;
185
- return {
186
- totalRequests: this.requestCount,
187
- requestsThisMinute,
188
- model: this.model,
189
- dimensions: this.dimensions,
190
- rateLimit: this.maxRequestsPerMinute,
191
- };
192
- }
193
- /**
194
- * Reset rate limiting counters (called automatically every minute)
195
- */
196
- resetRateLimit() {
197
- const now = Date.now();
198
- if (now - this.lastReset >= 60000) {
199
- this.requestCount = 0;
200
- this.lastReset = now;
201
- }
202
- }
203
- /**
204
- * Check rate limiting and wait if necessary
205
- */
206
- async checkRateLimit() {
207
- this.resetRateLimit();
208
- if (this.requestCount >= this.maxRequestsPerMinute) {
209
- const waitTime = 60000 - (Date.now() - this.lastReset);
210
- if (waitTime > 0) {
211
- if (process.env.NODE_ENV === 'development') {
212
- console.warn(`Rate limit reached, waiting ${waitTime}ms`);
213
- }
214
- await this.delay(waitTime);
215
- this.resetRateLimit();
216
- }
217
- }
218
- }
219
- /**
220
- * Get appropriate task type for Gemini API
221
- */
222
- getTaskType(type) {
223
- switch (type) {
224
- case 'query':
225
- return 'RETRIEVAL_QUERY';
226
- case 'content':
227
- return 'RETRIEVAL_DOCUMENT';
228
- case 'metadata':
229
- return 'SEMANTIC_SIMILARITY';
230
- default:
231
- return 'RETRIEVAL_DOCUMENT';
232
- }
233
- }
234
- /**
235
- * Utility delay function
236
- */
237
- delay(ms) {
238
- return new Promise(resolve => setTimeout(resolve, ms));
239
- }
240
- }
241
- export default EmbeddingService;
242
- //# sourceMappingURL=EmbeddingService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EmbeddingService.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/EmbeddingService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiC5C;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAQ3B,YAAY,SAA0B,EAAE;QAJhC,iBAAY,GAAG,CAAC,CAAC;QACjB,cAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAI7B,iEAAiE;QACjE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;YACb,OAAO,CAAC,GAAG,CAAC,cAAc;YAC1B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAE7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,uDAAuD;gBACvD,mBAAmB;gBACnB,8BAA8B;gBAC9B,0CAA0C;gBAC1C,6CAA6C;gBAC7C,iEAAiE,CAClE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,oBAAoB,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;QAC5C,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC,oBAAoB;QAElF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,8CAA8C,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,OAAyB;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,iBAAiB;QACjB,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1F,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEhD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;gBAClD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,OAAO,CAAC,IAAI;gBACtB,MAAM,EAAE;oBACN,QAAQ;oBACR,oBAAoB,EAAE,IAAI,CAAC,UAAU;iBACtC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;YAE9C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YAED,wCAAwC;YACxC,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;gBAChF,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,oBAAoB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/E,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,2BAA2B;gBACvD,SAAS,EAAE,MAAM,CAAC,MAAM;gBACxB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACvC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC9G,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAe,EAAE,UAA0C,EAAE;QAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAe,EAAE,CAAC;QAC/B,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,oDAAoD;QACpD,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAEzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;YAE9D,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC7C,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1D,YAAY,EAAE,CAAC;oBACf,OAAO,MAAM,CAAC,MAAM,CAAC;gBACvB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,WAAW,EAAE,CAAC;oBACd,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;wBAC3C,OAAO,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;oBACrE,CAAC;oBACD,iCAAiC;oBACjC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;YAE9B,mDAAmD;YACnD,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,8BAA8B;YACvD,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAEzC,OAAO;YACL,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,mBAAmB,EAAE,SAAS;YAC9B,qBAAqB,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM;YAC/C,YAAY;YACZ,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,yBAAyB,CAAC,OAAiB,EAAE,OAAiB;QAC5D,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,MAAM,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACtC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACjC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtD,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,CAAC,CAAC,sBAAsB;QAClC,CAAC;QAED,OAAO,UAAU,GAAG,SAAS,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,0BAA0B,CAAC,OAAiB,EAAE,OAAiB;QAC7D,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,MAAM,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACrC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,MAAgB;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7E,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC,CAAC,8BAA8B;QAC/C,CAAC;QAED,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,eAAe,CACb,WAAqB,EACrB,gBAA4B,EAC5B,IAAY,CAAC;QAEb,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAEtE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,qCAAqC;QACrC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;QAEzD,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,QAAQ;QAON,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,kBAAkB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAElF,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,YAAY;YAChC,kBAAkB;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,oBAAoB;SACrC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC;YAClC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACjB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;oBAC3C,OAAO,CAAC,IAAI,CAAC,+BAA+B,QAAQ,IAAI,CAAC,CAAC;gBAC5D,CAAC;gBACD,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,IAAa;QAC/B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,iBAAiB,CAAC;YAC3B,KAAK,SAAS;gBACZ,OAAO,oBAAoB,CAAC;YAC9B,KAAK,UAAU;gBACb,OAAO,qBAAqB,CAAC;YAC/B;gBACE,OAAO,oBAAoB,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;CACF;AAED,eAAe,gBAAgB,CAAC"}
@@ -1,84 +0,0 @@
1
- /**
2
- * GeminiAIService - AI Integration via OpenRouter
3
- *
4
- * Provides AI-powered text analysis capabilities using OpenRouter API
5
- * for entity extraction, relationship identification, and content analysis.
6
- *
7
- * Supports any model available on OpenRouter (Google Gemini, OpenAI, Anthropic, etc.)
8
- */
9
- export interface GeminiConfig {
10
- apiKey: string;
11
- model?: string;
12
- temperature?: number;
13
- maxTokens?: number;
14
- timeout?: number;
15
- }
16
- export interface EntityExtractionRequest {
17
- content: string;
18
- context?: string;
19
- confidenceThreshold?: number;
20
- }
21
- export interface EntityExtractionResponse {
22
- entities: Array<{
23
- id: string;
24
- label: string;
25
- type: string;
26
- confidence: number;
27
- properties?: Record<string, any>;
28
- }>;
29
- relationships: Array<{
30
- source: string;
31
- target: string;
32
- label: string;
33
- confidence: number;
34
- type?: string;
35
- }>;
36
- processingTimeMs: number;
37
- }
38
- /**
39
- * AI service for advanced text analysis and knowledge extraction
40
- * Uses OpenRouter API for maximum flexibility and model choice
41
- */
42
- export declare class GeminiAIService {
43
- private readonly apiKey;
44
- private readonly config;
45
- constructor(config: GeminiConfig);
46
- /**
47
- * Call OpenRouter Chat Completions API
48
- */
49
- private callOpenRouter;
50
- /**
51
- * Extract entities and relationships from text using AI
52
- */
53
- extractEntitiesAndRelationships(request: EntityExtractionRequest): Promise<EntityExtractionResponse>;
54
- /**
55
- * Extract entities and relationships from multiple texts in batch
56
- */
57
- extractBatch(requests: EntityExtractionRequest[]): Promise<EntityExtractionResponse[]>;
58
- /**
59
- * Analyze text content for categorization and sentiment
60
- */
61
- analyzeContent(content: string): Promise<{
62
- categories: string[];
63
- sentiment: 'positive' | 'negative' | 'neutral';
64
- topics: string[];
65
- confidence: number;
66
- }>;
67
- private buildExtractionPrompt;
68
- private parseExtractionResponse;
69
- private parseAnalysisResponse;
70
- private sanitizeId;
71
- private delay;
72
- /**
73
- * Check if the service is properly configured and can make API calls
74
- */
75
- testConnection(): Promise<boolean>;
76
- /**
77
- * Get service configuration (without sensitive data)
78
- */
79
- getConfig(): Omit<Required<GeminiConfig>, 'apiKey'> & {
80
- apiKeyConfigured: boolean;
81
- };
82
- }
83
- export default GeminiAIService;
84
- //# sourceMappingURL=GeminiAIService.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GeminiAIService.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/ai/GeminiAIService.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAClC,CAAC,CAAC;IACH,aAAa,EAAE,KAAK,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;gBAEpC,MAAM,EAAE,YAAY;IAqBhC;;OAEG;YACW,cAAc;IA+C5B;;OAEG;IACG,+BAA+B,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAsC1G;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAoB5F;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7C,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;QAC/C,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IA6BF,OAAO,CAAC,qBAAqB;IAmC7B,OAAO,CAAC,uBAAuB;IAyD/B,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,KAAK;IAIb;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IASxC;;OAEG;IACH,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,GAAG;QAAE,gBAAgB,EAAE,OAAO,CAAA;KAAE;CASpF;AAED,eAAe,eAAe,CAAC"}
@@ -1,300 +0,0 @@
1
- /**
2
- * GeminiAIService - AI Integration via OpenRouter
3
- *
4
- * Provides AI-powered text analysis capabilities using OpenRouter API
5
- * for entity extraction, relationship identification, and content analysis.
6
- *
7
- * Supports any model available on OpenRouter (Google Gemini, OpenAI, Anthropic, etc.)
8
- */
9
- /**
10
- * AI service for advanced text analysis and knowledge extraction
11
- * Uses OpenRouter API for maximum flexibility and model choice
12
- */
13
- export class GeminiAIService {
14
- constructor(config) {
15
- // Resolve API key: prefer OPENROUTER_API_KEY, fallback to provided apiKey
16
- this.apiKey = process.env.OPENROUTER_API_KEY || config.apiKey;
17
- if (!this.apiKey) {
18
- throw new Error('API key is required. Set OPENROUTER_API_KEY environment variable or provide apiKey in config.');
19
- }
20
- this.config = {
21
- model: config.model || process.env.AI_CHAT_MODEL || 'google/gemini-2.5-flash',
22
- temperature: config.temperature || 0.1,
23
- maxTokens: config.maxTokens || 4096,
24
- timeout: config.timeout || 30000,
25
- apiKey: this.apiKey
26
- };
27
- console.log(`✅ GeminiAIService initialized with OpenRouter (${this.config.model})`);
28
- }
29
- /**
30
- * Call OpenRouter Chat Completions API
31
- */
32
- async callOpenRouter(prompt) {
33
- const controller = new AbortController();
34
- const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
35
- try {
36
- const response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
37
- method: 'POST',
38
- headers: {
39
- 'Authorization': `Bearer ${this.apiKey}`,
40
- 'Content-Type': 'application/json',
41
- 'HTTP-Referer': 'https://github.com/personal-data-wallet',
42
- 'X-Title': 'Personal Data Wallet SDK'
43
- },
44
- body: JSON.stringify({
45
- model: this.config.model,
46
- messages: [
47
- { role: 'user', content: prompt }
48
- ],
49
- temperature: this.config.temperature,
50
- max_tokens: this.config.maxTokens
51
- }),
52
- signal: controller.signal
53
- });
54
- clearTimeout(timeoutId);
55
- if (!response.ok) {
56
- const errorData = await response.text();
57
- throw new Error(`OpenRouter API error: ${response.status} - ${errorData}`);
58
- }
59
- const data = await response.json();
60
- if (!data.choices || !data.choices[0] || !data.choices[0].message) {
61
- throw new Error('Invalid response from OpenRouter API');
62
- }
63
- return data.choices[0].message.content || '';
64
- }
65
- catch (error) {
66
- clearTimeout(timeoutId);
67
- if (error instanceof Error && error.name === 'AbortError') {
68
- throw new Error(`OpenRouter request timed out after ${this.config.timeout}ms`);
69
- }
70
- throw error;
71
- }
72
- }
73
- /**
74
- * Extract entities and relationships from text using AI
75
- */
76
- async extractEntitiesAndRelationships(request) {
77
- const startTime = Date.now();
78
- try {
79
- // Validate input: return empty result for empty/whitespace-only content
80
- const trimmedContent = request.content?.trim();
81
- if (!trimmedContent || trimmedContent.length === 0) {
82
- return {
83
- entities: [],
84
- relationships: [],
85
- processingTimeMs: Date.now() - startTime
86
- };
87
- }
88
- const prompt = this.buildExtractionPrompt(request.content, request.context);
89
- const text = await this.callOpenRouter(prompt);
90
- const parsed = this.parseExtractionResponse(text);
91
- const processingTimeMs = Date.now() - startTime;
92
- return {
93
- entities: parsed.entities,
94
- relationships: parsed.relationships,
95
- processingTimeMs
96
- };
97
- }
98
- catch (error) {
99
- console.error('AI extraction failed:', error);
100
- // Return empty result with processing time on error
101
- return {
102
- entities: [],
103
- relationships: [],
104
- processingTimeMs: Date.now() - startTime
105
- };
106
- }
107
- }
108
- /**
109
- * Extract entities and relationships from multiple texts in batch
110
- */
111
- async extractBatch(requests) {
112
- const results = [];
113
- // Process in batches to avoid rate limiting
114
- const batchSize = 3;
115
- for (let i = 0; i < requests.length; i += batchSize) {
116
- const batch = requests.slice(i, i + batchSize);
117
- const batchPromises = batch.map(request => this.extractEntitiesAndRelationships(request));
118
- const batchResults = await Promise.all(batchPromises);
119
- results.push(...batchResults);
120
- // Small delay between batches to respect rate limits
121
- if (i + batchSize < requests.length) {
122
- await this.delay(500);
123
- }
124
- }
125
- return results;
126
- }
127
- /**
128
- * Analyze text content for categorization and sentiment
129
- */
130
- async analyzeContent(content) {
131
- try {
132
- const prompt = `
133
- Analyze the following text and provide a JSON response with:
134
- - "categories": array of relevant categories (max 3)
135
- - "sentiment": "positive", "negative", or "neutral"
136
- - "topics": array of main topics/themes (max 5)
137
- - "confidence": overall analysis confidence (0.0-1.0)
138
-
139
- TEXT: ${content}
140
-
141
- JSON:`;
142
- const text = await this.callOpenRouter(prompt);
143
- return this.parseAnalysisResponse(text);
144
- }
145
- catch (error) {
146
- console.error('Content analysis failed:', error);
147
- return {
148
- categories: [],
149
- sentiment: 'neutral',
150
- topics: [],
151
- confidence: 0
152
- };
153
- }
154
- }
155
- // ==================== PRIVATE METHODS ====================
156
- buildExtractionPrompt(content, context) {
157
- const contextSection = context ? `\nCONTEXT: ${context}\n` : '';
158
- return `
159
- Extract meaningful entities and relationships from the following text. Focus on:
160
- - People (names, roles, professions)
161
- - Organizations (companies, institutions, groups)
162
- - Locations (cities, countries, places)
163
- - Concepts (technologies, ideas, skills)
164
- - Events (meetings, projects, activities)
165
- - Objects (products, tools, resources)
166
-
167
- Return a valid JSON response with "entities" and "relationships" arrays.
168
-
169
- For entities:
170
- - "id": unique identifier using snake_case (e.g., "john_doe", "machine_learning")
171
- - "label": human-readable name (e.g., "John Doe", "Machine Learning")
172
- - "type": entity category (person, organization, location, concept, event, object)
173
- - "confidence": confidence score 0.0-1.0
174
- - "properties": optional additional attributes
175
-
176
- For relationships:
177
- - "source": source entity id
178
- - "target": target entity id
179
- - "label": relationship description (e.g., "works_at", "located_in", "uses")
180
- - "confidence": confidence score 0.0-1.0
181
- - "type": optional relationship category
182
-
183
- Only include entities with confidence >= 0.6 and clear, meaningful relationships.
184
- ${contextSection}
185
- TEXT: ${content}
186
-
187
- JSON:`;
188
- }
189
- parseExtractionResponse(response) {
190
- try {
191
- // Clean up the response text (remove markdown formatting if present)
192
- let cleanResponse = response.trim();
193
- if (cleanResponse.startsWith('```json')) {
194
- cleanResponse = cleanResponse.replace(/```json\s*/, '').replace(/```\s*$/, '');
195
- }
196
- else if (cleanResponse.startsWith('```')) {
197
- cleanResponse = cleanResponse.replace(/```\s*/, '').replace(/```\s*$/, '');
198
- }
199
- const parsed = JSON.parse(cleanResponse);
200
- if (!parsed.entities || !Array.isArray(parsed.entities)) {
201
- throw new Error('Invalid entities format');
202
- }
203
- if (!parsed.relationships || !Array.isArray(parsed.relationships)) {
204
- throw new Error('Invalid relationships format');
205
- }
206
- // Validate and sanitize entities
207
- const entities = parsed.entities
208
- .filter((e) => e.id && e.label && e.type)
209
- .map((e) => ({
210
- id: this.sanitizeId(e.id),
211
- label: e.label.trim(),
212
- type: e.type.toLowerCase(),
213
- confidence: Math.max(0, Math.min(1, e.confidence || 0.7)),
214
- properties: e.properties || {}
215
- }));
216
- // Create entity ID map for relationship validation
217
- const entityIds = new Set(entities.map((e) => e.id));
218
- // Validate and sanitize relationships
219
- const relationships = parsed.relationships
220
- .filter((r) => r.source && r.target && r.label)
221
- .filter((r) => entityIds.has(this.sanitizeId(r.source)) && entityIds.has(this.sanitizeId(r.target)))
222
- .map((r) => ({
223
- source: this.sanitizeId(r.source),
224
- target: this.sanitizeId(r.target),
225
- label: r.label.trim(),
226
- confidence: Math.max(0, Math.min(1, r.confidence || 0.7)),
227
- type: r.type || 'general'
228
- }));
229
- return { entities, relationships };
230
- }
231
- catch (error) {
232
- // Only log detailed errors in development mode
233
- if (process.env.NODE_ENV === 'development') {
234
- console.error('Failed to parse AI response:', error);
235
- console.error('Raw response:', response);
236
- }
237
- return { entities: [], relationships: [] };
238
- }
239
- }
240
- parseAnalysisResponse(response) {
241
- try {
242
- let cleanResponse = response.trim();
243
- if (cleanResponse.startsWith('```json')) {
244
- cleanResponse = cleanResponse.replace(/```json\s*/, '').replace(/```\s*$/, '');
245
- }
246
- const parsed = JSON.parse(cleanResponse);
247
- return {
248
- categories: parsed.categories || [],
249
- sentiment: parsed.sentiment || 'neutral',
250
- topics: parsed.topics || [],
251
- confidence: Math.max(0, Math.min(1, parsed.confidence || 0.5))
252
- };
253
- }
254
- catch (error) {
255
- console.error('Failed to parse analysis response:', error);
256
- return {
257
- categories: [],
258
- sentiment: 'neutral',
259
- topics: [],
260
- confidence: 0
261
- };
262
- }
263
- }
264
- sanitizeId(id) {
265
- return id
266
- .toLowerCase()
267
- .replace(/[^a-z0-9_]/g, '_')
268
- .replace(/_+/g, '_')
269
- .replace(/^_|_$/g, '');
270
- }
271
- delay(ms) {
272
- return new Promise(resolve => setTimeout(resolve, ms));
273
- }
274
- /**
275
- * Check if the service is properly configured and can make API calls
276
- */
277
- async testConnection() {
278
- try {
279
- const text = await this.callOpenRouter('Test connection. Respond with only "OK".');
280
- return text.includes('OK');
281
- }
282
- catch {
283
- return false;
284
- }
285
- }
286
- /**
287
- * Get service configuration (without sensitive data)
288
- */
289
- getConfig() {
290
- return {
291
- model: this.config.model,
292
- temperature: this.config.temperature,
293
- maxTokens: this.config.maxTokens,
294
- timeout: this.config.timeout,
295
- apiKeyConfigured: !!this.apiKey
296
- };
297
- }
298
- }
299
- export default GeminiAIService;
300
- //# sourceMappingURL=GeminiAIService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GeminiAIService.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/GeminiAIService.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * AI Infrastructure
3
- *
4
- * AI and embedding services using Google Gemini API
5
- */
6
- export { GeminiAIService } from './GeminiAIService';
7
- export { EmbeddingService } from './EmbeddingService';
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/ai/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}