diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..3df5cb5 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,8 @@ +version: "2" + +linters: + settings: + staticcheck: + checks: + - "-SA4006" # Disabled: false positives with Go 1.26's new(value) syntax + - "-SA4017" # Disabled: false positives with Go 1.26's new(value) syntax diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fd8e5fb..7c6cffa 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,6 +18,11 @@ repos: entry: just fmt language: system pass_filenames: false + - id: fix + name: fix files + entry: just fix + language: system + pass_filenames: false - id: lint name: run linter entry: just lint diff --git a/docker-base-aarch64.nix b/docker-base-aarch64.nix index 978ec81..59aaa75 100644 --- a/docker-base-aarch64.nix +++ b/docker-base-aarch64.nix @@ -1,7 +1,7 @@ { imageName = "quay.io/sysdig/sysdig-mini-ubi9"; - imageDigest = "sha256:efee7299f1be1971c83826175f8583bed3736ff817dc38c1d266dfa6385d9b3b"; - hash = "sha256-Ga+VuvBYshe93r8yIN9//dRdw/sfTNsxHl2x+3A5TXE="; + imageDigest = "sha256:39d40b40c28b784c9f50e74759eef17524b02c395a4fba6f5d625e0de2df3dd9"; + hash = "sha256-tKMD8maxhYpXddPLvCtdgJMYGOY4tugQ40na33//Zl4="; finalImageName = "quay.io/sysdig/sysdig-mini-ubi9"; finalImageTag = "1"; } diff --git a/docker-base-amd64.nix b/docker-base-amd64.nix index 7459e87..e2b1faf 100644 --- a/docker-base-amd64.nix +++ b/docker-base-amd64.nix @@ -1,7 +1,7 @@ { imageName = "quay.io/sysdig/sysdig-mini-ubi9"; - imageDigest = "sha256:efee7299f1be1971c83826175f8583bed3736ff817dc38c1d266dfa6385d9b3b"; - hash = "sha256-3K1eClgXOCAYFg5OA6SbzrUrI9xATXkG3bM1Y/t3E6I="; + imageDigest = "sha256:39d40b40c28b784c9f50e74759eef17524b02c395a4fba6f5d625e0de2df3dd9"; + hash = "sha256-2OwX3zig0K85FGETxBy3AapbwycUYGIC1fKXlcHAcO4="; finalImageName = "quay.io/sysdig/sysdig-mini-ubi9"; finalImageTag = "1"; } diff --git a/flake.lock b/flake.lock index de0df29..827c2e9 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1770537093, - "narHash": "sha256-pF1quXG5wsgtyuPOHcLfYg/ft/QMr8NnX0i6tW2187s=", + "lastModified": 1771177547, + "narHash": "sha256-trTtk3WTOHz7hSw89xIIvahkgoFJYQ0G43IlqprFoMA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fef9403a3e4d31b0a23f0bacebbec52c248fbb51", + "rev": "ac055f38c798b0d87695240c7b761b82fc7e5bc2", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index c1dcac0..8b8dd9d 100644 --- a/flake.nix +++ b/flake.nix @@ -16,7 +16,6 @@ prev.pkgsStatic.callPackage ./package.nix { } else prev.callPackage ./package.nix { }; - go = prev.go_1_24; }; flake = flake-utils.lib.eachDefaultSystem ( system: @@ -39,7 +38,7 @@ mkShell { packages = [ ginkgo - go + go_1_26 govulncheck gofumpt golangci-lint diff --git a/go.mod b/go.mod index 775f0c3..f5120e6 100644 --- a/go.mod +++ b/go.mod @@ -1,12 +1,12 @@ module github.com/sysdiglabs/sysdig-mcp-server -go 1.24.13 +go 1.26.0 require ( - github.com/mark3labs/mcp-go v0.43.2 + github.com/mark3labs/mcp-go v0.44.0 github.com/oapi-codegen/runtime v1.1.2 - github.com/onsi/ginkgo/v2 v2.27.5 - github.com/onsi/gomega v1.39.0 + github.com/onsi/ginkgo/v2 v2.28.1 + github.com/onsi/gomega v1.39.1 github.com/spf13/cobra v1.10.2 go.uber.org/mock v0.6.0 gopkg.in/yaml.v2 v2.4.0 @@ -20,7 +20,7 @@ require ( github.com/go-logr/logr v1.4.3 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/google/go-cmp v0.7.0 // indirect - github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 // indirect + github.com/google/pprof v0.0.0-20260202012954-cb029daf43ef // indirect github.com/google/uuid v1.6.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/invopop/jsonschema v0.13.0 // indirect @@ -31,12 +31,12 @@ require ( github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/yosida95/uritemplate/v3 v3.0.2 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/mod v0.32.0 // indirect - golang.org/x/net v0.49.0 // indirect + golang.org/x/mod v0.33.0 // indirect + golang.org/x/net v0.50.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.33.0 // indirect - golang.org/x/tools v0.41.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect + golang.org/x/tools v0.42.0 // indirect gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index d1bfc1e..01ce35c 100644 --- a/go.sum +++ b/go.sum @@ -28,8 +28,8 @@ github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 h1:z2ogiKUYzX5Is6zr/vP9vJGqPwcdqsWjOt+V8J7+bTc= -github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI= +github.com/google/pprof v0.0.0-20260202012954-cb029daf43ef h1:xpF9fUHpoIrrjX24DURVKiwHcFpw19ndIs+FwTSMbno= +github.com/google/pprof v0.0.0-20260202012954-cb029daf43ef/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= @@ -45,18 +45,18 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mailru/easyjson v0.9.1 h1:LbtsOm5WAswyWbvTEOqhypdPeZzHavpZx96/n553mR8= github.com/mailru/easyjson v0.9.1/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= -github.com/mark3labs/mcp-go v0.43.2 h1:21PUSlWWiSbUPQwXIJ5WKlETixpFpq+WBpbMGDSVy/I= -github.com/mark3labs/mcp-go v0.43.2/go.mod h1:YnJfOL382MIWDx1kMY+2zsRHU/q78dBg9aFb8W6Thdw= +github.com/mark3labs/mcp-go v0.44.0 h1:OlYfcVviAnwNN40QZUrrzU0QZjq3En7rCU5X09a/B7I= +github.com/mark3labs/mcp-go v0.44.0/go.mod h1:YnJfOL382MIWDx1kMY+2zsRHU/q78dBg9aFb8W6Thdw= github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= github.com/mfridman/tparse v0.18.0 h1:wh6dzOKaIwkUGyKgOntDW4liXSo37qg5AXbIhkMV3vE= github.com/mfridman/tparse v0.18.0/go.mod h1:gEvqZTuCgEhPbYk/2lS3Kcxg1GmTxxU7kTC8DvP0i/A= github.com/oapi-codegen/runtime v1.1.2 h1:P2+CubHq8fO4Q6fV1tqDBZHCwpVpvPg7oKiYzQgXIyI= github.com/oapi-codegen/runtime v1.1.2/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg= -github.com/onsi/ginkgo/v2 v2.27.5 h1:ZeVgZMx2PDMdJm/+w5fE/OyG6ILo1Y3e+QX4zSR0zTE= -github.com/onsi/ginkgo/v2 v2.27.5/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= -github.com/onsi/gomega v1.39.0 h1:y2ROC3hKFmQZJNFeGAMeHZKkjBL65mIZcvrLQBF9k6Q= -github.com/onsi/gomega v1.39.0/go.mod h1:ZCU1pkQcXDO5Sl9/VVEGlDyp+zm0m1cmeG5TOzLgdh4= +github.com/onsi/ginkgo/v2 v2.28.1 h1:S4hj+HbZp40fNKuLUQOYLDgZLwNUVn19N3Atb98NCyI= +github.com/onsi/ginkgo/v2 v2.28.1/go.mod h1:CLtbVInNckU3/+gC8LzkGUb9oF+e8W8TdUsxPwvdOgE= +github.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28= +github.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= @@ -90,18 +90,18 @@ go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c= -golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU= -golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= -golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= +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.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= +golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= -golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= -golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc= -golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= +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.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= +golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/internal/infra/mcp/tools/tool_k8s_list_clusters_test.go b/internal/infra/mcp/tools/tool_k8s_list_clusters_test.go index 7eba6a7..0aaf394 100644 --- a/internal/infra/mcp/tools/tool_k8s_list_clusters_test.go +++ b/internal/infra/mcp/tools/tool_k8s_list_clusters_test.go @@ -61,7 +61,7 @@ var _ = Describe("KubernetesListClusters Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_cluster_info`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -74,7 +74,7 @@ var _ = Describe("KubernetesListClusters Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_cluster_info`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), Entry(nil, @@ -87,7 +87,7 @@ var _ = Describe("KubernetesListClusters Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_cluster_info{cluster="my_cluster"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -100,13 +100,9 @@ var _ = Describe("KubernetesListClusters Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_cluster_info{cluster="my_cluster"}`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), ) }) }) - -func asPtr[T any](arg T) *T { - return &arg -} diff --git a/internal/infra/mcp/tools/tool_k8s_list_count_pods_per_cluster_test.go b/internal/infra/mcp/tools/tool_k8s_list_count_pods_per_cluster_test.go index 9306984..f9b5c33 100644 --- a/internal/infra/mcp/tools/tool_k8s_list_count_pods_per_cluster_test.go +++ b/internal/infra/mcp/tools/tool_k8s_list_count_pods_per_cluster_test.go @@ -61,7 +61,7 @@ var _ = Describe("KubernetesListCountPodsPerCluster Tool", func() { }, sysdig.GetQueryV1Params{ Query: `sum by (kube_cluster_name, kube_namespace_name) (kube_pod_info)`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), Entry(nil, @@ -74,7 +74,7 @@ var _ = Describe("KubernetesListCountPodsPerCluster Tool", func() { }, sysdig.GetQueryV1Params{ Query: `sum by (kube_cluster_name, kube_namespace_name) (kube_pod_info)`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -87,7 +87,7 @@ var _ = Describe("KubernetesListCountPodsPerCluster Tool", func() { }, sysdig.GetQueryV1Params{ Query: `sum by (kube_cluster_name, kube_namespace_name) (kube_pod_info{kube_cluster_name="my_cluster"})`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), Entry(nil, @@ -100,7 +100,7 @@ var _ = Describe("KubernetesListCountPodsPerCluster Tool", func() { }, sysdig.GetQueryV1Params{ Query: `sum by (kube_cluster_name, kube_namespace_name) (kube_pod_info{kube_namespace_name="my_namespace"})`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), Entry(nil, @@ -113,7 +113,7 @@ var _ = Describe("KubernetesListCountPodsPerCluster Tool", func() { }, sysdig.GetQueryV1Params{ Query: `sum by (kube_cluster_name, kube_namespace_name) (kube_pod_info{kube_cluster_name="my_cluster",kube_namespace_name="my_namespace"})`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), ) diff --git a/internal/infra/mcp/tools/tool_k8s_list_cronjobs_test.go b/internal/infra/mcp/tools/tool_k8s_list_cronjobs_test.go index 9455e4a..15f0b2c 100644 --- a/internal/infra/mcp/tools/tool_k8s_list_cronjobs_test.go +++ b/internal/infra/mcp/tools/tool_k8s_list_cronjobs_test.go @@ -61,7 +61,7 @@ var _ = Describe("KubernetesListCronjobs Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_cronjob_info`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -74,7 +74,7 @@ var _ = Describe("KubernetesListCronjobs Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_cronjob_info`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), Entry(nil, @@ -87,7 +87,7 @@ var _ = Describe("KubernetesListCronjobs Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_cronjob_info{kube_cluster_name="my_cluster"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -100,7 +100,7 @@ var _ = Describe("KubernetesListCronjobs Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_cronjob_info{kube_namespace_name="my_namespace"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -113,7 +113,7 @@ var _ = Describe("KubernetesListCronjobs Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_cronjob_info{kube_cronjob_name="my_cronjob"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -126,7 +126,7 @@ var _ = Describe("KubernetesListCronjobs Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_cronjob_info{kube_cluster_name="my_cluster",kube_namespace_name="my_namespace",kube_cronjob_name="my_cronjob"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), ) diff --git a/internal/infra/mcp/tools/tool_k8s_list_nodes_test.go b/internal/infra/mcp/tools/tool_k8s_list_nodes_test.go index 72ea46e..9c9d4f2 100644 --- a/internal/infra/mcp/tools/tool_k8s_list_nodes_test.go +++ b/internal/infra/mcp/tools/tool_k8s_list_nodes_test.go @@ -61,7 +61,7 @@ var _ = Describe("KubernetesListNodes Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_node_info`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -74,7 +74,7 @@ var _ = Describe("KubernetesListNodes Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_node_info`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), Entry(nil, @@ -87,7 +87,7 @@ var _ = Describe("KubernetesListNodes Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_node_info{cluster="my_cluster"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -100,7 +100,7 @@ var _ = Describe("KubernetesListNodes Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_node_info{kube_node_name="my_node"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -113,7 +113,7 @@ var _ = Describe("KubernetesListNodes Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_node_info{cluster="my_cluster",kube_node_name="my_node"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -126,7 +126,7 @@ var _ = Describe("KubernetesListNodes Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_node_info{cluster="my_cluster"}`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), ) diff --git a/internal/infra/mcp/tools/tool_k8s_list_pod_containers_test.go b/internal/infra/mcp/tools/tool_k8s_list_pod_containers_test.go index 70c99a2..7dafb51 100644 --- a/internal/infra/mcp/tools/tool_k8s_list_pod_containers_test.go +++ b/internal/infra/mcp/tools/tool_k8s_list_pod_containers_test.go @@ -61,7 +61,7 @@ var _ = Describe("KubernetesListPodContainers Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_pod_container_info`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -74,7 +74,7 @@ var _ = Describe("KubernetesListPodContainers Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_pod_container_info`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), Entry(nil, @@ -87,7 +87,7 @@ var _ = Describe("KubernetesListPodContainers Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_pod_container_info{kube_cluster_name="my_cluster"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -100,7 +100,7 @@ var _ = Describe("KubernetesListPodContainers Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_pod_container_info{kube_namespace_name="my_namespace"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -113,7 +113,7 @@ var _ = Describe("KubernetesListPodContainers Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_pod_container_info{kube_workload_type="my_workload_type"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -126,7 +126,7 @@ var _ = Describe("KubernetesListPodContainers Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_pod_container_info{kube_workload_name="my_workload_name"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -139,7 +139,7 @@ var _ = Describe("KubernetesListPodContainers Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_pod_container_info{kube_pod_name="my_pod_name"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -152,7 +152,7 @@ var _ = Describe("KubernetesListPodContainers Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_pod_container_info{kube_pod_container_name="my_container_name"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -165,7 +165,7 @@ var _ = Describe("KubernetesListPodContainers Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_pod_container_info{image="my_image"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -178,7 +178,7 @@ var _ = Describe("KubernetesListPodContainers Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_pod_container_info{kube_node_name="my_node_name"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -200,7 +200,7 @@ var _ = Describe("KubernetesListPodContainers Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_pod_container_info{kube_cluster_name="my_cluster",kube_namespace_name="my_namespace",kube_workload_type="my_workload_type",kube_workload_name="my_workload_name",kube_pod_name="my_pod_name",kube_pod_container_name="my_container_name",image="my_image",kube_node_name="my_node_name"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), ) diff --git a/internal/infra/mcp/tools/tool_k8s_list_top_http_errors_in_pods_test.go b/internal/infra/mcp/tools/tool_k8s_list_top_http_errors_in_pods_test.go index 4c302e2..3f7ee3e 100644 --- a/internal/infra/mcp/tools/tool_k8s_list_top_http_errors_in_pods_test.go +++ b/internal/infra/mcp/tools/tool_k8s_list_top_http_errors_in_pods_test.go @@ -63,7 +63,7 @@ var _ = Describe("KubernetesListTopHttpErrorsInPods Tool", func() { }, sysdig.GetQueryV1Params{ Query: `topk(20,sum(sum_over_time(sysdig_container_net_http_error_count{}[1h])) by (kube_cluster_name, kube_namespace_name, kube_workload_type, kube_workload_name, kube_pod_name)) / 3600.000000`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), Entry("with custom params", @@ -81,7 +81,7 @@ var _ = Describe("KubernetesListTopHttpErrorsInPods Tool", func() { }, sysdig.GetQueryV1Params{ Query: `topk(5,sum(sum_over_time(sysdig_container_net_http_error_count{kube_cluster_name=~"prod-cluster",kube_namespace_name="backend"}[30m])) by (kube_cluster_name, kube_namespace_name, kube_workload_type, kube_workload_name, kube_pod_name)) / 1800.000000`, - Limit: asPtr(sysdig.LimitQuery(5)), + Limit: new(sysdig.LimitQuery(5)), }, ), Entry("with all params", @@ -101,7 +101,7 @@ var _ = Describe("KubernetesListTopHttpErrorsInPods Tool", func() { }, sysdig.GetQueryV1Params{ Query: `topk(10,sum(sum_over_time(sysdig_container_net_http_error_count{kube_cluster_name=~"dev",kube_namespace_name="default",kube_workload_type="deployment",kube_workload_name="api"}[2h])) by (kube_cluster_name, kube_namespace_name, kube_workload_type, kube_workload_name, kube_pod_name)) / 7200.000000`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), ) diff --git a/internal/infra/mcp/tools/tool_k8s_list_top_memory_consumed_container_test.go b/internal/infra/mcp/tools/tool_k8s_list_top_memory_consumed_container_test.go index 25e28ef..6cd7186 100644 --- a/internal/infra/mcp/tools/tool_k8s_list_top_memory_consumed_container_test.go +++ b/internal/infra/mcp/tools/tool_k8s_list_top_memory_consumed_container_test.go @@ -61,7 +61,7 @@ var _ = Describe("KubernetesListTopMemoryConsumedContainer Tool", func() { }, sysdig.GetQueryV1Params{ Query: `topk(20, sum by (kube_cluster_name, kube_namespace_name, kube_workload_type, kube_workload_name, container_label_io_kubernetes_container_name) (sysdig_container_memory_used_bytes))`, - Limit: toPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), Entry(nil, @@ -78,7 +78,7 @@ var _ = Describe("KubernetesListTopMemoryConsumedContainer Tool", func() { }, sysdig.GetQueryV1Params{ Query: `topk(10, sum by (kube_cluster_name, kube_namespace_name, kube_workload_type, kube_workload_name, container_label_io_kubernetes_container_name) (sysdig_container_memory_used_bytes{kube_cluster_name="prod", kube_namespace_name="default"}))`, - Limit: toPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -97,13 +97,9 @@ var _ = Describe("KubernetesListTopMemoryConsumedContainer Tool", func() { }, sysdig.GetQueryV1Params{ Query: `topk(5, sum by (kube_cluster_name, kube_namespace_name, kube_workload_type, kube_workload_name, container_label_io_kubernetes_container_name) (sysdig_container_memory_used_bytes{kube_cluster_name="prod", kube_namespace_name="default", kube_workload_type="deployment", kube_workload_name="api"}))`, - Limit: toPtr(sysdig.LimitQuery(5)), + Limit: new(sysdig.LimitQuery(5)), }, ), ) }) }) - -func toPtr[T any](v T) *T { - return &v -} diff --git a/internal/infra/mcp/tools/tool_k8s_list_top_memory_consumed_workload_test.go b/internal/infra/mcp/tools/tool_k8s_list_top_memory_consumed_workload_test.go index 7ddefb3..8c7e94d 100644 --- a/internal/infra/mcp/tools/tool_k8s_list_top_memory_consumed_workload_test.go +++ b/internal/infra/mcp/tools/tool_k8s_list_top_memory_consumed_workload_test.go @@ -61,7 +61,7 @@ var _ = Describe("KubernetesListTopMemoryConsumedWorkload Tool", func() { }, sysdig.GetQueryV1Params{ Query: `topk(20, sum by (kube_cluster_name, kube_namespace_name, kube_workload_type, kube_workload_name) (sysdig_container_memory_used_bytes))`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), Entry(nil, @@ -74,7 +74,7 @@ var _ = Describe("KubernetesListTopMemoryConsumedWorkload Tool", func() { }, sysdig.GetQueryV1Params{ Query: `topk(10, sum by (kube_cluster_name, kube_namespace_name, kube_workload_type, kube_workload_name) (sysdig_container_memory_used_bytes))`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -87,7 +87,7 @@ var _ = Describe("KubernetesListTopMemoryConsumedWorkload Tool", func() { }, sysdig.GetQueryV1Params{ Query: `topk(20, sum by (kube_cluster_name, kube_namespace_name, kube_workload_type, kube_workload_name) (sysdig_container_memory_used_bytes{kube_cluster_name="my_cluster"}))`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), Entry(nil, @@ -100,7 +100,7 @@ var _ = Describe("KubernetesListTopMemoryConsumedWorkload Tool", func() { }, sysdig.GetQueryV1Params{ Query: `topk(20, sum by (kube_cluster_name, kube_namespace_name, kube_workload_type, kube_workload_name) (sysdig_container_memory_used_bytes{kube_cluster_name="my_cluster",kube_namespace_name="my_namespace"}))`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), Entry(nil, @@ -119,7 +119,7 @@ var _ = Describe("KubernetesListTopMemoryConsumedWorkload Tool", func() { }, sysdig.GetQueryV1Params{ Query: `topk(5, sum by (kube_cluster_name, kube_namespace_name, kube_workload_type, kube_workload_name) (sysdig_container_memory_used_bytes{kube_cluster_name="my_cluster",kube_namespace_name="my_namespace",kube_workload_type="deployment",kube_workload_name="my_workload"}))`, - Limit: asPtr(sysdig.LimitQuery(5)), + Limit: new(sysdig.LimitQuery(5)), }, ), ) diff --git a/internal/infra/mcp/tools/tool_k8s_list_top_network_errors_in_pods_test.go b/internal/infra/mcp/tools/tool_k8s_list_top_network_errors_in_pods_test.go index 14eb200..24aa986 100644 --- a/internal/infra/mcp/tools/tool_k8s_list_top_network_errors_in_pods_test.go +++ b/internal/infra/mcp/tools/tool_k8s_list_top_network_errors_in_pods_test.go @@ -63,7 +63,7 @@ var _ = Describe("KubernetesListTopNetworkErrorsInPods Tool", func() { }, sysdig.GetQueryV1Params{ Query: `topk(20,sum(sum_over_time(sysdig_container_net_error_count{}[1h])) by (kube_cluster_name, kube_namespace_name, kube_workload_type, kube_workload_name, kube_pod_name)) / 3600.000000`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), Entry("with custom params", @@ -81,7 +81,7 @@ var _ = Describe("KubernetesListTopNetworkErrorsInPods Tool", func() { }, sysdig.GetQueryV1Params{ Query: `topk(5,sum(sum_over_time(sysdig_container_net_error_count{kube_cluster_name=~"prod-cluster",kube_namespace_name="backend"}[30m])) by (kube_cluster_name, kube_namespace_name, kube_workload_type, kube_workload_name, kube_pod_name)) / 1800.000000`, - Limit: asPtr(sysdig.LimitQuery(5)), + Limit: new(sysdig.LimitQuery(5)), }, ), Entry("with all params", @@ -101,7 +101,7 @@ var _ = Describe("KubernetesListTopNetworkErrorsInPods Tool", func() { }, sysdig.GetQueryV1Params{ Query: `topk(10,sum(sum_over_time(sysdig_container_net_error_count{kube_cluster_name=~"dev",kube_namespace_name="default",kube_workload_type="deployment",kube_workload_name="api"}[2h])) by (kube_cluster_name, kube_namespace_name, kube_workload_type, kube_workload_name, kube_pod_name)) / 7200.000000`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), ) diff --git a/internal/infra/mcp/tools/tool_k8s_list_underutilized_pods_cpu_quota_test.go b/internal/infra/mcp/tools/tool_k8s_list_underutilized_pods_cpu_quota_test.go index 2e1956e..4d9e702 100644 --- a/internal/infra/mcp/tools/tool_k8s_list_underutilized_pods_cpu_quota_test.go +++ b/internal/infra/mcp/tools/tool_k8s_list_underutilized_pods_cpu_quota_test.go @@ -61,7 +61,7 @@ var _ = Describe("KubernetesListUnderutilizedPodsCPUQuota Tool", func() { }, sysdig.GetQueryV1Params{ Query: `sum by (kube_cluster_name, kube_namespace_name, kube_pod_name)(sysdig_container_cpu_cores_used) / (sum by (kube_cluster_name, kube_namespace_name, kube_pod_name)(sysdig_container_cpu_cores_quota_limit) > 0) < 0.25`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -74,7 +74,7 @@ var _ = Describe("KubernetesListUnderutilizedPodsCPUQuota Tool", func() { }, sysdig.GetQueryV1Params{ Query: `sum by (kube_cluster_name, kube_namespace_name, kube_pod_name)(sysdig_container_cpu_cores_used) / (sum by (kube_cluster_name, kube_namespace_name, kube_pod_name)(sysdig_container_cpu_cores_quota_limit) > 0) < 0.25`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), Entry(nil, @@ -87,7 +87,7 @@ var _ = Describe("KubernetesListUnderutilizedPodsCPUQuota Tool", func() { }, sysdig.GetQueryV1Params{ Query: `sum by (kube_cluster_name, kube_namespace_name, kube_pod_name)(sysdig_container_cpu_cores_used{kube_cluster_name="my_cluster"}) / (sum by (kube_cluster_name, kube_namespace_name, kube_pod_name)(sysdig_container_cpu_cores_quota_limit{kube_cluster_name="my_cluster"}) > 0) < 0.25`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -100,7 +100,7 @@ var _ = Describe("KubernetesListUnderutilizedPodsCPUQuota Tool", func() { }, sysdig.GetQueryV1Params{ Query: `sum by (kube_cluster_name, kube_namespace_name, kube_pod_name)(sysdig_container_cpu_cores_used{kube_namespace_name="my_namespace"}) / (sum by (kube_cluster_name, kube_namespace_name, kube_pod_name)(sysdig_container_cpu_cores_quota_limit{kube_namespace_name="my_namespace"}) > 0) < 0.25`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -113,7 +113,7 @@ var _ = Describe("KubernetesListUnderutilizedPodsCPUQuota Tool", func() { }, sysdig.GetQueryV1Params{ Query: `sum by (kube_cluster_name, kube_namespace_name, kube_pod_name)(sysdig_container_cpu_cores_used{kube_cluster_name="my_cluster",kube_namespace_name="my_namespace"}) / (sum by (kube_cluster_name, kube_namespace_name, kube_pod_name)(sysdig_container_cpu_cores_quota_limit{kube_cluster_name="my_cluster",kube_namespace_name="my_namespace"}) > 0) < 0.25`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), ) diff --git a/internal/infra/mcp/tools/tool_k8s_list_underutilized_pods_memory_quota_test.go b/internal/infra/mcp/tools/tool_k8s_list_underutilized_pods_memory_quota_test.go index 542f8a9..91f55ff 100644 --- a/internal/infra/mcp/tools/tool_k8s_list_underutilized_pods_memory_quota_test.go +++ b/internal/infra/mcp/tools/tool_k8s_list_underutilized_pods_memory_quota_test.go @@ -61,7 +61,7 @@ var _ = Describe("KubernetesListUnderutilizedPodsMemoryQuota Tool", func() { }, sysdig.GetQueryV1Params{ Query: `sum by (kube_cluster_name, kube_namespace_name, kube_pod_name)(sysdig_container_memory_used_bytes) / (sum by (kube_cluster_name, kube_namespace_name, kube_pod_name)(sysdig_container_memory_limit_bytes) > 0) < 0.25`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -78,7 +78,7 @@ var _ = Describe("KubernetesListUnderutilizedPodsMemoryQuota Tool", func() { }, sysdig.GetQueryV1Params{ Query: `sum by (kube_cluster_name, kube_namespace_name, kube_pod_name)(sysdig_container_memory_used_bytes{kube_cluster_name="test-cluster",kube_namespace_name="test-namespace"}) / (sum by (kube_cluster_name, kube_namespace_name, kube_pod_name)(sysdig_container_memory_limit_bytes{kube_cluster_name="test-cluster",kube_namespace_name="test-namespace"}) > 0) < 0.25`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), ) diff --git a/internal/infra/mcp/tools/tool_k8s_list_workloads_test.go b/internal/infra/mcp/tools/tool_k8s_list_workloads_test.go index c8d27af..7e49679 100644 --- a/internal/infra/mcp/tools/tool_k8s_list_workloads_test.go +++ b/internal/infra/mcp/tools/tool_k8s_list_workloads_test.go @@ -61,7 +61,7 @@ var _ = Describe("KubernetesListWorkloads Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_workload_status_desired`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -74,7 +74,7 @@ var _ = Describe("KubernetesListWorkloads Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_workload_status_ready`, - Limit: asPtr(sysdig.LimitQuery(20)), + Limit: new(sysdig.LimitQuery(20)), }, ), Entry(nil, @@ -87,7 +87,7 @@ var _ = Describe("KubernetesListWorkloads Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_workload_status_running{kube_cluster_name="my_cluster"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -100,7 +100,7 @@ var _ = Describe("KubernetesListWorkloads Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_workload_status_unavailable{kube_namespace_name="my_namespace"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -113,7 +113,7 @@ var _ = Describe("KubernetesListWorkloads Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_workload_status_desired{kube_workload_name="my_workload"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -126,7 +126,7 @@ var _ = Describe("KubernetesListWorkloads Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_workload_status_ready{kube_workload_type="deployment"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), Entry(nil, @@ -145,7 +145,7 @@ var _ = Describe("KubernetesListWorkloads Tool", func() { }, sysdig.GetQueryV1Params{ Query: `kube_workload_status_running{kube_cluster_name="my_cluster",kube_namespace_name="my_namespace",kube_workload_name="my_workload",kube_workload_type="statefulset"}`, - Limit: asPtr(sysdig.LimitQuery(10)), + Limit: new(sysdig.LimitQuery(10)), }, ), ) diff --git a/internal/infra/mcp/tools/tool_list_runtime_events.go b/internal/infra/mcp/tools/tool_list_runtime_events.go index b11658a..a2a2e2e 100644 --- a/internal/infra/mcp/tools/tool_list_runtime_events.go +++ b/internal/infra/mcp/tools/tool_list_runtime_events.go @@ -40,7 +40,7 @@ func (h *ToolListRuntimeEvents) handle(ctx context.Context, request mcp.CallTool func toolRequestToEventsV1Params(request mcp.CallToolRequest, clock clock.Clock) *sysdig.GetEventsV1Params { params := &sysdig.GetEventsV1Params{ - Limit: toPtr(int32(request.GetInt("limit", 50))), + Limit: new(int32(request.GetInt("limit", 50))), } if cursor := request.GetString("cursor", ""); cursor != "" { @@ -49,13 +49,13 @@ func toolRequestToEventsV1Params(request mcp.CallToolRequest, clock clock.Clock) scopeHours := request.GetInt("scope_hours", 1) to := clock.Now() from := to.Add(-time.Duration(scopeHours) * time.Hour) - params.To = toPtr(to.UnixNano()) - params.From = toPtr(from.UnixNano()) + params.To = new(to.UnixNano()) + params.From = new(from.UnixNano()) } - params.Filter = toPtr(baseFilter) + params.Filter = new(baseFilter) if filterExpr := request.GetString("filter_expr", ""); filterExpr != "" { - params.Filter = toPtr(baseFilter + " and " + filterExpr) + params.Filter = new(baseFilter + " and " + filterExpr) } return params diff --git a/internal/infra/mcp/tools/utils.go b/internal/infra/mcp/tools/utils.go index 190a2d4..7a09045 100644 --- a/internal/infra/mcp/tools/utils.go +++ b/internal/infra/mcp/tools/utils.go @@ -52,7 +52,3 @@ func RequiredPermissionsFromTool(tool mcp.Tool) []string { return requiredPermissions } - -func toPtr[T any](val T) *T { - return &val -} diff --git a/justfile b/justfile index 16c34db..b2f8b21 100644 --- a/justfile +++ b/justfile @@ -3,7 +3,7 @@ default: @just --list # Run all checks -check: fmt check-vulnerabilities lint test +check: fmt fix check-vulnerabilities lint test # Check for vulnerabilities in the project check-vulnerabilities: @@ -13,6 +13,10 @@ check-vulnerabilities: lint: golangci-lint run +# Fix code +fix: + go fix ./... + # Format code fmt: gofumpt -w . diff --git a/package.nix b/package.nix index 4b647ef..a96c471 100644 --- a/package.nix +++ b/package.nix @@ -1,10 +1,10 @@ -{ buildGo124Module, versionCheckHook }: -buildGo124Module (finalAttrs: { +{ buildGo126Module, versionCheckHook }: +buildGo126Module (finalAttrs: { pname = "sysdig-mcp-server"; version = "1.0.2"; src = ./.; # This hash is automatically re-calculated with `just rehash-package-nix`. This is automatically called as well by `just update`. - vendorHash = "sha256-qMgFlDqzmtpxNOFCX9TsE4sjz0ZdvTJ5Q5IpA8lzG8g="; + vendorHash = "sha256-7UtPcgvKrpSIUGEgIOTH/BBG9PacBeVtSEsrfBtgWxs="; subPackages = [ "cmd/server"