Skip to content

refactor(api): move MCP header resolution out of v1alpha3 - #3563

Merged
EItanya merged 1 commit into
kagent-dev:mainfrom
timflannagan:cleanup/api-drop-io-helpers
Nov 6, 2026
Merged

EItanya merged 1 commit into
kagent-dev:mainfrom
timflannagan:cleanup/api-drop-io-helpers

Conversation

@timflannagan

Copy link
Copy Markdown
Contributor

Description

go/api/v1alpha3 is the public API that external clients and wrapper types import, but it pulled in controller-runtime and database/sql for a few helpers that do I/O. This moves those helpers out so the API package only describes data.

RemoteMCPServerSpec loses its sql.Scanner/driver.Valuer methods, which nothing used. RemoteMCPServer.ResolveHeaders, ValueRef.Resolve, and ValueSource.Resolve move into the tool service's MCP client, their only caller, and go/api/utils is removed. The translator keeps its existing HeadersFrom handling, which compiles Secret-backed headers into egress credentials rather than reading them.

Header resolution behaves the same, except errors are now wrapped and name the failing header. Go consumers that called the removed methods need to read the referenced Secret or ConfigMap themselves.

The v1alpha3 package is the public API that external clients and wrapper
types import. It pulled in controller-runtime and database/sql only for a
few helpers that read Secrets and ConfigMaps and for a JSON column codec on
RemoteMCPServerSpec. That made importing the API types far heavier than it
should be, and it put I/O on types that should only describe data.

We drop the sql.Scanner and driver.Valuer methods from RemoteMCPServerSpec,
since nothing stores the spec through database/sql. Header resolution moves
from ResolveHeaders, ValueRef.Resolve, and ValueSource.Resolve into the MCP
client in the tool service, its only caller, and go/api/utils goes away. The
translator keeps its own HeadersFrom handling because it compiles secret
headers into egress credentials instead of reading their values.

Resolution behavior is unchanged apart from wrapped errors that now name the
failing header. Callers outside this repository that used the removed
methods need to read the referenced Secret or ConfigMap themselves.

Signed-off-by: timflannagan <[email protected]>
@timflannagan
timflannagan requested a review from a team as a code owner November 6, 2026 21:08
@EItanya
EItanya added this pull request to the merge queue Nov 6, 2026
Merged via the queue into kagent-dev:main with commit c6adf72 Nov 6, 2026
31 checks passed
@timflannagan
timflannagan deleted the cleanup/api-drop-io-helpers branch November 6, 2026 23:16
jerry-jibu pushed a commit to jerry-jibu/kagent that referenced this pull request Nov 14, 2026
Backports seven PRs from `main` to `release/v1.0.x` for the 1.0 release.
Each is cherry-picked with `-x` in its original merge order, and none
needed changes. Every file these commits touch now matches `main`
exactly.

| PR | Commit | Why |
| --- | --- | --- |
| kagent-dev#3558 | `2e2acf58c` | fix(ci): restore upgrade tests from RC3 |
| kagent-dev#3545 | `7c9c52105` | fix(ui): show when the Substrate lists were
read, not a running age |
| kagent-dev#3395 | `aaf1ca882` | feat(session): revert crashed runtimes through
RevertSession (needed for a customer) |
| kagent-dev#3562 | `5c490d83b` | refactor: remove helpers orphaned by the KMCP
removal (low risk; keeps the branch close to `main`) |
| kagent-dev#3563 | `c6adf72f9` | refactor(api): move MCP header resolution out of
`v1alpha3`, so the 1.0 API package describes only data |
| kagent-dev#3340 | `347acbe55` | fix(controller): move a ModelConfig condition's
transition time only on a status change (labeled `cherrpick-1.0`) |
| kagent-dev#3560 | `ccb2dd350` | adk/mcp: defer tool discovery until invocation,
so slow MCP discovery no longer fails agent resumes |

Please use **Rebase and merge** so each backported PR stays its own
commit on the release branch.

Validation before kagent-dev#3560 was added (CI covers the full set):
- `go build ./...` and `go vet ./...`
- `go test -race` with envtest for `api`, `core/cli`,
`core/internal/{controller,database,grpcserver,mcp,service,substrate}`,
`core/pkg/migrations`, and `pkg/logging`
- `make -C go lint`: 0 issues
- UI `tsc --noEmit` and `substrateReadAge.test.tsx`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Signed-off-by: Eitan Yarmush <[email protected]>
Signed-off-by: Nicholas Bucher <[email protected]>
Signed-off-by: Ada Lundhe <[email protected]>
Signed-off-by: timflannagan <[email protected]>
Signed-off-by: QuentinBisson <[email protected]>
Signed-off-by: Shashank Ram <[email protected]>
Co-authored-by: Nicholas Bucher <[email protected]>
Co-authored-by: Ada Lündhé <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Co-authored-by: Tim Flannagan <[email protected]>
Co-authored-by: Quentin Bisson <[email protected]>
Co-authored-by: Shashank <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants