nodebench-mcp 2.70.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/README.md +95 -41
  2. package/dist/agents/alertRouter.d.ts +38 -0
  3. package/dist/agents/alertRouter.js +151 -0
  4. package/dist/agents/alertRouter.js.map +1 -0
  5. package/dist/agents/entityMemory.d.ts +40 -0
  6. package/dist/agents/entityMemory.js +64 -0
  7. package/dist/agents/entityMemory.js.map +1 -0
  8. package/dist/agents/subAgents.d.ts +35 -0
  9. package/dist/agents/subAgents.js +62 -0
  10. package/dist/agents/subAgents.js.map +1 -0
  11. package/dist/benchmarks/benchmarkRunner.js +14 -0
  12. package/dist/benchmarks/benchmarkRunner.js.map +1 -1
  13. package/dist/benchmarks/chainEval.js +107 -0
  14. package/dist/benchmarks/chainEval.js.map +1 -1
  15. package/dist/benchmarks/llmJudgeEval.js +85 -0
  16. package/dist/benchmarks/llmJudgeEval.js.map +1 -1
  17. package/dist/benchmarks/searchQualityEval.js +118 -5
  18. package/dist/benchmarks/searchQualityEval.js.map +1 -1
  19. package/dist/cli/search.d.ts +13 -0
  20. package/dist/cli/search.js +130 -0
  21. package/dist/cli/search.js.map +1 -0
  22. package/dist/dashboard/operatingDashboardHtml.js +2 -1
  23. package/dist/dashboard/operatingDashboardHtml.js.map +1 -1
  24. package/dist/dashboard/operatingServer.js +3 -2
  25. package/dist/dashboard/operatingServer.js.map +1 -1
  26. package/dist/db.d.ts +6 -2
  27. package/dist/db.js +521 -6
  28. package/dist/db.js.map +1 -1
  29. package/dist/index.js +349 -67
  30. package/dist/index.js.map +1 -1
  31. package/dist/packageInfo.d.ts +3 -0
  32. package/dist/packageInfo.js +32 -0
  33. package/dist/packageInfo.js.map +1 -0
  34. package/dist/profiler/behaviorStore.d.ts +97 -0
  35. package/dist/profiler/behaviorStore.js +276 -0
  36. package/dist/profiler/behaviorStore.js.map +1 -0
  37. package/dist/profiler/eventCollector.d.ts +119 -0
  38. package/dist/profiler/eventCollector.js +267 -0
  39. package/dist/profiler/eventCollector.js.map +1 -0
  40. package/dist/profiler/index.d.ts +15 -0
  41. package/dist/profiler/index.js +16 -0
  42. package/dist/profiler/index.js.map +1 -0
  43. package/dist/profiler/mcpProxy.d.ts +49 -0
  44. package/dist/profiler/mcpProxy.js +123 -0
  45. package/dist/profiler/mcpProxy.js.map +1 -0
  46. package/dist/profiler/modelRouter.d.ts +30 -0
  47. package/dist/profiler/modelRouter.js +99 -0
  48. package/dist/profiler/modelRouter.js.map +1 -0
  49. package/dist/profiler/otelReceiver.d.ts +17 -0
  50. package/dist/profiler/otelReceiver.js +62 -0
  51. package/dist/profiler/otelReceiver.js.map +1 -0
  52. package/dist/profiler/proofEngine.d.ts +41 -0
  53. package/dist/profiler/proofEngine.js +93 -0
  54. package/dist/profiler/proofEngine.js.map +1 -0
  55. package/dist/profiler/workflowTemplates.d.ts +41 -0
  56. package/dist/profiler/workflowTemplates.js +95 -0
  57. package/dist/profiler/workflowTemplates.js.map +1 -0
  58. package/dist/providers/localMemoryProvider.js +3 -2
  59. package/dist/providers/localMemoryProvider.js.map +1 -1
  60. package/dist/runtimeConfig.d.ts +11 -0
  61. package/dist/runtimeConfig.js +27 -0
  62. package/dist/runtimeConfig.js.map +1 -0
  63. package/dist/sandboxApi.js +2 -1
  64. package/dist/sandboxApi.js.map +1 -1
  65. package/dist/security/auditLog.js +8 -3
  66. package/dist/security/auditLog.js.map +1 -1
  67. package/dist/subconscious/blocks.d.ts +43 -0
  68. package/dist/subconscious/blocks.js +158 -0
  69. package/dist/subconscious/blocks.js.map +1 -0
  70. package/dist/subconscious/classifier.d.ts +22 -0
  71. package/dist/subconscious/classifier.js +118 -0
  72. package/dist/subconscious/classifier.js.map +1 -0
  73. package/dist/subconscious/graphEngine.d.ts +65 -0
  74. package/dist/subconscious/graphEngine.js +234 -0
  75. package/dist/subconscious/graphEngine.js.map +1 -0
  76. package/dist/subconscious/index.d.ts +19 -0
  77. package/dist/subconscious/index.js +20 -0
  78. package/dist/subconscious/index.js.map +1 -0
  79. package/dist/subconscious/tools.d.ts +5 -0
  80. package/dist/subconscious/tools.js +255 -0
  81. package/dist/subconscious/tools.js.map +1 -0
  82. package/dist/subconscious/whisperPolicy.d.ts +20 -0
  83. package/dist/subconscious/whisperPolicy.js +171 -0
  84. package/dist/subconscious/whisperPolicy.js.map +1 -0
  85. package/dist/sweep/engine.d.ts +27 -0
  86. package/dist/sweep/engine.js +244 -0
  87. package/dist/sweep/engine.js.map +1 -0
  88. package/dist/sweep/index.d.ts +9 -0
  89. package/dist/sweep/index.js +8 -0
  90. package/dist/sweep/index.js.map +1 -0
  91. package/dist/sweep/sources/github_trending.d.ts +6 -0
  92. package/dist/sweep/sources/github_trending.js +37 -0
  93. package/dist/sweep/sources/github_trending.js.map +1 -0
  94. package/dist/sweep/sources/hackernews.d.ts +7 -0
  95. package/dist/sweep/sources/hackernews.js +57 -0
  96. package/dist/sweep/sources/hackernews.js.map +1 -0
  97. package/dist/sweep/sources/openbb_finance.d.ts +9 -0
  98. package/dist/sweep/sources/openbb_finance.js +46 -0
  99. package/dist/sweep/sources/openbb_finance.js.map +1 -0
  100. package/dist/sweep/sources/producthunt.d.ts +6 -0
  101. package/dist/sweep/sources/producthunt.js +41 -0
  102. package/dist/sweep/sources/producthunt.js.map +1 -0
  103. package/dist/sweep/sources/web_signals.d.ts +7 -0
  104. package/dist/sweep/sources/web_signals.js +63 -0
  105. package/dist/sweep/sources/web_signals.js.map +1 -0
  106. package/dist/sweep/sources/yahoo_finance.d.ts +6 -0
  107. package/dist/sweep/sources/yahoo_finance.js +47 -0
  108. package/dist/sweep/sources/yahoo_finance.js.map +1 -0
  109. package/dist/sweep/types.d.ts +50 -0
  110. package/dist/sweep/types.js +9 -0
  111. package/dist/sweep/types.js.map +1 -0
  112. package/dist/sync/founderEpisodeStore.d.ts +98 -0
  113. package/dist/sync/founderEpisodeStore.js +230 -0
  114. package/dist/sync/founderEpisodeStore.js.map +1 -0
  115. package/dist/sync/hyperloopArchive.d.ts +51 -0
  116. package/dist/sync/hyperloopArchive.js +153 -0
  117. package/dist/sync/hyperloopArchive.js.map +1 -0
  118. package/dist/sync/hyperloopEval.d.ts +123 -0
  119. package/dist/sync/hyperloopEval.js +389 -0
  120. package/dist/sync/hyperloopEval.js.map +1 -0
  121. package/dist/sync/protocol.d.ts +172 -0
  122. package/dist/sync/protocol.js +9 -0
  123. package/dist/sync/protocol.js.map +1 -0
  124. package/dist/sync/sessionMemory.d.ts +47 -0
  125. package/dist/sync/sessionMemory.js +138 -0
  126. package/dist/sync/sessionMemory.js.map +1 -0
  127. package/dist/sync/store.d.ts +384 -0
  128. package/dist/sync/store.js +1435 -0
  129. package/dist/sync/store.js.map +1 -0
  130. package/dist/sync/syncBridgeClient.d.ts +30 -0
  131. package/dist/sync/syncBridgeClient.js +172 -0
  132. package/dist/sync/syncBridgeClient.js.map +1 -0
  133. package/dist/tools/autonomousDeliveryTools.d.ts +2 -0
  134. package/dist/tools/autonomousDeliveryTools.js +1104 -0
  135. package/dist/tools/autonomousDeliveryTools.js.map +1 -0
  136. package/dist/tools/boilerplateTools.js +10 -9
  137. package/dist/tools/boilerplateTools.js.map +1 -1
  138. package/dist/tools/claudeCodeIngestTools.d.ts +10 -0
  139. package/dist/tools/claudeCodeIngestTools.js +347 -0
  140. package/dist/tools/claudeCodeIngestTools.js.map +1 -0
  141. package/dist/tools/coreWorkflowTools.d.ts +2 -0
  142. package/dist/tools/coreWorkflowTools.js +488 -0
  143. package/dist/tools/coreWorkflowTools.js.map +1 -0
  144. package/dist/tools/deltaTools.d.ts +15 -0
  145. package/dist/tools/deltaTools.js +1522 -0
  146. package/dist/tools/deltaTools.js.map +1 -0
  147. package/dist/tools/documentationTools.js +2 -1
  148. package/dist/tools/documentationTools.js.map +1 -1
  149. package/dist/tools/entityLookupTools.d.ts +14 -0
  150. package/dist/tools/entityLookupTools.js +159 -0
  151. package/dist/tools/entityLookupTools.js.map +1 -0
  152. package/dist/tools/entityTemporalTools.d.ts +12 -0
  153. package/dist/tools/entityTemporalTools.js +330 -0
  154. package/dist/tools/entityTemporalTools.js.map +1 -0
  155. package/dist/tools/founderLocalPipeline.d.ts +215 -0
  156. package/dist/tools/founderLocalPipeline.js +1516 -2
  157. package/dist/tools/founderLocalPipeline.js.map +1 -1
  158. package/dist/tools/founderOperatingModel.d.ts +120 -0
  159. package/dist/tools/founderOperatingModel.js +469 -0
  160. package/dist/tools/founderOperatingModel.js.map +1 -0
  161. package/dist/tools/founderOperatingModelTools.d.ts +2 -0
  162. package/dist/tools/founderOperatingModelTools.js +169 -0
  163. package/dist/tools/founderOperatingModelTools.js.map +1 -0
  164. package/dist/tools/founderStrategicOpsTools.d.ts +2 -0
  165. package/dist/tools/founderStrategicOpsTools.js +1310 -0
  166. package/dist/tools/founderStrategicOpsTools.js.map +1 -0
  167. package/dist/tools/graphifyTools.d.ts +19 -0
  168. package/dist/tools/graphifyTools.js +375 -0
  169. package/dist/tools/graphifyTools.js.map +1 -0
  170. package/dist/tools/index.d.ts +3 -0
  171. package/dist/tools/index.js +4 -0
  172. package/dist/tools/index.js.map +1 -1
  173. package/dist/tools/monteCarloTools.d.ts +16 -0
  174. package/dist/tools/monteCarloTools.js +225 -0
  175. package/dist/tools/monteCarloTools.js.map +1 -0
  176. package/dist/tools/packetCompilerTools.d.ts +12 -0
  177. package/dist/tools/packetCompilerTools.js +322 -0
  178. package/dist/tools/packetCompilerTools.js.map +1 -0
  179. package/dist/tools/planSynthesisTools.d.ts +15 -0
  180. package/dist/tools/planSynthesisTools.js +455 -0
  181. package/dist/tools/planSynthesisTools.js.map +1 -0
  182. package/dist/tools/profilerTools.d.ts +20 -0
  183. package/dist/tools/profilerTools.js +364 -0
  184. package/dist/tools/profilerTools.js.map +1 -0
  185. package/dist/tools/progressiveDiscoveryTools.js +2 -1
  186. package/dist/tools/progressiveDiscoveryTools.js.map +1 -1
  187. package/dist/tools/savingsTools.d.ts +11 -0
  188. package/dist/tools/savingsTools.js +155 -0
  189. package/dist/tools/savingsTools.js.map +1 -0
  190. package/dist/tools/scenarioCompilerTools.d.ts +14 -0
  191. package/dist/tools/scenarioCompilerTools.js +290 -0
  192. package/dist/tools/scenarioCompilerTools.js.map +1 -0
  193. package/dist/tools/sharedContextTools.d.ts +2 -0
  194. package/dist/tools/sharedContextTools.js +423 -0
  195. package/dist/tools/sharedContextTools.js.map +1 -0
  196. package/dist/tools/sitemapTools.d.ts +15 -0
  197. package/dist/tools/sitemapTools.js +560 -0
  198. package/dist/tools/sitemapTools.js.map +1 -0
  199. package/dist/tools/sweepTools.d.ts +9 -0
  200. package/dist/tools/sweepTools.js +112 -0
  201. package/dist/tools/sweepTools.js.map +1 -0
  202. package/dist/tools/syncBridgeTools.d.ts +2 -0
  203. package/dist/tools/syncBridgeTools.js +258 -0
  204. package/dist/tools/syncBridgeTools.js.map +1 -0
  205. package/dist/tools/toolRegistry.js +1223 -45
  206. package/dist/tools/toolRegistry.js.map +1 -1
  207. package/dist/tools/workspaceTools.d.ts +19 -0
  208. package/dist/tools/workspaceTools.js +762 -0
  209. package/dist/tools/workspaceTools.js.map +1 -0
  210. package/dist/toolsetRegistry.js +162 -3
  211. package/dist/toolsetRegistry.js.map +1 -1
  212. package/package.json +39 -38
  213. package/rules/nodebench-agentic-reliability.md +32 -0
  214. package/rules/nodebench-analyst-diagnostic.md +25 -0
  215. package/rules/nodebench-auto-qa.md +31 -0
  216. package/rules/nodebench-completion-traceability.md +22 -0
  217. package/rules/nodebench-flywheel-continuous.md +25 -0
  218. package/rules/nodebench-pre-release-review.md +24 -0
  219. package/rules/nodebench-qa-dogfood.md +26 -0
  220. package/rules/nodebench-scenario-testing.md +30 -0
  221. package/rules/nodebench-self-direction.md +23 -0
  222. package/rules/nodebench-self-judge-loop.md +24 -0
  223. package/scripts/install.sh +215 -0
  224. package/dist/__tests__/analytics.test.d.ts +0 -11
  225. package/dist/__tests__/analytics.test.js +0 -546
  226. package/dist/__tests__/analytics.test.js.map +0 -1
  227. package/dist/__tests__/architectComplex.test.d.ts +0 -1
  228. package/dist/__tests__/architectComplex.test.js +0 -373
  229. package/dist/__tests__/architectComplex.test.js.map +0 -1
  230. package/dist/__tests__/architectSmoke.test.d.ts +0 -1
  231. package/dist/__tests__/architectSmoke.test.js +0 -92
  232. package/dist/__tests__/architectSmoke.test.js.map +0 -1
  233. package/dist/__tests__/audit-registry.d.ts +0 -1
  234. package/dist/__tests__/audit-registry.js +0 -60
  235. package/dist/__tests__/audit-registry.js.map +0 -1
  236. package/dist/__tests__/batchAutopilot.test.d.ts +0 -8
  237. package/dist/__tests__/batchAutopilot.test.js +0 -218
  238. package/dist/__tests__/batchAutopilot.test.js.map +0 -1
  239. package/dist/__tests__/cliSubcommands.test.d.ts +0 -1
  240. package/dist/__tests__/cliSubcommands.test.js +0 -138
  241. package/dist/__tests__/cliSubcommands.test.js.map +0 -1
  242. package/dist/__tests__/comparativeBench.test.d.ts +0 -1
  243. package/dist/__tests__/comparativeBench.test.js +0 -722
  244. package/dist/__tests__/comparativeBench.test.js.map +0 -1
  245. package/dist/__tests__/critterCalibrationEval.d.ts +0 -8
  246. package/dist/__tests__/critterCalibrationEval.js +0 -370
  247. package/dist/__tests__/critterCalibrationEval.js.map +0 -1
  248. package/dist/__tests__/dynamicLoading.test.d.ts +0 -1
  249. package/dist/__tests__/dynamicLoading.test.js +0 -280
  250. package/dist/__tests__/dynamicLoading.test.js.map +0 -1
  251. package/dist/__tests__/embeddingProvider.test.d.ts +0 -1
  252. package/dist/__tests__/embeddingProvider.test.js +0 -86
  253. package/dist/__tests__/embeddingProvider.test.js.map +0 -1
  254. package/dist/__tests__/evalDatasetBench.test.d.ts +0 -1
  255. package/dist/__tests__/evalDatasetBench.test.js +0 -738
  256. package/dist/__tests__/evalDatasetBench.test.js.map +0 -1
  257. package/dist/__tests__/evalHarness.test.d.ts +0 -1
  258. package/dist/__tests__/evalHarness.test.js +0 -1107
  259. package/dist/__tests__/evalHarness.test.js.map +0 -1
  260. package/dist/__tests__/fixtures/bfcl_v3_long_context.sample.json +0 -264
  261. package/dist/__tests__/fixtures/generateBfclLongContextFixture.d.ts +0 -10
  262. package/dist/__tests__/fixtures/generateBfclLongContextFixture.js +0 -135
  263. package/dist/__tests__/fixtures/generateBfclLongContextFixture.js.map +0 -1
  264. package/dist/__tests__/fixtures/generateSwebenchVerifiedFixture.d.ts +0 -14
  265. package/dist/__tests__/fixtures/generateSwebenchVerifiedFixture.js +0 -189
  266. package/dist/__tests__/fixtures/generateSwebenchVerifiedFixture.js.map +0 -1
  267. package/dist/__tests__/fixtures/generateToolbenchInstructionFixture.d.ts +0 -16
  268. package/dist/__tests__/fixtures/generateToolbenchInstructionFixture.js +0 -154
  269. package/dist/__tests__/fixtures/generateToolbenchInstructionFixture.js.map +0 -1
  270. package/dist/__tests__/fixtures/swebench_verified.sample.json +0 -162
  271. package/dist/__tests__/fixtures/toolbench_instruction.sample.json +0 -109
  272. package/dist/__tests__/forecastingDogfood.test.d.ts +0 -9
  273. package/dist/__tests__/forecastingDogfood.test.js +0 -284
  274. package/dist/__tests__/forecastingDogfood.test.js.map +0 -1
  275. package/dist/__tests__/forecastingScoring.test.d.ts +0 -9
  276. package/dist/__tests__/forecastingScoring.test.js +0 -202
  277. package/dist/__tests__/forecastingScoring.test.js.map +0 -1
  278. package/dist/__tests__/gaiaCapabilityAudioEval.test.d.ts +0 -15
  279. package/dist/__tests__/gaiaCapabilityAudioEval.test.js +0 -265
  280. package/dist/__tests__/gaiaCapabilityAudioEval.test.js.map +0 -1
  281. package/dist/__tests__/gaiaCapabilityEval.test.d.ts +0 -14
  282. package/dist/__tests__/gaiaCapabilityEval.test.js +0 -1259
  283. package/dist/__tests__/gaiaCapabilityEval.test.js.map +0 -1
  284. package/dist/__tests__/gaiaCapabilityFilesEval.test.d.ts +0 -15
  285. package/dist/__tests__/gaiaCapabilityFilesEval.test.js +0 -914
  286. package/dist/__tests__/gaiaCapabilityFilesEval.test.js.map +0 -1
  287. package/dist/__tests__/gaiaCapabilityMediaEval.test.d.ts +0 -15
  288. package/dist/__tests__/gaiaCapabilityMediaEval.test.js +0 -1101
  289. package/dist/__tests__/gaiaCapabilityMediaEval.test.js.map +0 -1
  290. package/dist/__tests__/helpers/answerMatch.d.ts +0 -41
  291. package/dist/__tests__/helpers/answerMatch.js +0 -267
  292. package/dist/__tests__/helpers/answerMatch.js.map +0 -1
  293. package/dist/__tests__/helpers/textLlm.d.ts +0 -25
  294. package/dist/__tests__/helpers/textLlm.js +0 -214
  295. package/dist/__tests__/helpers/textLlm.js.map +0 -1
  296. package/dist/__tests__/localDashboard.test.d.ts +0 -1
  297. package/dist/__tests__/localDashboard.test.js +0 -226
  298. package/dist/__tests__/localDashboard.test.js.map +0 -1
  299. package/dist/__tests__/multiHopDogfood.test.d.ts +0 -12
  300. package/dist/__tests__/multiHopDogfood.test.js +0 -303
  301. package/dist/__tests__/multiHopDogfood.test.js.map +0 -1
  302. package/dist/__tests__/openDatasetParallelEval.test.d.ts +0 -7
  303. package/dist/__tests__/openDatasetParallelEval.test.js +0 -209
  304. package/dist/__tests__/openDatasetParallelEval.test.js.map +0 -1
  305. package/dist/__tests__/openDatasetParallelEvalGaia.test.d.ts +0 -7
  306. package/dist/__tests__/openDatasetParallelEvalGaia.test.js +0 -279
  307. package/dist/__tests__/openDatasetParallelEvalGaia.test.js.map +0 -1
  308. package/dist/__tests__/openDatasetParallelEvalSwebench.test.d.ts +0 -7
  309. package/dist/__tests__/openDatasetParallelEvalSwebench.test.js +0 -220
  310. package/dist/__tests__/openDatasetParallelEvalSwebench.test.js.map +0 -1
  311. package/dist/__tests__/openDatasetParallelEvalToolbench.test.d.ts +0 -7
  312. package/dist/__tests__/openDatasetParallelEvalToolbench.test.js +0 -218
  313. package/dist/__tests__/openDatasetParallelEvalToolbench.test.js.map +0 -1
  314. package/dist/__tests__/openDatasetPerfComparison.test.d.ts +0 -10
  315. package/dist/__tests__/openDatasetPerfComparison.test.js +0 -318
  316. package/dist/__tests__/openDatasetPerfComparison.test.js.map +0 -1
  317. package/dist/__tests__/openclawDogfood.test.d.ts +0 -23
  318. package/dist/__tests__/openclawDogfood.test.js +0 -535
  319. package/dist/__tests__/openclawDogfood.test.js.map +0 -1
  320. package/dist/__tests__/openclawMessaging.test.d.ts +0 -14
  321. package/dist/__tests__/openclawMessaging.test.js +0 -232
  322. package/dist/__tests__/openclawMessaging.test.js.map +0 -1
  323. package/dist/__tests__/presetRealWorldBench.test.d.ts +0 -1
  324. package/dist/__tests__/presetRealWorldBench.test.js +0 -859
  325. package/dist/__tests__/presetRealWorldBench.test.js.map +0 -1
  326. package/dist/__tests__/tools.test.d.ts +0 -1
  327. package/dist/__tests__/tools.test.js +0 -3201
  328. package/dist/__tests__/tools.test.js.map +0 -1
  329. package/dist/__tests__/toolsetGatingEval.test.d.ts +0 -1
  330. package/dist/__tests__/toolsetGatingEval.test.js +0 -1099
  331. package/dist/__tests__/toolsetGatingEval.test.js.map +0 -1
  332. package/dist/__tests__/traceabilityDogfood.test.d.ts +0 -12
  333. package/dist/__tests__/traceabilityDogfood.test.js +0 -241
  334. package/dist/__tests__/traceabilityDogfood.test.js.map +0 -1
  335. package/dist/__tests__/webmcpTools.test.d.ts +0 -7
  336. package/dist/__tests__/webmcpTools.test.js +0 -195
  337. package/dist/__tests__/webmcpTools.test.js.map +0 -1
  338. package/dist/benchmarks/testProviderBus.d.ts +0 -7
  339. package/dist/benchmarks/testProviderBus.js +0 -272
  340. package/dist/benchmarks/testProviderBus.js.map +0 -1
  341. package/dist/hooks/postCompaction.d.ts +0 -14
  342. package/dist/hooks/postCompaction.js +0 -51
  343. package/dist/hooks/postCompaction.js.map +0 -1
  344. package/dist/security/__tests__/security.test.d.ts +0 -8
  345. package/dist/security/__tests__/security.test.js +0 -295
  346. package/dist/security/__tests__/security.test.js.map +0 -1
  347. package/dist/tools/documentTools.d.ts +0 -5
  348. package/dist/tools/documentTools.js +0 -524
  349. package/dist/tools/documentTools.js.map +0 -1
  350. package/dist/tools/financialTools.d.ts +0 -10
  351. package/dist/tools/financialTools.js +0 -403
  352. package/dist/tools/financialTools.js.map +0 -1
  353. package/dist/tools/memoryTools.d.ts +0 -5
  354. package/dist/tools/memoryTools.js +0 -137
  355. package/dist/tools/memoryTools.js.map +0 -1
  356. package/dist/tools/planningTools.d.ts +0 -5
  357. package/dist/tools/planningTools.js +0 -147
  358. package/dist/tools/planningTools.js.map +0 -1
  359. package/dist/tools/searchTools.d.ts +0 -5
  360. package/dist/tools/searchTools.js +0 -145
  361. package/dist/tools/searchTools.js.map +0 -1
@@ -1,546 +0,0 @@
1
- /**
2
- * Comprehensive tests for the analytics subsystem.
3
- *
4
- * Tests cover:
5
- * - schema.ts: DB init, singleton, CRUD, cache TTL, retention cleanup
6
- * - projectDetector.ts: project type detection, glob matching, edge cases
7
- * - usageStats.ts: aggregation queries, trends, failing tools, formatted display
8
- * - smartPreset.ts: signal computation, scoring model, formatted output
9
- * - toolTracker.ts: AnalyticsTracker singleton, record(), session stats, close
10
- */
11
- import { describe, it, expect, beforeEach, afterEach } from "vitest";
12
- import Database from "better-sqlite3";
13
- import path from "path";
14
- import fs from "fs";
15
- import os from "os";
16
- // ── Schema tests ────────────────────────────────────────────────────────
17
- import { recordToolUsage, updateProjectContext, recordPresetSelection, getCachedStats, setCachedStats, clearOldRecords, } from "../analytics/schema.js";
18
- function freshDb() {
19
- // In-memory DB for test isolation
20
- const db = new Database(":memory:");
21
- db.pragma("journal_mode = WAL");
22
- db.exec(`
23
- CREATE TABLE IF NOT EXISTS tool_usage (
24
- id INTEGER PRIMARY KEY AUTOINCREMENT,
25
- tool_name TEXT NOT NULL,
26
- toolset TEXT NOT NULL,
27
- timestamp INTEGER NOT NULL,
28
- duration INTEGER NOT NULL,
29
- success BOOLEAN NOT NULL,
30
- error_message TEXT,
31
- project_path TEXT NOT NULL,
32
- preset TEXT NOT NULL,
33
- args TEXT
34
- );
35
- CREATE INDEX IF NOT EXISTS idx_tool_usage_tool ON tool_usage(tool_name);
36
- CREATE INDEX IF NOT EXISTS idx_tool_usage_toolset ON tool_usage(toolset);
37
- CREATE INDEX IF NOT EXISTS idx_tool_usage_project ON tool_usage(project_path);
38
- CREATE INDEX IF NOT EXISTS idx_tool_usage_timestamp ON tool_usage(timestamp);
39
- CREATE TABLE IF NOT EXISTS project_context (
40
- id INTEGER PRIMARY KEY AUTOINCREMENT,
41
- project_path TEXT UNIQUE NOT NULL,
42
- project_type TEXT NOT NULL,
43
- detected_at INTEGER NOT NULL,
44
- last_seen INTEGER NOT NULL,
45
- language TEXT NOT NULL,
46
- framework TEXT,
47
- has_tests BOOLEAN NOT NULL,
48
- has_ci BOOLEAN NOT NULL,
49
- has_docs BOOLEAN NOT NULL,
50
- file_count INTEGER NOT NULL
51
- );
52
- CREATE TABLE IF NOT EXISTS preset_history (
53
- id INTEGER PRIMARY KEY AUTOINCREMENT,
54
- project_path TEXT NOT NULL,
55
- preset TEXT NOT NULL,
56
- toolset_count INTEGER NOT NULL,
57
- selected_at INTEGER NOT NULL,
58
- selection_reason TEXT NOT NULL
59
- );
60
- CREATE TABLE IF NOT EXISTS usage_stats_cache (
61
- id INTEGER PRIMARY KEY AUTOINCREMENT,
62
- project_path TEXT NOT NULL,
63
- cache_key TEXT NOT NULL,
64
- stats TEXT NOT NULL,
65
- computed_at INTEGER NOT NULL,
66
- ttl INTEGER NOT NULL,
67
- UNIQUE(project_path, cache_key)
68
- );
69
- CREATE INDEX IF NOT EXISTS idx_usage_stats_cache_key ON usage_stats_cache(project_path, cache_key);
70
- `);
71
- return db;
72
- }
73
- describe("schema", () => {
74
- let db;
75
- beforeEach(() => { db = freshDb(); });
76
- afterEach(() => { db.close(); });
77
- it("recordToolUsage inserts a row", () => {
78
- recordToolUsage(db, {
79
- toolName: "verify_fix",
80
- toolset: "verification",
81
- timestamp: Date.now(),
82
- duration: 150,
83
- success: true,
84
- projectPath: "/test",
85
- preset: "default",
86
- });
87
- const count = db.prepare("SELECT COUNT(*) as c FROM tool_usage").get().c;
88
- expect(count).toBe(1);
89
- });
90
- it("recordToolUsage stores error messages", () => {
91
- recordToolUsage(db, {
92
- toolName: "web_search",
93
- toolset: "web",
94
- timestamp: Date.now(),
95
- duration: 500,
96
- success: false,
97
- errorMessage: "timeout",
98
- projectPath: "/test",
99
- preset: "full",
100
- });
101
- const row = db.prepare("SELECT * FROM tool_usage WHERE tool_name = 'web_search'").get();
102
- expect(row.success).toBe(0);
103
- expect(row.error_message).toBe("timeout");
104
- });
105
- it("updateProjectContext upserts on conflict", () => {
106
- const base = {
107
- projectPath: "/proj",
108
- projectType: "web_frontend",
109
- detectedAt: Date.now(),
110
- lastSeen: Date.now(),
111
- language: "typescript",
112
- hasTests: true,
113
- hasCI: false,
114
- hasDocs: false,
115
- fileCount: 100,
116
- };
117
- updateProjectContext(db, base);
118
- updateProjectContext(db, { ...base, fileCount: 200 });
119
- const rows = db.prepare("SELECT * FROM project_context WHERE project_path = '/proj'").all();
120
- expect(rows).toHaveLength(1);
121
- expect(rows[0].file_count).toBe(200);
122
- });
123
- it("recordPresetSelection inserts a history row", () => {
124
- recordPresetSelection(db, {
125
- projectPath: "/proj",
126
- preset: "full",
127
- toolsetCount: 175,
128
- selectedAt: Date.now(),
129
- selectionReason: "smart",
130
- });
131
- const count = db.prepare("SELECT COUNT(*) as c FROM preset_history").get().c;
132
- expect(count).toBe(1);
133
- });
134
- it("cache: setCachedStats + getCachedStats round-trip", () => {
135
- const now = Date.now();
136
- setCachedStats(db, {
137
- projectPath: "/proj",
138
- cacheKey: "summary_30d",
139
- stats: JSON.stringify({ totalCalls: 42 }),
140
- computedAt: now,
141
- ttl: 300, // 5 minutes in seconds
142
- });
143
- const cached = getCachedStats(db, "/proj", "summary_30d");
144
- expect(cached).not.toBeNull();
145
- expect(JSON.parse(cached).totalCalls).toBe(42);
146
- });
147
- it("cache: expired entries return null", () => {
148
- const past = Date.now() - 600_000; // 10 minutes ago
149
- setCachedStats(db, {
150
- projectPath: "/proj",
151
- cacheKey: "old",
152
- stats: "{}",
153
- computedAt: past,
154
- ttl: 60, // 1 minute TTL — should be expired
155
- });
156
- const result = getCachedStats(db, "/proj", "old");
157
- expect(result).toBeNull();
158
- });
159
- it("clearOldRecords deletes old tool_usage rows", () => {
160
- const old = Date.now() - 100 * 24 * 60 * 60 * 1000; // 100 days ago
161
- recordToolUsage(db, {
162
- toolName: "old_tool",
163
- toolset: "verification",
164
- timestamp: old,
165
- duration: 10,
166
- success: true,
167
- projectPath: "/proj",
168
- preset: "default",
169
- });
170
- recordToolUsage(db, {
171
- toolName: "new_tool",
172
- toolset: "verification",
173
- timestamp: Date.now(),
174
- duration: 10,
175
- success: true,
176
- projectPath: "/proj",
177
- preset: "default",
178
- });
179
- clearOldRecords(db, 90);
180
- const count = db.prepare("SELECT COUNT(*) as c FROM tool_usage").get().c;
181
- expect(count).toBe(1);
182
- const row = db.prepare("SELECT tool_name FROM tool_usage").get();
183
- expect(row.tool_name).toBe("new_tool");
184
- });
185
- it("clearOldRecords(0) deletes everything", () => {
186
- recordToolUsage(db, {
187
- toolName: "any",
188
- toolset: "any",
189
- timestamp: Date.now() - 1, // 1ms in the past to satisfy strict < comparison
190
- duration: 10,
191
- success: true,
192
- projectPath: "/proj",
193
- preset: "default",
194
- });
195
- clearOldRecords(db, 0);
196
- const count = db.prepare("SELECT COUNT(*) as c FROM tool_usage").get().c;
197
- expect(count).toBe(0);
198
- });
199
- });
200
- // ── usageStats tests ────────────────────────────────────────────────────
201
- import { getToolUsageStats, getToolsetUsageStats, getProjectUsageSummary, getUsageTrend, getUnusedTools, getFrequentlyFailingTools, formatStatsDisplay, getCachedProjectSummary, } from "../analytics/usageStats.js";
202
- function seedUsageData(db) {
203
- const now = Date.now();
204
- const tools = [
205
- { name: "verify_fix", toolset: "verification", success: true },
206
- { name: "verify_fix", toolset: "verification", success: true },
207
- { name: "verify_fix", toolset: "verification", success: false },
208
- { name: "run_eval", toolset: "eval", success: true },
209
- { name: "web_search", toolset: "web", success: true },
210
- { name: "web_search", toolset: "web", success: false },
211
- { name: "web_search", toolset: "web", success: false },
212
- { name: "web_search", toolset: "web", success: false },
213
- ];
214
- for (const t of tools) {
215
- recordToolUsage(db, {
216
- toolName: t.name,
217
- toolset: t.toolset,
218
- timestamp: now - Math.random() * 1000000,
219
- duration: 100 + Math.random() * 500,
220
- success: t.success,
221
- errorMessage: t.success ? undefined : "test error",
222
- projectPath: "/test-project",
223
- preset: "default",
224
- });
225
- }
226
- }
227
- describe("usageStats", () => {
228
- let db;
229
- beforeEach(() => {
230
- db = freshDb();
231
- seedUsageData(db);
232
- });
233
- afterEach(() => { db.close(); });
234
- it("getToolUsageStats returns per-tool aggregations", () => {
235
- const stats = getToolUsageStats(db, "/test-project", 30);
236
- expect(stats.length).toBeGreaterThan(0);
237
- const verifyStats = stats.find(s => s.toolName === "verify_fix");
238
- expect(verifyStats).toBeDefined();
239
- expect(verifyStats.callCount).toBe(3);
240
- expect(verifyStats.successCount).toBe(2);
241
- expect(verifyStats.failureCount).toBe(1);
242
- });
243
- it("getToolsetUsageStats returns per-toolset aggregations", () => {
244
- const stats = getToolsetUsageStats(db, "/test-project", 30);
245
- expect(stats.length).toBeGreaterThan(0);
246
- const webStats = stats.find(s => s.toolset === "web");
247
- expect(webStats).toBeDefined();
248
- expect(webStats.totalCalls).toBe(4);
249
- });
250
- it("getProjectUsageSummary returns null for empty project", () => {
251
- const summary = getProjectUsageSummary(db, "/nonexistent", 30);
252
- expect(summary).toBeNull();
253
- });
254
- it("getProjectUsageSummary returns valid summary", () => {
255
- const summary = getProjectUsageSummary(db, "/test-project", 30);
256
- expect(summary).not.toBeNull();
257
- expect(summary.totalCalls).toBe(8);
258
- expect(summary.uniqueToolsUsed).toBe(3);
259
- expect(summary.successRate).toBeGreaterThan(0);
260
- expect(summary.successRate).toBeLessThanOrEqual(1);
261
- expect(summary.topTools.length).toBeGreaterThan(0);
262
- expect(summary.topToolsets.length).toBeGreaterThan(0);
263
- });
264
- it("getUsageTrend returns daily aggregation", () => {
265
- const trends = getUsageTrend(db, "/test-project", 30);
266
- expect(trends.length).toBeGreaterThan(0);
267
- expect(trends[0]).toHaveProperty("date");
268
- expect(trends[0]).toHaveProperty("callCount");
269
- });
270
- it("getUnusedTools returns tools not called", () => {
271
- const unused = getUnusedTools(db, "/test-project", ["verify_fix", "run_eval", "web_search", "never_used_tool"], 30);
272
- expect(unused).toContain("never_used_tool");
273
- expect(unused).not.toContain("verify_fix");
274
- });
275
- it("getFrequentlyFailingTools returns tools with many failures", () => {
276
- const failing = getFrequentlyFailingTools(db, "/test-project", 30, 2);
277
- expect(failing.length).toBeGreaterThan(0);
278
- const webFailing = failing.find(f => f.toolName === "web_search");
279
- expect(webFailing).toBeDefined();
280
- expect(webFailing.failureCount).toBe(3);
281
- });
282
- it("formatStatsDisplay produces human-readable output", () => {
283
- const summary = getProjectUsageSummary(db, "/test-project", 30);
284
- const output = formatStatsDisplay(summary, "/test-project");
285
- expect(output).toContain("Usage Analytics");
286
- expect(output).toContain("Total calls:");
287
- expect(output).toContain("Success rate:");
288
- expect(output).toContain("Top Tools");
289
- });
290
- it("getCachedProjectSummary caches on first call and returns from cache on second", () => {
291
- const s1 = getCachedProjectSummary(db, "/test-project", 30);
292
- expect(s1).not.toBeNull();
293
- // Verify cache was written
294
- const cached = getCachedStats(db, "/test-project", "summary_30d");
295
- expect(cached).not.toBeNull();
296
- // Second call should return cached data
297
- const s2 = getCachedProjectSummary(db, "/test-project", 30);
298
- expect(s2).toEqual(s1);
299
- });
300
- });
301
- // ── projectDetector tests ───────────────────────────────────────────────
302
- import { detectProject } from "../analytics/projectDetector.js";
303
- describe("projectDetector", () => {
304
- let tmpDir;
305
- beforeEach(() => {
306
- tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "nb-test-"));
307
- });
308
- afterEach(() => {
309
- fs.rmSync(tmpDir, { recursive: true, force: true });
310
- });
311
- it("detects unknown project type for empty dir", () => {
312
- const ctx = detectProject(tmpDir);
313
- expect(ctx.projectType).toBe("unknown");
314
- expect(ctx.language).toBe("unknown");
315
- });
316
- it("detects web_frontend for React project", () => {
317
- fs.writeFileSync(path.join(tmpDir, "package.json"), JSON.stringify({
318
- dependencies: { react: "^18" },
319
- }));
320
- fs.writeFileSync(path.join(tmpDir, "tsconfig.json"), "{}");
321
- const ctx = detectProject(tmpDir);
322
- expect(ctx.projectType).toBe("web_frontend");
323
- expect(ctx.language).toBe("typescript");
324
- expect(ctx.framework).toBe("react");
325
- });
326
- it("detects library type for package.json with main field", () => {
327
- fs.writeFileSync(path.join(tmpDir, "package.json"), JSON.stringify({
328
- main: "dist/index.js",
329
- name: "my-lib",
330
- }));
331
- const ctx = detectProject(tmpDir);
332
- // Library detection depends on the heuristics — at minimum should detect JS
333
- expect(ctx.language).toBe("javascript");
334
- });
335
- it("detects tests when test files exist", () => {
336
- fs.writeFileSync(path.join(tmpDir, "package.json"), "{}");
337
- // Detector needs actual test files matching *.test.ts or a tests/ dir
338
- fs.mkdirSync(path.join(tmpDir, "tests"));
339
- fs.writeFileSync(path.join(tmpDir, "app.test.ts"), "");
340
- const ctx = detectProject(tmpDir);
341
- expect(ctx.hasTests).toBe(true);
342
- });
343
- it("detects CI when workflow files exist", () => {
344
- fs.writeFileSync(path.join(tmpDir, "package.json"), "{}");
345
- fs.mkdirSync(path.join(tmpDir, ".github", "workflows"), { recursive: true });
346
- fs.writeFileSync(path.join(tmpDir, ".github", "workflows", "ci.yml"), "name: CI");
347
- const ctx = detectProject(tmpDir);
348
- expect(ctx.hasCI).toBe(true);
349
- });
350
- it("counts files correctly", () => {
351
- fs.writeFileSync(path.join(tmpDir, "a.ts"), "");
352
- fs.writeFileSync(path.join(tmpDir, "b.ts"), "");
353
- fs.writeFileSync(path.join(tmpDir, "c.js"), "");
354
- const ctx = detectProject(tmpDir);
355
- expect(ctx.fileCount).toBeGreaterThanOrEqual(3);
356
- });
357
- it("detects Python project from requirements.txt", () => {
358
- fs.writeFileSync(path.join(tmpDir, "requirements.txt"), "pandas\nnumpy\n");
359
- const ctx = detectProject(tmpDir);
360
- expect(ctx.language).toBe("python");
361
- // requirements.txt can trigger fastapi pattern (web_backend) via anyFileExists
362
- expect(["web_backend", "data_science", "unknown"]).toContain(ctx.projectType);
363
- });
364
- });
365
- // ── smartPreset tests ───────────────────────────────────────────────────
366
- import { generateSmartPreset, listPresets, formatPresetRecommendation, } from "../analytics/smartPreset.js";
367
- function mockToolsetMap() {
368
- const makeTool = (name) => ({
369
- name,
370
- description: `Mock ${name}`,
371
- inputSchema: { type: "object", properties: {} },
372
- handler: async () => ({}),
373
- });
374
- return {
375
- verification: [makeTool("verify_fix"), makeTool("verify_plan")],
376
- eval: [makeTool("run_eval")],
377
- quality_gate: [makeTool("quality_check")],
378
- learning: [makeTool("record_learning")],
379
- flywheel: [makeTool("flywheel_step")],
380
- recon: [makeTool("recon_scan")],
381
- security: [makeTool("security_check")],
382
- boilerplate: [makeTool("scaffold")],
383
- web: [makeTool("web_search"), makeTool("fetch_url")],
384
- github: [makeTool("github_search")],
385
- vision: [makeTool("capture_screenshot")],
386
- ui_capture: [makeTool("capture_ui")],
387
- llm: [makeTool("call_llm")],
388
- };
389
- }
390
- describe("smartPreset", () => {
391
- let db;
392
- const toolsetMap = mockToolsetMap();
393
- beforeEach(() => { db = freshDb(); });
394
- afterEach(() => { db.close(); });
395
- it("recommends default for empty project with no history", () => {
396
- const rec = generateSmartPreset(db, toolsetMap, "/empty");
397
- expect(rec.preset).toBe("default");
398
- expect(rec.confidence).toBeGreaterThan(0);
399
- expect(rec.confidence).toBeLessThanOrEqual(1);
400
- expect(rec.signals.historyWeight).toBe(0);
401
- expect(rec.reason).toContain("No usage history");
402
- });
403
- it("includes signal breakdown with all 5 signals", () => {
404
- const rec = generateSmartPreset(db, toolsetMap, "/empty");
405
- expect(rec.signals).toHaveProperty("projectTypeAffinity");
406
- expect(rec.signals).toHaveProperty("usageBreadth");
407
- expect(rec.signals).toHaveProperty("specializedDepth");
408
- expect(rec.signals).toHaveProperty("failurePenalty");
409
- expect(rec.signals).toHaveProperty("historyWeight");
410
- });
411
- it("score increases when specialized toolsets are used heavily", () => {
412
- // Seed heavy usage of non-default toolsets
413
- const now = Date.now();
414
- for (let i = 0; i < 50; i++) {
415
- recordToolUsage(db, {
416
- toolName: "web_search",
417
- toolset: "web",
418
- timestamp: now - i * 10000,
419
- duration: 100,
420
- success: true,
421
- projectPath: "/heavy-web",
422
- preset: "full",
423
- });
424
- recordToolUsage(db, {
425
- toolName: "github_search",
426
- toolset: "github",
427
- timestamp: now - i * 10000,
428
- duration: 100,
429
- success: true,
430
- projectPath: "/heavy-web",
431
- preset: "full",
432
- });
433
- }
434
- const rec = generateSmartPreset(db, toolsetMap, "/heavy-web");
435
- expect(rec.signals.specializedDepth).toBeGreaterThan(0);
436
- expect(rec.signals.historyWeight).toBeGreaterThan(0.5);
437
- expect(rec.score).toBeGreaterThan(0.3);
438
- });
439
- it("failure penalty reduces confidence", () => {
440
- const now = Date.now();
441
- // Seed lots of failures
442
- for (let i = 0; i < 30; i++) {
443
- recordToolUsage(db, {
444
- toolName: "web_search",
445
- toolset: "web",
446
- timestamp: now - i * 1000,
447
- duration: 100,
448
- success: false,
449
- errorMessage: "timeout",
450
- projectPath: "/failing",
451
- preset: "full",
452
- });
453
- }
454
- const rec = generateSmartPreset(db, toolsetMap, "/failing");
455
- expect(rec.signals.failurePenalty).toBeGreaterThan(0);
456
- expect(rec.usageInsights.frequentlyFailingTools.length).toBeGreaterThan(0);
457
- });
458
- it("listPresets returns all presets with counts", () => {
459
- const presets = listPresets(toolsetMap);
460
- expect(presets.length).toBeGreaterThanOrEqual(10); // default + 8 themed + full
461
- expect(presets[0].name).toBe("default");
462
- expect(presets[presets.length - 1].name).toBe("full");
463
- expect(presets[presets.length - 1].toolCount).toBeGreaterThan(presets[0].toolCount);
464
- // Themed presets should have at least as many tools as default (extras may not exist in mock)
465
- for (const p of presets.slice(1, -1)) {
466
- expect(p.toolCount).toBeGreaterThanOrEqual(presets[0].toolCount);
467
- expect(p.toolCount).toBeLessThanOrEqual(presets[presets.length - 1].toolCount);
468
- }
469
- });
470
- it("formatPresetRecommendation includes signal breakdown and apply commands", () => {
471
- const rec = generateSmartPreset(db, toolsetMap, "/empty");
472
- const output = formatPresetRecommendation(rec, toolsetMap);
473
- expect(output).toContain("Smart Preset Recommendation");
474
- expect(output).toContain("Signal Breakdown");
475
- expect(output).toContain("Project Type Affinity");
476
- expect(output).toContain("Usage Breadth");
477
- expect(output).toContain("Apply");
478
- expect(output).toContain("npx nodebench-mcp --preset");
479
- });
480
- it("formatPresetRecommendation surfaces failing tools", () => {
481
- const now = Date.now();
482
- for (let i = 0; i < 10; i++) {
483
- recordToolUsage(db, {
484
- toolName: "broken_tool",
485
- toolset: "web",
486
- timestamp: now - i * 1000,
487
- duration: 50,
488
- success: false,
489
- errorMessage: "ECONNREFUSED",
490
- projectPath: "/broken",
491
- preset: "full",
492
- });
493
- }
494
- const rec = generateSmartPreset(db, toolsetMap, "/broken");
495
- const output = formatPresetRecommendation(rec, toolsetMap);
496
- expect(output).toContain("Failing Tools");
497
- expect(output).toContain("broken_tool");
498
- expect(output).toContain("ECONNREFUSED");
499
- });
500
- });
501
- // ── AnalyticsTracker tests ──────────────────────────────────────────────
502
- // We test the AnalyticsTracker in a limited way since it's a singleton
503
- // that opens a real DB. We test the core logic via the schema/stats tests above.
504
- // Here we just verify the class API contract.
505
- describe("AnalyticsTracker API contract", () => {
506
- it("exports AnalyticsTracker class with expected static methods", async () => {
507
- const { AnalyticsTracker } = await import("../analytics/toolTracker.js");
508
- expect(typeof AnalyticsTracker.init).toBe("function");
509
- expect(typeof AnalyticsTracker.get).toBe("function");
510
- });
511
- it("exports initializeProjectContext for backward compat", async () => {
512
- const { initializeProjectContext } = await import("../analytics/toolTracker.js");
513
- expect(typeof initializeProjectContext).toBe("function");
514
- });
515
- });
516
- // ── toolsetRegistry tests ───────────────────────────────────────────────
517
- describe("toolsetRegistry", () => {
518
- it("exports TOOLSET_MAP with expected toolsets", async () => {
519
- const { TOOLSET_MAP } = await import("../toolsetRegistry.js");
520
- expect(TOOLSET_MAP).toBeDefined();
521
- expect(typeof TOOLSET_MAP).toBe("object");
522
- expect(Object.keys(TOOLSET_MAP).length).toBeGreaterThan(20);
523
- // Core toolsets must exist
524
- expect(TOOLSET_MAP).toHaveProperty("verification");
525
- expect(TOOLSET_MAP).toHaveProperty("eval");
526
- expect(TOOLSET_MAP).toHaveProperty("quality_gate");
527
- expect(TOOLSET_MAP).toHaveProperty("web");
528
- });
529
- it("exports TOOL_TO_TOOLSET map", async () => {
530
- const { TOOL_TO_TOOLSET, TOOLSET_MAP } = await import("../toolsetRegistry.js");
531
- expect(TOOL_TO_TOOLSET).toBeInstanceOf(Map);
532
- // Every tool in TOOLSET_MAP should be in the lookup
533
- for (const [tsName, tools] of Object.entries(TOOLSET_MAP)) {
534
- for (const tool of tools) {
535
- expect(TOOL_TO_TOOLSET.get(tool.name)).toBe(tsName);
536
- }
537
- }
538
- });
539
- it("total tool count matches expectations (175)", async () => {
540
- const { TOOLSET_MAP } = await import("../toolsetRegistry.js");
541
- const total = Object.values(TOOLSET_MAP).reduce((s, t) => s + t.length, 0);
542
- // Should be around 169 domain tools (175 - 6 meta/discovery)
543
- expect(total).toBeGreaterThan(100);
544
- });
545
- });
546
- //# sourceMappingURL=analytics.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analytics.test.js","sourceRoot":"","sources":["../../src/__tests__/analytics.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};