agentdb 2.0.0-alpha.2 → 2.0.0-alpha.2.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.
- package/dist/agentdb.min.js +4 -4
- package/dist/simulation/cli.js +0 -0
- package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
- package/dist/src/cli/agentdb-cli.js +78 -0
- package/dist/src/cli/agentdb-cli.js.map +1 -1
- package/dist/src/cli/commands/init.js +3 -3
- package/dist/src/cli/commands/init.js.map +1 -1
- package/package.json +3 -3
- package/src/cli/agentdb-cli.ts +78 -0
- package/src/cli/commands/init.ts +3 -3
- package/dist/agentdb-advanced.js +0 -2110
- package/dist/agentdb-advanced.min.js +0 -1
- package/dist/backends/GraphBackend.d.ts +0 -196
- package/dist/backends/GraphBackend.d.ts.map +0 -1
- package/dist/backends/GraphBackend.js +0 -33
- package/dist/backends/GraphBackend.js.map +0 -1
- package/dist/backends/LearningBackend.d.ts +0 -148
- package/dist/backends/LearningBackend.d.ts.map +0 -1
- package/dist/backends/LearningBackend.js +0 -27
- package/dist/backends/LearningBackend.js.map +0 -1
- package/dist/backends/VectorBackend.d.ts +0 -119
- package/dist/backends/VectorBackend.d.ts.map +0 -1
- package/dist/backends/VectorBackend.js +0 -14
- package/dist/backends/VectorBackend.js.map +0 -1
- package/dist/backends/detector.d.ts +0 -81
- package/dist/backends/detector.d.ts.map +0 -1
- package/dist/backends/detector.js +0 -192
- package/dist/backends/detector.js.map +0 -1
- package/dist/backends/factory.d.ts +0 -50
- package/dist/backends/factory.d.ts.map +0 -1
- package/dist/backends/factory.js +0 -161
- package/dist/backends/factory.js.map +0 -1
- package/dist/backends/graph/GraphDatabaseAdapter.d.ts +0 -139
- package/dist/backends/graph/GraphDatabaseAdapter.d.ts.map +0 -1
- package/dist/backends/graph/GraphDatabaseAdapter.js +0 -194
- package/dist/backends/graph/GraphDatabaseAdapter.js.map +0 -1
- package/dist/backends/hnswlib/HNSWLibBackend.d.ts +0 -92
- package/dist/backends/hnswlib/HNSWLibBackend.d.ts.map +0 -1
- package/dist/backends/hnswlib/HNSWLibBackend.js +0 -316
- package/dist/backends/hnswlib/HNSWLibBackend.js.map +0 -1
- package/dist/backends/hnswlib/index.d.ts +0 -7
- package/dist/backends/hnswlib/index.d.ts.map +0 -1
- package/dist/backends/hnswlib/index.js +0 -7
- package/dist/backends/hnswlib/index.js.map +0 -1
- package/dist/backends/index.d.ts +0 -14
- package/dist/backends/index.d.ts.map +0 -1
- package/dist/backends/index.js +0 -13
- package/dist/backends/index.js.map +0 -1
- package/dist/backends/ruvector/RuVectorBackend.d.ts +0 -75
- package/dist/backends/ruvector/RuVectorBackend.d.ts.map +0 -1
- package/dist/backends/ruvector/RuVectorBackend.js +0 -198
- package/dist/backends/ruvector/RuVectorBackend.js.map +0 -1
- package/dist/backends/ruvector/RuVectorLearning.d.ts +0 -104
- package/dist/backends/ruvector/RuVectorLearning.d.ts.map +0 -1
- package/dist/backends/ruvector/RuVectorLearning.js +0 -177
- package/dist/backends/ruvector/RuVectorLearning.js.map +0 -1
- package/dist/backends/ruvector/index.d.ts +0 -9
- package/dist/backends/ruvector/index.d.ts.map +0 -1
- package/dist/backends/ruvector/index.js +0 -8
- package/dist/backends/ruvector/index.js.map +0 -1
- package/dist/benchmarks/wasm-vector-benchmark.d.ts +0 -10
- package/dist/benchmarks/wasm-vector-benchmark.d.ts.map +0 -1
- package/dist/benchmarks/wasm-vector-benchmark.js +0 -196
- package/dist/benchmarks/wasm-vector-benchmark.js.map +0 -1
- package/dist/browser/AdvancedFeatures.d.ts +0 -144
- package/dist/browser/AdvancedFeatures.d.ts.map +0 -1
- package/dist/browser/AdvancedFeatures.js +0 -430
- package/dist/browser/AdvancedFeatures.js.map +0 -1
- package/dist/browser/HNSWIndex.d.ts +0 -117
- package/dist/browser/HNSWIndex.d.ts.map +0 -1
- package/dist/browser/HNSWIndex.js +0 -402
- package/dist/browser/HNSWIndex.js.map +0 -1
- package/dist/browser/ProductQuantization.d.ts +0 -107
- package/dist/browser/ProductQuantization.d.ts.map +0 -1
- package/dist/browser/ProductQuantization.js +0 -337
- package/dist/browser/ProductQuantization.js.map +0 -1
- package/dist/browser/browser/AdvancedFeatures.d.ts +0 -144
- package/dist/browser/browser/AdvancedFeatures.d.ts.map +0 -1
- package/dist/browser/browser/AdvancedFeatures.js +0 -427
- package/dist/browser/browser/HNSWIndex.d.ts +0 -117
- package/dist/browser/browser/HNSWIndex.d.ts.map +0 -1
- package/dist/browser/browser/HNSWIndex.js +0 -402
- package/dist/browser/browser/ProductQuantization.d.ts +0 -107
- package/dist/browser/browser/ProductQuantization.d.ts.map +0 -1
- package/dist/browser/browser/ProductQuantization.js +0 -348
- package/dist/browser/browser/index.d.ts +0 -223
- package/dist/browser/browser/index.d.ts.map +0 -1
- package/dist/browser/browser/index.js +0 -233
- package/dist/browser/index.d.ts +0 -223
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -225
- package/dist/browser/index.js.map +0 -1
- package/dist/cli/agentdb-cli.d.ts +0 -154
- package/dist/cli/agentdb-cli.d.ts.map +0 -1
- package/dist/cli/agentdb-cli.js +0 -2273
- package/dist/cli/agentdb-cli.js.map +0 -1
- package/dist/cli/agentdb.db +0 -0
- package/dist/cli/commands/init.d.ts +0 -12
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js +0 -115
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/install-embeddings.d.ts +0 -10
- package/dist/cli/commands/install-embeddings.d.ts.map +0 -1
- package/dist/cli/commands/install-embeddings.js +0 -68
- package/dist/cli/commands/install-embeddings.js.map +0 -1
- package/dist/cli/commands/migrate.d.ts +0 -15
- package/dist/cli/commands/migrate.d.ts.map +0 -1
- package/dist/cli/commands/migrate.js +0 -425
- package/dist/cli/commands/migrate.js.map +0 -1
- package/dist/cli/commands/status.d.ts +0 -10
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js +0 -129
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/controllers/CausalMemoryGraph.d.ts +0 -126
- package/dist/controllers/CausalMemoryGraph.d.ts.map +0 -1
- package/dist/controllers/CausalMemoryGraph.js +0 -323
- package/dist/controllers/CausalMemoryGraph.js.map +0 -1
- package/dist/controllers/CausalRecall.d.ts +0 -139
- package/dist/controllers/CausalRecall.d.ts.map +0 -1
- package/dist/controllers/CausalRecall.js +0 -356
- package/dist/controllers/CausalRecall.js.map +0 -1
- package/dist/controllers/ContextSynthesizer.d.ts +0 -65
- package/dist/controllers/ContextSynthesizer.d.ts.map +0 -1
- package/dist/controllers/ContextSynthesizer.js +0 -208
- package/dist/controllers/ContextSynthesizer.js.map +0 -1
- package/dist/controllers/EmbeddingService.d.ts +0 -37
- package/dist/controllers/EmbeddingService.d.ts.map +0 -1
- package/dist/controllers/EmbeddingService.js +0 -136
- package/dist/controllers/EmbeddingService.js.map +0 -1
- package/dist/controllers/EnhancedEmbeddingService.d.ts +0 -50
- package/dist/controllers/EnhancedEmbeddingService.d.ts.map +0 -1
- package/dist/controllers/EnhancedEmbeddingService.js +0 -119
- package/dist/controllers/EnhancedEmbeddingService.js.map +0 -1
- package/dist/controllers/ExplainableRecall.d.ts +0 -163
- package/dist/controllers/ExplainableRecall.d.ts.map +0 -1
- package/dist/controllers/ExplainableRecall.js +0 -485
- package/dist/controllers/ExplainableRecall.js.map +0 -1
- package/dist/controllers/HNSWIndex.d.ts +0 -128
- package/dist/controllers/HNSWIndex.d.ts.map +0 -1
- package/dist/controllers/HNSWIndex.js +0 -361
- package/dist/controllers/HNSWIndex.js.map +0 -1
- package/dist/controllers/LearningSystem.d.ts +0 -195
- package/dist/controllers/LearningSystem.d.ts.map +0 -1
- package/dist/controllers/LearningSystem.js +0 -929
- package/dist/controllers/LearningSystem.js.map +0 -1
- package/dist/controllers/MMRDiversityRanker.d.ts +0 -50
- package/dist/controllers/MMRDiversityRanker.d.ts.map +0 -1
- package/dist/controllers/MMRDiversityRanker.js +0 -130
- package/dist/controllers/MMRDiversityRanker.js.map +0 -1
- package/dist/controllers/MetadataFilter.d.ts +0 -70
- package/dist/controllers/MetadataFilter.d.ts.map +0 -1
- package/dist/controllers/MetadataFilter.js +0 -243
- package/dist/controllers/MetadataFilter.js.map +0 -1
- package/dist/controllers/NightlyLearner.d.ts +0 -114
- package/dist/controllers/NightlyLearner.d.ts.map +0 -1
- package/dist/controllers/NightlyLearner.js +0 -394
- package/dist/controllers/NightlyLearner.js.map +0 -1
- package/dist/controllers/QUICClient.d.ts +0 -109
- package/dist/controllers/QUICClient.d.ts.map +0 -1
- package/dist/controllers/QUICClient.js +0 -299
- package/dist/controllers/QUICClient.js.map +0 -1
- package/dist/controllers/QUICServer.d.ts +0 -121
- package/dist/controllers/QUICServer.d.ts.map +0 -1
- package/dist/controllers/QUICServer.js +0 -383
- package/dist/controllers/QUICServer.js.map +0 -1
- package/dist/controllers/ReasoningBank.d.ts +0 -196
- package/dist/controllers/ReasoningBank.d.ts.map +0 -1
- package/dist/controllers/ReasoningBank.js +0 -494
- package/dist/controllers/ReasoningBank.js.map +0 -1
- package/dist/controllers/ReflexionMemory.d.ts +0 -125
- package/dist/controllers/ReflexionMemory.d.ts.map +0 -1
- package/dist/controllers/ReflexionMemory.js +0 -521
- package/dist/controllers/ReflexionMemory.js.map +0 -1
- package/dist/controllers/SkillLibrary.d.ts +0 -149
- package/dist/controllers/SkillLibrary.d.ts.map +0 -1
- package/dist/controllers/SkillLibrary.js +0 -547
- package/dist/controllers/SkillLibrary.js.map +0 -1
- package/dist/controllers/SyncCoordinator.d.ts +0 -120
- package/dist/controllers/SyncCoordinator.d.ts.map +0 -1
- package/dist/controllers/SyncCoordinator.js +0 -441
- package/dist/controllers/SyncCoordinator.js.map +0 -1
- package/dist/controllers/WASMVectorSearch.d.ts +0 -89
- package/dist/controllers/WASMVectorSearch.d.ts.map +0 -1
- package/dist/controllers/WASMVectorSearch.js +0 -234
- package/dist/controllers/WASMVectorSearch.js.map +0 -1
- package/dist/controllers/frontier-index.d.ts +0 -14
- package/dist/controllers/frontier-index.d.ts.map +0 -1
- package/dist/controllers/frontier-index.js +0 -10
- package/dist/controllers/frontier-index.js.map +0 -1
- package/dist/controllers/index.d.ts +0 -30
- package/dist/controllers/index.d.ts.map +0 -1
- package/dist/controllers/index.js +0 -18
- package/dist/controllers/index.js.map +0 -1
- package/dist/db-fallback.d.ts +0 -26
- package/dist/db-fallback.d.ts.map +0 -1
- package/dist/db-fallback.js +0 -264
- package/dist/db-fallback.js.map +0 -1
- package/dist/db-test.d.ts +0 -13
- package/dist/db-test.d.ts.map +0 -1
- package/dist/db-test.js +0 -55
- package/dist/db-test.js.map +0 -1
- package/dist/db-unified.d.ts +0 -76
- package/dist/db-unified.d.ts.map +0 -1
- package/dist/db-unified.js +0 -278
- package/dist/db-unified.js.map +0 -1
- package/dist/examples/quic-sync-example.d.ts +0 -9
- package/dist/examples/quic-sync-example.d.ts.map +0 -1
- package/dist/examples/quic-sync-example.js +0 -169
- package/dist/examples/quic-sync-example.js.map +0 -1
- package/dist/examples/wasm-vector-usage.d.ts +0 -12
- package/dist/examples/wasm-vector-usage.d.ts.map +0 -1
- package/dist/examples/wasm-vector-usage.js +0 -190
- package/dist/examples/wasm-vector-usage.js.map +0 -1
- package/dist/index.d.ts +0 -28
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -35
- package/dist/index.js.map +0 -1
- package/dist/malp/core/ccc.d.ts +0 -99
- package/dist/malp/core/ccc.d.ts.map +0 -1
- package/dist/malp/core/ccc.js +0 -181
- package/dist/malp/core/ccc.js.map +0 -1
- package/dist/malp/core/index.d.ts +0 -9
- package/dist/malp/core/index.d.ts.map +0 -1
- package/dist/malp/core/index.js +0 -9
- package/dist/malp/core/index.js.map +0 -1
- package/dist/malp/core/linalg.d.ts +0 -101
- package/dist/malp/core/linalg.d.ts.map +0 -1
- package/dist/malp/core/linalg.js +0 -278
- package/dist/malp/core/linalg.js.map +0 -1
- package/dist/malp/core/optimizer.d.ts +0 -68
- package/dist/malp/core/optimizer.d.ts.map +0 -1
- package/dist/malp/core/optimizer.js +0 -160
- package/dist/malp/core/optimizer.js.map +0 -1
- package/dist/malp/index.d.ts +0 -33
- package/dist/malp/index.d.ts.map +0 -1
- package/dist/malp/index.js +0 -37
- package/dist/malp/index.js.map +0 -1
- package/dist/malp/metrics/agreement.d.ts +0 -106
- package/dist/malp/metrics/agreement.d.ts.map +0 -1
- package/dist/malp/metrics/agreement.js +0 -199
- package/dist/malp/metrics/agreement.js.map +0 -1
- package/dist/malp/metrics/comparison.d.ts +0 -93
- package/dist/malp/metrics/comparison.d.ts.map +0 -1
- package/dist/malp/metrics/comparison.js +0 -256
- package/dist/malp/metrics/comparison.js.map +0 -1
- package/dist/malp/metrics/index.d.ts +0 -8
- package/dist/malp/metrics/index.d.ts.map +0 -1
- package/dist/malp/metrics/index.js +0 -8
- package/dist/malp/metrics/index.js.map +0 -1
- package/dist/malp/metrics/performance.d.ts +0 -61
- package/dist/malp/metrics/performance.d.ts.map +0 -1
- package/dist/malp/metrics/performance.js +0 -190
- package/dist/malp/metrics/performance.js.map +0 -1
- package/dist/malp/models/index.d.ts +0 -7
- package/dist/malp/models/index.d.ts.map +0 -1
- package/dist/malp/models/index.js +0 -7
- package/dist/malp/models/index.js.map +0 -1
- package/dist/malp/models/malp.d.ts +0 -116
- package/dist/malp/models/malp.d.ts.map +0 -1
- package/dist/malp/models/malp.js +0 -206
- package/dist/malp/models/malp.js.map +0 -1
- package/dist/malp/models/regressor.d.ts +0 -80
- package/dist/malp/models/regressor.d.ts.map +0 -1
- package/dist/malp/models/regressor.js +0 -229
- package/dist/malp/models/regressor.js.map +0 -1
- package/dist/malp/reasoningbank_validator.d.ts +0 -187
- package/dist/malp/reasoningbank_validator.d.ts.map +0 -1
- package/dist/malp/reasoningbank_validator.js +0 -246
- package/dist/malp/reasoningbank_validator.js.map +0 -1
- package/dist/malp/wasm_bindings.d.ts +0 -344
- package/dist/malp/wasm_bindings.d.ts.map +0 -1
- package/dist/malp/wasm_bindings.js +0 -9
- package/dist/malp/wasm_bindings.js.map +0 -1
- package/dist/mcp/agentdb-mcp-server.d.ts +0 -8
- package/dist/mcp/agentdb-mcp-server.d.ts.map +0 -1
- package/dist/mcp/agentdb-mcp-server.js +0 -2116
- package/dist/mcp/agentdb-mcp-server.js.map +0 -1
- package/dist/mcp/learning-tools-handlers.d.ts +0 -16
- package/dist/mcp/learning-tools-handlers.d.ts.map +0 -1
- package/dist/mcp/learning-tools-handlers.js +0 -105
- package/dist/mcp/learning-tools-handlers.js.map +0 -1
- package/dist/optimizations/BatchOperations.d.ts +0 -109
- package/dist/optimizations/BatchOperations.d.ts.map +0 -1
- package/dist/optimizations/BatchOperations.js +0 -407
- package/dist/optimizations/BatchOperations.js.map +0 -1
- package/dist/optimizations/QueryOptimizer.d.ts +0 -83
- package/dist/optimizations/QueryOptimizer.d.ts.map +0 -1
- package/dist/optimizations/QueryOptimizer.js +0 -228
- package/dist/optimizations/QueryOptimizer.js.map +0 -1
- package/dist/optimizations/ToolCache.d.ts +0 -137
- package/dist/optimizations/ToolCache.d.ts.map +0 -1
- package/dist/optimizations/ToolCache.js +0 -281
- package/dist/optimizations/ToolCache.js.map +0 -1
- package/dist/optimizations/index.d.ts +0 -10
- package/dist/optimizations/index.d.ts.map +0 -1
- package/dist/optimizations/index.js +0 -8
- package/dist/optimizations/index.js.map +0 -1
- package/dist/security/input-validation.d.ts +0 -109
- package/dist/security/input-validation.d.ts.map +0 -1
- package/dist/security/input-validation.js +0 -398
- package/dist/security/input-validation.js.map +0 -1
- package/dist/security/limits.d.ts +0 -150
- package/dist/security/limits.d.ts.map +0 -1
- package/dist/security/limits.js +0 -288
- package/dist/security/limits.js.map +0 -1
- package/dist/security/path-security.d.ts +0 -100
- package/dist/security/path-security.d.ts.map +0 -1
- package/dist/security/path-security.js +0 -337
- package/dist/security/path-security.js.map +0 -1
- package/dist/security/validation.d.ts +0 -95
- package/dist/security/validation.d.ts.map +0 -1
- package/dist/security/validation.js +0 -315
- package/dist/security/validation.js.map +0 -1
- package/dist/types/quic.d.ts +0 -518
- package/dist/types/quic.d.ts.map +0 -1
- package/dist/types/quic.js +0 -272
- package/dist/types/quic.js.map +0 -1
|
@@ -1,494 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ReasoningBank Controller - Pattern Storage and Retrieval
|
|
3
|
-
*
|
|
4
|
-
* Manages reasoning patterns with embeddings for semantic similarity search.
|
|
5
|
-
* Integrates with ReasoningBank WASM for high-performance pattern matching.
|
|
6
|
-
*
|
|
7
|
-
* Pattern Structure:
|
|
8
|
-
* - taskType: Type of task (e.g., "code_review", "data_analysis")
|
|
9
|
-
* - approach: Description of the reasoning approach used
|
|
10
|
-
* - successRate: Success rate of this pattern (0-1)
|
|
11
|
-
* - embedding: Vector embedding of the pattern for similarity search
|
|
12
|
-
* - metadata: Additional contextual information
|
|
13
|
-
*
|
|
14
|
-
* AgentDB v2 Migration:
|
|
15
|
-
* - Uses VectorBackend abstraction for 8x faster search (RuVector/hnswlib)
|
|
16
|
-
* - Optional GNN enhancement via LearningBackend
|
|
17
|
-
* - 100% backward compatible with v1 API
|
|
18
|
-
* - New features: useGNN option, recordOutcome for learning
|
|
19
|
-
*/
|
|
20
|
-
export class ReasoningBank {
|
|
21
|
-
db;
|
|
22
|
-
embedder;
|
|
23
|
-
cache;
|
|
24
|
-
// v2: Optional vector backend (uses legacy if not provided)
|
|
25
|
-
vectorBackend;
|
|
26
|
-
learningBackend;
|
|
27
|
-
// Maps pattern ID (number) to vector backend ID (string) for hybrid mode
|
|
28
|
-
idMapping = new Map();
|
|
29
|
-
nextVectorId = 0;
|
|
30
|
-
/**
|
|
31
|
-
* Constructor supports both legacy (v1) and new (v2) modes
|
|
32
|
-
*
|
|
33
|
-
* Legacy mode (v1 - backward compatible):
|
|
34
|
-
* new ReasoningBank(db, embedder)
|
|
35
|
-
*
|
|
36
|
-
* New mode (v2 - with VectorBackend):
|
|
37
|
-
* new ReasoningBank(db, embedder, vectorBackend, learningBackend?)
|
|
38
|
-
*/
|
|
39
|
-
constructor(db, embedder, vectorBackend, learningBackend) {
|
|
40
|
-
this.db = db;
|
|
41
|
-
this.embedder = embedder;
|
|
42
|
-
this.vectorBackend = vectorBackend;
|
|
43
|
-
this.learningBackend = learningBackend;
|
|
44
|
-
this.cache = new Map();
|
|
45
|
-
this.initializeSchema();
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Initialize reasoning patterns schema
|
|
49
|
-
*/
|
|
50
|
-
initializeSchema() {
|
|
51
|
-
// Create patterns table
|
|
52
|
-
this.db.exec(`
|
|
53
|
-
CREATE TABLE IF NOT EXISTS reasoning_patterns (
|
|
54
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
55
|
-
ts INTEGER DEFAULT (strftime('%s', 'now')),
|
|
56
|
-
task_type TEXT NOT NULL,
|
|
57
|
-
approach TEXT NOT NULL,
|
|
58
|
-
success_rate REAL NOT NULL DEFAULT 0.0,
|
|
59
|
-
uses INTEGER DEFAULT 0,
|
|
60
|
-
avg_reward REAL DEFAULT 0.0,
|
|
61
|
-
tags TEXT,
|
|
62
|
-
metadata TEXT
|
|
63
|
-
);
|
|
64
|
-
|
|
65
|
-
CREATE INDEX IF NOT EXISTS idx_patterns_task_type ON reasoning_patterns(task_type);
|
|
66
|
-
CREATE INDEX IF NOT EXISTS idx_patterns_success_rate ON reasoning_patterns(success_rate);
|
|
67
|
-
CREATE INDEX IF NOT EXISTS idx_patterns_uses ON reasoning_patterns(uses);
|
|
68
|
-
`);
|
|
69
|
-
// Create pattern embeddings table
|
|
70
|
-
this.db.exec(`
|
|
71
|
-
CREATE TABLE IF NOT EXISTS pattern_embeddings (
|
|
72
|
-
pattern_id INTEGER PRIMARY KEY,
|
|
73
|
-
embedding BLOB NOT NULL,
|
|
74
|
-
FOREIGN KEY (pattern_id) REFERENCES reasoning_patterns(id) ON DELETE CASCADE
|
|
75
|
-
);
|
|
76
|
-
`);
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Store a reasoning pattern with embedding
|
|
80
|
-
*
|
|
81
|
-
* v1 (legacy): Stores in SQLite with pattern_embeddings table
|
|
82
|
-
* v2 (VectorBackend): Stores metadata in SQLite, vectors in VectorBackend
|
|
83
|
-
*/
|
|
84
|
-
async storePattern(pattern) {
|
|
85
|
-
// Generate embedding from approach text
|
|
86
|
-
const embedding = await this.embedder.embed(`${pattern.taskType}: ${pattern.approach}`);
|
|
87
|
-
// Insert pattern metadata into SQLite
|
|
88
|
-
const stmt = this.db.prepare(`
|
|
89
|
-
INSERT INTO reasoning_patterns (
|
|
90
|
-
task_type, approach, success_rate, uses, avg_reward, tags, metadata
|
|
91
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
92
|
-
`);
|
|
93
|
-
const result = stmt.run(pattern.taskType, pattern.approach, pattern.successRate, pattern.uses || 0, pattern.avgReward || 0.0, pattern.tags ? JSON.stringify(pattern.tags) : null, pattern.metadata ? JSON.stringify(pattern.metadata) : null);
|
|
94
|
-
const patternId = result.lastInsertRowid;
|
|
95
|
-
// Store embedding based on mode
|
|
96
|
-
if (this.vectorBackend) {
|
|
97
|
-
// v2: Use VectorBackend for high-performance search
|
|
98
|
-
const vectorId = `pattern_${this.nextVectorId++}`;
|
|
99
|
-
this.idMapping.set(patternId, vectorId);
|
|
100
|
-
this.vectorBackend.insert(vectorId, embedding, {
|
|
101
|
-
patternId,
|
|
102
|
-
taskType: pattern.taskType,
|
|
103
|
-
successRate: pattern.successRate,
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
// v1: Use legacy SQLite storage (backward compatible)
|
|
108
|
-
this.storePatternEmbedding(patternId, embedding);
|
|
109
|
-
}
|
|
110
|
-
// Invalidate cache
|
|
111
|
-
this.cache.clear();
|
|
112
|
-
return patternId;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Store pattern embedding
|
|
116
|
-
*/
|
|
117
|
-
storePatternEmbedding(patternId, embedding) {
|
|
118
|
-
const blob = Buffer.from(embedding.buffer);
|
|
119
|
-
const stmt = this.db.prepare(`
|
|
120
|
-
INSERT OR REPLACE INTO pattern_embeddings (pattern_id, embedding)
|
|
121
|
-
VALUES (?, ?)
|
|
122
|
-
`);
|
|
123
|
-
stmt.run(patternId, blob);
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Search patterns by semantic similarity
|
|
127
|
-
*
|
|
128
|
-
* v1 (legacy): Uses SQLite with cosine similarity computation
|
|
129
|
-
* v2 (VectorBackend): Uses high-performance vector search (8x faster)
|
|
130
|
-
* v2 + GNN: Optionally enhances query with learned patterns
|
|
131
|
-
*/
|
|
132
|
-
async searchPatterns(query) {
|
|
133
|
-
const k = query.k || 10;
|
|
134
|
-
const threshold = query.threshold || 0.0;
|
|
135
|
-
// Generate embedding if task string provided (v1 API compatibility)
|
|
136
|
-
let queryEmbedding;
|
|
137
|
-
if (query.task && !query.taskEmbedding) {
|
|
138
|
-
queryEmbedding = await this.embedder.embed(query.task);
|
|
139
|
-
}
|
|
140
|
-
else if (query.taskEmbedding) {
|
|
141
|
-
queryEmbedding = query.taskEmbedding;
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
throw new Error('PatternSearchQuery must provide either task (v1) or taskEmbedding (v2)');
|
|
145
|
-
}
|
|
146
|
-
// Create enriched query with embedding (ensure taskEmbedding is always defined)
|
|
147
|
-
const enrichedQuery = {
|
|
148
|
-
...query,
|
|
149
|
-
taskEmbedding: queryEmbedding
|
|
150
|
-
};
|
|
151
|
-
// Use VectorBackend if available (v2 mode)
|
|
152
|
-
if (this.vectorBackend) {
|
|
153
|
-
return this.searchPatternsV2(enrichedQuery);
|
|
154
|
-
}
|
|
155
|
-
// Legacy v1 search (100% backward compatible)
|
|
156
|
-
return this.searchPatternsLegacy(enrichedQuery);
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* v2: Search using VectorBackend with optional GNN enhancement
|
|
160
|
-
*/
|
|
161
|
-
async searchPatternsV2(query) {
|
|
162
|
-
const k = query.k || 10;
|
|
163
|
-
const threshold = query.threshold || 0.0;
|
|
164
|
-
let queryEmbedding = query.taskEmbedding;
|
|
165
|
-
// Optional: Apply GNN enhancement
|
|
166
|
-
if (query.useGNN && this.learningBackend) {
|
|
167
|
-
// Get initial candidates for GNN context
|
|
168
|
-
const candidates = this.vectorBackend.search(queryEmbedding, k * 3, { threshold: 0.0 });
|
|
169
|
-
if (candidates.length > 0) {
|
|
170
|
-
// Retrieve neighbor embeddings for GNN
|
|
171
|
-
const neighborEmbeddings = await this.getEmbeddingsForVectorIds(candidates.map(c => c.id));
|
|
172
|
-
const weights = candidates.map(c => c.similarity);
|
|
173
|
-
// Enhance query using GNN
|
|
174
|
-
queryEmbedding = this.learningBackend.enhance(queryEmbedding, neighborEmbeddings, weights);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
// Perform vector search
|
|
178
|
-
const results = this.vectorBackend.search(queryEmbedding, k, { threshold });
|
|
179
|
-
// Hydrate with metadata from SQLite
|
|
180
|
-
return this.hydratePatterns(results);
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* v1: Legacy search using SQLite (backward compatible)
|
|
184
|
-
*/
|
|
185
|
-
async searchPatternsLegacy(query) {
|
|
186
|
-
const k = query.k || 10;
|
|
187
|
-
const threshold = query.threshold || 0.0;
|
|
188
|
-
// Build WHERE clause for filters
|
|
189
|
-
const conditions = [];
|
|
190
|
-
const params = [];
|
|
191
|
-
if (query.filters?.taskType) {
|
|
192
|
-
conditions.push('rp.task_type = ?');
|
|
193
|
-
params.push(query.filters.taskType);
|
|
194
|
-
}
|
|
195
|
-
if (query.filters?.minSuccessRate !== undefined) {
|
|
196
|
-
conditions.push('rp.success_rate >= ?');
|
|
197
|
-
params.push(query.filters.minSuccessRate);
|
|
198
|
-
}
|
|
199
|
-
if (query.filters?.tags && query.filters.tags.length > 0) {
|
|
200
|
-
// Check if any of the tags match
|
|
201
|
-
const tagConditions = query.filters.tags.map(() => 'rp.tags LIKE ?').join(' OR ');
|
|
202
|
-
conditions.push(`(${tagConditions})`);
|
|
203
|
-
query.filters.tags.forEach(tag => {
|
|
204
|
-
params.push(`%"${tag}"%`);
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
const whereClause = conditions.length > 0
|
|
208
|
-
? `WHERE ${conditions.join(' AND ')}`
|
|
209
|
-
: '';
|
|
210
|
-
// Retrieve all candidate patterns
|
|
211
|
-
const stmt = this.db.prepare(`
|
|
212
|
-
SELECT
|
|
213
|
-
rp.id,
|
|
214
|
-
rp.ts,
|
|
215
|
-
rp.task_type,
|
|
216
|
-
rp.approach,
|
|
217
|
-
rp.success_rate,
|
|
218
|
-
rp.uses,
|
|
219
|
-
rp.avg_reward,
|
|
220
|
-
rp.tags,
|
|
221
|
-
rp.metadata,
|
|
222
|
-
pe.embedding
|
|
223
|
-
FROM reasoning_patterns rp
|
|
224
|
-
JOIN pattern_embeddings pe ON rp.id = pe.pattern_id
|
|
225
|
-
${whereClause}
|
|
226
|
-
`);
|
|
227
|
-
const rows = stmt.all(...params);
|
|
228
|
-
// Calculate similarities
|
|
229
|
-
const candidates = rows.map(row => {
|
|
230
|
-
const embedding = new Float32Array(row.embedding.buffer, row.embedding.byteOffset, row.embedding.byteLength / 4);
|
|
231
|
-
const similarity = this.cosineSimilarity(query.taskEmbedding, embedding);
|
|
232
|
-
return {
|
|
233
|
-
id: row.id,
|
|
234
|
-
taskType: row.task_type,
|
|
235
|
-
approach: row.approach,
|
|
236
|
-
successRate: row.success_rate,
|
|
237
|
-
uses: row.uses,
|
|
238
|
-
avgReward: row.avg_reward,
|
|
239
|
-
tags: row.tags ? JSON.parse(row.tags) : [],
|
|
240
|
-
metadata: row.metadata ? JSON.parse(row.metadata) : {},
|
|
241
|
-
createdAt: row.ts,
|
|
242
|
-
embedding,
|
|
243
|
-
similarity,
|
|
244
|
-
};
|
|
245
|
-
});
|
|
246
|
-
// Filter by threshold and sort by similarity
|
|
247
|
-
const filtered = candidates
|
|
248
|
-
.filter(c => c.similarity >= threshold)
|
|
249
|
-
.sort((a, b) => b.similarity - a.similarity)
|
|
250
|
-
.slice(0, k);
|
|
251
|
-
return filtered;
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* Hydrate search results with metadata from SQLite
|
|
255
|
-
*/
|
|
256
|
-
hydratePatterns(results) {
|
|
257
|
-
// Prepare statement OUTSIDE loop for better-sqlite3 best practice
|
|
258
|
-
const stmt = this.db.prepare(`
|
|
259
|
-
SELECT * FROM reasoning_patterns WHERE id = ?
|
|
260
|
-
`);
|
|
261
|
-
return results.map(result => {
|
|
262
|
-
const patternId = result.metadata?.patternId;
|
|
263
|
-
if (!patternId) {
|
|
264
|
-
throw new Error(`VectorBackend result missing patternId: ${result.id}`);
|
|
265
|
-
}
|
|
266
|
-
const row = stmt.get(patternId);
|
|
267
|
-
if (!row) {
|
|
268
|
-
throw new Error(`Pattern ${patternId} not found in database`);
|
|
269
|
-
}
|
|
270
|
-
return {
|
|
271
|
-
id: row.id,
|
|
272
|
-
taskType: row.task_type,
|
|
273
|
-
approach: row.approach,
|
|
274
|
-
successRate: row.success_rate,
|
|
275
|
-
uses: row.uses,
|
|
276
|
-
avgReward: row.avg_reward,
|
|
277
|
-
tags: row.tags ? JSON.parse(row.tags) : [],
|
|
278
|
-
metadata: row.metadata ? JSON.parse(row.metadata) : {},
|
|
279
|
-
createdAt: row.ts,
|
|
280
|
-
similarity: result.similarity,
|
|
281
|
-
};
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* Get embeddings for vector IDs (for GNN)
|
|
286
|
-
*/
|
|
287
|
-
async getEmbeddingsForVectorIds(vectorIds) {
|
|
288
|
-
// In a full implementation, this would retrieve embeddings from VectorBackend
|
|
289
|
-
// For now, we regenerate them from the database
|
|
290
|
-
const embeddings = [];
|
|
291
|
-
for (const vectorId of vectorIds) {
|
|
292
|
-
// Find pattern ID from mapping
|
|
293
|
-
let patternId;
|
|
294
|
-
for (const [pid, vid] of this.idMapping.entries()) {
|
|
295
|
-
if (vid === vectorId) {
|
|
296
|
-
patternId = pid;
|
|
297
|
-
break;
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
if (patternId) {
|
|
301
|
-
const pattern = this.getPattern(patternId);
|
|
302
|
-
if (pattern?.approach) {
|
|
303
|
-
const embedding = await this.embedder.embed(`${pattern.taskType}: ${pattern.approach}`);
|
|
304
|
-
embeddings.push(embedding);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
return embeddings;
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* Get pattern statistics
|
|
312
|
-
*/
|
|
313
|
-
getPatternStats() {
|
|
314
|
-
// Check cache first
|
|
315
|
-
const cacheKey = 'pattern_stats';
|
|
316
|
-
if (this.cache.has(cacheKey)) {
|
|
317
|
-
return this.cache.get(cacheKey);
|
|
318
|
-
}
|
|
319
|
-
// Total patterns
|
|
320
|
-
const totalRow = this.db.prepare('SELECT COUNT(*) as count FROM reasoning_patterns').get();
|
|
321
|
-
// Average success rate and uses
|
|
322
|
-
const avgRow = this.db.prepare(`
|
|
323
|
-
SELECT
|
|
324
|
-
AVG(success_rate) as avg_success_rate,
|
|
325
|
-
AVG(uses) as avg_uses
|
|
326
|
-
FROM reasoning_patterns
|
|
327
|
-
`).get();
|
|
328
|
-
// Top task types
|
|
329
|
-
const topTaskTypes = this.db.prepare(`
|
|
330
|
-
SELECT
|
|
331
|
-
task_type,
|
|
332
|
-
COUNT(*) as count
|
|
333
|
-
FROM reasoning_patterns
|
|
334
|
-
GROUP BY task_type
|
|
335
|
-
ORDER BY count DESC
|
|
336
|
-
LIMIT 10
|
|
337
|
-
`).all();
|
|
338
|
-
// Recent patterns (last 7 days)
|
|
339
|
-
const recentRow = this.db.prepare(`
|
|
340
|
-
SELECT COUNT(*) as count
|
|
341
|
-
FROM reasoning_patterns
|
|
342
|
-
WHERE ts >= strftime('%s', 'now', '-7 days')
|
|
343
|
-
`).get();
|
|
344
|
-
// High performing patterns (success_rate >= 0.8)
|
|
345
|
-
const highPerfRow = this.db.prepare(`
|
|
346
|
-
SELECT COUNT(*) as count
|
|
347
|
-
FROM reasoning_patterns
|
|
348
|
-
WHERE success_rate >= 0.8
|
|
349
|
-
`).get();
|
|
350
|
-
const stats = {
|
|
351
|
-
totalPatterns: totalRow.count,
|
|
352
|
-
avgSuccessRate: avgRow.avg_success_rate || 0,
|
|
353
|
-
avgUses: avgRow.avg_uses || 0,
|
|
354
|
-
topTaskTypes: topTaskTypes.map(row => ({
|
|
355
|
-
taskType: row.task_type,
|
|
356
|
-
count: row.count,
|
|
357
|
-
})),
|
|
358
|
-
recentPatterns: recentRow.count,
|
|
359
|
-
highPerformingPatterns: highPerfRow.count,
|
|
360
|
-
};
|
|
361
|
-
// Cache for 5 minutes
|
|
362
|
-
this.cache.set(cacheKey, stats);
|
|
363
|
-
setTimeout(() => this.cache.delete(cacheKey), 5 * 60 * 1000);
|
|
364
|
-
return stats;
|
|
365
|
-
}
|
|
366
|
-
/**
|
|
367
|
-
* Update pattern statistics after use
|
|
368
|
-
*/
|
|
369
|
-
updatePatternStats(patternId, success, reward) {
|
|
370
|
-
const stmt = this.db.prepare(`
|
|
371
|
-
UPDATE reasoning_patterns
|
|
372
|
-
SET
|
|
373
|
-
uses = uses + 1,
|
|
374
|
-
success_rate = (success_rate * uses + ?) / (uses + 1),
|
|
375
|
-
avg_reward = (avg_reward * uses + ?) / (uses + 1)
|
|
376
|
-
WHERE id = ?
|
|
377
|
-
`);
|
|
378
|
-
stmt.run(success ? 1 : 0, reward, patternId);
|
|
379
|
-
// Invalidate cache
|
|
380
|
-
this.cache.clear();
|
|
381
|
-
}
|
|
382
|
-
/**
|
|
383
|
-
* Record pattern outcome for GNN learning (v2 feature)
|
|
384
|
-
*
|
|
385
|
-
* Updates pattern stats and adds training sample to LearningBackend
|
|
386
|
-
* for future GNN model improvements.
|
|
387
|
-
*
|
|
388
|
-
* @param patternId - Pattern ID to update
|
|
389
|
-
* @param success - Whether the pattern was successful
|
|
390
|
-
* @param reward - Optional reward value (default: 1 for success, 0 for failure)
|
|
391
|
-
*/
|
|
392
|
-
async recordOutcome(patternId, success, reward) {
|
|
393
|
-
// Update pattern statistics
|
|
394
|
-
const actualReward = reward !== undefined ? reward : (success ? 1.0 : 0.0);
|
|
395
|
-
this.updatePatternStats(patternId, success, actualReward);
|
|
396
|
-
// Add to GNN training buffer if available
|
|
397
|
-
if (this.learningBackend) {
|
|
398
|
-
const pattern = this.getPattern(patternId);
|
|
399
|
-
if (pattern?.approach) {
|
|
400
|
-
const embedding = await this.embedder.embed(`${pattern.taskType}: ${pattern.approach}`);
|
|
401
|
-
this.learningBackend.addSample(embedding, success);
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
/**
|
|
406
|
-
* Train GNN model on collected samples (v2 feature)
|
|
407
|
-
*
|
|
408
|
-
* Trains the learning backend using accumulated pattern outcomes.
|
|
409
|
-
* Requires LearningBackend to be configured.
|
|
410
|
-
*
|
|
411
|
-
* @param options - Training options (epochs, batchSize)
|
|
412
|
-
* @returns Training results with epochs and final loss
|
|
413
|
-
* @throws Error if LearningBackend not available
|
|
414
|
-
*/
|
|
415
|
-
async trainGNN(options) {
|
|
416
|
-
if (!this.learningBackend) {
|
|
417
|
-
throw new Error('GNN learning not available. Initialize ReasoningBank with LearningBackend.');
|
|
418
|
-
}
|
|
419
|
-
return this.learningBackend.train(options);
|
|
420
|
-
}
|
|
421
|
-
/**
|
|
422
|
-
* Get pattern by ID
|
|
423
|
-
*/
|
|
424
|
-
getPattern(patternId) {
|
|
425
|
-
const stmt = this.db.prepare(`
|
|
426
|
-
SELECT
|
|
427
|
-
rp.id,
|
|
428
|
-
rp.ts,
|
|
429
|
-
rp.task_type,
|
|
430
|
-
rp.approach,
|
|
431
|
-
rp.success_rate,
|
|
432
|
-
rp.uses,
|
|
433
|
-
rp.avg_reward,
|
|
434
|
-
rp.tags,
|
|
435
|
-
rp.metadata,
|
|
436
|
-
pe.embedding
|
|
437
|
-
FROM reasoning_patterns rp
|
|
438
|
-
LEFT JOIN pattern_embeddings pe ON rp.id = pe.pattern_id
|
|
439
|
-
WHERE rp.id = ?
|
|
440
|
-
`);
|
|
441
|
-
const row = stmt.get(patternId);
|
|
442
|
-
if (!row)
|
|
443
|
-
return null;
|
|
444
|
-
return {
|
|
445
|
-
id: row.id,
|
|
446
|
-
taskType: row.task_type,
|
|
447
|
-
approach: row.approach,
|
|
448
|
-
successRate: row.success_rate,
|
|
449
|
-
uses: row.uses,
|
|
450
|
-
avgReward: row.avg_reward,
|
|
451
|
-
tags: row.tags ? JSON.parse(row.tags) : [],
|
|
452
|
-
metadata: row.metadata ? JSON.parse(row.metadata) : {},
|
|
453
|
-
createdAt: row.ts,
|
|
454
|
-
embedding: row.embedding
|
|
455
|
-
? new Float32Array(row.embedding.buffer, row.embedding.byteOffset, row.embedding.byteLength / 4)
|
|
456
|
-
: undefined,
|
|
457
|
-
};
|
|
458
|
-
}
|
|
459
|
-
/**
|
|
460
|
-
* Delete pattern by ID
|
|
461
|
-
*/
|
|
462
|
-
deletePattern(patternId) {
|
|
463
|
-
const stmt = this.db.prepare('DELETE FROM reasoning_patterns WHERE id = ?');
|
|
464
|
-
const result = stmt.run(patternId);
|
|
465
|
-
// Invalidate cache
|
|
466
|
-
this.cache.clear();
|
|
467
|
-
return result.changes > 0;
|
|
468
|
-
}
|
|
469
|
-
/**
|
|
470
|
-
* Clear query cache
|
|
471
|
-
*/
|
|
472
|
-
clearCache() {
|
|
473
|
-
this.cache.clear();
|
|
474
|
-
}
|
|
475
|
-
/**
|
|
476
|
-
* Calculate cosine similarity between two vectors
|
|
477
|
-
*/
|
|
478
|
-
cosineSimilarity(a, b) {
|
|
479
|
-
if (a.length !== b.length) {
|
|
480
|
-
throw new Error('Vectors must have same length');
|
|
481
|
-
}
|
|
482
|
-
let dotProduct = 0;
|
|
483
|
-
let normA = 0;
|
|
484
|
-
let normB = 0;
|
|
485
|
-
for (let i = 0; i < a.length; i++) {
|
|
486
|
-
dotProduct += a[i] * b[i];
|
|
487
|
-
normA += a[i] * a[i];
|
|
488
|
-
normB += b[i] * b[i];
|
|
489
|
-
}
|
|
490
|
-
const denom = Math.sqrt(normA) * Math.sqrt(normB);
|
|
491
|
-
return denom === 0 ? 0 : dotProduct / denom;
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
//# sourceMappingURL=ReasoningBank.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReasoningBank.js","sourceRoot":"","sources":["../../src/controllers/ReasoningBank.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ReflexionMemory - Episodic Replay Memory System
|
|
3
|
-
*
|
|
4
|
-
* Implements reflexion-style episodic replay for agent self-improvement.
|
|
5
|
-
* Stores self-critiques and outcomes, retrieves relevant past experiences.
|
|
6
|
-
*
|
|
7
|
-
* Based on: "Reflexion: Language Agents with Verbal Reinforcement Learning"
|
|
8
|
-
* https://arxiv.org/abs/2303.11366
|
|
9
|
-
*/
|
|
10
|
-
type Database = any;
|
|
11
|
-
import { EmbeddingService } from './EmbeddingService.js';
|
|
12
|
-
import type { VectorBackend } from '../backends/VectorBackend.js';
|
|
13
|
-
import type { LearningBackend } from '../backends/LearningBackend.js';
|
|
14
|
-
import type { GraphBackend } from '../backends/GraphBackend.js';
|
|
15
|
-
export interface Episode {
|
|
16
|
-
id?: number;
|
|
17
|
-
ts?: number;
|
|
18
|
-
sessionId: string;
|
|
19
|
-
task: string;
|
|
20
|
-
input?: string;
|
|
21
|
-
output?: string;
|
|
22
|
-
critique?: string;
|
|
23
|
-
reward: number;
|
|
24
|
-
success: boolean;
|
|
25
|
-
latencyMs?: number;
|
|
26
|
-
tokensUsed?: number;
|
|
27
|
-
tags?: string[];
|
|
28
|
-
metadata?: Record<string, any>;
|
|
29
|
-
}
|
|
30
|
-
export interface EpisodeWithEmbedding extends Episode {
|
|
31
|
-
embedding?: Float32Array;
|
|
32
|
-
similarity?: number;
|
|
33
|
-
}
|
|
34
|
-
export interface ReflexionQuery {
|
|
35
|
-
task: string;
|
|
36
|
-
currentState?: string;
|
|
37
|
-
k?: number;
|
|
38
|
-
minReward?: number;
|
|
39
|
-
onlyFailures?: boolean;
|
|
40
|
-
onlySuccesses?: boolean;
|
|
41
|
-
timeWindowDays?: number;
|
|
42
|
-
}
|
|
43
|
-
export declare class ReflexionMemory {
|
|
44
|
-
private db;
|
|
45
|
-
private embedder;
|
|
46
|
-
private vectorBackend?;
|
|
47
|
-
private learningBackend?;
|
|
48
|
-
private graphBackend?;
|
|
49
|
-
constructor(db: Database, embedder: EmbeddingService, vectorBackend?: VectorBackend, learningBackend?: LearningBackend, graphBackend?: GraphBackend);
|
|
50
|
-
/**
|
|
51
|
-
* Store a new episode with its critique and outcome
|
|
52
|
-
*/
|
|
53
|
-
storeEpisode(episode: Episode): Promise<number>;
|
|
54
|
-
/**
|
|
55
|
-
* Retrieve relevant past episodes for a new task attempt
|
|
56
|
-
*/
|
|
57
|
-
retrieveRelevant(query: ReflexionQuery): Promise<EpisodeWithEmbedding[]>;
|
|
58
|
-
/**
|
|
59
|
-
* Get statistics for a task
|
|
60
|
-
*/
|
|
61
|
-
getTaskStats(task: string, timeWindowDays?: number): {
|
|
62
|
-
totalAttempts: number;
|
|
63
|
-
successRate: number;
|
|
64
|
-
avgReward: number;
|
|
65
|
-
avgLatency: number;
|
|
66
|
-
improvementTrend: number;
|
|
67
|
-
};
|
|
68
|
-
/**
|
|
69
|
-
* Build critique summary from similar failed episodes
|
|
70
|
-
*/
|
|
71
|
-
getCritiqueSummary(query: ReflexionQuery): Promise<string>;
|
|
72
|
-
/**
|
|
73
|
-
* Get successful strategies for a task
|
|
74
|
-
*/
|
|
75
|
-
getSuccessStrategies(query: ReflexionQuery): Promise<string>;
|
|
76
|
-
/**
|
|
77
|
-
* Get recent episodes for a session
|
|
78
|
-
*/
|
|
79
|
-
getRecentEpisodes(sessionId: string, limit?: number): Promise<Episode[]>;
|
|
80
|
-
/**
|
|
81
|
-
* Prune low-quality episodes based on TTL and quality threshold
|
|
82
|
-
*/
|
|
83
|
-
pruneEpisodes(config: {
|
|
84
|
-
minReward?: number;
|
|
85
|
-
maxAgeDays?: number;
|
|
86
|
-
keepMinPerTask?: number;
|
|
87
|
-
}): number;
|
|
88
|
-
private buildEpisodeText;
|
|
89
|
-
private storeEmbedding;
|
|
90
|
-
private serializeEmbedding;
|
|
91
|
-
private deserializeEmbedding;
|
|
92
|
-
private cosineSimilarity;
|
|
93
|
-
/**
|
|
94
|
-
* Create graph node for episode with relationships
|
|
95
|
-
*/
|
|
96
|
-
private createEpisodeGraphNode;
|
|
97
|
-
/**
|
|
98
|
-
* Enhance query embedding using GNN attention mechanism
|
|
99
|
-
*/
|
|
100
|
-
private enhanceQueryWithGNN;
|
|
101
|
-
/**
|
|
102
|
-
* Get graph-based episode relationships
|
|
103
|
-
*/
|
|
104
|
-
getEpisodeRelationships(episodeId: number): Promise<{
|
|
105
|
-
similar: number[];
|
|
106
|
-
session: string;
|
|
107
|
-
learnedFrom: number[];
|
|
108
|
-
}>;
|
|
109
|
-
/**
|
|
110
|
-
* Train GNN model on accumulated samples
|
|
111
|
-
*/
|
|
112
|
-
trainGNN(options?: {
|
|
113
|
-
epochs?: number;
|
|
114
|
-
}): Promise<void>;
|
|
115
|
-
/**
|
|
116
|
-
* Get learning backend statistics
|
|
117
|
-
*/
|
|
118
|
-
getLearningStats(): import("../backends/LearningBackend.js").LearningStats | null;
|
|
119
|
-
/**
|
|
120
|
-
* Get graph backend statistics
|
|
121
|
-
*/
|
|
122
|
-
getGraphStats(): import("../backends/GraphBackend.js").GraphStats | null;
|
|
123
|
-
}
|
|
124
|
-
export {};
|
|
125
|
-
//# sourceMappingURL=ReflexionMemory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReflexionMemory.d.ts","sourceRoot":"","sources":["../../src/controllers/ReflexionMemory.ts"],"names":[],"mappings":"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"}
|