Skip to content

feat(aup): Go updater for agent harnesses (v1) - #101

Open
edheltzel wants to merge 9 commits into
masterfrom
atl-aup-01-go-tool
Open

edheltzel wants to merge 9 commits into
masterfrom
atl-aup-01-go-tool

Conversation

@edheltzel

Copy link
Copy Markdown
Owner

What this is

aup is a small standalone Go tool in tools/aup. It updates the 11 agent harnesses listed in a manifest (config/.config/aup/harnesses.toml, a copy of the fish manifest).

  • Skips harnesses that are not installed.
  • One failing step does not stop the others; the run exits non-zero if any step failed.
  • Logs to ~/.local/state/aup/last.log (colour codes stripped). The log is only opened after the manifest and --only check pass.
  • When run in a terminal, each updater gets the real terminal, so brew, claude and omp keep their colour and progress. Otherwise output is piped and copied to the log.
  • Appends the usual tool dirs to PATH (Homebrew first) without reordering the PATH it inherited.
  • Warns when a binary is installed in more than one place.
  • Flags: --dry-run, --only <name>, --manifest <path>.
  • just aup builds it into ~/.local/bin/aup.

What is not changed

The fish aup function, topgrade's custom.toml line and the upp abbreviation are untouched. Nothing changes for anyone until a later cutover.

Commits

  • ed4b8ffe feat(config): add aup harness manifest
  • 49e25888 feat(aup): add Go updater for agent harnesses
  • 30d25f51 test(aup): cover skip, isolation, dry-run, filter, duplicates, log, colour
  • 9b08822e feat(just): add aup build recipe
  • 3a614c73 fix(aup): put homebrew dirs before ~/.local/bin on PATH
  • ee9d138c fix(aup): give children the terminal when stdout is a TTY
  • 9038758e fix(aup): append known dirs to PATH instead of reordering it
  • eec04e7a fix(aup): open the log after validation and strip colour from it
  • 55a288ed chore(aup): go mod tidy

All commits are SSH-signed.

How it was tested

  • 17 Go tests (including one that runs a child under a real pty), go vet and gofmt -l all clean. go mod tidy -diff is clean.
  • Dry-run against the real manifest with NO_COLOR=1: 11 would run, 0 failed, 0 skipped.
  • The real updaters were not run.

New dependency: github.com/creack/pty, used only by the pty test. The other dependency is BurntSushi/toml.

Not included

  • The Yazi plugin fix (kept as a separate patch).
  • cursor-agent login and cleanup of the dual cursor-agent install.

Follow-ups (v2)

  • Cutover: point topgrade and upp at aup, then delete aup.fish and the fish manifest.
  • Stow and install route for the binary and manifest.
  • Noise: Plannotator and omp duplicate-install warnings; the Plannotator dry-run line shows the shell args joined.
  • The Herdr version probe runs brew --version, which reports Homebrew's version.
  • Exit codes when a child is killed by a signal.
  • Hosts, timeout and lockfile.
  • MacDaddy rollout.
  • The log colour stripper works per write, so an escape sequence split across two chunks of child output could slip through.

@github-actions

Copy link
Copy Markdown

Visual recap β€” skipped

The visual recap job did not run for this pull request. This is informational only and does not block the PR.

Recap skipped for 55a288e: PLAN_RECAP_TOKEN not configured.

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

βœ… No new issues found.

Reviewed changes

Reviewed the full diff for the standalone aup updater, its manifest, tests, and just recipe. Fish aup, topgrade, and upp are unchanged.

  • Manifest β€” config/.config/aup/harnesses.toml lists 11 harnesses in run order. List-form args stay intact for Plannotator.
  • Updater β€” skips a missing binary, keeps going after a failed step, and exits non-zero if any step failed. ~/.local/state/aup/last.log opens only after the manifest and --only check pass.
  • TTY and PATH β€” children get the terminal when stdout is a TTY; otherwise output is piped and copied to the log with SGR codes stripped. Known tool dirs are appended and do not reorder the inherited PATH.
  • Build β€” just aup builds tools/aup into ~/.local/bin/aup. Cutover is left for a later change, as described.

Pullfrog  | View workflow run | Using grok-4.7 | 𝕏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants