From 8da619a279128973e6b497cf32555c6248d124c5 Mon Sep 17 00:00:00 2001 From: Yuval Kohavi Date: Thu, 21 Aug 2025 16:21:40 -0400 Subject: [PATCH 1/3] cleanup: - go dir structure: move controller folder under pkg and internal - remove websocket: we don't have it anyway Signed-off-by: Yuval Kohavi --- go/{controller => }/.gitignore | 0 go/Dockerfile | 4 +- go/Makefile | 6 +- .../api/v1alpha1/agent_types.go | 0 .../api/v1alpha1/groupversion_info.go | 0 .../api/v1alpha1/memory_types.go | 0 .../api/v1alpha1/modelconfig_types.go | 0 .../api/v1alpha1/toolserver_types.go | 0 .../api/v1alpha1/zz_generated.deepcopy.go | 0 .../api/v1alpha2/agent_types.go | 0 .../api/v1alpha2/groupversion_info.go | 0 .../api/v1alpha2/modelconfig_types.go | 0 .../api/v1alpha2/remotemcpserver_types.go | 0 .../api/v1alpha2/zz_generated.deepcopy.go | 0 go/cli/internal/cli/const.go | 2 +- go/cli/internal/cli/const_test.go | 2 +- go/controller/.dockerignore | 3 - go/controller/README.md | 134 ------------------ .../controller}/a2a/a2a_reconciler.go | 2 +- .../internal/controller/agent_controller.go | 4 +- go/internal/controller/cmd/main.go | 33 +++++ .../controller/hack/boilerplate.go.txt | 0 .../controller/mcp_server_controller.go | 2 +- .../internal/controller/memory_controller.go | 4 +- .../controller/modelconfig_controller.go | 4 +- .../controller}/reconciler/reconciler.go | 6 +- .../remote_mcp_server_controller.go | 4 +- .../internal/controller/service_controller.go | 2 +- .../translator/adk_api_translator.go | 2 +- .../translator/adk_translator_golden_test.go | 4 +- .../controller/translator/testdata/README.md | 0 .../inputs/agent_with_http_toolserver.yaml | 0 .../inputs/agent_with_mcp_service.yaml | 0 .../inputs/agent_with_nested_agent.yaml | 0 .../testdata/inputs/anthropic_agent.yaml | 0 .../testdata/inputs/basic_agent.yaml | 0 .../testdata/inputs/ollama_agent.yaml | 0 .../outputs/agent_with_http_toolserver.json | 0 .../outputs/agent_with_mcp_service.json | 0 .../outputs/agent_with_nested_agent.json | 0 .../testdata/outputs/anthropic_agent.json | 0 .../testdata/outputs/basic_agent.json | 0 .../testdata/outputs/ollama_agent.json | 0 go/internal/database/client.go | 2 +- go/internal/database/fake/client.go | 2 +- go/internal/httpserver/handlers/agents.go | 4 +- .../httpserver/handlers/agents_test.go | 2 +- go/internal/httpserver/handlers/memory.go | 2 +- .../httpserver/handlers/memory_test.go | 2 +- .../httpserver/handlers/modelconfig.go | 2 +- .../httpserver/handlers/modelconfig_test.go | 2 +- go/internal/httpserver/handlers/models.go | 2 +- .../httpserver/handlers/namespaces_test.go | 2 +- go/internal/httpserver/handlers/providers.go | 4 +- .../httpserver/handlers/sessions_test.go | 2 +- .../httpserver/handlers/test_helpers_test.go | 2 +- .../httpserver/handlers/toolservers.go | 2 +- .../httpserver/handlers/toolservers_test.go | 2 +- go/internal/httpserver/handlers/utils.go | 4 +- go/{controller/cmd/main.go => pkg/app/app.go} | 100 +++++-------- .../cmd/main_test.go => pkg/app/app_test.go} | 2 +- go/pkg/client/agent.go | 2 +- go/pkg/client/api/types.go | 4 +- go/pkg/client/memory.go | 2 +- go/pkg/client/model.go | 2 +- go/pkg/client/modelconfig.go | 2 +- go/pkg/client/toolserver.go | 2 +- 67 files changed, 116 insertions(+), 256 deletions(-) rename go/{controller => }/.gitignore (100%) rename go/{controller => }/api/v1alpha1/agent_types.go (100%) rename go/{controller => }/api/v1alpha1/groupversion_info.go (100%) rename go/{controller => }/api/v1alpha1/memory_types.go (100%) rename go/{controller => }/api/v1alpha1/modelconfig_types.go (100%) rename go/{controller => }/api/v1alpha1/toolserver_types.go (100%) rename go/{controller => }/api/v1alpha1/zz_generated.deepcopy.go (100%) rename go/{controller => }/api/v1alpha2/agent_types.go (100%) rename go/{controller => }/api/v1alpha2/groupversion_info.go (100%) rename go/{controller => }/api/v1alpha2/modelconfig_types.go (100%) rename go/{controller => }/api/v1alpha2/remotemcpserver_types.go (100%) rename go/{controller => }/api/v1alpha2/zz_generated.deepcopy.go (100%) delete mode 100644 go/controller/.dockerignore delete mode 100644 go/controller/README.md rename go/{controller/internal => internal/controller}/a2a/a2a_reconciler.go (96%) rename go/{controller => }/internal/controller/agent_controller.go (98%) create mode 100644 go/internal/controller/cmd/main.go rename go/{ => internal}/controller/hack/boilerplate.go.txt (100%) rename go/{controller => }/internal/controller/mcp_server_controller.go (96%) rename go/{controller => }/internal/controller/memory_controller.go (93%) rename go/{controller => }/internal/controller/modelconfig_controller.go (96%) rename go/{controller/internal => internal/controller}/reconciler/reconciler.go (99%) rename go/{controller => }/internal/controller/remote_mcp_server_controller.go (93%) rename go/{controller => }/internal/controller/service_controller.go (96%) rename go/{ => internal}/controller/translator/adk_api_translator.go (99%) rename go/{ => internal}/controller/translator/adk_translator_golden_test.go (98%) rename go/{ => internal}/controller/translator/testdata/README.md (100%) rename go/{ => internal}/controller/translator/testdata/inputs/agent_with_http_toolserver.yaml (100%) rename go/{ => internal}/controller/translator/testdata/inputs/agent_with_mcp_service.yaml (100%) rename go/{ => internal}/controller/translator/testdata/inputs/agent_with_nested_agent.yaml (100%) rename go/{ => internal}/controller/translator/testdata/inputs/anthropic_agent.yaml (100%) rename go/{ => internal}/controller/translator/testdata/inputs/basic_agent.yaml (100%) rename go/{ => internal}/controller/translator/testdata/inputs/ollama_agent.yaml (100%) rename go/{ => internal}/controller/translator/testdata/outputs/agent_with_http_toolserver.json (100%) rename go/{ => internal}/controller/translator/testdata/outputs/agent_with_mcp_service.json (100%) rename go/{ => internal}/controller/translator/testdata/outputs/agent_with_nested_agent.json (100%) rename go/{ => internal}/controller/translator/testdata/outputs/anthropic_agent.json (100%) rename go/{ => internal}/controller/translator/testdata/outputs/basic_agent.json (100%) rename go/{ => internal}/controller/translator/testdata/outputs/ollama_agent.json (100%) rename go/{controller/cmd/main.go => pkg/app/app.go} (80%) rename go/{controller/cmd/main_test.go => pkg/app/app_test.go} (99%) diff --git a/go/controller/.gitignore b/go/.gitignore similarity index 100% rename from go/controller/.gitignore rename to go/.gitignore diff --git a/go/Dockerfile b/go/Dockerfile index 349fb49ec..081c49311 100644 --- a/go/Dockerfile +++ b/go/Dockerfile @@ -18,9 +18,9 @@ RUN --mount=type=cache,target=/root/go/pkg/mod,rw \ go mod download # Copy the go source +COPY api api COPY pkg pkg COPY internal internal -COPY controller controller # Build # the GOARCH has not a default value to allow the binary be built according to the host where the command # was called. For example, if we call make docker-build in a local env which has the Apple Silicon M1 SO @@ -30,7 +30,7 @@ ARG LDFLAGS RUN --mount=type=cache,target=/root/go/pkg/mod,rw \ --mount=type=cache,target=/root/.cache/go-build,rw \ echo "Building on $BUILDPLATFORM -> linux/$TARGETARCH" && \ - CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -ldflags "$LDFLAGS" -o manager controller/cmd/main.go + CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -ldflags "$LDFLAGS" -o manager internal/controller/cmd/main.go ### STAGE 2: final image # Use distroless as minimal base image to package the manager binary diff --git a/go/Makefile b/go/Makefile index d5d7984de..583f09866 100644 --- a/go/Makefile +++ b/go/Makefile @@ -16,12 +16,12 @@ endif ##@ Development .PHONY: manifests -manifests: controller-gen generate ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects. - $(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases +manifests: controller-gen generate ## Generate ClusterRole and CustomResourceDefinition objects. + $(CONTROLLER_GEN) rbac:roleName=manager-role crd paths="./..." output:crd:artifacts:config=config/crd/bases .PHONY: generate generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations. - $(CONTROLLER_GEN) object:headerFile="controller/hack/boilerplate.go.txt" paths="./..." + $(CONTROLLER_GEN) object:headerFile="internal/controller/hack/boilerplate.go.txt" paths="./..." .PHONY: fmt fmt: ## Run go fmt against code. diff --git a/go/controller/api/v1alpha1/agent_types.go b/go/api/v1alpha1/agent_types.go similarity index 100% rename from go/controller/api/v1alpha1/agent_types.go rename to go/api/v1alpha1/agent_types.go diff --git a/go/controller/api/v1alpha1/groupversion_info.go b/go/api/v1alpha1/groupversion_info.go similarity index 100% rename from go/controller/api/v1alpha1/groupversion_info.go rename to go/api/v1alpha1/groupversion_info.go diff --git a/go/controller/api/v1alpha1/memory_types.go b/go/api/v1alpha1/memory_types.go similarity index 100% rename from go/controller/api/v1alpha1/memory_types.go rename to go/api/v1alpha1/memory_types.go diff --git a/go/controller/api/v1alpha1/modelconfig_types.go b/go/api/v1alpha1/modelconfig_types.go similarity index 100% rename from go/controller/api/v1alpha1/modelconfig_types.go rename to go/api/v1alpha1/modelconfig_types.go diff --git a/go/controller/api/v1alpha1/toolserver_types.go b/go/api/v1alpha1/toolserver_types.go similarity index 100% rename from go/controller/api/v1alpha1/toolserver_types.go rename to go/api/v1alpha1/toolserver_types.go diff --git a/go/controller/api/v1alpha1/zz_generated.deepcopy.go b/go/api/v1alpha1/zz_generated.deepcopy.go similarity index 100% rename from go/controller/api/v1alpha1/zz_generated.deepcopy.go rename to go/api/v1alpha1/zz_generated.deepcopy.go diff --git a/go/controller/api/v1alpha2/agent_types.go b/go/api/v1alpha2/agent_types.go similarity index 100% rename from go/controller/api/v1alpha2/agent_types.go rename to go/api/v1alpha2/agent_types.go diff --git a/go/controller/api/v1alpha2/groupversion_info.go b/go/api/v1alpha2/groupversion_info.go similarity index 100% rename from go/controller/api/v1alpha2/groupversion_info.go rename to go/api/v1alpha2/groupversion_info.go diff --git a/go/controller/api/v1alpha2/modelconfig_types.go b/go/api/v1alpha2/modelconfig_types.go similarity index 100% rename from go/controller/api/v1alpha2/modelconfig_types.go rename to go/api/v1alpha2/modelconfig_types.go diff --git a/go/controller/api/v1alpha2/remotemcpserver_types.go b/go/api/v1alpha2/remotemcpserver_types.go similarity index 100% rename from go/controller/api/v1alpha2/remotemcpserver_types.go rename to go/api/v1alpha2/remotemcpserver_types.go diff --git a/go/controller/api/v1alpha2/zz_generated.deepcopy.go b/go/api/v1alpha2/zz_generated.deepcopy.go similarity index 100% rename from go/controller/api/v1alpha2/zz_generated.deepcopy.go rename to go/api/v1alpha2/zz_generated.deepcopy.go diff --git a/go/cli/internal/cli/const.go b/go/cli/internal/cli/const.go index a27fa95c0..30a5e7a20 100644 --- a/go/cli/internal/cli/const.go +++ b/go/cli/internal/cli/const.go @@ -4,7 +4,7 @@ import ( "os" "strings" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha1" + "github.com/kagent-dev/kagent/go/api/v1alpha1" ) const ( diff --git a/go/cli/internal/cli/const_test.go b/go/cli/internal/cli/const_test.go index 263b45b15..ebe7dba62 100644 --- a/go/cli/internal/cli/const_test.go +++ b/go/cli/internal/cli/const_test.go @@ -4,7 +4,7 @@ import ( "os" "testing" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha1" + "github.com/kagent-dev/kagent/go/api/v1alpha1" ) func TestGetModelProvider(t *testing.T) { diff --git a/go/controller/.dockerignore b/go/controller/.dockerignore deleted file mode 100644 index a3aab7af7..000000000 --- a/go/controller/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -# More info: https://docs.docker.com/engine/reference/builder/#dockerignore-file -# Ignore build and test binaries. -bin/ diff --git a/go/controller/README.md b/go/controller/README.md deleted file mode 100644 index 49988809f..000000000 --- a/go/controller/README.md +++ /dev/null @@ -1,134 +0,0 @@ -# controller -// TODO(user): Add simple overview of use/purpose - -## Description -// TODO(user): An in-depth paragraph about your project and overview of use - -## Getting Started - -### Prerequisites -- go version v1.24.0+ -- docker version 17.03+. -- kubectl version v1.11.3+. -- Access to a Kubernetes v1.11.3+ cluster. - -### To Deploy on the cluster -**Build and push your image to the location specified by `IMG`:** - -```sh -make docker-build docker-push IMG=/controller:tag -``` - -**NOTE:** This image ought to be published in the personal registry you specified. -And it is required to have access to pull the image from the working environment. -Make sure you have the proper permission to the registry if the above commands don’t work. - -**Install the CRDs into the cluster:** - -```sh -make install -``` - -**Deploy the Manager to the cluster with the image specified by `IMG`:** - -```sh -make deploy IMG=/controller:tag -``` - -> **NOTE**: If you encounter RBAC errors, you may need to grant yourself cluster-admin -privileges or be logged in as admin. - -**Create instances of your solution** -You can apply the samples (examples) from the config/sample: - -```sh -kubectl apply -k config/samples/ -``` - ->**NOTE**: Ensure that the samples has default values to test it out. - -### To Uninstall -**Delete the instances (CRs) from the cluster:** - -```sh -kubectl delete -k config/samples/ -``` - -**Delete the APIs(CRDs) from the cluster:** - -```sh -make uninstall -``` - -**UnDeploy the controller from the cluster:** - -```sh -make undeploy -``` - -## Project Distribution - -Following the options to release and provide this solution to the users. - -### By providing a bundle with all YAML files - -1. Build the installer for the image built and published in the registry: - -```sh -make build-installer IMG=/controller:tag -``` - -**NOTE:** The makefile target mentioned above generates an 'install.yaml' -file in the dist directory. This file contains all the resources built -with Kustomize, which are necessary to install this project without its -dependencies. - -2. Using the installer - -Users can just run 'kubectl apply -f ' to install -the project, i.e.: - -```sh -kubectl apply -f https://raw.githubusercontent.com//controller//dist/install.yaml -``` - -### By providing a Helm Chart - -1. Build the chart using the optional helm plugin - -```sh -kubebuilder edit --plugins=helm/v1-alpha -``` - -2. See that a chart was generated under 'dist/chart', and users -can obtain this solution from there. - -**NOTE:** If you change the project, you need to update the Helm Chart -using the same command above to sync the latest changes. Furthermore, -if you create webhooks, you need to use the above command with -the '--force' flag and manually ensure that any custom configuration -previously added to 'dist/chart/values.yaml' or 'dist/chart/manager/manager.yaml' -is manually re-applied afterwards. - -## Contributing -// TODO(user): Add detailed information on how you would like others to contribute to this project - -**NOTE:** Run `make help` for more information on all potential `make` targets - -More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html) - -## License - -Copyright 2025. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/go/controller/internal/a2a/a2a_reconciler.go b/go/internal/controller/a2a/a2a_reconciler.go similarity index 96% rename from go/controller/internal/a2a/a2a_reconciler.go rename to go/internal/controller/a2a/a2a_reconciler.go index 8e3f1fc20..26139724f 100644 --- a/go/controller/internal/a2a/a2a_reconciler.go +++ b/go/internal/controller/a2a/a2a_reconciler.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + "github.com/kagent-dev/kagent/go/api/v1alpha2" "github.com/kagent-dev/kagent/go/internal/a2a" "github.com/kagent-dev/kagent/go/internal/httpserver/auth" common "github.com/kagent-dev/kagent/go/internal/utils" diff --git a/go/controller/internal/controller/agent_controller.go b/go/internal/controller/agent_controller.go similarity index 98% rename from go/controller/internal/controller/agent_controller.go rename to go/internal/controller/agent_controller.go index 6be7dc2bd..d1ded2162 100644 --- a/go/controller/internal/controller/agent_controller.go +++ b/go/internal/controller/agent_controller.go @@ -35,8 +35,8 @@ import ( "sigs.k8s.io/controller-runtime/pkg/predicate" "sigs.k8s.io/controller-runtime/pkg/reconcile" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" - "github.com/kagent-dev/kagent/go/controller/internal/reconciler" + "github.com/kagent-dev/kagent/go/api/v1alpha2" + "github.com/kagent-dev/kagent/go/internal/controller/reconciler" v1alpha1 "github.com/kagent-dev/kmcp/api/v1alpha1" ) diff --git a/go/internal/controller/cmd/main.go b/go/internal/controller/cmd/main.go new file mode 100644 index 000000000..ad84cbe8f --- /dev/null +++ b/go/internal/controller/cmd/main.go @@ -0,0 +1,33 @@ +/* +Copyright 2025. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "github.com/kagent-dev/kagent/go/internal/httpserver/auth" + "github.com/kagent-dev/kagent/go/pkg/app" + + // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.) + // to ensure that exec-entrypoint and run can make use of them. + _ "k8s.io/client-go/plugin/pkg/client/auth" +) + +// nolint:gocyclo +func main() { + authorizer := &auth.NoopAuthorizer{} + authenticator := &auth.UnsecureAuthenticator{} + app.Start(authenticator, authorizer) +} diff --git a/go/controller/hack/boilerplate.go.txt b/go/internal/controller/hack/boilerplate.go.txt similarity index 100% rename from go/controller/hack/boilerplate.go.txt rename to go/internal/controller/hack/boilerplate.go.txt diff --git a/go/controller/internal/controller/mcp_server_controller.go b/go/internal/controller/mcp_server_controller.go similarity index 96% rename from go/controller/internal/controller/mcp_server_controller.go rename to go/internal/controller/mcp_server_controller.go index c2a43095d..2f543383a 100644 --- a/go/controller/internal/controller/mcp_server_controller.go +++ b/go/internal/controller/mcp_server_controller.go @@ -20,7 +20,7 @@ import ( "context" "time" - "github.com/kagent-dev/kagent/go/controller/internal/reconciler" + "github.com/kagent-dev/kagent/go/internal/controller/reconciler" "github.com/kagent-dev/kmcp/api/v1alpha1" "k8s.io/apimachinery/pkg/runtime" diff --git a/go/controller/internal/controller/memory_controller.go b/go/internal/controller/memory_controller.go similarity index 93% rename from go/controller/internal/controller/memory_controller.go rename to go/internal/controller/memory_controller.go index 8946c987e..bed355bf5 100644 --- a/go/controller/internal/controller/memory_controller.go +++ b/go/internal/controller/memory_controller.go @@ -19,7 +19,7 @@ package controller import ( "context" - "github.com/kagent-dev/kagent/go/controller/internal/reconciler" + "github.com/kagent-dev/kagent/go/internal/controller/reconciler" "k8s.io/apimachinery/pkg/runtime" "k8s.io/utils/ptr" @@ -29,7 +29,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/predicate" - agentv1alpha1 "github.com/kagent-dev/kagent/go/controller/api/v1alpha1" + agentv1alpha1 "github.com/kagent-dev/kagent/go/api/v1alpha1" ) // MemoryController reconciles a Memory object diff --git a/go/controller/internal/controller/modelconfig_controller.go b/go/internal/controller/modelconfig_controller.go similarity index 96% rename from go/controller/internal/controller/modelconfig_controller.go rename to go/internal/controller/modelconfig_controller.go index 58209ca6b..fc9d29039 100644 --- a/go/controller/internal/controller/modelconfig_controller.go +++ b/go/internal/controller/modelconfig_controller.go @@ -19,7 +19,7 @@ package controller import ( "context" - "github.com/kagent-dev/kagent/go/controller/internal/reconciler" + "github.com/kagent-dev/kagent/go/internal/controller/reconciler" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" @@ -34,7 +34,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/predicate" "sigs.k8s.io/controller-runtime/pkg/reconcile" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + "github.com/kagent-dev/kagent/go/api/v1alpha2" ) var ( diff --git a/go/controller/internal/reconciler/reconciler.go b/go/internal/controller/reconciler/reconciler.go similarity index 99% rename from go/controller/internal/reconciler/reconciler.go rename to go/internal/controller/reconciler/reconciler.go index 54020d38a..8c0aeef69 100644 --- a/go/controller/internal/reconciler/reconciler.go +++ b/go/internal/controller/reconciler/reconciler.go @@ -18,9 +18,9 @@ import ( "k8s.io/utils/ptr" "trpc.group/trpc-go/trpc-a2a-go/server" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" - "github.com/kagent-dev/kagent/go/controller/internal/a2a" - "github.com/kagent-dev/kagent/go/controller/translator" + "github.com/kagent-dev/kagent/go/api/v1alpha2" + "github.com/kagent-dev/kagent/go/internal/controller/a2a" + "github.com/kagent-dev/kagent/go/internal/controller/translator" "github.com/kagent-dev/kagent/go/internal/database" "github.com/kagent-dev/kagent/go/internal/utils" "github.com/kagent-dev/kagent/go/internal/version" diff --git a/go/controller/internal/controller/remote_mcp_server_controller.go b/go/internal/controller/remote_mcp_server_controller.go similarity index 93% rename from go/controller/internal/controller/remote_mcp_server_controller.go rename to go/internal/controller/remote_mcp_server_controller.go index 0a4a8f235..fe43b48e6 100644 --- a/go/controller/internal/controller/remote_mcp_server_controller.go +++ b/go/internal/controller/remote_mcp_server_controller.go @@ -20,8 +20,8 @@ import ( "context" "time" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" - "github.com/kagent-dev/kagent/go/controller/internal/reconciler" + "github.com/kagent-dev/kagent/go/api/v1alpha2" + "github.com/kagent-dev/kagent/go/internal/controller/reconciler" "k8s.io/apimachinery/pkg/runtime" "k8s.io/utils/ptr" diff --git a/go/controller/internal/controller/service_controller.go b/go/internal/controller/service_controller.go similarity index 96% rename from go/controller/internal/controller/service_controller.go rename to go/internal/controller/service_controller.go index ea4ec892c..5ec9b03aa 100644 --- a/go/controller/internal/controller/service_controller.go +++ b/go/internal/controller/service_controller.go @@ -19,7 +19,7 @@ package controller import ( "context" - "github.com/kagent-dev/kagent/go/controller/internal/reconciler" + "github.com/kagent-dev/kagent/go/internal/controller/reconciler" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" diff --git a/go/controller/translator/adk_api_translator.go b/go/internal/controller/translator/adk_api_translator.go similarity index 99% rename from go/controller/translator/adk_api_translator.go rename to go/internal/controller/translator/adk_api_translator.go index 79e63755b..2f41db807 100644 --- a/go/controller/translator/adk_api_translator.go +++ b/go/internal/controller/translator/adk_api_translator.go @@ -12,7 +12,7 @@ import ( "strconv" "strings" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + "github.com/kagent-dev/kagent/go/api/v1alpha2" "github.com/kagent-dev/kagent/go/internal/adk" "github.com/kagent-dev/kagent/go/internal/utils" "github.com/kagent-dev/kagent/go/internal/version" diff --git a/go/controller/translator/adk_translator_golden_test.go b/go/internal/controller/translator/adk_translator_golden_test.go similarity index 98% rename from go/controller/translator/adk_translator_golden_test.go rename to go/internal/controller/translator/adk_translator_golden_test.go index d40ee2fc8..4af037fd8 100644 --- a/go/controller/translator/adk_translator_golden_test.go +++ b/go/internal/controller/translator/adk_translator_golden_test.go @@ -12,8 +12,8 @@ import ( "github.com/stretchr/testify/require" "sigs.k8s.io/yaml" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" - "github.com/kagent-dev/kagent/go/controller/translator" + "github.com/kagent-dev/kagent/go/api/v1alpha2" + "github.com/kagent-dev/kagent/go/internal/controller/translator" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" diff --git a/go/controller/translator/testdata/README.md b/go/internal/controller/translator/testdata/README.md similarity index 100% rename from go/controller/translator/testdata/README.md rename to go/internal/controller/translator/testdata/README.md diff --git a/go/controller/translator/testdata/inputs/agent_with_http_toolserver.yaml b/go/internal/controller/translator/testdata/inputs/agent_with_http_toolserver.yaml similarity index 100% rename from go/controller/translator/testdata/inputs/agent_with_http_toolserver.yaml rename to go/internal/controller/translator/testdata/inputs/agent_with_http_toolserver.yaml diff --git a/go/controller/translator/testdata/inputs/agent_with_mcp_service.yaml b/go/internal/controller/translator/testdata/inputs/agent_with_mcp_service.yaml similarity index 100% rename from go/controller/translator/testdata/inputs/agent_with_mcp_service.yaml rename to go/internal/controller/translator/testdata/inputs/agent_with_mcp_service.yaml diff --git a/go/controller/translator/testdata/inputs/agent_with_nested_agent.yaml b/go/internal/controller/translator/testdata/inputs/agent_with_nested_agent.yaml similarity index 100% rename from go/controller/translator/testdata/inputs/agent_with_nested_agent.yaml rename to go/internal/controller/translator/testdata/inputs/agent_with_nested_agent.yaml diff --git a/go/controller/translator/testdata/inputs/anthropic_agent.yaml b/go/internal/controller/translator/testdata/inputs/anthropic_agent.yaml similarity index 100% rename from go/controller/translator/testdata/inputs/anthropic_agent.yaml rename to go/internal/controller/translator/testdata/inputs/anthropic_agent.yaml diff --git a/go/controller/translator/testdata/inputs/basic_agent.yaml b/go/internal/controller/translator/testdata/inputs/basic_agent.yaml similarity index 100% rename from go/controller/translator/testdata/inputs/basic_agent.yaml rename to go/internal/controller/translator/testdata/inputs/basic_agent.yaml diff --git a/go/controller/translator/testdata/inputs/ollama_agent.yaml b/go/internal/controller/translator/testdata/inputs/ollama_agent.yaml similarity index 100% rename from go/controller/translator/testdata/inputs/ollama_agent.yaml rename to go/internal/controller/translator/testdata/inputs/ollama_agent.yaml diff --git a/go/controller/translator/testdata/outputs/agent_with_http_toolserver.json b/go/internal/controller/translator/testdata/outputs/agent_with_http_toolserver.json similarity index 100% rename from go/controller/translator/testdata/outputs/agent_with_http_toolserver.json rename to go/internal/controller/translator/testdata/outputs/agent_with_http_toolserver.json diff --git a/go/controller/translator/testdata/outputs/agent_with_mcp_service.json b/go/internal/controller/translator/testdata/outputs/agent_with_mcp_service.json similarity index 100% rename from go/controller/translator/testdata/outputs/agent_with_mcp_service.json rename to go/internal/controller/translator/testdata/outputs/agent_with_mcp_service.json diff --git a/go/controller/translator/testdata/outputs/agent_with_nested_agent.json b/go/internal/controller/translator/testdata/outputs/agent_with_nested_agent.json similarity index 100% rename from go/controller/translator/testdata/outputs/agent_with_nested_agent.json rename to go/internal/controller/translator/testdata/outputs/agent_with_nested_agent.json diff --git a/go/controller/translator/testdata/outputs/anthropic_agent.json b/go/internal/controller/translator/testdata/outputs/anthropic_agent.json similarity index 100% rename from go/controller/translator/testdata/outputs/anthropic_agent.json rename to go/internal/controller/translator/testdata/outputs/anthropic_agent.json diff --git a/go/controller/translator/testdata/outputs/basic_agent.json b/go/internal/controller/translator/testdata/outputs/basic_agent.json similarity index 100% rename from go/controller/translator/testdata/outputs/basic_agent.json rename to go/internal/controller/translator/testdata/outputs/basic_agent.json diff --git a/go/controller/translator/testdata/outputs/ollama_agent.json b/go/internal/controller/translator/testdata/outputs/ollama_agent.json similarity index 100% rename from go/controller/translator/testdata/outputs/ollama_agent.json rename to go/internal/controller/translator/testdata/outputs/ollama_agent.json diff --git a/go/internal/database/client.go b/go/internal/database/client.go index d6eb84d80..50ab045e2 100644 --- a/go/internal/database/client.go +++ b/go/internal/database/client.go @@ -6,7 +6,7 @@ import ( "slices" "time" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + "github.com/kagent-dev/kagent/go/api/v1alpha2" "gorm.io/gorm" "trpc.group/trpc-go/trpc-a2a-go/protocol" ) diff --git a/go/internal/database/fake/client.go b/go/internal/database/fake/client.go index 1423fed9e..e9829bbec 100644 --- a/go/internal/database/fake/client.go +++ b/go/internal/database/fake/client.go @@ -6,7 +6,7 @@ import ( "sort" "sync" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + "github.com/kagent-dev/kagent/go/api/v1alpha2" "github.com/kagent-dev/kagent/go/internal/database" "gorm.io/gorm" "trpc.group/trpc-go/trpc-a2a-go/protocol" diff --git a/go/internal/httpserver/handlers/agents.go b/go/internal/httpserver/handlers/agents.go index e5173cfec..2a92098d4 100644 --- a/go/internal/httpserver/handlers/agents.go +++ b/go/internal/httpserver/handlers/agents.go @@ -5,8 +5,8 @@ import ( "net/http" "github.com/go-logr/logr" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" - "github.com/kagent-dev/kagent/go/controller/translator" + "github.com/kagent-dev/kagent/go/api/v1alpha2" + "github.com/kagent-dev/kagent/go/internal/controller/translator" "github.com/kagent-dev/kagent/go/internal/httpserver/auth" "github.com/kagent-dev/kagent/go/internal/httpserver/errors" "github.com/kagent-dev/kagent/go/internal/utils" diff --git a/go/internal/httpserver/handlers/agents_test.go b/go/internal/httpserver/handlers/agents_test.go index 0d649fc37..1285518bd 100644 --- a/go/internal/httpserver/handlers/agents_test.go +++ b/go/internal/httpserver/handlers/agents_test.go @@ -14,7 +14,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + "github.com/kagent-dev/kagent/go/api/v1alpha2" "github.com/kagent-dev/kagent/go/internal/adk" "github.com/kagent-dev/kagent/go/internal/database" database_fake "github.com/kagent-dev/kagent/go/internal/database/fake" diff --git a/go/internal/httpserver/handlers/memory.go b/go/internal/httpserver/handlers/memory.go index a84cba771..a8c13735c 100644 --- a/go/internal/httpserver/handlers/memory.go +++ b/go/internal/httpserver/handlers/memory.go @@ -12,7 +12,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" ctrllog "sigs.k8s.io/controller-runtime/pkg/log" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha1" + "github.com/kagent-dev/kagent/go/api/v1alpha1" "github.com/kagent-dev/kagent/go/internal/httpserver/auth" "github.com/kagent-dev/kagent/go/internal/httpserver/errors" common "github.com/kagent-dev/kagent/go/internal/utils" diff --git a/go/internal/httpserver/handlers/memory_test.go b/go/internal/httpserver/handlers/memory_test.go index 6832fc58c..c0b24993d 100644 --- a/go/internal/httpserver/handlers/memory_test.go +++ b/go/internal/httpserver/handlers/memory_test.go @@ -18,7 +18,7 @@ import ( ctrl_client "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha1" + "github.com/kagent-dev/kagent/go/api/v1alpha1" database_fake "github.com/kagent-dev/kagent/go/internal/database/fake" "github.com/kagent-dev/kagent/go/internal/httpserver/auth" "github.com/kagent-dev/kagent/go/internal/httpserver/handlers" diff --git a/go/internal/httpserver/handlers/modelconfig.go b/go/internal/httpserver/handlers/modelconfig.go index 2beb5a81c..cd7234600 100644 --- a/go/internal/httpserver/handlers/modelconfig.go +++ b/go/internal/httpserver/handlers/modelconfig.go @@ -7,7 +7,7 @@ import ( "reflect" "strings" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + "github.com/kagent-dev/kagent/go/api/v1alpha2" "github.com/kagent-dev/kagent/go/internal/httpserver/auth" "github.com/kagent-dev/kagent/go/internal/httpserver/errors" common "github.com/kagent-dev/kagent/go/internal/utils" diff --git a/go/internal/httpserver/handlers/modelconfig_test.go b/go/internal/httpserver/handlers/modelconfig_test.go index 27129b72e..daa80977d 100644 --- a/go/internal/httpserver/handlers/modelconfig_test.go +++ b/go/internal/httpserver/handlers/modelconfig_test.go @@ -18,7 +18,7 @@ import ( ctrl_client "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + "github.com/kagent-dev/kagent/go/api/v1alpha2" "github.com/kagent-dev/kagent/go/internal/httpserver/auth" "github.com/kagent-dev/kagent/go/internal/httpserver/handlers" "github.com/kagent-dev/kagent/go/pkg/client/api" diff --git a/go/internal/httpserver/handlers/models.go b/go/internal/httpserver/handlers/models.go index 4fb6c8043..b35119484 100644 --- a/go/internal/httpserver/handlers/models.go +++ b/go/internal/httpserver/handlers/models.go @@ -3,7 +3,7 @@ package handlers import ( "net/http" - v1alpha2 "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + v1alpha2 "github.com/kagent-dev/kagent/go/api/v1alpha2" kclient "github.com/kagent-dev/kagent/go/pkg/client" "github.com/kagent-dev/kagent/go/pkg/client/api" ctrllog "sigs.k8s.io/controller-runtime/pkg/log" diff --git a/go/internal/httpserver/handlers/namespaces_test.go b/go/internal/httpserver/handlers/namespaces_test.go index a30ce982d..a89c0e8bd 100644 --- a/go/internal/httpserver/handlers/namespaces_test.go +++ b/go/internal/httpserver/handlers/namespaces_test.go @@ -16,7 +16,7 @@ import ( ctrl_client "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha1" + "github.com/kagent-dev/kagent/go/api/v1alpha1" "github.com/kagent-dev/kagent/go/internal/httpserver/handlers" "github.com/kagent-dev/kagent/go/pkg/client/api" ) diff --git a/go/internal/httpserver/handlers/providers.go b/go/internal/httpserver/handlers/providers.go index 8b99ff87d..482de2dc9 100644 --- a/go/internal/httpserver/handlers/providers.go +++ b/go/internal/httpserver/handlers/providers.go @@ -4,8 +4,8 @@ import ( "net/http" "reflect" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha1" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + "github.com/kagent-dev/kagent/go/api/v1alpha1" + "github.com/kagent-dev/kagent/go/api/v1alpha2" "github.com/kagent-dev/kagent/go/pkg/client/api" ctrllog "sigs.k8s.io/controller-runtime/pkg/log" ) diff --git a/go/internal/httpserver/handlers/sessions_test.go b/go/internal/httpserver/handlers/sessions_test.go index cff407290..1ff2c6714 100644 --- a/go/internal/httpserver/handlers/sessions_test.go +++ b/go/internal/httpserver/handlers/sessions_test.go @@ -15,7 +15,7 @@ import ( "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client/fake" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha1" + "github.com/kagent-dev/kagent/go/api/v1alpha1" "github.com/kagent-dev/kagent/go/internal/database" database_fake "github.com/kagent-dev/kagent/go/internal/database/fake" "github.com/kagent-dev/kagent/go/internal/httpserver/auth" diff --git a/go/internal/httpserver/handlers/test_helpers_test.go b/go/internal/httpserver/handlers/test_helpers_test.go index 1eae09289..7e9afebf2 100644 --- a/go/internal/httpserver/handlers/test_helpers_test.go +++ b/go/internal/httpserver/handlers/test_helpers_test.go @@ -8,7 +8,7 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/kubernetes/scheme" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + "github.com/kagent-dev/kagent/go/api/v1alpha2" "github.com/kagent-dev/kagent/go/internal/httpserver/errors" ) diff --git a/go/internal/httpserver/handlers/toolservers.go b/go/internal/httpserver/handlers/toolservers.go index df743896a..3b84ddf80 100644 --- a/go/internal/httpserver/handlers/toolservers.go +++ b/go/internal/httpserver/handlers/toolservers.go @@ -5,7 +5,7 @@ import ( "net/http" "github.com/go-logr/logr" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + "github.com/kagent-dev/kagent/go/api/v1alpha2" "github.com/kagent-dev/kagent/go/internal/httpserver/auth" "github.com/kagent-dev/kagent/go/internal/httpserver/errors" common "github.com/kagent-dev/kagent/go/internal/utils" diff --git a/go/internal/httpserver/handlers/toolservers_test.go b/go/internal/httpserver/handlers/toolservers_test.go index 06d3654ee..eb3fde475 100644 --- a/go/internal/httpserver/handlers/toolservers_test.go +++ b/go/internal/httpserver/handlers/toolservers_test.go @@ -19,7 +19,7 @@ import ( ctrl_client "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + "github.com/kagent-dev/kagent/go/api/v1alpha2" "github.com/kagent-dev/kagent/go/internal/database" database_fake "github.com/kagent-dev/kagent/go/internal/database/fake" "github.com/kagent-dev/kagent/go/internal/httpserver/auth" diff --git a/go/internal/httpserver/handlers/utils.go b/go/internal/httpserver/handlers/utils.go index e5fd14da3..8e20158a6 100644 --- a/go/internal/httpserver/handlers/utils.go +++ b/go/internal/httpserver/handlers/utils.go @@ -10,8 +10,8 @@ import ( "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha1" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + "github.com/kagent-dev/kagent/go/api/v1alpha1" + "github.com/kagent-dev/kagent/go/api/v1alpha2" ) // createSecretWithOwnerReference creates a Kubernetes secret with owner reference. diff --git a/go/controller/cmd/main.go b/go/pkg/app/app.go similarity index 80% rename from go/controller/cmd/main.go rename to go/pkg/app/app.go index 0621ad682..9a6a33f20 100644 --- a/go/controller/cmd/main.go +++ b/go/pkg/app/app.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package app import ( "context" @@ -31,13 +31,13 @@ import ( "k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/types" - "github.com/kagent-dev/kagent/go/controller/translator" "github.com/kagent-dev/kagent/go/internal/a2a" + "github.com/kagent-dev/kagent/go/internal/controller/translator" "github.com/kagent-dev/kagent/go/internal/database" versionmetrics "github.com/kagent-dev/kagent/go/internal/metrics" - a2a_reconciler "github.com/kagent-dev/kagent/go/controller/internal/a2a" - "github.com/kagent-dev/kagent/go/controller/internal/reconciler" + a2a_reconciler "github.com/kagent-dev/kagent/go/internal/controller/a2a" + "github.com/kagent-dev/kagent/go/internal/controller/reconciler" "github.com/kagent-dev/kagent/go/internal/httpserver" common "github.com/kagent-dev/kagent/go/internal/utils" @@ -59,11 +59,10 @@ import ( ctrlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics" "sigs.k8s.io/controller-runtime/pkg/metrics/filters" metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" - "sigs.k8s.io/controller-runtime/pkg/webhook" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha1" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" - "github.com/kagent-dev/kagent/go/controller/internal/controller" + "github.com/kagent-dev/kagent/go/api/v1alpha1" + "github.com/kagent-dev/kagent/go/api/v1alpha2" + "github.com/kagent-dev/kagent/go/internal/controller" "github.com/kagent-dev/kagent/go/internal/goruntime" kmcpv1alpha1 "github.com/kagent-dev/kmcp/api/v1alpha1" kmcpcontroller "github.com/kagent-dev/kmcp/pkg/controller" @@ -99,11 +98,6 @@ type Config struct { CertName string CertKey string } - Webhook struct { - CertPath string - CertName string - CertKey string - } Streaming struct { MaxBufSize resource.QuantityValue `default:"1Mi"` InitialBufSize resource.QuantityValue `default:"4Ki"` @@ -123,41 +117,41 @@ type Config struct { } } -// nolint:gocyclo -func main() { - cfg := Config{} - var tlsOpts []func(*tls.Config) - flag.StringVar(&cfg.Metrics.Addr, "metrics-bind-address", "0", "The address the metrics endpoint binds to. "+ +func (cfg *Config) SetFlags(commandLine *flag.FlagSet) { + commandLine.StringVar(&cfg.Metrics.Addr, "metrics-bind-address", "0", "The address the metrics endpoint binds to. "+ "Use :8443 for HTTPS or :8080 for HTTP, or leave as 0 to disable the metrics service.") - flag.StringVar(&cfg.ProbeAddr, "health-probe-bind-address", ":8082", "The address the probe endpoint binds to.") - flag.BoolVar(&cfg.LeaderElection, "leader-elect", false, + commandLine.StringVar(&cfg.ProbeAddr, "health-probe-bind-address", ":8082", "The address the probe endpoint binds to.") + commandLine.BoolVar(&cfg.LeaderElection, "leader-elect", false, "Enable leader election for controller manager. "+ "Enabling this will ensure there is only one active controller manager.") - flag.BoolVar(&cfg.SecureMetrics, "metrics-secure", true, + commandLine.BoolVar(&cfg.SecureMetrics, "metrics-secure", true, "If set, the metrics endpoint is served securely via HTTPS. Use --metrics-secure=false to use HTTP instead.") - flag.StringVar(&cfg.Webhook.CertPath, "webhook-cert-path", "", "The directory that contains the webhook certificate.") - flag.StringVar(&cfg.Webhook.CertName, "webhook-cert-name", "tls.crt", "The name of the webhook certificate file.") - flag.StringVar(&cfg.Webhook.CertKey, "webhook-cert-key", "tls.key", "The name of the webhook key file.") - flag.StringVar(&cfg.Metrics.CertPath, "metrics-cert-path", "", + commandLine.StringVar(&cfg.Metrics.CertPath, "metrics-cert-path", "", "The directory that contains the metrics server certificate.") - flag.StringVar(&cfg.Metrics.CertName, "metrics-cert-name", "tls.crt", "The name of the metrics server certificate file.") - flag.StringVar(&cfg.Metrics.CertKey, "metrics-cert-key", "tls.key", "The name of the metrics server key file.") - flag.BoolVar(&cfg.EnableHTTP2, "enable-http2", false, + commandLine.StringVar(&cfg.Metrics.CertName, "metrics-cert-name", "tls.crt", "The name of the metrics server certificate file.") + commandLine.StringVar(&cfg.Metrics.CertKey, "metrics-cert-key", "tls.key", "The name of the metrics server key file.") + commandLine.BoolVar(&cfg.EnableHTTP2, "enable-http2", false, "If set, HTTP/2 will be enabled for the metrics and webhook servers") - flag.StringVar(&cfg.DefaultModelConfig.Name, "default-model-config-name", "default-model-config", "The name of the default model config.") - flag.StringVar(&cfg.DefaultModelConfig.Namespace, "default-model-config-namespace", kagentNamespace, "The namespace of the default model config.") - flag.StringVar(&cfg.HttpServerAddr, "http-server-address", ":8083", "The address the HTTP server binds to.") - flag.StringVar(&cfg.A2ABaseUrl, "a2a-base-url", "http://127.0.0.1:8083", "The base URL of the A2A Server endpoint, as advertised to clients.") - flag.StringVar(&cfg.Database.Type, "database-type", "sqlite", "The type of the database to use. Supported values: sqlite, postgres.") - flag.StringVar(&cfg.Database.Path, "sqlite-database-path", "./kagent.db", "The path to the SQLite database file.") - flag.StringVar(&cfg.Database.Url, "postgres-database-url", "postgres://postgres:kagent@db.kagent.svc.cluster.local:5432/crud", "The URL of the PostgreSQL database.") + commandLine.StringVar(&cfg.DefaultModelConfig.Name, "default-model-config-name", "default-model-config", "The name of the default model config.") + commandLine.StringVar(&cfg.DefaultModelConfig.Namespace, "default-model-config-namespace", kagentNamespace, "The namespace of the default model config.") + commandLine.StringVar(&cfg.HttpServerAddr, "http-server-address", ":8083", "The address the HTTP server binds to.") + commandLine.StringVar(&cfg.A2ABaseUrl, "a2a-base-url", "http://127.0.0.1:8083", "The base URL of the A2A Server endpoint, as advertised to clients.") + commandLine.StringVar(&cfg.Database.Type, "database-type", "sqlite", "The type of the database to use. Supported values: sqlite, postgres.") + commandLine.StringVar(&cfg.Database.Path, "sqlite-database-path", "./kagent.db", "The path to the SQLite database file.") + commandLine.StringVar(&cfg.Database.Url, "postgres-database-url", "postgres://postgres:kagent@db.kagent.svc.cluster.local:5432/crud", "The URL of the PostgreSQL database.") - flag.StringVar(&cfg.WatchNamespaces, "watch-namespaces", "", "The namespaces to watch for .") + commandLine.StringVar(&cfg.WatchNamespaces, "watch-namespaces", "", "The namespaces to watch for .") - flag.Var(&cfg.Streaming.MaxBufSize, "streaming-max-buf-size", "The maximum size of the streaming buffer.") - flag.Var(&cfg.Streaming.InitialBufSize, "streaming-initial-buf-size", "The initial size of the streaming buffer.") + commandLine.Var(&cfg.Streaming.MaxBufSize, "streaming-max-buf-size", "The maximum size of the streaming buffer.") + commandLine.Var(&cfg.Streaming.InitialBufSize, "streaming-initial-buf-size", "The initial size of the streaming buffer.") +} +func Start(authenticator auth.AuthProvider, authorizer auth.Authorizer) { + var tlsOpts []func(*tls.Config) + var cfg Config + + cfg.SetFlags(flag.CommandLine) flag.StringVar(&translator.DefaultImageConfig.Registry, "image-registry", translator.DefaultImageConfig.Registry, "The registry to use for the image.") flag.StringVar(&translator.DefaultImageConfig.Tag, "image-tag", translator.DefaultImageConfig.Tag, "The tag to use for the image.") flag.StringVar(&translator.DefaultImageConfig.PullPolicy, "image-pull-policy", translator.DefaultImageConfig.PullPolicy, "The pull policy to use for the image.") @@ -198,32 +192,6 @@ func main() { // Create watchers for metrics and webhooks certificates var metricsCertWatcher, webhookCertWatcher *certwatcher.CertWatcher - // Initial webhook TLS options - webhookTLSOpts := tlsOpts - - if len(cfg.Webhook.CertPath) > 0 { - setupLog.Info("Initializing webhook certificate watcher using provided certificates", - "webhook-cert-path", cfg.Webhook.CertPath, "webhook-cert-name", cfg.Webhook.CertName, "webhook-cert-key", cfg.Webhook.CertKey) - - var err error - webhookCertWatcher, err = certwatcher.New( - filepath.Join(cfg.Webhook.CertPath, cfg.Webhook.CertName), - filepath.Join(cfg.Webhook.CertPath, cfg.Webhook.CertKey), - ) - if err != nil { - setupLog.Error(err, "Failed to initialize webhook certificate watcher") - os.Exit(1) - } - - webhookTLSOpts = append(webhookTLSOpts, func(config *tls.Config) { - config.GetCertificate = webhookCertWatcher.GetCertificate - }) - } - - webhookServer := webhook.NewServer(webhook.Options{ - TLSOpts: webhookTLSOpts, - }) - ctrlmetrics.Registry.MustRegister(versionmetrics.NewBuildInfoCollector()) // Metrics endpoint is enabled in 'config/default/kustomization.yaml'. The Metrics options configure the server. @@ -277,7 +245,6 @@ func main() { mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ Scheme: scheme, Metrics: metricsServerOptions, - WebhookServer: webhookServer, HealthProbeBindAddress: cfg.ProbeAddr, LeaderElection: cfg.LeaderElection, LeaderElectionID: "0e9f6799.kagent.dev", @@ -329,9 +296,6 @@ func main() { cfg.DefaultModelConfig, ) - authorizer := &auth.NoopAuthorizer{} - authenticator := &auth.UnsecureAuthenticator{} - a2aHandler := a2a.NewA2AHttpMux(httpserver.APIPathA2A, authenticator) a2aReconciler := a2a_reconciler.NewReconciler( diff --git a/go/controller/cmd/main_test.go b/go/pkg/app/app_test.go similarity index 99% rename from go/controller/cmd/main_test.go rename to go/pkg/app/app_test.go index 3bc7bd653..d18991178 100644 --- a/go/controller/cmd/main_test.go +++ b/go/pkg/app/app_test.go @@ -1,4 +1,4 @@ -package main +package app import ( "strings" diff --git a/go/pkg/client/agent.go b/go/pkg/client/agent.go index 81c3b5719..4cc40e22b 100644 --- a/go/pkg/client/agent.go +++ b/go/pkg/client/agent.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + "github.com/kagent-dev/kagent/go/api/v1alpha2" "github.com/kagent-dev/kagent/go/pkg/client/api" ) diff --git a/go/pkg/client/api/types.go b/go/pkg/client/api/types.go index 03dd3d3d3..4ac440e74 100644 --- a/go/pkg/client/api/types.go +++ b/go/pkg/client/api/types.go @@ -1,8 +1,8 @@ package api import ( - "github.com/kagent-dev/kagent/go/controller/api/v1alpha1" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + "github.com/kagent-dev/kagent/go/api/v1alpha1" + "github.com/kagent-dev/kagent/go/api/v1alpha2" "github.com/kagent-dev/kagent/go/internal/database" ) diff --git a/go/pkg/client/memory.go b/go/pkg/client/memory.go index fb427f42a..9cb425c7a 100644 --- a/go/pkg/client/memory.go +++ b/go/pkg/client/memory.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha1" + "github.com/kagent-dev/kagent/go/api/v1alpha1" "github.com/kagent-dev/kagent/go/pkg/client/api" ) diff --git a/go/pkg/client/model.go b/go/pkg/client/model.go index 9e9e7cb7c..2eabeb014 100644 --- a/go/pkg/client/model.go +++ b/go/pkg/client/model.go @@ -3,7 +3,7 @@ package client import ( "context" - v1alpha2 "github.com/kagent-dev/kagent/go/controller/api/v1alpha2" + v1alpha2 "github.com/kagent-dev/kagent/go/api/v1alpha2" "github.com/kagent-dev/kagent/go/pkg/client/api" ) diff --git a/go/pkg/client/modelconfig.go b/go/pkg/client/modelconfig.go index 9291738c2..b7324b2ab 100644 --- a/go/pkg/client/modelconfig.go +++ b/go/pkg/client/modelconfig.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha1" + "github.com/kagent-dev/kagent/go/api/v1alpha1" "github.com/kagent-dev/kagent/go/pkg/client/api" ) diff --git a/go/pkg/client/toolserver.go b/go/pkg/client/toolserver.go index 704e01e04..25c13b04b 100644 --- a/go/pkg/client/toolserver.go +++ b/go/pkg/client/toolserver.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/kagent-dev/kagent/go/controller/api/v1alpha1" + "github.com/kagent-dev/kagent/go/api/v1alpha1" "github.com/kagent-dev/kagent/go/pkg/client/api" ) From 17f5c49f11cd554ba659283f8c84be0d86cfd54c Mon Sep 17 00:00:00 2001 From: Yuval Kohavi Date: Thu, 21 Aug 2025 16:49:47 -0400 Subject: [PATCH 2/3] move main to cmd Signed-off-by: Yuval Kohavi --- go/Dockerfile | 2 +- go/Makefile | 2 +- go/{internal/controller/cmd => cmd/controller}/main.go | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename go/{internal/controller/cmd => cmd/controller}/main.go (100%) diff --git a/go/Dockerfile b/go/Dockerfile index 081c49311..c98be5ea1 100644 --- a/go/Dockerfile +++ b/go/Dockerfile @@ -30,7 +30,7 @@ ARG LDFLAGS RUN --mount=type=cache,target=/root/go/pkg/mod,rw \ --mount=type=cache,target=/root/.cache/go-build,rw \ echo "Building on $BUILDPLATFORM -> linux/$TARGETARCH" && \ - CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -ldflags "$LDFLAGS" -o manager internal/controller/cmd/main.go + CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -ldflags "$LDFLAGS" -o manager cmd/controller/main.go ### STAGE 2: final image # Use distroless as minimal base image to package the manager binary diff --git a/go/Makefile b/go/Makefile index 583f09866..da57cf5ce 100644 --- a/go/Makefile +++ b/go/Makefile @@ -94,7 +94,7 @@ build: bin/kagent-linux-amd64.sha256 bin/kagent-linux-arm64.sha256 bin/kagent-da .PHONY: run run: manifests generate fmt vet ## Run a controller from your host. - go run ./controller/cmd/main.go + go run ./cmd/controller/main.go .PHONY: test test: diff --git a/go/internal/controller/cmd/main.go b/go/cmd/controller/main.go similarity index 100% rename from go/internal/controller/cmd/main.go rename to go/cmd/controller/main.go From b056fdc70a8a96070b10dee8fcd9c0b633f523eb Mon Sep 17 00:00:00 2001 From: Yuval Kohavi Date: Thu, 21 Aug 2025 17:02:21 -0400 Subject: [PATCH 3/3] fix docker Signed-off-by: Yuval Kohavi --- go/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/go/Dockerfile b/go/Dockerfile index c98be5ea1..9aa0fc968 100644 --- a/go/Dockerfile +++ b/go/Dockerfile @@ -19,6 +19,7 @@ RUN --mount=type=cache,target=/root/go/pkg/mod,rw \ # Copy the go source COPY api api +COPY cmd cmd COPY pkg pkg COPY internal internal # Build