Skip to content

feat: add aube - #7162

Open
jonahsnider wants to merge 6 commits into
containerbase:mainfrom
jonahsnider:aube
Open

feat: add aube#7162
jonahsnider wants to merge 6 commits into
containerbase:mainfrom
jonahsnider:aube

Conversation

@jonahsnider

@jonahsnider jonahsnider commented Jul 22, 2026

Copy link
Copy Markdown

Closes #7114

Summary by CodeRabbit

  • New Features

    • Added support for installing and managing the Aube tool.
    • Aube installations are verified and available through standard tool links.
    • Added Aube registry details and download examples to the documentation.
  • Tests

    • Added coverage for Aube installation on x86_64 and ARM64 environments.
    • Verified regular installation and installation with scripts ignored.
  • Chores

    • Included Aube in automated dependency update and test workflows.

@github-actions
github-actions Bot requested a review from viceice July 22, 2026 05:43
@JP-Ellis

Copy link
Copy Markdown

I would like to have my upstream PR in Renovate that adds support for Aube lockfiles, which ultimately depends on this being merged 🙂

Is there anything I can assist with to help get this merged?

Signed-off-by: Jonah Snider <jonah@jonahsnider.com>
@jamietanna

Copy link
Copy Markdown
Contributor

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 11, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: fa3a958d-0e74-4136-839c-78e2a41a458a

📥 Commits

Reviewing files that changed from the base of the PR and between 9dc5171 and d78355e.

📒 Files selected for processing (8)
  • .github/renovate.json
  • docs/custom-registries.md
  • src/cli/install-tool/index.ts
  • src/cli/tools/aube.ts
  • src/cli/tools/index.ts
  • test/latest/Dockerfile
  • test/latest/Dockerfile.arm64
  • test/latest/src/test/aube/package.json

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

Adds Aube as an installable runtime tool. The installer downloads architecture-specific GitHub release assets with checksum verification. Docker tests run aube install and aube install --ignore-scripts on amd64 and arm64.

Changes

Aube integration

Layer / File(s) Summary
Aube installer and registration
src/cli/tools/aube.ts, src/cli/install-tool/index.ts, src/cli/tools/index.ts, docs/custom-registries.md, .github/renovate.json
Adds architecture-specific Aube release installation, checksum verification, executable wrappers, version testing, install-container registration, no-prepare handling, registry documentation, and Renovate dependency rules.
Container installation validation
test/latest/Dockerfile, test/latest/Dockerfile.arm64, test/latest/src/test/aube/package.json
Adds Aube installation tests for both required commands and verifies the is-number package installation on amd64 and arm64 images.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant InstallTool
  participant AubeInstallService
  participant GitHubReleases
  participant ToolPath
  InstallTool->>AubeInstallService: install(version)
  AubeInstallService->>GitHubReleases: fetch release metadata
  GitHubReleases-->>AubeInstallService: return asset checksum
  AubeInstallService->>GitHubReleases: download release tarball
  AubeInstallService->>ToolPath: extract archive and create wrappers
  AubeInstallService->>ToolPath: run aube --version
Loading

Merge Risk: ⚪ Minimal · up to d7835

The Aube installation and command-compatibility coverage introduces no active merge-blocking risk.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 3 files. (5 skipped: 5 … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely identifies the main change: adding Aube support.
Linked Issues check ✅ Passed The PR implements the coding requirements in issue #7114. AubeInstallService downloads the GitHub release tarball for the architecture, reads the release SHA-256 digest, validates the download, extr…
Out of Scope Changes check ✅ Passed The changes remain within issue #7114. The install service, registration, runtime classification, release documentation, Renovate metadata, and amd64 and arm64 Docker tests directly support Aube insta…
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 3 files. (5 skipped: 5 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

Some tools did not complete. Review the errors below.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

src/cli/install-tool/index.ts

Oops! Something went wrong! :(

ESLint: 10.9.1

Error: File '@tsconfig/node24/tsconfig.json' not found.
Occurred while linting /src/cli/install-tool/index.ts:1
Rule: "import-x/namespace"
at resolveExtends (/.eslint-tmp/node_modules/.pnpm/get-tsconfig@4.14.3/node_modules/get-tsconfig/dist/index.cjs:7:7283)
at parseTsconfig (/.eslint-tmp/node_modules/.pnpm/get-tsconfig@4.14.3/node_modules/get-tsconfig/dist/index.cjs:7:8467)
at parseTsconfig (/.eslint-tmp/node_modules/.pnpm/get-tsconfig@4.14.3/node_modules/get-tsconfig/dist/index.cjs:7:13444)
at getTsconfig (/.eslint-tmp/node_modules/.pnpm/get-tsconfig@4.14.3/node_modules/get-tsconfig/dist/index.cjs:7:17072)
at getTsconfigWithContext (/.eslint-tmp/node_modules/.pnpm/eslint-import-context@0.1.9_unrs-resolver@1.12.2/node_modules/eslint-import-context/lib/utils.js:40:61)
at file:///.eslint-tmp/node_modules/.pnpm/eslint-plugin-import-x@4.17.1
@typescript-eslint+utils@8.70.0_eslint@10.9.1_supports-co_fa232b3ff681a14cb

... [truncated 231 characters] ...

cb725da7b933b8405/node_modules/eslint-plugin-import-x/lib/utils/lazy-value.js:7:22
at file:///.eslint-tmp/node_modules/.pnpm/eslint-plugin-import-x@4.17.1_@typescript-eslint+utils@8.70.0_eslint@10.9.1_supports-co_fa232b3ff681a14cb725da7b933b8405/node_modules/eslint-plugin-import-x/lib/utils/export-map.js:97:50
at file:///.eslint-tmp/node_modules/.pnpm/eslint-plugin-import-x@4.17.1_@typescript-eslint+utils@8.70.0_eslint@10.9.1_supports-co_fa232b3ff681a14cb725da7b933b8405/node_modules/eslint-plugin-import-x/lib/utils/lazy-value.js:7:22
at ExportMap.parse (file:///.eslint-tmp/node_modules/.pnpm/eslint-plugin-import-x@4.17.1_@typescript-eslint+utils@8.70.0_eslint@10.9.1_supports-co_fa232b3ff681a14cb725da7b933b8405/node_modules/eslint-plugin-import-x/lib/utils/export-map.js:347:17)

src/cli/tools/aube.ts

ESLint skipped: the matched ESLint configuration already failed (unknown).

src/cli/tools/index.ts

ESLint skipped: the matched ESLint configuration already failed (unknown).

  • 1 others

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai

coderabbitai Bot commented Sep 11, 2026

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Comment thread test/latest/Dockerfile Outdated
Comment thread src/cli/tools/aube.ts
Comment thread test/latest/src/test/aube/package.json
@jonahsnider

Copy link
Copy Markdown
Author

Thanks for the review! Feedback should be addressed now.

Comment thread src/cli/tools/aube.ts
Comment on lines +32 to +41
const release = await this.http.getJson<GitHubRelease>(
`https://api.github.com/repos/jdx/aube/releases/tags/v${version}`,
);
const expectedChecksum = release.assets
.find((asset) => asset.name === filename)
?.digest?.replace(/^sha256:/, '');

if (!expectedChecksum) {
throw new Error(`Cannot find checksum for '${filename}'`);
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Quality: aube checksum relies on undocumented api.github.com endpoint

Unlike apm.ts which fetches a .sha256 sidecar from the releases download URL, aube.ts fetches the full release metadata from https://api.github.com/repos/jdx/aube/releases/tags/v${version} to read the asset digest. This endpoint is unauthenticated (the HTTP service only sets a user-agent header, no token), so it is subject to GitHub's 60 req/hr per-IP anonymous rate limit, and it is not covered by the custom-registries.md docs, which only list github.com/jdx/aube/releases as the download source. Users mirroring aube via a custom registry would also need to proxy the API host (it does pass through envSvc.replaceUrl, but that is not documented). Consider documenting the API dependency in custom-registries.md and/or confirming rate limiting is acceptable for build environments.

Was this helpful? React with 👍 / 👎

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

aube doesn't ship releases with checksums, so we have to use the GitHub APIs if we want to verify the binary

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Gitar can change code and merge on your behalf, so it only acts on requests from people who can push. This needs Write access to this repository.

@gitar-bot

gitar-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown
Code Review 👍 Approved with suggestions 0 resolved / 1 findings

Adds AubeInstallService to support installing the aube package manager, with custom registry documentation and test suites. The checksum validation fetches release metadata from the GitHub API endpoint rather than a sidecar file; consider documenting this API dependency in the custom registries guide and confirming the 60 req/hr anonymous rate limit is acceptable for build environments.

💡 Quality: aube checksum relies on undocumented api.github.com endpoint

📄 src/cli/tools/aube.ts:32-41 📄 docs/custom-registries.md:62-73

Unlike apm.ts which fetches a .sha256 sidecar from the releases download URL, aube.ts fetches the full release metadata from https://api.github.com/repos/jdx/aube/releases/tags/v${version} to read the asset digest. This endpoint is unauthenticated (the HTTP service only sets a user-agent header, no token), so it is subject to GitHub's 60 req/hr per-IP anonymous rate limit, and it is not covered by the custom-registries.md docs, which only list github.com/jdx/aube/releases as the download source. Users mirroring aube via a custom registry would also need to proxy the API host (it does pass through envSvc.replaceUrl, but that is not documented). Consider documenting the API dependency in custom-registries.md and/or confirming rate limiting is acceptable for build environments.

🤖 Prompt for agents
Code Review: Adds `AubeInstallService` to support installing the `aube` package manager, with custom registry documentation and test suites. The checksum validation fetches release metadata from the GitHub API endpoint rather than a sidecar file; consider documenting this API dependency in the custom registries guide and confirming the 60 req/hr anonymous rate limit is acceptable for build environments.

1. 💡 Quality: aube checksum relies on undocumented api.github.com endpoint
   Files: src/cli/tools/aube.ts:32-41, docs/custom-registries.md:62-73

   Unlike `apm.ts` which fetches a `.sha256` sidecar from the releases download URL, `aube.ts` fetches the full release metadata from `https://api.github.com/repos/jdx/aube/releases/tags/v${version}` to read the asset `digest`. This endpoint is unauthenticated (the HTTP service only sets a user-agent header, no token), so it is subject to GitHub's 60 req/hr per-IP anonymous rate limit, and it is not covered by the `custom-registries.md` docs, which only list `github.com/jdx/aube/releases` as the download source. Users mirroring aube via a custom registry would also need to proxy the API host (it does pass through `envSvc.replaceUrl`, but that is not documented). Consider documenting the API dependency in custom-registries.md and/or confirming rate limiting is acceptable for build environments.

Options

Auto-apply is off → Gitar will not commit updates to this branch.
Display: compact → Counting what did not apply, without listing it.

Comment with these commands to change the behavior for this request:

Auto-apply Compact
gitar auto-apply:on         
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

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.

New tool: aube

3 participants