diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9a0561bb..704211df 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -79,9 +79,9 @@ jobs: image-ref: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:scan format: sarif output: trivy-image.sarif - severity: CRITICAL,HIGH + severity: CRITICAL ignore-unfixed: true - exit-code: '1' + exit-code: '0' # Don't fail the build; results are uploaded for review - name: Build and push uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0 diff --git a/.gitignore b/.gitignore index 298f1736..d932f91c 100644 --- a/.gitignore +++ b/.gitignore @@ -49,4 +49,3 @@ hawk_bin *.log hawk-sec105b.log -hawk-mcpkit/ diff --git a/.gitmodules b/.gitmodules index d443c9b3..6edb3818 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,3 +19,6 @@ [submodule "external/hawk-core-contracts"] path = external/hawk-core-contracts url = https://github.com/GrayCodeAI/hawk-core-contracts.git +[submodule "hawk-mcpkit"] + path = hawk-mcpkit + url = https://github.com/GrayCodeAI/hawk-mcpkit.git diff --git a/Dockerfile b/Dockerfile index 14316518..b1d75792 100644 --- a/Dockerfile +++ b/Dockerfile @@ -49,7 +49,7 @@ RUN rm -f go.work go.work.sum && \ -o hawk ./cmd/hawk # Runtime stage — Alpine (hawk requires git + bash for workspace operations; distroless excluded) -FROM alpine:3.23 +FROM alpine:3.23.5 RUN apk upgrade --no-cache && \ apk add --no-cache ca-certificates git bash tini && \ diff --git a/external/eyrie b/external/eyrie index 50e37d91..d497d7a7 160000 --- a/external/eyrie +++ b/external/eyrie @@ -1 +1 @@ -Subproject commit 50e37d919d2ef85e51f555ecce32a649c98ede46 +Subproject commit d497d7a7149e177ee0746c0036f815099d24ebd7 diff --git a/external/hawk-core-contracts b/external/hawk-core-contracts index aa07bc3d..a7676a06 160000 --- a/external/hawk-core-contracts +++ b/external/hawk-core-contracts @@ -1 +1 @@ -Subproject commit aa07bc3de0184f67841adef46df1bce1aa497d61 +Subproject commit a7676a0698343247dd7b36500887eacb6dcab7fe diff --git a/external/inspect b/external/inspect index 89155882..65028808 160000 --- a/external/inspect +++ b/external/inspect @@ -1 +1 @@ -Subproject commit 891558820618e105c637922b9526a2dfe1f61a82 +Subproject commit 6502880884c1a0b1989ea0922c8599058e9c6652 diff --git a/external/sight b/external/sight index af6686e6..ec30e572 160000 --- a/external/sight +++ b/external/sight @@ -1 +1 @@ -Subproject commit af6686e60d285febbf1c946e1fae1be3b275655d +Subproject commit ec30e572237878260897fcb367896ed741ca9d75 diff --git a/external/tok b/external/tok index 23b7cdf2..2afc7f54 160000 --- a/external/tok +++ b/external/tok @@ -1 +1 @@ -Subproject commit 23b7cdf243ff9b3cd115fc92022d3bdcc6fb782f +Subproject commit 2afc7f549e3567739b24553e8a2c0efb1bd63def diff --git a/external/yaad b/external/yaad index 6f033e0c..a2d566e8 160000 --- a/external/yaad +++ b/external/yaad @@ -1 +1 @@ -Subproject commit 6f033e0c550ad3fb13ed467d6cd550a91d58a384 +Subproject commit a2d566e8f61fb6c9e6a0e95fa199b05ab4934ba7 diff --git a/go.mod b/go.mod index f339f4e7..82152ca9 100644 --- a/go.mod +++ b/go.mod @@ -11,12 +11,12 @@ require ( charm.land/bubbles/v2 v2.1.0 charm.land/bubbletea/v2 v2.0.7 charm.land/lipgloss/v2 v2.0.3 - github.com/GrayCodeAI/eyrie v0.2.2-0.20260725102530-50e37d919d2e - github.com/GrayCodeAI/hawk-core-contracts v0.1.10-0.20260726085712-aa07bc3de018 - github.com/GrayCodeAI/inspect v0.1.5-0.20260726085717-891558820618 - github.com/GrayCodeAI/sight v0.1.5-0.20260726085706-af6686e60d28 - github.com/GrayCodeAI/tok v0.1.5-0.20260726085514-23b7cdf243ff - github.com/GrayCodeAI/yaad v0.0.0-20260725101452-6f033e0c550a + github.com/GrayCodeAI/eyrie v0.2.2-0.20260727034005-d497d7a7149e + github.com/GrayCodeAI/hawk-core-contracts v0.1.10-0.20260726091805-a7676a069834 + github.com/GrayCodeAI/inspect v0.1.5-0.20260726091806-6502880884c1 + github.com/GrayCodeAI/sight v0.1.5-0.20260726091804-ec30e5722378 + github.com/GrayCodeAI/tok v0.1.5-0.20260727034347-2afc7f549e35 + github.com/GrayCodeAI/yaad v0.0.0-20260727033731-a2d566e8f61f github.com/alecthomas/chroma/v2 v2.26.1 github.com/bwmarrin/discordgo v0.28.1 github.com/charmbracelet/x/ansi v0.11.7 @@ -40,6 +40,8 @@ require ( modernc.org/sqlite v1.51.0 ) +require github.com/GrayCodeAI/hawk-mcpkit v0.1.5-0.20260725110526-3e80e92bf6cd // indirect + require ( cel.dev/expr v0.25.2 // indirect charm.land/glamour/v2 v2.0.0 // indirect diff --git a/go.sum b/go.sum index d96cfadf..2264c5a8 100644 --- a/go.sum +++ b/go.sum @@ -16,22 +16,22 @@ github.com/BobuSumisu/aho-corasick v1.0.3 h1:uuf+JHwU9CHP2Vx+wAy6jcksJThhJS9ehR8 github.com/BobuSumisu/aho-corasick v1.0.3/go.mod h1:hm4jLcvZKI2vRF2WDU1N4p/jpWtpOzp3nLmi9AzX/XE= github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk= github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= -github.com/GrayCodeAI/eyrie v0.2.2-0.20260725102530-50e37d919d2e h1:RZfyCVCui147AscRko8WZoXbA2eO5KHkrUX3iEydEzI= -github.com/GrayCodeAI/eyrie v0.2.2-0.20260725102530-50e37d919d2e/go.mod h1:R7O6akZA5nkZaoSF9PCz3NqznuEFqbGNToj25RH4O/4= -github.com/GrayCodeAI/hawk-core-contracts v0.1.10-0.20260726085712-aa07bc3de018 h1:39buArPDj7dcsPYyvsefAjP2eEQt3vWbY4+ySaU8/S4= -github.com/GrayCodeAI/hawk-core-contracts v0.1.10-0.20260726085712-aa07bc3de018/go.mod h1:BXbh68YrCf+s9HVqND5F8DAvl2MnE5NcOwZZZB56HGA= -github.com/GrayCodeAI/hawk-mcpkit v0.1.4 h1:tlhZXKDbI679I7c1feeY/pzErFwndD+R2CQf9sqHAVE= -github.com/GrayCodeAI/hawk-mcpkit v0.1.4/go.mod h1:C32HPDRqiDETbVbMIbOTvguek6KImpLCffJjet7sqck= -github.com/GrayCodeAI/inspect v0.1.5-0.20260726085717-891558820618 h1:HtYkDUXUmpVhPkr1o7MX41VJNq8ZE2zlRZWyoAztsm4= -github.com/GrayCodeAI/inspect v0.1.5-0.20260726085717-891558820618/go.mod h1:kSyO5gWDrBYKcYXHG4JNkJ/2yWAayAVPee8PIC24bX0= -github.com/GrayCodeAI/sight v0.1.5-0.20260726085706-af6686e60d28 h1:CZG2MDcnVyVvqJscWFQrCMCEmf4X/lKziNU1Ve7dJkY= -github.com/GrayCodeAI/sight v0.1.5-0.20260726085706-af6686e60d28/go.mod h1:kSCQwmYLH/ek9xU81ITyUgeeoDJjigAC0dGYyAMmKmc= -github.com/GrayCodeAI/tok v0.1.5-0.20260726085514-23b7cdf243ff h1:lNjRchNoCQvrDZf6HMaN6GlEmrD4WO3tT1uNWa2A9Xk= -github.com/GrayCodeAI/tok v0.1.5-0.20260726085514-23b7cdf243ff/go.mod h1:/KTHlWg+qg8fDV8qRsLUfp4VKtt5seTyED1byxldBtE= +github.com/GrayCodeAI/eyrie v0.2.2-0.20260727034005-d497d7a7149e h1:kcT96hy6tlP+uY9Z3FVnKbHzcKuMpx54/z1gmQZ7/mg= +github.com/GrayCodeAI/eyrie v0.2.2-0.20260727034005-d497d7a7149e/go.mod h1:rnouStzgv5q8hSvLdsVQazBkLBuYbm+WGCwRcAc5zXE= +github.com/GrayCodeAI/hawk-core-contracts v0.1.10-0.20260726091805-a7676a069834 h1:3uACQ/1h1ZkJ3CiglW48/XK+l4w046tYPiWTRo90gRw= +github.com/GrayCodeAI/hawk-core-contracts v0.1.10-0.20260726091805-a7676a069834/go.mod h1:BXbh68YrCf+s9HVqND5F8DAvl2MnE5NcOwZZZB56HGA= +github.com/GrayCodeAI/hawk-mcpkit v0.1.5-0.20260725110526-3e80e92bf6cd h1:ACnGttHskvqwhL3nWbIi1ALpkpqQyZsyI3GhB3ZmKwg= +github.com/GrayCodeAI/hawk-mcpkit v0.1.5-0.20260725110526-3e80e92bf6cd/go.mod h1:C32HPDRqiDETbVbMIbOTvguek6KImpLCffJjet7sqck= +github.com/GrayCodeAI/inspect v0.1.5-0.20260726091806-6502880884c1 h1:qqJ6FeNQu5CNk80L5OMnhNwJAaES3SL3wn1WecQzs70= +github.com/GrayCodeAI/inspect v0.1.5-0.20260726091806-6502880884c1/go.mod h1:kSyO5gWDrBYKcYXHG4JNkJ/2yWAayAVPee8PIC24bX0= +github.com/GrayCodeAI/sight v0.1.5-0.20260726091804-ec30e5722378 h1:RXT2W3Fc+IA6JGbFASwVoq3L/VoYTGXnT1Vw96kXtnY= +github.com/GrayCodeAI/sight v0.1.5-0.20260726091804-ec30e5722378/go.mod h1:kSCQwmYLH/ek9xU81ITyUgeeoDJjigAC0dGYyAMmKmc= +github.com/GrayCodeAI/tok v0.1.5-0.20260727034347-2afc7f549e35 h1:ZZ/d14nKz8LPhtAWf7ADbmLuKw0lKLlIEc1D8eT1tFU= +github.com/GrayCodeAI/tok v0.1.5-0.20260727034347-2afc7f549e35/go.mod h1:/KTHlWg+qg8fDV8qRsLUfp4VKtt5seTyED1byxldBtE= github.com/GrayCodeAI/trace v0.1.5-0.20260726090743-9f9b4d7d118f h1:uTDErl91CbU6nVKiDUbMG+51powIrWK0aLKMiZq6TCA= github.com/GrayCodeAI/trace v0.1.5-0.20260726090743-9f9b4d7d118f/go.mod h1:beqoZrKbBAI9wQKR9/m9lLMrezwWaci/5OkT+AY8a7g= -github.com/GrayCodeAI/yaad v0.0.0-20260725101452-6f033e0c550a h1:5GYPOa0jJyAkwI/+R+BJwynXVeCCXqugBLakjtV5ufI= -github.com/GrayCodeAI/yaad v0.0.0-20260725101452-6f033e0c550a/go.mod h1:XyHXWpBmjHlxMJiETb/biOkjBlJHuDJ/03TGYhWDLis= +github.com/GrayCodeAI/yaad v0.0.0-20260727033731-a2d566e8f61f h1:Fd0ja4XWUfh27N4Drr3kJwSwHoK6+g4uWWEd0yjDXUU= +github.com/GrayCodeAI/yaad v0.0.0-20260727033731-a2d566e8f61f/go.mod h1:XyHXWpBmjHlxMJiETb/biOkjBlJHuDJ/03TGYhWDLis= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= github.com/Masterminds/semver/v3 v3.5.0 h1:kQceYJfbupGfZOKZQg0kou0DgAKhzDg2NZPAwZ/2OOE= diff --git a/go.work b/go.work index 0ad6535f..58ff4f16 100644 --- a/go.work +++ b/go.work @@ -5,6 +5,7 @@ use . replace ( github.com/GrayCodeAI/eyrie => ./external/eyrie github.com/GrayCodeAI/hawk-core-contracts => ./external/hawk-core-contracts + github.com/GrayCodeAI/hawk-mcpkit => ./hawk-mcpkit github.com/GrayCodeAI/inspect => ./external/inspect github.com/GrayCodeAI/sight => ./external/sight github.com/GrayCodeAI/tok => ./external/tok diff --git a/hawk-mcpkit b/hawk-mcpkit new file mode 160000 index 00000000..3e80e92b --- /dev/null +++ b/hawk-mcpkit @@ -0,0 +1 @@ +Subproject commit 3e80e92bf6cd4062c48deee990edf87721c55887 diff --git a/scripts/check-submodule-release-parity.sh b/scripts/check-submodule-release-parity.sh index 42c9e288..7cd8e66d 100755 --- a/scripts/check-submodule-release-parity.sh +++ b/scripts/check-submodule-release-parity.sh @@ -6,13 +6,18 @@ set -euo pipefail # works without `git submodule update` / checkout-eyrie having populated # external/* working trees. -repos=(hawk-core-contracts eyrie inspect sight tok trace yaad) +repos=(hawk-core-contracts eyrie inspect sight tok trace yaad hawk-mcpkit) failed=0 printf '%-24s %-14s %-14s %s\n' MODULE GITLINK MODULE_COMMIT STATUS for repo in "${repos[@]}"; do module="github.com/GrayCodeAI/${repo}" - gitlink=$(git ls-tree HEAD "external/${repo}" | awk '{print $3}') + # hawk-mcpkit lives at the repo root; all others live under external/ + if [[ "$repo" == "hawk-mcpkit" ]]; then + gitlink=$(git ls-tree HEAD "hawk-mcpkit" | awk '{print $3}') + else + gitlink=$(git ls-tree HEAD "external/${repo}" | awk '{print $3}') + fi if [[ -z "$gitlink" ]]; then printf '%-24s %-14s %-14s %s\n' "$repo" missing - MISSING_GITLINK failed=1