agentic-flow 2.0.2 → 2.0.4
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/.claude/agents/test-neural.md +14 -0
- package/.claude/settings.json +9 -133
- package/README.md +622 -1862
- package/dist/.tsbuildinfo +1 -1
- package/dist/billing/mcp/tools.js +0 -1
- package/dist/billing/mcp/tools.js.map +1 -1
- package/dist/cli/commands/hooks.d.ts.map +1 -1
- package/dist/cli/commands/hooks.js +4 -79
- package/dist/cli/commands/hooks.js.map +1 -1
- package/dist/cli-proxy.js +1 -89
- package/dist/cli-proxy.js.map +1 -1
- package/dist/core/agentdb-fast.js +3 -3
- package/dist/core/agentdb-fast.js.map +1 -1
- package/dist/core/agentdb-wrapper-enhanced.d.ts.map +1 -1
- package/dist/core/agentdb-wrapper-enhanced.js +4 -20
- package/dist/core/agentdb-wrapper-enhanced.js.map +1 -1
- package/dist/core/agentdb-wrapper.d.ts +2 -3
- package/dist/core/agentdb-wrapper.d.ts.map +1 -1
- package/dist/core/agentdb-wrapper.js +1 -15
- package/dist/core/agentdb-wrapper.js.map +1 -1
- package/dist/core/attention-native.d.ts +0 -4
- package/dist/core/attention-native.d.ts.map +1 -1
- package/dist/core/attention-native.js +2 -14
- package/dist/core/attention-native.js.map +1 -1
- package/dist/federation/SecurityManager.d.ts +2 -11
- package/dist/federation/SecurityManager.d.ts.map +1 -1
- package/dist/federation/SecurityManager.js +17 -50
- package/dist/federation/SecurityManager.js.map +1 -1
- package/dist/federation/integrations/supabase-adapter-debug.js +3 -3
- package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -1
- package/dist/hooks/swarm-learning-optimizer.js +5 -5
- package/dist/hooks/swarm-learning-optimizer.js.map +1 -1
- package/dist/intelligence/IntelligenceStore.d.ts +26 -35
- package/dist/intelligence/IntelligenceStore.d.ts.map +1 -1
- package/dist/intelligence/IntelligenceStore.js +123 -308
- package/dist/intelligence/IntelligenceStore.js.map +1 -1
- package/dist/intelligence/RuVectorIntelligence.d.ts +1 -26
- package/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -1
- package/dist/intelligence/RuVectorIntelligence.js +10 -49
- package/dist/intelligence/RuVectorIntelligence.js.map +1 -1
- package/dist/intelligence/agent-booster-enhanced.d.ts +0 -1
- package/dist/intelligence/agent-booster-enhanced.d.ts.map +1 -1
- package/dist/intelligence/agent-booster-enhanced.js +3 -24
- package/dist/intelligence/agent-booster-enhanced.js.map +1 -1
- package/dist/intelligence/index.d.ts +3 -29
- package/dist/intelligence/index.d.ts.map +1 -1
- package/dist/intelligence/index.js +3 -13
- package/dist/intelligence/index.js.map +1 -1
- package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
- package/dist/mcp/claudeFlowSdkServer.js +3 -9
- package/dist/mcp/claudeFlowSdkServer.js.map +1 -1
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +5 -5
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +1 -1
- package/dist/mcp/fastmcp/tools/swarm/init.d.ts.map +1 -1
- package/dist/mcp/fastmcp/tools/swarm/init.js +7 -36
- package/dist/mcp/fastmcp/tools/swarm/init.js.map +1 -1
- package/dist/mcp/fastmcp/tools/swarm/spawn.d.ts.map +1 -1
- package/dist/mcp/fastmcp/tools/swarm/spawn.js +8 -47
- package/dist/mcp/fastmcp/tools/swarm/spawn.js.map +1 -1
- package/dist/mcp/tools/agent-booster-tools.d.ts +1 -1
- package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
- package/dist/mcp/tools/agent-booster-tools.js +4 -10
- package/dist/mcp/tools/agent-booster-tools.js.map +1 -1
- package/dist/mcp/tools/sona-tools.d.ts.map +1 -1
- package/dist/mcp/tools/sona-tools.js +0 -6
- package/dist/mcp/tools/sona-tools.js.map +1 -1
- package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
- package/dist/optimizations/agent-booster-migration.js +2 -5
- package/dist/optimizations/agent-booster-migration.js.map +1 -1
- package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
- package/dist/proxy/anthropic-to-requesty.js.map +1 -1
- package/dist/proxy/quic-proxy.d.ts +1 -0
- package/dist/proxy/quic-proxy.d.ts.map +1 -1
- package/dist/proxy/quic-proxy.js +2 -2
- package/dist/proxy/quic-proxy.js.map +1 -1
- package/dist/reasoningbank/AdvancedMemory.js +1 -1
- package/dist/reasoningbank/AdvancedMemory.js.map +1 -1
- package/dist/reasoningbank/HybridBackend.d.ts.map +1 -1
- package/dist/reasoningbank/HybridBackend.js +5 -2
- package/dist/reasoningbank/HybridBackend.js.map +1 -1
- package/dist/reasoningbank/backend-selector.d.ts +1 -11
- package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
- package/dist/reasoningbank/backend-selector.js +5 -45
- package/dist/reasoningbank/backend-selector.js.map +1 -1
- package/dist/reasoningbank/core/consolidate.d.ts.map +1 -1
- package/dist/reasoningbank/core/consolidate.js +45 -113
- package/dist/reasoningbank/core/consolidate.js.map +1 -1
- package/dist/reasoningbank/index-new.d.ts +6 -1
- package/dist/reasoningbank/index-new.d.ts.map +1 -1
- package/dist/reasoningbank/index-new.js +6 -1
- package/dist/reasoningbank/index-new.js.map +1 -1
- package/dist/reasoningbank/index.d.ts +6 -2
- package/dist/reasoningbank/index.d.ts.map +1 -1
- package/dist/reasoningbank/index.js +6 -2
- package/dist/reasoningbank/index.js.map +1 -1
- package/dist/reasoningbank/utils/embeddings.d.ts +0 -1
- package/dist/reasoningbank/utils/embeddings.d.ts.map +1 -1
- package/dist/reasoningbank/utils/embeddings.js +26 -53
- package/dist/reasoningbank/utils/embeddings.js.map +1 -1
- package/dist/router/index.d.ts +17 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +19 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/providers/onnx-local-optimized.d.ts +0 -2
- package/dist/router/providers/onnx-local-optimized.d.ts.map +1 -1
- package/dist/router/providers/onnx-local-optimized.js +0 -10
- package/dist/router/providers/onnx-local-optimized.js.map +1 -1
- package/dist/router/providers/onnx-local.d.ts +0 -1
- package/dist/router/providers/onnx-local.d.ts.map +1 -1
- package/dist/router/providers/onnx-local.js +5 -22
- package/dist/router/providers/onnx-local.js.map +1 -1
- package/dist/services/embedding-service.js.map +1 -1
- package/dist/services/sona-agent-training.d.ts +0 -1
- package/dist/services/sona-agent-training.d.ts.map +1 -1
- package/dist/services/sona-agent-training.js.map +1 -1
- package/dist/services/sona-agentdb-integration.d.ts.map +1 -1
- package/dist/services/sona-agentdb-integration.js +6 -9
- package/dist/services/sona-agentdb-integration.js.map +1 -1
- package/dist/services/sona-service.d.ts.map +1 -1
- package/dist/services/sona-service.js +5 -6
- package/dist/services/sona-service.js.map +1 -1
- package/dist/utils/cli.d.ts +1 -1
- package/dist/utils/cli.d.ts.map +1 -1
- package/dist/utils/cli.js +0 -21
- package/dist/utils/cli.js.map +1 -1
- package/package.json +7 -19
- package/scripts/postinstall.js +4 -45
- package/wasm/reasoningbank/reasoningbank_wasm_bg.js +2 -2
- package/wasm/reasoningbank/reasoningbank_wasm_bg.wasm +0 -0
- package/.claude/agents/.claude-flow/metrics/agent-metrics.json +0 -1
- package/.claude/agents/.claude-flow/metrics/performance.json +0 -87
- package/.claude/agents/.claude-flow/metrics/task-metrics.json +0 -10
- package/.claude/skills/.claude-flow/metrics/agent-metrics.json +0 -1
- package/.claude/skills/.claude-flow/metrics/performance.json +0 -87
- package/.claude/skills/.claude-flow/metrics/task-metrics.json +0 -10
- package/.claude/skills/agentic-flow-quickstart/skill.md +0 -69
- package/.claude/skills/hooks-automation/skill.md +0 -155
- package/.claude/skills/memory-patterns/skill.md +0 -110
- package/.claude/skills/skill-builder/.claude-flow/metrics/agent-metrics.json +0 -1
- package/.claude/skills/skill-builder/.claude-flow/metrics/performance.json +0 -87
- package/.claude/skills/skill-builder/.claude-flow/metrics/task-metrics.json +0 -10
- package/.claude/skills/sparc-methodology/skill.md +0 -137
- package/.claude/skills/swarm-coordination/skill.md +0 -94
- package/.claude/skills/worker-benchmarks/skill.md +0 -135
- package/.claude/skills/worker-integration/skill.md +0 -154
- package/.claude/statusline.mjs +0 -109
- package/.claude/statusline.sh +0 -71
- package/dist/agentdb/benchmarks/comprehensive-benchmark.js +0 -664
- package/dist/agentdb/benchmarks/frontier-benchmark.js +0 -419
- package/dist/agentdb/benchmarks/reflexion-benchmark.js +0 -370
- package/dist/agentdb/cli/agentdb-cli.js +0 -717
- package/dist/agentdb/controllers/CausalMemoryGraph.js +0 -322
- package/dist/agentdb/controllers/CausalRecall.js +0 -281
- package/dist/agentdb/controllers/EmbeddingService.d.ts +0 -37
- package/dist/agentdb/controllers/EmbeddingService.d.ts.map +0 -1
- package/dist/agentdb/controllers/EmbeddingService.js +0 -119
- package/dist/agentdb/controllers/EmbeddingService.js.map +0 -1
- package/dist/agentdb/controllers/ExplainableRecall.js +0 -387
- package/dist/agentdb/controllers/NightlyLearner.js +0 -382
- package/dist/agentdb/controllers/ReflexionMemory.js +0 -239
- package/dist/agentdb/controllers/SkillLibrary.js +0 -276
- package/dist/agentdb/controllers/frontier-index.js +0 -9
- package/dist/agentdb/controllers/index.js +0 -8
- package/dist/agentdb/optimizations/BatchOperations.js +0 -198
- package/dist/agentdb/optimizations/QueryOptimizer.js +0 -225
- package/dist/agentdb/optimizations/index.js +0 -7
- package/dist/agentdb/tests/frontier-features.test.js +0 -665
- package/dist/benchmarks/embeddings-benchmark.d.ts +0 -38
- package/dist/benchmarks/embeddings-benchmark.d.ts.map +0 -1
- package/dist/benchmarks/embeddings-benchmark.js +0 -282
- package/dist/benchmarks/embeddings-benchmark.js.map +0 -1
- package/dist/cli/commands/embeddings.d.ts +0 -12
- package/dist/cli/commands/embeddings.d.ts.map +0 -1
- package/dist/cli/commands/embeddings.js +0 -386
- package/dist/cli/commands/embeddings.js.map +0 -1
- package/dist/cli/commands/init.d.ts +0 -8
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js +0 -514
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/workers.d.ts +0 -9
- package/dist/cli/commands/workers.d.ts.map +0 -1
- package/dist/cli/commands/workers.js +0 -991
- package/dist/cli/commands/workers.js.map +0 -1
- package/dist/cli/skills-manager.js +0 -1297
- package/dist/cli/update-message.js +0 -175
- package/dist/embeddings/index.d.ts +0 -17
- package/dist/embeddings/index.d.ts.map +0 -1
- package/dist/embeddings/index.js +0 -17
- package/dist/embeddings/index.js.map +0 -1
- package/dist/embeddings/neural-substrate.d.ts +0 -206
- package/dist/embeddings/neural-substrate.d.ts.map +0 -1
- package/dist/embeddings/neural-substrate.js +0 -629
- package/dist/embeddings/neural-substrate.js.map +0 -1
- package/dist/embeddings/optimized-embedder.d.ts +0 -103
- package/dist/embeddings/optimized-embedder.d.ts.map +0 -1
- package/dist/embeddings/optimized-embedder.js +0 -730
- package/dist/embeddings/optimized-embedder.js.map +0 -1
- package/dist/examples/embedding-geometry.d.ts +0 -105
- package/dist/examples/embedding-geometry.d.ts.map +0 -1
- package/dist/examples/embedding-geometry.js +0 -528
- package/dist/examples/embedding-geometry.js.map +0 -1
- package/dist/memory/SharedMemoryPool.d.ts +0 -129
- package/dist/memory/SharedMemoryPool.d.ts.map +0 -1
- package/dist/memory/SharedMemoryPool.js +0 -243
- package/dist/memory/SharedMemoryPool.js.map +0 -1
- package/dist/memory/index.d.ts +0 -8
- package/dist/memory/index.d.ts.map +0 -1
- package/dist/memory/index.js +0 -7
- package/dist/memory/index.js.map +0 -1
- package/dist/proxy/http3-proxy-old.js +0 -331
- package/dist/proxy/proxy/anthropic-to-gemini.js +0 -439
- package/dist/proxy/utils/logger.js +0 -59
- package/dist/reasoningbank/agentdb-adapter.js +0 -125
- package/dist/reasoningbank/core/database.js +0 -250
- package/dist/reasoningbank/core/memory-engine.js +0 -335
- package/dist/swarm/ipfs-swarm.d.ts +0 -265
- package/dist/swarm/ipfs-swarm.d.ts.map +0 -1
- package/dist/swarm/ipfs-swarm.js +0 -508
- package/dist/swarm/ipfs-swarm.js.map +0 -1
- package/dist/swarm/p2p-free-swarm.d.ts +0 -344
- package/dist/swarm/p2p-free-swarm.d.ts.map +0 -1
- package/dist/swarm/p2p-free-swarm.js +0 -603
- package/dist/swarm/p2p-free-swarm.js.map +0 -1
- package/dist/swarm/real-p2p-swarm.d.ts +0 -183
- package/dist/swarm/real-p2p-swarm.d.ts.map +0 -1
- package/dist/swarm/real-p2p-swarm.js +0 -469
- package/dist/swarm/real-p2p-swarm.js.map +0 -1
- package/dist/utils/adaptive-pool-sizing.js +0 -414
- package/dist/utils/agentdbCommands.js +0 -175
- package/dist/utils/circular-rate-limiter.js +0 -391
- package/dist/utils/dynamic-compression.js +0 -298
- package/dist/utils/http2-multiplexing.js +0 -319
- package/dist/utils/index.d.ts +0 -6
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -6
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/lazy-auth.js +0 -311
- package/dist/utils/model-cache.d.ts +0 -61
- package/dist/utils/model-cache.d.ts.map +0 -1
- package/dist/utils/model-cache.js +0 -176
- package/dist/utils/model-cache.js.map +0 -1
- package/dist/utils/server-push.js +0 -251
- package/dist/utils/suppress-warnings.d.ts +0 -19
- package/dist/utils/suppress-warnings.d.ts.map +0 -1
- package/dist/utils/suppress-warnings.js +0 -59
- package/dist/utils/suppress-warnings.js.map +0 -1
- package/dist/utils/zero-copy-buffer.js +0 -286
- package/dist/workers/consolidated-phases.d.ts +0 -40
- package/dist/workers/consolidated-phases.d.ts.map +0 -1
- package/dist/workers/consolidated-phases.js +0 -497
- package/dist/workers/consolidated-phases.js.map +0 -1
- package/dist/workers/custom-worker-config.d.ts +0 -133
- package/dist/workers/custom-worker-config.d.ts.map +0 -1
- package/dist/workers/custom-worker-config.js +0 -215
- package/dist/workers/custom-worker-config.js.map +0 -1
- package/dist/workers/custom-worker-factory.d.ts +0 -89
- package/dist/workers/custom-worker-factory.d.ts.map +0 -1
- package/dist/workers/custom-worker-factory.js +0 -404
- package/dist/workers/custom-worker-factory.js.map +0 -1
- package/dist/workers/dispatch-service.d.ts +0 -123
- package/dist/workers/dispatch-service.d.ts.map +0 -1
- package/dist/workers/dispatch-service.js +0 -1024
- package/dist/workers/dispatch-service.js.map +0 -1
- package/dist/workers/hooks-integration.d.ts +0 -79
- package/dist/workers/hooks-integration.d.ts.map +0 -1
- package/dist/workers/hooks-integration.js +0 -286
- package/dist/workers/hooks-integration.js.map +0 -1
- package/dist/workers/index.d.ts +0 -42
- package/dist/workers/index.d.ts.map +0 -1
- package/dist/workers/index.js +0 -52
- package/dist/workers/index.js.map +0 -1
- package/dist/workers/mcp-tools.d.ts +0 -56
- package/dist/workers/mcp-tools.d.ts.map +0 -1
- package/dist/workers/mcp-tools.js +0 -359
- package/dist/workers/mcp-tools.js.map +0 -1
- package/dist/workers/phase-executors.d.ts +0 -22
- package/dist/workers/phase-executors.d.ts.map +0 -1
- package/dist/workers/phase-executors.js +0 -445
- package/dist/workers/phase-executors.js.map +0 -1
- package/dist/workers/resource-governor.d.ts +0 -75
- package/dist/workers/resource-governor.d.ts.map +0 -1
- package/dist/workers/resource-governor.js +0 -187
- package/dist/workers/resource-governor.js.map +0 -1
- package/dist/workers/ruvector-integration.d.ts +0 -163
- package/dist/workers/ruvector-integration.d.ts.map +0 -1
- package/dist/workers/ruvector-integration.js +0 -543
- package/dist/workers/ruvector-integration.js.map +0 -1
- package/dist/workers/ruvector-native-integration.d.ts +0 -91
- package/dist/workers/ruvector-native-integration.d.ts.map +0 -1
- package/dist/workers/ruvector-native-integration.js +0 -254
- package/dist/workers/ruvector-native-integration.js.map +0 -1
- package/dist/workers/trigger-detector.d.ts +0 -68
- package/dist/workers/trigger-detector.d.ts.map +0 -1
- package/dist/workers/trigger-detector.js +0 -281
- package/dist/workers/trigger-detector.js.map +0 -1
- package/dist/workers/types.d.ts +0 -145
- package/dist/workers/types.d.ts.map +0 -1
- package/dist/workers/types.js +0 -6
- package/dist/workers/types.js.map +0 -1
- package/dist/workers/worker-agent-integration.d.ts +0 -140
- package/dist/workers/worker-agent-integration.d.ts.map +0 -1
- package/dist/workers/worker-agent-integration.js +0 -471
- package/dist/workers/worker-agent-integration.js.map +0 -1
- package/dist/workers/worker-benchmarks.d.ts +0 -88
- package/dist/workers/worker-benchmarks.d.ts.map +0 -1
- package/dist/workers/worker-benchmarks.js +0 -452
- package/dist/workers/worker-benchmarks.js.map +0 -1
- package/dist/workers/worker-registry.d.ts +0 -85
- package/dist/workers/worker-registry.d.ts.map +0 -1
- package/dist/workers/worker-registry.js +0 -547
- package/dist/workers/worker-registry.js.map +0 -1
- package/docs/.claude-flow/metrics/agent-metrics.json +0 -1
- package/docs/.claude-flow/metrics/performance.json +0 -87
- package/docs/.claude-flow/metrics/task-metrics.json +0 -10
- package/docs/embeddings/EMBEDDING_GEOMETRY.md +0 -935
- /package/.claude/agents/analysis/{analyze-code-quality.md → code-review/analyze-code-quality.md} +0 -0
- /package/.claude/agents/architecture/{arch-system-design.md → system-design/arch-system-design.md} +0 -0
- /package/.claude/agents/data/{data-ml-model.md → ml/data-ml-model.md} +0 -0
- /package/.claude/agents/development/{dev-backend-api.md → backend/dev-backend-api.md} +0 -0
- /package/.claude/agents/devops/{ops-cicd-github.md → ci-cd/ops-cicd-github.md} +0 -0
- /package/.claude/agents/documentation/{docs-api-openapi.md → api-docs/docs-api-openapi.md} +0 -0
- /package/.claude/agents/specialized/{spec-mobile-react-native.md → mobile/spec-mobile-react-native.md} +0 -0
- /package/.claude/agents/testing/{tdd-london-swarm.md → unit/tdd-london-swarm.md} +0 -0
- /package/.claude/agents/testing/{production-validator.md → validation/production-validator.md} +0 -0
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared Memory Pool for AgentDB
|
|
3
|
-
*
|
|
4
|
-
* Provides a singleton memory pool that multiple agents can share:
|
|
5
|
-
* - Single SQLite database connection (reduces overhead)
|
|
6
|
-
* - Single embedding model instance (saves ~150MB per agent)
|
|
7
|
-
* - Shared query cache (LRU with TTL)
|
|
8
|
-
* - Shared embedding cache (deduplication)
|
|
9
|
-
*
|
|
10
|
-
* Memory savings: ~300-500MB for 4+ concurrent agents
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```typescript
|
|
14
|
-
* import { SharedMemoryPool } from 'agentic-flow/memory';
|
|
15
|
-
*
|
|
16
|
-
* const pool = SharedMemoryPool.getInstance();
|
|
17
|
-
* const db = pool.getDatabase();
|
|
18
|
-
* const embedder = pool.getEmbedder();
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
import { Database as DatabaseInstance } from 'better-sqlite3';
|
|
22
|
-
declare class EmbeddingService {
|
|
23
|
-
private model;
|
|
24
|
-
private dimension;
|
|
25
|
-
constructor(config: {
|
|
26
|
-
model?: string;
|
|
27
|
-
dimension?: number;
|
|
28
|
-
cacheSize?: number;
|
|
29
|
-
provider?: string;
|
|
30
|
-
});
|
|
31
|
-
embed(text: string): Promise<Float32Array>;
|
|
32
|
-
initialize(): Promise<void>;
|
|
33
|
-
}
|
|
34
|
-
export interface SharedMemoryPoolConfig {
|
|
35
|
-
dbPath?: string;
|
|
36
|
-
cacheSize?: number;
|
|
37
|
-
embeddingCacheSize?: number;
|
|
38
|
-
embeddingModel?: string;
|
|
39
|
-
embeddingDimension?: number;
|
|
40
|
-
}
|
|
41
|
-
export declare class SharedMemoryPool {
|
|
42
|
-
private static instance;
|
|
43
|
-
private db;
|
|
44
|
-
private embedder;
|
|
45
|
-
private queryCache;
|
|
46
|
-
private embeddingCache;
|
|
47
|
-
private config;
|
|
48
|
-
private initialized;
|
|
49
|
-
private constructor();
|
|
50
|
-
/**
|
|
51
|
-
* Get singleton instance of SharedMemoryPool
|
|
52
|
-
*/
|
|
53
|
-
static getInstance(config?: SharedMemoryPoolConfig): SharedMemoryPool;
|
|
54
|
-
/**
|
|
55
|
-
* Reset singleton instance (for testing)
|
|
56
|
-
*/
|
|
57
|
-
static resetInstance(): void;
|
|
58
|
-
/**
|
|
59
|
-
* Ensure embedding service is initialized
|
|
60
|
-
*/
|
|
61
|
-
ensureInitialized(): Promise<void>;
|
|
62
|
-
/**
|
|
63
|
-
* Get shared database connection
|
|
64
|
-
*/
|
|
65
|
-
getDatabase(): DatabaseInstance;
|
|
66
|
-
/**
|
|
67
|
-
* Get shared embedding service
|
|
68
|
-
*/
|
|
69
|
-
getEmbedder(): EmbeddingService;
|
|
70
|
-
/**
|
|
71
|
-
* Get or compute embedding with caching
|
|
72
|
-
*
|
|
73
|
-
* @param text Text to embed
|
|
74
|
-
* @returns Cached or newly computed embedding
|
|
75
|
-
*/
|
|
76
|
-
getCachedEmbedding(text: string): Promise<Float32Array>;
|
|
77
|
-
/**
|
|
78
|
-
* Cache query result with TTL
|
|
79
|
-
*
|
|
80
|
-
* @param key Cache key
|
|
81
|
-
* @param result Result to cache
|
|
82
|
-
* @param ttl Time-to-live in milliseconds (default: 60s)
|
|
83
|
-
*/
|
|
84
|
-
cacheQuery(key: string, result: any, ttl?: number): void;
|
|
85
|
-
/**
|
|
86
|
-
* Get cached query result
|
|
87
|
-
*
|
|
88
|
-
* @param key Cache key
|
|
89
|
-
* @returns Cached result or null if expired/missing
|
|
90
|
-
*/
|
|
91
|
-
getCachedQuery(key: string): any | null;
|
|
92
|
-
/**
|
|
93
|
-
* Clear all caches
|
|
94
|
-
*/
|
|
95
|
-
clearCaches(): void;
|
|
96
|
-
/**
|
|
97
|
-
* Get memory pool statistics
|
|
98
|
-
*/
|
|
99
|
-
getStats(): {
|
|
100
|
-
database: {
|
|
101
|
-
path: string;
|
|
102
|
-
size: any;
|
|
103
|
-
tables: any;
|
|
104
|
-
walMode: unknown;
|
|
105
|
-
};
|
|
106
|
-
cache: {
|
|
107
|
-
queryCacheSize: number;
|
|
108
|
-
queryCacheMax: number;
|
|
109
|
-
embeddingCacheSize: number;
|
|
110
|
-
embeddingCacheMax: number;
|
|
111
|
-
};
|
|
112
|
-
embedder: {
|
|
113
|
-
model: string;
|
|
114
|
-
dimension: number;
|
|
115
|
-
initialized: boolean;
|
|
116
|
-
};
|
|
117
|
-
memory: {
|
|
118
|
-
heapUsed: number;
|
|
119
|
-
external: number;
|
|
120
|
-
};
|
|
121
|
-
};
|
|
122
|
-
/**
|
|
123
|
-
* Close database connection and cleanup
|
|
124
|
-
*/
|
|
125
|
-
close(): void;
|
|
126
|
-
}
|
|
127
|
-
export declare const getSharedMemoryPool: typeof SharedMemoryPool.getInstance;
|
|
128
|
-
export {};
|
|
129
|
-
//# sourceMappingURL=SharedMemoryPool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SharedMemoryPool.d.ts","sourceRoot":"","sources":["../../src/memory/SharedMemoryPool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAiB,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAMxE,cAAM,gBAAgB;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAK3F,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAqB1C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAClC;AAOD,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO;IAqCP;;OAEG;WACW,WAAW,CAAC,MAAM,CAAC,EAAE,sBAAsB,GAAG,gBAAgB;IAO5E;;OAEG;WACW,aAAa,IAAI,IAAI;IAOnC;;OAEG;IACU,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/C;;OAEG;IACI,WAAW,IAAI,gBAAgB;IAItC;;OAEG;IACI,WAAW,IAAI,gBAAgB;IAItC;;;;;OAKG;IACU,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAmBpE;;;;;;OAMG;IACI,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAE,MAAc,GAAG,IAAI;IAetE;;;;;OAKG;IACI,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAY9C;;OAEG;IACI,WAAW,IAAI,IAAI;IAK1B;;OAEG;IACI,QAAQ;;;;;;;;;;;;;;;;;;;;;;;IAgCf;;OAEG;IACI,KAAK,IAAI,IAAI;CAKrB;AAGD,eAAO,MAAM,mBAAmB,qCAA+B,CAAC"}
|
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared Memory Pool for AgentDB
|
|
3
|
-
*
|
|
4
|
-
* Provides a singleton memory pool that multiple agents can share:
|
|
5
|
-
* - Single SQLite database connection (reduces overhead)
|
|
6
|
-
* - Single embedding model instance (saves ~150MB per agent)
|
|
7
|
-
* - Shared query cache (LRU with TTL)
|
|
8
|
-
* - Shared embedding cache (deduplication)
|
|
9
|
-
*
|
|
10
|
-
* Memory savings: ~300-500MB for 4+ concurrent agents
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```typescript
|
|
14
|
-
* import { SharedMemoryPool } from 'agentic-flow/memory';
|
|
15
|
-
*
|
|
16
|
-
* const pool = SharedMemoryPool.getInstance();
|
|
17
|
-
* const db = pool.getDatabase();
|
|
18
|
-
* const embedder = pool.getEmbedder();
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
// Use better-sqlite3 for local SQLite
|
|
22
|
-
import Database from 'better-sqlite3';
|
|
23
|
-
import * as path from 'path';
|
|
24
|
-
import * as fs from 'fs';
|
|
25
|
-
// Stub implementation for EmbeddingService
|
|
26
|
-
// TODO: Replace with actual import when agentdb v3.x is released
|
|
27
|
-
class EmbeddingService {
|
|
28
|
-
model;
|
|
29
|
-
dimension;
|
|
30
|
-
constructor(config) {
|
|
31
|
-
this.model = config.model || 'mock';
|
|
32
|
-
this.dimension = config.dimension || 384;
|
|
33
|
-
}
|
|
34
|
-
async embed(text) {
|
|
35
|
-
// Simple hash-based mock embedding
|
|
36
|
-
const embedding = new Float32Array(this.dimension);
|
|
37
|
-
let hash = 0;
|
|
38
|
-
for (let i = 0; i < text.length; i++) {
|
|
39
|
-
hash = (hash << 5) - hash + text.charCodeAt(i);
|
|
40
|
-
hash = hash & hash;
|
|
41
|
-
}
|
|
42
|
-
for (let i = 0; i < this.dimension; i++) {
|
|
43
|
-
const seed = hash + i * 2654435761;
|
|
44
|
-
const x = Math.sin(seed) * 10000;
|
|
45
|
-
embedding[i] = x - Math.floor(x);
|
|
46
|
-
}
|
|
47
|
-
// Normalize
|
|
48
|
-
const norm = Math.sqrt(embedding.reduce((sum, v) => sum + v * v, 0));
|
|
49
|
-
for (let i = 0; i < this.dimension; i++) {
|
|
50
|
-
embedding[i] /= norm;
|
|
51
|
-
}
|
|
52
|
-
return embedding;
|
|
53
|
-
}
|
|
54
|
-
async initialize() { }
|
|
55
|
-
}
|
|
56
|
-
export class SharedMemoryPool {
|
|
57
|
-
static instance;
|
|
58
|
-
db;
|
|
59
|
-
embedder;
|
|
60
|
-
queryCache;
|
|
61
|
-
embeddingCache;
|
|
62
|
-
config;
|
|
63
|
-
initialized = false;
|
|
64
|
-
constructor(config = {}) {
|
|
65
|
-
this.config = {
|
|
66
|
-
dbPath: config.dbPath || './agentdb.db',
|
|
67
|
-
cacheSize: config.cacheSize || 1000,
|
|
68
|
-
embeddingCacheSize: config.embeddingCacheSize || 10000,
|
|
69
|
-
embeddingModel: config.embeddingModel || 'Xenova/all-MiniLM-L6-v2',
|
|
70
|
-
embeddingDimension: config.embeddingDimension || 384
|
|
71
|
-
};
|
|
72
|
-
// Initialize SQLite with optimized settings
|
|
73
|
-
const dbDir = path.dirname(this.config.dbPath);
|
|
74
|
-
if (!fs.existsSync(dbDir)) {
|
|
75
|
-
fs.mkdirSync(dbDir, { recursive: true });
|
|
76
|
-
}
|
|
77
|
-
this.db = new Database(this.config.dbPath);
|
|
78
|
-
// Optimize SQLite for performance
|
|
79
|
-
this.db.pragma('journal_mode = WAL'); // Write-Ahead Logging
|
|
80
|
-
this.db.pragma('synchronous = NORMAL'); // Balanced safety/performance
|
|
81
|
-
this.db.pragma('cache_size = -65536'); // 64MB cache
|
|
82
|
-
this.db.pragma('mmap_size = 268435456'); // 256MB memory-mapped I/O
|
|
83
|
-
this.db.pragma('page_size = 8192'); // 8KB pages
|
|
84
|
-
this.db.pragma('temp_store = MEMORY'); // Keep temp tables in memory
|
|
85
|
-
// Initialize embedding service (will be lazy-loaded)
|
|
86
|
-
this.embedder = new EmbeddingService({
|
|
87
|
-
model: this.config.embeddingModel,
|
|
88
|
-
dimension: this.config.embeddingDimension,
|
|
89
|
-
provider: 'transformers'
|
|
90
|
-
});
|
|
91
|
-
// Initialize caches
|
|
92
|
-
this.queryCache = new Map();
|
|
93
|
-
this.embeddingCache = new Map();
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Get singleton instance of SharedMemoryPool
|
|
97
|
-
*/
|
|
98
|
-
static getInstance(config) {
|
|
99
|
-
if (!SharedMemoryPool.instance) {
|
|
100
|
-
SharedMemoryPool.instance = new SharedMemoryPool(config);
|
|
101
|
-
}
|
|
102
|
-
return SharedMemoryPool.instance;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Reset singleton instance (for testing)
|
|
106
|
-
*/
|
|
107
|
-
static resetInstance() {
|
|
108
|
-
if (SharedMemoryPool.instance) {
|
|
109
|
-
SharedMemoryPool.instance.close();
|
|
110
|
-
SharedMemoryPool.instance = null;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Ensure embedding service is initialized
|
|
115
|
-
*/
|
|
116
|
-
async ensureInitialized() {
|
|
117
|
-
if (!this.initialized) {
|
|
118
|
-
await this.embedder.initialize();
|
|
119
|
-
this.initialized = true;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Get shared database connection
|
|
124
|
-
*/
|
|
125
|
-
getDatabase() {
|
|
126
|
-
return this.db;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Get shared embedding service
|
|
130
|
-
*/
|
|
131
|
-
getEmbedder() {
|
|
132
|
-
return this.embedder;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Get or compute embedding with caching
|
|
136
|
-
*
|
|
137
|
-
* @param text Text to embed
|
|
138
|
-
* @returns Cached or newly computed embedding
|
|
139
|
-
*/
|
|
140
|
-
async getCachedEmbedding(text) {
|
|
141
|
-
const cached = this.embeddingCache.get(text);
|
|
142
|
-
if (cached)
|
|
143
|
-
return cached;
|
|
144
|
-
await this.ensureInitialized();
|
|
145
|
-
const embedding = await this.embedder.embed(text);
|
|
146
|
-
// LRU eviction if cache too large
|
|
147
|
-
if (this.embeddingCache.size >= this.config.embeddingCacheSize) {
|
|
148
|
-
const firstKey = this.embeddingCache.keys().next().value;
|
|
149
|
-
if (firstKey) {
|
|
150
|
-
this.embeddingCache.delete(firstKey);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
this.embeddingCache.set(text, embedding);
|
|
154
|
-
return embedding;
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Cache query result with TTL
|
|
158
|
-
*
|
|
159
|
-
* @param key Cache key
|
|
160
|
-
* @param result Result to cache
|
|
161
|
-
* @param ttl Time-to-live in milliseconds (default: 60s)
|
|
162
|
-
*/
|
|
163
|
-
cacheQuery(key, result, ttl = 60000) {
|
|
164
|
-
// LRU eviction if cache too large
|
|
165
|
-
if (this.queryCache.size >= this.config.cacheSize) {
|
|
166
|
-
const firstKey = this.queryCache.keys().next().value;
|
|
167
|
-
if (firstKey) {
|
|
168
|
-
this.queryCache.delete(firstKey);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
this.queryCache.set(key, {
|
|
172
|
-
result,
|
|
173
|
-
expires: Date.now() + ttl
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Get cached query result
|
|
178
|
-
*
|
|
179
|
-
* @param key Cache key
|
|
180
|
-
* @returns Cached result or null if expired/missing
|
|
181
|
-
*/
|
|
182
|
-
getCachedQuery(key) {
|
|
183
|
-
const cached = this.queryCache.get(key);
|
|
184
|
-
if (!cached)
|
|
185
|
-
return null;
|
|
186
|
-
if (Date.now() > cached.expires) {
|
|
187
|
-
this.queryCache.delete(key);
|
|
188
|
-
return null;
|
|
189
|
-
}
|
|
190
|
-
return cached.result;
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Clear all caches
|
|
194
|
-
*/
|
|
195
|
-
clearCaches() {
|
|
196
|
-
this.queryCache.clear();
|
|
197
|
-
this.embeddingCache.clear();
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Get memory pool statistics
|
|
201
|
-
*/
|
|
202
|
-
getStats() {
|
|
203
|
-
const dbStats = this.db.prepare(`
|
|
204
|
-
SELECT
|
|
205
|
-
(SELECT COUNT(*) FROM sqlite_master WHERE type='table') as tables,
|
|
206
|
-
(SELECT page_count * page_size FROM pragma_page_count(), pragma_page_size()) as dbSize
|
|
207
|
-
`).get();
|
|
208
|
-
return {
|
|
209
|
-
database: {
|
|
210
|
-
path: this.config.dbPath,
|
|
211
|
-
size: dbStats.dbSize,
|
|
212
|
-
tables: dbStats.tables,
|
|
213
|
-
walMode: this.db.pragma('journal_mode', { simple: true }),
|
|
214
|
-
},
|
|
215
|
-
cache: {
|
|
216
|
-
queryCacheSize: this.queryCache.size,
|
|
217
|
-
queryCacheMax: this.config.cacheSize,
|
|
218
|
-
embeddingCacheSize: this.embeddingCache.size,
|
|
219
|
-
embeddingCacheMax: this.config.embeddingCacheSize,
|
|
220
|
-
},
|
|
221
|
-
embedder: {
|
|
222
|
-
model: this.config.embeddingModel,
|
|
223
|
-
dimension: this.config.embeddingDimension,
|
|
224
|
-
initialized: this.initialized,
|
|
225
|
-
},
|
|
226
|
-
memory: {
|
|
227
|
-
heapUsed: Math.round(process.memoryUsage().heapUsed / 1024 / 1024),
|
|
228
|
-
external: Math.round(process.memoryUsage().external / 1024 / 1024),
|
|
229
|
-
}
|
|
230
|
-
};
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Close database connection and cleanup
|
|
234
|
-
*/
|
|
235
|
-
close() {
|
|
236
|
-
this.clearCaches();
|
|
237
|
-
this.db.close();
|
|
238
|
-
this.initialized = false;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
// Export singleton getter for convenience
|
|
242
|
-
export const getSharedMemoryPool = SharedMemoryPool.getInstance;
|
|
243
|
-
//# sourceMappingURL=SharedMemoryPool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SharedMemoryPool.js","sourceRoot":"","sources":["../../src/memory/SharedMemoryPool.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared Memory Pool for AgentDB\n *\n * Provides a singleton memory pool that multiple agents can share:\n * - Single SQLite database connection (reduces overhead)\n * - Single embedding model instance (saves ~150MB per agent)\n * - Shared query cache (LRU with TTL)\n * - Shared embedding cache (deduplication)\n *\n * Memory savings: ~300-500MB for 4+ concurrent agents\n *\n * @example\n * ```typescript\n * import { SharedMemoryPool } from 'agentic-flow/memory';\n *\n * const pool = SharedMemoryPool.getInstance();\n * const db = pool.getDatabase();\n * const embedder = pool.getEmbedder();\n * ```\n */\n\n// Use better-sqlite3 for local SQLite\nimport Database, { Database as DatabaseInstance } from 'better-sqlite3';\nimport * as path from 'path';\nimport * as fs from 'fs';\n\n// Stub implementation for EmbeddingService\n// TODO: Replace with actual import when agentdb v3.x is released\nclass EmbeddingService {\n private model: string;\n private dimension: number;\n\n constructor(config: { model?: string; dimension?: number; cacheSize?: number; provider?: string }) {\n this.model = config.model || 'mock';\n this.dimension = config.dimension || 384;\n }\n\n async embed(text: string): Promise<Float32Array> {\n // Simple hash-based mock embedding\n const embedding = new Float32Array(this.dimension);\n let hash = 0;\n for (let i = 0; i < text.length; i++) {\n hash = (hash << 5) - hash + text.charCodeAt(i);\n hash = hash & hash;\n }\n for (let i = 0; i < this.dimension; i++) {\n const seed = hash + i * 2654435761;\n const x = Math.sin(seed) * 10000;\n embedding[i] = x - Math.floor(x);\n }\n // Normalize\n const norm = Math.sqrt(embedding.reduce((sum, v) => sum + v * v, 0));\n for (let i = 0; i < this.dimension; i++) {\n embedding[i] /= norm;\n }\n return embedding;\n }\n\n async initialize(): Promise<void> {}\n}\n\ninterface CachedQuery {\n result: any;\n expires: number;\n}\n\nexport interface SharedMemoryPoolConfig {\n dbPath?: string;\n cacheSize?: number;\n embeddingCacheSize?: number;\n embeddingModel?: string;\n embeddingDimension?: number;\n}\n\nexport class SharedMemoryPool {\n private static instance: SharedMemoryPool;\n private db: DatabaseInstance;\n private embedder: EmbeddingService;\n private queryCache: Map<string, CachedQuery>;\n private embeddingCache: Map<string, Float32Array>;\n private config: Required<SharedMemoryPoolConfig>;\n private initialized: boolean = false;\n\n private constructor(config: SharedMemoryPoolConfig = {}) {\n this.config = {\n dbPath: config.dbPath || './agentdb.db',\n cacheSize: config.cacheSize || 1000,\n embeddingCacheSize: config.embeddingCacheSize || 10000,\n embeddingModel: config.embeddingModel || 'Xenova/all-MiniLM-L6-v2',\n embeddingDimension: config.embeddingDimension || 384\n };\n\n // Initialize SQLite with optimized settings\n const dbDir = path.dirname(this.config.dbPath);\n if (!fs.existsSync(dbDir)) {\n fs.mkdirSync(dbDir, { recursive: true });\n }\n\n this.db = new Database(this.config.dbPath);\n\n // Optimize SQLite for performance\n this.db.pragma('journal_mode = WAL'); // Write-Ahead Logging\n this.db.pragma('synchronous = NORMAL'); // Balanced safety/performance\n this.db.pragma('cache_size = -65536'); // 64MB cache\n this.db.pragma('mmap_size = 268435456'); // 256MB memory-mapped I/O\n this.db.pragma('page_size = 8192'); // 8KB pages\n this.db.pragma('temp_store = MEMORY'); // Keep temp tables in memory\n\n // Initialize embedding service (will be lazy-loaded)\n this.embedder = new EmbeddingService({\n model: this.config.embeddingModel,\n dimension: this.config.embeddingDimension,\n provider: 'transformers'\n });\n\n // Initialize caches\n this.queryCache = new Map();\n this.embeddingCache = new Map();\n }\n\n /**\n * Get singleton instance of SharedMemoryPool\n */\n public static getInstance(config?: SharedMemoryPoolConfig): SharedMemoryPool {\n if (!SharedMemoryPool.instance) {\n SharedMemoryPool.instance = new SharedMemoryPool(config);\n }\n return SharedMemoryPool.instance;\n }\n\n /**\n * Reset singleton instance (for testing)\n */\n public static resetInstance(): void {\n if (SharedMemoryPool.instance) {\n SharedMemoryPool.instance.close();\n SharedMemoryPool.instance = null as any;\n }\n }\n\n /**\n * Ensure embedding service is initialized\n */\n public async ensureInitialized(): Promise<void> {\n if (!this.initialized) {\n await this.embedder.initialize();\n this.initialized = true;\n }\n }\n\n /**\n * Get shared database connection\n */\n public getDatabase(): DatabaseInstance {\n return this.db;\n }\n\n /**\n * Get shared embedding service\n */\n public getEmbedder(): EmbeddingService {\n return this.embedder;\n }\n\n /**\n * Get or compute embedding with caching\n *\n * @param text Text to embed\n * @returns Cached or newly computed embedding\n */\n public async getCachedEmbedding(text: string): Promise<Float32Array> {\n const cached = this.embeddingCache.get(text);\n if (cached) return cached;\n\n await this.ensureInitialized();\n const embedding = await this.embedder.embed(text);\n\n // LRU eviction if cache too large\n if (this.embeddingCache.size >= this.config.embeddingCacheSize) {\n const firstKey = this.embeddingCache.keys().next().value;\n if (firstKey) {\n this.embeddingCache.delete(firstKey);\n }\n }\n\n this.embeddingCache.set(text, embedding);\n return embedding;\n }\n\n /**\n * Cache query result with TTL\n *\n * @param key Cache key\n * @param result Result to cache\n * @param ttl Time-to-live in milliseconds (default: 60s)\n */\n public cacheQuery(key: string, result: any, ttl: number = 60000): void {\n // LRU eviction if cache too large\n if (this.queryCache.size >= this.config.cacheSize) {\n const firstKey = this.queryCache.keys().next().value;\n if (firstKey) {\n this.queryCache.delete(firstKey);\n }\n }\n\n this.queryCache.set(key, {\n result,\n expires: Date.now() + ttl\n });\n }\n\n /**\n * Get cached query result\n *\n * @param key Cache key\n * @returns Cached result or null if expired/missing\n */\n public getCachedQuery(key: string): any | null {\n const cached = this.queryCache.get(key);\n if (!cached) return null;\n\n if (Date.now() > cached.expires) {\n this.queryCache.delete(key);\n return null;\n }\n\n return cached.result;\n }\n\n /**\n * Clear all caches\n */\n public clearCaches(): void {\n this.queryCache.clear();\n this.embeddingCache.clear();\n }\n\n /**\n * Get memory pool statistics\n */\n public getStats() {\n const dbStats = this.db.prepare(`\n SELECT\n (SELECT COUNT(*) FROM sqlite_master WHERE type='table') as tables,\n (SELECT page_count * page_size FROM pragma_page_count(), pragma_page_size()) as dbSize\n `).get() as any;\n\n return {\n database: {\n path: this.config.dbPath,\n size: dbStats.dbSize,\n tables: dbStats.tables,\n walMode: this.db.pragma('journal_mode', { simple: true }),\n },\n cache: {\n queryCacheSize: this.queryCache.size,\n queryCacheMax: this.config.cacheSize,\n embeddingCacheSize: this.embeddingCache.size,\n embeddingCacheMax: this.config.embeddingCacheSize,\n },\n embedder: {\n model: this.config.embeddingModel,\n dimension: this.config.embeddingDimension,\n initialized: this.initialized,\n },\n memory: {\n heapUsed: Math.round(process.memoryUsage().heapUsed / 1024 / 1024),\n external: Math.round(process.memoryUsage().external / 1024 / 1024),\n }\n };\n }\n\n /**\n * Close database connection and cleanup\n */\n public close(): void {\n this.clearCaches();\n this.db.close();\n this.initialized = false;\n }\n}\n\n// Export singleton getter for convenience\nexport const getSharedMemoryPool = SharedMemoryPool.getInstance;\n"]}
|
package/dist/memory/index.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Memory Management Exports
|
|
3
|
-
*
|
|
4
|
-
* Provides shared memory pool and optimization utilities
|
|
5
|
-
*/
|
|
6
|
-
export { SharedMemoryPool, getSharedMemoryPool } from './SharedMemoryPool.js';
|
|
7
|
-
export type { SharedMemoryPoolConfig } from './SharedMemoryPool.js';
|
|
8
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/memory/index.js
DELETED
package/dist/memory/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["/**\n * Memory Management Exports\n *\n * Provides shared memory pool and optimization utilities\n */\n\nexport { SharedMemoryPool, getSharedMemoryPool } from './SharedMemoryPool.js';\nexport type { SharedMemoryPoolConfig } from './SharedMemoryPool.js';\n"]}
|