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.
Files changed (322) hide show
  1. package/.claude/agents/test-neural.md +14 -0
  2. package/.claude/settings.json +9 -133
  3. package/README.md +624 -1776
  4. package/dist/.tsbuildinfo +1 -1
  5. package/dist/billing/mcp/tools.js +0 -1
  6. package/dist/billing/mcp/tools.js.map +1 -1
  7. package/dist/cli/commands/hooks.d.ts.map +1 -1
  8. package/dist/cli/commands/hooks.js +4 -79
  9. package/dist/cli/commands/hooks.js.map +1 -1
  10. package/dist/cli-proxy.js +1 -89
  11. package/dist/cli-proxy.js.map +1 -1
  12. package/dist/core/agentdb-fast.js +3 -3
  13. package/dist/core/agentdb-fast.js.map +1 -1
  14. package/dist/core/agentdb-wrapper-enhanced.d.ts.map +1 -1
  15. package/dist/core/agentdb-wrapper-enhanced.js +4 -20
  16. package/dist/core/agentdb-wrapper-enhanced.js.map +1 -1
  17. package/dist/core/agentdb-wrapper.d.ts +2 -3
  18. package/dist/core/agentdb-wrapper.d.ts.map +1 -1
  19. package/dist/core/agentdb-wrapper.js +1 -15
  20. package/dist/core/agentdb-wrapper.js.map +1 -1
  21. package/dist/core/attention-native.d.ts +0 -4
  22. package/dist/core/attention-native.d.ts.map +1 -1
  23. package/dist/core/attention-native.js +2 -14
  24. package/dist/core/attention-native.js.map +1 -1
  25. package/dist/federation/SecurityManager.d.ts +2 -11
  26. package/dist/federation/SecurityManager.d.ts.map +1 -1
  27. package/dist/federation/SecurityManager.js +17 -50
  28. package/dist/federation/SecurityManager.js.map +1 -1
  29. package/dist/federation/integrations/supabase-adapter-debug.js +3 -3
  30. package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -1
  31. package/dist/hooks/swarm-learning-optimizer.js +5 -5
  32. package/dist/hooks/swarm-learning-optimizer.js.map +1 -1
  33. package/dist/intelligence/IntelligenceStore.d.ts +26 -35
  34. package/dist/intelligence/IntelligenceStore.d.ts.map +1 -1
  35. package/dist/intelligence/IntelligenceStore.js +123 -308
  36. package/dist/intelligence/IntelligenceStore.js.map +1 -1
  37. package/dist/intelligence/RuVectorIntelligence.d.ts +1 -26
  38. package/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -1
  39. package/dist/intelligence/RuVectorIntelligence.js +10 -49
  40. package/dist/intelligence/RuVectorIntelligence.js.map +1 -1
  41. package/dist/intelligence/agent-booster-enhanced.d.ts +0 -1
  42. package/dist/intelligence/agent-booster-enhanced.d.ts.map +1 -1
  43. package/dist/intelligence/agent-booster-enhanced.js +3 -24
  44. package/dist/intelligence/agent-booster-enhanced.js.map +1 -1
  45. package/dist/intelligence/index.d.ts +3 -29
  46. package/dist/intelligence/index.d.ts.map +1 -1
  47. package/dist/intelligence/index.js +3 -13
  48. package/dist/intelligence/index.js.map +1 -1
  49. package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
  50. package/dist/mcp/claudeFlowSdkServer.js +3 -9
  51. package/dist/mcp/claudeFlowSdkServer.js.map +1 -1
  52. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +5 -5
  53. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +1 -1
  54. package/dist/mcp/fastmcp/tools/swarm/init.d.ts.map +1 -1
  55. package/dist/mcp/fastmcp/tools/swarm/init.js +7 -36
  56. package/dist/mcp/fastmcp/tools/swarm/init.js.map +1 -1
  57. package/dist/mcp/fastmcp/tools/swarm/spawn.d.ts.map +1 -1
  58. package/dist/mcp/fastmcp/tools/swarm/spawn.js +8 -47
  59. package/dist/mcp/fastmcp/tools/swarm/spawn.js.map +1 -1
  60. package/dist/mcp/tools/agent-booster-tools.d.ts +1 -1
  61. package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
  62. package/dist/mcp/tools/agent-booster-tools.js +4 -10
  63. package/dist/mcp/tools/agent-booster-tools.js.map +1 -1
  64. package/dist/mcp/tools/sona-tools.d.ts.map +1 -1
  65. package/dist/mcp/tools/sona-tools.js +0 -6
  66. package/dist/mcp/tools/sona-tools.js.map +1 -1
  67. package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
  68. package/dist/optimizations/agent-booster-migration.js +2 -5
  69. package/dist/optimizations/agent-booster-migration.js.map +1 -1
  70. package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
  71. package/dist/proxy/anthropic-to-requesty.js.map +1 -1
  72. package/dist/proxy/quic-proxy.d.ts +1 -0
  73. package/dist/proxy/quic-proxy.d.ts.map +1 -1
  74. package/dist/proxy/quic-proxy.js +2 -2
  75. package/dist/proxy/quic-proxy.js.map +1 -1
  76. package/dist/reasoningbank/AdvancedMemory.js +1 -1
  77. package/dist/reasoningbank/AdvancedMemory.js.map +1 -1
  78. package/dist/reasoningbank/HybridBackend.d.ts.map +1 -1
  79. package/dist/reasoningbank/HybridBackend.js +5 -2
  80. package/dist/reasoningbank/HybridBackend.js.map +1 -1
  81. package/dist/reasoningbank/backend-selector.d.ts +1 -11
  82. package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
  83. package/dist/reasoningbank/backend-selector.js +5 -45
  84. package/dist/reasoningbank/backend-selector.js.map +1 -1
  85. package/dist/reasoningbank/core/consolidate.d.ts.map +1 -1
  86. package/dist/reasoningbank/core/consolidate.js +45 -113
  87. package/dist/reasoningbank/core/consolidate.js.map +1 -1
  88. package/dist/reasoningbank/index-new.d.ts +6 -1
  89. package/dist/reasoningbank/index-new.d.ts.map +1 -1
  90. package/dist/reasoningbank/index-new.js +6 -1
  91. package/dist/reasoningbank/index-new.js.map +1 -1
  92. package/dist/reasoningbank/index.d.ts +6 -2
  93. package/dist/reasoningbank/index.d.ts.map +1 -1
  94. package/dist/reasoningbank/index.js +6 -2
  95. package/dist/reasoningbank/index.js.map +1 -1
  96. package/dist/reasoningbank/utils/embeddings.d.ts +0 -1
  97. package/dist/reasoningbank/utils/embeddings.d.ts.map +1 -1
  98. package/dist/reasoningbank/utils/embeddings.js +26 -53
  99. package/dist/reasoningbank/utils/embeddings.js.map +1 -1
  100. package/dist/router/index.d.ts +17 -0
  101. package/dist/router/index.d.ts.map +1 -0
  102. package/dist/router/index.js +19 -0
  103. package/dist/router/index.js.map +1 -0
  104. package/dist/router/providers/onnx-local-optimized.d.ts +0 -2
  105. package/dist/router/providers/onnx-local-optimized.d.ts.map +1 -1
  106. package/dist/router/providers/onnx-local-optimized.js +0 -10
  107. package/dist/router/providers/onnx-local-optimized.js.map +1 -1
  108. package/dist/router/providers/onnx-local.d.ts +0 -1
  109. package/dist/router/providers/onnx-local.d.ts.map +1 -1
  110. package/dist/router/providers/onnx-local.js +5 -22
  111. package/dist/router/providers/onnx-local.js.map +1 -1
  112. package/dist/services/embedding-service.js.map +1 -1
  113. package/dist/services/sona-agent-training.d.ts +0 -1
  114. package/dist/services/sona-agent-training.d.ts.map +1 -1
  115. package/dist/services/sona-agent-training.js.map +1 -1
  116. package/dist/services/sona-agentdb-integration.d.ts.map +1 -1
  117. package/dist/services/sona-agentdb-integration.js +6 -9
  118. package/dist/services/sona-agentdb-integration.js.map +1 -1
  119. package/dist/services/sona-service.d.ts.map +1 -1
  120. package/dist/services/sona-service.js +5 -6
  121. package/dist/services/sona-service.js.map +1 -1
  122. package/dist/utils/cli.d.ts +1 -1
  123. package/dist/utils/cli.d.ts.map +1 -1
  124. package/dist/utils/cli.js +0 -21
  125. package/dist/utils/cli.js.map +1 -1
  126. package/package.json +7 -19
  127. package/scripts/postinstall.js +4 -45
  128. package/.claude/agents/.claude-flow/metrics/agent-metrics.json +0 -1
  129. package/.claude/agents/.claude-flow/metrics/performance.json +0 -87
  130. package/.claude/agents/.claude-flow/metrics/task-metrics.json +0 -10
  131. package/.claude/skills/.claude-flow/metrics/agent-metrics.json +0 -1
  132. package/.claude/skills/.claude-flow/metrics/performance.json +0 -87
  133. package/.claude/skills/.claude-flow/metrics/task-metrics.json +0 -10
  134. package/.claude/skills/agentic-flow-quickstart/skill.md +0 -69
  135. package/.claude/skills/hooks-automation/skill.md +0 -155
  136. package/.claude/skills/memory-patterns/skill.md +0 -110
  137. package/.claude/skills/skill-builder/.claude-flow/metrics/agent-metrics.json +0 -1
  138. package/.claude/skills/skill-builder/.claude-flow/metrics/performance.json +0 -87
  139. package/.claude/skills/skill-builder/.claude-flow/metrics/task-metrics.json +0 -10
  140. package/.claude/skills/sparc-methodology/skill.md +0 -137
  141. package/.claude/skills/swarm-coordination/skill.md +0 -94
  142. package/.claude/skills/worker-benchmarks/skill.md +0 -135
  143. package/.claude/skills/worker-integration/skill.md +0 -154
  144. package/.claude/statusline.mjs +0 -109
  145. package/.claude/statusline.sh +0 -71
  146. package/dist/agentdb/benchmarks/comprehensive-benchmark.js +0 -664
  147. package/dist/agentdb/benchmarks/frontier-benchmark.js +0 -419
  148. package/dist/agentdb/benchmarks/reflexion-benchmark.js +0 -370
  149. package/dist/agentdb/cli/agentdb-cli.js +0 -717
  150. package/dist/agentdb/controllers/CausalMemoryGraph.js +0 -322
  151. package/dist/agentdb/controllers/CausalRecall.js +0 -281
  152. package/dist/agentdb/controllers/EmbeddingService.d.ts +0 -37
  153. package/dist/agentdb/controllers/EmbeddingService.d.ts.map +0 -1
  154. package/dist/agentdb/controllers/EmbeddingService.js +0 -119
  155. package/dist/agentdb/controllers/EmbeddingService.js.map +0 -1
  156. package/dist/agentdb/controllers/ExplainableRecall.js +0 -387
  157. package/dist/agentdb/controllers/NightlyLearner.js +0 -382
  158. package/dist/agentdb/controllers/ReflexionMemory.js +0 -239
  159. package/dist/agentdb/controllers/SkillLibrary.js +0 -276
  160. package/dist/agentdb/controllers/frontier-index.js +0 -9
  161. package/dist/agentdb/controllers/index.js +0 -8
  162. package/dist/agentdb/optimizations/BatchOperations.js +0 -198
  163. package/dist/agentdb/optimizations/QueryOptimizer.js +0 -225
  164. package/dist/agentdb/optimizations/index.js +0 -7
  165. package/dist/agentdb/tests/frontier-features.test.js +0 -665
  166. package/dist/benchmarks/embeddings-benchmark.d.ts +0 -38
  167. package/dist/benchmarks/embeddings-benchmark.d.ts.map +0 -1
  168. package/dist/benchmarks/embeddings-benchmark.js +0 -282
  169. package/dist/benchmarks/embeddings-benchmark.js.map +0 -1
  170. package/dist/cli/commands/embeddings.d.ts +0 -12
  171. package/dist/cli/commands/embeddings.d.ts.map +0 -1
  172. package/dist/cli/commands/embeddings.js +0 -386
  173. package/dist/cli/commands/embeddings.js.map +0 -1
  174. package/dist/cli/commands/init.d.ts +0 -8
  175. package/dist/cli/commands/init.d.ts.map +0 -1
  176. package/dist/cli/commands/init.js +0 -514
  177. package/dist/cli/commands/init.js.map +0 -1
  178. package/dist/cli/commands/workers.d.ts +0 -9
  179. package/dist/cli/commands/workers.d.ts.map +0 -1
  180. package/dist/cli/commands/workers.js +0 -991
  181. package/dist/cli/commands/workers.js.map +0 -1
  182. package/dist/cli/skills-manager.js +0 -1297
  183. package/dist/cli/update-message.js +0 -175
  184. package/dist/embeddings/index.d.ts +0 -17
  185. package/dist/embeddings/index.d.ts.map +0 -1
  186. package/dist/embeddings/index.js +0 -17
  187. package/dist/embeddings/index.js.map +0 -1
  188. package/dist/embeddings/neural-substrate.d.ts +0 -206
  189. package/dist/embeddings/neural-substrate.d.ts.map +0 -1
  190. package/dist/embeddings/neural-substrate.js +0 -629
  191. package/dist/embeddings/neural-substrate.js.map +0 -1
  192. package/dist/embeddings/optimized-embedder.d.ts +0 -103
  193. package/dist/embeddings/optimized-embedder.d.ts.map +0 -1
  194. package/dist/embeddings/optimized-embedder.js +0 -730
  195. package/dist/embeddings/optimized-embedder.js.map +0 -1
  196. package/dist/examples/embedding-geometry.d.ts +0 -105
  197. package/dist/examples/embedding-geometry.d.ts.map +0 -1
  198. package/dist/examples/embedding-geometry.js +0 -528
  199. package/dist/examples/embedding-geometry.js.map +0 -1
  200. package/dist/memory/SharedMemoryPool.d.ts +0 -129
  201. package/dist/memory/SharedMemoryPool.d.ts.map +0 -1
  202. package/dist/memory/SharedMemoryPool.js +0 -243
  203. package/dist/memory/SharedMemoryPool.js.map +0 -1
  204. package/dist/memory/index.d.ts +0 -8
  205. package/dist/memory/index.d.ts.map +0 -1
  206. package/dist/memory/index.js +0 -7
  207. package/dist/memory/index.js.map +0 -1
  208. package/dist/proxy/http3-proxy-old.js +0 -331
  209. package/dist/proxy/proxy/anthropic-to-gemini.js +0 -439
  210. package/dist/proxy/utils/logger.js +0 -59
  211. package/dist/reasoningbank/agentdb-adapter.js +0 -125
  212. package/dist/reasoningbank/core/database.js +0 -250
  213. package/dist/reasoningbank/core/memory-engine.js +0 -335
  214. package/dist/swarm/ipfs-swarm.d.ts +0 -265
  215. package/dist/swarm/ipfs-swarm.d.ts.map +0 -1
  216. package/dist/swarm/ipfs-swarm.js +0 -508
  217. package/dist/swarm/ipfs-swarm.js.map +0 -1
  218. package/dist/swarm/p2p-free-swarm.d.ts +0 -344
  219. package/dist/swarm/p2p-free-swarm.d.ts.map +0 -1
  220. package/dist/swarm/p2p-free-swarm.js +0 -603
  221. package/dist/swarm/p2p-free-swarm.js.map +0 -1
  222. package/dist/swarm/real-p2p-swarm.d.ts +0 -183
  223. package/dist/swarm/real-p2p-swarm.d.ts.map +0 -1
  224. package/dist/swarm/real-p2p-swarm.js +0 -469
  225. package/dist/swarm/real-p2p-swarm.js.map +0 -1
  226. package/dist/utils/adaptive-pool-sizing.js +0 -414
  227. package/dist/utils/agentdbCommands.js +0 -175
  228. package/dist/utils/circular-rate-limiter.js +0 -391
  229. package/dist/utils/dynamic-compression.js +0 -298
  230. package/dist/utils/http2-multiplexing.js +0 -319
  231. package/dist/utils/index.d.ts +0 -6
  232. package/dist/utils/index.d.ts.map +0 -1
  233. package/dist/utils/index.js +0 -6
  234. package/dist/utils/index.js.map +0 -1
  235. package/dist/utils/lazy-auth.js +0 -311
  236. package/dist/utils/model-cache.d.ts +0 -61
  237. package/dist/utils/model-cache.d.ts.map +0 -1
  238. package/dist/utils/model-cache.js +0 -176
  239. package/dist/utils/model-cache.js.map +0 -1
  240. package/dist/utils/server-push.js +0 -251
  241. package/dist/utils/suppress-warnings.d.ts +0 -19
  242. package/dist/utils/suppress-warnings.d.ts.map +0 -1
  243. package/dist/utils/suppress-warnings.js +0 -59
  244. package/dist/utils/suppress-warnings.js.map +0 -1
  245. package/dist/utils/zero-copy-buffer.js +0 -286
  246. package/dist/workers/consolidated-phases.d.ts +0 -40
  247. package/dist/workers/consolidated-phases.d.ts.map +0 -1
  248. package/dist/workers/consolidated-phases.js +0 -497
  249. package/dist/workers/consolidated-phases.js.map +0 -1
  250. package/dist/workers/custom-worker-config.d.ts +0 -133
  251. package/dist/workers/custom-worker-config.d.ts.map +0 -1
  252. package/dist/workers/custom-worker-config.js +0 -215
  253. package/dist/workers/custom-worker-config.js.map +0 -1
  254. package/dist/workers/custom-worker-factory.d.ts +0 -89
  255. package/dist/workers/custom-worker-factory.d.ts.map +0 -1
  256. package/dist/workers/custom-worker-factory.js +0 -404
  257. package/dist/workers/custom-worker-factory.js.map +0 -1
  258. package/dist/workers/dispatch-service.d.ts +0 -123
  259. package/dist/workers/dispatch-service.d.ts.map +0 -1
  260. package/dist/workers/dispatch-service.js +0 -1024
  261. package/dist/workers/dispatch-service.js.map +0 -1
  262. package/dist/workers/hooks-integration.d.ts +0 -79
  263. package/dist/workers/hooks-integration.d.ts.map +0 -1
  264. package/dist/workers/hooks-integration.js +0 -286
  265. package/dist/workers/hooks-integration.js.map +0 -1
  266. package/dist/workers/index.d.ts +0 -42
  267. package/dist/workers/index.d.ts.map +0 -1
  268. package/dist/workers/index.js +0 -52
  269. package/dist/workers/index.js.map +0 -1
  270. package/dist/workers/mcp-tools.d.ts +0 -56
  271. package/dist/workers/mcp-tools.d.ts.map +0 -1
  272. package/dist/workers/mcp-tools.js +0 -359
  273. package/dist/workers/mcp-tools.js.map +0 -1
  274. package/dist/workers/phase-executors.d.ts +0 -22
  275. package/dist/workers/phase-executors.d.ts.map +0 -1
  276. package/dist/workers/phase-executors.js +0 -445
  277. package/dist/workers/phase-executors.js.map +0 -1
  278. package/dist/workers/resource-governor.d.ts +0 -75
  279. package/dist/workers/resource-governor.d.ts.map +0 -1
  280. package/dist/workers/resource-governor.js +0 -187
  281. package/dist/workers/resource-governor.js.map +0 -1
  282. package/dist/workers/ruvector-integration.d.ts +0 -163
  283. package/dist/workers/ruvector-integration.d.ts.map +0 -1
  284. package/dist/workers/ruvector-integration.js +0 -543
  285. package/dist/workers/ruvector-integration.js.map +0 -1
  286. package/dist/workers/ruvector-native-integration.d.ts +0 -91
  287. package/dist/workers/ruvector-native-integration.d.ts.map +0 -1
  288. package/dist/workers/ruvector-native-integration.js +0 -254
  289. package/dist/workers/ruvector-native-integration.js.map +0 -1
  290. package/dist/workers/trigger-detector.d.ts +0 -68
  291. package/dist/workers/trigger-detector.d.ts.map +0 -1
  292. package/dist/workers/trigger-detector.js +0 -281
  293. package/dist/workers/trigger-detector.js.map +0 -1
  294. package/dist/workers/types.d.ts +0 -145
  295. package/dist/workers/types.d.ts.map +0 -1
  296. package/dist/workers/types.js +0 -6
  297. package/dist/workers/types.js.map +0 -1
  298. package/dist/workers/worker-agent-integration.d.ts +0 -140
  299. package/dist/workers/worker-agent-integration.d.ts.map +0 -1
  300. package/dist/workers/worker-agent-integration.js +0 -471
  301. package/dist/workers/worker-agent-integration.js.map +0 -1
  302. package/dist/workers/worker-benchmarks.d.ts +0 -88
  303. package/dist/workers/worker-benchmarks.d.ts.map +0 -1
  304. package/dist/workers/worker-benchmarks.js +0 -452
  305. package/dist/workers/worker-benchmarks.js.map +0 -1
  306. package/dist/workers/worker-registry.d.ts +0 -85
  307. package/dist/workers/worker-registry.d.ts.map +0 -1
  308. package/dist/workers/worker-registry.js +0 -547
  309. package/dist/workers/worker-registry.js.map +0 -1
  310. package/docs/.claude-flow/metrics/agent-metrics.json +0 -1
  311. package/docs/.claude-flow/metrics/performance.json +0 -87
  312. package/docs/.claude-flow/metrics/task-metrics.json +0 -10
  313. package/docs/embeddings/EMBEDDING_GEOMETRY.md +0 -935
  314. /package/.claude/agents/analysis/{analyze-code-quality.md → code-review/analyze-code-quality.md} +0 -0
  315. /package/.claude/agents/architecture/{arch-system-design.md → system-design/arch-system-design.md} +0 -0
  316. /package/.claude/agents/data/{data-ml-model.md → ml/data-ml-model.md} +0 -0
  317. /package/.claude/agents/development/{dev-backend-api.md → backend/dev-backend-api.md} +0 -0
  318. /package/.claude/agents/devops/{ops-cicd-github.md → ci-cd/ops-cicd-github.md} +0 -0
  319. /package/.claude/agents/documentation/{docs-api-openapi.md → api-docs/docs-api-openapi.md} +0 -0
  320. /package/.claude/agents/specialized/{spec-mobile-react-native.md → mobile/spec-mobile-react-native.md} +0 -0
  321. /package/.claude/agents/testing/{tdd-london-swarm.md → unit/tdd-london-swarm.md} +0 -0
  322. /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"}