/** * The environment variable the Gemini API key is delivered as. * * Both what the deployment's `ToolSecretResolver` is asked for and the variable name the agent * reads inside its run container, which is why it is a POSIX identifier rather than the header it * ends up in (`x-goog-api-key`). * * Named for the VENDOR rather than for this definition's id: `GEMINI_API_KEY` is the variable * Google's own `google-genai` client libraries read from the environment, so an agent that reaches * for a library instead of writing the request by hand finds the value where the library looks. * That is also why this definition needs no `envName`: the lookup key and the injected name are * already the same string. * * It sits outside `isReservedPlatformEnvKey`'s set, which the tests assert rather than assume. The * platform's own Google models are reached through OpenRouter (`OPENROUTER_*`), so no family here * covers this name; if one ever does, the lookup resolves nothing and "no credential" looks exactly * like an unset variable. Never document it in `docs/environment-variables.md` either: every * variable named there is reserved by `check-reserved-env-keys.mjs`, which would retire this key. * * A workspace sets it as a capability credential (`binary-generator` subject, key `GEMINI_API_KEY`) * or the deployment sets it in the environment its runs dispatch from. */ export declare const NANO_BANANA_CREDENTIAL_KEY = "GEMINI_API_KEY"; /** * The registry id a step names in `stepOptions.binaryOutput.generatorIds`, re-exported from * `@cat-factory/contracts` rather than spelled here. * * The id has two authors that must agree: this definition, and the built-in `pl_media` preset in * kernel's seed catalog, which selects it. Kernel cannot import this package (this package depends * on kernel), so the shared layer below both owns the string and each side reads it. */ export { NANO_BANANA_GENERATOR_ID } from '@cat-factory/contracts'; /** * `nano-banana`: Google's Gemini image models, and the platform's FIRST shipped generative binary * integration. * * Three facts about where it sits. * * **It is the only one the platform ships**, which is a change of position rather than a first * step down a list. The registry stayed empty on the argument that no image generator is one every * organisation runs and every one of them is metered. Both halves are still true and neither one * decides this: what shipping the Media task type showed is that a step selecting NOTHING leaves * the deployment's most demonstrable capability reachable only by a deployment that first writes * an integration, an OpenAPI document and a credential declaration. Metered is handled by the * credential (unset means the agent is told the integration is unavailable and reports the gap), * so the cost of shipping one is a picker entry a deployment can ignore, against a task type that * generates nothing out of the box. * * **It is SYNCHRONOUS**, which is unusual for this class of API and is most of what its guidance * spends its words on. No task id, no polling loop, no signed URL with minutes on it: the bytes * come back on the create call. The failure mode that replaces them is quieter than any of those, * because a refused prompt answers 200 with text and no image at all. * * **It emits `image/png` and `image/jpeg`**, the two values `response_format.mime_type` takes and * the whole of what this API returns. A step needing a vector or an animated GIF is refused for * holding this alone, correctly, and pointed at whatever the deployment registered beside it. * * @see https://ai.google.dev/gemini-api/docs/image-generation */ export declare const nanoBananaGenerator: import("../define.js").BinaryGeneratorEntry; //# sourceMappingURL=nano-banana.d.ts.map