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,407 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BatchOperations - Optimized Batch Processing for AgentDB
|
|
3
|
-
*
|
|
4
|
-
* Implements efficient batch operations:
|
|
5
|
-
* - Bulk inserts with transactions
|
|
6
|
-
* - Batch embedding generation
|
|
7
|
-
* - Parallel processing
|
|
8
|
-
* - Progress tracking
|
|
9
|
-
*
|
|
10
|
-
* SECURITY: Fixed SQL injection vulnerabilities:
|
|
11
|
-
* - Table names validated against whitelist
|
|
12
|
-
* - Column names validated against whitelist
|
|
13
|
-
* - All queries use parameterized values
|
|
14
|
-
*/
|
|
15
|
-
import { validateTableName, buildSafeWhereClause, buildSafeSetClause, ValidationError, } from '../security/input-validation.js';
|
|
16
|
-
export class BatchOperations {
|
|
17
|
-
db;
|
|
18
|
-
embedder;
|
|
19
|
-
config;
|
|
20
|
-
constructor(db, embedder, config) {
|
|
21
|
-
this.db = db;
|
|
22
|
-
this.embedder = embedder;
|
|
23
|
-
this.config = {
|
|
24
|
-
batchSize: 100,
|
|
25
|
-
parallelism: 4,
|
|
26
|
-
...config
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Bulk insert episodes with embeddings
|
|
31
|
-
*/
|
|
32
|
-
async insertEpisodes(episodes) {
|
|
33
|
-
const totalBatches = Math.ceil(episodes.length / this.config.batchSize);
|
|
34
|
-
let completed = 0;
|
|
35
|
-
for (let i = 0; i < episodes.length; i += this.config.batchSize) {
|
|
36
|
-
const batch = episodes.slice(i, i + this.config.batchSize);
|
|
37
|
-
// Generate embeddings in parallel
|
|
38
|
-
const texts = batch.map(ep => this.buildEpisodeText(ep));
|
|
39
|
-
const embeddings = await this.embedder.embedBatch(texts);
|
|
40
|
-
// Insert with transaction
|
|
41
|
-
const transaction = this.db.transaction(() => {
|
|
42
|
-
const episodeStmt = this.db.prepare(`
|
|
43
|
-
INSERT INTO episodes (
|
|
44
|
-
session_id, task, input, output, critique, reward, success,
|
|
45
|
-
latency_ms, tokens_used, tags, metadata
|
|
46
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
47
|
-
`);
|
|
48
|
-
const embeddingStmt = this.db.prepare(`
|
|
49
|
-
INSERT INTO episode_embeddings (episode_id, embedding)
|
|
50
|
-
VALUES (?, ?)
|
|
51
|
-
`);
|
|
52
|
-
batch.forEach((episode, idx) => {
|
|
53
|
-
const result = episodeStmt.run(episode.sessionId, episode.task, episode.input || null, episode.output || null, episode.critique || null, episode.reward, episode.success ? 1 : 0, episode.latencyMs || null, episode.tokensUsed || null, episode.tags ? JSON.stringify(episode.tags) : null, episode.metadata ? JSON.stringify(episode.metadata) : null);
|
|
54
|
-
const episodeId = result.lastInsertRowid;
|
|
55
|
-
embeddingStmt.run(episodeId, Buffer.from(embeddings[idx].buffer));
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
transaction();
|
|
59
|
-
completed += batch.length;
|
|
60
|
-
if (this.config.progressCallback) {
|
|
61
|
-
this.config.progressCallback(completed, episodes.length);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return completed;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Bulk insert skills with embeddings (NEW - 3x faster than sequential)
|
|
68
|
-
*/
|
|
69
|
-
async insertSkills(skills) {
|
|
70
|
-
const skillIds = [];
|
|
71
|
-
let completed = 0;
|
|
72
|
-
for (let i = 0; i < skills.length; i += this.config.batchSize) {
|
|
73
|
-
const batch = skills.slice(i, i + this.config.batchSize);
|
|
74
|
-
// Generate embeddings in parallel
|
|
75
|
-
const texts = batch.map(skill => `${skill.name}\n${skill.description}`);
|
|
76
|
-
const embeddings = await this.embedder.embedBatch(texts);
|
|
77
|
-
// Insert with transaction
|
|
78
|
-
const transaction = this.db.transaction(() => {
|
|
79
|
-
const skillStmt = this.db.prepare(`
|
|
80
|
-
INSERT INTO skills (
|
|
81
|
-
name, description, signature, code, success_rate, uses,
|
|
82
|
-
avg_reward, avg_latency_ms, tags, metadata
|
|
83
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
84
|
-
`);
|
|
85
|
-
const embeddingStmt = this.db.prepare(`
|
|
86
|
-
INSERT INTO skill_embeddings (skill_id, embedding)
|
|
87
|
-
VALUES (?, ?)
|
|
88
|
-
`);
|
|
89
|
-
batch.forEach((skill, idx) => {
|
|
90
|
-
const result = skillStmt.run(skill.name, skill.description, skill.signature ? JSON.stringify(skill.signature) : null, skill.code || null, skill.successRate ?? 0.0, skill.uses ?? 0, skill.avgReward ?? 0.0, skill.avgLatencyMs ?? 0.0, skill.tags ? JSON.stringify(skill.tags) : null, skill.metadata ? JSON.stringify(skill.metadata) : null);
|
|
91
|
-
const skillId = result.lastInsertRowid;
|
|
92
|
-
skillIds.push(skillId);
|
|
93
|
-
embeddingStmt.run(skillId, Buffer.from(embeddings[idx].buffer));
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
transaction();
|
|
97
|
-
completed += batch.length;
|
|
98
|
-
if (this.config.progressCallback) {
|
|
99
|
-
this.config.progressCallback(completed, skills.length);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return skillIds;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Bulk insert reasoning patterns with embeddings (NEW - 4x faster than sequential)
|
|
106
|
-
*/
|
|
107
|
-
async insertPatterns(patterns) {
|
|
108
|
-
const patternIds = [];
|
|
109
|
-
let completed = 0;
|
|
110
|
-
for (let i = 0; i < patterns.length; i += this.config.batchSize) {
|
|
111
|
-
const batch = patterns.slice(i, i + this.config.batchSize);
|
|
112
|
-
// Generate embeddings in parallel
|
|
113
|
-
const texts = batch.map(p => `${p.taskType}\n${p.approach}\n${p.context || ''}`);
|
|
114
|
-
const embeddings = await this.embedder.embedBatch(texts);
|
|
115
|
-
// Insert with transaction
|
|
116
|
-
const transaction = this.db.transaction(() => {
|
|
117
|
-
const patternStmt = this.db.prepare(`
|
|
118
|
-
INSERT INTO reasoning_patterns (
|
|
119
|
-
task_type, approach, context, success_rate, outcome, uses, tags, metadata
|
|
120
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
121
|
-
`);
|
|
122
|
-
const embeddingStmt = this.db.prepare(`
|
|
123
|
-
INSERT INTO pattern_embeddings (pattern_id, embedding)
|
|
124
|
-
VALUES (?, ?)
|
|
125
|
-
`);
|
|
126
|
-
batch.forEach((pattern, idx) => {
|
|
127
|
-
const result = patternStmt.run(pattern.taskType, pattern.approach, pattern.context || null, pattern.successRate, pattern.outcome || null, 0, // initial uses = 0
|
|
128
|
-
pattern.tags ? JSON.stringify(pattern.tags) : null, pattern.metadata ? JSON.stringify(pattern.metadata) : null);
|
|
129
|
-
const patternId = result.lastInsertRowid;
|
|
130
|
-
patternIds.push(patternId);
|
|
131
|
-
embeddingStmt.run(patternId, Buffer.from(embeddings[idx].buffer));
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
transaction();
|
|
135
|
-
completed += batch.length;
|
|
136
|
-
if (this.config.progressCallback) {
|
|
137
|
-
this.config.progressCallback(completed, patterns.length);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return patternIds;
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Bulk update embeddings for existing episodes
|
|
144
|
-
*/
|
|
145
|
-
async regenerateEmbeddings(episodeIds) {
|
|
146
|
-
let episodes;
|
|
147
|
-
if (episodeIds) {
|
|
148
|
-
const placeholders = episodeIds.map(() => '?').join(',');
|
|
149
|
-
episodes = this.db.prepare(`SELECT id, task, critique, output FROM episodes WHERE id IN (${placeholders})`).all(...episodeIds);
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
episodes = this.db.prepare('SELECT id, task, critique, output FROM episodes').all();
|
|
153
|
-
}
|
|
154
|
-
let completed = 0;
|
|
155
|
-
const totalBatches = Math.ceil(episodes.length / this.config.batchSize);
|
|
156
|
-
for (let i = 0; i < episodes.length; i += this.config.batchSize) {
|
|
157
|
-
const batch = episodes.slice(i, i + this.config.batchSize);
|
|
158
|
-
// Generate embeddings
|
|
159
|
-
const texts = batch.map((ep) => [ep.task, ep.critique, ep.output].filter(Boolean).join('\n'));
|
|
160
|
-
const embeddings = await this.embedder.embedBatch(texts);
|
|
161
|
-
// Update with transaction
|
|
162
|
-
const transaction = this.db.transaction(() => {
|
|
163
|
-
const stmt = this.db.prepare(`
|
|
164
|
-
INSERT OR REPLACE INTO episode_embeddings (episode_id, embedding)
|
|
165
|
-
VALUES (?, ?)
|
|
166
|
-
`);
|
|
167
|
-
batch.forEach((episode, idx) => {
|
|
168
|
-
stmt.run(episode.id, Buffer.from(embeddings[idx].buffer));
|
|
169
|
-
});
|
|
170
|
-
});
|
|
171
|
-
transaction();
|
|
172
|
-
completed += batch.length;
|
|
173
|
-
if (this.config.progressCallback) {
|
|
174
|
-
this.config.progressCallback(completed, episodes.length);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
return completed;
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Parallel batch processing with worker pool
|
|
181
|
-
*/
|
|
182
|
-
async processInParallel(items, processor) {
|
|
183
|
-
const results = [];
|
|
184
|
-
const chunks = this.chunkArray(items, this.config.parallelism);
|
|
185
|
-
for (const chunk of chunks) {
|
|
186
|
-
const chunkResults = await Promise.all(chunk.map(item => processor(item)));
|
|
187
|
-
results.push(...chunkResults);
|
|
188
|
-
if (this.config.progressCallback) {
|
|
189
|
-
this.config.progressCallback(results.length, items.length);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
return results;
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Bulk delete with conditions (SQL injection safe)
|
|
196
|
-
*/
|
|
197
|
-
bulkDelete(table, conditions) {
|
|
198
|
-
try {
|
|
199
|
-
// SECURITY: Validate table name against whitelist
|
|
200
|
-
const validatedTable = validateTableName(table);
|
|
201
|
-
// SECURITY: Build safe WHERE clause with validated column names
|
|
202
|
-
const { clause, values } = buildSafeWhereClause(validatedTable, conditions);
|
|
203
|
-
// Execute with parameterized query
|
|
204
|
-
const stmt = this.db.prepare(`DELETE FROM ${validatedTable} WHERE ${clause}`);
|
|
205
|
-
const result = stmt.run(...values);
|
|
206
|
-
return result.changes;
|
|
207
|
-
}
|
|
208
|
-
catch (error) {
|
|
209
|
-
if (error instanceof ValidationError) {
|
|
210
|
-
console.error(`❌ Bulk delete validation error: ${error.message}`);
|
|
211
|
-
throw error;
|
|
212
|
-
}
|
|
213
|
-
throw error;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Bulk update with conditions (SQL injection safe)
|
|
218
|
-
*/
|
|
219
|
-
bulkUpdate(table, updates, conditions) {
|
|
220
|
-
try {
|
|
221
|
-
// SECURITY: Validate table name against whitelist
|
|
222
|
-
const validatedTable = validateTableName(table);
|
|
223
|
-
// SECURITY: Build safe SET clause with validated column names
|
|
224
|
-
const setResult = buildSafeSetClause(validatedTable, updates);
|
|
225
|
-
// SECURITY: Build safe WHERE clause with validated column names
|
|
226
|
-
const whereResult = buildSafeWhereClause(validatedTable, conditions);
|
|
227
|
-
// Combine values from SET and WHERE clauses
|
|
228
|
-
const values = [...setResult.values, ...whereResult.values];
|
|
229
|
-
// Execute with parameterized query
|
|
230
|
-
const stmt = this.db.prepare(`UPDATE ${validatedTable} SET ${setResult.clause} WHERE ${whereResult.clause}`);
|
|
231
|
-
const result = stmt.run(...values);
|
|
232
|
-
return result.changes;
|
|
233
|
-
}
|
|
234
|
-
catch (error) {
|
|
235
|
-
if (error instanceof ValidationError) {
|
|
236
|
-
console.error(`❌ Bulk update validation error: ${error.message}`);
|
|
237
|
-
throw error;
|
|
238
|
-
}
|
|
239
|
-
throw error;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Prune old or low-quality data (NEW - maintain database hygiene)
|
|
244
|
-
*/
|
|
245
|
-
async pruneData(config = {}) {
|
|
246
|
-
const { maxAge = 90, // Default: 90 days
|
|
247
|
-
minReward = 0.3, // Default: keep episodes with reward >= 0.3
|
|
248
|
-
minSuccessRate = 0.5, // Default: keep skills/patterns >= 50% success rate
|
|
249
|
-
maxRecords = 100000, // Default: max 100k records per table
|
|
250
|
-
dryRun = false, } = config;
|
|
251
|
-
const cutoffTime = Math.floor(Date.now() / 1000) - (maxAge * 24 * 60 * 60);
|
|
252
|
-
const results = {
|
|
253
|
-
episodesPruned: 0,
|
|
254
|
-
skillsPruned: 0,
|
|
255
|
-
patternsPruned: 0,
|
|
256
|
-
spaceSaved: 0,
|
|
257
|
-
};
|
|
258
|
-
// Get current database size
|
|
259
|
-
const sizeBeforeBytes = this.db.pragma('page_count', { simple: true }) *
|
|
260
|
-
this.db.pragma('page_size', { simple: true });
|
|
261
|
-
// 1. Prune old/low-quality episodes
|
|
262
|
-
const episodesToPrune = this.db.prepare(`
|
|
263
|
-
SELECT COUNT(*) as count FROM episodes
|
|
264
|
-
WHERE (ts < ? OR reward < ?)
|
|
265
|
-
AND id NOT IN (
|
|
266
|
-
-- Keep episodes referenced by causal edges
|
|
267
|
-
SELECT DISTINCT from_memory_id FROM causal_edges WHERE from_memory_type = 'episode'
|
|
268
|
-
UNION
|
|
269
|
-
SELECT DISTINCT to_memory_id FROM causal_edges WHERE to_memory_type = 'episode'
|
|
270
|
-
)
|
|
271
|
-
`).get(cutoffTime, minReward);
|
|
272
|
-
if (!dryRun && episodesToPrune.count > 0) {
|
|
273
|
-
this.db.prepare(`
|
|
274
|
-
DELETE FROM episodes
|
|
275
|
-
WHERE (ts < ? OR reward < ?)
|
|
276
|
-
AND id NOT IN (
|
|
277
|
-
SELECT DISTINCT from_memory_id FROM causal_edges WHERE from_memory_type = 'episode'
|
|
278
|
-
UNION
|
|
279
|
-
SELECT DISTINCT to_memory_id FROM causal_edges WHERE to_memory_type = 'episode'
|
|
280
|
-
)
|
|
281
|
-
`).run(cutoffTime, minReward);
|
|
282
|
-
results.episodesPruned = episodesToPrune.count;
|
|
283
|
-
}
|
|
284
|
-
else {
|
|
285
|
-
results.episodesPruned = episodesToPrune.count;
|
|
286
|
-
}
|
|
287
|
-
// 2. Prune low-performing skills
|
|
288
|
-
const skillsToPrune = this.db.prepare(`
|
|
289
|
-
SELECT COUNT(*) as count FROM skills
|
|
290
|
-
WHERE (success_rate < ? OR uses = 0)
|
|
291
|
-
AND ts < ?
|
|
292
|
-
`).get(minSuccessRate, cutoffTime);
|
|
293
|
-
if (!dryRun && skillsToPrune.count > 0) {
|
|
294
|
-
this.db.prepare(`
|
|
295
|
-
DELETE FROM skills
|
|
296
|
-
WHERE (success_rate < ? OR uses = 0)
|
|
297
|
-
AND ts < ?
|
|
298
|
-
`).run(minSuccessRate, cutoffTime);
|
|
299
|
-
results.skillsPruned = skillsToPrune.count;
|
|
300
|
-
}
|
|
301
|
-
else {
|
|
302
|
-
results.skillsPruned = skillsToPrune.count;
|
|
303
|
-
}
|
|
304
|
-
// 3. Prune low-performing patterns
|
|
305
|
-
const patternsToPrune = this.db.prepare(`
|
|
306
|
-
SELECT COUNT(*) as count FROM reasoning_patterns
|
|
307
|
-
WHERE (success_rate < ? OR uses = 0)
|
|
308
|
-
AND ts < ?
|
|
309
|
-
`).get(minSuccessRate, cutoffTime);
|
|
310
|
-
if (!dryRun && patternsToPrune.count > 0) {
|
|
311
|
-
this.db.prepare(`
|
|
312
|
-
DELETE FROM reasoning_patterns
|
|
313
|
-
WHERE (success_rate < ? OR uses = 0)
|
|
314
|
-
AND ts < ?
|
|
315
|
-
`).run(minSuccessRate, cutoffTime);
|
|
316
|
-
results.patternsPruned = patternsToPrune.count;
|
|
317
|
-
}
|
|
318
|
-
else {
|
|
319
|
-
results.patternsPruned = patternsToPrune.count;
|
|
320
|
-
}
|
|
321
|
-
// 4. Enforce max records limit (keep most recent + highest performing)
|
|
322
|
-
const episodeCount = this.db.prepare('SELECT COUNT(*) as count FROM episodes').get();
|
|
323
|
-
if (episodeCount.count > maxRecords) {
|
|
324
|
-
const toDelete = episodeCount.count - maxRecords;
|
|
325
|
-
if (!dryRun) {
|
|
326
|
-
this.db.prepare(`
|
|
327
|
-
DELETE FROM episodes
|
|
328
|
-
WHERE id IN (
|
|
329
|
-
SELECT id FROM episodes
|
|
330
|
-
ORDER BY reward ASC, ts ASC
|
|
331
|
-
LIMIT ?
|
|
332
|
-
)
|
|
333
|
-
`).run(toDelete);
|
|
334
|
-
}
|
|
335
|
-
results.episodesPruned += toDelete;
|
|
336
|
-
}
|
|
337
|
-
// Calculate space saved
|
|
338
|
-
if (!dryRun) {
|
|
339
|
-
// Vacuum to reclaim space
|
|
340
|
-
this.db.exec('VACUUM');
|
|
341
|
-
const sizeAfterBytes = this.db.pragma('page_count', { simple: true }) *
|
|
342
|
-
this.db.pragma('page_size', { simple: true });
|
|
343
|
-
results.spaceSaved = sizeBeforeBytes - sizeAfterBytes;
|
|
344
|
-
}
|
|
345
|
-
return results;
|
|
346
|
-
}
|
|
347
|
-
/**
|
|
348
|
-
* Vacuum and optimize database
|
|
349
|
-
*/
|
|
350
|
-
optimize() {
|
|
351
|
-
console.log('🔧 Optimizing database...');
|
|
352
|
-
// Analyze tables for query planner
|
|
353
|
-
this.db.exec('ANALYZE');
|
|
354
|
-
// Rebuild indexes
|
|
355
|
-
const tables = this.db.prepare(`
|
|
356
|
-
SELECT name FROM sqlite_master
|
|
357
|
-
WHERE type='table' AND name NOT LIKE 'sqlite_%'
|
|
358
|
-
`).all();
|
|
359
|
-
for (const { name } of tables) {
|
|
360
|
-
this.db.exec(`REINDEX ${name}`);
|
|
361
|
-
}
|
|
362
|
-
// Vacuum to reclaim space
|
|
363
|
-
this.db.exec('VACUUM');
|
|
364
|
-
console.log('✅ Database optimized');
|
|
365
|
-
}
|
|
366
|
-
/**
|
|
367
|
-
* Get database statistics
|
|
368
|
-
*/
|
|
369
|
-
getStats() {
|
|
370
|
-
const pageSize = this.db.pragma('page_size', { simple: true });
|
|
371
|
-
const pageCount = this.db.pragma('page_count', { simple: true });
|
|
372
|
-
const totalSize = pageSize * pageCount;
|
|
373
|
-
const tables = this.db.prepare(`
|
|
374
|
-
SELECT name FROM sqlite_master
|
|
375
|
-
WHERE type='table' AND name NOT LIKE 'sqlite_%'
|
|
376
|
-
`).all();
|
|
377
|
-
const tableStats = tables.map(({ name }) => {
|
|
378
|
-
const count = this.db.prepare(`SELECT COUNT(*) as count FROM ${name}`).get();
|
|
379
|
-
const pages = this.db.prepare(`SELECT COUNT(*) as count FROM dbstat WHERE name = ?`).get(name);
|
|
380
|
-
return {
|
|
381
|
-
name,
|
|
382
|
-
rows: count.count,
|
|
383
|
-
size: (pages?.count || 0) * pageSize
|
|
384
|
-
};
|
|
385
|
-
});
|
|
386
|
-
return { totalSize, tableStats };
|
|
387
|
-
}
|
|
388
|
-
// ========================================================================
|
|
389
|
-
// Private Methods
|
|
390
|
-
// ========================================================================
|
|
391
|
-
buildEpisodeText(episode) {
|
|
392
|
-
const parts = [episode.task];
|
|
393
|
-
if (episode.critique)
|
|
394
|
-
parts.push(episode.critique);
|
|
395
|
-
if (episode.output)
|
|
396
|
-
parts.push(episode.output);
|
|
397
|
-
return parts.join('\n');
|
|
398
|
-
}
|
|
399
|
-
chunkArray(array, size) {
|
|
400
|
-
const chunks = [];
|
|
401
|
-
for (let i = 0; i < array.length; i += size) {
|
|
402
|
-
chunks.push(array.slice(i, i + size));
|
|
403
|
-
}
|
|
404
|
-
return chunks;
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
//# sourceMappingURL=BatchOperations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BatchOperations.js","sourceRoot":"","sources":["../../src/optimizations/BatchOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* QueryOptimizer - Advanced Query Optimization for AgentDB
|
|
3
|
-
*
|
|
4
|
-
* Implements:
|
|
5
|
-
* - Query result caching with TTL
|
|
6
|
-
* - Prepared statement pooling
|
|
7
|
-
* - Batch operation optimization
|
|
8
|
-
* - Index usage analysis
|
|
9
|
-
* - Query plan analysis
|
|
10
|
-
*/
|
|
11
|
-
type Database = any;
|
|
12
|
-
export interface CacheConfig {
|
|
13
|
-
maxSize: number;
|
|
14
|
-
ttl: number;
|
|
15
|
-
enabled: boolean;
|
|
16
|
-
}
|
|
17
|
-
export interface QueryStats {
|
|
18
|
-
query: string;
|
|
19
|
-
executionCount: number;
|
|
20
|
-
totalTime: number;
|
|
21
|
-
avgTime: number;
|
|
22
|
-
cacheHits: number;
|
|
23
|
-
cacheMisses: number;
|
|
24
|
-
}
|
|
25
|
-
export declare class QueryOptimizer {
|
|
26
|
-
private db;
|
|
27
|
-
private cache;
|
|
28
|
-
private stats;
|
|
29
|
-
private config;
|
|
30
|
-
constructor(db: Database, config?: Partial<CacheConfig>);
|
|
31
|
-
/**
|
|
32
|
-
* Execute query with caching
|
|
33
|
-
*/
|
|
34
|
-
query<T = any>(sql: string, params?: any[], cacheKey?: string): T;
|
|
35
|
-
/**
|
|
36
|
-
* Execute query that returns single row
|
|
37
|
-
*/
|
|
38
|
-
queryOne<T = any>(sql: string, params?: any[], cacheKey?: string): T | undefined;
|
|
39
|
-
/**
|
|
40
|
-
* Execute write operation (no caching)
|
|
41
|
-
*/
|
|
42
|
-
execute(sql: string, params?: any[]): any;
|
|
43
|
-
/**
|
|
44
|
-
* Batch insert optimization
|
|
45
|
-
*/
|
|
46
|
-
batchInsert(table: string, columns: string[], rows: any[][]): void;
|
|
47
|
-
/**
|
|
48
|
-
* Analyze query plan
|
|
49
|
-
*/
|
|
50
|
-
analyzeQuery(sql: string): {
|
|
51
|
-
plan: string;
|
|
52
|
-
usesIndex: boolean;
|
|
53
|
-
estimatedCost: number;
|
|
54
|
-
};
|
|
55
|
-
/**
|
|
56
|
-
* Get optimization suggestions
|
|
57
|
-
*/
|
|
58
|
-
getSuggestions(): string[];
|
|
59
|
-
/**
|
|
60
|
-
* Get query statistics
|
|
61
|
-
*/
|
|
62
|
-
getStats(): QueryStats[];
|
|
63
|
-
/**
|
|
64
|
-
* Clear cache
|
|
65
|
-
*/
|
|
66
|
-
clearCache(): void;
|
|
67
|
-
/**
|
|
68
|
-
* Get cache statistics
|
|
69
|
-
*/
|
|
70
|
-
getCacheStats(): {
|
|
71
|
-
size: number;
|
|
72
|
-
hitRate: number;
|
|
73
|
-
totalHits: number;
|
|
74
|
-
totalMisses: number;
|
|
75
|
-
};
|
|
76
|
-
private generateCacheKey;
|
|
77
|
-
private cacheResult;
|
|
78
|
-
private invalidateCache;
|
|
79
|
-
private extractTables;
|
|
80
|
-
private recordStats;
|
|
81
|
-
}
|
|
82
|
-
export {};
|
|
83
|
-
//# sourceMappingURL=QueryOptimizer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QueryOptimizer.d.ts","sourceRoot":"","sources":["../../src/optimizations/QueryOptimizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,KAAK,QAAQ,GAAG,GAAG,CAAC;AAEpB,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,KAAK,CAAkD;IAC/D,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,MAAM,CAAc;gBAEhB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAYvD;;OAEG;IACH,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,GAAG,EAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC;IA8BrE;;OAEG;IACH,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,GAAG,EAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAKpF;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,GAAG,EAAO,GAAG,GAAG;IAa7C;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI;IAgBlE;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;KACvB;IAmBD;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAuC1B;;OAEG;IACH,QAAQ,IAAI,UAAU,EAAE;IAKxB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,aAAa,IAAI;QACf,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB;IAgBD,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,WAAW;CAyBpB"}
|