diff --git a/.dockerignore b/.dockerignore
index 99c0f78..57de730 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -22,7 +22,6 @@ cover.out
# CI/CD and development files
.github/
-Makefile
docker-compose*.yml
# Test data
diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml
index ab0b1c3..3ce6451 100644
--- a/.github/workflows/docker-publish.yml
+++ b/.github/workflows/docker-publish.yml
@@ -7,6 +7,8 @@ env:
on:
push:
+ branches:
+ - development
tags:
- v*
@@ -218,8 +220,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- - name: Generate token for infrastructure dispatch (main)
- id: infra-dispatch-token-main
+ - name: Generate token for infrastructure dispatch (development)
+ id: infra-dispatch-token-dev
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2
with:
app-id: ${{ secrets.GH_APP_ID }}
@@ -227,11 +229,11 @@ jobs:
owner: getoptimum
repositories: infrastructure
- - name: Trigger Ansible deploy (main)
+ - name: Trigger Ansible deploy (development)
run: |
gh api repos/getoptimum/infrastructure/dispatches \
-f event_type=deploy_gateways \
-f "client_payload[tag]=dev-latest" \
-f "client_payload[digest]=${{ needs.docker.outputs.digest }}"
env:
- GH_TOKEN: ${{ steps.infra-dispatch-token-main.outputs.token }}
+ GH_TOKEN: ${{ steps.infra-dispatch-token-dev.outputs.token }}
diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml
index 276e3e6..471e522 100644
--- a/.github/workflows/integration.yml
+++ b/.github/workflows/integration.yml
@@ -82,6 +82,11 @@ jobs:
go-version: ${{ env.go-version }}
- name: Install dependencies
run: go mod download
+ - name: Run rlnc-server
+ run: |
+ make run-rlnc-server &
+ timeout 120s bash -c 'until compgen -G "/dev/shm/go_shm_rlnc_semaphore_mump2p-protocol_lane*" >/dev/null; do
+ sleep 1; done'
- name: Run tests
run: CI_RUN="true" PROMETHEUS_VALIDATION_SCHEME=legacy make test
- name: Measure test coverage
@@ -92,4 +97,4 @@ jobs:
continue-on-error: true # first run requires the repo wiki to be initialized once
uses: ncruces/go-coverage-report@dfc237255099f2d25066babde51253992175e365 # v0.3.2
with:
- coverage-file: cover.out
\ No newline at end of file
+ coverage-file: cover.out
diff --git a/.github/workflows/security-scan.yml b/.github/workflows/security-scan.yml
index 3baa04b..837a34c 100644
--- a/.github/workflows/security-scan.yml
+++ b/.github/workflows/security-scan.yml
@@ -246,7 +246,7 @@ jobs:
owner: getoptimum
# Scoped to this repo (push target) plus the private module deps that
# `go` must fetch to build the branch-tip SBOM, not the whole org.
- repositories: optimum-gateway,optimum-common,optimum-p2p,rlnc
+ repositories: optimum-gateway,optimum-common,optimum-p2p,mump2p-protocol,rlnc,shm
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
ref: ${{ github.head_ref }}
diff --git a/AGENTS.md b/AGENTS.md
index 0f294aa..bf7ba84 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -2,7 +2,7 @@
## Project Overview
-**Optimum Gateway** is a single-process gossipsub relay that bridges Ethereum Consensus Layer (CL) libp2p traffic with the mump2p mesh. It:
+**Optimum Gateway** is a gossipsub relay that bridges Ethereum Consensus Layer (CL) libp2p traffic with the mump2p mesh. The gateway process uses a required local `rlnc-server` companion for RLNC coding over shared memory. It:
- Subscribes to Ethereum gossip topics (via local libp2p)
- Forwards messages to mump2p peers
@@ -19,6 +19,7 @@ cmd/main.go
├── gossipsub_gateway.Service (Main relay; runs two p2p loops)
│ ├── libp2p host + subscriptions (CL-side gossipsub)
│ ├── mum_p2p.Node (mump2p-side mesh; pkg/service/mum_p2p)
+│ │ └── SHM client (local rlnc-server; 20 lanes named mump2p-protocol)
│ ├── aggregator.Service (Batch attestations into containers)
│ └── channels: clMessages, mumP2PMessages
├── telemetry service (Prometheus, Loki, Mimir pushers)
@@ -38,6 +39,8 @@ cmd/main.go
```bash
make build # Builds into ./bin/optimum-gateway
+make build-rlnc-server # Builds the required ./bin/rlnc-server companion
+make run-rlnc-server # Runs the RLNC shared-memory server
make run # go run cmd/main.go -config config/app_conf.yml
make test # Go test suite; coverage is reported here, threshold checked by make coverage
make lint # Installs/runs golangci-lint on ./... (see Makefile)
@@ -45,6 +48,8 @@ make proto # Regenerate Go from .proto files
make vulcheck # govulncheck with hardcoded exception list
```
+Keep `make run-rlnc-server` running in a separate terminal before `make run` or `make test`. The run target builds the RLNC server on first use.
+
### Proto & Code Generation
Proto files define gRPC and aggregation messages:
@@ -124,14 +129,15 @@ Gateway calls `filterAndBuildEthTopics()` to expand shorts into fulls using fork
## Integration Points & Dependencies
-| Dependency | Purpose | Notes |
-| ------------------------------------ | ---------------------------------------------------- | ----------------------------------------------- |
-| github.com/libp2p/go-libp2p | libp2p host & gossipsub | Local CL peering |
-| github.com/getoptimum/optimum-p2p | mump2p gossipsub (RLNC) | Used by `pkg/service/mum_p2p` |
-| github.com/getoptimum/optimum-common | Shared types, logger, config | Utilities, auth claims |
-| github.com/libp2p/go-libp2p-kad-dht | mump2p peer discovery | Used by `pkg/service/mum_p2p/dhtdiscovery` |
-| github.com/prometheus/client_golang | Metrics export | Local Prometheus scrape |
-| github.com/gofiber/fiber/v3 | HTTP API | `/`, `/api/v1/self_info`, `/metrics`, `/health` |
+| Dependency | Purpose | Notes |
+| --------------------------------------- | ---------------------------------------- | -------------------------------------------------------- |
+| github.com/libp2p/go-libp2p | libp2p host & gossipsub | Local CL peering |
+| github.com/getoptimum/mump2p-protocol | RLNC-enabled mump2p pubsub and SHM client | Used by `pkg/service/mum_p2p` |
+| github.com/getoptimum/rlnc | RLNC shared-memory server | Built by `make build-rlnc-server` |
+| github.com/getoptimum/optimum-common | Shared types, logger, config | Utilities, auth claims |
+| github.com/libp2p/go-libp2p-kad-dht | mump2p peer discovery | Used by `pkg/service/mum_p2p/dhtdiscovery` |
+| github.com/prometheus/client_golang | Metrics export | Local Prometheus scrape |
+| github.com/gofiber/fiber/v3 | HTTP API | `/`, `/api/v1/self_info`, `/metrics`, `/health` |
## Security Trust Model
@@ -382,4 +388,4 @@ Your implementation must make the codebase better in the narrowest way needed to
Write less.
Change less.
Break less.
-Explain exactly what changed.
\ No newline at end of file
+Explain exactly what changed.
diff --git a/Dockerfile b/Dockerfile
index 0801b56..0c01369 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -5,7 +5,7 @@ FROM --platform=$BUILDPLATFORM golang:1.26.6-alpine AS builder
ARG TARGETPLATFORM
ARG BUILDPLATFORM
-RUN apk add --no-cache build-base git clang lld openssh-client
+RUN apk add --no-cache build-base git clang lld openssh-client bash
COPY --from=xx / /
@@ -46,6 +46,8 @@ RUN --mount=type=cache,target=/root/.cache/go-build \
--mount=type=cache,target=/go/pkg/mod \
go build -o /gateway/optimum-gateway ./cmd
+RUN make RLNC_SERVER_OUTPUT=/gateway/bin/rlnc-server build-rlnc-server
+
FROM alpine:3.22
RUN apk upgrade --no-cache && \
@@ -61,12 +63,16 @@ WORKDIR /gateway
RUN mkdir -p /gateway/logs
COPY --from=builder /gateway/optimum-gateway /optimum-gateway
+COPY --from=builder /gateway/bin/rlnc-server /rlnc-server
+COPY --from=builder /optimum-gateway/docker-entrypoint.sh /docker-entrypoint.sh
# License, patent marking and third-party attribution shipped with the binary.
COPY --from=builder /optimum-gateway/LICENSE /optimum-gateway/NOTICE /optimum-gateway/PATENTS /optimum-gateway/THIRD-PARTY-NOTICES.md /usr/share/doc/optimum-gateway/
# USER gateway
+#RUN /rlnc-server --lanes 20 --name mump2p-protocol &
EXPOSE 33212 33213 48123
-ENTRYPOINT ["/optimum-gateway"]
+RUN chmod +x /docker-entrypoint.sh
+ENTRYPOINT ["/docker-entrypoint.sh"]
diff --git a/Makefile b/Makefile
index 76e5be7..4a56747 100644
--- a/Makefile
+++ b/Makefile
@@ -11,6 +11,13 @@ COVERAGE_PASS_THRESHOLD := $(shell echo "$(COVERAGE_TOTAL) $(COVERAGE_THRESHOLD)
# (#955/#951) so the impact is bounded. Rationale in govulncheck.yaml and #924.
VULN_EXCEPTION_NAMES := ["GO-2024-3218"]
+RLNC_VERSION ?= v0.10.0
+RLNC_REPOSITORY ?= https://github.com/getoptimum/rlnc.git
+RLNC_SERVER_OUTPUT ?= ./bin/rlnc-server
+
+GO_LICENSES_RUN := go run github.com/google/go-licenses@v1.6.0
+CYCLONEDX_RUN := go run github.com/CycloneDX/cyclonedx-gomod/cmd/cyclonedx-gomod@v1.10.0
+
help: ## Show help
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
@@ -66,8 +73,19 @@ build: ## Builds binary
@echo "-- building binary"
go build -o ./bin/optimum-gateway ./cmd
-GO_LICENSES_RUN := go run github.com/google/go-licenses@v1.6.0
-CYCLONEDX_RUN := go run github.com/CycloneDX/cyclonedx-gomod/cmd/cyclonedx-gomod@v1.10.0
+build-rlnc-server:
+ rm -rf /tmp/rlnc
+ git clone --depth 1 --branch "$(RLNC_VERSION)" "$(RLNC_REPOSITORY)" /tmp/rlnc
+ echo "⚙️ Building RLNC server binary...";
+ (cd "/tmp/rlnc" && CGO_ENABLED=1 go build -ldflags "-linkmode=external" -o "$(abspath $(RLNC_SERVER_OUTPUT))" ./cmd/rlnc-server);
+ echo "✅ RLNC server built at $(abspath $(RLNC_SERVER_OUTPUT))"
+
+run-rlnc-server: ## Run RLNC server. if binary not exist it will build it first
+ @echo "-- running rlnc-server"
+ @if [ ! -f "./bin/rlnc-server" ]; then \
+ $(MAKE) build-rlnc-server; \
+ fi
+ ./bin/rlnc-server --lanes 20 --name mump2p-protocol
license-check: ## Check shipped binary (./cmd) deps for strong copyleft (strict)
@echo "Running license check (shipped binary)..."
@@ -131,6 +149,6 @@ fastssz-generate: ## Vendor fastssz spectests SSZ types into pkg/protocol/fastss
@rm -f pkg/protocol/fastssz_codegen/*_test.go pkg/protocol/fastssz_codegen/cmp.go
@echo "fastssz code vendored at pkg/protocol/fastssz_codegen/"
-.PHONY: fastssz-generate
-.PHONY: help test lint coverage vulcheck build deps proto run run_cl build_hermes_image run_gateway_with_sidecar license-check license-check-test notices sbom sbom-binary sbom-full
+.PHONY: help test lint coverage vulcheck build deps proto run run_cl build_hermes_image run_gateway_with_sidecar
+.PHONY: license-check license-check-test notices sbom sbom-binary sbom-full build-rlnc-server fastssz-generate run-rlnc-server
.DEFAULT_GOAL := help
diff --git a/README.md b/README.md
index c9c8c93..c993b73 100644
--- a/README.md
+++ b/README.md
@@ -54,15 +54,19 @@ flowchart LR
LP <--> CORE <--> MP
end
+ RLNC["Local rlnc-server
20 shared-memory lanes"]
MESH["Other gateways
mump2p mesh"]
CL <-->|"gossip (ssz_snappy)"| LP
+ MP <-->|"shared memory"| RLNC
MP <-->|"RLNC mump2p"| MESH
classDef ext fill:#eef,stroke:#88a,color:#225;
- class CL,BS,RLNC,MESH,OBS ext;
+ class CL,RLNC,MESH ext;
```
+The gateway uses `mump2p-protocol` for RLNC-enabled pubsub and delegates RLNC coding to the required local `rlnc-server` process over shared memory.
+
### Message flow
#### Ethereum CL → mump2p mesh
@@ -105,14 +109,19 @@ docker run --name optimum-gateway --rm \
### Run from source
-Requires **Go 1.26+**.
+Requires **Go 1.26+**, Git, and a working CGO/C toolchain.
```sh
git clone https://github.com/getoptimum/optimum-gateway
cd optimum-gateway
cp config/sample.app_conf.yml config/app_conf.yml
-make build # builds ./bin/optimum-gateway
-make run # go run cmd/main.go -config config/app_conf.yml
+make build # builds ./bin/optimum-gateway
+
+# terminal 1; builds ./bin/rlnc-server on first use
+make run-rlnc-server
+
+# terminal 2
+make run # go run cmd/main.go -config config/app_conf.yml
```
### Connect your CL client
@@ -195,13 +204,17 @@ For debugging Prysm from source, patch the flags noted in [`guide.md`](guide.md)
## Make targets
```sh
-make help # list all targets
-make build # build the binary
-make test # unit + integration tests with coverage
-make lint # golangci-lint
-make vulcheck # govulncheck (with documented exception list)
+make help # list all targets
+make build # build the gateway binary
+make build-rlnc-server # build ./bin/rlnc-server from getoptimum/rlnc
+make run-rlnc-server # run the required local RLNC shared-memory server
+make test # unit + integration tests with coverage
+make lint # golangci-lint
+make vulcheck # govulncheck (with documented exception list)
```
+Keep `make run-rlnc-server` running in a separate terminal before `make run` or `make test`.
+
## Documentation
- [Integration guide for validators](guide.md)
diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md
index 5bcc09a..44c2878 100644
--- a/THIRD-PARTY-NOTICES.md
+++ b/THIRD-PARTY-NOTICES.md
@@ -12,15 +12,15 @@ distributed with this binary.
Attribution notices required by these licenses (Apache-2.0 §4 and the upstream
`NOTICE` files it references) are reproduced in the accompanying `NOTICE` file.
-Total distributed third-party packages: 234
+Total distributed third-party packages: 246
## Summary
| License | Packages |
| --- | --- |
-| MIT | 99 |
-| Apache-2.0 | 78 |
-| BSD-3-Clause | 42 |
+| MIT | 108 |
+| Apache-2.0 | 79 |
+| BSD-3-Clause | 44 |
| BSD-2-Clause | 6 |
| ISC | 4 |
| MPL-2.0 | 4 |
@@ -45,9 +45,13 @@ Total distributed third-party packages: 234
- [github.com/davidlazar/go-crypto/salsa20](https://github.com/davidlazar/go-crypto/blob/b73af7476f6c/LICENSE)
- [github.com/dennwc/varint](https://github.com/dennwc/varint/blob/v1.0.0/LICENSE)
- [github.com/emicklei/dot](https://github.com/emicklei/dot/blob/v1.9.1/LICENSE)
-- [github.com/felixge/httpsnoop](https://github.com/felixge/httpsnoop/blob/v1.0.4/LICENSE.txt)
+- [github.com/felixge/httpsnoop](https://github.com/felixge/httpsnoop/blob/v1.1.0/LICENSE.txt)
- [github.com/ferranbt/fastssz](https://github.com/ferranbt/fastssz/blob/0b1f38e43198/LICENSE)
- [github.com/fxamacker/cbor/v2](https://github.com/fxamacker/cbor/blob/v2.9.2/LICENSE)
+- [github.com/gabriel-vasile/mimetype](https://github.com/gabriel-vasile/mimetype/blob/v1.4.13/LICENSE)
+- [github.com/go-playground/locales](https://github.com/go-playground/locales/blob/v0.14.1/LICENSE)
+- [github.com/go-playground/universal-translator](https://github.com/go-playground/universal-translator/blob/v0.18.1/LICENSE)
+- [github.com/go-playground/validator/v10](https://github.com/go-playground/validator/blob/v10.30.2/LICENSE)
- [github.com/go-viper/mapstructure/v2](https://github.com/go-viper/mapstructure/blob/v2.5.0/LICENSE)
- [github.com/gobwas/glob](https://github.com/gobwas/glob/blob/v0.2.3/LICENSE)
- [github.com/gofiber/fiber/v3](https://github.com/gofiber/fiber/blob/v3.4.0/LICENSE)
@@ -60,14 +64,19 @@ Total distributed third-party packages: 234
- [github.com/ipfs/go-log/v2](https://github.com/ipfs/go-log/blob/v2.6.0/LICENSE)
- [github.com/ipld/go-ipld-prime](https://github.com/ipld/go-ipld-prime/blob/v0.21.0/LICENSE)
- [github.com/jbenet/go-temp-err-catcher](https://github.com/jbenet/go-temp-err-catcher/blob/v0.1.0/LICENSE)
+- [github.com/jellydator/ttlcache/v3](https://github.com/jellydator/ttlcache/blob/v3.4.0/LICENSE)
- [github.com/jpillora/backoff](https://github.com/jpillora/backoff/blob/v1.0.0/LICENSE)
- [github.com/json-iterator/go](https://github.com/json-iterator/go/blob/v1.1.12/LICENSE)
- [github.com/klauspost/compress/zstd/internal/xxhash](https://github.com/klauspost/compress/blob/v1.19.1/zstd/internal/xxhash/LICENSE.txt)
- [github.com/klauspost/cpuid/v2](https://github.com/klauspost/cpuid/blob/v2.3.0/LICENSE)
- [github.com/knadh/koanf/maps](https://github.com/knadh/koanf/blob/maps/v0.1.2/maps/LICENSE)
+- [github.com/knadh/koanf/parsers/yaml](https://github.com/knadh/koanf/blob/parsers/yaml/v1.1.0/parsers/yaml/LICENSE)
- [github.com/knadh/koanf/providers/confmap](https://github.com/knadh/koanf/blob/providers/confmap/v1.0.0/providers/confmap/LICENSE)
-- [github.com/knadh/koanf/v2](https://github.com/knadh/koanf/blob/v2.3.3/LICENSE)
+- [github.com/knadh/koanf/providers/env/v2](https://github.com/knadh/koanf/blob/providers/env/v2.0.0/providers/env/LICENSE)
+- [github.com/knadh/koanf/providers/file](https://github.com/knadh/koanf/blob/providers/file/v1.2.1/providers/file/LICENSE)
+- [github.com/knadh/koanf/v2](https://github.com/knadh/koanf/blob/v2.3.4/LICENSE)
- [github.com/koron/go-ssdp](https://github.com/koron/go-ssdp/blob/v0.0.6/LICENSE)
+- [github.com/leodido/go-urn](https://github.com/leodido/go-urn/blob/v1.4.0/LICENSE)
- [github.com/libp2p/go-buffer-pool](https://github.com/libp2p/go-buffer-pool/blob/v0.1.0/LICENSE)
- [github.com/libp2p/go-cidranger](https://github.com/libp2p/go-cidranger/blob/v1.1.0/LICENSE)
- [github.com/libp2p/go-flow-metrics](https://github.com/libp2p/go-flow-metrics/blob/v0.2.0/LICENSE)
@@ -163,7 +172,7 @@ Total distributed third-party packages: 234
- [github.com/jackpal/go-nat-pmp](https://github.com/jackpal/go-nat-pmp/blob/v1.0.2/LICENSE)
- [github.com/klauspost/compress](https://github.com/klauspost/compress/blob/v1.19.1/LICENSE)
- [github.com/kylelemons/godebug](https://github.com/kylelemons/godebug/blob/v1.1.0/LICENSE)
-- [github.com/libp2p/go-libp2p-pubsub](https://github.com/libp2p/go-libp2p-pubsub/blob/41b11d5cb1a7/LICENSE-APACHE)
+- [github.com/libp2p/go-libp2p-pubsub](https://github.com/libp2p/go-libp2p-pubsub/blob/v0.17.0/LICENSE-APACHE)
- [github.com/libp2p/go-libp2p/p2p/net/nat/internal/nat](https://github.com/libp2p/go-libp2p/blob/v0.48.0/p2p/net/nat/internal/nat/LICENSE)
- [github.com/libp2p/go-libp2p/p2p/transport/websocket](https://github.com/libp2p/go-libp2p/blob/v0.48.0/p2p/transport/websocket/LICENSE-APACHE)
- [github.com/minio/sha256-simd](https://github.com/minio/sha256-simd/blob/v1.0.1/LICENSE)
@@ -185,6 +194,7 @@ Total distributed third-party packages: 234
- [github.com/prometheus/prometheus](https://github.com/prometheus/prometheus/blob/v0.311.3/LICENSE)
- [github.com/prometheus/sigv4](https://github.com/prometheus/sigv4/blob/v0.4.1/LICENSE)
- [github.com/puzpuzpuz/xsync/v4](https://github.com/puzpuzpuz/xsync/blob/v4.4.0/LICENSE)
+- [github.com/spf13/cobra](https://github.com/spf13/cobra/blob/v1.10.2/LICENSE.txt)
- [go.opentelemetry.io/auto/sdk](https://github.com/open-telemetry/opentelemetry-go-instrumentation/blob/sdk/v1.2.1/sdk/LICENSE)
- [go.opentelemetry.io/collector/component](https://github.com/open-telemetry/opentelemetry-collector/blob/component/v1.54.0/component/LICENSE)
- [go.opentelemetry.io/collector/confmap](https://github.com/open-telemetry/opentelemetry-collector/blob/confmap/v1.54.0/confmap/LICENSE)
@@ -196,12 +206,12 @@ Total distributed third-party packages: 234
- [go.opentelemetry.io/collector/pipeline](https://github.com/open-telemetry/opentelemetry-collector/blob/pipeline/v1.54.0/pipeline/LICENSE)
- [go.opentelemetry.io/collector/processor](https://github.com/open-telemetry/opentelemetry-collector/blob/processor/v1.54.0/processor/LICENSE)
- [go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace](https://github.com/open-telemetry/opentelemetry-go-contrib/blob/instrumentation/net/http/httptrace/otelhttptrace/v0.67.0/instrumentation/net/http/httptrace/otelhttptrace/LICENSE)
-- [go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp](https://github.com/open-telemetry/opentelemetry-go-contrib/blob/instrumentation/net/http/otelhttp/v0.68.0/instrumentation/net/http/otelhttp/LICENSE)
-- [go.opentelemetry.io/otel](https://github.com/open-telemetry/opentelemetry-go/blob/v1.43.0/LICENSE)
-- [go.opentelemetry.io/otel/metric](https://github.com/open-telemetry/opentelemetry-go/blob/metric/v1.43.0/metric/LICENSE)
-- [go.opentelemetry.io/otel/trace](https://github.com/open-telemetry/opentelemetry-go/blob/trace/v1.43.0/trace/LICENSE)
+- [go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp](https://github.com/open-telemetry/opentelemetry-go-contrib/blob/instrumentation/net/http/otelhttp/v0.69.0/instrumentation/net/http/otelhttp/LICENSE)
+- [go.opentelemetry.io/otel](https://github.com/open-telemetry/opentelemetry-go/blob/v1.44.0/LICENSE)
+- [go.opentelemetry.io/otel/metric](https://github.com/open-telemetry/opentelemetry-go/blob/metric/v1.44.0/metric/LICENSE)
+- [go.opentelemetry.io/otel/trace](https://github.com/open-telemetry/opentelemetry-go/blob/trace/v1.44.0/trace/LICENSE)
- [go.yaml.in/yaml/v2](https://github.com/yaml/go-yaml/blob/v2.4.4/LICENSE)
-- [google.golang.org/genproto/googleapis/rpc/status](https://github.com/googleapis/go-genproto/blob/0a33c5d7ca68/googleapis/rpc/LICENSE)
+- [google.golang.org/genproto/googleapis/rpc/status](https://github.com/googleapis/go-genproto/blob/7ab31c22f7ad/googleapis/rpc/LICENSE)
- [google.golang.org/grpc](https://github.com/grpc/grpc-go/blob/v1.82.1/LICENSE)
- [gopkg.in/yaml.v2](https://github.com/go-yaml/yaml/blob/v2.4.0/LICENSE)
- [k8s.io/apimachinery/pkg](https://github.com/kubernetes/apimachinery/blob/v0.35.3/LICENSE)
@@ -222,6 +232,7 @@ Total distributed third-party packages: 234
- [github.com/aws/smithy-go/internal/sync/singleflight](https://github.com/aws/smithy-go/blob/v1.24.2/internal/sync/singleflight/LICENSE)
- [github.com/dunglas/httpsfv](https://github.com/dunglas/httpsfv/blob/v1.1.0/LICENSE)
- [github.com/flynn/noise](https://github.com/flynn/noise/blob/v1.1.0/LICENSE)
+- [github.com/fsnotify/fsnotify](https://github.com/fsnotify/fsnotify/blob/v1.9.0/LICENSE)
- [github.com/gofiber/schema](https://github.com/gofiber/schema/blob/v1.8.0/LICENSE)
- [github.com/gogo/protobuf](https://github.com/gogo/protobuf/blob/v1.3.2/LICENSE)
- [github.com/golang/snappy](https://github.com/golang/snappy/blob/v1.0.0/LICENSE)
@@ -242,12 +253,13 @@ Total distributed third-party packages: 234
- [github.com/pmezard/go-difflib/difflib](https://github.com/pmezard/go-difflib/blob/5d4384ee4fb2/LICENSE)
- [github.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil](https://github.com/prometheus/client_golang/blob/v1.24.1/internal/github.com/golang/gddo/LICENSE)
- [github.com/spaolacci/murmur3](https://github.com/spaolacci/murmur3/blob/v1.1.0/LICENSE)
+- [github.com/spf13/pflag](https://github.com/spf13/pflag/blob/v1.0.10/LICENSE)
- [github.com/wlynxg/anet](https://github.com/wlynxg/anet/blob/v0.0.5/LICENSE)
- [golang.org/x/crypto](https://cs.opensource.google/go/x/crypto/+/v0.54.0:LICENSE)
-- [golang.org/x/exp](https://cs.opensource.google/go/x/exp/+/74f9aab9:LICENSE)
+- [golang.org/x/exp](https://cs.opensource.google/go/x/exp/+/c48552f4:LICENSE)
- [golang.org/x/net](https://cs.opensource.google/go/x/net/+/v0.57.0:LICENSE)
- [golang.org/x/oauth2](https://cs.opensource.google/go/x/oauth2/+/v0.36.0:LICENSE)
-- [golang.org/x/sync/errgroup](https://cs.opensource.google/go/x/sync/+/v0.22.0:LICENSE)
+- [golang.org/x/sync](https://cs.opensource.google/go/x/sync/+/v0.22.0:LICENSE)
- [golang.org/x/sys](https://cs.opensource.google/go/x/sys/+/v0.47.0:LICENSE)
- [golang.org/x/term](https://cs.opensource.google/go/x/term/+/v0.45.0:LICENSE)
- [golang.org/x/text](https://cs.opensource.google/go/x/text/+/v0.40.0:LICENSE)
diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh
new file mode 100644
index 0000000..437b8da
--- /dev/null
+++ b/docker-entrypoint.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+set -u
+
+/rlnc-server --lanes 20 --name mump2p-protocol &
+rlnc_pid=$!
+
+/optimum-gateway "$@" &
+gateway_pid=$!
+
+cleanup() {
+ kill -TERM "$gateway_pid" "$rlnc_pid" 2>/dev/null || true
+ wait "$gateway_pid" "$rlnc_pid" 2>/dev/null || true
+}
+
+trap cleanup INT TERM EXIT
+
+wait "$gateway_pid"
+status=$?
+exit "$status"
diff --git a/docs/contributing.md b/docs/contributing.md
index 406d647..456d0bd 100644
--- a/docs/contributing.md
+++ b/docs/contributing.md
@@ -17,8 +17,14 @@ git remote add upstream git@github.com:getoptimum/optimum-gateway.git
```
```bash
-make build # Verify it compiles
-make test # Run unit tests
+make build # Verify the gateway compiles
+make run-rlnc-server # Keep the required RLNC server running in this terminal
+```
+
+In a separate terminal:
+
+```bash
+make test # Run tests with the RLNC server available
make run # Run the service locally
```
@@ -43,6 +49,7 @@ Here are some ways you can contribute:
Before submitting, ensure:
+* [ ] `make run-rlnc-server` is running before tests
* [ ] `make test` passes (including coverage)
* [ ] `make lint` passes (we use `golangci-lint`)
* [ ] Your code is formatted using `go fmt`
diff --git a/docs/sbom-full.json b/docs/sbom-full.json
index 6c7298e..2b8369a 100644
--- a/docs/sbom-full.json
+++ b/docs/sbom-full.json
@@ -161,18 +161,18 @@
}
},
{
- "bom-ref": "pkg:golang/buf.build/gen/go/bufbuild/registry/connectrpc/go@v1.20.0-20260507063250-43b0c5a6cd08.1?type=module",
+ "bom-ref": "pkg:golang/buf.build/gen/go/bufbuild/registry/connectrpc/go@v1.20.0-20260610134905-7e419c5bd258.1?type=module",
"type": "library",
"name": "buf.build/gen/go/bufbuild/registry/connectrpc/go",
- "version": "v1.20.0-20260507063250-43b0c5a6cd08.1",
+ "version": "v1.20.0-20260610134905-7e419c5bd258.1",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "7fca5ae22cb506cfa1435e9fde3836dab57f4ad0ca2118f5acd3565f9acbc19f"
+ "content": "c847440e34c5c31818bffde798ac5015004e515ce1f1551bb96bbd83ac9a633f"
}
],
- "purl": "pkg:golang/buf.build/gen/go/bufbuild/registry/connectrpc/go@v1.20.0-20260507063250-43b0c5a6cd08.1?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/buf.build/gen/go/bufbuild/registry/connectrpc/go@v1.20.0-20260610134905-7e419c5bd258.1?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -184,18 +184,18 @@
}
},
{
- "bom-ref": "pkg:golang/buf.build/gen/go/bufbuild/registry/protocolbuffers/go@v1.36.11-20260507063250-43b0c5a6cd08.1?type=module",
+ "bom-ref": "pkg:golang/buf.build/gen/go/bufbuild/registry/protocolbuffers/go@v1.36.11-20260610134905-7e419c5bd258.1?type=module",
"type": "library",
"name": "buf.build/gen/go/bufbuild/registry/protocolbuffers/go",
- "version": "v1.36.11-20260507063250-43b0c5a6cd08.1",
+ "version": "v1.36.11-20260610134905-7e419c5bd258.1",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "40ad8691c3f1aa1da81b99933001de8dcba5ba7f27c6da3ea7b9a5821f1f3d33"
+ "content": "90333a874518fa479ac951e593a4234f38f0db6247e2e9e0f6db8be87e2fa691"
}
],
- "purl": "pkg:golang/buf.build/gen/go/bufbuild/registry/protocolbuffers/go@v1.36.11-20260507063250-43b0c5a6cd08.1?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/buf.build/gen/go/bufbuild/registry/protocolbuffers/go@v1.36.11-20260610134905-7e419c5bd258.1?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -2290,18 +2290,18 @@
}
},
{
- "bom-ref": "pkg:golang/github.com/bufbuild/buf@v1.70.0?type=module",
+ "bom-ref": "pkg:golang/github.com/bufbuild/buf@v1.71.0?type=module",
"type": "library",
"name": "github.com/bufbuild/buf",
- "version": "v1.70.0",
+ "version": "v1.71.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "ac62f84c6a32f05d436d06b805294c39504147b9566e57e72b151d3b199e167b"
+ "content": "fd72ecf2614a8e533f2d56c1041437b9235cc840a5c8057c94988eed0474e1df"
}
],
- "purl": "pkg:golang/github.com/bufbuild/buf@v1.70.0?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/bufbuild/buf@v1.71.0?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
"url": "https://github.com/bufbuild/buf",
@@ -2319,18 +2319,18 @@
}
},
{
- "bom-ref": "pkg:golang/github.com/bufbuild/protocompile@v0.14.2-0.20260522222248-64e6ad034132?type=module",
+ "bom-ref": "pkg:golang/github.com/bufbuild/protocompile@v0.14.2-0.20260605203730-cd7c3c124e10?type=module",
"type": "library",
"name": "github.com/bufbuild/protocompile",
- "version": "v0.14.2-0.20260522222248-64e6ad034132",
+ "version": "v0.14.2-0.20260605203730-cd7c3c124e10",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "7f84f893fe358c71e1a763ad97a65284379daf8c05f5bf8d76a21f2decf1e11e"
+ "content": "37464e28cc07a4ab0584c192c6707a26256433b49b1fc2002a51863b44a94010"
}
],
- "purl": "pkg:golang/github.com/bufbuild/protocompile@v0.14.2-0.20260522222248-64e6ad034132?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/bufbuild/protocompile@v0.14.2-0.20260605203730-cd7c3c124e10?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
"url": "https://github.com/bufbuild/protocompile",
@@ -3209,18 +3209,18 @@
}
},
{
- "bom-ref": "pkg:golang/github.com/docker/cli@v29.5.2+incompatible?type=module",
+ "bom-ref": "pkg:golang/github.com/docker/cli@v29.5.3+incompatible?type=module",
"type": "library",
"name": "github.com/docker/cli",
- "version": "v29.5.2+incompatible",
+ "version": "v29.5.3+incompatible",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "b9bca427563c2e6351189d81b8c4349073adfd13b563318db30a96309822bee4"
+ "content": "9db1057f3efbe2f07043929162fedcfc08218d17aa9c6212beb461ce35747afb"
}
],
- "purl": "pkg:golang/github.com/docker/cli@v29.5.2+incompatible?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/docker/cli@v29.5.3+incompatible?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
"url": "https://github.com/docker/cli",
@@ -3238,18 +3238,18 @@
}
},
{
- "bom-ref": "pkg:golang/github.com/docker/docker-credential-helpers@v0.9.7?type=module",
+ "bom-ref": "pkg:golang/github.com/docker/docker-credential-helpers@v0.9.8?type=module",
"type": "library",
"name": "github.com/docker/docker-credential-helpers",
- "version": "v0.9.7",
+ "version": "v0.9.8",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "8da3c8c44203cf96d07a084d01dcf3d044f030c9cce2fce3665c73de958fe090"
+ "content": "6c844444e6fb4a8e8f465aba293b5d4bd30f1230b6f4e411905365bcad8e5fc4"
}
],
- "purl": "pkg:golang/github.com/docker/docker-credential-helpers@v0.9.7?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/docker/docker-credential-helpers@v0.9.8?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
"url": "https://github.com/docker/docker-credential-helpers",
@@ -3461,18 +3461,18 @@
]
},
{
- "bom-ref": "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "bom-ref": "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"type": "library",
"name": "github.com/felixge/httpsnoop",
- "version": "v1.0.4",
+ "version": "v1.1.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "3454d5d998f56cbe2673db2a5800976d01550418365b718fbeaa7cfc4492d968"
+ "content": "dd8b548f7d99664a99b6ddec659b0296cca6c3f403b957e9361a00df5cde3917"
}
],
- "purl": "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
"url": "https://github.com/felixge/httpsnoop",
@@ -3655,21 +3655,21 @@
}
},
{
- "bom-ref": "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4-0.20260811133125-9ee6a6cb5cf3?type=module",
+ "bom-ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.13?type=module",
"type": "library",
- "name": "github.com/getoptimum/optimum-common",
- "version": "v0.1.4-0.20260811133125-9ee6a6cb5cf3",
+ "name": "github.com/gabriel-vasile/mimetype",
+ "version": "v1.4.13",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "4e4d7a60d31e81c7b392d842eaebe27ba1040c3b69d01741e7350065bdbe0d62"
+ "content": "e3a9d7a24b25501b00244ff032ca7982d3b9d346b8177364cfd51fa64d807143"
}
],
- "purl": "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4-0.20260811133125-9ee6a6cb5cf3?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.13?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
- "url": "https://github.com/getoptimum/optimum-common",
+ "url": "https://github.com/gabriel-vasile/mimetype",
"type": "vcs"
}
],
@@ -3677,48 +3677,77 @@
"licenses": [
{
"license": {
- "id": "BSD-3-Clause"
+ "id": "MIT"
}
}
]
}
},
{
- "bom-ref": "pkg:golang/github.com/getoptimum/optimum-p2p@v0.0.1-rc12.2?type=module",
+ "bom-ref": "pkg:golang/github.com/getoptimum/mump2p-protocol@v0.0.1-rc7?type=module",
"type": "library",
- "name": "github.com/getoptimum/optimum-p2p",
- "version": "v0.0.1-rc12.2",
+ "name": "github.com/getoptimum/mump2p-protocol",
+ "version": "v0.0.1-rc7",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "ba316658f4f54f48306b918e424eccb706c397de1d33b78e732c24f1355d6536"
+ "content": "9d13a1ea5934298cee954dd14b6212c0b50d86c8b7d7640d6455f5460f90f2dd"
}
],
- "purl": "pkg:golang/github.com/getoptimum/optimum-p2p@v0.0.1-rc12.2?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/getoptimum/mump2p-protocol@v0.0.1-rc7?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
- "url": "https://github.com/getoptimum/optimum-p2p",
+ "url": "https://github.com/getoptimum/mump2p-protocol",
"type": "vcs"
}
]
},
{
- "bom-ref": "pkg:golang/github.com/getoptimum/rlnc@v0.0.1-rc1.0.20260326154748-8ead5e1b16e5?type=module",
+ "bom-ref": "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4?type=module",
+ "type": "library",
+ "name": "github.com/getoptimum/optimum-common",
+ "version": "v0.1.4",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "1ba1f3ca76cadd7be4d6e5214930edfe266a73405a6e0c7348f8283669d5d18c"
+ }
+ ],
+ "purl": "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/getoptimum/optimum-common",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "BSD-3-Clause"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "bom-ref": "pkg:golang/github.com/getoptimum/shm@v0.5.0?type=module",
"type": "library",
- "name": "github.com/getoptimum/rlnc",
- "version": "v0.0.1-rc1.0.20260326154748-8ead5e1b16e5",
+ "name": "github.com/getoptimum/shm",
+ "version": "v0.5.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "458255d793882377c90b0c717c3e86c5193ac4bebb698d5046b1a3894662f5dc"
+ "content": "24a0050f619abf1fef556bc7c84a140b2675673449224d16c5c88f0132656b3f"
}
],
- "purl": "pkg:golang/github.com/getoptimum/rlnc@v0.0.1-rc1.0.20260326154748-8ead5e1b16e5?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/getoptimum/shm@v0.5.0?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
- "url": "https://github.com/getoptimum/rlnc",
+ "url": "https://github.com/getoptimum/shm",
"type": "vcs"
}
]
@@ -3839,6 +3868,93 @@
]
}
},
+ {
+ "bom-ref": "pkg:golang/github.com/go-playground/locales@v0.14.1?type=module",
+ "type": "library",
+ "name": "github.com/go-playground/locales",
+ "version": "v0.14.1",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "116690ff0b308e295f28b4c40a25f3ed187edc18c585f0c52affe85ec9448c90"
+ }
+ ],
+ "purl": "pkg:golang/github.com/go-playground/locales@v0.14.1?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/go-playground/locales",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "bom-ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1?type=module",
+ "type": "library",
+ "name": "github.com/go-playground/universal-translator",
+ "version": "v0.18.1",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "05c9e6d19c2c1b259b0b32265effa90099d82bd4b8ef72d016ecc26c36df4856"
+ }
+ ],
+ "purl": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/go-playground/universal-translator",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "bom-ref": "pkg:golang/github.com/go-playground/validator/v10@v10.30.2?type=module",
+ "type": "library",
+ "name": "github.com/go-playground/validator/v10",
+ "version": "v10.30.2",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "26214832d4921dbdbf5c151b58ce22fcca5e426f592b6c6a3cd93cbe0beee494"
+ }
+ ],
+ "purl": "pkg:golang/github.com/go-playground/validator/v10@v10.30.2?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/go-playground/validator",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
{
"bom-ref": "pkg:golang/github.com/go-toolsmith/astcast@v1.1.0?type=module",
"type": "library",
@@ -5599,6 +5715,35 @@
]
}
},
+ {
+ "bom-ref": "pkg:golang/github.com/jellydator/ttlcache/v3@v3.4.0?type=module",
+ "type": "library",
+ "name": "github.com/jellydator/ttlcache/v3",
+ "version": "v3.4.0",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "612e0fd76e6a412d2d361b4be9a798921784681fe6f070aa74c30fe269d67536"
+ }
+ ],
+ "purl": "pkg:golang/github.com/jellydator/ttlcache/v3@v3.4.0?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/jellydator/ttlcache",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
{
"bom-ref": "pkg:golang/github.com/jgautheron/goconst@v1.10.0?type=module",
"type": "library",
@@ -5947,6 +6092,35 @@
]
}
},
+ {
+ "bom-ref": "pkg:golang/github.com/knadh/koanf/parsers/yaml@v1.1.0?type=module",
+ "type": "library",
+ "name": "github.com/knadh/koanf/parsers/yaml",
+ "version": "v1.1.0",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "de5b5f9bd963a6b007b788f181e60b9453e651aba7b8282ed7220bb935d174ce"
+ }
+ ],
+ "purl": "pkg:golang/github.com/knadh/koanf/parsers/yaml@v1.1.0?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/knadh/koanf/parsers/yaml",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
{
"bom-ref": "pkg:golang/github.com/knadh/koanf/providers/confmap@v1.0.0?type=module",
"type": "library",
@@ -5977,18 +6151,76 @@
}
},
{
- "bom-ref": "pkg:golang/github.com/knadh/koanf/v2@v2.3.3?type=module",
+ "bom-ref": "pkg:golang/github.com/knadh/koanf/providers/env/v2@v2.0.0?type=module",
+ "type": "library",
+ "name": "github.com/knadh/koanf/providers/env/v2",
+ "version": "v2.0.0",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "01de47ddeba7ef6daef85bdc86221c108259b19d8cea8c4292065f58de41e4a6"
+ }
+ ],
+ "purl": "pkg:golang/github.com/knadh/koanf/providers/env/v2@v2.0.0?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/knadh/koanf/providers/env",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "bom-ref": "pkg:golang/github.com/knadh/koanf/providers/file@v1.2.1?type=module",
+ "type": "library",
+ "name": "github.com/knadh/koanf/providers/file",
+ "version": "v1.2.1",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "6c459bb50c18ac0f96d83b5d06b416c97a89689486dcaacfdc0112389629f703"
+ }
+ ],
+ "purl": "pkg:golang/github.com/knadh/koanf/providers/file@v1.2.1?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/knadh/koanf/providers/file",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "bom-ref": "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?type=module",
"type": "library",
"name": "github.com/knadh/koanf/v2",
- "version": "v2.3.3",
+ "version": "v2.3.4",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "8cb242f170917cb0bb9f817e64a29d06c6ead5b7d74e9b8585fe0beedf780fde"
+ "content": "7e7ca73520e5ba3584faff37840a7cc0aaff71da311cb3b4eb6f5237e53c52b7"
}
],
- "purl": "pkg:golang/github.com/knadh/koanf/v2@v2.3.3?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
"url": "https://github.com/knadh/koanf",
@@ -6324,6 +6556,35 @@
]
}
},
+ {
+ "bom-ref": "pkg:golang/github.com/leodido/go-urn@v1.4.0?type=module",
+ "type": "library",
+ "name": "github.com/leodido/go-urn",
+ "version": "v1.4.0",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "593f47c04f521840aede583877f74803e8f19658c46b5fdf7d72a6463a9d9884"
+ }
+ ],
+ "purl": "pkg:golang/github.com/leodido/go-urn@v1.4.0?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/leodido/go-urn",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
{
"bom-ref": "pkg:golang/github.com/leonklingele/grouper@v1.1.2?type=module",
"type": "library",
@@ -6586,18 +6847,18 @@
}
},
{
- "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.16.1-0.20260611143718-41b11d5cb1a7?type=module",
+ "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.17.0?type=module",
"type": "library",
"name": "github.com/libp2p/go-libp2p-pubsub",
- "version": "v0.16.1-0.20260611143718-41b11d5cb1a7",
+ "version": "v0.17.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "50c889e34f0da8ef527f600dbad10cdc09fc126dcafaa9fbf1ea088336373c86"
+ "content": "48d76f07a5747983172d147de67fb8be9c4929b16c6c78608cf743893a46a28d"
}
],
- "purl": "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.16.1-0.20260611143718-41b11d5cb1a7?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.17.0?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
"url": "https://github.com/libp2p/go-libp2p-pubsub",
@@ -10443,18 +10704,18 @@
}
},
{
- "bom-ref": "pkg:golang/github.com/tetratelabs/wazero@v1.11.0?type=module",
+ "bom-ref": "pkg:golang/github.com/tetratelabs/wazero@v1.12.0?type=module",
"type": "library",
"name": "github.com/tetratelabs/wazero",
- "version": "v1.11.0",
+ "version": "v1.12.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "fa029e984b8a0937af53877b653ce5b2f81dd6e693a080ed95096635bc2a6210"
+ "content": "0ee59ca4dbbf1738045e01810e9f09d52a5cf8258ebefb6f5728ca95a668a585"
}
],
- "purl": "pkg:golang/github.com/tetratelabs/wazero@v1.11.0?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/tetratelabs/wazero@v1.12.0?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
"url": "https://github.com/tetratelabs/wazero",
@@ -11494,18 +11755,18 @@
}
},
{
- "bom-ref": "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
+ "bom-ref": "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
"type": "library",
"name": "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",
- "version": "v0.68.0",
+ "version": "v0.69.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "0aa5f153c54e98379fa21d3eced7c66b29986e1741fed4f7cecefd41a6533466"
+ "content": "f2dbc8083e2f49338eb0daec2382e37fa0bee942afa53107e5763724ca323e8a"
}
],
- "purl": "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -11517,18 +11778,18 @@
}
},
{
- "bom-ref": "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
+ "bom-ref": "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
"type": "library",
"name": "go.opentelemetry.io/otel",
- "version": "v1.43.0",
+ "version": "v1.44.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "99820cd37767879cdf37b1dabad144e227888a0f5a9a4340353fb1715c408fd2"
+ "content": "263c07987a40e22677c01c65baed9f6db13b8f892a944f235f20323d71fb1ea5"
}
],
- "purl": "pkg:golang/go.opentelemetry.io/otel@v1.43.0?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/go.opentelemetry.io/otel@v1.44.0?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -11540,18 +11801,18 @@
}
},
{
- "bom-ref": "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
+ "bom-ref": "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
"type": "library",
"name": "go.opentelemetry.io/otel/metric",
- "version": "v1.43.0",
+ "version": "v1.44.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "77beb7f107889ce9eec0e38d3e9e0900e19f6c212961bf8ae83556bddc46ce03"
+ "content": "d70d2020b4dc1ddaf7608fa2c4bca37a6c2b567b0c5116d3645ad26027437667"
}
],
- "purl": "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -11563,18 +11824,18 @@
}
},
{
- "bom-ref": "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "bom-ref": "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"type": "library",
"name": "go.opentelemetry.io/otel/trace",
- "version": "v1.43.0",
+ "version": "v1.44.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "06436b1e9ba9fb8938c3e659f3a099a071c4928870b3c018f964d7d3d9e4fb70"
+ "content": "8f11790ac19809eef8302471d97e20ed6b18fd504a46aaa936f5e55ffea0b489"
}
],
- "purl": "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -11678,18 +11939,18 @@
}
},
{
- "bom-ref": "pkg:golang/go.uber.org/mock@v0.5.2?type=module",
+ "bom-ref": "pkg:golang/go.uber.org/mock@v0.6.0?type=module",
"type": "library",
"name": "go.uber.org/mock",
- "version": "v0.5.2",
+ "version": "v0.6.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "2dbb4f4dc3fc03993d58f5e3e783cf3db8dc23863a961c8e6579fe552ef0364a"
+ "content": "87217d75f99b8085f911f39d6aca8bb160fac6aa4d6655db94b07f0db9f0bf76"
}
],
- "purl": "pkg:golang/go.uber.org/mock@v0.5.2?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/go.uber.org/mock@v0.6.0?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -11816,18 +12077,18 @@
}
},
{
- "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"type": "library",
"name": "golang.org/x/exp",
- "version": "v0.0.0-20260508232706-74f9aab9d74a",
+ "version": "v0.0.0-20260611194520-c48552f49976",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "fb78dd0c6181f0d19bd5992d73bdfb8e5b77fc0e5fe949704b39afa94bae7f1c"
+ "content": "5fc1f3d889ae8e06e67ad56e5bec36624c990a1137701a598b63f5e7cad31bd3"
}
],
- "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -12138,18 +12399,18 @@
}
},
{
- "bom-ref": "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "bom-ref": "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"type": "library",
"name": "google.golang.org/genproto/googleapis/api",
- "version": "v0.0.0-20260523011958-0a33c5d7ca68",
+ "version": "v0.0.0-20260610212136-7ab31c22f7ad",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "595570d4d975f658b47cc5fef85277c9ed73f7e4b5377e503830f2e6aa67697c"
+ "content": "de22f22134bfb32491c1b50aa02ee881f8f662bd428ecd297da44a8f95391c4c"
}
],
- "purl": "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260523011958-0a33c5d7ca68?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260610212136-7ab31c22f7ad?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -12161,18 +12422,18 @@
}
},
{
- "bom-ref": "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "bom-ref": "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"type": "library",
"name": "google.golang.org/genproto/googleapis/rpc",
- "version": "v0.0.0-20260523011958-0a33c5d7ca68",
+ "version": "v0.0.0-20260610212136-7ab31c22f7ad",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "3ef1201897fd0bfd6ee421e4227320ed4158614a22690996d8b6ed1f4a6307bf"
+ "content": "e395a626f215e82dbe3bf8e32e43d41fe17768e8ffd66883a14d830f4f8d59b8"
}
],
- "purl": "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -12690,8 +12951,8 @@
"ref": "pkg:golang/github.com/getoptimum/optimum-gateway@0.0.0-dev?type=module",
"dependsOn": [
"pkg:golang/github.com/ferranbt/fastssz@v1.0.1-0.20251203093649-0b1f38e43198?type=module",
- "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4-0.20260811133125-9ee6a6cb5cf3?type=module",
- "pkg:golang/github.com/getoptimum/optimum-p2p@v0.0.1-rc12.2?type=module",
+ "pkg:golang/github.com/getoptimum/mump2p-protocol@v0.0.1-rc7?type=module",
+ "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4?type=module",
"pkg:golang/github.com/gofiber/fiber/v3@v3.4.0?type=module",
"pkg:golang/github.com/golang-jwt/jwt/v5@v5.3.1?type=module",
"pkg:golang/github.com/golang/snappy@v1.0.0?type=module",
@@ -12701,7 +12962,7 @@
"pkg:golang/github.com/libp2p/go-libp2p@v0.48.0?type=module",
"pkg:golang/github.com/libp2p/go-libp2p-kad-dht@v0.33.1?type=module",
"pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.11.0?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.16.1-0.20260611143718-41b11d5cb1a7?type=module",
+ "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.17.0?type=module",
"pkg:golang/github.com/libp2p/go-libp2p-record@v0.3.1?type=module",
"pkg:golang/github.com/libp2p/go-mplex@v0.7.0?type=module",
"pkg:golang/github.com/montanaflynn/stats@v0.7.1?type=module",
@@ -12753,14 +13014,14 @@
]
},
{
- "ref": "pkg:golang/buf.build/gen/go/bufbuild/registry/connectrpc/go@v1.20.0-20260507063250-43b0c5a6cd08.1?type=module",
+ "ref": "pkg:golang/buf.build/gen/go/bufbuild/registry/connectrpc/go@v1.20.0-20260610134905-7e419c5bd258.1?type=module",
"dependsOn": [
- "pkg:golang/buf.build/gen/go/bufbuild/registry/protocolbuffers/go@v1.36.11-20260507063250-43b0c5a6cd08.1?type=module",
+ "pkg:golang/buf.build/gen/go/bufbuild/registry/protocolbuffers/go@v1.36.11-20260610134905-7e419c5bd258.1?type=module",
"pkg:golang/connectrpc.com/connect@v1.20.0?type=module"
]
},
{
- "ref": "pkg:golang/buf.build/gen/go/bufbuild/registry/protocolbuffers/go@v1.36.11-20260507063250-43b0c5a6cd08.1?type=module",
+ "ref": "pkg:golang/buf.build/gen/go/bufbuild/registry/protocolbuffers/go@v1.36.11-20260610134905-7e419c5bd258.1?type=module",
"dependsOn": [
"pkg:golang/buf.build/gen/go/bufbuild/bufplugin/protocolbuffers/go@v1.36.11-20250718181942-e35f9b667443.1?type=module",
"pkg:golang/buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go@v1.36.11-20260415201107-50325440f8f2.1?type=module",
@@ -12799,19 +13060,19 @@
"pkg:golang/buf.build/go/spdx@v0.2.0?type=module",
"pkg:golang/cel.dev/expr@v0.25.2?type=module",
"pkg:golang/github.com/antlr4-go/antlr/v4@v4.13.1?type=module",
- "pkg:golang/github.com/bufbuild/protocompile@v0.14.2-0.20260522222248-64e6ad034132?type=module",
+ "pkg:golang/github.com/bufbuild/protocompile@v0.14.2-0.20260605203730-cd7c3c124e10?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
"pkg:golang/github.com/google/cel-go@v0.28.1?type=module",
"pkg:golang/github.com/mattn/go-isatty@v0.0.22?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/spf13/pflag@v1.0.10?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
"pkg:golang/pluginrpc.com/pluginrpc@v0.5.0?type=module"
@@ -12839,10 +13100,10 @@
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
]
@@ -12860,10 +13121,10 @@
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
]
@@ -12902,7 +13163,7 @@
"pkg:golang/github.com/muesli/cancelreader@v0.2.2?type=module",
"pkg:golang/github.com/rivo/uniseg@v0.4.7?type=module",
"pkg:golang/github.com/xo/terminfo@v0.0.0-20220910002029-abceb7e1c41e?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module"
]
@@ -12912,7 +13173,7 @@
"dependsOn": [
"pkg:golang/cloud.google.com/go/compute/metadata@v0.9.0?type=module",
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
@@ -12921,10 +13182,10 @@
"pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.14?type=module",
"pkg:golang/github.com/googleapis/gax-go/v2@v2.18.0?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
@@ -12932,7 +13193,7 @@
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/golang.org/x/time@v0.15.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
@@ -12948,7 +13209,7 @@
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module"
]
},
@@ -12991,9 +13252,9 @@
"pkg:golang/github.com/google/uuid@v1.6.0?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
@@ -13222,7 +13483,7 @@
"pkg:golang/github.com/muesli/cancelreader@v0.2.2?type=module",
"pkg:golang/github.com/rivo/uniseg@v0.4.7?type=module",
"pkg:golang/github.com/xo/terminfo@v0.0.0-20220910002029-abceb7e1c41e?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/mod@v0.37.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
@@ -13307,7 +13568,7 @@
{
"ref": "pkg:golang/github.com/antlr4-go/antlr/v4@v4.13.1?type=module",
"dependsOn": [
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module"
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module"
]
},
{
@@ -13453,7 +13714,7 @@
{
"ref": "pkg:golang/github.com/bboreham/go-loser@v0.0.0-20230920113527-fcc2c21820a3?type=module",
"dependsOn": [
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module"
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module"
]
},
{
@@ -13515,13 +13776,13 @@
]
},
{
- "ref": "pkg:golang/github.com/bufbuild/buf@v1.70.0?type=module",
+ "ref": "pkg:golang/github.com/bufbuild/buf@v1.71.0?type=module",
"dependsOn": [
"pkg:golang/buf.build/gen/go/bufbuild/bufplugin/protocolbuffers/go@v1.36.11-20250718181942-e35f9b667443.1?type=module",
"pkg:golang/buf.build/gen/go/bufbuild/protodescriptor/protocolbuffers/go@v1.36.11-20250109164928-1da0de137947.1?type=module",
"pkg:golang/buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go@v1.36.11-20260415201107-50325440f8f2.1?type=module",
- "pkg:golang/buf.build/gen/go/bufbuild/registry/connectrpc/go@v1.20.0-20260507063250-43b0c5a6cd08.1?type=module",
- "pkg:golang/buf.build/gen/go/bufbuild/registry/protocolbuffers/go@v1.36.11-20260507063250-43b0c5a6cd08.1?type=module",
+ "pkg:golang/buf.build/gen/go/bufbuild/registry/connectrpc/go@v1.20.0-20260610134905-7e419c5bd258.1?type=module",
+ "pkg:golang/buf.build/gen/go/bufbuild/registry/protocolbuffers/go@v1.36.11-20260610134905-7e419c5bd258.1?type=module",
"pkg:golang/buf.build/gen/go/pluginrpc/pluginrpc/protocolbuffers/go@v1.36.11-20241007202033-cf42259fcbfc.1?type=module",
"pkg:golang/buf.build/go/app@v0.2.1-0.20260407195847-833f8f978cda?type=module",
"pkg:golang/buf.build/go/bufplugin@v0.10.0?type=module",
@@ -13536,7 +13797,7 @@
"pkg:golang/connectrpc.com/otelconnect@v0.9.0?type=module",
"pkg:golang/github.com/Microsoft/go-winio@v0.6.2?type=module",
"pkg:golang/github.com/antlr4-go/antlr/v4@v4.13.1?type=module",
- "pkg:golang/github.com/bufbuild/protocompile@v0.14.2-0.20260522222248-64e6ad034132?type=module",
+ "pkg:golang/github.com/bufbuild/protocompile@v0.14.2-0.20260605203730-cd7c3c124e10?type=module",
"pkg:golang/github.com/bufbuild/protoplugin@v0.0.0-20260414125817-25d1d281b46b?type=module",
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
"pkg:golang/github.com/cli/browser@v1.3.0?type=module",
@@ -13545,11 +13806,11 @@
"pkg:golang/github.com/cpuguy83/go-md2man/v2@v2.0.7?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
"pkg:golang/github.com/distribution/reference@v0.6.0?type=module",
- "pkg:golang/github.com/docker/cli@v29.5.2+incompatible?type=module",
- "pkg:golang/github.com/docker/docker-credential-helpers@v0.9.7?type=module",
+ "pkg:golang/github.com/docker/cli@v29.5.3+incompatible?type=module",
+ "pkg:golang/github.com/docker/docker-credential-helpers@v0.9.8?type=module",
"pkg:golang/github.com/docker/go-connections@v0.7.0?type=module",
"pkg:golang/github.com/docker/go-units@v0.5.0?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/gofrs/flock@v0.13.0?type=module",
@@ -13581,22 +13842,22 @@
"pkg:golang/github.com/spf13/cobra@v1.10.2?type=module",
"pkg:golang/github.com/spf13/pflag@v1.0.10?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
- "pkg:golang/github.com/tetratelabs/wazero@v1.11.0?type=module",
+ "pkg:golang/github.com/tetratelabs/wazero@v1.12.0?type=module",
"pkg:golang/github.com/tidwall/btree@v1.8.1?type=module",
"pkg:golang/go.lsp.dev/jsonrpc2@v0.10.0?type=module",
"pkg:golang/go.lsp.dev/pkg@v0.0.0-20210717090340-384b27a52fb2?type=module",
"pkg:golang/go.lsp.dev/protocol@v0.12.0?type=module",
"pkg:golang/go.lsp.dev/uri@v0.3.0?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/mod@v0.37.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
@@ -13604,8 +13865,8 @@
"pkg:golang/golang.org/x/term@v0.45.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/golang.org/x/tools@v0.47.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
"pkg:golang/mvdan.cc/xurls/v2@v2.6.0?type=module",
@@ -13613,7 +13874,7 @@
]
},
{
- "ref": "pkg:golang/github.com/bufbuild/protocompile@v0.14.2-0.20260522222248-64e6ad034132?type=module",
+ "ref": "pkg:golang/github.com/bufbuild/protocompile@v0.14.2-0.20260605203730-cd7c3c124e10?type=module",
"dependsOn": [
"pkg:golang/buf.build/gen/go/bufbuild/protodescriptor/protocolbuffers/go@v1.36.11-20250109164928-1da0de137947.1?type=module",
"pkg:golang/buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go@v1.36.11-20260415201107-50325440f8f2.1?type=module",
@@ -13624,7 +13885,7 @@
"pkg:golang/github.com/rivo/uniseg@v0.4.7?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/github.com/tidwall/btree@v1.8.1?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
@@ -13633,7 +13894,7 @@
{
"ref": "pkg:golang/github.com/bufbuild/protoplugin@v0.0.0-20260414125817-25d1d281b46b?type=module",
"dependsOn": [
- "pkg:golang/github.com/bufbuild/protocompile@v0.14.2-0.20260522222248-64e6ad034132?type=module",
+ "pkg:golang/github.com/bufbuild/protocompile@v0.14.2-0.20260605203730-cd7c3c124e10?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
@@ -13783,7 +14044,7 @@
"pkg:golang/github.com/containerd/errdefs@v1.0.0?type=module",
"pkg:golang/github.com/gogo/protobuf@v1.3.2?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
@@ -13864,10 +14125,10 @@
"ref": "pkg:golang/github.com/dlclark/regexp2@v1.12.0?type=module"
},
{
- "ref": "pkg:golang/github.com/docker/cli@v29.5.2+incompatible?type=module"
+ "ref": "pkg:golang/github.com/docker/cli@v29.5.3+incompatible?type=module"
},
{
- "ref": "pkg:golang/github.com/docker/docker-credential-helpers@v0.9.7?type=module",
+ "ref": "pkg:golang/github.com/docker/docker-credential-helpers@v0.9.8?type=module",
"dependsOn": [
"pkg:golang/golang.org/x/sys@v0.47.0?type=module"
]
@@ -13903,7 +14164,7 @@
"ref": "pkg:golang/github.com/fatih/structtag@v1.2.0?type=module"
},
{
- "ref": "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module"
+ "ref": "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module"
},
{
"ref": "pkg:golang/github.com/ferranbt/fastssz@v1.0.1-0.20251203093649-0b1f38e43198?type=module",
@@ -13950,19 +14211,37 @@
"ref": "pkg:golang/github.com/fzipp/gocyclo@v0.6.0?type=module"
},
{
- "ref": "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4-0.20260811133125-9ee6a6cb5cf3?type=module",
+ "ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.13?type=module"
+ },
+ {
+ "ref": "pkg:golang/github.com/getoptimum/mump2p-protocol@v0.0.1-rc7?type=module",
"dependsOn": [
"pkg:golang/4d63.com/gocheckcompilerdirectives@v1.3.0?type=module",
"pkg:golang/4d63.com/gochecknoglobals@v0.2.2?type=module",
+ "pkg:golang/buf.build/gen/go/bufbuild/bufplugin/protocolbuffers/go@v1.36.11-20250718181942-e35f9b667443.1?type=module",
+ "pkg:golang/buf.build/gen/go/bufbuild/protodescriptor/protocolbuffers/go@v1.36.11-20250109164928-1da0de137947.1?type=module",
+ "pkg:golang/buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go@v1.36.11-20260415201107-50325440f8f2.1?type=module",
+ "pkg:golang/buf.build/gen/go/bufbuild/registry/connectrpc/go@v1.20.0-20260610134905-7e419c5bd258.1?type=module",
+ "pkg:golang/buf.build/gen/go/bufbuild/registry/protocolbuffers/go@v1.36.11-20260610134905-7e419c5bd258.1?type=module",
+ "pkg:golang/buf.build/gen/go/pluginrpc/pluginrpc/protocolbuffers/go@v1.36.11-20241007202033-cf42259fcbfc.1?type=module",
+ "pkg:golang/buf.build/go/app@v0.2.1-0.20260407195847-833f8f978cda?type=module",
+ "pkg:golang/buf.build/go/bufplugin@v0.10.0?type=module",
+ "pkg:golang/buf.build/go/bufprivateusage@v0.1.0?type=module",
+ "pkg:golang/buf.build/go/interrupt@v1.1.0?type=module",
+ "pkg:golang/buf.build/go/protovalidate@v1.2.0?type=module",
+ "pkg:golang/buf.build/go/protoyaml@v0.7.0?type=module",
+ "pkg:golang/buf.build/go/spdx@v0.2.0?type=module",
+ "pkg:golang/buf.build/go/standard@v0.1.1-0.20260325175353-2b287e071df5?type=module",
"pkg:golang/cel.dev/expr@v0.25.2?type=module",
"pkg:golang/charm.land/lipgloss/v2@v2.0.3?type=module",
- "pkg:golang/cloud.google.com/go/auth@v0.18.2?type=module",
- "pkg:golang/cloud.google.com/go/auth/oauth2adapt@v0.2.8?type=module",
- "pkg:golang/cloud.google.com/go/compute/metadata@v0.9.0?type=module",
"pkg:golang/codeberg.org/chavacava/garif@v0.2.0?type=module",
"pkg:golang/codeberg.org/polyfloyd/go-errorlint@v1.9.0?type=module",
+ "pkg:golang/connectrpc.com/connect@v1.20.0?type=module",
+ "pkg:golang/connectrpc.com/otelconnect@v0.9.0?type=module",
"pkg:golang/dev.gaijin.team/go/exhaustruct/v4@v4.0.0?type=module",
"pkg:golang/dev.gaijin.team/go/golib@v0.6.0?type=module",
+ "pkg:golang/filippo.io/bigmod@v0.1.1-0.20260103110540-f8a47775ebe5?type=module",
+ "pkg:golang/filippo.io/keygen@v0.0.0-20260114151900-8e2790ea4c5b?type=module",
"pkg:golang/github.com/4meepo/tagalign@v1.4.3?type=module",
"pkg:golang/github.com/Abirdcfly/dupword@v0.1.7?type=module",
"pkg:golang/github.com/AdminBenni/iota-mixing@v1.0.0?type=module",
@@ -13970,16 +14249,10 @@
"pkg:golang/github.com/Antonboom/errname@v1.1.1?type=module",
"pkg:golang/github.com/Antonboom/nilnil@v1.1.1?type=module",
"pkg:golang/github.com/Antonboom/testifylint@v1.6.4?type=module",
- "pkg:golang/github.com/Azure/azure-sdk-for-go/sdk/azcore@v1.21.0?type=module",
- "pkg:golang/github.com/Azure/azure-sdk-for-go/sdk/azidentity@v1.13.1?type=module",
- "pkg:golang/github.com/Azure/azure-sdk-for-go/sdk/internal@v1.11.2?type=module",
- "pkg:golang/github.com/AzureAD/microsoft-authentication-library-for-go@v1.6.0?type=module",
"pkg:golang/github.com/BurntSushi/toml@v1.6.0?type=module",
"pkg:golang/github.com/ClickHouse/clickhouse-go-linter@v1.2.0?type=module",
"pkg:golang/github.com/Djarvur/go-err113@v0.1.1?type=module",
"pkg:golang/github.com/Masterminds/semver/v3@v3.5.0?type=module",
- "pkg:golang/github.com/MicahParks/jwkset@v0.11.1?type=module",
- "pkg:golang/github.com/MicahParks/keyfunc/v3@v3.8.1?type=module",
"pkg:golang/github.com/Microsoft/go-winio@v0.6.2?type=module",
"pkg:golang/github.com/MirrexOne/unqueryvet@v1.5.4?type=module",
"pkg:golang/github.com/OpenPeeDeeP/depguard/v2@v2.2.1?type=module",
@@ -13990,22 +14263,10 @@
"pkg:golang/github.com/alfatraining/structtag@v1.0.0?type=module",
"pkg:golang/github.com/alingse/asasalint@v0.0.11?type=module",
"pkg:golang/github.com/alingse/nilnesserr@v0.2.0?type=module",
+ "pkg:golang/github.com/antlr4-go/antlr/v4@v4.13.1?type=module",
"pkg:golang/github.com/ashanbrown/forbidigo/v2@v2.3.1?type=module",
"pkg:golang/github.com/ashanbrown/makezero/v2@v2.2.1?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2@v1.41.4?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/config@v1.32.12?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/credentials@v1.19.12?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/feature/ec2/imds@v1.18.20?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/internal/configsources@v1.4.20?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.7.20?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/internal/ini@v1.8.6?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding@v1.13.7?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.13.20?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/service/signin@v1.0.8?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/service/sso@v1.30.13?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.35.17?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/service/sts@v1.41.9?type=module",
- "pkg:golang/github.com/aws/smithy-go@v1.24.2?type=module",
+ "pkg:golang/github.com/benbjohnson/clock@v1.3.5?type=module",
"pkg:golang/github.com/beorn7/perks@v1.0.1?type=module",
"pkg:golang/github.com/bkielbasa/cyclop@v1.2.3?type=module",
"pkg:golang/github.com/blizzy78/varnamelen@v0.8.0?type=module",
@@ -14013,6 +14274,9 @@
"pkg:golang/github.com/bombsimon/wsl/v5@v5.8.0?type=module",
"pkg:golang/github.com/breml/bidichk@v0.3.3?type=module",
"pkg:golang/github.com/breml/errchkjson@v0.4.1?type=module",
+ "pkg:golang/github.com/bufbuild/buf@v1.71.0?type=module",
+ "pkg:golang/github.com/bufbuild/protocompile@v0.14.2-0.20260605203730-cd7c3c124e10?type=module",
+ "pkg:golang/github.com/bufbuild/protoplugin@v0.0.0-20260414125817-25d1d281b46b?type=module",
"pkg:golang/github.com/butuzov/ireturn@v0.4.1?type=module",
"pkg:golang/github.com/butuzov/mirror@v1.3.0?type=module",
"pkg:golang/github.com/catenacyber/perfsprint@v0.10.1?type=module",
@@ -14026,6 +14290,7 @@
"pkg:golang/github.com/charmbracelet/x/termios@v0.1.1?type=module",
"pkg:golang/github.com/charmbracelet/x/windows@v0.2.2?type=module",
"pkg:golang/github.com/ckaznocha/intrange@v0.3.1?type=module",
+ "pkg:golang/github.com/cli/browser@v1.3.0?type=module",
"pkg:golang/github.com/clipperhouse/displaywidth@v0.11.0?type=module",
"pkg:golang/github.com/clipperhouse/uax29/v2@v2.7.0?type=module",
"pkg:golang/github.com/containerd/errdefs@v1.0.0?type=module",
@@ -14035,25 +14300,34 @@
"pkg:golang/github.com/daixiang0/gci@v0.13.7?type=module",
"pkg:golang/github.com/dave/dst@v0.27.3?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
+ "pkg:golang/github.com/davidlazar/go-crypto@v0.0.0-20200604182044-b73af7476f6c?type=module",
"pkg:golang/github.com/decred/dcrd/dcrec/secp256k1/v4@v4.4.0?type=module",
"pkg:golang/github.com/denis-tingaikin/go-header@v0.5.0?type=module",
"pkg:golang/github.com/distribution/reference@v0.6.0?type=module",
"pkg:golang/github.com/dlclark/regexp2@v1.12.0?type=module",
- "pkg:golang/github.com/docker/cli@v29.5.2+incompatible?type=module",
- "pkg:golang/github.com/docker/docker-credential-helpers@v0.9.7?type=module",
+ "pkg:golang/github.com/docker/cli@v29.5.3+incompatible?type=module",
+ "pkg:golang/github.com/docker/docker-credential-helpers@v0.9.8?type=module",
"pkg:golang/github.com/docker/go-connections@v0.7.0?type=module",
"pkg:golang/github.com/docker/go-units@v0.5.0?type=module",
+ "pkg:golang/github.com/dunglas/httpsfv@v1.1.0?type=module",
"pkg:golang/github.com/ettle/strcase@v0.2.0?type=module",
"pkg:golang/github.com/fatih/color@v1.19.0?type=module",
"pkg:golang/github.com/fatih/structtag@v1.2.0?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/firefart/nonamedreturns@v1.0.6?type=module",
+ "pkg:golang/github.com/flynn/noise@v1.1.0?type=module",
"pkg:golang/github.com/fsnotify/fsnotify@v1.9.0?type=module",
"pkg:golang/github.com/fzipp/gocyclo@v0.6.0?type=module",
+ "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.13?type=module",
+ "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4?type=module",
+ "pkg:golang/github.com/getoptimum/shm@v0.5.0?type=module",
"pkg:golang/github.com/ghostiam/protogetter@v0.3.20?type=module",
"pkg:golang/github.com/go-critic/go-critic@v0.14.3?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
+ "pkg:golang/github.com/go-playground/locales@v0.14.1?type=module",
+ "pkg:golang/github.com/go-playground/universal-translator@v0.18.1?type=module",
+ "pkg:golang/github.com/go-playground/validator/v10@v10.30.2?type=module",
"pkg:golang/github.com/go-toolsmith/astcast@v1.1.0?type=module",
"pkg:golang/github.com/go-toolsmith/astcopy@v1.1.0?type=module",
"pkg:golang/github.com/go-toolsmith/astequal@v1.2.0?type=module",
@@ -14066,8 +14340,6 @@
"pkg:golang/github.com/gobwas/glob@v0.2.3?type=module",
"pkg:golang/github.com/godoc-lint/godoc-lint@v0.11.2?type=module",
"pkg:golang/github.com/gofrs/flock@v0.13.0?type=module",
- "pkg:golang/github.com/gogo/protobuf@v1.3.2?type=module",
- "pkg:golang/github.com/golang-jwt/jwt/v5@v5.3.1?type=module",
"pkg:golang/github.com/golangci/asciicheck@v0.5.0?type=module",
"pkg:golang/github.com/golangci/dupl@v0.0.0-20260401084720-c99c5cf5c202?type=module",
"pkg:golang/github.com/golangci/go-printf-func-name@v0.1.1?type=module",
@@ -14080,12 +14352,10 @@
"pkg:golang/github.com/golangci/rowserrcheck@v0.0.0-20260419091836-c5f79b8a11ba?type=module",
"pkg:golang/github.com/golangci/swaggoswag@v0.0.0-20250504205917-77f2aca3143e?type=module",
"pkg:golang/github.com/golangci/unconvert@v0.0.0-20250410112200-a129a6e6413e?type=module",
+ "pkg:golang/github.com/google/cel-go@v0.28.1?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
"pkg:golang/github.com/google/go-containerregistry@v0.21.6?type=module",
- "pkg:golang/github.com/google/s2a-go@v0.1.9?type=module",
"pkg:golang/github.com/google/uuid@v1.6.0?type=module",
- "pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.14?type=module",
- "pkg:golang/github.com/googleapis/gax-go/v2@v2.18.0?type=module",
"pkg:golang/github.com/gordonklaus/ineffassign@v0.2.0?type=module",
"pkg:golang/github.com/gorilla/websocket@v1.5.4-0.20250319132907-e064f32e3674?type=module",
"pkg:golang/github.com/gostaticanalysis/analysisutil@v0.7.1?type=module",
@@ -14094,14 +14364,15 @@
"pkg:golang/github.com/gostaticanalysis/nilerr@v0.1.2?type=module",
"pkg:golang/github.com/hashicorp/go-immutable-radix/v2@v2.1.0?type=module",
"pkg:golang/github.com/hashicorp/go-version@v1.9.0?type=module",
- "pkg:golang/github.com/hashicorp/golang-lru@v1.0.2?type=module",
"pkg:golang/github.com/hashicorp/golang-lru/v2@v2.0.7?type=module",
"pkg:golang/github.com/hexops/gotextdiff@v1.0.3?type=module",
+ "pkg:golang/github.com/huin/goupnp@v1.3.0?type=module",
"pkg:golang/github.com/inconshreveable/mousetrap@v1.1.0?type=module",
"pkg:golang/github.com/ipfs/go-cid@v0.5.0?type=module",
- "pkg:golang/github.com/ipfs/go-datastore@v0.8.2?type=module",
- "pkg:golang/github.com/ipfs/go-log@v1.0.5?type=module",
- "pkg:golang/github.com/ipfs/go-log/v2@v2.6.0?type=module",
+ "pkg:golang/github.com/jackpal/go-nat-pmp@v1.0.2?type=module",
+ "pkg:golang/github.com/jbenet/go-temp-err-catcher@v0.1.0?type=module",
+ "pkg:golang/github.com/jdx/go-netrc@v1.0.0?type=module",
+ "pkg:golang/github.com/jellydator/ttlcache/v3@v3.4.0?type=module",
"pkg:golang/github.com/jgautheron/goconst@v1.10.0?type=module",
"pkg:golang/github.com/jjti/go-spancheck@v0.6.5?type=module",
"pkg:golang/github.com/julz/importas@v0.2.0?type=module",
@@ -14111,9 +14382,14 @@
"pkg:golang/github.com/klauspost/compress@v1.19.1?type=module",
"pkg:golang/github.com/klauspost/cpuid/v2@v2.3.0?type=module",
"pkg:golang/github.com/klauspost/pgzip@v1.2.6?type=module",
+ "pkg:golang/github.com/knadh/koanf/maps@v0.1.2?type=module",
+ "pkg:golang/github.com/knadh/koanf/parsers/yaml@v1.1.0?type=module",
+ "pkg:golang/github.com/knadh/koanf/providers/env/v2@v2.0.0?type=module",
+ "pkg:golang/github.com/knadh/koanf/providers/file@v1.2.1?type=module",
+ "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?type=module",
+ "pkg:golang/github.com/koron/go-ssdp@v0.0.6?type=module",
"pkg:golang/github.com/kulti/thelper@v0.7.1?type=module",
"pkg:golang/github.com/kunwardeep/paralleltest@v1.0.15?type=module",
- "pkg:golang/github.com/kylelemons/godebug@v1.1.0?type=module",
"pkg:golang/github.com/lasiar/canonicalheader@v1.1.2?type=module",
"pkg:golang/github.com/ldez/exptostd@v0.4.5?type=module",
"pkg:golang/github.com/ldez/gomoddirectives@v0.8.0?type=module",
@@ -14121,33 +14397,51 @@
"pkg:golang/github.com/ldez/structtags@v0.6.1?type=module",
"pkg:golang/github.com/ldez/tagliatelle@v0.7.2?type=module",
"pkg:golang/github.com/ldez/usetesting@v0.5.0?type=module",
+ "pkg:golang/github.com/leodido/go-urn@v1.4.0?type=module",
"pkg:golang/github.com/leonklingele/grouper@v1.1.2?type=module",
"pkg:golang/github.com/libp2p/go-buffer-pool@v0.1.0?type=module",
+ "pkg:golang/github.com/libp2p/go-flow-metrics@v0.2.0?type=module",
+ "pkg:golang/github.com/libp2p/go-libp2p@v0.48.0?type=module",
+ "pkg:golang/github.com/libp2p/go-libp2p-asn-util@v0.4.1?type=module",
+ "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.17.0?type=module",
+ "pkg:golang/github.com/libp2p/go-msgio@v0.3.0?type=module",
+ "pkg:golang/github.com/libp2p/go-netroute@v0.4.0?type=module",
+ "pkg:golang/github.com/libp2p/go-reuseport@v0.4.0?type=module",
+ "pkg:golang/github.com/libp2p/go-yamux/v5@v5.0.1?type=module",
"pkg:golang/github.com/lucasb-eyer/go-colorful@v1.4.0?type=module",
"pkg:golang/github.com/macabu/inamedparam@v0.2.0?type=module",
"pkg:golang/github.com/manuelarte/embeddedstructfieldcheck@v0.4.0?type=module",
"pkg:golang/github.com/manuelarte/funcorder@v0.6.0?type=module",
"pkg:golang/github.com/maratori/testableexamples@v1.0.1?type=module",
"pkg:golang/github.com/maratori/testpackage@v1.1.2?type=module",
+ "pkg:golang/github.com/marten-seemann/tcp@v0.0.0-20210406111302-dfbc87cc63fd?type=module",
"pkg:golang/github.com/matoous/godox@v1.1.0?type=module",
"pkg:golang/github.com/mattn/go-colorable@v0.1.15?type=module",
"pkg:golang/github.com/mattn/go-isatty@v0.0.22?type=module",
"pkg:golang/github.com/mattn/go-runewidth@v0.0.23?type=module",
"pkg:golang/github.com/mgechev/revive@v1.15.0?type=module",
+ "pkg:golang/github.com/miekg/dns@v1.1.72?type=module",
+ "pkg:golang/github.com/mikioh/tcpinfo@v0.0.0-20190314235526-30a79bb1804b?type=module",
+ "pkg:golang/github.com/mikioh/tcpopt@v0.0.0-20190314235656-172688c1accc?type=module",
"pkg:golang/github.com/minio/sha256-simd@v1.0.1?type=module",
"pkg:golang/github.com/mitchellh/copystructure@v1.2.0?type=module",
"pkg:golang/github.com/mitchellh/go-homedir@v1.1.0?type=module",
"pkg:golang/github.com/mitchellh/reflectwalk@v1.0.2?type=module",
"pkg:golang/github.com/moby/docker-image-spec@v1.3.1?type=module",
+ "pkg:golang/github.com/moby/moby/api@v1.54.2?type=module",
+ "pkg:golang/github.com/moby/moby/client@v0.4.1?type=module",
"pkg:golang/github.com/moricho/tparallel@v0.3.2?type=module",
"pkg:golang/github.com/mr-tron/base58@v1.3.0?type=module",
"pkg:golang/github.com/muesli/cancelreader@v0.2.2?type=module",
"pkg:golang/github.com/multiformats/go-base32@v0.1.0?type=module",
"pkg:golang/github.com/multiformats/go-base36@v0.2.0?type=module",
"pkg:golang/github.com/multiformats/go-multiaddr@v0.16.1?type=module",
+ "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.4.1?type=module",
+ "pkg:golang/github.com/multiformats/go-multiaddr-fmt@v0.1.0?type=module",
"pkg:golang/github.com/multiformats/go-multibase@v0.2.0?type=module",
"pkg:golang/github.com/multiformats/go-multicodec@v0.9.2?type=module",
"pkg:golang/github.com/multiformats/go-multihash@v0.2.3?type=module",
+ "pkg:golang/github.com/multiformats/go-multistream@v0.6.1?type=module",
"pkg:golang/github.com/multiformats/go-varint@v0.1.0?type=module",
"pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822?type=module",
"pkg:golang/github.com/nakabonne/nestif@v0.3.1?type=module",
@@ -14156,11 +14450,27 @@
"pkg:golang/github.com/nunnatsa/ginkgolinter@v0.23.0?type=module",
"pkg:golang/github.com/opencontainers/go-digest@v1.0.0?type=module",
"pkg:golang/github.com/opencontainers/image-spec@v1.1.1?type=module",
- "pkg:golang/github.com/opentracing/opentracing-go@v1.2.0?type=module",
+ "pkg:golang/github.com/pbnjay/memory@v0.0.0-20210728143218-7b4eea64cf58?type=module",
"pkg:golang/github.com/pelletier/go-toml/v2@v2.3.1?type=module",
- "pkg:golang/github.com/pkg/browser@v0.0.0-20240102092130-5ac0b6a4141c?type=module",
+ "pkg:golang/github.com/petermattis/goid@v0.0.0-20260330135022-df67b199bc81?type=module",
+ "pkg:golang/github.com/pion/datachannel@v1.5.10?type=module",
+ "pkg:golang/github.com/pion/dtls/v3@v3.1.4?type=module",
+ "pkg:golang/github.com/pion/ice/v4@v4.0.10?type=module",
+ "pkg:golang/github.com/pion/interceptor@v0.1.40?type=module",
+ "pkg:golang/github.com/pion/logging@v0.2.4?type=module",
+ "pkg:golang/github.com/pion/mdns/v2@v2.0.7?type=module",
+ "pkg:golang/github.com/pion/randutil@v0.1.0?type=module",
+ "pkg:golang/github.com/pion/rtcp@v1.2.16?type=module",
+ "pkg:golang/github.com/pion/rtp@v1.8.19?type=module",
+ "pkg:golang/github.com/pion/sctp@v1.8.39?type=module",
+ "pkg:golang/github.com/pion/sdp/v3@v3.0.18?type=module",
+ "pkg:golang/github.com/pion/srtp/v3@v3.0.6?type=module",
+ "pkg:golang/github.com/pion/stun/v3@v3.1.1?type=module",
+ "pkg:golang/github.com/pion/transport/v3@v3.0.7?type=module",
+ "pkg:golang/github.com/pion/transport/v4@v4.0.1?type=module",
+ "pkg:golang/github.com/pion/turn/v4@v4.0.2?type=module",
+ "pkg:golang/github.com/pion/webrtc/v4@v4.1.2?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
- "pkg:golang/github.com/polydawn/refmt@v0.89.1-0.20221221234430-40501e09de1f?type=module",
"pkg:golang/github.com/prometheus/client_golang@v1.24.1?type=module",
"pkg:golang/github.com/prometheus/client_model@v0.6.2?type=module",
"pkg:golang/github.com/prometheus/common@v0.70.1?type=module",
@@ -14170,9 +14480,13 @@
"pkg:golang/github.com/quasilyte/gogrep@v0.5.0?type=module",
"pkg:golang/github.com/quasilyte/regex/syntax@v0.0.0-20210819130434-b3f0c404a727?type=module",
"pkg:golang/github.com/quasilyte/stdinfo@v0.0.0-20220114132959-f7386bf02567?type=module",
+ "pkg:golang/github.com/quic-go/qpack@v0.6.0?type=module",
+ "pkg:golang/github.com/quic-go/quic-go@v0.60.0?type=module",
+ "pkg:golang/github.com/quic-go/webtransport-go@v0.11.1?type=module",
"pkg:golang/github.com/raeperd/recvcheck@v0.2.0?type=module",
"pkg:golang/github.com/rivo/uniseg@v0.4.7?type=module",
"pkg:golang/github.com/rogpeppe/go-internal@v1.14.1?type=module",
+ "pkg:golang/github.com/rs/cors@v1.11.1?type=module",
"pkg:golang/github.com/russross/blackfriday/v2@v2.1.0?type=module",
"pkg:golang/github.com/ryancurrah/gomodguard@v1.4.1?type=module",
"pkg:golang/github.com/ryancurrah/gomodguard/v2@v2.1.3?type=module",
@@ -14183,6 +14497,8 @@
"pkg:golang/github.com/sashamelentyev/interfacebloat@v1.1.0?type=module",
"pkg:golang/github.com/sashamelentyev/usestdlibvars@v1.29.0?type=module",
"pkg:golang/github.com/securego/gosec/v2@v2.26.1?type=module",
+ "pkg:golang/github.com/segmentio/asm@v1.2.1?type=module",
+ "pkg:golang/github.com/segmentio/encoding@v0.5.4?type=module",
"pkg:golang/github.com/sirupsen/logrus@v1.9.4?type=module",
"pkg:golang/github.com/sivchari/containedctx@v1.0.3?type=module",
"pkg:golang/github.com/sonatard/noctx@v0.5.1?type=module",
@@ -14199,6 +14515,8 @@
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/github.com/subosito/gotenv@v1.6.0?type=module",
"pkg:golang/github.com/tetafro/godot@v1.5.6?type=module",
+ "pkg:golang/github.com/tetratelabs/wazero@v1.12.0?type=module",
+ "pkg:golang/github.com/tidwall/btree@v1.8.1?type=module",
"pkg:golang/github.com/timakin/bodyclose@v0.0.0-20260129054331-73d1f95b84b4?type=module",
"pkg:golang/github.com/timonwong/loggercheck@v0.11.0?type=module",
"pkg:golang/github.com/tomarrell/wrapcheck/v2@v2.12.0?type=module",
@@ -14207,6 +14525,7 @@
"pkg:golang/github.com/ultraware/whitespace@v0.2.0?type=module",
"pkg:golang/github.com/uudashr/gocognit@v1.2.1?type=module",
"pkg:golang/github.com/uudashr/iface@v1.4.2?type=module",
+ "pkg:golang/github.com/wlynxg/anet@v0.0.5?type=module",
"pkg:golang/github.com/xen0n/gosmopolitan@v1.3.0?type=module",
"pkg:golang/github.com/xo/terminfo@v0.0.0-20220910002029-abceb7e1c41e?type=module",
"pkg:golang/github.com/yagipy/maintidx@v1.0.0?type=module",
@@ -14217,22 +14536,26 @@
"pkg:golang/go-simpler.org/sloglint@v0.12.0?type=module",
"pkg:golang/go.augendre.info/arangolint@v0.4.0?type=module",
"pkg:golang/go.augendre.info/fatcontext@v0.9.0?type=module",
+ "pkg:golang/go.lsp.dev/jsonrpc2@v0.10.0?type=module",
+ "pkg:golang/go.lsp.dev/pkg@v0.0.0-20210717090340-384b27a52fb2?type=module",
+ "pkg:golang/go.lsp.dev/protocol@v0.12.0?type=module",
+ "pkg:golang/go.lsp.dev/uri@v0.3.0?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
- "pkg:golang/go.uber.org/atomic@v1.11.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
+ "pkg:golang/go.uber.org/dig@v1.19.0?type=module",
+ "pkg:golang/go.uber.org/fx@v1.24.0?type=module",
+ "pkg:golang/go.uber.org/mock@v0.6.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
- "pkg:golang/go.yaml.in/yaml/v2@v2.4.4?type=module",
"pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/exp/typeparams@v0.0.0-20260209203927-2842357ff358?type=module",
"pkg:golang/golang.org/x/mod@v0.37.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
- "pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/telemetry@v0.0.0-20260625142307-59b4966ccb57?type=module",
@@ -14240,174 +14563,327 @@
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/golang.org/x/time@v0.15.0?type=module",
"pkg:golang/golang.org/x/tools@v0.47.0?type=module",
- "pkg:golang/google.golang.org/api@v0.272.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
+ "pkg:golang/google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.6.2?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
"pkg:golang/honnef.co/go/tools@v0.7.0?type=module",
"pkg:golang/lukechampine.com/blake3@v1.4.1?type=module",
"pkg:golang/mvdan.cc/gofumpt@v0.9.2?type=module",
"pkg:golang/mvdan.cc/unparam@v0.0.0-20251027182757-5beb8c8f8f15?type=module",
- "pkg:golang/sigs.k8s.io/yaml@v1.6.0?type=module"
+ "pkg:golang/mvdan.cc/xurls/v2@v2.6.0?type=module",
+ "pkg:golang/pluginrpc.com/pluginrpc@v0.5.0?type=module"
]
},
{
- "ref": "pkg:golang/github.com/getoptimum/optimum-p2p@v0.0.1-rc12.2?type=module",
+ "ref": "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4?type=module",
"dependsOn": [
- "pkg:golang/github.com/andybalholm/brotli@v1.2.2?type=module",
- "pkg:golang/github.com/benbjohnson/clock@v1.3.5?type=module",
+ "pkg:golang/4d63.com/gocheckcompilerdirectives@v1.3.0?type=module",
+ "pkg:golang/4d63.com/gochecknoglobals@v0.2.2?type=module",
+ "pkg:golang/cel.dev/expr@v0.25.2?type=module",
+ "pkg:golang/charm.land/lipgloss/v2@v2.0.3?type=module",
+ "pkg:golang/cloud.google.com/go/auth@v0.18.2?type=module",
+ "pkg:golang/cloud.google.com/go/auth/oauth2adapt@v0.2.8?type=module",
+ "pkg:golang/cloud.google.com/go/compute/metadata@v0.9.0?type=module",
+ "pkg:golang/codeberg.org/chavacava/garif@v0.2.0?type=module",
+ "pkg:golang/codeberg.org/polyfloyd/go-errorlint@v1.9.0?type=module",
+ "pkg:golang/dev.gaijin.team/go/exhaustruct/v4@v4.0.0?type=module",
+ "pkg:golang/dev.gaijin.team/go/golib@v0.6.0?type=module",
+ "pkg:golang/github.com/4meepo/tagalign@v1.4.3?type=module",
+ "pkg:golang/github.com/Abirdcfly/dupword@v0.1.7?type=module",
+ "pkg:golang/github.com/AdminBenni/iota-mixing@v1.0.0?type=module",
+ "pkg:golang/github.com/AlwxSin/noinlineerr@v1.0.5?type=module",
+ "pkg:golang/github.com/Antonboom/errname@v1.1.1?type=module",
+ "pkg:golang/github.com/Antonboom/nilnil@v1.1.1?type=module",
+ "pkg:golang/github.com/Antonboom/testifylint@v1.6.4?type=module",
+ "pkg:golang/github.com/Azure/azure-sdk-for-go/sdk/azcore@v1.21.0?type=module",
+ "pkg:golang/github.com/Azure/azure-sdk-for-go/sdk/azidentity@v1.13.1?type=module",
+ "pkg:golang/github.com/Azure/azure-sdk-for-go/sdk/internal@v1.11.2?type=module",
+ "pkg:golang/github.com/AzureAD/microsoft-authentication-library-for-go@v1.6.0?type=module",
+ "pkg:golang/github.com/BurntSushi/toml@v1.6.0?type=module",
+ "pkg:golang/github.com/ClickHouse/clickhouse-go-linter@v1.2.0?type=module",
+ "pkg:golang/github.com/Djarvur/go-err113@v0.1.1?type=module",
+ "pkg:golang/github.com/Masterminds/semver/v3@v3.5.0?type=module",
+ "pkg:golang/github.com/MicahParks/jwkset@v0.11.1?type=module",
+ "pkg:golang/github.com/MicahParks/keyfunc/v3@v3.8.1?type=module",
+ "pkg:golang/github.com/Microsoft/go-winio@v0.6.2?type=module",
+ "pkg:golang/github.com/MirrexOne/unqueryvet@v1.5.4?type=module",
+ "pkg:golang/github.com/OpenPeeDeeP/depguard/v2@v2.2.1?type=module",
+ "pkg:golang/github.com/alecthomas/chroma/v2@v2.24.1?type=module",
+ "pkg:golang/github.com/alecthomas/go-check-sumtype@v0.3.1?type=module",
+ "pkg:golang/github.com/alexkohler/nakedret/v2@v2.0.6?type=module",
+ "pkg:golang/github.com/alexkohler/prealloc@v1.1.0?type=module",
+ "pkg:golang/github.com/alfatraining/structtag@v1.0.0?type=module",
+ "pkg:golang/github.com/alingse/asasalint@v0.0.11?type=module",
+ "pkg:golang/github.com/alingse/nilnesserr@v0.2.0?type=module",
+ "pkg:golang/github.com/ashanbrown/forbidigo/v2@v2.3.1?type=module",
+ "pkg:golang/github.com/ashanbrown/makezero/v2@v2.2.1?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2@v1.41.4?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/config@v1.32.12?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/credentials@v1.19.12?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/feature/ec2/imds@v1.18.20?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/internal/configsources@v1.4.20?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.7.20?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/internal/ini@v1.8.6?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding@v1.13.7?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.13.20?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/service/signin@v1.0.8?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/service/sso@v1.30.13?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.35.17?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/service/sts@v1.41.9?type=module",
+ "pkg:golang/github.com/aws/smithy-go@v1.24.2?type=module",
"pkg:golang/github.com/beorn7/perks@v1.0.1?type=module",
+ "pkg:golang/github.com/bkielbasa/cyclop@v1.2.3?type=module",
+ "pkg:golang/github.com/blizzy78/varnamelen@v0.8.0?type=module",
+ "pkg:golang/github.com/bombsimon/wsl/v4@v4.7.0?type=module",
+ "pkg:golang/github.com/bombsimon/wsl/v5@v5.8.0?type=module",
+ "pkg:golang/github.com/breml/bidichk@v0.3.3?type=module",
+ "pkg:golang/github.com/breml/errchkjson@v0.4.1?type=module",
+ "pkg:golang/github.com/butuzov/ireturn@v0.4.1?type=module",
+ "pkg:golang/github.com/butuzov/mirror@v1.3.0?type=module",
+ "pkg:golang/github.com/catenacyber/perfsprint@v0.10.1?type=module",
+ "pkg:golang/github.com/ccojocar/zxcvbn-go@v1.0.4?type=module",
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
+ "pkg:golang/github.com/charithe/durationcheck@v0.0.11?type=module",
"pkg:golang/github.com/charmbracelet/colorprofile@v0.4.3?type=module",
+ "pkg:golang/github.com/charmbracelet/ultraviolet@v0.0.0-20251205161215-1948445e3318?type=module",
"pkg:golang/github.com/charmbracelet/x/ansi@v0.11.7?type=module",
"pkg:golang/github.com/charmbracelet/x/term@v0.2.2?type=module",
+ "pkg:golang/github.com/charmbracelet/x/termios@v0.1.1?type=module",
+ "pkg:golang/github.com/charmbracelet/x/windows@v0.2.2?type=module",
+ "pkg:golang/github.com/ckaznocha/intrange@v0.3.1?type=module",
"pkg:golang/github.com/clipperhouse/displaywidth@v0.11.0?type=module",
"pkg:golang/github.com/clipperhouse/uax29/v2@v2.7.0?type=module",
+ "pkg:golang/github.com/containerd/errdefs@v1.0.0?type=module",
+ "pkg:golang/github.com/containerd/errdefs/pkg@v0.3.0?type=module",
+ "pkg:golang/github.com/cpuguy83/go-md2man/v2@v2.0.7?type=module",
+ "pkg:golang/github.com/curioswitch/go-reassign@v0.3.0?type=module",
+ "pkg:golang/github.com/daixiang0/gci@v0.13.7?type=module",
+ "pkg:golang/github.com/dave/dst@v0.27.3?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
- "pkg:golang/github.com/davidlazar/go-crypto@v0.0.0-20200604182044-b73af7476f6c?type=module",
"pkg:golang/github.com/decred/dcrd/dcrec/secp256k1/v4@v4.4.0?type=module",
- "pkg:golang/github.com/dunglas/httpsfv@v1.1.0?type=module",
- "pkg:golang/github.com/flynn/noise@v1.1.0?type=module",
- "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4-0.20260811133125-9ee6a6cb5cf3?type=module",
- "pkg:golang/github.com/getoptimum/rlnc@v0.0.1-rc1.0.20260326154748-8ead5e1b16e5?type=module",
+ "pkg:golang/github.com/denis-tingaikin/go-header@v0.5.0?type=module",
+ "pkg:golang/github.com/distribution/reference@v0.6.0?type=module",
+ "pkg:golang/github.com/dlclark/regexp2@v1.12.0?type=module",
+ "pkg:golang/github.com/docker/cli@v29.5.3+incompatible?type=module",
+ "pkg:golang/github.com/docker/docker-credential-helpers@v0.9.8?type=module",
+ "pkg:golang/github.com/docker/go-connections@v0.7.0?type=module",
+ "pkg:golang/github.com/docker/go-units@v0.5.0?type=module",
+ "pkg:golang/github.com/ettle/strcase@v0.2.0?type=module",
+ "pkg:golang/github.com/fatih/color@v1.19.0?type=module",
+ "pkg:golang/github.com/fatih/structtag@v1.2.0?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
+ "pkg:golang/github.com/firefart/nonamedreturns@v1.0.6?type=module",
+ "pkg:golang/github.com/fsnotify/fsnotify@v1.9.0?type=module",
+ "pkg:golang/github.com/fzipp/gocyclo@v0.6.0?type=module",
+ "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.13?type=module",
+ "pkg:golang/github.com/ghostiam/protogetter@v0.3.20?type=module",
+ "pkg:golang/github.com/go-critic/go-critic@v0.14.3?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
+ "pkg:golang/github.com/go-toolsmith/astcast@v1.1.0?type=module",
+ "pkg:golang/github.com/go-toolsmith/astcopy@v1.1.0?type=module",
+ "pkg:golang/github.com/go-toolsmith/astequal@v1.2.0?type=module",
+ "pkg:golang/github.com/go-toolsmith/astfmt@v1.1.0?type=module",
+ "pkg:golang/github.com/go-toolsmith/astp@v1.1.0?type=module",
+ "pkg:golang/github.com/go-toolsmith/strparse@v1.1.0?type=module",
+ "pkg:golang/github.com/go-toolsmith/typep@v1.1.0?type=module",
+ "pkg:golang/github.com/go-viper/mapstructure/v2@v2.5.0?type=module",
+ "pkg:golang/github.com/go-xmlfmt/xmlfmt@v1.1.3?type=module",
+ "pkg:golang/github.com/gobwas/glob@v0.2.3?type=module",
+ "pkg:golang/github.com/godoc-lint/godoc-lint@v0.11.2?type=module",
+ "pkg:golang/github.com/gofrs/flock@v0.13.0?type=module",
"pkg:golang/github.com/gogo/protobuf@v1.3.2?type=module",
"pkg:golang/github.com/golang-jwt/jwt/v5@v5.3.1?type=module",
- "pkg:golang/github.com/golang/snappy@v1.0.0?type=module",
- "pkg:golang/github.com/google/gopacket@v1.1.19?type=module",
+ "pkg:golang/github.com/golangci/asciicheck@v0.5.0?type=module",
+ "pkg:golang/github.com/golangci/dupl@v0.0.0-20260401084720-c99c5cf5c202?type=module",
+ "pkg:golang/github.com/golangci/go-printf-func-name@v0.1.1?type=module",
+ "pkg:golang/github.com/golangci/gofmt@v0.0.0-20250106114630-d62b90e6713d?type=module",
+ "pkg:golang/github.com/golangci/golangci-lint/v2@v2.12.2?type=module",
+ "pkg:golang/github.com/golangci/golines@v0.15.0?type=module",
+ "pkg:golang/github.com/golangci/misspell@v0.8.0?type=module",
+ "pkg:golang/github.com/golangci/plugin-module-register@v0.1.2?type=module",
+ "pkg:golang/github.com/golangci/revgrep@v0.8.0?type=module",
+ "pkg:golang/github.com/golangci/rowserrcheck@v0.0.0-20260419091836-c5f79b8a11ba?type=module",
+ "pkg:golang/github.com/golangci/swaggoswag@v0.0.0-20250504205917-77f2aca3143e?type=module",
+ "pkg:golang/github.com/golangci/unconvert@v0.0.0-20250410112200-a129a6e6413e?type=module",
+ "pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
+ "pkg:golang/github.com/google/go-containerregistry@v0.21.6?type=module",
+ "pkg:golang/github.com/google/s2a-go@v0.1.9?type=module",
"pkg:golang/github.com/google/uuid@v1.6.0?type=module",
+ "pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.14?type=module",
+ "pkg:golang/github.com/googleapis/gax-go/v2@v2.18.0?type=module",
+ "pkg:golang/github.com/gordonklaus/ineffassign@v0.2.0?type=module",
"pkg:golang/github.com/gorilla/websocket@v1.5.4-0.20250319132907-e064f32e3674?type=module",
+ "pkg:golang/github.com/gostaticanalysis/analysisutil@v0.7.1?type=module",
+ "pkg:golang/github.com/gostaticanalysis/comment@v1.5.0?type=module",
+ "pkg:golang/github.com/gostaticanalysis/forcetypeassert@v0.2.0?type=module",
+ "pkg:golang/github.com/gostaticanalysis/nilerr@v0.1.2?type=module",
+ "pkg:golang/github.com/hashicorp/go-immutable-radix/v2@v2.1.0?type=module",
+ "pkg:golang/github.com/hashicorp/go-version@v1.9.0?type=module",
"pkg:golang/github.com/hashicorp/golang-lru@v1.0.2?type=module",
"pkg:golang/github.com/hashicorp/golang-lru/v2@v2.0.7?type=module",
- "pkg:golang/github.com/huin/goupnp@v1.3.0?type=module",
+ "pkg:golang/github.com/hexops/gotextdiff@v1.0.3?type=module",
"pkg:golang/github.com/inconshreveable/mousetrap@v1.1.0?type=module",
- "pkg:golang/github.com/ipfs/boxo@v0.30.0?type=module",
"pkg:golang/github.com/ipfs/go-cid@v0.5.0?type=module",
"pkg:golang/github.com/ipfs/go-datastore@v0.8.2?type=module",
"pkg:golang/github.com/ipfs/go-log@v1.0.5?type=module",
"pkg:golang/github.com/ipfs/go-log/v2@v2.6.0?type=module",
- "pkg:golang/github.com/ipld/go-ipld-prime@v0.21.0?type=module",
- "pkg:golang/github.com/jackpal/go-nat-pmp@v1.0.2?type=module",
- "pkg:golang/github.com/jbenet/go-temp-err-catcher@v0.1.0?type=module",
+ "pkg:golang/github.com/jgautheron/goconst@v1.10.0?type=module",
+ "pkg:golang/github.com/jjti/go-spancheck@v0.6.5?type=module",
+ "pkg:golang/github.com/julz/importas@v0.2.0?type=module",
+ "pkg:golang/github.com/karamaru-alpha/copyloopvar@v1.2.2?type=module",
+ "pkg:golang/github.com/kisielk/errcheck@v1.10.0?type=module",
+ "pkg:golang/github.com/kkHAIKE/contextcheck@v1.1.6?type=module",
"pkg:golang/github.com/klauspost/compress@v1.19.1?type=module",
"pkg:golang/github.com/klauspost/cpuid/v2@v2.3.0?type=module",
- "pkg:golang/github.com/koron/go-ssdp@v0.0.6?type=module",
+ "pkg:golang/github.com/klauspost/pgzip@v1.2.6?type=module",
+ "pkg:golang/github.com/kulti/thelper@v0.7.1?type=module",
+ "pkg:golang/github.com/kunwardeep/paralleltest@v1.0.15?type=module",
+ "pkg:golang/github.com/kylelemons/godebug@v1.1.0?type=module",
+ "pkg:golang/github.com/lasiar/canonicalheader@v1.1.2?type=module",
+ "pkg:golang/github.com/ldez/exptostd@v0.4.5?type=module",
+ "pkg:golang/github.com/ldez/gomoddirectives@v0.8.0?type=module",
+ "pkg:golang/github.com/ldez/grignotin@v0.10.1?type=module",
+ "pkg:golang/github.com/ldez/structtags@v0.6.1?type=module",
+ "pkg:golang/github.com/ldez/tagliatelle@v0.7.2?type=module",
+ "pkg:golang/github.com/ldez/usetesting@v0.5.0?type=module",
+ "pkg:golang/github.com/leonklingele/grouper@v1.1.2?type=module",
"pkg:golang/github.com/libp2p/go-buffer-pool@v0.1.0?type=module",
- "pkg:golang/github.com/libp2p/go-cidranger@v1.1.0?type=module",
- "pkg:golang/github.com/libp2p/go-flow-metrics@v0.2.0?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p@v0.48.0?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p-asn-util@v0.4.1?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p-kad-dht@v0.33.1?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p-kbucket@v0.7.0?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.16.1-0.20260611143718-41b11d5cb1a7?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p-record@v0.3.1?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p-routing-helpers@v0.7.5?type=module",
- "pkg:golang/github.com/libp2p/go-msgio@v0.3.0?type=module",
- "pkg:golang/github.com/libp2p/go-netroute@v0.4.0?type=module",
- "pkg:golang/github.com/libp2p/go-reuseport@v0.4.0?type=module",
- "pkg:golang/github.com/libp2p/go-yamux/v5@v5.0.1?type=module",
"pkg:golang/github.com/lucasb-eyer/go-colorful@v1.4.0?type=module",
- "pkg:golang/github.com/marten-seemann/tcp@v0.0.0-20210406111302-dfbc87cc63fd?type=module",
+ "pkg:golang/github.com/macabu/inamedparam@v0.2.0?type=module",
+ "pkg:golang/github.com/manuelarte/embeddedstructfieldcheck@v0.4.0?type=module",
+ "pkg:golang/github.com/manuelarte/funcorder@v0.6.0?type=module",
+ "pkg:golang/github.com/maratori/testableexamples@v1.0.1?type=module",
+ "pkg:golang/github.com/maratori/testpackage@v1.1.2?type=module",
+ "pkg:golang/github.com/matoous/godox@v1.1.0?type=module",
"pkg:golang/github.com/mattn/go-colorable@v0.1.15?type=module",
"pkg:golang/github.com/mattn/go-isatty@v0.0.22?type=module",
"pkg:golang/github.com/mattn/go-runewidth@v0.0.23?type=module",
- "pkg:golang/github.com/miekg/dns@v1.1.72?type=module",
- "pkg:golang/github.com/mikioh/tcpinfo@v0.0.0-20190314235526-30a79bb1804b?type=module",
- "pkg:golang/github.com/mikioh/tcpopt@v0.0.0-20190314235656-172688c1accc?type=module",
+ "pkg:golang/github.com/mgechev/revive@v1.15.0?type=module",
"pkg:golang/github.com/minio/sha256-simd@v1.0.1?type=module",
- "pkg:golang/github.com/montanaflynn/stats@v0.7.1?type=module",
+ "pkg:golang/github.com/mitchellh/copystructure@v1.2.0?type=module",
+ "pkg:golang/github.com/mitchellh/go-homedir@v1.1.0?type=module",
+ "pkg:golang/github.com/mitchellh/reflectwalk@v1.0.2?type=module",
+ "pkg:golang/github.com/moby/docker-image-spec@v1.3.1?type=module",
+ "pkg:golang/github.com/moricho/tparallel@v0.3.2?type=module",
"pkg:golang/github.com/mr-tron/base58@v1.3.0?type=module",
"pkg:golang/github.com/muesli/cancelreader@v0.2.2?type=module",
"pkg:golang/github.com/multiformats/go-base32@v0.1.0?type=module",
"pkg:golang/github.com/multiformats/go-base36@v0.2.0?type=module",
"pkg:golang/github.com/multiformats/go-multiaddr@v0.16.1?type=module",
- "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.4.1?type=module",
- "pkg:golang/github.com/multiformats/go-multiaddr-fmt@v0.1.0?type=module",
"pkg:golang/github.com/multiformats/go-multibase@v0.2.0?type=module",
"pkg:golang/github.com/multiformats/go-multicodec@v0.9.2?type=module",
"pkg:golang/github.com/multiformats/go-multihash@v0.2.3?type=module",
- "pkg:golang/github.com/multiformats/go-multistream@v0.6.1?type=module",
"pkg:golang/github.com/multiformats/go-varint@v0.1.0?type=module",
"pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822?type=module",
+ "pkg:golang/github.com/nakabonne/nestif@v0.3.1?type=module",
+ "pkg:golang/github.com/nishanths/exhaustive@v0.12.0?type=module",
+ "pkg:golang/github.com/nishanths/predeclared@v0.2.2?type=module",
+ "pkg:golang/github.com/nunnatsa/ginkgolinter@v0.23.0?type=module",
+ "pkg:golang/github.com/opencontainers/go-digest@v1.0.0?type=module",
+ "pkg:golang/github.com/opencontainers/image-spec@v1.1.1?type=module",
"pkg:golang/github.com/opentracing/opentracing-go@v1.2.0?type=module",
- "pkg:golang/github.com/pbnjay/memory@v0.0.0-20210728143218-7b4eea64cf58?type=module",
- "pkg:golang/github.com/pion/datachannel@v1.5.10?type=module",
- "pkg:golang/github.com/pion/dtls/v3@v3.1.4?type=module",
- "pkg:golang/github.com/pion/ice/v4@v4.0.10?type=module",
- "pkg:golang/github.com/pion/interceptor@v0.1.40?type=module",
- "pkg:golang/github.com/pion/logging@v0.2.4?type=module",
- "pkg:golang/github.com/pion/mdns/v2@v2.0.7?type=module",
- "pkg:golang/github.com/pion/randutil@v0.1.0?type=module",
- "pkg:golang/github.com/pion/rtcp@v1.2.16?type=module",
- "pkg:golang/github.com/pion/rtp@v1.8.19?type=module",
- "pkg:golang/github.com/pion/sctp@v1.8.39?type=module",
- "pkg:golang/github.com/pion/sdp/v3@v3.0.18?type=module",
- "pkg:golang/github.com/pion/srtp/v3@v3.0.6?type=module",
- "pkg:golang/github.com/pion/stun/v3@v3.1.1?type=module",
- "pkg:golang/github.com/pion/transport/v3@v3.0.7?type=module",
- "pkg:golang/github.com/pion/turn/v4@v4.0.2?type=module",
- "pkg:golang/github.com/pion/webrtc/v4@v4.1.2?type=module",
+ "pkg:golang/github.com/pelletier/go-toml/v2@v2.3.1?type=module",
+ "pkg:golang/github.com/pkg/browser@v0.0.0-20240102092130-5ac0b6a4141c?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/polydawn/refmt@v0.89.1-0.20221221234430-40501e09de1f?type=module",
"pkg:golang/github.com/prometheus/client_golang@v1.24.1?type=module",
"pkg:golang/github.com/prometheus/client_model@v0.6.2?type=module",
"pkg:golang/github.com/prometheus/common@v0.70.1?type=module",
"pkg:golang/github.com/prometheus/procfs@v0.21.1?type=module",
- "pkg:golang/github.com/quic-go/qpack@v0.6.0?type=module",
- "pkg:golang/github.com/quic-go/quic-go@v0.60.0?type=module",
- "pkg:golang/github.com/quic-go/webtransport-go@v0.11.1?type=module",
+ "pkg:golang/github.com/quasilyte/go-ruleguard@v0.4.5?type=module",
+ "pkg:golang/github.com/quasilyte/go-ruleguard/dsl@v0.3.23?type=module",
+ "pkg:golang/github.com/quasilyte/gogrep@v0.5.0?type=module",
+ "pkg:golang/github.com/quasilyte/regex/syntax@v0.0.0-20210819130434-b3f0c404a727?type=module",
+ "pkg:golang/github.com/quasilyte/stdinfo@v0.0.0-20220114132959-f7386bf02567?type=module",
+ "pkg:golang/github.com/raeperd/recvcheck@v0.2.0?type=module",
"pkg:golang/github.com/rivo/uniseg@v0.4.7?type=module",
+ "pkg:golang/github.com/rogpeppe/go-internal@v1.14.1?type=module",
+ "pkg:golang/github.com/russross/blackfriday/v2@v2.1.0?type=module",
+ "pkg:golang/github.com/ryancurrah/gomodguard@v1.4.1?type=module",
+ "pkg:golang/github.com/ryancurrah/gomodguard/v2@v2.1.3?type=module",
+ "pkg:golang/github.com/ryanrolds/sqlclosecheck@v0.6.0?type=module",
+ "pkg:golang/github.com/sagikazarmark/locafero@v0.12.0?type=module",
+ "pkg:golang/github.com/sanposhiho/wastedassign/v2@v2.1.0?type=module",
+ "pkg:golang/github.com/santhosh-tekuri/jsonschema/v6@v6.0.2?type=module",
+ "pkg:golang/github.com/sashamelentyev/interfacebloat@v1.1.0?type=module",
+ "pkg:golang/github.com/sashamelentyev/usestdlibvars@v1.29.0?type=module",
+ "pkg:golang/github.com/securego/gosec/v2@v2.26.1?type=module",
+ "pkg:golang/github.com/sirupsen/logrus@v1.9.4?type=module",
+ "pkg:golang/github.com/sivchari/containedctx@v1.0.3?type=module",
+ "pkg:golang/github.com/sonatard/noctx@v0.5.1?type=module",
+ "pkg:golang/github.com/sourcegraph/go-diff@v0.8.0?type=module",
"pkg:golang/github.com/spaolacci/murmur3@v1.1.0?type=module",
+ "pkg:golang/github.com/spf13/afero@v1.15.0?type=module",
+ "pkg:golang/github.com/spf13/cast@v1.10.0?type=module",
"pkg:golang/github.com/spf13/cobra@v1.10.2?type=module",
"pkg:golang/github.com/spf13/pflag@v1.0.10?type=module",
+ "pkg:golang/github.com/spf13/viper@v1.21.0?type=module",
+ "pkg:golang/github.com/ssgreg/nlreturn/v2@v2.2.1?type=module",
+ "pkg:golang/github.com/stbenjam/no-sprintf-host-port@v0.3.1?type=module",
+ "pkg:golang/github.com/stretchr/objx@v0.5.2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
- "pkg:golang/github.com/valyala/bytebufferpool@v1.0.0?type=module",
- "pkg:golang/github.com/valyala/fasthttp@v1.72.0?type=module",
- "pkg:golang/github.com/whyrusleeping/go-keyspace@v0.0.0-20160322163242-5b898ac5add1?type=module",
- "pkg:golang/github.com/wlynxg/anet@v0.0.5?type=module",
+ "pkg:golang/github.com/subosito/gotenv@v1.6.0?type=module",
+ "pkg:golang/github.com/tetafro/godot@v1.5.6?type=module",
+ "pkg:golang/github.com/timakin/bodyclose@v0.0.0-20260129054331-73d1f95b84b4?type=module",
+ "pkg:golang/github.com/timonwong/loggercheck@v0.11.0?type=module",
+ "pkg:golang/github.com/tomarrell/wrapcheck/v2@v2.12.0?type=module",
+ "pkg:golang/github.com/tommy-muehle/go-mnd/v2@v2.5.1?type=module",
+ "pkg:golang/github.com/ultraware/funlen@v0.2.0?type=module",
+ "pkg:golang/github.com/ultraware/whitespace@v0.2.0?type=module",
+ "pkg:golang/github.com/uudashr/gocognit@v1.2.1?type=module",
+ "pkg:golang/github.com/uudashr/iface@v1.4.2?type=module",
+ "pkg:golang/github.com/xen0n/gosmopolitan@v1.3.0?type=module",
"pkg:golang/github.com/xo/terminfo@v0.0.0-20220910002029-abceb7e1c41e?type=module",
+ "pkg:golang/github.com/yagipy/maintidx@v1.0.0?type=module",
+ "pkg:golang/github.com/yeya24/promlinter@v0.3.0?type=module",
+ "pkg:golang/github.com/ykadowak/zerologlint@v0.1.5?type=module",
+ "pkg:golang/gitlab.com/bosi/decorder@v0.4.2?type=module",
+ "pkg:golang/go-simpler.org/musttag@v0.14.0?type=module",
+ "pkg:golang/go-simpler.org/sloglint@v0.12.0?type=module",
+ "pkg:golang/go.augendre.info/arangolint@v0.4.0?type=module",
+ "pkg:golang/go.augendre.info/fatcontext@v0.9.0?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
- "pkg:golang/go.uber.org/dig@v1.19.0?type=module",
- "pkg:golang/go.uber.org/fx@v1.24.0?type=module",
- "pkg:golang/go.uber.org/mock@v0.5.2?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
+ "pkg:golang/go.uber.org/atomic@v1.11.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/go.yaml.in/yaml/v2@v2.4.4?type=module",
+ "pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
+ "pkg:golang/golang.org/x/exp/typeparams@v0.0.0-20260209203927-2842357ff358?type=module",
"pkg:golang/golang.org/x/mod@v0.37.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
+ "pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/telemetry@v0.0.0-20260625142307-59b4966ccb57?type=module",
+ "pkg:golang/golang.org/x/term@v0.45.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/golang.org/x/time@v0.15.0?type=module",
"pkg:golang/golang.org/x/tools@v0.47.0?type=module",
- "pkg:golang/gonum.org/v1/gonum@v0.17.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/api@v0.272.0?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
- "pkg:golang/gopkg.in/yaml.v2@v2.4.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
- "pkg:golang/lukechampine.com/blake3@v1.4.1?type=module"
+ "pkg:golang/honnef.co/go/tools@v0.7.0?type=module",
+ "pkg:golang/lukechampine.com/blake3@v1.4.1?type=module",
+ "pkg:golang/mvdan.cc/gofumpt@v0.9.2?type=module",
+ "pkg:golang/mvdan.cc/unparam@v0.0.0-20251027182757-5beb8c8f8f15?type=module",
+ "pkg:golang/sigs.k8s.io/yaml@v1.6.0?type=module"
]
},
{
- "ref": "pkg:golang/github.com/getoptimum/rlnc@v0.0.1-rc1.0.20260326154748-8ead5e1b16e5?type=module",
- "dependsOn": [
- "pkg:golang/golang.org/x/net@v0.57.0?type=module",
- "pkg:golang/golang.org/x/sys@v0.47.0?type=module",
- "pkg:golang/golang.org/x/text@v0.40.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
- "pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
- "pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
- ]
+ "ref": "pkg:golang/github.com/getoptimum/shm@v0.5.0?type=module"
},
{
"ref": "pkg:golang/github.com/ghostiam/protogetter@v0.3.20?type=module",
@@ -14449,6 +14925,30 @@
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module"
]
},
+ {
+ "ref": "pkg:golang/github.com/go-playground/locales@v0.14.1?type=module",
+ "dependsOn": [
+ "pkg:golang/golang.org/x/text@v0.40.0?type=module"
+ ]
+ },
+ {
+ "ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1?type=module",
+ "dependsOn": [
+ "pkg:golang/github.com/go-playground/locales@v0.14.1?type=module"
+ ]
+ },
+ {
+ "ref": "pkg:golang/github.com/go-playground/validator/v10@v10.30.2?type=module",
+ "dependsOn": [
+ "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.13?type=module",
+ "pkg:golang/github.com/go-playground/locales@v0.14.1?type=module",
+ "pkg:golang/github.com/go-playground/universal-translator@v0.18.1?type=module",
+ "pkg:golang/github.com/leodido/go-urn@v1.4.0?type=module",
+ "pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
+ "pkg:golang/golang.org/x/sys@v0.47.0?type=module",
+ "pkg:golang/golang.org/x/text@v0.40.0?type=module"
+ ]
+ },
{
"ref": "pkg:golang/github.com/go-toolsmith/astcast@v1.1.0?type=module",
"dependsOn": [
@@ -14805,7 +15305,7 @@
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/exp/typeparams@v0.0.0-20260209203927-2842357ff358?type=module",
"pkg:golang/golang.org/x/mod@v0.37.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
@@ -14890,10 +15390,10 @@
"pkg:golang/github.com/antlr4-go/antlr/v4@v4.13.1?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
"pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
},
@@ -14910,11 +15410,11 @@
"pkg:golang/github.com/containerd/errdefs/pkg@v0.3.0?type=module",
"pkg:golang/github.com/cpuguy83/go-md2man/v2@v2.0.7?type=module",
"pkg:golang/github.com/distribution/reference@v0.6.0?type=module",
- "pkg:golang/github.com/docker/cli@v29.5.2+incompatible?type=module",
- "pkg:golang/github.com/docker/docker-credential-helpers@v0.9.7?type=module",
+ "pkg:golang/github.com/docker/cli@v29.5.3+incompatible?type=module",
+ "pkg:golang/github.com/docker/docker-credential-helpers@v0.9.8?type=module",
"pkg:golang/github.com/docker/go-connections@v0.7.0?type=module",
"pkg:golang/github.com/docker/go-units@v0.5.0?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
@@ -14930,10 +15430,10 @@
"pkg:golang/github.com/spf13/cobra@v1.10.2?type=module",
"pkg:golang/github.com/spf13/pflag@v1.0.10?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module",
"pkg:golang/golang.org/x/mod@v0.37.0?type=module",
"pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
@@ -14955,16 +15455,16 @@
"pkg:golang/cloud.google.com/go/auth@v0.18.2?type=module",
"pkg:golang/cloud.google.com/go/auth/oauth2adapt@v0.2.8?type=module",
"pkg:golang/cloud.google.com/go/compute/metadata@v0.9.0?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
"pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.14?type=module",
"pkg:golang/github.com/googleapis/gax-go/v2@v2.18.0?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
@@ -14973,8 +15473,8 @@
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/golang.org/x/time@v0.15.0?type=module",
"pkg:golang/google.golang.org/api@v0.272.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
@@ -14997,8 +15497,8 @@
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/google.golang.org/api@v0.272.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
@@ -15060,7 +15560,7 @@
"ref": "pkg:golang/github.com/hashicorp/go-immutable-radix/v2@v2.1.0?type=module",
"dependsOn": [
"pkg:golang/github.com/hashicorp/golang-lru/v2@v2.0.7?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module"
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module"
]
},
{
@@ -15095,8 +15595,9 @@
"pkg:golang/github.com/davidlazar/go-crypto@v0.0.0-20200604182044-b73af7476f6c?type=module",
"pkg:golang/github.com/decred/dcrd/dcrec/secp256k1/v4@v4.4.0?type=module",
"pkg:golang/github.com/docker/go-units@v0.5.0?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/flynn/noise@v1.1.0?type=module",
+ "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.13?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/gogo/protobuf@v1.3.2?type=module",
@@ -15180,18 +15681,18 @@
"pkg:golang/github.com/whyrusleeping/go-keyspace@v0.0.0-20160322163242-5b898ac5add1?type=module",
"pkg:golang/github.com/wlynxg/anet@v0.0.5?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/atomic@v1.11.0?type=module",
"pkg:golang/go.uber.org/dig@v1.19.0?type=module",
"pkg:golang/go.uber.org/fx@v1.24.0?type=module",
- "pkg:golang/go.uber.org/mock@v0.5.2?type=module",
+ "pkg:golang/go.uber.org/mock@v0.6.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/mod@v0.37.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
@@ -15200,8 +15701,8 @@
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/golang.org/x/tools@v0.47.0?type=module",
"pkg:golang/gonum.org/v1/gonum@v0.17.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
@@ -15233,9 +15734,9 @@
"pkg:golang/github.com/google/uuid@v1.6.0?type=module",
"pkg:golang/github.com/rogpeppe/go-internal@v1.14.1?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module"
]
},
@@ -15289,6 +15790,17 @@
{
"ref": "pkg:golang/github.com/jdx/go-netrc@v1.0.0?type=module"
},
+ {
+ "ref": "pkg:golang/github.com/jellydator/ttlcache/v3@v3.4.0?type=module",
+ "dependsOn": [
+ "pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
+ "pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
+ "pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
+ "pkg:golang/go.uber.org/goleak@v1.3.0?type=module",
+ "pkg:golang/golang.org/x/sync@v0.22.0?type=module",
+ "pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
+ ]
+ },
{
"ref": "pkg:golang/github.com/jgautheron/goconst@v1.10.0?type=module"
},
@@ -15365,6 +15877,16 @@
"pkg:golang/github.com/mitchellh/reflectwalk@v1.0.2?type=module"
]
},
+ {
+ "ref": "pkg:golang/github.com/knadh/koanf/parsers/yaml@v1.1.0?type=module",
+ "dependsOn": [
+ "pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
+ "pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
+ "pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
+ "pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module",
+ "pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
+ ]
+ },
{
"ref": "pkg:golang/github.com/knadh/koanf/providers/confmap@v1.0.0?type=module",
"dependsOn": [
@@ -15374,7 +15896,26 @@
]
},
{
- "ref": "pkg:golang/github.com/knadh/koanf/v2@v2.3.3?type=module",
+ "ref": "pkg:golang/github.com/knadh/koanf/providers/env/v2@v2.0.0?type=module",
+ "dependsOn": [
+ "pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
+ "pkg:golang/github.com/knadh/koanf/maps@v0.1.2?type=module",
+ "pkg:golang/github.com/mitchellh/copystructure@v1.2.0?type=module",
+ "pkg:golang/github.com/mitchellh/reflectwalk@v1.0.2?type=module",
+ "pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
+ "pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
+ "pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
+ ]
+ },
+ {
+ "ref": "pkg:golang/github.com/knadh/koanf/providers/file@v1.2.1?type=module",
+ "dependsOn": [
+ "pkg:golang/github.com/fsnotify/fsnotify@v1.9.0?type=module",
+ "pkg:golang/golang.org/x/sys@v0.47.0?type=module"
+ ]
+ },
+ {
+ "ref": "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?type=module",
"dependsOn": [
"pkg:golang/github.com/go-viper/mapstructure/v2@v2.5.0?type=module",
"pkg:golang/github.com/knadh/koanf/maps@v0.1.2?type=module",
@@ -15480,6 +16021,15 @@
"pkg:golang/golang.org/x/tools@v0.47.0?type=module"
]
},
+ {
+ "ref": "pkg:golang/github.com/leodido/go-urn@v1.4.0?type=module",
+ "dependsOn": [
+ "pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
+ "pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
+ "pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
+ "pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
+ ]
+ },
{
"ref": "pkg:golang/github.com/leonklingele/grouper@v1.1.2?type=module",
"dependsOn": [
@@ -15581,11 +16131,11 @@
"pkg:golang/go.uber.org/dig@v1.19.0?type=module",
"pkg:golang/go.uber.org/fx@v1.24.0?type=module",
"pkg:golang/go.uber.org/goleak@v1.3.0?type=module",
- "pkg:golang/go.uber.org/mock@v0.5.2?type=module",
+ "pkg:golang/go.uber.org/mock@v0.6.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/mod@v0.37.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
@@ -15605,7 +16155,7 @@
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/gopkg.in/yaml.v2@v2.4.0?type=module"
]
},
@@ -15699,16 +16249,16 @@
"pkg:golang/github.com/whyrusleeping/go-keyspace@v0.0.0-20160322163242-5b898ac5add1?type=module",
"pkg:golang/github.com/wlynxg/anet@v0.0.5?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/dig@v1.19.0?type=module",
"pkg:golang/go.uber.org/fx@v1.24.0?type=module",
- "pkg:golang/go.uber.org/mock@v0.5.2?type=module",
+ "pkg:golang/go.uber.org/mock@v0.6.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/mod@v0.37.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
@@ -15752,7 +16302,7 @@
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
@@ -15788,7 +16338,7 @@
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
@@ -15796,7 +16346,7 @@
]
},
{
- "ref": "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.16.1-0.20260611143718-41b11d5cb1a7?type=module",
+ "ref": "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.17.0?type=module",
"dependsOn": [
"pkg:golang/github.com/benbjohnson/clock@v1.3.5?type=module",
"pkg:golang/github.com/beorn7/perks@v1.0.1?type=module",
@@ -15806,7 +16356,6 @@
"pkg:golang/github.com/decred/dcrd/dcrec/secp256k1/v4@v4.4.0?type=module",
"pkg:golang/github.com/dunglas/httpsfv@v1.1.0?type=module",
"pkg:golang/github.com/flynn/noise@v1.1.0?type=module",
- "pkg:golang/github.com/gogo/protobuf@v1.3.2?type=module",
"pkg:golang/github.com/google/uuid@v1.6.0?type=module",
"pkg:golang/github.com/gorilla/websocket@v1.5.4-0.20250319132907-e064f32e3674?type=module",
"pkg:golang/github.com/hashicorp/golang-lru/v2@v2.0.7?type=module",
@@ -15871,11 +16420,11 @@
"pkg:golang/github.com/wlynxg/anet@v0.0.5?type=module",
"pkg:golang/go.uber.org/dig@v1.19.0?type=module",
"pkg:golang/go.uber.org/fx@v1.24.0?type=module",
- "pkg:golang/go.uber.org/mock@v0.5.2?type=module",
+ "pkg:golang/go.uber.org/mock@v0.6.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/mod@v0.37.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
@@ -15907,7 +16456,7 @@
"pkg:golang/github.com/multiformats/go-varint@v0.1.0?type=module",
"pkg:golang/github.com/spaolacci/murmur3@v1.1.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/lukechampine.com/blake3@v1.4.1?type=module"
@@ -15940,13 +16489,13 @@
"pkg:golang/github.com/rogpeppe/go-internal@v1.14.1?type=module",
"pkg:golang/github.com/spaolacci/murmur3@v1.1.0?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
@@ -16164,7 +16713,7 @@
"pkg:golang/github.com/distribution/reference@v0.6.0?type=module",
"pkg:golang/github.com/docker/go-connections@v0.7.0?type=module",
"pkg:golang/github.com/docker/go-units@v0.5.0?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
@@ -16173,10 +16722,10 @@
"pkg:golang/github.com/opencontainers/go-digest@v1.0.0?type=module",
"pkg:golang/github.com/opencontainers/image-spec@v1.1.1?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/time@v0.15.0?type=module"
]
@@ -16232,7 +16781,7 @@
"pkg:golang/github.com/spaolacci/murmur3@v1.1.0?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
"pkg:golang/lukechampine.com/blake3@v1.4.1?type=module"
@@ -16254,7 +16803,7 @@
"pkg:golang/github.com/multiformats/go-varint@v0.1.0?type=module",
"pkg:golang/github.com/spaolacci/murmur3@v1.1.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/lukechampine.com/blake3@v1.4.1?type=module"
@@ -16392,7 +16941,7 @@
"pkg:golang/github.com/json-iterator/go@v1.1.12?type=module",
"pkg:golang/github.com/knadh/koanf/maps@v0.1.2?type=module",
"pkg:golang/github.com/knadh/koanf/providers/confmap@v1.0.0?type=module",
- "pkg:golang/github.com/knadh/koanf/v2@v2.3.3?type=module",
+ "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?type=module",
"pkg:golang/github.com/mitchellh/copystructure@v1.2.0?type=module",
"pkg:golang/github.com/mitchellh/reflectwalk@v1.0.2?type=module",
"pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd?type=module",
@@ -16412,9 +16961,9 @@
"pkg:golang/go.opentelemetry.io/collector/pdata@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/pipeline@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/processor@v1.54.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/goleak@v1.3.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
@@ -16810,7 +17359,7 @@
"pkg:golang/github.com/docker/go-connections@v0.7.0?type=module",
"pkg:golang/github.com/docker/go-units@v0.5.0?type=module",
"pkg:golang/github.com/fatih/color@v1.19.0?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/fsnotify/fsnotify@v1.9.0?type=module",
"pkg:golang/github.com/fxamacker/cbor/v2@v2.9.2?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
@@ -16834,7 +17383,7 @@
"pkg:golang/github.com/klauspost/compress@v1.19.1?type=module",
"pkg:golang/github.com/knadh/koanf/maps@v0.1.2?type=module",
"pkg:golang/github.com/knadh/koanf/providers/confmap@v1.0.0?type=module",
- "pkg:golang/github.com/knadh/koanf/v2@v2.3.3?type=module",
+ "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?type=module",
"pkg:golang/github.com/kylelemons/godebug@v1.1.0?type=module",
"pkg:golang/github.com/mattn/go-colorable@v0.1.15?type=module",
"pkg:golang/github.com/mattn/go-isatty@v0.0.22?type=module",
@@ -16882,10 +17431,10 @@
"pkg:golang/go.opentelemetry.io/collector/pipeline@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/processor@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace@v0.67.0?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/atomic@v1.11.0?type=module",
"pkg:golang/go.uber.org/goleak@v1.3.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
@@ -16893,7 +17442,7 @@
"pkg:golang/go.yaml.in/yaml/v2@v2.4.4?type=module",
"pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/mod@v0.37.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
@@ -16904,8 +17453,8 @@
"pkg:golang/golang.org/x/time@v0.15.0?type=module",
"pkg:golang/golang.org/x/tools@v0.47.0?type=module",
"pkg:golang/google.golang.org/api@v0.272.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/inf.v0@v0.9.1?type=module",
@@ -17016,7 +17565,7 @@
"pkg:golang/github.com/quic-go/qpack@v0.6.0?type=module",
"pkg:golang/github.com/rogpeppe/go-internal@v1.14.1?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
- "pkg:golang/go.uber.org/mock@v0.5.2?type=module",
+ "pkg:golang/go.uber.org/mock@v0.6.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
"pkg:golang/golang.org/x/mod@v0.37.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
@@ -17150,7 +17699,7 @@
"pkg:golang/github.com/ccojocar/zxcvbn-go@v1.0.4?type=module",
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
@@ -17165,10 +17714,10 @@
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/github.com/xo/terminfo@v0.0.0-20220910002029-abceb7e1c41e?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
"pkg:golang/golang.org/x/mod@v0.37.0?type=module",
@@ -17177,7 +17726,7 @@
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/golang.org/x/tools@v0.47.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
@@ -17330,7 +17879,7 @@
]
},
{
- "ref": "pkg:golang/github.com/tetratelabs/wazero@v1.11.0?type=module",
+ "ref": "pkg:golang/github.com/tetratelabs/wazero@v1.12.0?type=module",
"dependsOn": [
"pkg:golang/golang.org/x/sys@v0.47.0?type=module"
]
@@ -17465,7 +18014,7 @@
{
"ref": "pkg:golang/github.com/xo/terminfo@v0.0.0-20220910002029-abceb7e1c41e?type=module",
"dependsOn": [
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module"
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module"
]
},
{
@@ -17586,8 +18135,8 @@
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/rogpeppe/go-internal@v1.14.1?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
]
},
@@ -17605,9 +18154,9 @@
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/go.opentelemetry.io/collector/featuregate@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/pdata@v1.54.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/goleak@v1.3.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
@@ -17623,7 +18172,7 @@
"pkg:golang/github.com/hashicorp/go-version@v1.9.0?type=module",
"pkg:golang/github.com/knadh/koanf/maps@v0.1.2?type=module",
"pkg:golang/github.com/knadh/koanf/providers/confmap@v1.0.0?type=module",
- "pkg:golang/github.com/knadh/koanf/v2@v2.3.3?type=module",
+ "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?type=module",
"pkg:golang/github.com/mitchellh/copystructure@v1.2.0?type=module",
"pkg:golang/github.com/mitchellh/reflectwalk@v1.0.2?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
@@ -17645,7 +18194,7 @@
"pkg:golang/github.com/hashicorp/go-version@v1.9.0?type=module",
"pkg:golang/github.com/knadh/koanf/maps@v0.1.2?type=module",
"pkg:golang/github.com/knadh/koanf/providers/confmap@v1.0.0?type=module",
- "pkg:golang/github.com/knadh/koanf/v2@v2.3.3?type=module",
+ "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?type=module",
"pkg:golang/github.com/mitchellh/copystructure@v1.2.0?type=module",
"pkg:golang/github.com/mitchellh/reflectwalk@v1.0.2?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
@@ -17702,9 +18251,9 @@
"pkg:golang/go.opentelemetry.io/collector/component@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/featuregate@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/pdata@v1.54.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
@@ -17726,7 +18275,7 @@
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
@@ -17758,9 +18307,9 @@
"pkg:golang/go.opentelemetry.io/collector/internal/componentalias@v0.148.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/pdata@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/pipeline@v1.54.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/goleak@v1.3.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
@@ -17772,7 +18321,7 @@
"dependsOn": [
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
@@ -17780,35 +18329,35 @@
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
]
},
{
- "ref": "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
+ "ref": "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
"dependsOn": [
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/google/uuid@v1.6.0?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
]
},
{
- "ref": "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
+ "ref": "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
"dependsOn": [
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
@@ -17818,13 +18367,13 @@
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
]
},
{
- "ref": "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
+ "ref": "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
"dependsOn": [
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
@@ -17833,20 +18382,20 @@
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
]
},
{
- "ref": "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "ref": "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"dependsOn": [
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
]
},
@@ -17891,7 +18440,7 @@
]
},
{
- "ref": "pkg:golang/go.uber.org/mock@v0.5.2?type=module",
+ "ref": "pkg:golang/go.uber.org/mock@v0.6.0?type=module",
"dependsOn": [
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
@@ -17939,7 +18488,7 @@
]
},
{
- "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"dependsOn": [
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
"pkg:golang/golang.org/x/mod@v0.37.0?type=module",
@@ -18031,7 +18580,7 @@
"pkg:golang/cloud.google.com/go/auth/oauth2adapt@v0.2.8?type=module",
"pkg:golang/cloud.google.com/go/compute/metadata@v0.9.0?type=module",
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
@@ -18040,10 +18589,10 @@
"pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.14?type=module",
"pkg:golang/github.com/googleapis/gax-go/v2@v2.18.0?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
@@ -18051,24 +18600,24 @@
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/golang.org/x/time@v0.15.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
},
{
- "ref": "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "ref": "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"dependsOn": [
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
},
{
- "ref": "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "ref": "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"dependsOn": [
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
@@ -18084,17 +18633,17 @@
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
"pkg:golang/github.com/google/uuid@v1.6.0?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/gonum.org/v1/gonum@v0.17.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/api@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
},
@@ -18104,7 +18653,7 @@
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
@@ -18128,7 +18677,7 @@
"ref": "pkg:golang/honnef.co/go/tools@v0.7.0?type=module",
"dependsOn": [
"pkg:golang/github.com/BurntSushi/toml@v1.6.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/exp/typeparams@v0.0.0-20260209203927-2842357ff358?type=module",
"pkg:golang/golang.org/x/mod@v0.37.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
diff --git a/docs/sbom.json b/docs/sbom.json
index 26443a3..8520a3e 100644
--- a/docs/sbom.json
+++ b/docs/sbom.json
@@ -1103,18 +1103,18 @@
}
},
{
- "bom-ref": "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "bom-ref": "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"type": "library",
"name": "github.com/felixge/httpsnoop",
- "version": "v1.0.4",
+ "version": "v1.1.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "3454d5d998f56cbe2673db2a5800976d01550418365b718fbeaa7cfc4492d968"
+ "content": "dd8b548f7d99664a99b6ddec659b0296cca6c3f403b957e9361a00df5cde3917"
}
],
- "purl": "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
"url": "https://github.com/felixge/httpsnoop",
@@ -1180,6 +1180,35 @@
}
]
},
+ {
+ "bom-ref": "pkg:golang/github.com/fsnotify/fsnotify@v1.9.0?type=module",
+ "type": "library",
+ "name": "github.com/fsnotify/fsnotify",
+ "version": "v1.9.0",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "d8c97e3893736d8093cecc6dbfcbca4850fd3db2639a1605d7893f8ca0bb4bd9"
+ }
+ ],
+ "purl": "pkg:golang/github.com/fsnotify/fsnotify@v1.9.0?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/fsnotify/fsnotify",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "BSD-3-Clause"
+ }
+ }
+ ]
+ }
+ },
{
"bom-ref": "pkg:golang/github.com/fxamacker/cbor/v2@v2.9.2?type=module",
"type": "library",
@@ -1210,21 +1239,21 @@
}
},
{
- "bom-ref": "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4-0.20260811133125-9ee6a6cb5cf3?type=module",
+ "bom-ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.13?type=module",
"type": "library",
- "name": "github.com/getoptimum/optimum-common",
- "version": "v0.1.4-0.20260811133125-9ee6a6cb5cf3",
+ "name": "github.com/gabriel-vasile/mimetype",
+ "version": "v1.4.13",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "4e4d7a60d31e81c7b392d842eaebe27ba1040c3b69d01741e7350065bdbe0d62"
+ "content": "e3a9d7a24b25501b00244ff032ca7982d3b9d346b8177364cfd51fa64d807143"
}
],
- "purl": "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4-0.20260811133125-9ee6a6cb5cf3?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.13?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
- "url": "https://github.com/getoptimum/optimum-common",
+ "url": "https://github.com/gabriel-vasile/mimetype",
"type": "vcs"
}
],
@@ -1232,48 +1261,77 @@
"licenses": [
{
"license": {
- "id": "BSD-3-Clause"
+ "id": "MIT"
}
}
]
}
},
{
- "bom-ref": "pkg:golang/github.com/getoptimum/optimum-p2p@v0.0.1-rc12.2?type=module",
+ "bom-ref": "pkg:golang/github.com/getoptimum/mump2p-protocol@v0.0.1-rc7?type=module",
"type": "library",
- "name": "github.com/getoptimum/optimum-p2p",
- "version": "v0.0.1-rc12.2",
+ "name": "github.com/getoptimum/mump2p-protocol",
+ "version": "v0.0.1-rc7",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "ba316658f4f54f48306b918e424eccb706c397de1d33b78e732c24f1355d6536"
+ "content": "9d13a1ea5934298cee954dd14b6212c0b50d86c8b7d7640d6455f5460f90f2dd"
}
],
- "purl": "pkg:golang/github.com/getoptimum/optimum-p2p@v0.0.1-rc12.2?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/getoptimum/mump2p-protocol@v0.0.1-rc7?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
- "url": "https://github.com/getoptimum/optimum-p2p",
+ "url": "https://github.com/getoptimum/mump2p-protocol",
"type": "vcs"
}
]
},
{
- "bom-ref": "pkg:golang/github.com/getoptimum/rlnc@v0.0.1-rc1.0.20260326154748-8ead5e1b16e5?type=module",
+ "bom-ref": "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4?type=module",
+ "type": "library",
+ "name": "github.com/getoptimum/optimum-common",
+ "version": "v0.1.4",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "1ba1f3ca76cadd7be4d6e5214930edfe266a73405a6e0c7348f8283669d5d18c"
+ }
+ ],
+ "purl": "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/getoptimum/optimum-common",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "BSD-3-Clause"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "bom-ref": "pkg:golang/github.com/getoptimum/shm@v0.5.0?type=module",
"type": "library",
- "name": "github.com/getoptimum/rlnc",
- "version": "v0.0.1-rc1.0.20260326154748-8ead5e1b16e5",
+ "name": "github.com/getoptimum/shm",
+ "version": "v0.5.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "458255d793882377c90b0c717c3e86c5193ac4bebb698d5046b1a3894662f5dc"
+ "content": "24a0050f619abf1fef556bc7c84a140b2675673449224d16c5c88f0132656b3f"
}
],
- "purl": "pkg:golang/github.com/getoptimum/rlnc@v0.0.1-rc1.0.20260326154748-8ead5e1b16e5?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/getoptimum/shm@v0.5.0?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
- "url": "https://github.com/getoptimum/rlnc",
+ "url": "https://github.com/getoptimum/shm",
"type": "vcs"
}
]
@@ -1336,6 +1394,93 @@
]
}
},
+ {
+ "bom-ref": "pkg:golang/github.com/go-playground/locales@v0.14.1?type=module",
+ "type": "library",
+ "name": "github.com/go-playground/locales",
+ "version": "v0.14.1",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "116690ff0b308e295f28b4c40a25f3ed187edc18c585f0c52affe85ec9448c90"
+ }
+ ],
+ "purl": "pkg:golang/github.com/go-playground/locales@v0.14.1?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/go-playground/locales",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "bom-ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1?type=module",
+ "type": "library",
+ "name": "github.com/go-playground/universal-translator",
+ "version": "v0.18.1",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "05c9e6d19c2c1b259b0b32265effa90099d82bd4b8ef72d016ecc26c36df4856"
+ }
+ ],
+ "purl": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/go-playground/universal-translator",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "bom-ref": "pkg:golang/github.com/go-playground/validator/v10@v10.30.2?type=module",
+ "type": "library",
+ "name": "github.com/go-playground/validator/v10",
+ "version": "v10.30.2",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "26214832d4921dbdbf5c151b58ce22fcca5e426f592b6c6a3cd93cbe0beee494"
+ }
+ ],
+ "purl": "pkg:golang/github.com/go-playground/validator/v10@v10.30.2?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/go-playground/validator",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
{
"bom-ref": "pkg:golang/github.com/go-viper/mapstructure/v2@v2.5.0?type=module",
"type": "library",
@@ -2148,6 +2293,35 @@
]
}
},
+ {
+ "bom-ref": "pkg:golang/github.com/jellydator/ttlcache/v3@v3.4.0?type=module",
+ "type": "library",
+ "name": "github.com/jellydator/ttlcache/v3",
+ "version": "v3.4.0",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "612e0fd76e6a412d2d361b4be9a798921784681fe6f070aa74c30fe269d67536"
+ }
+ ],
+ "purl": "pkg:golang/github.com/jellydator/ttlcache/v3@v3.4.0?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/jellydator/ttlcache",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
{
"bom-ref": "pkg:golang/github.com/jpillora/backoff@v1.0.0?type=module",
"type": "library",
@@ -2293,6 +2467,35 @@
]
}
},
+ {
+ "bom-ref": "pkg:golang/github.com/knadh/koanf/parsers/yaml@v1.1.0?type=module",
+ "type": "library",
+ "name": "github.com/knadh/koanf/parsers/yaml",
+ "version": "v1.1.0",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "de5b5f9bd963a6b007b788f181e60b9453e651aba7b8282ed7220bb935d174ce"
+ }
+ ],
+ "purl": "pkg:golang/github.com/knadh/koanf/parsers/yaml@v1.1.0?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/knadh/koanf/parsers/yaml",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
{
"bom-ref": "pkg:golang/github.com/knadh/koanf/providers/confmap@v1.0.0?type=module",
"type": "library",
@@ -2323,18 +2526,76 @@
}
},
{
- "bom-ref": "pkg:golang/github.com/knadh/koanf/v2@v2.3.3?type=module",
+ "bom-ref": "pkg:golang/github.com/knadh/koanf/providers/env/v2@v2.0.0?type=module",
+ "type": "library",
+ "name": "github.com/knadh/koanf/providers/env/v2",
+ "version": "v2.0.0",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "01de47ddeba7ef6daef85bdc86221c108259b19d8cea8c4292065f58de41e4a6"
+ }
+ ],
+ "purl": "pkg:golang/github.com/knadh/koanf/providers/env/v2@v2.0.0?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/knadh/koanf/providers/env",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "bom-ref": "pkg:golang/github.com/knadh/koanf/providers/file@v1.2.1?type=module",
+ "type": "library",
+ "name": "github.com/knadh/koanf/providers/file",
+ "version": "v1.2.1",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "6c459bb50c18ac0f96d83b5d06b416c97a89689486dcaacfdc0112389629f703"
+ }
+ ],
+ "purl": "pkg:golang/github.com/knadh/koanf/providers/file@v1.2.1?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/knadh/koanf/providers/file",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "bom-ref": "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?type=module",
"type": "library",
"name": "github.com/knadh/koanf/v2",
- "version": "v2.3.3",
+ "version": "v2.3.4",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "8cb242f170917cb0bb9f817e64a29d06c6ead5b7d74e9b8585fe0beedf780fde"
+ "content": "7e7ca73520e5ba3584faff37840a7cc0aaff71da311cb3b4eb6f5237e53c52b7"
}
],
- "purl": "pkg:golang/github.com/knadh/koanf/v2@v2.3.3?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
"url": "https://github.com/knadh/koanf",
@@ -2409,6 +2670,35 @@
]
}
},
+ {
+ "bom-ref": "pkg:golang/github.com/leodido/go-urn@v1.4.0?type=module",
+ "type": "library",
+ "name": "github.com/leodido/go-urn",
+ "version": "v1.4.0",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "593f47c04f521840aede583877f74803e8f19658c46b5fdf7d72a6463a9d9884"
+ }
+ ],
+ "purl": "pkg:golang/github.com/leodido/go-urn@v1.4.0?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/leodido/go-urn",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
{
"bom-ref": "pkg:golang/github.com/libp2p/go-buffer-pool@v0.1.0?type=module",
"type": "library",
@@ -2642,18 +2932,18 @@
}
},
{
- "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.16.1-0.20260611143718-41b11d5cb1a7?type=module",
+ "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.17.0?type=module",
"type": "library",
"name": "github.com/libp2p/go-libp2p-pubsub",
- "version": "v0.16.1-0.20260611143718-41b11d5cb1a7",
+ "version": "v0.17.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "50c889e34f0da8ef527f600dbad10cdc09fc126dcafaa9fbf1ea088336373c86"
+ "content": "48d76f07a5747983172d147de67fb8be9c4929b16c6c78608cf743893a46a28d"
}
],
- "purl": "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.16.1-0.20260611143718-41b11d5cb1a7?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.17.0?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
"url": "https://github.com/libp2p/go-libp2p-pubsub",
@@ -4788,21 +5078,21 @@
}
},
{
- "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
+ "bom-ref": "pkg:golang/github.com/spf13/cobra@v1.10.2?type=module",
"type": "library",
- "name": "github.com/stretchr/testify",
- "version": "v1.11.1",
+ "name": "github.com/spf13/cobra",
+ "version": "v1.10.2",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "eecda2181ce9e44c11eff68866bf1aa39f9dadadf0890c8a8e316ebe054abbb5"
+ "content": "0cc4d3a27c799bae4873418ea11636735e9609b1f138ec3ac717b3b8b681a5c5"
}
],
- "purl": "pkg:golang/github.com/stretchr/testify@v1.11.1?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/spf13/cobra@v1.10.2?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
- "url": "https://github.com/stretchr/testify",
+ "url": "https://github.com/spf13/cobra",
"type": "vcs"
}
],
@@ -4810,25 +5100,83 @@
"licenses": [
{
"license": {
- "id": "MIT"
+ "id": "Apache-2.0"
}
}
]
}
},
{
- "bom-ref": "pkg:golang/github.com/tinylib/msgp@v1.6.4?type=module",
+ "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.10?type=module",
"type": "library",
- "name": "github.com/tinylib/msgp",
- "version": "v1.6.4",
+ "name": "github.com/spf13/pflag",
+ "version": "v1.0.10",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "98ec186f26032cf8f7e66900d818e361e8e0264f41b87c4376f4676fabf665c4"
+ "content": "e04061d8a01807068e363e9bd987b51a21dfc23ab244ea05e11c183bebcfc059"
}
],
- "purl": "pkg:golang/github.com/tinylib/msgp@v1.6.4?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/github.com/spf13/pflag@v1.0.10?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/spf13/pflag",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "BSD-3-Clause"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
+ "type": "library",
+ "name": "github.com/stretchr/testify",
+ "version": "v1.11.1",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "eecda2181ce9e44c11eff68866bf1aa39f9dadadf0890c8a8e316ebe054abbb5"
+ }
+ ],
+ "purl": "pkg:golang/github.com/stretchr/testify@v1.11.1?goarch=amd64&goos=linux&type=module",
+ "externalReferences": [
+ {
+ "url": "https://github.com/stretchr/testify",
+ "type": "vcs"
+ }
+ ],
+ "evidence": {
+ "licenses": [
+ {
+ "license": {
+ "id": "MIT"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "bom-ref": "pkg:golang/github.com/tinylib/msgp@v1.6.4?type=module",
+ "type": "library",
+ "name": "github.com/tinylib/msgp",
+ "version": "v1.6.4",
+ "scope": "required",
+ "hashes": [
+ {
+ "alg": "SHA-256",
+ "content": "98ec186f26032cf8f7e66900d818e361e8e0264f41b87c4376f4676fabf665c4"
+ }
+ ],
+ "purl": "pkg:golang/github.com/tinylib/msgp@v1.6.4?goarch=amd64&goos=linux&type=module",
"externalReferences": [
{
"url": "https://github.com/tinylib/msgp",
@@ -5244,18 +5592,18 @@
}
},
{
- "bom-ref": "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
+ "bom-ref": "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
"type": "library",
"name": "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",
- "version": "v0.68.0",
+ "version": "v0.69.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "0aa5f153c54e98379fa21d3eced7c66b29986e1741fed4f7cecefd41a6533466"
+ "content": "f2dbc8083e2f49338eb0daec2382e37fa0bee942afa53107e5763724ca323e8a"
}
],
- "purl": "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -5267,18 +5615,18 @@
}
},
{
- "bom-ref": "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
+ "bom-ref": "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
"type": "library",
"name": "go.opentelemetry.io/otel",
- "version": "v1.43.0",
+ "version": "v1.44.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "99820cd37767879cdf37b1dabad144e227888a0f5a9a4340353fb1715c408fd2"
+ "content": "263c07987a40e22677c01c65baed9f6db13b8f892a944f235f20323d71fb1ea5"
}
],
- "purl": "pkg:golang/go.opentelemetry.io/otel@v1.43.0?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/go.opentelemetry.io/otel@v1.44.0?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -5290,18 +5638,18 @@
}
},
{
- "bom-ref": "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
+ "bom-ref": "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
"type": "library",
"name": "go.opentelemetry.io/otel/metric",
- "version": "v1.43.0",
+ "version": "v1.44.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "77beb7f107889ce9eec0e38d3e9e0900e19f6c212961bf8ae83556bddc46ce03"
+ "content": "d70d2020b4dc1ddaf7608fa2c4bca37a6c2b567b0c5116d3645ad26027437667"
}
],
- "purl": "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -5313,18 +5661,18 @@
}
},
{
- "bom-ref": "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "bom-ref": "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"type": "library",
"name": "go.opentelemetry.io/otel/trace",
- "version": "v1.43.0",
+ "version": "v1.44.0",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "06436b1e9ba9fb8938c3e659f3a099a071c4928870b3c018f964d7d3d9e4fb70"
+ "content": "8f11790ac19809eef8302471d97e20ed6b18fd504a46aaa936f5e55ffea0b489"
}
],
- "purl": "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -5543,18 +5891,18 @@
}
},
{
- "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"type": "library",
"name": "golang.org/x/exp",
- "version": "v0.0.0-20260508232706-74f9aab9d74a",
+ "version": "v0.0.0-20260611194520-c48552f49976",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "fb78dd0c6181f0d19bd5992d73bdfb8e5b77fc0e5fe949704b39afa94bae7f1c"
+ "content": "5fc1f3d889ae8e06e67ad56e5bec36624c990a1137701a598b63f5e7cad31bd3"
}
],
- "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -5773,18 +6121,18 @@
}
},
{
- "bom-ref": "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "bom-ref": "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"type": "library",
"name": "google.golang.org/genproto/googleapis/rpc",
- "version": "v0.0.0-20260523011958-0a33c5d7ca68",
+ "version": "v0.0.0-20260610212136-7ab31c22f7ad",
"scope": "required",
"hashes": [
{
"alg": "SHA-256",
- "content": "3ef1201897fd0bfd6ee421e4227320ed4158614a22690996d8b6ed1f4a6307bf"
+ "content": "e395a626f215e82dbe3bf8e32e43d41fe17768e8ffd66883a14d830f4f8d59b8"
}
],
- "purl": "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?goarch=amd64&goos=linux&type=module",
+ "purl": "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?goarch=amd64&goos=linux&type=module",
"evidence": {
"licenses": [
{
@@ -6164,8 +6512,8 @@
"ref": "pkg:golang/github.com/getoptimum/optimum-gateway@0.0.0-dev?type=module#cmd",
"dependsOn": [
"pkg:golang/github.com/ferranbt/fastssz@v1.0.1-0.20251203093649-0b1f38e43198?type=module",
- "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4-0.20260811133125-9ee6a6cb5cf3?type=module",
- "pkg:golang/github.com/getoptimum/optimum-p2p@v0.0.1-rc12.2?type=module",
+ "pkg:golang/github.com/getoptimum/mump2p-protocol@v0.0.1-rc7?type=module",
+ "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4?type=module",
"pkg:golang/github.com/gofiber/fiber/v3@v3.4.0?type=module",
"pkg:golang/github.com/golang-jwt/jwt/v5@v5.3.1?type=module",
"pkg:golang/github.com/golang/snappy@v1.0.0?type=module",
@@ -6175,7 +6523,7 @@
"pkg:golang/github.com/libp2p/go-libp2p@v0.48.0?type=module",
"pkg:golang/github.com/libp2p/go-libp2p-kad-dht@v0.33.1?type=module",
"pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.11.0?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.16.1-0.20260611143718-41b11d5cb1a7?type=module",
+ "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.17.0?type=module",
"pkg:golang/github.com/libp2p/go-libp2p-record@v0.3.1?type=module",
"pkg:golang/github.com/libp2p/go-mplex@v0.7.0?type=module",
"pkg:golang/github.com/montanaflynn/stats@v0.7.1?type=module",
@@ -6195,7 +6543,7 @@
"dependsOn": [
"pkg:golang/cloud.google.com/go/compute/metadata@v0.9.0?type=module",
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
@@ -6204,10 +6552,10 @@
"pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.14?type=module",
"pkg:golang/github.com/googleapis/gax-go/v2@v2.18.0?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
@@ -6215,7 +6563,7 @@
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/golang.org/x/time@v0.15.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
@@ -6231,7 +6579,7 @@
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module"
]
},
@@ -6463,7 +6811,7 @@
{
"ref": "pkg:golang/github.com/bboreham/go-loser@v0.0.0-20230920113527-fcc2c21820a3?type=module",
"dependsOn": [
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module"
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module"
]
},
{
@@ -6498,7 +6846,7 @@
"ref": "pkg:golang/github.com/emicklei/dot@v1.9.1?type=module"
},
{
- "ref": "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module"
+ "ref": "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module"
},
{
"ref": "pkg:golang/github.com/ferranbt/fastssz@v1.0.1-0.20251203093649-0b1f38e43198?type=module",
@@ -6521,6 +6869,12 @@
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module"
]
},
+ {
+ "ref": "pkg:golang/github.com/fsnotify/fsnotify@v1.9.0?type=module",
+ "dependsOn": [
+ "pkg:golang/golang.org/x/sys@v0.47.0?type=module"
+ ]
+ },
{
"ref": "pkg:golang/github.com/fxamacker/cbor/v2@v2.9.2?type=module",
"dependsOn": [
@@ -6528,61 +6882,67 @@
]
},
{
- "ref": "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4-0.20260811133125-9ee6a6cb5cf3?type=module",
+ "ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.13?type=module"
+ },
+ {
+ "ref": "pkg:golang/github.com/getoptimum/mump2p-protocol@v0.0.1-rc7?type=module",
"dependsOn": [
- "pkg:golang/cloud.google.com/go/auth@v0.18.2?type=module",
- "pkg:golang/cloud.google.com/go/auth/oauth2adapt@v0.2.8?type=module",
- "pkg:golang/cloud.google.com/go/compute/metadata@v0.9.0?type=module",
- "pkg:golang/github.com/Azure/azure-sdk-for-go/sdk/azcore@v1.21.0?type=module",
- "pkg:golang/github.com/Azure/azure-sdk-for-go/sdk/azidentity@v1.13.1?type=module",
- "pkg:golang/github.com/Azure/azure-sdk-for-go/sdk/internal@v1.11.2?type=module",
- "pkg:golang/github.com/AzureAD/microsoft-authentication-library-for-go@v1.6.0?type=module",
- "pkg:golang/github.com/MicahParks/jwkset@v0.11.1?type=module",
- "pkg:golang/github.com/MicahParks/keyfunc/v3@v3.8.1?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2@v1.41.4?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/config@v1.32.12?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/credentials@v1.19.12?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/feature/ec2/imds@v1.18.20?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/internal/configsources@v1.4.20?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.7.20?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/internal/ini@v1.8.6?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding@v1.13.7?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.13.20?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/service/signin@v1.0.8?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/service/sso@v1.30.13?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.35.17?type=module",
- "pkg:golang/github.com/aws/aws-sdk-go-v2/service/sts@v1.41.9?type=module",
- "pkg:golang/github.com/aws/smithy-go@v1.24.2?type=module",
+ "pkg:golang/filippo.io/bigmod@v0.1.1-0.20260103110540-f8a47775ebe5?type=module",
+ "pkg:golang/filippo.io/keygen@v0.0.0-20260114151900-8e2790ea4c5b?type=module",
+ "pkg:golang/github.com/benbjohnson/clock@v1.3.5?type=module",
"pkg:golang/github.com/beorn7/perks@v1.0.1?type=module",
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
+ "pkg:golang/github.com/davidlazar/go-crypto@v0.0.0-20200604182044-b73af7476f6c?type=module",
"pkg:golang/github.com/decred/dcrd/dcrec/secp256k1/v4@v4.4.0?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/dunglas/httpsfv@v1.1.0?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
+ "pkg:golang/github.com/flynn/noise@v1.1.0?type=module",
+ "pkg:golang/github.com/fsnotify/fsnotify@v1.9.0?type=module",
+ "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.13?type=module",
+ "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4?type=module",
+ "pkg:golang/github.com/getoptimum/shm@v0.5.0?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
+ "pkg:golang/github.com/go-playground/locales@v0.14.1?type=module",
+ "pkg:golang/github.com/go-playground/universal-translator@v0.18.1?type=module",
+ "pkg:golang/github.com/go-playground/validator/v10@v10.30.2?type=module",
"pkg:golang/github.com/go-viper/mapstructure/v2@v2.5.0?type=module",
"pkg:golang/github.com/gobwas/glob@v0.2.3?type=module",
- "pkg:golang/github.com/gogo/protobuf@v1.3.2?type=module",
- "pkg:golang/github.com/golang-jwt/jwt/v5@v5.3.1?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
- "pkg:golang/github.com/google/s2a-go@v0.1.9?type=module",
"pkg:golang/github.com/google/uuid@v1.6.0?type=module",
- "pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.14?type=module",
- "pkg:golang/github.com/googleapis/gax-go/v2@v2.18.0?type=module",
"pkg:golang/github.com/gorilla/websocket@v1.5.4-0.20250319132907-e064f32e3674?type=module",
"pkg:golang/github.com/hashicorp/go-version@v1.9.0?type=module",
- "pkg:golang/github.com/hashicorp/golang-lru@v1.0.2?type=module",
"pkg:golang/github.com/hashicorp/golang-lru/v2@v2.0.7?type=module",
+ "pkg:golang/github.com/huin/goupnp@v1.3.0?type=module",
"pkg:golang/github.com/ipfs/go-cid@v0.5.0?type=module",
- "pkg:golang/github.com/ipfs/go-datastore@v0.8.2?type=module",
- "pkg:golang/github.com/ipfs/go-log@v1.0.5?type=module",
- "pkg:golang/github.com/ipfs/go-log/v2@v2.6.0?type=module",
+ "pkg:golang/github.com/jackpal/go-nat-pmp@v1.0.2?type=module",
+ "pkg:golang/github.com/jbenet/go-temp-err-catcher@v0.1.0?type=module",
+ "pkg:golang/github.com/jellydator/ttlcache/v3@v3.4.0?type=module",
"pkg:golang/github.com/klauspost/compress@v1.19.1?type=module",
"pkg:golang/github.com/klauspost/cpuid/v2@v2.3.0?type=module",
- "pkg:golang/github.com/kylelemons/godebug@v1.1.0?type=module",
+ "pkg:golang/github.com/knadh/koanf/maps@v0.1.2?type=module",
+ "pkg:golang/github.com/knadh/koanf/parsers/yaml@v1.1.0?type=module",
+ "pkg:golang/github.com/knadh/koanf/providers/env/v2@v2.0.0?type=module",
+ "pkg:golang/github.com/knadh/koanf/providers/file@v1.2.1?type=module",
+ "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?type=module",
+ "pkg:golang/github.com/koron/go-ssdp@v0.0.6?type=module",
+ "pkg:golang/github.com/leodido/go-urn@v1.4.0?type=module",
"pkg:golang/github.com/libp2p/go-buffer-pool@v0.1.0?type=module",
+ "pkg:golang/github.com/libp2p/go-flow-metrics@v0.2.0?type=module",
+ "pkg:golang/github.com/libp2p/go-libp2p@v0.48.0?type=module",
+ "pkg:golang/github.com/libp2p/go-libp2p-asn-util@v0.4.1?type=module",
+ "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.17.0?type=module",
+ "pkg:golang/github.com/libp2p/go-msgio@v0.3.0?type=module",
+ "pkg:golang/github.com/libp2p/go-netroute@v0.4.0?type=module",
+ "pkg:golang/github.com/libp2p/go-reuseport@v0.4.0?type=module",
+ "pkg:golang/github.com/libp2p/go-yamux/v5@v5.0.1?type=module",
+ "pkg:golang/github.com/marten-seemann/tcp@v0.0.0-20210406111302-dfbc87cc63fd?type=module",
"pkg:golang/github.com/mattn/go-colorable@v0.1.15?type=module",
"pkg:golang/github.com/mattn/go-isatty@v0.0.22?type=module",
+ "pkg:golang/github.com/miekg/dns@v1.1.72?type=module",
+ "pkg:golang/github.com/mikioh/tcpinfo@v0.0.0-20190314235526-30a79bb1804b?type=module",
+ "pkg:golang/github.com/mikioh/tcpopt@v0.0.0-20190314235656-172688c1accc?type=module",
"pkg:golang/github.com/minio/sha256-simd@v1.0.1?type=module",
"pkg:golang/github.com/mitchellh/copystructure@v1.2.0?type=module",
"pkg:golang/github.com/mitchellh/reflectwalk@v1.0.2?type=module",
@@ -6590,187 +6950,182 @@
"pkg:golang/github.com/multiformats/go-base32@v0.1.0?type=module",
"pkg:golang/github.com/multiformats/go-base36@v0.2.0?type=module",
"pkg:golang/github.com/multiformats/go-multiaddr@v0.16.1?type=module",
+ "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.4.1?type=module",
+ "pkg:golang/github.com/multiformats/go-multiaddr-fmt@v0.1.0?type=module",
"pkg:golang/github.com/multiformats/go-multibase@v0.2.0?type=module",
"pkg:golang/github.com/multiformats/go-multicodec@v0.9.2?type=module",
"pkg:golang/github.com/multiformats/go-multihash@v0.2.3?type=module",
+ "pkg:golang/github.com/multiformats/go-multistream@v0.6.1?type=module",
"pkg:golang/github.com/multiformats/go-varint@v0.1.0?type=module",
"pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822?type=module",
- "pkg:golang/github.com/opentracing/opentracing-go@v1.2.0?type=module",
- "pkg:golang/github.com/pkg/browser@v0.0.0-20240102092130-5ac0b6a4141c?type=module",
+ "pkg:golang/github.com/pbnjay/memory@v0.0.0-20210728143218-7b4eea64cf58?type=module",
+ "pkg:golang/github.com/pion/datachannel@v1.5.10?type=module",
+ "pkg:golang/github.com/pion/dtls/v3@v3.1.4?type=module",
+ "pkg:golang/github.com/pion/ice/v4@v4.0.10?type=module",
+ "pkg:golang/github.com/pion/interceptor@v0.1.40?type=module",
+ "pkg:golang/github.com/pion/logging@v0.2.4?type=module",
+ "pkg:golang/github.com/pion/mdns/v2@v2.0.7?type=module",
+ "pkg:golang/github.com/pion/randutil@v0.1.0?type=module",
+ "pkg:golang/github.com/pion/rtcp@v1.2.16?type=module",
+ "pkg:golang/github.com/pion/rtp@v1.8.19?type=module",
+ "pkg:golang/github.com/pion/sctp@v1.8.39?type=module",
+ "pkg:golang/github.com/pion/sdp/v3@v3.0.18?type=module",
+ "pkg:golang/github.com/pion/srtp/v3@v3.0.6?type=module",
+ "pkg:golang/github.com/pion/stun/v3@v3.1.1?type=module",
+ "pkg:golang/github.com/pion/transport/v3@v3.0.7?type=module",
+ "pkg:golang/github.com/pion/transport/v4@v4.0.1?type=module",
+ "pkg:golang/github.com/pion/turn/v4@v4.0.2?type=module",
+ "pkg:golang/github.com/pion/webrtc/v4@v4.1.2?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
- "pkg:golang/github.com/polydawn/refmt@v0.89.1-0.20221221234430-40501e09de1f?type=module",
"pkg:golang/github.com/prometheus/client_golang@v1.24.1?type=module",
"pkg:golang/github.com/prometheus/client_model@v0.6.2?type=module",
"pkg:golang/github.com/prometheus/common@v0.70.1?type=module",
"pkg:golang/github.com/prometheus/procfs@v0.21.1?type=module",
+ "pkg:golang/github.com/quic-go/qpack@v0.6.0?type=module",
+ "pkg:golang/github.com/quic-go/quic-go@v0.60.0?type=module",
+ "pkg:golang/github.com/quic-go/webtransport-go@v0.11.1?type=module",
"pkg:golang/github.com/spaolacci/murmur3@v1.1.0?type=module",
+ "pkg:golang/github.com/spf13/cobra@v1.10.2?type=module",
+ "pkg:golang/github.com/spf13/pflag@v1.0.10?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
+ "pkg:golang/github.com/wlynxg/anet@v0.0.5?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
- "pkg:golang/go.uber.org/atomic@v1.11.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
+ "pkg:golang/go.uber.org/dig@v1.19.0?type=module",
+ "pkg:golang/go.uber.org/fx@v1.24.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
- "pkg:golang/go.yaml.in/yaml/v2@v2.4.4?type=module",
"pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
- "pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/term@v0.45.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/golang.org/x/time@v0.15.0?type=module",
- "pkg:golang/google.golang.org/api@v0.272.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
- "pkg:golang/lukechampine.com/blake3@v1.4.1?type=module",
- "pkg:golang/sigs.k8s.io/yaml@v1.6.0?type=module"
+ "pkg:golang/lukechampine.com/blake3@v1.4.1?type=module"
]
},
{
- "ref": "pkg:golang/github.com/getoptimum/optimum-p2p@v0.0.1-rc12.2?type=module",
+ "ref": "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4?type=module",
"dependsOn": [
- "pkg:golang/github.com/andybalholm/brotli@v1.2.2?type=module",
- "pkg:golang/github.com/benbjohnson/clock@v1.3.5?type=module",
+ "pkg:golang/cloud.google.com/go/auth@v0.18.2?type=module",
+ "pkg:golang/cloud.google.com/go/auth/oauth2adapt@v0.2.8?type=module",
+ "pkg:golang/cloud.google.com/go/compute/metadata@v0.9.0?type=module",
+ "pkg:golang/github.com/Azure/azure-sdk-for-go/sdk/azcore@v1.21.0?type=module",
+ "pkg:golang/github.com/Azure/azure-sdk-for-go/sdk/azidentity@v1.13.1?type=module",
+ "pkg:golang/github.com/Azure/azure-sdk-for-go/sdk/internal@v1.11.2?type=module",
+ "pkg:golang/github.com/AzureAD/microsoft-authentication-library-for-go@v1.6.0?type=module",
+ "pkg:golang/github.com/MicahParks/jwkset@v0.11.1?type=module",
+ "pkg:golang/github.com/MicahParks/keyfunc/v3@v3.8.1?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2@v1.41.4?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/config@v1.32.12?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/credentials@v1.19.12?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/feature/ec2/imds@v1.18.20?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/internal/configsources@v1.4.20?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2@v2.7.20?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/internal/ini@v1.8.6?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding@v1.13.7?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.13.20?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/service/signin@v1.0.8?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/service/sso@v1.30.13?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.35.17?type=module",
+ "pkg:golang/github.com/aws/aws-sdk-go-v2/service/sts@v1.41.9?type=module",
+ "pkg:golang/github.com/aws/smithy-go@v1.24.2?type=module",
"pkg:golang/github.com/beorn7/perks@v1.0.1?type=module",
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
- "pkg:golang/github.com/davidlazar/go-crypto@v0.0.0-20200604182044-b73af7476f6c?type=module",
"pkg:golang/github.com/decred/dcrd/dcrec/secp256k1/v4@v4.4.0?type=module",
- "pkg:golang/github.com/dunglas/httpsfv@v1.1.0?type=module",
- "pkg:golang/github.com/flynn/noise@v1.1.0?type=module",
- "pkg:golang/github.com/getoptimum/optimum-common@v0.1.4-0.20260811133125-9ee6a6cb5cf3?type=module",
- "pkg:golang/github.com/getoptimum/rlnc@v0.0.1-rc1.0.20260326154748-8ead5e1b16e5?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
+ "pkg:golang/github.com/fsnotify/fsnotify@v1.9.0?type=module",
+ "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.13?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
+ "pkg:golang/github.com/go-viper/mapstructure/v2@v2.5.0?type=module",
+ "pkg:golang/github.com/gobwas/glob@v0.2.3?type=module",
"pkg:golang/github.com/gogo/protobuf@v1.3.2?type=module",
"pkg:golang/github.com/golang-jwt/jwt/v5@v5.3.1?type=module",
- "pkg:golang/github.com/golang/snappy@v1.0.0?type=module",
- "pkg:golang/github.com/google/gopacket@v1.1.19?type=module",
+ "pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
+ "pkg:golang/github.com/google/s2a-go@v0.1.9?type=module",
"pkg:golang/github.com/google/uuid@v1.6.0?type=module",
+ "pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.14?type=module",
+ "pkg:golang/github.com/googleapis/gax-go/v2@v2.18.0?type=module",
"pkg:golang/github.com/gorilla/websocket@v1.5.4-0.20250319132907-e064f32e3674?type=module",
+ "pkg:golang/github.com/hashicorp/go-version@v1.9.0?type=module",
"pkg:golang/github.com/hashicorp/golang-lru@v1.0.2?type=module",
"pkg:golang/github.com/hashicorp/golang-lru/v2@v2.0.7?type=module",
- "pkg:golang/github.com/huin/goupnp@v1.3.0?type=module",
- "pkg:golang/github.com/ipfs/boxo@v0.30.0?type=module",
"pkg:golang/github.com/ipfs/go-cid@v0.5.0?type=module",
"pkg:golang/github.com/ipfs/go-datastore@v0.8.2?type=module",
"pkg:golang/github.com/ipfs/go-log@v1.0.5?type=module",
"pkg:golang/github.com/ipfs/go-log/v2@v2.6.0?type=module",
- "pkg:golang/github.com/ipld/go-ipld-prime@v0.21.0?type=module",
- "pkg:golang/github.com/jackpal/go-nat-pmp@v1.0.2?type=module",
- "pkg:golang/github.com/jbenet/go-temp-err-catcher@v0.1.0?type=module",
"pkg:golang/github.com/klauspost/compress@v1.19.1?type=module",
"pkg:golang/github.com/klauspost/cpuid/v2@v2.3.0?type=module",
- "pkg:golang/github.com/koron/go-ssdp@v0.0.6?type=module",
+ "pkg:golang/github.com/kylelemons/godebug@v1.1.0?type=module",
"pkg:golang/github.com/libp2p/go-buffer-pool@v0.1.0?type=module",
- "pkg:golang/github.com/libp2p/go-cidranger@v1.1.0?type=module",
- "pkg:golang/github.com/libp2p/go-flow-metrics@v0.2.0?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p@v0.48.0?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p-asn-util@v0.4.1?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p-kad-dht@v0.33.1?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p-kbucket@v0.7.0?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.16.1-0.20260611143718-41b11d5cb1a7?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p-record@v0.3.1?type=module",
- "pkg:golang/github.com/libp2p/go-libp2p-routing-helpers@v0.7.5?type=module",
- "pkg:golang/github.com/libp2p/go-msgio@v0.3.0?type=module",
- "pkg:golang/github.com/libp2p/go-netroute@v0.4.0?type=module",
- "pkg:golang/github.com/libp2p/go-reuseport@v0.4.0?type=module",
- "pkg:golang/github.com/libp2p/go-yamux/v5@v5.0.1?type=module",
- "pkg:golang/github.com/marten-seemann/tcp@v0.0.0-20210406111302-dfbc87cc63fd?type=module",
"pkg:golang/github.com/mattn/go-colorable@v0.1.15?type=module",
"pkg:golang/github.com/mattn/go-isatty@v0.0.22?type=module",
- "pkg:golang/github.com/miekg/dns@v1.1.72?type=module",
- "pkg:golang/github.com/mikioh/tcpinfo@v0.0.0-20190314235526-30a79bb1804b?type=module",
- "pkg:golang/github.com/mikioh/tcpopt@v0.0.0-20190314235656-172688c1accc?type=module",
"pkg:golang/github.com/minio/sha256-simd@v1.0.1?type=module",
- "pkg:golang/github.com/montanaflynn/stats@v0.7.1?type=module",
+ "pkg:golang/github.com/mitchellh/copystructure@v1.2.0?type=module",
+ "pkg:golang/github.com/mitchellh/reflectwalk@v1.0.2?type=module",
"pkg:golang/github.com/mr-tron/base58@v1.3.0?type=module",
"pkg:golang/github.com/multiformats/go-base32@v0.1.0?type=module",
"pkg:golang/github.com/multiformats/go-base36@v0.2.0?type=module",
"pkg:golang/github.com/multiformats/go-multiaddr@v0.16.1?type=module",
- "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.4.1?type=module",
- "pkg:golang/github.com/multiformats/go-multiaddr-fmt@v0.1.0?type=module",
"pkg:golang/github.com/multiformats/go-multibase@v0.2.0?type=module",
"pkg:golang/github.com/multiformats/go-multicodec@v0.9.2?type=module",
"pkg:golang/github.com/multiformats/go-multihash@v0.2.3?type=module",
- "pkg:golang/github.com/multiformats/go-multistream@v0.6.1?type=module",
"pkg:golang/github.com/multiformats/go-varint@v0.1.0?type=module",
"pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822?type=module",
"pkg:golang/github.com/opentracing/opentracing-go@v1.2.0?type=module",
- "pkg:golang/github.com/pbnjay/memory@v0.0.0-20210728143218-7b4eea64cf58?type=module",
- "pkg:golang/github.com/pion/datachannel@v1.5.10?type=module",
- "pkg:golang/github.com/pion/dtls/v3@v3.1.4?type=module",
- "pkg:golang/github.com/pion/ice/v4@v4.0.10?type=module",
- "pkg:golang/github.com/pion/interceptor@v0.1.40?type=module",
- "pkg:golang/github.com/pion/logging@v0.2.4?type=module",
- "pkg:golang/github.com/pion/mdns/v2@v2.0.7?type=module",
- "pkg:golang/github.com/pion/randutil@v0.1.0?type=module",
- "pkg:golang/github.com/pion/rtcp@v1.2.16?type=module",
- "pkg:golang/github.com/pion/rtp@v1.8.19?type=module",
- "pkg:golang/github.com/pion/sctp@v1.8.39?type=module",
- "pkg:golang/github.com/pion/sdp/v3@v3.0.18?type=module",
- "pkg:golang/github.com/pion/srtp/v3@v3.0.6?type=module",
- "pkg:golang/github.com/pion/stun/v3@v3.1.1?type=module",
- "pkg:golang/github.com/pion/transport/v3@v3.0.7?type=module",
- "pkg:golang/github.com/pion/turn/v4@v4.0.2?type=module",
- "pkg:golang/github.com/pion/webrtc/v4@v4.1.2?type=module",
+ "pkg:golang/github.com/pkg/browser@v0.0.0-20240102092130-5ac0b6a4141c?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/polydawn/refmt@v0.89.1-0.20221221234430-40501e09de1f?type=module",
"pkg:golang/github.com/prometheus/client_golang@v1.24.1?type=module",
"pkg:golang/github.com/prometheus/client_model@v0.6.2?type=module",
"pkg:golang/github.com/prometheus/common@v0.70.1?type=module",
"pkg:golang/github.com/prometheus/procfs@v0.21.1?type=module",
- "pkg:golang/github.com/quic-go/qpack@v0.6.0?type=module",
- "pkg:golang/github.com/quic-go/quic-go@v0.60.0?type=module",
- "pkg:golang/github.com/quic-go/webtransport-go@v0.11.1?type=module",
"pkg:golang/github.com/spaolacci/murmur3@v1.1.0?type=module",
+ "pkg:golang/github.com/spf13/cobra@v1.10.2?type=module",
+ "pkg:golang/github.com/spf13/pflag@v1.0.10?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
- "pkg:golang/github.com/valyala/bytebufferpool@v1.0.0?type=module",
- "pkg:golang/github.com/valyala/fasthttp@v1.72.0?type=module",
- "pkg:golang/github.com/whyrusleeping/go-keyspace@v0.0.0-20160322163242-5b898ac5add1?type=module",
- "pkg:golang/github.com/wlynxg/anet@v0.0.5?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
- "pkg:golang/go.uber.org/dig@v1.19.0?type=module",
- "pkg:golang/go.uber.org/fx@v1.24.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
+ "pkg:golang/go.uber.org/atomic@v1.11.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/go.yaml.in/yaml/v2@v2.4.4?type=module",
+ "pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
+ "pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
+ "pkg:golang/golang.org/x/term@v0.45.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/golang.org/x/time@v0.15.0?type=module",
- "pkg:golang/gonum.org/v1/gonum@v0.17.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/api@v0.272.0?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
- "pkg:golang/gopkg.in/yaml.v2@v2.4.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
- "pkg:golang/lukechampine.com/blake3@v1.4.1?type=module"
+ "pkg:golang/lukechampine.com/blake3@v1.4.1?type=module",
+ "pkg:golang/sigs.k8s.io/yaml@v1.6.0?type=module"
]
},
{
- "ref": "pkg:golang/github.com/getoptimum/rlnc@v0.0.1-rc1.0.20260326154748-8ead5e1b16e5?type=module",
- "dependsOn": [
- "pkg:golang/golang.org/x/net@v0.57.0?type=module",
- "pkg:golang/golang.org/x/sys@v0.47.0?type=module",
- "pkg:golang/golang.org/x/text@v0.40.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
- "pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
- "pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
- ]
+ "ref": "pkg:golang/github.com/getoptimum/shm@v0.5.0?type=module"
},
{
"ref": "pkg:golang/github.com/go-logr/logr@v1.4.3?type=module"
@@ -6781,6 +7136,30 @@
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module"
]
},
+ {
+ "ref": "pkg:golang/github.com/go-playground/locales@v0.14.1?type=module",
+ "dependsOn": [
+ "pkg:golang/golang.org/x/text@v0.40.0?type=module"
+ ]
+ },
+ {
+ "ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1?type=module",
+ "dependsOn": [
+ "pkg:golang/github.com/go-playground/locales@v0.14.1?type=module"
+ ]
+ },
+ {
+ "ref": "pkg:golang/github.com/go-playground/validator/v10@v10.30.2?type=module",
+ "dependsOn": [
+ "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.13?type=module",
+ "pkg:golang/github.com/go-playground/locales@v0.14.1?type=module",
+ "pkg:golang/github.com/go-playground/universal-translator@v0.18.1?type=module",
+ "pkg:golang/github.com/leodido/go-urn@v1.4.0?type=module",
+ "pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
+ "pkg:golang/golang.org/x/sys@v0.47.0?type=module",
+ "pkg:golang/golang.org/x/text@v0.40.0?type=module"
+ ]
+ },
{
"ref": "pkg:golang/github.com/go-viper/mapstructure/v2@v2.5.0?type=module"
},
@@ -6857,16 +7236,16 @@
"pkg:golang/cloud.google.com/go/auth@v0.18.2?type=module",
"pkg:golang/cloud.google.com/go/auth/oauth2adapt@v0.2.8?type=module",
"pkg:golang/cloud.google.com/go/compute/metadata@v0.9.0?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
"pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.14?type=module",
"pkg:golang/github.com/googleapis/gax-go/v2@v2.18.0?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
@@ -6875,7 +7254,7 @@
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/golang.org/x/time@v0.15.0?type=module",
"pkg:golang/google.golang.org/api@v0.272.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
@@ -6898,7 +7277,7 @@
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/google.golang.org/api@v0.272.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
@@ -6937,8 +7316,9 @@
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
"pkg:golang/github.com/davidlazar/go-crypto@v0.0.0-20200604182044-b73af7476f6c?type=module",
"pkg:golang/github.com/decred/dcrd/dcrec/secp256k1/v4@v4.4.0?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/flynn/noise@v1.1.0?type=module",
+ "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.13?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/gogo/protobuf@v1.3.2?type=module",
@@ -7021,24 +7401,24 @@
"pkg:golang/github.com/whyrusleeping/go-keyspace@v0.0.0-20160322163242-5b898ac5add1?type=module",
"pkg:golang/github.com/wlynxg/anet@v0.0.5?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/atomic@v1.11.0?type=module",
"pkg:golang/go.uber.org/dig@v1.19.0?type=module",
"pkg:golang/go.uber.org/fx@v1.24.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/gonum.org/v1/gonum@v0.17.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
@@ -7069,9 +7449,9 @@
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/google/uuid@v1.6.0?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module"
]
},
@@ -7121,6 +7501,17 @@
{
"ref": "pkg:golang/github.com/jbenet/go-temp-err-catcher@v0.1.0?type=module"
},
+ {
+ "ref": "pkg:golang/github.com/jellydator/ttlcache/v3@v3.4.0?type=module",
+ "dependsOn": [
+ "pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
+ "pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
+ "pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
+ "pkg:golang/go.uber.org/goleak@v1.3.0?type=module",
+ "pkg:golang/golang.org/x/sync@v0.22.0?type=module",
+ "pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
+ ]
+ },
{
"ref": "pkg:golang/github.com/jpillora/backoff@v1.0.0?type=module"
},
@@ -7149,6 +7540,16 @@
"pkg:golang/github.com/mitchellh/reflectwalk@v1.0.2?type=module"
]
},
+ {
+ "ref": "pkg:golang/github.com/knadh/koanf/parsers/yaml@v1.1.0?type=module",
+ "dependsOn": [
+ "pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
+ "pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
+ "pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
+ "pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module",
+ "pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
+ ]
+ },
{
"ref": "pkg:golang/github.com/knadh/koanf/providers/confmap@v1.0.0?type=module",
"dependsOn": [
@@ -7158,7 +7559,26 @@
]
},
{
- "ref": "pkg:golang/github.com/knadh/koanf/v2@v2.3.3?type=module",
+ "ref": "pkg:golang/github.com/knadh/koanf/providers/env/v2@v2.0.0?type=module",
+ "dependsOn": [
+ "pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
+ "pkg:golang/github.com/knadh/koanf/maps@v0.1.2?type=module",
+ "pkg:golang/github.com/mitchellh/copystructure@v1.2.0?type=module",
+ "pkg:golang/github.com/mitchellh/reflectwalk@v1.0.2?type=module",
+ "pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
+ "pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
+ "pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
+ ]
+ },
+ {
+ "ref": "pkg:golang/github.com/knadh/koanf/providers/file@v1.2.1?type=module",
+ "dependsOn": [
+ "pkg:golang/github.com/fsnotify/fsnotify@v1.9.0?type=module",
+ "pkg:golang/golang.org/x/sys@v0.47.0?type=module"
+ ]
+ },
+ {
+ "ref": "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?type=module",
"dependsOn": [
"pkg:golang/github.com/go-viper/mapstructure/v2@v2.5.0?type=module",
"pkg:golang/github.com/knadh/koanf/maps@v0.1.2?type=module",
@@ -7176,6 +7596,15 @@
{
"ref": "pkg:golang/github.com/kylelemons/godebug@v1.1.0?type=module"
},
+ {
+ "ref": "pkg:golang/github.com/leodido/go-urn@v1.4.0?type=module",
+ "dependsOn": [
+ "pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
+ "pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
+ "pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
+ "pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
+ ]
+ },
{
"ref": "pkg:golang/github.com/libp2p/go-buffer-pool@v0.1.0?type=module"
},
@@ -7273,7 +7702,7 @@
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
@@ -7290,7 +7719,7 @@
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/gopkg.in/yaml.v2@v2.4.0?type=module"
]
},
@@ -7383,15 +7812,15 @@
"pkg:golang/github.com/whyrusleeping/go-keyspace@v0.0.0-20160322163242-5b898ac5add1?type=module",
"pkg:golang/github.com/wlynxg/anet@v0.0.5?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/dig@v1.19.0?type=module",
"pkg:golang/go.uber.org/fx@v1.24.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
@@ -7432,7 +7861,7 @@
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
@@ -7467,7 +7896,7 @@
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
@@ -7475,7 +7904,7 @@
]
},
{
- "ref": "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.16.1-0.20260611143718-41b11d5cb1a7?type=module",
+ "ref": "pkg:golang/github.com/libp2p/go-libp2p-pubsub@v0.17.0?type=module",
"dependsOn": [
"pkg:golang/github.com/benbjohnson/clock@v1.3.5?type=module",
"pkg:golang/github.com/beorn7/perks@v1.0.1?type=module",
@@ -7485,7 +7914,6 @@
"pkg:golang/github.com/decred/dcrd/dcrec/secp256k1/v4@v4.4.0?type=module",
"pkg:golang/github.com/dunglas/httpsfv@v1.1.0?type=module",
"pkg:golang/github.com/flynn/noise@v1.1.0?type=module",
- "pkg:golang/github.com/gogo/protobuf@v1.3.2?type=module",
"pkg:golang/github.com/google/uuid@v1.6.0?type=module",
"pkg:golang/github.com/gorilla/websocket@v1.5.4-0.20250319132907-e064f32e3674?type=module",
"pkg:golang/github.com/hashicorp/golang-lru/v2@v2.0.7?type=module",
@@ -7553,7 +7981,7 @@
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
@@ -7583,7 +8011,7 @@
"pkg:golang/github.com/multiformats/go-varint@v0.1.0?type=module",
"pkg:golang/github.com/spaolacci/murmur3@v1.1.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/lukechampine.com/blake3@v1.4.1?type=module"
@@ -7615,13 +8043,13 @@
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/spaolacci/murmur3@v1.1.0?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
@@ -7770,7 +8198,7 @@
"pkg:golang/github.com/spaolacci/murmur3@v1.1.0?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module",
"pkg:golang/lukechampine.com/blake3@v1.4.1?type=module"
@@ -7792,7 +8220,7 @@
"pkg:golang/github.com/multiformats/go-varint@v0.1.0?type=module",
"pkg:golang/github.com/spaolacci/murmur3@v1.1.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/lukechampine.com/blake3@v1.4.1?type=module"
@@ -7897,7 +8325,7 @@
"pkg:golang/github.com/json-iterator/go@v1.1.12?type=module",
"pkg:golang/github.com/knadh/koanf/maps@v0.1.2?type=module",
"pkg:golang/github.com/knadh/koanf/providers/confmap@v1.0.0?type=module",
- "pkg:golang/github.com/knadh/koanf/v2@v2.3.3?type=module",
+ "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?type=module",
"pkg:golang/github.com/mitchellh/copystructure@v1.2.0?type=module",
"pkg:golang/github.com/mitchellh/reflectwalk@v1.0.2?type=module",
"pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd?type=module",
@@ -7917,9 +8345,9 @@
"pkg:golang/go.opentelemetry.io/collector/pdata@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/pipeline@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/processor@v1.54.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/goleak@v1.3.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
@@ -8292,7 +8720,8 @@
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
"pkg:golang/github.com/dennwc/varint@v1.0.0?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
+ "pkg:golang/github.com/fsnotify/fsnotify@v1.9.0?type=module",
"pkg:golang/github.com/fxamacker/cbor/v2@v2.9.2?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
@@ -8315,7 +8744,7 @@
"pkg:golang/github.com/klauspost/compress@v1.19.1?type=module",
"pkg:golang/github.com/knadh/koanf/maps@v0.1.2?type=module",
"pkg:golang/github.com/knadh/koanf/providers/confmap@v1.0.0?type=module",
- "pkg:golang/github.com/knadh/koanf/v2@v2.3.3?type=module",
+ "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?type=module",
"pkg:golang/github.com/kylelemons/godebug@v1.1.0?type=module",
"pkg:golang/github.com/mattn/go-colorable@v0.1.15?type=module",
"pkg:golang/github.com/mattn/go-isatty@v0.0.22?type=module",
@@ -8342,6 +8771,7 @@
"pkg:golang/github.com/prometheus/procfs@v0.21.1?type=module",
"pkg:golang/github.com/prometheus/sigv4@v0.4.1?type=module",
"pkg:golang/github.com/puzpuzpuz/xsync/v4@v4.4.0?type=module",
+ "pkg:golang/github.com/spf13/pflag@v1.0.10?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/github.com/x448/float16@v0.8.4?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
@@ -8355,10 +8785,10 @@
"pkg:golang/go.opentelemetry.io/collector/pipeline@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/processor@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace@v0.67.0?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/atomic@v1.11.0?type=module",
"pkg:golang/go.uber.org/goleak@v1.3.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
@@ -8366,7 +8796,7 @@
"pkg:golang/go.yaml.in/yaml/v2@v2.4.4?type=module",
"pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
- "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
@@ -8375,7 +8805,7 @@
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/golang.org/x/time@v0.15.0?type=module",
"pkg:golang/google.golang.org/api@v0.272.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/inf.v0@v0.9.1?type=module",
@@ -8481,6 +8911,16 @@
{
"ref": "pkg:golang/github.com/spaolacci/murmur3@v1.1.0?type=module"
},
+ {
+ "ref": "pkg:golang/github.com/spf13/cobra@v1.10.2?type=module",
+ "dependsOn": [
+ "pkg:golang/github.com/spf13/pflag@v1.0.10?type=module",
+ "pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module"
+ ]
+ },
+ {
+ "ref": "pkg:golang/github.com/spf13/pflag@v1.0.10?type=module"
+ },
{
"ref": "pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"dependsOn": [
@@ -8525,8 +8965,8 @@
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
]
},
@@ -8543,9 +8983,9 @@
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/go.opentelemetry.io/collector/featuregate@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/pdata@v1.54.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/goleak@v1.3.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
@@ -8561,7 +9001,7 @@
"pkg:golang/github.com/hashicorp/go-version@v1.9.0?type=module",
"pkg:golang/github.com/knadh/koanf/maps@v0.1.2?type=module",
"pkg:golang/github.com/knadh/koanf/providers/confmap@v1.0.0?type=module",
- "pkg:golang/github.com/knadh/koanf/v2@v2.3.3?type=module",
+ "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?type=module",
"pkg:golang/github.com/mitchellh/copystructure@v1.2.0?type=module",
"pkg:golang/github.com/mitchellh/reflectwalk@v1.0.2?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
@@ -8583,7 +9023,7 @@
"pkg:golang/github.com/hashicorp/go-version@v1.9.0?type=module",
"pkg:golang/github.com/knadh/koanf/maps@v0.1.2?type=module",
"pkg:golang/github.com/knadh/koanf/providers/confmap@v1.0.0?type=module",
- "pkg:golang/github.com/knadh/koanf/v2@v2.3.3?type=module",
+ "pkg:golang/github.com/knadh/koanf/v2@v2.3.4?type=module",
"pkg:golang/github.com/mitchellh/copystructure@v1.2.0?type=module",
"pkg:golang/github.com/mitchellh/reflectwalk@v1.0.2?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
@@ -8639,9 +9079,9 @@
"pkg:golang/go.opentelemetry.io/collector/component@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/featuregate@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/pdata@v1.54.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
@@ -8663,7 +9103,7 @@
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
@@ -8695,9 +9135,9 @@
"pkg:golang/go.opentelemetry.io/collector/internal/componentalias@v0.148.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/pdata@v1.54.0?type=module",
"pkg:golang/go.opentelemetry.io/collector/pipeline@v1.54.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/go.uber.org/goleak@v1.3.0?type=module",
"pkg:golang/go.uber.org/multierr@v1.11.0?type=module",
"pkg:golang/go.uber.org/zap@v1.28.0?type=module",
@@ -8709,7 +9149,7 @@
"dependsOn": [
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
@@ -8717,35 +9157,35 @@
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
]
},
{
- "ref": "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
+ "ref": "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
"dependsOn": [
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/google/uuid@v1.6.0?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
]
},
{
- "ref": "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
+ "ref": "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
"dependsOn": [
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
@@ -8755,13 +9195,13 @@
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
]
},
{
- "ref": "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
+ "ref": "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
"dependsOn": [
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
@@ -8770,20 +9210,20 @@
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
]
},
{
- "ref": "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "ref": "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"dependsOn": [
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
"pkg:golang/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
"pkg:golang/gopkg.in/yaml.v3@v3.0.1?type=module"
]
},
@@ -8864,7 +9304,7 @@
]
},
{
- "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20260508232706-74f9aab9d74a?type=module",
+ "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20260611194520-c48552f49976?type=module",
"dependsOn": [
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module"
@@ -8922,7 +9362,7 @@
"pkg:golang/cloud.google.com/go/auth/oauth2adapt@v0.2.8?type=module",
"pkg:golang/cloud.google.com/go/compute/metadata@v0.9.0?type=module",
"pkg:golang/github.com/cespare/xxhash/v2@v2.3.0?type=module",
- "pkg:golang/github.com/felixge/httpsnoop@v1.0.4?type=module",
+ "pkg:golang/github.com/felixge/httpsnoop@v1.1.0?type=module",
"pkg:golang/github.com/go-logr/logr@v1.4.3?type=module",
"pkg:golang/github.com/go-logr/stdr@v1.2.2?type=module",
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
@@ -8931,10 +9371,10 @@
"pkg:golang/github.com/googleapis/enterprise-certificate-proxy@v0.3.14?type=module",
"pkg:golang/github.com/googleapis/gax-go/v2@v2.18.0?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.68.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp@v0.69.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/golang.org/x/crypto@v0.54.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
@@ -8942,13 +9382,13 @@
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/golang.org/x/time@v0.15.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/grpc@v1.82.1?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
},
{
- "ref": "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "ref": "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"dependsOn": [
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
@@ -8963,16 +9403,16 @@
"pkg:golang/github.com/google/go-cmp@v0.7.0?type=module",
"pkg:golang/github.com/google/uuid@v1.6.0?type=module",
"pkg:golang/go.opentelemetry.io/auto/sdk@v1.2.1?type=module",
- "pkg:golang/go.opentelemetry.io/otel@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/metric@v1.43.0?type=module",
- "pkg:golang/go.opentelemetry.io/otel/trace@v1.43.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/metric@v1.44.0?type=module",
+ "pkg:golang/go.opentelemetry.io/otel/trace@v1.44.0?type=module",
"pkg:golang/golang.org/x/net@v0.57.0?type=module",
"pkg:golang/golang.org/x/oauth2@v0.36.0?type=module",
"pkg:golang/golang.org/x/sync@v0.22.0?type=module",
"pkg:golang/golang.org/x/sys@v0.47.0?type=module",
"pkg:golang/golang.org/x/text@v0.40.0?type=module",
"pkg:golang/gonum.org/v1/gonum@v0.17.0?type=module",
- "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260523011958-0a33c5d7ca68?type=module",
+ "pkg:golang/google.golang.org/genproto/googleapis/rpc@v0.0.0-20260610212136-7ab31c22f7ad?type=module",
"pkg:golang/google.golang.org/protobuf@v1.36.11?type=module"
]
},
@@ -9003,6 +9443,7 @@
"pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd?type=module",
"pkg:golang/github.com/modern-go/reflect2@v1.0.3-0.20250322232337-35a7c28c31ee?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
+ "pkg:golang/github.com/spf13/pflag@v1.0.10?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/github.com/x448/float16@v0.8.4?type=module",
"pkg:golang/go.yaml.in/yaml/v2@v2.4.4?type=module",
@@ -9036,6 +9477,7 @@
"pkg:golang/github.com/modern-go/reflect2@v1.0.3-0.20250322232337-35a7c28c31ee?type=module",
"pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
+ "pkg:golang/github.com/spf13/pflag@v1.0.10?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/github.com/x448/float16@v0.8.4?type=module",
"pkg:golang/go.uber.org/goleak@v1.3.0?type=module",
@@ -9078,6 +9520,7 @@
"pkg:golang/github.com/modern-go/reflect2@v1.0.3-0.20250322232337-35a7c28c31ee?type=module",
"pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822?type=module",
"pkg:golang/github.com/pmezard/go-difflib@v1.0.1-0.20181226105442-5d4384ee4fb2?type=module",
+ "pkg:golang/github.com/spf13/pflag@v1.0.10?type=module",
"pkg:golang/github.com/stretchr/testify@v1.11.1?type=module",
"pkg:golang/go.yaml.in/yaml/v2@v2.4.4?type=module",
"pkg:golang/go.yaml.in/yaml/v3@v3.0.4?type=module",
diff --git a/go.mod b/go.mod
index 8d33e1e..fd9353d 100644
--- a/go.mod
+++ b/go.mod
@@ -1,6 +1,6 @@
module github.com/getoptimum/optimum-gateway
-go 1.26.6
+go 1.26.5
tool (
github.com/bufbuild/buf/cmd/buf
@@ -11,8 +11,8 @@ tool (
require (
github.com/ferranbt/fastssz v1.0.1-0.20251203093649-0b1f38e43198
- github.com/getoptimum/optimum-common v0.1.4-0.20260811133125-9ee6a6cb5cf3
- github.com/getoptimum/optimum-p2p v0.0.1-rc12.2
+ github.com/getoptimum/mump2p-protocol v0.0.1-rc7
+ github.com/getoptimum/optimum-common v0.1.4
github.com/gofiber/fiber/v3 v3.4.0
github.com/golang-jwt/jwt/v5 v5.3.1
github.com/golang/snappy v1.0.0
@@ -22,7 +22,7 @@ require (
github.com/libp2p/go-libp2p v0.48.0
github.com/libp2p/go-libp2p-kad-dht v0.33.1
github.com/libp2p/go-libp2p-mplex v0.11.0
- github.com/libp2p/go-libp2p-pubsub v0.16.1-0.20260611143718-41b11d5cb1a7
+ github.com/libp2p/go-libp2p-pubsub v0.17.0
github.com/libp2p/go-libp2p-record v0.3.1
github.com/libp2p/go-mplex v0.7.0
github.com/montanaflynn/stats v0.7.1
@@ -43,8 +43,8 @@ require (
buf.build/gen/go/bufbuild/bufplugin/protocolbuffers/go v1.36.11-20250718181942-e35f9b667443.1 // indirect
buf.build/gen/go/bufbuild/protodescriptor/protocolbuffers/go v1.36.11-20250109164928-1da0de137947.1 // indirect
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260415201107-50325440f8f2.1 // indirect
- buf.build/gen/go/bufbuild/registry/connectrpc/go v1.20.0-20260507063250-43b0c5a6cd08.1 // indirect
- buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.36.11-20260507063250-43b0c5a6cd08.1 // indirect
+ buf.build/gen/go/bufbuild/registry/connectrpc/go v1.20.0-20260610134905-7e419c5bd258.1 // indirect
+ buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.36.11-20260610134905-7e419c5bd258.1 // indirect
buf.build/gen/go/pluginrpc/pluginrpc/protocolbuffers/go v1.36.11-20241007202033-cf42259fcbfc.1 // indirect
buf.build/go/app v0.2.1-0.20260407195847-833f8f978cda // indirect
buf.build/go/bufplugin v0.10.0 // indirect
@@ -122,8 +122,8 @@ require (
github.com/bombsimon/wsl/v5 v5.8.0 // indirect
github.com/breml/bidichk v0.3.3 // indirect
github.com/breml/errchkjson v0.4.1 // indirect
- github.com/bufbuild/buf v1.70.0 // indirect
- github.com/bufbuild/protocompile v0.14.2-0.20260522222248-64e6ad034132 // indirect
+ github.com/bufbuild/buf v1.71.0 // indirect
+ github.com/bufbuild/protocompile v0.14.2-0.20260605203730-cd7c3c124e10 // indirect
github.com/bufbuild/protoplugin v0.0.0-20260414125817-25d1d281b46b // indirect
github.com/butuzov/ireturn v0.4.1 // indirect
github.com/butuzov/mirror v1.3.0 // indirect
@@ -154,8 +154,8 @@ require (
github.com/dennwc/varint v1.0.0 // indirect
github.com/distribution/reference v0.6.0 // indirect
github.com/dlclark/regexp2 v1.12.0 // indirect
- github.com/docker/cli v29.5.2+incompatible // indirect
- github.com/docker/docker-credential-helpers v0.9.7 // indirect
+ github.com/docker/cli v29.5.3+incompatible // indirect
+ github.com/docker/docker-credential-helpers v0.9.8 // indirect
github.com/docker/go-connections v0.7.0 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/dunglas/httpsfv v1.1.0 // indirect
@@ -163,17 +163,21 @@ require (
github.com/ettle/strcase v0.2.0 // indirect
github.com/fatih/color v1.19.0 // indirect
github.com/fatih/structtag v1.2.0 // indirect
- github.com/felixge/httpsnoop v1.0.4 // indirect
+ github.com/felixge/httpsnoop v1.1.0 // indirect
github.com/firefart/nonamedreturns v1.0.6 // indirect
github.com/flynn/noise v1.1.0 // indirect
github.com/fsnotify/fsnotify v1.9.0 // indirect
github.com/fxamacker/cbor/v2 v2.9.2 // indirect
github.com/fzipp/gocyclo v0.6.0 // indirect
- github.com/getoptimum/rlnc v0.0.1-rc1.0.20260326154748-8ead5e1b16e5 // indirect
+ github.com/gabriel-vasile/mimetype v1.4.13 // indirect
+ github.com/getoptimum/shm v0.5.0 // indirect
github.com/ghostiam/protogetter v0.3.20 // indirect
github.com/go-critic/go-critic v0.14.3 // indirect
github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
+ github.com/go-playground/locales v0.14.1 // indirect
+ github.com/go-playground/universal-translator v0.18.1 // indirect
+ github.com/go-playground/validator/v10 v10.30.2 // indirect
github.com/go-toolsmith/astcast v1.1.0 // indirect
github.com/go-toolsmith/astcopy v1.1.0 // indirect
github.com/go-toolsmith/astequal v1.2.0 // indirect
@@ -229,6 +233,7 @@ require (
github.com/jackpal/go-nat-pmp v1.0.2 // indirect
github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect
github.com/jdx/go-netrc v1.0.0 // indirect
+ github.com/jellydator/ttlcache/v3 v3.4.0 // indirect
github.com/jgautheron/goconst v1.10.0 // indirect
github.com/jjti/go-spancheck v0.6.5 // indirect
github.com/jpillora/backoff v1.0.0 // indirect
@@ -241,8 +246,11 @@ require (
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
github.com/klauspost/pgzip v1.2.6 // indirect
github.com/knadh/koanf/maps v0.1.2 // indirect
+ github.com/knadh/koanf/parsers/yaml v1.1.0 // indirect
github.com/knadh/koanf/providers/confmap v1.0.0 // indirect
- github.com/knadh/koanf/v2 v2.3.3 // indirect
+ github.com/knadh/koanf/providers/env/v2 v2.0.0 // indirect
+ github.com/knadh/koanf/providers/file v1.2.1 // indirect
+ github.com/knadh/koanf/v2 v2.3.4 // indirect
github.com/koron/go-ssdp v0.0.6 // indirect
github.com/kulti/thelper v0.7.1 // indirect
github.com/kunwardeep/paralleltest v1.0.15 // indirect
@@ -254,6 +262,7 @@ require (
github.com/ldez/structtags v0.6.1 // indirect
github.com/ldez/tagliatelle v0.7.2 // indirect
github.com/ldez/usetesting v0.5.0 // indirect
+ github.com/leodido/go-urn v1.4.0 // indirect
github.com/leonklingele/grouper v1.1.2 // indirect
github.com/libp2p/go-buffer-pool v0.1.0 // indirect
github.com/libp2p/go-cidranger v1.1.0 // indirect
@@ -384,7 +393,7 @@ require (
github.com/stretchr/objx v0.5.2 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/tetafro/godot v1.5.6 // indirect
- github.com/tetratelabs/wazero v1.11.0 // indirect
+ github.com/tetratelabs/wazero v1.12.0 // indirect
github.com/tidwall/btree v1.8.1 // indirect
github.com/timakin/bodyclose v0.0.0-20260129054331-73d1f95b84b4 // indirect
github.com/timonwong/loggercheck v0.11.0 // indirect
@@ -425,21 +434,21 @@ require (
go.opentelemetry.io/collector/pipeline v1.54.0 // indirect
go.opentelemetry.io/collector/processor v1.54.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.67.0 // indirect
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 // indirect
- go.opentelemetry.io/otel v1.43.0 // indirect
- go.opentelemetry.io/otel/metric v1.43.0 // indirect
- go.opentelemetry.io/otel/trace v1.43.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 // indirect
+ go.opentelemetry.io/otel v1.44.0 // indirect
+ go.opentelemetry.io/otel/metric v1.44.0 // indirect
+ go.opentelemetry.io/otel/trace v1.44.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/dig v1.19.0 // indirect
go.uber.org/fx v1.24.0 // indirect
go.uber.org/goleak v1.3.0 // indirect
- go.uber.org/mock v0.5.2 // indirect
+ go.uber.org/mock v0.6.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.28.0 // indirect
go.yaml.in/yaml/v2 v2.4.4 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
golang.org/x/crypto v0.54.0 // indirect
- golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a // indirect
+ golang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect
golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358 // indirect
golang.org/x/mod v0.37.0 // indirect
golang.org/x/net v0.57.0 // indirect
@@ -453,8 +462,8 @@ require (
golang.org/x/tools v0.47.0 // indirect
gonum.org/v1/gonum v0.17.0 // indirect
google.golang.org/api v0.272.0 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20260523011958-0a33c5d7ca68 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20260610212136-7ab31c22f7ad // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad // indirect
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.2 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
diff --git a/go.sum b/go.sum
index 42b2373..79b7c00 100644
--- a/go.sum
+++ b/go.sum
@@ -8,10 +8,10 @@ buf.build/gen/go/bufbuild/protodescriptor/protocolbuffers/go v1.36.11-2025010916
buf.build/gen/go/bufbuild/protodescriptor/protocolbuffers/go v1.36.11-20250109164928-1da0de137947.1/go.mod h1:8PRKXhgNes29Tjrnv8KdZzg3I1QceOkzibW1QK7EXv0=
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260415201107-50325440f8f2.1 h1:s6hzCXtND/ICdGPTMGk7C+/BFlr2Jg5GyH0NKf4XGXg=
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260415201107-50325440f8f2.1/go.mod h1:tvtbpgaVXZX4g6Pn+AnzFycuRK3MOz5HJfEGeEllXYM=
-buf.build/gen/go/bufbuild/registry/connectrpc/go v1.20.0-20260507063250-43b0c5a6cd08.1 h1:f8pa4iy1Bs+hQ16f3jg22rV/StDKIRj1rNNWX5rLwZ8=
-buf.build/gen/go/bufbuild/registry/connectrpc/go v1.20.0-20260507063250-43b0c5a6cd08.1/go.mod h1:7MNigA51XJjPKrLnbcE61BmgW+pAp3mLW61gUqLBBRY=
-buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.36.11-20260507063250-43b0c5a6cd08.1 h1:QK2GkcPxqh2oG5mTMAHejculun8nxto+p7mlgh8fPTM=
-buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.36.11-20260507063250-43b0c5a6cd08.1/go.mod h1:1JJi9jvOqRxSMa+JxiZSm57doB+db/1WYCIa2lHfc40=
+buf.build/gen/go/bufbuild/registry/connectrpc/go v1.20.0-20260610134905-7e419c5bd258.1 h1:yEdEDjTFwxgYv/3nmKxQFQBOUVzh8VUbuWu9g6yaYz8=
+buf.build/gen/go/bufbuild/registry/connectrpc/go v1.20.0-20260610134905-7e419c5bd258.1/go.mod h1:rK7cTwmzl4ZDFpNxed/Hpc2Z/8ojsaq+XoYWDehuruc=
+buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.36.11-20260610134905-7e419c5bd258.1 h1:kDM6h0UY+keayVHlk6QjTzjw22JH4ung9tuL6H4vppE=
+buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.36.11-20260610134905-7e419c5bd258.1/go.mod h1:1JJi9jvOqRxSMa+JxiZSm57doB+db/1WYCIa2lHfc40=
buf.build/gen/go/pluginrpc/pluginrpc/protocolbuffers/go v1.36.11-20241007202033-cf42259fcbfc.1 h1:iGPvEJltOXUMANWf0zajcRcbiOXLD90ZwPUFvbcuv6Q=
buf.build/gen/go/pluginrpc/pluginrpc/protocolbuffers/go v1.36.11-20241007202033-cf42259fcbfc.1/go.mod h1:nWVKKRA29zdt4uvkjka3i/y4mkrswyWwiu0TbdX0zts=
buf.build/go/app v0.2.1-0.20260407195847-833f8f978cda h1:eysSyjrJtkxU1A/9+Kv+1Mwq9K6BYBw+STIOVsZ256Y=
@@ -202,10 +202,10 @@ github.com/breml/errchkjson v0.4.1 h1:keFSS8D7A2T0haP9kzZTi7o26r7kE3vymjZNeNDRDw
github.com/breml/errchkjson v0.4.1/go.mod h1:a23OvR6Qvcl7DG/Z4o0el6BRAjKnaReoPQFciAl9U3s=
github.com/brianvoe/gofakeit/v6 v6.28.0 h1:Xib46XXuQfmlLS2EXRuJpqcw8St6qSZz75OUo0tgAW4=
github.com/brianvoe/gofakeit/v6 v6.28.0/go.mod h1:Xj58BMSnFqcn/fAQeSK+/PLtC5kSb7FJIq4JyGa8vEs=
-github.com/bufbuild/buf v1.70.0 h1:rGL4TGoy8F1DbQa4BSlMOVBBR7lWblfnKxUdOxmeFns=
-github.com/bufbuild/buf v1.70.0/go.mod h1:5gCCIpDmBzhiSJwqmxmbdN5aRZQYGmFSGnOBE7seP8c=
-github.com/bufbuild/protocompile v0.14.2-0.20260522222248-64e6ad034132 h1:f4T4k/41jHHhp2Otl6ZShDedr4wF9b+NdqIfLezx4R4=
-github.com/bufbuild/protocompile v0.14.2-0.20260522222248-64e6ad034132/go.mod h1:jPUiZUFWc8E3Kc2Y4SRlGAdjde4amGkHY0BUACNS43E=
+github.com/bufbuild/buf v1.71.0 h1:/XLs8mFKjlM/LVbBBBQ3uSNcyEClyAV8lJiO7QR04d8=
+github.com/bufbuild/buf v1.71.0/go.mod h1:fbHMfu0nEbIPQT3IG7rAfPZXoFYEfZJuqFbAXu1wnRU=
+github.com/bufbuild/protocompile v0.14.2-0.20260605203730-cd7c3c124e10 h1:N0ZOKMwHpKsFhMGSxnB6JiVkM7SbH8IAKlGGO0SpQBA=
+github.com/bufbuild/protocompile v0.14.2-0.20260605203730-cd7c3c124e10/go.mod h1:jPUiZUFWc8E3Kc2Y4SRlGAdjde4amGkHY0BUACNS43E=
github.com/bufbuild/protoplugin v0.0.0-20260414125817-25d1d281b46b h1:b7wvo9ZhjLzCp7tGbOUMvgtYTnd33zGSAmMxcdxMnhQ=
github.com/bufbuild/protoplugin v0.0.0-20260414125817-25d1d281b46b/go.mod h1:c5D8gWRIZ2HLWO3gXYTtUfw/hbJyD8xikv2ooPxnklQ=
github.com/butuzov/ireturn v0.4.1 h1:vWb3NO4t77iku/sjCQ/2pHTQeOmxEhjIriJqRLg1Y+I=
@@ -280,12 +280,12 @@ github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5Qvfr
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/dlclark/regexp2 v1.12.0 h1:0j4c5qQmnC6XOWNjP3PIXURXN2gWx76rd3KvgdPkCz8=
github.com/dlclark/regexp2 v1.12.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
-github.com/docker/cli v29.5.2+incompatible h1:ubykJ1Y8LmNRGJ2BuMQ0kHOt/RO1YzGNswqWMJgivuQ=
-github.com/docker/cli v29.5.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
+github.com/docker/cli v29.5.3+incompatible h1:nbEFfz774vBwQ5KRYv7c/AghjReqnGISvrRhzjV0evs=
+github.com/docker/cli v29.5.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/docker v28.5.2+incompatible h1:DBX0Y0zAjZbSrm1uzOkdr1onVghKaftjlSWt4AFexzM=
github.com/docker/docker v28.5.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
-github.com/docker/docker-credential-helpers v0.9.7 h1:jaPIxEIDz5bQeghNAdzz0ETwMMnM4vzjZlxz3pWP4JA=
-github.com/docker/docker-credential-helpers v0.9.7/go.mod h1:v1S+hepowrQXITkEfw6o4+BMbGot02wiKpzWhGUZK6c=
+github.com/docker/docker-credential-helpers v0.9.8 h1:bIREROb7So6PRlq6KTtdS9MPEjC29OQRkFNlvK2OX8Q=
+github.com/docker/docker-credential-helpers v0.9.8/go.mod h1:v1S+hepowrQXITkEfw6o4+BMbGot02wiKpzWhGUZK6c=
github.com/docker/go-connections v0.7.0 h1:6SsRfJddP22WMrCkj19x9WKjEDTB+ahsdiGYf0mN39c=
github.com/docker/go-connections v0.7.0/go.mod h1:no1qkHdjq7kLMGUXYAduOhYPSJxxvgWBh7ogVvptn3Q=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
@@ -311,8 +311,8 @@ github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w=
github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE=
github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
-github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
-github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
+github.com/felixge/httpsnoop v1.1.0 h1:3YtUj32ZZkqZtt3sZZsClsymw/QDuVfpNhoA31zeORc=
+github.com/felixge/httpsnoop v1.1.0/go.mod h1:Zqxgdd+1Rkcz8euOqdr7lqgCRJztwr5hp9vDSi5UZCE=
github.com/ferranbt/fastssz v1.0.1-0.20251203093649-0b1f38e43198 h1:ozc1nbNIPtUNo0WZL5EhDKJX2deirAMCacprfowlgLU=
github.com/ferranbt/fastssz v1.0.1-0.20251203093649-0b1f38e43198/go.mod h1:o5km+pb3JXQ1l0i1jbgtuWtJ69L8iEofK+z/Tqv2+o8=
github.com/firefart/nonamedreturns v1.0.6 h1:vmiBcKV/3EqKY3ZiPxCINmpS431OcE1S47AQUwhrg8E=
@@ -327,12 +327,14 @@ github.com/fxamacker/cbor/v2 v2.9.2 h1:X4Ksno9+x3cz0TZv69ec1hxP/+tymuR8PXQJyDwfh
github.com/fxamacker/cbor/v2 v2.9.2/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo=
github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA=
-github.com/getoptimum/optimum-common v0.1.4-0.20260811133125-9ee6a6cb5cf3 h1:Tk16YNMegcezkthC6uvie6EEDDtp0BdB5zUAZb2+DWI=
-github.com/getoptimum/optimum-common v0.1.4-0.20260811133125-9ee6a6cb5cf3/go.mod h1:gOX2MYQQ7zqciRiybcVqIoCsV/tvw8cJdQfbmj4FSxc=
-github.com/getoptimum/optimum-p2p v0.0.1-rc12.2 h1:ujFmWPT1T0gwa5GOQk7MtwbDl94dM7eOcywk8TVdZTY=
-github.com/getoptimum/optimum-p2p v0.0.1-rc12.2/go.mod h1:vWLCLE139fmBTj9F7VVrYfIFHz85nK/Ao8cXxH4kO8A=
-github.com/getoptimum/rlnc v0.0.1-rc1.0.20260326154748-8ead5e1b16e5 h1:RYJV15OII3fJCwxxfD6GxRk6xL67aY1QRrGjiUZi9dw=
-github.com/getoptimum/rlnc v0.0.1-rc1.0.20260326154748-8ead5e1b16e5/go.mod h1:a5YGuP03vUNvarDtczvd/tQjYep9n7EpMn1Ud+BEKX8=
+github.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9Ufpk2AcUM=
+github.com/gabriel-vasile/mimetype v1.4.13/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=
+github.com/getoptimum/mump2p-protocol v0.0.1-rc7 h1:nROh6lk0KYzulU3RS2ISwLUNhsi312QNZFX1Rg+Q8t0=
+github.com/getoptimum/mump2p-protocol v0.0.1-rc7/go.mod h1:683ayY1pT3s9lwlfmLQEHPlkPZRfqDB1feCjuDChz/U=
+github.com/getoptimum/optimum-common v0.1.4 h1:G6HzynbK3Xvk1uUhSTDt/iZqc0BabgxzSPgoNmnV0Yw=
+github.com/getoptimum/optimum-common v0.1.4/go.mod h1:gOX2MYQQ7zqciRiybcVqIoCsV/tvw8cJdQfbmj4FSxc=
+github.com/getoptimum/shm v0.5.0 h1:JKAFD2Gavx/vVWvHyEoUCyZ1ZzRJIk0WxciPATJlaz8=
+github.com/getoptimum/shm v0.5.0/go.mod h1:/18YgU96NuigZ/vD0FTiatCndt6lV2h8EJhUi/eypr0=
github.com/ghostiam/protogetter v0.3.20 h1:oW7OPFit2FxZOpmMRPP9FffU4uUpfeE/rEdE1f+MzD0=
github.com/ghostiam/protogetter v0.3.20/go.mod h1:FjIu5Yfs6FT391m+Fjp3fbAYJ6rkL/J6ySpZBfnODuI=
github.com/go-critic/go-critic v0.14.3 h1:5R1qH2iFeo4I/RJU8vTezdqs08Egi4u5p6vOESA0pog=
@@ -370,6 +372,14 @@ github.com/go-openapi/swag/typeutils v0.25.4 h1:1/fbZOUN472NTc39zpa+YGHn3jzHWhv4
github.com/go-openapi/swag/typeutils v0.25.4/go.mod h1:Ou7g//Wx8tTLS9vG0UmzfCsjZjKhpjxayRKTHXf2pTE=
github.com/go-openapi/swag/yamlutils v0.25.4 h1:6jdaeSItEUb7ioS9lFoCZ65Cne1/RZtPBZ9A56h92Sw=
github.com/go-openapi/swag/yamlutils v0.25.4/go.mod h1:MNzq1ulQu+yd8Kl7wPOut/YHAAU/H6hL91fF+E2RFwc=
+github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
+github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
+github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
+github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
+github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
+github.com/go-playground/validator/v10 v10.30.2 h1:JiFIMtSSHb2/XBUbWM4i/MpeQm9ZK2xqPNk8vgvu5JQ=
+github.com/go-playground/validator/v10 v10.30.2/go.mod h1:mAf2pIOVXjTEBrwUMGKkCWKKPs9NheYGabeB04txQSc=
github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI=
github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow=
github.com/go-resty/resty/v2 v2.17.2 h1:FQW5oHYcIlkCNrMD2lloGScxcHJ0gkjshV3qcQAyHQk=
@@ -567,6 +577,8 @@ github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABo
github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk=
github.com/jdx/go-netrc v1.0.0 h1:QbLMLyCZGj0NA8glAhxUpf1zDg6cxnWgMBbjq40W0gQ=
github.com/jdx/go-netrc v1.0.0/go.mod h1:Gh9eFQJnoTNIRHXl2j5bJXA1u84hQWJWgGh569zF3v8=
+github.com/jellydator/ttlcache/v3 v3.4.0 h1:YS4P125qQS0tNhtL6aeYkheEaB/m8HCqdMMP4mnWdTY=
+github.com/jellydator/ttlcache/v3 v3.4.0/go.mod h1:Hw9EgjymziQD3yGsQdf1FqFdpp7YjFMd4Srg5EJlgD4=
github.com/jgautheron/goconst v1.10.0 h1:Ptt+OoE4NaEWKhLrWrrN3IpZdGLiqaf7WLnEX/iv4Jw=
github.com/jgautheron/goconst v1.10.0/go.mod h1:0p+wv1lFOiUr0IlNNT1nrm6+8DB8u2sU6KHGzFRXHDc=
github.com/jhump/protoreflect/v2 v2.0.0-beta.2 h1:qZU+rEZUOYTz1Bnhi3xbwn+VxdXkLVeEpAeZzVXLY88=
@@ -599,10 +611,16 @@ github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU
github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo=
github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI=
+github.com/knadh/koanf/parsers/yaml v1.1.0 h1:3ltfm9ljprAHt4jxgeYLlFPmUaunuCgu1yILuTXRdM4=
+github.com/knadh/koanf/parsers/yaml v1.1.0/go.mod h1:HHmcHXUrp9cOPcuC+2wrr44GTUB0EC+PyfN3HZD9tFg=
github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE=
github.com/knadh/koanf/providers/confmap v1.0.0/go.mod h1:txHYHiI2hAtF0/0sCmcuol4IDcuQbKTybiB1nOcUo1A=
-github.com/knadh/koanf/v2 v2.3.3 h1:jLJC8XCRfLC7n4F+ZKKdBsbq1bfXTpuFhf4L7t94D94=
-github.com/knadh/koanf/v2 v2.3.3/go.mod h1:gRb40VRAbd4iJMYYD5IxZ6hfuopFcXBpc9bbQpZwo28=
+github.com/knadh/koanf/providers/env/v2 v2.0.0 h1:Ad5H3eun722u+FvchiIcEIJZsZ2M6oxCkgZfWN5B5KY=
+github.com/knadh/koanf/providers/env/v2 v2.0.0/go.mod h1:1g01PE+Ve1gBfWNNw2wmULRP0tc8RJrjn5p2N/jNCIc=
+github.com/knadh/koanf/providers/file v1.2.1 h1:bEWbtQwYrA+W2DtdBrQWyXqJaJSG3KrP3AESOJYp9wM=
+github.com/knadh/koanf/providers/file v1.2.1/go.mod h1:bp1PM5f83Q+TOUu10J/0ApLBd9uIzg+n9UgthfY+nRA=
+github.com/knadh/koanf/v2 v2.3.4 h1:fnynNSDlujWE+v83hAp8wKr/cdoxHLO0629SN+U8Urc=
+github.com/knadh/koanf/v2 v2.3.4/go.mod h1:gRb40VRAbd4iJMYYD5IxZ6hfuopFcXBpc9bbQpZwo28=
github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b h1:udzkj9S/zlT5X367kqJis0QP7YMxobob6zhzq6Yre00=
github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM=
github.com/koron/go-ssdp v0.0.6 h1:Jb0h04599eq/CY7rB5YEqPS83HmRfHP2azkxMN2rFtU=
@@ -635,6 +653,8 @@ github.com/ldez/tagliatelle v0.7.2 h1:KuOlL70/fu9paxuxbeqlicJnCspCRjH0x8FW+NfgYU
github.com/ldez/tagliatelle v0.7.2/go.mod h1:PtGgm163ZplJfZMZ2sf5nhUT170rSuPgBimoyYtdaSI=
github.com/ldez/usetesting v0.5.0 h1:3/QtzZObBKLy1F4F8jLuKJiKBjjVFi1IavpoWbmqLwc=
github.com/ldez/usetesting v0.5.0/go.mod h1:Spnb4Qppf8JTuRgblLrEWb7IE6rDmUpGvxY3iRrzvDQ=
+github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
+github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY=
github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA=
github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8=
@@ -653,8 +673,8 @@ github.com/libp2p/go-libp2p-kbucket v0.7.0 h1:vYDvRjkyJPeWunQXqcW2Z6E93Ywx7fX0jg
github.com/libp2p/go-libp2p-kbucket v0.7.0/go.mod h1:blOINGIj1yiPYlVEX0Rj9QwEkmVnz3EP8LK1dRKBC6g=
github.com/libp2p/go-libp2p-mplex v0.11.0 h1:0vwpLXRSfkTzshEjETIEgJaVxXvg+orbxYoIb3Ty5qM=
github.com/libp2p/go-libp2p-mplex v0.11.0/go.mod h1:QrsdNY3lzjpdo9V1goJfPb0O65Nms0sUR8CDAO18f6k=
-github.com/libp2p/go-libp2p-pubsub v0.16.1-0.20260611143718-41b11d5cb1a7 h1:UMiJ408NqO9Sf2ANutEM3An8Em3K+qn78eoIgzY3PIY=
-github.com/libp2p/go-libp2p-pubsub v0.16.1-0.20260611143718-41b11d5cb1a7/go.mod h1:l00Tc/MXTM/dK69HFxKWIe0yaNwMy5OuU0dyuZaWJa0=
+github.com/libp2p/go-libp2p-pubsub v0.17.0 h1:SNdvB6V0eYMXLRR95n+4vpxJKbFsbHhgjPdDiTpGoo0=
+github.com/libp2p/go-libp2p-pubsub v0.17.0/go.mod h1:F0oKCGLFJNy9b0TyRi04b+LchEzq0t2eZyJuxwAIyDE=
github.com/libp2p/go-libp2p-record v0.3.1 h1:cly48Xi5GjNw5Wq+7gmjfBiG9HCzQVkiZOUZ8kUl+Fg=
github.com/libp2p/go-libp2p-record v0.3.1/go.mod h1:T8itUkLcWQLCYMqtX7Th6r7SexyUJpIyPgks757td/E=
github.com/libp2p/go-libp2p-routing-helpers v0.7.5 h1:HdwZj9NKovMx0vqq6YNPTh6aaNzey5zHD7HeLJtq6fI=
@@ -673,6 +693,8 @@ github.com/libp2p/go-yamux/v5 v5.0.1 h1:f0WoX/bEF2E8SbE4c/k1Mo+/9z0O4oC/hWEA+nfY
github.com/libp2p/go-yamux/v5 v5.0.1/go.mod h1:en+3cdX51U0ZslwRdRLrvQsdayFt3TSUKvBGErzpWbU=
github.com/linode/linodego v1.66.0 h1:rK8QJFaV53LWOEJvb/evhTg/dP5ElvtuZmx4iv4RJds=
github.com/linode/linodego v1.66.0/go.mod h1:12ykGs9qsvxE+OU3SXuW2w+DTruWF35FPlXC7gGk2tU=
+github.com/lmittmann/tint v1.1.3 h1:Hv4EaHWXQr+GTFnOU4VKf8UvAtZgn0VuKT+G0wFlO3I=
+github.com/lmittmann/tint v1.1.3/go.mod h1:HIS3gSy7qNwGCj+5oRjAutErFBl4BzdQP6cJZ0NfMwE=
github.com/lucasb-eyer/go-colorful v1.4.0 h1:UtrWVfLdarDgc44HcS7pYloGHJUjHV/4FwW4TvVgFr4=
github.com/lucasb-eyer/go-colorful v1.4.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/macabu/inamedparam v0.2.0 h1:VyPYpOc10nkhI2qeNUdh3Zket4fcZjEWe35poddBCpE=
@@ -995,8 +1017,8 @@ github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpR
github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY=
github.com/tetafro/godot v1.5.6 h1:IEkrFCwXaYHlOn4mGzGS3F3dkP6m9t0jpwqBFPIkKiA=
github.com/tetafro/godot v1.5.6/go.mod h1:eOkMrVQurDui411nBY2FA05EYH01r14LuWY/NrVDVcU=
-github.com/tetratelabs/wazero v1.11.0 h1:+gKemEuKCTevU4d7ZTzlsvgd1uaToIDtlQlmNbwqYhA=
-github.com/tetratelabs/wazero v1.11.0/go.mod h1:eV28rsN8Q+xwjogd7f4/Pp4xFxO7uOGbLcD/LzB1wiU=
+github.com/tetratelabs/wazero v1.12.0 h1:DuWcpNu/FzgEXgGBDp8J1Spc+CWOvvtvVyjKlaZopYU=
+github.com/tetratelabs/wazero v1.12.0/go.mod h1:LvKtzl2RqO4gyF27BiXU+nKAjcV8f38U+kP/q2vgxh0=
github.com/tidwall/btree v1.8.1 h1:27ehoXvm5AG/g+1VxLS1SD3vRhp/H7LuEfwNvddEdmA=
github.com/tidwall/btree v1.8.1/go.mod h1:jBbTdUWhSZClZWoDg54VnvV7/54modSOzDN7VXftj1A=
github.com/timakin/bodyclose v0.0.0-20260129054331-73d1f95b84b4 h1:SiHe5XLTn9sFWJ5pBwJ5FN/4j34q9ZlOAD//kMoMYp0=
@@ -1110,18 +1132,18 @@ go.opentelemetry.io/collector/processor/xprocessor v0.148.0 h1:v7Qv6k2b2cvgGWuTO
go.opentelemetry.io/collector/processor/xprocessor v0.148.0/go.mod h1:r7ADpSX2nf0rZR9STxh956Qw1740QOWMXLnEM/ZiaF8=
go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.67.0 h1:c9r/G1CSw4dPI1jaNNG9RnQP+q4SvZnHciDQJVIvchU=
go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.67.0/go.mod h1:gO9smoZe9KnZcJCqcB0lMmQ4Z5VEifYmjMTpnwtTSuQ=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 h1:CqXxU8VOmDefoh0+ztfGaymYbhdB/tT3zs79QaZTNGY=
-go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0/go.mod h1:BuhAPThV8PBHBvg8ZzZ/Ok3idOdhWIodywz2xEcRbJo=
-go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
-go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
-go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
-go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
-go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
-go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
-go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
-go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
-go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
-go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 h1:8tvICD4vSTOOsNrsI4Ljf6C+6UKvpTEH5XY3JMoyPoo=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0/go.mod h1:z9+yiacE0IHRqM4qFfkbt/JYlmYXgss8GY/jXoNuPJI=
+go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU=
+go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc=
+go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc=
+go.opentelemetry.io/otel/metric v1.44.0/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo=
+go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58=
+go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0=
+go.opentelemetry.io/otel/sdk/metric v1.44.0 h1:3LlKgI+VjbVsjNRFZJZAJ30WjXC5VkNRks6si09iEfI=
+go.opentelemetry.io/otel/sdk/metric v1.44.0/go.mod h1:5B5pMARnXxKhltooO4xUuCBorl65a4EpnTalObqOigA=
+go.opentelemetry.io/otel/trace v1.44.0 h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk=
+go.opentelemetry.io/otel/trace v1.44.0/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE=
go.opentelemetry.io/proto/slim/otlp v1.10.0 h1:iR97Vs/ZDR+y9TfuP9b1XBtdPWeC+OMslIBmhcLU7jM=
go.opentelemetry.io/proto/slim/otlp v1.10.0/go.mod h1:lV9250stpjYLPNA5viFabIgP2QlUGRT1GdTgAf8SIUk=
go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0 h1:RUF5rO0hAlgiJt1fzQVzcVs3vZVNHIcMLgOgG4rWNcQ=
@@ -1138,8 +1160,8 @@ go.uber.org/fx v1.24.0 h1:wE8mruvpg2kiiL1Vqd0CC+tr0/24XIB10Iwp2lLWzkg=
go.uber.org/fx v1.24.0/go.mod h1:AmDeGyS+ZARGKM4tlH4FY2Jr63VjbEDJHtqXTGP5hbo=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
-go.uber.org/mock v0.5.2 h1:LbtPTcP8A5k9WPXj54PPPbjcI4Y6lhyOZXn+VS7wNko=
-go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o=
+go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y=
+go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=
go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
@@ -1162,8 +1184,8 @@ golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw=
golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk=
-golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a h1:+3jdDGGB8NGb1Zktc737jlt3/A5f6UlwSzmvqUuufxw=
-golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw=
+golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M=
+golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY=
golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358 h1:qWFG1Dj7TBjOjOvhEOkmyGPVoquqUKnIU0lEVLp8xyk=
@@ -1271,10 +1293,10 @@ gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
google.golang.org/api v0.272.0 h1:eLUQZGnAS3OHn31URRf9sAmRk3w2JjMx37d2k8AjJmA=
google.golang.org/api v0.272.0/go.mod h1:wKjowi5LNJc5qarNvDCvNQBn3rVK8nSy6jg2SwRwzIA=
-google.golang.org/genproto/googleapis/api v0.0.0-20260523011958-0a33c5d7ca68 h1:WVVw1Nl19li0fMX++FJ3ye1z9+S1N35QODDy5qpnaXw=
-google.golang.org/genproto/googleapis/api v0.0.0-20260523011958-0a33c5d7ca68/go.mod h1:1dCETSCY2YKZNXQE3h4fun3TYwF5p8jejRKZgfWAgAY=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68 h1:PvEgGJf9C/1u5CHkInMg7UFYYUoiaQmW2LbtH0pjB78=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20260523011958-0a33c5d7ca68/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
+google.golang.org/genproto/googleapis/api v0.0.0-20260610212136-7ab31c22f7ad h1:3iLyITS/sySRwbUKoC7ogfj2Yr1Cjs0pfaRKj5U5HEw=
+google.golang.org/genproto/googleapis/api v0.0.0-20260610212136-7ab31c22f7ad/go.mod h1:KdNqO+rCIWgFumrNBSEDlDNrkrQnpkax7Tv1WxNY8V4=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad h1:45WmJvIV6C2+O/jjLkPUH+F3aOj/1miDoU2DD0+NWbg=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
google.golang.org/grpc v1.82.1 h1:NnAxzGRA0677vCa4BUkOAnO5+FfQqVl9iUXeD0IqcGE=
google.golang.org/grpc v1.82.1/go.mod h1:yzTZ1TB1Z3SG+LIYaI+WiE8D5+PZ3ArnrSp8zF3+/ZA=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.2 h1:rgSNvqscFZ1JgV/4wH5GOsZFSFkR2Eua9As3KIr2LlM=
diff --git a/guide.md b/guide.md
index 1422dc8..1f6cf5e 100644
--- a/guide.md
+++ b/guide.md
@@ -18,6 +18,7 @@ It listens to `gossipsub` traffic from your CL client, forwards it into the mump
- Your beacon node peers with the gateway over libp2p.
- The gateway embeds its own Optimum mump2p host.
+- The mump2p host delegates RLNC coding to a required local `rlnc-server` over shared memory.
- Bootstrap provides peer discovery, registration, fork digest, and telemetry collection.
- Gateways connect directly to other gateways over the mesh.
@@ -56,11 +57,12 @@ The gateway accepts configuration through environment variables as well. Environ
## Startup Flow
-1. The gateway starts its CL-facing libp2p listener.
-2. The gateway resolves the fork digest from Bootstrap.
-3. The gateway registers its advertised Optimum mesh address with Bootstrap.
-4. Bootstrap returns peer addresses for the same chain and cluster.
-5. The gateway joins the mesh and begins forwarding traffic.
+1. The local `rlnc-server` exposes 20 shared-memory lanes named `mump2p-protocol`.
+2. The gateway connects to those lanes and starts its CL-facing libp2p listener.
+3. The gateway resolves the fork digest from Bootstrap.
+4. The gateway registers its advertised Optimum mesh address with Bootstrap.
+5. Bootstrap returns peer addresses for the same chain and cluster.
+6. The gateway joins the mesh and begins forwarding traffic.
## Run from Source
@@ -69,6 +71,11 @@ git clone https://github.com/getoptimum/optimum-gateway
cd optimum-gateway
cp config/sample.app_conf.yml config/app_conf.yml
make build
+
+# terminal 1; builds ./bin/rlnc-server on first use
+make run-rlnc-server
+
+# terminal 2
make run
```
diff --git a/pkg/config/config.go b/pkg/config/config.go
index 73409d5..8e4dba9 100644
--- a/pkg/config/config.go
+++ b/pkg/config/config.go
@@ -18,20 +18,18 @@ import (
)
const (
- DefaultMaxMessageSize int64 = 1024 * 1024 // 1MB
- DefaultRandomMessageSize int64 = 512
- DefaultShardFactor int64 = 4
- DefaultPublisherShardMultiplier float32 = 1.2
- DefaultForwardShardThreshold float32 = 0.75
- DefaultMeshDegreeTarget int64 = 6
- DefaultMeshDegreeMin int64 = 4
- DefaultMeshDegreeMax int64 = 12
- DefaultAggregationIntervalMs int64 = 25
- maxAggregationIntervalMs int64 = 600000 // 10 minutes
- DefaultAttestationSyncChunkSize int = 64
- DefaultAttestationPublishAfterMs int64 = 4000
- DefaultAttestationPublishCapMs int64 = 8000
- DefaultAttestationMaxSlotAge uint64 = 0
+ DefaultMaxMessageSize int64 = 1024 * 1024 // 1MB
+ DefaultRandomMessageSize uint32 = 512
+ DefaultShardFactor uint32 = 4
+ DefaultPublisherShardMultiplier float64 = 1.2
+ DefaultForwardShardThreshold float64 = 0.75
+
+ DefaultAggregationIntervalMs int64 = 25
+ maxAggregationIntervalMs int64 = 600000 // 10 minutes
+ DefaultAttestationSyncChunkSize int = 64
+ DefaultAttestationPublishAfterMs int64 = 4000
+ DefaultAttestationPublishCapMs int64 = 8000
+ DefaultAttestationMaxSlotAge uint64 = 1
)
// AppConfig holds all the configuration for the gateway service
@@ -185,9 +183,6 @@ func (c *AppConfig) InitRuntime(ctx context.Context, log logger.AppLogger, chain
ShardFactor: DefaultShardFactor,
PublisherShardMultiplier: DefaultPublisherShardMultiplier,
ForwardShardThreshold: DefaultForwardShardThreshold,
- MeshDegreeTarget: DefaultMeshDegreeTarget,
- MeshDegreeMin: DefaultMeshDegreeMin,
- MeshDegreeMax: DefaultMeshDegreeMax,
},
ch.String(),
c.GatewayClusterID,
@@ -384,7 +379,7 @@ func (c *AppConfig) LogConfigState() {
logger.WithInt64("mesh_degree_target", optCfg.MeshDegreeTarget),
logger.WithInt64("mesh_degree_min", optCfg.MeshDegreeMin),
logger.WithInt64("mesh_degree_max", optCfg.MeshDegreeMax),
- logger.WithInt64("shard_factor", optCfg.ShardFactor),
+ logger.WithUint64("shard_factor", uint64(optCfg.ShardFactor)),
logger.WithInt64("aggregation_interval_ms", c.aggregationIntervalMs.Load()),
)
}
diff --git a/pkg/entities/mump2p_payload.go b/pkg/entities/mump2p_payload.go
index 24e91da..0a6f38a 100644
--- a/pkg/entities/mump2p_payload.go
+++ b/pkg/entities/mump2p_payload.go
@@ -1,8 +1,8 @@
package entities
import (
+ tracepb "github.com/getoptimum/mump2p-protocol/pkg/pb"
commonentities "github.com/getoptimum/optimum-common/pkg/entities"
- pboptimum "github.com/getoptimum/optimum-p2p/optimum-pubsub/pb"
)
type MumP2PCommand uint8
@@ -16,5 +16,5 @@ const (
type MumP2PResponse struct {
Command MumP2PCommand
Message *commonentities.P2PMessage
- TraceEvent *pboptimum.TraceEvent
+ TraceEvent *tracepb.TraceEvent
}
diff --git a/pkg/entities/trace_events.go b/pkg/entities/trace_events.go
index b2dfc07..4e0f7cb 100644
--- a/pkg/entities/trace_events.go
+++ b/pkg/entities/trace_events.go
@@ -1,55 +1,79 @@
package entities
import (
- commonmaps "github.com/getoptimum/optimum-common/pkg/maps"
- pboptimum "github.com/getoptimum/optimum-p2p/optimum-pubsub/pb"
+ tracepb "github.com/getoptimum/mump2p-protocol/pkg/pb"
+)
+
+// MumP2PTraceEventKind identifies a trace event without depending on a legacy
+// protobuf enum. The mump2p protocol represents events as a oneof.
+type MumP2PTraceEventKind uint8
+
+const (
+ MumP2PTraceEventUnknown MumP2PTraceEventKind = iota
+ MumP2PTraceEventAddPeer
+ MumP2PTraceEventRemovePeer
+ MumP2PTraceEventJoin
+ MumP2PTraceEventLeave
+ MumP2PTraceEventGraft
+ MumP2PTraceEventPrune
+ MumP2PTraceEventRecvRPC
+ MumP2PTraceEventSendRPC
+ MumP2PTraceEventDropRPC
+ MumP2PTraceEventPublishMessage
+ MumP2PTraceEventDeliverMessage
+ MumP2PTraceEventRejectMessage
+ MumP2PTraceEventDuplicateMessage
+ MumP2PTraceEventHelpfulSymbol
+ MumP2PTraceEventRedundantSymbol
+ MumP2PTraceEventInconsistentSymbol
+ MumP2PTraceEventUnnecessarySymbol
)
var (
// TraceEventsMeshTopology are mesh-topology events from mump2p: peer and topic
// membership plus mesh grafting. Moderate frequency. Opt-in via Config.TraceMesh.
- TraceEventsMeshTopology = map[pboptimum.TraceEvent_Type]struct{}{
- pboptimum.TraceEvent_ADD_PEER: {},
- pboptimum.TraceEvent_REMOVE_PEER: {},
- pboptimum.TraceEvent_JOIN: {},
- pboptimum.TraceEvent_LEAVE: {},
- pboptimum.TraceEvent_GRAFT: {},
- pboptimum.TraceEvent_PRUNE: {},
+ TraceEventsMeshTopology = map[MumP2PTraceEventKind]struct{}{
+ MumP2PTraceEventAddPeer: {},
+ MumP2PTraceEventRemovePeer: {},
+ MumP2PTraceEventJoin: {},
+ MumP2PTraceEventLeave: {},
+ MumP2PTraceEventGraft: {},
+ MumP2PTraceEventPrune: {},
}
- // TraceEventsRPC are the RPC traffic events from optimum p2p. These are the FIREHOSE
- // (RECV_RPC/SEND_RPC fire on every RPC), kept as their own category so topology can be
+ // TraceEventsRPC are the RPC traffic events from mump2p. These are the firehose
+ // (RecvRpc/SendRpc fire on every RPC), kept as their own category so topology can be
// observed without the RPC volume. Opt-in via Config.TraceRPC.
- TraceEventsRPC = map[pboptimum.TraceEvent_Type]struct{}{
- pboptimum.TraceEvent_RECV_RPC: {},
- pboptimum.TraceEvent_SEND_RPC: {},
- pboptimum.TraceEvent_DROP_RPC: {},
+ TraceEventsRPC = map[MumP2PTraceEventKind]struct{}{
+ MumP2PTraceEventRecvRPC: {},
+ MumP2PTraceEventSendRPC: {},
+ MumP2PTraceEventDropRPC: {},
}
- // TraceEventsShard are shard/RLNC-behavior events from optimum p2p. Message-dependent:
+ // TraceEventsShard are shard/RLNC-behavior events from mump2p. Message-dependent:
// the message lifecycle (publish/deliver/reject/duplicate) plus the RLNC shard
// coding/decoding efficiency events. Opt-in via Config.TraceShard.
- TraceEventsShard = map[pboptimum.TraceEvent_Type]struct{}{
- pboptimum.TraceEvent_PUBLISH_MESSAGE: {},
- pboptimum.TraceEvent_DELIVER_MESSAGE: {},
- pboptimum.TraceEvent_REJECT_MESSAGE: {},
- pboptimum.TraceEvent_DUPLICATE_MESSAGE: {},
- pboptimum.TraceEvent_NEW_SHARD: {},
- pboptimum.TraceEvent_DUPLICATE_SHARD: {},
- pboptimum.TraceEvent_UNHELPFUL_SHARD: {},
- pboptimum.TraceEvent_UNNECESSARY_SHARD: {},
+ TraceEventsShard = map[MumP2PTraceEventKind]struct{}{
+ MumP2PTraceEventPublishMessage: {},
+ MumP2PTraceEventDeliverMessage: {},
+ MumP2PTraceEventRejectMessage: {},
+ MumP2PTraceEventDuplicateMessage: {},
+ MumP2PTraceEventHelpfulSymbol: {},
+ MumP2PTraceEventRedundantSymbol: {},
+ MumP2PTraceEventInconsistentSymbol: {},
+ MumP2PTraceEventUnnecessarySymbol: {},
}
)
-// OptimumTraceEventSet returns the set of optimum p2p trace events to broadcast to
+// OptimumTraceEventSet returns the set of mump2p trace events to broadcast to
// listeners given the enabled categories. Shard metrics always run regardless of this
// set; it only controls which raw events are fanned out over the broadcaster. With all
// categories disabled the set is empty and no raw trace events are broadcast.
-func OptimumTraceEventSet(mesh, rpc, shard bool) map[pboptimum.TraceEvent_Type]struct{} {
- set := make(map[pboptimum.TraceEvent_Type]struct{})
- add := func(events map[pboptimum.TraceEvent_Type]struct{}) {
- for _, t := range commonmaps.MapKeys(events) {
- set[t] = struct{}{}
+func OptimumTraceEventSet(mesh, rpc, shard bool) map[MumP2PTraceEventKind]struct{} {
+ set := make(map[MumP2PTraceEventKind]struct{})
+ add := func(events map[MumP2PTraceEventKind]struct{}) {
+ for kind := range events {
+ set[kind] = struct{}{}
}
}
if mesh {
@@ -63,3 +87,49 @@ func OptimumTraceEventSet(mesh, rpc, shard bool) map[pboptimum.TraceEvent_Type]s
}
return set
}
+
+// MumP2PTraceEventKindOf classifies a protocol trace event by its oneof wrapper.
+func MumP2PTraceEventKindOf(evt *tracepb.TraceEvent) MumP2PTraceEventKind {
+ if evt == nil {
+ return MumP2PTraceEventUnknown
+ }
+
+ switch evt.GetEvent().(type) {
+ case *tracepb.TraceEvent_AddPeer:
+ return MumP2PTraceEventAddPeer
+ case *tracepb.TraceEvent_RemovePeer:
+ return MumP2PTraceEventRemovePeer
+ case *tracepb.TraceEvent_Join:
+ return MumP2PTraceEventJoin
+ case *tracepb.TraceEvent_Leave:
+ return MumP2PTraceEventLeave
+ case *tracepb.TraceEvent_Graft:
+ return MumP2PTraceEventGraft
+ case *tracepb.TraceEvent_Prune:
+ return MumP2PTraceEventPrune
+ case *tracepb.TraceEvent_RecvRpc:
+ return MumP2PTraceEventRecvRPC
+ case *tracepb.TraceEvent_SendRpc:
+ return MumP2PTraceEventSendRPC
+ case *tracepb.TraceEvent_DropRpc:
+ return MumP2PTraceEventDropRPC
+ case *tracepb.TraceEvent_PublishMessage:
+ return MumP2PTraceEventPublishMessage
+ case *tracepb.TraceEvent_DeliverMessage:
+ return MumP2PTraceEventDeliverMessage
+ case *tracepb.TraceEvent_RejectMessage:
+ return MumP2PTraceEventRejectMessage
+ case *tracepb.TraceEvent_DuplicateMessage:
+ return MumP2PTraceEventDuplicateMessage
+ case *tracepb.TraceEvent_HelpfulSymbol:
+ return MumP2PTraceEventHelpfulSymbol
+ case *tracepb.TraceEvent_RedundantSymbol:
+ return MumP2PTraceEventRedundantSymbol
+ case *tracepb.TraceEvent_InconsistentSymbol:
+ return MumP2PTraceEventInconsistentSymbol
+ case *tracepb.TraceEvent_UnnecessarySymbol:
+ return MumP2PTraceEventUnnecessarySymbol
+ default:
+ return MumP2PTraceEventUnknown
+ }
+}
diff --git a/pkg/entities/trace_events_test.go b/pkg/entities/trace_events_test.go
index 24ea070..81f595d 100644
--- a/pkg/entities/trace_events_test.go
+++ b/pkg/entities/trace_events_test.go
@@ -5,31 +5,65 @@ import (
"github.com/stretchr/testify/require"
- pboptimum "github.com/getoptimum/optimum-p2p/optimum-pubsub/pb"
+ tracepb "github.com/getoptimum/mump2p-protocol/pkg/pb"
)
func TestTraceCategories_AreDisjoint(t *testing.T) {
- seen := make(map[pboptimum.TraceEvent_Type]string)
- for name, set := range map[string]map[pboptimum.TraceEvent_Type]struct{}{
+ seen := make(map[MumP2PTraceEventKind]string)
+ for name, set := range map[string]map[MumP2PTraceEventKind]struct{}{
"mesh": TraceEventsMeshTopology,
"rpc": TraceEventsRPC,
"shard": TraceEventsShard,
} {
for ev := range set {
other, dup := seen[ev]
- require.Falsef(t, dup, "event %s is in both %s and %s categories", ev, other, name)
+ require.Falsef(t, dup, "event %v is in both %s and %s categories", ev, other, name)
seen[ev] = name
}
}
}
+func TestMumP2PTraceEventKindOf(t *testing.T) {
+ tests := []struct {
+ name string
+ evt *tracepb.TraceEvent
+ want MumP2PTraceEventKind
+ }{
+ {"add peer", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_AddPeer{}}, MumP2PTraceEventAddPeer},
+ {"remove peer", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_RemovePeer{}}, MumP2PTraceEventRemovePeer},
+ {"join", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_Join{}}, MumP2PTraceEventJoin},
+ {"leave", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_Leave{}}, MumP2PTraceEventLeave},
+ {"graft", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_Graft{}}, MumP2PTraceEventGraft},
+ {"prune", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_Prune{}}, MumP2PTraceEventPrune},
+ {"receive RPC", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_RecvRpc{}}, MumP2PTraceEventRecvRPC},
+ {"send RPC", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_SendRpc{}}, MumP2PTraceEventSendRPC},
+ {"drop RPC", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_DropRpc{}}, MumP2PTraceEventDropRPC},
+ {"publish message", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_PublishMessage{}}, MumP2PTraceEventPublishMessage},
+ {"deliver message", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_DeliverMessage{}}, MumP2PTraceEventDeliverMessage},
+ {"reject message", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_RejectMessage{}}, MumP2PTraceEventRejectMessage},
+ {"duplicate message", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_DuplicateMessage{}}, MumP2PTraceEventDuplicateMessage},
+ {"helpful symbol", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_HelpfulSymbol{}}, MumP2PTraceEventHelpfulSymbol},
+ {"redundant symbol", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_RedundantSymbol{}}, MumP2PTraceEventRedundantSymbol},
+ {"inconsistent symbol", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_InconsistentSymbol{}}, MumP2PTraceEventInconsistentSymbol},
+ {"unnecessary symbol", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_UnnecessarySymbol{}}, MumP2PTraceEventUnnecessarySymbol},
+ {"unset", &tracepb.TraceEvent{}, MumP2PTraceEventUnknown},
+ {"unsupported", &tracepb.TraceEvent{Event: &tracepb.TraceEvent_EncodeError{}}, MumP2PTraceEventUnknown},
+ }
+
+ for _, tc := range tests {
+ t.Run(tc.name, func(t *testing.T) {
+ require.Equal(t, tc.want, MumP2PTraceEventKindOf(tc.evt))
+ })
+ }
+}
+
func TestOptimumTraceEventSet(t *testing.T) {
tests := []struct {
name string
mesh, rpc, shard bool
wantLen int
- wantContains []pboptimum.TraceEvent_Type
- wantExcludes []pboptimum.TraceEvent_Type
+ wantContains []MumP2PTraceEventKind
+ wantExcludes []MumP2PTraceEventKind
}{
{
name: "all disabled -> empty",
@@ -39,22 +73,22 @@ func TestOptimumTraceEventSet(t *testing.T) {
name: "mesh only",
mesh: true,
wantLen: len(TraceEventsMeshTopology),
- wantContains: []pboptimum.TraceEvent_Type{pboptimum.TraceEvent_GRAFT, pboptimum.TraceEvent_ADD_PEER},
- wantExcludes: []pboptimum.TraceEvent_Type{pboptimum.TraceEvent_RECV_RPC, pboptimum.TraceEvent_NEW_SHARD},
+ wantContains: []MumP2PTraceEventKind{MumP2PTraceEventGraft, MumP2PTraceEventAddPeer},
+ wantExcludes: []MumP2PTraceEventKind{MumP2PTraceEventRecvRPC, MumP2PTraceEventHelpfulSymbol},
},
{
name: "rpc only excludes the firehose from mesh/shard",
rpc: true,
wantLen: len(TraceEventsRPC),
- wantContains: []pboptimum.TraceEvent_Type{pboptimum.TraceEvent_RECV_RPC, pboptimum.TraceEvent_SEND_RPC},
- wantExcludes: []pboptimum.TraceEvent_Type{pboptimum.TraceEvent_GRAFT, pboptimum.TraceEvent_NEW_SHARD},
+ wantContains: []MumP2PTraceEventKind{MumP2PTraceEventRecvRPC, MumP2PTraceEventSendRPC},
+ wantExcludes: []MumP2PTraceEventKind{MumP2PTraceEventGraft, MumP2PTraceEventHelpfulSymbol},
},
{
name: "shard only",
shard: true,
wantLen: len(TraceEventsShard),
- wantContains: []pboptimum.TraceEvent_Type{pboptimum.TraceEvent_NEW_SHARD, pboptimum.TraceEvent_PUBLISH_MESSAGE},
- wantExcludes: []pboptimum.TraceEvent_Type{pboptimum.TraceEvent_GRAFT, pboptimum.TraceEvent_RECV_RPC},
+ wantContains: []MumP2PTraceEventKind{MumP2PTraceEventHelpfulSymbol, MumP2PTraceEventPublishMessage},
+ wantExcludes: []MumP2PTraceEventKind{MumP2PTraceEventGraft, MumP2PTraceEventRecvRPC},
},
{
name: "all enabled -> union of all three",
@@ -70,11 +104,11 @@ func TestOptimumTraceEventSet(t *testing.T) {
require.Len(t, set, tc.wantLen)
for _, ev := range tc.wantContains {
_, ok := set[ev]
- require.Truef(t, ok, "expected set to contain %s", ev)
+ require.Truef(t, ok, "expected set to contain %v", ev)
}
for _, ev := range tc.wantExcludes {
_, ok := set[ev]
- require.Falsef(t, ok, "expected set to NOT contain %s", ev)
+ require.Falsef(t, ok, "expected set to NOT contain %v", ev)
}
})
}
diff --git a/pkg/service/aggregator/attestation_packer_test.go b/pkg/service/aggregator/attestation_packer_test.go
index 69e50ba..9e31ccc 100644
--- a/pkg/service/aggregator/attestation_packer_test.go
+++ b/pkg/service/aggregator/attestation_packer_test.go
@@ -25,13 +25,20 @@ const (
func TestPackAttestations(t *testing.T) {
// given
packer := aggregator.NewAttestationPacker(nil)
- data := generateAttestationData(t)
+ dataList := []*consensus.AttestationData{
+ generateAttestationData(t),
+ generateAttestationData(t),
+ generateAttestationData(t),
+ }
+
rawAttestations := make([]*consensus.SingleAttestation, 0, items)
rawAttestationsMap := make(map[string]struct{}, items)
- for range items {
+ for i := range items {
+ data := dataList[i%len(dataList)]
attestation := generateAttestation(t, data)
- require.NoError(t, packer.Add(topics.ParseTopicMeta(generateAttestationTopic(t)), test_utils.SSZSnappyEncode(t, attestation)))
+ topic := generateAttestationTopic(t)
+ require.NoError(t, packer.Add(topics.ParseTopicMeta(topic), test_utils.SSZSnappyEncode(t, attestation)))
rawAttestations = append(rawAttestations, attestation)
encodedAttestation := test_utils.SSZSnappyEncode(t, attestation)
@@ -56,7 +63,7 @@ func TestPackAttestations(t *testing.T) {
require.NoError(t, err)
resultPacked, err := packer.EncodeCurrent()
require.NoError(t, err)
- require.Len(t, resultPacked, 1)
+ require.Len(t, resultPacked, len(dataList), "packed should equal to number of unique slot attestations")
lenNative := len(result)
lenPacked := len(resultPacked)
@@ -77,14 +84,16 @@ func TestPackAttestations(t *testing.T) {
}
})
t.Run("packed attestations should be restored", func(t *testing.T) {
- require.True(t, bytes.HasPrefix(resultPacked[0], aggregator.PrefixPacker))
- decodedPacked, errD := packer.Decode(testForkDigest, resultPacked[0][len(aggregator.PrefixPacker):])
- require.NoError(t, errD)
-
- for topic := range decodedPacked {
- for _, sszMessage := range decodedPacked[topic] {
- _, ok := rawAttestationsMap[commonhash.SHA256(sszMessage)]
- require.True(t, ok)
+ for i := range resultPacked {
+ require.True(t, bytes.HasPrefix(resultPacked[i], aggregator.PrefixPacker))
+ decodedPacked, errD := packer.Decode(testForkDigest, resultPacked[i][len(aggregator.PrefixPacker):])
+ require.NoError(t, errD)
+
+ for topic := range decodedPacked {
+ for _, sszMessage := range decodedPacked[topic] {
+ _, ok := rawAttestationsMap[commonhash.SHA256(sszMessage)]
+ require.True(t, ok)
+ }
}
}
})
@@ -95,7 +104,9 @@ func TestPackAttestations_SendTsMs(t *testing.T) {
data := generateAttestationData(t)
for range 10 {
- require.NoError(t, packer.Add(topics.ParseTopicMeta(generateAttestationTopic(t)), test_utils.SSZSnappyEncode(t, generateAttestation(t, data))))
+ topic := generateAttestationTopic(t)
+ att := generateAttestation(t, data)
+ require.NoError(t, packer.Add(topics.ParseTopicMeta(topic), test_utils.SSZSnappyEncode(t, att)))
}
beforeEncode := time.Now().UnixMilli()
diff --git a/pkg/service/bootstrapper/beacon_block_measures.go b/pkg/service/bootstrapper/beacon_block_measures.go
index b7adc61..33c4ec5 100644
--- a/pkg/service/bootstrapper/beacon_block_measures.go
+++ b/pkg/service/bootstrapper/beacon_block_measures.go
@@ -1,15 +1,10 @@
package bootstrapper
import (
- "context"
- "time"
-
"github.com/getoptimum/optimum-common/pkg/logger"
- commonnet "github.com/getoptimum/optimum-common/pkg/net"
"github.com/getoptimum/optimum-gateway/pkg/entities"
chainstate "github.com/getoptimum/optimum-gateway/pkg/protocol/chain_state"
"github.com/getoptimum/optimum-gateway/pkg/service/telemetry"
- "github.com/getoptimum/optimum-gateway/pkg/utils"
)
// blockArrival carries a beacon block observation off the gateway forwarding
@@ -24,55 +19,12 @@ type blockArrival struct {
upstreamPeerID string
}
-func (s *Service) bgHandleSendSlots() {
- for slot := range s.sendSlotsChan {
- s.sendTrackedSlots(slot)
- }
-}
-
func (s *Service) bgHandleBlockEvents() {
for ev := range s.blockEvents {
s.composeBlockTelemetry(ev)
}
}
-// sendTrackedSlots sends the latency comparator data for a given slot to a remote URL for further analysis.
-// on any changes we just send updated data to remote server.
-// we do not wait for response or care about errors here, as this is best-effort telemetry data.
-// as we use TTL map, old slots will be removed automatically.
-// also TTL map is sequence change operations, so we may expect that each next call will have latest data.
-func (s *Service) sendTrackedSlots(slot uint64) {
- l := s.log.With(logger.WithUint64("slot", slot))
- var data entities.LatencyComparator
- // do and apply is used to get latest data for slot, as we may have multiple updates for same slot.
- ok := s.trackedSlots.DoAndApply(slot, func(v *entities.LatencyComparator) *entities.LatencyComparator {
- data = *v
- return v
- })
- if !ok {
- l.Info("no tracked data for slot")
- return
- }
-
- ctx, cancel := context.WithTimeout(s.ctx, 5*time.Second)
- defer cancel()
- url := utils.BootstrapHandleBlockLatencyURL(s.cfg.RemoteBootstrapURL)
- _, code, err := commonnet.PostCurl[any](ctx, url, data, s.bearerAuthHeader(ctx))
- if utils.IsPostSuccess(code) {
- return
- }
- l.Error("failed to send tracked slot data", err, logger.WithInt("code", code))
-}
-
-// enqueueSlotForTracking enqueues slot export without blocking the CL/mump2p path.
-func (s *Service) enqueueSlotForTracking(slot uint64) {
- select {
- case s.sendSlotsChan <- slot:
- default:
- s.log.Debug("sendSlotsChan is full, skipping sending slot for latency tracking", logger.WithUint64("slot", slot))
- }
-}
-
func (s *Service) RecordMumPublishedAt(slot uint64, publishedAt int64) {
if !s.cfg.TelemetryEnable || slot == 0 {
return
@@ -88,7 +40,7 @@ func (s *Service) RecordMumPublishedAt(slot uint64, publishedAt int64) {
SlotTime: chainstate.SlotStartTime(slot).UnixMilli(),
MumPublishedAtMs: publishedAt,
})
- s.enqueueSlotForTracking(slot)
+ s.enqueueBlockLatencyExport(slot)
}
// HandleBeaconBlock records a beacon block observation without blocking the
@@ -164,5 +116,5 @@ func (s *Service) composeBlockTelemetry(ev *blockArrival) {
if firstForSlot {
telemetry.IncBlocksFirstSeen(ev.source)
}
- s.enqueueSlotForTracking(ev.slot)
+ s.enqueueBlockLatencyExport(ev.slot)
}
diff --git a/pkg/service/bootstrapper/beacon_block_measures_test.go b/pkg/service/bootstrapper/beacon_block_measures_test.go
index 8f50641..b460b33 100644
--- a/pkg/service/bootstrapper/beacon_block_measures_test.go
+++ b/pkg/service/bootstrapper/beacon_block_measures_test.go
@@ -10,21 +10,11 @@ import (
chainstate "github.com/getoptimum/optimum-gateway/pkg/protocol/chain_state"
)
-func TestRecordMumPublishedAtChanOverflow(t *testing.T) {
+func TestRecordMumPublishedAtDoesNotBlock(t *testing.T) {
srv, _, _ := getTestSrv(t)
- done := make(chan struct{})
- go func() {
- defer close(done)
- n := time.Now()
- for i := range uint64(1000) {
- srv.RecordMumPublishedAt(i, n.Unix())
- }
- }()
-
- select {
- case <-done:
- case <-time.After(5 * time.Second):
- t.Fatal("timeout")
+ n := time.Now().Unix()
+ for i := range uint64(1000) {
+ srv.RecordMumPublishedAt(i, n)
}
}
@@ -53,9 +43,8 @@ func TestRecordMumPublishedAt(t *testing.T) {
require.Equal(t, int64(444), req.Payload.MumPublishedAtMs)
}
-func TestSendTrackedSlotsEmitsLatestSameSlotValue(t *testing.T) {
- srv, bootstrap, cfg := getTestSrv(t)
- cfg.TelemetryEnable = true
+func TestBlockLatencyExportEmitsLatestSameSlotValue(t *testing.T) {
+ srv, bootstrap, _ := getTestSrv(t)
const slot = uint64(128)
srv.RecordMumPublishedAt(slot, 100)
@@ -79,6 +68,36 @@ func TestSendTrackedSlotsEmitsLatestSameSlotValue(t *testing.T) {
require.Equal(t, int64(300), last, "settled emission must carry the latest same-slot value")
}
+func TestBlockLatencyExportRetriesThenRecovers(t *testing.T) {
+ srv, bootstrap, _ := getTestSrv(t)
+ bootstrap.SetBlockLatencyStatus(521)
+
+ const slot = uint64(700)
+ srv.RecordMumPublishedAt(slot, 100)
+
+ a1 := bootstrap.WaitBlockLatencyRequest(t, 5*time.Second)
+ require.Equal(t, slot, a1.Payload.BlockSlot)
+ a2 := bootstrap.WaitBlockLatencyRequest(t, 5*time.Second)
+ require.Equal(t, slot, a2.Payload.BlockSlot)
+
+ bootstrap.SetBlockLatencyStatus(0)
+ req := bootstrap.WaitBlockLatencyRequest(t, 20*time.Second)
+ require.Equal(t, slot, req.Payload.BlockSlot)
+ bootstrap.AssertNoBlockLatencyRequest(t, 2500*time.Millisecond)
+}
+
+func TestBlockLatencyExportTerminalResponseIsNotRetried(t *testing.T) {
+ srv, bootstrap, _ := getTestSrv(t)
+ bootstrap.SetBlockLatencyStatus(400)
+
+ const slot = uint64(800)
+ srv.RecordMumPublishedAt(slot, 100)
+
+ req := bootstrap.WaitBlockLatencyRequest(t, 5*time.Second)
+ require.Equal(t, slot, req.Payload.BlockSlot)
+ bootstrap.AssertNoBlockLatencyRequest(t, 2500*time.Millisecond)
+}
+
func TestHandleBeaconBlock(t *testing.T) {
srv, bootstrap, cfg := getTestSrv(t)
srv.SetGatewayPeerIDStr("self-peer")
diff --git a/pkg/service/bootstrapper/block_latency_exporter.go b/pkg/service/bootstrapper/block_latency_exporter.go
new file mode 100644
index 0000000..ba717a9
--- /dev/null
+++ b/pkg/service/bootstrapper/block_latency_exporter.go
@@ -0,0 +1,91 @@
+package bootstrapper
+
+import (
+ "context"
+ "time"
+
+ "github.com/getoptimum/optimum-common/pkg/logger"
+ commonnet "github.com/getoptimum/optimum-common/pkg/net"
+ commonslices "github.com/getoptimum/optimum-common/pkg/slices"
+ "github.com/getoptimum/optimum-gateway/pkg/entities"
+ "github.com/getoptimum/optimum-gateway/pkg/service/telemetry"
+ "github.com/getoptimum/optimum-gateway/pkg/utils"
+)
+
+// Snapshots sit on resendList and are flushed once per exportRetryWait so the
+// forwarding path never waits on bootstrap. Tunables are vars so tests can
+// shorten them.
+var (
+ exportMaxPending = 256
+ exportChunkSize = 25
+ exportReqTimeout = 5 * time.Second
+ exportRetryWait = time.Minute
+)
+
+func (s *Service) enqueueBlockLatencyExport(slot uint64) {
+ v, ok := s.trackedSlots.Get(slot)
+ if !ok || v == nil {
+ return
+ }
+ s.resendList.Add(*v)
+}
+
+func (s *Service) runBlockLatencyExporter() {
+ t := time.NewTicker(exportRetryWait)
+ defer t.Stop()
+ for {
+ select {
+ case <-s.ctx.Done():
+ return
+ case <-t.C:
+ s.exportSend()
+ }
+ }
+}
+
+func (s *Service) exportSend() {
+ items := s.takeResendBatch()
+ if len(items) == 0 {
+ return
+ }
+ url := utils.BootstrapHandleBlockLatencyBulkURL(s.cfg.RemoteBootstrapURL)
+ chunks := commonslices.ChunkSlice(items, exportChunkSize)
+ for i, chunk := range chunks {
+ ctx, cancel := context.WithTimeout(s.ctx, exportReqTimeout)
+ _, code, err := commonnet.PostCurl[any](ctx, url, chunk, s.bearerAuthHeader(ctx))
+ cancel()
+ switch {
+ case utils.IsPostSuccess(code):
+ telemetry.RecordBlockLatencyExport(telemetry.ExportResultSuccess)
+ case isRetryableExportCode(code):
+ s.requeue(items[i*exportChunkSize:])
+ telemetry.RecordBlockLatencyExport(telemetry.ExportResultTransient)
+ telemetry.RecordBlockLatencyExportTransientCode(code)
+ s.log.Debug("block latency bulk export failed, will retry", logger.WithInt("n", len(chunk)), logger.WithInt("code", code), logger.WithAny("err", err))
+ return
+ default:
+ telemetry.RecordBlockLatencyExport(telemetry.ExportResultTerminal)
+ s.log.Debug("block latency bulk export dropped (non-retryable response)", logger.WithInt("n", len(chunk)), logger.WithInt("code", code), logger.WithAny("err", err))
+ }
+ }
+}
+
+func (s *Service) takeResendBatch() []entities.LatencyComparator {
+ items := s.resendList.LoadAndErase()
+ if len(items) > exportMaxPending {
+ telemetry.RecordBlockLatencyExport(telemetry.ExportResultOverflow)
+ return commonslices.KeepLast(items, exportMaxPending)
+ }
+ return items
+}
+
+// requeue puts failed items in front of anything that arrived during the POST
+// so later snapshots for the same slot still win at bootstrap.
+func (s *Service) requeue(failed []entities.LatencyComparator) {
+ newer := s.resendList.LoadAndErase()
+ s.resendList.AddBulk(append(append([]entities.LatencyComparator{}, failed...), newer...))
+}
+
+func isRetryableExportCode(code int) bool {
+ return code == 0 || code == 408 || code == 429 || code == 521 || (code >= 500 && code <= 599)
+}
diff --git a/pkg/service/bootstrapper/block_latency_exporter_internal_test.go b/pkg/service/bootstrapper/block_latency_exporter_internal_test.go
new file mode 100644
index 0000000..24ad950
--- /dev/null
+++ b/pkg/service/bootstrapper/block_latency_exporter_internal_test.go
@@ -0,0 +1,68 @@
+package bootstrapper
+
+import (
+ "context"
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/require"
+
+ "github.com/getoptimum/optimum-common/pkg/logger"
+ "github.com/getoptimum/optimum-common/pkg/syncx"
+ "github.com/getoptimum/optimum-gateway/pkg/entities"
+)
+
+func init() {
+ exportRetryWait = 50 * time.Millisecond
+}
+
+func newExportTestService() *Service {
+ return &Service{
+ log: logger.NewAppSLogger(logger.Error, logger.WithService("bootstrapper-test")),
+ resendList: syncx.NewRWSlice[entities.LatencyComparator](),
+ }
+}
+
+func TestIsRetryableExportCode(t *testing.T) {
+ for _, code := range []int{0, 408, 429, 500, 502, 503, 504, 521} {
+ require.Truef(t, isRetryableExportCode(code), "code %d should be retryable", code)
+ }
+ for _, code := range []int{400, 401, 403, 404, 409, 422} {
+ require.Falsef(t, isRetryableExportCode(code), "code %d should be terminal", code)
+ }
+}
+
+func TestTakeResendBatchKeepsNewest(t *testing.T) {
+ old := exportMaxPending
+ exportMaxPending = 4
+ defer func() { exportMaxPending = old }()
+
+ s := newExportTestService()
+ for slot := uint64(1); slot <= 10; slot++ {
+ s.resendList.Add(entities.LatencyComparator{BlockSlot: slot})
+ }
+
+ got := s.takeResendBatch()
+ require.Len(t, got, 4)
+ require.Equal(t, uint64(7), got[0].BlockSlot)
+ require.Equal(t, uint64(10), got[3].BlockSlot)
+}
+
+func TestRunBlockLatencyExporterStopsPromptlyOnCancel(t *testing.T) {
+ ctx, cancel := context.WithCancel(context.Background())
+ s := newExportTestService()
+ s.ctx = ctx
+
+ done := make(chan struct{})
+ go func() {
+ s.runBlockLatencyExporter()
+ close(done)
+ }()
+
+ cancel()
+ select {
+ case <-done:
+ case <-time.After(2 * time.Second):
+ t.Fatal("exporter did not stop promptly on context cancellation")
+ }
+}
diff --git a/pkg/service/bootstrapper/service.go b/pkg/service/bootstrapper/service.go
index 5eb5eb4..6a93c69 100644
--- a/pkg/service/bootstrapper/service.go
+++ b/pkg/service/bootstrapper/service.go
@@ -38,9 +38,11 @@ type Service struct {
srvForkMgr *forks.Service
nodeMumP2PStr string // This gateway's mump2p peer ID
- sendSlotsChan chan uint64
blockEvents chan *blockArrival
trackedSlots *syncx.TTLMap[uint64, *entities.LatencyComparator]
+
+ // queued block-latency snapshots, flushed in bulk once a minute
+ resendList *syncx.RWSlice[entities.LatencyComparator]
}
func NewService(
@@ -57,11 +59,12 @@ func NewService(
authMgr: authMgr,
srvForkMgr: srvForkMgr,
- sendSlotsChan: make(chan uint64, 100),
- blockEvents: make(chan *blockArrival, 1024),
- trackedSlots: syncx.NewTTLMap[uint64, *entities.LatencyComparator](5*time.Minute, 1*time.Minute),
+ blockEvents: make(chan *blockArrival, 1024),
+ trackedSlots: syncx.NewTTLMap[uint64, *entities.LatencyComparator](5*time.Minute, 1*time.Minute),
+
+ resendList: syncx.NewRWSlice[entities.LatencyComparator](),
}
- go srv.bgHandleSendSlots()
+ go srv.runBlockLatencyExporter()
go srv.bgHandleBlockEvents()
return srv
}
@@ -98,7 +101,8 @@ func (s *Service) RegisterAndGetMumP2PPeers() ([]string, error) {
// we can't get info from bootstrap server - either protocol changed or server is down
if registerResult != nil {
payloadBytes, _ := json.Marshal(payload)
- s.log.Info("response from bootstrap server",
+ s.log.Info(
+ "response from bootstrap server",
logger.WithString("payload", string(payloadBytes)),
logger.WithString("response", fmt.Sprintf("%v", *registerResult)),
)
@@ -111,7 +115,8 @@ func (s *Service) RegisterAndGetMumP2PPeers() ([]string, error) {
return nil, fmt.Errorf("failed to register mump2p peers from bootstrap server")
}
} else {
- s.log.Info("registered gateway to bootstrap server",
+ s.log.Info(
+ "registered gateway to bootstrap server",
logger.WithString("public_ip", publicIP),
logger.WithString("predicted_peer_id", predictedAddress.ID.String()),
)
@@ -129,7 +134,8 @@ func (s *Service) RegisterAndGetMumP2PPeers() ([]string, error) {
// we can skip such nodes, but we just log error here
addr, err := commonnet.AddressInfoFromString(gateway.P2PAddr)
if err != nil {
- s.log.Error("invalid mump2p_addr from bootstrap server, skipping this node",
+ s.log.Error(
+ "invalid mump2p_addr from bootstrap server, skipping this node",
fmt.Errorf("gateway_id: %s, mump2p_addr: %s, error: %w", gateway.GatewayID, gateway.P2PAddr, err),
)
continue
@@ -158,7 +164,8 @@ func (s *Service) predictMumP2PAddrInfo() (peerInfo peer.AddrInfo, publicIP stri
return peer.AddrInfo{}, "", fmt.Errorf("unable to get any IP address: %w", err)
}
}
- s.log.Info("public IP address detected from prediction",
+ s.log.Info(
+ "public IP address detected from prediction",
logger.WithString("public_ip", publicIPV4),
logger.WithString("public_ip_v6", publicIPV6),
)
diff --git a/pkg/service/gossipsub-gateway/messages_proxy.go b/pkg/service/gossipsub-gateway/messages_proxy.go
index d31fbf3..e72b158 100644
--- a/pkg/service/gossipsub-gateway/messages_proxy.go
+++ b/pkg/service/gossipsub-gateway/messages_proxy.go
@@ -1,8 +1,11 @@
package gossipsub_gateway
import (
+ "encoding/hex"
+ "fmt"
"time"
+ "github.com/getoptimum/mump2p-protocol/pkg/engine"
commonentities "github.com/getoptimum/optimum-common/pkg/entities"
commonhash "github.com/getoptimum/optimum-common/pkg/hash"
"github.com/getoptimum/optimum-common/pkg/logger"
@@ -49,6 +52,13 @@ func (s *Service) processCLBeaconBlock(l logger.AppLogger, msg *entities.CLMessa
if s.nodeMumP2P == nil {
return
}
+ if engine.IsRLNC(msg.Message) {
+ l.Error(
+ "CL beacon block payload starts with RLNC magic byte",
+ fmt.Errorf("RLNC magic byte: %x", msg.Message[0]),
+ logger.WithString("payload_prefix", hex.EncodeToString(msg.Message[:min(len(msg.Message), 8)])),
+ )
+ }
publishedAt := time.Now().UnixMilli()
if err := s.nodeMumP2P.PublishMessage(s.ctx, msg.Topic, msg.Message); err != nil {
telemetry.IncreaseBadMessagesToMum()
@@ -73,6 +83,7 @@ func (s *Service) processCLAttestation(l logger.AppLogger, msg *entities.CLMessa
if !s.srvMsgRouter.ShouldForwardMessageToMumP2P(l, meta.Kind, msg.Topic, msg.Message) {
return
}
+ s.log.Info("processing attestation message from CL", logger.WithTopic(msg.Topic), logger.WithInt("size", len(msg.Message)))
s.aggregatorMessages.Enqueue(msg.Topic, meta, msg.Message)
}
diff --git a/pkg/service/gossipsub-gateway/messages_proxy_aggregated.go b/pkg/service/gossipsub-gateway/messages_proxy_aggregated.go
index a3af31b..88b11b1 100644
--- a/pkg/service/gossipsub-gateway/messages_proxy_aggregated.go
+++ b/pkg/service/gossipsub-gateway/messages_proxy_aggregated.go
@@ -109,6 +109,7 @@ func (s *Service) handleAggregatedMessages(l logger.AppLogger, message *commonen
telemetry.IncreaseBadMessagesToCL()
l.Error("failed to publish aggregated message to CL", err)
}
+ telemetry.IncAttestationForwarded(entities.SourceLibP2P)
}
}
}
diff --git a/pkg/service/gossipsub-gateway/setup_mump2p_host.go b/pkg/service/gossipsub-gateway/setup_mump2p_host.go
index 77fe8dc..cf64e17 100644
--- a/pkg/service/gossipsub-gateway/setup_mump2p_host.go
+++ b/pkg/service/gossipsub-gateway/setup_mump2p_host.go
@@ -21,21 +21,14 @@ func (s *Service) setupMumP2PHost() error {
}
s.log.Info("setting mump2p host")
optCfg := &mum_p2p.Config{
- ListenPort: s.cfg.AgentMumP2PPort,
- MaxMessageSize: config.DefaultMaxMessageSize,
- RandomMessageSize: config.DefaultRandomMessageSize,
- ShardFactor: int(config.DefaultShardFactor),
- PublisherShardMultiplier: config.DefaultPublisherShardMultiplier,
- ForwardShardThreshold: config.DefaultForwardShardThreshold,
- MeshDegreeTarget: int(config.DefaultMeshDegreeTarget),
- MeshDegreeMin: int(config.DefaultMeshDegreeMin),
- MeshDegreeMax: int(config.DefaultMeshDegreeMax),
- BootstrapPeers: filtered,
- ClusterID: s.cfg.GatewayClusterID,
- Rotator: s.cfg.GetDCRotator(),
- TraceMesh: s.cfg.TraceMesh,
- TraceRPC: s.cfg.TraceRPC,
- TraceShard: s.cfg.TraceShard,
+ ListenPort: s.cfg.AgentMumP2PPort,
+ MaxMessageSize: config.DefaultMaxMessageSize,
+ BootstrapPeers: filtered,
+ ClusterID: s.cfg.GatewayClusterID,
+ Rotator: s.cfg.GetDCRotator(),
+ TraceMesh: s.cfg.TraceMesh,
+ TraceRPC: s.cfg.TraceRPC,
+ TraceShard: s.cfg.TraceShard,
}
if s.customMumP2PConnectionGater != nil {
optCfg.CustomConnectionGater = s.customMumP2PConnectionGater
@@ -43,7 +36,7 @@ func (s *Service) setupMumP2PHost() error {
s.nodeMumP2P, err = mum_p2p.NewNode(
s.ctx,
- s.log.With(logger.WithService("mump2p")),
+ s.log,
optCfg,
s.cfg.IdentityMumP2PDir,
mum_p2p.WithCustomHandshakeBuilder(s.handshakeBuilder),
diff --git a/pkg/service/message_router/service.go b/pkg/service/message_router/service.go
index 31bcb67..311536f 100644
--- a/pkg/service/message_router/service.go
+++ b/pkg/service/message_router/service.go
@@ -2,6 +2,7 @@ package message_router
import (
"context"
+ "fmt"
"time"
commonentities "github.com/getoptimum/optimum-common/pkg/entities"
@@ -10,6 +11,7 @@ import (
"github.com/getoptimum/optimum-gateway/pkg/config"
"github.com/getoptimum/optimum-gateway/pkg/entities"
chainstate "github.com/getoptimum/optimum-gateway/pkg/protocol/chain_state"
+ "github.com/getoptimum/optimum-gateway/pkg/protocol/consensus"
"github.com/getoptimum/optimum-gateway/pkg/protocol/topics"
"github.com/getoptimum/optimum-gateway/pkg/service/auth_token"
"github.com/getoptimum/optimum-gateway/pkg/service/telemetry"
@@ -43,6 +45,8 @@ func NewService(ctx context.Context, cfg *config.AppConfig, log logger.AppLogger
return srv, nil
}
+var slotRoots = syncx.NewTTLMap[uint64, [32]byte](1*time.Minute, 12*time.Second)
+
// ShouldForwardMessageToMumP2P decides whether the gateway may fan out a locally-produced CL message into MumP2P
func (s *Service) ShouldForwardMessageToMumP2P(l logger.AppLogger, kind topics.TopicKind, srcTopic string, payload []byte) bool {
if kind == topics.TopicBeaconBlock {
@@ -62,24 +66,50 @@ func (s *Service) ShouldForwardMessageToMumP2P(l logger.AppLogger, kind topics.T
return false
}
telemetry.IncAttestationEvaluated()
- attester, slot, err := utils.ParseAttestationSSZTopic(payload)
- if err != nil {
+
+ var att consensus.SingleAttestation
+ if err := (&consensus.SSZSnappyCodec{}).DecodeGossip(payload, &att); err != nil {
l.Error("unable to parse attestation topic", err, logger.WithString("topic_meta", kind.String()))
telemetry.IncAttestationDropped("parse_error")
telemetry.IncParseSSZError(srcTopic, entities.SourceLibP2P)
return false
}
- diff := utils.DiffUint64(slot, chainstate.CurrentSlot(time.Now()))
+ if _, ok := slotRoots.Get(uint64(att.Data.Slot)); !ok {
+ slotRoots.Put(uint64(att.Data.Slot), att.Data.BeaconBlockRoot)
+ }
+ if !s.IsKnownValidator(uint64(att.AttesterIndex)) {
+ telemetry.IncAttestationDropped("rejected")
+ return false
+ }
+
+ diff := utils.DiffUint64(uint64(att.Data.Slot), chainstate.CurrentSlot(time.Now()))
telemetry.ObserveAttestationInclusionDelay(diff)
+
+ if slotBasedOnRoot, ok := slotRoots.Get(uint64(att.Data.Slot)); ok {
+ if slotBasedOnRoot != att.Data.BeaconBlockRoot {
+ l.Error(
+ "attestation slot does not match slot based on beacon block root",
+ fmt.Errorf("attestation slot %d does not match slot based on beacon block root %d", att.Data.Slot, slotBasedOnRoot),
+ logger.WithUint64("attester", uint64(att.AttesterIndex)),
+ logger.WithUint64("current_slot", chainstate.CurrentSlot(time.Now())),
+ logger.WithUint64("slot", uint64(att.Data.Slot)),
+ )
+ telemetry.IncAttestationDropped("slot_mismatch")
+ }
+ }
+
if diff > s.cfg.GetAttestationMaxSlotAge() {
+ l.Error("attestation is too old to forward",
+ fmt.Errorf("attestation slot %d is older than max slot age %d", att.Data.Slot, s.cfg.GetAttestationMaxSlotAge()),
+ logger.WithUint64("attester", uint64(att.AttesterIndex)),
+ logger.WithUint64("current_slot", chainstate.CurrentSlot(time.Now())),
+ logger.WithUint64("slot", uint64(att.Data.Slot)),
+ )
telemetry.IncAttestationDropped("stale")
return false
}
- if !s.IsKnownValidator(attester) {
- telemetry.IncAttestationDropped("rejected")
- return false
- }
- telemetry.IncAttestationForwarded()
+
+ telemetry.IncAttestationForwarded(entities.SourceMumP2P)
return true
}
diff --git a/pkg/service/mum_p2p/config.go b/pkg/service/mum_p2p/config.go
index b7059c2..b37c3bb 100644
--- a/pkg/service/mum_p2p/config.go
+++ b/pkg/service/mum_p2p/config.go
@@ -3,13 +3,13 @@ package mum_p2p
import (
"fmt"
"math"
- "time"
"github.com/libp2p/go-libp2p/core/connmgr"
+ mump2pcfg "github.com/getoptimum/mump2p-protocol/pkg/config"
commonconfig "github.com/getoptimum/optimum-common/pkg/config"
commonentities "github.com/getoptimum/optimum-common/pkg/entities"
- pubsub "github.com/getoptimum/optimum-p2p/optimum-pubsub"
+ "github.com/getoptimum/optimum-common/pkg/logger"
)
type Config struct {
@@ -17,17 +17,6 @@ type Config struct {
ListenPort int `yaml:"listen_port"`
MaxMessageSize int64 `yaml:"max_message_size_bytes"`
- // RLNC and message settings
- RandomMessageSize int64 `yaml:"random_message_size_bytes"`
- ShardFactor int `yaml:"rlnc_shard_factor"`
- PublisherShardMultiplier float32 `yaml:"publisher_shard_multiplier"`
- ForwardShardThreshold float32 `yaml:"forward_shard_threshold"`
-
- // Mesh topology settings
- MeshDegreeTarget int `yaml:"mesh_degree_target"`
- MeshDegreeMin int `yaml:"mesh_degree_min"`
- MeshDegreeMax int `yaml:"mesh_degree_max"`
-
BootstrapPeers []string `yaml:"bootstrap_peers"`
// Trace event categories to broadcast to RegisterListener consumers. Shard metrics
@@ -58,22 +47,37 @@ func (cfg *Config) Get() *commonentities.OptimumConfig {
return cfg.Rotator.Get()
}
-func toOptimumConfig(cfg *Config) *pubsub.OptimumSubParams {
- res := pubsub.DefaultOptimumSubParams()
- if cfg.Get().MeshDegreeTarget != 0 {
- res.D = int(cfg.Get().MeshDegreeTarget)
- res.Dlo = int(cfg.Get().MeshDegreeTarget - 1)
- res.Dhi = int(cfg.Get().MeshDegreeTarget + 6)
+func toMumP2PConfig(cfg *Config) *mump2pcfg.Config {
+ res := mump2pcfg.DefaultGossipSubConfig()
+ dc := cfg.Get()
+ if dc.MeshDegreeTarget != 0 {
+ res.MeshD = int(dc.MeshDegreeTarget)
+ res.MeshDlo = int(dc.MeshDegreeTarget - 1)
+ res.MeshDhi = int(dc.MeshDegreeTarget + 6)
}
- if cfg.Get().MeshDegreeMin != 0 {
- res.Dlo = int(cfg.Get().MeshDegreeMin)
+ if dc.MeshDegreeMin != 0 {
+ res.MeshDlo = int(dc.MeshDegreeMin)
}
- if cfg.Get().MeshDegreeMax != 0 {
- res.Dhi = int(cfg.Get().MeshDegreeMax)
+ if dc.MeshDegreeMax != 0 {
+ res.MeshDhi = int(dc.MeshDegreeMax)
}
+ res.RLNC = mump2pcfg.RLNCConfig{
+ K: dc.ShardFactor,
+ MaxShardSize: dc.RandomMessageSize,
+ RedundancyFraction: dc.PublisherShardMultiplier,
+ ForwardingThresholdFraction: dc.ForwardShardThreshold,
+ MeshDegreeMax: res.MeshDhi,
+ }
+ return res
+}
- res.HeartbeatInterval = 700 * time.Millisecond // frequency of heartbeat, milliseconds
- res.HistoryLength = 6 // number of windows to retain full messages in cache for `IWANT` responses
- res.HistoryGossip = 3 // number of windows to gossip about
- return &res
+func (n *Node) logRLNCConfig(cfgLog mump2pcfg.RLNCConfig) {
+ n.log.Info("RLNC config",
+ logger.WithFlow("RLNC"),
+ logger.WithUint64("RLNC_K", uint64(cfgLog.K)),
+ logger.WithUint64("MaxShardSize", uint64(cfgLog.MaxShardSize)),
+ logger.WithFloat64("RedundancyFraction", cfgLog.RedundancyFraction),
+ logger.WithFloat64("ForwardingThresholdFraction", cfgLog.ForwardingThresholdFraction),
+ logger.WithInt("MeshDegreeMax", cfgLog.MeshDegreeMax),
+ )
}
diff --git a/pkg/service/mum_p2p/handshake.go b/pkg/service/mum_p2p/handshake.go
index 40ff52e..a6c4914 100644
--- a/pkg/service/mum_p2p/handshake.go
+++ b/pkg/service/mum_p2p/handshake.go
@@ -64,8 +64,8 @@ func (n *Node) handleNewConnection(clusterID string, conn network.Conn) {
l.Debug("peer already has valid handshake, skipping handshake")
// Re-admit on reconnect: pubsub revokes mesh admission on disconnect (#923), so a
// still-trusted peer must be re-authorized here since the handshake is skipped.
- if n.ps != nil {
- n.ps.AllowPeer(peerID)
+ if n.psRouter != nil {
+ n.psRouter.AllowPeer(peerID)
}
return
}
@@ -164,16 +164,16 @@ func (n *Node) RegisterHandshakeHandler(clusterID string) {
// markHandshakeValid records a verified handshake and admits the peer to the pubsub mesh (#923).
func (n *Node) markHandshakeValid(peerID peer.ID) {
n.setPeerState(peerID, entities.PeerStateHandshakeValid)
- if n.ps != nil {
- n.ps.AllowPeer(peerID)
+ if n.psRouter != nil {
+ n.psRouter.AllowPeer(peerID)
}
}
func (n *Node) disconnectPeer(peerID peer.ID) {
n.setPeerState(peerID, entities.PeerStateHandshakeInvalid)
// Revoke mesh admission (#923) before closing so the peer cannot linger in any mesh.
- if n.ps != nil {
- n.ps.DenyPeer(peerID)
+ if n.psRouter != nil {
+ n.psRouter.DenyPeer(peerID)
}
if n.host.Network().Connectedness(peerID) == network.NotConnected {
return
diff --git a/pkg/service/mum_p2p/node_test.go b/pkg/service/mum_p2p/node_test.go
index b348fe2..c9f553a 100644
--- a/pkg/service/mum_p2p/node_test.go
+++ b/pkg/service/mum_p2p/node_test.go
@@ -12,6 +12,7 @@ import (
"github.com/libp2p/go-libp2p/core/peer"
"github.com/stretchr/testify/require"
+ cfgpkg "github.com/getoptimum/optimum-gateway/pkg/config"
"github.com/getoptimum/optimum-gateway/pkg/entities"
"github.com/getoptimum/optimum-gateway/pkg/service/mum_p2p"
"github.com/getoptimum/optimum-gateway/pkg/test_utils"
@@ -53,7 +54,8 @@ func TestNodeHandshakeAndTopicLifecycle(t *testing.T) {
nodeB.UnregisterListener("topic-flow")
})
- payload := []byte("hello from mump2p")
+ payload := make([]byte, int(cfgpkg.DefaultRandomMessageSize*cfgpkg.DefaultShardFactor))
+ copy(payload, "hello from mump2p")
require.NoError(t, nodeA.PublishMessage(cnt.Ctx, topic, payload))
select {
diff --git a/pkg/service/mum_p2p/rlnc_wrapper.go b/pkg/service/mum_p2p/rlnc_wrapper.go
new file mode 100644
index 0000000..fe9573f
--- /dev/null
+++ b/pkg/service/mum_p2p/rlnc_wrapper.go
@@ -0,0 +1,30 @@
+package mum_p2p
+
+import (
+ "fmt"
+ "time"
+
+ mump2pcfg "github.com/getoptimum/mump2p-protocol/pkg/config"
+ rlncpbshm "github.com/getoptimum/mump2p-protocol/pkg/rlncpb/shm"
+ rlncshm "github.com/getoptimum/mump2p-protocol/pkg/shm"
+ "github.com/getoptimum/optimum-gateway/pkg/service/telemetry"
+)
+
+type RLNCWrapper struct {
+ srv *rlncshm.Service
+}
+
+func NewRLNCWrapper(psCfg *mump2pcfg.Config) (*RLNCWrapper, error) {
+ shmSvc, err := rlncshm.New(psCfg)
+ if err != nil {
+ return nil, fmt.Errorf("failed init shm: %w", err)
+ }
+ return &RLNCWrapper{srv: shmSvc}, nil
+}
+
+func (r *RLNCWrapper) ExecuteOp(op rlncpbshm.OperationType, data []byte) ([]byte, error) {
+ start := time.Now()
+ res, err := r.srv.ExecuteOp(op, data)
+ telemetry.MeasureRLNC(op.String(), time.Since(start))
+ return res, err
+}
diff --git a/pkg/service/mum_p2p/service.go b/pkg/service/mum_p2p/service.go
index d2f4004..641df6a 100644
--- a/pkg/service/mum_p2p/service.go
+++ b/pkg/service/mum_p2p/service.go
@@ -9,6 +9,7 @@ import (
"github.com/libp2p/go-libp2p"
mplex "github.com/libp2p/go-libp2p-mplex"
+ pubsub "github.com/libp2p/go-libp2p-pubsub"
"github.com/libp2p/go-libp2p/core/host"
"github.com/libp2p/go-libp2p/core/peer"
"github.com/libp2p/go-libp2p/p2p/net/connmgr"
@@ -17,7 +18,10 @@ import (
gomplex "github.com/libp2p/go-mplex"
"github.com/multiformats/go-multiaddr"
- commonhash "github.com/getoptimum/optimum-common/pkg/hash"
+ "github.com/getoptimum/mump2p-protocol/pkg/config"
+ "github.com/getoptimum/mump2p-protocol/pkg/engine"
+ rlncps "github.com/getoptimum/mump2p-protocol/pkg/pubsub"
+ "github.com/getoptimum/mump2p-protocol/pkg/router"
"github.com/getoptimum/optimum-common/pkg/identity"
"github.com/getoptimum/optimum-common/pkg/logger"
commonnet "github.com/getoptimum/optimum-common/pkg/net"
@@ -28,16 +32,15 @@ import (
"github.com/getoptimum/optimum-gateway/pkg/service/mum_p2p/tracer"
"github.com/getoptimum/optimum-gateway/pkg/service/telemetry"
"github.com/getoptimum/optimum-gateway/pkg/utils"
- pubsub "github.com/getoptimum/optimum-p2p/optimum-pubsub"
- pboptimum "github.com/getoptimum/optimum-p2p/optimum-pubsub/pb"
)
type Node struct {
- ctx context.Context
- log logger.AppLogger
- cfg *Config
- host host.Host // The libp2p host managing network connections and identity
- ps *pubsub.PubSub // The Optimum pub-sub instance
+ ctx context.Context
+ log logger.AppLogger
+ cfg *Config
+ host host.Host // The libp2p host managing network connections and identity
+ ps *pubsub.PubSub // The Optimum pub-sub instance
+ psRouter *router.RLNCRouter // The Optimum pub-sub instance
tracer *tracer.MumP2P
bootstrapNodes []peer.AddrInfo // Optional bootstrap peers for initial connectivity
@@ -167,42 +170,57 @@ func NewNodeWithHost(
ret.tracer = tracer.NewTracerMumP2P(ret.broadcaster, entities.OptimumTraceEventSet(cfg.TraceMesh, cfg.TraceRPC, cfg.TraceShard))
log.Info("initializing optimum gossipsub")
- maxMessageSize, err := utils.CalculateMaxSize(cfg.MaxMessageSize)
+
+ psCfg := toMumP2PConfig(cfg)
+ ret.logRLNCConfig(psCfg.RLNC)
+
+ log.Info("log params",
+ logger.WithFlow("RLNC"),
+ logger.WithUint64("RLNC_K", uint64(psCfg.RLNC.K)),
+ logger.WithUint64("MaxShardSize", uint64(psCfg.RLNC.MaxShardSize)),
+ logger.WithFloat64("RedundancyFraction", psCfg.RLNC.RedundancyFraction),
+ logger.WithFloat64("ForwardingThresholdFraction", psCfg.RLNC.ForwardingThresholdFraction),
+ logger.WithInt("MeshDegreeMax", psCfg.RLNC.MeshDegreeMax),
+ )
+
+ // Fail startup on invalid dynamic config: rotator fetch and programmatic
+ // mump2p setup do not validate these values, so a bad config would drop publishes.
+ if err = psCfg.Validate(); err != nil {
+ return nil, fmt.Errorf("validate mump2p config: %w", err)
+ }
+
+ shmSvc, err := NewRLNCWrapper(psCfg)
+ if err != nil {
+ return nil, fmt.Errorf("initialize RLNC shared memory: %w", err)
+ }
+
+ rlncEngine, err := engine.NewEngine(config.RLNCConfigs{
+ "*": psCfg.RLNC,
+ }, log.With(logger.WithService("rlncEngine")).Slog(), shmSvc)
if err != nil {
- return nil, fmt.Errorf("failed to calculate max message size: %w", err)
+ return nil, fmt.Errorf("create RLNC engine: %w", err)
}
- options := []pubsub.Option{
- // todo this for some reason not publish message to all mesh peers pubsub.WithMessageSignaturePolicy(pubsub.StrictNoSign),
- // todo this triggers panics connection manager because of missing peer.ID pubsub.WithNoAuthor(),
- pubsub.WithEventTracer(ret.tracer),
- pubsub.WithMaxMessageSize(maxMessageSize),
- pubsub.WithOptimumSubParams(toOptimumConfig(cfg)),
- pubsub.WithConfigRotator(cfg.Rotator),
- // Default-deny mesh admission (#923): a peer joins the mesh only after its
- // handshake verifies (AllowPeer in handshake.go), not merely on connect.
- pubsub.WithPeerAdmissionControl(),
- pubsub.WithPeerMsgFilter(func(pid peer.ID, _ string) bool {
+
+ optList := []rlncps.RLNCOption{
+ rlncps.WithRLNCTracer(ret.tracer),
+ // todo fix it rlncps.WithPeerAdmissionControl(),
+ rlncps.WithPeerFilterFN(func(pid peer.ID, _ string) bool {
_, ok := ret.peersApprovedMap.Load(pid)
return ok
}),
}
if telemetry.MetricsEnabled() {
- options = append(options, pubsub.WithRawTracer(telemetry.NewMumP2PCollector()))
+ optList = append(optList, rlncps.WithRawTracer(telemetry.NewMumP2PCollector()))
}
-
- // NN: set custom message ID function for optimump2p to use SHA256 hash of the message data
- options = append(options, pubsub.WithMessageIdFn(func(msg *pboptimum.Message) string {
- if msg == nil {
- return ""
- }
- return commonhash.SHA256(msg.Data)
- }))
-
- // Create pubsub before registering handshake handlers so ps is set when the first
- // handshake calls AllowPeer (#923); otherwise the peer is deferred for its lifetime.
- ret.ps, err = pubsub.NewOptimumP2P(ctx, h, options...)
+ ret.ps, ret.psRouter, err = rlncps.NewRLNCPubSub(ctx,
+ psCfg,
+ log.With(logger.WithService("mump2p")).Slog(),
+ h,
+ rlncEngine,
+ optList...,
+ )
if err != nil {
- return nil, fmt.Errorf("failed to create mump2p: %w", err)
+ return nil, fmt.Errorf("create RLNCP pubsub: %w", err)
}
ret.RegisterHandshakeMessageSender(cfg.ClusterID)
@@ -252,14 +270,14 @@ func (n *Node) CountConnectedPeers() (totalPeers int, perTopicPeers map[string]i
topics := n.ps.GetTopics()
perTopicPeers = make(map[string]int, len(topics))
for _, t := range topics {
- perTopicPeers[t] = len(n.ps.GetMeshPeers(t))
+ perTopicPeers[t] = len(n.GetMeshPeers(t))
}
return len(n.host.Network().Peers()), perTopicPeers
}
// GetMeshPeers returns the list of peer in the state variable mesh[topic] at the node.
func (n *Node) GetMeshPeers(topic string) []peer.ID {
- return n.ps.GetMeshPeers(topic)
+ return n.psRouter.MeshPeers(topic)
}
// GetTopics returns list of topics the node is subscribed to.
diff --git a/pkg/service/mum_p2p/service_test.go b/pkg/service/mum_p2p/service_test.go
new file mode 100644
index 0000000..b14a964
--- /dev/null
+++ b/pkg/service/mum_p2p/service_test.go
@@ -0,0 +1,36 @@
+package mum_p2p_test
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/require"
+ "google.golang.org/protobuf/proto"
+
+ mump2pcfg "github.com/getoptimum/mump2p-protocol/pkg/config"
+ shmpb "github.com/getoptimum/mump2p-protocol/pkg/rlncpb/shm"
+ rlncpbtypes "github.com/getoptimum/mump2p-protocol/pkg/rlncpb/types"
+ rlncshm "github.com/getoptimum/mump2p-protocol/pkg/shm"
+ "github.com/getoptimum/optimum-gateway/pkg/test_utils"
+)
+
+// BenchmarkServer
+// BenchmarkServer-12 108684 10969 ns/op
+
+// BenchmarkServer-12 2832513 409.5 ns/op
+func BenchmarkServer(b *testing.B) {
+ psCfg := mump2pcfg.DefaultGossipSubConfig()
+ shmSvc, err := rlncshm.New(psCfg)
+ require.NoError(b, err)
+
+ reqBz, err := proto.Marshal(&rlncpbtypes.ShardRequest{
+ Data: test_utils.RandBytes(2048),
+ MaxShardSize: psCfg.RLNC.MaxShardSize,
+ K: new(psCfg.RLNC.K),
+ })
+ require.NoError(b, err)
+
+ for i := 0; i < b.N; i++ {
+ _, err = shmSvc.ExecuteOp(shmpb.OperationType_OPERATION_TYPE_SHARD, reqBz)
+ require.NoError(b, err)
+ }
+}
diff --git a/pkg/service/mum_p2p/topics.go b/pkg/service/mum_p2p/topics.go
index 213021f..d5b4fa4 100644
--- a/pkg/service/mum_p2p/topics.go
+++ b/pkg/service/mum_p2p/topics.go
@@ -6,11 +6,12 @@ import (
"fmt"
"strings"
+ pubsub "github.com/libp2p/go-libp2p-pubsub"
+
commonentities "github.com/getoptimum/optimum-common/pkg/entities"
"github.com/getoptimum/optimum-common/pkg/logger"
"github.com/getoptimum/optimum-gateway/pkg/entities"
"github.com/getoptimum/optimum-gateway/pkg/service/telemetry"
- pubsub "github.com/getoptimum/optimum-p2p/optimum-pubsub"
)
// SubscribeTopic subscribes to a topic and calls the provided function when a message is received.
diff --git a/pkg/service/mum_p2p/tracer/tracer.go b/pkg/service/mum_p2p/tracer/tracer.go
index b493b27..46683c5 100644
--- a/pkg/service/mum_p2p/tracer/tracer.go
+++ b/pkg/service/mum_p2p/tracer/tracer.go
@@ -1,20 +1,23 @@
package tracer
import (
+ tracepb "github.com/getoptimum/mump2p-protocol/pkg/pb"
+ "github.com/getoptimum/mump2p-protocol/pkg/telemetry/rlnctrace"
"github.com/getoptimum/optimum-common/pkg/syncx"
"github.com/getoptimum/optimum-gateway/pkg/entities"
"github.com/getoptimum/optimum-gateway/pkg/service/telemetry"
- pb "github.com/getoptimum/optimum-p2p/optimum-pubsub/pb"
)
+var _ rlnctrace.RLNCTracer = (*MumP2P)(nil)
+
type MumP2P struct {
broadcaster *syncx.Broadcaster[*entities.MumP2PResponse]
- traceEvents map[pb.TraceEvent_Type]struct{} // event types to fan out over broadcaster
+ traceEvents map[entities.MumP2PTraceEventKind]struct{} // event kinds to fan out over broadcaster
}
func NewTracerMumP2P(
broadcaster *syncx.Broadcaster[*entities.MumP2PResponse],
- traceEvents map[pb.TraceEvent_Type]struct{},
+ traceEvents map[entities.MumP2PTraceEventKind]struct{},
) *MumP2P {
return &MumP2P{
broadcaster: broadcaster,
@@ -22,13 +25,14 @@ func NewTracerMumP2P(
}
}
-func (p *MumP2P) Trace(evt *pb.TraceEvent) {
- if evt == nil || evt.Type == nil {
+func (p *MumP2P) Trace(evt *tracepb.TraceEvent) {
+ if evt == nil || evt.GetEvent() == nil {
return
}
- p.notifyMetrics(evt.Type)
+ kind := entities.MumP2PTraceEventKindOf(evt)
+ p.notifyMetrics(kind)
- if _, ok := p.traceEvents[*evt.Type]; ok {
+ if _, ok := p.traceEvents[kind]; ok {
p.broadcaster.Broadcast(&entities.MumP2PResponse{
TraceEvent: evt,
Command: entities.MumP2PCommandTraceMumP2P,
@@ -36,15 +40,18 @@ func (p *MumP2P) Trace(evt *pb.TraceEvent) {
}
}
-func (p *MumP2P) notifyMetrics(msgType *pb.TraceEvent_Type) {
- switch *msgType {
- case pb.TraceEvent_NEW_SHARD:
+func (p *MumP2P) notifyMetrics(kind entities.MumP2PTraceEventKind) {
+ switch kind {
+ case entities.MumP2PTraceEventHelpfulSymbol:
+ telemetry.AddTotalShardCount()
+ case entities.MumP2PTraceEventRedundantSymbol:
telemetry.AddTotalShardCount()
- case pb.TraceEvent_DUPLICATE_SHARD:
telemetry.AddDuplicateShardCount()
- case pb.TraceEvent_UNNECESSARY_SHARD:
+ case entities.MumP2PTraceEventUnnecessarySymbol:
+ telemetry.AddTotalShardCount()
telemetry.AddUnnecessaryShardCount()
- case pb.TraceEvent_UNHELPFUL_SHARD:
+ case entities.MumP2PTraceEventInconsistentSymbol:
+ telemetry.AddTotalShardCount()
telemetry.AddUnhelpfulShardCount()
}
}
diff --git a/pkg/service/mum_p2p/tracer/tracer_test.go b/pkg/service/mum_p2p/tracer/tracer_test.go
index 4c004b0..10ae630 100644
--- a/pkg/service/mum_p2p/tracer/tracer_test.go
+++ b/pkg/service/mum_p2p/tracer/tracer_test.go
@@ -7,13 +7,13 @@ import (
"github.com/prometheus/client_golang/prometheus"
"github.com/stretchr/testify/require"
+ tracepb "github.com/getoptimum/mump2p-protocol/pkg/pb"
"github.com/getoptimum/optimum-common/pkg/logger"
"github.com/getoptimum/optimum-common/pkg/syncx"
commontelemetry "github.com/getoptimum/optimum-common/pkg/telemetry"
"github.com/getoptimum/optimum-gateway/pkg/entities"
"github.com/getoptimum/optimum-gateway/pkg/service/mum_p2p/tracer"
"github.com/getoptimum/optimum-gateway/pkg/service/telemetry"
- pboptimum "github.com/getoptimum/optimum-p2p/optimum-pubsub/pb"
)
func TestTracerBroadcastsEnabledEventsOnly(t *testing.T) {
@@ -25,31 +25,31 @@ func TestTracerBroadcastsEnabledEventsOnly(t *testing.T) {
tracerMumP2P := tracer.NewTracerMumP2P(
broadcaster,
- map[pboptimum.TraceEvent_Type]struct{}{
- pboptimum.TraceEvent_NEW_SHARD: {},
+ map[entities.MumP2PTraceEventKind]struct{}{
+ entities.MumP2PTraceEventHelpfulSymbol: {},
},
)
- newShard := &pboptimum.TraceEvent{
- Type: pboptimum.TraceEvent_NEW_SHARD.Enum(),
- NewShard: &pboptimum.TraceEvent_ShardContainer{
- MessageID: []byte("message-1"),
+ helpfulSymbol := &tracepb.TraceEvent{
+ Event: &tracepb.TraceEvent_HelpfulSymbol{
+ HelpfulSymbol: &tracepb.SymbolContainer{
+ MessageId: []byte("message-1"),
+ },
},
}
- go tracerMumP2P.Trace(newShard)
+ go tracerMumP2P.Trace(helpfulSymbol)
select {
case evt := <-listener:
require.Equal(t, entities.MumP2PCommandTraceMumP2P, evt.Command)
- require.Equal(t, newShard, evt.TraceEvent)
+ require.Equal(t, helpfulSymbol, evt.TraceEvent)
case <-time.After(time.Second):
t.Fatal("timed out waiting for enabled trace fan-out")
}
- tracerMumP2P.Trace(&pboptimum.TraceEvent{
- Type: pboptimum.TraceEvent_RECV_RPC.Enum(),
- RecvRPC: &pboptimum.TraceEvent_RecvRPC{
- Length: new(uint64),
+ tracerMumP2P.Trace(&tracepb.TraceEvent{
+ Event: &tracepb.TraceEvent_RecvRpc{
+ RecvRpc: &tracepb.RecvRPC{},
},
})
@@ -69,13 +69,13 @@ func TestTracerIgnoresNilEvents(t *testing.T) {
tracerMumP2P := tracer.NewTracerMumP2P(
broadcaster,
- map[pboptimum.TraceEvent_Type]struct{}{
- pboptimum.TraceEvent_NEW_SHARD: {},
+ map[entities.MumP2PTraceEventKind]struct{}{
+ entities.MumP2PTraceEventHelpfulSymbol: {},
},
)
tracerMumP2P.Trace(nil)
- tracerMumP2P.Trace(&pboptimum.TraceEvent{})
+ tracerMumP2P.Trace(&tracepb.TraceEvent{})
select {
case <-listener:
@@ -91,21 +91,54 @@ func TestTracerIncrementsShardMetrics(t *testing.T) {
tracerMumP2P := tracer.NewTracerMumP2P(
syncx.NewBroadcaster[*entities.MumP2PResponse](),
- map[pboptimum.TraceEvent_Type]struct{}{},
+ map[entities.MumP2PTraceEventKind]struct{}{},
)
- shardTypes := map[pboptimum.TraceEvent_Type]string{
- pboptimum.TraceEvent_NEW_SHARD: "testns_mump2p_shards_total",
- pboptimum.TraceEvent_DUPLICATE_SHARD: "testns_mump2p_shards_duplicate_total",
- pboptimum.TraceEvent_UNNECESSARY_SHARD: "testns_mump2p_shards_unnecessary_total",
- pboptimum.TraceEvent_UNHELPFUL_SHARD: "testns_mump2p_shards_unhelpful_total",
+ shardEvents := []struct {
+ name string
+ evt *tracepb.TraceEvent
+ specificMetric string
+ }{
+ {
+ name: "helpful",
+ evt: &tracepb.TraceEvent{
+ Event: &tracepb.TraceEvent_HelpfulSymbol{},
+ },
+ },
+ {
+ name: "redundant",
+ evt: &tracepb.TraceEvent{
+ Event: &tracepb.TraceEvent_RedundantSymbol{},
+ },
+ specificMetric: "testns_mump2p_shards_duplicate_total",
+ },
+ {
+ name: "unnecessary",
+ evt: &tracepb.TraceEvent{
+ Event: &tracepb.TraceEvent_UnnecessarySymbol{},
+ },
+ specificMetric: "testns_mump2p_shards_unnecessary_total",
+ },
+ {
+ name: "inconsistent",
+ evt: &tracepb.TraceEvent{
+ Event: &tracepb.TraceEvent_InconsistentSymbol{},
+ },
+ specificMetric: "testns_mump2p_shards_unhelpful_total",
+ },
}
- for evtType, metricName := range shardTypes {
- tracerMumP2P.Trace(&pboptimum.TraceEvent{Type: evtType.Enum()})
- require.Equal(t, float64(1), counterValue(t, reg, metricName),
- "expected %s to increment for %s", metricName, evtType)
+ for _, tc := range shardEvents {
+ t.Run(tc.name, func(t *testing.T) {
+ tracerMumP2P.Trace(tc.evt)
+ if tc.specificMetric != "" {
+ require.Equal(t, float64(1), counterValue(t, reg, tc.specificMetric),
+ "expected %s to increment", tc.specificMetric)
+ }
+ })
}
+
+ require.Equal(t, float64(len(shardEvents)), counterValue(t, reg, "testns_mump2p_shards_total"))
}
func counterValue(t *testing.T, reg *prometheus.Registry, name string) float64 {
diff --git a/pkg/service/telemetry/attestation.go b/pkg/service/telemetry/attestation.go
index 5204c1a..24d9dee 100644
--- a/pkg/service/telemetry/attestation.go
+++ b/pkg/service/telemetry/attestation.go
@@ -6,9 +6,14 @@ import (
"github.com/prometheus/client_golang/prometheus"
commonmetrics "github.com/getoptimum/optimum-common/pkg/telemetry"
+ "github.com/getoptimum/optimum-gateway/pkg/entities"
)
var (
+ attestationForwardedTotalMumP2P prometheus.Counter
+ attestationForwardedTotalCL prometheus.Counter
+
+ // TODO: verify do we need this
attestationPackTotal prometheus.Counter
attestationPackErrorTotal prometheus.Counter
attestationPackSizeBytes prometheus.Histogram
@@ -18,7 +23,6 @@ var (
attestationSubnetMessages *prometheus.CounterVec
attestationEvaluatedTotal prometheus.Counter
- attestationForwardedTotal prometheus.Counter
attestationDroppedTotal *prometheus.CounterVec
attestationInclusionDelay prometheus.Histogram
attestationPackLatencyMs prometheus.Histogram
@@ -68,11 +72,16 @@ func initAttestationMetrics() {
subsystem,
"Total attestations evaluated by the router (forwarded + dropped, for inclusion rate)",
)
- attestationForwardedTotal = commonmetrics.NewCounter(
+ attestationForwardedTotalMumP2P = commonmetrics.NewCounter(
"attestation_forwarded_mump2p_total",
subsystem,
"Attestations forwarded to mump2p after router filter",
)
+ attestationForwardedTotalCL = commonmetrics.NewCounter(
+ "attestation_forwarded_cl_total",
+ subsystem,
+ "Attestations forwarded to CL after router filter",
+ )
attestationDroppedTotal = commonmetrics.NewCounterVec(
"attestation_dropped_total",
subsystem,
@@ -141,9 +150,15 @@ func IncAttestationEvaluated() {
}
}
-func IncAttestationForwarded() {
- if enabledMetrics {
- attestationForwardedTotal.Inc()
+func IncAttestationForwarded(target entities.Source) {
+ if !enabledMetrics {
+ return
+ }
+ switch target {
+ case entities.SourceLibP2P:
+ attestationForwardedTotalCL.Inc()
+ case entities.SourceMumP2P:
+ attestationForwardedTotalMumP2P.Inc()
}
}
diff --git a/pkg/service/telemetry/bootstrap.go b/pkg/service/telemetry/bootstrap.go
new file mode 100644
index 0000000..38350d6
--- /dev/null
+++ b/pkg/service/telemetry/bootstrap.go
@@ -0,0 +1,55 @@
+package telemetry
+
+import (
+ "strconv"
+
+ "github.com/prometheus/client_golang/prometheus"
+
+ commonmetrics "github.com/getoptimum/optimum-common/pkg/telemetry"
+)
+
+// Block-latency export outcomes (issue #90). Kept as a small, fixed label set so
+// success rate, retry pressure, and drop reasons are visible without parsing logs.
+const (
+ ExportResultSuccess = "success" // delivered (2xx), possibly after retries
+ ExportResultTransient = "transient_retry" // attempt failed with a retryable error; rescheduled
+ ExportResultTerminal = "terminal_drop" // non-retryable response (e.g. 4xx); dropped
+ ExportResultOverflow = "overflow" // evicted because the resend list was full
+)
+
+var (
+ blockLatencyExportTotal *prometheus.CounterVec
+ blockLatencyExportTransientTotal *prometheus.CounterVec
+)
+
+func initBootstrapMetrics() {
+ blockLatencyExportTotal = commonmetrics.NewCounterVec(
+ "block_latency_export_total",
+ "bootstrap",
+ "Block-latency telemetry export outcomes to the bootstrap service",
+ []string{"result"},
+ )
+ blockLatencyExportTransientTotal = commonmetrics.NewCounterVec(
+ "block_latency_export_transient_total",
+ "bootstrap",
+ "Retryable block-latency export failures by HTTP status (code 0 = transport failure)",
+ []string{"code"},
+ )
+}
+
+// RecordBlockLatencyExport records one export outcome by result class.
+func RecordBlockLatencyExport(result string) {
+ if !enabledMetrics || blockLatencyExportTotal == nil {
+ return
+ }
+ blockLatencyExportTotal.WithLabelValues(result).Inc()
+}
+
+// RecordBlockLatencyExportTransientCode records the HTTP status of a retryable
+// failure so timeouts (code 0), 521, and 5xx can be told apart.
+func RecordBlockLatencyExportTransientCode(code int) {
+ if !enabledMetrics || blockLatencyExportTransientTotal == nil {
+ return
+ }
+ blockLatencyExportTransientTotal.WithLabelValues(strconv.Itoa(code)).Inc()
+}
diff --git a/pkg/service/telemetry/helpers_test.go b/pkg/service/telemetry/helpers_test.go
index 5e42ced..c87d3eb 100644
--- a/pkg/service/telemetry/helpers_test.go
+++ b/pkg/service/telemetry/helpers_test.go
@@ -10,6 +10,7 @@ import (
"github.com/stretchr/testify/require"
commonmetrics "github.com/getoptimum/optimum-common/pkg/telemetry"
+ "github.com/getoptimum/optimum-gateway/pkg/entities"
)
const (
@@ -157,7 +158,7 @@ func TestAggregationAndAttestationMetricsHelpers(t *testing.T) {
ObserveAttestationPackUniqueDataKeys(5)
IncAttestationSubnet(7)
IncAttestationEvaluated()
- IncAttestationForwarded()
+ IncAttestationForwarded(entities.SourceMumP2P)
IncAttestationDropped("expired")
ObserveAttestationInclusionDelay(4)
ObserveAttestationPackLatency(3.5)
diff --git a/pkg/service/telemetry/metrics.go b/pkg/service/telemetry/metrics.go
index ed17414..0ac5765 100644
--- a/pkg/service/telemetry/metrics.go
+++ b/pkg/service/telemetry/metrics.go
@@ -169,6 +169,8 @@ func InitMetricsWithRegistry(log logger.AppLogger, pairedWith string) {
initMumP2PMetrics()
initP2PMetrics()
initStreamMetrics()
+ initBootstrapMetrics()
+ initRLNCMetrics()
publicIP, _, err := commonnet.GetExternalIPs()
if err != nil {
log.Error("could not get public IP", err)
diff --git a/pkg/service/telemetry/mump2p.go b/pkg/service/telemetry/mump2p.go
index 1343abd..6e56d11 100644
--- a/pkg/service/telemetry/mump2p.go
+++ b/pkg/service/telemetry/mump2p.go
@@ -1,13 +1,13 @@
package telemetry
import (
+ pubsub "github.com/libp2p/go-libp2p-pubsub"
"github.com/libp2p/go-libp2p/core/peer"
"github.com/libp2p/go-libp2p/core/protocol"
"github.com/prometheus/client_golang/prometheus"
"github.com/getoptimum/optimum-common/pkg/syncx"
commonmetrics "github.com/getoptimum/optimum-common/pkg/telemetry"
- pubsub "github.com/getoptimum/optimum-p2p/optimum-pubsub"
)
var (
@@ -55,6 +55,10 @@ type MumP2PCollector struct {
peers *syncx.RWMap[peer.ID, protocol.ID]
}
+func (g *MumP2PCollector) OnNewOutboundStream(_ peer.ID, _ protocol.ID) {}
+
+func (g *MumP2PCollector) OnClosedOutboundStream(_ peer.ID) {}
+
func NewMumP2PCollector() *MumP2PCollector {
return &MumP2PCollector{
peers: syncx.NewRWMap[peer.ID, protocol.ID](),
diff --git a/pkg/service/telemetry/mump2p_test.go b/pkg/service/telemetry/mump2p_test.go
index f677f40..288ecde 100644
--- a/pkg/service/telemetry/mump2p_test.go
+++ b/pkg/service/telemetry/mump2p_test.go
@@ -3,12 +3,11 @@ package telemetry
import (
"testing"
+ pubsub "github.com/libp2p/go-libp2p-pubsub"
+ pb "github.com/libp2p/go-libp2p-pubsub/pb"
"github.com/libp2p/go-libp2p/core/peer"
"github.com/prometheus/client_golang/prometheus"
"github.com/stretchr/testify/require"
-
- pubsub "github.com/getoptimum/optimum-p2p/optimum-pubsub"
- pb "github.com/getoptimum/optimum-p2p/optimum-pubsub/pb"
)
func mumMsg(topic string, data []byte) *pubsub.Message {
diff --git a/pkg/service/telemetry/rlnc.go b/pkg/service/telemetry/rlnc.go
new file mode 100644
index 0000000..699ae79
--- /dev/null
+++ b/pkg/service/telemetry/rlnc.go
@@ -0,0 +1,28 @@
+package telemetry
+
+import (
+ "time"
+
+ "github.com/prometheus/client_golang/prometheus"
+
+ commonmetrics "github.com/getoptimum/optimum-common/pkg/telemetry"
+)
+
+var rlncExecutionDuration *prometheus.HistogramVec
+
+func initRLNCMetrics() {
+ rlncExecutionDuration = commonmetrics.NewHistogramWithBuckets(
+ "rlnc_execution_duration_seconds",
+ subsystem,
+ "Execution duration of RLNC functions",
+ []string{"function"},
+ prometheus.ExponentialBuckets(0.0001, 2, 18),
+ )
+}
+
+func MeasureRLNC(operation string, duration time.Duration) {
+ if !enabledMetrics {
+ return
+ }
+ rlncExecutionDuration.WithLabelValues(operation).Observe(duration.Seconds())
+}
diff --git a/pkg/service/telemetry/tracer/optimum_trace.go b/pkg/service/telemetry/tracer/optimum_trace.go
index febd433..0223ec6 100644
--- a/pkg/service/telemetry/tracer/optimum_trace.go
+++ b/pkg/service/telemetry/tracer/optimum_trace.go
@@ -1,62 +1,62 @@
package tracer
import (
+ tracepb "github.com/getoptimum/mump2p-protocol/pkg/pb"
"github.com/getoptimum/optimum-gateway/pkg/service/telemetry"
- pboptimum "github.com/getoptimum/optimum-p2p/optimum-pubsub/pb"
)
// HandleMumP2PTrace decodes a raw mump2p trace event and records its meaningful attributes
// (topic, bytes, reject reason, shard kind, RPC direction) as Prometheus metrics. Which
// events arrive is controlled by OPT_TRACE_MESH / OPT_TRACE_RPC / OPT_TRACE_SHARD (the node
// only broadcasts enabled categories), so this handler dispatches whatever it receives.
-func HandleMumP2PTrace(evt *pboptimum.TraceEvent) error {
- if evt == nil || evt.Type == nil {
+func HandleMumP2PTrace(evt *tracepb.TraceEvent) error {
+ if evt == nil || evt.GetEvent() == nil {
return nil
}
- switch evt.GetType() {
+ switch event := evt.GetEvent().(type) {
// message lifecycle
- case pboptimum.TraceEvent_PUBLISH_MESSAGE:
- telemetry.TraceMessage("publish", evt.GetPublishMessage().GetTopic())
- case pboptimum.TraceEvent_DELIVER_MESSAGE:
- telemetry.TraceMessage("deliver", evt.GetDeliverMessage().GetTopic())
- case pboptimum.TraceEvent_DUPLICATE_MESSAGE:
- telemetry.TraceMessage("duplicate", evt.GetDuplicateMessage().GetTopic())
- case pboptimum.TraceEvent_REJECT_MESSAGE:
- rm := evt.GetRejectMessage()
+ case *tracepb.TraceEvent_PublishMessage:
+ telemetry.TraceMessage("publish", event.PublishMessage.GetTopic())
+ case *tracepb.TraceEvent_DeliverMessage:
+ telemetry.TraceMessage("deliver", event.DeliverMessage.GetTopic())
+ case *tracepb.TraceEvent_DuplicateMessage:
+ telemetry.TraceMessage("duplicate", event.DuplicateMessage.GetTopic())
+ case *tracepb.TraceEvent_RejectMessage:
+ rm := event.RejectMessage
telemetry.TraceMessage("reject", rm.GetTopic())
telemetry.TraceMessageReject(rm.GetTopic(), rm.GetReason())
// RLNC shards
- case pboptimum.TraceEvent_NEW_SHARD:
- telemetry.TraceShard("new", len(evt.GetNewShard().GetCoefficients()))
- case pboptimum.TraceEvent_DUPLICATE_SHARD:
- telemetry.TraceShard("duplicate", len(evt.GetDuplicateShard().GetCoefficients()))
- case pboptimum.TraceEvent_UNHELPFUL_SHARD:
- telemetry.TraceShard("unhelpful", len(evt.GetUnhelpfulShard().GetCoefficients()))
- case pboptimum.TraceEvent_UNNECESSARY_SHARD:
- telemetry.TraceShard("unnecessary", len(evt.GetUnnecessaryShard().GetCoefficients()))
+ case *tracepb.TraceEvent_HelpfulSymbol:
+ telemetry.TraceShard("new", len(event.HelpfulSymbol.GetCoefficients()))
+ case *tracepb.TraceEvent_RedundantSymbol:
+ telemetry.TraceShard("duplicate", len(event.RedundantSymbol.GetCoefficients()))
+ case *tracepb.TraceEvent_InconsistentSymbol:
+ telemetry.TraceShard("unhelpful", len(event.InconsistentSymbol.GetCoefficients()))
+ case *tracepb.TraceEvent_UnnecessarySymbol:
+ telemetry.TraceShard("unnecessary", len(event.UnnecessarySymbol.GetCoefficients()))
// RPC traffic
- case pboptimum.TraceEvent_RECV_RPC:
- telemetry.TraceRPC("recv", evt.GetRecvRPC().GetLength())
- case pboptimum.TraceEvent_SEND_RPC:
- telemetry.TraceRPC("send", evt.GetSendRPC().GetLength())
- case pboptimum.TraceEvent_DROP_RPC:
+ case *tracepb.TraceEvent_RecvRpc:
+ telemetry.TraceRPC("recv", event.RecvRpc.GetLength())
+ case *tracepb.TraceEvent_SendRpc:
+ telemetry.TraceRPC("send", event.SendRpc.GetLength())
+ case *tracepb.TraceEvent_DropRpc:
telemetry.TraceRPC("drop", 0) // DropRPC carries no length
// mesh topology
- case pboptimum.TraceEvent_ADD_PEER:
+ case *tracepb.TraceEvent_AddPeer:
telemetry.TraceMesh("add_peer", "")
- case pboptimum.TraceEvent_REMOVE_PEER:
+ case *tracepb.TraceEvent_RemovePeer:
telemetry.TraceMesh("remove_peer", "")
- case pboptimum.TraceEvent_JOIN:
- telemetry.TraceMesh("join", evt.GetJoin().GetTopic())
- case pboptimum.TraceEvent_LEAVE:
- telemetry.TraceMesh("leave", evt.GetLeave().GetTopic())
- case pboptimum.TraceEvent_GRAFT:
- telemetry.TraceMesh("graft", evt.GetGraft().GetTopic())
- case pboptimum.TraceEvent_PRUNE:
- telemetry.TraceMesh("prune", evt.GetPrune().GetTopic())
+ case *tracepb.TraceEvent_Join:
+ telemetry.TraceMesh("join", event.Join.GetTopic())
+ case *tracepb.TraceEvent_Leave:
+ telemetry.TraceMesh("leave", event.Leave.GetTopic())
+ case *tracepb.TraceEvent_Graft:
+ telemetry.TraceMesh("graft", event.Graft.GetTopic())
+ case *tracepb.TraceEvent_Prune:
+ telemetry.TraceMesh("prune", event.Prune.GetTopic())
}
return nil
}
diff --git a/pkg/service/telemetry/tracer/optimum_trace_test.go b/pkg/service/telemetry/tracer/optimum_trace_test.go
index 3d863e3..e8ca41d 100644
--- a/pkg/service/telemetry/tracer/optimum_trace_test.go
+++ b/pkg/service/telemetry/tracer/optimum_trace_test.go
@@ -7,13 +7,15 @@ import (
dto "github.com/prometheus/client_model/go"
"github.com/stretchr/testify/require"
+ tracepb "github.com/getoptimum/mump2p-protocol/pkg/pb"
"github.com/getoptimum/optimum-common/pkg/logger"
commontelemetry "github.com/getoptimum/optimum-common/pkg/telemetry"
"github.com/getoptimum/optimum-gateway/pkg/service/telemetry"
"github.com/getoptimum/optimum-gateway/pkg/service/telemetry/tracer"
- pboptimum "github.com/getoptimum/optimum-p2p/optimum-pubsub/pb"
)
+const topicKey = "topic"
+
func TestPeerTopicTracerHandleMumP2PTrace(t *testing.T) {
reg := prometheus.NewRegistry()
l := logger.NewAppSLogger(logger.Debug)
@@ -24,39 +26,52 @@ func TestPeerTopicTracerHandleMumP2PTrace(t *testing.T) {
attTopic := "/eth2/c6ecb76c/beacon_attestation_31/ssz_snappy"
require.NoError(t, tracer.HandleMumP2PTrace(nil))
- require.NoError(t, tracer.HandleMumP2PTrace(&pboptimum.TraceEvent{}))
+ require.NoError(t, tracer.HandleMumP2PTrace(&tracepb.TraceEvent{}))
+ require.NoError(t, tracer.HandleMumP2PTrace(&tracepb.TraceEvent{
+ Event: &tracepb.TraceEvent_EncodeError{EncodeError: &tracepb.EncodeError{}},
+ }))
+ require.Zero(t, metricValue(t, reg, "testns_mump2p_trace_messages_total", map[string]string{
+ "event": "publish",
+ topicKey: "beacon_block",
+ }))
cases := []struct {
name string
- raw *pboptimum.TraceEvent
+ raw *tracepb.TraceEvent
checks []metricExpectation
}{
{
name: "publish message",
- raw: &pboptimum.TraceEvent{
- Type: pboptimum.TraceEvent_PUBLISH_MESSAGE.Enum(),
- PublishMessage: &pboptimum.TraceEvent_PublishMessage{Topic: new(beaconTopic)},
+ raw: &tracepb.TraceEvent{
+ Event: &tracepb.TraceEvent_PublishMessage{PublishMessage: &tracepb.PublishMessage{Topic: beaconTopic}},
},
checks: []metricExpectation{
- {name: "testns_mump2p_trace_messages_total", labels: map[string]string{"event": "publish", "topic": "beacon_block"}, value: 1},
+ {name: "testns_mump2p_trace_messages_total", labels: map[string]string{
+ "event": "publish",
+ topicKey: "beacon_block",
+ }, value: 1},
},
},
{
name: "reject message with empty reason",
- raw: &pboptimum.TraceEvent{
- Type: pboptimum.TraceEvent_REJECT_MESSAGE.Enum(),
- RejectMessage: &pboptimum.TraceEvent_RejectMessage{Topic: new(attTopic)},
+ raw: &tracepb.TraceEvent{
+ Event: &tracepb.TraceEvent_RejectMessage{RejectMessage: &tracepb.RejectMessage{Topic: attTopic}},
},
checks: []metricExpectation{
- {name: "testns_mump2p_trace_messages_total", labels: map[string]string{"event": "reject", "topic": "beacon_attestation"}, value: 1},
- {name: "testns_mump2p_trace_message_rejects_total", labels: map[string]string{"topic": "beacon_attestation", "reason": "unknown"}, value: 1},
+ {name: "testns_mump2p_trace_messages_total", labels: map[string]string{
+ "event": "reject",
+ topicKey: "beacon_attestation",
+ }, value: 1},
+ {name: "testns_mump2p_trace_message_rejects_total", labels: map[string]string{
+ topicKey: "beacon_attestation",
+ "reason": "unknown",
+ }, value: 1},
},
},
{
- name: "new shard",
- raw: &pboptimum.TraceEvent{
- Type: pboptimum.TraceEvent_NEW_SHARD.Enum(),
- NewShard: &pboptimum.TraceEvent_ShardContainer{Coefficients: []byte{1, 2, 3, 4}},
+ name: "helpful symbol",
+ raw: &tracepb.TraceEvent{
+ Event: &tracepb.TraceEvent_HelpfulSymbol{HelpfulSymbol: &tracepb.SymbolContainer{Coefficients: []byte{1, 2, 3, 4}}},
},
checks: []metricExpectation{
{name: "testns_mump2p_trace_shards_total", labels: map[string]string{"kind": "new"}, value: 1},
@@ -65,9 +80,8 @@ func TestPeerTopicTracerHandleMumP2PTrace(t *testing.T) {
},
{
name: "recv rpc",
- raw: &pboptimum.TraceEvent{
- Type: pboptimum.TraceEvent_RECV_RPC.Enum(),
- RecvRPC: &pboptimum.TraceEvent_RecvRPC{Length: new(uint64(17))},
+ raw: &tracepb.TraceEvent{
+ Event: &tracepb.TraceEvent_RecvRpc{RecvRpc: &tracepb.RecvRPC{Length: 17}},
},
checks: []metricExpectation{
{name: "testns_mump2p_trace_rpc_total", labels: map[string]string{"direction": "recv"}, value: 1},
@@ -76,9 +90,8 @@ func TestPeerTopicTracerHandleMumP2PTrace(t *testing.T) {
},
{
name: "drop rpc",
- raw: &pboptimum.TraceEvent{
- Type: pboptimum.TraceEvent_DROP_RPC.Enum(),
- DropRPC: &pboptimum.TraceEvent_DropRPC{},
+ raw: &tracepb.TraceEvent{
+ Event: &tracepb.TraceEvent_DropRpc{DropRpc: &tracepb.DropRPC{}},
},
checks: []metricExpectation{
{name: "testns_mump2p_trace_rpc_total", labels: map[string]string{"direction": "drop"}, value: 1},
@@ -86,22 +99,26 @@ func TestPeerTopicTracerHandleMumP2PTrace(t *testing.T) {
},
{
name: "join mesh topic",
- raw: &pboptimum.TraceEvent{
- Type: pboptimum.TraceEvent_JOIN.Enum(),
- Join: &pboptimum.TraceEvent_Join{Topic: new(attTopic)},
+ raw: &tracepb.TraceEvent{
+ Event: &tracepb.TraceEvent_Join{Join: &tracepb.Join{Topic: attTopic}},
},
checks: []metricExpectation{
- {name: "testns_mump2p_trace_mesh_total", labels: map[string]string{"event": "join", "topic": "beacon_attestation"}, value: 1},
+ {name: "testns_mump2p_trace_mesh_total", labels: map[string]string{
+ "event": "join",
+ topicKey: "beacon_attestation",
+ }, value: 1},
},
},
{
name: "add peer mesh event",
- raw: &pboptimum.TraceEvent{
- Type: pboptimum.TraceEvent_ADD_PEER.Enum(),
- AddPeer: &pboptimum.TraceEvent_AddPeer{},
+ raw: &tracepb.TraceEvent{
+ Event: &tracepb.TraceEvent_AddPeer{AddPeer: &tracepb.AddPeer{}},
},
checks: []metricExpectation{
- {name: "testns_mump2p_trace_mesh_total", labels: map[string]string{"event": "add_peer", "topic": "none"}, value: 1},
+ {name: "testns_mump2p_trace_mesh_total", labels: map[string]string{
+ "event": "add_peer",
+ topicKey: "none",
+ }, value: 1},
},
},
}
diff --git a/pkg/test_utils/local_bootstrap_server.go b/pkg/test_utils/local_bootstrap_server.go
index b9ac68e..99cfdef 100644
--- a/pkg/test_utils/local_bootstrap_server.go
+++ b/pkg/test_utils/local_bootstrap_server.go
@@ -5,6 +5,7 @@ import (
"net/http/httptest"
"net/url"
"strings"
+ "sync/atomic"
"testing"
"time"
@@ -41,6 +42,7 @@ type LocalBootstrapServer struct {
registerReqs chan RegisterGatewayRequest
exposeReqs chan ExposeNodesRequest
latencyReqs chan BlockLatencyRequest
+ latencyStatus *atomic.Int32 // 0 => success; otherwise HTTP status to return for block-latency posts
srv *httptest.Server
}
@@ -57,6 +59,7 @@ func newLocalBootstrapServer(t *testing.T, rig *AuthTestRig) *LocalBootstrapServ
registerReqs := make(chan RegisterGatewayRequest, 32)
exposeReqs := make(chan ExposeNodesRequest, 32)
latencyReqs := make(chan BlockLatencyRequest, 32)
+ latencyStatus := &atomic.Int32{}
app := fiber.New()
app.Get(utils.BootstrapExposeNodesPath, func(c fiber.Ctx) error {
select {
@@ -87,17 +90,21 @@ func newLocalBootstrapServer(t *testing.T, rig *AuthTestRig) *LocalBootstrapServ
}
return c.JSON(forksResponse.LoadAll())
})
- app.Post(utils.BootstrapHandleBlockLatencyV2, func(c fiber.Ctx) error {
- var payload entities.LatencyComparator
- require.NoError(t, json.Unmarshal(c.Body(), &payload))
- req := BlockLatencyRequest{
- Authorization: strings.Clone(c.Get("Authorization")),
- Payload: payload,
+ app.Post(utils.BootstrapHandleBlockLatencyBulkV2, func(c fiber.Ctx) error {
+ var payloads []entities.LatencyComparator
+ require.NoError(t, json.Unmarshal(c.Body(), &payloads))
+ for i := range payloads {
+ select {
+ case latencyReqs <- BlockLatencyRequest{
+ Authorization: strings.Clone(c.Get("Authorization")),
+ Payload: payloads[i],
+ }:
+ default:
+ // Keep latency capture best-effort so unrelated tests never block on this test stub.
+ }
}
- select {
- case latencyReqs <- req:
- default:
- // Keep latency capture best-effort so unrelated tests never block on this test stub.
+ if code := latencyStatus.Load(); code != 0 {
+ return c.SendStatus(int(code))
}
return nil
})
@@ -113,9 +120,16 @@ func newLocalBootstrapServer(t *testing.T, rig *AuthTestRig) *LocalBootstrapServ
registerReqs: registerReqs,
exposeReqs: exposeReqs,
latencyReqs: latencyReqs,
+ latencyStatus: latencyStatus,
}
}
+// SetBlockLatencyStatus makes the block-latency endpoint respond with the given
+// HTTP status. Use 0 to restore success (200). Safe to call concurrently.
+func (m *LocalBootstrapServer) SetBlockLatencyStatus(code int32) {
+ m.latencyStatus.Store(code)
+}
+
func mapToURLValues(src map[string]string) url.Values {
dst := make(url.Values, len(src))
for key, value := range src {
diff --git a/pkg/test_utils/mump2p_node.go b/pkg/test_utils/mump2p_node.go
index 5860fd7..03c3eb2 100644
--- a/pkg/test_utils/mump2p_node.go
+++ b/pkg/test_utils/mump2p_node.go
@@ -3,6 +3,8 @@ package test_utils
import (
"context"
"fmt"
+ "os"
+ "strings"
"testing"
"time"
@@ -40,6 +42,9 @@ func NewTestNodeWithCfg(
opts ...mum_p2p.NodeOption,
) *mum_p2p.Node {
t.Helper()
+ if !hasRLNCServerSemaphore(t, "/dev/shm") {
+ t.Fatalf("rlnc server is not running, start it as `make run-rlnc-server`")
+ }
h, err := libp2p.New(
libp2p.ListenAddrStrings(fmt.Sprintf("/ip4/127.0.0.1/tcp/%d", test_utils.GetFreePortT(t))),
@@ -48,7 +53,7 @@ func NewTestNodeWithCfg(
node, err := mum_p2p.NewNodeWithHost(
ctx,
- log.With(logger.WithService("mum_p2p_test")),
+ log,
cfg,
h,
identityDir,
@@ -60,18 +65,25 @@ func NewTestNodeWithCfg(
return node
}
+func hasRLNCServerSemaphore(tb testing.TB, dir string) bool {
+ tb.Helper()
+ entries, err := os.ReadDir(dir)
+ if err != nil {
+ return false
+ }
+ for _, entry := range entries {
+ if strings.HasPrefix(entry.Name(), "go_shm_rlnc_semaphore_mump2p-protocol_lane") {
+ return true
+ }
+ }
+ return false
+}
+
func NewTestConfig(ctx context.Context, log logger.AppLogger, clusterID string, listenPort int, boostrapPeers []string) *mum_p2p.Config {
cfg := &mum_p2p.Config{
- ClusterID: clusterID,
- ListenPort: listenPort,
- MaxMessageSize: cfgpkg.DefaultMaxMessageSize,
- RandomMessageSize: cfgpkg.DefaultRandomMessageSize,
- ShardFactor: int(cfgpkg.DefaultShardFactor),
- PublisherShardMultiplier: cfgpkg.DefaultPublisherShardMultiplier,
- ForwardShardThreshold: cfgpkg.DefaultForwardShardThreshold,
- MeshDegreeTarget: int(cfgpkg.DefaultMeshDegreeTarget),
- MeshDegreeMin: int(cfgpkg.DefaultMeshDegreeMin),
- MeshDegreeMax: int(cfgpkg.DefaultMeshDegreeMax),
+ ClusterID: clusterID,
+ ListenPort: listenPort,
+ MaxMessageSize: cfgpkg.DefaultMaxMessageSize,
Rotator: commonconfig.NewConfigRotator(
ctx,
log,
@@ -81,9 +93,6 @@ func NewTestConfig(ctx context.Context, log logger.AppLogger, clusterID string,
ShardFactor: cfgpkg.DefaultShardFactor,
PublisherShardMultiplier: cfgpkg.DefaultPublisherShardMultiplier,
ForwardShardThreshold: cfgpkg.DefaultForwardShardThreshold,
- MeshDegreeTarget: cfgpkg.DefaultMeshDegreeTarget,
- MeshDegreeMin: cfgpkg.DefaultMeshDegreeMin,
- MeshDegreeMax: cfgpkg.DefaultMeshDegreeMax,
},
"hoodi",
clusterID,
diff --git a/pkg/test_utils/test_utils.go b/pkg/test_utils/test_utils.go
index c257539..fca286b 100644
--- a/pkg/test_utils/test_utils.go
+++ b/pkg/test_utils/test_utils.go
@@ -68,7 +68,6 @@ func GetClean(tb testing.TB) *Container {
ctx, cancel := context.WithTimeout(tb.Context(), time.Minute*3)
log := logger.NewAppSLogger(logger.Debug)
-
tb.Cleanup(cancel)
return &Container{
Ctx: ctx,
diff --git a/pkg/utils/bootstrap_urls.go b/pkg/utils/bootstrap_urls.go
index afb14e9..c9f8ab4 100644
--- a/pkg/utils/bootstrap_urls.go
+++ b/pkg/utils/bootstrap_urls.go
@@ -9,10 +9,11 @@ import (
)
const (
- BootstrapRegisterPath = "/api/v2/gateways/register"
- BootstrapExposeNodesPath = "/api/v2/expose-nodes"
- BootstrapHandleBlockLatencyV2 = "/api/v2/handle_block_latency"
- BootstrapForkDigestPath = "/api/v2/fork-digest"
+ BootstrapRegisterPath = "/api/v2/gateways/register"
+ BootstrapExposeNodesPath = "/api/v2/expose-nodes"
+ BootstrapHandleBlockLatencyV2 = "/api/v2/handle_block_latency"
+ BootstrapHandleBlockLatencyBulkV2 = "/api/v2/handle_block_latency_bulk"
+ BootstrapForkDigestPath = "/api/v2/fork-digest"
)
// isBaseURL returns true if s looks like a full URL (http:// or https://).
@@ -64,6 +65,11 @@ func BootstrapHandleBlockLatencyURL(host string) string {
return bootstrapPathURL(host, BootstrapHandleBlockLatencyV2)
}
+// BootstrapHandleBlockLatencyBulkURL returns the full URL for v2 bulk block latency endpoint.
+func BootstrapHandleBlockLatencyBulkURL(host string) string {
+ return bootstrapPathURL(host, BootstrapHandleBlockLatencyBulkV2)
+}
+
// BootstrapForkDigestURL returns the full URL for fork digest endpoint.
func BootstrapForkDigestURL(host string, chainID chain.Chain) string {
base := bootstrapPathURL(host, BootstrapForkDigestPath)
diff --git a/pkg/utils/bootstrap_urls_test.go b/pkg/utils/bootstrap_urls_test.go
index f75d075..2abc057 100644
--- a/pkg/utils/bootstrap_urls_test.go
+++ b/pkg/utils/bootstrap_urls_test.go
@@ -11,29 +11,34 @@ import (
func TestBootstrapRegisterURL(t *testing.T) {
tests := map[string]struct {
- host string
- wantRegisterURL string
- wantBlockLatencyURL string
+ host string
+ wantRegisterURL string
+ wantBlockLatencyURL string
+ wantBlockLatencyBulkURL string
}{
"hostname": {
- host: "bootstrap.example.com",
- wantRegisterURL: "https://bootstrap.example.com/api/v2/gateways/register",
- wantBlockLatencyURL: "https://bootstrap.example.com/api/v2/handle_block_latency",
+ host: "bootstrap.example.com",
+ wantRegisterURL: "https://bootstrap.example.com/api/v2/gateways/register",
+ wantBlockLatencyURL: "https://bootstrap.example.com/api/v2/handle_block_latency",
+ wantBlockLatencyBulkURL: "https://bootstrap.example.com/api/v2/handle_block_latency_bulk",
},
"base url without trailing slash": {
- host: "https://bootstrap.example.com",
- wantRegisterURL: "https://bootstrap.example.com/api/v2/gateways/register",
- wantBlockLatencyURL: "https://bootstrap.example.com/api/v2/handle_block_latency",
+ host: "https://bootstrap.example.com",
+ wantRegisterURL: "https://bootstrap.example.com/api/v2/gateways/register",
+ wantBlockLatencyURL: "https://bootstrap.example.com/api/v2/handle_block_latency",
+ wantBlockLatencyBulkURL: "https://bootstrap.example.com/api/v2/handle_block_latency_bulk",
},
"base url with trailing slash": {
- host: "https://bootstrap.example.com/",
- wantRegisterURL: "https://bootstrap.example.com/api/v2/gateways/register",
- wantBlockLatencyURL: "https://bootstrap.example.com/api/v2/handle_block_latency",
+ host: "https://bootstrap.example.com/",
+ wantRegisterURL: "https://bootstrap.example.com/api/v2/gateways/register",
+ wantBlockLatencyURL: "https://bootstrap.example.com/api/v2/handle_block_latency",
+ wantBlockLatencyBulkURL: "https://bootstrap.example.com/api/v2/handle_block_latency_bulk",
},
"base url with path preserved": {
- host: "https://bootstrap.example.com/root",
- wantRegisterURL: "https://bootstrap.example.com/root/api/v2/gateways/register",
- wantBlockLatencyURL: "https://bootstrap.example.com/root/api/v2/handle_block_latency",
+ host: "https://bootstrap.example.com/root",
+ wantRegisterURL: "https://bootstrap.example.com/root/api/v2/gateways/register",
+ wantBlockLatencyURL: "https://bootstrap.example.com/root/api/v2/handle_block_latency",
+ wantBlockLatencyBulkURL: "https://bootstrap.example.com/root/api/v2/handle_block_latency_bulk",
},
}
@@ -41,6 +46,7 @@ func TestBootstrapRegisterURL(t *testing.T) {
t.Run(name, func(t *testing.T) {
require.Equal(t, tt.wantRegisterURL, utils.BootstrapRegisterURL(tt.host))
require.Equal(t, tt.wantBlockLatencyURL, utils.BootstrapHandleBlockLatencyURL(tt.host))
+ require.Equal(t, tt.wantBlockLatencyBulkURL, utils.BootstrapHandleBlockLatencyBulkURL(tt.host))
})
}
}