Skip to content

Bundles feature#4752

Open
gabrielbeamable wants to merge 9 commits into
mainfrom
issue/manifest-bundles
Open

Bundles feature#4752
gabrielbeamable wants to merge 9 commits into
mainfrom
issue/manifest-bundles

Conversation

@gabrielbeamable

Copy link
Copy Markdown
Contributor

Summary

Adds CLI support for Beamo manifest bundles — the evolution of the flat per-realm manifest into a manifest-of-manifests that pulls named, content-addressed bundles from a shared catalog. This lands the OpenAPI regen that introduces the bundle/segments/analytics clients (and retypes ManifestView onto the new BeamoBasic* family), then layers on a bundles command group, manifest.beam.json reference plumbing, and an internal admin force-inject escape hatch.

Changes

OpenAPI regen & build adoption

  • Regenerated Models.gs.cs plus new generated clients: BeamBeamobundle, BeamBeamoforcedbundle, BeamBeamopullrequest, BeamSegments, BeamCustomersegments, BeamPlayersegments, BeamAnalytics
  • Repointed ManifestView onto the BeamoBasic* reference family; added Basic-family overloads to ConvertToBeamoV2 / checksum helpers and new Basic→canonical ConvertToBundleReference converters
  • New OptionalArrayOfArrayOfString optional type; registered the new bundle clients in OpenApiSystem.RegisterOpenApis
  • Fully-qualified System.Net.* to resolve collisions with new generated IPAddress/AddressFamily models

bundles command group (beam bundles <cmd>)

  • new, plan, publish, list, get, history, tags, tag, yank, pin, acl, prune-yanked
  • Authored-bundle discovery/validation of *.beam.bundle.json files (unique names; each beamoId in at most one bundle)
  • Bundle build + diff services (BundleBuild, BundleDiff, BundleWorkspace)
  • No-op @-token replacer so namespaced names (<namespace>/<bundle>) aren't swallowed by System.CommandLine's @file response-file expansion

Manifest references (Phase 1)

  • New manifest.beam.json (schemaVersion + references map) with ConfigService load/save helpers, wired into deploy plan/release

Internal admin

  • beam deploy admin force-inject <name> --realm --checksum [--unset], marked internal-use (SuperAdmin-gated server-side)

OpenAPI generation fix

  • Rewrote SwaggerService self-reference detection as an explicit path-tracked traversal to stop an infinite loop on recursive schemas
// .beamable/manifest.beam.json
{
  "schemaVersion": 2,
  "references": {
    "<namespace>/<bundle-name>": "sha256:<checksum>"
  }
}

@gabrielbeamable gabrielbeamable requested a review from cdhanna July 10, 2026 00:03
@github-actions

Copy link
Copy Markdown
Contributor

Lightbeam link


Log.Information($"Building bundle=[{bundle.name}] to compute its diff...");
// Don't exclude bundle components here — this command operates on exactly those components.
var (plan, _) = await this.InteractivePlan(provider, args, excludeAuthoredBundleComponents: false);

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

we stopped here

{
AddArgument(new Argument<string>("bundle-name", "The namespaced bundle name, e.g. <namespace>/<bundle-name>"),
(args, i) => args.bundleName = i);
AddOption(new Option<string>("--tag", () => null, "Resolve the checksum from this tag (defaults to latest)"),

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

the default should be defined here

@github-actions

Copy link
Copy Markdown
Contributor

Lightbeam link

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.

1 participant