@cmdoss/memwal-sdk 0.6.2 → 0.8.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.
- package/ARCHITECTURE.md +547 -547
- package/BENCHMARKS.md +238 -238
- package/README.md +310 -181
- package/dist/ai-sdk/tools.d.ts +2 -2
- package/dist/ai-sdk/tools.js +2 -2
- package/dist/client/ClientMemoryManager.js +2 -2
- package/dist/client/ClientMemoryManager.js.map +1 -1
- package/dist/client/PersonalDataWallet.d.ts.map +1 -1
- package/dist/client/SimplePDWClient.d.ts +29 -1
- package/dist/client/SimplePDWClient.d.ts.map +1 -1
- package/dist/client/SimplePDWClient.js +45 -13
- package/dist/client/SimplePDWClient.js.map +1 -1
- package/dist/client/namespaces/EmbeddingsNamespace.d.ts +1 -1
- package/dist/client/namespaces/EmbeddingsNamespace.js +1 -1
- package/dist/client/namespaces/MemoryNamespace.d.ts +31 -0
- package/dist/client/namespaces/MemoryNamespace.d.ts.map +1 -1
- package/dist/client/namespaces/MemoryNamespace.js +272 -39
- package/dist/client/namespaces/MemoryNamespace.js.map +1 -1
- package/dist/client/namespaces/consolidated/AINamespace.d.ts +2 -2
- package/dist/client/namespaces/consolidated/AINamespace.js +2 -2
- package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts +12 -2
- package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts.map +1 -1
- package/dist/client/namespaces/consolidated/BlockchainNamespace.js +62 -4
- package/dist/client/namespaces/consolidated/BlockchainNamespace.js.map +1 -1
- package/dist/client/namespaces/consolidated/StorageNamespace.d.ts +67 -2
- package/dist/client/namespaces/consolidated/StorageNamespace.d.ts.map +1 -1
- package/dist/client/namespaces/consolidated/StorageNamespace.js +549 -16
- package/dist/client/namespaces/consolidated/StorageNamespace.js.map +1 -1
- package/dist/config/ConfigurationHelper.js +61 -61
- package/dist/config/defaults.js +2 -2
- package/dist/config/defaults.js.map +1 -1
- package/dist/graph/GraphService.js +21 -21
- package/dist/graph/GraphService.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/seal/EncryptionService.d.ts +9 -5
- package/dist/infrastructure/seal/EncryptionService.d.ts.map +1 -1
- package/dist/infrastructure/seal/EncryptionService.js +37 -15
- package/dist/infrastructure/seal/EncryptionService.js.map +1 -1
- package/dist/infrastructure/seal/SealService.d.ts +13 -5
- package/dist/infrastructure/seal/SealService.d.ts.map +1 -1
- package/dist/infrastructure/seal/SealService.js +36 -34
- package/dist/infrastructure/seal/SealService.js.map +1 -1
- package/dist/langchain/createPDWRAG.js +30 -30
- package/dist/retrieval/MemoryDecryptionPipeline.d.ts.map +1 -1
- package/dist/retrieval/MemoryDecryptionPipeline.js +2 -1
- package/dist/retrieval/MemoryDecryptionPipeline.js.map +1 -1
- package/dist/retrieval/MemoryRetrievalService.d.ts +31 -0
- package/dist/retrieval/MemoryRetrievalService.d.ts.map +1 -1
- package/dist/retrieval/MemoryRetrievalService.js +44 -4
- package/dist/retrieval/MemoryRetrievalService.js.map +1 -1
- package/dist/services/CapabilityService.d.ts.map +1 -1
- package/dist/services/CapabilityService.js +30 -14
- package/dist/services/CapabilityService.js.map +1 -1
- package/dist/services/CrossContextPermissionService.d.ts.map +1 -1
- package/dist/services/CrossContextPermissionService.js +9 -7
- package/dist/services/CrossContextPermissionService.js.map +1 -1
- package/dist/services/EmbeddingService.d.ts +28 -1
- package/dist/services/EmbeddingService.d.ts.map +1 -1
- package/dist/services/EmbeddingService.js +54 -0
- package/dist/services/EmbeddingService.js.map +1 -1
- package/dist/services/EncryptionService.d.ts.map +1 -1
- package/dist/services/EncryptionService.js +6 -5
- package/dist/services/EncryptionService.js.map +1 -1
- package/dist/services/GeminiAIService.js +309 -309
- package/dist/services/IndexManager.d.ts +5 -1
- package/dist/services/IndexManager.d.ts.map +1 -1
- package/dist/services/IndexManager.js +17 -40
- package/dist/services/IndexManager.js.map +1 -1
- package/dist/services/QueryService.js +1 -1
- package/dist/services/QueryService.js.map +1 -1
- package/dist/services/StorageService.d.ts +11 -0
- package/dist/services/StorageService.d.ts.map +1 -1
- package/dist/services/StorageService.js +73 -10
- package/dist/services/StorageService.js.map +1 -1
- package/dist/services/TransactionService.d.ts +20 -0
- package/dist/services/TransactionService.d.ts.map +1 -1
- package/dist/services/TransactionService.js +43 -0
- package/dist/services/TransactionService.js.map +1 -1
- package/dist/services/ViewService.js +2 -2
- package/dist/services/ViewService.js.map +1 -1
- package/dist/services/storage/QuiltBatchManager.d.ts +101 -1
- package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -1
- package/dist/services/storage/QuiltBatchManager.js +410 -20
- package/dist/services/storage/QuiltBatchManager.js.map +1 -1
- package/dist/services/storage/index.d.ts +1 -1
- package/dist/services/storage/index.d.ts.map +1 -1
- package/dist/services/storage/index.js.map +1 -1
- package/dist/utils/LRUCache.d.ts +106 -0
- package/dist/utils/LRUCache.d.ts.map +1 -0
- package/dist/utils/LRUCache.js +281 -0
- package/dist/utils/LRUCache.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/memoryIndexOnChain.d.ts +212 -0
- package/dist/utils/memoryIndexOnChain.d.ts.map +1 -0
- package/dist/utils/memoryIndexOnChain.js +312 -0
- package/dist/utils/memoryIndexOnChain.js.map +1 -0
- package/dist/utils/rebuildIndexNode.d.ts +29 -0
- package/dist/utils/rebuildIndexNode.d.ts.map +1 -1
- package/dist/utils/rebuildIndexNode.js +366 -98
- package/dist/utils/rebuildIndexNode.js.map +1 -1
- package/dist/vector/HnswWasmService.d.ts +20 -5
- package/dist/vector/HnswWasmService.d.ts.map +1 -1
- package/dist/vector/HnswWasmService.js +73 -40
- package/dist/vector/HnswWasmService.js.map +1 -1
- package/dist/vector/IHnswService.d.ts +10 -1
- package/dist/vector/IHnswService.d.ts.map +1 -1
- package/dist/vector/IHnswService.js.map +1 -1
- package/dist/vector/NodeHnswService.d.ts +16 -0
- package/dist/vector/NodeHnswService.d.ts.map +1 -1
- package/dist/vector/NodeHnswService.js +84 -5
- package/dist/vector/NodeHnswService.js.map +1 -1
- package/dist/vector/createHnswService.d.ts +1 -1
- package/dist/vector/createHnswService.js +1 -1
- package/dist/vector/index.d.ts +1 -1
- package/dist/vector/index.js +1 -1
- package/package.json +157 -157
- package/src/access/PermissionService.ts +635 -635
- package/src/aggregation/AggregationService.ts +389 -389
- package/src/ai-sdk/PDWVectorStore.ts +715 -715
- package/src/ai-sdk/index.ts +65 -65
- package/src/ai-sdk/tools.ts +460 -460
- package/src/ai-sdk/types.ts +404 -404
- package/src/batch/BatchManager.ts +597 -597
- package/src/batch/BatchingService.ts +429 -429
- package/src/batch/MemoryProcessingCache.ts +492 -492
- package/src/batch/index.ts +30 -30
- package/src/browser.ts +200 -200
- package/src/client/ClientMemoryManager.ts +987 -987
- package/src/client/PersonalDataWallet.ts +345 -345
- package/src/client/SimplePDWClient.ts +1289 -1222
- package/src/client/factory.ts +154 -154
- package/src/client/namespaces/AnalyticsNamespace.ts +377 -377
- package/src/client/namespaces/BatchNamespace.ts +356 -356
- package/src/client/namespaces/CacheNamespace.ts +123 -123
- package/src/client/namespaces/CapabilityNamespace.ts +217 -217
- package/src/client/namespaces/ClassifyNamespace.ts +169 -169
- package/src/client/namespaces/ContextNamespace.ts +297 -297
- package/src/client/namespaces/EmbeddingsNamespace.ts +99 -99
- package/src/client/namespaces/EncryptionNamespace.ts +221 -221
- package/src/client/namespaces/GraphNamespace.ts +468 -468
- package/src/client/namespaces/IndexNamespace.ts +361 -361
- package/src/client/namespaces/MemoryNamespace.ts +1422 -1135
- package/src/client/namespaces/PermissionsNamespace.ts +254 -254
- package/src/client/namespaces/PipelineNamespace.ts +220 -220
- package/src/client/namespaces/SearchNamespace.ts +1049 -1049
- package/src/client/namespaces/StorageNamespace.ts +458 -458
- package/src/client/namespaces/TxNamespace.ts +260 -260
- package/src/client/namespaces/WalletNamespace.ts +243 -243
- package/src/client/namespaces/consolidated/AINamespace.ts +449 -449
- package/src/client/namespaces/consolidated/BlockchainNamespace.ts +607 -546
- package/src/client/namespaces/consolidated/SecurityNamespace.ts +648 -648
- package/src/client/namespaces/consolidated/StorageNamespace.ts +1141 -497
- package/src/client/namespaces/consolidated/index.ts +39 -39
- package/src/client/signers/KeypairSigner.ts +108 -108
- package/src/client/signers/UnifiedSigner.ts +110 -110
- package/src/client/signers/WalletAdapterSigner.ts +159 -159
- package/src/client/signers/index.ts +26 -26
- package/src/config/ConfigurationHelper.ts +412 -412
- package/src/config/defaults.ts +51 -51
- package/src/config/index.ts +8 -8
- package/src/config/validation.ts +70 -70
- package/src/core/index.ts +14 -14
- package/src/core/interfaces/IService.ts +307 -307
- package/src/core/interfaces/index.ts +8 -8
- package/src/core/types/capability.ts +297 -297
- package/src/core/types/index.ts +870 -870
- package/src/core/types/wallet.ts +270 -270
- package/src/core/types.ts +9 -9
- package/src/core/wallet.ts +222 -222
- package/src/embedding/index.ts +19 -19
- package/src/embedding/types.ts +357 -357
- package/src/errors/index.ts +602 -602
- package/src/errors/recovery.ts +461 -461
- package/src/errors/validation.ts +567 -567
- package/src/generated/pdw/capability.ts +319 -319
- package/src/graph/GraphService.ts +887 -887
- package/src/graph/KnowledgeGraphManager.ts +728 -728
- package/src/graph/index.ts +25 -25
- package/src/index.ts +498 -474
- package/src/infrastructure/index.ts +22 -22
- package/src/infrastructure/seal/EncryptionService.ts +628 -603
- package/src/infrastructure/seal/SealService.ts +613 -615
- package/src/infrastructure/seal/index.ts +9 -9
- package/src/infrastructure/sui/BlockchainManager.ts +627 -627
- package/src/infrastructure/sui/SuiService.ts +888 -888
- package/src/infrastructure/sui/index.ts +9 -9
- package/src/infrastructure/walrus/StorageManager.ts +604 -604
- package/src/infrastructure/walrus/WalrusStorageService.ts +612 -612
- package/src/infrastructure/walrus/index.ts +9 -9
- package/src/langchain/PDWEmbeddings.ts +145 -145
- package/src/langchain/PDWVectorStore.ts +456 -456
- package/src/langchain/createPDWRAG.ts +303 -303
- package/src/langchain/index.ts +47 -47
- package/src/permissions/ConsentRepository.browser.ts +249 -249
- package/src/permissions/ConsentRepository.ts +364 -364
- package/src/pipeline/MemoryPipeline.ts +862 -862
- package/src/pipeline/PipelineManager.ts +683 -683
- package/src/pipeline/index.ts +26 -26
- package/src/retrieval/AdvancedSearchService.ts +629 -629
- package/src/retrieval/MemoryAnalyticsService.ts +711 -711
- package/src/retrieval/MemoryDecryptionPipeline.ts +825 -824
- package/src/retrieval/MemoryRetrievalService.ts +904 -830
- package/src/retrieval/index.ts +42 -42
- package/src/services/BatchService.ts +352 -352
- package/src/services/CapabilityService.ts +464 -448
- package/src/services/ClassifierService.ts +465 -465
- package/src/services/CrossContextPermissionService.ts +486 -484
- package/src/services/EmbeddingService.ts +771 -706
- package/src/services/EncryptionService.ts +712 -711
- package/src/services/GeminiAIService.ts +753 -753
- package/src/services/IndexManager.ts +977 -1004
- package/src/services/MemoryIndexService.ts +1003 -1003
- package/src/services/MemoryService.ts +369 -369
- package/src/services/QueryService.ts +890 -890
- package/src/services/StorageService.ts +1182 -1111
- package/src/services/TransactionService.ts +838 -790
- package/src/services/VectorService.ts +462 -462
- package/src/services/ViewService.ts +484 -484
- package/src/services/index.ts +25 -25
- package/src/services/storage/BlobAttributesManager.ts +333 -333
- package/src/services/storage/KnowledgeGraphManager.ts +425 -425
- package/src/services/storage/MemorySearchManager.ts +387 -387
- package/src/services/storage/QuiltBatchManager.ts +1130 -660
- package/src/services/storage/WalrusMetadataManager.ts +268 -268
- package/src/services/storage/WalrusStorageManager.ts +287 -287
- package/src/services/storage/index.ts +57 -52
- package/src/types/index.ts +13 -13
- package/src/utils/LRUCache.ts +378 -0
- package/src/utils/index.ts +76 -68
- package/src/utils/memoryIndexOnChain.ts +507 -0
- package/src/utils/rebuildIndex.ts +290 -290
- package/src/utils/rebuildIndexNode.ts +771 -424
- package/src/vector/BrowserHnswIndexService.ts +758 -758
- package/src/vector/HnswWasmService.ts +731 -679
- package/src/vector/IHnswService.ts +233 -224
- package/src/vector/NodeHnswService.ts +833 -735
- package/src/vector/VectorManager.ts +478 -478
- package/src/vector/createHnswService.ts +135 -135
- package/src/vector/index.ts +56 -56
- package/src/wallet/ContextWalletService.ts +656 -656
- package/src/wallet/MainWalletService.ts +317 -317
|
@@ -1,169 +1,169 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Classification Namespace - Content Classification & Analysis
|
|
3
|
-
*
|
|
4
|
-
* Provides AI-powered classification for:
|
|
5
|
-
* - Determining if content should be saved as memory
|
|
6
|
-
* - Auto-categorizing content
|
|
7
|
-
* - Pattern analysis
|
|
8
|
-
* - Importance scoring
|
|
9
|
-
*
|
|
10
|
-
* @module client/namespaces
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import type { ServiceContainer } from '../SimplePDWClient';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Pattern analysis result
|
|
17
|
-
*/
|
|
18
|
-
export interface PatternAnalysis {
|
|
19
|
-
patterns: Array<{
|
|
20
|
-
type: string;
|
|
21
|
-
confidence: number;
|
|
22
|
-
examples: string[];
|
|
23
|
-
}>;
|
|
24
|
-
categories: string[];
|
|
25
|
-
suggestedCategory: string;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Classification Namespace
|
|
30
|
-
*
|
|
31
|
-
* Handles AI-powered content classification
|
|
32
|
-
*/
|
|
33
|
-
export class ClassifyNamespace {
|
|
34
|
-
constructor(private services: ServiceContainer) {}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Determine if content should be saved as a memory
|
|
38
|
-
*
|
|
39
|
-
* Uses AI and pattern matching to decide if content is worth saving.
|
|
40
|
-
*
|
|
41
|
-
* @param content - Text content to analyze
|
|
42
|
-
* @returns true if should save, false otherwise
|
|
43
|
-
*
|
|
44
|
-
* @example
|
|
45
|
-
* ```typescript
|
|
46
|
-
* const shouldSave = await pdw.classify.shouldSave('I love TypeScript');
|
|
47
|
-
* if (shouldSave) {
|
|
48
|
-
* await pdw.memory.create('I love TypeScript');
|
|
49
|
-
* }
|
|
50
|
-
* ```
|
|
51
|
-
*/
|
|
52
|
-
async shouldSave(content: string): Promise<boolean> {
|
|
53
|
-
try {
|
|
54
|
-
if (!this.services.classifier) {
|
|
55
|
-
throw new Error('Classifier service not configured. Please provide geminiApiKey in config.');
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const result = await this.services.classifier.shouldSaveMemory(content);
|
|
59
|
-
return result.shouldSave;
|
|
60
|
-
} catch (error) {
|
|
61
|
-
throw new Error(`Classification failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Classify content into category
|
|
67
|
-
*
|
|
68
|
-
* Uses AI to determine the most appropriate category.
|
|
69
|
-
*
|
|
70
|
-
* @param content - Text content to classify
|
|
71
|
-
* @returns Category name (fact, preference, todo, note, general, etc.)
|
|
72
|
-
*
|
|
73
|
-
* @example
|
|
74
|
-
* ```typescript
|
|
75
|
-
* const category = await pdw.classify.category('I prefer dark mode');
|
|
76
|
-
* // Returns: 'preference'
|
|
77
|
-
* ```
|
|
78
|
-
*/
|
|
79
|
-
async category(content: string): Promise<string> {
|
|
80
|
-
try {
|
|
81
|
-
if (!this.services.classifier) {
|
|
82
|
-
throw new Error('Classifier service not configured. Please provide geminiApiKey in config.');
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// classifyContent returns string directly, not object
|
|
86
|
-
const category = await this.services.classifier.classifyContent(content);
|
|
87
|
-
return category;
|
|
88
|
-
} catch (error) {
|
|
89
|
-
throw new Error(`Category classification failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Analyze patterns in content
|
|
95
|
-
*
|
|
96
|
-
* Detects patterns like personal info, contact details, preferences, etc.
|
|
97
|
-
*
|
|
98
|
-
* @param content - Text content to analyze
|
|
99
|
-
* @returns Pattern analysis with detected patterns and suggested category
|
|
100
|
-
*
|
|
101
|
-
* @example
|
|
102
|
-
* ```typescript
|
|
103
|
-
* const analysis = await pdw.classify.patterns('My email is user@example.com');
|
|
104
|
-
* // Returns: { patterns: [{ type: 'contact', ... }], suggestedCategory: 'contact' }
|
|
105
|
-
* ```
|
|
106
|
-
*/
|
|
107
|
-
async patterns(content: string): Promise<PatternAnalysis> {
|
|
108
|
-
try {
|
|
109
|
-
if (!this.services.classifier) {
|
|
110
|
-
throw new Error('Classifier service not configured. Please provide geminiApiKey in config.');
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const result = await this.services.classifier.analyzePatterns(content);
|
|
114
|
-
|
|
115
|
-
return {
|
|
116
|
-
patterns: result.patterns.map((p: string) => ({
|
|
117
|
-
type: p,
|
|
118
|
-
confidence: 1.0,
|
|
119
|
-
examples: []
|
|
120
|
-
})),
|
|
121
|
-
categories: result.categories || [],
|
|
122
|
-
suggestedCategory: result.categories[0] || 'general' // Take first category
|
|
123
|
-
};
|
|
124
|
-
} catch (error) {
|
|
125
|
-
throw new Error(`Pattern analysis failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Calculate importance score for content
|
|
131
|
-
*
|
|
132
|
-
* Uses AI to determine how important the content is (1-10 scale).
|
|
133
|
-
*
|
|
134
|
-
* @param content - Text content to score
|
|
135
|
-
* @returns Importance score (1-10)
|
|
136
|
-
*
|
|
137
|
-
* @example
|
|
138
|
-
* ```typescript
|
|
139
|
-
* const importance = await pdw.classify.importance('Emergency contact: 911');
|
|
140
|
-
* // Returns: 10
|
|
141
|
-
* ```
|
|
142
|
-
*/
|
|
143
|
-
async importance(content: string): Promise<number> {
|
|
144
|
-
try {
|
|
145
|
-
if (!this.services.classifier) {
|
|
146
|
-
throw new Error('Classifier service not configured. Please provide geminiApiKey in config.');
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
// classifyContent returns category string
|
|
150
|
-
const category = await this.services.classifier.classifyContent(content);
|
|
151
|
-
|
|
152
|
-
// Determine importance based on category
|
|
153
|
-
const categoryImportance: Record<string, number> = {
|
|
154
|
-
'emergency': 10,
|
|
155
|
-
'contact': 9,
|
|
156
|
-
'personal_info': 8,
|
|
157
|
-
'career': 7,
|
|
158
|
-
'preference': 6,
|
|
159
|
-
'fact': 5,
|
|
160
|
-
'note': 4,
|
|
161
|
-
'general': 3
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
return categoryImportance[category] || 5;
|
|
165
|
-
} catch (error) {
|
|
166
|
-
throw new Error(`Importance scoring failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Classification Namespace - Content Classification & Analysis
|
|
3
|
+
*
|
|
4
|
+
* Provides AI-powered classification for:
|
|
5
|
+
* - Determining if content should be saved as memory
|
|
6
|
+
* - Auto-categorizing content
|
|
7
|
+
* - Pattern analysis
|
|
8
|
+
* - Importance scoring
|
|
9
|
+
*
|
|
10
|
+
* @module client/namespaces
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type { ServiceContainer } from '../SimplePDWClient';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Pattern analysis result
|
|
17
|
+
*/
|
|
18
|
+
export interface PatternAnalysis {
|
|
19
|
+
patterns: Array<{
|
|
20
|
+
type: string;
|
|
21
|
+
confidence: number;
|
|
22
|
+
examples: string[];
|
|
23
|
+
}>;
|
|
24
|
+
categories: string[];
|
|
25
|
+
suggestedCategory: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Classification Namespace
|
|
30
|
+
*
|
|
31
|
+
* Handles AI-powered content classification
|
|
32
|
+
*/
|
|
33
|
+
export class ClassifyNamespace {
|
|
34
|
+
constructor(private services: ServiceContainer) {}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Determine if content should be saved as a memory
|
|
38
|
+
*
|
|
39
|
+
* Uses AI and pattern matching to decide if content is worth saving.
|
|
40
|
+
*
|
|
41
|
+
* @param content - Text content to analyze
|
|
42
|
+
* @returns true if should save, false otherwise
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const shouldSave = await pdw.classify.shouldSave('I love TypeScript');
|
|
47
|
+
* if (shouldSave) {
|
|
48
|
+
* await pdw.memory.create('I love TypeScript');
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
async shouldSave(content: string): Promise<boolean> {
|
|
53
|
+
try {
|
|
54
|
+
if (!this.services.classifier) {
|
|
55
|
+
throw new Error('Classifier service not configured. Please provide geminiApiKey in config.');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const result = await this.services.classifier.shouldSaveMemory(content);
|
|
59
|
+
return result.shouldSave;
|
|
60
|
+
} catch (error) {
|
|
61
|
+
throw new Error(`Classification failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Classify content into category
|
|
67
|
+
*
|
|
68
|
+
* Uses AI to determine the most appropriate category.
|
|
69
|
+
*
|
|
70
|
+
* @param content - Text content to classify
|
|
71
|
+
* @returns Category name (fact, preference, todo, note, general, etc.)
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const category = await pdw.classify.category('I prefer dark mode');
|
|
76
|
+
* // Returns: 'preference'
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
async category(content: string): Promise<string> {
|
|
80
|
+
try {
|
|
81
|
+
if (!this.services.classifier) {
|
|
82
|
+
throw new Error('Classifier service not configured. Please provide geminiApiKey in config.');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// classifyContent returns string directly, not object
|
|
86
|
+
const category = await this.services.classifier.classifyContent(content);
|
|
87
|
+
return category;
|
|
88
|
+
} catch (error) {
|
|
89
|
+
throw new Error(`Category classification failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Analyze patterns in content
|
|
95
|
+
*
|
|
96
|
+
* Detects patterns like personal info, contact details, preferences, etc.
|
|
97
|
+
*
|
|
98
|
+
* @param content - Text content to analyze
|
|
99
|
+
* @returns Pattern analysis with detected patterns and suggested category
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* const analysis = await pdw.classify.patterns('My email is user@example.com');
|
|
104
|
+
* // Returns: { patterns: [{ type: 'contact', ... }], suggestedCategory: 'contact' }
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
async patterns(content: string): Promise<PatternAnalysis> {
|
|
108
|
+
try {
|
|
109
|
+
if (!this.services.classifier) {
|
|
110
|
+
throw new Error('Classifier service not configured. Please provide geminiApiKey in config.');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const result = await this.services.classifier.analyzePatterns(content);
|
|
114
|
+
|
|
115
|
+
return {
|
|
116
|
+
patterns: result.patterns.map((p: string) => ({
|
|
117
|
+
type: p,
|
|
118
|
+
confidence: 1.0,
|
|
119
|
+
examples: []
|
|
120
|
+
})),
|
|
121
|
+
categories: result.categories || [],
|
|
122
|
+
suggestedCategory: result.categories[0] || 'general' // Take first category
|
|
123
|
+
};
|
|
124
|
+
} catch (error) {
|
|
125
|
+
throw new Error(`Pattern analysis failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Calculate importance score for content
|
|
131
|
+
*
|
|
132
|
+
* Uses AI to determine how important the content is (1-10 scale).
|
|
133
|
+
*
|
|
134
|
+
* @param content - Text content to score
|
|
135
|
+
* @returns Importance score (1-10)
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* ```typescript
|
|
139
|
+
* const importance = await pdw.classify.importance('Emergency contact: 911');
|
|
140
|
+
* // Returns: 10
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
async importance(content: string): Promise<number> {
|
|
144
|
+
try {
|
|
145
|
+
if (!this.services.classifier) {
|
|
146
|
+
throw new Error('Classifier service not configured. Please provide geminiApiKey in config.');
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// classifyContent returns category string
|
|
150
|
+
const category = await this.services.classifier.classifyContent(content);
|
|
151
|
+
|
|
152
|
+
// Determine importance based on category
|
|
153
|
+
const categoryImportance: Record<string, number> = {
|
|
154
|
+
'emergency': 10,
|
|
155
|
+
'contact': 9,
|
|
156
|
+
'personal_info': 8,
|
|
157
|
+
'career': 7,
|
|
158
|
+
'preference': 6,
|
|
159
|
+
'fact': 5,
|
|
160
|
+
'note': 4,
|
|
161
|
+
'general': 3
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
return categoryImportance[category] || 5;
|
|
165
|
+
} catch (error) {
|
|
166
|
+
throw new Error(`Importance scoring failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|