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.
- package/README.md +95 -41
- package/dist/agents/alertRouter.d.ts +38 -0
- package/dist/agents/alertRouter.js +151 -0
- package/dist/agents/alertRouter.js.map +1 -0
- package/dist/agents/entityMemory.d.ts +40 -0
- package/dist/agents/entityMemory.js +64 -0
- package/dist/agents/entityMemory.js.map +1 -0
- package/dist/agents/subAgents.d.ts +35 -0
- package/dist/agents/subAgents.js +62 -0
- package/dist/agents/subAgents.js.map +1 -0
- package/dist/benchmarks/benchmarkRunner.js +14 -0
- package/dist/benchmarks/benchmarkRunner.js.map +1 -1
- package/dist/benchmarks/chainEval.js +107 -0
- package/dist/benchmarks/chainEval.js.map +1 -1
- package/dist/benchmarks/llmJudgeEval.js +85 -0
- package/dist/benchmarks/llmJudgeEval.js.map +1 -1
- package/dist/benchmarks/searchQualityEval.js +118 -5
- package/dist/benchmarks/searchQualityEval.js.map +1 -1
- package/dist/cli/search.d.ts +13 -0
- package/dist/cli/search.js +130 -0
- package/dist/cli/search.js.map +1 -0
- package/dist/dashboard/operatingDashboardHtml.js +2 -1
- package/dist/dashboard/operatingDashboardHtml.js.map +1 -1
- package/dist/dashboard/operatingServer.js +3 -2
- package/dist/dashboard/operatingServer.js.map +1 -1
- package/dist/db.d.ts +6 -2
- package/dist/db.js +521 -6
- package/dist/db.js.map +1 -1
- package/dist/index.js +349 -67
- package/dist/index.js.map +1 -1
- package/dist/packageInfo.d.ts +3 -0
- package/dist/packageInfo.js +32 -0
- package/dist/packageInfo.js.map +1 -0
- package/dist/profiler/behaviorStore.d.ts +97 -0
- package/dist/profiler/behaviorStore.js +276 -0
- package/dist/profiler/behaviorStore.js.map +1 -0
- package/dist/profiler/eventCollector.d.ts +119 -0
- package/dist/profiler/eventCollector.js +267 -0
- package/dist/profiler/eventCollector.js.map +1 -0
- package/dist/profiler/index.d.ts +15 -0
- package/dist/profiler/index.js +16 -0
- package/dist/profiler/index.js.map +1 -0
- package/dist/profiler/mcpProxy.d.ts +49 -0
- package/dist/profiler/mcpProxy.js +123 -0
- package/dist/profiler/mcpProxy.js.map +1 -0
- package/dist/profiler/modelRouter.d.ts +30 -0
- package/dist/profiler/modelRouter.js +99 -0
- package/dist/profiler/modelRouter.js.map +1 -0
- package/dist/profiler/otelReceiver.d.ts +17 -0
- package/dist/profiler/otelReceiver.js +62 -0
- package/dist/profiler/otelReceiver.js.map +1 -0
- package/dist/profiler/proofEngine.d.ts +41 -0
- package/dist/profiler/proofEngine.js +93 -0
- package/dist/profiler/proofEngine.js.map +1 -0
- package/dist/profiler/workflowTemplates.d.ts +41 -0
- package/dist/profiler/workflowTemplates.js +95 -0
- package/dist/profiler/workflowTemplates.js.map +1 -0
- package/dist/providers/localMemoryProvider.js +3 -2
- package/dist/providers/localMemoryProvider.js.map +1 -1
- package/dist/runtimeConfig.d.ts +11 -0
- package/dist/runtimeConfig.js +27 -0
- package/dist/runtimeConfig.js.map +1 -0
- package/dist/sandboxApi.js +2 -1
- package/dist/sandboxApi.js.map +1 -1
- package/dist/security/auditLog.js +8 -3
- package/dist/security/auditLog.js.map +1 -1
- package/dist/subconscious/blocks.d.ts +43 -0
- package/dist/subconscious/blocks.js +158 -0
- package/dist/subconscious/blocks.js.map +1 -0
- package/dist/subconscious/classifier.d.ts +22 -0
- package/dist/subconscious/classifier.js +118 -0
- package/dist/subconscious/classifier.js.map +1 -0
- package/dist/subconscious/graphEngine.d.ts +65 -0
- package/dist/subconscious/graphEngine.js +234 -0
- package/dist/subconscious/graphEngine.js.map +1 -0
- package/dist/subconscious/index.d.ts +19 -0
- package/dist/subconscious/index.js +20 -0
- package/dist/subconscious/index.js.map +1 -0
- package/dist/subconscious/tools.d.ts +5 -0
- package/dist/subconscious/tools.js +255 -0
- package/dist/subconscious/tools.js.map +1 -0
- package/dist/subconscious/whisperPolicy.d.ts +20 -0
- package/dist/subconscious/whisperPolicy.js +171 -0
- package/dist/subconscious/whisperPolicy.js.map +1 -0
- package/dist/sweep/engine.d.ts +27 -0
- package/dist/sweep/engine.js +244 -0
- package/dist/sweep/engine.js.map +1 -0
- package/dist/sweep/index.d.ts +9 -0
- package/dist/sweep/index.js +8 -0
- package/dist/sweep/index.js.map +1 -0
- package/dist/sweep/sources/github_trending.d.ts +6 -0
- package/dist/sweep/sources/github_trending.js +37 -0
- package/dist/sweep/sources/github_trending.js.map +1 -0
- package/dist/sweep/sources/hackernews.d.ts +7 -0
- package/dist/sweep/sources/hackernews.js +57 -0
- package/dist/sweep/sources/hackernews.js.map +1 -0
- package/dist/sweep/sources/openbb_finance.d.ts +9 -0
- package/dist/sweep/sources/openbb_finance.js +46 -0
- package/dist/sweep/sources/openbb_finance.js.map +1 -0
- package/dist/sweep/sources/producthunt.d.ts +6 -0
- package/dist/sweep/sources/producthunt.js +41 -0
- package/dist/sweep/sources/producthunt.js.map +1 -0
- package/dist/sweep/sources/web_signals.d.ts +7 -0
- package/dist/sweep/sources/web_signals.js +63 -0
- package/dist/sweep/sources/web_signals.js.map +1 -0
- package/dist/sweep/sources/yahoo_finance.d.ts +6 -0
- package/dist/sweep/sources/yahoo_finance.js +47 -0
- package/dist/sweep/sources/yahoo_finance.js.map +1 -0
- package/dist/sweep/types.d.ts +50 -0
- package/dist/sweep/types.js +9 -0
- package/dist/sweep/types.js.map +1 -0
- package/dist/sync/founderEpisodeStore.d.ts +98 -0
- package/dist/sync/founderEpisodeStore.js +230 -0
- package/dist/sync/founderEpisodeStore.js.map +1 -0
- package/dist/sync/hyperloopArchive.d.ts +51 -0
- package/dist/sync/hyperloopArchive.js +153 -0
- package/dist/sync/hyperloopArchive.js.map +1 -0
- package/dist/sync/hyperloopEval.d.ts +123 -0
- package/dist/sync/hyperloopEval.js +389 -0
- package/dist/sync/hyperloopEval.js.map +1 -0
- package/dist/sync/protocol.d.ts +172 -0
- package/dist/sync/protocol.js +9 -0
- package/dist/sync/protocol.js.map +1 -0
- package/dist/sync/sessionMemory.d.ts +47 -0
- package/dist/sync/sessionMemory.js +138 -0
- package/dist/sync/sessionMemory.js.map +1 -0
- package/dist/sync/store.d.ts +384 -0
- package/dist/sync/store.js +1435 -0
- package/dist/sync/store.js.map +1 -0
- package/dist/sync/syncBridgeClient.d.ts +30 -0
- package/dist/sync/syncBridgeClient.js +172 -0
- package/dist/sync/syncBridgeClient.js.map +1 -0
- package/dist/tools/autonomousDeliveryTools.d.ts +2 -0
- package/dist/tools/autonomousDeliveryTools.js +1104 -0
- package/dist/tools/autonomousDeliveryTools.js.map +1 -0
- package/dist/tools/boilerplateTools.js +10 -9
- package/dist/tools/boilerplateTools.js.map +1 -1
- package/dist/tools/claudeCodeIngestTools.d.ts +10 -0
- package/dist/tools/claudeCodeIngestTools.js +347 -0
- package/dist/tools/claudeCodeIngestTools.js.map +1 -0
- package/dist/tools/coreWorkflowTools.d.ts +2 -0
- package/dist/tools/coreWorkflowTools.js +488 -0
- package/dist/tools/coreWorkflowTools.js.map +1 -0
- package/dist/tools/deltaTools.d.ts +15 -0
- package/dist/tools/deltaTools.js +1522 -0
- package/dist/tools/deltaTools.js.map +1 -0
- package/dist/tools/documentationTools.js +2 -1
- package/dist/tools/documentationTools.js.map +1 -1
- package/dist/tools/entityLookupTools.d.ts +14 -0
- package/dist/tools/entityLookupTools.js +159 -0
- package/dist/tools/entityLookupTools.js.map +1 -0
- package/dist/tools/entityTemporalTools.d.ts +12 -0
- package/dist/tools/entityTemporalTools.js +330 -0
- package/dist/tools/entityTemporalTools.js.map +1 -0
- package/dist/tools/founderLocalPipeline.d.ts +215 -0
- package/dist/tools/founderLocalPipeline.js +1516 -2
- package/dist/tools/founderLocalPipeline.js.map +1 -1
- package/dist/tools/founderOperatingModel.d.ts +120 -0
- package/dist/tools/founderOperatingModel.js +469 -0
- package/dist/tools/founderOperatingModel.js.map +1 -0
- package/dist/tools/founderOperatingModelTools.d.ts +2 -0
- package/dist/tools/founderOperatingModelTools.js +169 -0
- package/dist/tools/founderOperatingModelTools.js.map +1 -0
- package/dist/tools/founderStrategicOpsTools.d.ts +2 -0
- package/dist/tools/founderStrategicOpsTools.js +1310 -0
- package/dist/tools/founderStrategicOpsTools.js.map +1 -0
- package/dist/tools/graphifyTools.d.ts +19 -0
- package/dist/tools/graphifyTools.js +375 -0
- package/dist/tools/graphifyTools.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/monteCarloTools.d.ts +16 -0
- package/dist/tools/monteCarloTools.js +225 -0
- package/dist/tools/monteCarloTools.js.map +1 -0
- package/dist/tools/packetCompilerTools.d.ts +12 -0
- package/dist/tools/packetCompilerTools.js +322 -0
- package/dist/tools/packetCompilerTools.js.map +1 -0
- package/dist/tools/planSynthesisTools.d.ts +15 -0
- package/dist/tools/planSynthesisTools.js +455 -0
- package/dist/tools/planSynthesisTools.js.map +1 -0
- package/dist/tools/profilerTools.d.ts +20 -0
- package/dist/tools/profilerTools.js +364 -0
- package/dist/tools/profilerTools.js.map +1 -0
- package/dist/tools/progressiveDiscoveryTools.js +2 -1
- package/dist/tools/progressiveDiscoveryTools.js.map +1 -1
- package/dist/tools/savingsTools.d.ts +11 -0
- package/dist/tools/savingsTools.js +155 -0
- package/dist/tools/savingsTools.js.map +1 -0
- package/dist/tools/scenarioCompilerTools.d.ts +14 -0
- package/dist/tools/scenarioCompilerTools.js +290 -0
- package/dist/tools/scenarioCompilerTools.js.map +1 -0
- package/dist/tools/sharedContextTools.d.ts +2 -0
- package/dist/tools/sharedContextTools.js +423 -0
- package/dist/tools/sharedContextTools.js.map +1 -0
- package/dist/tools/sitemapTools.d.ts +15 -0
- package/dist/tools/sitemapTools.js +560 -0
- package/dist/tools/sitemapTools.js.map +1 -0
- package/dist/tools/sweepTools.d.ts +9 -0
- package/dist/tools/sweepTools.js +112 -0
- package/dist/tools/sweepTools.js.map +1 -0
- package/dist/tools/syncBridgeTools.d.ts +2 -0
- package/dist/tools/syncBridgeTools.js +258 -0
- package/dist/tools/syncBridgeTools.js.map +1 -0
- package/dist/tools/toolRegistry.js +1223 -45
- package/dist/tools/toolRegistry.js.map +1 -1
- package/dist/tools/workspaceTools.d.ts +19 -0
- package/dist/tools/workspaceTools.js +762 -0
- package/dist/tools/workspaceTools.js.map +1 -0
- package/dist/toolsetRegistry.js +162 -3
- package/dist/toolsetRegistry.js.map +1 -1
- package/package.json +39 -38
- package/rules/nodebench-agentic-reliability.md +32 -0
- package/rules/nodebench-analyst-diagnostic.md +25 -0
- package/rules/nodebench-auto-qa.md +31 -0
- package/rules/nodebench-completion-traceability.md +22 -0
- package/rules/nodebench-flywheel-continuous.md +25 -0
- package/rules/nodebench-pre-release-review.md +24 -0
- package/rules/nodebench-qa-dogfood.md +26 -0
- package/rules/nodebench-scenario-testing.md +30 -0
- package/rules/nodebench-self-direction.md +23 -0
- package/rules/nodebench-self-judge-loop.md +24 -0
- package/scripts/install.sh +215 -0
- package/dist/__tests__/analytics.test.d.ts +0 -11
- package/dist/__tests__/analytics.test.js +0 -546
- package/dist/__tests__/analytics.test.js.map +0 -1
- package/dist/__tests__/architectComplex.test.d.ts +0 -1
- package/dist/__tests__/architectComplex.test.js +0 -373
- package/dist/__tests__/architectComplex.test.js.map +0 -1
- package/dist/__tests__/architectSmoke.test.d.ts +0 -1
- package/dist/__tests__/architectSmoke.test.js +0 -92
- package/dist/__tests__/architectSmoke.test.js.map +0 -1
- package/dist/__tests__/audit-registry.d.ts +0 -1
- package/dist/__tests__/audit-registry.js +0 -60
- package/dist/__tests__/audit-registry.js.map +0 -1
- package/dist/__tests__/batchAutopilot.test.d.ts +0 -8
- package/dist/__tests__/batchAutopilot.test.js +0 -218
- package/dist/__tests__/batchAutopilot.test.js.map +0 -1
- package/dist/__tests__/cliSubcommands.test.d.ts +0 -1
- package/dist/__tests__/cliSubcommands.test.js +0 -138
- package/dist/__tests__/cliSubcommands.test.js.map +0 -1
- package/dist/__tests__/comparativeBench.test.d.ts +0 -1
- package/dist/__tests__/comparativeBench.test.js +0 -722
- package/dist/__tests__/comparativeBench.test.js.map +0 -1
- package/dist/__tests__/critterCalibrationEval.d.ts +0 -8
- package/dist/__tests__/critterCalibrationEval.js +0 -370
- package/dist/__tests__/critterCalibrationEval.js.map +0 -1
- package/dist/__tests__/dynamicLoading.test.d.ts +0 -1
- package/dist/__tests__/dynamicLoading.test.js +0 -280
- package/dist/__tests__/dynamicLoading.test.js.map +0 -1
- package/dist/__tests__/embeddingProvider.test.d.ts +0 -1
- package/dist/__tests__/embeddingProvider.test.js +0 -86
- package/dist/__tests__/embeddingProvider.test.js.map +0 -1
- package/dist/__tests__/evalDatasetBench.test.d.ts +0 -1
- package/dist/__tests__/evalDatasetBench.test.js +0 -738
- package/dist/__tests__/evalDatasetBench.test.js.map +0 -1
- package/dist/__tests__/evalHarness.test.d.ts +0 -1
- package/dist/__tests__/evalHarness.test.js +0 -1107
- package/dist/__tests__/evalHarness.test.js.map +0 -1
- package/dist/__tests__/fixtures/bfcl_v3_long_context.sample.json +0 -264
- package/dist/__tests__/fixtures/generateBfclLongContextFixture.d.ts +0 -10
- package/dist/__tests__/fixtures/generateBfclLongContextFixture.js +0 -135
- package/dist/__tests__/fixtures/generateBfclLongContextFixture.js.map +0 -1
- package/dist/__tests__/fixtures/generateSwebenchVerifiedFixture.d.ts +0 -14
- package/dist/__tests__/fixtures/generateSwebenchVerifiedFixture.js +0 -189
- package/dist/__tests__/fixtures/generateSwebenchVerifiedFixture.js.map +0 -1
- package/dist/__tests__/fixtures/generateToolbenchInstructionFixture.d.ts +0 -16
- package/dist/__tests__/fixtures/generateToolbenchInstructionFixture.js +0 -154
- package/dist/__tests__/fixtures/generateToolbenchInstructionFixture.js.map +0 -1
- package/dist/__tests__/fixtures/swebench_verified.sample.json +0 -162
- package/dist/__tests__/fixtures/toolbench_instruction.sample.json +0 -109
- package/dist/__tests__/forecastingDogfood.test.d.ts +0 -9
- package/dist/__tests__/forecastingDogfood.test.js +0 -284
- package/dist/__tests__/forecastingDogfood.test.js.map +0 -1
- package/dist/__tests__/forecastingScoring.test.d.ts +0 -9
- package/dist/__tests__/forecastingScoring.test.js +0 -202
- package/dist/__tests__/forecastingScoring.test.js.map +0 -1
- package/dist/__tests__/gaiaCapabilityAudioEval.test.d.ts +0 -15
- package/dist/__tests__/gaiaCapabilityAudioEval.test.js +0 -265
- package/dist/__tests__/gaiaCapabilityAudioEval.test.js.map +0 -1
- package/dist/__tests__/gaiaCapabilityEval.test.d.ts +0 -14
- package/dist/__tests__/gaiaCapabilityEval.test.js +0 -1259
- package/dist/__tests__/gaiaCapabilityEval.test.js.map +0 -1
- package/dist/__tests__/gaiaCapabilityFilesEval.test.d.ts +0 -15
- package/dist/__tests__/gaiaCapabilityFilesEval.test.js +0 -914
- package/dist/__tests__/gaiaCapabilityFilesEval.test.js.map +0 -1
- package/dist/__tests__/gaiaCapabilityMediaEval.test.d.ts +0 -15
- package/dist/__tests__/gaiaCapabilityMediaEval.test.js +0 -1101
- package/dist/__tests__/gaiaCapabilityMediaEval.test.js.map +0 -1
- package/dist/__tests__/helpers/answerMatch.d.ts +0 -41
- package/dist/__tests__/helpers/answerMatch.js +0 -267
- package/dist/__tests__/helpers/answerMatch.js.map +0 -1
- package/dist/__tests__/helpers/textLlm.d.ts +0 -25
- package/dist/__tests__/helpers/textLlm.js +0 -214
- package/dist/__tests__/helpers/textLlm.js.map +0 -1
- package/dist/__tests__/localDashboard.test.d.ts +0 -1
- package/dist/__tests__/localDashboard.test.js +0 -226
- package/dist/__tests__/localDashboard.test.js.map +0 -1
- package/dist/__tests__/multiHopDogfood.test.d.ts +0 -12
- package/dist/__tests__/multiHopDogfood.test.js +0 -303
- package/dist/__tests__/multiHopDogfood.test.js.map +0 -1
- package/dist/__tests__/openDatasetParallelEval.test.d.ts +0 -7
- package/dist/__tests__/openDatasetParallelEval.test.js +0 -209
- package/dist/__tests__/openDatasetParallelEval.test.js.map +0 -1
- package/dist/__tests__/openDatasetParallelEvalGaia.test.d.ts +0 -7
- package/dist/__tests__/openDatasetParallelEvalGaia.test.js +0 -279
- package/dist/__tests__/openDatasetParallelEvalGaia.test.js.map +0 -1
- package/dist/__tests__/openDatasetParallelEvalSwebench.test.d.ts +0 -7
- package/dist/__tests__/openDatasetParallelEvalSwebench.test.js +0 -220
- package/dist/__tests__/openDatasetParallelEvalSwebench.test.js.map +0 -1
- package/dist/__tests__/openDatasetParallelEvalToolbench.test.d.ts +0 -7
- package/dist/__tests__/openDatasetParallelEvalToolbench.test.js +0 -218
- package/dist/__tests__/openDatasetParallelEvalToolbench.test.js.map +0 -1
- package/dist/__tests__/openDatasetPerfComparison.test.d.ts +0 -10
- package/dist/__tests__/openDatasetPerfComparison.test.js +0 -318
- package/dist/__tests__/openDatasetPerfComparison.test.js.map +0 -1
- package/dist/__tests__/openclawDogfood.test.d.ts +0 -23
- package/dist/__tests__/openclawDogfood.test.js +0 -535
- package/dist/__tests__/openclawDogfood.test.js.map +0 -1
- package/dist/__tests__/openclawMessaging.test.d.ts +0 -14
- package/dist/__tests__/openclawMessaging.test.js +0 -232
- package/dist/__tests__/openclawMessaging.test.js.map +0 -1
- package/dist/__tests__/presetRealWorldBench.test.d.ts +0 -1
- package/dist/__tests__/presetRealWorldBench.test.js +0 -859
- package/dist/__tests__/presetRealWorldBench.test.js.map +0 -1
- package/dist/__tests__/tools.test.d.ts +0 -1
- package/dist/__tests__/tools.test.js +0 -3201
- package/dist/__tests__/tools.test.js.map +0 -1
- package/dist/__tests__/toolsetGatingEval.test.d.ts +0 -1
- package/dist/__tests__/toolsetGatingEval.test.js +0 -1099
- package/dist/__tests__/toolsetGatingEval.test.js.map +0 -1
- package/dist/__tests__/traceabilityDogfood.test.d.ts +0 -12
- package/dist/__tests__/traceabilityDogfood.test.js +0 -241
- package/dist/__tests__/traceabilityDogfood.test.js.map +0 -1
- package/dist/__tests__/webmcpTools.test.d.ts +0 -7
- package/dist/__tests__/webmcpTools.test.js +0 -195
- package/dist/__tests__/webmcpTools.test.js.map +0 -1
- package/dist/benchmarks/testProviderBus.d.ts +0 -7
- package/dist/benchmarks/testProviderBus.js +0 -272
- package/dist/benchmarks/testProviderBus.js.map +0 -1
- package/dist/hooks/postCompaction.d.ts +0 -14
- package/dist/hooks/postCompaction.js +0 -51
- package/dist/hooks/postCompaction.js.map +0 -1
- package/dist/security/__tests__/security.test.d.ts +0 -8
- package/dist/security/__tests__/security.test.js +0 -295
- package/dist/security/__tests__/security.test.js.map +0 -1
- package/dist/tools/documentTools.d.ts +0 -5
- package/dist/tools/documentTools.js +0 -524
- package/dist/tools/documentTools.js.map +0 -1
- package/dist/tools/financialTools.d.ts +0 -10
- package/dist/tools/financialTools.js +0 -403
- package/dist/tools/financialTools.js.map +0 -1
- package/dist/tools/memoryTools.d.ts +0 -5
- package/dist/tools/memoryTools.js +0 -137
- package/dist/tools/memoryTools.js.map +0 -1
- package/dist/tools/planningTools.d.ts +0 -5
- package/dist/tools/planningTools.js +0 -147
- package/dist/tools/planningTools.js.map +0 -1
- package/dist/tools/searchTools.d.ts +0 -5
- package/dist/tools/searchTools.js +0 -145
- package/dist/tools/searchTools.js.map +0 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# NodeBench: Pre-Release Review
|
|
2
|
+
|
|
3
|
+
Run before any deploy, PR, or demo.
|
|
4
|
+
|
|
5
|
+
## 7-Layer Review Stack
|
|
6
|
+
|
|
7
|
+
1. **Build gate** — `npx tsc --noEmit` + `npx vite build` (0 errors)
|
|
8
|
+
2. **Test gate** — `npm run test:run` (0 failures)
|
|
9
|
+
3. **Visual sweep** — Visit every surface, check for console errors, layout shift, contrast
|
|
10
|
+
4. **Agent panel** — Open agent panel, run demo conversation, close cleanly
|
|
11
|
+
5. **Content freshness** — No stale dates, TODOs, "Coming soon", developer jargon in UI
|
|
12
|
+
6. **A11y spot-check** — Tab through page, check focus rings, contrast, reduced motion
|
|
13
|
+
7. **Bundle sanity** — No chunks >500KB, route chunks separate
|
|
14
|
+
|
|
15
|
+
## Failure protocol
|
|
16
|
+
|
|
17
|
+
- Layer 1-2 failures: BLOCK. Fix before any review.
|
|
18
|
+
- Layer 3-7 failures: FIX INLINE with before/after evidence.
|
|
19
|
+
|
|
20
|
+
## NodeBench tools
|
|
21
|
+
|
|
22
|
+
- `run_quality_gate()` — automated checks
|
|
23
|
+
- `capture_responsive_suite({ url })` — visual proof at all breakpoints
|
|
24
|
+
- `site_map({ url })` — full surface coverage
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# NodeBench: QA Dogfood Protocol
|
|
2
|
+
|
|
3
|
+
After ANY implementation change, run this checklist before declaring done.
|
|
4
|
+
|
|
5
|
+
## Automated checks
|
|
6
|
+
|
|
7
|
+
1. `npx tsc --noEmit` — must be 0 errors
|
|
8
|
+
2. `npx vitest run` — must be 0 failures
|
|
9
|
+
3. Start dev server and verify all surfaces render
|
|
10
|
+
4. Check console for errors on every surface
|
|
11
|
+
5. Test navigation: rail switches, CTA buttons, demo cards
|
|
12
|
+
|
|
13
|
+
## NodeBench tool-assisted QA
|
|
14
|
+
|
|
15
|
+
- `run_quality_gate()` — automated quality checks
|
|
16
|
+
- `capture_responsive_suite({ url })` — screenshots at mobile/tablet/desktop
|
|
17
|
+
- `run_visual_qa_suite()` — Gemini vision scoring against design principles
|
|
18
|
+
- `site_map({ url })` — crawl and inspect all pages interactively
|
|
19
|
+
- `diff_crawl({ url })` — before/after comparison
|
|
20
|
+
|
|
21
|
+
## Never declare work complete without
|
|
22
|
+
|
|
23
|
+
- Running the build (0 errors)
|
|
24
|
+
- Running tests (0 failures)
|
|
25
|
+
- Visual verification (screenshot or preview)
|
|
26
|
+
- Console check (0 errors on all surfaces)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# NodeBench: Scenario-Based Testing
|
|
2
|
+
|
|
3
|
+
Never write simple tests. Every test must be scenario-based.
|
|
4
|
+
|
|
5
|
+
## Every test must answer 6 questions
|
|
6
|
+
|
|
7
|
+
1. **Who** — Which user persona? (first-timer, power user, adversarial, mobile)
|
|
8
|
+
2. **What** — What is the user trying to achieve? (goal, not function)
|
|
9
|
+
3. **How** — Action sequence, timing, concurrency pattern
|
|
10
|
+
4. **Scale** — 1 user, 10 concurrent, 100 sustained
|
|
11
|
+
5. **Duration** — Short-running (burst) AND long-running (accumulation)
|
|
12
|
+
6. **Failure modes** — Edge cases, race conditions, degraded inputs
|
|
13
|
+
|
|
14
|
+
## Required categories per feature
|
|
15
|
+
|
|
16
|
+
| Category | What it covers |
|
|
17
|
+
|---|---|
|
|
18
|
+
| Happy path | Baseline correctness |
|
|
19
|
+
| Sad paths | Every error condition, boundary value |
|
|
20
|
+
| Concurrent | Race conditions, dirty reads, double-submit |
|
|
21
|
+
| Degraded | Slow network, auth expiry, partial failures |
|
|
22
|
+
| Long-running | State after 100+ sessions, memory growth |
|
|
23
|
+
| Adversarial | Injection, replay attacks, unexpected payloads |
|
|
24
|
+
|
|
25
|
+
## Anti-patterns (banned)
|
|
26
|
+
|
|
27
|
+
- Tests with no defined user persona
|
|
28
|
+
- Tests that mock everything and test nothing real
|
|
29
|
+
- Tests that pass at 1 user and are never run at 10+
|
|
30
|
+
- Declaring "tested" after a single happy-path check
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# NodeBench: Self-Direction
|
|
2
|
+
|
|
3
|
+
Never wait for permission, confirmation, or next instructions. Direct yourself.
|
|
4
|
+
|
|
5
|
+
## Protocol
|
|
6
|
+
|
|
7
|
+
1. **Decide** — When a task completes, immediately identify the next highest-impact action
|
|
8
|
+
2. **Act** — Start the next task. If blocked, pivot to a parallel workstream
|
|
9
|
+
3. **Visual-first** — Verify work visually (screenshots, previews, e2e tests). Code grep is supplementary.
|
|
10
|
+
4. **Momentum** — Batch related fixes. Ship small increments. Keep the build green.
|
|
11
|
+
5. **Escalate only on ambiguity** — Only pause when direction is genuinely unclear
|
|
12
|
+
|
|
13
|
+
## NodeBench tools for momentum
|
|
14
|
+
|
|
15
|
+
- `discover_tools('next step')` — find what to do next
|
|
16
|
+
- `get_workflow_chain('verify')` — step-by-step verification workflow
|
|
17
|
+
- `get_system_pulse()` — quick health check before moving on
|
|
18
|
+
|
|
19
|
+
## Anti-patterns
|
|
20
|
+
|
|
21
|
+
- "What would you like me to do next?"
|
|
22
|
+
- Listing findings without acting on them
|
|
23
|
+
- Running code searches when screenshots would answer faster
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# NodeBench: Self-Judge Loop
|
|
2
|
+
|
|
3
|
+
Never declare work complete without running it through a structured judge pipeline.
|
|
4
|
+
|
|
5
|
+
## Protocol
|
|
6
|
+
|
|
7
|
+
1. **Find the methods yourself** — Search for analytical frameworks used by top practitioners
|
|
8
|
+
2. **Produce multiple versions** — At least 3 competing approaches with tradeoffs
|
|
9
|
+
3. **Deconstruct best in class** — Why did the best products in adjacent spaces succeed?
|
|
10
|
+
4. **Build structured judge pipelines** — Boolean-scored evaluation, loop until all pass
|
|
11
|
+
5. **Audit the product, not just the artifact** — Time to dopamine, feedback loop speed, shareability
|
|
12
|
+
|
|
13
|
+
## NodeBench tools for self-judging
|
|
14
|
+
|
|
15
|
+
- `run_quality_gate()` — automated boolean checks
|
|
16
|
+
- `run_visual_qa_suite()` — Gemini vision scoring
|
|
17
|
+
- `compare_savings()` — measure improvement over time
|
|
18
|
+
- `suggest_tests()` — generate test cases from crawl findings
|
|
19
|
+
|
|
20
|
+
## Anti-patterns
|
|
21
|
+
|
|
22
|
+
- Producing one version and asking "is this good?"
|
|
23
|
+
- Evaluating with made-up criteria instead of industry frameworks
|
|
24
|
+
- Waiting for the user to say "also check X"
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# NodeBench MCP — One-liner installer
|
|
3
|
+
# Usage: curl -sL https://nodebenchai.com/install.sh | bash
|
|
4
|
+
# or: bash packages/mcp-local/scripts/install.sh
|
|
5
|
+
|
|
6
|
+
set -euo pipefail
|
|
7
|
+
|
|
8
|
+
# ── Colors ──────────────────────────────────────────────────────────────
|
|
9
|
+
if [ -t 1 ]; then
|
|
10
|
+
B="\033[1m"
|
|
11
|
+
G="\033[32m"
|
|
12
|
+
Y="\033[33m"
|
|
13
|
+
C="\033[36m"
|
|
14
|
+
R="\033[31m"
|
|
15
|
+
X="\033[0m"
|
|
16
|
+
else
|
|
17
|
+
B="" G="" Y="" C="" R="" X=""
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
echo -e "${B}NodeBench MCP — Installer${X}"
|
|
21
|
+
echo ""
|
|
22
|
+
|
|
23
|
+
# ── Prerequisites ───────────────────────────────────────────────────────
|
|
24
|
+
# Check Node.js
|
|
25
|
+
if ! command -v node &>/dev/null; then
|
|
26
|
+
echo -e "${R}ERROR${X}: Node.js not found. Install Node.js >= 18: https://nodejs.org"
|
|
27
|
+
exit 1
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
NODE_VERSION=$(node -v | sed 's/v//' | cut -d. -f1)
|
|
31
|
+
if [ "$NODE_VERSION" -lt 18 ]; then
|
|
32
|
+
echo -e "${R}ERROR${X}: Node.js >= 18 required (found v$(node -v))"
|
|
33
|
+
exit 1
|
|
34
|
+
fi
|
|
35
|
+
echo -e " ${G}OK${X} Node.js $(node -v)"
|
|
36
|
+
|
|
37
|
+
# Check npm
|
|
38
|
+
if ! command -v npm &>/dev/null; then
|
|
39
|
+
echo -e "${R}ERROR${X}: npm not found"
|
|
40
|
+
exit 1
|
|
41
|
+
fi
|
|
42
|
+
echo -e " ${G}OK${X} npm $(npm -v)"
|
|
43
|
+
|
|
44
|
+
# ── Detect user info ────────────────────────────────────────────────────
|
|
45
|
+
USER_EMAIL=$(git config user.email 2>/dev/null || echo "")
|
|
46
|
+
if [ -n "$USER_EMAIL" ]; then
|
|
47
|
+
echo -e " ${G}OK${X} Git email: ${C}${USER_EMAIL}${X}"
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
# ── Install nodebench-mcp globally ──────────────────────────────────────
|
|
51
|
+
echo ""
|
|
52
|
+
echo -e "${B}Installing nodebench-mcp...${X}"
|
|
53
|
+
npm install -g nodebench-mcp@latest 2>/dev/null || {
|
|
54
|
+
echo -e "${Y}WARN${X}: Global install failed, will use npx instead"
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
# ── Determine nodebench-mcp location ────────────────────────────────────
|
|
58
|
+
NODEBENCH_PATH=""
|
|
59
|
+
if command -v nodebench-mcp &>/dev/null; then
|
|
60
|
+
NODEBENCH_PATH=$(which nodebench-mcp)
|
|
61
|
+
echo -e " ${G}OK${X} Installed: ${NODEBENCH_PATH}"
|
|
62
|
+
else
|
|
63
|
+
echo -e " ${G}OK${X} Will use: npx -y nodebench-mcp"
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
# ── Find rules directory ────────────────────────────────────────────────
|
|
67
|
+
RULES_SOURCE=""
|
|
68
|
+
if [ -n "$NODEBENCH_PATH" ]; then
|
|
69
|
+
# Global install — rules are in the package
|
|
70
|
+
PKG_DIR=$(dirname "$(dirname "$NODEBENCH_PATH")")/lib/node_modules/nodebench-mcp
|
|
71
|
+
if [ -d "$PKG_DIR/rules" ]; then
|
|
72
|
+
RULES_SOURCE="$PKG_DIR/rules"
|
|
73
|
+
fi
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
# Fallback: try npm root
|
|
77
|
+
if [ -z "$RULES_SOURCE" ]; then
|
|
78
|
+
NPM_ROOT=$(npm root -g 2>/dev/null || echo "")
|
|
79
|
+
if [ -d "$NPM_ROOT/nodebench-mcp/rules" ]; then
|
|
80
|
+
RULES_SOURCE="$NPM_ROOT/nodebench-mcp/rules"
|
|
81
|
+
fi
|
|
82
|
+
fi
|
|
83
|
+
|
|
84
|
+
# Fallback: npx cache
|
|
85
|
+
if [ -z "$RULES_SOURCE" ]; then
|
|
86
|
+
# Run npx once to ensure package is cached, then find it
|
|
87
|
+
npx -y nodebench-mcp --help >/dev/null 2>&1 || true
|
|
88
|
+
NPX_CACHE=$(find "$HOME/.npm/_npx" -name "nodebench-mcp" -type d 2>/dev/null | head -1)
|
|
89
|
+
if [ -n "$NPX_CACHE" ] && [ -d "$NPX_CACHE/rules" ]; then
|
|
90
|
+
RULES_SOURCE="$NPX_CACHE/rules"
|
|
91
|
+
fi
|
|
92
|
+
fi
|
|
93
|
+
|
|
94
|
+
# ── Install rules to ~/.claude/rules/ ───────────────────────────────────
|
|
95
|
+
echo ""
|
|
96
|
+
CLAUDE_RULES_DIR="$HOME/.claude/rules"
|
|
97
|
+
mkdir -p "$CLAUDE_RULES_DIR"
|
|
98
|
+
|
|
99
|
+
RULES_INSTALLED=0
|
|
100
|
+
if [ -n "$RULES_SOURCE" ] && [ -d "$RULES_SOURCE" ]; then
|
|
101
|
+
echo -e "${B}Installing rules to ${CLAUDE_RULES_DIR}/${X}"
|
|
102
|
+
for rule in "$RULES_SOURCE"/nodebench-*.md; do
|
|
103
|
+
[ -f "$rule" ] || continue
|
|
104
|
+
BASENAME=$(basename "$rule")
|
|
105
|
+
TARGET="$CLAUDE_RULES_DIR/$BASENAME"
|
|
106
|
+
# Don't overwrite if user's version is newer
|
|
107
|
+
if [ -f "$TARGET" ] && [ "$TARGET" -nt "$rule" ]; then
|
|
108
|
+
echo -e " ${Y}SKIP${X} $BASENAME (user version is newer)"
|
|
109
|
+
else
|
|
110
|
+
cp "$rule" "$TARGET"
|
|
111
|
+
echo -e " ${G}OK${X} $BASENAME"
|
|
112
|
+
RULES_INSTALLED=$((RULES_INSTALLED + 1))
|
|
113
|
+
fi
|
|
114
|
+
done
|
|
115
|
+
echo -e " Installed ${G}${RULES_INSTALLED}${X} rules"
|
|
116
|
+
else
|
|
117
|
+
echo -e "${Y}WARN${X}: Could not find rules directory. Run ${C}nodebench-mcp --sync-configs${X} after install to copy rules."
|
|
118
|
+
fi
|
|
119
|
+
|
|
120
|
+
# ── Write .mcp.json ─────────────────────────────────────────────────────
|
|
121
|
+
echo ""
|
|
122
|
+
MCP_CONFIG=".mcp.json"
|
|
123
|
+
|
|
124
|
+
# Collect preset preference
|
|
125
|
+
PRESET="starter"
|
|
126
|
+
echo -e "${B}Select a preset:${X}"
|
|
127
|
+
echo " 1) starter — 15 tools (decision intelligence core)"
|
|
128
|
+
echo " 2) founder — 40 tools (weekly resets, delegation, entities)"
|
|
129
|
+
echo " 3) researcher — 32 tools (web search, LLM, RSS, email)"
|
|
130
|
+
echo " 4) web_dev — 150 tools (vision, SEO, git, UI/UX)"
|
|
131
|
+
echo " 5) full — 338 tools (everything)"
|
|
132
|
+
echo ""
|
|
133
|
+
read -r -p "Choose [1-5, default=1]: " CHOICE </dev/tty 2>/dev/null || CHOICE="1"
|
|
134
|
+
case "${CHOICE:-1}" in
|
|
135
|
+
2) PRESET="founder" ;;
|
|
136
|
+
3) PRESET="researcher" ;;
|
|
137
|
+
4) PRESET="web_dev" ;;
|
|
138
|
+
5) PRESET="full" ;;
|
|
139
|
+
*) PRESET="starter" ;;
|
|
140
|
+
esac
|
|
141
|
+
|
|
142
|
+
# Build MCP config
|
|
143
|
+
if [ -n "$NODEBENCH_PATH" ]; then
|
|
144
|
+
MCP_CMD="nodebench-mcp"
|
|
145
|
+
MCP_ARGS="[\"--preset\", \"$PRESET\"]"
|
|
146
|
+
else
|
|
147
|
+
MCP_CMD="npx"
|
|
148
|
+
MCP_ARGS="[\"-y\", \"nodebench-mcp\", \"--preset\", \"$PRESET\"]"
|
|
149
|
+
fi
|
|
150
|
+
|
|
151
|
+
# Collect env vars
|
|
152
|
+
ENV_BLOCK=""
|
|
153
|
+
if [ -n "${GEMINI_API_KEY:-}" ]; then
|
|
154
|
+
ENV_BLOCK="\"GEMINI_API_KEY\": \"$GEMINI_API_KEY\""
|
|
155
|
+
fi
|
|
156
|
+
if [ -n "${OPENAI_API_KEY:-}" ]; then
|
|
157
|
+
[ -n "$ENV_BLOCK" ] && ENV_BLOCK="$ENV_BLOCK, "
|
|
158
|
+
ENV_BLOCK="${ENV_BLOCK}\"OPENAI_API_KEY\": \"$OPENAI_API_KEY\""
|
|
159
|
+
fi
|
|
160
|
+
if [ -n "${GITHUB_TOKEN:-}" ]; then
|
|
161
|
+
[ -n "$ENV_BLOCK" ] && ENV_BLOCK="$ENV_BLOCK, "
|
|
162
|
+
ENV_BLOCK="${ENV_BLOCK}\"GITHUB_TOKEN\": \"$GITHUB_TOKEN\""
|
|
163
|
+
fi
|
|
164
|
+
|
|
165
|
+
ENV_JSON="{}"
|
|
166
|
+
if [ -n "$ENV_BLOCK" ]; then
|
|
167
|
+
ENV_JSON="{$ENV_BLOCK}"
|
|
168
|
+
fi
|
|
169
|
+
|
|
170
|
+
# Write or merge .mcp.json
|
|
171
|
+
if [ -f "$MCP_CONFIG" ]; then
|
|
172
|
+
echo -e "${Y}NOTE${X}: $MCP_CONFIG already exists. Adding nodebench entry."
|
|
173
|
+
fi
|
|
174
|
+
|
|
175
|
+
cat > "$MCP_CONFIG" <<MCPEOF
|
|
176
|
+
{
|
|
177
|
+
"mcpServers": {
|
|
178
|
+
"nodebench": {
|
|
179
|
+
"command": "$MCP_CMD",
|
|
180
|
+
"args": $MCP_ARGS,
|
|
181
|
+
"env": $ENV_JSON
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
MCPEOF
|
|
186
|
+
echo -e " ${G}OK${X} Written: ${C}${MCP_CONFIG}${X} (preset: $PRESET)"
|
|
187
|
+
|
|
188
|
+
# ── Add .mcp.json to .gitignore ─────────────────────────────────────────
|
|
189
|
+
if [ -f ".gitignore" ]; then
|
|
190
|
+
if ! grep -qF ".mcp.json" .gitignore; then
|
|
191
|
+
echo "" >> .gitignore
|
|
192
|
+
echo "# NodeBench MCP config (contains API keys)" >> .gitignore
|
|
193
|
+
echo ".mcp.json" >> .gitignore
|
|
194
|
+
echo -e " ${G}OK${X} Added .mcp.json to .gitignore"
|
|
195
|
+
fi
|
|
196
|
+
fi
|
|
197
|
+
|
|
198
|
+
# ── Run health check ────────────────────────────────────────────────────
|
|
199
|
+
echo ""
|
|
200
|
+
echo -e "${B}Running health check...${X}"
|
|
201
|
+
npx -y nodebench-mcp --health 2>/dev/null || echo -e "${Y}WARN${X}: Health check skipped (will run on first use)"
|
|
202
|
+
|
|
203
|
+
# ── Summary ─────────────────────────────────────────────────────────────
|
|
204
|
+
echo ""
|
|
205
|
+
echo -e "${B}${G}NodeBench MCP installed successfully!${X}"
|
|
206
|
+
echo ""
|
|
207
|
+
echo -e "${B}Try these first:${X}"
|
|
208
|
+
echo -e " ${C}discover_tools('analyze a company')${X} — find relevant tools"
|
|
209
|
+
echo -e " ${C}load_toolset('founder')${X} — activate founder tools"
|
|
210
|
+
echo -e " ${C}get_workflow_chain('weekly_reset')${X} — get guided workflow"
|
|
211
|
+
echo -e " ${C}site_map({ url: 'https://yoursite.com' })${X} — crawl & inspect"
|
|
212
|
+
echo ""
|
|
213
|
+
echo -e " Run ${C}nodebench-mcp --health${X} anytime to check system status."
|
|
214
|
+
echo -e " Run ${C}nodebench-mcp --sync-configs${X} to write configs to Claude/Cursor/Windsurf."
|
|
215
|
+
echo ""
|
|
@@ -1,11 +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
|
-
export {};
|