@aitytech/agentkits-memory 1.0.0 → 2.0.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/LICENSE +21 -0
- package/README.md +267 -149
- package/assets/agentkits-memory-add-memory.png +0 -0
- package/assets/agentkits-memory-memory-detail.png +0 -0
- package/assets/agentkits-memory-memory-list.png +0 -0
- package/assets/logo.svg +24 -0
- package/dist/better-sqlite3-backend.d.ts +192 -0
- package/dist/better-sqlite3-backend.d.ts.map +1 -0
- package/dist/better-sqlite3-backend.js +801 -0
- package/dist/better-sqlite3-backend.js.map +1 -0
- package/dist/cli/save.js +0 -0
- package/dist/cli/setup.d.ts +6 -2
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +289 -42
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/viewer.js +25 -56
- package/dist/cli/viewer.js.map +1 -1
- package/dist/cli/web-viewer.d.ts +14 -0
- package/dist/cli/web-viewer.d.ts.map +1 -0
- package/dist/cli/web-viewer.js +1769 -0
- package/dist/cli/web-viewer.js.map +1 -0
- package/dist/embeddings/embedding-cache.d.ts +131 -0
- package/dist/embeddings/embedding-cache.d.ts.map +1 -0
- package/dist/embeddings/embedding-cache.js +217 -0
- package/dist/embeddings/embedding-cache.js.map +1 -0
- package/dist/embeddings/index.d.ts +11 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +11 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/local-embeddings.d.ts +140 -0
- package/dist/embeddings/local-embeddings.d.ts.map +1 -0
- package/dist/embeddings/local-embeddings.js +293 -0
- package/dist/embeddings/local-embeddings.js.map +1 -0
- package/dist/hooks/context.d.ts +6 -1
- package/dist/hooks/context.d.ts.map +1 -1
- package/dist/hooks/context.js +12 -2
- package/dist/hooks/context.js.map +1 -1
- package/dist/hooks/observation.d.ts +6 -1
- package/dist/hooks/observation.d.ts.map +1 -1
- package/dist/hooks/observation.js +12 -2
- package/dist/hooks/observation.js.map +1 -1
- package/dist/hooks/service.d.ts +1 -6
- package/dist/hooks/service.d.ts.map +1 -1
- package/dist/hooks/service.js +33 -85
- package/dist/hooks/service.js.map +1 -1
- package/dist/hooks/session-init.d.ts +6 -1
- package/dist/hooks/session-init.d.ts.map +1 -1
- package/dist/hooks/session-init.js +12 -2
- package/dist/hooks/session-init.js.map +1 -1
- package/dist/hooks/summarize.d.ts +6 -1
- package/dist/hooks/summarize.d.ts.map +1 -1
- package/dist/hooks/summarize.js +12 -2
- package/dist/hooks/summarize.js.map +1 -1
- package/dist/index.d.ts +10 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +172 -94
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.js +17 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/migration.js +3 -3
- package/dist/migration.js.map +1 -1
- package/dist/search/hybrid-search.d.ts +262 -0
- package/dist/search/hybrid-search.d.ts.map +1 -0
- package/dist/search/hybrid-search.js +688 -0
- package/dist/search/hybrid-search.js.map +1 -0
- package/dist/search/index.d.ts +13 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +13 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/token-economics.d.ts +161 -0
- package/dist/search/token-economics.d.ts.map +1 -0
- package/dist/search/token-economics.js +239 -0
- package/dist/search/token-economics.js.map +1 -0
- package/dist/types.d.ts +0 -68
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +23 -8
- package/src/__tests__/better-sqlite3-backend.test.ts +1466 -0
- package/src/__tests__/cache-manager.test.ts +499 -0
- package/src/__tests__/embedding-integration.test.ts +481 -0
- package/src/__tests__/hnsw-index.test.ts +727 -0
- package/src/__tests__/index.test.ts +432 -0
- package/src/better-sqlite3-backend.ts +1000 -0
- package/src/cli/setup.ts +358 -47
- package/src/cli/viewer.ts +28 -63
- package/src/cli/web-viewer.ts +1956 -0
- package/src/embeddings/__tests__/embedding-cache.test.ts +269 -0
- package/src/embeddings/__tests__/local-embeddings.test.ts +495 -0
- package/src/embeddings/embedding-cache.ts +318 -0
- package/src/embeddings/index.ts +20 -0
- package/src/embeddings/local-embeddings.ts +419 -0
- package/src/hooks/__tests__/handlers.test.ts +58 -17
- package/src/hooks/__tests__/integration.test.ts +77 -26
- package/src/hooks/context.ts +13 -2
- package/src/hooks/observation.ts +13 -2
- package/src/hooks/service.ts +39 -100
- package/src/hooks/session-init.ts +13 -2
- package/src/hooks/summarize.ts +13 -2
- package/src/index.ts +210 -116
- package/src/mcp/server.ts +20 -3
- package/src/search/__tests__/hybrid-search.test.ts +669 -0
- package/src/search/__tests__/token-economics.test.ts +276 -0
- package/src/search/hybrid-search.ts +968 -0
- package/src/search/index.ts +29 -0
- package/src/search/token-economics.ts +367 -0
- package/src/types.ts +0 -96
- package/src/__tests__/sqljs-backend.test.ts +0 -410
- package/src/migration.ts +0 -574
- package/src/sql.js.d.ts +0 -70
- package/src/sqljs-backend.ts +0 -789
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-viewer.js","sourceRoot":"","sources":["../../src/cli/web-viewer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistent Embedding Cache
|
|
3
|
+
*
|
|
4
|
+
* SQLite-backed cache for embeddings to avoid re-computing
|
|
5
|
+
* embeddings for the same text content.
|
|
6
|
+
*
|
|
7
|
+
* @module @aitytech/agentkits-memory/embeddings
|
|
8
|
+
*/
|
|
9
|
+
import type { Database as BetterDatabase } from 'better-sqlite3';
|
|
10
|
+
/**
|
|
11
|
+
* Embedding cache configuration
|
|
12
|
+
*/
|
|
13
|
+
export interface PersistentEmbeddingCacheConfig {
|
|
14
|
+
/** Maximum number of entries (default: 10000) */
|
|
15
|
+
maxSize?: number;
|
|
16
|
+
/** TTL in milliseconds (default: 7 days) */
|
|
17
|
+
ttlMs?: number;
|
|
18
|
+
/** Vector dimensions (default: 384) */
|
|
19
|
+
dimensions?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Cached embedding entry
|
|
23
|
+
*/
|
|
24
|
+
export interface CachedEmbedding {
|
|
25
|
+
/** Content hash (primary key) */
|
|
26
|
+
hash: string;
|
|
27
|
+
/** The embedding vector */
|
|
28
|
+
embedding: Float32Array;
|
|
29
|
+
/** When the entry was created */
|
|
30
|
+
createdAt: number;
|
|
31
|
+
/** When the entry expires */
|
|
32
|
+
expiresAt: number;
|
|
33
|
+
/** Access count */
|
|
34
|
+
accessCount: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Cache statistics
|
|
38
|
+
*/
|
|
39
|
+
export interface PersistentEmbeddingCacheStats {
|
|
40
|
+
/** Total entries in cache */
|
|
41
|
+
size: number;
|
|
42
|
+
/** Cache hits */
|
|
43
|
+
hits: number;
|
|
44
|
+
/** Cache misses */
|
|
45
|
+
misses: number;
|
|
46
|
+
/** Hit rate (0-1) */
|
|
47
|
+
hitRate: number;
|
|
48
|
+
/** Total bytes used */
|
|
49
|
+
bytesUsed: number;
|
|
50
|
+
/** Oldest entry age in ms */
|
|
51
|
+
oldestEntryAge: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Persistent Embedding Cache using SQLite
|
|
55
|
+
*/
|
|
56
|
+
export declare class PersistentEmbeddingCache {
|
|
57
|
+
private db;
|
|
58
|
+
private config;
|
|
59
|
+
private stats;
|
|
60
|
+
constructor(db: BetterDatabase, config?: PersistentEmbeddingCacheConfig);
|
|
61
|
+
/**
|
|
62
|
+
* Initialize the cache table
|
|
63
|
+
*/
|
|
64
|
+
private initializeSchema;
|
|
65
|
+
/**
|
|
66
|
+
* Hash content for cache key
|
|
67
|
+
*/
|
|
68
|
+
private hashContent;
|
|
69
|
+
/**
|
|
70
|
+
* Convert Float32Array to Buffer for storage
|
|
71
|
+
*/
|
|
72
|
+
private toBuffer;
|
|
73
|
+
/**
|
|
74
|
+
* Convert Buffer back to Float32Array
|
|
75
|
+
*/
|
|
76
|
+
private fromBuffer;
|
|
77
|
+
/**
|
|
78
|
+
* Get embedding from cache
|
|
79
|
+
*/
|
|
80
|
+
get(content: string): Float32Array | null;
|
|
81
|
+
/**
|
|
82
|
+
* Store embedding in cache
|
|
83
|
+
*/
|
|
84
|
+
set(content: string, embedding: Float32Array): void;
|
|
85
|
+
/**
|
|
86
|
+
* Check if content is in cache
|
|
87
|
+
*/
|
|
88
|
+
has(content: string): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Delete expired entries
|
|
91
|
+
*/
|
|
92
|
+
evictExpired(): number;
|
|
93
|
+
/**
|
|
94
|
+
* Evict oldest entries if over capacity
|
|
95
|
+
*/
|
|
96
|
+
private evictIfNeeded;
|
|
97
|
+
/**
|
|
98
|
+
* Clear all cache entries
|
|
99
|
+
*/
|
|
100
|
+
clear(): void;
|
|
101
|
+
/**
|
|
102
|
+
* Get cache statistics
|
|
103
|
+
*/
|
|
104
|
+
getStats(): PersistentEmbeddingCacheStats;
|
|
105
|
+
/**
|
|
106
|
+
* Get all cached embeddings (for warm-starting HNSW index)
|
|
107
|
+
*/
|
|
108
|
+
getAllEmbeddings(): Array<{
|
|
109
|
+
hash: string;
|
|
110
|
+
embedding: Float32Array;
|
|
111
|
+
}>;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Create a persistent embedding cache
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* import Database from 'better-sqlite3';
|
|
119
|
+
* import { createPersistentEmbeddingCache } from '@aitytech/agentkits-memory/embeddings';
|
|
120
|
+
*
|
|
121
|
+
* const db = new Database(':memory:');
|
|
122
|
+
*
|
|
123
|
+
* const cache = createPersistentEmbeddingCache(db, {
|
|
124
|
+
* maxSize: 10000,
|
|
125
|
+
* ttlMs: 7 * 24 * 60 * 60 * 1000, // 7 days
|
|
126
|
+
* });
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
export declare function createPersistentEmbeddingCache(db: BetterDatabase, config?: PersistentEmbeddingCacheConfig): PersistentEmbeddingCache;
|
|
130
|
+
export default PersistentEmbeddingCache;
|
|
131
|
+
//# sourceMappingURL=embedding-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding-cache.d.ts","sourceRoot":"","sources":["../../src/embeddings/embedding-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IAEb,2BAA2B;IAC3B,SAAS,EAAE,YAAY,CAAC;IAExB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAElB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAElB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IAEb,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IAEf,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAEhB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAElB,6BAA6B;IAC7B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAA2C;IACzD,OAAO,CAAC,KAAK,CAGX;gBAEU,EAAE,EAAE,cAAc,EAAE,MAAM,GAAE,8BAAmC;IAW3E;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IA2BzC;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI;IAgBnD;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAY7B;;OAEG;IACH,YAAY,IAAI,MAAM;IAMtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,QAAQ,IAAI,6BAA6B;IA6BzC;;OAEG;IACH,gBAAgB,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,YAAY,CAAA;KAAE,CAAC;CAcrE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,cAAc,EAClB,MAAM,CAAC,EAAE,8BAA8B,GACtC,wBAAwB,CAE1B;AAED,eAAe,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistent Embedding Cache
|
|
3
|
+
*
|
|
4
|
+
* SQLite-backed cache for embeddings to avoid re-computing
|
|
5
|
+
* embeddings for the same text content.
|
|
6
|
+
*
|
|
7
|
+
* @module @aitytech/agentkits-memory/embeddings
|
|
8
|
+
*/
|
|
9
|
+
import { createHash } from 'crypto';
|
|
10
|
+
/**
|
|
11
|
+
* Persistent Embedding Cache using SQLite
|
|
12
|
+
*/
|
|
13
|
+
export class PersistentEmbeddingCache {
|
|
14
|
+
db;
|
|
15
|
+
config;
|
|
16
|
+
stats = {
|
|
17
|
+
hits: 0,
|
|
18
|
+
misses: 0,
|
|
19
|
+
};
|
|
20
|
+
constructor(db, config = {}) {
|
|
21
|
+
this.db = db;
|
|
22
|
+
this.config = {
|
|
23
|
+
maxSize: config.maxSize || 10000,
|
|
24
|
+
ttlMs: config.ttlMs || 7 * 24 * 60 * 60 * 1000, // 7 days
|
|
25
|
+
dimensions: config.dimensions || 384,
|
|
26
|
+
};
|
|
27
|
+
this.initializeSchema();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Initialize the cache table
|
|
31
|
+
*/
|
|
32
|
+
initializeSchema() {
|
|
33
|
+
this.db.exec(`
|
|
34
|
+
CREATE TABLE IF NOT EXISTS embedding_cache (
|
|
35
|
+
hash TEXT PRIMARY KEY,
|
|
36
|
+
embedding BLOB NOT NULL,
|
|
37
|
+
created_at INTEGER NOT NULL,
|
|
38
|
+
expires_at INTEGER NOT NULL,
|
|
39
|
+
access_count INTEGER DEFAULT 1,
|
|
40
|
+
last_accessed_at INTEGER NOT NULL
|
|
41
|
+
)
|
|
42
|
+
`);
|
|
43
|
+
this.db.exec(`
|
|
44
|
+
CREATE INDEX IF NOT EXISTS idx_embedding_cache_expires
|
|
45
|
+
ON embedding_cache(expires_at)
|
|
46
|
+
`);
|
|
47
|
+
this.db.exec(`
|
|
48
|
+
CREATE INDEX IF NOT EXISTS idx_embedding_cache_accessed
|
|
49
|
+
ON embedding_cache(last_accessed_at)
|
|
50
|
+
`);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Hash content for cache key
|
|
54
|
+
*/
|
|
55
|
+
hashContent(content) {
|
|
56
|
+
return createHash('sha256').update(content).digest('hex').substring(0, 32);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Convert Float32Array to Buffer for storage
|
|
60
|
+
*/
|
|
61
|
+
toBuffer(embedding) {
|
|
62
|
+
return Buffer.from(embedding.buffer);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Convert Buffer back to Float32Array
|
|
66
|
+
*/
|
|
67
|
+
fromBuffer(buffer) {
|
|
68
|
+
return new Float32Array(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get embedding from cache
|
|
72
|
+
*/
|
|
73
|
+
get(content) {
|
|
74
|
+
const hash = this.hashContent(content);
|
|
75
|
+
const now = Date.now();
|
|
76
|
+
const row = this.db.prepare(`
|
|
77
|
+
SELECT embedding, expires_at
|
|
78
|
+
FROM embedding_cache
|
|
79
|
+
WHERE hash = ? AND expires_at > ?
|
|
80
|
+
`).get(hash, now);
|
|
81
|
+
if (row) {
|
|
82
|
+
// Update access stats
|
|
83
|
+
this.db.prepare(`
|
|
84
|
+
UPDATE embedding_cache
|
|
85
|
+
SET access_count = access_count + 1,
|
|
86
|
+
last_accessed_at = ?
|
|
87
|
+
WHERE hash = ?
|
|
88
|
+
`).run(now, hash);
|
|
89
|
+
this.stats.hits++;
|
|
90
|
+
return this.fromBuffer(row.embedding);
|
|
91
|
+
}
|
|
92
|
+
this.stats.misses++;
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Store embedding in cache
|
|
97
|
+
*/
|
|
98
|
+
set(content, embedding) {
|
|
99
|
+
const hash = this.hashContent(content);
|
|
100
|
+
const now = Date.now();
|
|
101
|
+
const expiresAt = now + this.config.ttlMs;
|
|
102
|
+
// Check if we need to evict entries
|
|
103
|
+
this.evictIfNeeded();
|
|
104
|
+
// Insert or replace
|
|
105
|
+
this.db.prepare(`
|
|
106
|
+
INSERT OR REPLACE INTO embedding_cache
|
|
107
|
+
(hash, embedding, created_at, expires_at, access_count, last_accessed_at)
|
|
108
|
+
VALUES (?, ?, ?, ?, 1, ?)
|
|
109
|
+
`).run(hash, this.toBuffer(embedding), now, expiresAt, now);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Check if content is in cache
|
|
113
|
+
*/
|
|
114
|
+
has(content) {
|
|
115
|
+
const hash = this.hashContent(content);
|
|
116
|
+
const now = Date.now();
|
|
117
|
+
const row = this.db.prepare(`
|
|
118
|
+
SELECT 1 FROM embedding_cache
|
|
119
|
+
WHERE hash = ? AND expires_at > ?
|
|
120
|
+
`).get(hash, now);
|
|
121
|
+
return !!row;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Delete expired entries
|
|
125
|
+
*/
|
|
126
|
+
evictExpired() {
|
|
127
|
+
const now = Date.now();
|
|
128
|
+
const result = this.db.prepare(`DELETE FROM embedding_cache WHERE expires_at <= ?`).run(now);
|
|
129
|
+
return result.changes;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Evict oldest entries if over capacity
|
|
133
|
+
*/
|
|
134
|
+
evictIfNeeded() {
|
|
135
|
+
const countRow = this.db.prepare(`SELECT COUNT(*) as count FROM embedding_cache`).get();
|
|
136
|
+
if (countRow.count >= this.config.maxSize) {
|
|
137
|
+
// Delete oldest 10% of entries
|
|
138
|
+
const deleteCount = Math.max(1, Math.floor(this.config.maxSize * 0.1));
|
|
139
|
+
this.db.prepare(`
|
|
140
|
+
DELETE FROM embedding_cache
|
|
141
|
+
WHERE hash IN (
|
|
142
|
+
SELECT hash FROM embedding_cache
|
|
143
|
+
ORDER BY last_accessed_at ASC
|
|
144
|
+
LIMIT ?
|
|
145
|
+
)
|
|
146
|
+
`).run(deleteCount);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Clear all cache entries
|
|
151
|
+
*/
|
|
152
|
+
clear() {
|
|
153
|
+
this.db.exec(`DELETE FROM embedding_cache`);
|
|
154
|
+
this.stats.hits = 0;
|
|
155
|
+
this.stats.misses = 0;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get cache statistics
|
|
159
|
+
*/
|
|
160
|
+
getStats() {
|
|
161
|
+
const now = Date.now();
|
|
162
|
+
// Get size and bytes
|
|
163
|
+
const result = this.db.prepare(`
|
|
164
|
+
SELECT
|
|
165
|
+
COUNT(*) as size,
|
|
166
|
+
COALESCE(SUM(LENGTH(embedding)), 0) as bytes,
|
|
167
|
+
MIN(created_at) as oldest
|
|
168
|
+
FROM embedding_cache
|
|
169
|
+
WHERE expires_at > ?
|
|
170
|
+
`).get(now);
|
|
171
|
+
const totalRequests = this.stats.hits + this.stats.misses;
|
|
172
|
+
return {
|
|
173
|
+
size: result.size,
|
|
174
|
+
hits: this.stats.hits,
|
|
175
|
+
misses: this.stats.misses,
|
|
176
|
+
hitRate: totalRequests > 0 ? this.stats.hits / totalRequests : 0,
|
|
177
|
+
bytesUsed: result.bytes,
|
|
178
|
+
oldestEntryAge: result.oldest ? now - result.oldest : 0,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Get all cached embeddings (for warm-starting HNSW index)
|
|
183
|
+
*/
|
|
184
|
+
getAllEmbeddings() {
|
|
185
|
+
const now = Date.now();
|
|
186
|
+
const rows = this.db.prepare(`
|
|
187
|
+
SELECT hash, embedding
|
|
188
|
+
FROM embedding_cache
|
|
189
|
+
WHERE expires_at > ?
|
|
190
|
+
`).all(now);
|
|
191
|
+
return rows.map(row => ({
|
|
192
|
+
hash: row.hash,
|
|
193
|
+
embedding: this.fromBuffer(row.embedding),
|
|
194
|
+
}));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Create a persistent embedding cache
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
* ```typescript
|
|
202
|
+
* import Database from 'better-sqlite3';
|
|
203
|
+
* import { createPersistentEmbeddingCache } from '@aitytech/agentkits-memory/embeddings';
|
|
204
|
+
*
|
|
205
|
+
* const db = new Database(':memory:');
|
|
206
|
+
*
|
|
207
|
+
* const cache = createPersistentEmbeddingCache(db, {
|
|
208
|
+
* maxSize: 10000,
|
|
209
|
+
* ttlMs: 7 * 24 * 60 * 60 * 1000, // 7 days
|
|
210
|
+
* });
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
213
|
+
export function createPersistentEmbeddingCache(db, config) {
|
|
214
|
+
return new PersistentEmbeddingCache(db, config);
|
|
215
|
+
}
|
|
216
|
+
export default PersistentEmbeddingCache;
|
|
217
|
+
//# sourceMappingURL=embedding-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding-cache.js","sourceRoot":"","sources":["../../src/embeddings/embedding-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Embeddings Module
|
|
3
|
+
*
|
|
4
|
+
* 100% offline text embeddings for semantic search.
|
|
5
|
+
* Uses Transformers.js (WASM) - no external API calls.
|
|
6
|
+
*
|
|
7
|
+
* @module @aitytech/agentkits-memory/embeddings
|
|
8
|
+
*/
|
|
9
|
+
export { LocalEmbeddingsService, createLocalEmbeddings, createEmbeddingGenerator, type LocalEmbeddingsConfig, type EmbeddingProvider, type EmbeddingResult, type EmbeddingsStats, } from './local-embeddings.js';
|
|
10
|
+
export { PersistentEmbeddingCache, createPersistentEmbeddingCache } from './embedding-cache.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embeddings/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Embeddings Module
|
|
3
|
+
*
|
|
4
|
+
* 100% offline text embeddings for semantic search.
|
|
5
|
+
* Uses Transformers.js (WASM) - no external API calls.
|
|
6
|
+
*
|
|
7
|
+
* @module @aitytech/agentkits-memory/embeddings
|
|
8
|
+
*/
|
|
9
|
+
export { LocalEmbeddingsService, createLocalEmbeddings, createEmbeddingGenerator, } from './local-embeddings.js';
|
|
10
|
+
export { PersistentEmbeddingCache, createPersistentEmbeddingCache } from './embedding-cache.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embeddings/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,GAKzB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Offline Embeddings Service
|
|
3
|
+
*
|
|
4
|
+
* Provides 100% offline text embeddings using Transformers.js (WASM-based).
|
|
5
|
+
* No external API calls. Model is downloaded once and cached locally.
|
|
6
|
+
*
|
|
7
|
+
* @module @aitytech/agentkits-memory/embeddings
|
|
8
|
+
*/
|
|
9
|
+
import type { EmbeddingGenerator } from '../types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Embedding provider type
|
|
12
|
+
*/
|
|
13
|
+
export type EmbeddingProvider = 'transformers' | 'mock';
|
|
14
|
+
/**
|
|
15
|
+
* Local embeddings configuration
|
|
16
|
+
*/
|
|
17
|
+
export interface LocalEmbeddingsConfig {
|
|
18
|
+
/** Provider to use (default: 'transformers') */
|
|
19
|
+
provider?: EmbeddingProvider;
|
|
20
|
+
/**
|
|
21
|
+
* Model ID for Transformers.js
|
|
22
|
+
* Default: 'Xenova/multilingual-e5-small' (100+ languages, optimized for retrieval)
|
|
23
|
+
* Alternative: 'Xenova/paraphrase-multilingual-MiniLM-L12-v2' (50+ languages)
|
|
24
|
+
* Alternative: 'Xenova/all-MiniLM-L6-v2' (English only, faster)
|
|
25
|
+
*/
|
|
26
|
+
modelId?: string;
|
|
27
|
+
/** Vector dimensions (default: 384) */
|
|
28
|
+
dimensions?: number;
|
|
29
|
+
/** Enable in-memory cache for repeated texts */
|
|
30
|
+
cacheEnabled?: boolean;
|
|
31
|
+
/** Maximum cache size (default: 1000) */
|
|
32
|
+
maxCacheSize?: number;
|
|
33
|
+
/** Show progress during model download */
|
|
34
|
+
showProgress?: boolean;
|
|
35
|
+
/** Custom cache directory for models */
|
|
36
|
+
cacheDir?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Embedding result with metadata
|
|
40
|
+
*/
|
|
41
|
+
export interface EmbeddingResult {
|
|
42
|
+
/** The embedding vector */
|
|
43
|
+
embedding: Float32Array;
|
|
44
|
+
/** Time taken in milliseconds */
|
|
45
|
+
timeMs: number;
|
|
46
|
+
/** Whether result was from cache */
|
|
47
|
+
cached: boolean;
|
|
48
|
+
/** Token count (approximate) */
|
|
49
|
+
tokenCount?: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Local embeddings service statistics
|
|
53
|
+
*/
|
|
54
|
+
export interface EmbeddingsStats {
|
|
55
|
+
/** Total embeddings generated */
|
|
56
|
+
totalEmbeddings: number;
|
|
57
|
+
/** Cache hits */
|
|
58
|
+
cacheHits: number;
|
|
59
|
+
/** Cache misses */
|
|
60
|
+
cacheMisses: number;
|
|
61
|
+
/** Average time per embedding (ms) */
|
|
62
|
+
avgTimeMs: number;
|
|
63
|
+
/** Total time spent (ms) */
|
|
64
|
+
totalTimeMs: number;
|
|
65
|
+
/** Model loaded */
|
|
66
|
+
modelLoaded: boolean;
|
|
67
|
+
/** Provider being used */
|
|
68
|
+
provider: EmbeddingProvider;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Local Embeddings Service
|
|
72
|
+
*
|
|
73
|
+
* Provides offline text embeddings using Transformers.js.
|
|
74
|
+
* Models are downloaded once and cached locally in ~/.cache/huggingface.
|
|
75
|
+
*/
|
|
76
|
+
export declare class LocalEmbeddingsService {
|
|
77
|
+
private config;
|
|
78
|
+
private cache;
|
|
79
|
+
private pipeline;
|
|
80
|
+
private modelLoading;
|
|
81
|
+
private stats;
|
|
82
|
+
constructor(config?: LocalEmbeddingsConfig);
|
|
83
|
+
/**
|
|
84
|
+
* Initialize the embeddings service (loads model)
|
|
85
|
+
*/
|
|
86
|
+
initialize(): Promise<void>;
|
|
87
|
+
private loadModel;
|
|
88
|
+
/**
|
|
89
|
+
* Generate embedding for text
|
|
90
|
+
*/
|
|
91
|
+
embed(text: string): Promise<EmbeddingResult>;
|
|
92
|
+
/**
|
|
93
|
+
* Generate embeddings for multiple texts (batch)
|
|
94
|
+
*/
|
|
95
|
+
embedBatch(texts: string[]): Promise<EmbeddingResult[]>;
|
|
96
|
+
/**
|
|
97
|
+
* Get embedding generator function compatible with ProjectMemoryService
|
|
98
|
+
*/
|
|
99
|
+
getGenerator(): EmbeddingGenerator;
|
|
100
|
+
/**
|
|
101
|
+
* Get service statistics
|
|
102
|
+
*/
|
|
103
|
+
getStats(): EmbeddingsStats;
|
|
104
|
+
/**
|
|
105
|
+
* Clear the embedding cache
|
|
106
|
+
*/
|
|
107
|
+
clearCache(): void;
|
|
108
|
+
/**
|
|
109
|
+
* Get vector dimensions
|
|
110
|
+
*/
|
|
111
|
+
getDimensions(): number;
|
|
112
|
+
/**
|
|
113
|
+
* Shutdown and cleanup
|
|
114
|
+
*/
|
|
115
|
+
shutdown(): Promise<void>;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Create a local embeddings service with default configuration
|
|
119
|
+
*/
|
|
120
|
+
export declare function createLocalEmbeddings(config?: LocalEmbeddingsConfig): LocalEmbeddingsService;
|
|
121
|
+
/**
|
|
122
|
+
* Create an embedding generator function for use with ProjectMemoryService
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* import { createEmbeddingGenerator } from '@aitytech/agentkits-memory/embeddings';
|
|
127
|
+
* import { ProjectMemoryService } from '@aitytech/agentkits-memory';
|
|
128
|
+
*
|
|
129
|
+
* const embeddingGenerator = await createEmbeddingGenerator();
|
|
130
|
+
*
|
|
131
|
+
* const memory = new ProjectMemoryService({
|
|
132
|
+
* projectPath: '/path/to/project',
|
|
133
|
+
* enableVectorIndex: true,
|
|
134
|
+
* embeddingGenerator,
|
|
135
|
+
* });
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
export declare function createEmbeddingGenerator(config?: LocalEmbeddingsConfig): Promise<EmbeddingGenerator>;
|
|
139
|
+
export default LocalEmbeddingsService;
|
|
140
|
+
//# sourceMappingURL=local-embeddings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-embeddings.d.ts","sourceRoot":"","sources":["../../src/embeddings/local-embeddings.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,MAAM,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAE7B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,gDAAgD;IAChD,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,SAAS,EAAE,YAAY,CAAC;IAExB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IAEf,oCAAoC;IACpC,MAAM,EAAE,OAAO,CAAC;IAEhB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,eAAe,EAAE,MAAM,CAAC;IAExB,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IAEpB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAElB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IAEpB,mBAAmB;IACnB,WAAW,EAAE,OAAO,CAAC;IAErB,0BAA0B;IAC1B,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAyFD;;;;;GAKG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,KAAK,CAKX;gBAEU,MAAM,GAAE,qBAA0B;IAiB9C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAkBnB,SAAS;IA8BvB;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAuDnD;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAK7D;;OAEG;IACH,YAAY,IAAI,kBAAkB;IAOlC;;OAEG;IACH,QAAQ,IAAI,eAAe;IAe3B;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAKhC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,CAAC,EAAE,qBAAqB,GAC7B,sBAAsB,CAExB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAI7B;AAGD,eAAe,sBAAsB,CAAC"}
|