feat: add GitHub release tarball workflow#23
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
scripts/pack-release.mjsseam and wire install smoke through it so future npm publication can reuse the same verified artifact preparation stageBehavior changes
Releaseworkflow withprepare-releaseandpublish-github-releasejobs plus explicit tag/package validationValidation
npm run verifydogfood/20260410-release-tarball/Proof / review artifacts
dogfood/20260410-release-tarball/README.mddogfood/20260410-release-tarball/screenshots/01-release-proof.pngdogfood/20260410-release-tarball/videos/release-proof.webmdogfood/20260410-release-tarball/recordings/release-proof.castNotes
📋 Implementation Plan
Plan: GitHub release tarball workflow with npm-publish-ready seams
Goal
Add a hand-curated release workflow that produces a validated
.tgzpackage on GitHub Releases, makes that asset the preferred private/prerelease install path, and keeps the implementation easy to extend with a future npm-publish job without over-engineering the first cut.Evidence from the current repo
.github/workflows/ci.ymlalready runs the quality bar and install smoke, but there is no release or publish workflow.package.jsonalready has the core packaging hooks we can reuse:buildpack:privatesmoke:installprepublishOnlyscripts/smoke-install.mjsalready validates the important packaging contract end to end:npm pack --json --ignore-scripts --pack-destination <dir>version --jsonanddoctor --jsonfrom the installed CLIREADME.mdalready treats the built tarball as the guaranteed prerelease/private install route and the git install route as best-effort only.docs/RELEASE-PROCESS.mdhas validation and proof expectations but does not yet document GitHub release asset creation or npm publish steps.name: "agent-terminal", and the explore report found that name already exists on npm. The new workflow should therefore stay generic around package metadata and not assume the final npm publish target is settled.Proposed implementation
Phase 1 — Add reusable release-artifact plumbing
Files:
package.json,scripts/pack-release.mjs(new), optionally a small focused test if the script gains nontrivial logic.buildalready ran (preferred for CI),npm pack --json --ignore-scripts --pack-destination <dir>,agent-terminal,pack:release, while leavingpack:privateintact, orpack:privateto call the new script without changing user-facing behavior.Quality gate after Phase 1
.tgzinto an isolated prefix and verifyversion --jsonanddoctor --jsonstill succeed.Phase 2 — Add a dedicated GitHub release workflow
Files:
.github/workflows/release.yml(new), possiblypackage.jsonif helper scripts/commands are added.prepare-releasejobmise run cior the current equivalent),package_name,package_version,tarball_filename, and checksum filename.publish-github-releasejobprepare-release,.tgzand checksum asset,github:owner/repo.agent-terminal-*.tgz,publish-npmjob to depend onprepare-release.package.jsonversion (for example,v1.2.3↔1.2.3),gh release create/uploador an equivalent maintained approach) so the workflow stays easy to audit and extend.Suggested workflow shape
Quality gate after Phase 2
.tgzand checksum assets.Phase 3 — Update install and release-process documentation
Files:
README.md,docs/RELEASE-PROCESS.md, and only any additional docs that directly reference the old prerelease install path.README.mdinstallation guidance so the preferred hosted prerelease path is the GitHub Release tarball asset.npm install -g <release-asset-url>for environments where the asset URL is accessible,npm install -g ./agent-terminal-<version>.tgzfor private-release environments.docs/RELEASE-PROCESS.mdwith:Quality gate after Phase 3
Future npm-publish seam
This change should stop short of publishing to npm, but the structure should make the follow-up small:
publish-npmjob should be able to depend onprepare-releaseinstead of rebuilding the package from scratch,Risks and decision points
agent-terminalalready exists on npm; future publish may require a scoped or renamed package. Do not bake the current name into workflow logic beyond reading it frompackage.json.scripts/smoke-install.mjsunless reuse is clearly worth the extra surface area.Acceptance criteria
Dogfooding and proof plan
Local CLI proof
AGENT_TERMINAL_HOME..tgzinto the isolated prefix.agent-terminal version --jsonagent-terminal --home "$AGENT_TERMINAL_HOME" doctor --jsonHosted GitHub proof
agent-browserskill to inspect the GitHub Actions run and the resulting Release page..tgzand checksum assets,Proof bundle expectations
dogfood/bundle for this feature.Generated with
mux• Model:openai:gpt-5.4• Thinking:xhigh