/** * The dev-substrate synth params — the versioned wire contract between the webapp * worker (PRODUCER: writes the params JSON into the ephemeral CDK workspace) and * the Fjall-owned synth entrypoint (CONSUMER: reads + parses it at `cdk synth`). * Both sides import THIS module — the single source, so the shape cannot fork * (design C2-4 / cross-system-parity). It lives in `@fjall/util` because that is * the only `@fjall/*` leaf the prod worker keeps (`npm ci --omit=dev` strips * `@fjall/components-infrastructure`, which holds `addDevSubstrate`). * * Like `manifest/schemas.ts`, this module imports only `zod` — no `fs`, no * `path`, no logger — so it stays a dependency-free contract. * * Co-versioning: `DevSubstrateSynthProps` (below) MUST stay structurally identical * to `IDevSubstrateProps` (the `addDevSubstrate` param, in * `@fjall/components-infrastructure`). A compile-time parity guard there asserts it * both ways, so a field added to one but not the other is a typecheck failure, not * a silent stale-params synth. */ import { z } from "zod"; /** Bump when the params wire shape changes incompatibly; `z.literal`-pinned below. */ export declare const DEV_SUBSTRATE_PARAMS_SCHEMA_VERSION: 2; /** * The params file the worker writes into the workspace and the entrypoint reads. * A single const both sides share so the filename cannot drift. */ export declare const DEV_SUBSTRATE_PARAMS_FILENAME = "dev-substrate-params.json"; /** The `addDevSubstrate` props subset — pinned to `IDevSubstrateProps` by the guard. */ export declare const DevSubstrateSynthPropsSchema: z.ZodObject<{ appId: z.ZodString; appKebab: z.ZodString; engineVersion: z.ZodOptional; adoptSlotEcr: z.ZodOptional; adoptCacheEcr: z.ZodOptional; phase: z.ZodOptional>; domain: z.ZodOptional; parentDomain: z.ZodOptional; parentDelegationRoleArn: z.ZodOptional; }, z.core.$strict>>; }, z.core.$strict>; export type DevSubstrateSynthProps = z.infer; /** * The full wire envelope: the synth props + the version stamp + the single-source * `appName`. `appName` is the `fjall-dev-` identity that drives BOTH the CDK * stack prefix (`App.getApp(appName)`) AND the on-disk `fjall/` dir * basename deploy-core derives `operation.appName` from — the two are never * reconciled in code, so a divergence is a hard "no stacks match" no-deploy * (design VERDICT-3). The refine pins `appName === fjall-dev-` so a * mis-constructed params object fails at the parse boundary, not at synth. */ export declare const DevSubstrateParamsSchema: z.ZodObject<{ version: z.ZodLiteral<2>; appName: z.ZodString; appId: z.ZodString; appKebab: z.ZodString; engineVersion: z.ZodOptional; adoptSlotEcr: z.ZodOptional; adoptCacheEcr: z.ZodOptional; phase: z.ZodOptional>; domain: z.ZodOptional; parentDomain: z.ZodOptional; parentDelegationRoleArn: z.ZodOptional; }, z.core.$strict>>; }, z.core.$strict>; export type DevSubstrateParams = z.infer;