• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive / 31125688473
70%

Build:
DEFAULT BRANCH: main
Ran 06 Aug 2026 11:11PM UTC
Jobs 1
Files 871
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

06 Aug 2026 06:02PM UTC coverage: 69.968% (+0.07%) from 69.901%
31125688473

push

github

web-flow
Add deny-by-default visibility to vMCP aggregation (#6163)

* Add deny-by-default visibility to vMCP aggregation

The aggregation.tools list is sparse and fails open: a backend in the
group with no entry has every tool advertised. Operators scoping a vMCP
to a curated subset must remember to add excludeAll for each new group
member, and forgetting silently widens what clients see.

Add aggregation.defaultVisibility. Under "deny" a backend absent from
tools contributes no tools, so only listed backends are advertised. A
listed backend is opted in by its entry; its own excludeAll/filter then
decide which of its tools show.

Defaults to "allow", the pre-existing behavior, so existing configs and
deployed CRs are unaffected and no migration is needed. Like the sibling
visibility settings this controls advertising only, leaving all tools in
the routing table for composite tools.

* Correct convertAggregation copy-semantics comment

The comment claimed a deep copy while the code does a field-by-field
copy that aliases slices, and the note added alongside DefaultVisibility
contradicted it. State the actual semantics once, including the aliasing
caveat and why each new field must be listed explicitly.

* Address review on default tool visibility

Rename defaultVisibility to defaultToolVisibility. The setting gates
tools only — an unlisted backend's resources, resource templates, and
prompts are still advertised under deny — so the name now carries its
own scope instead of relying on a doc disclaimer. Free to change before
the field ships in a release.

Reject defaultToolVisibility deny combined with the priority strategy
when a priorityOrder entry has no tools entry. Conflict resolution runs
before the advertising filter, so an unlisted backend could win a name
conflict and then be withheld, hiding the tool from every backend that
offered it. Validating up front is cheaper than resolving conflicts
twice, once over the visible set and once over the routable se... (continued)

68 of 75 new or added lines in 3 files covered. (90.67%)

11 existing lines in 2 files now uncovered.

83194 of 118903 relevant lines covered (69.97%)

98.36 hits per line

Uncovered Changes

Lines Coverage ∆ File
7
90.78
-0.87% pkg/vmcp/aggregator/default_aggregator.go

Coverage Regressions

Lines Coverage ∆ File
8
66.64
4.47% pkg/workloads/manager.go
3
67.14
-4.29% pkg/state/runconfig.go
Jobs
ID Job ID Ran Files Coverage
1 31125688473.1 06 Aug 2026 11:11PM UTC 871
69.97
GitHub Action Run
Source Files on build 31125688473
  • Tree
  • List 871
  • Changed 11
  • Source Changed 4
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #31125688473
  • 7544632f on github
  • Prev Build on main (#31094889961)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc