devel/crush: new port, crush 0.82.0
This commit is contained in:
26
devel/crush/Makefile
Normal file
26
devel/crush/Makefile
Normal file
@@ -0,0 +1,26 @@
|
||||
COMMENT = glamourous AI coding agent for the terminal
|
||||
|
||||
MODGO_MODNAME = github.com/charmbracelet/crush
|
||||
MODGO_VERSION = v0.82.0
|
||||
|
||||
DISTNAME = crush-${MODGO_VERSION}
|
||||
PKGNAME = crush-${MODGO_VERSION:S/v//}
|
||||
|
||||
CATEGORIES = devel
|
||||
|
||||
HOMEPAGE = https://github.com/charmbracelet/crush
|
||||
|
||||
# Functional Source License 1.1 (MIT Future License); source-available, not OSI
|
||||
PERMIT_PACKAGE = Yes
|
||||
|
||||
WANTLIB = c pthread
|
||||
|
||||
MODULES = lang/go
|
||||
|
||||
WRKDIST = ${WRKDIR}/${MODGO_MODNAME}@${MODGO_VERSION}
|
||||
|
||||
MODGO_LDFLAGS += -X ${MODGO_MODNAME}/internal/version.Version=${MODGO_VERSION}
|
||||
|
||||
.include "modules.inc"
|
||||
|
||||
.include <bsd.port.mk>
|
||||
2592
devel/crush/distinfo
Normal file
2592
devel/crush/distinfo
Normal file
File diff suppressed because it is too large
Load Diff
848
devel/crush/modules.inc
Normal file
848
devel/crush/modules.inc
Normal file
@@ -0,0 +1,848 @@
|
||||
MODGO_MODULES = \
|
||||
cel.dev/expr v0.25.2 \
|
||||
charm.land/bubbles/v2 v2.1.1 \
|
||||
charm.land/bubbletea/v2 v2.0.8 \
|
||||
charm.land/catwalk v0.49.2 \
|
||||
charm.land/fang/v2 v2.0.1 \
|
||||
charm.land/fantasy v0.35.1 \
|
||||
charm.land/glamour/v2 v2.0.1 \
|
||||
charm.land/lipgloss/v2 v2.0.5 \
|
||||
charm.land/log/v2 v2.0.0 \
|
||||
charm.land/x/vcr v0.1.1 \
|
||||
cloud.google.com/go v0.123.0 \
|
||||
cloud.google.com/go/auth v0.20.0 \
|
||||
cloud.google.com/go/auth/oauth2adapt v0.2.8 \
|
||||
cloud.google.com/go/compute/metadata v0.9.0 \
|
||||
cloud.google.com/go/iam v1.11.0 \
|
||||
cloud.google.com/go/longrunning v0.5.6 \
|
||||
cloud.google.com/go/monitoring v1.29.0 \
|
||||
cloud.google.com/go/storage v1.62.3 \
|
||||
cloud.google.com/go/translate v1.10.3 \
|
||||
cyphar.com/go-pathrs v0.2.1 \
|
||||
dario.cat/mergo v1.0.0 \
|
||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20221208032759-85de2813cf6b \
|
||||
filippo.io/edwards25519 v1.2.0 \
|
||||
git.sr.ht/~jackmordaunt/go-toast v1.1.2 \
|
||||
github.com/!azure!a!d/microsoft-authentication-library-for-go v1.2.2 \
|
||||
github.com/!azure/azure-sdk-for-go/sdk/azcore v1.17.0 \
|
||||
github.com/!azure/azure-sdk-for-go/sdk/azidentity v1.7.0 \
|
||||
github.com/!azure/azure-sdk-for-go/sdk/internal v1.10.0 \
|
||||
github.com/!click!house/ch-go v0.71.0 \
|
||||
github.com/!click!house/clickhouse-go/v2 v2.46.0 \
|
||||
github.com/!google!cloud!platform/opentelemetry-operations-go/detectors/gcp v1.33.0 \
|
||||
github.com/!google!cloud!platform/opentelemetry-operations-go/exporter/metric v0.57.0 \
|
||||
github.com/!google!cloud!platform/opentelemetry-operations-go/internal/resourcemapping v0.57.0 \
|
||||
github.com/!johannes!kaufmann/html-to-markdown v1.6.0 \
|
||||
github.com/!kyle!banks/depth v1.2.1 \
|
||||
github.com/!make!now!just/heredoc v1.0.0 \
|
||||
github.com/!microsoft/go-winio v0.6.2 \
|
||||
github.com/!netflix/go-expect v0.0.0-20220104043353-73e0943537d2 \
|
||||
github.com/!proton!mail/go-crypto v1.1.6 \
|
||||
github.com/!puerkito!bio/goquery v1.12.0 \
|
||||
github.com/!puerkito!bio/purell v1.1.1 \
|
||||
github.com/!puerkito!bio/urlesc v0.0.0-20170810143723-de5bf2ad4578 \
|
||||
github.com/!stack!exchange/wmi v1.2.1 \
|
||||
github.com/agentable/go-intl v0.2.11 \
|
||||
github.com/alecthomas/assert/v2 v2.11.0 \
|
||||
github.com/alecthomas/chroma/v2 v2.27.0 \
|
||||
github.com/alecthomas/repr v0.5.2 \
|
||||
github.com/andybalholm/brotli v1.2.1 \
|
||||
github.com/andybalholm/cascadia v1.3.3 \
|
||||
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be \
|
||||
github.com/antlr4-go/antlr/v4 v4.13.1 \
|
||||
github.com/ardanlabs/jinja v1.4.0 \
|
||||
github.com/ardanlabs/kronk v1.28.6 \
|
||||
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 \
|
||||
github.com/atotto/clipboard v0.1.4 \
|
||||
github.com/aws/aws-sdk-go-v2 v1.42.1 \
|
||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.13 \
|
||||
github.com/aws/aws-sdk-go-v2/config v1.32.27 \
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.19.26 \
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.30 \
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.30 \
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.30 \
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 \
|
||||
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.31 \
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.13 \
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.22 \
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.30 \
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.29 \
|
||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.104.0 \
|
||||
github.com/aws/aws-sdk-go-v2/service/signin v1.2.2 \
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.31.5 \
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.8 \
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.43.5 \
|
||||
github.com/aws/smithy-go v1.27.3 \
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 \
|
||||
github.com/aymanbagabas/go-udiff v0.4.1 \
|
||||
github.com/aymerick/douceur v0.2.0 \
|
||||
github.com/bahlo/generic-list-go v0.2.0 \
|
||||
github.com/beevik/ntp v0.3.0 \
|
||||
github.com/beorn7/perks v1.0.1 \
|
||||
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d \
|
||||
github.com/bits-and-blooms/bitset v1.24.4 \
|
||||
github.com/bmatcuk/doublestar/v4 v4.10.0 \
|
||||
github.com/bobuhiro11/gokvm v0.0.8-0.20231003020000-f53faca69d28 \
|
||||
github.com/buger/jsonparser v1.1.2 \
|
||||
github.com/cenkalti/backoff/v4 v4.1.3 \
|
||||
github.com/cenkalti/backoff/v5 v5.0.3 \
|
||||
github.com/cespare/xxhash/v2 v2.3.0 \
|
||||
github.com/charlievieth/fastwalk v1.0.14 \
|
||||
github.com/charmbracelet/anthropic-sdk-go v0.0.0-20260223140439-63879b0b8dab \
|
||||
github.com/charmbracelet/bubbles v0.15.1-0.20230123181021-a6a12c4a31eb \
|
||||
github.com/charmbracelet/bubbletea v0.24.1 \
|
||||
github.com/charmbracelet/colorprofile v0.4.3 \
|
||||
github.com/charmbracelet/harmonica v0.2.0 \
|
||||
github.com/charmbracelet/lipgloss v0.7.1 \
|
||||
github.com/charmbracelet/openai-go v0.0.0-20260617131321-5e4b9c18c4be \
|
||||
github.com/charmbracelet/ultraviolet v0.0.0-20260703014108-f5a850f9c2b7 \
|
||||
github.com/charmbracelet/x/ansi v0.11.7 \
|
||||
github.com/charmbracelet/x/editor v0.2.0 \
|
||||
github.com/charmbracelet/x/etag v0.2.0 \
|
||||
github.com/charmbracelet/x/exp/charmtone v0.0.0-20260527151214-009e6338d40d \
|
||||
github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f \
|
||||
github.com/charmbracelet/x/exp/ordered v0.1.0 \
|
||||
github.com/charmbracelet/x/exp/slice v0.0.0-20260622092256-25656177ba8e \
|
||||
github.com/charmbracelet/x/exp/strings v0.1.0 \
|
||||
github.com/charmbracelet/x/json v0.2.0 \
|
||||
github.com/charmbracelet/x/powernap v0.1.6 \
|
||||
github.com/charmbracelet/x/term v0.2.2 \
|
||||
github.com/charmbracelet/x/termios v0.1.1 \
|
||||
github.com/charmbracelet/x/windows v0.2.2 \
|
||||
github.com/clipperhouse/displaywidth v0.11.0 \
|
||||
github.com/clipperhouse/stringish v0.1.1 \
|
||||
github.com/clipperhouse/uax29/v2 v2.7.0 \
|
||||
github.com/cloudflare/circl v1.6.3 \
|
||||
github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 \
|
||||
github.com/cockroachdb/apd/v3 v3.2.3 \
|
||||
github.com/coder/websocket v1.8.14 \
|
||||
github.com/containerd/console v1.0.4-0.20230706203907-8f6c4e4faef5 \
|
||||
github.com/containerd/errdefs v1.0.0 \
|
||||
github.com/containerd/errdefs/pkg v0.3.0 \
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.7 \
|
||||
github.com/creack/goselect v0.1.2 \
|
||||
github.com/creack/pty v1.1.24 \
|
||||
github.com/cyphar/filepath-securejoin v0.6.1 \
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc \
|
||||
github.com/dchest/siphash v1.2.3 \
|
||||
github.com/denisbrodbeck/machineid v1.0.1 \
|
||||
github.com/disintegration/imaging v1.6.2 \
|
||||
github.com/distribution/reference v0.6.0 \
|
||||
github.com/dlclark/regexp2 v1.11.0 \
|
||||
github.com/dlclark/regexp2/v2 v2.2.1 \
|
||||
github.com/dnaeon/go-vcr v1.2.0 \
|
||||
github.com/docker/go-connections v0.7.0 \
|
||||
github.com/docker/go-units v0.5.0 \
|
||||
github.com/dustin/go-humanize v1.0.1 \
|
||||
github.com/ebitengine/purego v0.10.1 \
|
||||
github.com/elastic/go-sysinfo v1.15.4 \
|
||||
github.com/elastic/go-windows v1.0.2 \
|
||||
github.com/elazarl/goproxy v1.7.2 \
|
||||
github.com/eliben/go-sentencepiece v0.7.0 \
|
||||
github.com/emirpasic/gods v1.18.1 \
|
||||
github.com/envoyproxy/go-control-plane v0.14.0 \
|
||||
github.com/envoyproxy/go-control-plane/envoy v1.37.0 \
|
||||
github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 \
|
||||
github.com/envoyproxy/protoc-gen-validate v1.3.3 \
|
||||
github.com/esiqveland/notify v0.13.3 \
|
||||
github.com/felixge/httpsnoop v1.1.0 \
|
||||
github.com/florianl/go-tc v0.4.5-0.20240822175159-7926c32f7299 \
|
||||
github.com/fsnotify/fsnotify v1.9.0 \
|
||||
github.com/gen2brain/beeep v0.11.2 \
|
||||
github.com/ghodss/yaml v1.0.0 \
|
||||
github.com/gliderlabs/ssh v0.3.8 \
|
||||
github.com/go-faster/city v1.0.1 \
|
||||
github.com/go-faster/errors v0.7.1 \
|
||||
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 \
|
||||
github.com/go-git/go-billy/v5 v5.9.0 \
|
||||
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 \
|
||||
github.com/go-git/go-git/v5 v5.19.1 \
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20231223183121-56fa3ac82ce7 \
|
||||
github.com/go-jose/go-jose/v4 v4.1.4 \
|
||||
github.com/go-json-experiment/json v0.0.0-20260623181947-01eb4420fa68 \
|
||||
github.com/go-logfmt/logfmt v0.6.0 \
|
||||
github.com/go-logr/logr v1.4.3 \
|
||||
github.com/go-logr/stdr v1.2.2 \
|
||||
github.com/go-ole/go-ole v1.3.0 \
|
||||
github.com/go-openapi/jsonpointer v0.19.5 \
|
||||
github.com/go-openapi/jsonreference v0.20.0 \
|
||||
github.com/go-openapi/spec v0.20.6 \
|
||||
github.com/go-openapi/swag v0.19.15 \
|
||||
github.com/go-quicktest/qt v1.101.0 \
|
||||
github.com/go-sql-driver/mysql v1.10.0 \
|
||||
github.com/go-viper/mapstructure/v2 v2.5.0 \
|
||||
github.com/goccy/go-json v0.10.5 \
|
||||
github.com/goccy/go-yaml v1.19.2 \
|
||||
github.com/godbus/dbus/v5 v5.2.2 \
|
||||
github.com/gojuno/minimock/v3 v3.0.8 \
|
||||
github.com/golang-jwt/jwt/v4 v4.5.2 \
|
||||
github.com/golang-jwt/jwt/v5 v5.3.1 \
|
||||
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 \
|
||||
github.com/golang-sql/sqlexp v0.1.0 \
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 \
|
||||
github.com/golang/glog v1.2.5 \
|
||||
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 \
|
||||
github.com/golang/protobuf v1.5.4 \
|
||||
github.com/golang/snappy v0.0.4 \
|
||||
github.com/google/go-cmp v0.7.0 \
|
||||
github.com/google/go-pkcs11 v0.3.0 \
|
||||
github.com/google/go-tpm v0.9.2-0.20240919181259-d96ccf715685 \
|
||||
github.com/google/jsonschema-go v0.4.3 \
|
||||
github.com/google/martian/v3 v3.3.3 \
|
||||
github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e \
|
||||
github.com/google/renameio/v2 v2.0.2 \
|
||||
github.com/google/s2a-go v0.1.9 \
|
||||
github.com/google/uuid v1.6.0 \
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.17 \
|
||||
github.com/googleapis/gax-go/v2 v2.22.0 \
|
||||
github.com/gopacket/gopacket v1.2.0 \
|
||||
github.com/gorilla/css v1.0.1 \
|
||||
github.com/gorilla/websocket v1.5.3 \
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 \
|
||||
github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.73 \
|
||||
github.com/hashicorp/go-cleanhttp v0.5.2 \
|
||||
github.com/hashicorp/go-getter v1.8.6 \
|
||||
github.com/hashicorp/go-version v1.9.0 \
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.7 \
|
||||
github.com/hexops/gotextdiff v1.0.3 \
|
||||
github.com/hugelgupf/go-shlex v0.0.0-20200702092117-c80c9d0918fa \
|
||||
github.com/hugelgupf/vmtest v0.0.0-20240307030256-5d9f3d34a58d \
|
||||
github.com/hybridgroup/yzma v1.18.0 \
|
||||
github.com/inconshreveable/mousetrap v1.1.0 \
|
||||
github.com/insomniacslk/dhcp v0.0.0-20231206064809-8c70d406f6d2 \
|
||||
github.com/invopop/jsonschema v0.14.0 \
|
||||
github.com/ishidawataru/sctp v0.0.0-20230406120618-7ff4192f6ff2 \
|
||||
github.com/itchyny/go-yaml v0.0.0-20251001235044-fca9a0999f15 \
|
||||
github.com/itchyny/gojq v0.12.19 \
|
||||
github.com/itchyny/timefmt-go v0.1.8 \
|
||||
github.com/jackc/pgpassfile v1.0.0 \
|
||||
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 \
|
||||
github.com/jackc/pgx/v5 v5.10.0 \
|
||||
github.com/jackc/puddle/v2 v2.2.2 \
|
||||
github.com/jackmordaunt/icns/v3 v3.0.1 \
|
||||
github.com/jaypipes/ghw v0.12.0 \
|
||||
github.com/jaypipes/pcidb v1.0.0 \
|
||||
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 \
|
||||
github.com/jezek/xgb v1.1.1 \
|
||||
github.com/joho/godotenv v1.5.1 \
|
||||
github.com/jonboulle/clockwork v0.5.0 \
|
||||
github.com/jordanella/go-ansi-paintbrush v0.0.0-20240728195301-b7ad996ecf3d \
|
||||
github.com/josharian/intern v1.0.0 \
|
||||
github.com/josharian/native v1.1.0 \
|
||||
github.com/jsimonetti/rtnetlink v1.3.5 \
|
||||
github.com/jupiterrider/ffi v0.7.0 \
|
||||
github.com/kaey/framebuffer v0.0.0-20140402104929-7b385489a1ff \
|
||||
github.com/kaptinlin/go-i18n v0.6.0 \
|
||||
github.com/kaptinlin/jsonpointer v0.4.27 \
|
||||
github.com/kaptinlin/jsonschema v0.9.3 \
|
||||
github.com/kaptinlin/messageformat-go/mf1 v0.8.2 \
|
||||
github.com/kevinburke/ssh_config v1.2.0 \
|
||||
github.com/klauspost/compress v1.18.6 \
|
||||
github.com/klauspost/cpuid/v2 v2.3.0 \
|
||||
github.com/klauspost/pgzip v1.2.6 \
|
||||
github.com/knz/bubbline v0.0.0-20230717192058-486954f9953f \
|
||||
github.com/kr/fs v0.1.0 \
|
||||
github.com/kr/pretty v0.3.1 \
|
||||
github.com/kr/pty v1.1.1 \
|
||||
github.com/kr/text v0.2.0 \
|
||||
github.com/kylelemons/godebug v1.1.0 \
|
||||
github.com/lucasb-eyer/go-colorful v1.4.0 \
|
||||
github.com/mailru/easyjson v0.7.7 \
|
||||
github.com/mattn/go-isatty v0.0.22 \
|
||||
github.com/mattn/go-localereader v0.0.1 \
|
||||
github.com/mattn/go-runewidth v0.0.24 \
|
||||
github.com/mdlayher/netlink v1.7.2 \
|
||||
github.com/mdlayher/packet v1.1.2 \
|
||||
github.com/mdlayher/socket v0.5.1 \
|
||||
github.com/mdlayher/vsock v1.2.1 \
|
||||
github.com/mfridman/interpolate v0.0.2 \
|
||||
github.com/mfridman/xflag v0.1.0 \
|
||||
github.com/microcosm-cc/bluemonday v1.0.27 \
|
||||
github.com/microsoft/go-mssqldb v1.10.0 \
|
||||
github.com/mitchellh/go-homedir v1.1.0 \
|
||||
github.com/mitchellh/mapstructure v1.5.0 \
|
||||
github.com/moby/docker-image-spec v1.3.1 \
|
||||
github.com/moby/moby/api v1.55.0 \
|
||||
github.com/moby/moby/client v0.5.0 \
|
||||
github.com/modelcontextprotocol/go-sdk v1.6.1 \
|
||||
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 \
|
||||
github.com/muesli/cancelreader v0.2.2 \
|
||||
github.com/muesli/mango v0.1.0 \
|
||||
github.com/muesli/mango-cobra v1.2.0 \
|
||||
github.com/muesli/mango-pflag v0.1.0 \
|
||||
github.com/muesli/reflow v0.3.0 \
|
||||
github.com/muesli/roff v0.1.0 \
|
||||
github.com/muesli/termenv v0.15.1 \
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 \
|
||||
github.com/nanmu42/limitio v1.0.0 \
|
||||
github.com/ncruces/go-sqlite3 v0.35.1 \
|
||||
github.com/ncruces/go-sqlite3-wasm/v3 v3.1.35302 \
|
||||
github.com/ncruces/go-strftime v1.0.0 \
|
||||
github.com/ncruces/julianday v1.0.0 \
|
||||
github.com/ncruces/sort v1.0.0 \
|
||||
github.com/ncruces/wasm2go v0.4.10 \
|
||||
github.com/ncruces/wbt v1.0.0 \
|
||||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 \
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e \
|
||||
github.com/nxadm/tail v1.4.11 \
|
||||
github.com/onsi/gomega v1.34.1 \
|
||||
github.com/opencontainers/go-digest v1.0.0 \
|
||||
github.com/opencontainers/image-spec v1.1.1 \
|
||||
github.com/orangecms/go-framebuffer v0.0.0-20200613202404-a0700d90c330 \
|
||||
github.com/orian/flakyhttp v0.1.1 \
|
||||
github.com/packetcap/go-pcap v0.0.0-20240528124601-8c87ecf5dbc5 \
|
||||
github.com/paulmach/orb v0.13.0 \
|
||||
github.com/pb33f/ordered-map/v2 v2.3.1 \
|
||||
github.com/peterh/liner v1.2.2 \
|
||||
github.com/pierrec/lz4/v4 v4.1.26 \
|
||||
github.com/pjbgf/sha1cd v0.6.0 \
|
||||
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c \
|
||||
github.com/pkg/errors v0.9.1 \
|
||||
github.com/pkg/sftp v1.13.9 \
|
||||
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 \
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 \
|
||||
github.com/posthog/posthog-go v1.17.5 \
|
||||
github.com/pressly/goose/v3 v3.27.2 \
|
||||
github.com/prometheus/client_golang v1.23.2 \
|
||||
github.com/prometheus/client_model v0.6.2 \
|
||||
github.com/prometheus/common v0.69.0 \
|
||||
github.com/prometheus/procfs v0.20.1 \
|
||||
github.com/psanford/httpreadat v0.1.0 \
|
||||
github.com/qjebbs/go-jsons v1.0.0-alpha.6 \
|
||||
github.com/rck/unit v0.0.3 \
|
||||
github.com/rekby/gpt v0.0.0-20200219180433-a930afbc6edc \
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec \
|
||||
github.com/rivo/uniseg v0.4.7 \
|
||||
github.com/rogpeppe/go-internal v1.14.1 \
|
||||
github.com/russross/blackfriday/v2 v2.1.0 \
|
||||
github.com/safchain/ethtool v0.0.0-20200218184317-f459e2d13664 \
|
||||
github.com/sahilm/fuzzy v0.1.3 \
|
||||
github.com/sebdah/goldie/v2 v2.5.3 \
|
||||
github.com/segmentio/asm v1.2.1 \
|
||||
github.com/segmentio/encoding v0.5.4 \
|
||||
github.com/sergeymakinen/go-bmp v1.0.0 \
|
||||
github.com/sergeymakinen/go-ico v1.0.0-beta.0 \
|
||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 \
|
||||
github.com/sethvargo/go-retry v0.3.0 \
|
||||
github.com/shopspring/decimal v1.4.0 \
|
||||
github.com/shurcoo!l/sanitized_anchor_name v1.0.0 \
|
||||
github.com/sirupsen/logrus v1.9.3 \
|
||||
github.com/skeema/knownhosts v1.3.1 \
|
||||
github.com/sourcegraph/jsonrpc2 v0.2.1 \
|
||||
github.com/spf13/cobra v1.10.2 \
|
||||
github.com/spf13/pflag v1.0.9 \
|
||||
github.com/spiffe/go-spiffe/v2 v2.8.1 \
|
||||
github.com/stretchr/objx v0.5.2 \
|
||||
github.com/stretchr/testify v1.11.1 \
|
||||
github.com/swaggo/files/v2 v2.0.0 \
|
||||
github.com/swaggo/http-swagger/v2 v2.0.2 \
|
||||
github.com/swaggo/swag v1.16.6 \
|
||||
github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af \
|
||||
github.com/therootcompany/xz v1.0.1 \
|
||||
github.com/tidwall/gjson v1.19.0 \
|
||||
github.com/tidwall/match v1.1.1 \
|
||||
github.com/tidwall/pretty v1.2.1 \
|
||||
github.com/tidwall/sjson v1.2.5 \
|
||||
github.com/tklauser/go-sysconf v0.3.14 \
|
||||
github.com/tklauser/numcpus v0.8.0 \
|
||||
github.com/tursodatabase/libsql-client-go v0.0.0-20251219100830-236aa1ff8acc \
|
||||
github.com/u-root/cpuid v0.0.1-0.20250320140348-cc5fe81d966c \
|
||||
github.com/u-root/gobusybox/src v0.0.0-20250101170133-2e884e4509c7 \
|
||||
github.com/u-root/iscsinl v0.1.1-0.20210528121423-84c32645822a \
|
||||
github.com/u-root/mkuimage v0.0.0-20250701161901-6a9871f2e64f \
|
||||
github.com/u-root/u-root v0.14.1-0.20250807200646-5e7721023dc7 \
|
||||
github.com/u-root/uio v0.0.0-20240224005618-d2acac8f3701 \
|
||||
github.com/ulikunitz/xz v0.5.15 \
|
||||
github.com/urfave/cli v1.22.17 \
|
||||
github.com/urfave/cli/v2 v2.3.0 \
|
||||
github.com/vertica/vertica-sql-go v1.3.6 \
|
||||
github.com/vishvananda/netlink v1.3.0 \
|
||||
github.com/vishvananda/netns v0.0.4 \
|
||||
github.com/vtolstov/go-ioctl v0.0.0-20151206205506-6be9cced4810 \
|
||||
github.com/wk8/go-ordered-map/v2 v2.1.8 \
|
||||
github.com/xanzy/ssh-agent v0.3.3 \
|
||||
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e \
|
||||
github.com/xyproto/randomstring v1.0.5 \
|
||||
github.com/ydb-platform/ydb-go-genproto v0.0.0-20260428144813-1c07baab7f7b \
|
||||
github.com/ydb-platform/ydb-go-sdk/v3 v3.141.1 \
|
||||
github.com/yosida95/uritemplate/v3 v3.0.2 \
|
||||
github.com/yuin/goldmark v1.7.8 \
|
||||
github.com/yuin/goldmark-emoji v1.0.5 \
|
||||
github.com/zeebo/assert v1.3.0 \
|
||||
github.com/zeebo/errs v1.4.0 \
|
||||
github.com/zeebo/xxh3 v1.1.0 \
|
||||
github.com/ziutek/mymysql v1.5.4 \
|
||||
go.bug.st/serial v1.6.2 \
|
||||
go.opencensus.io v0.24.0 \
|
||||
go.opentelemetry.io/auto/sdk v1.2.1 \
|
||||
go.opentelemetry.io/contrib/detectors/gcp v1.44.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.69.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0 \
|
||||
go.opentelemetry.io/otel v1.44.0 \
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0 \
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0 \
|
||||
go.opentelemetry.io/otel/metric v1.44.0 \
|
||||
go.opentelemetry.io/otel/sdk v1.44.0 \
|
||||
go.opentelemetry.io/otel/sdk/metric v1.44.0 \
|
||||
go.opentelemetry.io/otel/trace v1.44.0 \
|
||||
go.opentelemetry.io/proto/otlp v1.10.0 \
|
||||
go.uber.org/goleak v1.3.0 \
|
||||
go.uber.org/multierr v1.11.0 \
|
||||
go.yaml.in/yaml/v2 v2.4.4 \
|
||||
go.yaml.in/yaml/v3 v3.0.4 \
|
||||
go.yaml.in/yaml/v4 v4.0.0-rc.3 \
|
||||
golang.design/x/clipboard v0.8.0 \
|
||||
golang.design/x/x11 v0.2.0 \
|
||||
golang.org/x/arch v0.2.0 \
|
||||
golang.org/x/crypto v0.53.0 \
|
||||
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f \
|
||||
golang.org/x/exp/shiny v0.0.0-20250606033433-dcc06ee1d476 \
|
||||
golang.org/x/image v0.43.0 \
|
||||
golang.org/x/mobile v0.0.0-20250606033058-a2a15c67f36f \
|
||||
golang.org/x/mod v0.36.0 \
|
||||
golang.org/x/net v0.56.0 \
|
||||
golang.org/x/oauth2 v0.36.0 \
|
||||
golang.org/x/sync v0.21.0 \
|
||||
golang.org/x/sys v0.46.0 \
|
||||
golang.org/x/telemetry v0.0.0-20260508192327-42602be52be6 \
|
||||
golang.org/x/term v0.44.0 \
|
||||
golang.org/x/text v0.38.0 \
|
||||
golang.org/x/time v0.15.0 \
|
||||
golang.org/x/tools v0.45.0 \
|
||||
golang.org/x/tools/go/expect v0.1.1-deprecated \
|
||||
golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated \
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 \
|
||||
gonum.org/v1/gonum v0.17.0 \
|
||||
google.golang.org/api v0.286.0 \
|
||||
google.golang.org/appengine v1.6.8 \
|
||||
google.golang.org/genai v1.62.0 \
|
||||
google.golang.org/genproto v0.0.0-20260622175928-b703f567277d \
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20260622175928-b703f567277d \
|
||||
google.golang.org/genproto/googleapis/bytestream v0.0.0-20260610212136-7ab31c22f7ad \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260622175928-b703f567277d \
|
||||
google.golang.org/grpc v1.81.1 \
|
||||
google.golang.org/protobuf v1.36.11 \
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c \
|
||||
gopkg.in/dnaeon/go-vcr.v4 v4.0.6-0.20251110073552-01de4eb40290 \
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 \
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 \
|
||||
gopkg.in/warnings.v0 v0.1.2 \
|
||||
gopkg.in/yaml.v2 v2.4.0 \
|
||||
gopkg.in/yaml.v3 v3.0.1 \
|
||||
howett.net/plist v1.0.1 \
|
||||
lukechampine.com/adiantum v1.1.1 \
|
||||
modernc.org/cc/v4 v4.28.4 \
|
||||
modernc.org/ccgo/v4 v4.34.4 \
|
||||
modernc.org/fileutil v1.4.0 \
|
||||
modernc.org/gc/v2 v2.6.5 \
|
||||
modernc.org/gc/v3 v3.1.3 \
|
||||
modernc.org/goabi0 v0.2.0 \
|
||||
modernc.org/libc v1.73.4 \
|
||||
modernc.org/mathutil v1.7.1 \
|
||||
modernc.org/memory v1.11.0 \
|
||||
modernc.org/opt v0.2.0 \
|
||||
modernc.org/sortutil v1.2.1 \
|
||||
modernc.org/sqlite v1.53.0 \
|
||||
modernc.org/strutil v1.2.1 \
|
||||
modernc.org/token v1.1.0 \
|
||||
mvdan.cc/editorconfig v0.3.0 \
|
||||
mvdan.cc/sh/moreinterp v0.0.0-20250902163504-3cf4fd5717a5 \
|
||||
mvdan.cc/sh/v3 v3.13.1 \
|
||||
pack.ag/tftp v1.0.1-0.20181129014014-07909dfbde3c \
|
||||
sigs.k8s.io/yaml v1.3.0
|
||||
|
||||
MODGO_MODFILES = \
|
||||
cel.dev/expr v0.24.0 \
|
||||
cel.dev/expr v0.25.1 \
|
||||
charm.land/bubbletea/v2 v2.0.7 \
|
||||
charm.land/lipgloss/v2 v2.0.1 \
|
||||
charm.land/lipgloss/v2 v2.0.4 \
|
||||
cloud.google.com/go v0.112.2 \
|
||||
cloud.google.com/go v0.116.0 \
|
||||
cloud.google.com/go/auth v0.15.0 \
|
||||
cloud.google.com/go/auth v0.16.4 \
|
||||
cloud.google.com/go/auth v0.3.0 \
|
||||
cloud.google.com/go/auth v0.7.2 \
|
||||
cloud.google.com/go/auth v0.9.3 \
|
||||
cloud.google.com/go/auth/oauth2adapt v0.2.2 \
|
||||
cloud.google.com/go/auth/oauth2adapt v0.2.3 \
|
||||
cloud.google.com/go/compute/metadata v0.3.0 \
|
||||
cloud.google.com/go/compute/metadata v0.5.0 \
|
||||
cloud.google.com/go/compute/metadata v0.6.0 \
|
||||
cloud.google.com/go/compute/metadata v0.8.0 \
|
||||
cloud.google.com/go/iam v1.5.2 \
|
||||
cloud.google.com/go/monitoring v1.24.2 \
|
||||
cloud.google.com/go/storage v1.56.0 \
|
||||
github.com/!azure/azure-sdk-for-go/sdk/azcore v1.12.0 \
|
||||
github.com/!google!cloud!platform/opentelemetry-operations-go/detectors/gcp v1.27.0 \
|
||||
github.com/!google!cloud!platform/opentelemetry-operations-go/detectors/gcp v1.31.0 \
|
||||
github.com/!google!cloud!platform/opentelemetry-operations-go/exporter/metric v0.53.0 \
|
||||
github.com/!google!cloud!platform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 \
|
||||
github.com/!proton!mail/go-crypto v0.0.0-20221026131551-cf6655e29de4 \
|
||||
github.com/!puerkito!bio/goquery v1.9.2 \
|
||||
github.com/alecthomas/chroma/v2 v2.14.0 \
|
||||
github.com/andybalholm/brotli v1.1.1 \
|
||||
github.com/andybalholm/cascadia v1.3.2 \
|
||||
github.com/aws/aws-sdk-go-v2 v1.30.3 \
|
||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.3 \
|
||||
github.com/aws/aws-sdk-go-v2/config v1.27.27 \
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.27 \
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 \
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 \
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 \
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 \
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 \
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 \
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 \
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 \
|
||||
github.com/aws/smithy-go v1.20.3 \
|
||||
github.com/aws/smithy-go v1.27.1 \
|
||||
github.com/aymanbagabas/go-udiff v0.2.0 \
|
||||
github.com/aymanbagabas/go-udiff v0.3.1 \
|
||||
github.com/buger/jsonparser v1.1.1 \
|
||||
github.com/charmbracelet/colorprofile v0.4.2 \
|
||||
github.com/charmbracelet/ultraviolet v0.0.0-20251205161215-1948445e3318 \
|
||||
github.com/charmbracelet/ultraviolet v0.0.0-20260205113103-524a6607adb8 \
|
||||
github.com/charmbracelet/ultraviolet v0.0.0-20260525132238-948f4557a654 \
|
||||
github.com/charmbracelet/x/ansi v0.11.6 \
|
||||
github.com/charmbracelet/x/exp/charmtone v0.0.0-20250603201427-c31516f43444 \
|
||||
github.com/charmbracelet/x/exp/golden v0.0.0-20241212170349-ad4b7ae0f25f \
|
||||
github.com/charmbracelet/x/exp/slice v0.0.0-20250327172914-2fdc97757edf \
|
||||
github.com/charmbracelet/x/exp/slice v0.0.0-20250904123553-b4e2667e5ad5 \
|
||||
github.com/clipperhouse/displaywidth v0.9.0 \
|
||||
github.com/clipperhouse/uax29/v2 v2.2.0 \
|
||||
github.com/clipperhouse/uax29/v2 v2.3.0 \
|
||||
github.com/clipperhouse/uax29/v2 v2.5.0 \
|
||||
github.com/cloudflare/circl v1.6.1 \
|
||||
github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 \
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d \
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.6 \
|
||||
github.com/creack/pty v1.1.9 \
|
||||
github.com/davecgh/go-spew v1.1.0 \
|
||||
github.com/davecgh/go-spew v1.1.1 \
|
||||
github.com/envoyproxy/go-control-plane/envoy v1.32.4 \
|
||||
github.com/envoyproxy/protoc-gen-validate v1.2.1 \
|
||||
github.com/felixge/httpsnoop v1.0.4 \
|
||||
github.com/fsnotify/fsnotify v1.6.0 \
|
||||
github.com/gliderlabs/ssh v0.1.2-0.20181113160402-cbabf5414432 \
|
||||
github.com/go-jose/go-jose/v4 v4.0.5 \
|
||||
github.com/go-logr/logr v1.2.2 \
|
||||
github.com/go-logr/logr v1.4.1 \
|
||||
github.com/go-logr/logr v1.4.2 \
|
||||
github.com/go-ole/go-ole v1.2.6 \
|
||||
github.com/go-openapi/jsonpointer v0.19.3 \
|
||||
github.com/go-openapi/jsonreference v0.19.6 \
|
||||
github.com/go-openapi/spec v0.20.4 \
|
||||
github.com/go-openapi/swag v0.19.5 \
|
||||
github.com/godbus/dbus/v5 v5.1.0 \
|
||||
github.com/golang-jwt/jwt/v5 v5.2.1 \
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da \
|
||||
github.com/golang/protobuf v1.5.0 \
|
||||
github.com/google/go-cmp v0.6.0 \
|
||||
github.com/google/s2a-go v0.1.7 \
|
||||
github.com/google/s2a-go v0.1.8 \
|
||||
github.com/google/uuid v1.3.0 \
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.14 \
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.16 \
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.2 \
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.4 \
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.5 \
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.6 \
|
||||
github.com/googleapis/gax-go/v2 v2.12.3 \
|
||||
github.com/googleapis/gax-go/v2 v2.14.1 \
|
||||
github.com/googleapis/gax-go/v2 v2.15.0 \
|
||||
github.com/googleapis/gax-go/v2 v2.21.0 \
|
||||
github.com/gorilla/websocket v1.4.1 \
|
||||
github.com/inconshreveable/mousetrap v1.0.0 \
|
||||
github.com/invopop/jsonschema v0.13.0 \
|
||||
github.com/kevinburke/ssh_config v1.1.0 \
|
||||
github.com/klauspost/compress v1.17.11 \
|
||||
github.com/klauspost/compress v1.17.4 \
|
||||
github.com/klauspost/compress v1.18.5 \
|
||||
github.com/klauspost/cpuid/v2 v2.2.10 \
|
||||
github.com/kr/pretty v0.1.0 \
|
||||
github.com/kr/text v0.1.0 \
|
||||
github.com/lucasb-eyer/go-colorful v1.2.0 \
|
||||
github.com/lucasb-eyer/go-colorful v1.3.0 \
|
||||
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63 \
|
||||
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e \
|
||||
github.com/mailru/easyjson v0.7.6 \
|
||||
github.com/mattn/go-isatty v0.0.20 \
|
||||
github.com/mattn/go-isatty v0.0.21 \
|
||||
github.com/mattn/go-runewidth v0.0.14 \
|
||||
github.com/mattn/go-runewidth v0.0.19 \
|
||||
github.com/mattn/go-runewidth v0.0.20 \
|
||||
github.com/mattn/go-runewidth v0.0.23 \
|
||||
github.com/pierrec/lz4/v4 v4.1.14 \
|
||||
github.com/pierrec/lz4/v4 v4.1.22 \
|
||||
github.com/pkg/errors v0.8.1 \
|
||||
github.com/pmezard/go-difflib v1.0.0 \
|
||||
github.com/prometheus/common v0.66.1 \
|
||||
github.com/prometheus/procfs v0.16.1 \
|
||||
github.com/rivo/uniseg v0.4.4 \
|
||||
github.com/rogpeppe/go-internal v1.12.0 \
|
||||
github.com/russross/blackfriday/v2 v2.0.1 \
|
||||
github.com/sahilm/fuzzy v0.1.0 \
|
||||
github.com/segmentio/asm v1.1.3 \
|
||||
github.com/sergi/go-diff v1.0.0 \
|
||||
github.com/sergi/go-diff v1.3.1 \
|
||||
github.com/spf13/cobra v1.5.0 \
|
||||
github.com/spf13/cobra v1.9.1 \
|
||||
github.com/spf13/pflag v1.0.5 \
|
||||
github.com/spf13/pflag v1.0.6 \
|
||||
github.com/spf13/pflag v1.0.7 \
|
||||
github.com/spiffe/go-spiffe/v2 v2.5.0 \
|
||||
github.com/spiffe/go-spiffe/v2 v2.6.0 \
|
||||
github.com/stretchr/objx v0.1.0 \
|
||||
github.com/stretchr/objx v0.4.0 \
|
||||
github.com/stretchr/objx v0.5.0 \
|
||||
github.com/stretchr/testify v1.10.0 \
|
||||
github.com/stretchr/testify v1.3.0 \
|
||||
github.com/stretchr/testify v1.4.0 \
|
||||
github.com/stretchr/testify v1.6.1 \
|
||||
github.com/stretchr/testify v1.7.0 \
|
||||
github.com/stretchr/testify v1.7.1 \
|
||||
github.com/stretchr/testify v1.8.0 \
|
||||
github.com/stretchr/testify v1.8.4 \
|
||||
github.com/stretchr/testify v1.9.0 \
|
||||
github.com/swaggo/swag v1.8.1 \
|
||||
github.com/tidwall/gjson v1.14.2 \
|
||||
github.com/tidwall/gjson v1.18.0 \
|
||||
github.com/tidwall/pretty v1.2.0 \
|
||||
github.com/ulikunitz/xz v0.5.11 \
|
||||
github.com/yuin/goldmark v1.4.13 \
|
||||
github.com/yuin/goldmark v1.7.1 \
|
||||
go.opentelemetry.io/auto/sdk v1.1.0 \
|
||||
go.opentelemetry.io/contrib/detectors/gcp v1.36.0 \
|
||||
go.opentelemetry.io/contrib/detectors/gcp v1.42.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 \
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 \
|
||||
go.opentelemetry.io/otel v1.24.0 \
|
||||
go.opentelemetry.io/otel v1.36.0 \
|
||||
go.opentelemetry.io/otel v1.38.0 \
|
||||
go.opentelemetry.io/otel v1.43.0 \
|
||||
go.opentelemetry.io/otel/metric v1.24.0 \
|
||||
go.opentelemetry.io/otel/metric v1.36.0 \
|
||||
go.opentelemetry.io/otel/metric v1.43.0 \
|
||||
go.opentelemetry.io/otel/sdk v1.36.0 \
|
||||
go.opentelemetry.io/otel/sdk v1.43.0 \
|
||||
go.opentelemetry.io/otel/sdk/metric v1.36.0 \
|
||||
go.opentelemetry.io/otel/sdk/metric v1.43.0 \
|
||||
go.opentelemetry.io/otel/trace v1.24.0 \
|
||||
go.opentelemetry.io/otel/trace v1.36.0 \
|
||||
go.opentelemetry.io/otel/trace v1.38.0 \
|
||||
go.opentelemetry.io/otel/trace v1.43.0 \
|
||||
go.yaml.in/yaml/v2 v2.4.2 \
|
||||
go.yaml.in/yaml/v4 v4.0.0-rc.2 \
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 \
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 \
|
||||
golang.org/x/crypto v0.13.0 \
|
||||
golang.org/x/crypto v0.19.0 \
|
||||
golang.org/x/crypto v0.22.0 \
|
||||
golang.org/x/crypto v0.23.0 \
|
||||
golang.org/x/crypto v0.25.0 \
|
||||
golang.org/x/crypto v0.31.0 \
|
||||
golang.org/x/crypto v0.32.0 \
|
||||
golang.org/x/crypto v0.36.0 \
|
||||
golang.org/x/crypto v0.40.0 \
|
||||
golang.org/x/crypto v0.41.0 \
|
||||
golang.org/x/crypto v0.47.0 \
|
||||
golang.org/x/crypto v0.49.0 \
|
||||
golang.org/x/crypto v0.50.0 \
|
||||
golang.org/x/crypto v0.52.0 \
|
||||
golang.org/x/exp v0.0.0-20220909182711-5c715a9e8561 \
|
||||
golang.org/x/exp v0.0.0-20231006140011-7918f672742d \
|
||||
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 \
|
||||
golang.org/x/exp/shiny v0.0.0-20230817173708-d852ddb80c63 \
|
||||
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 \
|
||||
golang.org/x/image v0.14.0 \
|
||||
golang.org/x/image v0.18.0 \
|
||||
golang.org/x/image v0.28.0 \
|
||||
golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a \
|
||||
golang.org/x/mod v0.12.0 \
|
||||
golang.org/x/mod v0.15.0 \
|
||||
golang.org/x/mod v0.17.0 \
|
||||
golang.org/x/mod v0.24.0 \
|
||||
golang.org/x/mod v0.25.0 \
|
||||
golang.org/x/mod v0.26.0 \
|
||||
golang.org/x/mod v0.29.0 \
|
||||
golang.org/x/mod v0.35.0 \
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 \
|
||||
golang.org/x/mod v0.8.0 \
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 \
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 \
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b \
|
||||
golang.org/x/net v0.10.0 \
|
||||
golang.org/x/net v0.15.0 \
|
||||
golang.org/x/net v0.21.0 \
|
||||
golang.org/x/net v0.24.0 \
|
||||
golang.org/x/net v0.25.0 \
|
||||
golang.org/x/net v0.26.0 \
|
||||
golang.org/x/net v0.27.0 \
|
||||
golang.org/x/net v0.33.0 \
|
||||
golang.org/x/net v0.34.0 \
|
||||
golang.org/x/net v0.37.0 \
|
||||
golang.org/x/net v0.38.0 \
|
||||
golang.org/x/net v0.39.0 \
|
||||
golang.org/x/net v0.41.0 \
|
||||
golang.org/x/net v0.43.0 \
|
||||
golang.org/x/net v0.51.0 \
|
||||
golang.org/x/net v0.52.0 \
|
||||
golang.org/x/net v0.53.0 \
|
||||
golang.org/x/net v0.54.0 \
|
||||
golang.org/x/net v0.55.0 \
|
||||
golang.org/x/net v0.6.0 \
|
||||
golang.org/x/net v0.9.0 \
|
||||
golang.org/x/oauth2 v0.19.0 \
|
||||
golang.org/x/oauth2 v0.28.0 \
|
||||
golang.org/x/oauth2 v0.30.0 \
|
||||
golang.org/x/oauth2 v0.35.0 \
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58 \
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 \
|
||||
golang.org/x/sync v0.1.0 \
|
||||
golang.org/x/sync v0.10.0 \
|
||||
golang.org/x/sync v0.12.0 \
|
||||
golang.org/x/sync v0.15.0 \
|
||||
golang.org/x/sync v0.16.0 \
|
||||
golang.org/x/sync v0.17.0 \
|
||||
golang.org/x/sync v0.18.0 \
|
||||
golang.org/x/sync v0.19.0 \
|
||||
golang.org/x/sync v0.20.0 \
|
||||
golang.org/x/sync v0.3.0 \
|
||||
golang.org/x/sync v0.6.0 \
|
||||
golang.org/x/sync v0.7.0 \
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a \
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 \
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 \
|
||||
golang.org/x/sys v0.0.0-20211110154304-99a53858aa08 \
|
||||
golang.org/x/sys v0.0.0-20220204135822-1c1b9b1eba6a \
|
||||
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad \
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a \
|
||||
golang.org/x/sys v0.0.0-20220622161953-175b2fd9d664 \
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f \
|
||||
golang.org/x/sys v0.0.0-20220908164124-27713097b956 \
|
||||
golang.org/x/sys v0.1.0 \
|
||||
golang.org/x/sys v0.10.0 \
|
||||
golang.org/x/sys v0.12.0 \
|
||||
golang.org/x/sys v0.13.0 \
|
||||
golang.org/x/sys v0.15.0 \
|
||||
golang.org/x/sys v0.17.0 \
|
||||
golang.org/x/sys v0.19.0 \
|
||||
golang.org/x/sys v0.20.0 \
|
||||
golang.org/x/sys v0.21.0 \
|
||||
golang.org/x/sys v0.22.0 \
|
||||
golang.org/x/sys v0.26.0 \
|
||||
golang.org/x/sys v0.27.0 \
|
||||
golang.org/x/sys v0.28.0 \
|
||||
golang.org/x/sys v0.29.0 \
|
||||
golang.org/x/sys v0.30.0 \
|
||||
golang.org/x/sys v0.31.0 \
|
||||
golang.org/x/sys v0.33.0 \
|
||||
golang.org/x/sys v0.34.0 \
|
||||
golang.org/x/sys v0.35.0 \
|
||||
golang.org/x/sys v0.36.0 \
|
||||
golang.org/x/sys v0.38.0 \
|
||||
golang.org/x/sys v0.40.0 \
|
||||
golang.org/x/sys v0.41.0 \
|
||||
golang.org/x/sys v0.42.0 \
|
||||
golang.org/x/sys v0.43.0 \
|
||||
golang.org/x/sys v0.44.0 \
|
||||
golang.org/x/sys v0.45.0 \
|
||||
golang.org/x/sys v0.5.0 \
|
||||
golang.org/x/sys v0.7.0 \
|
||||
golang.org/x/sys v0.8.0 \
|
||||
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2 \
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 \
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 \
|
||||
golang.org/x/term v0.12.0 \
|
||||
golang.org/x/term v0.17.0 \
|
||||
golang.org/x/term v0.19.0 \
|
||||
golang.org/x/term v0.20.0 \
|
||||
golang.org/x/term v0.27.0 \
|
||||
golang.org/x/term v0.30.0 \
|
||||
golang.org/x/term v0.41.0 \
|
||||
golang.org/x/term v0.5.0 \
|
||||
golang.org/x/term v0.7.0 \
|
||||
golang.org/x/term v0.8.0 \
|
||||
golang.org/x/text v0.13.0 \
|
||||
golang.org/x/text v0.14.0 \
|
||||
golang.org/x/text v0.15.0 \
|
||||
golang.org/x/text v0.16.0 \
|
||||
golang.org/x/text v0.21.0 \
|
||||
golang.org/x/text v0.23.0 \
|
||||
golang.org/x/text v0.24.0 \
|
||||
golang.org/x/text v0.27.0 \
|
||||
golang.org/x/text v0.28.0 \
|
||||
golang.org/x/text v0.3.0 \
|
||||
golang.org/x/text v0.3.3 \
|
||||
golang.org/x/text v0.3.7 \
|
||||
golang.org/x/text v0.34.0 \
|
||||
golang.org/x/text v0.35.0 \
|
||||
golang.org/x/text v0.36.0 \
|
||||
golang.org/x/text v0.37.0 \
|
||||
golang.org/x/text v0.7.0 \
|
||||
golang.org/x/text v0.9.0 \
|
||||
golang.org/x/time v0.12.0 \
|
||||
golang.org/x/time v0.5.0 \
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e \
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e \
|
||||
golang.org/x/tools v0.1.12 \
|
||||
golang.org/x/tools v0.11.0 \
|
||||
golang.org/x/tools v0.13.0 \
|
||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d \
|
||||
golang.org/x/tools v0.31.0 \
|
||||
golang.org/x/tools v0.34.0 \
|
||||
golang.org/x/tools v0.35.0 \
|
||||
golang.org/x/tools v0.38.0 \
|
||||
golang.org/x/tools v0.42.0 \
|
||||
golang.org/x/tools v0.44.0 \
|
||||
golang.org/x/tools v0.6.0 \
|
||||
google.golang.org/api v0.177.0 \
|
||||
google.golang.org/api v0.189.0 \
|
||||
google.golang.org/api v0.247.0 \
|
||||
google.golang.org/api v0.272.0 \
|
||||
google.golang.org/api v0.274.0 \
|
||||
google.golang.org/genproto v0.0.0-20250603155806-513f23925822 \
|
||||
google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 \
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240429193739-8cf5692501f6 \
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250721164621-a45f3dfb1074 \
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 \
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6 \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250227231956-55c901821b1e \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260319201613-d00831a3d3e7 \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260401024825-9d38bb4040a9 \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260420184626-e10c466a9529 \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa \
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260610212136-7ab31c22f7ad \
|
||||
google.golang.org/grpc v1.63.2 \
|
||||
google.golang.org/grpc v1.64.1 \
|
||||
google.golang.org/grpc v1.66.2 \
|
||||
google.golang.org/grpc v1.71.0 \
|
||||
google.golang.org/grpc v1.74.2 \
|
||||
google.golang.org/grpc v1.79.3 \
|
||||
google.golang.org/grpc v1.80.0 \
|
||||
google.golang.org/protobuf v1.34.2 \
|
||||
google.golang.org/protobuf v1.36.7 \
|
||||
google.golang.org/protobuf v1.36.8 \
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 \
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 \
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 \
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f \
|
||||
gopkg.in/yaml.v2 v2.2.2 \
|
||||
gopkg.in/yaml.v2 v2.2.8 \
|
||||
gopkg.in/yaml.v3 v3.0.0 \
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c \
|
||||
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 \
|
||||
howett.net/plist v1.0.0 \
|
||||
mvdan.cc/sh/v3 v3.11.0
|
||||
|
||||
120
devel/crush/patches/patch-internal_cmd_login_go
Normal file
120
devel/crush/patches/patch-internal_cmd_login_go
Normal file
@@ -0,0 +1,120 @@
|
||||
--- internal/cmd/login.go
|
||||
+++ internal/cmd/login.go
|
||||
@@ -6,12 +6,14 @@
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
+ "strings"
|
||||
|
||||
"charm.land/lipgloss/v2"
|
||||
"github.com/charmbracelet/crush/internal/client"
|
||||
"github.com/charmbracelet/crush/internal/clipboard"
|
||||
"github.com/charmbracelet/crush/internal/config"
|
||||
"github.com/charmbracelet/crush/internal/oauth"
|
||||
+ "github.com/charmbracelet/crush/internal/oauth/claude"
|
||||
"github.com/charmbracelet/crush/internal/oauth/copilot"
|
||||
"github.com/charmbracelet/crush/internal/oauth/hyper"
|
||||
"github.com/charmbracelet/x/ansi"
|
||||
@@ -25,11 +27,14 @@
|
||||
Short: "Login Crush to a platform",
|
||||
Long: `Login Crush to a specified platform.
|
||||
The platform should be provided as an argument.
|
||||
-Available platforms are: hyper, copilot.`,
|
||||
+Available platforms are: hyper, claude, copilot.`,
|
||||
Example: `
|
||||
# Authenticate with Charm Hyper
|
||||
crush login
|
||||
|
||||
+# Authenticate with Claude Code Max
|
||||
+crush login claude
|
||||
+
|
||||
# Authenticate with GitHub Copilot
|
||||
crush login copilot
|
||||
|
||||
@@ -38,6 +43,8 @@
|
||||
`,
|
||||
ValidArgs: []cobra.Completion{
|
||||
"hyper",
|
||||
+ "claude",
|
||||
+ "anthropic",
|
||||
"copilot",
|
||||
"github",
|
||||
"github-copilot",
|
||||
@@ -64,6 +71,8 @@
|
||||
switch provider {
|
||||
case "hyper":
|
||||
return loginHyper(c, ws.ID, force)
|
||||
+ case "anthropic", "claude":
|
||||
+ return loginClaude(c, ws.ID, force)
|
||||
case "copilot", "github", "github-copilot":
|
||||
return loginCopilot(c, ws.ID, force)
|
||||
default:
|
||||
@@ -140,6 +149,68 @@
|
||||
|
||||
fmt.Println()
|
||||
fmt.Println("You're now authenticated with Hyper!")
|
||||
+ return nil
|
||||
+}
|
||||
+
|
||||
+func loginClaude(c *client.Client, wsID string, force bool) error {
|
||||
+ ctx := getLoginContext()
|
||||
+
|
||||
+ if !force {
|
||||
+ cfg, err := c.GetConfig(ctx, wsID)
|
||||
+ if err == nil && cfg != nil {
|
||||
+ if pc, ok := cfg.Providers.Get("anthropic"); ok && pc.OAuthToken != nil {
|
||||
+ fmt.Println("You are already logged in to Claude Code Max.")
|
||||
+ fmt.Println("Use --force to re-authenticate.")
|
||||
+ return nil
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ verifier, challenge, err := claude.GetChallenge()
|
||||
+ if err != nil {
|
||||
+ return err
|
||||
+ }
|
||||
+ authURL, err := claude.AuthorizeURL(verifier, challenge)
|
||||
+ if err != nil {
|
||||
+ return err
|
||||
+ }
|
||||
+
|
||||
+ fmt.Println("Open the following URL to authorize your Claude Code Max subscription:")
|
||||
+ fmt.Println()
|
||||
+ fmt.Println(lipgloss.NewStyle().Hyperlink(authURL, "id=claude").Render(authURL))
|
||||
+ fmt.Println()
|
||||
+ fmt.Println("Press enter to open in your browser...")
|
||||
+ waitEnter()
|
||||
+ if err := browser.OpenURL(authURL); err != nil {
|
||||
+ fmt.Println("Could not open the URL. Open it manually in your browser.")
|
||||
+ }
|
||||
+
|
||||
+ fmt.Println()
|
||||
+ fmt.Println("After authorizing, paste the code shown on the page and press enter:")
|
||||
+ fmt.Println()
|
||||
+ fmt.Print("> ")
|
||||
+ var code string
|
||||
+ for code == "" {
|
||||
+ _, _ = fmt.Scan(&code)
|
||||
+ code = strings.TrimSpace(code)
|
||||
+ }
|
||||
+
|
||||
+ fmt.Println()
|
||||
+ fmt.Println("Exchanging authorization code...")
|
||||
+ token, err := claude.ExchangeToken(ctx, code, verifier)
|
||||
+ if err != nil {
|
||||
+ return err
|
||||
+ }
|
||||
+
|
||||
+ if err := cmp.Or(
|
||||
+ c.SetConfigField(ctx, wsID, config.ScopeGlobal, "providers.anthropic.api_key", token.AccessToken),
|
||||
+ c.SetConfigField(ctx, wsID, config.ScopeGlobal, "providers.anthropic.oauth", token),
|
||||
+ ); err != nil {
|
||||
+ return err
|
||||
+ }
|
||||
+
|
||||
+ fmt.Println()
|
||||
+ fmt.Println("You're now authenticated with Claude Code Max!")
|
||||
return nil
|
||||
}
|
||||
|
||||
23
devel/crush/patches/patch-internal_config_config_go
Normal file
23
devel/crush/patches/patch-internal_config_config_go
Normal file
@@ -0,0 +1,23 @@
|
||||
--- internal/config/config.go
|
||||
+++ internal/config/config.go
|
||||
@@ -177,6 +177,22 @@ func (c *ProviderConfig) SetupGitHubCopilot() {
|
||||
maps.Copy(c.ExtraHeaders, copilot.Headers())
|
||||
}
|
||||
|
||||
+func (c *ProviderConfig) SetupClaudeCode() {
|
||||
+ c.FlatRate = true
|
||||
+ c.SystemPromptPrefix = "You are Claude Code, Anthropic's official CLI for Claude."
|
||||
+ if c.ExtraHeaders == nil {
|
||||
+ c.ExtraHeaders = make(map[string]string)
|
||||
+ }
|
||||
+ c.ExtraHeaders["anthropic-version"] = "2023-06-01"
|
||||
+ const want = "oauth-2025-04-20"
|
||||
+ if v := c.ExtraHeaders["anthropic-beta"]; !strings.Contains(v, want) {
|
||||
+ if v != "" {
|
||||
+ v += ","
|
||||
+ }
|
||||
+ c.ExtraHeaders["anthropic-beta"] = v + want
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
type MCPType string
|
||||
18
devel/crush/patches/patch-internal_config_load_go
Normal file
18
devel/crush/patches/patch-internal_config_load_go
Normal file
@@ -0,0 +1,18 @@
|
||||
--- internal/config/load.go
|
||||
+++ internal/config/load.go
|
||||
@@ -287,14 +287,7 @@
|
||||
|
||||
switch {
|
||||
case p.ID == catwalk.InferenceProviderAnthropic && config.OAuthToken != nil:
|
||||
- // Claude Code subscription is not supported anymore. Remove to show onboarding.
|
||||
- // RemoveConfigField persists the deletion to disk. The in-memory
|
||||
- // state is kept consistent by the Providers.Del call below; any
|
||||
- // concurrent reload that races with this write will also see the
|
||||
- // removal because it re-reads from disk.
|
||||
- store.RemoveConfigField(ScopeGlobal, "providers.anthropic")
|
||||
- c.Providers.Del(string(p.ID))
|
||||
- continue
|
||||
+ prepared.SetupClaudeCode()
|
||||
case p.ID == catwalk.InferenceProviderCopilot && config.OAuthToken != nil:
|
||||
prepared.SetupGitHubCopilot()
|
||||
}
|
||||
52
devel/crush/patches/patch-internal_config_store_go
Normal file
52
devel/crush/patches/patch-internal_config_store_go
Normal file
@@ -0,0 +1,52 @@
|
||||
--- internal/config/store.go
|
||||
+++ internal/config/store.go
|
||||
@@ -16,6 +16,7 @@
|
||||
"github.com/charmbracelet/crush/internal/env"
|
||||
"github.com/charmbracelet/crush/internal/lock"
|
||||
"github.com/charmbracelet/crush/internal/oauth"
|
||||
+ "github.com/charmbracelet/crush/internal/oauth/claude"
|
||||
"github.com/charmbracelet/crush/internal/oauth/copilot"
|
||||
"github.com/charmbracelet/crush/internal/oauth/hyper"
|
||||
"github.com/tidwall/gjson"
|
||||
@@ -470,6 +471,8 @@
|
||||
providerConfig.APIKey = v.AccessToken
|
||||
providerConfig.OAuthToken = v
|
||||
switch providerID {
|
||||
+ case string(catwalk.InferenceProviderAnthropic):
|
||||
+ providerConfig.SetupClaudeCode()
|
||||
case string(catwalk.InferenceProviderCopilot):
|
||||
providerConfig.SetupGitHubCopilot()
|
||||
}
|
||||
@@ -596,7 +599,10 @@
|
||||
slog.Info("Successfully refreshed OAuth token", "provider", providerID)
|
||||
providerConfig.OAuthToken = refreshedToken
|
||||
providerConfig.APIKey = refreshedToken.AccessToken
|
||||
- if providerID == string(catwalk.InferenceProviderCopilot) {
|
||||
+ switch providerID {
|
||||
+ case string(catwalk.InferenceProviderAnthropic):
|
||||
+ providerConfig.SetupClaudeCode()
|
||||
+ case string(catwalk.InferenceProviderCopilot):
|
||||
providerConfig.SetupGitHubCopilot()
|
||||
}
|
||||
cfg.Providers.Set(providerID, providerConfig)
|
||||
@@ -638,6 +644,8 @@
|
||||
return s.exchangeToken(ctx, providerID, refreshToken)
|
||||
}
|
||||
switch providerID {
|
||||
+ case string(catwalk.InferenceProviderAnthropic):
|
||||
+ return claude.RefreshToken(ctx, refreshToken)
|
||||
case string(catwalk.InferenceProviderCopilot):
|
||||
return copilot.RefreshToken(ctx, refreshToken)
|
||||
case hyperp.Name:
|
||||
@@ -662,7 +670,10 @@
|
||||
func (s *ConfigStore) applyToken(providerConfig ProviderConfig, token *oauth.Token, providerID string) error {
|
||||
providerConfig.OAuthToken = token
|
||||
providerConfig.APIKey = token.AccessToken
|
||||
- if providerID == string(catwalk.InferenceProviderCopilot) {
|
||||
+ switch providerID {
|
||||
+ case string(catwalk.InferenceProviderAnthropic):
|
||||
+ providerConfig.SetupClaudeCode()
|
||||
+ case string(catwalk.InferenceProviderCopilot):
|
||||
providerConfig.SetupGitHubCopilot()
|
||||
}
|
||||
s.Config().Providers.Set(providerID, providerConfig)
|
||||
31
devel/crush/patches/patch-internal_oauth_claude_challenge_go
Normal file
31
devel/crush/patches/patch-internal_oauth_claude_challenge_go
Normal file
@@ -0,0 +1,31 @@
|
||||
--- /dev/null
|
||||
+++ internal/oauth/claude/challenge.go
|
||||
@@ -0,0 +1,28 @@
|
||||
+package claude
|
||||
+
|
||||
+import (
|
||||
+ "crypto/rand"
|
||||
+ "crypto/sha256"
|
||||
+ "encoding/base64"
|
||||
+ "strings"
|
||||
+)
|
||||
+
|
||||
+// GetChallenge generates a PKCE verifier and its corresponding challenge.
|
||||
+func GetChallenge() (verifier string, challenge string, err error) {
|
||||
+ bytes := make([]byte, 32)
|
||||
+ if _, err := rand.Read(bytes); err != nil {
|
||||
+ return "", "", err
|
||||
+ }
|
||||
+ verifier = encodeBase64(bytes)
|
||||
+ hash := sha256.Sum256([]byte(verifier))
|
||||
+ challenge = encodeBase64(hash[:])
|
||||
+ return verifier, challenge, nil
|
||||
+}
|
||||
+
|
||||
+func encodeBase64(input []byte) (encoded string) {
|
||||
+ encoded = base64.StdEncoding.EncodeToString(input)
|
||||
+ encoded = strings.ReplaceAll(encoded, "=", "")
|
||||
+ encoded = strings.ReplaceAll(encoded, "+", "-")
|
||||
+ encoded = strings.ReplaceAll(encoded, "/", "_")
|
||||
+ return encoded
|
||||
+}
|
||||
129
devel/crush/patches/patch-internal_oauth_claude_oauth_go
Normal file
129
devel/crush/patches/patch-internal_oauth_claude_oauth_go
Normal file
@@ -0,0 +1,129 @@
|
||||
--- /dev/null
|
||||
+++ internal/oauth/claude/oauth.go
|
||||
@@ -0,0 +1,126 @@
|
||||
+package claude
|
||||
+
|
||||
+import (
|
||||
+ "bytes"
|
||||
+ "context"
|
||||
+ "encoding/json"
|
||||
+ "fmt"
|
||||
+ "io"
|
||||
+ "net/http"
|
||||
+ "net/url"
|
||||
+ "strings"
|
||||
+ "time"
|
||||
+
|
||||
+ "github.com/charmbracelet/crush/internal/oauth"
|
||||
+)
|
||||
+
|
||||
+const clientId = "9d1c250a-e61b-44d9-88ed-5944d1962f5e"
|
||||
+
|
||||
+// AuthorizeURL returns the Claude Code Max OAuth2 authorization URL.
|
||||
+func AuthorizeURL(verifier, challenge string) (string, error) {
|
||||
+ u, err := url.Parse("https://claude.ai/oauth/authorize")
|
||||
+ if err != nil {
|
||||
+ return "", err
|
||||
+ }
|
||||
+ q := u.Query()
|
||||
+ q.Set("response_type", "code")
|
||||
+ q.Set("client_id", clientId)
|
||||
+ q.Set("redirect_uri", "https://console.anthropic.com/oauth/code/callback")
|
||||
+ q.Set("scope", "org:create_api_key user:profile user:inference")
|
||||
+ q.Set("code_challenge", challenge)
|
||||
+ q.Set("code_challenge_method", "S256")
|
||||
+ q.Set("state", verifier)
|
||||
+ u.RawQuery = q.Encode()
|
||||
+ return u.String(), nil
|
||||
+}
|
||||
+
|
||||
+// ExchangeToken exchanges the authorization code for an OAuth2 token.
|
||||
+func ExchangeToken(ctx context.Context, code, verifier string) (*oauth.Token, error) {
|
||||
+ code = strings.TrimSpace(code)
|
||||
+ parts := strings.SplitN(code, "#", 2)
|
||||
+ pure := parts[0]
|
||||
+ state := ""
|
||||
+ if len(parts) > 1 {
|
||||
+ state = parts[1]
|
||||
+ }
|
||||
+
|
||||
+ reqBody := map[string]string{
|
||||
+ "code": pure,
|
||||
+ "state": state,
|
||||
+ "grant_type": "authorization_code",
|
||||
+ "client_id": clientId,
|
||||
+ "redirect_uri": "https://console.anthropic.com/oauth/code/callback",
|
||||
+ "code_verifier": verifier,
|
||||
+ }
|
||||
+
|
||||
+ resp, err := request(ctx, "POST", "https://console.anthropic.com/v1/oauth/token", reqBody)
|
||||
+ if err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+ defer resp.Body.Close()
|
||||
+
|
||||
+ body, err := io.ReadAll(resp.Body)
|
||||
+ if err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+
|
||||
+ if resp.StatusCode != http.StatusOK {
|
||||
+ return nil, fmt.Errorf("claude code max: failed to exchange token: status %d body %q", resp.StatusCode, string(body))
|
||||
+ }
|
||||
+
|
||||
+ var token oauth.Token
|
||||
+ if err := json.Unmarshal(body, &token); err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+ token.SetExpiresAt()
|
||||
+ return &token, nil
|
||||
+}
|
||||
+
|
||||
+// RefreshToken refreshes the OAuth2 token using the provided refresh token.
|
||||
+func RefreshToken(ctx context.Context, refreshToken string) (*oauth.Token, error) {
|
||||
+ reqBody := map[string]string{
|
||||
+ "grant_type": "refresh_token",
|
||||
+ "refresh_token": refreshToken,
|
||||
+ "client_id": clientId,
|
||||
+ }
|
||||
+
|
||||
+ resp, err := request(ctx, "POST", "https://console.anthropic.com/v1/oauth/token", reqBody)
|
||||
+ if err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+ defer resp.Body.Close()
|
||||
+
|
||||
+ body, err := io.ReadAll(resp.Body)
|
||||
+ if err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+
|
||||
+ if resp.StatusCode != http.StatusOK {
|
||||
+ return nil, fmt.Errorf("claude code max: failed to refresh token: status %d body %q", resp.StatusCode, string(body))
|
||||
+ }
|
||||
+
|
||||
+ var token oauth.Token
|
||||
+ if err := json.Unmarshal(body, &token); err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+ token.SetExpiresAt()
|
||||
+ return &token, nil
|
||||
+}
|
||||
+
|
||||
+func request(ctx context.Context, method, url string, body any) (*http.Response, error) {
|
||||
+ date, err := json.Marshal(body)
|
||||
+ if err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+
|
||||
+ req, err := http.NewRequestWithContext(ctx, method, url, bytes.NewReader(date))
|
||||
+ if err != nil {
|
||||
+ return nil, err
|
||||
+ }
|
||||
+
|
||||
+ req.Header.Set("Content-Type", "application/json")
|
||||
+ req.Header.Set("User-Agent", "anthropic")
|
||||
+
|
||||
+ client := &http.Client{Timeout: 30 * time.Second}
|
||||
+ return client.Do(req)
|
||||
+}
|
||||
244
devel/crush/patches/patch-internal_ui_dialog_oauth_claude_go
Normal file
244
devel/crush/patches/patch-internal_ui_dialog_oauth_claude_go
Normal file
@@ -0,0 +1,244 @@
|
||||
--- /dev/null
|
||||
+++ internal/ui/dialog/oauth_claude.go
|
||||
@@ -0,0 +1,241 @@
|
||||
+package dialog
|
||||
+
|
||||
+import (
|
||||
+ "context"
|
||||
+ "fmt"
|
||||
+ "strings"
|
||||
+
|
||||
+ "charm.land/bubbles/v2/help"
|
||||
+ "charm.land/bubbles/v2/key"
|
||||
+ "charm.land/bubbles/v2/spinner"
|
||||
+ "charm.land/bubbles/v2/textinput"
|
||||
+ tea "charm.land/bubbletea/v2"
|
||||
+ "charm.land/catwalk/pkg/catwalk"
|
||||
+ "github.com/charmbracelet/crush/internal/config"
|
||||
+ "github.com/charmbracelet/crush/internal/oauth"
|
||||
+ "github.com/charmbracelet/crush/internal/oauth/claude"
|
||||
+ "github.com/charmbracelet/crush/internal/ui/common"
|
||||
+ "github.com/charmbracelet/crush/internal/ui/util"
|
||||
+ uv "github.com/charmbracelet/ultraviolet"
|
||||
+ "github.com/pkg/browser"
|
||||
+)
|
||||
+
|
||||
+type oauthClaudeState int
|
||||
+
|
||||
+const (
|
||||
+ oauthClaudeStateInput oauthClaudeState = iota
|
||||
+ oauthClaudeStateExchanging
|
||||
+ oauthClaudeStateError
|
||||
+)
|
||||
+
|
||||
+type oauthClaudeComplete struct{ token *oauth.Token }
|
||||
+type oauthClaudeError struct{ err error }
|
||||
+
|
||||
+// OAuthClaudeID is the identifier for the Claude OAuth dialog.
|
||||
+const OAuthClaudeID = "oauth_claude"
|
||||
+
|
||||
+// OAuthClaude is a dialog for Claude Code Max PKCE authentication.
|
||||
+type OAuthClaude struct {
|
||||
+ com *common.Common
|
||||
+ isOnboarding bool
|
||||
+ provider catwalk.Provider
|
||||
+ model config.SelectedModel
|
||||
+ modelType config.SelectedModelType
|
||||
+
|
||||
+ width int
|
||||
+ state oauthClaudeState
|
||||
+ verifier string
|
||||
+ verificationURL string
|
||||
+
|
||||
+ keyMap struct {
|
||||
+ Submit key.Binding
|
||||
+ Open key.Binding
|
||||
+ Close key.Binding
|
||||
+ }
|
||||
+ input textinput.Model
|
||||
+ spinner spinner.Model
|
||||
+ help help.Model
|
||||
+}
|
||||
+
|
||||
+var _ Dialog = (*OAuthClaude)(nil)
|
||||
+
|
||||
+// NewOAuthClaude creates a new Claude PKCE authentication dialog.
|
||||
+func NewOAuthClaude(
|
||||
+ com *common.Common,
|
||||
+ isOnboarding bool,
|
||||
+ provider catwalk.Provider,
|
||||
+ model config.SelectedModel,
|
||||
+ modelType config.SelectedModelType,
|
||||
+) (*OAuthClaude, tea.Cmd) {
|
||||
+ verifier, challenge, err := claude.GetChallenge()
|
||||
+ if err != nil {
|
||||
+ m := &OAuthClaude{com: com, isOnboarding: isOnboarding, provider: provider, model: model, modelType: modelType, width: 60, state: oauthClaudeStateError}
|
||||
+ return m, util.ReportError(fmt.Errorf("failed to generate PKCE challenge: %w", err))
|
||||
+ }
|
||||
+ authURL, err := claude.AuthorizeURL(verifier, challenge)
|
||||
+ if err != nil {
|
||||
+ m := &OAuthClaude{com: com, isOnboarding: isOnboarding, provider: provider, model: model, modelType: modelType, width: 60, state: oauthClaudeStateError}
|
||||
+ return m, util.ReportError(fmt.Errorf("failed to build auth URL: %w", err))
|
||||
+ }
|
||||
+
|
||||
+ t := com.Styles
|
||||
+ m := &OAuthClaude{
|
||||
+ com: com, isOnboarding: isOnboarding, provider: provider,
|
||||
+ model: model, modelType: modelType, width: 60,
|
||||
+ state: oauthClaudeStateInput, verifier: verifier, verificationURL: authURL,
|
||||
+ }
|
||||
+
|
||||
+ innerWidth := m.width - t.Dialog.View.GetHorizontalFrameSize() - 2
|
||||
+ m.input = textinput.New()
|
||||
+ m.input.SetVirtualCursor(false)
|
||||
+ m.input.Placeholder = "Paste authorization code..."
|
||||
+ m.input.SetStyles(com.Styles.TextInput)
|
||||
+ m.input.Focus()
|
||||
+ m.input.SetWidth(max(0, innerWidth-t.Dialog.InputPrompt.GetHorizontalFrameSize()-1))
|
||||
+ m.input.Prompt = "> "
|
||||
+
|
||||
+ m.spinner = spinner.New(
|
||||
+ spinner.WithSpinner(spinner.Dot),
|
||||
+ spinner.WithStyle(t.Dialog.APIKey.Spinner),
|
||||
+ )
|
||||
+ m.help = help.New()
|
||||
+ m.help.Styles = t.DialogHelpStyles()
|
||||
+
|
||||
+ m.keyMap.Submit = key.NewBinding(key.WithKeys("enter", "ctrl+y"), key.WithHelp("enter", "submit"))
|
||||
+ m.keyMap.Open = key.NewBinding(key.WithKeys("o"), key.WithHelp("o", "open browser"))
|
||||
+ m.keyMap.Close = CloseKey
|
||||
+
|
||||
+ return m, nil
|
||||
+}
|
||||
+
|
||||
+func (m *OAuthClaude) ID() string { return OAuthClaudeID }
|
||||
+
|
||||
+func (m *OAuthClaude) HandleMsg(msg tea.Msg) Action {
|
||||
+ switch msg := msg.(type) {
|
||||
+ case oauthClaudeComplete:
|
||||
+ err := m.com.Workspace.SetProviderAPIKey(config.ScopeGlobal, string(m.provider.ID), msg.token)
|
||||
+ if err != nil {
|
||||
+ return ActionCmd{util.ReportError(fmt.Errorf("failed to save token: %w", err))}
|
||||
+ }
|
||||
+ return ActionSelectModel{Provider: m.provider, Model: m.model, ModelType: m.modelType}
|
||||
+
|
||||
+ case oauthClaudeError:
|
||||
+ m.state = oauthClaudeStateError
|
||||
+ return ActionCmd{util.ReportError(msg.err)}
|
||||
+
|
||||
+ case spinner.TickMsg:
|
||||
+ if m.state == oauthClaudeStateExchanging {
|
||||
+ var cmd tea.Cmd
|
||||
+ m.spinner, cmd = m.spinner.Update(msg)
|
||||
+ if cmd != nil {
|
||||
+ return ActionCmd{cmd}
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ case tea.KeyPressMsg:
|
||||
+ switch {
|
||||
+ case m.state == oauthClaudeStateExchanging:
|
||||
+ // absorb input during exchange
|
||||
+ case key.Matches(msg, m.keyMap.Close):
|
||||
+ return ActionClose{}
|
||||
+ case key.Matches(msg, m.keyMap.Open) && m.state == oauthClaudeStateInput:
|
||||
+ _ = browser.OpenURL(m.verificationURL)
|
||||
+ case key.Matches(msg, m.keyMap.Submit) && m.state == oauthClaudeStateInput:
|
||||
+ code := strings.TrimSpace(m.input.Value())
|
||||
+ if code == "" {
|
||||
+ return nil
|
||||
+ }
|
||||
+ m.state = oauthClaudeStateExchanging
|
||||
+ verifier := m.verifier
|
||||
+ return ActionCmd{tea.Batch(m.spinner.Tick, func() tea.Msg {
|
||||
+ token, err := claude.ExchangeToken(context.Background(), code, verifier)
|
||||
+ if err != nil {
|
||||
+ return oauthClaudeError{err}
|
||||
+ }
|
||||
+ return oauthClaudeComplete{token}
|
||||
+ })}
|
||||
+ default:
|
||||
+ if m.state == oauthClaudeStateInput {
|
||||
+ var cmd tea.Cmd
|
||||
+ m.input, cmd = m.input.Update(msg)
|
||||
+ if cmd != nil {
|
||||
+ return ActionCmd{cmd}
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ case tea.PasteMsg:
|
||||
+ if m.state == oauthClaudeStateInput {
|
||||
+ var cmd tea.Cmd
|
||||
+ m.input, cmd = m.input.Update(msg)
|
||||
+ if cmd != nil {
|
||||
+ return ActionCmd{cmd}
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ return nil
|
||||
+}
|
||||
+
|
||||
+func (m *OAuthClaude) Cursor() *tea.Cursor {
|
||||
+ return InputCursor(m.com.Styles, m.input.Cursor())
|
||||
+}
|
||||
+
|
||||
+func (m *OAuthClaude) Draw(scr uv.Screen, area uv.Rectangle) *tea.Cursor {
|
||||
+ t := m.com.Styles
|
||||
+ dialogStyle := t.Dialog.View.Width(m.width)
|
||||
+ helpStyle := t.Dialog.HelpView.Width(m.width - dialogStyle.GetHorizontalFrameSize())
|
||||
+ textStyle := t.Dialog.SecondaryText
|
||||
+ inputStyle := t.Dialog.InputPrompt
|
||||
+ linkStyle := t.Dialog.OAuth.Link
|
||||
+
|
||||
+ if m.state == oauthClaudeStateExchanging {
|
||||
+ m.input.Prompt = m.spinner.View()
|
||||
+ } else {
|
||||
+ m.input.Prompt = "> "
|
||||
+ }
|
||||
+
|
||||
+ content := strings.Join([]string{
|
||||
+ m.headerView(),
|
||||
+ textStyle.Render("Visit the URL and paste the authorization code:"),
|
||||
+ "",
|
||||
+ textStyle.Render(linkStyle.Hyperlink(m.verificationURL, "id=oauth-claude").Render(m.verificationURL)),
|
||||
+ "",
|
||||
+ inputStyle.Render(m.input.View()),
|
||||
+ "",
|
||||
+ helpStyle.Render(m.help.View(m)),
|
||||
+ }, "\n")
|
||||
+
|
||||
+ cur := m.Cursor()
|
||||
+ if m.isOnboarding {
|
||||
+ cur = adjustOnboardingInputCursor(t, cur)
|
||||
+ DrawOnboardingCursor(scr, area, content, cur)
|
||||
+ } else {
|
||||
+ view := dialogStyle.Render(content)
|
||||
+ DrawCenterCursor(scr, area, view, cur)
|
||||
+ }
|
||||
+ return cur
|
||||
+}
|
||||
+
|
||||
+func (m *OAuthClaude) headerView() string {
|
||||
+ t := m.com.Styles
|
||||
+ titleStyle := t.Dialog.Title
|
||||
+ textStyle := t.Dialog.PrimaryText
|
||||
+ dialogStyle := t.Dialog.View.Width(m.width)
|
||||
+ title := fmt.Sprintf("Authenticate with %s", m.provider.Name)
|
||||
+ if m.isOnboarding {
|
||||
+ return textStyle.Render(title)
|
||||
+ }
|
||||
+ headerOffset := titleStyle.GetHorizontalFrameSize() + dialogStyle.GetHorizontalFrameSize()
|
||||
+ return common.DialogTitle(t, titleStyle.Render(title), m.width-headerOffset, t.Dialog.TitleGradFromColor, t.Dialog.TitleGradToColor)
|
||||
+}
|
||||
+
|
||||
+func (m *OAuthClaude) ShortHelp() []key.Binding {
|
||||
+ if m.state == oauthClaudeStateInput {
|
||||
+ return []key.Binding{m.keyMap.Open, m.keyMap.Submit, m.keyMap.Close}
|
||||
+ }
|
||||
+ return []key.Binding{m.keyMap.Close}
|
||||
+}
|
||||
+
|
||||
+func (m *OAuthClaude) FullHelp() [][]key.Binding {
|
||||
+ return [][]key.Binding{m.ShortHelp()}
|
||||
+}
|
||||
11
devel/crush/patches/patch-internal_ui_model_ui_go
Normal file
11
devel/crush/patches/patch-internal_ui_model_ui_go
Normal file
@@ -0,0 +1,11 @@
|
||||
--- internal/ui/model/ui.go
|
||||
+++ internal/ui/model/ui.go
|
||||
@@ -1952,6 +1952,8 @@ func (m *UI) openAuthenticationDialog(provider catwalk.Provider, model config.Se
|
||||
switch provider.ID {
|
||||
case "hyper":
|
||||
dlg, cmd = dialog.NewOAuthHyper(m.com, isOnboarding, provider, model, modelType)
|
||||
+ case catwalk.InferenceProviderAnthropic:
|
||||
+ dlg, cmd = dialog.NewOAuthClaude(m.com, isOnboarding, provider, model, modelType)
|
||||
case catwalk.InferenceProviderCopilot:
|
||||
dlg, cmd = dialog.NewOAuthCopilot(m.com, isOnboarding, provider, model, modelType)
|
||||
default:
|
||||
3
devel/crush/pkg/DESCR
Normal file
3
devel/crush/pkg/DESCR
Normal file
@@ -0,0 +1,3 @@
|
||||
Crush is a terminal-based AI coding agent from Charm. It supports
|
||||
multiple LLM providers, per-project configuration, LSP-aware context,
|
||||
and an extensible tool/MCP system, all driven from an interactive TUI.
|
||||
1
devel/crush/pkg/PLIST
Normal file
1
devel/crush/pkg/PLIST
Normal file
@@ -0,0 +1 @@
|
||||
@bin bin/crush
|
||||
Reference in New Issue
Block a user