/** * `--original-prompt`: the creator's request in their own words. * * Every command that takes it declares the flag from here and builds the wire * field with the one function below, because the four hand-rolled copies this * replaced had already drifted: three disagreed with the other seven about * whether an empty string counts, and none of them honoured `DO_NOT_TRACK`. * * It started on the generators — `init`, `forge`, `cover`, `reference` and the * `generate` subcommands — and now rides the everyday loop too (`build`, * `verify`, `dev`, `reload`, `publish`). That widening is what makes the count * on a game's public page mean anything: a GDK project is built mostly by an * agent editing TypeScript, and the only commands that lane runs are the ones * that generate no assets at all. See {@link creatorAskDigest}. * * The wire field is `creatorPrompt`, deliberately NOT `originalUserPrompt`. * That name already means something on the forge lane — * `ForgeJobInput.originalUserPrompt` is fed to the director and the designer * and is persisted onto the level asset as `worldForgerUserPrompt` — so * reusing it made a flag documented as inert change what got built. One name, * one meaning: `creatorPrompt` is analytics-only on every lane. */ export declare const ORIGINAL_PROMPT_FLAG: { readonly type: "string"; readonly description: string; }; /** * The creator's own words as the wire field, or nothing. * * Reads the running command rather than taking the value from its caller: `--original-prompt` is * one value per invocation, captured once in `beginCommand` (which is also where `DO_NOT_TRACK` * drops it), so a request builder does not need to be handed it. `override` exists for tests and * for the one caller that has a value but no running command. * * Returns nothing when no command is running — a module called directly by a test, never the CLI. */ export declare function creatorPromptField(override?: unknown): { creatorPrompt: string; } | Record; /** `body` plus the creator's own words, when the flag was given and telemetry is on. */ export declare function withParent(body: Record): Record; /** * The creator's ask as an opaque, stable dedupe key — what a game's "Built with N prompts" is * counted on, so the COUNT never depends on storing anybody's words. (The beacon also carries the * words themselves in {@link creatorAskText}, for a channel that shows them and stores nothing.) * * The CLI is the ONLY producer of this value. api-server stores it and compares it to other * values from this same function; it never recomputes one from text, so the two sides cannot * drift the way they would if both hashed independently. What DOES matter is that this function * stays stable across CLI versions — a creator whose CLI changed the digest mid-project would * have their earlier asks counted a second time. * * Capped before hashing for the same reason api-server caps before storing: the value is * whatever the agent typed after `--original-prompt`, and nothing upstream bounds it. * * Returns nothing when the command carried no ask, which is also what an agent that ignores * `--original-prompt` produces — the count is a floor, never an overcount. */ export declare function creatorAskDigest(override?: unknown): string | undefined; /** * The creator's ask as TEXT, bounded for a wire that has a body limit. * * The beacon carries this so the live-prompts Slack channel can show what an * agent is being asked for on the commands that send no prompt anywhere else — * `build`, `verify`, `dev`, `reload`, `publish` — which are most of what * building a GDK project consists of. api-server posts it and never stores it: * the count still runs on {@link creatorAskDigest}, and no prompt text reaches * Postgres. * * Capped by the same rule the digest hashes under, so the two always describe * the same words. `DO_NOT_TRACK` drops it upstream in `beginCommand`, like * every other field here. */ export declare function creatorAskText(override?: unknown): string | undefined;