From f8179c88583be9b38de1e43627b67006de9dbb8d Mon Sep 17 00:00:00 2001 From: Jaison Paul Date: Tue, 10 Mar 2026 23:25:13 -0400 Subject: [PATCH 1/6] chore: upgrade Go from 1.25.7 to 1.26.1 Update Go version across go.work, all go.mod files, and CI workflow. Go 1.26.1 includes security fixes, the Green Tea GC enabled by default, and reduced cgo overhead. Signed-off-by: Jaison Paul --- .github/workflows/ci.yaml | 6 +++--- go/adk/go.mod | 2 +- go/adk/go.sum | 19 +++++++++++++++++++ go/api/go.mod | 2 +- go/api/go.sum | 3 +++ go/core/go.mod | 2 +- go/go.work | 2 +- 7 files changed, 29 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ee0707fae..2416d1fb0 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -146,7 +146,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v4 with: - go-version: "1.25" + go-version: "1.26" cache: true cache-dependency-path: go/*/go.sum @@ -265,7 +265,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: "1.25" + go-version: "1.26" cache: true cache-dependency-path: go/*/go.sum - name: golangci-lint @@ -340,7 +340,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: "1.25" + go-version: "1.26" cache: true cache-dependency-path: go/*/go.sum diff --git a/go/adk/go.mod b/go/adk/go.mod index c5c2dcdf0..d1a7a71e5 100644 --- a/go/adk/go.mod +++ b/go/adk/go.mod @@ -1,6 +1,6 @@ module github.com/kagent-dev/kagent/go/adk -go 1.25.7 +go 1.26.1 require ( github.com/a2aproject/a2a-go v0.3.6 diff --git a/go/adk/go.sum b/go/adk/go.sum index 046ea87d7..0076e003b 100644 --- a/go/adk/go.sum +++ b/go/adk/go.sum @@ -9,6 +9,7 @@ cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCB github.com/a2aproject/a2a-go v0.3.6 h1:VbRoM2MNsfc7o4GkjGt3KZCjbqILAJq846K1z8rpHTc= github.com/a2aproject/a2a-go v0.3.6/go.mod h1:I7Cm+a1oL+UT6zMoP+roaRE5vdfUa1iQGVN8aSOuZ0I= github.com/anthropics/anthropic-sdk-go v1.26.0 h1:oUTzFaUpAevfuELAP1sjL6CQJ9HHAfT7CoSYSac11PY= +github.com/anthropics/anthropic-sdk-go v1.26.0/go.mod h1:qUKmaW+uuPB64iy1l+4kOSvaLqPXnHTTBKH6RVZ7q5Q= github.com/aws/aws-sdk-go-v2 v1.41.2 h1:LuT2rzqNQsauaGkPK/7813XxcZ3o3yePY0Iy891T2ls= github.com/aws/aws-sdk-go-v2 v1.41.2/go.mod h1:IvvlAZQXvTXznUPfRVfryiG1fbzE2NGK6m9u39YQ+S4= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 h1:tW1/Rkad38LA15X4UQtjXZXNKsCgkshC3EbmcUmghTg= @@ -42,12 +43,16 @@ github.com/aws/smithy-go v1.24.1/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4p github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w= +github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA= github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g= +github.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98= github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4= +github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -88,6 +93,7 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/modelcontextprotocol/go-sdk v1.4.0 h1:u0kr8lbJc1oBcawK7Df+/ajNMpIDFE41OEPxdeTLOn8= github.com/modelcontextprotocol/go-sdk v1.4.0/go.mod h1:Nxc2n+n/GdCebUaqCOhTetptS17SXXNu9IfNTaLDi1E= github.com/openai/openai-go/v3 v3.26.0 h1:bRt6H/ozMNt/dDkN4gobnLqaEGrRGBzmbVs0xxJEnQE= +github.com/openai/openai-go/v3 v3.26.0/go.mod h1:cdufnVK14cWcT9qA1rRtrXx4FTRsgbDPW7Ia7SS5cZo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= @@ -120,12 +126,19 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= +go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= go.opentelemetry.io/otel/log v0.18.0 h1:XgeQIIBjZZrliksMEbcwMZefoOSMI1hdjiLEiiB0bAg= +go.opentelemetry.io/otel/log v0.18.0/go.mod h1:KEV1kad0NofR3ycsiDH4Yjcoj0+8206I6Ox2QYFSNgI= go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= +go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= +go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= go.opentelemetry.io/otel/sdk/log v0.18.0 h1:n8OyZr7t7otkeTnPTbDNom6rW16TBYGtvyy2Gk6buQw= +go.opentelemetry.io/otel/sdk/log v0.18.0/go.mod h1:C0+wxkTwKpOCZLrlJ3pewPiiQwpzycPI/u6W0Z9fuYk= go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= +go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= +go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -135,9 +148,11 @@ go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -157,14 +172,18 @@ google.golang.org/api v0.252.0/go.mod h1:dnHOv81x5RAmumZ7BWLShB/u7JZNeyalImxHmtT google.golang.org/genai v1.40.0 h1:kYxyQSH+vsib8dvsgyLJzsVEIv5k3ZmHJyVqdvGncmc= google.golang.org/genai v1.40.0/go.mod h1:A3kkl0nyBjyFlNjgxIwKq70julKbIxpSxqKO5gw/gmk= google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 h1:tu/dtnW1o3wfaxCOjSLn5IRX4YDcJrtlpzYkhHhGaC4= +google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171/go.mod h1:M5krXqk4GhBKvB596udGL3UyjL4I1+cTbK0orROM9ng= google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 h1:ggcbiqK8WWh6l1dnltU4BgWGIGo+EVYxCaAPih/zQXQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= +google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= rsc.io/omap v1.2.0 h1:c1M8jchnHbzmJALzGLclfH3xDWXrPxSUHXzH5C+8Kdw= diff --git a/go/api/go.mod b/go/api/go.mod index bb47fd6c5..ef7ee47e9 100644 --- a/go/api/go.mod +++ b/go/api/go.mod @@ -1,6 +1,6 @@ module github.com/kagent-dev/kagent/go/api -go 1.25.7 +go 1.26.1 require ( github.com/google/uuid v1.6.0 diff --git a/go/api/go.sum b/go/api/go.sum index 1feb1d35a..3718a1eb2 100644 --- a/go/api/go.sum +++ b/go/api/go.sum @@ -133,6 +133,7 @@ github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvM github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= github.com/prometheus/procfs v0.20.1 h1:XwbrGOIplXW/AU3YhIhLODXMJYyC1isLFfYCsTEycfc= +github.com/prometheus/procfs v0.20.1/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= @@ -180,9 +181,11 @@ golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVo golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= diff --git a/go/core/go.mod b/go/core/go.mod index 7894614f2..337f325f9 100644 --- a/go/core/go.mod +++ b/go/core/go.mod @@ -1,6 +1,6 @@ module github.com/kagent-dev/kagent/go/core -go 1.25.7 +go 1.26.1 require ( dario.cat/mergo v1.0.2 diff --git a/go/go.work b/go/go.work index 90f30295e..43c666f88 100644 --- a/go/go.work +++ b/go/go.work @@ -1,4 +1,4 @@ -go 1.25.7 +go 1.26.1 use ( ./adk From 5fc5ef8068d584500814837370b9f82cc9e3acee Mon Sep 17 00:00:00 2001 From: Jaison Paul Date: Tue, 10 Mar 2026 23:29:06 -0400 Subject: [PATCH 2/6] ci: align setup-go action to v5 for all jobs One job still used actions/setup-go@v4 while the other two used v5. Align to v5 for consistent behavior and Go 1.26 cache support. Signed-off-by: Jaison Paul --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 2416d1fb0..952d4c409 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -144,7 +144,7 @@ jobs: uses: actions/checkout@v4 - name: Set up Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: "1.26" cache: true From c0ac65ca83ba162db02703ef24eaf3bb900f64af Mon Sep 17 00:00:00 2001 From: Jaison Paul Date: Tue, 10 Mar 2026 23:31:45 -0400 Subject: [PATCH 3/6] chore: update golangci-lint Go version to 1.26 Align the golangci-lint config with the Go 1.26 upgrade so type-checking and parsing match the CI toolchain. Signed-off-by: Jaison Paul --- go/.golangci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/.golangci.yaml b/go/.golangci.yaml index 85e62030c..117076ada 100644 --- a/go/.golangci.yaml +++ b/go/.golangci.yaml @@ -1,6 +1,6 @@ version: "2" run: - go: "1.25" + go: "1.26" timeout: 10m allow-parallel-runners: true linters: From 98c01c746655bda9cd27232f81b1a045c20880c4 Mon Sep 17 00:00:00 2001 From: Jaison Paul Date: Tue, 10 Mar 2026 23:36:38 -0400 Subject: [PATCH 4/6] ci: bump golangci-lint from v2.8.0 to v2.11.3 golangci-lint v2.8.0 was built with Go 1.25 and fails with: "the Go language version (go1.25) used to build golangci-lint is lower than the targeted Go version (1.26)" v2.11.3 is built with Go 1.26 and resolves this. Signed-off-by: Jaison Paul --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 952d4c409..a2295f0b2 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -271,7 +271,7 @@ jobs: - name: golangci-lint uses: golangci/golangci-lint-action@v9 with: - version: v2.8.0 + version: v2.11.3 working-directory: go/core python-test: From 614678a24fbff5d059aba2961db5dd7400554230 Mon Sep 17 00:00:00 2001 From: Jaison Paul Date: Wed, 11 Mar 2026 00:10:49 -0400 Subject: [PATCH 5/6] fix: resolve modernize linter newexpr and copyloopvar violations Replace ptr.To(x) with new(x) per Go 1.26 modernize linter rules, remove unused ptrTo helper, and delete redundant loop variable copy. Signed-off-by: Jaison Paul --- go/core/cli/internal/tui/workspace.go | 5 +-- go/core/hack/makeagentconfig/main.go | 10 ++--- .../internal/controller/agent_controller.go | 3 +- .../controller/mcp_server_tool_controller.go | 3 +- .../controller/modelconfig_controller.go | 3 +- .../modelproviderconfig_controller.go | 3 +- .../remote_mcp_server_controller.go | 3 +- .../internal/controller/service_controller.go | 3 +- .../translator/agent/adk_api_translator.go | 19 ++++---- .../agent/adk_api_translator_test.go | 43 +++++++++---------- .../translator/agent/deployments.go | 11 +++-- .../translator/agent/security_context_test.go | 29 ++++++------- .../controller/translator/agent/utils.go | 7 ++- .../httpserver/handlers/modelconfig.go | 3 +- .../httpserver/handlers/sessions_test.go | 5 +-- .../httpserver/handlers/toolservers_test.go | 3 +- go/core/internal/httpserver/handlers/utils.go | 3 +- go/core/test/e2e/invoke_api_test.go | 3 +- 18 files changed, 69 insertions(+), 90 deletions(-) diff --git a/go/core/cli/internal/tui/workspace.go b/go/core/cli/internal/tui/workspace.go index f7a5fbc74..be7510b8c 100644 --- a/go/core/cli/internal/tui/workspace.go +++ b/go/core/cli/internal/tui/workspace.go @@ -23,7 +23,6 @@ import ( "github.com/kagent-dev/kagent/go/core/cli/internal/tui/theme" "github.com/kagent-dev/kagent/go/core/internal/utils" "github.com/kagent-dev/kagent/go/core/internal/version" - "k8s.io/utils/ptr" a2aclient "trpc.group/trpc-go/trpc-a2a-go/client" "trpc.group/trpc-go/trpc-a2a-go/protocol" ) @@ -177,8 +176,8 @@ func (m *workspaceModel) loadSessions() tea.Cmd { func (m *workspaceModel) createSession(name string) tea.Cmd { return func() tea.Msg { res, err := m.client.Session.CreateSession(context.Background(), &api.SessionRequest{ - Name: ptr.To(name), - AgentRef: ptr.To(m.agentRef), + Name: new(name), + AgentRef: new(m.agentRef), }) if err != nil { return createSessionMsg{session: nil, err: err} diff --git a/go/core/hack/makeagentconfig/main.go b/go/core/hack/makeagentconfig/main.go index c7eb3ee0e..e5af8818e 100644 --- a/go/core/hack/makeagentconfig/main.go +++ b/go/core/hack/makeagentconfig/main.go @@ -27,11 +27,11 @@ func main() { Description: "Test agent", URL: "http://localhost:8080", Capabilities: server.AgentCapabilities{ - Streaming: ptrTo(true), StateTransitionHistory: ptrTo(true), + Streaming: new(true), StateTransitionHistory: new(true), }, DefaultInputModes: []string{"text"}, DefaultOutputModes: []string{"text"}, - Skills: []server.AgentSkill{{ID: "test", Name: "test", Description: ptrTo("test"), Tags: []string{"test"}}}, + Skills: []server.AgentSkill{{ID: "test", Name: "test", Description: new("test"), Tags: []string{"test"}}}, } // do we have mcp everything port open? @@ -42,7 +42,7 @@ func main() { Params: adk.StreamableHTTPConnectionParams{ Url: "http://127.0.0.1:3001/mcp", Headers: map[string]string{}, - Timeout: ptrTo(30.0), + Timeout: new(30.0), }, Tools: []string{}, }, @@ -61,7 +61,3 @@ func main() { os.WriteFile("config.json", bCfg, 0644) os.WriteFile("agent-card.json", bCard, 0644) } - -func ptrTo[T any](v T) *T { - return &v -} diff --git a/go/core/internal/controller/agent_controller.go b/go/core/internal/controller/agent_controller.go index 29f99be11..4c048290b 100644 --- a/go/core/internal/controller/agent_controller.go +++ b/go/core/internal/controller/agent_controller.go @@ -23,7 +23,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" - "k8s.io/utils/ptr" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/builder" "sigs.k8s.io/controller-runtime/pkg/client" @@ -68,7 +67,7 @@ func (r *AgentController) Reconcile(ctx context.Context, req ctrl.Request) (ctrl func (r *AgentController) SetupWithManager(mgr ctrl.Manager) error { build := ctrl.NewControllerManagedBy(mgr). WithOptions(controller.Options{ - NeedLeaderElection: ptr.To(true), + NeedLeaderElection: new(true), }). For(&v1alpha2.Agent{}, builder.WithPredicates(predicate.Or(predicate.GenerationChangedPredicate{}, predicate.LabelChangedPredicate{}))) diff --git a/go/core/internal/controller/mcp_server_tool_controller.go b/go/core/internal/controller/mcp_server_tool_controller.go index 12531c7f8..67c3490ee 100644 --- a/go/core/internal/controller/mcp_server_tool_controller.go +++ b/go/core/internal/controller/mcp_server_tool_controller.go @@ -28,7 +28,6 @@ import ( "github.com/kagent-dev/kmcp/api/v1alpha1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/utils/ptr" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/builder" "sigs.k8s.io/controller-runtime/pkg/controller" @@ -75,7 +74,7 @@ func (r *MCPServerToolController) SetupWithManager(mgr ctrl.Manager) error { } return ctrl.NewControllerManagedBy(mgr). WithOptions(controller.Options{ - NeedLeaderElection: ptr.To(true), + NeedLeaderElection: new(true), }). For(&v1alpha1.MCPServer{}, builder.WithPredicates( predicate.GenerationChangedPredicate{}, diff --git a/go/core/internal/controller/modelconfig_controller.go b/go/core/internal/controller/modelconfig_controller.go index a925cc414..b4d00201c 100644 --- a/go/core/internal/controller/modelconfig_controller.go +++ b/go/core/internal/controller/modelconfig_controller.go @@ -24,7 +24,6 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" - "k8s.io/utils/ptr" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/builder" "sigs.k8s.io/controller-runtime/pkg/client" @@ -61,7 +60,7 @@ func (r *ModelConfigController) Reconcile(ctx context.Context, req ctrl.Request) func (r *ModelConfigController) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). WithOptions(controller.Options{ - NeedLeaderElection: ptr.To(true), + NeedLeaderElection: new(true), }). For(&v1alpha2.ModelConfig{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})). Watches( diff --git a/go/core/internal/controller/modelproviderconfig_controller.go b/go/core/internal/controller/modelproviderconfig_controller.go index 38c01ddf7..6f56166a2 100644 --- a/go/core/internal/controller/modelproviderconfig_controller.go +++ b/go/core/internal/controller/modelproviderconfig_controller.go @@ -24,7 +24,6 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" - "k8s.io/utils/ptr" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/builder" "sigs.k8s.io/controller-runtime/pkg/client" @@ -59,7 +58,7 @@ func (r *ModelProviderConfigController) Reconcile(ctx context.Context, req ctrl. func (r *ModelProviderConfigController) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). WithOptions(controller.Options{ - NeedLeaderElection: ptr.To(true), + NeedLeaderElection: new(true), }). For(&v1alpha2.ModelProviderConfig{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})). Watches( diff --git a/go/core/internal/controller/remote_mcp_server_controller.go b/go/core/internal/controller/remote_mcp_server_controller.go index cb0c027c0..a37015feb 100644 --- a/go/core/internal/controller/remote_mcp_server_controller.go +++ b/go/core/internal/controller/remote_mcp_server_controller.go @@ -24,7 +24,6 @@ import ( "github.com/kagent-dev/kagent/go/core/internal/controller/reconciler" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/utils/ptr" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/controller" "sigs.k8s.io/controller-runtime/pkg/log" @@ -58,7 +57,7 @@ func (r *RemoteMCPServerController) Reconcile(ctx context.Context, req ctrl.Requ func (r *RemoteMCPServerController) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). WithOptions(controller.Options{ - NeedLeaderElection: ptr.To(true), + NeedLeaderElection: new(true), }). For(&v1alpha2.RemoteMCPServer{}). Named("remotemcpserver"). diff --git a/go/core/internal/controller/service_controller.go b/go/core/internal/controller/service_controller.go index b69e4612b..c8eaa8832 100644 --- a/go/core/internal/controller/service_controller.go +++ b/go/core/internal/controller/service_controller.go @@ -26,7 +26,6 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/utils/ptr" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller" @@ -65,7 +64,7 @@ func (r *ServiceController) Reconcile(ctx context.Context, req ctrl.Request) (ct func (r *ServiceController) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). WithOptions(controller.Options{ - NeedLeaderElection: ptr.To(true), + NeedLeaderElection: new(true), }). WithEventFilter(predicate.NewPredicateFuncs(func(obj client.Object) bool { labels := obj.GetLabels() diff --git a/go/core/internal/controller/translator/agent/adk_api_translator.go b/go/core/internal/controller/translator/agent/adk_api_translator.go index b3f7b36d5..fb231c62c 100644 --- a/go/core/internal/controller/translator/agent/adk_api_translator.go +++ b/go/core/internal/controller/translator/agent/adk_api_translator.go @@ -34,7 +34,6 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/intstr" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "trpc.group/trpc-go/trpc-a2a-go/server" @@ -481,7 +480,7 @@ func (a *adkApiTranslator) buildManifest( { ServiceAccountToken: &corev1.ServiceAccountTokenProjection{ Audience: "kagent", - ExpirationSeconds: ptr.To(int64(3600)), + ExpirationSeconds: new(int64(3600)), Path: "kagent-token", }, }, @@ -514,12 +513,12 @@ func (a *adkApiTranslator) buildManifest( securityContext = dep.SecurityContext.DeepCopy() // If sandbox is needed, ensure Privileged is set (may override user setting) if needSandbox { - securityContext.Privileged = ptr.To(true) + securityContext.Privileged = new(true) } } else if needSandbox { // Only create security context if sandbox is needed securityContext = &corev1.SecurityContext{ - Privileged: ptr.To(true), + Privileged: new(true), } } // If neither user-provided securityContext nor sandbox is needed, securityContext remains nil @@ -629,7 +628,7 @@ func (a *adkApiTranslator) translateInlineAgent(ctx context.Context, agent *v1al Instruction: rawSystemMessage, Model: model, ExecuteCode: agent.Spec.Declarative.ExecuteCodeBlocks, - Stream: ptr.To(agent.Spec.Declarative.Stream), + Stream: new(agent.Spec.Declarative.Stream), } // Translate context management configuration @@ -822,7 +821,7 @@ func addTLSConfiguration(modelDeploymentData *modelDeploymentData, tlsConfig *v1 VolumeSource: corev1.VolumeSource{ Secret: &corev1.SecretVolumeSource{ SecretName: tlsConfig.CACertSecretRef, - DefaultMode: ptr.To(int32(0444)), // Read-only for all users + DefaultMode: new(int32(0444)), // Read-only for all users }, }, }) @@ -1245,10 +1244,10 @@ func (a *adkApiTranslator) translateStreamableHttpTool(ctx context.Context, serv Headers: headers, } if server.Spec.Timeout != nil { - params.Timeout = ptr.To(server.Spec.Timeout.Seconds()) + params.Timeout = new(server.Spec.Timeout.Seconds()) } if server.Spec.SseReadTimeout != nil { - params.SseReadTimeout = ptr.To(server.Spec.SseReadTimeout.Seconds()) + params.SseReadTimeout = new(server.Spec.SseReadTimeout.Seconds()) } if server.Spec.TerminateOnClose != nil { params.TerminateOnClose = server.Spec.TerminateOnClose @@ -1279,10 +1278,10 @@ func (a *adkApiTranslator) translateSseHttpTool(ctx context.Context, server *v1a Headers: headers, } if server.Spec.Timeout != nil { - params.Timeout = ptr.To(server.Spec.Timeout.Seconds()) + params.Timeout = new(server.Spec.Timeout.Seconds()) } if server.Spec.SseReadTimeout != nil { - params.SseReadTimeout = ptr.To(server.Spec.SseReadTimeout.Seconds()) + params.SseReadTimeout = new(server.Spec.SseReadTimeout.Seconds()) } return params, nil } diff --git a/go/core/internal/controller/translator/agent/adk_api_translator_test.go b/go/core/internal/controller/translator/agent/adk_api_translator_test.go index fdffabf88..4344f68b2 100644 --- a/go/core/internal/controller/translator/agent/adk_api_translator_test.go +++ b/go/core/internal/controller/translator/agent/adk_api_translator_test.go @@ -16,7 +16,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" schemev1 "k8s.io/client-go/kubernetes/scheme" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" ) @@ -470,7 +469,7 @@ func Test_AdkApiTranslator_ServiceAccountNameOverride(t *testing.T) { ModelConfig: "test-model", Deployment: &v1alpha2.DeclarativeDeploymentSpec{ SharedDeploymentSpec: v1alpha2.SharedDeploymentSpec{ - ServiceAccountName: ptr.To("custom-sa"), + ServiceAccountName: new("custom-sa"), }, }, }, @@ -990,8 +989,8 @@ func Test_AdkApiTranslator_MergeDeploymentData(t *testing.T) { ModelConfig: agentModel, Context: &v1alpha2.ContextConfig{ Compaction: &v1alpha2.ContextCompressionConfig{ - CompactionInterval: ptr.To(5), - OverlapSize: ptr.To(2), + CompactionInterval: new(5), + OverlapSize: new(2), Summarizer: &v1alpha2.ContextSummarizerConfig{ ModelConfig: &summarizerModel, }, @@ -1186,15 +1185,15 @@ func Test_AdkApiTranslator_ContextConfig(t *testing.T) { name: "compaction only", agent: makeAgent(&v1alpha2.ContextConfig{ Compaction: &v1alpha2.ContextCompressionConfig{ - CompactionInterval: ptr.To(5), - OverlapSize: ptr.To(2), + CompactionInterval: new(5), + OverlapSize: new(2), }, }), assertConfig: func(t *testing.T, cfg *adk.AgentConfig) { require.NotNil(t, cfg.ContextConfig) require.NotNil(t, cfg.ContextConfig.Compaction) - assert.Equal(t, ptr.To(5), cfg.ContextConfig.Compaction.CompactionInterval) - assert.Equal(t, ptr.To(2), cfg.ContextConfig.Compaction.OverlapSize) + assert.Equal(t, new(5), cfg.ContextConfig.Compaction.CompactionInterval) + assert.Equal(t, new(2), cfg.ContextConfig.Compaction.OverlapSize) assert.Nil(t, cfg.ContextConfig.Compaction.SummarizerModel) }, }, @@ -1202,29 +1201,29 @@ func Test_AdkApiTranslator_ContextConfig(t *testing.T) { name: "compaction with all optional fields", agent: makeAgent(&v1alpha2.ContextConfig{ Compaction: &v1alpha2.ContextCompressionConfig{ - CompactionInterval: ptr.To(10), - OverlapSize: ptr.To(3), - TokenThreshold: ptr.To(1000), - EventRetentionSize: ptr.To(5), + CompactionInterval: new(10), + OverlapSize: new(3), + TokenThreshold: new(1000), + EventRetentionSize: new(5), }, }), assertConfig: func(t *testing.T, cfg *adk.AgentConfig) { require.NotNil(t, cfg.ContextConfig) require.NotNil(t, cfg.ContextConfig.Compaction) - assert.Equal(t, ptr.To(10), cfg.ContextConfig.Compaction.CompactionInterval) - assert.Equal(t, ptr.To(3), cfg.ContextConfig.Compaction.OverlapSize) - assert.Equal(t, ptr.To(1000), cfg.ContextConfig.Compaction.TokenThreshold) - assert.Equal(t, ptr.To(5), cfg.ContextConfig.Compaction.EventRetentionSize) + assert.Equal(t, new(10), cfg.ContextConfig.Compaction.CompactionInterval) + assert.Equal(t, new(3), cfg.ContextConfig.Compaction.OverlapSize) + assert.Equal(t, new(1000), cfg.ContextConfig.Compaction.TokenThreshold) + assert.Equal(t, new(5), cfg.ContextConfig.Compaction.EventRetentionSize) }, }, { name: "compaction with summarizer using agent model", agent: makeAgent(&v1alpha2.ContextConfig{ Compaction: &v1alpha2.ContextCompressionConfig{ - CompactionInterval: ptr.To(5), - OverlapSize: ptr.To(2), + CompactionInterval: new(5), + OverlapSize: new(2), Summarizer: &v1alpha2.ContextSummarizerConfig{ - PromptTemplate: ptr.To("Summarize: {{events}}"), + PromptTemplate: new("Summarize: {{events}}"), }, }, }), @@ -1240,10 +1239,10 @@ func Test_AdkApiTranslator_ContextConfig(t *testing.T) { name: "compaction with summarizer using separate model", agent: makeAgent(&v1alpha2.ContextConfig{ Compaction: &v1alpha2.ContextCompressionConfig{ - CompactionInterval: ptr.To(5), - OverlapSize: ptr.To(2), + CompactionInterval: new(5), + OverlapSize: new(2), Summarizer: &v1alpha2.ContextSummarizerConfig{ - ModelConfig: ptr.To("summarizer-model"), + ModelConfig: new("summarizer-model"), }, }, }), diff --git a/go/core/internal/controller/translator/agent/deployments.go b/go/core/internal/controller/translator/agent/deployments.go index 43e1a298f..0899894bb 100644 --- a/go/core/internal/controller/translator/agent/deployments.go +++ b/go/core/internal/controller/translator/agent/deployments.go @@ -8,7 +8,6 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" - "k8s.io/utils/ptr" "github.com/kagent-dev/kagent/go/api/v1alpha2" "github.com/kagent-dev/kagent/go/core/internal/controller/translator/labels" @@ -115,7 +114,7 @@ func resolveInlineDeployment(agent *v1alpha2.Agent, mdd *modelDeploymentData) (* "/config", } - serviceAccountName := ptr.To(agent.Name) + serviceAccountName := new(agent.Name) // Start with spec deployment spec spec := v1alpha2.DeclarativeDeploymentSpec{} @@ -178,7 +177,7 @@ func resolveInlineDeployment(agent *v1alpha2.Agent, mdd *modelDeploymentData) (* // Precedence: agent-level serviceAccountName > global default > auto-created SA (agent name) if dep.ServiceAccountName == nil { if DefaultServiceAccountName != "" { - dep.ServiceAccountName = ptr.To(DefaultServiceAccountName) + dep.ServiceAccountName = new(DefaultServiceAccountName) } else { dep.ServiceAccountName = serviceAccountName } @@ -230,7 +229,7 @@ func resolveByoDeployment(agent *v1alpha2.Agent) (*resolvedDeployment, error) { replicas := spec.Replicas if replicas == nil { - replicas = ptr.To(int32(1)) + replicas = new(int32(1)) } dep := &resolvedDeployment{ @@ -259,9 +258,9 @@ func resolveByoDeployment(agent *v1alpha2.Agent) (*resolvedDeployment, error) { // Precedence: agent-level serviceAccountName > global default > auto-created SA (agent name) if dep.ServiceAccountName == nil { if DefaultServiceAccountName != "" { - dep.ServiceAccountName = ptr.To(DefaultServiceAccountName) + dep.ServiceAccountName = new(DefaultServiceAccountName) } else { - dep.ServiceAccountName = ptr.To(agent.Name) + dep.ServiceAccountName = new(agent.Name) } } diff --git a/go/core/internal/controller/translator/agent/security_context_test.go b/go/core/internal/controller/translator/agent/security_context_test.go index 2156b9953..6124ad639 100644 --- a/go/core/internal/controller/translator/agent/security_context_test.go +++ b/go/core/internal/controller/translator/agent/security_context_test.go @@ -11,7 +11,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" schemev1 "k8s.io/client-go/kubernetes/scheme" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client/fake" "github.com/kagent-dev/kagent/go/api/v1alpha2" @@ -35,17 +34,17 @@ func TestSecurityContext_AppliedToPodSpec(t *testing.T) { Deployment: &v1alpha2.DeclarativeDeploymentSpec{ SharedDeploymentSpec: v1alpha2.SharedDeploymentSpec{ PodSecurityContext: &corev1.PodSecurityContext{ - RunAsUser: ptr.To(int64(1000)), - RunAsGroup: ptr.To(int64(1000)), - FSGroup: ptr.To(int64(1000)), - RunAsNonRoot: ptr.To(true), + RunAsUser: new(int64(1000)), + RunAsGroup: new(int64(1000)), + FSGroup: new(int64(1000)), + RunAsNonRoot: new(true), SupplementalGroups: []int64{1000}, }, SecurityContext: &corev1.SecurityContext{ - RunAsUser: ptr.To(int64(1000)), - RunAsGroup: ptr.To(int64(1000)), - RunAsNonRoot: ptr.To(true), - AllowPrivilegeEscalation: ptr.To(false), + RunAsUser: new(int64(1000)), + RunAsGroup: new(int64(1000)), + RunAsNonRoot: new(true), + AllowPrivilegeEscalation: new(false), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, Add: []corev1.Capability{"NET_BIND_SERVICE"}, @@ -142,8 +141,8 @@ func TestSecurityContext_OnlyPodSecurityContext(t *testing.T) { Deployment: &v1alpha2.DeclarativeDeploymentSpec{ SharedDeploymentSpec: v1alpha2.SharedDeploymentSpec{ PodSecurityContext: &corev1.PodSecurityContext{ - RunAsUser: ptr.To(int64(2000)), - RunAsGroup: ptr.To(int64(2000)), + RunAsUser: new(int64(2000)), + RunAsGroup: new(int64(2000)), }, }, }, @@ -217,8 +216,8 @@ func TestSecurityContext_OnlyContainerSecurityContext(t *testing.T) { Deployment: &v1alpha2.DeclarativeDeploymentSpec{ SharedDeploymentSpec: v1alpha2.SharedDeploymentSpec{ SecurityContext: &corev1.SecurityContext{ - RunAsUser: ptr.To(int64(3000)), - RunAsGroup: ptr.To(int64(3000)), + RunAsUser: new(int64(3000)), + RunAsGroup: new(int64(3000)), }, }, }, @@ -295,8 +294,8 @@ func TestSecurityContext_WithSandbox(t *testing.T) { Deployment: &v1alpha2.DeclarativeDeploymentSpec{ SharedDeploymentSpec: v1alpha2.SharedDeploymentSpec{ SecurityContext: &corev1.SecurityContext{ - RunAsUser: ptr.To(int64(1000)), - RunAsGroup: ptr.To(int64(1000)), + RunAsUser: new(int64(1000)), + RunAsGroup: new(int64(1000)), }, }, }, diff --git a/go/core/internal/controller/translator/agent/utils.go b/go/core/internal/controller/translator/agent/utils.go index ee390ef2a..a9dda8e5b 100644 --- a/go/core/internal/controller/translator/agent/utils.go +++ b/go/core/internal/controller/translator/agent/utils.go @@ -7,7 +7,6 @@ import ( "github.com/kagent-dev/kagent/go/api/v1alpha2" "github.com/kagent-dev/kagent/go/core/internal/utils" - "k8s.io/utils/ptr" "trpc.group/trpc-go/trpc-a2a-go/server" ) @@ -17,9 +16,9 @@ func GetA2AAgentCard(agent *v1alpha2.Agent) *server.AgentCard { Description: agent.Spec.Description, URL: fmt.Sprintf("http://%s.%s:8080", agent.Name, agent.Namespace), Capabilities: server.AgentCapabilities{ - Streaming: ptr.To(true), - PushNotifications: ptr.To(false), - StateTransitionHistory: ptr.To(true), + Streaming: new(true), + PushNotifications: new(false), + StateTransitionHistory: new(true), }, // Can't be null for Python, so set to empty list Skills: []server.AgentSkill{}, diff --git a/go/core/internal/httpserver/handlers/modelconfig.go b/go/core/internal/httpserver/handlers/modelconfig.go index 421b65ddc..9e022f9f9 100644 --- a/go/core/internal/httpserver/handlers/modelconfig.go +++ b/go/core/internal/httpserver/handlers/modelconfig.go @@ -165,8 +165,7 @@ func getStructJSONKeys(structType reflect.Type) []string { if structType.Kind() != reflect.Struct { return keys } - for i := 0; i < structType.NumField(); i++ { - field := structType.Field(i) + for field := range structType.Fields() { jsonTag := field.Tag.Get("json") if jsonTag != "" && jsonTag != "-" { tagParts := strings.Split(jsonTag, ",") diff --git a/go/core/internal/httpserver/handlers/sessions_test.go b/go/core/internal/httpserver/handlers/sessions_test.go index 65f57c700..30ec56f2e 100644 --- a/go/core/internal/httpserver/handlers/sessions_test.go +++ b/go/core/internal/httpserver/handlers/sessions_test.go @@ -13,7 +13,6 @@ import ( "github.com/stretchr/testify/require" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client/fake" "github.com/kagent-dev/kagent/go/api/database" @@ -69,7 +68,7 @@ func TestSessionsHandler(t *testing.T) { createTestSession := func(dbClient database.Client, sessionID, userID string, agentID string) *database.Session { session := &database.Session{ ID: sessionID, - Name: ptr.To(sessionID), + Name: new(sessionID), UserID: userID, AgentID: &agentID, } @@ -123,7 +122,7 @@ func TestSessionsHandler(t *testing.T) { sessionReq := api.SessionRequest{ AgentRef: &agentRef, - Name: ptr.To("test-session"), + Name: new("test-session"), } jsonBody, _ := json.Marshal(sessionReq) diff --git a/go/core/internal/httpserver/handlers/toolservers_test.go b/go/core/internal/httpserver/handlers/toolservers_test.go index d25b1d952..90a949394 100644 --- a/go/core/internal/httpserver/handlers/toolservers_test.go +++ b/go/core/internal/httpserver/handlers/toolservers_test.go @@ -29,7 +29,6 @@ import ( "github.com/kagent-dev/kagent/go/core/internal/httpserver/handlers" common "github.com/kagent-dev/kagent/go/core/internal/utils" "github.com/kagent-dev/kmcp/api/v1alpha1" - "k8s.io/utils/ptr" ) func TestToolServersHandler(t *testing.T) { @@ -161,7 +160,7 @@ func TestToolServersHandler(t *testing.T) { }, }, Timeout: &metav1.Duration{Duration: 30 * time.Second}, - TerminateOnClose: ptr.To(true), + TerminateOnClose: new(true), }, }, } diff --git a/go/core/internal/httpserver/handlers/utils.go b/go/core/internal/httpserver/handlers/utils.go index 1ebeeb628..66ffc415d 100644 --- a/go/core/internal/httpserver/handlers/utils.go +++ b/go/core/internal/httpserver/handlers/utils.go @@ -7,7 +7,6 @@ import ( corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" "github.com/kagent-dev/kagent/go/api/v1alpha1" @@ -41,7 +40,7 @@ func createSecretWithOwnerReference( Kind: ownerKind, Name: owner.GetName(), UID: owner.GetUID(), - Controller: ptr.To(true), + Controller: new(true), }}, }, StringData: data, diff --git a/go/core/test/e2e/invoke_api_test.go b/go/core/test/e2e/invoke_api_test.go index f1cd5b4c6..8a605fb0f 100644 --- a/go/core/test/e2e/invoke_api_test.go +++ b/go/core/test/e2e/invoke_api_test.go @@ -18,7 +18,6 @@ import ( k8s_runtime "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/client-go/util/retry" - "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" "github.com/kagent-dev/kagent/go/api/v1alpha2" @@ -1216,7 +1215,7 @@ func TestE2EIAgentRunsCode(t *testing.T) { // Setup specific resources modelCfg := setupModelConfig(t, cli, baseURL) agent := setupAgentWithOptions(t, cli, modelCfg.Name, nil, AgentOptions{ - ExecuteCode: ptr.To(true), + ExecuteCode: new(true), }) // Setup A2A client From c6c94393620faaab461b9cb06d9f7342aa477d90 Mon Sep 17 00:00:00 2001 From: Jaison Paul Date: Wed, 11 Mar 2026 00:30:26 -0400 Subject: [PATCH 6/6] ci: re-trigger CI after transient build failure Signed-off-by: Jaison Paul