@dotsetlabs/bellwether 0.12.0 → 1.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 (90) hide show
  1. package/.dockerignore +25 -0
  2. package/CHANGELOG.md +123 -0
  3. package/Dockerfile +43 -0
  4. package/README.md +107 -665
  5. package/dist/auth/keychain.js +14 -7
  6. package/dist/baseline/accessors.d.ts +1 -1
  7. package/dist/baseline/baseline-hash.js +23 -6
  8. package/dist/baseline/change-impact-analyzer.js +1 -1
  9. package/dist/baseline/cloud-types.d.ts +281 -0
  10. package/dist/baseline/cloud-types.js +12 -0
  11. package/dist/baseline/comparator.js +2 -2
  12. package/dist/baseline/converter.d.ts +1 -1
  13. package/dist/baseline/deprecation-tracker.js +1 -1
  14. package/dist/baseline/diff.js +4 -4
  15. package/dist/baseline/golden-output.js +2 -2
  16. package/dist/baseline/migration-generator.js +2 -2
  17. package/dist/baseline/performance-tracker.js +1 -1
  18. package/dist/baseline/pr-comment-generator.js +6 -6
  19. package/dist/baseline/risk-scorer.js +1 -1
  20. package/dist/baseline/schema-evolution.js +1 -1
  21. package/dist/baseline/types.d.ts +1 -1
  22. package/dist/benchmark/benchmarker.d.ts +30 -0
  23. package/dist/benchmark/benchmarker.js +309 -0
  24. package/dist/benchmark/index.d.ts +6 -0
  25. package/dist/benchmark/index.js +5 -0
  26. package/dist/benchmark/types.d.ts +133 -0
  27. package/dist/benchmark/types.js +5 -0
  28. package/dist/cli/commands/auth.d.ts +0 -1
  29. package/dist/cli/commands/auth.js +0 -1
  30. package/dist/cli/commands/baseline.js +7 -7
  31. package/dist/cli/commands/benchmark.d.ts +11 -0
  32. package/dist/cli/commands/benchmark.js +260 -0
  33. package/dist/cli/commands/check.js +13 -8
  34. package/dist/cli/commands/cloud/badge.js +2 -2
  35. package/dist/cli/commands/contract.js +4 -4
  36. package/dist/cli/commands/discover.js +1 -1
  37. package/dist/cli/commands/explore.js +1 -1
  38. package/dist/cli/commands/watch.js +5 -5
  39. package/dist/cli/index.d.ts +6 -0
  40. package/dist/cli/index.js +9 -29
  41. package/dist/cli/output/terminal-reporter.d.ts +1 -1
  42. package/dist/cli/output/terminal-reporter.js +4 -24
  43. package/dist/cli/output.js +2 -2
  44. package/dist/cli/utils/progress.js +10 -10
  45. package/dist/cloud/http-client.d.ts +2 -2
  46. package/dist/cloud/http-client.js +6 -6
  47. package/dist/cloud/mock-client.d.ts +2 -2
  48. package/dist/cloud/mock-client.js +26 -26
  49. package/dist/cloud/types.d.ts +28 -28
  50. package/dist/config/defaults.d.ts +0 -14
  51. package/dist/config/defaults.js +0 -14
  52. package/dist/config/loader.js +33 -4
  53. package/dist/config/template.js +0 -40
  54. package/dist/config/validator.d.ts +6 -146
  55. package/dist/config/validator.js +0 -85
  56. package/dist/constants/cloud.d.ts +0 -36
  57. package/dist/constants/cloud.js +1 -38
  58. package/dist/constants/core.d.ts +13 -20
  59. package/dist/constants/core.js +13 -20
  60. package/dist/constants/testing.d.ts +4 -8
  61. package/dist/constants/testing.js +4 -9
  62. package/dist/contract/validator.js +1 -1
  63. package/dist/discovery/discovery.js +4 -4
  64. package/dist/docs/agents.js +1 -1
  65. package/dist/docs/contract.js +6 -7
  66. package/dist/index.d.ts +4 -2
  67. package/dist/index.js +4 -2
  68. package/dist/interview/interviewer.js +1 -1
  69. package/dist/interview/orchestrator.js +1 -1
  70. package/dist/llm/anthropic.js +1 -1
  71. package/dist/llm/token-budget.js +1 -1
  72. package/dist/logging/logger.js +4 -2
  73. package/dist/registry/client.d.ts +2 -0
  74. package/dist/registry/client.js +38 -1
  75. package/dist/security/security-tester.js +2 -2
  76. package/dist/transport/http-transport.js +1 -1
  77. package/dist/transport/mcp-client.d.ts +2 -0
  78. package/dist/transport/mcp-client.js +12 -7
  79. package/dist/transport/stdio-transport.js +1 -1
  80. package/dist/utils/markdown.js +3 -3
  81. package/dist/utils/sanitize.js +1 -1
  82. package/dist/utils/smart-truncate.js +1 -1
  83. package/dist/utils/timeout.d.ts +1 -1
  84. package/dist/utils/timeout.js +2 -2
  85. package/dist/version.js +1 -1
  86. package/dist/workflow/auto-generator.js +3 -3
  87. package/dist/workflow/state-tracker.js +1 -1
  88. package/package.json +38 -7
  89. package/scripts/completions/bellwether.bash +61 -0
  90. package/scripts/completions/bellwether.zsh +94 -0
package/.dockerignore ADDED
@@ -0,0 +1,25 @@
1
+ node_modules
2
+ npm-debug.log
3
+ .git
4
+ .gitignore
5
+ README.md
6
+ CHANGELOG.md
7
+ .eslintrc.json
8
+ .prettierrc
9
+ .github
10
+ .nyc_output
11
+ coverage
12
+ .vscode
13
+ .idea
14
+ test/
15
+ src/
16
+ *.test.ts
17
+ *.spec.ts
18
+ tsconfig.json
19
+ typedoc.json
20
+ vitest.config.ts
21
+ .dccache
22
+ *.md
23
+ !LICENSE
24
+ !README.md
25
+ !CHANGELOG.md
package/CHANGELOG.md CHANGED
@@ -2,6 +2,129 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [1.0.1] - 2026-01-29
11
+
12
+ ### Added
13
+
14
+ - Added `$VAR` syntax support for environment variable interpolation in config files
15
+ - Added rate limiting to registry client (5 req/s default)
16
+ - Added `AnthropicClient` and `OllamaClient` exports to public API
17
+ - Added `repository.directory` and `funding` fields to package.json
18
+ - Added required permissions documentation to GitHub Action
19
+ - Added debug logging for all credential operations
20
+ - Added warning when environment variables in config are not resolved
21
+
22
+ ### Changed
23
+
24
+ - Optimized GitHub Action to run check once; SARIF and JUnit are now converted from JSON output
25
+ - Removed test coverage exclusion for CLI entry point
26
+ - Removed unnecessary type casts in check.ts and security-tester.ts
27
+ - Replaced magic number 100 with PERCENTAGE_CONVERSION.DIVISOR constant
28
+ - Removed dead code sections from constants
29
+ - Refactored string concatenation to template literals in CLI output modules
30
+
31
+ ### Fixed
32
+
33
+ - Fixed version fallback inconsistency (0.13.0 → 1.0.1)
34
+ - Fixed missing pino-pretty dependency
35
+ - Fixed non-null assertion for remoteUrl in check.ts (added proper null check)
36
+ - Fixed non-null assertion for incrementalResult in check.ts
37
+ - Added debug logging to catch blocks in keychain.ts (graceful degradation with visibility)
38
+ - Fixed flaky test in workflow executor (timing assertion)
39
+ - Fixed test failures in baseline-accept tests (process.exit mock)
40
+
41
+ ## [1.0.0] - 2026-01-27
42
+
43
+ ### Breaking Changes
44
+
45
+ - **Removed cloud commands**: The following commands have been removed: `login`, `upload`, `projects`, `history`, `diff`, `link`, `teams`, `badge`
46
+ - **Removed benchmark command**: The `benchmark` command and "Tested with Bellwether" certification program have been removed
47
+ - **Removed cloud module**: All cloud integration code has been removed from the CLI
48
+
49
+ ### Changed
50
+
51
+ - **Fully open source**: Bellwether is now a completely free, open-source tool with no cloud dependencies
52
+ - **Simplified configuration**: Removed cloud-related settings from `bellwether.yaml` template
53
+ - **Updated documentation**: Removed all cloud-related documentation
54
+
55
+ ### Migration Guide
56
+
57
+ If you were using cloud features:
58
+
59
+ 1. **Baselines**: Store baselines in git instead of uploading to cloud
60
+ ```bash
61
+ bellwether baseline save
62
+ git add bellwether-baseline.json
63
+ git commit -m "Add baseline"
64
+ ```
65
+
66
+ 2. **CI/CD**: Use local baseline comparison instead of cloud upload
67
+ ```bash
68
+ # Old
69
+ bellwether upload --ci --fail-on-drift
70
+
71
+ # New
72
+ bellwether check --fail-on-drift
73
+ bellwether baseline compare ./bellwether-baseline.json
74
+ ```
75
+
76
+ 3. **Environment variables**: Remove `BELLWETHER_SESSION`, `BELLWETHER_API_URL`, `BELLWETHER_TEAM_ID` from your CI/CD configuration
77
+
78
+ ## [0.13.0] - 2026-01-27
79
+
80
+ ### Breaking Changes
81
+
82
+ - **Renamed `bellwether verify` to `bellwether benchmark`**: The verification command has been renamed to better reflect its purpose
83
+ - Old: `bellwether verify <server-command>`
84
+ - New: `bellwether benchmark <server-command>`
85
+ - **Renamed "Verified by Bellwether" to "Tested with Bellwether"**: Updated branding throughout the CLI and documentation
86
+ - Badge text now shows "Tested with Bellwether"
87
+ - Status values changed: `verified` → `passed`, `not_verified` → `not_tested`
88
+ - **Config section renamed**: The `verify:` section in `bellwether.yaml` is now `benchmark:`
89
+ - Old: `verify: { timeout: 30000 }`
90
+ - New: `benchmark: { timeout: 30000 }`
91
+ - **Output file renamed**: Default benchmark report file changed from `bellwether-verification.json` to `bellwether-benchmark.json`
92
+ - **Cloud API changes**: Benchmark-related API endpoints have been renamed
93
+ - `/verifications` → `/benchmarks`
94
+ - Activity events: `verification.completed` → `benchmark.completed`, `verification.failed` → `benchmark.failed`
95
+
96
+ ### Changed
97
+
98
+ - All CLI output messages updated to use "benchmark" terminology
99
+ - Documentation updated throughout to reflect new naming
100
+ - Badge command description updated to reference "benchmark badge"
101
+ - Constants renamed: `VERIFICATION_TIERS` → `BENCHMARK_TIERS`, `DEFAULT_VERIFICATION_REPORT_FILE` → `DEFAULT_BENCHMARK_REPORT_FILE`
102
+
103
+ ### Migration Guide
104
+
105
+ 1. Update your `bellwether.yaml` config file:
106
+ ```yaml
107
+ # Old
108
+ verify:
109
+ timeout: 30000
110
+
111
+ # New
112
+ benchmark:
113
+ timeout: 30000
114
+ ```
115
+
116
+ 2. Update any CI/CD scripts:
117
+ ```bash
118
+ # Old
119
+ bellwether verify npx @mcp/server
120
+
121
+ # New
122
+ bellwether benchmark npx @mcp/server
123
+ ```
124
+
125
+ 3. Update any references to the output file:
126
+ - `bellwether-verification.json` → `bellwether-benchmark.json`
127
+
5
128
  ## [0.12.0] - 2026-01-26
6
129
 
7
130
  ### Features
package/Dockerfile ADDED
@@ -0,0 +1,43 @@
1
+ # Bellwether MCP Testing Tool
2
+ # https://github.com/dotsetlabs/bellwether
3
+
4
+ FROM node:20-alpine
5
+
6
+ LABEL maintainer="Dotset Labs <hello@dotsetlabs.com>"
7
+ LABEL description="Bellwether - MCP Server Testing & Validation"
8
+ LABEL org.opencontainers.image.source="https://github.com/dotsetlabs/bellwether"
9
+
10
+ # Install git for npm dependencies that may need it
11
+ RUN apk add --no-cache git
12
+
13
+ # Create app directory
14
+ WORKDIR /app
15
+
16
+ # Copy package files
17
+ COPY package*.json ./
18
+
19
+ # Install production dependencies only
20
+ RUN npm ci --omit=dev
21
+
22
+ # Copy built application
23
+ COPY dist/ ./dist/
24
+ COPY schemas/ ./schemas/
25
+ COPY LICENSE README.md CHANGELOG.md ./
26
+
27
+ # Create non-root user
28
+ RUN addgroup -g 1001 -S bellwether && \
29
+ adduser -S bellwether -u 1001
30
+
31
+ # Set proper permissions
32
+ RUN chown -R bellwether:bellwether /app
33
+
34
+ # Switch to non-root user
35
+ USER bellwether
36
+
37
+ # Set environment
38
+ ENV NODE_ENV=production
39
+ ENV BELLWETHER_DOCKER=1
40
+
41
+ # Entry point
42
+ ENTRYPOINT ["node", "dist/cli/index.js"]
43
+ CMD ["--help"]