Monorepo for Tangled tangled.org
11

Configure Feed

Select the types of activity you want to include in your feed.

cmd/zoekt-tnglserver: introduce zoekt

Signed-off-by: Seongmin Lee <git@boltless.me>

author
Seongmin Lee
date (Jun 26, 2026, 2:31 AM +0900) commit 8b692b87 parent 3f3b5523 change-id pxlvynok
+1045 -88
+157
cmd/zoekt-tngl-indexserver/index.go
··· 1 + package main 2 + 3 + import ( 4 + "context" 5 + "crypto/sha1" 6 + "encoding/json" 7 + "fmt" 8 + "io" 9 + "net/url" 10 + "os" 11 + "path/filepath" 12 + 13 + "github.com/bluesky-social/indigo/atproto/identity" 14 + "github.com/bluesky-social/indigo/atproto/syntax" 15 + indigoxrpc "github.com/bluesky-social/indigo/xrpc" 16 + "github.com/sourcegraph/zoekt" 17 + "tangled.org/core/api/tangled" 18 + ) 19 + 20 + // 1 MB; match https://sourcegraph.sourcegraph.com/r/github.com/sourcegraph/sourcegraph/-/blob/cmd/searcher/internal/search/store.go?L32 21 + const MaxFileSize = 1 << 20 22 + 23 + func gitIndex(ctx context.Context, cfg *Config, dir identity.Directory, req indexRequest) error { 24 + ctx, cancel := context.WithTimeout(ctx, cfg.IndexTimeout) 25 + defer cancel() 26 + 27 + repo, err := loadRepo(ctx, dir, req.Repo) 28 + if err != nil { 29 + return nil 30 + } 31 + repo.Branches = req.Branches 32 + 33 + gitDir, err := tmpGitDir(repo.Did.String()) 34 + if err != nil { 35 + return err 36 + } 37 + defer os.RemoveAll(gitDir) // best-effort cleanup 38 + 39 + if err := fetchRepo(ctx, gitDir, repo.CloneURL(), req.Branches); err != nil { 40 + return err 41 + } 42 + 43 + if err := indexRepo(ctx, cfg, gitDir, *repo); err != nil { 44 + return err 45 + } 46 + 47 + return nil 48 + } 49 + 50 + func loadRepo(ctx context.Context, dir identity.Directory, repoDID syntax.DID) (*Repo, error) { 51 + ident, err := dir.LookupDID(ctx, repoDID) 52 + if err != nil { 53 + return nil, err 54 + } 55 + 56 + knot := ident.PDSEndpoint() 57 + 58 + xrpcc := &indigoxrpc.Client{Host: knot} 59 + out, err := tangled.RepoDescribeRepo(ctx, xrpcc, repoDID.String()) 60 + if err != nil { 61 + return nil, err 62 + } 63 + 64 + return &Repo{ 65 + Did: repoDID, 66 + Owner: syntax.DID(out.OwnerDid), 67 + Slug: syntax.RecordKey(out.Rkey), 68 + Knot: knot, 69 + }, nil 70 + } 71 + 72 + func fetchRepo(ctx context.Context, gitDir, cloneUrl string, branches []zoekt.RepositoryBranch) error { 73 + // Create a repo to fetch into 74 + if err := executeCmd(ctx, 75 + "git", 76 + // use a random default branch. This is so that HEAD isn't a symref to a 77 + // branch that is indexed. For example if you are indexing 78 + // HEAD,master. Then HEAD would be pointing to master by default. 79 + "-c", "init.defaultBranch=nonExistentBranchBB0FOFCH32", 80 + "init", 81 + // we don't need a working copy 82 + "--bare", 83 + gitDir, 84 + ); err != nil { 85 + return err 86 + } 87 + 88 + fetchArgs := []string{ 89 + "-C", gitDir, 90 + "-c", "protocol.version=2", 91 + "fetch", "--depth=1", "--no-tags", 92 + } 93 + // Git's blob:limit filter excludes blobs whose size is >= the given limit, 94 + // while zoekt indexes files up to and including FileLimit bytes. 95 + fetchArgs = append(fetchArgs, fmt.Sprintf("--filter=blob:limit=%d", int64(MaxFileSize)+1)) 96 + 97 + fetchArgs = append(fetchArgs, cloneUrl) 98 + 99 + var commits []string 100 + for _, b := range branches { 101 + commits = append(commits, b.Version) 102 + } 103 + fetchArgs = append(fetchArgs, commits...) 104 + 105 + if err := executeCmd(ctx, "git", fetchArgs...); err != nil { 106 + return err 107 + } 108 + 109 + for _, b := range branches { 110 + ref := b.Name 111 + if ref != "HEAD" { 112 + ref = "refs/heads/" + ref 113 + } 114 + if err := executeCmd(ctx, "git", "-C", gitDir, "update-ref", ref, b.Version); err != nil { 115 + return fmt.Errorf("failed update-ref %s to %s: %w", ref, b.Version, err) 116 + } 117 + } 118 + 119 + return nil 120 + } 121 + 122 + func indexRepo(ctx context.Context, cfg *Config, gitDir string, repo Repo) error { 123 + executablePath, err := os.Executable() 124 + if err != nil { 125 + return err 126 + } 127 + 128 + repoJson, err := json.Marshal(repo) 129 + if err != nil { 130 + return err 131 + } 132 + 133 + args := []string{"index"} 134 + args = append(args, "-index-dir", cfg.IndexDir) 135 + args = append(args, "-appview-url", cfg.AppviewUrl) 136 + args = append(args, gitDir, string(repoJson)) 137 + if err := executeCmd(ctx, executablePath, args...); err != nil { 138 + return err 139 + } 140 + return nil 141 + } 142 + 143 + func tmpGitDir(name string) (string, error) { 144 + abs := url.QueryEscape(name) 145 + if len(abs) > 200 { 146 + h := sha1.New() 147 + _, _ = io.WriteString(h, abs) 148 + abs = abs[:200] + fmt.Sprintf("%x", h.Sum(nil))[:8] 149 + } 150 + dir := filepath.Join(os.TempDir(), abs+".git") 151 + if _, err := os.Stat(dir); err == nil { 152 + if err := os.RemoveAll(dir); err != nil { 153 + return "", err 154 + } 155 + } 156 + return dir, nil 157 + }
+306
cmd/zoekt-tngl-indexserver/main.go
··· 1 + // similar to zoekt-dynamic-indexserver, but targetting Tangled repos 2 + package main 3 + 4 + import ( 5 + "bytes" 6 + "context" 7 + "encoding/json" 8 + "errors" 9 + "fmt" 10 + "log" 11 + "net" 12 + "net/http" 13 + "os" 14 + "os/exec" 15 + "os/signal" 16 + "strconv" 17 + "syscall" 18 + "time" 19 + 20 + "github.com/bluesky-social/indigo/atproto/identity" 21 + "github.com/bluesky-social/indigo/atproto/syntax" 22 + "github.com/carlmjohnson/versioninfo" 23 + "github.com/sourcegraph/zoekt" 24 + "github.com/sourcegraph/zoekt/gitindex" 25 + "github.com/sourcegraph/zoekt/index" 26 + "github.com/urfave/cli/v3" 27 + ) 28 + 29 + func loggedRun(cmd *exec.Cmd) error { 30 + outBuf := &bytes.Buffer{} 31 + errBuf := &bytes.Buffer{} 32 + cmd.Stdout = outBuf 33 + cmd.Stderr = errBuf 34 + 35 + log.Printf("run %v", cmd.Args) 36 + if err := cmd.Run(); err != nil { 37 + log.Printf("command %s failed: %v\nOUT: %s\nERR: %s", 38 + cmd.Args, err, outBuf.String(), errBuf.String()) 39 + return fmt.Errorf("command %s failed: %v", cmd.Args, err) 40 + } 41 + 42 + return nil 43 + } 44 + 45 + // This function is declared as var so that we can stub it in test 46 + var executeCmd = func(ctx context.Context, name string, arg ...string) error { 47 + cmd := exec.CommandContext(ctx, name, arg...) 48 + cmd.Stdin = &bytes.Buffer{} 49 + err := loggedRun(cmd) 50 + 51 + return err 52 + } 53 + 54 + func main() { 55 + if err := run(os.Args); err != nil { 56 + log.Fatal(err) 57 + } 58 + } 59 + 60 + func run(args []string) error { 61 + ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM) 62 + defer cancel() 63 + 64 + app := cli.Command{ 65 + Name: "zoekt-tngl-indexserver", 66 + Usage: "tangled zoekt index server", 67 + Version: versioninfo.Short(), 68 + } 69 + app.Flags = []cli.Flag{ 70 + &cli.StringFlag{ 71 + Name: "index-dir", 72 + Usage: "directory holding index shards.", 73 + Required: true, 74 + Sources: cli.EnvVars("TANGLED_ZOEKT_INDEX_DIR"), 75 + }, 76 + &cli.StringFlag{ 77 + Name: "appview-url", 78 + Usage: "appview url. used when debugging", 79 + Value: "https://tangled.org", 80 + Sources: cli.EnvVars("TANGLED_ZOEKT_APPVIEW_URL"), 81 + }, 82 + } 83 + app.Commands = []*cli.Command{ 84 + { 85 + Name: "serve", 86 + Usage: "run the index server daemon", 87 + Action: runIndexServer, 88 + Flags: []cli.Flag{ 89 + &cli.StringFlag{ 90 + Name: "plc-url", 91 + Usage: "atproto PLC directory.", 92 + Value: "https://plc.directory", 93 + Sources: cli.EnvVars("TANGLED_ZOEKT_PLC_URL", "TANGLED_PLC_URL", "ATP_PLC_HOST"), 94 + }, 95 + &cli.DurationFlag{ 96 + Name: "index-timeout", 97 + Usage: "kill index job after this much time.", 98 + Value: time.Hour, 99 + Sources: cli.EnvVars("TANGLED_ZOEKT_INDEX_TIMEOUT"), 100 + }, 101 + &cli.IntFlag{ 102 + Name: "index-concurrency", 103 + Usage: "number of repositories to index concurrently.", 104 + Value: 4, 105 + Sources: cli.EnvVars("TANGLED_ZOEKT_INDEX_CONCURRENCY"), 106 + }, 107 + &cli.IntFlag{ 108 + Name: "index-queue-size", 109 + Usage: "max index queue size", 110 + Value: 100, 111 + Sources: cli.EnvVars("TANGLED_ZOEKT_INDEX_QUEUE_SIZE"), 112 + }, 113 + &cli.StringFlag{ 114 + Name: "listen", 115 + Usage: "listen on this address", 116 + Value: ":6060", 117 + Sources: cli.EnvVars("TANGLED_ZOEKT_SERVER_LISTEN"), 118 + }, 119 + }, 120 + }, 121 + { 122 + Name: "index", 123 + Usage: "manually index a git repository", 124 + Action: runIndex, 125 + Arguments: []cli.Argument{ 126 + &cli.StringArg{ 127 + Name: "git-dir", 128 + UsageText: "path to fetched git repository.", 129 + }, 130 + &cli.StringArg{ 131 + Name: "repo", 132 + UsageText: "json-encoded repository information", 133 + }, 134 + }, 135 + }, 136 + } 137 + 138 + return app.Run(ctx, args) 139 + } 140 + 141 + type Config struct { 142 + // IndexDir is the index directory to use. 143 + IndexDir string 144 + 145 + IndexTimeout time.Duration 146 + 147 + // IndexConcurrency is the number of repositories we index at once. 148 + IndexConcurrency int 149 + IndexQueueSize int 150 + 151 + PlcUrl string 152 + AppviewUrl string 153 + Listen string 154 + } 155 + 156 + func createMissingDirectories(cfg *Config) { 157 + for _, s := range []string{cfg.IndexDir} { 158 + if err := os.MkdirAll(s, 0o755); err != nil { 159 + log.Fatalf("MkdirAll %s: %v", s, err) 160 + } 161 + } 162 + } 163 + 164 + type Repo struct { 165 + Did syntax.DID // repo DID 166 + Owner syntax.DID 167 + Slug syntax.RecordKey 168 + Knot string // knot service url derived from #atproto_pds service endpoint 169 + Branches []zoekt.RepositoryBranch 170 + } 171 + 172 + func (r *Repo) CloneURL() string { 173 + return r.Knot + "/" + r.Did.String() 174 + } 175 + 176 + func runIndexServer(ctx context.Context, cmd *cli.Command) error { 177 + cfg := &Config{ 178 + IndexDir: cmd.String("index-dir"), 179 + IndexTimeout: cmd.Duration("index-timeout"), 180 + IndexConcurrency: cmd.Int("index-concurrency"), 181 + IndexQueueSize: cmd.Int("index-queue-size"), 182 + PlcUrl: cmd.String("plc-url"), 183 + AppviewUrl: cmd.String("appview-url"), 184 + Listen: cmd.String("listen"), 185 + } 186 + createMissingDirectories(cfg) 187 + 188 + server := NewIndexServer(cfg) 189 + go server.Run(ctx) 190 + 191 + <-ctx.Done() 192 + return ctx.Err() 193 + } 194 + 195 + // sub-process to index a fetched repository 196 + func runIndex(ctx context.Context, cmd *cli.Command) error { 197 + var ( 198 + indexDir = cmd.String("index-dir") 199 + appviewUrl = cmd.String("appview-url") 200 + ) 201 + 202 + gitDir := cmd.StringArg("git-dir") 203 + if gitDir == "" { 204 + return errors.New("git-dir is required.") 205 + } 206 + 207 + repoRaw := cmd.StringArg("repo") 208 + if repoRaw == "" { 209 + return errors.New("repo is required.") 210 + } 211 + 212 + var repo Repo 213 + if err := json.Unmarshal([]byte(repoRaw), &repo); err != nil { 214 + return fmt.Errorf("invalid repo: %w", err) 215 + } 216 + 217 + var branches []string 218 + for _, b := range repo.Branches { 219 + branches = append(branches, b.Name) 220 + } 221 + 222 + buildOpts := index.Options{} 223 + buildOpts.SetDefaults() 224 + 225 + buildOpts.IndexDir = indexDir 226 + 227 + buildOpts.ShardPrefixOverride = repo.Did.String() 228 + 229 + // Tangled templates 230 + webUrl := fmt.Sprintf("%s/%s", appviewUrl, repo.Did) 231 + buildOpts.RepositoryDescription.CommitURLTemplate = fmt.Sprintf("%s/commit/{{.Version}}", webUrl) 232 + buildOpts.RepositoryDescription.FileURLTemplate = fmt.Sprintf("%s/blob/{{.Version}}/{{.Path}}", webUrl) 233 + buildOpts.RepositoryDescription.LineFragmentTemplate = "#L{{.LineNumber}}" 234 + 235 + buildOpts.RepositoryDescription.Name = repo.Slug.String() 236 + buildOpts.RepositoryDescription.URL = webUrl 237 + buildOpts.RepositoryDescription.Metadata = map[string]string{ 238 + "foo": "bar", // for testing 239 + "did": repo.Did.String(), 240 + "owner": repo.Owner.String(), 241 + "knot": repo.Knot, 242 + } 243 + // buildOpts.RepositoryDescription.Source = gitDir // configured later in IndexGitRepo 244 + buildOpts.RepositoryDescription.Branches = nil 245 + buildOpts.RepositoryDescription.SubRepoMap = nil 246 + buildOpts.RepositoryDescription.RawConfig = map[string]string{ 247 + "priority": strconv.FormatFloat(0.0, 'g', -1, 64), 248 + "public": marshalBool(true), 249 + "fork": marshalBool(false), 250 + // Calculate repo rank based on the latest commit date. 251 + "latestCommitDate": marshalBool(true), 252 + } 253 + buildOpts.RepositoryDescription.Rank = 0 254 + // buildOpts.RepositoryDescription.IndexOptions = "" // configured later in IndexGitRepo 255 + // buildOpts.RepositoryDescription.LatestCommitDate = _ // configured later in IndexGitRepo 256 + buildOpts.RepositoryDescription.FileTombstones = nil 257 + 258 + gitOpts := gitindex.Options{ 259 + RepoDir: gitDir, 260 + Submodules: false, 261 + Incremental: true, 262 + AllowMissingBranch: false, 263 + RepoCacheDir: "", 264 + BuildOptions: buildOpts, 265 + BranchPrefix: "refs/heads/", 266 + Branches: branches, 267 + DeltaShardNumberFallbackThreshold: 0, 268 + } 269 + if _, err := gitindex.IndexGitRepo(gitOpts); err != nil { 270 + return err 271 + } 272 + return nil 273 + } 274 + 275 + func marshalBool(b bool) string { 276 + if b { 277 + return "1" 278 + } 279 + return "0" 280 + } 281 + 282 + func baseDir(plc string) identity.Directory { 283 + base := identity.BaseDirectory{ 284 + PLCURL: plc, 285 + HTTPClient: http.Client{ 286 + Timeout: time.Second * 10, 287 + Transport: &http.Transport{ 288 + Proxy: http.ProxyFromEnvironment, 289 + // would want this around 100ms for services doing lots of handle resolution. Impacts PLC connections as well, but not too bad. 290 + IdleConnTimeout: time.Millisecond * 1000, 291 + MaxIdleConns: 100, 292 + }, 293 + }, 294 + Resolver: net.Resolver{ 295 + Dial: func(ctx context.Context, network, address string) (net.Conn, error) { 296 + d := net.Dialer{Timeout: time.Second * 3} 297 + return d.DialContext(ctx, network, address) 298 + }, 299 + }, 300 + TryAuthoritativeDNS: true, 301 + // primary Bluesky PDS instance only supports HTTP resolution method 302 + SkipDNSDomainSuffixes: []string{".bsky.social"}, 303 + UserAgent: "indigo-identity/" + versioninfo.Short(), 304 + } 305 + return identity.NewCacheDirectory(&base, 250_000, time.Hour*24, time.Minute*2, time.Minute*5) 306 + }
+17
cmd/zoekt-tngl-indexserver/metrics.go
··· 1 + package main 2 + 3 + import ( 4 + "github.com/prometheus/client_golang/prometheus" 5 + "github.com/prometheus/client_golang/prometheus/promauto" 6 + ) 7 + 8 + // HTTP metrics 9 + var ( 10 + requestsTotal = promauto.NewCounterVec( 11 + prometheus.CounterOpts{ 12 + Name: "zoekt_dynamic_tangled_requests_total", 13 + Help: "Total number of HTTP requests by status code, method, and route.", 14 + }, 15 + []string{"method", "route", "code"}, 16 + ) 17 + )
+72
cmd/zoekt-tngl-indexserver/queue.go
··· 1 + package main 2 + 3 + import ( 4 + "sync" 5 + 6 + "github.com/bluesky-social/indigo/atproto/syntax" 7 + ) 8 + 9 + // deduplicating index work queue 10 + type Queue struct { 11 + mu sync.Mutex 12 + order []syntax.DID 13 + pending map[syntax.DID]indexRequest 14 + size int 15 + } 16 + 17 + func NewQueue(size int) *Queue { 18 + return &Queue{ 19 + pending: make(map[syntax.DID]indexRequest), 20 + size: size, 21 + } 22 + } 23 + 24 + func (q *Queue) Enqueue(req indexRequest) bool { 25 + q.mu.Lock() 26 + defer q.mu.Unlock() 27 + 28 + if _, exists := q.pending[req.Repo]; exists { 29 + q.pending[req.Repo] = req // replace payload, keep position 30 + return true 31 + } 32 + 33 + if len(q.order) >= q.size { 34 + return false // queue full 35 + } 36 + 37 + q.order = append(q.order, req.Repo) 38 + q.pending[req.Repo] = req 39 + return true 40 + } 41 + 42 + func (q *Queue) Pop() (indexRequest, bool) { 43 + q.mu.Lock() 44 + defer q.mu.Unlock() 45 + 46 + if len(q.order) == 0 { 47 + return indexRequest{}, false 48 + } 49 + 50 + did := q.order[0] 51 + q.order = q.order[1:] 52 + if len(q.order) == 0 { 53 + q.order = nil // release the backing array 54 + } 55 + 56 + req, ok := q.pending[did] 57 + delete(q.pending, did) 58 + return req, ok 59 + } 60 + 61 + func (q *Queue) Snapshot() []indexRequest { 62 + q.mu.Lock() 63 + defer q.mu.Unlock() 64 + 65 + out := make([]indexRequest, 0, len(q.order)) 66 + for _, did := range q.order { 67 + if req, ok := q.pending[did]; ok { 68 + out = append(out, req) 69 + } 70 + } 71 + return out 72 + }
+160
cmd/zoekt-tngl-indexserver/server.go
··· 1 + package main 2 + 3 + import ( 4 + "context" 5 + "encoding/json" 6 + "fmt" 7 + "log" 8 + "net/http" 9 + "strconv" 10 + "time" 11 + 12 + "github.com/bluesky-social/indigo/atproto/identity" 13 + "github.com/bluesky-social/indigo/atproto/syntax" 14 + "github.com/prometheus/client_golang/prometheus" 15 + "github.com/prometheus/client_golang/prometheus/promhttp" 16 + "github.com/sourcegraph/zoekt" 17 + ) 18 + 19 + type IndexServer struct { 20 + cfg *Config 21 + dir identity.Directory 22 + queue *Queue 23 + } 24 + 25 + func NewIndexServer(cfg *Config) *IndexServer { 26 + return &IndexServer{ 27 + cfg: cfg, 28 + dir: baseDir(cfg.PlcUrl), 29 + queue: NewQueue(cfg.IndexQueueSize), 30 + } 31 + } 32 + 33 + func (s *IndexServer) Run(ctx context.Context) { 34 + // // Start a goroutine which updates the queue with commits to index. 35 + // go func() { 36 + // }() 37 + 38 + for range s.cfg.IndexConcurrency { 39 + go s.processQueue(ctx) 40 + } 41 + 42 + mux := http.NewServeMux() 43 + mux.HandleFunc("/", s.handleHealth) 44 + mux.HandleFunc("/debug/metrics", s.handleMetrics) 45 + mux.HandleFunc("/debug/queue", s.handleDebugQueue) 46 + mux.HandleFunc("/admin/forceIndex", s.handleForceIndex) 47 + mux.HandleFunc("/admin/enqueueIndex", s.handleEnqueueIndex) 48 + if err := http.ListenAndServe(s.cfg.Listen, mux); err != nil { 49 + log.Fatal(err) 50 + } 51 + } 52 + 53 + func (s *IndexServer) handleHealth(w http.ResponseWriter, r *http.Request) { 54 + // Nothing to do. Just return 200 55 + } 56 + 57 + func (s *IndexServer) handleMetrics(w http.ResponseWriter, r *http.Request) { 58 + promhttp.Handler().ServeHTTP(w, r) 59 + } 60 + 61 + type indexRequest struct { 62 + Repo syntax.DID `json:"repo"` 63 + Branches []zoekt.RepositoryBranch `json:"branches"` 64 + } 65 + 66 + func (s *IndexServer) handleDebugQueue(w http.ResponseWriter, r *http.Request) { 67 + for _, req := range s.queue.Snapshot() { 68 + fmt.Fprintln(w, req.Repo) 69 + for _, b := range req.Branches { 70 + fmt.Fprintf(w, "\t%s:\t%s\n", b.Name, b.Version) 71 + } 72 + } 73 + } 74 + 75 + func (s *IndexServer) handleEnqueueIndex(w http.ResponseWriter, r *http.Request) { 76 + route := "enqueueIndex" 77 + dec := json.NewDecoder(r.Body) 78 + dec.DisallowUnknownFields() 79 + var req indexRequest 80 + if err := dec.Decode(&req); err != nil { 81 + log.Printf("Error decoding index request: %v", err) 82 + http.Error(w, "JSON parser error", http.StatusBadRequest) 83 + s.incrementRequestsTotal(r.Method, route, http.StatusBadRequest) 84 + return 85 + } 86 + 87 + if !s.queue.Enqueue(req) { 88 + // queue full: reject so the producer retries later 89 + http.Error(w, "index queue full", http.StatusServiceUnavailable) 90 + s.incrementRequestsTotal(r.Method, route, http.StatusServiceUnavailable) 91 + return 92 + } 93 + 94 + w.WriteHeader(http.StatusAccepted) 95 + s.incrementRequestsTotal(r.Method, route, http.StatusAccepted) 96 + } 97 + 98 + func (s *IndexServer) handleForceIndex(w http.ResponseWriter, r *http.Request) { 99 + route := "index" 100 + dec := json.NewDecoder(r.Body) 101 + dec.DisallowUnknownFields() 102 + var req indexRequest 103 + if err := dec.Decode(&req); err != nil { 104 + log.Printf("Error decoding index request: %v", err) 105 + http.Error(w, "JSON parser error", http.StatusBadRequest) 106 + return 107 + } 108 + 109 + if err := gitIndex(r.Context(), s.cfg, s.dir, req); err != nil { 110 + s.respondWithError(w, r.Method, route, err) 111 + return 112 + } 113 + 114 + w.Header().Set("Content-Type", "application/json") 115 + _ = json.NewEncoder(w).Encode(map[string]any{ 116 + "success": true, 117 + }) 118 + 119 + s.incrementRequestsTotal(r.Method, route, http.StatusOK) 120 + } 121 + 122 + func (s *IndexServer) respondWithError(w http.ResponseWriter, method, route string, err error) { 123 + responseCode := http.StatusInternalServerError 124 + 125 + log.Print(err) 126 + s.incrementRequestsTotal(method, route, responseCode) 127 + 128 + w.Header().Set("Content-Type", "application/json") 129 + w.WriteHeader(responseCode) 130 + response := map[string]any{ 131 + "Success": false, 132 + "Error": err.Error(), 133 + } 134 + 135 + _ = json.NewEncoder(w).Encode(response) 136 + } 137 + 138 + func (s *IndexServer) incrementRequestsTotal(method, route string, responseCode int) { 139 + requestsTotal.With(prometheus.Labels{"code": strconv.Itoa(responseCode), "method": method, "route": route}).Inc() 140 + } 141 + 142 + func (s *IndexServer) processQueue(ctx context.Context) { 143 + for { 144 + select { 145 + case <-ctx.Done(): 146 + return 147 + default: 148 + } 149 + 150 + req, ok := s.queue.Pop() 151 + if !ok { 152 + time.Sleep(time.Second) 153 + continue 154 + } 155 + 156 + if err := gitIndex(ctx, s.cfg, s.dir, req); err != nil { 157 + log.Printf("indexing repo %s failed: %v", req.Repo, err) 158 + } 159 + } 160 + }
+26
docker-compose.yml
··· 226 226 MIRROR_KNOT_USE_SSL: "true" 227 227 MIRROR_KNOT_SSRF: "true" 228 228 MIRROR_RESYNC_PARALLELISM: "4" 229 + MIRROR_SEARCH_ZOEKT_URL: https://zoekt.tngl.boltless.dev 229 230 volumes: 230 231 - knotmirror-data:/data 231 232 - ./localinfra/certs/root.crt:/usr/local/share/ca-certificates/caddy.crt:ro ··· 242 243 condition: service_started 243 244 knotmirror-tap: 244 245 condition: service_started 246 + networks: [tngl] 247 + 248 + zoekt-webserver: 249 + platform: linux/amd64 250 + image: ghcr.io/sourcegraph/zoekt:sha-893a523 251 + volumes: 252 + - zoekt-index:/data/index 253 + - ./localinfra/certs/root.crt:/etc/ssl/certs/caddy.crt:ro 254 + command: ["zoekt-webserver", "-index", "/data/index", "-pprof", "-rpc"] 255 + networks: [tngl] 256 + 257 + zoekt-tngl-indexserver: 258 + build: 259 + context: . 260 + dockerfile: localinfra/zoekt-tngl-indexserver.Dockerfile 261 + environment: 262 + TANGLED_ZOEKT_INDEX_DIR: /data/index 263 + TANGLED_ZOEKT_PLC_URL: https://plc.tngl.boltless.dev 264 + TANGLED_ZOEKT_APPVIEW_URL: http://127.0.0.1:3000 265 + volumes: 266 + - zoekt-index:/data/index 267 + - ./localinfra/certs/root.crt:/etc/ssl/certs/caddy.crt:ro 268 + command: ["zoekt-tngl-indexserver", "serve"] 245 269 networks: [tngl] 246 270 247 271 tailwind: ··· 316 340 - spindle.tngl.boltless.dev 317 341 - tngl.boltless.dev 318 342 - mirror.tngl.boltless.dev 343 + - zoekt.tngl.boltless.dev 319 344 320 345 volumes: 321 346 caddy-data: ··· 325 350 knot-data: 326 351 knot-ssh-keys: 327 352 knotmirror-data: 353 + zoekt-index: 328 354 spindle-data: 329 355 spindle-logs: 330 356 init-state:
+4 -4
flake.lock
··· 204 204 }, 205 205 "nixpkgs": { 206 206 "locked": { 207 - "lastModified": 1771848320, 208 - "narHash": "sha256-0MAd+0mun3K/Ns8JATeHT1sX28faLII5hVLq0L3BdZU=", 207 + "lastModified": 1781216227, 208 + "narHash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=", 209 209 "owner": "nixos", 210 210 "repo": "nixpkgs", 211 - "rev": "2fc6539b481e1d2569f25f8799236694180c0993", 211 + "rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0", 212 212 "type": "github" 213 213 }, 214 214 "original": { 215 215 "owner": "nixos", 216 - "ref": "nixos-unstable", 216 + "ref": "nixos-26.05", 217 217 "repo": "nixpkgs", 218 218 "type": "github" 219 219 }
+1 -1
flake.nix
··· 2 2 description = "atproto github"; 3 3 4 4 inputs = { 5 - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; 5 + nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05"; 6 6 microvm = { 7 7 url = "github:microvm-nix/microvm.nix"; 8 8 inputs.nixpkgs.follows = "nixpkgs";
+27 -16
go.mod
··· 1 1 module tangled.org/core 2 2 3 - go 1.25.0 3 + go 1.25.9 4 4 5 5 require ( 6 6 buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260415201107-50325440f8f2.1 ··· 30 30 github.com/charmbracelet/wish v1.4.7 31 31 github.com/cloudflare/cloudflare-go/v6 v6.7.0 32 32 github.com/containerd/cgroups/v3 v3.1.3 33 - github.com/cyphar/filepath-securejoin v0.4.1 33 + github.com/cyphar/filepath-securejoin v0.6.1 34 34 github.com/dgraph-io/ristretto v0.2.0 35 35 github.com/did-method-plc/go-didplc v0.2.2 36 36 github.com/digitalocean/go-qemu v0.0.0-20250212194115-ee9b0668d242 ··· 41 41 github.com/gliderlabs/ssh v0.3.8 42 42 github.com/go-chi/chi/v5 v5.2.0 43 43 github.com/go-enry/go-enry/v2 v2.9.6 44 - github.com/go-git/go-git/v5 v5.14.0 44 + github.com/go-git/go-git/v5 v5.19.0 45 45 github.com/google/uuid v1.6.0 46 46 github.com/gorilla/feeds v1.2.0 47 47 github.com/gorilla/sessions v1.4.0 ··· 54 54 github.com/landlock-lsm/go-landlock v0.8.1 55 55 github.com/mattn/go-sqlite3 v1.14.34 56 56 github.com/mdlayher/vsock v1.3.0 57 - github.com/miekg/dns v1.1.72 58 57 github.com/microcosm-cc/bluemonday v1.0.27 58 + github.com/miekg/dns v1.1.72 59 59 github.com/multiformats/go-multihash v0.2.3 60 60 github.com/openbao/openbao/api/v2 v2.3.0 61 61 github.com/posthog/posthog-go v1.5.5 ··· 64 64 github.com/redis/go-redis/v9 v9.7.3 65 65 github.com/resend/resend-go/v3 v3.5.0 66 66 github.com/sethvargo/go-envconfig v1.1.0 67 + github.com/sourcegraph/zoekt v0.0.0-20260605122240-893a523804f1 67 68 github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c 68 69 github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef 69 70 github.com/stretchr/testify v1.11.1 ··· 90 91 github.com/BurntSushi/toml v0.3.1 // indirect 91 92 github.com/Microsoft/go-winio v0.6.2 // indirect 92 93 github.com/ProtonMail/go-crypto v1.3.0 // indirect 94 + github.com/RoaringBitmap/roaring v1.9.4 // indirect 93 95 github.com/RoaringBitmap/roaring/v2 v2.4.5 // indirect 94 96 github.com/RussellLuo/slidingwindow v0.0.0-20200528002341-535bb99d338b // indirect 95 97 github.com/alecthomas/repr v0.5.2 // indirect ··· 131 133 github.com/blevesearch/zapx/v14 v14.4.2 // indirect 132 134 github.com/blevesearch/zapx/v15 v15.4.2 // indirect 133 135 github.com/blevesearch/zapx/v16 v16.2.4 // indirect 136 + github.com/bmatcuk/doublestar v1.3.4 // indirect 134 137 github.com/casbin/govaluate v1.3.0 // indirect 135 138 github.com/cenkalti/backoff/v4 v4.3.0 // indirect 136 139 github.com/cespare/xxhash/v2 v2.3.0 // indirect ··· 148 151 github.com/clipperhouse/displaywidth v0.9.0 // indirect 149 152 github.com/clipperhouse/stringish v0.1.1 // indirect 150 153 github.com/clipperhouse/uax29/v2 v2.5.0 // indirect 151 - github.com/cloudflare/circl v1.6.2-0.20250618153321-aa837fd1539d // indirect 154 + github.com/cloudflare/circl v1.6.3 // indirect 152 155 github.com/containerd/errdefs v1.0.0 // indirect 153 156 github.com/containerd/errdefs/pkg v0.3.0 // indirect 154 157 github.com/containerd/log v0.1.0 // indirect ··· 165 168 github.com/emirpasic/gods v1.18.1 // indirect 166 169 github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect 167 170 github.com/felixge/httpsnoop v1.0.4 // indirect 168 - github.com/fsnotify/fsnotify v1.6.0 // indirect 169 171 github.com/go-enry/go-oniguruma v1.2.1 // indirect 170 172 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect 171 - github.com/go-git/go-billy/v5 v5.6.2 // indirect 173 + github.com/go-git/go-billy/v5 v5.9.0 // indirect 172 174 github.com/go-jose/go-jose/v3 v3.0.4 // indirect 173 175 github.com/go-logfmt/logfmt v0.6.0 // indirect 174 176 github.com/go-logr/logr v1.4.3 // indirect 175 177 github.com/go-logr/stdr v1.2.2 // indirect 176 178 github.com/go-redis/cache/v9 v9.0.0 // indirect 177 179 github.com/go-test/deep v1.1.1 // indirect 180 + github.com/gobwas/glob v0.2.3 // indirect 178 181 github.com/goccy/go-json v0.10.5 // indirect 179 182 github.com/godbus/dbus/v5 v5.1.0 // indirect 180 183 github.com/gogo/protobuf v1.3.2 // indirect ··· 185 188 github.com/golang/protobuf v1.5.4 // indirect 186 189 github.com/golang/snappy v0.0.4 // indirect 187 190 github.com/google/cel-go v0.28.0 // indirect 188 - github.com/google/go-querystring v1.1.0 // indirect 191 + github.com/google/go-querystring v1.2.0 // indirect 189 192 github.com/gorilla/css v1.0.1 // indirect 190 193 github.com/gorilla/securecookie v1.1.2 // indirect 194 + github.com/grafana/regexp v0.0.0-20240607082908-2cb410fa05da // indirect 195 + github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect 191 196 github.com/hashicorp/errwrap v1.1.0 // indirect 192 197 github.com/hashicorp/go-cleanhttp v0.5.2 // indirect 193 198 github.com/hashicorp/go-multierror v1.1.1 // indirect ··· 259 264 github.com/opencontainers/image-spec v1.1.1 // indirect 260 265 github.com/opencontainers/runtime-spec v1.3.0 // indirect 261 266 github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b // indirect 262 - github.com/pjbgf/sha1cd v0.3.2 // indirect 267 + github.com/pjbgf/sha1cd v0.6.0 // indirect 263 268 github.com/pkg/errors v0.9.1 // indirect 264 269 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect 265 270 github.com/polydawn/refmt v0.89.1-0.20221221234430-40501e09de1f // indirect ··· 267 272 github.com/prometheus/common v0.67.5 // indirect 268 273 github.com/puzpuzpuz/xsync/v4 v4.2.0 // indirect 269 274 github.com/rivo/uniseg v0.4.7 // indirect 275 + github.com/rs/xid v1.6.0 // indirect 270 276 github.com/ryanuber/go-glob v1.0.0 // indirect 271 277 github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect 272 278 github.com/sirupsen/logrus v1.9.3 // indirect 279 + github.com/sourcegraph/go-ctags v0.0.0-20250729094530-349a251d78d8 // indirect 273 280 github.com/spaolacci/murmur3 v1.1.0 // indirect 281 + github.com/tetratelabs/wazero v1.9.0 // indirect 274 282 github.com/tidwall/gjson v1.18.0 // indirect 275 283 github.com/tidwall/match v1.2.0 // indirect 276 284 github.com/tidwall/pretty v1.2.1 // indirect ··· 280 288 github.com/vmihailenco/go-tinylfu v0.2.2 // indirect 281 289 github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect 282 290 github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect 291 + github.com/wasilibs/go-re2 v1.10.0 // indirect 292 + github.com/wasilibs/wazero-helpers v0.0.0-20240620070341-3dff1577cd52 // indirect 283 293 github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect 284 294 gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect 285 295 gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect 286 296 go.etcd.io/bbolt v1.4.0 // indirect 287 297 go.opentelemetry.io/auto/sdk v1.2.1 // indirect 288 298 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 // indirect 289 - go.opentelemetry.io/otel v1.40.0 // indirect 290 - go.opentelemetry.io/otel/metric v1.40.0 // indirect 291 - go.opentelemetry.io/otel/trace v1.40.0 // indirect 299 + go.opentelemetry.io/otel v1.43.0 // indirect 300 + go.opentelemetry.io/otel/metric v1.43.0 // indirect 301 + go.opentelemetry.io/otel/trace v1.43.0 // indirect 292 302 go.uber.org/atomic v1.11.0 // indirect 293 303 go.uber.org/multierr v1.11.0 // indirect 294 304 go.uber.org/zap v1.27.1 // indirect 295 305 go.yaml.in/yaml/v2 v2.4.3 // indirect 296 - golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect 306 + golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f // indirect 297 307 golang.org/x/mod v0.35.0 // indirect 298 308 golang.org/x/text v0.37.0 // indirect 299 - golang.org/x/time v0.12.0 // indirect 309 + golang.org/x/time v0.14.0 // indirect 300 310 golang.org/x/tools v0.44.0 // indirect 301 - google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect 302 - google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect 311 + google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 // indirect 312 + google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 // indirect 313 + google.golang.org/grpc v1.80.0 // indirect 303 314 gopkg.in/fsnotify.v1 v1.4.7 // indirect 304 315 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect 305 316 gopkg.in/warnings.v0 v0.1.2 // indirect
+157 -40
go.sum
··· 4 4 buf.build/go/protovalidate v1.2.0/go.mod h1:7rYiQEhqvAipoazpVNBBH2S2f8bjG4huMVy1V2Yofn4= 5 5 cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= 6 6 cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= 7 + cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= 7 8 dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= 8 9 dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= 10 + github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= 11 + github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= 9 12 github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= 10 13 github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= 11 14 github.com/Blank-Xu/sql-adapter v1.1.1 h1:+g7QXU9sl/qT6Po97teMpf3GjAO0X9aFaqgSePXvYko= ··· 16 19 github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= 17 20 github.com/ProtonMail/go-crypto v1.3.0 h1:ILq8+Sf5If5DCpHQp4PbZdS1J7HDFRXz/+xKBiRGFrw= 18 21 github.com/ProtonMail/go-crypto v1.3.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= 22 + github.com/RoaringBitmap/roaring v1.9.4 h1:yhEIoH4YezLYT04s1nHehNO64EKFTop/wBhxv2QzDdQ= 23 + github.com/RoaringBitmap/roaring v1.9.4/go.mod h1:6AXUsoIEzDTFFQCe1RbGA6uFONMhvejWj5rqITANK90= 19 24 github.com/RoaringBitmap/roaring/v2 v2.4.5 h1:uGrrMreGjvAtTBobc0g5IrW1D5ldxDQYe2JW2gggRdg= 20 25 github.com/RoaringBitmap/roaring/v2 v2.4.5/go.mod h1:FiJcsfkGje/nZBZgCu0ZxCPOKD/hVXDS2dXi7/eUFE0= 21 26 github.com/RussellLuo/slidingwindow v0.0.0-20200528002341-535bb99d338b h1:5/++qT1/z812ZqBvqQt6ToRswSuPZ/B33m6xVHRzADU= ··· 77 82 github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= 78 83 github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= 79 84 github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= 85 + github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= 80 86 github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= 81 87 github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= 82 88 github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= ··· 122 128 github.com/blevesearch/zapx/v16 v16.2.4/go.mod h1:Rti/REtuuMmzwsI8/C/qIzRaEoSK/wiFYw5e5ctUKKs= 123 129 github.com/bluesky-social/jetstream v0.0.0-20260226214936-e0274250f654 h1:OK76FcHhZp8ohjRB0OMWgti0oYAWFlt3KDQcIkH1pfI= 124 130 github.com/bluesky-social/jetstream v0.0.0-20260226214936-e0274250f654/go.mod h1:vt8kVRKtvrBspt9G38wDD8+BotjIMO8u8IYoVnyE4zY= 131 + github.com/bmatcuk/doublestar v1.3.4 h1:gPypJ5xD31uhX6Tf54sDPUOBXTqKH4c9aPY66CyQrS0= 132 + github.com/bmatcuk/doublestar v1.3.4/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= 125 133 github.com/bmatcuk/doublestar/v4 v4.6.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= 126 134 github.com/bmatcuk/doublestar/v4 v4.7.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= 127 135 github.com/bmatcuk/doublestar/v4 v4.9.1 h1:X8jg9rRZmJd4yRy7ZeNDRnM+T3ZfHv15JiBJ/avrEXE= ··· 148 156 github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= 149 157 github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= 150 158 github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= 159 + github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= 151 160 github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= 152 161 github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= 153 162 github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= ··· 195 204 github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= 196 205 github.com/cilium/ebpf v0.16.0 h1:+BiEnHL6Z7lXnlGUsXQPPAE7+kenAd4ES8MQ5min0Ok= 197 206 github.com/cilium/ebpf v0.16.0/go.mod h1:L7u2Blt2jMM/vLAVgjxluxtBKlz3/GWjB0dMOEngfwE= 207 + github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= 198 208 github.com/clipperhouse/displaywidth v0.9.0 h1:Qb4KOhYwRiN3viMv1v/3cTBlz3AcAZX3+y9OLhMtAtA= 199 209 github.com/clipperhouse/displaywidth v0.9.0/go.mod h1:aCAAqTlh4GIVkhQnJpbL0T/WfcrJXHcj8C0yjYcjOZA= 200 210 github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= 201 211 github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= 202 212 github.com/clipperhouse/uax29/v2 v2.5.0 h1:x7T0T4eTHDONxFJsL94uKNKPHrclyFI0lm7+w94cO8U= 203 213 github.com/clipperhouse/uax29/v2 v2.5.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= 204 - github.com/cloudflare/circl v1.6.2-0.20250618153321-aa837fd1539d h1:IiIprFGH6SqstblP0Y9NIo3eaUJGkI/YDOFVSL64Uq4= 205 - github.com/cloudflare/circl v1.6.2-0.20250618153321-aa837fd1539d/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= 214 + github.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg8= 215 + github.com/cloudflare/circl v1.6.3/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4= 206 216 github.com/cloudflare/cloudflare-go/v6 v6.7.0 h1:MP6Xy5WmsyrxgTxoLeq/vraqR0nbTtXoHhW4vAYc4SY= 207 217 github.com/cloudflare/cloudflare-go/v6 v6.7.0/go.mod h1:Lj3MUqjvKctXRpdRhLQxZYRrNZHuRs0XYuH8JtQGyoI= 218 + github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= 219 + github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= 220 + github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= 221 + github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 h1:ASDL+UJcILMqgNeV5jiqR4j+sTuvQNHdf2chuKj1M5k= 222 + github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506/go.mod h1:Mw7HqKr2kdtu6aYGn3tPmAftiP3QPX63LdK/zcariIo= 223 + github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= 224 + github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= 208 225 github.com/containerd/cgroups/v3 v3.1.3 h1:eUNflyMddm18+yrDmZPn3jI7C5hJ9ahABE5q6dyLYXQ= 209 226 github.com/containerd/cgroups/v3 v3.1.3/go.mod h1:PKZ2AcWmSBsY/tJUVhtS/rluX0b1uq1GmPO1ElCmbOw= 210 227 github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= ··· 221 238 github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= 222 239 github.com/cskr/pubsub v1.0.2 h1:vlOzMhl6PFn60gRlTQQsIfVwaPB/B/8MziK8FhEPt/0= 223 240 github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis= 224 - github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= 225 - github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= 241 + github.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE= 242 + github.com/cyphar/filepath-securejoin v0.6.1/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc= 226 243 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 227 244 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 228 245 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= ··· 265 282 github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE= 266 283 github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= 267 284 github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= 285 + github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= 286 + github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= 287 + github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= 288 + github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= 268 289 github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= 269 290 github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= 291 + github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= 270 292 github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= 271 293 github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= 272 294 github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= 273 295 github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= 296 + github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= 274 297 github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= 275 298 github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= 276 299 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= 277 300 github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= 278 - github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= 279 - github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= 301 + github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= 302 + github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= 303 + github.com/getsentry/sentry-go v0.31.1 h1:ELVc0h7gwyhnXHDouXkhqTFSO5oslsRDk0++eyE0KJ4= 304 + github.com/getsentry/sentry-go v0.31.1/go.mod h1:CYNcMMz73YigoHljQRG+qPF+eMq8gG72XcGN/p71BAY= 280 305 github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= 281 306 github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= 282 307 github.com/go-chi/chi/v5 v5.2.0 h1:Aj1EtB0qR2Rdo2dG4O94RIU35w2lvQSj6BRA4+qwFL0= ··· 287 312 github.com/go-enry/go-oniguruma v1.2.1/go.mod h1:bWDhYP+S6xZQgiRL7wlTScFYBe023B6ilRZbCAD5Hf4= 288 313 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= 289 314 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= 290 - github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM= 291 - github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= 315 + github.com/go-git/go-billy/v5 v5.9.0 h1:jItGXszUDRtR/AlferWPTMN4j38BQ88XnXKbilmmBPA= 316 + github.com/go-git/go-billy/v5 v5.9.0/go.mod h1:jCnQMLj9eUgGU7+ludSTYoZL/GGmii14RxKFj7ROgHw= 292 317 github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= 293 318 github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= 294 319 github.com/go-git/go-git-fixtures/v5 v5.0.0-20241203230421-0753e18f8f03 h1:LumE+tQdnYW24a9RoO08w64LHTzkNkdUqBD/0QPtlEY= ··· 297 322 github.com/go-jose/go-jose/v3 v3.0.4/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= 298 323 github.com/go-json-experiment/json v0.0.0-20250725192818-e39067aee2d2 h1:iizUGZ9pEquQS5jTGkh4AqeeHCMbfbjeb0zMt0aEFzs= 299 324 github.com/go-json-experiment/json v0.0.0-20250725192818-e39067aee2d2/go.mod h1:TiCD2a1pcmjd7YnhGH0f/zKNcCD06B029pHhzV23c2M= 325 + github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= 326 + github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= 300 327 github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= 301 328 github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= 302 329 github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= ··· 311 338 github.com/go-redis/cache/v9 v9.0.0/go.mod h1:cMwi1N8ASBOufbIvk7cdXe2PbPjK/WMRL95FFHWsSgI= 312 339 github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg= 313 340 github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= 341 + github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= 314 342 github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= 315 343 github.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U= 316 344 github.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= 317 345 github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0= 346 + github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= 347 + github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= 318 348 github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= 319 349 github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= 320 350 github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= ··· 332 362 github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= 333 363 github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= 334 364 github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= 365 + github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= 335 366 github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= 336 367 github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= 368 + github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= 337 369 github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= 338 370 github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= 339 371 github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= 340 372 github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 373 + github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 374 + github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= 341 375 github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= 342 376 github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= 343 377 github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= ··· 352 386 github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 353 387 github.com/google/cel-go v0.28.0 h1:KjSWstCpz/MN5t4a8gnGJNIYUsJRpdi/r97xWDphIQc= 354 388 github.com/google/cel-go v0.28.0/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= 389 + github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= 355 390 github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= 356 391 github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= 357 392 github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 358 - github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 393 + github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 359 394 github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 395 + github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= 360 396 github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 361 397 github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 398 + github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 362 399 github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= 363 400 github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= 364 - github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= 365 - github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= 401 + github.com/google/go-querystring v1.2.0 h1:yhqkPbu2/OH+V9BfpCVPZkNmUXhb2gBxJArfhIxNtP0= 402 + github.com/google/go-querystring v1.2.0/go.mod h1:8IFJqpSRITyJ8QhQ13bmbeMBDfmeEJZD5A0egEOmkqU= 366 403 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= 367 404 github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= 368 405 github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= ··· 383 420 github.com/gorilla/sessions v1.4.0/go.mod h1:FLWm50oby91+hl7p/wRxDth9bWSuk0qVL2emc7lT5ik= 384 421 github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 h1:JeSE6pjso5THxAzdVpqr6/geYxZytqFMBCOtn/ujyeo= 385 422 github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA= 386 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8 h1:NpbJl/eVbvrGE0MJ6X16X9SAifesl6Fwxg/YmCvubRI= 387 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.8/go.mod h1:mi7YA+gCzVem12exXy46ZespvGtX/lZmD/RLnQhVW7U= 423 + github.com/grafana/regexp v0.0.0-20240607082908-2cb410fa05da h1:BML5sNe+bw2uO8t8cQSwe5QhvoP04eHPF7bnaQma0Kw= 424 + github.com/grafana/regexp v0.0.0-20240607082908-2cb410fa05da/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= 425 + github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= 426 + github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= 427 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= 428 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= 388 429 github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= 389 430 github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= 390 431 github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= ··· 408 449 github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= 409 450 github.com/hashicorp/hcl v1.0.1-vault-7 h1:ag5OxFVy3QYTFTJODRzTKVZ6xvdfLLCA1cy/Y6xGI0I= 410 451 github.com/hashicorp/hcl v1.0.1-vault-7/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM= 452 + github.com/hexops/autogold v0.8.1/go.mod h1:97HLDXyG23akzAoRYJh/2OBs3kd80eHyKPvZw0S5ZBY= 453 + github.com/hexops/autogold v1.3.1 h1:YgxF9OHWbEIUjhDbpnLhgVsjUDsiHDTyDfy2lrfdlzo= 454 + github.com/hexops/autogold v1.3.1/go.mod h1:sQO+mQUCVfxOKPht+ipDSkJ2SCJ7BNJVHZexsXqWMx4= 411 455 github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= 412 456 github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= 457 + github.com/hexops/valast v1.4.3 h1:oBoGERMJh6UZdRc6cduE1CTPK+VAdXA59Y1HFgu3sm0= 458 + github.com/hexops/valast v1.4.3/go.mod h1:Iqx2kLj3Jn47wuXpj3wX40xn6F93QNFBHuiKBerkTGA= 413 459 github.com/hiddeco/sshsig v0.2.0 h1:gMWllgKCITXdydVkDL+Zro0PU96QI55LwUwebSwNTSw= 414 460 github.com/hiddeco/sshsig v0.2.0/go.mod h1:nJc98aGgiH6Yql2doqH4CTBVHexQA40Q+hMMLHP4EqE= 415 461 github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= ··· 509 555 github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= 510 556 github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= 511 557 github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= 558 + github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= 512 559 github.com/koron/go-ssdp v0.0.6 h1:Jb0h04599eq/CY7rB5YEqPS83HmRfHP2azkxMN2rFtU= 513 560 github.com/koron/go-ssdp v0.0.6/go.mod h1:0R9LfRJGek1zWTjN3JUNlm5INCDYGpRDfAptnct63fI= 514 561 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= ··· 543 590 github.com/libp2p/go-netroute v0.4.0/go.mod h1:Nkd5ShYgSMS5MUKy/MU2T57xFoOKvvLR92Lic48LEyA= 544 591 github.com/lucasb-eyer/go-colorful v1.3.0 h1:2/yBRLdWBZKrf7gB40FoiKfAWYQ0lqNcbuQwVHXptag= 545 592 github.com/lucasb-eyer/go-colorful v1.3.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= 593 + github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= 594 + github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= 546 595 github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= 547 596 github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= 597 + github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= 598 + github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= 599 + github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= 548 600 github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= 549 601 github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= 550 602 github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= ··· 614 666 github.com/multiformats/go-varint v0.1.0/go.mod h1:5KVAVXegtfmNQQm/lCY+ATvDzvJJhSkUlGQV9wgObdI= 615 667 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= 616 668 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= 669 + github.com/nightlyone/lockfile v1.0.0 h1:RHep2cFKK4PonZJDdEl4GmkabuhbsRMgk/k3uAmxBiA= 670 + github.com/nightlyone/lockfile v1.0.0/go.mod h1:rywoIealpdNse2r832aiD9jRk8ErCatROs6LzC841CI= 617 671 github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= 618 672 github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= 619 673 github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= ··· 649 703 github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= 650 704 github.com/opencontainers/runtime-spec v1.3.0 h1:YZupQUdctfhpZy3TM39nN9Ika5CBWT5diQ8ibYCRkxg= 651 705 github.com/opencontainers/runtime-spec v1.3.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= 706 + github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= 652 707 github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= 653 708 github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b h1:FfH+VrHHk6Lxt9HdVS0PXzSXFyS2NbZKXv33FYPol0A= 654 709 github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b/go.mod h1:AC62GU6hc0BrNm+9RK9VSiwa/EUe1bkIeFORAMcHvJU= ··· 656 711 github.com/oppiliappan/chroma/v2 v2.24.2/go.mod h1:NqVhfBR0lte5Ouh3DcthuUCTUpDC9cxBOfyMbMQPs3o= 657 712 github.com/oppiliappan/go-git/v5 v5.17.0 h1:CuJnpcIDxr0oiNaSHMconovSWnowHznVDG+AhjGuSEo= 658 713 github.com/oppiliappan/go-git/v5 v5.17.0/go.mod h1:q/FE8C3SPMoRN7LoH9vRFiBzidAOBWJPS1CqVS8DN+w= 659 - github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= 660 - github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= 714 + github.com/pjbgf/sha1cd v0.6.0 h1:3WJ8Wz8gvDz29quX1OcEmkAlUg9diU4GxJHqs0/XiwU= 715 + github.com/pjbgf/sha1cd v0.6.0/go.mod h1:lhpGlyHLpQZoxMv8HcgXvZEhcGs0PG/vsZnEJ7H0iCM= 716 + github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= 661 717 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 662 718 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= 663 719 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= ··· 670 726 github.com/posthog/posthog-go v1.5.5/go.mod h1:3RqUmSnPuwmeVj/GYrS75wNGqcAKdpODiwc83xZWgdE= 671 727 github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= 672 728 github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= 729 + github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= 673 730 github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= 674 731 github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= 675 732 github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= ··· 689 746 github.com/rodaine/protogofakeit v0.1.1/go.mod h1:pXn/AstBYMaSfc1/RqH3N82pBuxtWgejz1AlYpY1mI0= 690 747 github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= 691 748 github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= 749 + github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= 692 750 github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= 693 751 github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= 752 + github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU= 753 + github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= 694 754 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= 695 755 github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= 696 756 github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= ··· 699 759 github.com/sethvargo/go-envconfig v1.1.0 h1:cWZiJxeTm7AlCvzGXrEXaSTCNgip5oJepekh/BOQuog= 700 760 github.com/sethvargo/go-envconfig v1.1.0/go.mod h1:JLd0KFWQYzyENqnEPWWZ49i4vzZo/6nRidxI8YvGiHw= 701 761 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= 762 + github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= 702 763 github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= 703 764 github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= 704 765 github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs= 705 766 github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= 706 767 github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg= 707 768 github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM= 769 + github.com/sourcegraph/go-ctags v0.0.0-20250729094530-349a251d78d8 h1:hpCD/FvbXLR7/034fKD0CQ8LmT4zoQfT2DzJIjqMzUI= 770 + github.com/sourcegraph/go-ctags v0.0.0-20250729094530-349a251d78d8/go.mod h1:Or1cqbhDzkbH+hlwv5iW7uCTPEMKH9u/mTUh7otRQHY= 771 + github.com/sourcegraph/log v0.0.0-20241024013702-574f7079c888 h1:9PUH8Hn8mVhPTtRKqot1HHsbLRDP0H2A+FSyuRumP2Q= 772 + github.com/sourcegraph/log v0.0.0-20241024013702-574f7079c888/go.mod h1:IDp09QkoqS8Z3CyN2RW6vXjgABkNpDbyjLIHNQwQ8P8= 773 + github.com/sourcegraph/zoekt v0.0.0-20260605122240-893a523804f1 h1:jdGYyvAjA5/oJEf8fsnUkzLcsJkiSR8+qK0zRGfSwO8= 774 + github.com/sourcegraph/zoekt v0.0.0-20260605122240-893a523804f1/go.mod h1:Q5unQupAiJ4Gl7lVzDGaWmoF4yELtsyM2xzE7B18V34= 708 775 github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= 709 776 github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= 710 777 github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c h1:km8GpoQut05eY3GiYWEedbTT0qnSxrCjsVbb7yKY1KE= ··· 712 779 github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef h1:Ch6Q+AZUxDBCVqdkI8FSpFyZDtCVBc2VmejdNrm5rRQ= 713 780 github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef/go.mod h1:nXTWP6+gD5+LUJ8krVhhoeHjvHTutPxMYl5SvkcnJNE= 714 781 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 782 + github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 715 783 github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= 716 784 github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= 785 + github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= 717 786 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 718 787 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= 719 788 github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= ··· 724 793 github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= 725 794 github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= 726 795 github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= 796 + github.com/tetratelabs/wazero v1.9.0 h1:IcZ56OuxrtaEz8UYNRHBrUa9bYeX9oVY93KspZZBf/I= 797 + github.com/tetratelabs/wazero v1.9.0/go.mod h1:TSbcXCfFP0L2FGkRPxHphadXPjo1T6W+CseNNY7EkjM= 727 798 github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= 728 799 github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= 729 800 github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= ··· 753 824 github.com/warpfork/go-testmark v0.12.1/go.mod h1:kHwy7wfvGSPh1rQJYKayD4AbtNaeyZdcGi9tNJTaa5Y= 754 825 github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0 h1:GDDkbFiaK8jsSDJfjId/PEGEShv6ugrt4kYsC5UIDaQ= 755 826 github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= 827 + github.com/wasilibs/go-re2 v1.10.0 h1:vQZEBYZOCA9jdBMmrO4+CvqyCj0x4OomXTJ4a5/urQ0= 828 + github.com/wasilibs/go-re2 v1.10.0/go.mod h1:k+5XqO2bCJS+QpGOnqugyfwC04nw0jaglmjrrkG8U6o= 829 + github.com/wasilibs/wazero-helpers v0.0.0-20240620070341-3dff1577cd52 h1:OvLBa8SqJnZ6P+mjlzc2K7PM22rRUPE1x32G9DTPrC4= 830 + github.com/wasilibs/wazero-helpers v0.0.0-20240620070341-3dff1577cd52/go.mod h1:jMeV4Vpbi8osrE/pKUxRZkVaA0EX7NZN0A9/oRzgpgY= 756 831 github.com/whyrusleeping/cbor-gen v0.3.1 h1:82ioxmhEYut7LBVGhGq8xoRkXPLElVuh5mV67AFfdv0= 757 832 github.com/whyrusleeping/cbor-gen v0.3.1/go.mod h1:pM99HXyEbSQHcosHc0iW7YFmwnscr+t9Te4ibko05so= 758 833 github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= ··· 783 858 go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= 784 859 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 h1:7iP2uCb7sGddAr30RRS6xjKy7AZ2JtTOPA3oolgVSw8= 785 860 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0/go.mod h1:c7hN3ddxs/z6q9xwvfLPk+UHlWRQyaeR1LdgfL/66l0= 786 - go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= 787 - go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= 788 - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= 789 - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= 790 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.40.0 h1:wVZXIWjQSeSmMoxF74LzAnpVQOAFDo3pPji9Y4SOFKc= 791 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.40.0/go.mod h1:khvBS2IggMFNwZK/6lEeHg/W57h/IX6J4URh57fuI40= 792 - go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= 793 - go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= 794 - go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= 795 - go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= 861 + go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= 862 + go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= 863 + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k= 864 + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A= 865 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc= 866 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak= 867 + go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= 868 + go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= 869 + go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= 870 + go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= 796 871 go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= 797 872 go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= 798 - go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= 799 - go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= 800 - go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= 801 - go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= 873 + go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= 874 + go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= 875 + go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= 876 + go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= 802 877 go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= 803 878 go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= 804 879 go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= 805 880 go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= 881 + go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= 806 882 go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= 807 883 go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= 808 884 go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= ··· 811 887 go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= 812 888 go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= 813 889 go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= 890 + go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= 814 891 go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= 815 892 go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= 816 893 go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= ··· 826 903 golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= 827 904 golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= 828 905 golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= 829 - golang.org/x/exp v0.0.0-20260112195511-716be5621a96 h1:Z/6YuSHTLOHfNFdb8zVZomZr7cqNgTJvA8+Qz75D8gU= 830 - golang.org/x/exp v0.0.0-20260112195511-716be5621a96/go.mod h1:nzimsREAkjBCIEFtHiYkrJyT+2uy9YZJB7H1k68CXZU= 906 + golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= 907 + golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f h1:W3F4c+6OLc6H2lb//N1q4WpJkhzJCK5J6kUi1NTVXfM= 908 + golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f/go.mod h1:J1xhfL/vlindoeF/aINzNzt2Bket5bjo9sdOYzOsU80= 831 909 golang.org/x/image v0.31.0 h1:mLChjE2MV6g1S7oqbXC0/UcKijjm5fnJLUYKIYrLESA= 832 910 golang.org/x/image v0.31.0/go.mod h1:R9ec5Lcp96v9FTF+ajwaH3uGxPH4fKfHHAVbUILxghA= 911 + golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= 912 + golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= 913 + golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= 833 914 golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= 834 915 golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= 835 916 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= ··· 842 923 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 843 924 golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= 844 925 golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= 926 + golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 927 + golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 845 928 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 929 + golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 846 930 golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 847 931 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 848 932 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= ··· 864 948 golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= 865 949 golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= 866 950 golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= 951 + golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= 867 952 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 953 + golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 868 954 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 869 955 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 870 956 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 871 957 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 872 958 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 959 + golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 873 960 golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 874 961 golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= 875 962 golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= 963 + golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 876 964 golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 877 965 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 878 966 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 967 + golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 879 968 golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 880 969 golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 881 970 golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 882 971 golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 972 + golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 973 + golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 883 974 golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 884 975 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 885 976 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= ··· 888 979 golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 889 980 golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 890 981 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 982 + golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 891 983 golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 892 984 golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 985 + golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 893 986 golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 894 987 golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 895 988 golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 896 989 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 897 990 golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 898 991 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 899 - golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 992 + golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 993 + golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 900 994 golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 901 995 golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 902 996 golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= ··· 930 1024 golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 931 1025 golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= 932 1026 golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= 933 - golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= 934 - golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= 1027 + golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= 1028 + golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 935 1029 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 1030 + golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 1031 + golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= 936 1032 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 937 1033 golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 938 1034 golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= 1035 + golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= 939 1036 golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= 940 1037 golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 941 1038 golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 1039 + golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 942 1040 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 943 1041 golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= 944 1042 golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= ··· 957 1055 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 958 1056 golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= 959 1057 golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= 960 - google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 h1:JLQynH/LBHfCTSbDWl+py8C+Rg/k1OVH3xfcaiANuF0= 961 - google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:kSJwQxqmFXeo79zOmbrALdflXQeAYcUbgS7PbpMknCY= 962 - google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 h1:mWPCjDEyshlQYzBpMNHaEof6UX1PmHcaUODUywQ0uac= 963 - google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= 964 - google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= 965 - google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= 1058 + gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= 1059 + gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= 1060 + google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= 1061 + google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= 1062 + google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= 1063 + google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= 1064 + google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= 1065 + google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9 h1:VPWxll4HlMw1Vs/qXtN7BvhZqsS9cdAittCNvVENElA= 1066 + google.golang.org/genproto/googleapis/api v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:7QBABkRtR8z+TEnmXTqIqwJLlzrZKVfAUm7tY3yGv0M= 1067 + google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 h1:m8qni9SQFH0tJc1X0vmnpw/0t+AImlSvp30sEupozUg= 1068 + google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= 1069 + google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= 1070 + google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= 1071 + google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= 1072 + google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= 1073 + google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= 1074 + google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= 1075 + google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= 966 1076 google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= 967 1077 google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= 968 1078 google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= ··· 993 1103 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= 994 1104 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= 995 1105 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 1106 + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 996 1107 gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 997 1108 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 998 1109 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= ··· 1004 1115 gorm.io/gorm v1.31.1/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= 1005 1116 gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= 1006 1117 gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= 1118 + honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= 1119 + honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= 1007 1120 honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= 1008 1121 kernel.org/pub/linux/libs/security/libcap/psx v1.2.77 h1:Z06sMOzc0GNCwp6efaVrIrz4ywGJ1v+DP0pjVkOfDuA= 1009 1122 kernel.org/pub/linux/libs/security/libcap/psx v1.2.77/go.mod h1:+l6Ee2F59XiJ2I6WR5ObpC1utCQJZ/VLsEbQCD8RG24= 1010 1123 lukechampine.com/blake3 v1.4.1 h1:I3Smz7gso8w4/TunLKec6K2fn+kyKtDxr/xcQEN84Wg= 1011 1124 lukechampine.com/blake3 v1.4.1/go.mod h1:QFosUxmjB8mnrWFSNwKmvxHpfY72bmD2tQ0kBMM3kwo= 1125 + mvdan.cc/gofumpt v0.4.0 h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM= 1126 + mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ= 1127 + pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk= 1128 + pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= 1012 1129 tangled.sh/oppi.li/go-gitdiff v0.8.2 h1:pASJJNWaFn6EmEIUNNjHZQ3stRu6BqTO2YyjKvTcxIc= 1013 1130 tangled.sh/oppi.li/go-gitdiff v0.8.2/go.mod h1:WWAk1Mc6EgWarCrPFO+xeYlujPu98VuLW3Tu+B/85AE=
+14
localinfra/Caddyfile
··· 53 53 reverse_proxy knotmirror:7000 54 54 } 55 55 56 + # zoekt (internal service) 57 + zoekt.tngl.boltless.dev { 58 + tls internal 59 + 60 + # TODO: replace this with -indexserver_proxy flag 61 + handle_path /indexserver/* { 62 + reverse_proxy zoekt-tngl-indexserver:6060 63 + } 64 + 65 + handle { 66 + reverse_proxy zoekt-webserver:6070 67 + } 68 + } 69 + 56 70 # appview 57 71 tngl.boltless.dev { 58 72 tls internal
+44
localinfra/zoekt-tngl-indexserver.Dockerfile
··· 1 + # Development only. Not for production use. 2 + 3 + FROM golang:1.25-alpine AS builder 4 + 5 + RUN apk add --no-cache git 6 + 7 + ENV CGO_ENABLED=0 8 + ENV GOCACHE=/go/cache 9 + ENV GOMODCACHE=/go/mod 10 + ENV GOBIN=/out 11 + 12 + WORKDIR /src 13 + 14 + COPY go.mod go.sum ./ 15 + RUN --mount=type=cache,target=/go/cache \ 16 + --mount=type=cache,target=/go/mod \ 17 + go mod download 18 + 19 + # zoekt-git-index is invoked at runtime by zoekt-tngl-indexserver via PATH. 20 + RUN --mount=type=cache,target=/go/cache \ 21 + --mount=type=cache,target=/go/mod \ 22 + go install github.com/sourcegraph/zoekt/cmd/zoekt-git-index@latest 23 + 24 + COPY . . 25 + RUN --mount=type=cache,target=/go/cache \ 26 + --mount=type=cache,target=/go/mod \ 27 + go build -o /out/zoekt-tngl-indexserver ./cmd/zoekt-tngl-indexserver 28 + 29 + FROM alpine:3.20 30 + 31 + RUN apk add --no-cache git ca-certificates tini 32 + 33 + # Trust dev CA in the system bundle so git/curl/openssl all accept caddy certs. 34 + COPY localinfra/certs/root.crt /usr/local/share/ca-certificates/caddy.crt 35 + RUN update-ca-certificates 36 + 37 + COPY --from=builder /out/zoekt-tngl-indexserver /usr/local/bin/zoekt-tngl-indexserver 38 + COPY --from=builder /out/zoekt-git-index /usr/local/bin/zoekt-git-index 39 + RUN chmod 0755 /usr/local/bin/zoekt-tngl-indexserver /usr/local/bin/zoekt-git-index 40 + 41 + EXPOSE 6060 42 + 43 + ENTRYPOINT ["/sbin/tini", "--"] 44 + CMD ["zoekt-tngl-indexserver", "serve", "-index_dir", "/data/index"]
+60 -27
nix/gomod2nix.toml
··· 25 25 [mod."github.com/ProtonMail/go-crypto"] 26 26 version = "v1.3.0" 27 27 hash = "sha256-TUG+C4MyeWglOmiwiW2/NUVurFHXLgEPRd3X9uQ1NGI=" 28 + [mod."github.com/RoaringBitmap/roaring"] 29 + version = "v1.9.4" 30 + hash = "sha256-OKOLQ/PsH6630Vb5/9yG28TLIPGxdG9WDbAZxgK8EcI=" 28 31 [mod."github.com/RoaringBitmap/roaring/v2"] 29 32 version = "v2.4.5" 30 33 hash = "sha256-igWY0S1PTolQkfctYcmVJioJyV1pk2V81X6o6BA1XQA=" ··· 187 190 [mod."github.com/bluesky-social/jetstream"] 188 191 version = "v0.0.0-20260226214936-e0274250f654" 189 192 hash = "sha256-VE93NvI3PreteLHnlv7WT6GgH2vSjtoFjMygCmrznfg=" 193 + [mod."github.com/bmatcuk/doublestar"] 194 + version = "v1.3.4" 195 + hash = "sha256-QcHL9WGVAH3vIs4FZH+w1DJxdCHnXkkzODtOfhKR0X0=" 190 196 [mod."github.com/bmatcuk/doublestar/v4"] 191 197 version = "v4.9.1" 192 198 hash = "sha256-0iyHjyTAsfhgYSsE+NKxSNGBuM3Id615VWeQhssTShE=" ··· 269 275 version = "v2.5.0" 270 276 hash = "sha256-Men4JLhiuEtAx8ZSzId5ciRWhud68o3k/B48ppwyxkM=" 271 277 [mod."github.com/cloudflare/circl"] 272 - version = "v1.6.2-0.20250618153321-aa837fd1539d" 273 - hash = "sha256-0s/i/XmMcuvPQ+qK9OIU5KxwYZyLVXRtdlYvIXRJT3Y=" 278 + version = "v1.6.3" 279 + hash = "sha256-XZm4EastgX67Dgm5BpOEW/PY4aLcHM/O8+Xbz26PuTY=" 274 280 [mod."github.com/cloudflare/cloudflare-go/v6"] 275 281 version = "v6.7.0" 276 282 hash = "sha256-ycQpx1II/JgBgrCRwY5qiVKStGv5wuCANy1091sJ5Zw=" ··· 293 299 version = "v1.1.21" 294 300 hash = "sha256-pjGw6wQlrVhN65XaIxZueNJqnXThGu00u24rKOLzxS0=" 295 301 [mod."github.com/cyphar/filepath-securejoin"] 296 - version = "v0.4.1" 297 - hash = "sha256-NOV6MfbkcQbfhNmfADQw2SJmZ6q1nw0wwg8Pm2tf2DM=" 302 + version = "v0.6.1" 303 + hash = "sha256-obqip8c1c9mjXFznyXF8aDnpcMw7ttzv+e28anCa/v0=" 298 304 [mod."github.com/davecgh/go-spew"] 299 305 version = "v1.1.2-0.20180830191138-d8f796af33cc" 300 306 hash = "sha256-fV9oI51xjHdOmEx6+dlq7Ku2Ag+m/bmbzPo6A4Y74qc=" ··· 349 355 [mod."github.com/felixge/httpsnoop"] 350 356 version = "v1.0.4" 351 357 hash = "sha256-c1JKoRSndwwOyOxq9ddCe+8qn7mG9uRq2o/822x5O/c=" 352 - [mod."github.com/fsnotify/fsnotify"] 353 - version = "v1.6.0" 354 - hash = "sha256-DQesOCweQPEwmAn6s7DCP/Dwy8IypC+osbpfsvpkdP0=" 355 358 [mod."github.com/gliderlabs/ssh"] 356 359 version = "v0.3.8" 357 360 hash = "sha256-FW+91qCB3rfTm0I1VmqfwA7o+2kDys2JHOudKKyxWwc=" ··· 368 371 version = "v1.5.1-0.20230307220236-3a3c6141e376" 369 372 hash = "sha256-f4k0gSYuo0/q3WOoTxl2eFaj7WZpdz29ih6CKc8Ude8=" 370 373 [mod."github.com/go-git/go-billy/v5"] 371 - version = "v5.6.2" 372 - hash = "sha256-VgbxcLkHjiSyRIfKS7E9Sn8OynCrMGUDkwFz6K2TVL4=" 374 + version = "v5.9.0" 375 + hash = "sha256-6+i1Xk8kR6EY8y6YSE9Oyj8ykcvyHUHZv04GfwOIzzs=" 373 376 [mod."github.com/go-git/go-git/v5"] 374 377 version = "v5.17.0" 375 378 hash = "sha256-gya68abB6GtejUqr60DyU7NIGtNzHQVCAeDTYKk1evQ=" ··· 392 395 [mod."github.com/go-test/deep"] 393 396 version = "v1.1.1" 394 397 hash = "sha256-WvPrTvUPmbQb4R6DrvSB9O3zm0IOk+n14YpnSl2deR8=" 398 + [mod."github.com/gobwas/glob"] 399 + version = "v0.2.3" 400 + hash = "sha256-hYHMUdwxVkMOjSKjR7UWO0D0juHdI4wL8JEy5plu/Jc=" 395 401 [mod."github.com/goccy/go-json"] 396 402 version = "v0.10.5" 397 403 hash = "sha256-/EtlGihP0/7oInzMC5E0InZ4b5Ad3s4xOpqotloi3xw=" ··· 423 429 version = "v0.28.0" 424 430 hash = "sha256-86MSoJX3fovcAWir41Z34nM0HcaDh0yRA+lIiVA1gEM=" 425 431 [mod."github.com/google/go-querystring"] 426 - version = "v1.1.0" 427 - hash = "sha256-itsKgKghuX26czU79cK6C2n+lc27jm5Dw1XbIRgwZJY=" 432 + version = "v1.2.0" 433 + hash = "sha256-F/Ve4oDaEqho8RryvdGSRR22/DbYHWZQa6M60n6oSYM=" 428 434 [mod."github.com/google/uuid"] 429 435 version = "v1.6.0" 430 436 hash = "sha256-VWl9sqUzdOuhW0KzQlv0gwwUQClYkmZwSydHG2sALYw=" ··· 443 449 [mod."github.com/gorilla/websocket"] 444 450 version = "v1.5.4-0.20250319132907-e064f32e3674" 445 451 hash = "sha256-a8n6oe20JDpwThClgAyVhJDi6QVaS0qzT4PvRxlQ9to=" 452 + [mod."github.com/grafana/regexp"] 453 + version = "v0.0.0-20240607082908-2cb410fa05da" 454 + hash = "sha256-hPP11ZmL3sVidsZx+hs/Oq9WkwpvPImceEDlosXSd48=" 455 + [mod."github.com/grpc-ecosystem/go-grpc-middleware"] 456 + version = "v1.4.0" 457 + hash = "sha256-0UymBjkg41C9MPqkBLz/ZY9WbimZrabpJk+8C/X63h8=" 446 458 [mod."github.com/hashicorp/errwrap"] 447 459 version = "v1.1.0" 448 460 hash = "sha256-6lwuMQOfBq+McrViN3maJTIeh4f8jbEqvLy2c9FvvFw=" ··· 693 705 version = "v1.2.1-0.20220228012449-10b1cf09e00b" 694 706 hash = "sha256-77oWcDviIoGWHVAotbgmGRpLGpH5AUy+pM15pl3vRrw=" 695 707 [mod."github.com/pjbgf/sha1cd"] 696 - version = "v0.3.2" 697 - hash = "sha256-jdbiRhU8xc1C5c8m7BSCj71PUXHY3f7TWFfxDKKpUMk=" 708 + version = "v0.6.0" 709 + hash = "sha256-WC/sYIy9Iznlra87K9Gonn6/bo4a2aE+kvldecfBPfE=" 698 710 [mod."github.com/pkg/errors"] 699 711 version = "v0.9.1" 700 712 hash = "sha256-mNfQtcrQmu3sNg/7IwiieKWOgFQOVVe2yXgKBpe/wZw=" ··· 731 743 [mod."github.com/rivo/uniseg"] 732 744 version = "v0.4.7" 733 745 hash = "sha256-rDcdNYH6ZD8KouyyiZCUEy8JrjOQoAkxHBhugrfHjFo=" 746 + [mod."github.com/rs/xid"] 747 + version = "v1.6.0" 748 + hash = "sha256-rJB7h3KuH1DPp5n4dY3MiGnV1Y96A10lf5OUl+MLkzU=" 734 749 [mod."github.com/ryanuber/go-glob"] 735 750 version = "v1.0.0" 736 751 hash = "sha256-YkMl1utwUhi3E0sHK23ISpAsPyj4+KeXyXKoFYGXGVY=" ··· 744 759 [mod."github.com/sirupsen/logrus"] 745 760 version = "v1.9.3" 746 761 hash = "sha256-EnxsWdEUPYid+aZ9H4/iMTs1XMvCLbXZRDyvj89Ebms=" 762 + [mod."github.com/sourcegraph/go-ctags"] 763 + version = "v0.0.0-20250729094530-349a251d78d8" 764 + hash = "sha256-oiJkaAhWvGQ2BRgIz5LCkWTLf4q1hprIhaXSIHixQ9E=" 765 + [mod."github.com/sourcegraph/zoekt"] 766 + version = "v0.0.0-20260605122240-893a523804f1" 767 + hash = "sha256-B6YK5VO6/jBwzYrcGHJmJM8V235ZZBNReWEAITpnXKc=" 747 768 [mod."github.com/spaolacci/murmur3"] 748 769 version = "v1.1.0" 749 770 hash = "sha256-RWD4PPrlAsZZ8Xy356MBxpj+/NZI7w2XOU14Ob7/Y9M=" ··· 756 777 [mod."github.com/stretchr/testify"] 757 778 version = "v1.11.1" 758 779 hash = "sha256-sWfjkuKJyDllDEtnM8sb/pdLzPQmUYWYtmeWz/5suUc=" 780 + [mod."github.com/tetratelabs/wazero"] 781 + version = "v1.9.0" 782 + hash = "sha256-b8D0cDMuDgyjvJ6LFY8REdcL95BIjM27SeOEQWfB0+0=" 759 783 [mod."github.com/tidwall/gjson"] 760 784 version = "v1.18.0" 761 785 hash = "sha256-CO6hqDu8Y58Po6A01e5iTpwiUBQ5khUZsw7czaJHw0I=" ··· 786 810 [mod."github.com/vmihailenco/tagparser/v2"] 787 811 version = "v2.0.0" 788 812 hash = "sha256-M9QyaKhSmmYwsJk7gkjtqu9PuiqZHSmTkous8VWkWY0=" 813 + [mod."github.com/wasilibs/go-re2"] 814 + version = "v1.10.0" 815 + hash = "sha256-SS7n0PBvUG0sQuToeOQHOe14Fwm6p03v0lYQwE7mv1Q=" 816 + [mod."github.com/wasilibs/wazero-helpers"] 817 + version = "v0.0.0-20240620070341-3dff1577cd52" 818 + hash = "sha256-loW4TnvFCiR2VXlGIoA6waZmXk2jxZyhq5wImdvm3Ig=" 789 819 [mod."github.com/whyrusleeping/cbor-gen"] 790 820 version = "v0.3.1" 791 821 hash = "sha256-PAd8M2Z8t6rVRBII+Rg8Bz+QaJIwbW64bfyqsv31kgc=" ··· 823 853 version = "v0.65.0" 824 854 hash = "sha256-fP/2TfGR6TcCH/ALHCAR2qHJlAJrCi8EU0OY1dRcf8U=" 825 855 [mod."go.opentelemetry.io/otel"] 826 - version = "v1.40.0" 827 - hash = "sha256-Cu9ZCLMAd9kGsmpnvoyqwm0IkF4Uk6Xo+8OsP9l+wUQ=" 856 + version = "v1.43.0" 857 + hash = "sha256-oRemJUZhA7AzfUoBbRVA32u/XhMpipxLywHoJ1qsHBs=" 828 858 [mod."go.opentelemetry.io/otel/metric"] 829 - version = "v1.40.0" 830 - hash = "sha256-+84fJNAYQ0A5DzH1YjHXCo162GgB7r19PsTHiAP9C8k=" 859 + version = "v1.43.0" 860 + hash = "sha256-iUfx5AvN2oiqlh2v8/oFa+2jm8RX4kbb6X1EOKRyPPw=" 831 861 [mod."go.opentelemetry.io/otel/trace"] 832 - version = "v1.40.0" 833 - hash = "sha256-oPA3DfQ5vXhlVkBPksu/kKYBSrssefq4vtnd4vm9K8w=" 862 + version = "v1.43.0" 863 + hash = "sha256-LLx1PjBGzDwZ3//Gp14R1DCMlnMCzFxnGYqVUz5jTmk=" 834 864 [mod."go.uber.org/atomic"] 835 865 version = "v1.11.0" 836 866 hash = "sha256-TyYws/cSPVqYNffFX0gbDml1bD4bBGcysrUWU7mHPIY=" ··· 847 877 version = "v0.51.0" 848 878 hash = "sha256-/R74sc1mcOaOuBeXRQzrXrHAgA5VhNWc6SfQJaxb17U=" 849 879 [mod."golang.org/x/exp"] 850 - version = "v0.0.0-20260112195511-716be5621a96" 851 - hash = "sha256-rWqwXzLvvhcI/ZkOQMqCXMKI5FAuHd9YNoKTXujmboA=" 880 + version = "v0.0.0-20260410095643-746e56fc9e2f" 881 + hash = "sha256-JaDJGLIRoJjjvsg3dgfFuo7XApEJO2V4kUDmd58qTLI=" 852 882 [mod."golang.org/x/image"] 853 883 version = "v0.31.0" 854 884 hash = "sha256-ZFTlu9+4QToPPLA8C5UcG2eq/lQylq81RoG/WtYo9rg=" ··· 868 898 version = "v0.37.0" 869 899 hash = "sha256-8XDOnlPIybcDRy89fkjG5VqtIt5Ku+LmaqYhgKl7i1E=" 870 900 [mod."golang.org/x/time"] 871 - version = "v0.12.0" 872 - hash = "sha256-Cp3oxrCMH2wyxjzr5SHVmyhgaoUuSl56Uy00Q7DYEpw=" 901 + version = "v0.14.0" 902 + hash = "sha256-fVjpq0ieUHVEOTSElDVleMWvfdcqojZchqdUXiC7NnY=" 873 903 [mod."golang.org/x/tools"] 874 904 version = "v0.44.0" 875 905 hash = "sha256-xuj5FLtSJsAojLLTLXtPdLAIFNTKoVFbDMuqRXmj2W4=" ··· 877 907 version = "v0.0.0-20240903120638-7835f813f4da" 878 908 hash = "sha256-bE7CcrnAvryNvM26ieJGXqbAtuLwHaGcmtVMsVnksqo=" 879 909 [mod."google.golang.org/genproto/googleapis/api"] 880 - version = "v0.0.0-20260209200024-4cfbd4190f57" 881 - hash = "sha256-2C7DZwLpDDdmUhVUcRDaotbtkhQFOQ9a1SsdVC8lOqc=" 910 + version = "v0.0.0-20260401024825-9d38bb4040a9" 911 + hash = "sha256-BXg1F9SwkNalLgqbjfpmr+KcFrZcZXuubJh990f+1mI=" 882 912 [mod."google.golang.org/genproto/googleapis/rpc"] 883 - version = "v0.0.0-20260209200024-4cfbd4190f57" 884 - hash = "sha256-gdgUw1LzgVOrarF1cGBUI9uoaR/d6lur2RwxUDKnOZA=" 913 + version = "v0.0.0-20260401024825-9d38bb4040a9" 914 + hash = "sha256-ldJTTb7hhj1mdmzTn9IEkQVwCoj3KRlENZtUSEKHABU=" 915 + [mod."google.golang.org/grpc"] 916 + version = "v1.80.0" 917 + hash = "sha256-+p50KGJvGWdpB/4f0h477dCAfoOL5m2PzG8BGOekVgY=" 885 918 [mod."google.golang.org/protobuf"] 886 919 version = "v1.36.11" 887 920 hash = "sha256-7W+6jntfI/awWL3JP6yQedxqP5S9o3XvPgJ2XxxsIeE="