/** * Every top-level key of {@link CreateVendoConfig}, in declaration order. * * Adding a key to the interface without adding it here is a typecheck failure * (`_NoMissingKeys` below); adding one here that does not exist is also a * typecheck failure (`_listedKeysExist`). */ export declare const CREATE_VENDO_CONFIG_KEYS: readonly ["models", "auth", "principal", "memberships", "tools", "skills", "components", "catalog", "routes", "theme", "instructions", "store", "files", "sandbox", "harness", "knowledge", "appDatabase", "connectors", "connectedAccounts", "connections", "actAs", "serverActions", "remixWiring", "guard", "limits", "secrets", "logger", "telemetry", "development", "profileDir", "fetch", "profile", "shell", "mcp", "oauth", "agent", "agents", "sweep", "toolOutputCap", "uploadMaxBytes", "maxInitialTools", "loadout", "apps", "automations", "channels"]; export type CreateVendoConfigKey = (typeof CREATE_VENDO_CONFIG_KEYS)[number]; /** * Keys that still work and should not be used, mapped to the sentence a host is * told. One minor of grace, then they go. * * Spelled with the nested path where the deprecation is nested — `profile.tools` * is deprecated, `profile` itself is not. */ export declare const DEPRECATED_CONFIG_KEYS: Readonly>; /** * Keys that are GONE, mapped to the sentence naming their replacement. * * Unlike {@link DEPRECATED_CONFIG_KEYS} these do not work at all, so the * response is a boot error rather than a warning. TypeScript already rejects * every one of them; this is for the JavaScript host, where a dropped `policy` * would mean an unconfigured guard running wide open and a dropped `brief` * would mean an agent that forgot what the product is. A config change must * never fail that way quietly. */ export declare const REMOVED_CONFIG_KEYS: Readonly>; /** The `agent:` grab-bag members, and where each one went. Reported together * when a host still passes the options object, because a config on the old * shape usually carries several of them. */ export declare const REMOVED_AGENT_OPTION_KEYS: Readonly>; /** * Refuse a config still written against a removed key, naming the replacement. * Called from `createVendo` before anything is constructed. */ export declare function rejectRemovedConfigKeys(config: Partial>): void; /** Test seam: the warn-once set is process-lifetime, so a suite that asserts the * warning has to be able to clear it. Never called by composition. */ export declare function resetDeprecationWarnings(): void; /** Say a deprecation once per key per process. Exported because the shims that * are VALUE-shaped rather than key-shaped — a string where a `Connector` now * belongs — live where the value is read, and must share this one set so * `resetDeprecationWarnings` still reaches them. */ export declare function warnDeprecatedOnce(key: string, message: string, warn?: (message: string) => void): void; /** * Say, once per key per process, that a set key has moved. Called from * `createVendo` with the raw config — the shim itself lives where the value is * read (`selectHostTools` for the tools slot), because that is where the * precedence lives. */ export declare function warnDeprecatedConfigKeys(config: Partial> & { profile?: Record; }, warn?: (message: string) => void): void; /** * The keys a markdown table documents: the first cell of every row whose first * cell is a single backticked identifier (`| \`store\` | … |`). * * Shared by both docs gates rather than re-derived per test, so "the docs list * these keys" means the same thing on the reference page and in the migration * table. */ export declare function tableKeys(markdown: string): string[]; /** What a documented key set is missing, and what it invented. Returned rather * than asserted so the gate's own red-green test can drive it with a synthetic * page instead of corrupting a real one. */ export declare function docsTableDiff(documented: readonly string[], expected?: readonly string[]): { missing: string[]; unknown: string[]; duplicated: string[]; };