Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
68d915e
build(deps): bump pkg.akt.dev/go to v0.2.9, add mcp-go and x/ansi
chalabi2 Jul 21, 2026
3eb7a75
fix(cli): close the action logger after command completion
chalabi2 Jul 21, 2026
3cf1231
feat(context): record context operations in the action log
chalabi2 Jul 21, 2026
c9af012
feat(chain): record broadcast transactions in the action log
chalabi2 Jul 21, 2026
8a51d26
feat(provider): record gateway operations in the action log
chalabi2 Jul 21, 2026
0c553c2
feat(workflow): add action log adapter for engine step logging
chalabi2 Jul 21, 2026
1a9203b
feat(console): record console api mutations in the action log
chalabi2 Jul 21, 2026
f721228
fix(actionlog): allow reading entries up to the rotation threshold
chalabi2 Jul 21, 2026
5aa542f
docs(spec): scope action log to mutating actions only
chalabi2 Jul 21, 2026
2adb3fc
test(workflow): pin dynamic command surfacing behavior
chalabi2 Jul 21, 2026
358fab5
docs(spec): store console api key as a per-context credential
chalabi2 Jul 21, 2026
41ffd25
feat(context): add console auth method and per-context api key creden…
chalabi2 Jul 21, 2026
cb8b0ed
feat(cli): console auth flags on context create/edit and redacted show
chalabi2 Jul 21, 2026
cdfe77a
feat(cli): accept state keywords as positional filter arguments
chalabi2 Jul 21, 2026
3cd8388
feat(cli): accept positional dseq in tx deployment and provider commands
chalabi2 Jul 21, 2026
af33e43
feat(console): rework client with correct wire shapes and full api su…
chalabi2 Jul 21, 2026
49c7f6f
feat(workflow): add chain and provider adapters for step execution
chalabi2 Jul 21, 2026
a93f671
feat(cli): add akt console command group for managed console
chalabi2 Jul 21, 2026
cb06ea2
feat(workflow): route tx steps through console api for console contexts
chalabi2 Jul 21, 2026
dbb6ab8
fix(workflow): make builtin deploy workflow outputs round-trip
chalabi2 Jul 21, 2026
6bad043
feat(cli): execute workflows with auth-aware credential routing
chalabi2 Jul 21, 2026
804c4c0
test(e2e): cover keys, context, network, and console auth offline
chalabi2 Jul 21, 2026
001fbe2
test(e2e): add gated localnet harness with chain tx/query coverage
chalabi2 Jul 21, 2026
28ce014
ci: add build, unit, and e2e pipeline
chalabi2 Jul 21, 2026
b268854
docs: add console compatibility matrix
chalabi2 Jul 21, 2026
adcdb3a
fix(cli): resolve context rpc endpoint in block query commands
chalabi2 Jul 22, 2026
4d23fef
fix(cli): apply the default auto gas setting to transactions
chalabi2 Jul 22, 2026
22919e9
fix(chain): exit non-zero when a broadcast transaction fails
chalabi2 Jul 22, 2026
c9c5072
feat(bootstrap): offer console api key onboarding on first run
chalabi2 Jul 22, 2026
0766823
fix(console): omit empty date params in usage history request
chalabi2 Jul 22, 2026
c2a7d05
fix(cli): make console commands positional-primary per convention
chalabi2 Jul 22, 2026
ba24fd0
test(console): validate every client request against the openapi cont…
chalabi2 Jul 22, 2026
ceac665
fix(cli): complete positional-primary sweep with convention guard
chalabi2 Jul 22, 2026
239f830
fix(cli): correct action type list in context log help text
chalabi2 Jul 23, 2026
3516d18
docs: refresh readme, design, and spec to match delivered state
chalabi2 Jul 23, 2026
6f5658c
fix(bootstrap): never run the first-run wizard without a terminal
chalabi2 Jul 24, 2026
c600bf6
fix(cli): always allow help without a configured context
chalabi2 Jul 24, 2026
e4f20ae
feat(cli)!: disable the tui shell pending ux feedback
chalabi2 Jul 24, 2026
7719d8e
feat(context): allow network-less console-api contexts
chalabi2 Jul 24, 2026
525e1de
feat(cli): gate the command surface by context capabilities
chalabi2 Jul 24, 2026
4144819
feat(transport): add action-to-transport translation layer
chalabi2 Jul 24, 2026
5d702fc
feat(cli): live lease operations for managed contexts
chalabi2 Jul 24, 2026
197d637
feat(cli)!: disable duplicate flags for the positional-only ux trial
chalabi2 Jul 24, 2026
0118b72
feat(cli): show the context feature set in context show
chalabi2 Jul 24, 2026
fd275bf
feat(cli): add sdl scaffolds, init, and validate commands
chalabi2 Jul 24, 2026
4f3f9ea
fix(cli): correct help detection, context targeting, and gating overr…
chalabi2 Jul 27, 2026
f78fcb6
fix(console): stop retrying non-idempotent writes and swallowing fail…
chalabi2 Jul 27, 2026
baa8b81
fix(cli): correct console money display and unify deposit syntax
chalabi2 Jul 27, 2026
c3a8ac3
refactor(console): keep one canonical minimum deposit constant
chalabi2 Jul 27, 2026
1ac4caf
fix(cli): honor positional state and restore the missing dseq guard
chalabi2 Jul 27, 2026
909f173
fix: reject empty response envelopes and tighten credential permissions
chalabi2 Jul 27, 2026
936f6d4
fix(cli): inject build info and add version --long
chalabi2 Jul 27, 2026
817cae5
docs: document capability gating, transports, sdl, and console surface
chalabi2 Jul 27, 2026
03c5690
build: make the release pipeline work end to end
chalabi2 Jul 27, 2026
56ca778
ci: add lint and coverage gates, fix nil-value render panics
chalabi2 Jul 27, 2026
d8ab4a7
ci: drop the scheduled run, keep the drift check manual
chalabi2 Jul 27, 2026
3c61706
ci: fix lint action version and make targets in a bare checkout
chalabi2 Jul 27, 2026
f5c210e
ci: reclaim runner disk before the release build
chalabi2 Jul 27, 2026
df18c5a
docs: point repository references at ovrclk/akt
chalabi2 Jul 27, 2026
2a1dc59
docs: record dim as the settled command-gating default
chalabi2 Jul 27, 2026
7f5e7c5
fix(cli): skip the first-run bootstrap for config-free commands
chalabi2 Jul 27, 2026
c486815
test(e2e): cover every module query and the deployment lifecycle
chalabi2 Jul 27, 2026
f0a2b77
test(e2e): drop the vacuous query params matrix entry
chalabi2 Jul 27, 2026
83efcff
fix(console): treat a one-shot stream's EOF as the end of output
chalabi2 Jul 28, 2026
dc882d3
test(e2e): cover the Console read paths that need a live dseq
chalabi2 Jul 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 140 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
name: ci

on:
push:
branches: [main]
pull_request:
# Manual only — used to run the upstream-drift check below on demand.
workflow_dispatch:

concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
GOWORK: off

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
- uses: golangci/golangci-lint-action@v7
with:
# Must match GOLANGCI_LINT_VERSION in the Makefile, and must be
# built with Go >= the go directive in go.mod — older releases
# refuse to load a config targeting a newer language version.
# golangci-lint v2 needs action v7; v6 rejects a v2 version string.
version: v2.11.4
args: --timeout=10m

build-and-unit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Build
run: go build ./...
- name: Unit tests (excluding e2e)
# e2e is excluded here: it shells out to a built binary and has its
# own jobs. Piped into xargs rather than an unquoted command
# substitution, which relies on word splitting (SC2046).
run: go list ./... | grep -v /e2e | xargs go test

coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
# Gates the akt-authored packages that carry risk (money, credentials,
# gating, action log, transports). internal/cli/chain is excluded: it
# is a clean copy of chain-sdk maintained by re-copying, so tests
# written against it are clobbered on the next copy — including it
# would cap the repo-wide number near 62% no matter what we write.
# See make/testing.mk for the package sets and COVER_THRESHOLD.
- name: Reconstruct the direnv environment
# The coverage targets write under $AKT_DEVCACHE. Those paths live in
# .env (sourced by .envrc), which CI has no direnv to load — so source
# it here rather than duplicating the paths in this workflow.
run: |
set -euo pipefail
export AKT_ROOT="$GITHUB_WORKSPACE"
set -a
# shellcheck disable=SC1091
. ./.env
set +a
env | grep -E '^(AKT_ROOT|AKT_DEVCACHE|AKT_RUN)' >> "$GITHUB_ENV"

- name: Core coverage (gated)
run: make test-coverage-check
- name: Repo-wide coverage (reported, not gated)
run: make test-coverage
- uses: actions/upload-artifact@v4
if: always()
with:
name: coverage
path: .cache/coverage/
retention-days: 7

e2e-offline:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Build akt binary
# `make akt` needs the direnv-managed environment (AKT_ROOT,
# AKT_DEVCACHE_*, static-link toolchain); build the plain binary
# directly at the path the e2e harness expects instead.
run: go build -o .cache/bin/akt ./cmd/akt
- name: e2e offline suite (gated localnet tests self-skip)
run: go test ./e2e/... -v -count=1

e2e-localnet:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Build akt binary
run: go build -o .cache/bin/akt ./cmd/akt
# The node image version lives in one place — defaultNodeImage in
# e2e/localnet_test.go — so this job pins by using the harness default.
# Pinning keeps the blocking gate reproducible: a red run means this
# change broke something, not that upstream published a release.
- name: e2e localnet suite (single-validator akash node in docker)
env:
AKT_E2E_LOCALNET: "1"
run: go test ./e2e/ -run TestLocalnet -v -count=1 -timeout 15m

e2e-localnet-latest:
# Upstream-drift check: the same suite against the newest node image.
# Manual only — it never runs on a push or a pull request, so an upstream
# release cannot redden someone's PR. Worth a click before cutting a
# release; a failure means the node image changed in a way the bootstrap
# or the CLI must adapt to, after which bump defaultNodeImage.
if: github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Build akt binary
run: go build -o .cache/bin/akt ./cmd/akt
- name: e2e localnet suite against the latest node image
env:
AKT_E2E_LOCALNET: "1"
AKT_E2E_NODE_IMAGE: ghcr.io/akash-network/node:latest
run: go test ./e2e/ -run TestLocalnet -v -count=1 -timeout 15m
113 changes: 113 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
name: release

on:
push:
tags:
- "v*"
workflow_dispatch:
inputs:
mode:
description: "What to run for a manual trigger"
type: choice
default: snapshot
options:
- check
- snapshot
- dry-run

concurrency:
# Never cancel a run that may be halfway through uploading release assets.
group: release-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false

env:
GOWORK: off

permissions:
contents: read

jobs:
goreleaser:
runs-on: ubuntu-latest
permissions:
# goreleaser creates the GitHub release and uploads the archives,
# packages and checksums to it.
contents: write
steps:
- uses: actions/checkout@v4
with:
# The version baked into the binary comes from `git describe`, so the
# single-commit default checkout is not enough.
fetch-depth: 0

- name: Fetch tags
# actions/checkout does not always bring annotated tag objects along,
# and goreleaser needs the annotation to build the changelog.
run: git fetch --force --tags

- uses: actions/setup-go@v5
with:
go-version-file: go.mod

- name: Load repo build environment
# The release targets expect the direnv-managed variables (AKT_ROOT and
# the AKT_DEVCACHE_* paths). .env is plain shell, so source it here
# rather than duplicating those paths in this workflow.
run: |
set -euo pipefail
export AKT_ROOT="$GITHUB_WORKSPACE"
set -a
# shellcheck disable=SC1091
. ./.env
set +a
env | grep -E '^(AKT_ROOT|AKT_DEVCACHE|AKT_RUN)' >> "$GITHUB_ENV"

- name: Free disk space
# The release needs roughly 10 GB: the goreleaser-cross image alone is
# ~7.4 GB, plus the module cache, the libwasmvm archives and four cgo
# cross-compiles worth of build output and artifacts. A stock runner
# does not have that much headroom and the build dies partway through
# with "no space left on device". Removing preinstalled toolchains this
# job never uses reclaims ~25 GB.
run: |
set -euo pipefail
echo "before:"; df -h / | tail -1
sudo rm -rf \
/usr/local/lib/android \
/usr/share/dotnet \
/usr/share/swift \
/opt/ghc \
/usr/local/.ghcup \
/opt/hostedtoolcache/CodeQL \
/usr/local/share/powershell \
/usr/local/share/boost
sudo docker image prune --all --force >/dev/null 2>&1 || true
echo "after:"; df -h / | tail -1

# Everything below shells out to `make`, which drives goreleaser inside
# ghcr.io/goreleaser/goreleaser-cross (see make/releasing.mk). Docker is
# preinstalled on the GitHub-hosted runners.
- name: Publish release
if: github.event_name == 'push'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: make release

- name: Manual run (${{ inputs.mode }})
if: github.event_name == 'workflow_dispatch'
env:
MODE: ${{ inputs.mode }}
run: make "release-${MODE}"

- name: Upload artifacts
if: github.event_name == 'workflow_dispatch' && inputs.mode != 'check'
uses: actions/upload-artifact@v4
with:
name: akt-${{ inputs.mode }}
path: |
.cache/goreleaser/*.zip
.cache/goreleaser/*.deb
.cache/goreleaser/*.rpm
.cache/goreleaser/*checksums.txt
if-no-files-found: error
retention-days: 7
Loading
Loading