diff --git a/.github/workflows/openai-serve.yml b/.github/workflows/openai-serve.yml index 3fed556..d135282 100644 --- a/.github/workflows/openai-serve.yml +++ b/.github/workflows/openai-serve.yml @@ -5,6 +5,8 @@ on: branches: - main paths: + - flake.nix + - flake.lock - apps/openai-serve/** - go-lcpd/proto/** - proto/** @@ -12,6 +14,8 @@ on: - .github/workflows/openai-serve.yml pull_request: paths: + - flake.nix + - flake.lock - apps/openai-serve/** - go-lcpd/proto/** - proto/** @@ -38,5 +42,4 @@ jobs: use-flakehub: false - name: Lint and test - run: nix develop ./go-lcpd -c make -C apps/openai-serve lint test - + run: nix develop . -c make -C apps/openai-serve lint test diff --git a/.github/workflows/proto-go.yml b/.github/workflows/proto-go.yml index 869dcd6..922cfe6 100644 --- a/.github/workflows/proto-go.yml +++ b/.github/workflows/proto-go.yml @@ -5,12 +5,16 @@ on: branches: - main paths: + - flake.nix + - flake.lock - go-lcpd/proto/** - proto/** - proto-go/** - .github/workflows/proto-go.yml pull_request: paths: + - flake.nix + - flake.lock - go-lcpd/proto/** - proto/** - proto-go/** @@ -36,10 +40,9 @@ jobs: use-flakehub: false - name: Lint protos - run: nix develop ./go-lcpd -c sh -lc 'cd go-lcpd && buf lint' + run: nix develop . -c sh -lc 'cd go-lcpd && buf lint' - name: Verify proto-go generated code is up to date run: | - nix develop ./go-lcpd -c sh -lc 'cd go-lcpd && buf generate --template ../proto-go/buf.gen.yaml' + nix develop . -c sh -lc 'cd go-lcpd && buf generate --template ../proto-go/buf.gen.yaml' git diff --exit-code -- proto-go - diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9de4fa1..59c33fa 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,12 +5,16 @@ on: branches: - main paths: + - flake.nix + - flake.lock - go-lcpd/** - proto/** - proto-go/** - .github/workflows/test.yml pull_request: paths: + - flake.nix + - flake.lock - go-lcpd/** - proto/** - proto-go/** @@ -39,4 +43,4 @@ jobs: use-flakehub: false - name: Lint and test - run: nix develop ./go-lcpd -c make -C go-lcpd lint test + run: nix develop . -c make -C go-lcpd lint test diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f540de7..9a4528b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -57,13 +57,13 @@ If you're unsure what to pick up, open an issue with what you want to do and we' ## Development setup -This repo uses Nix flakes to keep the dev environment consistent. +This repo uses Nix flakes to keep the dev environment consistent (see repo root `flake.nix`). Typical workflow: ```sh -cd go-lcpd nix develop +cd go-lcpd make test ``` diff --git a/go-lcpd/flake.lock b/flake.lock similarity index 99% rename from go-lcpd/flake.lock rename to flake.lock index 388be40..a5f4006 100644 --- a/go-lcpd/flake.lock +++ b/flake.lock @@ -59,3 +59,4 @@ "root": "root", "version": 7 } + diff --git a/go-lcpd/flake.nix b/flake.nix similarity index 85% rename from go-lcpd/flake.nix rename to flake.nix index a053758..884b2f5 100644 --- a/go-lcpd/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "go-lcpd dev environment (pinned toolchain + regtest devnet)"; + description = "lightning-compute-protocol dev environment (pinned toolchain + regtest devnet)"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; @@ -57,11 +57,12 @@ export GOFLAGS="-buildvcs=false" echo "devshell ready" - echo " test: make test" - echo " regtest: make test-regtest" - echo " devnet: ./scripts/devnet up" + echo " test: make -C go-lcpd test" + echo " regtest: make -C go-lcpd test-regtest" + echo " devnet: go-lcpd/scripts/devnet up" ''; }; } ); } + diff --git a/go-lcpd/.envrc.sample b/go-lcpd/.envrc.sample index f4d093b..8799892 100644 --- a/go-lcpd/.envrc.sample +++ b/go-lcpd/.envrc.sample @@ -2,10 +2,10 @@ # direnv config for go-lcpd. # -# - use the go-lcpd flake via `nix develop` +# - use the repo root flake via `nix develop` # - run `direnv allow` once to enable auto-loading -use flake . +use flake .. # Optional: enable regtest integration tests (heavy). # export LCP_ITEST_REGTEST=1 diff --git a/go-lcpd/Makefile b/go-lcpd/Makefile index fee3fa3..71a7b80 100644 --- a/go-lcpd/Makefile +++ b/go-lcpd/Makefile @@ -1,12 +1,12 @@ .PHONY: test test-regtest test-regtest-custommsg test-regtest-grpc test-regtest-openai-serve lint tools gen fmt proto-deps devnet-up devnet-down devnet-status devnet-info # Nix-first workflow: -# - All targets are meant to run inside the go-lcpd devShell (`nix develop`). +# - All targets are meant to run inside the repo devShell (`nix develop` at repo root). # - If you invoke `make` outside the devShell, this Makefile re-execs itself via -# `nix develop -c make ...` so that tool versions are pinned by flake.lock. +# `nix develop .. -c make ...` so that tool versions are pinned by flake.lock. .DEFAULT_GOAL := test -NIX_DEVELOP ?= nix develop +NIX_DEVELOP ?= nix develop .. GOALS := $(if $(MAKECMDGOALS),$(MAKECMDGOALS),$(.DEFAULT_GOAL)) ifeq ($(strip $(IN_NIX_SHELL)),) diff --git a/go-lcpd/README.md b/go-lcpd/README.md index dc1c8f4..7882127 100644 --- a/go-lcpd/README.md +++ b/go-lcpd/README.md @@ -13,7 +13,7 @@ For the LCP wire protocol spec, see `../docs/protocol/` (e.g., `../docs/protocol Prerequisites: - Go 1.24.4+ (or a Go toolchain that supports module toolchain auto-download) -- Optional: Nix (flakes enabled) + direnv for a pinned toolchain (`flake.nix`) +- Optional: Nix (flakes enabled) + direnv for a pinned toolchain (repo root `../flake.nix`) If you use the optional Nix devShell, it includes Go / buf / golangci-lint v2 / and (when needed) bitcoind / lnd / jq. @@ -34,7 +34,7 @@ Notes: ```sh cd go-lcpd -nix develop +nix develop .. make gen make test diff --git a/go-lcpd/provider.devnet.yaml b/go-lcpd/provider.devnet.yaml new file mode 100644 index 0000000..459024d --- /dev/null +++ b/go-lcpd/provider.devnet.yaml @@ -0,0 +1,17 @@ +enabled: true +quote_ttl_seconds: 300 + +llm: + models: + gpt-5.2: + price: + input_msat_per_mtok: 1750000 + cached_input_msat_per_mtok: 175000 + output_msat_per_mtok: 14000000 + +# Optional: load-based surge pricing at quote-time. +pricing: + in_flight_surge: + threshold: 2 + per_job_bps: 500 # +5% per job above threshold + max_multiplier_bps: 30000 # 3.0x cap diff --git a/go-lcpd/scripts/devnet b/go-lcpd/scripts/devnet index d3a95b4..4bd77d3 100755 --- a/go-lcpd/scripts/devnet +++ b/go-lcpd/scripts/devnet @@ -52,7 +52,7 @@ Environment variables (optional): Notes: - Requires `bitcoind`, `bitcoin-cli`, `lnd`, and `lncli` on PATH. - - If you use the optional Nix devShell, you can run: `nix develop -c ./scripts/devnet up` + - If you use the optional Nix devShell, you can run: `nix develop .. -c ./scripts/devnet up` - All state is stored under ./.data/devnet/ (gitignored). EOF }