import { z } from "zod"; /** * App identity. * * Four fields, not one, because the eight environment keys that spell "which * app is this" were never all the same question: * * - `id` is this deployment's own identity — data programs, onboarding, the * CLI, and agent model defaults scope by it. * - `legacyId` preserves the deprecated `AGENT_APP` identity for compatibility * reads when a deployment also has a stable `id`. * - `workspaceId` is the identity a workspace deploy assigns. `vault_grants` * rows are written with it, so credential scoping must prefer it over `id` * or an app would look up grants under a name nobody granted. * - `name` is the user-facing display name ("Acme"), used in transactional * emails and page titles. It is not an identifier, and only leaks into * identity resolution as a last-resort fallback in readers that had nothing * better. * * Collapsing these into one field is the tempting simplification and it is * wrong: it would silently repoint credential grant lookups. * * None of them has a default. `credentialProvider` denies access when no app * identity is configured, and a default of `"app"` would turn that denial into * a lookup scoped to an app literally named `app`. Readers that want a * placeholder apply it themselves, where it is visible. */ export declare const appConfig: z.ZodObject<{ id: z.ZodOptional; legacyId: z.ZodOptional; workspaceId: z.ZodOptional; basePath: z.ZodOptional; name: z.ZodOptional; homePath: z.ZodOptional; logoUrl: z.ZodOptional; pingMessage: z.ZodDefault; healthStrictSchema: z.ZodDefault; url: z.ZodOptional; packageName: z.ZodOptional; template: z.ZodOptional; sourceTemplate: z.ZodOptional; slug: z.ZodOptional; description: z.ZodOptional; }, z.core.$strip>;