CLI: Update hypeman SDK to fea5b3beedd949cd92698ae9f0f1771c5945a0ad and add new commands/flags - #64
Merged
Merged
Conversation
The SDK now accepts Docker-style registry credentials on ImageNewParams, so a private-registry image can be pulled without the server holding credentials for that registry. Expose them as --username/--password/--registry-token on `hypeman image create` and `hypeman pull`. `hypeman push create` already had the same three flags for the outbound push credentials, so both call sites now share one flag set and one builder. A full enumeration of the 61 SDK methods in api.md and their param struct fields against the CLI command tree found no other coverage gaps. Co-authored-by: Cursor <cursoragent@cursor.com>
Bump github.com/kernel/hypeman-go to 7f21c67d750f6dd66c6b6af04e88c710841f2daf, which adds the GET /capabilities resource. Expose it as `hypeman capabilities` so users can discover which runtimes and features a host actually supports instead of hard-coding hypervisor knowledge. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # pkg/cmd/pushcmd.go
Bumps github.com/kernel/hypeman-go to ea5a7f8d0d069b51e10189a8d0196f6155aaa4a8. A full enumeration of api.md against the pkg/cmd command tree found every SDK method already reachable from the CLI, but the SDK bump adds instance TTL / absolute expiration to InstanceNewParams and InstanceUpdateParams, which had no CLI surface. Expose them as --ttl and --expires-at on `hypeman run` and a new `hypeman update expiration` subcommand, rejecting the mutually exclusive combination and malformed values before the API round trip. Co-authored-by: Cursor <cursoragent@cursor.com>
Pin the CLI to the tagged v0.26.0 release of github.com/kernel/hypeman-go instead of the pseudo-version for the unreleased ea5a7f8d commit. A full enumeration of api.md methods and their param structs against the CLI command tree found no coverage gaps: all 62 SDK methods and every param field already map to an existing command or flag. Co-authored-by: Cursor <cursoragent@cursor.com>
Resolves the go.sum conflict by regenerating it against the current module graph, and bumps github.com/kernel/hypeman-go to v0.26.1 (392f55111d188fad255676e90c0c55d7c4b35b73). A full enumeration of api.md methods and their param structs against pkg/cmd found no coverage gaps, so no new commands or flags are needed. Co-authored-by: Cursor <cursoragent@cursor.com>
Bumps github.com/kernel/hypeman-go to 013dac97bc8391d82f4b583f1a579c3024f23f88,
which adds InstanceDeleteParams so callers can skip the graceful guest shutdown
that DELETE /instances/{id} performs by default.
Exposes the new field as `hypeman rm --graceful-shutdown`. The value is only
sent when explicitly set so the server default (true) still applies otherwise.
Compose teardown passes empty params to preserve its current behavior.
Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want higher recall? High effort reviews run extra passes and find more bugs. A team admin can switch effort levels in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit d650026. Configure here.
Full enumeration of api.md methods and CLI commands found no coverage gaps; the SDK change since 013dac97 is a release-only commit. Co-authored-by: Cursor <cursoragent@cursor.com>
Bumps github.com/kernel/hypeman-go to
v0.27.1-0.20260901144111-bfd38eda3b82.
That SDK release adds client.Images.Tag (POST /images/{name}/tag), which
had no CLI equivalent, so this adds `hypeman image tag <source> <target>`.
The target validation push already performed is now shared, since a tag
destination has the same requirement of an explicit tag.
Co-authored-by: Cursor <cursoragent@cursor.com>
Full enumeration of api.md methods and CLI commands found no coverage gaps; v0.28.0 tags the local image tagging change already exposed as `hypeman image tag`. Co-authored-by: Cursor <cursoragent@cursor.com>
chruffins
approved these changes
Sep 1, 2026
chruffins
left a comment
Contributor
There was a problem hiding this comment.
reviewed after fixing the Bugbot findings; the CLI changes and tests are ready to merge.
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.

This PR updates the Hypeman Go SDK to
fea5b3beedd949cd92698ae9f0f1771c5945a0adand carries the CLI commands/flags added for new SDK methods on this evergreen branch.SDK Update
fea5b3beedd949cd92698ae9f0f1771c5945a0ad(module versionv0.28.0)Coverage Analysis
This PR was generated by performing a full enumeration of SDK methods and CLI commands.
api.mdwas enumerated and each now has a corresponding CLI command, or a verified internal call site:client.Health.Checkbehindhypeman health,client.Instances.Getbehindinspect/rm,client.Instances.Statbehindcp,client.Volumes.NewFromArchivebehindvolume create --from-archive, andclient.Builds.Eventsbehind the event stream thathypeman buildfollows.HealthCheckParam,AutoStandbyPolicyParam,SnapshotCompressionConfigParam,IngressRuleParam, andTagImageRequestParam, were checked against the CLI flag set. The only fields without a dedicated flag remainInstanceNewParamsCredential.InjectandInstanceNewParamsCredentialInject.Hosts, which are reachable throughhypeman run --credentials-jsonsince that flag unmarshals the full credential policy map.openapi.yamlcontains no endpoints markedx-cli-skip: true.Version
v0.28.0is the release tag for the "local image tagging on shared content storage" change (bfd38ed), which this branch already covers withhypeman image tag. No new methods or param fields came with this bump, so this run is a version bump only and the commands and flags below are the accumulated coverage this branch adds overmain.New Commands
hypeman image tag <source> <target>forclient.Images.Tag(), sendingTagImageRequestParam.Targethypeman capabilitiesforclient.Capabilities.Get()hypeman update expirationforclient.Instances.Update()withInstanceUpdateParams.Ttl/ExpiresAtNew Flags
--graceful-shutdownonhypeman rmforInstanceDeleteParams.GracefulShutdown--ttland--expires-atonhypeman runforInstanceNewParams.TtlandInstanceNewParams.ExpiresAt--ttland--expires-atonhypeman update expirationforInstanceUpdateParams.TtlandInstanceUpdateParams.ExpiresAt--username,--password, and--registry-tokenonhypeman image createandhypeman pullforImageNewParams.Credentials(PushCredentialsParam.Username/Password/RegistryToken)hypeman image tagtakes its source and target as positional arguments in the style ofdocker tag, soTagImageRequestParam.Targetneeds no flag. The reference check thathypeman pushalready applied to its destination is now shared between the two commands, since a tag destination has the same requirement of an explicit tag.Verification
go build ./...,go vet ./..., andgo test ./...all pass againstv0.28.0.Triggered by: kernel/hypeman-go@fea5b3b
Reviewer: @chruffins
Note
Low Risk
Mostly new commands and optional flags; instance delete defaults to graceful shutdown, which slightly changes rm behavior versus always hard-deleting.
Overview
Bumps hypeman-go from v0.24.0 to v0.28.0 and wires new SDK surface into the CLI.
Adds
hypeman capabilitiesto callCapabilities.Getand print host/server runtime features, networking, and image platforms (table by default;--format json/--transform runtimeslike other commands). README documents the new command.Image workflow:
hypeman image tag <source> <target>tags local content without re-pulling.--username/--password/--registry-tokenare factored into shared registry credential helpers and attached toimage createandpull; push reuses the same flags. Tag/push destinations sharevalidateTaggedImageReference(explicit tag required).Instances:
hypeman runandhypeman update expirationaccept mutually exclusive--ttland--expires-at.hypeman rmadds--graceful-shutdown(default true) viaInstanceDeleteParams; compose reconcile passes empty delete params where the API signature changed.Reviewed by Cursor Bugbot for commit c2de6c7. Bugbot is set up for automated code reviews on this repo. Configure here.