decolua/9router · error

Antigravity executor not found

Error message

Antigravity executor not found

What it means

Thrown by the Antigravity image adapter's executeViaExecutor (open-sse/handlers/imageProviders/antigravity.js:32) when getExecutor('antigravity') returns falsy. The image adapter is a thin delegate: it builds a chat-style body and hands everything to the antigravity chat executor for the correct request envelope and auth. Without that executor registered in open-sse/executors/index.js, delegation is impossible and the adapter fails fast instead of building a malformed request.

Source

Thrown at open-sse/handlers/imageProviders/antigravity.js:32

  // Raw base64 string (assume PNG)
  if (/^[A-Za-z0-9+/]/.test(input) && input.length > 100 && !input.startsWith("http")) {
    return { inlineData: { mimeType: "image/png", data: input } };
  }
  return null;
}

export default {
  // Delegate to executor instead of building URL/headers/body manually
  useExecutor: true,

  // Stubs - required by imageGenerationCore interface but unused with useExecutor
  buildUrl: () => "",
  buildHeaders: () => ({}),
  buildBody: () => ({}),

  async executeViaExecutor(model, body, credentials, log) {
    const executor = getExecutor("antigravity");
    if (!executor) throw new Error("Antigravity executor not found");

    // Ensure we use an image model for image generation
    const isImageModel = (m) => /image|imagen|image-generation/i.test(m || "");
    let targetModel = isImageModel(model) ? model : "gemini-3.1-flash-image";

    // If body.size is provided, resolve aspect ratio and append to model
    if (body.size && typeof body.size === "string") {
      const ratio = sizeToAspectRatio(body.size);
      const suffix = ratio.replace(":", "x");
      if (!targetModel.includes(suffix)) {
        targetModel = `${targetModel}-${suffix}`;
      }
    }

    // Build parts: text prompt + optional input image for editing
    const parts = [{ text: body.prompt }];
    const imageInput = body.image || (Array.isArray(body.images) && body.images[0]);
    if (imageInput) {

View on GitHub (pinned to 90b52e06ff)

Solutions

  1. Ensure the antigravity executor exists and is exported in open-sse/executors/index.js (check the import and the id key match getExecutor('antigravity')).
  2. Rebuild/restart the server after pulling updates so newly added executor modules are loaded.
  3. If you renamed the provider, update both the provider registry id and the executor registration id so they match.
  4. Verify with a quick node -e "import('./open-sse/executors/index.js').then(m => console.log(!!m.getExecutor('antigravity')))" against the built sources.

Example fix

// before (executors/index.js)
import KiroExecutor from "./kiro.js";
// after
import KiroExecutor from "./kiro.js";
import AntigravityExecutor from "./antigravity.js";
const executors = { ..., antigravity: new AntigravityExecutor() };
Defensive patterns

Strategy: type-guard

Validate before calling

import { getExecutor } from "./open-sse/executors/index.js";
if (typeof getExecutor !== "function" || !getExecutor("antigravity")) {
  throw new Error("antigravity executor is not registered — check executors/index.js");
}

Type guard

function antigravityAvailable() {
  try { return Boolean(getExecutor("antigravity")); } catch { return false; }
}

Try / catch

try {
  const image = await generateImage({ provider: "antigravity", ... });
} catch (e) {
  if (/Antigravity executor not found/.test(e.message)) {
    return fallbackImageProvider(prompt); // e.g. route to an OpenAI-compatible image provider
  }
  throw e;
}

Prevention

When it happens

Trigger: An image-generation request routes to the antigravity image provider while the executor map in open-sse/executors/index.js has no 'antigravity' entry — typically because the executor module was not imported/registered (build tree missing it, custom fork stripped it), or the provider id was renamed in one place but not the other.

Common situations: Running a modified/trimmed build where executors/index.js was hand-edited and the antigravity import dropped; a custom provider id ('antigravity-pro') routed to this adapter; stale build cache after upgrading where new executor files were added but the bundle wasn't rebuilt.

Related errors


AI-assisted analysis of decolua/9router@90b52e06ff (2026-08-30). Data as JSON: /api/errors/8a807b6305a11879. Report an issue: GitHub.