agentdb 2.0.0-alpha.2 → 2.0.0-alpha.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/package.json +3 -3
- package/src/cli/agentdb-cli.ts +78 -0
- 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,150 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AgentDB v2 Resource Limit Enforcement
|
|
3
|
-
*
|
|
4
|
-
* Prevents denial of service attacks by enforcing:
|
|
5
|
-
* - Memory usage limits
|
|
6
|
-
* - Query timeouts
|
|
7
|
-
* - Rate limiting
|
|
8
|
-
* - Resource caps
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Resource usage tracker
|
|
12
|
-
*/
|
|
13
|
-
export declare class ResourceTracker {
|
|
14
|
-
private memoryUsageMB;
|
|
15
|
-
private queryCount;
|
|
16
|
-
private lastQueryTime;
|
|
17
|
-
private queryTimes;
|
|
18
|
-
private readonly startTime;
|
|
19
|
-
/**
|
|
20
|
-
* Update memory usage estimate
|
|
21
|
-
*/
|
|
22
|
-
updateMemoryUsage(additionalMB: number): void;
|
|
23
|
-
/**
|
|
24
|
-
* Estimate memory for vectors
|
|
25
|
-
*/
|
|
26
|
-
estimateVectorMemory(numVectors: number, dimension: number): number;
|
|
27
|
-
/**
|
|
28
|
-
* Record query execution
|
|
29
|
-
*/
|
|
30
|
-
recordQuery(durationMs: number): void;
|
|
31
|
-
/**
|
|
32
|
-
* Get resource usage statistics
|
|
33
|
-
*/
|
|
34
|
-
getStats(): ResourceStats;
|
|
35
|
-
/**
|
|
36
|
-
* Reset tracker
|
|
37
|
-
*/
|
|
38
|
-
reset(): void;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Resource statistics interface
|
|
42
|
-
*/
|
|
43
|
-
export interface ResourceStats {
|
|
44
|
-
memoryUsageMB: number;
|
|
45
|
-
memoryLimitMB: number;
|
|
46
|
-
memoryUtilization: number;
|
|
47
|
-
queryCount: number;
|
|
48
|
-
avgQueryTimeMs: number;
|
|
49
|
-
uptimeSeconds: number;
|
|
50
|
-
queriesPerSecond: number;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Query timeout wrapper
|
|
54
|
-
*/
|
|
55
|
-
export declare function withTimeout<T>(promise: Promise<T>, timeoutMs?: number, operation?: string): Promise<T>;
|
|
56
|
-
/**
|
|
57
|
-
* Rate limiter using token bucket algorithm
|
|
58
|
-
*/
|
|
59
|
-
export declare class RateLimiter {
|
|
60
|
-
private maxTokens;
|
|
61
|
-
private refillRate;
|
|
62
|
-
private tokens;
|
|
63
|
-
private lastRefill;
|
|
64
|
-
constructor(maxTokens: number, refillRate: number);
|
|
65
|
-
/**
|
|
66
|
-
* Attempt to consume tokens
|
|
67
|
-
* @returns true if allowed, false if rate limited
|
|
68
|
-
*/
|
|
69
|
-
tryConsume(tokens?: number): boolean;
|
|
70
|
-
/**
|
|
71
|
-
* Consume tokens or throw error
|
|
72
|
-
*/
|
|
73
|
-
consume(tokens?: number, operation?: string): void;
|
|
74
|
-
/**
|
|
75
|
-
* Refill tokens based on time elapsed
|
|
76
|
-
*/
|
|
77
|
-
private refill;
|
|
78
|
-
/**
|
|
79
|
-
* Get current token count
|
|
80
|
-
*/
|
|
81
|
-
getTokens(): number;
|
|
82
|
-
/**
|
|
83
|
-
* Reset limiter
|
|
84
|
-
*/
|
|
85
|
-
reset(): void;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Security error class
|
|
89
|
-
*/
|
|
90
|
-
export declare class SecurityError extends Error {
|
|
91
|
-
readonly code: string;
|
|
92
|
-
constructor(message: string, code: string);
|
|
93
|
-
/**
|
|
94
|
-
* Get safe error message for external consumption
|
|
95
|
-
*/
|
|
96
|
-
getSafeMessage(): string;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Enforce resource limits on batch operations
|
|
100
|
-
*/
|
|
101
|
-
export declare function enforceBatchLimits(batchSize: number, dimension: number, tracker: ResourceTracker): void;
|
|
102
|
-
/**
|
|
103
|
-
* Circuit breaker for fault tolerance
|
|
104
|
-
*/
|
|
105
|
-
export declare class CircuitBreaker {
|
|
106
|
-
private maxFailures;
|
|
107
|
-
private resetTimeoutMs;
|
|
108
|
-
private failures;
|
|
109
|
-
private lastFailureTime;
|
|
110
|
-
private state;
|
|
111
|
-
constructor(maxFailures?: number, resetTimeoutMs?: number);
|
|
112
|
-
/**
|
|
113
|
-
* Execute operation with circuit breaker protection
|
|
114
|
-
*/
|
|
115
|
-
execute<T>(operation: () => Promise<T>, operationName?: string): Promise<T>;
|
|
116
|
-
/**
|
|
117
|
-
* Record a failure
|
|
118
|
-
*/
|
|
119
|
-
private recordFailure;
|
|
120
|
-
/**
|
|
121
|
-
* Get circuit breaker status
|
|
122
|
-
*/
|
|
123
|
-
getStatus(): {
|
|
124
|
-
state: string;
|
|
125
|
-
failures: number;
|
|
126
|
-
lastFailure?: number;
|
|
127
|
-
};
|
|
128
|
-
/**
|
|
129
|
-
* Manually reset circuit breaker
|
|
130
|
-
*/
|
|
131
|
-
reset(): void;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Global resource tracker instance
|
|
135
|
-
*/
|
|
136
|
-
export declare const globalResourceTracker: ResourceTracker;
|
|
137
|
-
/**
|
|
138
|
-
* Default rate limiters
|
|
139
|
-
*/
|
|
140
|
-
export declare const rateLimiters: {
|
|
141
|
-
insert: RateLimiter;
|
|
142
|
-
search: RateLimiter;
|
|
143
|
-
delete: RateLimiter;
|
|
144
|
-
batch: RateLimiter;
|
|
145
|
-
};
|
|
146
|
-
/**
|
|
147
|
-
* Monitor and log resource usage
|
|
148
|
-
*/
|
|
149
|
-
export declare function logResourceUsage(): void;
|
|
150
|
-
//# sourceMappingURL=limits.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/security/limits.ts"],"names":[],"mappings":"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"}
|
package/dist/security/limits.js
DELETED
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AgentDB v2 Resource Limit Enforcement
|
|
3
|
-
*
|
|
4
|
-
* Prevents denial of service attacks by enforcing:
|
|
5
|
-
* - Memory usage limits
|
|
6
|
-
* - Query timeouts
|
|
7
|
-
* - Rate limiting
|
|
8
|
-
* - Resource caps
|
|
9
|
-
*/
|
|
10
|
-
import { SECURITY_LIMITS } from './validation.js';
|
|
11
|
-
/**
|
|
12
|
-
* Resource usage tracker
|
|
13
|
-
*/
|
|
14
|
-
export class ResourceTracker {
|
|
15
|
-
memoryUsageMB = 0;
|
|
16
|
-
queryCount = 0;
|
|
17
|
-
lastQueryTime = Date.now();
|
|
18
|
-
queryTimes = [];
|
|
19
|
-
startTime = Date.now();
|
|
20
|
-
/**
|
|
21
|
-
* Update memory usage estimate
|
|
22
|
-
*/
|
|
23
|
-
updateMemoryUsage(additionalMB) {
|
|
24
|
-
this.memoryUsageMB += additionalMB;
|
|
25
|
-
if (this.memoryUsageMB > SECURITY_LIMITS.MAX_MEMORY_MB) {
|
|
26
|
-
throw new SecurityError(`Memory limit exceeded: ${this.memoryUsageMB.toFixed(2)}MB > ${SECURITY_LIMITS.MAX_MEMORY_MB}MB`, 'MEMORY_LIMIT_EXCEEDED');
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Estimate memory for vectors
|
|
31
|
-
*/
|
|
32
|
-
estimateVectorMemory(numVectors, dimension) {
|
|
33
|
-
// Float32Array: 4 bytes per value
|
|
34
|
-
// Plus overhead for object structure and metadata (~25%)
|
|
35
|
-
const bytesPerVector = dimension * 4 * 1.25;
|
|
36
|
-
const totalBytes = numVectors * bytesPerVector;
|
|
37
|
-
return totalBytes / (1024 * 1024); // Convert to MB
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Record query execution
|
|
41
|
-
*/
|
|
42
|
-
recordQuery(durationMs) {
|
|
43
|
-
this.queryCount++;
|
|
44
|
-
this.lastQueryTime = Date.now();
|
|
45
|
-
this.queryTimes.push(durationMs);
|
|
46
|
-
// Keep only last 100 query times for stats
|
|
47
|
-
if (this.queryTimes.length > 100) {
|
|
48
|
-
this.queryTimes.shift();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Get resource usage statistics
|
|
53
|
-
*/
|
|
54
|
-
getStats() {
|
|
55
|
-
const avgQueryTime = this.queryTimes.length > 0
|
|
56
|
-
? this.queryTimes.reduce((a, b) => a + b, 0) / this.queryTimes.length
|
|
57
|
-
: 0;
|
|
58
|
-
const uptimeSeconds = (Date.now() - this.startTime) / 1000;
|
|
59
|
-
return {
|
|
60
|
-
memoryUsageMB: this.memoryUsageMB,
|
|
61
|
-
memoryLimitMB: SECURITY_LIMITS.MAX_MEMORY_MB,
|
|
62
|
-
memoryUtilization: (this.memoryUsageMB / SECURITY_LIMITS.MAX_MEMORY_MB) * 100,
|
|
63
|
-
queryCount: this.queryCount,
|
|
64
|
-
avgQueryTimeMs: avgQueryTime,
|
|
65
|
-
uptimeSeconds,
|
|
66
|
-
queriesPerSecond: this.queryCount / uptimeSeconds,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Reset tracker
|
|
71
|
-
*/
|
|
72
|
-
reset() {
|
|
73
|
-
this.memoryUsageMB = 0;
|
|
74
|
-
this.queryCount = 0;
|
|
75
|
-
this.queryTimes = [];
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Query timeout wrapper
|
|
80
|
-
*/
|
|
81
|
-
export async function withTimeout(promise, timeoutMs = SECURITY_LIMITS.QUERY_TIMEOUT_MS, operation = 'operation') {
|
|
82
|
-
const timeout = new Promise((_, reject) => {
|
|
83
|
-
setTimeout(() => {
|
|
84
|
-
reject(new SecurityError(`${operation} timeout after ${timeoutMs}ms`, 'QUERY_TIMEOUT'));
|
|
85
|
-
}, timeoutMs);
|
|
86
|
-
});
|
|
87
|
-
return Promise.race([promise, timeout]);
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Rate limiter using token bucket algorithm
|
|
91
|
-
*/
|
|
92
|
-
export class RateLimiter {
|
|
93
|
-
maxTokens;
|
|
94
|
-
refillRate;
|
|
95
|
-
tokens;
|
|
96
|
-
lastRefill;
|
|
97
|
-
constructor(maxTokens, refillRate) {
|
|
98
|
-
this.maxTokens = maxTokens;
|
|
99
|
-
this.refillRate = refillRate;
|
|
100
|
-
this.tokens = maxTokens;
|
|
101
|
-
this.lastRefill = Date.now();
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Attempt to consume tokens
|
|
105
|
-
* @returns true if allowed, false if rate limited
|
|
106
|
-
*/
|
|
107
|
-
tryConsume(tokens = 1) {
|
|
108
|
-
this.refill();
|
|
109
|
-
if (this.tokens >= tokens) {
|
|
110
|
-
this.tokens -= tokens;
|
|
111
|
-
return true;
|
|
112
|
-
}
|
|
113
|
-
return false;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Consume tokens or throw error
|
|
117
|
-
*/
|
|
118
|
-
consume(tokens = 1, operation = 'operation') {
|
|
119
|
-
if (!this.tryConsume(tokens)) {
|
|
120
|
-
throw new SecurityError(`Rate limit exceeded for ${operation}. Try again later.`, 'RATE_LIMIT_EXCEEDED');
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Refill tokens based on time elapsed
|
|
125
|
-
*/
|
|
126
|
-
refill() {
|
|
127
|
-
const now = Date.now();
|
|
128
|
-
const elapsed = (now - this.lastRefill) / 1000; // seconds
|
|
129
|
-
const tokensToAdd = elapsed * this.refillRate;
|
|
130
|
-
this.tokens = Math.min(this.maxTokens, this.tokens + tokensToAdd);
|
|
131
|
-
this.lastRefill = now;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Get current token count
|
|
135
|
-
*/
|
|
136
|
-
getTokens() {
|
|
137
|
-
this.refill();
|
|
138
|
-
return this.tokens;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Reset limiter
|
|
142
|
-
*/
|
|
143
|
-
reset() {
|
|
144
|
-
this.tokens = this.maxTokens;
|
|
145
|
-
this.lastRefill = Date.now();
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Security error class
|
|
150
|
-
*/
|
|
151
|
-
export class SecurityError extends Error {
|
|
152
|
-
code;
|
|
153
|
-
constructor(message, code) {
|
|
154
|
-
super(message);
|
|
155
|
-
this.code = code;
|
|
156
|
-
this.name = 'SecurityError';
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Get safe error message for external consumption
|
|
160
|
-
*/
|
|
161
|
-
getSafeMessage() {
|
|
162
|
-
// Don't expose internal details in production
|
|
163
|
-
return 'A security constraint was violated. Please check your request.';
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Enforce resource limits on batch operations
|
|
168
|
-
*/
|
|
169
|
-
export function enforceBatchLimits(batchSize, dimension, tracker) {
|
|
170
|
-
// Check batch size
|
|
171
|
-
if (batchSize > SECURITY_LIMITS.MAX_BATCH_SIZE) {
|
|
172
|
-
throw new SecurityError(`Batch size ${batchSize} exceeds limit ${SECURITY_LIMITS.MAX_BATCH_SIZE}`, 'BATCH_TOO_LARGE');
|
|
173
|
-
}
|
|
174
|
-
// Estimate and check memory
|
|
175
|
-
const estimatedMemoryMB = tracker.estimateVectorMemory(batchSize, dimension);
|
|
176
|
-
if (estimatedMemoryMB > SECURITY_LIMITS.MAX_MEMORY_MB * 0.5) {
|
|
177
|
-
throw new SecurityError(`Batch operation would use ${estimatedMemoryMB.toFixed(2)}MB (>50% of limit)`, 'BATCH_MEMORY_EXCESSIVE');
|
|
178
|
-
}
|
|
179
|
-
tracker.updateMemoryUsage(estimatedMemoryMB);
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Circuit breaker for fault tolerance
|
|
183
|
-
*/
|
|
184
|
-
export class CircuitBreaker {
|
|
185
|
-
maxFailures;
|
|
186
|
-
resetTimeoutMs;
|
|
187
|
-
failures = 0;
|
|
188
|
-
lastFailureTime = 0;
|
|
189
|
-
state = 'closed';
|
|
190
|
-
constructor(maxFailures = 5, resetTimeoutMs = 60000) {
|
|
191
|
-
this.maxFailures = maxFailures;
|
|
192
|
-
this.resetTimeoutMs = resetTimeoutMs;
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Execute operation with circuit breaker protection
|
|
196
|
-
*/
|
|
197
|
-
async execute(operation, operationName = 'operation') {
|
|
198
|
-
if (this.state === 'open') {
|
|
199
|
-
const timeSinceFailure = Date.now() - this.lastFailureTime;
|
|
200
|
-
if (timeSinceFailure > this.resetTimeoutMs) {
|
|
201
|
-
this.state = 'half-open';
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
throw new SecurityError(`Circuit breaker open for ${operationName}. Service temporarily unavailable.`, 'CIRCUIT_BREAKER_OPEN');
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
try {
|
|
208
|
-
const result = await operation();
|
|
209
|
-
// Success - reset on half-open or keep closed
|
|
210
|
-
if (this.state === 'half-open') {
|
|
211
|
-
this.state = 'closed';
|
|
212
|
-
this.failures = 0;
|
|
213
|
-
}
|
|
214
|
-
return result;
|
|
215
|
-
}
|
|
216
|
-
catch (error) {
|
|
217
|
-
this.recordFailure();
|
|
218
|
-
throw error;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Record a failure
|
|
223
|
-
*/
|
|
224
|
-
recordFailure() {
|
|
225
|
-
this.failures++;
|
|
226
|
-
this.lastFailureTime = Date.now();
|
|
227
|
-
if (this.failures >= this.maxFailures) {
|
|
228
|
-
this.state = 'open';
|
|
229
|
-
console.error(`[CircuitBreaker] Opened after ${this.failures} failures`);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Get circuit breaker status
|
|
234
|
-
*/
|
|
235
|
-
getStatus() {
|
|
236
|
-
return {
|
|
237
|
-
state: this.state,
|
|
238
|
-
failures: this.failures,
|
|
239
|
-
lastFailure: this.lastFailureTime || undefined,
|
|
240
|
-
};
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Manually reset circuit breaker
|
|
244
|
-
*/
|
|
245
|
-
reset() {
|
|
246
|
-
this.state = 'closed';
|
|
247
|
-
this.failures = 0;
|
|
248
|
-
this.lastFailureTime = 0;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Global resource tracker instance
|
|
253
|
-
*/
|
|
254
|
-
export const globalResourceTracker = new ResourceTracker();
|
|
255
|
-
/**
|
|
256
|
-
* Default rate limiters
|
|
257
|
-
*/
|
|
258
|
-
export const rateLimiters = {
|
|
259
|
-
// 100 inserts per second
|
|
260
|
-
insert: new RateLimiter(100, 100),
|
|
261
|
-
// 1000 searches per second
|
|
262
|
-
search: new RateLimiter(1000, 1000),
|
|
263
|
-
// 50 deletes per second
|
|
264
|
-
delete: new RateLimiter(50, 50),
|
|
265
|
-
// 10 batch operations per second
|
|
266
|
-
batch: new RateLimiter(10, 10),
|
|
267
|
-
};
|
|
268
|
-
/**
|
|
269
|
-
* Monitor and log resource usage
|
|
270
|
-
*/
|
|
271
|
-
export function logResourceUsage() {
|
|
272
|
-
const stats = globalResourceTracker.getStats();
|
|
273
|
-
console.log('[ResourceMonitor]', {
|
|
274
|
-
memory: `${stats.memoryUsageMB.toFixed(2)}MB / ${stats.memoryLimitMB}MB (${stats.memoryUtilization.toFixed(1)}%)`,
|
|
275
|
-
queries: stats.queryCount,
|
|
276
|
-
avgQueryTime: `${stats.avgQueryTimeMs.toFixed(2)}ms`,
|
|
277
|
-
qps: stats.queriesPerSecond.toFixed(2),
|
|
278
|
-
uptime: `${stats.uptimeSeconds.toFixed(0)}s`,
|
|
279
|
-
});
|
|
280
|
-
// Warn if approaching limits
|
|
281
|
-
if (stats.memoryUtilization > 80) {
|
|
282
|
-
console.warn('[ResourceMonitor] WARNING: Memory usage above 80%');
|
|
283
|
-
}
|
|
284
|
-
if (stats.avgQueryTimeMs > SECURITY_LIMITS.QUERY_TIMEOUT_MS * 0.5) {
|
|
285
|
-
console.warn('[ResourceMonitor] WARNING: Average query time approaching timeout');
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
//# sourceMappingURL=limits.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/security/limits.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AgentDB v2 Path Security Utilities
|
|
3
|
-
*
|
|
4
|
-
* Prevents path traversal attacks and ensures safe file operations:
|
|
5
|
-
* - Path validation and canonicalization
|
|
6
|
-
* - Symlink detection and handling
|
|
7
|
-
* - Safe file read/write operations
|
|
8
|
-
* - Temporary file cleanup
|
|
9
|
-
*/
|
|
10
|
-
import * as fs from 'fs';
|
|
11
|
-
/**
|
|
12
|
-
* Validate and sanitize file path
|
|
13
|
-
* Prevents path traversal attacks
|
|
14
|
-
*/
|
|
15
|
-
export declare function validatePath(filePath: string, baseDir: string): string;
|
|
16
|
-
/**
|
|
17
|
-
* Check if path is a symbolic link
|
|
18
|
-
*/
|
|
19
|
-
export declare function isSymbolicLink(filePath: string): Promise<boolean>;
|
|
20
|
-
/**
|
|
21
|
-
* Secure file write operation
|
|
22
|
-
* Prevents writing to symbolic links and validates paths
|
|
23
|
-
*/
|
|
24
|
-
export declare function secureWrite(filePath: string, data: Buffer | string, baseDir: string, options?: {
|
|
25
|
-
overwrite?: boolean;
|
|
26
|
-
encoding?: BufferEncoding;
|
|
27
|
-
}): Promise<void>;
|
|
28
|
-
/**
|
|
29
|
-
* Secure file read operation
|
|
30
|
-
* Validates paths and prevents symlink attacks
|
|
31
|
-
*/
|
|
32
|
-
export declare function secureRead(filePath: string, baseDir: string, options?: {
|
|
33
|
-
encoding?: BufferEncoding;
|
|
34
|
-
followSymlinks?: boolean;
|
|
35
|
-
}): Promise<Buffer | string>;
|
|
36
|
-
/**
|
|
37
|
-
* Secure directory listing
|
|
38
|
-
* Prevents path traversal and filters out sensitive files
|
|
39
|
-
*/
|
|
40
|
-
export declare function secureListDir(dirPath: string, baseDir: string, options?: {
|
|
41
|
-
recursive?: boolean;
|
|
42
|
-
includeDotFiles?: boolean;
|
|
43
|
-
}): Promise<string[]>;
|
|
44
|
-
/**
|
|
45
|
-
* Secure file deletion
|
|
46
|
-
* Validates paths and prevents symlink attacks
|
|
47
|
-
*/
|
|
48
|
-
export declare function secureDelete(filePath: string, baseDir: string, options?: {
|
|
49
|
-
force?: boolean;
|
|
50
|
-
}): Promise<void>;
|
|
51
|
-
/**
|
|
52
|
-
* Temporary file manager with automatic cleanup
|
|
53
|
-
*/
|
|
54
|
-
export declare class TempFileManager {
|
|
55
|
-
private tempFiles;
|
|
56
|
-
private tempDir;
|
|
57
|
-
private cleanupScheduled;
|
|
58
|
-
constructor(baseDir: string);
|
|
59
|
-
/**
|
|
60
|
-
* Initialize temp directory
|
|
61
|
-
*/
|
|
62
|
-
init(): Promise<void>;
|
|
63
|
-
/**
|
|
64
|
-
* Create a temporary file
|
|
65
|
-
*/
|
|
66
|
-
createTempFile(prefix?: string): Promise<string>;
|
|
67
|
-
/**
|
|
68
|
-
* Write to temporary file
|
|
69
|
-
*/
|
|
70
|
-
writeTempFile(data: Buffer | string, prefix?: string): Promise<string>;
|
|
71
|
-
/**
|
|
72
|
-
* Delete a specific temp file
|
|
73
|
-
*/
|
|
74
|
-
deleteTempFile(tempPath: string): Promise<void>;
|
|
75
|
-
/**
|
|
76
|
-
* Clean up all temporary files
|
|
77
|
-
*/
|
|
78
|
-
cleanup(): Promise<void>;
|
|
79
|
-
/**
|
|
80
|
-
* Synchronous cleanup for process exit
|
|
81
|
-
*/
|
|
82
|
-
private cleanupSync;
|
|
83
|
-
/**
|
|
84
|
-
* Get list of managed temp files
|
|
85
|
-
*/
|
|
86
|
-
getTempFiles(): string[];
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Ensure directory exists with safe permissions
|
|
90
|
-
*/
|
|
91
|
-
export declare function ensureDir(dirPath: string, baseDir: string): Promise<string>;
|
|
92
|
-
/**
|
|
93
|
-
* Get safe file stats without following symlinks
|
|
94
|
-
*/
|
|
95
|
-
export declare function safeStats(filePath: string, baseDir: string): Promise<fs.Stats>;
|
|
96
|
-
/**
|
|
97
|
-
* Check if path exists within base directory
|
|
98
|
-
*/
|
|
99
|
-
export declare function pathExists(filePath: string, baseDir: string): Promise<boolean>;
|
|
100
|
-
//# sourceMappingURL=path-security.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"path-security.d.ts","sourceRoot":"","sources":["../../src/security/path-security.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAGzB;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAuCtE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAWvE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;CAAE,GAC3D,OAAO,CAAC,IAAI,CAAC,CAoDf;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,cAAc,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAChE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CA2B1B;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3D,OAAO,CAAC,MAAM,EAAE,CAAC,CA0CnB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAkB;gBAE9B,OAAO,EAAE,MAAM;IAI3B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B;;OAEG;IACG,cAAc,CAAC,MAAM,GAAE,MAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAUjE;;OAEG;IACG,aAAa,CACjB,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,MAAM,GAAE,MAAkB,GACzB,OAAO,CAAC,MAAM,CAAC;IAMlB;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;CAGzB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CASjB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAGnB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAQlB"}
|