Wire Antigravity CLI as a first-class agent type

KE
5mo ago
+341-27

What type of PR is this?

/kind feature

What this PR does / why we need it:

Adds a new agent for Google Antigravity CLI (agy), Google's terminal coding agent that supersedes the deprecated Gemini CLI, and wires it through the documented CRD path so a manifest with type: antigravity is reachable end-to-end (not just buildable as an image).

  • New antigravity/ directory with Dockerfile and kelos_entrypoint.sh, mirroring the existing gemini/, opencode/, and cursor/ images (ubuntu:24.04 base + Go + Node + gh + git). The Dockerfile installs agy via the official https://antigravity.google/cli/install.sh script.
  • The entrypoint runs agy --print --output-format stream-json with optional --model "$KELOS_MODEL", writes KELOS_AGENTS_MD to ~/.config/agy/AGENTS.md, executes the optional KELOS_SETUP_COMMAND, and streams the agent output into kelos-capture.
  • Wires antigravity into IMAGE_DIRS in the Makefile and adds the image to the kind-load step of .github/workflows/reusable-e2e.yaml.
  • Extends Task.spec.type and TaskTemplate.type kubebuilder enums with antigravity and regenerates the CRD YAMLs.
  • Adds AgentTypeAntigravity, AntigravityImage, JobBuilder.AntigravityImage{,PullPolicy} fields, the --antigravity-image / --antigravity-image-pull-policy controller flags, and a switch case in JobBuilder.Build.
  • Restricts Task.spec.credentials.type to none for the antigravity agent type (the agy CLI has no documented non-interactive credential env var, so the controller refuses api-key/oauth rather than silently injecting Anthropic-shaped variables). Operators who need authenticated runs supply credentials via Task.spec.podOverrides.env.
  • Documents the new agent type and the credentials.type: none restriction in docs/agent-image-interface.md, docs/reference.md, skills/kelos/SKILL.md, and the README. Drops the unused ANTIGRAVITY_API_KEY line from the entrypoint contract header so docs match implementation.

Which issue(s) this PR is related to:

Fixes #1173

Special notes for your reviewer:

The Antigravity install script does not support pinning to a specific version; it always fetches the latest from Google's auto-updater service. This is acknowledged in the PR review feedback as a follow-up (P3) — a follow-up can pin the binary URL once Google publishes a stable per-version download pattern, matching the GEMINI_CLI_VERSION / CURSOR_CLI_VERSION pattern used by the sibling images.

Once agy documents a non-interactive credential env var, a follow-up can lift the credentials.type: none restriction by adding apiKeyEnvVar / oauthEnvVar cases for antigravity and updating the entrypoint contract.

Does this PR introduce a user-facing change?

Added a new agent for Google Antigravity CLI (`agy`). Set `type: antigravity` on a Task or TaskTemplate to use it; only `credentials.type: none` is supported, so credentials should be supplied via `podOverrides.env`.