agentic-flow 2.0.3 ā 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 +624 -1776
- 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/.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,452 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Worker Benchmark System
|
|
3
|
-
*
|
|
4
|
-
* Comprehensive performance benchmarking for the worker system including:
|
|
5
|
-
* - Dispatch latency measurement
|
|
6
|
-
* - Phase execution timing
|
|
7
|
-
* - Memory tracking
|
|
8
|
-
* - Throughput analysis
|
|
9
|
-
* - Integration with agents
|
|
10
|
-
*/
|
|
11
|
-
import { getWorkerRegistry } from './worker-registry.js';
|
|
12
|
-
import { workerAgentIntegration } from './worker-agent-integration.js';
|
|
13
|
-
import { modelCache } from '../utils/model-cache.js';
|
|
14
|
-
// ============================================================================
|
|
15
|
-
// Benchmark Utilities
|
|
16
|
-
// ============================================================================
|
|
17
|
-
function calculatePercentile(sorted, percentile) {
|
|
18
|
-
const index = Math.ceil((percentile / 100) * sorted.length) - 1;
|
|
19
|
-
return sorted[Math.max(0, index)] || 0;
|
|
20
|
-
}
|
|
21
|
-
function getMemoryUsageMB() {
|
|
22
|
-
const mem = process.memoryUsage();
|
|
23
|
-
return mem.heapUsed / 1024 / 1024;
|
|
24
|
-
}
|
|
25
|
-
function createLatencyHistogram(latencies) {
|
|
26
|
-
const buckets = [
|
|
27
|
-
{ max: 1, label: '<1ms' },
|
|
28
|
-
{ max: 5, label: '1-5ms' },
|
|
29
|
-
{ max: 10, label: '5-10ms' },
|
|
30
|
-
{ max: 50, label: '10-50ms' },
|
|
31
|
-
{ max: 100, label: '50-100ms' },
|
|
32
|
-
{ max: 500, label: '100-500ms' },
|
|
33
|
-
{ max: 1000, label: '500ms-1s' },
|
|
34
|
-
{ max: Infinity, label: '>1s' }
|
|
35
|
-
];
|
|
36
|
-
const counts = new Array(buckets.length).fill(0);
|
|
37
|
-
for (const latency of latencies) {
|
|
38
|
-
for (let i = 0; i < buckets.length; i++) {
|
|
39
|
-
if (latency <= buckets[i].max) {
|
|
40
|
-
counts[i]++;
|
|
41
|
-
break;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return buckets.map((bucket, i) => ({
|
|
46
|
-
range: bucket.label,
|
|
47
|
-
count: counts[i],
|
|
48
|
-
percentage: (counts[i] / latencies.length) * 100
|
|
49
|
-
}));
|
|
50
|
-
}
|
|
51
|
-
// ============================================================================
|
|
52
|
-
// Worker Benchmarks
|
|
53
|
-
// ============================================================================
|
|
54
|
-
export class WorkerBenchmarks {
|
|
55
|
-
results = [];
|
|
56
|
-
/**
|
|
57
|
-
* Benchmark trigger detection speed
|
|
58
|
-
*/
|
|
59
|
-
async benchmarkTriggerDetection(iterations = 1000) {
|
|
60
|
-
const prompts = [
|
|
61
|
-
'ultralearn the authentication system architecture',
|
|
62
|
-
'optimize the database query performance',
|
|
63
|
-
'audit security vulnerabilities in the payment module',
|
|
64
|
-
'benchmark the API response times',
|
|
65
|
-
'testgaps in the user module tests',
|
|
66
|
-
'document the REST API endpoints',
|
|
67
|
-
'deepdive into the message queue implementation',
|
|
68
|
-
'refactor the UserService class for better maintainability',
|
|
69
|
-
'Please help me write some code', // No trigger
|
|
70
|
-
'How does this function work?' // No trigger
|
|
71
|
-
];
|
|
72
|
-
const latencies = [];
|
|
73
|
-
const memStart = getMemoryUsageMB();
|
|
74
|
-
// Import detector dynamically to avoid circular deps
|
|
75
|
-
const { getTriggerDetector } = await import('./trigger-detector.js');
|
|
76
|
-
const detector = getTriggerDetector();
|
|
77
|
-
for (let i = 0; i < iterations; i++) {
|
|
78
|
-
const prompt = prompts[i % prompts.length];
|
|
79
|
-
const start = performance.now();
|
|
80
|
-
detector.detect(prompt);
|
|
81
|
-
latencies.push(performance.now() - start);
|
|
82
|
-
}
|
|
83
|
-
const sorted = [...latencies].sort((a, b) => a - b);
|
|
84
|
-
const memEnd = getMemoryUsageMB();
|
|
85
|
-
const result = {
|
|
86
|
-
name: 'Trigger Detection',
|
|
87
|
-
operation: 'detect',
|
|
88
|
-
count: iterations,
|
|
89
|
-
totalTimeMs: latencies.reduce((a, b) => a + b, 0),
|
|
90
|
-
avgTimeMs: latencies.reduce((a, b) => a + b, 0) / latencies.length,
|
|
91
|
-
minMs: sorted[0],
|
|
92
|
-
maxMs: sorted[sorted.length - 1],
|
|
93
|
-
p50Ms: calculatePercentile(sorted, 50),
|
|
94
|
-
p95Ms: calculatePercentile(sorted, 95),
|
|
95
|
-
p99Ms: calculatePercentile(sorted, 99),
|
|
96
|
-
throughput: (iterations / (latencies.reduce((a, b) => a + b, 0) / 1000)),
|
|
97
|
-
memoryDeltaMB: memEnd - memStart,
|
|
98
|
-
passed: calculatePercentile(sorted, 95) < 5, // Target: p95 < 5ms
|
|
99
|
-
target: 5,
|
|
100
|
-
details: {
|
|
101
|
-
histogram: createLatencyHistogram(latencies),
|
|
102
|
-
promptsWithTriggers: 8,
|
|
103
|
-
promptsWithoutTriggers: 2
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
this.results.push(result);
|
|
107
|
-
return result;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Benchmark worker registry operations
|
|
111
|
-
*/
|
|
112
|
-
async benchmarkRegistryOperations(iterations = 500) {
|
|
113
|
-
const triggers = ['ultralearn', 'optimize', 'audit', 'benchmark', 'testgaps'];
|
|
114
|
-
const sessionId = `benchmark-${Date.now()}`;
|
|
115
|
-
const createLatencies = [];
|
|
116
|
-
const getLatencies = [];
|
|
117
|
-
const updateLatencies = [];
|
|
118
|
-
const workerIds = [];
|
|
119
|
-
const memStart = getMemoryUsageMB();
|
|
120
|
-
// Benchmark creates
|
|
121
|
-
for (let i = 0; i < iterations; i++) {
|
|
122
|
-
const trigger = triggers[i % triggers.length];
|
|
123
|
-
const start = performance.now();
|
|
124
|
-
const workerId = getWorkerRegistry().create(trigger, sessionId, `topic-${i}`);
|
|
125
|
-
createLatencies.push(performance.now() - start);
|
|
126
|
-
workerIds.push(workerId);
|
|
127
|
-
}
|
|
128
|
-
// Benchmark gets
|
|
129
|
-
for (const workerId of workerIds) {
|
|
130
|
-
const start = performance.now();
|
|
131
|
-
getWorkerRegistry().get(workerId);
|
|
132
|
-
getLatencies.push(performance.now() - start);
|
|
133
|
-
}
|
|
134
|
-
// Benchmark updates
|
|
135
|
-
for (const workerId of workerIds) {
|
|
136
|
-
const start = performance.now();
|
|
137
|
-
getWorkerRegistry().updateStatus(workerId, 'running', { progress: 50 });
|
|
138
|
-
updateLatencies.push(performance.now() - start);
|
|
139
|
-
}
|
|
140
|
-
const allLatencies = [...createLatencies, ...getLatencies, ...updateLatencies];
|
|
141
|
-
const sorted = [...allLatencies].sort((a, b) => a - b);
|
|
142
|
-
const memEnd = getMemoryUsageMB();
|
|
143
|
-
// Cleanup
|
|
144
|
-
for (const workerId of workerIds) {
|
|
145
|
-
try {
|
|
146
|
-
getWorkerRegistry().updateStatus(workerId, 'complete');
|
|
147
|
-
}
|
|
148
|
-
catch {
|
|
149
|
-
// Ignore cleanup errors
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
const result = {
|
|
153
|
-
name: 'Worker Registry',
|
|
154
|
-
operation: 'crud',
|
|
155
|
-
count: allLatencies.length,
|
|
156
|
-
totalTimeMs: allLatencies.reduce((a, b) => a + b, 0),
|
|
157
|
-
avgTimeMs: allLatencies.reduce((a, b) => a + b, 0) / allLatencies.length,
|
|
158
|
-
minMs: sorted[0],
|
|
159
|
-
maxMs: sorted[sorted.length - 1],
|
|
160
|
-
p50Ms: calculatePercentile(sorted, 50),
|
|
161
|
-
p95Ms: calculatePercentile(sorted, 95),
|
|
162
|
-
p99Ms: calculatePercentile(sorted, 99),
|
|
163
|
-
throughput: (allLatencies.length / (allLatencies.reduce((a, b) => a + b, 0) / 1000)),
|
|
164
|
-
memoryDeltaMB: memEnd - memStart,
|
|
165
|
-
passed: calculatePercentile(sorted, 95) < 10, // Target: p95 < 10ms
|
|
166
|
-
target: 10,
|
|
167
|
-
details: {
|
|
168
|
-
createAvgMs: createLatencies.reduce((a, b) => a + b, 0) / createLatencies.length,
|
|
169
|
-
getAvgMs: getLatencies.reduce((a, b) => a + b, 0) / getLatencies.length,
|
|
170
|
-
updateAvgMs: updateLatencies.reduce((a, b) => a + b, 0) / updateLatencies.length
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
|
-
this.results.push(result);
|
|
174
|
-
return result;
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Benchmark agent selection performance
|
|
178
|
-
*/
|
|
179
|
-
async benchmarkAgentSelection(iterations = 1000) {
|
|
180
|
-
const triggers = [
|
|
181
|
-
'ultralearn', 'optimize', 'audit', 'benchmark', 'testgaps',
|
|
182
|
-
'document', 'deepdive', 'refactor', 'map', 'preload'
|
|
183
|
-
];
|
|
184
|
-
const latencies = [];
|
|
185
|
-
const memStart = getMemoryUsageMB();
|
|
186
|
-
for (let i = 0; i < iterations; i++) {
|
|
187
|
-
const trigger = triggers[i % triggers.length];
|
|
188
|
-
const start = performance.now();
|
|
189
|
-
workerAgentIntegration.selectBestAgent(trigger);
|
|
190
|
-
latencies.push(performance.now() - start);
|
|
191
|
-
}
|
|
192
|
-
const sorted = [...latencies].sort((a, b) => a - b);
|
|
193
|
-
const memEnd = getMemoryUsageMB();
|
|
194
|
-
const result = {
|
|
195
|
-
name: 'Agent Selection',
|
|
196
|
-
operation: 'selectBestAgent',
|
|
197
|
-
count: iterations,
|
|
198
|
-
totalTimeMs: latencies.reduce((a, b) => a + b, 0),
|
|
199
|
-
avgTimeMs: latencies.reduce((a, b) => a + b, 0) / latencies.length,
|
|
200
|
-
minMs: sorted[0],
|
|
201
|
-
maxMs: sorted[sorted.length - 1],
|
|
202
|
-
p50Ms: calculatePercentile(sorted, 50),
|
|
203
|
-
p95Ms: calculatePercentile(sorted, 95),
|
|
204
|
-
p99Ms: calculatePercentile(sorted, 99),
|
|
205
|
-
throughput: (iterations / (latencies.reduce((a, b) => a + b, 0) / 1000)),
|
|
206
|
-
memoryDeltaMB: memEnd - memStart,
|
|
207
|
-
passed: calculatePercentile(sorted, 95) < 1, // Target: p95 < 1ms
|
|
208
|
-
target: 1,
|
|
209
|
-
details: {
|
|
210
|
-
triggersPerAgent: triggers.length
|
|
211
|
-
}
|
|
212
|
-
};
|
|
213
|
-
this.results.push(result);
|
|
214
|
-
return result;
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Benchmark model cache performance
|
|
218
|
-
*/
|
|
219
|
-
async benchmarkModelCache(iterations = 100) {
|
|
220
|
-
const latencies = [];
|
|
221
|
-
const memStart = getMemoryUsageMB();
|
|
222
|
-
// Simulate cache operations
|
|
223
|
-
for (let i = 0; i < iterations; i++) {
|
|
224
|
-
const start = performance.now();
|
|
225
|
-
// Test cache stats retrieval
|
|
226
|
-
modelCache.getStats();
|
|
227
|
-
// Test cache key generation
|
|
228
|
-
const key = `benchmark-model-${i % 10}`;
|
|
229
|
-
modelCache.has(key);
|
|
230
|
-
latencies.push(performance.now() - start);
|
|
231
|
-
}
|
|
232
|
-
const sorted = [...latencies].sort((a, b) => a - b);
|
|
233
|
-
const memEnd = getMemoryUsageMB();
|
|
234
|
-
const cacheStats = modelCache.getStats();
|
|
235
|
-
const result = {
|
|
236
|
-
name: 'Model Cache',
|
|
237
|
-
operation: 'cache-ops',
|
|
238
|
-
count: iterations,
|
|
239
|
-
totalTimeMs: latencies.reduce((a, b) => a + b, 0),
|
|
240
|
-
avgTimeMs: latencies.reduce((a, b) => a + b, 0) / latencies.length,
|
|
241
|
-
minMs: sorted[0],
|
|
242
|
-
maxMs: sorted[sorted.length - 1],
|
|
243
|
-
p50Ms: calculatePercentile(sorted, 50),
|
|
244
|
-
p95Ms: calculatePercentile(sorted, 95),
|
|
245
|
-
p99Ms: calculatePercentile(sorted, 99),
|
|
246
|
-
throughput: (iterations / (latencies.reduce((a, b) => a + b, 0) / 1000)),
|
|
247
|
-
memoryDeltaMB: memEnd - memStart,
|
|
248
|
-
passed: calculatePercentile(sorted, 95) < 0.5, // Target: p95 < 0.5ms
|
|
249
|
-
target: 0.5,
|
|
250
|
-
details: {
|
|
251
|
-
cacheHits: cacheStats.hits,
|
|
252
|
-
cacheMisses: cacheStats.misses,
|
|
253
|
-
cacheHitRate: cacheStats.hitRate,
|
|
254
|
-
cacheSize: cacheStats.size
|
|
255
|
-
}
|
|
256
|
-
};
|
|
257
|
-
this.results.push(result);
|
|
258
|
-
return result;
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* Benchmark concurrent worker handling
|
|
262
|
-
*/
|
|
263
|
-
async benchmarkConcurrentWorkers(workerCount = 10) {
|
|
264
|
-
const triggers = ['ultralearn', 'optimize', 'audit'];
|
|
265
|
-
const sessionId = `concurrent-${Date.now()}`;
|
|
266
|
-
const workerIds = [];
|
|
267
|
-
const memStart = getMemoryUsageMB();
|
|
268
|
-
const startTime = performance.now();
|
|
269
|
-
// Create workers concurrently
|
|
270
|
-
const createPromises = Array.from({ length: workerCount }, (_, i) => Promise.resolve().then(() => {
|
|
271
|
-
const trigger = triggers[i % triggers.length];
|
|
272
|
-
return getWorkerRegistry().create(trigger, sessionId, `concurrent-${i}`);
|
|
273
|
-
}));
|
|
274
|
-
const ids = await Promise.all(createPromises);
|
|
275
|
-
workerIds.push(...ids);
|
|
276
|
-
// Simulate concurrent status updates
|
|
277
|
-
const updatePromises = workerIds.map((id, i) => Promise.resolve().then(() => {
|
|
278
|
-
getWorkerRegistry().updateStatus(id, 'running', { progress: i * 10 });
|
|
279
|
-
}));
|
|
280
|
-
await Promise.all(updatePromises);
|
|
281
|
-
const totalTime = performance.now() - startTime;
|
|
282
|
-
const memEnd = getMemoryUsageMB();
|
|
283
|
-
// Cleanup
|
|
284
|
-
for (const workerId of workerIds) {
|
|
285
|
-
try {
|
|
286
|
-
getWorkerRegistry().updateStatus(workerId, 'complete');
|
|
287
|
-
}
|
|
288
|
-
catch {
|
|
289
|
-
// Ignore
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
const result = {
|
|
293
|
-
name: 'Concurrent Workers',
|
|
294
|
-
operation: 'parallel-create-update',
|
|
295
|
-
count: workerCount * 2, // Creates + updates
|
|
296
|
-
totalTimeMs: totalTime,
|
|
297
|
-
avgTimeMs: totalTime / (workerCount * 2),
|
|
298
|
-
minMs: totalTime / (workerCount * 2),
|
|
299
|
-
maxMs: totalTime,
|
|
300
|
-
p50Ms: totalTime / 2,
|
|
301
|
-
p95Ms: totalTime,
|
|
302
|
-
p99Ms: totalTime,
|
|
303
|
-
throughput: ((workerCount * 2) / (totalTime / 1000)),
|
|
304
|
-
memoryDeltaMB: memEnd - memStart,
|
|
305
|
-
passed: totalTime < 1000, // Target: < 1s for all concurrent ops
|
|
306
|
-
target: 1000,
|
|
307
|
-
details: {
|
|
308
|
-
workerCount,
|
|
309
|
-
avgPerWorker: totalTime / workerCount
|
|
310
|
-
}
|
|
311
|
-
};
|
|
312
|
-
this.results.push(result);
|
|
313
|
-
return result;
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* Benchmark memory key generation
|
|
317
|
-
*/
|
|
318
|
-
async benchmarkMemoryKeyGeneration(iterations = 5000) {
|
|
319
|
-
const triggers = ['ultralearn', 'optimize', 'audit', 'benchmark'];
|
|
320
|
-
const topics = ['auth', 'payment', 'user', 'api', 'database'];
|
|
321
|
-
const phases = ['discovery', 'analysis', 'extraction', 'storage'];
|
|
322
|
-
const latencies = [];
|
|
323
|
-
const memStart = getMemoryUsageMB();
|
|
324
|
-
for (let i = 0; i < iterations; i++) {
|
|
325
|
-
const trigger = triggers[i % triggers.length];
|
|
326
|
-
const topic = topics[i % topics.length];
|
|
327
|
-
const phase = phases[i % phases.length];
|
|
328
|
-
const start = performance.now();
|
|
329
|
-
workerAgentIntegration.generateMemoryKey(trigger, topic, phase);
|
|
330
|
-
latencies.push(performance.now() - start);
|
|
331
|
-
}
|
|
332
|
-
const sorted = [...latencies].sort((a, b) => a - b);
|
|
333
|
-
const memEnd = getMemoryUsageMB();
|
|
334
|
-
const result = {
|
|
335
|
-
name: 'Memory Key Generation',
|
|
336
|
-
operation: 'generateMemoryKey',
|
|
337
|
-
count: iterations,
|
|
338
|
-
totalTimeMs: latencies.reduce((a, b) => a + b, 0),
|
|
339
|
-
avgTimeMs: latencies.reduce((a, b) => a + b, 0) / latencies.length,
|
|
340
|
-
minMs: sorted[0],
|
|
341
|
-
maxMs: sorted[sorted.length - 1],
|
|
342
|
-
p50Ms: calculatePercentile(sorted, 50),
|
|
343
|
-
p95Ms: calculatePercentile(sorted, 95),
|
|
344
|
-
p99Ms: calculatePercentile(sorted, 99),
|
|
345
|
-
throughput: (iterations / (latencies.reduce((a, b) => a + b, 0) / 1000)),
|
|
346
|
-
memoryDeltaMB: memEnd - memStart,
|
|
347
|
-
passed: calculatePercentile(sorted, 95) < 0.1, // Target: p95 < 0.1ms
|
|
348
|
-
target: 0.1,
|
|
349
|
-
details: {
|
|
350
|
-
uniquePatterns: triggers.length * topics.length * phases.length
|
|
351
|
-
}
|
|
352
|
-
};
|
|
353
|
-
this.results.push(result);
|
|
354
|
-
return result;
|
|
355
|
-
}
|
|
356
|
-
/**
|
|
357
|
-
* Run full benchmark suite
|
|
358
|
-
*/
|
|
359
|
-
async runFullSuite() {
|
|
360
|
-
this.results = [];
|
|
361
|
-
const startTime = Date.now();
|
|
362
|
-
const memStart = getMemoryUsageMB();
|
|
363
|
-
console.log('\nš Running Worker Benchmark Suite\n');
|
|
364
|
-
console.log('ā'.repeat(60));
|
|
365
|
-
// Run all benchmarks
|
|
366
|
-
console.log('\nš Trigger Detection...');
|
|
367
|
-
await this.benchmarkTriggerDetection();
|
|
368
|
-
console.log('š¾ Worker Registry...');
|
|
369
|
-
await this.benchmarkRegistryOperations();
|
|
370
|
-
console.log('š¤ Agent Selection...');
|
|
371
|
-
await this.benchmarkAgentSelection();
|
|
372
|
-
console.log('š¦ Model Cache...');
|
|
373
|
-
await this.benchmarkModelCache();
|
|
374
|
-
console.log('ā” Concurrent Workers...');
|
|
375
|
-
await this.benchmarkConcurrentWorkers();
|
|
376
|
-
console.log('š Memory Key Generation...');
|
|
377
|
-
await this.benchmarkMemoryKeyGeneration();
|
|
378
|
-
const totalDuration = Date.now() - startTime;
|
|
379
|
-
const peakMemory = getMemoryUsageMB() - memStart;
|
|
380
|
-
const passed = this.results.filter(r => r.passed).length;
|
|
381
|
-
const avgLatency = this.results.reduce((sum, r) => sum + r.avgTimeMs, 0) / this.results.length;
|
|
382
|
-
const suite = {
|
|
383
|
-
name: 'Worker System Benchmarks',
|
|
384
|
-
description: 'Comprehensive performance tests for agentic-flow worker system',
|
|
385
|
-
timestamp: startTime,
|
|
386
|
-
results: this.results,
|
|
387
|
-
summary: {
|
|
388
|
-
totalTests: this.results.length,
|
|
389
|
-
passed,
|
|
390
|
-
failed: this.results.length - passed,
|
|
391
|
-
avgLatencyMs: avgLatency,
|
|
392
|
-
totalDurationMs: totalDuration,
|
|
393
|
-
peakMemoryMB: peakMemory
|
|
394
|
-
}
|
|
395
|
-
};
|
|
396
|
-
this.printResults(suite);
|
|
397
|
-
return suite;
|
|
398
|
-
}
|
|
399
|
-
/**
|
|
400
|
-
* Print formatted results
|
|
401
|
-
*/
|
|
402
|
-
printResults(suite) {
|
|
403
|
-
console.log('\n' + 'ā'.repeat(60));
|
|
404
|
-
console.log('š BENCHMARK RESULTS');
|
|
405
|
-
console.log('ā'.repeat(60));
|
|
406
|
-
for (const result of suite.results) {
|
|
407
|
-
const status = result.passed ? 'ā
' : 'ā';
|
|
408
|
-
const target = result.target ? ` (target: ${result.target}ms)` : '';
|
|
409
|
-
console.log(`\n${status} ${result.name}`);
|
|
410
|
-
console.log(` Operation: ${result.operation}`);
|
|
411
|
-
console.log(` Count: ${result.count.toLocaleString()}`);
|
|
412
|
-
console.log(` Avg: ${result.avgTimeMs.toFixed(3)}ms | p95: ${result.p95Ms.toFixed(3)}ms${target}`);
|
|
413
|
-
console.log(` Throughput: ${result.throughput.toFixed(0)} ops/s`);
|
|
414
|
-
console.log(` Memory Ī: ${result.memoryDeltaMB.toFixed(2)}MB`);
|
|
415
|
-
}
|
|
416
|
-
console.log('\n' + 'ā'.repeat(60));
|
|
417
|
-
console.log('š SUMMARY');
|
|
418
|
-
console.log('ā'.repeat(60));
|
|
419
|
-
console.log(`Total Tests: ${suite.summary.totalTests}`);
|
|
420
|
-
console.log(`Passed: ${suite.summary.passed} | Failed: ${suite.summary.failed}`);
|
|
421
|
-
console.log(`Avg Latency: ${suite.summary.avgLatencyMs.toFixed(3)}ms`);
|
|
422
|
-
console.log(`Total Duration: ${suite.summary.totalDurationMs}ms`);
|
|
423
|
-
console.log(`Peak Memory: ${suite.summary.peakMemoryMB.toFixed(2)}MB`);
|
|
424
|
-
console.log('ā'.repeat(60) + '\n');
|
|
425
|
-
}
|
|
426
|
-
/**
|
|
427
|
-
* Get last results
|
|
428
|
-
*/
|
|
429
|
-
getResults() {
|
|
430
|
-
return this.results;
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
// Singleton instance
|
|
434
|
-
export const workerBenchmarks = new WorkerBenchmarks();
|
|
435
|
-
// ============================================================================
|
|
436
|
-
// CLI Runner
|
|
437
|
-
// ============================================================================
|
|
438
|
-
export async function runBenchmarks() {
|
|
439
|
-
return workerBenchmarks.runFullSuite();
|
|
440
|
-
}
|
|
441
|
-
// Run if executed directly
|
|
442
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
443
|
-
runBenchmarks()
|
|
444
|
-
.then(suite => {
|
|
445
|
-
process.exit(suite.summary.failed > 0 ? 1 : 0);
|
|
446
|
-
})
|
|
447
|
-
.catch(err => {
|
|
448
|
-
console.error('Benchmark error:', err);
|
|
449
|
-
process.exit(1);
|
|
450
|
-
});
|
|
451
|
-
}
|
|
452
|
-
//# sourceMappingURL=worker-benchmarks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker-benchmarks.js","sourceRoot":"","sources":["../../src/workers/worker-benchmarks.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Worker Benchmark System\n *\n * Comprehensive performance benchmarking for the worker system including:\n * - Dispatch latency measurement\n * - Phase execution timing\n * - Memory tracking\n * - Throughput analysis\n * - Integration with agents\n */\n\nimport { WorkerTrigger, WorkerInfo } from './types.js';\nimport { getWorkerRegistry } from './worker-registry.js';\nimport { workerAgentIntegration } from './worker-agent-integration.js';\nimport { modelCache } from '../utils/model-cache.js';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface BenchmarkResult {\n name: string;\n operation: string;\n count: number;\n totalTimeMs: number;\n avgTimeMs: number;\n minMs: number;\n maxMs: number;\n p50Ms: number;\n p95Ms: number;\n p99Ms: number;\n throughput: number;\n memoryDeltaMB: number;\n passed: boolean;\n target?: number;\n details?: Record<string, unknown>;\n}\n\nexport interface BenchmarkSuite {\n name: string;\n description: string;\n timestamp: number;\n results: BenchmarkResult[];\n summary: {\n totalTests: number;\n passed: number;\n failed: number;\n avgLatencyMs: number;\n totalDurationMs: number;\n peakMemoryMB: number;\n };\n}\n\nexport interface LatencyBucket {\n range: string;\n count: number;\n percentage: number;\n}\n\n// ============================================================================\n// Benchmark Utilities\n// ============================================================================\n\nfunction calculatePercentile(sorted: number[], percentile: number): number {\n const index = Math.ceil((percentile / 100) * sorted.length) - 1;\n return sorted[Math.max(0, index)] || 0;\n}\n\nfunction getMemoryUsageMB(): number {\n const mem = process.memoryUsage();\n return mem.heapUsed / 1024 / 1024;\n}\n\nfunction createLatencyHistogram(latencies: number[]): LatencyBucket[] {\n const buckets = [\n { max: 1, label: '<1ms' },\n { max: 5, label: '1-5ms' },\n { max: 10, label: '5-10ms' },\n { max: 50, label: '10-50ms' },\n { max: 100, label: '50-100ms' },\n { max: 500, label: '100-500ms' },\n { max: 1000, label: '500ms-1s' },\n { max: Infinity, label: '>1s' }\n ];\n\n const counts = new Array(buckets.length).fill(0);\n\n for (const latency of latencies) {\n for (let i = 0; i < buckets.length; i++) {\n if (latency <= buckets[i].max) {\n counts[i]++;\n break;\n }\n }\n }\n\n return buckets.map((bucket, i) => ({\n range: bucket.label,\n count: counts[i],\n percentage: (counts[i] / latencies.length) * 100\n }));\n}\n\n// ============================================================================\n// Worker Benchmarks\n// ============================================================================\n\nexport class WorkerBenchmarks {\n private results: BenchmarkResult[] = [];\n\n /**\n * Benchmark trigger detection speed\n */\n async benchmarkTriggerDetection(iterations: number = 1000): Promise<BenchmarkResult> {\n const prompts = [\n 'ultralearn the authentication system architecture',\n 'optimize the database query performance',\n 'audit security vulnerabilities in the payment module',\n 'benchmark the API response times',\n 'testgaps in the user module tests',\n 'document the REST API endpoints',\n 'deepdive into the message queue implementation',\n 'refactor the UserService class for better maintainability',\n 'Please help me write some code', // No trigger\n 'How does this function work?' // No trigger\n ];\n\n const latencies: number[] = [];\n const memStart = getMemoryUsageMB();\n\n // Import detector dynamically to avoid circular deps\n const { getTriggerDetector } = await import('./trigger-detector.js');\n const detector = getTriggerDetector();\n\n for (let i = 0; i < iterations; i++) {\n const prompt = prompts[i % prompts.length];\n const start = performance.now();\n detector.detect(prompt);\n latencies.push(performance.now() - start);\n }\n\n const sorted = [...latencies].sort((a, b) => a - b);\n const memEnd = getMemoryUsageMB();\n\n const result: BenchmarkResult = {\n name: 'Trigger Detection',\n operation: 'detect',\n count: iterations,\n totalTimeMs: latencies.reduce((a, b) => a + b, 0),\n avgTimeMs: latencies.reduce((a, b) => a + b, 0) / latencies.length,\n minMs: sorted[0],\n maxMs: sorted[sorted.length - 1],\n p50Ms: calculatePercentile(sorted, 50),\n p95Ms: calculatePercentile(sorted, 95),\n p99Ms: calculatePercentile(sorted, 99),\n throughput: (iterations / (latencies.reduce((a, b) => a + b, 0) / 1000)),\n memoryDeltaMB: memEnd - memStart,\n passed: calculatePercentile(sorted, 95) < 5, // Target: p95 < 5ms\n target: 5,\n details: {\n histogram: createLatencyHistogram(latencies),\n promptsWithTriggers: 8,\n promptsWithoutTriggers: 2\n }\n };\n\n this.results.push(result);\n return result;\n }\n\n /**\n * Benchmark worker registry operations\n */\n async benchmarkRegistryOperations(iterations: number = 500): Promise<BenchmarkResult> {\n const triggers: WorkerTrigger[] = ['ultralearn', 'optimize', 'audit', 'benchmark', 'testgaps'];\n const sessionId = `benchmark-${Date.now()}`;\n\n const createLatencies: number[] = [];\n const getLatencies: number[] = [];\n const updateLatencies: number[] = [];\n const workerIds: string[] = [];\n\n const memStart = getMemoryUsageMB();\n\n // Benchmark creates\n for (let i = 0; i < iterations; i++) {\n const trigger = triggers[i % triggers.length];\n const start = performance.now();\n const workerId = getWorkerRegistry().create(trigger, sessionId, `topic-${i}`);\n createLatencies.push(performance.now() - start);\n workerIds.push(workerId);\n }\n\n // Benchmark gets\n for (const workerId of workerIds) {\n const start = performance.now();\n getWorkerRegistry().get(workerId);\n getLatencies.push(performance.now() - start);\n }\n\n // Benchmark updates\n for (const workerId of workerIds) {\n const start = performance.now();\n getWorkerRegistry().updateStatus(workerId, 'running', { progress: 50 });\n updateLatencies.push(performance.now() - start);\n }\n\n const allLatencies = [...createLatencies, ...getLatencies, ...updateLatencies];\n const sorted = [...allLatencies].sort((a, b) => a - b);\n const memEnd = getMemoryUsageMB();\n\n // Cleanup\n for (const workerId of workerIds) {\n try {\n getWorkerRegistry().updateStatus(workerId, 'complete');\n } catch {\n // Ignore cleanup errors\n }\n }\n\n const result: BenchmarkResult = {\n name: 'Worker Registry',\n operation: 'crud',\n count: allLatencies.length,\n totalTimeMs: allLatencies.reduce((a, b) => a + b, 0),\n avgTimeMs: allLatencies.reduce((a, b) => a + b, 0) / allLatencies.length,\n minMs: sorted[0],\n maxMs: sorted[sorted.length - 1],\n p50Ms: calculatePercentile(sorted, 50),\n p95Ms: calculatePercentile(sorted, 95),\n p99Ms: calculatePercentile(sorted, 99),\n throughput: (allLatencies.length / (allLatencies.reduce((a, b) => a + b, 0) / 1000)),\n memoryDeltaMB: memEnd - memStart,\n passed: calculatePercentile(sorted, 95) < 10, // Target: p95 < 10ms\n target: 10,\n details: {\n createAvgMs: createLatencies.reduce((a, b) => a + b, 0) / createLatencies.length,\n getAvgMs: getLatencies.reduce((a, b) => a + b, 0) / getLatencies.length,\n updateAvgMs: updateLatencies.reduce((a, b) => a + b, 0) / updateLatencies.length\n }\n };\n\n this.results.push(result);\n return result;\n }\n\n /**\n * Benchmark agent selection performance\n */\n async benchmarkAgentSelection(iterations: number = 1000): Promise<BenchmarkResult> {\n const triggers: WorkerTrigger[] = [\n 'ultralearn', 'optimize', 'audit', 'benchmark', 'testgaps',\n 'document', 'deepdive', 'refactor', 'map', 'preload'\n ];\n\n const latencies: number[] = [];\n const memStart = getMemoryUsageMB();\n\n for (let i = 0; i < iterations; i++) {\n const trigger = triggers[i % triggers.length];\n const start = performance.now();\n workerAgentIntegration.selectBestAgent(trigger);\n latencies.push(performance.now() - start);\n }\n\n const sorted = [...latencies].sort((a, b) => a - b);\n const memEnd = getMemoryUsageMB();\n\n const result: BenchmarkResult = {\n name: 'Agent Selection',\n operation: 'selectBestAgent',\n count: iterations,\n totalTimeMs: latencies.reduce((a, b) => a + b, 0),\n avgTimeMs: latencies.reduce((a, b) => a + b, 0) / latencies.length,\n minMs: sorted[0],\n maxMs: sorted[sorted.length - 1],\n p50Ms: calculatePercentile(sorted, 50),\n p95Ms: calculatePercentile(sorted, 95),\n p99Ms: calculatePercentile(sorted, 99),\n throughput: (iterations / (latencies.reduce((a, b) => a + b, 0) / 1000)),\n memoryDeltaMB: memEnd - memStart,\n passed: calculatePercentile(sorted, 95) < 1, // Target: p95 < 1ms\n target: 1,\n details: {\n triggersPerAgent: triggers.length\n }\n };\n\n this.results.push(result);\n return result;\n }\n\n /**\n * Benchmark model cache performance\n */\n async benchmarkModelCache(iterations: number = 100): Promise<BenchmarkResult> {\n const latencies: number[] = [];\n const memStart = getMemoryUsageMB();\n\n // Simulate cache operations\n for (let i = 0; i < iterations; i++) {\n const start = performance.now();\n\n // Test cache stats retrieval\n modelCache.getStats();\n\n // Test cache key generation\n const key = `benchmark-model-${i % 10}`;\n modelCache.has(key);\n\n latencies.push(performance.now() - start);\n }\n\n const sorted = [...latencies].sort((a, b) => a - b);\n const memEnd = getMemoryUsageMB();\n const cacheStats = modelCache.getStats();\n\n const result: BenchmarkResult = {\n name: 'Model Cache',\n operation: 'cache-ops',\n count: iterations,\n totalTimeMs: latencies.reduce((a, b) => a + b, 0),\n avgTimeMs: latencies.reduce((a, b) => a + b, 0) / latencies.length,\n minMs: sorted[0],\n maxMs: sorted[sorted.length - 1],\n p50Ms: calculatePercentile(sorted, 50),\n p95Ms: calculatePercentile(sorted, 95),\n p99Ms: calculatePercentile(sorted, 99),\n throughput: (iterations / (latencies.reduce((a, b) => a + b, 0) / 1000)),\n memoryDeltaMB: memEnd - memStart,\n passed: calculatePercentile(sorted, 95) < 0.5, // Target: p95 < 0.5ms\n target: 0.5,\n details: {\n cacheHits: cacheStats.hits,\n cacheMisses: cacheStats.misses,\n cacheHitRate: cacheStats.hitRate,\n cacheSize: cacheStats.size\n }\n };\n\n this.results.push(result);\n return result;\n }\n\n /**\n * Benchmark concurrent worker handling\n */\n async benchmarkConcurrentWorkers(workerCount: number = 10): Promise<BenchmarkResult> {\n const triggers: WorkerTrigger[] = ['ultralearn', 'optimize', 'audit'];\n const sessionId = `concurrent-${Date.now()}`;\n const workerIds: string[] = [];\n\n const memStart = getMemoryUsageMB();\n const startTime = performance.now();\n\n // Create workers concurrently\n const createPromises = Array.from({ length: workerCount }, (_, i) =>\n Promise.resolve().then(() => {\n const trigger = triggers[i % triggers.length];\n return getWorkerRegistry().create(trigger, sessionId, `concurrent-${i}`);\n })\n );\n\n const ids = await Promise.all(createPromises);\n workerIds.push(...ids);\n\n // Simulate concurrent status updates\n const updatePromises = workerIds.map((id, i) =>\n Promise.resolve().then(() => {\n getWorkerRegistry().updateStatus(id, 'running', { progress: i * 10 });\n })\n );\n\n await Promise.all(updatePromises);\n\n const totalTime = performance.now() - startTime;\n const memEnd = getMemoryUsageMB();\n\n // Cleanup\n for (const workerId of workerIds) {\n try {\n getWorkerRegistry().updateStatus(workerId, 'complete');\n } catch {\n // Ignore\n }\n }\n\n const result: BenchmarkResult = {\n name: 'Concurrent Workers',\n operation: 'parallel-create-update',\n count: workerCount * 2, // Creates + updates\n totalTimeMs: totalTime,\n avgTimeMs: totalTime / (workerCount * 2),\n minMs: totalTime / (workerCount * 2),\n maxMs: totalTime,\n p50Ms: totalTime / 2,\n p95Ms: totalTime,\n p99Ms: totalTime,\n throughput: ((workerCount * 2) / (totalTime / 1000)),\n memoryDeltaMB: memEnd - memStart,\n passed: totalTime < 1000, // Target: < 1s for all concurrent ops\n target: 1000,\n details: {\n workerCount,\n avgPerWorker: totalTime / workerCount\n }\n };\n\n this.results.push(result);\n return result;\n }\n\n /**\n * Benchmark memory key generation\n */\n async benchmarkMemoryKeyGeneration(iterations: number = 5000): Promise<BenchmarkResult> {\n const triggers: WorkerTrigger[] = ['ultralearn', 'optimize', 'audit', 'benchmark'];\n const topics = ['auth', 'payment', 'user', 'api', 'database'];\n const phases = ['discovery', 'analysis', 'extraction', 'storage'];\n\n const latencies: number[] = [];\n const memStart = getMemoryUsageMB();\n\n for (let i = 0; i < iterations; i++) {\n const trigger = triggers[i % triggers.length];\n const topic = topics[i % topics.length];\n const phase = phases[i % phases.length];\n\n const start = performance.now();\n workerAgentIntegration.generateMemoryKey(trigger, topic, phase);\n latencies.push(performance.now() - start);\n }\n\n const sorted = [...latencies].sort((a, b) => a - b);\n const memEnd = getMemoryUsageMB();\n\n const result: BenchmarkResult = {\n name: 'Memory Key Generation',\n operation: 'generateMemoryKey',\n count: iterations,\n totalTimeMs: latencies.reduce((a, b) => a + b, 0),\n avgTimeMs: latencies.reduce((a, b) => a + b, 0) / latencies.length,\n minMs: sorted[0],\n maxMs: sorted[sorted.length - 1],\n p50Ms: calculatePercentile(sorted, 50),\n p95Ms: calculatePercentile(sorted, 95),\n p99Ms: calculatePercentile(sorted, 99),\n throughput: (iterations / (latencies.reduce((a, b) => a + b, 0) / 1000)),\n memoryDeltaMB: memEnd - memStart,\n passed: calculatePercentile(sorted, 95) < 0.1, // Target: p95 < 0.1ms\n target: 0.1,\n details: {\n uniquePatterns: triggers.length * topics.length * phases.length\n }\n };\n\n this.results.push(result);\n return result;\n }\n\n /**\n * Run full benchmark suite\n */\n async runFullSuite(): Promise<BenchmarkSuite> {\n this.results = [];\n const startTime = Date.now();\n const memStart = getMemoryUsageMB();\n\n console.log('\\nš Running Worker Benchmark Suite\\n');\n console.log('ā'.repeat(60));\n\n // Run all benchmarks\n console.log('\\nš Trigger Detection...');\n await this.benchmarkTriggerDetection();\n\n console.log('š¾ Worker Registry...');\n await this.benchmarkRegistryOperations();\n\n console.log('š¤ Agent Selection...');\n await this.benchmarkAgentSelection();\n\n console.log('š¦ Model Cache...');\n await this.benchmarkModelCache();\n\n console.log('ā” Concurrent Workers...');\n await this.benchmarkConcurrentWorkers();\n\n console.log('š Memory Key Generation...');\n await this.benchmarkMemoryKeyGeneration();\n\n const totalDuration = Date.now() - startTime;\n const peakMemory = getMemoryUsageMB() - memStart;\n\n const passed = this.results.filter(r => r.passed).length;\n const avgLatency = this.results.reduce((sum, r) => sum + r.avgTimeMs, 0) / this.results.length;\n\n const suite: BenchmarkSuite = {\n name: 'Worker System Benchmarks',\n description: 'Comprehensive performance tests for agentic-flow worker system',\n timestamp: startTime,\n results: this.results,\n summary: {\n totalTests: this.results.length,\n passed,\n failed: this.results.length - passed,\n avgLatencyMs: avgLatency,\n totalDurationMs: totalDuration,\n peakMemoryMB: peakMemory\n }\n };\n\n this.printResults(suite);\n return suite;\n }\n\n /**\n * Print formatted results\n */\n private printResults(suite: BenchmarkSuite): void {\n console.log('\\n' + 'ā'.repeat(60));\n console.log('š BENCHMARK RESULTS');\n console.log('ā'.repeat(60));\n\n for (const result of suite.results) {\n const status = result.passed ? 'ā
' : 'ā';\n const target = result.target ? ` (target: ${result.target}ms)` : '';\n\n console.log(`\\n${status} ${result.name}`);\n console.log(` Operation: ${result.operation}`);\n console.log(` Count: ${result.count.toLocaleString()}`);\n console.log(` Avg: ${result.avgTimeMs.toFixed(3)}ms | p95: ${result.p95Ms.toFixed(3)}ms${target}`);\n console.log(` Throughput: ${result.throughput.toFixed(0)} ops/s`);\n console.log(` Memory Ī: ${result.memoryDeltaMB.toFixed(2)}MB`);\n }\n\n console.log('\\n' + 'ā'.repeat(60));\n console.log('š SUMMARY');\n console.log('ā'.repeat(60));\n console.log(`Total Tests: ${suite.summary.totalTests}`);\n console.log(`Passed: ${suite.summary.passed} | Failed: ${suite.summary.failed}`);\n console.log(`Avg Latency: ${suite.summary.avgLatencyMs.toFixed(3)}ms`);\n console.log(`Total Duration: ${suite.summary.totalDurationMs}ms`);\n console.log(`Peak Memory: ${suite.summary.peakMemoryMB.toFixed(2)}MB`);\n console.log('ā'.repeat(60) + '\\n');\n }\n\n /**\n * Get last results\n */\n getResults(): BenchmarkResult[] {\n return this.results;\n }\n}\n\n// Singleton instance\nexport const workerBenchmarks = new WorkerBenchmarks();\n\n// ============================================================================\n// CLI Runner\n// ============================================================================\n\nexport async function runBenchmarks(): Promise<BenchmarkSuite> {\n return workerBenchmarks.runFullSuite();\n}\n\n// Run if executed directly\nif (import.meta.url === `file://${process.argv[1]}`) {\n runBenchmarks()\n .then(suite => {\n process.exit(suite.summary.failed > 0 ? 1 : 0);\n })\n .catch(err => {\n console.error('Benchmark error:', err);\n process.exit(1);\n });\n}\n"]}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WorkerRegistry - SQLite-backed persistence for background workers
|
|
3
|
-
*
|
|
4
|
-
* Supports both better-sqlite3 (native) and sql.js (WASM) backends.
|
|
5
|
-
* Automatically falls back to sql.js on Windows or when native fails.
|
|
6
|
-
*/
|
|
7
|
-
import { WorkerId, WorkerTrigger, WorkerStatus, WorkerInfo, WorkerMetrics } from './types.js';
|
|
8
|
-
export declare class WorkerRegistry {
|
|
9
|
-
private db;
|
|
10
|
-
private initialized;
|
|
11
|
-
private dbBackend;
|
|
12
|
-
private dbPath;
|
|
13
|
-
constructor(dbPath?: string);
|
|
14
|
-
private initializeSync;
|
|
15
|
-
private useMemoryFallback;
|
|
16
|
-
private initialize;
|
|
17
|
-
/**
|
|
18
|
-
* Create a new worker entry
|
|
19
|
-
*/
|
|
20
|
-
create(trigger: WorkerTrigger, sessionId: string, topic?: string | null): WorkerId;
|
|
21
|
-
/**
|
|
22
|
-
* Get worker by ID
|
|
23
|
-
*/
|
|
24
|
-
get(workerId: WorkerId): WorkerInfo | null;
|
|
25
|
-
/**
|
|
26
|
-
* Update worker status
|
|
27
|
-
*/
|
|
28
|
-
updateStatus(workerId: WorkerId, status: WorkerStatus, extra?: {
|
|
29
|
-
progress?: number;
|
|
30
|
-
currentPhase?: string;
|
|
31
|
-
error?: string;
|
|
32
|
-
results?: Record<string, unknown>;
|
|
33
|
-
}): void;
|
|
34
|
-
/**
|
|
35
|
-
* Increment memory deposits counter
|
|
36
|
-
*/
|
|
37
|
-
incrementMemoryDeposits(workerId: WorkerId, key?: string): void;
|
|
38
|
-
/**
|
|
39
|
-
* Update worker metrics
|
|
40
|
-
*/
|
|
41
|
-
updateMetrics(workerId: WorkerId, metrics: Partial<WorkerMetrics>): void;
|
|
42
|
-
/**
|
|
43
|
-
* Get all workers, optionally filtered
|
|
44
|
-
*/
|
|
45
|
-
getAll(options?: {
|
|
46
|
-
sessionId?: string;
|
|
47
|
-
status?: WorkerStatus | WorkerStatus[];
|
|
48
|
-
trigger?: WorkerTrigger;
|
|
49
|
-
limit?: number;
|
|
50
|
-
since?: number;
|
|
51
|
-
}): WorkerInfo[];
|
|
52
|
-
/**
|
|
53
|
-
* Get active workers (queued or running)
|
|
54
|
-
*/
|
|
55
|
-
getActive(sessionId?: string): WorkerInfo[];
|
|
56
|
-
/**
|
|
57
|
-
* Count workers by status
|
|
58
|
-
*/
|
|
59
|
-
countByStatus(sessionId?: string): Record<WorkerStatus, number>;
|
|
60
|
-
/**
|
|
61
|
-
* Get worker metrics
|
|
62
|
-
*/
|
|
63
|
-
getMetrics(workerId: WorkerId): WorkerMetrics | null;
|
|
64
|
-
/**
|
|
65
|
-
* Delete old workers
|
|
66
|
-
*/
|
|
67
|
-
cleanup(maxAge?: number): number;
|
|
68
|
-
/**
|
|
69
|
-
* Get aggregated stats for dashboard
|
|
70
|
-
*/
|
|
71
|
-
getStats(timeframe?: '1h' | '24h' | '7d'): {
|
|
72
|
-
total: number;
|
|
73
|
-
byStatus: Record<WorkerStatus, number>;
|
|
74
|
-
byTrigger: Record<string, number>;
|
|
75
|
-
avgDuration: number;
|
|
76
|
-
};
|
|
77
|
-
private countByTrigger;
|
|
78
|
-
private rowToWorkerInfo;
|
|
79
|
-
/**
|
|
80
|
-
* Close database connection
|
|
81
|
-
*/
|
|
82
|
-
close(): void;
|
|
83
|
-
}
|
|
84
|
-
export declare function getWorkerRegistry(): WorkerRegistry;
|
|
85
|
-
//# sourceMappingURL=worker-registry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker-registry.d.ts","sourceRoot":"","sources":["../../src/workers/worker-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EACL,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,UAAU,EACV,aAAa,EACd,MAAM,YAAY,CAAC;AAiHpB,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAa;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAoD;IACrE,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,CAAC,EAAE,MAAM;IAU3B,OAAO,CAAC,cAAc;IA8CtB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,UAAU;IA8ClB;;OAEG;IACH,MAAM,CACJ,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,QAAQ;IAoBX;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI;IAW1C;;OAEG;IACH,YAAY,CACV,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,EACpB,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,GACA,IAAI;IA6CP;;OAEG;IACH,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAW/D;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IA0CxE;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;QACvC,OAAO,CAAC,EAAE,aAAa,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,UAAU,EAAE;IA8ChB;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE;IAO3C;;OAEG;IACH,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC;IAiC/D;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,GAAG,IAAI;IAmBpD;;OAEG;IACH,OAAO,CAAC,MAAM,GAAE,MAA4B,GAAG,MAAM;IAYrD;;OAEG;IACH,QAAQ,CAAC,SAAS,GAAE,IAAI,GAAG,KAAK,GAAG,IAAY,GAAG;QAChD,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,WAAW,EAAE,MAAM,CAAC;KACrB;IAyBD,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,eAAe;IA6BvB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAKD,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD"}
|