@cmdoss/memwal-sdk 0.6.0 → 0.6.1

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 (224) hide show
  1. package/ARCHITECTURE.md +86 -2
  2. package/BENCHMARKS.md +2 -2
  3. package/README.md +43 -4
  4. package/dist/ai-sdk/types.d.ts +2 -2
  5. package/dist/ai-sdk/types.d.ts.map +1 -1
  6. package/dist/browser.d.ts +9 -9
  7. package/dist/browser.d.ts.map +1 -1
  8. package/dist/browser.js +16 -11
  9. package/dist/browser.js.map +1 -1
  10. package/dist/client/PersonalDataWallet.d.ts.map +1 -1
  11. package/dist/client/SimplePDWClient.d.ts.map +1 -1
  12. package/dist/client/SimplePDWClient.js +4 -4
  13. package/dist/client/SimplePDWClient.js.map +1 -1
  14. package/dist/client/namespaces/BatchNamespace.js +2 -2
  15. package/dist/client/namespaces/BatchNamespace.js.map +1 -1
  16. package/dist/client/namespaces/MemoryNamespace.js +3 -3
  17. package/dist/client/namespaces/MemoryNamespace.js.map +1 -1
  18. package/dist/client/namespaces/StorageNamespace.js +4 -4
  19. package/dist/client/namespaces/StorageNamespace.js.map +1 -1
  20. package/dist/client/namespaces/consolidated/StorageNamespace.js +2 -2
  21. package/dist/client/namespaces/consolidated/StorageNamespace.js.map +1 -1
  22. package/dist/client/signers/DappKitSigner.d.ts +136 -0
  23. package/dist/client/signers/DappKitSigner.d.ts.map +1 -0
  24. package/dist/client/signers/DappKitSigner.js +128 -0
  25. package/dist/client/signers/DappKitSigner.js.map +1 -0
  26. package/dist/client/signers/KeypairSigner.d.ts +4 -0
  27. package/dist/client/signers/KeypairSigner.d.ts.map +1 -1
  28. package/dist/client/signers/KeypairSigner.js +6 -0
  29. package/dist/client/signers/KeypairSigner.js.map +1 -1
  30. package/dist/client/signers/UnifiedSigner.d.ts +10 -0
  31. package/dist/client/signers/UnifiedSigner.d.ts.map +1 -1
  32. package/dist/client/signers/WalletAdapterSigner.d.ts +7 -0
  33. package/dist/client/signers/WalletAdapterSigner.d.ts.map +1 -1
  34. package/dist/client/signers/WalletAdapterSigner.js +9 -0
  35. package/dist/client/signers/WalletAdapterSigner.js.map +1 -1
  36. package/dist/client/signers/index.d.ts +3 -0
  37. package/dist/client/signers/index.d.ts.map +1 -1
  38. package/dist/client/signers/index.js +2 -0
  39. package/dist/client/signers/index.js.map +1 -1
  40. package/dist/generated/utils/index.js +1 -1
  41. package/dist/generated/utils/index.js.map +1 -1
  42. package/dist/index.d.ts +2 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +2 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/services/CapabilityService.js +1 -1
  47. package/dist/services/CapabilityService.js.map +1 -1
  48. package/dist/services/EncryptionService.js +1 -1
  49. package/dist/services/EncryptionService.js.map +1 -1
  50. package/dist/services/StorageService.d.ts +8 -8
  51. package/dist/services/StorageService.d.ts.map +1 -1
  52. package/dist/services/StorageService.js.map +1 -1
  53. package/dist/services/VectorService.js +2 -2
  54. package/dist/services/VectorService.js.map +1 -1
  55. package/dist/services/storage/BlobAttributesManager.d.ts +4 -4
  56. package/dist/services/storage/BlobAttributesManager.d.ts.map +1 -1
  57. package/dist/services/storage/BlobAttributesManager.js +6 -15
  58. package/dist/services/storage/BlobAttributesManager.js.map +1 -1
  59. package/dist/services/storage/QuiltBatchManager.d.ts +23 -5
  60. package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -1
  61. package/dist/services/storage/QuiltBatchManager.js +118 -35
  62. package/dist/services/storage/QuiltBatchManager.js.map +1 -1
  63. package/dist/services/storage/WalrusMetadataManager.d.ts +2 -2
  64. package/dist/services/storage/WalrusMetadataManager.d.ts.map +1 -1
  65. package/dist/services/storage/WalrusMetadataManager.js +2 -5
  66. package/dist/services/storage/WalrusMetadataManager.js.map +1 -1
  67. package/dist/services/storage/WalrusStorageManager.d.ts +2 -2
  68. package/dist/services/storage/WalrusStorageManager.d.ts.map +1 -1
  69. package/dist/services/storage/WalrusStorageManager.js +7 -11
  70. package/dist/services/storage/WalrusStorageManager.js.map +1 -1
  71. package/dist/wallet/MainWalletService.js +1 -1
  72. package/dist/wallet/MainWalletService.js.map +1 -1
  73. package/package.json +10 -3
  74. package/src/ai-sdk/types.ts +2 -2
  75. package/src/browser.ts +19 -20
  76. package/src/client/SimplePDWClient.ts +18 -14
  77. package/src/client/namespaces/BatchNamespace.ts +2 -2
  78. package/src/client/namespaces/MemoryNamespace.ts +3 -3
  79. package/src/client/namespaces/StorageNamespace.ts +4 -4
  80. package/src/client/namespaces/consolidated/StorageNamespace.ts +2 -2
  81. package/src/client/signers/DappKitSigner.ts +207 -0
  82. package/src/client/signers/KeypairSigner.ts +7 -0
  83. package/src/client/signers/UnifiedSigner.ts +11 -0
  84. package/src/client/signers/WalletAdapterSigner.ts +10 -0
  85. package/src/client/signers/index.ts +7 -0
  86. package/src/generated/pdw/deps/sui/object.ts +12 -12
  87. package/src/generated/pdw/deps/sui/vec_map.ts +32 -32
  88. package/src/generated/pdw/memory.ts +1087 -1087
  89. package/src/generated/pdw/wallet.ts +123 -123
  90. package/src/generated/utils/index.ts +159 -159
  91. package/src/index.ts +16 -0
  92. package/src/services/CapabilityService.ts +1 -1
  93. package/src/services/EncryptionService.ts +1 -1
  94. package/src/services/StorageService.ts +8 -8
  95. package/src/services/VectorService.ts +2 -2
  96. package/src/services/storage/BlobAttributesManager.ts +10 -19
  97. package/src/services/storage/QuiltBatchManager.ts +139 -37
  98. package/src/services/storage/WalrusMetadataManager.ts +4 -7
  99. package/src/services/storage/WalrusStorageManager.ts +10 -13
  100. package/src/wallet/MainWalletService.ts +1 -1
  101. package/dist/api/client.d.ts +0 -43
  102. package/dist/api/client.d.ts.map +0 -1
  103. package/dist/api/client.js +0 -136
  104. package/dist/api/client.js.map +0 -1
  105. package/dist/chat/index.d.ts +0 -13
  106. package/dist/chat/index.d.ts.map +0 -1
  107. package/dist/chat/index.js +0 -14
  108. package/dist/chat/index.js.map +0 -1
  109. package/dist/client/namespaces/ChatNamespace.d.ts +0 -110
  110. package/dist/client/namespaces/ChatNamespace.d.ts.map +0 -1
  111. package/dist/client/namespaces/ChatNamespace.js +0 -123
  112. package/dist/client/namespaces/ChatNamespace.js.map +0 -1
  113. package/dist/encryption/index.d.ts +0 -14
  114. package/dist/encryption/index.d.ts.map +0 -1
  115. package/dist/encryption/index.js +0 -14
  116. package/dist/encryption/index.js.map +0 -1
  117. package/dist/graph/BrowserKnowledgeGraphManager.d.ts +0 -101
  118. package/dist/graph/BrowserKnowledgeGraphManager.d.ts.map +0 -1
  119. package/dist/graph/BrowserKnowledgeGraphManager.js +0 -411
  120. package/dist/graph/BrowserKnowledgeGraphManager.js.map +0 -1
  121. package/dist/hooks.wip/index.d.ts +0 -55
  122. package/dist/hooks.wip/index.d.ts.map +0 -1
  123. package/dist/hooks.wip/index.js +0 -58
  124. package/dist/hooks.wip/index.js.map +0 -1
  125. package/dist/hooks.wip/useCreateMemory.d.ts +0 -111
  126. package/dist/hooks.wip/useCreateMemory.d.ts.map +0 -1
  127. package/dist/hooks.wip/useCreateMemory.js +0 -149
  128. package/dist/hooks.wip/useCreateMemory.js.map +0 -1
  129. package/dist/hooks.wip/useCreateMemoryBatch.d.ts +0 -122
  130. package/dist/hooks.wip/useCreateMemoryBatch.d.ts.map +0 -1
  131. package/dist/hooks.wip/useCreateMemoryBatch.js +0 -221
  132. package/dist/hooks.wip/useCreateMemoryBatch.js.map +0 -1
  133. package/dist/hooks.wip/useKnowledgeGraph.d.ts +0 -66
  134. package/dist/hooks.wip/useKnowledgeGraph.d.ts.map +0 -1
  135. package/dist/hooks.wip/useKnowledgeGraph.js +0 -229
  136. package/dist/hooks.wip/useKnowledgeGraph.js.map +0 -1
  137. package/dist/hooks.wip/useMemoryChat.d.ts +0 -106
  138. package/dist/hooks.wip/useMemoryChat.d.ts.map +0 -1
  139. package/dist/hooks.wip/useMemoryChat.js +0 -284
  140. package/dist/hooks.wip/useMemoryChat.js.map +0 -1
  141. package/dist/hooks.wip/useMemoryIndex.d.ts +0 -90
  142. package/dist/hooks.wip/useMemoryIndex.d.ts.map +0 -1
  143. package/dist/hooks.wip/useMemoryIndex.js +0 -218
  144. package/dist/hooks.wip/useMemoryIndex.js.map +0 -1
  145. package/dist/hooks.wip/useMemoryManager.d.ts +0 -35
  146. package/dist/hooks.wip/useMemoryManager.d.ts.map +0 -1
  147. package/dist/hooks.wip/useMemoryManager.js +0 -86
  148. package/dist/hooks.wip/useMemoryManager.js.map +0 -1
  149. package/dist/hooks.wip/useMemorySearch.d.ts +0 -100
  150. package/dist/hooks.wip/useMemorySearch.d.ts.map +0 -1
  151. package/dist/hooks.wip/useMemorySearch.js +0 -278
  152. package/dist/hooks.wip/useMemorySearch.js.map +0 -1
  153. package/dist/hooks.wip/useMemoryServices.d.ts +0 -80
  154. package/dist/hooks.wip/useMemoryServices.d.ts.map +0 -1
  155. package/dist/hooks.wip/useMemoryServices.js +0 -264
  156. package/dist/hooks.wip/useMemoryServices.js.map +0 -1
  157. package/dist/hooks.wip/usePDWRAG.d.ts +0 -112
  158. package/dist/hooks.wip/usePDWRAG.d.ts.map +0 -1
  159. package/dist/hooks.wip/usePDWRAG.js +0 -121
  160. package/dist/hooks.wip/usePDWRAG.js.map +0 -1
  161. package/dist/hooks.wip/usePDWVectorStore.d.ts +0 -68
  162. package/dist/hooks.wip/usePDWVectorStore.d.ts.map +0 -1
  163. package/dist/hooks.wip/usePDWVectorStore.js +0 -102
  164. package/dist/hooks.wip/usePDWVectorStore.js.map +0 -1
  165. package/dist/hooks.wip/useRetrieveEmbedding.d.ts +0 -138
  166. package/dist/hooks.wip/useRetrieveEmbedding.d.ts.map +0 -1
  167. package/dist/hooks.wip/useRetrieveEmbedding.js +0 -121
  168. package/dist/hooks.wip/useRetrieveEmbedding.js.map +0 -1
  169. package/dist/hooks.wip/useSearchMemories.d.ts +0 -103
  170. package/dist/hooks.wip/useSearchMemories.d.ts.map +0 -1
  171. package/dist/hooks.wip/useSearchMemories.js +0 -146
  172. package/dist/hooks.wip/useSearchMemories.js.map +0 -1
  173. package/dist/hooks.wip/useStoreEmbedding.d.ts +0 -174
  174. package/dist/hooks.wip/useStoreEmbedding.d.ts.map +0 -1
  175. package/dist/hooks.wip/useStoreEmbedding.js +0 -167
  176. package/dist/hooks.wip/useStoreEmbedding.js.map +0 -1
  177. package/dist/hooks.wip/useWalletMemories.d.ts +0 -119
  178. package/dist/hooks.wip/useWalletMemories.d.ts.map +0 -1
  179. package/dist/hooks.wip/useWalletMemories.js +0 -166
  180. package/dist/hooks.wip/useWalletMemories.js.map +0 -1
  181. package/dist/hooks.wip/utils/cache.d.ts +0 -25
  182. package/dist/hooks.wip/utils/cache.d.ts.map +0 -1
  183. package/dist/hooks.wip/utils/cache.js +0 -38
  184. package/dist/hooks.wip/utils/cache.js.map +0 -1
  185. package/dist/hooks.wip/utils/types.d.ts +0 -138
  186. package/dist/hooks.wip/utils/types.d.ts.map +0 -1
  187. package/dist/hooks.wip/utils/types.js +0 -5
  188. package/dist/hooks.wip/utils/types.js.map +0 -1
  189. package/dist/infrastructure/ai/EmbeddingService.d.ts +0 -101
  190. package/dist/infrastructure/ai/EmbeddingService.d.ts.map +0 -1
  191. package/dist/infrastructure/ai/EmbeddingService.js +0 -242
  192. package/dist/infrastructure/ai/EmbeddingService.js.map +0 -1
  193. package/dist/infrastructure/ai/GeminiAIService.d.ts +0 -84
  194. package/dist/infrastructure/ai/GeminiAIService.d.ts.map +0 -1
  195. package/dist/infrastructure/ai/GeminiAIService.js +0 -300
  196. package/dist/infrastructure/ai/GeminiAIService.js.map +0 -1
  197. package/dist/infrastructure/ai/index.d.ts +0 -8
  198. package/dist/infrastructure/ai/index.d.ts.map +0 -1
  199. package/dist/infrastructure/ai/index.js +0 -8
  200. package/dist/infrastructure/ai/index.js.map +0 -1
  201. package/dist/memory/index.d.ts +0 -13
  202. package/dist/memory/index.d.ts.map +0 -1
  203. package/dist/memory/index.js +0 -14
  204. package/dist/memory/index.js.map +0 -1
  205. package/dist/services/ChatService.d.ts +0 -89
  206. package/dist/services/ChatService.d.ts.map +0 -1
  207. package/dist/services/ChatService.js +0 -319
  208. package/dist/services/ChatService.js.map +0 -1
  209. package/dist/transactions/index.d.ts +0 -13
  210. package/dist/transactions/index.d.ts.map +0 -1
  211. package/dist/transactions/index.js +0 -14
  212. package/dist/transactions/index.js.map +0 -1
  213. package/dist/types/wallet.d.ts +0 -12
  214. package/dist/types/wallet.d.ts.map +0 -1
  215. package/dist/types/wallet.js +0 -13
  216. package/dist/types/wallet.js.map +0 -1
  217. package/dist/view/ViewService.d.ts +0 -136
  218. package/dist/view/ViewService.d.ts.map +0 -1
  219. package/dist/view/ViewService.js +0 -325
  220. package/dist/view/ViewService.js.map +0 -1
  221. package/dist/view/index.d.ts +0 -7
  222. package/dist/view/index.d.ts.map +0 -1
  223. package/dist/view/index.js +0 -7
  224. 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":"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"}
@@ -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"}