agentic-flow 2.0.7 ā 2.0.8
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/settings.json +133 -9
- package/.claude/skills/agentic-flow-quickstart/skill.md +69 -0
- package/.claude/skills/hooks-automation/skill.md +155 -0
- package/.claude/skills/memory-patterns/skill.md +110 -0
- package/.claude/skills/sparc-methodology/skill.md +137 -0
- package/.claude/skills/swarm-coordination/skill.md +94 -0
- package/.claude/skills/worker-benchmarks/skill.md +135 -0
- package/.claude/skills/worker-integration/skill.md +154 -0
- package/.claude/statusline.mjs +109 -0
- package/.claude/statusline.sh +71 -0
- package/README.md +1797 -624
- package/dist/.tsbuildinfo +1 -1
- package/dist/agentdb/index.d.ts +2 -0
- package/dist/agentdb/index.d.ts.map +1 -1
- package/dist/agentdb/index.js +5 -0
- package/dist/agentdb/index.js.map +1 -1
- package/dist/agentdb/prerequisites.d.ts +25 -0
- package/dist/agentdb/prerequisites.d.ts.map +1 -0
- package/dist/agentdb/prerequisites.js +180 -0
- package/dist/agentdb/prerequisites.js.map +1 -0
- package/dist/benchmarks/embeddings-benchmark.d.ts +38 -0
- package/dist/benchmarks/embeddings-benchmark.d.ts.map +1 -0
- package/dist/benchmarks/embeddings-benchmark.js +282 -0
- package/dist/benchmarks/embeddings-benchmark.js.map +1 -0
- package/dist/billing/mcp/tools.js +1 -0
- package/dist/billing/mcp/tools.js.map +1 -1
- package/dist/cli/commands/embeddings.d.ts +12 -0
- package/dist/cli/commands/embeddings.d.ts.map +1 -0
- package/dist/cli/commands/embeddings.js +386 -0
- package/dist/cli/commands/embeddings.js.map +1 -0
- package/dist/cli/commands/hooks.d.ts.map +1 -1
- package/dist/cli/commands/hooks.js +79 -4
- package/dist/cli/commands/hooks.js.map +1 -1
- package/dist/cli/commands/init.d.ts +8 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +514 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/workers.d.ts +9 -0
- package/dist/cli/commands/workers.d.ts.map +1 -0
- package/dist/cli/commands/workers.js +991 -0
- package/dist/cli/commands/workers.js.map +1 -0
- package/dist/cli/config-wizard.d.ts.map +1 -1
- package/dist/cli/config-wizard.js +47 -25
- package/dist/cli/config-wizard.js.map +1 -1
- package/dist/cli-proxy.js +89 -1
- 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 +37 -11
- package/dist/core/agentdb-wrapper-enhanced.js.map +1 -1
- package/dist/core/agentdb-wrapper.d.ts +3 -2
- package/dist/core/agentdb-wrapper.d.ts.map +1 -1
- package/dist/core/agentdb-wrapper.js +15 -1
- package/dist/core/agentdb-wrapper.js.map +1 -1
- package/dist/core/attention-native.d.ts +4 -0
- package/dist/core/attention-native.d.ts.map +1 -1
- package/dist/core/attention-native.js +14 -2
- package/dist/core/attention-native.js.map +1 -1
- package/dist/core/gnn-wrapper.d.ts.map +1 -1
- package/dist/core/gnn-wrapper.js +14 -0
- package/dist/core/gnn-wrapper.js.map +1 -1
- package/dist/embeddings/index.d.ts +17 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +17 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/neural-substrate.d.ts +206 -0
- package/dist/embeddings/neural-substrate.d.ts.map +1 -0
- package/dist/embeddings/neural-substrate.js +629 -0
- package/dist/embeddings/neural-substrate.js.map +1 -0
- package/dist/embeddings/optimized-embedder.d.ts +103 -0
- package/dist/embeddings/optimized-embedder.d.ts.map +1 -0
- package/dist/embeddings/optimized-embedder.js +730 -0
- package/dist/embeddings/optimized-embedder.js.map +1 -0
- package/dist/examples/embedding-geometry.d.ts +105 -0
- package/dist/examples/embedding-geometry.d.ts.map +1 -0
- package/dist/examples/embedding-geometry.js +528 -0
- package/dist/examples/embedding-geometry.js.map +1 -0
- package/dist/federation/SecurityManager.d.ts +11 -2
- package/dist/federation/SecurityManager.d.ts.map +1 -1
- package/dist/federation/SecurityManager.js +50 -17
- 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/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +89 -51
- package/dist/index.js.map +1 -1
- package/dist/intelligence/IntelligenceStore.d.ts +35 -26
- package/dist/intelligence/IntelligenceStore.d.ts.map +1 -1
- package/dist/intelligence/IntelligenceStore.js +308 -123
- package/dist/intelligence/IntelligenceStore.js.map +1 -1
- package/dist/intelligence/RuVectorIntelligence.d.ts +26 -1
- package/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -1
- package/dist/intelligence/RuVectorIntelligence.js +49 -10
- package/dist/intelligence/RuVectorIntelligence.js.map +1 -1
- package/dist/intelligence/agent-booster-enhanced.d.ts +1 -0
- package/dist/intelligence/agent-booster-enhanced.d.ts.map +1 -1
- package/dist/intelligence/agent-booster-enhanced.js +24 -3
- package/dist/intelligence/agent-booster-enhanced.js.map +1 -1
- package/dist/intelligence/index.d.ts +29 -3
- package/dist/intelligence/index.d.ts.map +1 -1
- package/dist/intelligence/index.js +13 -3
- package/dist/intelligence/index.js.map +1 -1
- package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
- package/dist/mcp/claudeFlowSdkServer.js +162 -115
- 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 +36 -7
- 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 +47 -8
- package/dist/mcp/fastmcp/tools/swarm/spawn.js.map +1 -1
- package/dist/mcp/tools/agent-booster-tools.d.ts +15 -1
- package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
- package/dist/mcp/tools/agent-booster-tools.js +79 -63
- 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 +6 -0
- package/dist/mcp/tools/sona-tools.js.map +1 -1
- package/dist/memory/SharedMemoryPool.d.ts +103 -0
- package/dist/memory/SharedMemoryPool.d.ts.map +1 -0
- package/dist/memory/SharedMemoryPool.js +263 -0
- package/dist/memory/SharedMemoryPool.js.map +1 -0
- package/dist/optimizations/agent-booster-migration.d.ts +2 -1
- package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
- package/dist/optimizations/agent-booster-migration.js +69 -45
- package/dist/optimizations/agent-booster-migration.js.map +1 -1
- package/dist/orchestration/index.d.ts +11 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +10 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/memory-plane-types.d.ts +23 -0
- package/dist/orchestration/memory-plane-types.d.ts.map +1 -0
- package/dist/orchestration/memory-plane-types.js +5 -0
- package/dist/orchestration/memory-plane-types.js.map +1 -0
- package/dist/orchestration/memory-plane.d.ts +41 -0
- package/dist/orchestration/memory-plane.d.ts.map +1 -0
- package/dist/orchestration/memory-plane.js +84 -0
- package/dist/orchestration/memory-plane.js.map +1 -0
- package/dist/orchestration/orchestration-client.d.ts +104 -0
- package/dist/orchestration/orchestration-client.d.ts.map +1 -0
- package/dist/orchestration/orchestration-client.js +94 -0
- package/dist/orchestration/orchestration-client.js.map +1 -0
- package/dist/orchestration/orchestration-runtime.d.ts +26 -0
- package/dist/orchestration/orchestration-runtime.d.ts.map +1 -0
- package/dist/orchestration/orchestration-runtime.js +78 -0
- package/dist/orchestration/orchestration-runtime.js.map +1 -0
- package/dist/orchestration/orchestration-types.d.ts +124 -0
- package/dist/orchestration/orchestration-types.d.ts.map +1 -0
- package/dist/orchestration/orchestration-types.js +7 -0
- package/dist/orchestration/orchestration-types.js.map +1 -0
- 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 +0 -1
- 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 +2 -5
- package/dist/reasoningbank/HybridBackend.js.map +1 -1
- package/dist/reasoningbank/backend-selector.d.ts +10 -0
- package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
- package/dist/reasoningbank/backend-selector.js +45 -5
- 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 +113 -45
- package/dist/reasoningbank/core/consolidate.js.map +1 -1
- package/dist/reasoningbank/index-new.d.ts +1 -6
- package/dist/reasoningbank/index-new.d.ts.map +1 -1
- package/dist/reasoningbank/index-new.js +1 -6
- package/dist/reasoningbank/index-new.js.map +1 -1
- package/dist/reasoningbank/index.d.ts +6 -0
- package/dist/reasoningbank/index.d.ts.map +1 -1
- package/dist/reasoningbank/index.js +6 -13
- package/dist/reasoningbank/index.js.map +1 -1
- package/dist/reasoningbank/utils/embeddings.d.ts +1 -0
- package/dist/reasoningbank/utils/embeddings.d.ts.map +1 -1
- package/dist/reasoningbank/utils/embeddings.js +53 -26
- package/dist/reasoningbank/utils/embeddings.js.map +1 -1
- package/dist/router/index.d.ts +2 -1
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +1 -0
- package/dist/router/index.js.map +1 -1
- package/dist/router/providers/ollama.d.ts +20 -0
- package/dist/router/providers/ollama.d.ts.map +1 -0
- package/dist/router/providers/ollama.js +242 -0
- package/dist/router/providers/ollama.js.map +1 -0
- package/dist/router/providers/onnx-local-optimized.d.ts +2 -0
- package/dist/router/providers/onnx-local-optimized.d.ts.map +1 -1
- package/dist/router/providers/onnx-local-optimized.js +10 -0
- package/dist/router/providers/onnx-local-optimized.js.map +1 -1
- package/dist/router/providers/onnx-local.d.ts +1 -0
- package/dist/router/providers/onnx-local.d.ts.map +1 -1
- package/dist/router/providers/onnx-local.js +22 -5
- package/dist/router/providers/onnx-local.js.map +1 -1
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +39 -23
- package/dist/router/router.js.map +1 -1
- package/dist/sdk/index.d.ts +2 -1
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/index.js +3 -1
- package/dist/sdk/index.js.map +1 -1
- package/dist/services/embedding-service.js.map +1 -1
- package/dist/services/sona-agent-training.d.ts +1 -0
- 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 +9 -6
- 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 +6 -5
- 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 +21 -0
- package/dist/utils/cli.js.map +1 -1
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/model-cache.d.ts +61 -0
- package/dist/utils/model-cache.d.ts.map +1 -0
- package/dist/utils/model-cache.js +176 -0
- package/dist/utils/model-cache.js.map +1 -0
- package/dist/utils/suppress-warnings.d.ts +19 -0
- package/dist/utils/suppress-warnings.d.ts.map +1 -0
- package/dist/utils/suppress-warnings.js +59 -0
- package/dist/utils/suppress-warnings.js.map +1 -0
- package/dist/workers/consolidated-phases.d.ts +40 -0
- package/dist/workers/consolidated-phases.d.ts.map +1 -0
- package/dist/workers/consolidated-phases.js +497 -0
- package/dist/workers/consolidated-phases.js.map +1 -0
- package/dist/workers/custom-worker-config.d.ts +133 -0
- package/dist/workers/custom-worker-config.d.ts.map +1 -0
- package/dist/workers/custom-worker-config.js +215 -0
- package/dist/workers/custom-worker-config.js.map +1 -0
- package/dist/workers/custom-worker-factory.d.ts +89 -0
- package/dist/workers/custom-worker-factory.d.ts.map +1 -0
- package/dist/workers/custom-worker-factory.js +404 -0
- package/dist/workers/custom-worker-factory.js.map +1 -0
- package/dist/workers/dispatch-service.d.ts +123 -0
- package/dist/workers/dispatch-service.d.ts.map +1 -0
- package/dist/workers/dispatch-service.js +1024 -0
- package/dist/workers/dispatch-service.js.map +1 -0
- package/dist/workers/hooks-integration.d.ts +79 -0
- package/dist/workers/hooks-integration.d.ts.map +1 -0
- package/dist/workers/hooks-integration.js +286 -0
- package/dist/workers/hooks-integration.js.map +1 -0
- package/dist/workers/index.d.ts +42 -0
- package/dist/workers/index.d.ts.map +1 -0
- package/dist/workers/index.js +52 -0
- package/dist/workers/index.js.map +1 -0
- package/dist/workers/mcp-tools.d.ts +56 -0
- package/dist/workers/mcp-tools.d.ts.map +1 -0
- package/dist/workers/mcp-tools.js +359 -0
- package/dist/workers/mcp-tools.js.map +1 -0
- package/dist/workers/phase-executors.d.ts +22 -0
- package/dist/workers/phase-executors.d.ts.map +1 -0
- package/dist/workers/phase-executors.js +445 -0
- package/dist/workers/phase-executors.js.map +1 -0
- package/dist/workers/resource-governor.d.ts +75 -0
- package/dist/workers/resource-governor.d.ts.map +1 -0
- package/dist/workers/resource-governor.js +187 -0
- package/dist/workers/resource-governor.js.map +1 -0
- package/dist/workers/ruvector-integration.d.ts +163 -0
- package/dist/workers/ruvector-integration.d.ts.map +1 -0
- package/dist/workers/ruvector-integration.js +543 -0
- package/dist/workers/ruvector-integration.js.map +1 -0
- package/dist/workers/ruvector-native-integration.d.ts +91 -0
- package/dist/workers/ruvector-native-integration.d.ts.map +1 -0
- package/dist/workers/ruvector-native-integration.js +254 -0
- package/dist/workers/ruvector-native-integration.js.map +1 -0
- package/dist/workers/trigger-detector.d.ts +68 -0
- package/dist/workers/trigger-detector.d.ts.map +1 -0
- package/dist/workers/trigger-detector.js +281 -0
- package/dist/workers/trigger-detector.js.map +1 -0
- package/dist/workers/types.d.ts +145 -0
- package/dist/workers/types.d.ts.map +1 -0
- package/dist/workers/types.js +6 -0
- package/dist/workers/types.js.map +1 -0
- package/dist/workers/worker-agent-integration.d.ts +140 -0
- package/dist/workers/worker-agent-integration.d.ts.map +1 -0
- package/dist/workers/worker-agent-integration.js +471 -0
- package/dist/workers/worker-agent-integration.js.map +1 -0
- package/dist/workers/worker-benchmarks.d.ts +88 -0
- package/dist/workers/worker-benchmarks.d.ts.map +1 -0
- package/dist/workers/worker-benchmarks.js +452 -0
- package/dist/workers/worker-benchmarks.js.map +1 -0
- package/dist/workers/worker-registry.d.ts +85 -0
- package/dist/workers/worker-registry.d.ts.map +1 -0
- package/dist/workers/worker-registry.js +547 -0
- package/dist/workers/worker-registry.js.map +1 -0
- package/docs/embeddings/EMBEDDING_GEOMETRY.md +935 -0
- package/package.json +27 -9
- package/scripts/postinstall.js +45 -4
- package/wasm/reasoningbank/reasoningbank_wasm.js +1 -1
- package/wasm/reasoningbank/reasoningbank_wasm_bg.js +54 -54
- package/wasm/reasoningbank/reasoningbank_wasm_bg.wasm +0 -0
- package/wasm/reasoningbank/reasoningbank_wasm_bg.wasm.d.ts +4 -3
- package/.claude/agents/test-neural.md +0 -14
- /package/.claude/agents/analysis/{code-review/analyze-code-quality.md ā analyze-code-quality.md} +0 -0
- /package/.claude/agents/architecture/{system-design/arch-system-design.md ā arch-system-design.md} +0 -0
- /package/.claude/agents/data/{ml/data-ml-model.md ā data-ml-model.md} +0 -0
- /package/.claude/agents/development/{backend/dev-backend-api.md ā dev-backend-api.md} +0 -0
- /package/.claude/agents/devops/{ci-cd/ops-cicd-github.md ā ops-cicd-github.md} +0 -0
- /package/.claude/agents/documentation/{api-docs/docs-api-openapi.md ā docs-api-openapi.md} +0 -0
- /package/.claude/agents/specialized/{mobile/spec-mobile-react-native.md ā spec-mobile-react-native.md} +0 -0
- /package/.claude/agents/testing/{validation/production-validator.md ā production-validator.md} +0 -0
- /package/.claude/agents/testing/{unit/tdd-london-swarm.md ā tdd-london-swarm.md} +0 -0
package/dist/agentdb/index.d.ts
CHANGED
|
@@ -23,4 +23,6 @@ export { CausalMemoryGraph } from 'agentdb';
|
|
|
23
23
|
export { CausalRecall } from 'agentdb';
|
|
24
24
|
export { NightlyLearner } from 'agentdb';
|
|
25
25
|
export { ExplainableRecall } from 'agentdb';
|
|
26
|
+
export { controllerPrerequisites, noArgControllers, getControllerPrerequisite, filterBySafety } from './prerequisites.js';
|
|
27
|
+
export type { ControllerPrerequisite, ControllerRequirement, ControllerSafety } from './prerequisites.js';
|
|
26
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agentdb/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agentdb/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAM5C,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,oBAAoB,CAAC"}
|
package/dist/agentdb/index.js
CHANGED
|
@@ -24,6 +24,11 @@ export { CausalMemoryGraph } from 'agentdb';
|
|
|
24
24
|
export { CausalRecall } from 'agentdb';
|
|
25
25
|
export { NightlyLearner } from 'agentdb';
|
|
26
26
|
export { ExplainableRecall } from 'agentdb';
|
|
27
|
+
// Controller activation registry (issue #146 Gap 2). Exported as a no-op
|
|
28
|
+
// re-export so it works whether the installed agentdb publishes the registry
|
|
29
|
+
// natively or not ā the local `prerequisites.ts` shim below provides a
|
|
30
|
+
// subset for older agentdb versions.
|
|
31
|
+
export { controllerPrerequisites, noArgControllers, getControllerPrerequisite, filterBySafety } from './prerequisites.js';
|
|
27
32
|
// Note: These are custom types not exported from agentdb v1.3.9
|
|
28
33
|
// Users should import from agentdb directly if needed
|
|
29
34
|
// export type { LearningSystem } from 'agentdb/...';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agentdb/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,0FAA0F;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,gEAAgE;AAChE,sDAAsD;AACtD,qDAAqD;AACrD,oDAAoD;AAEpD,sDAAsD;AACtD,8EAA8E","sourcesContent":["/**\n * AgentDB Re-exports for Backwards Compatibility\n *\n * This module provides backwards-compatible exports for code that previously\n * used embedded AgentDB controllers. Now proxies to agentdb npm package.\n *\n * @deprecated Import directly from specific agentdb paths for better tree-shaking\n * @since v1.7.0 - Integrated agentdb as proper dependency\n *\n * Example migration:\n * ```typescript\n * // Old (still works)\n * import { ReflexionMemory } from 'agentic-flow/agentdb';\n *\n * // New (recommended)\n * import { ReflexionMemory } from 'agentdb/controllers/ReflexionMemory';\n * ```\n */\n\n// Import from agentdb package - using direct package imports for bundler moduleResolution\nexport { ReflexionMemory } from 'agentdb';\nexport { SkillLibrary } from 'agentdb';\nexport { EmbeddingService } from 'agentdb';\nexport { CausalMemoryGraph } from 'agentdb';\nexport { CausalRecall } from 'agentdb';\nexport { NightlyLearner } from 'agentdb';\nexport { ExplainableRecall } from 'agentdb';\n\n// Note: These are custom types not exported from agentdb v1.3.9\n// Users should import from agentdb directly if needed\n// export type { LearningSystem } from 'agentdb/...';\n// export type { ReasoningBank } from 'agentdb/...';\n\n// Note: Optimizations not available in agentdb v1.3.9\n// Users can implement custom optimizations or use AgentDB's built-in features\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agentdb/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,0FAA0F;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,yEAAyE;AACzE,6EAA6E;AAC7E,uEAAuE;AACvE,qCAAqC;AACrC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAO5B,gEAAgE;AAChE,sDAAsD;AACtD,qDAAqD;AACrD,oDAAoD;AAEpD,sDAAsD;AACtD,8EAA8E","sourcesContent":["/**\n * AgentDB Re-exports for Backwards Compatibility\n *\n * This module provides backwards-compatible exports for code that previously\n * used embedded AgentDB controllers. Now proxies to agentdb npm package.\n *\n * @deprecated Import directly from specific agentdb paths for better tree-shaking\n * @since v1.7.0 - Integrated agentdb as proper dependency\n *\n * Example migration:\n * ```typescript\n * // Old (still works)\n * import { ReflexionMemory } from 'agentic-flow/agentdb';\n *\n * // New (recommended)\n * import { ReflexionMemory } from 'agentdb/controllers/ReflexionMemory';\n * ```\n */\n\n// Import from agentdb package - using direct package imports for bundler moduleResolution\nexport { ReflexionMemory } from 'agentdb';\nexport { SkillLibrary } from 'agentdb';\nexport { EmbeddingService } from 'agentdb';\nexport { CausalMemoryGraph } from 'agentdb';\nexport { CausalRecall } from 'agentdb';\nexport { NightlyLearner } from 'agentdb';\nexport { ExplainableRecall } from 'agentdb';\n\n// Controller activation registry (issue #146 Gap 2). Exported as a no-op\n// re-export so it works whether the installed agentdb publishes the registry\n// natively or not ā the local `prerequisites.ts` shim below provides a\n// subset for older agentdb versions.\nexport {\n controllerPrerequisites,\n noArgControllers,\n getControllerPrerequisite,\n filterBySafety\n} from './prerequisites.js';\nexport type {\n ControllerPrerequisite,\n ControllerRequirement,\n ControllerSafety\n} from './prerequisites.js';\n\n// Note: These are custom types not exported from agentdb v1.3.9\n// Users should import from agentdb directly if needed\n// export type { LearningSystem } from 'agentdb/...';\n// export type { ReasoningBank } from 'agentdb/...';\n\n// Note: Optimizations not available in agentdb v1.3.9\n// Users can implement custom optimizations or use AgentDB's built-in features\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Controller Prerequisites ā local shim for `agentic-flow/agentdb`.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the registry that lives in the upstream `agentdb` package
|
|
5
|
+
* (`agentdb/dist/controllers/prerequisites.js`). Exposing it through the
|
|
6
|
+
* `agentic-flow/agentdb` re-export means consumers (e.g. ruflo) can rely on
|
|
7
|
+
* a single import surface regardless of which agentdb version is installed.
|
|
8
|
+
*
|
|
9
|
+
* Issue #146 Gap 2.
|
|
10
|
+
*/
|
|
11
|
+
export type ControllerRequirement = 'database' | 'embedder' | 'vectorBackend' | 'graphBackend' | 'learningBackend' | 'config' | 'wasm' | 'networkEndpoint';
|
|
12
|
+
export type ControllerSafety = 'pure' | 'opens-resource' | 'opens-network';
|
|
13
|
+
export interface ControllerPrerequisite {
|
|
14
|
+
name: string;
|
|
15
|
+
requirements: ControllerRequirement[];
|
|
16
|
+
optional: ControllerRequirement[];
|
|
17
|
+
arity: number;
|
|
18
|
+
safety: ControllerSafety;
|
|
19
|
+
description: string;
|
|
20
|
+
}
|
|
21
|
+
export declare const controllerPrerequisites: readonly ControllerPrerequisite[];
|
|
22
|
+
export declare const noArgControllers: readonly ControllerPrerequisite[];
|
|
23
|
+
export declare function getControllerPrerequisite(name: string): ControllerPrerequisite | null;
|
|
24
|
+
export declare function filterBySafety(safety: readonly ControllerSafety[]): readonly ControllerPrerequisite[];
|
|
25
|
+
//# sourceMappingURL=prerequisites.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prerequisites.d.ts","sourceRoot":"","sources":["../../src/agentdb/prerequisites.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,qBAAqB,GAC7B,UAAU,GACV,UAAU,GACV,eAAe,GACf,cAAc,GACd,iBAAiB,GACjB,QAAQ,GACR,MAAM,GACN,iBAAiB,CAAC;AAEtB,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAE3E,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,qBAAqB,EAAE,CAAC;IACtC,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,uBAAuB,EAAE,SAAS,sBAAsB,EAiKnE,CAAC;AAEH,eAAO,MAAM,gBAAgB,EAAE,SAAS,sBAAsB,EAE7D,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAErF;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAClC,SAAS,sBAAsB,EAAE,CAEnC"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Controller Prerequisites ā local shim for `agentic-flow/agentdb`.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the registry that lives in the upstream `agentdb` package
|
|
5
|
+
* (`agentdb/dist/controllers/prerequisites.js`). Exposing it through the
|
|
6
|
+
* `agentic-flow/agentdb` re-export means consumers (e.g. ruflo) can rely on
|
|
7
|
+
* a single import surface regardless of which agentdb version is installed.
|
|
8
|
+
*
|
|
9
|
+
* Issue #146 Gap 2.
|
|
10
|
+
*/
|
|
11
|
+
export const controllerPrerequisites = Object.freeze([
|
|
12
|
+
{
|
|
13
|
+
name: 'AttentionService',
|
|
14
|
+
requirements: ['config'],
|
|
15
|
+
optional: ['wasm'],
|
|
16
|
+
arity: 1,
|
|
17
|
+
safety: 'opens-resource',
|
|
18
|
+
description: 'Self / cross / multi-head attention over embeddings.'
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: 'CausalMemoryGraph',
|
|
22
|
+
requirements: ['database'],
|
|
23
|
+
optional: ['embedder', 'graphBackend', 'vectorBackend', 'config'],
|
|
24
|
+
arity: 5,
|
|
25
|
+
safety: 'opens-resource',
|
|
26
|
+
description: 'Causal edge graph over memories.'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'CausalRecall',
|
|
30
|
+
requirements: ['database', 'embedder'],
|
|
31
|
+
optional: ['vectorBackend', 'config'],
|
|
32
|
+
arity: 4,
|
|
33
|
+
safety: 'pure',
|
|
34
|
+
description: 'Causal-uplift reranker.'
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'ContextSynthesizer',
|
|
38
|
+
requirements: ['database'],
|
|
39
|
+
optional: ['embedder', 'config'],
|
|
40
|
+
arity: 3,
|
|
41
|
+
safety: 'pure',
|
|
42
|
+
description: 'Synthesises retrieved memories into context.'
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'EmbeddingService',
|
|
46
|
+
requirements: ['config'],
|
|
47
|
+
optional: [],
|
|
48
|
+
arity: 1,
|
|
49
|
+
safety: 'pure',
|
|
50
|
+
description: 'Text ā vector embedder.'
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'EnhancedEmbeddingService',
|
|
54
|
+
requirements: ['config'],
|
|
55
|
+
optional: [],
|
|
56
|
+
arity: 1,
|
|
57
|
+
safety: 'pure',
|
|
58
|
+
description: 'EmbeddingService with caching and provider fallback.'
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: 'ExplainableRecall',
|
|
62
|
+
requirements: ['database', 'embedder'],
|
|
63
|
+
optional: ['vectorBackend'],
|
|
64
|
+
arity: 3,
|
|
65
|
+
safety: 'pure',
|
|
66
|
+
description: 'Recall with feature attributions.'
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'HNSWIndex',
|
|
70
|
+
requirements: ['database'],
|
|
71
|
+
optional: ['config'],
|
|
72
|
+
arity: 2,
|
|
73
|
+
safety: 'opens-resource',
|
|
74
|
+
description: 'On-disk HNSW vector index.'
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: 'LearningSystem',
|
|
78
|
+
requirements: ['database', 'embedder'],
|
|
79
|
+
optional: ['vectorBackend', 'config'],
|
|
80
|
+
arity: 4,
|
|
81
|
+
safety: 'pure',
|
|
82
|
+
description: 'Online learning consolidator.'
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'MMRDiversityRanker',
|
|
86
|
+
requirements: [],
|
|
87
|
+
optional: ['config'],
|
|
88
|
+
arity: 1,
|
|
89
|
+
safety: 'pure',
|
|
90
|
+
description: 'MMR diversity reranker.'
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'MemoryController',
|
|
94
|
+
requirements: [],
|
|
95
|
+
optional: ['vectorBackend', 'config'],
|
|
96
|
+
arity: 2,
|
|
97
|
+
safety: 'pure',
|
|
98
|
+
description: 'High-level memory orchestration.'
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: 'MetadataFilter',
|
|
102
|
+
requirements: [],
|
|
103
|
+
optional: [],
|
|
104
|
+
arity: 0,
|
|
105
|
+
safety: 'pure',
|
|
106
|
+
description: 'Pure utility for metadata predicates.'
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: 'NightlyLearner',
|
|
110
|
+
requirements: ['database', 'embedder'],
|
|
111
|
+
optional: ['config'],
|
|
112
|
+
arity: 3,
|
|
113
|
+
safety: 'pure',
|
|
114
|
+
description: 'Background consolidation pipeline.'
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: 'QUICClient',
|
|
118
|
+
requirements: ['config', 'networkEndpoint'],
|
|
119
|
+
optional: [],
|
|
120
|
+
arity: 1,
|
|
121
|
+
safety: 'opens-network',
|
|
122
|
+
description: 'QUIC sync client.'
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: 'QUICServer',
|
|
126
|
+
requirements: ['config'],
|
|
127
|
+
optional: [],
|
|
128
|
+
arity: 1,
|
|
129
|
+
safety: 'opens-network',
|
|
130
|
+
description: 'QUIC sync server.'
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: 'ReasoningBank',
|
|
134
|
+
requirements: ['database', 'embedder'],
|
|
135
|
+
optional: ['vectorBackend', 'graphBackend', 'config'],
|
|
136
|
+
arity: 5,
|
|
137
|
+
safety: 'pure',
|
|
138
|
+
description: 'Reasoning memory facade.'
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: 'ReflexionMemory',
|
|
142
|
+
requirements: ['database', 'embedder'],
|
|
143
|
+
optional: ['vectorBackend', 'learningBackend', 'graphBackend'],
|
|
144
|
+
arity: 5,
|
|
145
|
+
safety: 'pure',
|
|
146
|
+
description: 'Episodic replay memory.'
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
name: 'SkillLibrary',
|
|
150
|
+
requirements: ['database', 'embedder'],
|
|
151
|
+
optional: ['vectorBackend', 'graphBackend', 'config'],
|
|
152
|
+
arity: 5,
|
|
153
|
+
safety: 'pure',
|
|
154
|
+
description: 'Reusable skill registry.'
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: 'SyncCoordinator',
|
|
158
|
+
requirements: ['config'],
|
|
159
|
+
optional: ['networkEndpoint'],
|
|
160
|
+
arity: 1,
|
|
161
|
+
safety: 'opens-network',
|
|
162
|
+
description: 'Multi-peer QUIC sync coordinator.'
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
name: 'WASMVectorSearch',
|
|
166
|
+
requirements: ['wasm'],
|
|
167
|
+
optional: ['config'],
|
|
168
|
+
arity: 1,
|
|
169
|
+
safety: 'opens-resource',
|
|
170
|
+
description: 'Pure-WASM vector search index.'
|
|
171
|
+
}
|
|
172
|
+
]);
|
|
173
|
+
export const noArgControllers = Object.freeze(controllerPrerequisites.filter(c => c.requirements.length === 0));
|
|
174
|
+
export function getControllerPrerequisite(name) {
|
|
175
|
+
return controllerPrerequisites.find(c => c.name === name) ?? null;
|
|
176
|
+
}
|
|
177
|
+
export function filterBySafety(safety) {
|
|
178
|
+
return controllerPrerequisites.filter(c => safety.includes(c.safety));
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=prerequisites.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prerequisites.js","sourceRoot":"","sources":["../../src/agentdb/prerequisites.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Controller Prerequisites ā local shim for `agentic-flow/agentdb`.\n *\n * Mirrors the registry that lives in the upstream `agentdb` package\n * (`agentdb/dist/controllers/prerequisites.js`). Exposing it through the\n * `agentic-flow/agentdb` re-export means consumers (e.g. ruflo) can rely on\n * a single import surface regardless of which agentdb version is installed.\n *\n * Issue #146 Gap 2.\n */\n\nexport type ControllerRequirement =\n | 'database'\n | 'embedder'\n | 'vectorBackend'\n | 'graphBackend'\n | 'learningBackend'\n | 'config'\n | 'wasm'\n | 'networkEndpoint';\n\nexport type ControllerSafety = 'pure' | 'opens-resource' | 'opens-network';\n\nexport interface ControllerPrerequisite {\n name: string;\n requirements: ControllerRequirement[];\n optional: ControllerRequirement[];\n arity: number;\n safety: ControllerSafety;\n description: string;\n}\n\nexport const controllerPrerequisites: readonly ControllerPrerequisite[] = Object.freeze([\n {\n name: 'AttentionService',\n requirements: ['config'],\n optional: ['wasm'],\n arity: 1,\n safety: 'opens-resource',\n description: 'Self / cross / multi-head attention over embeddings.'\n },\n {\n name: 'CausalMemoryGraph',\n requirements: ['database'],\n optional: ['embedder', 'graphBackend', 'vectorBackend', 'config'],\n arity: 5,\n safety: 'opens-resource',\n description: 'Causal edge graph over memories.'\n },\n {\n name: 'CausalRecall',\n requirements: ['database', 'embedder'],\n optional: ['vectorBackend', 'config'],\n arity: 4,\n safety: 'pure',\n description: 'Causal-uplift reranker.'\n },\n {\n name: 'ContextSynthesizer',\n requirements: ['database'],\n optional: ['embedder', 'config'],\n arity: 3,\n safety: 'pure',\n description: 'Synthesises retrieved memories into context.'\n },\n {\n name: 'EmbeddingService',\n requirements: ['config'],\n optional: [],\n arity: 1,\n safety: 'pure',\n description: 'Text ā vector embedder.'\n },\n {\n name: 'EnhancedEmbeddingService',\n requirements: ['config'],\n optional: [],\n arity: 1,\n safety: 'pure',\n description: 'EmbeddingService with caching and provider fallback.'\n },\n {\n name: 'ExplainableRecall',\n requirements: ['database', 'embedder'],\n optional: ['vectorBackend'],\n arity: 3,\n safety: 'pure',\n description: 'Recall with feature attributions.'\n },\n {\n name: 'HNSWIndex',\n requirements: ['database'],\n optional: ['config'],\n arity: 2,\n safety: 'opens-resource',\n description: 'On-disk HNSW vector index.'\n },\n {\n name: 'LearningSystem',\n requirements: ['database', 'embedder'],\n optional: ['vectorBackend', 'config'],\n arity: 4,\n safety: 'pure',\n description: 'Online learning consolidator.'\n },\n {\n name: 'MMRDiversityRanker',\n requirements: [],\n optional: ['config'],\n arity: 1,\n safety: 'pure',\n description: 'MMR diversity reranker.'\n },\n {\n name: 'MemoryController',\n requirements: [],\n optional: ['vectorBackend', 'config'],\n arity: 2,\n safety: 'pure',\n description: 'High-level memory orchestration.'\n },\n {\n name: 'MetadataFilter',\n requirements: [],\n optional: [],\n arity: 0,\n safety: 'pure',\n description: 'Pure utility for metadata predicates.'\n },\n {\n name: 'NightlyLearner',\n requirements: ['database', 'embedder'],\n optional: ['config'],\n arity: 3,\n safety: 'pure',\n description: 'Background consolidation pipeline.'\n },\n {\n name: 'QUICClient',\n requirements: ['config', 'networkEndpoint'],\n optional: [],\n arity: 1,\n safety: 'opens-network',\n description: 'QUIC sync client.'\n },\n {\n name: 'QUICServer',\n requirements: ['config'],\n optional: [],\n arity: 1,\n safety: 'opens-network',\n description: 'QUIC sync server.'\n },\n {\n name: 'ReasoningBank',\n requirements: ['database', 'embedder'],\n optional: ['vectorBackend', 'graphBackend', 'config'],\n arity: 5,\n safety: 'pure',\n description: 'Reasoning memory facade.'\n },\n {\n name: 'ReflexionMemory',\n requirements: ['database', 'embedder'],\n optional: ['vectorBackend', 'learningBackend', 'graphBackend'],\n arity: 5,\n safety: 'pure',\n description: 'Episodic replay memory.'\n },\n {\n name: 'SkillLibrary',\n requirements: ['database', 'embedder'],\n optional: ['vectorBackend', 'graphBackend', 'config'],\n arity: 5,\n safety: 'pure',\n description: 'Reusable skill registry.'\n },\n {\n name: 'SyncCoordinator',\n requirements: ['config'],\n optional: ['networkEndpoint'],\n arity: 1,\n safety: 'opens-network',\n description: 'Multi-peer QUIC sync coordinator.'\n },\n {\n name: 'WASMVectorSearch',\n requirements: ['wasm'],\n optional: ['config'],\n arity: 1,\n safety: 'opens-resource',\n description: 'Pure-WASM vector search index.'\n }\n]);\n\nexport const noArgControllers: readonly ControllerPrerequisite[] = Object.freeze(\n controllerPrerequisites.filter(c => c.requirements.length === 0)\n);\n\nexport function getControllerPrerequisite(name: string): ControllerPrerequisite | null {\n return controllerPrerequisites.find(c => c.name === name) ?? null;\n}\n\nexport function filterBySafety(\n safety: readonly ControllerSafety[]\n): readonly ControllerPrerequisite[] {\n return controllerPrerequisites.filter(c => safety.includes(c.safety));\n}\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embeddings Performance Benchmark Suite
|
|
3
|
+
*
|
|
4
|
+
* Measures performance of:
|
|
5
|
+
* - O(1) LRU Cache operations
|
|
6
|
+
* - Parallel batch embedding
|
|
7
|
+
* - 8x unrolled cosine similarity
|
|
8
|
+
* - Neural substrate operations
|
|
9
|
+
* - Overall throughput
|
|
10
|
+
*/
|
|
11
|
+
interface BenchmarkResult {
|
|
12
|
+
name: string;
|
|
13
|
+
iterations: number;
|
|
14
|
+
totalMs: number;
|
|
15
|
+
avgMs: number;
|
|
16
|
+
opsPerSec: number;
|
|
17
|
+
minMs: number;
|
|
18
|
+
maxMs: number;
|
|
19
|
+
p95Ms: number;
|
|
20
|
+
}
|
|
21
|
+
declare function benchmark(name: string, fn: () => Promise<void> | void, iterations?: number): Promise<BenchmarkResult>;
|
|
22
|
+
declare function runBenchmarks(): Promise<{
|
|
23
|
+
results: BenchmarkResult[];
|
|
24
|
+
memory: {
|
|
25
|
+
heapBefore: number;
|
|
26
|
+
heapAfter: number;
|
|
27
|
+
heapDelta: number;
|
|
28
|
+
gcPauses: number;
|
|
29
|
+
};
|
|
30
|
+
throughput: {
|
|
31
|
+
textsProcessed: number;
|
|
32
|
+
totalTimeMs: number;
|
|
33
|
+
textsPerSecond: number;
|
|
34
|
+
};
|
|
35
|
+
}>;
|
|
36
|
+
export { runBenchmarks, benchmark };
|
|
37
|
+
export type { BenchmarkResult };
|
|
38
|
+
//# sourceMappingURL=embeddings-benchmark.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddings-benchmark.d.ts","sourceRoot":"","sources":["../../src/benchmarks/embeddings-benchmark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAcH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,iBAAe,SAAS,CACtB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EAC9B,UAAU,GAAE,MAAa,GACxB,OAAO,CAAC,eAAe,CAAC,CA6B1B;AAuOD,iBAAe,aAAa;;;oBAnEd,MAAM;mBACP,MAAM;mBACN,MAAM;kBACP,MAAM;;;wBAqCA,MAAM;qBACT,MAAM;wBACH,MAAM;;GA+GvB;AAKD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;AACpC,YAAY,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embeddings Performance Benchmark Suite
|
|
3
|
+
*
|
|
4
|
+
* Measures performance of:
|
|
5
|
+
* - O(1) LRU Cache operations
|
|
6
|
+
* - Parallel batch embedding
|
|
7
|
+
* - 8x unrolled cosine similarity
|
|
8
|
+
* - Neural substrate operations
|
|
9
|
+
* - Overall throughput
|
|
10
|
+
*/
|
|
11
|
+
import { performance } from 'perf_hooks';
|
|
12
|
+
import { getOptimizedEmbedder, cosineSimilarity, euclideanDistance, normalizeVector } from '../embeddings/optimized-embedder.js';
|
|
13
|
+
async function benchmark(name, fn, iterations = 1000) {
|
|
14
|
+
const times = [];
|
|
15
|
+
// Warmup
|
|
16
|
+
for (let i = 0; i < Math.min(10, iterations / 10); i++) {
|
|
17
|
+
await fn();
|
|
18
|
+
}
|
|
19
|
+
// Actual benchmark
|
|
20
|
+
for (let i = 0; i < iterations; i++) {
|
|
21
|
+
const start = performance.now();
|
|
22
|
+
await fn();
|
|
23
|
+
times.push(performance.now() - start);
|
|
24
|
+
}
|
|
25
|
+
times.sort((a, b) => a - b);
|
|
26
|
+
const totalMs = times.reduce((a, b) => a + b, 0);
|
|
27
|
+
const avgMs = totalMs / iterations;
|
|
28
|
+
return {
|
|
29
|
+
name,
|
|
30
|
+
iterations,
|
|
31
|
+
totalMs,
|
|
32
|
+
avgMs,
|
|
33
|
+
opsPerSec: 1000 / avgMs,
|
|
34
|
+
minMs: times[0],
|
|
35
|
+
maxMs: times[times.length - 1],
|
|
36
|
+
p95Ms: times[Math.floor(iterations * 0.95)]
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function formatResult(result) {
|
|
40
|
+
return [
|
|
41
|
+
` ${result.name}`,
|
|
42
|
+
` Iterations: ${result.iterations.toLocaleString()}`,
|
|
43
|
+
` Total: ${result.totalMs.toFixed(2)}ms`,
|
|
44
|
+
` Avg: ${result.avgMs.toFixed(4)}ms`,
|
|
45
|
+
` Ops/sec: ${result.opsPerSec.toFixed(2)}`,
|
|
46
|
+
` Min: ${result.minMs.toFixed(4)}ms`,
|
|
47
|
+
` Max: ${result.maxMs.toFixed(4)}ms`,
|
|
48
|
+
` P95: ${result.p95Ms.toFixed(4)}ms`
|
|
49
|
+
].join('\n');
|
|
50
|
+
}
|
|
51
|
+
// ============================================================================
|
|
52
|
+
// Vector Operation Benchmarks
|
|
53
|
+
// ============================================================================
|
|
54
|
+
async function benchmarkCosineSimilarity() {
|
|
55
|
+
const dim = 384;
|
|
56
|
+
const a = new Float32Array(dim);
|
|
57
|
+
const b = new Float32Array(dim);
|
|
58
|
+
// Initialize with random values
|
|
59
|
+
for (let i = 0; i < dim; i++) {
|
|
60
|
+
a[i] = Math.random() - 0.5;
|
|
61
|
+
b[i] = Math.random() - 0.5;
|
|
62
|
+
}
|
|
63
|
+
normalizeVector(a);
|
|
64
|
+
normalizeVector(b);
|
|
65
|
+
return benchmark('Cosine Similarity (384d, 8x unrolled)', () => {
|
|
66
|
+
cosineSimilarity(a, b);
|
|
67
|
+
}, 100000);
|
|
68
|
+
}
|
|
69
|
+
async function benchmarkEuclideanDistance() {
|
|
70
|
+
const dim = 384;
|
|
71
|
+
const a = new Float32Array(dim);
|
|
72
|
+
const b = new Float32Array(dim);
|
|
73
|
+
for (let i = 0; i < dim; i++) {
|
|
74
|
+
a[i] = Math.random() - 0.5;
|
|
75
|
+
b[i] = Math.random() - 0.5;
|
|
76
|
+
}
|
|
77
|
+
return benchmark('Euclidean Distance (384d)', () => {
|
|
78
|
+
euclideanDistance(a, b);
|
|
79
|
+
}, 100000);
|
|
80
|
+
}
|
|
81
|
+
async function benchmarkNormalize() {
|
|
82
|
+
const dim = 384;
|
|
83
|
+
const vectors = [];
|
|
84
|
+
// Pre-create vectors
|
|
85
|
+
for (let i = 0; i < 1000; i++) {
|
|
86
|
+
const v = new Float32Array(dim);
|
|
87
|
+
for (let j = 0; j < dim; j++) {
|
|
88
|
+
v[j] = Math.random() - 0.5;
|
|
89
|
+
}
|
|
90
|
+
vectors.push(v);
|
|
91
|
+
}
|
|
92
|
+
let idx = 0;
|
|
93
|
+
return benchmark('Normalize Vector (384d)', () => {
|
|
94
|
+
normalizeVector(vectors[idx++ % 1000]);
|
|
95
|
+
}, 100000);
|
|
96
|
+
}
|
|
97
|
+
// ============================================================================
|
|
98
|
+
// Cache Benchmarks
|
|
99
|
+
// ============================================================================
|
|
100
|
+
async function benchmarkCacheOperations() {
|
|
101
|
+
const embedder = getOptimizedEmbedder();
|
|
102
|
+
await embedder.init();
|
|
103
|
+
const results = [];
|
|
104
|
+
// Pre-populate cache
|
|
105
|
+
const texts = Array.from({ length: 256 }, (_, i) => `cache test text ${i}`);
|
|
106
|
+
for (const text of texts) {
|
|
107
|
+
await embedder.embed(text);
|
|
108
|
+
}
|
|
109
|
+
// Benchmark cache hits
|
|
110
|
+
results.push(await benchmark('Cache Hit (O(1) LRU)', async () => {
|
|
111
|
+
await embedder.embed(texts[Math.floor(Math.random() * 256)]);
|
|
112
|
+
}, 10000));
|
|
113
|
+
// Benchmark cache miss + embedding
|
|
114
|
+
let missIdx = 1000;
|
|
115
|
+
results.push(await benchmark('Cache Miss + Embed', async () => {
|
|
116
|
+
await embedder.embed(`unique text for miss ${missIdx++}`);
|
|
117
|
+
}, 100));
|
|
118
|
+
return results;
|
|
119
|
+
}
|
|
120
|
+
// ============================================================================
|
|
121
|
+
// Batch Embedding Benchmarks
|
|
122
|
+
// ============================================================================
|
|
123
|
+
async function benchmarkBatchEmbedding() {
|
|
124
|
+
const embedder = getOptimizedEmbedder();
|
|
125
|
+
await embedder.init();
|
|
126
|
+
embedder.clearCache();
|
|
127
|
+
const results = [];
|
|
128
|
+
// Small batch
|
|
129
|
+
const smallBatch = Array.from({ length: 10 }, (_, i) => `small batch text ${i}`);
|
|
130
|
+
results.push(await benchmark('Batch Embed (10 texts, parallel)', async () => {
|
|
131
|
+
embedder.clearCache();
|
|
132
|
+
await embedder.embedBatch(smallBatch, 4);
|
|
133
|
+
}, 20));
|
|
134
|
+
// Medium batch
|
|
135
|
+
const mediumBatch = Array.from({ length: 50 }, (_, i) => `medium batch text ${i}`);
|
|
136
|
+
results.push(await benchmark('Batch Embed (50 texts, parallel)', async () => {
|
|
137
|
+
embedder.clearCache();
|
|
138
|
+
await embedder.embedBatch(mediumBatch, 4);
|
|
139
|
+
}, 10));
|
|
140
|
+
// Compare sequential vs parallel (simulated)
|
|
141
|
+
results.push(await benchmark('Batch Embed (10 texts, cached)', async () => {
|
|
142
|
+
await embedder.embedBatch(smallBatch, 4); // Should hit cache
|
|
143
|
+
}, 100));
|
|
144
|
+
return results;
|
|
145
|
+
}
|
|
146
|
+
// ============================================================================
|
|
147
|
+
// Similarity Search Benchmarks
|
|
148
|
+
// ============================================================================
|
|
149
|
+
async function benchmarkSimilaritySearch() {
|
|
150
|
+
const embedder = getOptimizedEmbedder();
|
|
151
|
+
await embedder.init();
|
|
152
|
+
const results = [];
|
|
153
|
+
// Prepare candidates
|
|
154
|
+
const candidates = Array.from({ length: 100 }, (_, i) => `candidate document about topic ${i % 10} with content ${i}`);
|
|
155
|
+
// Pre-embed candidates
|
|
156
|
+
await embedder.embedBatch(candidates, 4);
|
|
157
|
+
results.push(await benchmark('Find Similar (100 candidates, top-5)', async () => {
|
|
158
|
+
await embedder.findSimilar('search query about topic 5', candidates, 5);
|
|
159
|
+
}, 50));
|
|
160
|
+
return results;
|
|
161
|
+
}
|
|
162
|
+
// ============================================================================
|
|
163
|
+
// Memory Pressure Test
|
|
164
|
+
// ============================================================================
|
|
165
|
+
async function benchmarkMemoryPressure() {
|
|
166
|
+
const embedder = getOptimizedEmbedder();
|
|
167
|
+
await embedder.init();
|
|
168
|
+
embedder.clearCache();
|
|
169
|
+
// Force GC if available
|
|
170
|
+
if (global.gc)
|
|
171
|
+
global.gc();
|
|
172
|
+
const heapBefore = process.memoryUsage().heapUsed;
|
|
173
|
+
let gcPauses = 0;
|
|
174
|
+
// Generate 1000 embeddings
|
|
175
|
+
for (let i = 0; i < 1000; i++) {
|
|
176
|
+
await embedder.embed(`memory pressure test text ${i} with some content`);
|
|
177
|
+
// Detect potential GC pauses
|
|
178
|
+
const start = performance.now();
|
|
179
|
+
await new Promise(resolve => setImmediate(resolve));
|
|
180
|
+
if (performance.now() - start > 5)
|
|
181
|
+
gcPauses++;
|
|
182
|
+
}
|
|
183
|
+
const heapAfter = process.memoryUsage().heapUsed;
|
|
184
|
+
return {
|
|
185
|
+
heapBefore,
|
|
186
|
+
heapAfter,
|
|
187
|
+
heapDelta: heapAfter - heapBefore,
|
|
188
|
+
gcPauses
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
// ============================================================================
|
|
192
|
+
// Throughput Test
|
|
193
|
+
// ============================================================================
|
|
194
|
+
async function benchmarkThroughput() {
|
|
195
|
+
const embedder = getOptimizedEmbedder();
|
|
196
|
+
await embedder.init();
|
|
197
|
+
embedder.clearCache();
|
|
198
|
+
const texts = Array.from({ length: 100 }, (_, i) => `throughput test document ${i} with varying content length ${i * 10}`);
|
|
199
|
+
const start = performance.now();
|
|
200
|
+
await embedder.embedBatch(texts, 4);
|
|
201
|
+
const totalTimeMs = performance.now() - start;
|
|
202
|
+
return {
|
|
203
|
+
textsProcessed: texts.length,
|
|
204
|
+
totalTimeMs,
|
|
205
|
+
textsPerSecond: (texts.length / totalTimeMs) * 1000
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
// ============================================================================
|
|
209
|
+
// Main Benchmark Runner
|
|
210
|
+
// ============================================================================
|
|
211
|
+
async function runBenchmarks() {
|
|
212
|
+
console.log('\n' + '='.repeat(70));
|
|
213
|
+
console.log(' EMBEDDINGS PERFORMANCE BENCHMARK SUITE');
|
|
214
|
+
console.log(' agentic-flow v2.0.1-alpha.50');
|
|
215
|
+
console.log('='.repeat(70) + '\n');
|
|
216
|
+
const allResults = [];
|
|
217
|
+
// Vector Operations
|
|
218
|
+
console.log('š Vector Operations\n');
|
|
219
|
+
const cosineSim = await benchmarkCosineSimilarity();
|
|
220
|
+
console.log(formatResult(cosineSim) + '\n');
|
|
221
|
+
allResults.push(cosineSim);
|
|
222
|
+
const euclidean = await benchmarkEuclideanDistance();
|
|
223
|
+
console.log(formatResult(euclidean) + '\n');
|
|
224
|
+
allResults.push(euclidean);
|
|
225
|
+
const normalize = await benchmarkNormalize();
|
|
226
|
+
console.log(formatResult(normalize) + '\n');
|
|
227
|
+
allResults.push(normalize);
|
|
228
|
+
// Cache Operations
|
|
229
|
+
console.log('\nš¾ Cache Operations (O(1) LRU)\n');
|
|
230
|
+
const cacheResults = await benchmarkCacheOperations();
|
|
231
|
+
for (const result of cacheResults) {
|
|
232
|
+
console.log(formatResult(result) + '\n');
|
|
233
|
+
allResults.push(result);
|
|
234
|
+
}
|
|
235
|
+
// Batch Embedding
|
|
236
|
+
console.log('\nā” Batch Embedding (Parallel Processing)\n');
|
|
237
|
+
const batchResults = await benchmarkBatchEmbedding();
|
|
238
|
+
for (const result of batchResults) {
|
|
239
|
+
console.log(formatResult(result) + '\n');
|
|
240
|
+
allResults.push(result);
|
|
241
|
+
}
|
|
242
|
+
// Similarity Search
|
|
243
|
+
console.log('\nš Similarity Search\n');
|
|
244
|
+
const searchResults = await benchmarkSimilaritySearch();
|
|
245
|
+
for (const result of searchResults) {
|
|
246
|
+
console.log(formatResult(result) + '\n');
|
|
247
|
+
allResults.push(result);
|
|
248
|
+
}
|
|
249
|
+
// Memory Pressure
|
|
250
|
+
console.log('\nš§ Memory Pressure Test\n');
|
|
251
|
+
const memoryResult = await benchmarkMemoryPressure();
|
|
252
|
+
console.log(` Heap Before: ${(memoryResult.heapBefore / 1024 / 1024).toFixed(2)} MB`);
|
|
253
|
+
console.log(` Heap After: ${(memoryResult.heapAfter / 1024 / 1024).toFixed(2)} MB`);
|
|
254
|
+
console.log(` Heap Delta: ${(memoryResult.heapDelta / 1024 / 1024).toFixed(2)} MB`);
|
|
255
|
+
console.log(` Potential GC Pauses: ${memoryResult.gcPauses}\n`);
|
|
256
|
+
// Throughput
|
|
257
|
+
console.log('\nš Throughput Test\n');
|
|
258
|
+
const throughput = await benchmarkThroughput();
|
|
259
|
+
console.log(` Texts Processed: ${throughput.textsProcessed}`);
|
|
260
|
+
console.log(` Total Time: ${throughput.totalTimeMs.toFixed(2)} ms`);
|
|
261
|
+
console.log(` Throughput: ${throughput.textsPerSecond.toFixed(2)} texts/sec\n`);
|
|
262
|
+
// Summary
|
|
263
|
+
console.log('\n' + '='.repeat(70));
|
|
264
|
+
console.log(' BENCHMARK SUMMARY');
|
|
265
|
+
console.log('='.repeat(70) + '\n');
|
|
266
|
+
console.log(' Key Metrics:');
|
|
267
|
+
console.log(` ⢠Cosine Similarity: ${cosineSim.opsPerSec.toFixed(0)} ops/sec`);
|
|
268
|
+
console.log(` ⢠Cache Hit: ${cacheResults[0].opsPerSec.toFixed(0)} ops/sec`);
|
|
269
|
+
console.log(` ⢠Batch Throughput: ${throughput.textsPerSecond.toFixed(1)} texts/sec`);
|
|
270
|
+
console.log(` ⢠Memory Efficiency: ${(memoryResult.heapDelta / 1024).toFixed(1)} KB for 1000 embeds`);
|
|
271
|
+
console.log('\n Performance Characteristics:');
|
|
272
|
+
console.log(' ā O(1) LRU cache operations');
|
|
273
|
+
console.log(' ā 8x loop unrolling with ILP');
|
|
274
|
+
console.log(' ā Parallel batch processing');
|
|
275
|
+
console.log(' ā Pre-allocated tensor buffers');
|
|
276
|
+
console.log(' ā Minimal GC pressure\n');
|
|
277
|
+
return { results: allResults, memory: memoryResult, throughput };
|
|
278
|
+
}
|
|
279
|
+
// Run if executed directly
|
|
280
|
+
runBenchmarks().catch(console.error);
|
|
281
|
+
export { runBenchmarks, benchmark };
|
|
282
|
+
//# sourceMappingURL=embeddings-benchmark.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddings-benchmark.js","sourceRoot":"","sources":["../../src/benchmarks/embeddings-benchmark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAChB,MAAM,qCAAqC,CAAC;AAiB7C,KAAK,UAAU,SAAS,CACtB,IAAY,EACZ,EAA8B,EAC9B,aAAqB,IAAI;IAEzB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,SAAS;IACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACvD,MAAM,EAAE,EAAE,CAAC;IACb,CAAC;IAED,mBAAmB;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,EAAE,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;IAEnC,OAAO;QACL,IAAI;QACJ,UAAU;QACV,OAAO;QACP,KAAK;QACL,SAAS,EAAE,IAAI,GAAG,KAAK;QACvB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACf,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAAuB;IAC3C,OAAO;QACL,KAAK,MAAM,CAAC,IAAI,EAAE;QAClB,mBAAmB,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE;QACvD,cAAc,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QAC3C,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QACvC,gBAAgB,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC7C,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QACvC,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QACvC,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;KACxC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E,KAAK,UAAU,yBAAyB;IACtC,MAAM,GAAG,GAAG,GAAG,CAAC;IAChB,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IAEhC,gCAAgC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;QAC3B,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;IAC7B,CAAC;IACD,eAAe,CAAC,CAAC,CAAC,CAAC;IACnB,eAAe,CAAC,CAAC,CAAC,CAAC;IAEnB,OAAO,SAAS,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7D,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,CAAC,EAAE,MAAM,CAAC,CAAC;AACb,CAAC;AAED,KAAK,UAAU,0BAA0B;IACvC,MAAM,GAAG,GAAG,GAAG,CAAC;IAChB,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;QAC3B,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;IAC7B,CAAC;IAED,OAAO,SAAS,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACjD,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,CAAC,EAAE,MAAM,CAAC,CAAC;AACb,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,MAAM,GAAG,GAAG,GAAG,CAAC;IAChB,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,qBAAqB;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO,SAAS,CAAC,yBAAyB,EAAE,GAAG,EAAE;QAC/C,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC,EAAE,MAAM,CAAC,CAAC;AACb,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,KAAK,UAAU,wBAAwB;IACrC,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IACxC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEtB,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,qBAAqB;IACrB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAC5E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,uBAAuB;IACvB,OAAO,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAEX,mCAAmC;IACnC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,QAAQ,CAAC,KAAK,CAAC,wBAAwB,OAAO,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAET,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,KAAK,UAAU,uBAAuB;IACpC,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IACxC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,CAAC;IAEtB,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,cAAc;IACd,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAC1E,QAAQ,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAER,eAAe;IACf,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACnF,OAAO,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAC1E,QAAQ,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAER,6CAA6C;IAC7C,OAAO,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB;IAC/D,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAET,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E,KAAK,UAAU,yBAAyB;IACtC,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IACxC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEtB,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,qBAAqB;IACrB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACtD,kCAAkC,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,CAC7D,CAAC;IAEF,uBAAuB;IACvB,MAAM,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAEzC,OAAO,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,QAAQ,CAAC,WAAW,CAAC,4BAA4B,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAER,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,KAAK,UAAU,uBAAuB;IAMpC,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IACxC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,CAAC;IAEtB,wBAAwB;IACxB,IAAI,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,EAAE,CAAC;IAE3B,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;IAClD,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,2BAA2B;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,QAAQ,CAAC,KAAK,CAAC,6BAA6B,CAAC,oBAAoB,CAAC,CAAC;QAEzE,6BAA6B;QAC7B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;YAAE,QAAQ,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;IAEjD,OAAO;QACL,UAAU;QACV,SAAS;QACT,SAAS,EAAE,SAAS,GAAG,UAAU;QACjC,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,KAAK,UAAU,mBAAmB;IAKhC,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IACxC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,CAAC;IAEtB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACjD,4BAA4B,CAAC,gCAAgC,CAAC,GAAG,EAAE,EAAE,CACtE,CAAC;IAEF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,MAAM,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACpC,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAE9C,OAAO;QACL,cAAc,EAAE,KAAK,CAAC,MAAM;QAC5B,WAAW;QACX,cAAc,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,IAAI;KACpD,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,KAAK,UAAU,aAAa;IAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAEnC,MAAM,UAAU,GAAsB,EAAE,CAAC;IAEzC,oBAAoB;IACpB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAEtC,MAAM,SAAS,GAAG,MAAM,yBAAyB,EAAE,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE3B,MAAM,SAAS,GAAG,MAAM,0BAA0B,EAAE,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE3B,MAAM,SAAS,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE3B,mBAAmB;IACnB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAElD,MAAM,YAAY,GAAG,MAAM,wBAAwB,EAAE,CAAC;IACtD,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;QACzC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,kBAAkB;IAClB,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAE3D,MAAM,YAAY,GAAG,MAAM,uBAAuB,EAAE,CAAC;IACrD,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;QACzC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,oBAAoB;IACpB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAExC,MAAM,aAAa,GAAG,MAAM,yBAAyB,EAAE,CAAC;IACxD,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;QACzC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,kBAAkB;IAClB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,MAAM,YAAY,GAAG,MAAM,uBAAuB,EAAE,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,0BAA0B,YAAY,CAAC,QAAQ,IAAI,CAAC,CAAC;IAEjE,aAAa;IACb,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAEtC,MAAM,UAAU,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,sBAAsB,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,iBAAiB,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,iBAAiB,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAEjF,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,4BAA4B,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,oBAAoB,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,2BAA2B,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAEzG,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAE3C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACnE,CAAC;AAED,2BAA2B;AAC3B,aAAa,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAErC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC","sourcesContent":["/**\n * Embeddings Performance Benchmark Suite\n *\n * Measures performance of:\n * - O(1) LRU Cache operations\n * - Parallel batch embedding\n * - 8x unrolled cosine similarity\n * - Neural substrate operations\n * - Overall throughput\n */\n\nimport { performance } from 'perf_hooks';\nimport {\n getOptimizedEmbedder,\n cosineSimilarity,\n euclideanDistance,\n normalizeVector\n} from '../embeddings/optimized-embedder.js';\n\n// ============================================================================\n// Benchmark Utilities\n// ============================================================================\n\ninterface BenchmarkResult {\n name: string;\n iterations: number;\n totalMs: number;\n avgMs: number;\n opsPerSec: number;\n minMs: number;\n maxMs: number;\n p95Ms: number;\n}\n\nasync function benchmark(\n name: string,\n fn: () => Promise<void> | void,\n iterations: number = 1000\n): Promise<BenchmarkResult> {\n const times: number[] = [];\n\n // Warmup\n for (let i = 0; i < Math.min(10, iterations / 10); i++) {\n await fn();\n }\n\n // Actual benchmark\n for (let i = 0; i < iterations; i++) {\n const start = performance.now();\n await fn();\n times.push(performance.now() - start);\n }\n\n times.sort((a, b) => a - b);\n const totalMs = times.reduce((a, b) => a + b, 0);\n const avgMs = totalMs / iterations;\n\n return {\n name,\n iterations,\n totalMs,\n avgMs,\n opsPerSec: 1000 / avgMs,\n minMs: times[0],\n maxMs: times[times.length - 1],\n p95Ms: times[Math.floor(iterations * 0.95)]\n };\n}\n\nfunction formatResult(result: BenchmarkResult): string {\n return [\n ` ${result.name}`,\n ` Iterations: ${result.iterations.toLocaleString()}`,\n ` Total: ${result.totalMs.toFixed(2)}ms`,\n ` Avg: ${result.avgMs.toFixed(4)}ms`,\n ` Ops/sec: ${result.opsPerSec.toFixed(2)}`,\n ` Min: ${result.minMs.toFixed(4)}ms`,\n ` Max: ${result.maxMs.toFixed(4)}ms`,\n ` P95: ${result.p95Ms.toFixed(4)}ms`\n ].join('\\n');\n}\n\n// ============================================================================\n// Vector Operation Benchmarks\n// ============================================================================\n\nasync function benchmarkCosineSimilarity(): Promise<BenchmarkResult> {\n const dim = 384;\n const a = new Float32Array(dim);\n const b = new Float32Array(dim);\n\n // Initialize with random values\n for (let i = 0; i < dim; i++) {\n a[i] = Math.random() - 0.5;\n b[i] = Math.random() - 0.5;\n }\n normalizeVector(a);\n normalizeVector(b);\n\n return benchmark('Cosine Similarity (384d, 8x unrolled)', () => {\n cosineSimilarity(a, b);\n }, 100000);\n}\n\nasync function benchmarkEuclideanDistance(): Promise<BenchmarkResult> {\n const dim = 384;\n const a = new Float32Array(dim);\n const b = new Float32Array(dim);\n\n for (let i = 0; i < dim; i++) {\n a[i] = Math.random() - 0.5;\n b[i] = Math.random() - 0.5;\n }\n\n return benchmark('Euclidean Distance (384d)', () => {\n euclideanDistance(a, b);\n }, 100000);\n}\n\nasync function benchmarkNormalize(): Promise<BenchmarkResult> {\n const dim = 384;\n const vectors: Float32Array[] = [];\n\n // Pre-create vectors\n for (let i = 0; i < 1000; i++) {\n const v = new Float32Array(dim);\n for (let j = 0; j < dim; j++) {\n v[j] = Math.random() - 0.5;\n }\n vectors.push(v);\n }\n\n let idx = 0;\n return benchmark('Normalize Vector (384d)', () => {\n normalizeVector(vectors[idx++ % 1000]);\n }, 100000);\n}\n\n// ============================================================================\n// Cache Benchmarks\n// ============================================================================\n\nasync function benchmarkCacheOperations(): Promise<BenchmarkResult[]> {\n const embedder = getOptimizedEmbedder();\n await embedder.init();\n\n const results: BenchmarkResult[] = [];\n\n // Pre-populate cache\n const texts = Array.from({ length: 256 }, (_, i) => `cache test text ${i}`);\n for (const text of texts) {\n await embedder.embed(text);\n }\n\n // Benchmark cache hits\n results.push(await benchmark('Cache Hit (O(1) LRU)', async () => {\n await embedder.embed(texts[Math.floor(Math.random() * 256)]);\n }, 10000));\n\n // Benchmark cache miss + embedding\n let missIdx = 1000;\n results.push(await benchmark('Cache Miss + Embed', async () => {\n await embedder.embed(`unique text for miss ${missIdx++}`);\n }, 100));\n\n return results;\n}\n\n// ============================================================================\n// Batch Embedding Benchmarks\n// ============================================================================\n\nasync function benchmarkBatchEmbedding(): Promise<BenchmarkResult[]> {\n const embedder = getOptimizedEmbedder();\n await embedder.init();\n embedder.clearCache();\n\n const results: BenchmarkResult[] = [];\n\n // Small batch\n const smallBatch = Array.from({ length: 10 }, (_, i) => `small batch text ${i}`);\n results.push(await benchmark('Batch Embed (10 texts, parallel)', async () => {\n embedder.clearCache();\n await embedder.embedBatch(smallBatch, 4);\n }, 20));\n\n // Medium batch\n const mediumBatch = Array.from({ length: 50 }, (_, i) => `medium batch text ${i}`);\n results.push(await benchmark('Batch Embed (50 texts, parallel)', async () => {\n embedder.clearCache();\n await embedder.embedBatch(mediumBatch, 4);\n }, 10));\n\n // Compare sequential vs parallel (simulated)\n results.push(await benchmark('Batch Embed (10 texts, cached)', async () => {\n await embedder.embedBatch(smallBatch, 4); // Should hit cache\n }, 100));\n\n return results;\n}\n\n// ============================================================================\n// Similarity Search Benchmarks\n// ============================================================================\n\nasync function benchmarkSimilaritySearch(): Promise<BenchmarkResult[]> {\n const embedder = getOptimizedEmbedder();\n await embedder.init();\n\n const results: BenchmarkResult[] = [];\n\n // Prepare candidates\n const candidates = Array.from({ length: 100 }, (_, i) =>\n `candidate document about topic ${i % 10} with content ${i}`\n );\n\n // Pre-embed candidates\n await embedder.embedBatch(candidates, 4);\n\n results.push(await benchmark('Find Similar (100 candidates, top-5)', async () => {\n await embedder.findSimilar('search query about topic 5', candidates, 5);\n }, 50));\n\n return results;\n}\n\n// ============================================================================\n// Memory Pressure Test\n// ============================================================================\n\nasync function benchmarkMemoryPressure(): Promise<{\n heapBefore: number;\n heapAfter: number;\n heapDelta: number;\n gcPauses: number;\n}> {\n const embedder = getOptimizedEmbedder();\n await embedder.init();\n embedder.clearCache();\n\n // Force GC if available\n if (global.gc) global.gc();\n\n const heapBefore = process.memoryUsage().heapUsed;\n let gcPauses = 0;\n\n // Generate 1000 embeddings\n for (let i = 0; i < 1000; i++) {\n await embedder.embed(`memory pressure test text ${i} with some content`);\n\n // Detect potential GC pauses\n const start = performance.now();\n await new Promise(resolve => setImmediate(resolve));\n if (performance.now() - start > 5) gcPauses++;\n }\n\n const heapAfter = process.memoryUsage().heapUsed;\n\n return {\n heapBefore,\n heapAfter,\n heapDelta: heapAfter - heapBefore,\n gcPauses\n };\n}\n\n// ============================================================================\n// Throughput Test\n// ============================================================================\n\nasync function benchmarkThroughput(): Promise<{\n textsProcessed: number;\n totalTimeMs: number;\n textsPerSecond: number;\n}> {\n const embedder = getOptimizedEmbedder();\n await embedder.init();\n embedder.clearCache();\n\n const texts = Array.from({ length: 100 }, (_, i) =>\n `throughput test document ${i} with varying content length ${i * 10}`\n );\n\n const start = performance.now();\n await embedder.embedBatch(texts, 4);\n const totalTimeMs = performance.now() - start;\n\n return {\n textsProcessed: texts.length,\n totalTimeMs,\n textsPerSecond: (texts.length / totalTimeMs) * 1000\n };\n}\n\n// ============================================================================\n// Main Benchmark Runner\n// ============================================================================\n\nasync function runBenchmarks() {\n console.log('\\n' + '='.repeat(70));\n console.log(' EMBEDDINGS PERFORMANCE BENCHMARK SUITE');\n console.log(' agentic-flow v2.0.1-alpha.50');\n console.log('='.repeat(70) + '\\n');\n\n const allResults: BenchmarkResult[] = [];\n\n // Vector Operations\n console.log('š Vector Operations\\n');\n\n const cosineSim = await benchmarkCosineSimilarity();\n console.log(formatResult(cosineSim) + '\\n');\n allResults.push(cosineSim);\n\n const euclidean = await benchmarkEuclideanDistance();\n console.log(formatResult(euclidean) + '\\n');\n allResults.push(euclidean);\n\n const normalize = await benchmarkNormalize();\n console.log(formatResult(normalize) + '\\n');\n allResults.push(normalize);\n\n // Cache Operations\n console.log('\\nš¾ Cache Operations (O(1) LRU)\\n');\n\n const cacheResults = await benchmarkCacheOperations();\n for (const result of cacheResults) {\n console.log(formatResult(result) + '\\n');\n allResults.push(result);\n }\n\n // Batch Embedding\n console.log('\\nā” Batch Embedding (Parallel Processing)\\n');\n\n const batchResults = await benchmarkBatchEmbedding();\n for (const result of batchResults) {\n console.log(formatResult(result) + '\\n');\n allResults.push(result);\n }\n\n // Similarity Search\n console.log('\\nš Similarity Search\\n');\n\n const searchResults = await benchmarkSimilaritySearch();\n for (const result of searchResults) {\n console.log(formatResult(result) + '\\n');\n allResults.push(result);\n }\n\n // Memory Pressure\n console.log('\\nš§ Memory Pressure Test\\n');\n\n const memoryResult = await benchmarkMemoryPressure();\n console.log(` Heap Before: ${(memoryResult.heapBefore / 1024 / 1024).toFixed(2)} MB`);\n console.log(` Heap After: ${(memoryResult.heapAfter / 1024 / 1024).toFixed(2)} MB`);\n console.log(` Heap Delta: ${(memoryResult.heapDelta / 1024 / 1024).toFixed(2)} MB`);\n console.log(` Potential GC Pauses: ${memoryResult.gcPauses}\\n`);\n\n // Throughput\n console.log('\\nš Throughput Test\\n');\n\n const throughput = await benchmarkThroughput();\n console.log(` Texts Processed: ${throughput.textsProcessed}`);\n console.log(` Total Time: ${throughput.totalTimeMs.toFixed(2)} ms`);\n console.log(` Throughput: ${throughput.textsPerSecond.toFixed(2)} texts/sec\\n`);\n\n // Summary\n console.log('\\n' + '='.repeat(70));\n console.log(' BENCHMARK SUMMARY');\n console.log('='.repeat(70) + '\\n');\n\n console.log(' Key Metrics:');\n console.log(` ⢠Cosine Similarity: ${cosineSim.opsPerSec.toFixed(0)} ops/sec`);\n console.log(` ⢠Cache Hit: ${cacheResults[0].opsPerSec.toFixed(0)} ops/sec`);\n console.log(` ⢠Batch Throughput: ${throughput.textsPerSecond.toFixed(1)} texts/sec`);\n console.log(` ⢠Memory Efficiency: ${(memoryResult.heapDelta / 1024).toFixed(1)} KB for 1000 embeds`);\n\n console.log('\\n Performance Characteristics:');\n console.log(' ā O(1) LRU cache operations');\n console.log(' ā 8x loop unrolling with ILP');\n console.log(' ā Parallel batch processing');\n console.log(' ā Pre-allocated tensor buffers');\n console.log(' ā Minimal GC pressure\\n');\n\n return { results: allResults, memory: memoryResult, throughput };\n}\n\n// Run if executed directly\nrunBenchmarks().catch(console.error);\n\nexport { runBenchmarks, benchmark };\nexport type { BenchmarkResult };\n"]}
|