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

stacklok / toolhive / 43249648476
73%

Build:
DEFAULT BRANCH: main
Ran 12 Nov 2026 03:44PM UTC
Jobs 1
Files 1019
Run time 1min
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

12 Nov 2026 03:36PM UTC coverage: 73.183% (+0.02%) from 73.162%
43249648476

push

github

web-flow
Configure actor-token validators for delegate clients (#7123)

* Register actor-token validators in Config

An embedder that holds an agent registry needs a way to hand its
actor-token validator to the authorization server. Add
Config.ActorTokenValidators, a map from name to a registration set in
process, with no YAML or JSON form and no global registry. A client
will select one by name in its actor profile.

A registration pairs the validator with ActIssuer, the issuer ToolHive
writes as act.iss for the agents that validator accepts. The validator
never sets it, so one validator cannot claim to speak for another
issuer's agents. ActIssuer is emitted as configured and registrations
may share one.

Config.Validate refuses an empty name, a name in the "toolhive."
namespace, which is reserved for built-in validators, and a nil
validator, including a nil pointer of a concrete type. It also refuses
an ActIssuer that is empty, is not an absolute URI without query,
userinfo or fragment, is not in canonical spelling, is an http(s) URL
with no host or one that is neither https nor on a loopback host, or is
this server's own issuer. Names are checked in sorted order so the
reported error is stable. The nil check reuses the refresh-grant
handler check, generalized to isNilValue and moved to nil_value.go.

Co-authored-by: Mecatl <noreply@mecatl.dev>

* Add actor_profile to delegate clients

A delegate client that obtains ID-JAGs from exchange grants on behalf
of agents needs the issuing server to check which agent is acting.
Add token_exchange.actor_profile, which names the in-process validator
for that check and the actor_token_type the client must send.

The field is set only from Go, by embedders, like RequiredSubjectClaims,
and has no JSON or YAML form. Config files cannot set it, and it stays
out of the RunConfig API schema, until ID-JAG issuance checks it.

Startup refuses a profile on a client without an id_jag block, a
missing validator name, and a missin... (continued)

166 of 168 new or added lines in 6 files covered. (98.81%)

21 existing lines in 5 files now uncovered.

95572 of 130594 relevant lines covered (73.18%)

889.36 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
96.1
0.2% pkg/authserver/config.go

Coverage Regressions

Lines Coverage ∆ File
6
19.87
-3.97% pkg/client/manager.go
6
59.0
-0.62% pkg/workloads/manager.go
4
76.47
-1.57% pkg/container/docker/squid.go
3
94.24
-0.14% pkg/authserver/storage/memory.go
2
55.58
-0.52% pkg/transport/stdio.go
Jobs
ID Job ID Ran Files Coverage
1 43249648476.1 12 Nov 2026 03:44PM UTC 1019
73.18
GitHub Action Run
Source Files on build 43249648476
  • Tree
  • List 1019
  • Changed 13
  • Source Changed 7
  • Coverage Changed 13
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #43249648476
  • f49417ab on github
  • Prev Build on main (#43232996607)
  • Next Build on main (#43416334940)
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