Compare commits

...
1 Commits
Author SHA1 Message Date
ZacharyZhang-NY eb50367921 Move the canonical host to git.zacharyzhang.com and follow the module path
ci / backend (push) Failing after 3m25s
ci / mcp (push) Successful in 21s
ci / interface (push) Successful in 19s
ci / image (push) Failing after 1m5s
The GitHub account that hosted this repository is suspended, so the remote
is dead and the vanity import github.com/ZacharyZhang-NY/ely-eye/... no
longer resolves. The Go module path is that import, so it moves with the
host: git.zacharyzhang.com serves a go-import meta tag for the nested
ely-eye-mcp submodule, which go build and go get both need.

The installers read release assets from the host too, so their API and
download URLs move with it. The release workflow's -ldflags symbol path is
the module path, so it moves as well; a build stamped with the new path
prints the stamped version.
2026-10-10 11:26:19 -04:00
28 changed files with 44 additions and 41 deletions

No files matched your search

+1 -1
View File
@@ -37,7 +37,7 @@ jobs:
version="${GITHUB_REF_NAME#mcp-}" version="${GITHUB_REF_NAME#mcp-}"
binary="ely-eye-mcp" binary="ely-eye-mcp"
if [ "$GOOS" = "windows" ]; then binary="ely-eye-mcp.exe"; fi if [ "$GOOS" = "windows" ]; then binary="ely-eye-mcp.exe"; fi
ldflags="-s -w -X github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/cli.version=${version}" ldflags="-s -w -X git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/cli.version=${version}"
mkdir -p dist mkdir -p dist
go build -trimpath -ldflags "$ldflags" -o "dist/${binary}" ./cmd/ely-eye-mcp go build -trimpath -ldflags "$ldflags" -o "dist/${binary}" ./cmd/ely-eye-mcp
base="ely-eye-mcp_${GOOS}_${GOARCH}" base="ely-eye-mcp_${GOOS}_${GOARCH}"
+4 -1
View File
@@ -70,7 +70,10 @@ go run ./cmd/ely-eye-mcp server --ely-eye-home /path/to/.ely_eye
## Releases ## Releases
Pushing a `mcp-v*` tag runs `.github/workflows/mcp-release.yml`, which cross-compiles the pure-Go server (CGO disabled) for Linux, macOS, and Windows on amd64 and arm64, then publishes the archives with a `SHA256SUMS` manifest to a GitHub Release. The installers consume those assets. Pushing a `mcp-v*` tag runs `.github/workflows/mcp-release.yml`, which Gitea Actions
picks up, cross-compiles the pure-Go server (CGO disabled) for Linux, macOS, and
Windows on amd64 and arm64, then publishes the archives with a `SHA256SUMS`
manifest to a release on git.zacharyzhang.com. The installers consume those assets.
## Security posture ## Security posture
+1 -1
View File
@@ -5,7 +5,7 @@ import (
"fmt" "fmt"
"os" "os"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/cli" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/cli"
) )
func main() { func main() {
+1 -1
View File
@@ -1,4 +1,4 @@
module github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp module git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp
go 1.25.0 go 1.25.0
+3 -3
View File
@@ -55,7 +55,7 @@ function Get-Platform {
function Resolve-Version { function Resolve-Version {
if ($Version) { return $Version } if ($Version) { return $Version }
try { try {
$releases = Invoke-RestMethod -Uri "https://api.github.com/repos/$Repo/releases" -Headers @{ "User-Agent" = "ely-eye-mcp-installer" } $releases = Invoke-RestMethod -Uri "https://git.zacharyzhang.com/api/v1/repos/$Repo/releases" -Headers @{ "User-Agent" = "ely-eye-mcp-installer" }
} }
catch { return "" } catch { return "" }
$match = $releases | Where-Object { $_.tag_name -like "mcp-*" } | Select-Object -First 1 $match = $releases | Where-Object { $_.tag_name -like "mcp-*" } | Select-Object -First 1
@@ -79,8 +79,8 @@ function Build-FromSource {
function Download-Binary([string]$Tag) { function Download-Binary([string]$Tag) {
$platform = Get-Platform $platform = Get-Platform
$asset = "ely-eye-mcp_$platform.zip" $asset = "ely-eye-mcp_$platform.zip"
$url = "https://github.com/$Repo/releases/download/$Tag/$asset" $url = "https://git.zacharyzhang.com/$Repo/releases/download/$Tag/$asset"
$sumsUrl = "https://github.com/$Repo/releases/download/$Tag/ely-eye-mcp_SHA256SUMS.txt" $sumsUrl = "https://git.zacharyzhang.com/$Repo/releases/download/$Tag/ely-eye-mcp_SHA256SUMS.txt"
$tmp = Join-Path ([IO.Path]::GetTempPath()) ("ely-eye-mcp-" + [Guid]::NewGuid().ToString("N")) $tmp = Join-Path ([IO.Path]::GetTempPath()) ("ely-eye-mcp-" + [Guid]::NewGuid().ToString("N"))
New-Item -ItemType Directory -Force -Path $tmp | Out-Null New-Item -ItemType Directory -Force -Path $tmp | Out-Null
try { try {
+4 -4
View File
@@ -3,7 +3,7 @@ set -euo pipefail
# Ely-Eye MCP installer for Linux and macOS. # Ely-Eye MCP installer for Linux and macOS.
# #
# curl -fsSL https://raw.githubusercontent.com/ZacharyZhang-NY/ely-eye/main/ely-eye-mcp/install.sh | bash # curl -fsSL https://git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/raw/branch/main/ely-eye-mcp/install.sh | bash
# #
# By default it downloads a prebuilt, checksum-verified binary for this platform # By default it downloads a prebuilt, checksum-verified binary for this platform
# and needs no toolchain. Run with --method source from a repository checkout to # and needs no toolchain. Run with --method source from a repository checkout to
@@ -79,7 +79,7 @@ sha256() {
resolve_version() { resolve_version() {
if [[ -n "$VERSION" ]]; then echo "$VERSION"; return 0; fi if [[ -n "$VERSION" ]]; then echo "$VERSION"; return 0; fi
local body local body
body="$(curl -fsSL "https://api.github.com/repos/${REPO}/releases" 2>/dev/null)" || return 0 body="$(curl -fsSL "https://git.zacharyzhang.com/api/v1/repos/${REPO}/releases" 2>/dev/null)" || return 0
printf '%s\n' "$body" \ printf '%s\n' "$body" \
| grep -oE '"tag_name": *"mcp-[^"]*"' \ | grep -oE '"tag_name": *"mcp-[^"]*"' \
| head -n 1 \ | head -n 1 \
@@ -97,8 +97,8 @@ download_binary() {
local tag="$1" platform asset url sums tmp local tag="$1" platform asset url sums tmp
platform="$(detect_platform)" platform="$(detect_platform)"
asset="ely-eye-mcp_${platform}.tar.gz" asset="ely-eye-mcp_${platform}.tar.gz"
url="https://github.com/${REPO}/releases/download/${tag}/${asset}" url="https://git.zacharyzhang.com/${REPO}/releases/download/${tag}/${asset}"
sums="https://github.com/${REPO}/releases/download/${tag}/ely-eye-mcp_SHA256SUMS.txt" sums="https://git.zacharyzhang.com/${REPO}/releases/download/${tag}/ely-eye-mcp_SHA256SUMS.txt"
tmp="$(mktemp -d)" tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' RETURN trap 'rm -rf "$tmp"' RETURN
echo "Downloading $asset from release $tag." echo "Downloading $asset from release $tag."
+1 -1
View File
@@ -16,7 +16,7 @@ import (
"strings" "strings"
"time" "time"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
) )
const maxErrorBody = 4096 const maxErrorBody = 4096
+4 -4
View File
@@ -8,10 +8,10 @@ import (
"fmt" "fmt"
"os" "os"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/mcpserver" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/mcpserver"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/setup" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/setup"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/store" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/store"
) )
// version is stamped at release build time via -ldflags -X. The default is the // version is stamped at release build time via -ldflags -X. The default is the
+1 -1
View File
@@ -7,7 +7,7 @@ import (
"strings" "strings"
"unicode/utf8" "unicode/utf8"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
) )
var profileBudgets = map[string]int64{ var profileBudgets = map[string]int64{
+1 -1
View File
@@ -4,7 +4,7 @@ import (
"context" "context"
"strings" "strings"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
"github.com/modelcontextprotocol/go-sdk/mcp" "github.com/modelcontextprotocol/go-sdk/mcp"
) )
@@ -8,7 +8,7 @@ import (
"strings" "strings"
"testing" "testing"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
) )
const storeCardBody = `{"schema_version":11,"atoms":3,"sources":3,"modalities":{"text":2,"image":1}, const storeCardBody = `{"schema_version":11,"atoms":3,"sources":3,"modalities":{"text":2,"image":1},
@@ -4,7 +4,7 @@ import (
"context" "context"
"errors" "errors"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
"github.com/modelcontextprotocol/go-sdk/mcp" "github.com/modelcontextprotocol/go-sdk/mcp"
) )
@@ -9,7 +9,7 @@ import (
"strings" "strings"
"testing" "testing"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
) )
func directoryServer(t *testing.T, body string, seen *[]string) *httptest.Server { func directoryServer(t *testing.T, body string, seen *[]string) *httptest.Server {
@@ -4,7 +4,7 @@ import (
"context" "context"
"errors" "errors"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
"github.com/modelcontextprotocol/go-sdk/mcp" "github.com/modelcontextprotocol/go-sdk/mcp"
) )
@@ -7,7 +7,7 @@ import (
"strings" "strings"
"testing" "testing"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
) )
const manifestBody = `{"cartridge_id":"home_1","name":"home","created_at":"2026-05-01T12:00:00Z",` + const manifestBody = `{"cartridge_id":"home_1","name":"home","created_at":"2026-05-01T12:00:00Z",` +
@@ -8,7 +8,7 @@ import (
"strings" "strings"
"testing" "testing"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
) )
func searchTestServer(t *testing.T, recorded *map[string]any) *httptest.Server { func searchTestServer(t *testing.T, recorded *map[string]any) *httptest.Server {
+3 -3
View File
@@ -8,9 +8,9 @@ import (
"path/filepath" "path/filepath"
"strings" "strings"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/store" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/store"
"github.com/modelcontextprotocol/go-sdk/mcp" "github.com/modelcontextprotocol/go-sdk/mcp"
) )
+1 -1
View File
@@ -3,7 +3,7 @@ package mcpserver
import ( import (
"context" "context"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
"github.com/modelcontextprotocol/go-sdk/mcp" "github.com/modelcontextprotocol/go-sdk/mcp"
) )
@@ -6,7 +6,7 @@ import (
"net/http/httptest" "net/http/httptest"
"testing" "testing"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
) )
// askingServer records the path and query string of every request so a test can // askingServer records the path and query string of every request so a test can
+3 -3
View File
@@ -4,9 +4,9 @@ import (
"context" "context"
"errors" "errors"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/contextpack" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/contextpack"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
"github.com/modelcontextprotocol/go-sdk/mcp" "github.com/modelcontextprotocol/go-sdk/mcp"
) )
@@ -4,7 +4,7 @@ import (
"context" "context"
"errors" "errors"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
"github.com/modelcontextprotocol/go-sdk/mcp" "github.com/modelcontextprotocol/go-sdk/mcp"
) )
@@ -9,7 +9,7 @@ import (
"strings" "strings"
"testing" "testing"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/apiclient"
) )
func recordingServer(t *testing.T, status int, body string, seen *[]string) *httptest.Server { func recordingServer(t *testing.T, status int, body string, seen *[]string) *httptest.Server {
+1 -1
View File
@@ -9,7 +9,7 @@ import (
"path/filepath" "path/filepath"
"strings" "strings"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config"
) )
type Options struct { type Options struct {
+1 -1
View File
@@ -6,7 +6,7 @@ import (
"errors" "errors"
"strings" "strings"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
) )
func (s *Store) FetchAtom(ctx context.Context, atomID string) (domain.Atom, error) { func (s *Store) FetchAtom(ctx context.Context, atomID string) (domain.Atom, error) {
+1 -1
View File
@@ -8,7 +8,7 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
) )
func (s *Store) ListCartridges(ctx context.Context, limit int) ([]domain.Cartridge, error) { func (s *Store) ListCartridges(ctx context.Context, limit int) ([]domain.Cartridge, error) {
+1 -1
View File
@@ -11,7 +11,7 @@ import (
"strconv" "strconv"
"strings" "strings"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
) )
func (s *Store) evalProofsRoot() string { func (s *Store) evalProofsRoot() string {
+1 -1
View File
@@ -9,7 +9,7 @@ import (
"sort" "sort"
"time" "time"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
) )
type proofDir struct { type proofDir struct {
+2 -2
View File
@@ -7,8 +7,8 @@ import (
"net/url" "net/url"
"path/filepath" "path/filepath"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/config"
"github.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain" "git.zacharyzhang.com/ZacharyZhang-NY/ely-eye/ely-eye-mcp/internal/domain"
_ "modernc.org/sqlite" _ "modernc.org/sqlite"
) )