@getrheo/contracts 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/animations.d.ts +226 -0
  2. package/dist/animations.js +1160 -0
  3. package/dist/animations.js.map +1 -0
  4. package/dist/appIntegrations.d.ts +175 -0
  5. package/dist/appIntegrations.js +60 -0
  6. package/dist/appIntegrations.js.map +1 -0
  7. package/dist/billingPeriod.d.ts +26 -0
  8. package/dist/billingPeriod.js +39 -0
  9. package/dist/billingPeriod.js.map +1 -0
  10. package/dist/canvasEditorGates.d.ts +81 -0
  11. package/dist/canvasEditorGates.js +1460 -0
  12. package/dist/canvasEditorGates.js.map +1 -0
  13. package/dist/constants/index.d.ts +30 -0
  14. package/dist/constants/index.js +67 -0
  15. package/dist/constants/index.js.map +1 -0
  16. package/dist/dashboard.d.ts +181856 -0
  17. package/dist/dashboard.js +3348 -0
  18. package/dist/dashboard.js.map +1 -0
  19. package/dist/decisions.d.ts +575 -0
  20. package/dist/decisions.js +1209 -0
  21. package/dist/decisions.js.map +1 -0
  22. package/dist/events.d.ts +231 -0
  23. package/dist/events.js +63 -0
  24. package/dist/events.js.map +1 -0
  25. package/dist/experiments-DN8pQa_D.d.ts +530 -0
  26. package/dist/externalSurfaceIntegrations.d.ts +20 -0
  27. package/dist/externalSurfaceIntegrations.js +49 -0
  28. package/dist/externalSurfaceIntegrations.js.map +1 -0
  29. package/dist/externalSurfaces.d.ts +177 -0
  30. package/dist/externalSurfaces.js +1190 -0
  31. package/dist/externalSurfaces.js.map +1 -0
  32. package/dist/fields.d.ts +8 -0
  33. package/dist/fields.js +15 -0
  34. package/dist/fields.js.map +1 -0
  35. package/dist/flowManifestSchema-CtqygXCK.d.ts +50857 -0
  36. package/dist/flowTemplateComments.d.ts +23 -0
  37. package/dist/flowTemplateComments.js +14 -0
  38. package/dist/flowTemplateComments.js.map +1 -0
  39. package/dist/flowTemplates.d.ts +22 -0
  40. package/dist/flowTemplates.js +73 -0
  41. package/dist/flowTemplates.js.map +1 -0
  42. package/dist/identity.d.ts +35 -0
  43. package/dist/identity.js +18 -0
  44. package/dist/identity.js.map +1 -0
  45. package/dist/imageContentType.d.ts +11 -0
  46. package/dist/imageContentType.js +54 -0
  47. package/dist/imageContentType.js.map +1 -0
  48. package/dist/index.d.ts +224 -0
  49. package/dist/index.js +4557 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/layerUnion-BzXoAJLY.d.ts +34 -0
  52. package/dist/layers.d.ts +89844 -0
  53. package/dist/layers.js +1507 -0
  54. package/dist/layers.js.map +1 -0
  55. package/dist/layout-D0LpaKG-.d.ts +12896 -0
  56. package/dist/localized.d.ts +17 -0
  57. package/dist/localized.js +18 -0
  58. package/dist/localized.js.map +1 -0
  59. package/dist/manifest.d.ts +22192 -0
  60. package/dist/manifest.js +2163 -0
  61. package/dist/manifest.js.map +1 -0
  62. package/dist/media.d.ts +53 -0
  63. package/dist/media.js +55 -0
  64. package/dist/media.js.map +1 -0
  65. package/dist/planEntitlements.d.ts +65 -0
  66. package/dist/planEntitlements.js +117 -0
  67. package/dist/planEntitlements.js.map +1 -0
  68. package/dist/publish-exports.json +102 -0
  69. package/dist/screens.d.ts +33586 -0
  70. package/dist/screens.js +1439 -0
  71. package/dist/screens.js.map +1 -0
  72. package/dist/sdk.d.ts +145942 -0
  73. package/dist/sdk.js +3424 -0
  74. package/dist/sdk.js.map +1 -0
  75. package/dist/sdkAttributes.d.ts +11 -0
  76. package/dist/sdkAttributes.js +17 -0
  77. package/dist/sdkAttributes.js.map +1 -0
  78. package/dist/workspaceCapabilities.d.ts +15 -0
  79. package/dist/workspaceCapabilities.js +116 -0
  80. package/dist/workspaceCapabilities.js.map +1 -0
  81. package/package.json +162 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/appIntegrations.ts","../src/constants/index.ts","../src/layers/layerSchemaRef.ts","../src/localized.ts","../src/hyperlinkHref.ts","../src/media.ts","../src/layers/ids.ts","../src/layers/restingMotion.ts","../src/layers/base.ts","../src/layers/themedColor.ts","../src/layerLayout/width.ts","../src/layers/styleCommon.ts","../src/layers/actions.ts","../src/layers/oauthConstants.ts","../src/layers/kinds/chrome.ts","../src/layers/kinds/layout.ts","../src/layers/kinds/auth/oauthProvider.ts","../src/layers/kinds/auth/oauthLogin.ts","../src/fields.ts","../src/layers/kinds/auth/emailPasswordAuth.ts","../src/layers/choiceBranching.ts","../src/layers/kinds/input.ts","../src/layers/kinds/carousel.ts","../src/layers/initLayerSchema.ts","../src/layers/tree.ts","../src/layers/layerUnion.ts","../src/screenBackground.ts","../src/decisions.ts","../src/animations.ts","../src/screens.ts","../src/canvasEditorGates.ts","../src/dashboard/appBranding.ts","../src/dashboard/tags.ts","../src/manifest/version.ts","../src/manifest/theme.ts","../src/externalSurfaces.ts","../src/manifest/flowManifestObjectBaseSchema.ts","../src/sdkAttributes.ts","../src/manifest/refineManifestGraph.ts","../src/manifest/refineManifestScreens.ts","../src/manifest/refineFlowManifest.ts","../src/manifest/flowManifestSchema.ts","../src/flowTemplates.ts","../src/dashboard/flows.ts","../src/dashboard/channels.ts","../src/dashboard/channelHistory.ts","../src/dashboard/rollouts.ts","../src/flowTemplateComments.ts","../src/dashboard/flowComments.ts","../src/dashboard/media.ts","../src/dashboard/experiments.ts","../src/dashboard/experimentStats.ts","../src/dashboard/notifications.ts","../src/workspaceCapabilities.ts","../src/dashboard/workspace.ts","../src/dashboard/analytics.ts","../src/dashboard/onboardingChecklist.ts","../src/identity.ts","../src/sdk.ts"],"names":["z","lazyLayer","next"],"mappings":"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","file":"sdk.js","sourcesContent":["import { z } from 'zod';\n\nexport type RevenueCatIntegration = {\n enabled: boolean;\n defaultOfferingId: string;\n defaultPlacementId: string;\n};\n\nexport type AppsFlyerIntegration = {\n enabled: boolean;\n};\n\nexport type ResolvedAppIntegrations = {\n revenuecat: RevenueCatIntegration;\n appsflyer: AppsFlyerIntegration;\n};\n\nconst DEFAULT_REVENUECAT: RevenueCatIntegration = {\n enabled: false,\n defaultOfferingId: '',\n defaultPlacementId: '',\n};\n\nconst DEFAULT_APPSFLYER: AppsFlyerIntegration = {\n enabled: false,\n};\n\nconst DEFAULT_INTEGRATIONS: ResolvedAppIntegrations = {\n revenuecat: DEFAULT_REVENUECAT,\n appsflyer: DEFAULT_APPSFLYER,\n};\n\nexport const parseAppIntegrations = (raw: unknown | null | undefined): ResolvedAppIntegrations => {\n const parsed = AppIntegrationsSchema.safeParse(raw);\n if (!parsed.success) return DEFAULT_INTEGRATIONS;\n return {\n revenuecat: { ...DEFAULT_REVENUECAT, ...parsed.data.revenuecat },\n appsflyer: { ...DEFAULT_APPSFLYER, ...parsed.data.appsflyer },\n };\n};\n\nexport const APP_INTEGRATIONS_DEFAULTS: ResolvedAppIntegrations = DEFAULT_INTEGRATIONS;\n\nexport const RevenueCatIntegrationSchema = z.object({\n enabled: z.boolean(),\n defaultOfferingId: z.string(),\n defaultPlacementId: z.string(),\n});\n\nexport const AppsFlyerIntegrationSchema = z.object({\n enabled: z.boolean(),\n});\n\nexport const ResolvedAppIntegrationsSchema = z.object({\n revenuecat: RevenueCatIntegrationSchema,\n appsflyer: AppsFlyerIntegrationSchema,\n});\n\nexport const AppIntegrationsSchema = z\n .object({\n revenuecat: RevenueCatIntegrationSchema.partial().optional(),\n appsflyer: AppsFlyerIntegrationSchema.partial().optional(),\n })\n .passthrough();\n\n/** Dashboard-only: attribution integrations we can probe for telemetry signals (extend when adding MMPs). */\nexport const DASHBOARD_ATTRIBUTION_INTEGRATION_PROVIDER_IDS = ['appsflyer'] as const;\nexport type DashboardAttributionIntegrationProviderId =\n (typeof DASHBOARD_ATTRIBUTION_INTEGRATION_PROVIDER_IDS)[number];\n\nexport const DashboardAttributionIntegrationProviderIdSchema = z.enum(\n DASHBOARD_ATTRIBUTION_INTEGRATION_PROVIDER_IDS,\n);\n\nexport const AttributionProviderSignalQuerySchema = z.object({\n provider: DashboardAttributionIntegrationProviderIdSchema,\n});\n\nexport const AttributionProviderSignalResponseSchema = z.object({\n provider: z.string(),\n signalDetected: z.boolean(),\n /** `false` when ClickHouse was unavailable or the query failed — treat as inconclusive. */\n checked: z.boolean(),\n matchCount: z.number().int().nonnegative(),\n /** ISO-8601 from ClickHouse `max(timestamp)`, or null when there are no matches. */\n lastSeenAt: z.string().nullable(),\n});\nexport type AttributionProviderSignalResponse = z.infer<typeof AttributionProviderSignalResponseSchema>;\n","export const ENVIRONMENTS = ['test', 'live'] as const;\nexport type Environment = (typeof ENVIRONMENTS)[number];\n\nexport const ROLES = ['owner', 'editor'] as const;\nexport type Role = (typeof ROLES)[number];\n\nexport const STEP_TYPES = [\n 'carousel',\n 'single_choice',\n 'multiple_choice',\n 'text_input',\n 'scale_input',\n 'cta',\n] as const;\nexport type StepType = (typeof STEP_TYPES)[number];\n\nexport const FIELD_CLASSIFICATIONS = ['safe', 'sensitive'] as const;\nexport type FieldClassification = (typeof FIELD_CLASSIFICATIONS)[number];\n\nexport const MEDIA_TYPES = ['image', 'font', 'lottie', 'video'] as const;\nexport type MediaType = (typeof MEDIA_TYPES)[number];\n\nexport const IMAGE_MIME_TYPES = [\n 'image/png',\n 'image/jpeg',\n 'image/webp',\n 'image/gif',\n 'image/svg+xml',\n] as const;\nexport const MAX_IMAGE_BYTES = 5 * 1024 * 1024;\n\n/** Lottie sources are JSON on the same CDN as images. */\nexport const LOTTIE_MIME_TYPES = ['application/json', 'text/json'] as const;\nexport const MAX_LOTTIE_BYTES = 10 * 1024 * 1024;\n\n/** Video files on the same CDN as images (mp4, webm, mov). */\nexport const VIDEO_MIME_TYPES = ['video/mp4', 'video/webm', 'video/quicktime'] as const;\nexport const MAX_VIDEO_BYTES = 50 * 1024 * 1024;\n\nexport const FONT_MIME_TYPES = [\n 'font/ttf',\n 'font/otf',\n 'font/woff',\n 'font/woff2',\n 'application/font-woff',\n 'application/font-woff2',\n 'application/x-font-ttf',\n 'application/x-font-otf',\n 'application/octet-stream',\n] as const;\nexport const FONT_FILE_EXTENSIONS = ['.ttf', '.otf', '.woff', '.woff2'] as const;\nexport const MAX_FONT_BYTES = 10 * 1024 * 1024;\n\nexport const EVENT_NAMES = [\n 'flow_started',\n 'step_viewed',\n 'step_completed',\n 'step_skipped',\n 'choice_selected',\n 'text_submitted',\n 'flow_completed',\n 'flow_abandoned',\n 'decision_evaluated',\n 'external_link_opened',\n 'surface_presented',\n 'surface_outcome',\n 'app_review_prompt_shown',\n 'app_review_prompt_dismissed',\n /** Emitted once per provider id when merged SDK attributes first expose that attribution source (used for integration health checks). */\n 'attribution_context_observed',\n /** Successful in-app purchase from an external surface (e.g. RevenueCat paywall); commerce fields live in `properties`. */\n 'iap_purchase',\n] as const;\nexport type EventName = (typeof EVENT_NAMES)[number];\n\nexport const PUBLISHABLE_KEY_PREFIX = 'ob_pk_';\nexport const API_VERSION = 'v1';\n\nexport const DEFAULT_LOCALE = 'en';\n\nexport const AUTOSAVE_DEBOUNCE_MS = 800;\nexport const SDK_EVENT_FLUSH_MS = 5000;\n","import type { z } from 'zod';\nimport type { LayerRaw } from './layerRawTypes.js';\n\n/** Populated by initLayerSchema.ts; z.lazy() in kind schemas reads this at parse time. */\nexport const layerSchemaStore: { schema?: z.ZodType<LayerRaw> } = {};\n","import { z } from 'zod';\n\nexport const LocaleCode = z\n .string()\n .regex(/^[a-z]{2}(-[A-Z]{2})?$/, 'locale must be like \"en\" or \"en-US\"');\n\nexport const LocalizedTextSchema = z.object({\n default: z.string().min(1, 'default copy is required'),\n translations: z.record(LocaleCode, z.string()).optional(),\n});\n\nexport type LocalizedText = z.infer<typeof LocalizedTextSchema>;\n\nexport const resolveLocalizedText = (text: LocalizedText, locale: string): string => {\n if (text.translations && text.translations[locale]) {\n return text.translations[locale]!;\n }\n return text.default;\n};\n","/**\n * External URLs for {@link HyperlinkLayer}: `https` and `mailto` only.\n * Used by Zod refinements and SDK analytics helpers.\n */\nexport type ParsedHyperlinkHref =\n | { ok: true; scheme: 'https'; host: string }\n | { ok: true; scheme: 'mailto' }\n | { ok: false };\n\nexport const parseHyperlinkHref = (raw: string): ParsedHyperlinkHref => {\n const t = raw.trim();\n if (!t) return { ok: false };\n let u: URL;\n try {\n u = new URL(t);\n } catch {\n return { ok: false };\n }\n const scheme = u.protocol.replace(/:$/, '').toLowerCase();\n if (scheme === 'https') {\n if (!u.hostname) return { ok: false };\n return { ok: true, scheme: 'https', host: u.hostname };\n }\n if (scheme === 'mailto') {\n return { ok: true, scheme: 'mailto' };\n }\n return { ok: false };\n};\n","import { z } from 'zod';\nimport { MEDIA_TYPES } from './constants/index';\n\nexport const MediaTypeSchema = z.enum(MEDIA_TYPES);\n\nexport const MediaReferenceSchema = z.object({\n mediaAssetId: z.string().uuid(),\n});\n\nexport type MediaReference = z.infer<typeof MediaReferenceSchema>;\n\nexport const MediaAssetSchema = z.object({\n id: z.string().uuid(),\n orgId: z.string().uuid(),\n type: MediaTypeSchema,\n url: z.string().url(),\n name: z.string().nullable().optional(),\n contentType: z.string(),\n sizeBytes: z.number().int().nonnegative(),\n archivedAt: z.string().datetime().nullable().optional(),\n createdAt: z.string().datetime(),\n});\n\nexport type MediaAsset = z.infer<typeof MediaAssetSchema>;\n\nexport {\n mergeMediaFileNameStem,\n mediaExtensionFromContentType,\n splitMediaFileName,\n} from './mediaFileName.js';\n","import { z } from 'zod';\n\nexport const LayerIdSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^lyr_[a-z0-9_]+$/i, 'layer id must look like lyr_<id>');\n\nexport const ScreenIdSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^scr_[a-z0-9_]+$/i, 'screen id must look like scr_<id>');\n\nexport type LayerId = z.infer<typeof LayerIdSchema>;\nexport type ScreenId = z.infer<typeof ScreenIdSchema>;\n","import { z } from 'zod';\n\n/** Continuous layer motion presets; orthogonal to keyed mount/unmount clips. */\nexport const RESTING_MOTION_PRESETS = ['translate', 'bounce', 'scale', 'pulse', 'rotate'] as const;\nexport type RestingMotionPreset = (typeof RESTING_MOTION_PRESETS)[number];\nexport const RestingMotionPresetSchema = z.enum(RESTING_MOTION_PRESETS);\n\nexport const RESTING_MOTION_SCALE_DIRECTIONS = ['up', 'down'] as const;\nexport type RestingMotionScaleDirection = (typeof RESTING_MOTION_SCALE_DIRECTIONS)[number];\nexport const RestingMotionScaleDirectionSchema = z.enum(RESTING_MOTION_SCALE_DIRECTIONS);\n\nexport const RESTING_MOTION_ROTATE_DIRECTIONS = ['clockwise', 'counterclockwise'] as const;\nexport type RestingMotionRotateDirection = (typeof RESTING_MOTION_ROTATE_DIRECTIONS)[number];\nexport const RestingMotionRotateDirectionSchema = z.enum(RESTING_MOTION_ROTATE_DIRECTIONS);\n\nexport const RestingMotionSchema = z\n .object({\n preset: RestingMotionPresetSchema,\n /**\n * Timeline segment length (ms): motion is active from start until\n * start + durationMs. When {@link loop} is true, the preset pattern repeats\n * every {@link cycleDurationMs} (or preset default) within this window.\n */\n durationMs: z.number().int().min(200).max(20_000).optional(),\n /** When true, repeat the motion pattern within the timeline segment; default is one shot. */\n loop: z.boolean().optional(),\n /**\n * Duration (ms) of one full pattern cycle when looping. Defaults per {@link RESTING_MOTION_DEFAULT_DURATION_MS}.\n */\n cycleDurationMs: z.number().int().min(200).max(20_000).optional(),\n intensity: z.number().min(0).max(2).optional(),\n /** Bounce preset only: vertical lift in px. When omitted, uses `14 * intensity` (default intensity 1 → 14). */\n bounceAmplitudePx: z.number().min(1).max(80).optional(),\n /** Scale preset: grow (+) or shrink (−) toward a peak, then return to 100%. */\n scaleDirection: RestingMotionScaleDirectionSchema.optional(),\n /**\n * Scale preset: when true (default), each cycle goes rest → peak scale → rest.\n * When false, ramps rest → peak and holds; with loop, the next cycle restarts from rest.\n */\n scaleSpringBack: z.boolean().optional(),\n /**\n * Scale preset: magnitude in % — growth above 100% (up to +400% = 5× at peak) or shrink toward\n * 100%− (up to 90% so peak can be 10% size). See authoring caps in the layer editor.\n */\n scalePercent: z.number().min(0).max(400).optional(),\n /**\n * Scale preset: ms for one full out-and-back (rest → peak → rest). Timeline bar still sets\n * {@link durationMs} (when the layer may animate); this controls how fast each cycle runs.\n */\n scalePatternDurationMs: z.number().int().min(200).max(20_000).optional(),\n /** @deprecated Use {@link scalePercent} + {@link scaleDirection}. Kept for legacy manifests. */\n scaleUpPercent: z.number().min(0).max(400).optional(),\n /** @deprecated Use {@link scalePercent} + {@link scaleDirection}. Kept for legacy manifests. */\n scaleDownPercent: z.number().min(0).max(90).optional(),\n /**\n * @deprecated Legacy vertical-only float (px). Prefer {@link translatePeakXPercent} / {@link translatePeakYPercent}.\n */\n translateRangePx: z.number().min(0).max(40).optional(),\n /** @deprecated Legacy peak offsets in px. Prefer {@link translatePeakXPercent} / {@link translatePeakYPercent}. */\n translatePeakXPx: z.number().min(-200).max(200).optional(),\n /** @deprecated Legacy peak offsets in px. Prefer {@link translatePeakXPercent} / {@link translatePeakYPercent}. */\n translatePeakYPx: z.number().min(-200).max(200).optional(),\n /** Translate preset: peak X offset as % of the layer box (−200–200). Scaled by intensity. */\n translatePeakXPercent: z.number().min(-200).max(200).optional(),\n /** Translate preset: peak Y offset as % of the layer box (−200–200). Scaled by intensity. */\n translatePeakYPercent: z.number().min(-200).max(200).optional(),\n /**\n * Translate preset: when true (default), each cycle goes rest → peak offset → rest. When false, ramp to\n * peak and hold; with loop, the next cycle restarts from the origin.\n */\n translateSpringBack: z.boolean().optional(),\n /** Rotate preset: target rotation in degrees (0–360), scaled by intensity. */\n rotateMaxDeg: z.number().min(0).max(360).optional(),\n /** Rotate preset: spin direction; omitted or `clockwise` → positive angles (default). */\n rotateDirection: RestingMotionRotateDirectionSchema.optional(),\n /**\n * Rotate preset: when true (default), each cycle oscillates 0° → peak → 0°.\n * When false, each cycle ramps 0° → peak and holds; with loop, the next cycle snaps to 0° and ramps again.\n */\n rotateSpringBack: z.boolean().optional(),\n /** Pulse preset: minimum opacity at the dip (0–1). Omitted → `1 - 0.38 * intensity`. */\n pulseMinOpacity: z.number().min(0).max(1).optional(),\n /** Ms after the last mount/stagger clip ends before motion applies (authoring + scrub). */\n delayMsAfterMountEnd: z.number().int().min(0).max(60_000).optional(),\n /**\n * Absolute start time (ms from screen mount). When set, overrides\n * {@link delayMsAfterMountEnd} + mount-clip end so motion can sit between\n * clips (e.g. after first entry, before exit) when multiple mounts exist.\n */\n timelineStartMs: z.number().int().min(0).max(3_600_000).optional(),\n })\n .strict();\nexport type RestingMotion = z.infer<typeof RestingMotionSchema>;\n\n/** One timeline motion segment on a layer; `id` disambiguates multiple motions per layer. */\nexport const RestingMotionEntrySchema = RestingMotionSchema.extend({\n id: z.string().min(1),\n});\nexport type RestingMotionEntry = z.infer<typeof RestingMotionEntrySchema>;\n","import { z } from 'zod';\nimport { LayerIdSchema } from './ids.js';\nimport { RestingMotionSchema, RestingMotionEntrySchema } from './restingMotion.js';\n\nexport const baseLayerShape = {\n id: LayerIdSchema,\n name: z.string().max(80).optional(),\n restingMotion: RestingMotionSchema.optional(),\n restingMotions: z.array(RestingMotionEntrySchema).optional(),\n} as const;\n","import { z } from 'zod';\n\nexport const ThemedColorModesSchema = z\n .object({\n light: z.string().min(1).optional(),\n dark: z.string().min(1).optional(),\n })\n .strict()\n .refine((o) => o.light !== undefined || o.dark !== undefined, {\n message: 'at least one of light or dark is required',\n });\n\nexport const ThemedColorSchema = z.union([z.string().min(1), ThemedColorModesSchema]);\nexport type ThemedColor = z.infer<typeof ThemedColorSchema>;\n\n/** Default body text: near-black on light surfaces, near-white on dark (matches sim/native chrome). */\nexport const DEFAULT_THEMED_FOREGROUND: ThemedColor = {\n light: '#000000',\n dark: '#ffffff',\n};\n\n/** Label on filled primary (and similar) buttons — high contrast on saturated fills in both modes. */\nexport const PRIMARY_FILLED_LABEL: ThemedColor = {\n light: '#ffffff',\n dark: '#000000',\n};\n","import { z } from 'zod';\n\nexport const WIDTH_PRESETS = ['auto', 'full', '1/2', '1/3', '2/3', '1/4', '3/4'] as const;\nexport type WidthPreset = (typeof WIDTH_PRESETS)[number];\n\n/** Width can be a named preset (`auto`, `full`, fractional) or a fixed pixel value. */\nexport const WidthValueSchema = z.union([z.enum(WIDTH_PRESETS), z.number().int().min(0).max(2000)]);\nexport type WidthValue = z.infer<typeof WidthValueSchema>;\n\n/** Height presets: `auto` (content-hug), `full`/`fill` (parent height), or fixed px. No fractional values. */\nexport const HEIGHT_PRESETS = ['auto', 'full', 'fill'] as const;\nexport type HeightPreset = (typeof HEIGHT_PRESETS)[number];\n\nexport const CommonLayoutHeightSchema = z.union([\n z.enum(HEIGHT_PRESETS),\n z.number().int().min(0).max(2000),\n]);\nexport type CommonLayoutHeight = z.infer<typeof CommonLayoutHeightSchema>;\n","import { z } from 'zod';\nimport { ThemedColorSchema } from './themedColor.js';\nimport {\n WIDTH_PRESETS,\n WidthValueSchema,\n HEIGHT_PRESETS,\n CommonLayoutHeightSchema,\n type WidthPreset,\n type WidthValue,\n type HeightPreset,\n type CommonLayoutHeight,\n} from '../layerLayout/width.js';\n\nexport { ThemedColorSchema } from './themedColor.js';\nexport type { ThemedColor } from './themedColor.js';\n\n/** Pixel distances for padding, margin, inset, gap, spacing, etc. */\nexport const NonNegativePxSchema = z.number().int().min(0);\n\nexport const PaddingSchema = z\n .object({\n t: NonNegativePxSchema.optional(),\n r: NonNegativePxSchema.optional(),\n b: NonNegativePxSchema.optional(),\n l: NonNegativePxSchema.optional(),\n })\n .partial();\nexport type Padding = z.infer<typeof PaddingSchema>;\n\nexport const BorderSchema = z\n .object({\n width: z.number().int().min(0).max(20).optional(),\n color: ThemedColorSchema.optional(),\n })\n .partial();\nexport type Border = z.infer<typeof BorderSchema>;\n\n/** CSS-like drop shadow (maps to `boxShadow` on web, shadow* props on native). */\nexport const DropShadowSchema = z\n .object({\n offsetX: z.number().int().min(-100).max(100).optional(),\n offsetY: z.number().int().min(-100).max(100).optional(),\n blur: z.number().int().min(0).max(100).optional(),\n spread: z.number().int().min(-50).max(50).optional(),\n color: ThemedColorSchema.optional(),\n opacity: z.number().min(0).max(1).optional(),\n })\n .partial();\nexport type DropShadow = z.infer<typeof DropShadowSchema>;\n\nexport type { WidthPreset, WidthValue, HeightPreset, CommonLayoutHeight };\nexport { WIDTH_PRESETS, WidthValueSchema, HEIGHT_PRESETS, CommonLayoutHeightSchema };\nexport const CommonStyleSchema = z\n .object({\n padding: PaddingSchema.optional(),\n margin: PaddingSchema.optional(),\n radius: z.number().int().min(0).max(96).optional(),\n background: ThemedColorSchema.optional(),\n border: BorderSchema.optional(),\n shadow: DropShadowSchema.optional(),\n opacity: z.number().min(0).max(1).optional(),\n width: WidthValueSchema.optional(),\n /** Omit for normal flow; `'absolute'` removes the layer from flex flow (non-root only). */\n position: z.literal('absolute').optional(),\n /** Pixel insets when `position === 'absolute'` (same shape as padding). */\n inset: PaddingSchema.optional(),\n zIndex: z.number().int().min(-999).max(999).optional(),\n /** Static rotation in degrees (CSS `rotate`); not timeline animation. */\n rotate: z.number().min(-360).max(360).optional(),\n /** Cross-axis size: `auto` (hug), `full`/`fill` (parent height), or fixed px. No fractions. */\n height: CommonLayoutHeightSchema.optional(),\n /** Stroke thickness in px for layers that render a stroke primitive (e.g. loader ring). */\n strokeWidth: z.number().int().min(0).max(64).optional(),\n })\n .partial();\nexport type CommonStyle = z.infer<typeof CommonStyleSchema>;\n\nexport const TextStyleSchema = CommonStyleSchema.extend({\n /**\n * Logical font family: manifest `theme.fontFamily` when omitted, {@link TEXT_FONT_FAMILY_SYSTEM_UI}\n * for the platform stack, or a custom name (matches `Branding.fontFamilies[].name` for uploaded fonts).\n */\n fontFamily: z.string().min(1).max(128).optional(),\n fontSize: z.number().int().min(8).max(96).optional(),\n fontWeight: z.number().int().min(100).max(900).optional(),\n color: ThemedColorSchema.optional(),\n align: z.enum(['left', 'center', 'right']).optional(),\n lineHeight: z.number().min(0.8).max(3).optional(),\n /** Multiplier (0–1) applied to the resolved background color alpha only; text stays fully opaque unless `opacity` is set. */\n backgroundOpacity: z.number().min(0).max(1).optional(),\n});\nexport type TextStyle = z.infer<typeof TextStyleSchema>;\n\nexport const ImageStyleSchema = CommonStyleSchema.extend({\n fit: z.enum(['cover', 'contain', 'fill']).optional(),\n aspectRatio: z.number().positive().max(10).optional(),\n});\nexport type ImageStyle = z.infer<typeof ImageStyleSchema>;\n\n/** Icon style: glyph fits the box (`min(width, height)`); use `style.width`/`style.height` to size. */\nexport const IconStyleSchema = CommonStyleSchema.extend({\n color: ThemedColorSchema.optional(),\n});\nexport type IconStyle = z.infer<typeof IconStyleSchema>;\n\nexport const ICON_FAMILIES = ['ionicons'] as const;\nexport type IconFamily = (typeof ICON_FAMILIES)[number];\n\nexport const ButtonStyleSchema = CommonStyleSchema.extend({\n fontSize: z.number().int().min(8).max(96).optional(),\n fontWeight: z.number().int().min(100).max(900).optional(),\n color: ThemedColorSchema.optional(),\n align: z.enum(['left', 'center', 'right']).optional(),\n});\nexport type ButtonStyle = z.infer<typeof ButtonStyleSchema>;\n\n/** Preset chrome shared by {@link ButtonLayer}, {@link BackButtonLayer}, OAuth custom rows, and email/password submit. */\nexport const BUTTON_LAYER_VARIANTS = ['primary', 'secondary', 'ghost', 'destructive'] as const;\nexport type ButtonLayerVariant = (typeof BUTTON_LAYER_VARIANTS)[number];\nexport const ButtonLayerVariantSchema = z.enum(BUTTON_LAYER_VARIANTS);\n\n/** Sparse overrides merged mobile-first on top of layer `style`. */\nexport const CommonStyleBreakpointsSchema = z\n .object({\n sm: CommonStyleSchema.partial().optional(),\n md: CommonStyleSchema.partial().optional(),\n lg: CommonStyleSchema.partial().optional(),\n xl: CommonStyleSchema.partial().optional(),\n '2xl': CommonStyleSchema.partial().optional(),\n })\n .partial()\n .optional();\nexport type CommonStyleBreakpoints = z.infer<typeof CommonStyleBreakpointsSchema>;\n\nexport const TextStyleBreakpointsSchema = z\n .object({\n sm: TextStyleSchema.partial().optional(),\n md: TextStyleSchema.partial().optional(),\n lg: TextStyleSchema.partial().optional(),\n xl: TextStyleSchema.partial().optional(),\n '2xl': TextStyleSchema.partial().optional(),\n })\n .partial()\n .optional();\nexport type TextStyleBreakpoints = z.infer<typeof TextStyleBreakpointsSchema>;\n\nexport const ImageStyleBreakpointsSchema = z\n .object({\n sm: ImageStyleSchema.partial().optional(),\n md: ImageStyleSchema.partial().optional(),\n lg: ImageStyleSchema.partial().optional(),\n xl: ImageStyleSchema.partial().optional(),\n '2xl': ImageStyleSchema.partial().optional(),\n })\n .partial()\n .optional();\nexport type ImageStyleBreakpoints = z.infer<typeof ImageStyleBreakpointsSchema>;\n\nexport const IconStyleBreakpointsSchema = z\n .object({\n sm: IconStyleSchema.partial().optional(),\n md: IconStyleSchema.partial().optional(),\n lg: IconStyleSchema.partial().optional(),\n xl: IconStyleSchema.partial().optional(),\n '2xl': IconStyleSchema.partial().optional(),\n })\n .partial()\n .optional();\nexport type IconStyleBreakpoints = z.infer<typeof IconStyleBreakpointsSchema>;\n\nexport const ButtonStyleBreakpointsSchema = z\n .object({\n sm: ButtonStyleSchema.partial().optional(),\n md: ButtonStyleSchema.partial().optional(),\n lg: ButtonStyleSchema.partial().optional(),\n xl: ButtonStyleSchema.partial().optional(),\n '2xl': ButtonStyleSchema.partial().optional(),\n })\n .partial()\n .optional();\nexport type ButtonStyleBreakpoints = z.infer<typeof ButtonStyleBreakpointsSchema>;\n\nconst StackLayoutBreakpointPatchSchema = z\n .object({\n gap: NonNegativePxSchema.optional(),\n direction: z.enum(['vertical', 'horizontal']).optional(),\n })\n .partial();\n\nexport const StackLayoutBreakpointsSchema = z\n .object({\n sm: StackLayoutBreakpointPatchSchema.optional(),\n md: StackLayoutBreakpointPatchSchema.optional(),\n lg: StackLayoutBreakpointPatchSchema.optional(),\n xl: StackLayoutBreakpointPatchSchema.optional(),\n '2xl': StackLayoutBreakpointPatchSchema.optional(),\n })\n .partial()\n .optional();\nexport type StackLayoutBreakpoints = z.infer<typeof StackLayoutBreakpointsSchema>;\n\nconst ButtonLayoutBreakpointPatchSchema = z\n .object({\n gap: NonNegativePxSchema.optional(),\n direction: z.enum(['vertical', 'horizontal']).optional(),\n })\n .partial();\n\nexport const ButtonLayoutBreakpointsSchema = z\n .object({\n sm: ButtonLayoutBreakpointPatchSchema.optional(),\n md: ButtonLayoutBreakpointPatchSchema.optional(),\n lg: ButtonLayoutBreakpointPatchSchema.optional(),\n xl: ButtonLayoutBreakpointPatchSchema.optional(),\n '2xl': ButtonLayoutBreakpointPatchSchema.optional(),\n })\n .partial()\n .optional();\nexport type ButtonLayoutBreakpoints = z.infer<typeof ButtonLayoutBreakpointsSchema>;\n","import { z } from 'zod';\nimport { ScreenIdSchema } from './ids.js';\n\n/** Authorable OS-facing permission capabilities; additive via schema bumps only. */\nexport const OS_PERMISSION_KEYS = [\n 'notifications',\n 'camera',\n 'microphone',\n 'photo_library',\n 'contacts',\n 'calendar',\n 'reminders',\n 'location_when_in_use',\n 'location_always',\n 'motion',\n 'bluetooth',\n 'app_tracking_transparency',\n 'speech_recognition',\n 'face_id',\n 'health_kit',\n 'media_library',\n 'local_network',\n 'nearby_interactions',\n 'nfc',\n 'full_screen_intent_android',\n 'sms_android',\n 'phone_android',\n] as const;\nexport type OsPermissionKey = (typeof OS_PERMISSION_KEYS)[number];\n\nexport const OsPermissionKeySchema = z.enum(OS_PERMISSION_KEYS);\n\nexport const PERMISSION_CAPTURE_FIELD_KEY_PREFIX = 'permission:' as const;\n\nexport const permissionCaptureFieldKey = (key: OsPermissionKey): `${typeof PERMISSION_CAPTURE_FIELD_KEY_PREFIX}${OsPermissionKey}` =>\n `${PERMISSION_CAPTURE_FIELD_KEY_PREFIX}${key}`;\n\n/** Storage key for `oauth_login_resolve` step responses (avoids `fieldKey` collisions). */\nexport const oauthLoginResponseKey = (layerId: string): string => `oauth:${layerId}`;\n\n/** Storage key for `email_password_auth_resolve` step responses (avoids `fieldKey` collisions). */\nexport const emailPasswordAuthResponseKey = (layerId: string): string => `email_pw:${layerId}`;\n\nexport const PERMISSION_OUTCOME_VALUES = ['granted', 'denied', 'blocked'] as const;\nexport type PermissionOutcome = (typeof PERMISSION_OUTCOME_VALUES)[number];\nexport const PermissionOutcomeSchema = z.enum(PERMISSION_OUTCOME_VALUES);\n\n/** Sentinel: branch follows this screen's `next.default` (same as a Continue button). */\nexport const OS_PERMISSION_OUTCOME_CONTINUE = 'continue' as const;\n/** Sentinel: complete the flow after this permission outcome (no next screen). */\nexport const OS_PERMISSION_OUTCOME_END = 'end' as const;\n\nexport const OsPermissionOutcomeBranchTargetSchema = z.union([\n ScreenIdSchema,\n z.literal(OS_PERMISSION_OUTCOME_CONTINUE),\n z.literal(OS_PERMISSION_OUTCOME_END),\n]);\n\nexport type OsPermissionOutcomeBranchTarget = z.infer<typeof OsPermissionOutcomeBranchTargetSchema>;\n\nconst OsPermissionOutcomesSchema = z\n .object({\n granted: OsPermissionOutcomeBranchTargetSchema,\n denied: OsPermissionOutcomeBranchTargetSchema,\n blocked: OsPermissionOutcomeBranchTargetSchema,\n })\n .strict();\n\nexport type OsPermissionBranchOutcomes = z.infer<typeof OsPermissionOutcomesSchema>;\n\nexport const APP_REVIEW_CAPTURE_FIELD_KEY_PREFIX = 'app_review:' as const;\n\nexport const appReviewCaptureFieldKey = (layerId: string): `${typeof APP_REVIEW_CAPTURE_FIELD_KEY_PREFIX}${string}` =>\n `${APP_REVIEW_CAPTURE_FIELD_KEY_PREFIX}${layerId}`;\n\nexport const APP_REVIEW_OUTCOMES = ['not_shown', 'dismissed'] as const;\nexport type AppReviewOutcome = (typeof APP_REVIEW_OUTCOMES)[number];\nexport const AppReviewOutcomeSchema = z.enum(APP_REVIEW_OUTCOMES);\n\nexport const ButtonActionSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('none') }),\n z.object({ kind: z.literal('continue') }),\n z.object({ kind: z.literal('skip') }),\n z.object({ kind: z.literal('end_flow') }),\n z.object({\n kind: z.literal('go_back_one_screen'),\n fallbackScreenId: ScreenIdSchema.optional(),\n }),\n z.object({ kind: z.literal('go_to_step'), screenId: ScreenIdSchema }),\n z.object({\n kind: z.literal('request_os_permission'),\n permissionKey: OsPermissionKeySchema,\n outcomes: OsPermissionOutcomesSchema,\n }),\n z.object({\n kind: z.literal('play_media'),\n targetLayerIds: z.array(z.string().min(1)).min(1),\n }),\n z.object({ kind: z.literal('request_app_review') }),\n]);\nexport type ButtonAction = z.infer<typeof ButtonActionSchema>;\n\nexport const TEXT_INPUT_TYPES = ['plain', 'email', 'phone', 'url', 'multiline'] as const;\nexport type TextInputType = (typeof TEXT_INPUT_TYPES)[number];\nexport const TextInputTypeSchema = z.enum(TEXT_INPUT_TYPES);\n\nexport const COUNTER_DISPLAY_KINDS = ['number', 'time'] as const;\nexport type CounterDisplayKind = (typeof COUNTER_DISPLAY_KINDS)[number];\n\n/** Clock-style layout when {@link CounterLayerRaw.displayKind} is `time`; values are total seconds. */\nexport const COUNTER_TIME_FORMATS = ['mm_ss', 'hh_mm_ss', 'dd_hh_mm_ss'] as const;\nexport type CounterTimeFormat = (typeof COUNTER_TIME_FORMATS)[number];\n","import { z } from 'zod';\nimport { LocalizedTextSchema } from '../localized.js';\nimport {\n CommonStyleSchema,\n BorderSchema,\n DropShadowSchema,\n ThemedColorSchema,\n type IconFamily,\n} from './styleCommon.js';\n\nexport const CheckboxGlyphStyleSchema = z\n .object({\n /** Square edge length in px. */\n size: z.number().int().min(8).max(128).optional(),\n radius: z.number().int().min(0).max(96).optional(),\n background: ThemedColorSchema.optional(),\n border: BorderSchema.optional(),\n shadow: DropShadowSchema.optional(),\n opacity: z.number().min(0).max(1).optional(),\n /** Fill color for the check mark when checked. */\n checkColor: ThemedColorSchema.optional(),\n })\n .partial();\nexport type CheckboxGlyphStyle = z.infer<typeof CheckboxGlyphStyleSchema>;\n\nexport const OAUTH_LOGIN_PRESETS = ['github', 'google', 'apple'] as const;\nexport type OAuthLoginPreset = (typeof OAUTH_LOGIN_PRESETS)[number];\n\n/** Human-readable preset names for tooling UI (panels, inspector). Stored `provider` stays lowercase. */\nexport const OAUTH_LOGIN_PRESET_DISPLAY: Record<OAuthLoginPreset, string> = {\n google: 'Google',\n github: 'GitHub',\n apple: 'Apple',\n};\n\n/** Default English copy for preset OAuth buttons. Authors can override per button via {@link OAuthProviderPresetLayerRaw.label}. */\nexport const DEFAULT_OAUTH_PRESET_BUTTON_LABEL: Record<OAuthLoginPreset, string> = {\n google: 'Sign in with Google',\n github: 'Continue with GitHub',\n apple: 'Sign in with Apple',\n};\n\nexport const defaultOAuthPresetButtonLabel = (provider: OAuthLoginPreset): string =>\n DEFAULT_OAUTH_PRESET_BUTTON_LABEL[provider];\n\n/** Effective manifest text for a preset row (optional `label` merged with provider default). */\nexport const oauthPresetEffectiveLabel = (\n provider: OAuthLoginPreset,\n label: z.infer<typeof LocalizedTextSchema> | undefined,\n): z.infer<typeof LocalizedTextSchema> => {\n const base = DEFAULT_OAUTH_PRESET_BUTTON_LABEL[provider];\n if (!label) return { default: base };\n const d =\n typeof label.default === 'string' && label.default.trim().length > 0 ? label.default : base;\n return {\n default: d,\n ...(label.translations && Object.keys(label.translations).length > 0\n ? { translations: { ...label.translations } }\n : {}),\n };\n};\n\nexport type OAuthLoginProvider =\n | { type: 'preset'; provider: OAuthLoginPreset }\n | {\n type: 'custom';\n rowId: string;\n label: z.infer<typeof LocalizedTextSchema>;\n family: IconFamily;\n iconName: string;\n };\n\n/**\n * Minimal layout chrome allowed on branded OAuth preset buttons (Google / Apple /\n * GitHub); colors and typography stay provider-standard at runtime.\n */\nexport const OAuthPresetButtonChromeSchema = CommonStyleSchema.pick({\n width: true,\n padding: true,\n margin: true,\n radius: true,\n}).partial();\nexport type OAuthPresetButtonChrome = z.infer<typeof OAuthPresetButtonChromeSchema>;\n\nexport const OAuthPresetButtonChromeBreakpointsSchema = z\n .object({\n sm: OAuthPresetButtonChromeSchema.partial().optional(),\n md: OAuthPresetButtonChromeSchema.partial().optional(),\n lg: OAuthPresetButtonChromeSchema.partial().optional(),\n xl: OAuthPresetButtonChromeSchema.partial().optional(),\n '2xl': OAuthPresetButtonChromeSchema.partial().optional(),\n })\n .partial()\n .optional();\nexport type OAuthPresetButtonChromeBreakpoints = z.infer<\n typeof OAuthPresetButtonChromeBreakpointsSchema\n>;\n\nexport const EMAIL_PASSWORD_AUTH_MODES = ['sign_in', 'sign_up'] as const;\nexport type EmailPasswordAuthMode = (typeof EMAIL_PASSWORD_AUTH_MODES)[number];\n\nexport const EMAIL_PASSWORD_SLOTS = ['email', 'password', 'confirm'] as const;\nexport type EmailPasswordSlot = (typeof EMAIL_PASSWORD_SLOTS)[number];\n","import { z } from 'zod';\nimport { ScreenIdSchema } from '../ids.js';\nimport { baseLayerShape } from '../base.js';\nimport { layerSchemaStore } from '../layerSchemaRef.js';\nconst lazyLayer = () => layerSchemaStore.schema!;\nimport type { LayerRaw } from '../layerRawTypes.js';\nimport {\n CommonStyleSchema,\n CommonStyleBreakpointsSchema,\n TextStyleSchema,\n TextStyleBreakpointsSchema,\n ButtonStyleSchema,\n ButtonStyleBreakpointsSchema,\n ButtonLayoutBreakpointsSchema,\n ButtonLayerVariantSchema,\n} from '../styleCommon.js';\nimport {\n ButtonActionSchema,\n} from '../actions.js';\n\nimport { ThemedColorSchema } from '../themedColor.js';\nimport {\n COUNTER_DISPLAY_KINDS,\n COUNTER_TIME_FORMATS,\n} from '../actions.js';\nimport { CheckboxGlyphStyleSchema } from '../oauthConstants.js';\n\nexport const ButtonLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('button'),\n children: z.lazy(() => z.array(lazyLayer())) as unknown as z.ZodType<LayerRaw[]>,\n action: ButtonActionSchema,\n variant: ButtonLayerVariantSchema,\n direction: z.enum(['vertical', 'horizontal']).optional(),\n gap: z.number().int().min(0).optional(),\n align: z.enum(['start', 'center', 'end', 'stretch']).optional(),\n distribution: z.enum(['start', 'center', 'end', 'between', 'around']).optional(),\n style: ButtonStyleSchema.optional(),\n styleBreakpoints: ButtonStyleBreakpointsSchema,\n buttonLayoutBreakpoints: ButtonLayoutBreakpointsSchema,\n});\n\nexport const BackButtonLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('back_button'),\n children: z.lazy(() => z.array(lazyLayer())) as unknown as z.ZodType<LayerRaw[]>,\n variant: ButtonLayerVariantSchema,\n direction: z.enum(['vertical', 'horizontal']).optional(),\n gap: z.number().int().min(0).optional(),\n align: z.enum(['start', 'center', 'end', 'stretch']).optional(),\n distribution: z.enum(['start', 'center', 'end', 'between', 'around']).optional(),\n style: ButtonStyleSchema.optional(),\n styleBreakpoints: ButtonStyleBreakpointsSchema,\n buttonLayoutBreakpoints: ButtonLayoutBreakpointsSchema,\n fallbackScreenId: ScreenIdSchema.optional(),\n});\n\n/**\n * Progress bar layer. All sizing lives on `style`:\n * - `style.width` controls the bar's horizontal extent.\n * - `style.height` controls the bar thickness in px (required by templates).\n */\nexport const ProgressLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('progress'),\n trackColor: ThemedColorSchema.optional(),\n fillColor: ThemedColorSchema.optional(),\n style: CommonStyleSchema.optional(),\n});\n\nexport const LoaderOnCompleteSchema = z.discriminatedUnion('mode', [\n z.object({ mode: z.literal('none') }),\n z.object({ mode: z.literal('next') }),\n z.object({ mode: z.literal('screen'), screenId: ScreenIdSchema }),\n]);\n\n/**\n * Loader. All sizing lives on `style`:\n * - linear: `style.height` is the bar thickness.\n * - circular: `style.width` must equal `style.height` (diameter); `style.strokeWidth` is the ring thickness.\n */\nexport const LoaderLayerSchema = z\n .object({\n ...baseLayerShape,\n kind: z.literal('loader'),\n variant: z.enum(['linear', 'circular']).optional(),\n targetPercent: z.number().int().min(0).max(100).optional(),\n fillDelayMs: z.number().int().min(0).max(10_000).optional(),\n durationMs: z.number().int().min(0).max(3_600_000).optional(),\n onComplete: LoaderOnCompleteSchema.optional(),\n trackColor: ThemedColorSchema.optional(),\n trackOpacity: z.number().min(0).max(1).optional(),\n fillColor: ThemedColorSchema.optional(),\n /** Horizontal alignment of the bar or ring within the layer box (default start). */\n align: z.enum(['start', 'center', 'end']).optional(),\n style: CommonStyleSchema.optional(),\n })\n .superRefine((data, ctx) => {\n if (data.variant !== 'circular') return;\n const w = data.style?.width;\n const h = data.style?.height;\n if (typeof w === 'number' && typeof h === 'number' && w !== h) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'circular loader requires style.width === style.height',\n path: ['style', 'height'],\n });\n }\n });\n\nexport const CounterLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('counter'),\n startValue: z.number().finite(),\n endValue: z.number().finite(),\n durationMs: z.number().int().min(0).max(3_600_000).optional(),\n delayMs: z.number().int().min(0).max(3_600_000).optional(),\n decimalPlaces: z.number().int().min(0).max(10).optional(),\n displayKind: z.enum(COUNTER_DISPLAY_KINDS).optional(),\n timeFormat: z.enum(COUNTER_TIME_FORMATS).optional(),\n style: TextStyleSchema.optional(),\n styleBreakpoints: TextStyleBreakpointsSchema,\n});\n\nexport const CheckboxLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('checkbox'),\n fieldKey: z.string().min(1),\n blocking: z.boolean().optional(),\n uncheckedStyle: CheckboxGlyphStyleSchema.optional(),\n checkedStyle: CheckboxGlyphStyleSchema.optional(),\n style: CommonStyleSchema.optional(),\n styleBreakpoints: CommonStyleBreakpointsSchema,\n});\n","import { z } from 'zod';\nimport { LocalizedTextSchema } from '../../localized.js';\nimport { parseHyperlinkHref } from '../../hyperlinkHref.js';\nimport { MediaReferenceSchema } from '../../media.js';\nimport { baseLayerShape } from '../base.js';\nimport { layerSchemaStore } from '../layerSchemaRef.js';\nconst lazyLayer = () => layerSchemaStore.schema!;\nimport type { LayerRaw } from '../layerRawTypes.js';\nimport {\n CommonStyleSchema,\n CommonStyleBreakpointsSchema,\n TextStyleSchema,\n TextStyleBreakpointsSchema,\n ImageStyleSchema,\n ImageStyleBreakpointsSchema,\n IconStyleSchema,\n IconStyleBreakpointsSchema,\n StackLayoutBreakpointsSchema,\n ICON_FAMILIES,\n} from '../styleCommon.js';\nimport { LoaderOnCompleteSchema } from './chrome.js';\n\n\n\nexport const StackLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('stack'),\n style: CommonStyleSchema.optional(),\n styleBreakpoints: CommonStyleBreakpointsSchema,\n stackLayoutBreakpoints: StackLayoutBreakpointsSchema,\n selectedStyle: CommonStyleSchema.optional(),\n direction: z.enum(['vertical', 'horizontal']),\n gap: z.number().int().min(0).optional(),\n align: z.enum(['start', 'center', 'end', 'stretch']).optional(),\n justify: z.enum(['start', 'center', 'end']).optional(),\n distribution: z.enum(['start', 'center', 'end', 'between', 'around']).optional(),\n wrap: z.boolean().optional(),\n children: z.lazy(() => z.array(lazyLayer())) as unknown as z.ZodType<LayerRaw[]>,\n});\n\nexport const TextLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('text'),\n text: LocalizedTextSchema,\n style: TextStyleSchema.optional(),\n styleBreakpoints: TextStyleBreakpointsSchema,\n});\n\nconst migrateLegacyHyperlinkForParse = (raw: unknown): unknown => {\n if (!raw || typeof raw !== 'object') return raw;\n const o = raw as Record<string, unknown>;\n if (o.kind !== 'hyperlink') return raw;\n const existing = o.children;\n if (Array.isArray(existing) && existing.length > 0) return raw;\n\n const idSrc = typeof o.id === 'string' ? o.id.replace(/[^a-zA-Z0-9_]/g, '_') : 'lyr_hyperlink';\n const textChildId = `${idSrc}_lnktxt`.slice(0, 64);\n const children: Record<string, unknown>[] = [\n {\n id: textChildId,\n kind: 'text',\n text: o.text ?? { default: 'Link' },\n ...(typeof o.style === 'object' && o.style !== null ? { style: o.style } : {}),\n ...(typeof o.styleBreakpoints === 'object' && o.styleBreakpoints !== null\n ? { styleBreakpoints: o.styleBreakpoints }\n : {}),\n },\n ];\n const next: Record<string, unknown> = {\n ...o,\n children,\n };\n delete next.text;\n delete next.style;\n delete next.styleBreakpoints;\n return next;\n};\n\nconst HyperlinkLayerSchemaInner = z\n .object({\n ...baseLayerShape,\n kind: z.literal('hyperlink'),\n href: z.string().min(1).max(2048),\n children: z.lazy(() => z.array(lazyLayer()).min(1)) as unknown as z.ZodType<LayerRaw[]>,\n direction: z.enum(['vertical', 'horizontal']).optional(),\n gap: z.number().int().min(0).optional(),\n align: z.enum(['start', 'center', 'end', 'stretch']).optional(),\n distribution: z.enum(['start', 'center', 'end', 'between', 'around']).optional(),\n wrap: z.boolean().optional(),\n style: CommonStyleSchema.optional(),\n styleBreakpoints: CommonStyleBreakpointsSchema,\n })\n .superRefine((data, ctx) => {\n const p = parseHyperlinkHref(data.href.trim());\n if (!p.ok) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'hyperlink href must be a valid https: or mailto: URL',\n path: ['href'],\n });\n }\n });\n\nexport const HyperlinkLayerSchema = z.preprocess(\n migrateLegacyHyperlinkForParse,\n HyperlinkLayerSchemaInner,\n);\n\nexport const ImageLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('image'),\n media: MediaReferenceSchema.optional(),\n alt: z.string().max(280).optional(),\n style: ImageStyleSchema.optional(),\n styleBreakpoints: ImageStyleBreakpointsSchema,\n});\n\nexport const LottieLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('lottie'),\n media: MediaReferenceSchema.optional(),\n loop: z.boolean().optional(),\n autoPlay: z.boolean().optional(),\n triggerLayerId: z.string().min(1).optional(),\n onComplete: LoaderOnCompleteSchema.optional(),\n style: ImageStyleSchema.optional(),\n styleBreakpoints: ImageStyleBreakpointsSchema,\n});\n\nexport const VideoLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('video'),\n media: MediaReferenceSchema.optional(),\n loop: z.boolean().optional(),\n autoPlay: z.boolean().optional(),\n triggerLayerId: z.string().min(1).optional(),\n onComplete: LoaderOnCompleteSchema.optional(),\n audioEnabled: z.boolean().optional(),\n style: ImageStyleSchema.optional(),\n styleBreakpoints: ImageStyleBreakpointsSchema,\n});\n\nexport const IconLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('icon'),\n family: z.enum(ICON_FAMILIES),\n iconName: z.string().min(1).max(128),\n style: IconStyleSchema.optional(),\n styleBreakpoints: IconStyleBreakpointsSchema,\n});\n","import { z } from 'zod';\nimport { LocalizedTextSchema } from '../../../localized.js';\nimport { baseLayerShape } from '../../base.js';\nimport { layerSchemaStore } from '../../layerSchemaRef.js';\nconst lazyLayer = () => layerSchemaStore.schema!;\nimport type { LayerRaw } from '../../layerRawTypes.js';\nimport {\n ButtonStyleSchema,\n ButtonStyleBreakpointsSchema,\n ButtonLayoutBreakpointsSchema,\n ButtonLayerVariantSchema,\n} from '../../styleCommon.js';\nimport {\n OAuthPresetButtonChromeSchema,\n OAuthPresetButtonChromeBreakpointsSchema,\n} from '../../oauthConstants.js';\nimport { OAUTH_LOGIN_PRESETS } from '../../oauthConstants.js';\nimport type {\n OAuthProviderLayerRaw,\n OAuthProviderCustomLayerRaw,\n IconLayerRaw,\n TextLayerRaw,\n} from '../../layerRawTypes.js';\nimport type { OAuthLoginProvider } from '../../oauthConstants.js';\n\nexport const oauthLoginManifestProviderFromLayer = (layer: OAuthProviderLayerRaw): OAuthLoginProvider =>\n layer.variant === 'preset'\n ? { type: 'preset', provider: layer.provider }\n : oauthLoginCustomPayloadFromLayer(layer);\n\nconst oauthLoginCustomPayloadFromLayer = (\n layer: OAuthProviderCustomLayerRaw,\n): Extract<OAuthLoginProvider, { type: 'custom' }> => {\n const text = layer.children.find((c): c is TextLayerRaw => c.kind === 'text');\n const icon = layer.children.find((c): c is IconLayerRaw => c.kind === 'icon');\n return {\n type: 'custom',\n rowId: layer.rowId,\n label: text?.text ?? { default: '' },\n family: icon?.family ?? 'ionicons',\n iconName: icon?.iconName ?? 'help-circle-outline',\n };\n};\n\nexport const OAuthProviderPresetLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('oauth_provider'),\n variant: z.literal('preset'),\n provider: z.enum(OAUTH_LOGIN_PRESETS),\n label: LocalizedTextSchema.optional(),\n style: OAuthPresetButtonChromeSchema.optional(),\n styleBreakpoints: OAuthPresetButtonChromeBreakpointsSchema.optional(),\n});\n\nconst migrateOAuthProviderCustomIncoming = (raw: unknown): unknown => {\n if (!raw || typeof raw !== 'object') return raw;\n const o = raw as Record<string, unknown>;\n if (o.kind !== 'oauth_provider' || o.variant !== 'custom') return raw;\n const ch = o.children;\n if (Array.isArray(ch) && ch.length > 0) {\n const next = { ...o };\n if (next.buttonVariant === undefined) next.buttonVariant = 'secondary';\n return next;\n }\n const pid = typeof o.id === 'string' ? o.id : 'lyr_oauth_custom';\n const slug = pid.replace(/[^a-z0-9_]/gi, '_').slice(0, 40) || 'oauth';\n const label = o.label ?? { default: 'Custom' };\n let family = (o.family ?? 'ionicons') as string;\n let iconName = (o.iconName ?? 'shield-outline') as string;\n if (family === 'sf_symbol') {\n family = 'ionicons';\n iconName = 'star-outline';\n }\n const cid = slug;\n const iconId = (`lyr_${cid}_ico`).slice(0, 64);\n const textId = (`lyr_${cid}_txt`).slice(0, 64);\n const next: Record<string, unknown> = { ...o };\n delete next.label;\n delete next.family;\n delete next.iconName;\n return {\n ...next,\n buttonVariant: o.buttonVariant ?? 'secondary',\n children: [\n { id: iconId, kind: 'icon', family, iconName },\n { id: textId, kind: 'text', text: label },\n ],\n };\n};\n\nconst OAuthProviderCustomLayerSchemaValidated = z.object({\n ...baseLayerShape,\n kind: z.literal('oauth_provider'),\n variant: z.literal('custom'),\n rowId: z.string().uuid(),\n buttonVariant: ButtonLayerVariantSchema,\n direction: z.enum(['vertical', 'horizontal']).optional(),\n gap: z.number().int().min(0).optional(),\n align: z.enum(['start', 'center', 'end', 'stretch']).optional(),\n distribution: z.enum(['start', 'center', 'end', 'between', 'around']).optional(),\n children: z.lazy(() => z.array(lazyLayer()).min(1)) as unknown as z.ZodType<LayerRaw[]>,\n style: ButtonStyleSchema.optional(),\n styleBreakpoints: ButtonStyleBreakpointsSchema,\n buttonLayoutBreakpoints: ButtonLayoutBreakpointsSchema,\n});\n\nexport const OAuthProviderCustomLayerSchema = z.preprocess(\n migrateOAuthProviderCustomIncoming,\n OAuthProviderCustomLayerSchemaValidated,\n);\n\n/** Preset/custom share `kind`; keep a flat union (not nested `discriminatedUnion('variant')`) so `lazyLayer()` can discriminate on `kind` + parse correctly. */\nexport const OAuthProviderLayerSchema = z.union([\n OAuthProviderPresetLayerSchema,\n OAuthProviderCustomLayerSchema,\n]);\n","import { z } from 'zod';\nimport { LocalizedTextSchema } from '../../../localized.js';\nimport { baseLayerShape } from '../../base.js';\nimport {\n CommonStyleSchema,\n CommonStyleBreakpointsSchema,\n ICON_FAMILIES,\n} from '../../styleCommon.js';\nimport { OAUTH_LOGIN_PRESETS } from '../../oauthConstants.js';\nimport type { OAuthLoginPreset } from '../../oauthConstants.js';\nimport type { OAuthProviderLayerRaw } from '../../layerRawTypes.js';\nimport { OAuthProviderLayerSchema } from './oauthProvider.js';\n\nexport const OAuthLoginPresetProviderSchema = z.object({\n type: z.literal('preset'),\n provider: z.enum(OAUTH_LOGIN_PRESETS),\n});\n\nexport const OAuthLoginCustomProviderSchema = z.object({\n type: z.literal('custom'),\n rowId: z.string().uuid(),\n label: LocalizedTextSchema,\n family: z.enum(ICON_FAMILIES),\n iconName: z.string().min(1).max(128),\n});\n\nexport const OAuthLoginProviderSchema = z.discriminatedUnion('type', [\n OAuthLoginPresetProviderSchema,\n OAuthLoginCustomProviderSchema,\n]);\n\nconst oauthLoginChildrenUniquePresets = (\n children: OAuthProviderLayerRaw[],\n ctx: z.RefinementCtx,\n): void => {\n const seen = new Set<OAuthLoginPreset>();\n for (let i = 0; i < children.length; i++) {\n const c = children[i];\n if (!c || c.kind !== 'oauth_provider' || c.variant !== 'preset') continue;\n const preset = c.provider;\n if (seen.has(preset)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `duplicate OAuth preset \"${preset}\"`,\n path: ['children', i, 'provider'],\n });\n return;\n }\n seen.add(preset);\n }\n};\n\n/**\n * Migrate legacy `providers: OAuthLoginProvider[]` to nested `oauth_provider` children so old\n * manifests keep parsing.\n */\nconst migrateOAuthLoginIncoming = (raw: unknown): unknown => {\n if (!raw || typeof raw !== 'object') return raw;\n const o = raw as Record<string, unknown>;\n if (o.kind !== 'oauth_login') return raw;\n if (Array.isArray(o.children) && o.children.length > 0) return raw;\n const provs = o.providers;\n if (!Array.isArray(provs) || provs.length === 0) return raw;\n\n const pid = typeof o.id === 'string' ? o.id : 'lyr_oauth_legacy';\n const slug = pid\n .replace(/^lyr_/i, '')\n .replace(/[^a-z0-9_]/gi, '_')\n .replace(/^_+/, '')\n .slice(0, 48) || 'oauth';\n\n type LegacyProv = Record<string, unknown>;\n const children = provs.map((p: unknown, idx: number): Record<string, unknown> => {\n const prov = (p ?? {}) as LegacyProv;\n const cid = (`lyr_${slug}_opr_${idx}`).slice(0, 64);\n if (prov.type === 'preset') {\n return {\n id: cid,\n kind: 'oauth_provider',\n variant: 'preset',\n provider: prov.provider,\n };\n }\n return {\n id: cid,\n kind: 'oauth_provider',\n variant: 'custom',\n rowId: String(prov.rowId),\n buttonVariant: 'secondary',\n children: [\n {\n id: (`${cid}_ico`).slice(0, 64),\n kind: 'icon',\n family: prov.family ?? 'ionicons',\n iconName: String(prov.iconName ?? 'shield'),\n },\n {\n id: (`${cid}_txt`).slice(0, 64),\n kind: 'text',\n text: (prov.label ?? { default: 'Custom' }) as { default: string },\n },\n ],\n };\n });\n\n const { providers: _omit, ...rest } = o;\n return { ...rest, children };\n};\n\nconst OAuthLoginLayerSchemaValidated = z.object({\n ...baseLayerShape,\n kind: z.literal('oauth_login'),\n children: z.lazy(() =>\n z.array(OAuthProviderLayerSchema).min(1).superRefine(oauthLoginChildrenUniquePresets),\n ),\n gap: z.number().int().min(0).optional(),\n align: z.enum(['start', 'center', 'end', 'stretch']).optional(),\n style: CommonStyleSchema.optional(),\n styleBreakpoints: CommonStyleBreakpointsSchema,\n});\n\nexport const OAuthLoginLayerSchema = z.preprocess(\n migrateOAuthLoginIncoming,\n OAuthLoginLayerSchemaValidated,\n);\n\nexport const OAuthLoginProvidersArraySchema = z\n .array(OAuthLoginProviderSchema)\n .min(1)\n .superRefine((providers, ctx) => {\n const seen = new Set<OAuthLoginPreset>();\n for (let i = 0; i < providers.length; i++) {\n const p = providers[i];\n if (!p || p.type !== 'preset') continue;\n const preset = p.provider;\n if (seen.has(preset)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `duplicate OAuth preset \"${preset}\"`,\n path: [i, 'provider'],\n });\n return;\n }\n seen.add(preset);\n }\n });\n","import { z } from 'zod';\nimport { FIELD_CLASSIFICATIONS } from './constants/index';\n\nexport const FIELD_KEY_RE = /^[a-z][a-z0-9_]*$/;\n\nexport const FieldKeySchema = z\n .string()\n .min(1)\n .max(64)\n .regex(FIELD_KEY_RE, 'field key must be snake_case');\n\nexport type FieldKey = z.infer<typeof FieldKeySchema>;\n\nexport const FieldClassificationSchema = z.enum(FIELD_CLASSIFICATIONS);\n","import { z } from 'zod';\nimport { LocalizedTextSchema } from '../../../localized.js';\nimport { FieldKeySchema } from '../../../fields.js';\nimport { baseLayerShape } from '../../base.js';\nimport { layerSchemaStore } from '../../layerSchemaRef.js';\nconst lazyLayer = () => layerSchemaStore.schema!;\nimport type { LayerRaw } from '../../layerRawTypes.js';\nimport {\n CommonStyleSchema,\n CommonStyleBreakpointsSchema,\n ButtonStyleSchema,\n ButtonStyleBreakpointsSchema,\n ButtonLayoutBreakpointsSchema,\n ButtonLayerVariantSchema,\n} from '../../styleCommon.js';\nimport { EMAIL_PASSWORD_AUTH_MODES, EMAIL_PASSWORD_SLOTS } from '../../oauthConstants.js';\nimport type { EmailPasswordAuthMode, EmailPasswordSlot } from '../../oauthConstants.js';\n\nexport const EmailPasswordAuthModeSchema = z.enum(EMAIL_PASSWORD_AUTH_MODES);\n\n/** Legacy flat manifests: inflate `children` from label fields once. */\nconst migrateEmailPasswordAuthIncoming = (raw: unknown): unknown => {\n if (!raw || typeof raw !== 'object') return raw;\n const o = raw as Record<string, unknown>;\n if (o.kind !== 'email_password_auth') return raw;\n if (Array.isArray(o.children) && o.children.length > 0) return raw;\n\n const idBase = typeof o.id === 'string' ? o.id : 'lyr_email_password_auth';\n const slugRaw = idBase.replace(/^lyr_/i, '').replace(/[^a-z0-9_]/gi, '_');\n const slug = slugRaw.length > 0 ? slugRaw.slice(0, 40) : 'ep_auth';\n const mode = o.mode === 'sign_up' ? 'sign_up' : 'sign_in';\n\n const pickLt = (v: unknown, fallback: string) =>\n v && typeof v === 'object' && v !== null && 'default' in (v as object)\n ? v\n : { default: fallback };\n\n const mkField = (\n suf: string,\n slot: 'email' | 'password' | 'confirm',\n labelSource: unknown,\n fallbackPlaceholder: string,\n ) =>\n ({\n id: (`lyr_${slug}_fld_${suf}`).slice(0, 64),\n kind: 'email_password_field',\n slot,\n ...(labelSource\n ? { placeholder: pickLt(labelSource, fallbackPlaceholder) }\n : { placeholder: { default: fallbackPlaceholder } }),\n children: [],\n }) as Record<string, unknown>;\n\n const children: Record<string, unknown>[] = [];\n children.push(mkField('email', 'email', o.emailLabel, 'Email'));\n children.push(mkField('pw', 'password', o.passwordLabel, 'Password'));\n if (mode === 'sign_up') {\n children.push(mkField('cf', 'confirm', o.confirmPasswordLabel, 'Confirm password'));\n }\n\n const submitLbl =\n o.submitLabel ?? ({ default: mode === 'sign_in' ? 'Sign in' : 'Create account' } as const);\n children.push({\n id: (`lyr_${slug}_submit`).slice(0, 64),\n kind: 'email_password_submit',\n buttonVariant: 'primary',\n direction: 'horizontal',\n align: 'center',\n distribution: 'center',\n gap: 8,\n children: [\n {\n id: (`lyr_${slug}_submit_txt`).slice(0, 64),\n kind: 'text',\n text: submitLbl,\n },\n ],\n });\n\n const {\n emailLabel: _e,\n passwordLabel: _p,\n confirmPasswordLabel: _c,\n submitLabel: _s,\n ...rest\n } = o;\n return { ...rest, mode, children };\n};\n\nconst refineEmailPasswordAuthChildren = (\n data: { mode: EmailPasswordAuthMode; children: LayerRaw[] },\n ctx: z.RefinementCtx,\n): void => {\n const fields = data.children.filter((c) => c.kind === 'email_password_field');\n const submits = data.children.filter((c) => c.kind === 'email_password_submit');\n\n const slotSeen = new Set<string>();\n for (const f of fields) {\n if (slotSeen.has(f.slot)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `duplicate email_password_field slot \"${f.slot}\"`,\n path: ['children'],\n });\n }\n slotSeen.add(f.slot);\n }\n\n const slotHas = new Set(fields.map((f) => f.slot));\n const requiredSlots: EmailPasswordSlot[] =\n data.mode === 'sign_up'\n ? ['email', 'password', 'confirm']\n : ['email', 'password'];\n for (const s of requiredSlots) {\n if (!slotHas.has(s)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n data.mode === 'sign_up'\n ? `sign_up requires an email_password_field with slot \"${s}\"`\n : `sign_in requires an email_password_field with slot \"${s}\"`,\n path: ['children'],\n });\n }\n }\n if (data.mode === 'sign_in' && slotHas.has('confirm')) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'sign_in must not include email_password_field with slot \"confirm\"',\n path: ['children'],\n });\n }\n\n if (submits.length !== 1) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `email_password_auth must have exactly one email_password_submit (found ${submits.length})`,\n path: ['children'],\n });\n }\n};\n\nexport const EmailPasswordFieldLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('email_password_field'),\n slot: z.enum(EMAIL_PASSWORD_SLOTS),\n placeholder: LocalizedTextSchema.optional(),\n children: z\n .lazy(() => z.array(lazyLayer()))\n .optional() as unknown as z.ZodType<LayerRaw[] | undefined>,\n style: CommonStyleSchema.optional(),\n styleBreakpoints: CommonStyleBreakpointsSchema,\n});\n\nexport const EmailPasswordSubmitLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('email_password_submit'),\n buttonVariant: ButtonLayerVariantSchema,\n direction: z.enum(['vertical', 'horizontal']).optional(),\n gap: z.number().int().min(0).optional(),\n align: z.enum(['start', 'center', 'end', 'stretch']).optional(),\n distribution: z.enum(['start', 'center', 'end', 'between', 'around']).optional(),\n children: z.lazy(() => z.array(lazyLayer()).min(1)) as unknown as z.ZodType<LayerRaw[]>,\n style: ButtonStyleSchema.optional(),\n styleBreakpoints: ButtonStyleBreakpointsSchema,\n buttonLayoutBreakpoints: ButtonLayoutBreakpointsSchema,\n});\n\nconst EmailPasswordAuthLayerSchemaValidated = z\n .object({\n ...baseLayerShape,\n kind: z.literal('email_password_auth'),\n mode: EmailPasswordAuthModeSchema,\n fieldKey: FieldKeySchema,\n minPasswordLength: z.number().int().min(4).max(128).optional(),\n children: z.lazy(() =>\n z\n .array(z.union([EmailPasswordFieldLayerSchema, EmailPasswordSubmitLayerSchema]))\n .min(1),\n ),\n gap: z.number().int().min(0).optional(),\n align: z.enum(['start', 'center', 'end', 'stretch']).optional(),\n style: CommonStyleSchema.optional(),\n styleBreakpoints: CommonStyleBreakpointsSchema,\n })\n .superRefine(refineEmailPasswordAuthChildren);\n\nexport const EmailPasswordAuthLayerSchema = z.preprocess(\n migrateEmailPasswordAuthIncoming,\n EmailPasswordAuthLayerSchemaValidated,\n);\n","import { z } from 'zod';\nimport { LayerIdSchema, ScreenIdSchema } from './ids.js';\n\nexport const ChoiceOptionBindingSchema = z.object({\n optionId: z.string().min(1).max(64),\n rootLayerId: LayerIdSchema,\n});\nexport type ChoiceOptionBinding = z.infer<typeof ChoiceOptionBindingSchema>;\n\nexport const BranchConditionSchema = z.object({\n choiceId: z.string().min(1),\n goTo: ScreenIdSchema,\n});\nexport type BranchCondition = z.infer<typeof BranchConditionSchema>;\n\nexport const ChoiceBranchingSchema = z.object({\n enabled: z.boolean(),\n conditions: z.array(BranchConditionSchema),\n});\nexport type ChoiceBranching = z.infer<typeof ChoiceBranchingSchema>;\n","import { z } from 'zod';\nimport { LocalizedTextSchema } from '../../localized.js';\nimport { FieldKeySchema, FieldClassificationSchema } from '../../fields.js';\nimport { baseLayerShape } from '../base.js';\nimport { layerSchemaStore } from '../layerSchemaRef.js';\nconst lazyLayer = () => layerSchemaStore.schema!;\nimport type { LayerRaw } from '../layerRawTypes.js';\nimport {\n CommonStyleSchema,\n CommonStyleBreakpointsSchema,\n} from '../styleCommon.js';\nimport { ThemedColorSchema } from '../themedColor.js';\nimport { ChoiceOptionBindingSchema, ChoiceBranchingSchema } from '../choiceBranching.js';\nimport {\n TextInputTypeSchema,\n} from '../actions.js';\nimport type { StackLayerRaw } from '../layerRawTypes.js';\n\nimport type { ChoiceOptionBinding } from '../choiceBranching.js';\nimport { StackLayerSchema } from './layout.js';\n\n/**\n * Choice layers serialise their option content as `children` (one stack\n * per option) plus `optionBindings` that map a stable `optionId` (used\n * by branching, analytics, and stored responses) to the `rootLayerId`\n * of the matching child stack. Bindings are validated to reference\n * direct children only.\n */\nconst ChoiceChildrenAndBindingsRefinement = (\n data: { children: unknown[]; optionBindings: ChoiceOptionBinding[] },\n ctx: z.RefinementCtx,\n): void => {\n const childIds = new Set<string>();\n for (const c of data.children as { id: string }[]) {\n if (childIds.has(c.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `duplicate option child id \"${c.id}\"`,\n path: ['children'],\n });\n }\n childIds.add(c.id);\n }\n const seenOptionIds = new Set<string>();\n const seenRootIds = new Set<string>();\n for (const b of data.optionBindings) {\n if (seenOptionIds.has(b.optionId)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `duplicate optionId \"${b.optionId}\" in optionBindings`,\n path: ['optionBindings'],\n });\n }\n seenOptionIds.add(b.optionId);\n if (seenRootIds.has(b.rootLayerId)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `duplicate rootLayerId \"${b.rootLayerId}\" in optionBindings`,\n path: ['optionBindings'],\n });\n }\n seenRootIds.add(b.rootLayerId);\n if (!childIds.has(b.rootLayerId)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `optionBindings rootLayerId \"${b.rootLayerId}\" does not match any direct child stack`,\n path: ['optionBindings'],\n });\n }\n }\n if (data.optionBindings.length !== (data.children as unknown[]).length) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'optionBindings length must equal children length',\n path: ['optionBindings'],\n });\n }\n};\n\nexport const SingleChoiceLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('single_choice'),\n fieldKey: FieldKeySchema,\n children: z.lazy(() =>\n z.array(StackLayerSchema).min(2),\n ) as unknown as z.ZodType<StackLayerRaw[]>,\n optionBindings: z.array(ChoiceOptionBindingSchema).min(2),\n branching: ChoiceBranchingSchema,\n direction: z.enum(['vertical', 'horizontal', 'grid']).optional(),\n gap: z.number().int().min(0).optional(),\n columns: z.number().int().min(1).max(12).optional(),\n style: CommonStyleSchema.optional(),\n styleBreakpoints: CommonStyleBreakpointsSchema,\n});\n\nexport const MultipleChoiceLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('multiple_choice'),\n fieldKey: FieldKeySchema,\n children: z.lazy(() =>\n z.array(StackLayerSchema).min(2),\n ) as unknown as z.ZodType<StackLayerRaw[]>,\n optionBindings: z.array(ChoiceOptionBindingSchema).min(2),\n minSelections: z.number().int().nonnegative().optional(),\n maxSelections: z.number().int().positive().optional(),\n branching: ChoiceBranchingSchema,\n direction: z.enum(['vertical', 'horizontal', 'grid']).optional(),\n gap: z.number().int().min(0).optional(),\n columns: z.number().int().min(1).max(12).optional(),\n style: CommonStyleSchema.optional(),\n styleBreakpoints: CommonStyleBreakpointsSchema,\n});\n\n/**\n * Validates the consistency between a choice layer's `children` and\n * `optionBindings`. Exposed for the manifest-level walker to apply\n * after the per-layer schemas (which can't `.superRefine` because\n * `discriminatedUnion` requires plain ZodObject members).\n */\nexport const validateChoiceChildrenAndBindings = ChoiceChildrenAndBindingsRefinement;\n\nexport const TextInputLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('text_input'),\n fieldKey: FieldKeySchema,\n placeholder: LocalizedTextSchema.optional(),\n inputType: TextInputTypeSchema.optional(),\n required: z.boolean().optional(),\n minLength: z.number().int().min(0).max(2000).optional(),\n maxLength: z.number().int().positive().max(2000).optional(),\n classification: FieldClassificationSchema,\n children: z\n .lazy(() => z.array(lazyLayer()))\n .optional() as unknown as z.ZodType<LayerRaw[] | undefined>,\n style: CommonStyleSchema.optional(),\n});\n\nexport const ScaleInputLabelStyleSchema = z\n .object({\n fontFamily: z.string().min(1).max(128).optional(),\n fontSize: z.number().int().min(8).max(96).optional(),\n fontWeight: z.number().int().min(100).max(900).optional(),\n color: ThemedColorSchema.optional(),\n align: z.enum(['left', 'center', 'right']).optional(),\n lineHeight: z.number().min(0.8).max(3).optional(),\n opacity: z.number().min(0).max(1).optional(),\n })\n .partial();\n\nexport const ScaleInputLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('scale_input'),\n fieldKey: FieldKeySchema,\n min: z.number(),\n max: z.number(),\n step: z.number().positive().optional(),\n defaultValue: z.number().optional(),\n minLabel: LocalizedTextSchema.optional(),\n maxLabel: LocalizedTextSchema.optional(),\n labelStyle: ScaleInputLabelStyleSchema.optional(),\n valueStyle: ScaleInputLabelStyleSchema.optional(),\n showLabels: z.boolean().optional(),\n showValue: z.boolean().optional(),\n trackHeight: z.number().int().min(2).max(32).optional(),\n trackColor: ThemedColorSchema.optional(),\n fillColor: ThemedColorSchema.optional(),\n thumbSize: z.number().int().min(8).max(48).optional(),\n thumbColor: ThemedColorSchema.optional(),\n children: z\n .lazy(() => z.array(lazyLayer()))\n .optional() as unknown as z.ZodType<LayerRaw[] | undefined>,\n style: CommonStyleSchema.optional(),\n});\n","import { z } from 'zod';\nimport { baseLayerShape } from '../base.js';\nimport {\n CommonStyleSchema,\n CommonStyleBreakpointsSchema,\n} from '../styleCommon.js';\n\n\nimport type { StackLayerRaw } from '../layerRawTypes.js';\n\nimport { PaddingSchema, BorderSchema, DropShadowSchema } from '../styleCommon.js';\nimport { ThemedColorSchema } from '../themedColor.js';\nimport { StackLayerSchema } from './layout.js';\n\nexport const CarouselIndicatorsStyleSchema = z\n .object({\n width: z.number().int().min(1).max(64).optional(),\n height: z.number().int().min(1).max(64).optional(),\n defaultColor: ThemedColorSchema.optional(),\n defaultOpacity: z.number().min(0).max(1).optional(),\n activeColor: ThemedColorSchema.optional(),\n activeOpacity: z.number().min(0).max(1).optional(),\n activeWidth: z.number().int().min(1).max(64).optional(),\n activeHeight: z.number().int().min(1).max(64).optional(),\n border: BorderSchema.optional(),\n activeBorder: BorderSchema.optional(),\n })\n .partial();\n\nexport const CarouselPageControlSchema = z.object({\n position: z.enum(['top', 'bottom']),\n spacing: z.number().int().min(0).optional(),\n padding: PaddingSchema.optional(),\n margin: PaddingSchema.optional(),\n indicators: CarouselIndicatorsStyleSchema.optional(),\n border: BorderSchema.optional(),\n shadow: DropShadowSchema.optional(),\n});\n\nexport const CarouselLayerSchema = z.object({\n ...baseLayerShape,\n kind: z.literal('carousel'),\n slides: z.lazy(() => z.array(StackLayerSchema).min(1)) as unknown as z.ZodType<StackLayerRaw[]>,\n pageAlignment: z.enum(['top', 'center', 'bottom']).optional(),\n pageSpacing: z.number().int().min(0).optional(),\n pagePeek: z.number().int().min(0).max(400).optional(),\n openOn: z.number().int().min(0).optional(),\n loop: z.boolean().optional(),\n autoAdvance: z.boolean().optional(),\n autoAdvanceMs: z.number().int().min(500).max(60000).optional(),\n pageControl: CarouselPageControlSchema.optional(),\n style: CommonStyleSchema.optional(),\n styleBreakpoints: CommonStyleBreakpointsSchema,\n});\n","import { z } from 'zod';\nimport { layerSchemaStore } from './layerSchemaRef.js';\nimport type { LayerRaw } from './layerRawTypes.js';\nimport {\n StackLayerSchema,\n TextLayerSchema,\n HyperlinkLayerSchema,\n ImageLayerSchema,\n LottieLayerSchema,\n VideoLayerSchema,\n IconLayerSchema,\n} from './kinds/layout.js';\nimport {\n OAuthLoginLayerSchema,\n OAuthProviderPresetLayerSchema,\n OAuthProviderCustomLayerSchema,\n EmailPasswordAuthLayerSchema,\n EmailPasswordFieldLayerSchema,\n EmailPasswordSubmitLayerSchema,\n} from './kinds/auth.js';\nimport {\n ButtonLayerSchema,\n BackButtonLayerSchema,\n ProgressLayerSchema,\n LoaderLayerSchema,\n CounterLayerSchema,\n CheckboxLayerSchema,\n} from './kinds/chrome.js';\nimport {\n SingleChoiceLayerSchema,\n MultipleChoiceLayerSchema,\n TextInputLayerSchema,\n ScaleInputLayerSchema,\n} from './kinds/input.js';\nimport { CarouselLayerSchema } from './kinds/carousel.js';\n\nlayerSchemaStore.schema = z.lazy(() =>\n z.union([\n StackLayerSchema,\n TextLayerSchema,\n HyperlinkLayerSchema,\n ImageLayerSchema,\n LottieLayerSchema,\n VideoLayerSchema,\n IconLayerSchema,\n ButtonLayerSchema,\n BackButtonLayerSchema,\n ProgressLayerSchema,\n LoaderLayerSchema,\n CounterLayerSchema,\n CheckboxLayerSchema,\n SingleChoiceLayerSchema,\n MultipleChoiceLayerSchema,\n TextInputLayerSchema,\n ScaleInputLayerSchema,\n OAuthLoginLayerSchema,\n OAuthProviderPresetLayerSchema,\n OAuthProviderCustomLayerSchema,\n EmailPasswordAuthLayerSchema,\n EmailPasswordFieldLayerSchema,\n EmailPasswordSubmitLayerSchema,\n CarouselLayerSchema,\n ]),\n) as unknown as z.ZodType<LayerRaw>;\n\nexport const LayerSchema = layerSchemaStore.schema!;\n","import type { CommonStyle } from './styleCommon.js';\nimport type { LayerRaw } from './layerRawTypes.js';\n\nconst STYLE_BREAKPOINT_KEYS = ['sm', 'md', 'lg', 'xl', '2xl'] as const;\n\n/** True if base style or any breakpoint patch sets `position: 'absolute'`. */\nexport const commonStyleHasAbsolutePosition = (\n style: CommonStyle | undefined,\n breakpoints:\n | Partial<Record<(typeof STYLE_BREAKPOINT_KEYS)[number], Partial<CommonStyle>>>\n | undefined,\n): boolean => {\n if (style?.position === 'absolute') return true;\n if (!breakpoints) return false;\n for (const k of STYLE_BREAKPOINT_KEYS) {\n if (breakpoints[k]?.position === 'absolute') return true;\n }\n return false;\n};\n\n/** True when this layer's authored style / breakpoints / selectedStyle allow absolute positioning. */\nexport const layerHasAbsolutePositionAuthored = (layer: LayerRaw): boolean => {\n switch (layer.kind) {\n case 'stack':\n return (\n commonStyleHasAbsolutePosition(layer.style, layer.styleBreakpoints) ||\n layer.selectedStyle?.position === 'absolute'\n );\n case 'text':\n case 'counter':\n return commonStyleHasAbsolutePosition(layer.style, layer.styleBreakpoints);\n case 'image':\n case 'lottie':\n case 'video':\n return commonStyleHasAbsolutePosition(layer.style, layer.styleBreakpoints);\n case 'icon':\n return commonStyleHasAbsolutePosition(layer.style, layer.styleBreakpoints);\n case 'button':\n case 'back_button':\n case 'hyperlink':\n return commonStyleHasAbsolutePosition(layer.style, layer.styleBreakpoints);\n case 'progress':\n case 'loader':\n return commonStyleHasAbsolutePosition(layer.style, undefined);\n case 'text_input':\n case 'scale_input':\n return commonStyleHasAbsolutePosition(layer.style, undefined);\n case 'oauth_provider':\n if (layer.variant === 'preset') {\n return commonStyleHasAbsolutePosition(layer.style as CommonStyle | undefined, layer.styleBreakpoints);\n }\n return commonStyleHasAbsolutePosition(layer.style, layer.styleBreakpoints);\n case 'oauth_login':\n return commonStyleHasAbsolutePosition(layer.style, layer.styleBreakpoints);\n case 'email_password_auth':\n return commonStyleHasAbsolutePosition(layer.style, layer.styleBreakpoints);\n case 'email_password_field':\n return commonStyleHasAbsolutePosition(layer.style, layer.styleBreakpoints);\n case 'email_password_submit':\n return commonStyleHasAbsolutePosition(layer.style, layer.styleBreakpoints);\n case 'carousel':\n return commonStyleHasAbsolutePosition(layer.style, undefined);\n case 'checkbox':\n case 'single_choice':\n case 'multiple_choice':\n return commonStyleHasAbsolutePosition(layer.style, layer.styleBreakpoints);\n default:\n return false;\n }\n};\n\n/** True if this layer or any descendant authors absolute positioning. */\nexport const layerSubtreeContainsAbsolutePosition = (layer: LayerRaw): boolean => {\n if (layerHasAbsolutePositionAuthored(layer)) return true;\n if (layer.kind === 'stack') {\n return layer.children.some(layerSubtreeContainsAbsolutePosition);\n }\n if (layer.kind === 'carousel') {\n return layer.slides.some(layerSubtreeContainsAbsolutePosition);\n }\n if (layer.kind === 'button' || layer.kind === 'back_button' || layer.kind === 'hyperlink') {\n return layer.children.some(layerSubtreeContainsAbsolutePosition);\n }\n if (layer.kind === 'single_choice' || layer.kind === 'multiple_choice') {\n return layer.children.some(layerSubtreeContainsAbsolutePosition);\n }\n if (layer.kind === 'text_input' || layer.kind === 'scale_input') {\n return layer.children?.some(layerSubtreeContainsAbsolutePosition) ?? false;\n }\n if (layer.kind === 'oauth_login') {\n return layer.children.some(layerSubtreeContainsAbsolutePosition);\n }\n if (layer.kind === 'oauth_provider' && layer.variant === 'custom') {\n return layer.children.some(layerSubtreeContainsAbsolutePosition);\n }\n if (layer.kind === 'email_password_auth') {\n return layer.children.some(layerSubtreeContainsAbsolutePosition);\n }\n if (layer.kind === 'email_password_field') {\n return layer.children?.some(layerSubtreeContainsAbsolutePosition) ?? false;\n }\n if (layer.kind === 'email_password_submit') {\n return layer.children.some(layerSubtreeContainsAbsolutePosition);\n }\n return false;\n};\n","import type {\n StackLayerRaw,\n TextLayerRaw,\n ImageLayerRaw,\n LottieLayerRaw,\n VideoLayerRaw,\n IconLayerRaw,\n ButtonLayerRaw,\n BackButtonLayerRaw,\n ProgressLayerRaw,\n LoaderOnCompleteRaw,\n LoaderLayerRaw,\n CounterLayerRaw,\n CheckboxLayerRaw,\n SingleChoiceLayerRaw,\n MultipleChoiceLayerRaw,\n TextInputLayerRaw,\n ScaleInputLayerRaw,\n OAuthLoginLayerRaw,\n EmailPasswordAuthLayerRaw,\n EmailPasswordFieldLayerRaw,\n EmailPasswordSubmitLayerRaw,\n OAuthProviderPresetLayerRaw,\n OAuthProviderCustomLayerRaw,\n OAuthProviderLayerRaw,\n CarouselLayerRaw,\n HyperlinkLayerRaw,\n LayerRaw,\n} from './layerRawTypes.js';\n\nexport type Layer = LayerRaw;\nexport type StackLayer = StackLayerRaw;\nexport type TextLayer = TextLayerRaw;\nexport type ImageLayer = ImageLayerRaw;\nexport type LottieLayer = LottieLayerRaw;\nexport type VideoLayer = VideoLayerRaw;\nexport type IconLayer = IconLayerRaw;\nexport type ButtonLayer = ButtonLayerRaw;\nexport type BackButtonLayer = BackButtonLayerRaw;\nexport type ProgressLayer = ProgressLayerRaw;\nexport type LoaderOnComplete = LoaderOnCompleteRaw;\nexport type LoaderLayer = LoaderLayerRaw;\nexport type CounterLayer = CounterLayerRaw;\nexport type CheckboxLayer = CheckboxLayerRaw;\nexport type SingleChoiceLayer = SingleChoiceLayerRaw;\nexport type MultipleChoiceLayer = MultipleChoiceLayerRaw;\nexport type TextInputLayer = TextInputLayerRaw;\nexport type ScaleInputLayer = ScaleInputLayerRaw;\nexport type OAuthLoginLayer = OAuthLoginLayerRaw;\nexport type EmailPasswordAuthLayer = EmailPasswordAuthLayerRaw;\nexport type EmailPasswordFieldLayer = EmailPasswordFieldLayerRaw;\nexport type EmailPasswordSubmitLayer = EmailPasswordSubmitLayerRaw;\nexport type OAuthProviderPresetLayer = OAuthProviderPresetLayerRaw;\nexport type OAuthProviderCustomLayer = OAuthProviderCustomLayerRaw;\nexport type OAuthProviderLayer = OAuthProviderLayerRaw;\nexport type CarouselLayer = CarouselLayerRaw;\nexport type HyperlinkLayer = HyperlinkLayerRaw;\nexport type InputLayer = SingleChoiceLayer | MultipleChoiceLayer | TextInputLayer | ScaleInputLayer;\n\nexport const isInputLayer = (l: Layer): l is InputLayer =>\n l.kind === 'single_choice' ||\n l.kind === 'multiple_choice' ||\n l.kind === 'text_input' ||\n l.kind === 'scale_input';\n\nexport const isParentLayer = (\n l: Layer,\n): l is\n | StackLayer\n | CarouselLayer\n | ButtonLayer\n | BackButtonLayer\n | HyperlinkLayer\n | SingleChoiceLayer\n | MultipleChoiceLayer\n | TextInputLayer\n | ScaleInputLayer\n | OAuthLoginLayer\n | OAuthProviderCustomLayer\n | EmailPasswordAuthLayer\n | EmailPasswordFieldLayer\n | EmailPasswordSubmitLayer =>\n l.kind === 'stack' ||\n l.kind === 'carousel' ||\n l.kind === 'button' ||\n l.kind === 'back_button' ||\n l.kind === 'hyperlink' ||\n l.kind === 'single_choice' ||\n l.kind === 'multiple_choice' ||\n l.kind === 'text_input' ||\n l.kind === 'scale_input' ||\n l.kind === 'oauth_login' ||\n (l.kind === 'oauth_provider' && l.variant === 'custom') ||\n l.kind === 'email_password_auth' ||\n l.kind === 'email_password_field' ||\n l.kind === 'email_password_submit';\n","import { z } from 'zod';\nimport { MediaReferenceSchema } from './media.js';\nimport { ThemedColorSchema } from './layers/themedColor.js';\nimport { LoaderOnCompleteSchema } from './layers/kinds/chrome.js';\nimport { PaddingSchema } from './layers/styleCommon.js';\n\nexport const SCREEN_BACKGROUND_PLAYBACK_PREFIX = '__screen_bg__:';\n\n/** Stable playback / play_media target id for shell video (not a layer id). */\nexport const screenBackgroundPlaybackId = (screenId: string): string =>\n `${SCREEN_BACKGROUND_PLAYBACK_PREFIX}${screenId}`;\n\nexport const isScreenBackgroundPlaybackId = (id: string): boolean =>\n id.startsWith(SCREEN_BACKGROUND_PLAYBACK_PREFIX);\n\nexport const ScreenBackgroundFitSchema = z.enum(['cover', 'contain', 'fill']);\nexport type ScreenBackgroundFit = z.infer<typeof ScreenBackgroundFitSchema>;\n\nexport const ScreenBackgroundScrimSchema = z\n .object({\n color: ThemedColorSchema.optional(),\n opacity: z.number().min(0).max(1).optional(),\n })\n .partial();\nexport type ScreenBackgroundScrim = z.infer<typeof ScreenBackgroundScrimSchema>;\n\nconst screenBackgroundMediaShape = {\n media: MediaReferenceSchema.optional(),\n fit: ScreenBackgroundFitSchema.optional(),\n opacity: z.number().min(0).max(1).optional(),\n scrim: ScreenBackgroundScrimSchema.optional(),\n};\n\nexport const ScreenBackgroundColorFillSchema = z.object({\n kind: z.literal('color'),\n color: ThemedColorSchema.optional(),\n opacity: z.number().min(0).max(1).optional(),\n});\n\nexport const ScreenBackgroundImageFillSchema = z.object({\n kind: z.literal('image'),\n ...screenBackgroundMediaShape,\n});\n\nexport const ScreenBackgroundVideoFillSchema = z.object({\n kind: z.literal('video'),\n ...screenBackgroundMediaShape,\n loop: z.boolean().optional(),\n autoPlay: z.boolean().optional(),\n triggerLayerId: z.string().min(1).optional(),\n onComplete: LoaderOnCompleteSchema.optional(),\n audioEnabled: z.boolean().optional(),\n});\n\nexport const ScreenBackgroundFillSchema = z.discriminatedUnion('kind', [\n ScreenBackgroundColorFillSchema,\n ScreenBackgroundImageFillSchema,\n ScreenBackgroundVideoFillSchema,\n]);\nexport type ScreenBackgroundFill = z.infer<typeof ScreenBackgroundFillSchema>;\nexport type ScreenBackgroundColorFill = z.infer<typeof ScreenBackgroundColorFillSchema>;\nexport type ScreenBackgroundImageFill = z.infer<typeof ScreenBackgroundImageFillSchema>;\nexport type ScreenBackgroundVideoFill = z.infer<typeof ScreenBackgroundVideoFillSchema>;\n\n/** Partial overrides for the active fill (no `kind` — mode is fixed on default containerStyle). */\nexport const ScreenBackgroundFillPatchSchema = z\n .object({\n color: ThemedColorSchema.optional(),\n fit: ScreenBackgroundFitSchema.optional(),\n opacity: z.number().min(0).max(1).optional(),\n scrim: ScreenBackgroundScrimSchema.optional(),\n loop: z.boolean().optional(),\n autoPlay: z.boolean().optional(),\n triggerLayerId: z.string().min(1).optional(),\n onComplete: LoaderOnCompleteSchema.optional(),\n audioEnabled: z.boolean().optional(),\n })\n .partial();\nexport type ScreenBackgroundFillPatch = z.infer<typeof ScreenBackgroundFillPatchSchema>;\n\nexport const defaultScreenBackgroundColorFill = (): ScreenBackgroundFill => ({\n kind: 'color',\n});\n\nexport const defaultScreenBackgroundImageFill = (\n mediaAssetId: string,\n): ScreenBackgroundFill => ({\n kind: 'image',\n media: { mediaAssetId },\n fit: 'cover',\n});\n\nexport const defaultScreenBackgroundVideoFill = (\n mediaAssetId: string,\n): ScreenBackgroundFill => ({\n kind: 'video',\n media: { mediaAssetId },\n fit: 'cover',\n loop: true,\n autoPlay: true,\n audioEnabled: false,\n});\n\nconst ScreenContainerBreakpointPatchSchema = z\n .object({\n padding: PaddingSchema.optional(),\n margin: PaddingSchema.optional(),\n insetSafeArea: z.boolean().optional(),\n backgroundFillPatch: ScreenBackgroundFillPatchSchema.optional(),\n })\n .partial();\n\nexport const ScreenContainerStyleBreakpointsSchema = z\n .object({\n sm: ScreenContainerBreakpointPatchSchema.optional(),\n md: ScreenContainerBreakpointPatchSchema.optional(),\n lg: ScreenContainerBreakpointPatchSchema.optional(),\n xl: ScreenContainerBreakpointPatchSchema.optional(),\n '2xl': ScreenContainerBreakpointPatchSchema.optional(),\n })\n .partial()\n .optional();\nexport type ScreenContainerStyleBreakpoints = z.infer<\n typeof ScreenContainerStyleBreakpointsSchema\n>;\n","import { z } from 'zod';\nimport { ScreenIdSchema } from './layers';\n\nexport const DecisionNodeIdSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^dec_[a-z0-9_]+$/i, 'decision node id must look like dec_<id>');\nexport type DecisionNodeId = z.infer<typeof DecisionNodeIdSchema>;\n\n/** External surface node id shape; declared here to avoid a circular import. */\nconst ExternalSurfaceJumpIdSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^surf_[a-z0-9_]+$/i, 'external surface node id must look like surf_<id>');\n\n/**\n * Terminal jump target for an external surface branch: end the flow immediately\n * after this outcome (no next screen). Distinct from omitting the outcome, which\n * falls through to {@link ExternalSurfaceNode.fallback}.\n */\nexport const EXTERNAL_SURFACE_NO_NEXT = '__onb_surface_no_next__' as const;\n\n/**\n * React Flow `Handle.id` / edge `sourceHandle` for a decision node's catch-all\n * output (`elseNext`). Not a {@link FlowJumpTarget}.\n */\nexport const DECISION_ELSE_SOURCE_HANDLE = '__dec_else__' as const;\n\nconst ExternalSurfaceTerminalTargetSchema = z.literal(EXTERNAL_SURFACE_NO_NEXT);\n\n/** Nullable jump target from a screen, decision, or external surface: another screen, a decision vertex, or an external surface. */\nexport const FlowJumpTargetSchema = ScreenIdSchema\n .or(DecisionNodeIdSchema)\n .or(ExternalSurfaceJumpIdSchema)\n .or(ExternalSurfaceTerminalTargetSchema)\n .nullable();\nexport type FlowJumpTarget = z.infer<typeof FlowJumpTargetSchema>;\n\nexport const DecisionBuiltinNameSchema = z.enum(['locale', 'platform']);\nexport type DecisionBuiltinName = z.infer<typeof DecisionBuiltinNameSchema>;\n\nexport const DecisionVariableRefSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('builtin'), name: DecisionBuiltinNameSchema }),\n z.object({ kind: z.literal('sdk'), key: z.string().min(1).max(128) }),\n z.object({ kind: z.literal('field'), fieldKey: z.string().min(1).max(128) }),\n]);\nexport type DecisionVariableRef = z.infer<typeof DecisionVariableRefSchema>;\n\nexport const DecisionStringPredicateSchema = z.discriminatedUnion('op', [\n z.object({ op: z.literal('eq'), value: z.string() }),\n z.object({ op: z.literal('neq'), value: z.string() }),\n z.object({ op: z.literal('contains'), value: z.string() }),\n]);\n\nexport const DecisionNumberPredicateSchema = z.discriminatedUnion('op', [\n z.object({ op: z.literal('eq'), value: z.number() }),\n z.object({ op: z.literal('neq'), value: z.number() }),\n z.object({ op: z.literal('lt'), value: z.number() }),\n z.object({ op: z.literal('lte'), value: z.number() }),\n z.object({ op: z.literal('gt'), value: z.number() }),\n z.object({ op: z.literal('gte'), value: z.number() }),\n]);\n\nexport const DecisionChoicePredicateSchema = z.discriminatedUnion('op', [\n z.object({ op: z.literal('eq'), optionId: z.string().min(1) }),\n z.object({ op: z.literal('one_of'), optionIds: z.array(z.string().min(1)).min(1) }),\n]);\n\nexport const DecisionMultiPredicateSchema = z.discriminatedUnion('op', [\n z.object({\n op: z.literal('intersects'),\n optionIds: z.array(z.string().min(1)).min(1),\n }),\n z.object({\n op: z.literal('contains_all'),\n optionIds: z.array(z.string().min(1)).min(1),\n }),\n z.object({\n op: z.literal('subset_of'),\n optionIds: z.array(z.string().min(1)).min(1),\n }),\n]);\n\nexport const DecisionBooleanPredicateSchema = z.discriminatedUnion('op', [\n z.object({ op: z.literal('eq'), value: z.boolean() }),\n z.object({ op: z.literal('neq'), value: z.boolean() }),\n]);\n\nexport const DecisionPredicatePayloadSchema = z.discriminatedUnion('type', [\n z.object({ type: z.literal('string'), pred: DecisionStringPredicateSchema }),\n z.object({ type: z.literal('number'), pred: DecisionNumberPredicateSchema }),\n z.object({ type: z.literal('boolean'), pred: DecisionBooleanPredicateSchema }),\n z.object({ type: z.literal('choice'), pred: DecisionChoicePredicateSchema }),\n z.object({ type: z.literal('multi'), pred: DecisionMultiPredicateSchema }),\n]);\nexport type DecisionPredicatePayload = z.infer<typeof DecisionPredicatePayloadSchema>;\n\nexport type DecisionExpr =\n | { kind: 'empty' }\n | { kind: 'group'; op: 'and' | 'or'; children: DecisionExpr[] }\n | {\n kind: 'predicate';\n variable: DecisionVariableRef;\n predicate: DecisionPredicatePayload;\n };\n\nexport const DecisionExprSchema: z.ZodType<DecisionExpr> = z.lazy(() =>\n z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('empty') }),\n z.object({\n kind: z.literal('group'),\n op: z.enum(['and', 'or']),\n children: z.array(DecisionExprSchema).min(1),\n }),\n z.object({\n kind: z.literal('predicate'),\n variable: DecisionVariableRefSchema,\n predicate: DecisionPredicatePayloadSchema,\n }),\n ]),\n);\n\n/** One ordered segment evaluated before {@link DecisionNode.elseNext}. */\nexport const DecisionCaseSchema = z.object({\n id: z.string().min(1).max(80),\n /** Display label in the editor (e.g. “Engaged users”). */\n name: z.string().min(1).max(80).optional(),\n expression: DecisionExprSchema,\n next: FlowJumpTargetSchema,\n});\nexport type DecisionCase = z.infer<typeof DecisionCaseSchema>;\n\n/**\n * Multi-branch decision: `cases` are evaluated in order; the first matching\n * expression routes to that case’s `next`. If none match, `elseNext` is used\n * (“everyone else”).\n */\nexport const DecisionNodeSchema = z.object({\n id: DecisionNodeIdSchema,\n name: z.string().min(1).max(80).optional(),\n cases: z.array(DecisionCaseSchema).min(1).max(16),\n elseNext: FlowJumpTargetSchema,\n});\nexport type DecisionNode = z.infer<typeof DecisionNodeSchema>;\n\n/**\n * Migrate a persisted binary decision (`expression` + `onTrue` / `onFalse`) to\n * the multi-segment shape in-place. No-op when already migrated.\n */\nexport const migrateLegacyDecisionNodeInPlace = (node: Record<string, unknown>): void => {\n if (!node || typeof node !== 'object') return;\n if (Array.isArray(node.cases)) return;\n if (!('expression' in node)) return;\n const id = typeof node.id === 'string' ? node.id : 'dec_unknown';\n const expression = node.expression;\n const onTrue = 'onTrue' in node ? (node.onTrue as FlowJumpTarget | null | undefined) ?? null : null;\n const onFalse = 'onFalse' in node ? (node.onFalse as FlowJumpTarget | null | undefined) ?? null : null;\n delete node.expression;\n delete node.onTrue;\n delete node.onFalse;\n node.cases = [\n {\n id: `${id}_case_0`,\n name: 'Group 1',\n expression,\n next: onTrue,\n },\n ];\n node.elseNext = onFalse;\n};\n\nexport const collectDecisionSdkKeys = (expr: DecisionExpr): string[] => {\n const out: string[] = [];\n const walk = (e: DecisionExpr): void => {\n if (e.kind === 'empty') return;\n if (e.kind === 'predicate') {\n if (e.variable.kind === 'sdk') out.push(e.variable.key);\n return;\n }\n for (const c of e.children) walk(c);\n };\n walk(expr);\n return out;\n};\n\nexport const collectDecisionFieldKeys = (expr: DecisionExpr): string[] => {\n const out: string[] = [];\n const walk = (e: DecisionExpr): void => {\n if (e.kind === 'empty') return;\n if (e.kind === 'predicate') {\n if (e.variable.kind === 'field') out.push(e.variable.fieldKey);\n return;\n }\n for (const c of e.children) walk(c);\n };\n walk(expr);\n return out;\n};\n\nexport const collectDecisionSdkKeysFromNode = (node: DecisionNode): string[] => {\n const seen = new Set<string>();\n for (const c of node.cases) {\n for (const k of collectDecisionSdkKeys(c.expression)) seen.add(k);\n }\n return [...seen];\n};\n\nexport const collectDecisionFieldKeysFromNode = (node: DecisionNode): string[] => {\n const seen = new Set<string>();\n for (const c of node.cases) {\n for (const k of collectDecisionFieldKeys(c.expression)) seen.add(k);\n }\n return [...seen];\n};\n","import { z } from 'zod';\nimport { LayerIdSchema } from './layers';\n\n/**\n * Animation IR — strict-parity, normalized keyframes shared by every\n * runtime (web sim, native SDK, future exporters).\n *\n * Design notes:\n * - `tracks` are the source of truth: each `KeyframeTrack` is a sorted\n * list of `{ t, value }` samples for ONE animatable property. Renderers\n * interpolate between samples using the segment's `easing` token.\n * - All times are normalized 0..1; the clip's authored duration lives in\n * `durationMs`. This keeps schema purely numeric and renderer math\n * identical (CSS keyframes, Reanimated `withTiming` chains, etc.).\n * - `triggers`: `mount` (layer appears), `unmount` (layer hides — timed on\n * the screen timeline), and legacy `stagger` (migrated to `mount` + delay\n * in the builder). Transitions between screens remain `ScreenTransition`.\n * - Property surface is intentionally narrow (\"style tokens only\") so\n * strict parity holds across web + RN. Adding a property here means\n * adding interpreter support in BOTH renderers.\n */\n\nexport const ANIMATABLE_PROPERTIES = [\n 'opacity',\n 'translateX',\n 'translateY',\n 'scale',\n] as const;\nexport type AnimatableProperty = (typeof ANIMATABLE_PROPERTIES)[number];\nexport const AnimatablePropertySchema = z.enum(ANIMATABLE_PROPERTIES);\n\nexport const EASING_TOKENS = [\n 'linear',\n 'ease-in',\n 'ease-out',\n 'ease-in-out',\n 'standard',\n 'emphasized',\n] as const;\nexport type EasingToken = (typeof EASING_TOKENS)[number];\nexport const EasingTokenSchema = z.enum(EASING_TOKENS);\n\n/** A single sample on a property track. */\nexport const KeyframeSchema = z\n .object({\n t: z.number().min(0).max(1),\n value: z.number(),\n /** Easing applied from this keyframe to the next; defaults to linear. */\n easing: EasingTokenSchema.optional(),\n })\n .strict();\nexport type Keyframe = z.infer<typeof KeyframeSchema>;\n\nexport const KeyframeTrackSchema = z\n .object({\n property: AnimatablePropertySchema,\n keyframes: z.array(KeyframeSchema).min(2),\n })\n .strict()\n .superRefine((track, ctx) => {\n let last = -Infinity;\n for (const k of track.keyframes) {\n if (k.t < last) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `keyframe times must be monotonically non-decreasing on track \"${track.property}\"`,\n });\n return;\n }\n last = k.t;\n }\n if (track.keyframes[0]!.t !== 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `track \"${track.property}\" first keyframe must start at t=0`,\n });\n }\n if (track.keyframes[track.keyframes.length - 1]!.t !== 1) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `track \"${track.property}\" last keyframe must end at t=1`,\n });\n }\n });\nexport type KeyframeTrack = z.infer<typeof KeyframeTrackSchema>;\n\nexport const ANIMATION_TRIGGERS = ['mount', 'stagger', 'unmount'] as const;\nexport type AnimationTrigger = (typeof ANIMATION_TRIGGERS)[number];\nexport const AnimationTriggerSchema = z.enum(ANIMATION_TRIGGERS);\n\nexport const AnimationClipSchema = z\n .object({\n id: z.string().min(1).max(64),\n targetLayerId: LayerIdSchema,\n trigger: AnimationTriggerSchema,\n /** Position in the screen's stagger order. Required when trigger is `stagger`. */\n staggerIndex: z.number().int().min(0).max(64).optional(),\n /** Total clip duration in milliseconds (renderer scales 0..1 keyframes by this). */\n durationMs: z.number().int().min(0).max(3_600_000),\n /** Pre-roll delay before the clip begins, in ms. Stagger adds on top of this. */\n delayMs: z.number().int().min(0).max(3_600_000).optional(),\n tracks: z.array(KeyframeTrackSchema).min(1),\n })\n .strict()\n .superRefine((clip, ctx) => {\n if (clip.trigger === 'unmount' && clip.staggerIndex !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `clip \"${clip.id}\" with trigger \"unmount\" must not set staggerIndex`,\n path: ['staggerIndex'],\n });\n }\n if (clip.trigger === 'stagger' && clip.staggerIndex === undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `clip \"${clip.id}\" with trigger \"stagger\" must define staggerIndex`,\n path: ['staggerIndex'],\n });\n }\n const seenProps = new Set<AnimatableProperty>();\n for (const track of clip.tracks) {\n if (seenProps.has(track.property)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `clip \"${clip.id}\" has duplicate track for property \"${track.property}\"`,\n });\n }\n seenProps.add(track.property);\n }\n });\nexport type AnimationClip = z.infer<typeof AnimationClipSchema>;\n\n/** Default clip duration when the builder adds mount/unmount animations. */\nexport const DEFAULT_ANIMATION_CLIP_DURATION_MS = 500 as const;\n\n/**\n * Default gap between siblings when a screen uses `stagger`. The\n * renderer multiplies this by `staggerIndex` and adds it to the clip's\n * `delayMs`. Lives on the screen so authors can dial overall pacing.\n */\nexport const ScreenStaggerSchema = z\n .object({\n /** Per-index delay multiplier in ms. */\n stepMs: z.number().int().min(0).max(2_000),\n })\n .strict();\nexport type ScreenStagger = z.infer<typeof ScreenStaggerSchema>;\n","import { z } from 'zod';\nimport {\n ScreenIdSchema,\n StackLayerSchema,\n appReviewCaptureFieldKey,\n isInputLayer,\n permissionCaptureFieldKey,\n} from './layers';\nimport type { Layer, StackLayer } from './layers';\nimport { PaddingSchema } from './layers/styleCommon.js';\nimport {\n ScreenBackgroundFillSchema,\n ScreenContainerStyleBreakpointsSchema,\n} from './screenBackground.js';\nimport type { ScreenContainerStyleBreakpoints } from './screenBackground.js';\nimport { FlowJumpTargetSchema } from './decisions';\nimport {\n AnimationClipSchema,\n ScreenStaggerSchema,\n} from './animations';\nimport type {\n AnimationClip,\n ScreenStagger,\n} from './animations';\n\nexport const ScreenNextSchema = z.object({\n default: FlowJumpTargetSchema,\n});\nexport type ScreenNext = z.infer<typeof ScreenNextSchema>;\n\nexport const ScreenRegionsSchema = z.object({\n header: StackLayerSchema.optional(),\n body: StackLayerSchema,\n footer: StackLayerSchema.optional(),\n});\nexport type ScreenRegions = {\n header?: StackLayer;\n body: StackLayer;\n footer?: StackLayer;\n};\n\n/** Padding, margin, and shell backdrop on the screen container (wraps header/body/footer). */\nexport const ScreenContainerStyleSchema = z\n .object({\n padding: PaddingSchema.optional(),\n margin: PaddingSchema.optional(),\n /** When true, runtimes add device safe-area insets to shell padding (in addition to manual padding). */\n insetSafeArea: z.boolean().optional(),\n backgroundFill: ScreenBackgroundFillSchema.optional(),\n })\n .partial();\nexport type ScreenContainerStyle = z.infer<typeof ScreenContainerStyleSchema>;\n\nexport {\n ScreenBackgroundFillSchema,\n ScreenBackgroundFillPatchSchema,\n ScreenBackgroundScrimSchema,\n ScreenBackgroundFitSchema,\n ScreenBackgroundColorFillSchema,\n ScreenBackgroundImageFillSchema,\n ScreenBackgroundVideoFillSchema,\n ScreenContainerStyleBreakpointsSchema,\n screenBackgroundPlaybackId,\n isScreenBackgroundPlaybackId,\n SCREEN_BACKGROUND_PLAYBACK_PREFIX,\n defaultScreenBackgroundColorFill,\n defaultScreenBackgroundImageFill,\n defaultScreenBackgroundVideoFill,\n} from './screenBackground.js';\nexport type {\n ScreenBackgroundFill,\n ScreenBackgroundColorFill,\n ScreenBackgroundImageFill,\n ScreenBackgroundVideoFill,\n ScreenBackgroundFillPatch,\n ScreenBackgroundScrim,\n ScreenBackgroundFit,\n ScreenContainerStyleBreakpoints,\n} from './screenBackground.js';\n\nexport const ScreenSchema = z.object({\n id: ScreenIdSchema,\n name: z.string().min(1).max(80),\n regions: ScreenRegionsSchema,\n next: ScreenNextSchema,\n /** Ordered animation clips bound to layers on this screen. */\n animations: z.array(AnimationClipSchema).optional(),\n /** Defaults for clips with `trigger: stagger`. */\n stagger: ScreenStaggerSchema.optional(),\n /** Chrome on the outer screen container (wraps all regions). */\n containerStyle: ScreenContainerStyleSchema.optional(),\n containerStyleBreakpoints: ScreenContainerStyleBreakpointsSchema,\n});\n\nexport type Screen = {\n id: string;\n name: string;\n regions: ScreenRegions;\n next: ScreenNext;\n animations?: AnimationClip[];\n stagger?: ScreenStagger;\n containerStyle?: ScreenContainerStyle;\n containerStyleBreakpoints?: ScreenContainerStyleBreakpoints;\n};\n\n/** Layout context for validating positioning rules (region roots, choice options). */\nexport type LayerLayoutWalkCtx = {\n region: 'header' | 'body' | 'footer';\n isRegionRoot: boolean;\n insideChoiceOption: boolean;\n /** Kind of this layer's direct parent wrapper (null only for region-root stacks). */\n parentKind: Layer['kind'] | null;\n};\n\n/** Like {@link walkScreenLayers} but passes region-root and choice-option ancestry. */\nexport const walkScreenLayersWithLayoutContext = (\n screen: Screen,\n fn: (l: Layer, ctx: LayerLayoutWalkCtx) => void,\n): void => {\n const visit = (l: Layer, ctx: LayerLayoutWalkCtx): void => {\n fn(l, ctx);\n const childCtx = (\n opts: Partial<Pick<LayerLayoutWalkCtx, 'insideChoiceOption'>> = {},\n ): LayerLayoutWalkCtx => ({\n region: ctx.region,\n isRegionRoot: false,\n insideChoiceOption: opts.insideChoiceOption ?? ctx.insideChoiceOption,\n parentKind: l.kind,\n });\n if (l.kind === 'stack') {\n for (const c of l.children) visit(c, childCtx());\n } else if (l.kind === 'carousel') {\n for (const s of l.slides) visit(s, childCtx());\n } else if (l.kind === 'button' || l.kind === 'back_button') {\n for (const c of l.children) visit(c, childCtx());\n } else if (l.kind === 'hyperlink') {\n for (const c of l.children) visit(c, childCtx());\n } else if (l.kind === 'single_choice' || l.kind === 'multiple_choice') {\n for (const c of l.children) {\n visit(c, childCtx({ insideChoiceOption: true }));\n }\n } else if (l.kind === 'text_input' || l.kind === 'scale_input') {\n for (const c of l.children ?? []) visit(c, childCtx());\n } else if (l.kind === 'oauth_login') {\n for (const c of l.children) visit(c, childCtx());\n } else if (l.kind === 'oauth_provider' && l.variant === 'custom') {\n for (const c of l.children) visit(c, childCtx());\n } else if (l.kind === 'email_password_auth') {\n for (const c of l.children) visit(c, childCtx());\n } else if (l.kind === 'email_password_field') {\n for (const c of l.children ?? []) visit(c, childCtx());\n } else if (l.kind === 'email_password_submit') {\n for (const c of l.children) visit(c, childCtx());\n }\n };\n const regionCtx = (region: 'header' | 'body' | 'footer'): LayerLayoutWalkCtx => ({\n region,\n isRegionRoot: true,\n insideChoiceOption: false,\n parentKind: null,\n });\n if (screen.regions.header) visit(screen.regions.header, regionCtx('header'));\n visit(screen.regions.body, regionCtx('body'));\n if (screen.regions.footer) visit(screen.regions.footer, regionCtx('footer'));\n};\n\n/** Walk every layer in a screen's regions (header, body, footer). */\nexport const walkScreenLayers = (screen: Screen, fn: (l: Layer) => void): void => {\n const visit = (l: Layer): void => {\n fn(l);\n if (l.kind === 'stack') l.children.forEach(visit);\n else if (l.kind === 'carousel') l.slides.forEach(visit);\n else if (l.kind === 'button') l.children.forEach(visit);\n else if (l.kind === 'back_button') l.children.forEach(visit);\n else if (l.kind === 'hyperlink') l.children.forEach(visit);\n else if (l.kind === 'single_choice' || l.kind === 'multiple_choice') {\n l.children.forEach(visit);\n } else if (l.kind === 'text_input' || l.kind === 'scale_input') {\n l.children?.forEach(visit);\n } else if (l.kind === 'oauth_login') {\n l.children.forEach(visit);\n } else if (l.kind === 'oauth_provider' && l.variant === 'custom') {\n l.children.forEach(visit);\n } else if (l.kind === 'email_password_auth') {\n l.children.forEach(visit);\n } else if (l.kind === 'email_password_field') {\n l.children?.forEach(visit);\n } else if (l.kind === 'email_password_submit') {\n l.children.forEach(visit);\n }\n };\n if (screen.regions.header) visit(screen.regions.header);\n visit(screen.regions.body);\n if (screen.regions.footer) visit(screen.regions.footer);\n};\n\n/**\n * Field keys for user-capture layers on a screen: primary input (choice / text / scale),\n * standalone checkboxes, and synthetic keys for OS permission buttons.\n * Aligns with manifest validation (unique field keys, permission capture keys).\n */\nexport const collectAnswerCaptureFieldKeysFromScreen = (screen: Screen): string[] => {\n const keys: string[] = [];\n walkScreenLayers(screen, (l) => {\n if (isInputLayer(l)) keys.push(l.fieldKey);\n if (l.kind === 'checkbox') keys.push(l.fieldKey);\n if (l.kind === 'button' && l.action.kind === 'request_os_permission') {\n keys.push(permissionCaptureFieldKey(l.action.permissionKey));\n }\n if (l.kind === 'button' && l.action.kind === 'request_app_review') {\n keys.push(appReviewCaptureFieldKey(l.id));\n }\n });\n return keys;\n};\n","import { z } from 'zod';\nimport type { FlowManifest } from './manifest';\nimport type { Layer } from './layers';\nimport { walkScreenLayers } from './screens';\n\n/** Keys stored in DB / API; false = capability disabled in the canvas editor. */\nexport const CANVAS_EDITOR_GATE_KEYS = [\n 'lottie',\n 'oauthLogin',\n 'oauthProviderPreset',\n 'oauthProviderCustom',\n 'emailPasswordAuth',\n 'emailPasswordField',\n 'emailPasswordSubmit',\n 'requestOsPermission',\n] as const;\n\nexport type CanvasEditorGateKey = (typeof CANVAS_EDITOR_GATE_KEYS)[number];\n\nexport type ResolvedCanvasEditorGates = Record<CanvasEditorGateKey, boolean>;\n\nexport const CanvasEditorGatesResolvedSchema = z.object({\n lottie: z.boolean(),\n oauthLogin: z.boolean(),\n oauthProviderPreset: z.boolean(),\n oauthProviderCustom: z.boolean(),\n emailPasswordAuth: z.boolean(),\n emailPasswordField: z.boolean(),\n emailPasswordSubmit: z.boolean(),\n requestOsPermission: z.boolean(),\n});\n\nexport type CanvasEditorGatesResolved = z.infer<typeof CanvasEditorGatesResolvedSchema>;\n\nconst ALL_TRUE: ResolvedCanvasEditorGates = {\n lottie: true,\n oauthLogin: true,\n oauthProviderPreset: true,\n oauthProviderCustom: true,\n emailPasswordAuth: true,\n emailPasswordField: true,\n emailPasswordSubmit: true,\n requestOsPermission: true,\n};\n\n/** Partial overrides; omitted keys default to enabled (true). */\nexport const CanvasEditorGatesPatchSchema = z\n .object({\n lottie: z.boolean().optional(),\n oauthLogin: z.boolean().optional(),\n oauthProviderPreset: z.boolean().optional(),\n oauthProviderCustom: z.boolean().optional(),\n emailPasswordAuth: z.boolean().optional(),\n emailPasswordField: z.boolean().optional(),\n emailPasswordSubmit: z.boolean().optional(),\n requestOsPermission: z.boolean().optional(),\n })\n .strict();\n\nexport type CanvasEditorGatesPatch = z.infer<typeof CanvasEditorGatesPatchSchema>;\n\nexport const parseCanvasEditorGates = (\n raw: unknown | null | undefined,\n): ResolvedCanvasEditorGates => {\n if (raw == null) return { ...ALL_TRUE };\n const parsed = CanvasEditorGatesPatchSchema.safeParse(raw);\n if (!parsed.success) return { ...ALL_TRUE };\n return { ...ALL_TRUE, ...parsed.data };\n};\n\nconst layerViolationMessage = (screenId: string, layerId: string, label: string): string =>\n `Screen \"${screenId}\": ${label} (layer \"${layerId}\") is disabled for this app in canvas editor settings.`;\n\nconst buttonOsPermissionMessage = (screenId: string, layerId: string): string =>\n `Screen \"${screenId}\": request OS permission button actions are disabled for this app (layer \"${layerId}\").`;\n\n/**\n * Returns human-readable issues when the manifest uses capabilities that are\n * turned off for the app. Empty when allowed.\n */\nexport const collectCanvasGateViolations = (\n manifest: FlowManifest,\n gates: ResolvedCanvasEditorGates,\n): string[] => {\n const issues: string[] = [];\n\n for (const screen of manifest.screens) {\n walkScreenLayers(screen, (l: Layer) => {\n if ((l.kind === 'lottie' || l.kind === 'video') && !gates.lottie) {\n issues.push(\n layerViolationMessage(\n screen.id,\n l.id,\n l.kind === 'video' ? 'Video layers' : 'Lottie layers',\n ),\n );\n }\n if (l.kind === 'oauth_login' && !gates.oauthLogin) {\n issues.push(layerViolationMessage(screen.id, l.id, 'OAuth login layers'));\n }\n if (l.kind === 'oauth_provider') {\n if (l.variant === 'preset' && !gates.oauthProviderPreset) {\n issues.push(layerViolationMessage(screen.id, l.id, 'OAuth provider (preset) layers'));\n }\n if (l.variant === 'custom' && !gates.oauthProviderCustom) {\n issues.push(layerViolationMessage(screen.id, l.id, 'OAuth provider (custom) layers'));\n }\n }\n if (l.kind === 'email_password_auth' && !gates.emailPasswordAuth) {\n issues.push(layerViolationMessage(screen.id, l.id, 'Email/password auth layers'));\n }\n if (l.kind === 'email_password_field' && !gates.emailPasswordField) {\n issues.push(layerViolationMessage(screen.id, l.id, 'Email/password field layers'));\n }\n if (l.kind === 'email_password_submit' && !gates.emailPasswordSubmit) {\n issues.push(layerViolationMessage(screen.id, l.id, 'Email/password submit layers'));\n }\n if (l.kind === 'button' && l.action.kind === 'request_os_permission' && !gates.requestOsPermission) {\n issues.push(buttonOsPermissionMessage(screen.id, l.id));\n }\n });\n }\n\n return issues;\n};\n\nexport const manifestPassesCanvasGates = (\n manifest: FlowManifest,\n gates: ResolvedCanvasEditorGates,\n): boolean => collectCanvasGateViolations(manifest, gates).length === 0;\n\n/** One-line constraints for AI system prompts. */\nexport const describeCanvasGatesForAi = (gates: ResolvedCanvasEditorGates): string => {\n const disabled: string[] = [];\n if (!gates.lottie) disabled.push('do not use lottie or video layers');\n if (!gates.oauthLogin) disabled.push('do not use oauth_login layers');\n if (!gates.oauthProviderPreset) disabled.push('do not use oauth_provider with variant preset');\n if (!gates.oauthProviderCustom) disabled.push('do not use oauth_provider with variant custom');\n if (!gates.emailPasswordAuth) disabled.push('do not use email_password_auth layers');\n if (!gates.emailPasswordField) disabled.push('do not use email_password_field layers');\n if (!gates.emailPasswordSubmit) disabled.push('do not use email_password_submit layers');\n if (!gates.requestOsPermission) disabled.push('do not use button actions with kind request_os_permission');\n if (disabled.length === 0) {\n return 'Canvas editor: all advanced layer types and OS permission button actions are allowed.';\n }\n return `Canvas editor restrictions for this app — ${disabled.join('; ')}.`;\n};\n","import { z } from 'zod';\nimport { ENVIRONMENTS } from '../constants/index.js';\nimport { CanvasEditorGatesResolvedSchema } from '../canvasEditorGates.js';\nimport { AppIntegrationsSchema, ResolvedAppIntegrationsSchema } from '../appIntegrations.js';\n\n/* ----- App ----- */\n\n/* ----- Branding ----- */\nconst HEX = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;\n\nexport const BrandColorSchema = z.object({\n id: z.string().uuid(),\n name: z.string().min(1).max(50),\n /** Hex color, e.g. `#0F172A`. Alpha (8 chars) supported. */\n value: z.string().regex(HEX, 'must be a hex color (#RRGGBB or #RRGGBBAA)'),\n});\nexport type BrandColor = z.infer<typeof BrandColorSchema>;\n\nexport const BrandGradientStopSchema = z.object({\n /** 0..1 position along the gradient. */\n offset: z.number().min(0).max(1),\n color: z.string().regex(HEX),\n});\nexport type BrandGradientStop = z.infer<typeof BrandGradientStopSchema>;\n\nexport const BrandGradientSchema = z.object({\n id: z.string().uuid(),\n name: z.string().min(1).max(50),\n type: z.enum(['linear', 'radial']),\n /** Degrees, used when type === 'linear'. 0 = top → bottom (CSS convention). */\n angle: z.number().min(0).max(360).optional(),\n stops: z.array(BrandGradientStopSchema).min(2),\n});\nexport type BrandGradient = z.infer<typeof BrandGradientSchema>;\n\nexport const FontStyleSchema = z.object({\n id: z.string().uuid(),\n /** Numeric CSS font-weight, e.g. 100..900. */\n weight: z.number().int().min(100).max(900),\n italic: z.boolean(),\n /** Optional human label (e.g. \"Bold Italic\"). */\n label: z.string().max(40).optional(),\n /** MediaAsset id of the uploaded font file. */\n mediaAssetId: z.string().uuid().optional(),\n /** Public URL of the uploaded font file (denormalized for SDK consumption). */\n url: z.string().url().optional(),\n /** Original filename — useful for display. */\n filename: z.string().max(200).optional(),\n});\nexport type FontStyle = z.infer<typeof FontStyleSchema>;\n\nexport const FontFamilySchema = z.object({\n id: z.string().uuid(),\n name: z.string().min(1).max(60),\n styles: z.array(FontStyleSchema),\n});\nexport type FontFamily = z.infer<typeof FontFamilySchema>;\n\n/** Artwork from a store listing or an uploaded image asset URL. */\nexport const AppIconSchema = z.object({\n url: z.string().url(),\n source: z.enum(['app_store', 'play_store', 'upload']),\n});\nexport type AppIcon = z.infer<typeof AppIconSchema>;\n\nexport const BrandingSchema = z.object({\n /** Optional store / marketing icon for this app (shown in dashboard). */\n appIcon: AppIconSchema.optional(),\n colorPresets: z.array(BrandColorSchema),\n gradientPresets: z.array(BrandGradientSchema),\n fontFamilies: z.array(FontFamilySchema),\n});\nexport type Branding = z.infer<typeof BrandingSchema>;\n\nexport const EMPTY_BRANDING: Branding = {\n colorPresets: [],\n gradientPresets: [],\n fontFamilies: [],\n};\n\n/** iOS bundle ID or Android package / application ID. */\nexport const StoreListingInputSchema = z.object({\n platform: z.enum(['ios', 'android']),\n applicationId: z.string().trim().min(1).max(200),\n});\nexport type StoreListingInput = z.infer<typeof StoreListingInputSchema>;\n\nexport const StoreListingLookupResponseSchema = z.object({\n found: z.boolean(),\n platform: z.enum(['ios', 'android']),\n applicationId: z.string(),\n name: z.string().optional(),\n iconUrl: z.string().url().optional(),\n});\nexport type StoreListingLookupResponse = z.infer<typeof StoreListingLookupResponseSchema>;\n\nexport const AppSchema = z.object({\n id: z.string().uuid(),\n orgId: z.string().uuid(),\n name: z.string().min(1).max(100),\n branding: BrandingSchema.optional(),\n /** Resolved flags; all true when unset in storage. */\n canvasEditorGates: CanvasEditorGatesResolvedSchema,\n /** Resolved per-provider integration toggles + settings. */\n integrations: ResolvedAppIntegrationsSchema,\n archivedAt: z.string().datetime().nullable().optional(),\n createdAt: z.string().datetime(),\n});\nexport type App = z.infer<typeof AppSchema>;\n\nexport const CreateAppRequestSchema = z.object({\n name: z.string().min(1).max(100),\n /** When set, the server resolves artwork from the store after the app row exists. */\n storeListing: StoreListingInputSchema.optional(),\n});\nexport type CreateAppRequest = z.infer<typeof CreateAppRequestSchema>;\n\nexport const UpdateAppRequestSchema = z.object({\n name: z.string().min(1).max(100).optional(),\n /** Full replace for the JSON column when set; omit to leave unchanged. */\n canvasEditorGates: CanvasEditorGatesResolvedSchema.optional(),\n /** Per-provider integration toggles + settings. Full replace semantics when set. */\n integrations: AppIntegrationsSchema.optional(),\n});\nexport type UpdateAppRequest = z.infer<typeof UpdateAppRequestSchema>;\n\nexport const UpdateAppBrandingRequestSchema = z.object({\n branding: BrandingSchema,\n});\nexport type UpdateAppBrandingRequest = z.infer<typeof UpdateAppBrandingRequestSchema>;\n\nexport const DeleteAppRequestSchema = z.object({\n /** User must type the app's exact name to confirm destructive deletion. */\n confirmName: z.string().min(1),\n});\nexport type DeleteAppRequest = z.infer<typeof DeleteAppRequestSchema>;\n\nexport const DeleteAppResponseSchema = z.object({\n mode: z.enum(['hard', 'soft']),\n reason: z.enum(['has_events', 'clickhouse_unavailable']).optional(),\n});\nexport type DeleteAppResponse = z.infer<typeof DeleteAppResponseSchema>;\n\nexport const PublishableKeySchema = z.object({\n id: z.string().uuid(),\n environment: z.enum(ENVIRONMENTS),\n /**\n * Full publishable key. Always returned to dashboard users since publishable\n * keys are non-secret and meant to ship in mobile clients.\n */\n plaintext: z.string(),\n prefix: z.string(),\n lastFour: z.string(),\n revokedAt: z.string().datetime().nullable().optional(),\n createdAt: z.string().datetime(),\n});\nexport type PublishableKey = z.infer<typeof PublishableKeySchema>;\n\nexport const CreateAppResponseSchema = z.object({\n app: AppSchema,\n keys: z.array(PublishableKeySchema),\n});\nexport type CreateAppResponse = z.infer<typeof CreateAppResponseSchema>;\n\n","import { z } from 'zod';\n\n/* ----- Tags (flows & experiments) ----- */\nexport const DASHBOARD_MAX_TAGS = 20;\nexport const DASHBOARD_MAX_TAG_LEN = 64;\n\n/** Trim, lowercase, drop empties, dedupe (first wins), cap length per tag and count. */\nexport const normalizeDashboardTags = (raw: string[]): string[] => {\n const out: string[] = [];\n const seen = new Set<string>();\n for (const s of raw) {\n const t = s.trim().toLowerCase();\n if (t.length === 0 || t.length > DASHBOARD_MAX_TAG_LEN) continue;\n if (seen.has(t)) continue;\n seen.add(t);\n out.push(t);\n if (out.length >= DASHBOARD_MAX_TAGS) break;\n }\n return out;\n};\n\nexport const TagsSchema = z\n .array(z.string())\n .max(DASHBOARD_MAX_TAGS)\n .superRefine((arr, ctx) => {\n arr.forEach((s, i) => {\n const t = s.trim().toLowerCase();\n if (t.length > DASHBOARD_MAX_TAG_LEN) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Tag exceeds ${DASHBOARD_MAX_TAG_LEN} characters`,\n path: [i],\n });\n }\n });\n })\n .transform((arr) => normalizeDashboardTags(arr));\n\nexport const TagsSchemaOptional = TagsSchema.optional();\n\n","export const MANIFEST_SCHEMA_VERSION = 7;\n","import { z } from 'zod';\n\nexport const ThemeSchema = z.object({\n primary: z.string().optional(),\n primaryForeground: z.string().optional(),\n background: z.string().optional(),\n foreground: z.string().optional(),\n accent: z.string().optional(),\n borderRadius: z.number().optional(),\n fontFamily: z.string().optional(),\n});\nexport type Theme = z.infer<typeof ThemeSchema>;\n\nexport const BuilderMetaSchema = z\n .object({\n layout: z\n .object({\n nodes: z\n .array(\n z.object({\n id: z.string(),\n kind: z.enum(['screen', 'decision']).optional(),\n x: z.number(),\n y: z.number(),\n }),\n )\n .optional(),\n canvas: z\n .object({\n zoom: z.number().optional(),\n x: z.number().optional(),\n y: z.number().optional(),\n })\n .optional(),\n })\n .optional(),\n })\n .passthrough()\n .optional();\n\nexport type BuilderMeta = z.infer<typeof BuilderMetaSchema>;\n","import { z } from 'zod';\nimport { FlowJumpTargetSchema } from './decisions';\nimport type { FlowJumpTarget } from './decisions';\n\nexport const ExternalSurfaceNodeIdSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^surf_[a-z0-9_]+$/i, 'external surface node id must look like surf_<id>');\nexport type ExternalSurfaceNodeId = z.infer<typeof ExternalSurfaceNodeIdSchema>;\n\nexport const NORMALIZED_SURFACE_OUTCOMES = [\n 'purchase_completed',\n 'purchase_cancelled',\n 'dismissed',\n 'failed',\n 'restore_completed',\n] as const;\n\nexport const NormalizedSurfaceOutcomeSchema = z.enum(NORMALIZED_SURFACE_OUTCOMES);\nexport type NormalizedSurfaceOutcome = z.infer<typeof NormalizedSurfaceOutcomeSchema>;\n\nexport const SurfaceProviderSchema = z.enum(['unspecified', 'revenuecat']);\nexport type SurfaceProvider = z.infer<typeof SurfaceProviderSchema>;\n\n/** Authoring-only: integration not chosen yet in the flow editor. Resolves like a failed surface at runtime until changed. */\nexport const UnspecifiedExternalSurfaceConfigSchema = z.object({\n provider: z.literal('unspecified'),\n});\nexport type UnspecifiedExternalSurfaceConfig = z.infer<typeof UnspecifiedExternalSurfaceConfigSchema>;\n\nexport const RevenueCatSurfacePresentationSchema = z.enum(['paywall', 'paywall_if_needed']);\nexport type RevenueCatSurfacePresentation = z.infer<typeof RevenueCatSurfacePresentationSchema>;\n\n/**\n * RevenueCat surface configuration. The builder stores these as free text;\n * Rheo does not call RevenueCat's REST API to validate them.\n */\nexport const RevenueCatSurfaceConfigSchema = z.object({\n provider: z.literal('revenuecat'),\n offeringId: z.string().min(1).max(128).optional(),\n placementId: z.string().min(1).max(128).optional(),\n presentation: RevenueCatSurfacePresentationSchema.optional(),\n});\nexport type RevenueCatSurfaceConfig = z.infer<typeof RevenueCatSurfaceConfigSchema>;\n\n/** Future providers (Superwall, etc.) extend this discriminated union. */\nexport const ExternalSurfaceConfigSchema = z.discriminatedUnion('provider', [\n UnspecifiedExternalSurfaceConfigSchema,\n RevenueCatSurfaceConfigSchema,\n]);\nexport type ExternalSurfaceConfig = z.infer<typeof ExternalSurfaceConfigSchema>;\n\nexport const ExternalSurfaceOutcomesMapSchema = z\n .object({\n purchase_completed: FlowJumpTargetSchema.optional(),\n purchase_cancelled: FlowJumpTargetSchema.optional(),\n dismissed: FlowJumpTargetSchema.optional(),\n failed: FlowJumpTargetSchema.optional(),\n restore_completed: FlowJumpTargetSchema.optional(),\n })\n .strict();\nexport type ExternalSurfaceOutcomesMap = z.infer<typeof ExternalSurfaceOutcomesMapSchema>;\n\nexport const ExternalSurfaceNodeSchema = z.object({\n id: ExternalSurfaceNodeIdSchema,\n name: z.string().min(1).max(80).optional(),\n config: ExternalSurfaceConfigSchema,\n /** Per-outcome jump targets. Outcomes not listed here fall through to `fallback`. */\n outcomes: ExternalSurfaceOutcomesMapSchema,\n /** Required: used for any outcome not in `outcomes` (e.g. provider quirks, unmapped events). */\n fallback: FlowJumpTargetSchema,\n});\nexport type ExternalSurfaceNode = z.infer<typeof ExternalSurfaceNodeSchema>;\n\n/** Pick the configured target for an outcome, falling back to the explicit fallback edge. */\nexport const resolveExternalSurfaceTarget = (\n node: ExternalSurfaceNode,\n outcome: NormalizedSurfaceOutcome,\n): FlowJumpTarget => node.outcomes[outcome] ?? node.fallback;\n","import { z } from 'zod';\nimport { LocaleCode } from '../localized.js';\nimport { ScreenSchema } from '../screens.js';\nimport { DecisionNodeSchema } from '../decisions.js';\nimport { ExternalSurfaceNodeSchema } from '../externalSurfaces.js';\nimport { MANIFEST_SCHEMA_VERSION } from './version.js';\nimport { BuilderMetaSchema, ThemeSchema } from './theme.js';\n\n/** Flow manifest object schema without cross-field superRefine (attached in flowManifestSchema.ts). */\nexport const FlowManifestObjectBaseSchema = z.object({\n flowId: z.string().uuid(),\n /** Manifest schema version — see {@link MANIFEST_SCHEMA_VERSION}. */\n schemaVersion: z.literal(MANIFEST_SCHEMA_VERSION).optional(),\n version: z.number().int().positive(),\n defaultLocale: LocaleCode,\n locales: z.array(LocaleCode),\n /** When null, the draft has no wired entry target (builder connects the canvas entry node). */\n entryScreenId: z.union([z.string().min(1), z.null()]),\n screens: z.array(ScreenSchema),\n decisionNodes: z\n .union([z.array(DecisionNodeSchema), z.undefined()])\n .transform((x) => x ?? []),\n externalSurfaceNodes: z\n .union([z.array(ExternalSurfaceNodeSchema), z.undefined()])\n .transform((x) => x ?? []),\n sdkAttributeKeys: z\n .union([z.array(z.string().min(1).max(128)), z.undefined()])\n .transform((x) => x ?? []),\n theme: ThemeSchema.optional(),\n builderMeta: BuilderMetaSchema,\n});\n\nexport type FlowManifestObjectBase = z.infer<typeof FlowManifestObjectBaseSchema>;\n","/**\n * Reserved SDK attribute keys that the SDK writes automatically during a\n * flow run. They bypass the manifest's `sdkAttributeKeys` allowlist when\n * referenced from decision nodes so authors can branch on provider state\n * without having to declare each key up front.\n */\nexport const RESERVED_RC_SDK_KEYS = [\n /** Last RC event observed by the SDK (e.g. `purchase_completed`, `purchase_cancelled`). */\n 'onb_rc_last_event',\n /** Product identifier from the most recent successful purchase. */\n 'onb_rc_last_product_id',\n /** Period type (`normal`, `intro`, `trial`) from the most recent purchase. */\n 'onb_rc_last_period_type',\n /** RevenueCat offering id surfaced by the most recent paywall presentation. */\n 'onb_rc_last_offering_id',\n] as const;\n\nexport type ReservedRcSdkKey = (typeof RESERVED_RC_SDK_KEYS)[number];\n\nconst RESERVED_SDK_KEYS_SET: ReadonlySet<string> = new Set<string>(RESERVED_RC_SDK_KEYS);\n\nexport const isReservedSdkKey = (key: string): key is ReservedRcSdkKey =>\n RESERVED_SDK_KEYS_SET.has(key);\n","import { z } from 'zod';\nimport {\n EXTERNAL_SURFACE_NO_NEXT,\n collectDecisionSdkKeys,\n} from '../decisions.js';\nimport { isReservedSdkKey } from '../sdkAttributes.js';\nimport type { FlowManifestObjectBase } from './flowManifestObjectBaseSchema.js';\n\nexport const buildManifestJumpTargets = (manifest: FlowManifestObjectBase): Set<string> => {\n const screenIds = new Set(manifest.screens.map((s) => s.id));\n const decisionIds = new Set(manifest.decisionNodes.map((d) => d.id));\n const surfaceIds = new Set(manifest.externalSurfaceNodes.map((s) => s.id));\n return new Set<string>([\n ...screenIds,\n ...decisionIds,\n ...surfaceIds,\n EXTERNAL_SURFACE_NO_NEXT,\n ]);\n};\n\nexport const refineManifestGraph = (\n manifest: FlowManifestObjectBase,\n ctx: z.RefinementCtx,\n jumpTargets: Set<string>,\n): { screenIds: Set<string>; decisionIds: Set<string>; surfaceIds: Set<string> } => {\n const screenIds = new Set<string>();\n for (const s of manifest.screens) {\n if (screenIds.has(s.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `duplicate screen id \"${s.id}\"`,\n path: ['screens'],\n });\n }\n screenIds.add(s.id);\n }\n const decisionIds = new Set(manifest.decisionNodes.map((d) => d.id));\n const surfaceIds = new Set(manifest.externalSurfaceNodes.map((s) => s.id));\n\n if (manifest.entryScreenId != null && !jumpTargets.has(manifest.entryScreenId)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `entryScreenId \"${manifest.entryScreenId}\" not found in screens, decisionNodes, or externalSurfaceNodes`,\n path: ['entryScreenId'],\n });\n }\n const seenDecisionId = new Set<string>();\n const sdkAllow = new Set(manifest.sdkAttributeKeys);\n manifest.decisionNodes.forEach((dn, di) => {\n if (seenDecisionId.has(dn.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `duplicate decision node id \"${dn.id}\"`,\n path: ['decisionNodes', di],\n });\n }\n seenDecisionId.add(dn.id);\n if (screenIds.has(dn.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `decision node id \"${dn.id}\" collides with a screen id`,\n path: ['decisionNodes', di],\n });\n }\n if (surfaceIds.has(dn.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `decision node id \"${dn.id}\" collides with an external surface id`,\n path: ['decisionNodes', di],\n });\n }\n dn.cases.forEach((c, ci) => {\n if (c.next != null && !jumpTargets.has(c.next)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `decision \"${dn.id}\" case \"${c.id}\" next \"${c.next}\" not found`,\n path: ['decisionNodes', di, 'cases', ci, 'next'],\n });\n }\n for (const sk of collectDecisionSdkKeys(c.expression)) {\n if (isReservedSdkKey(sk)) continue;\n if (!sdkAllow.has(sk)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `decision \"${dn.id}\" case \"${c.id}\" references sdk key \"${sk}\" not in sdkAttributeKeys`,\n path: ['decisionNodes', di, 'cases', ci, 'expression'],\n });\n }\n }\n });\n if (dn.elseNext != null && !jumpTargets.has(dn.elseNext)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `decision \"${dn.id}\" elseNext \"${dn.elseNext}\" not found`,\n path: ['decisionNodes', di, 'elseNext'],\n });\n }\n });\n\n const seenSurfaceId = new Set<string>();\n manifest.externalSurfaceNodes.forEach((sn, si) => {\n if (seenSurfaceId.has(sn.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `duplicate external surface id \"${sn.id}\"`,\n path: ['externalSurfaceNodes', si],\n });\n }\n seenSurfaceId.add(sn.id);\n if (screenIds.has(sn.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `external surface id \"${sn.id}\" collides with a screen id`,\n path: ['externalSurfaceNodes', si],\n });\n }\n if (decisionIds.has(sn.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `external surface id \"${sn.id}\" collides with a decision node id`,\n path: ['externalSurfaceNodes', si],\n });\n }\n for (const [outcome, target] of Object.entries(sn.outcomes)) {\n if (target != null && !jumpTargets.has(target)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `external surface \"${sn.id}\" outcome \"${outcome}\" target \"${target}\" not found`,\n path: ['externalSurfaceNodes', si, 'outcomes', outcome],\n });\n }\n }\n if (sn.fallback != null && !jumpTargets.has(sn.fallback)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `external surface \"${sn.id}\" fallback \"${sn.fallback}\" not found`,\n path: ['externalSurfaceNodes', si, 'fallback'],\n });\n }\n });\n\n return { screenIds, decisionIds, surfaceIds };\n};\n","import { z } from 'zod';\nimport { walkScreenLayers, walkScreenLayersWithLayoutContext } from '../screens.js';\nimport type { Screen } from '../screens.js';\nimport {\n isInputLayer,\n layerHasAbsolutePositionAuthored,\n OS_PERMISSION_OUTCOME_CONTINUE,\n OS_PERMISSION_OUTCOME_END,\n validateChoiceChildrenAndBindings,\n permissionCaptureFieldKey,\n} from '../layers.js';\nimport type { Layer } from '../layers.js';\nimport type { FlowManifestObjectBase } from './flowManifestObjectBaseSchema.js';\n\nexport const refineManifestScreens = (\n manifest: FlowManifestObjectBase,\n ctx: z.RefinementCtx,\n jumpTargets: Set<string>,\n screenIds: Set<string>,\n allFieldKeys: Map<string, string>,\n): void => {\n const layerIds = new Set<string>();\n manifest.screens.forEach((screen, screenIdx) => {\n let inputCount = 0;\n const layerIdsForScreen = new Set<string>();\n walkScreenLayers(screen as unknown as Screen, (l: Layer) => {\n layerIdsForScreen.add(l.id);\n });\n walkScreenLayers(screen as unknown as Screen, (l: Layer) => {\n if (layerIds.has(l.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `duplicate layer id \"${l.id}\"`,\n path: ['screens', screenIdx, 'regions'],\n });\n }\n layerIds.add(l.id);\n if (isInputLayer(l)) {\n inputCount += 1;\n if (allFieldKeys.has(l.fieldKey)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `duplicate fieldKey \"${l.fieldKey}\" across screens or on the same screen`,\n path: ['screens', screenIdx],\n });\n }\n allFieldKeys.set(l.fieldKey, screen.id);\n }\n if (l.kind === 'checkbox') {\n if (allFieldKeys.has(l.fieldKey)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `duplicate fieldKey \"${l.fieldKey}\" across screens or on the same screen`,\n path: ['screens', screenIdx],\n });\n }\n allFieldKeys.set(l.fieldKey, screen.id);\n }\n if (l.kind === 'button' && l.action.kind === 'request_os_permission') {\n const fk = permissionCaptureFieldKey(l.action.permissionKey);\n if (!allFieldKeys.has(fk)) allFieldKeys.set(fk, screen.id);\n }\n });\n if (inputCount > 1) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `screen \"${screen.id}\" has ${inputCount} input layers (max 1 allowed)`,\n path: ['screens', screenIdx, 'regions'],\n });\n }\n\n walkScreenLayersWithLayoutContext(screen as unknown as Screen, (l, layoutCtx) => {\n if (!layerHasAbsolutePositionAuthored(l)) return;\n if (layoutCtx.isRegionRoot) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `layer \"${l.id}\" cannot use absolute positioning on a screen region root`,\n path: ['screens', screenIdx, 'regions'],\n });\n }\n if (layoutCtx.insideChoiceOption) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `layer \"${l.id}\" cannot use absolute positioning inside a choice option`,\n path: ['screens', screenIdx, 'regions'],\n });\n }\n });\n\n walkScreenLayersWithLayoutContext(screen as unknown as Screen, (l, layoutCtx) => {\n if (l.kind === 'oauth_provider' && layoutCtx.parentKind !== 'oauth_login') {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `OAuth button \"${l.id}\" must be nested under an OAuth login layer`,\n path: ['screens', screenIdx, 'regions'],\n });\n }\n if (\n (l.kind === 'email_password_field' || l.kind === 'email_password_submit') &&\n layoutCtx.parentKind !== 'email_password_auth'\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Layer \"${l.id}\" (${l.kind}) must be nested under an Email / password login layer`,\n path: ['screens', screenIdx, 'regions'],\n });\n }\n });\n\n const nextDefault = screen.next.default;\n if (nextDefault && !jumpTargets.has(nextDefault)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `screen \"${screen.id}\" next.default \"${nextDefault}\" not found`,\n path: ['screens', screenIdx, 'next', 'default'],\n });\n }\n walkScreenLayers(screen as unknown as Screen, (l: Layer) => {\n if (l.kind === 'single_choice' || l.kind === 'multiple_choice') {\n validateChoiceChildrenAndBindings(\n { children: l.children, optionBindings: l.optionBindings },\n ctx,\n );\n const knownOptionIds = new Set(l.optionBindings.map((b) => b.optionId));\n for (const cond of l.branching.conditions) {\n if (!screenIds.has(cond.goTo)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `screen \"${screen.id}\" branch condition \"${cond.choiceId}\" -> \"${cond.goTo}\" not found`,\n path: ['screens', screenIdx],\n });\n }\n if (!knownOptionIds.has(cond.choiceId)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `screen \"${screen.id}\" branch condition references unknown choice \"${cond.choiceId}\"`,\n path: ['screens', screenIdx],\n });\n }\n }\n }\n if (l.kind === 'button' && l.action.kind === 'go_to_step') {\n if (!screenIds.has(l.action.screenId)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `screen \"${screen.id}\" button action go_to_step \"${l.action.screenId}\" not found`,\n path: ['screens', screenIdx],\n });\n }\n }\n if (\n l.kind === 'button' &&\n l.action.kind === 'go_back_one_screen' &&\n manifest.entryScreenId != null &&\n screen.id === manifest.entryScreenId\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `screen \"${screen.id}\" is the flow entry screen; buttons cannot use go_back_one_screen`,\n path: ['screens', screenIdx],\n });\n }\n if (l.kind === 'button' && l.action.kind === 'request_os_permission') {\n for (const [label, sid] of [\n ['granted', l.action.outcomes.granted],\n ['denied', l.action.outcomes.denied],\n ['blocked', l.action.outcomes.blocked],\n ] as const) {\n if (sid === OS_PERMISSION_OUTCOME_END) {\n // Terminal: no jump target to validate.\n } else if (sid === OS_PERMISSION_OUTCOME_CONTINUE) {\n const def = screen.next.default;\n if (def != null && !jumpTargets.has(def)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `screen \"${screen.id}\" request_os_permission outcomes.${label} uses default next (continue) but screen.next.default \"${def}\" is not a valid target`,\n path: ['screens', screenIdx],\n });\n }\n } else if (!jumpTargets.has(sid)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `screen \"${screen.id}\" request_os_permission outcomes.${label} \"${sid}\" not found`,\n path: ['screens', screenIdx],\n });\n }\n }\n }\n if (l.kind === 'back_button' && l.fallbackScreenId && !screenIds.has(l.fallbackScreenId)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `screen \"${screen.id}\" back_button fallback \"${l.fallbackScreenId}\" not found`,\n path: ['screens', screenIdx],\n });\n }\n if (\n l.kind === 'button' &&\n l.action.kind === 'go_back_one_screen' &&\n l.action.fallbackScreenId &&\n !screenIds.has(l.action.fallbackScreenId)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `screen \"${screen.id}\" button go_back_one_screen fallback \"${l.action.fallbackScreenId}\" not found`,\n path: ['screens', screenIdx],\n });\n }\n if (l.kind === 'text_input') {\n const minL = l.minLength;\n const maxL = l.maxLength;\n if (minL !== undefined && maxL !== undefined && minL > maxL) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `text_input \"${l.id}\" minLength cannot exceed maxLength`,\n path: ['screens', screenIdx],\n });\n }\n }\n if (l.kind === 'scale_input') {\n if (l.min >= l.max) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `scale_input \"${l.id}\" max must be greater than min`,\n path: ['screens', screenIdx],\n });\n }\n const step = l.step ?? 1;\n if (l.defaultValue !== undefined) {\n if (l.defaultValue < l.min || l.defaultValue > l.max) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `scale_input \"${l.id}\" defaultValue must be between min and max`,\n path: ['screens', screenIdx],\n });\n } else {\n const rem = (l.defaultValue - l.min) / step;\n if (Math.abs(rem - Math.round(rem)) > 1e-6) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `scale_input \"${l.id}\" defaultValue must align with min and step`,\n path: ['screens', screenIdx],\n });\n }\n }\n }\n }\n });\n\n if (screen.animations) {\n const clipIds = new Set<string>();\n for (const clip of screen.animations) {\n if (clipIds.has(clip.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `screen \"${screen.id}\" has duplicate clip id \"${clip.id}\"`,\n path: ['screens', screenIdx, 'animations'],\n });\n }\n clipIds.add(clip.id);\n if (!layerIdsForScreen.has(clip.targetLayerId)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `clip \"${clip.id}\" targets layer \"${clip.targetLayerId}\" not on screen \"${screen.id}\"`,\n path: ['screens', screenIdx, 'animations'],\n });\n }\n }\n }\n });\n};\n","import { z } from 'zod';\nimport { collectDecisionFieldKeysFromNode } from '../decisions.js';\nimport type { FlowManifestObjectBase } from './flowManifestObjectBaseSchema.js';\nimport { buildManifestJumpTargets, refineManifestGraph } from './refineManifestGraph.js';\nimport { refineManifestScreens } from './refineManifestScreens.js';\n\nexport const refineFlowManifest = (\n manifest: FlowManifestObjectBase,\n ctx: z.RefinementCtx,\n): void => {\n const jumpTargets = buildManifestJumpTargets(manifest);\n const { screenIds } = refineManifestGraph(manifest, ctx, jumpTargets);\n const allFieldKeys = new Map<string, string>();\n refineManifestScreens(manifest, ctx, jumpTargets, screenIds, allFieldKeys);\n\n manifest.decisionNodes.forEach((dn, di) => {\n for (const fk of collectDecisionFieldKeysFromNode(dn)) {\n if (!allFieldKeys.has(fk)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `decision \"${dn.id}\" references unknown fieldKey \"${fk}\"`,\n path: ['decisionNodes', di, 'cases'],\n });\n }\n }\n });\n\n if (manifest.locales.length > 0 && !manifest.locales.includes(manifest.defaultLocale)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `defaultLocale \"${manifest.defaultLocale}\" must be in locales`,\n path: ['defaultLocale'],\n });\n }\n};\n","import { z } from 'zod';\nimport { FlowManifestObjectBaseSchema } from './flowManifestObjectBaseSchema.js';\nimport { refineFlowManifest } from './refineFlowManifest.js';\n\nexport const FlowManifestObjectSchema = FlowManifestObjectBaseSchema.superRefine(refineFlowManifest);\n\n/**\n * Public schema. Re-exports the validated object schema directly; legacy\n * shapes (e.g. pre-2026 button `label` → `children`) are migrated by\n * `migrateLegacyManifest` which callers can wrap around any input\n * before parsing. We avoid `z.preprocess` here because it widens the\n * inferred input type to `unknown` and breaks downstream `z.infer`\n * consumers (FlowDraftSchema, sdk.ts, etc.).\n */\nexport const FlowManifestSchema = FlowManifestObjectSchema;\n\nexport type FlowManifest = z.output<typeof FlowManifestObjectSchema>;\n","import { z } from 'zod';\n\n/** Dashboard-only identifiers for server-generated onboarding manifests. */\nexport const FLOW_TEMPLATE_IDS = [\n 'stories',\n 'language_learning',\n 'fitness',\n 'win_back',\n 'feedback',\n 'word_learning',\n 'journal_onboarding',\n] as const;\n\nexport type FlowTemplateId = (typeof FLOW_TEMPLATE_IDS)[number];\n\nexport const FlowTemplateIdSchema = z.enum(FLOW_TEMPLATE_IDS);\n\n/** Dashboard template-picker icon id (maps to Lucide in FlowTemplatePicker UI only; not manifest icon layers). */\nexport type FlowTemplateCatalogIcon =\n | 'circle-play'\n | 'languages'\n | 'sparkles'\n | 'activity'\n | 'gift'\n | 'message-square'\n | 'book-open'\n | 'notebook-pen';\n\nexport const FLOW_TEMPLATE_CATEGORIES = ['engagement', 'onboarding'] as const;\n\nexport type FlowTemplateCategory = (typeof FLOW_TEMPLATE_CATEGORIES)[number];\n\nexport const FLOW_TEMPLATE_CATEGORY_LABELS: Record<FlowTemplateCategory, string> = {\n engagement: 'Engagement',\n onboarding: 'Onboarding',\n};\n\nexport type FlowTemplateCatalogEntry = {\n id: FlowTemplateId;\n title: string;\n description: string;\n icon: FlowTemplateCatalogIcon;\n category: FlowTemplateCategory;\n};\n\n/** Compact metadata for dashboard template picker (no manifest payloads). */\nexport const FLOW_TEMPLATE_CATALOG: FlowTemplateCatalogEntry[] = [\n {\n id: 'stories',\n title: 'Stories',\n description: 'Full-screen video segments with progress bars and tap-to-advance.',\n icon: 'circle-play',\n category: 'engagement',\n },\n {\n id: 'language_learning',\n title: 'Language learning',\n description:\n 'Duolingo-style onboarding: language pick, daily goal, name, and profile setup with progress bars.',\n icon: 'languages',\n category: 'onboarding',\n },\n {\n id: 'fitness',\n title: 'Fitness & health',\n description:\n 'Fitness & health onboarding: Apple Health connect, strain/recovery/sleep education, and personalization quiz.',\n icon: 'activity',\n category: 'onboarding',\n },\n {\n id: 'win_back',\n title: 'Win-back',\n description:\n 'Churn flow: retention, cancel survey, discount offer, and confirmation (5 screens).',\n icon: 'gift',\n category: 'engagement',\n },\n {\n id: 'feedback',\n title: 'Feedback',\n description:\n 'In-app survey: satisfaction scale, topic picker, open feedback, and NPS — inspired by Craft and TextNow.',\n icon: 'message-square',\n category: 'engagement',\n },\n {\n id: 'word_learning',\n title: 'Word learning',\n description:\n 'Word-learning onboarding: personalization quiz, notifications, themes, goals, and topics (15 screens).',\n icon: 'book-open',\n category: 'onboarding',\n },\n {\n id: 'journal_onboarding',\n title: 'Journal onboarding',\n description:\n 'Journaly onboarding: self-discovery, name quiz, goals, privacy, journey cards, and attribution (8 screens).',\n icon: 'notebook-pen',\n category: 'onboarding',\n },\n];\n","import { z } from 'zod';\nimport { MAX_IMAGE_BYTES } from '../constants/index.js';\nimport { FlowManifestSchema } from '../manifest.js';\nimport { FlowTemplateIdSchema } from '../flowTemplates.js';\nimport { TagsSchema, TagsSchemaOptional } from './tags.js';\n\n/* ----- Flow ----- */\nexport const FlowStatusSchema = z.enum(['draft', 'published_test', 'published_live']);\nexport type FlowStatus = z.infer<typeof FlowStatusSchema>;\n\n/**\n * Compact representation of a flow's canvas, suitable for rendering a\n * thumbnail of the React Flow graph in list views without paying the cost\n * of fetching the full manifest.\n */\nexport const FlowPreviewSchema = z.object({\n nodes: z.array(\n z.object({\n id: z.string(),\n x: z.number(),\n y: z.number(),\n isEntry: z.boolean().optional(),\n }),\n ),\n edges: z.array(\n z.object({\n source: z.string(),\n target: z.string(),\n branching: z.boolean().optional(),\n }),\n ),\n});\nexport type FlowPreview = z.infer<typeof FlowPreviewSchema>;\n\nexport const FlowSummarySchema = z.object({\n id: z.string().uuid(),\n appId: z.string().uuid(),\n name: z.string().min(1),\n status: FlowStatusSchema,\n archivedAt: z.string().datetime().nullable().optional(),\n updatedAt: z.string().datetime(),\n createdAt: z.string().datetime(),\n /** Dashboard user who created the flow (null for legacy rows). */\n createdByUserId: z.string().uuid().nullable().optional(),\n /** Number of published immutable versions (each publish appends one). */\n versionCount: z.number().int().nonnegative(),\n screenCount: z.number().int().nonnegative().optional(),\n preview: FlowPreviewSchema.optional(),\n tags: z.array(z.string()),\n});\nexport type FlowSummary = z.infer<typeof FlowSummarySchema>;\n\n/** Max length for POST …/flows `aiPrompt` (dashboard AI flow expansion). */\nexport const CREATE_FLOW_AI_PROMPT_MAX = 8000;\n\nexport const AiFlowPromptSchema = z\n .string()\n .trim()\n .min(1)\n .max(CREATE_FLOW_AI_PROMPT_MAX);\n\nexport const CreateFlowRequestSchema = z\n .object({\n name: z.string().min(1).max(100),\n tags: TagsSchemaOptional,\n /** When set, seeds the draft with a multi-screen onboarding manifest. Omit for a blank flow. */\n flowTemplateId: FlowTemplateIdSchema.optional(),\n /** When set, starts multi-step AI expansion after seeding a blank manifest. Mutually exclusive with `flowTemplateId`. */\n aiPrompt: AiFlowPromptSchema.optional(),\n /** Imported manifest JSON from the rheo skill flow-import workflow. Mutually exclusive with template and AI generation. */\n importManifest: z.unknown().optional(),\n })\n .superRefine((data, ctx) => {\n const selected = [data.flowTemplateId, data.aiPrompt, data.importManifest].filter(\n (v) => v !== undefined,\n );\n if (selected.length > 1) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Pick only one start mode: catalog template, Generate with AI, or Import manifest.',\n path: ['importManifest'],\n });\n }\n });\n\nexport const FlowAiGenerationRunStatusSchema = z.enum([\n 'queued',\n 'running',\n 'completed',\n 'failed',\n]);\nexport type FlowAiGenerationRunStatus = z.infer<typeof FlowAiGenerationRunStatusSchema>;\n\nexport const FlowAiGenerationRunStatusResponseSchema = z.object({\n id: z.string().uuid(),\n flowId: z.string().uuid(),\n status: FlowAiGenerationRunStatusSchema,\n stepIndex: z.number().int().nonnegative(),\n lastError: z.string().nullable().optional(),\n});\n\nexport type FlowAiGenerationRunStatusResponse = z.infer<\n typeof FlowAiGenerationRunStatusResponseSchema\n>;\n\nexport const StartAiFlowGenerationRequestSchema = z.object({\n aiPrompt: AiFlowPromptSchema,\n});\nexport type StartAiFlowGenerationRequest = z.infer<typeof StartAiFlowGenerationRequestSchema>;\n\n/** Rheo Agent chat image MIME types (vision-safe raster formats). */\nexport const RHEO_AGENT_IMAGE_MIME_TYPES = ['image/png', 'image/jpeg', 'image/webp'] as const;\nexport type RheoAgentImageMimeType = (typeof RHEO_AGENT_IMAGE_MIME_TYPES)[number];\nexport const RHEO_AGENT_MAX_IMAGE_ATTACHMENTS = 4;\n\nconst estimateBase64DecodedBytes = (dataBase64: string): number => {\n const len = dataBase64.length;\n const padding = dataBase64.endsWith('==') ? 2 : dataBase64.endsWith('=') ? 1 : 0;\n return Math.max(0, Math.floor((len * 3) / 4) - padding);\n};\n\nexport const RheoAgentImageAttachmentSchema = z\n .object({\n mimeType: z.enum(RHEO_AGENT_IMAGE_MIME_TYPES),\n dataBase64: z.string().min(1),\n })\n .superRefine((attachment, ctx) => {\n const bytes = estimateBase64DecodedBytes(attachment.dataBase64);\n if (bytes > MAX_IMAGE_BYTES) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Image exceeds 5 MB limit',\n });\n }\n });\nexport type RheoAgentImageAttachment = z.infer<typeof RheoAgentImageAttachmentSchema>;\n\nexport const RheoAgentMessageSchema = z\n .object({\n role: z.enum(['user', 'assistant']),\n content: z.string(),\n attachments: z.array(RheoAgentImageAttachmentSchema).max(RHEO_AGENT_MAX_IMAGE_ATTACHMENTS).optional(),\n })\n .superRefine((message, ctx) => {\n if (message.role === 'assistant' && message.attachments?.length) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Assistant messages cannot include attachments',\n });\n }\n if (\n message.role === 'user' &&\n !message.content.trim() &&\n !(message.attachments && message.attachments.length > 0)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'User message must include text or at least one image',\n });\n }\n });\nexport type RheoAgentMessage = z.infer<typeof RheoAgentMessageSchema>;\n\nexport const RheoAgentSelectionSchema = z\n .object({\n screenId: z.string().optional(),\n screenIds: z.array(z.string()).min(1).optional(),\n layerId: z.string().optional(),\n decisionId: z.string().optional(),\n decisionIds: z.array(z.string()).min(1).optional(),\n externalSurfaceId: z.string().optional(),\n })\n .optional();\nexport type RheoAgentSelection = z.infer<typeof RheoAgentSelectionSchema>;\n\nexport const RheoAgentChatRequestSchema = z.object({\n messages: z.array(RheoAgentMessageSchema).min(1),\n selection: RheoAgentSelectionSchema,\n});\nexport type RheoAgentChatRequest = z.infer<typeof RheoAgentChatRequestSchema>;\n\nexport const RheoAgentTextDeltaEventSchema = z.object({\n type: z.literal('text-delta'),\n delta: z.string(),\n});\nexport type RheoAgentTextDeltaEvent = z.infer<typeof RheoAgentTextDeltaEventSchema>;\n\n/** Emitted once the reply prose ends and the model starts producing the manifest patch. */\nexport const RheoAgentApplyingManifestEventSchema = z.object({\n type: z.literal('applying-manifest'),\n});\nexport type RheoAgentApplyingManifestEvent = z.infer<typeof RheoAgentApplyingManifestEventSchema>;\n\nexport const RheoAgentManifestEventSchema = z.object({\n type: z.literal('manifest'),\n manifest: FlowManifestSchema,\n});\nexport type RheoAgentManifestEvent = z.infer<typeof RheoAgentManifestEventSchema>;\n\nexport const RheoAgentErrorEventSchema = z.object({\n type: z.literal('error'),\n message: z.string(),\n});\nexport type RheoAgentErrorEvent = z.infer<typeof RheoAgentErrorEventSchema>;\n\n/** Terminal signal — always the last event on the stream. */\nexport const RheoAgentDoneEventSchema = z.object({\n type: z.literal('done'),\n ok: z.boolean(),\n});\nexport type RheoAgentDoneEvent = z.infer<typeof RheoAgentDoneEventSchema>;\n\n/** Debug-only attempt progress (emitted when API `AI_RHEO_AGENT_DEBUG` is enabled). */\nexport const RheoAgentAttemptEventSchema = z.object({\n type: z.literal('attempt'),\n /** 1-based attempt index shown in the builder debug UI. */\n attempt: z.number().int().min(1),\n maxAttempts: z.number().int().min(1),\n phase: z.enum(['stream', 'repair']),\n});\nexport type RheoAgentAttemptEvent = z.infer<typeof RheoAgentAttemptEventSchema>;\n\nexport const RheoAgentStreamEventSchema = z.discriminatedUnion('type', [\n RheoAgentTextDeltaEventSchema,\n RheoAgentApplyingManifestEventSchema,\n RheoAgentManifestEventSchema,\n RheoAgentErrorEventSchema,\n RheoAgentDoneEventSchema,\n RheoAgentAttemptEventSchema,\n]);\nexport type RheoAgentStreamEvent = z.infer<typeof RheoAgentStreamEventSchema>;\n\nexport const CreateFlowResponseSchema = z.object({\n flow: FlowSummarySchema,\n /** Present when `CreateFlowRequest` included `aiPrompt`. */\n generationRunId: z.string().uuid().optional(),\n});\nexport type CreateFlowResponse = z.infer<typeof CreateFlowResponseSchema>;\n\nexport const UpdateFlowRequestSchema = z\n .object({\n name: z.string().min(1).max(100).optional(),\n tags: TagsSchema.optional(),\n })\n .refine((o) => o.name !== undefined || o.tags !== undefined, {\n message: 'Provide at least one of name or tags',\n });\n\nexport const DuplicateFlowRequestSchema = z.object({\n name: z.string().min(1).max(100).optional(),\n targetAppId: z.string().uuid().optional(),\n});\nexport type DuplicateFlowRequest = z.infer<typeof DuplicateFlowRequestSchema>;\n\n/* ----- Draft ----- */\nexport const FlowDraftSchema = z.object({\n flowId: z.string().uuid(),\n name: z.string().min(1),\n tags: z.array(z.string()),\n manifest: FlowManifestSchema,\n autosaveVersion: z.number().int().nonnegative(),\n updatedAt: z.string().datetime(),\n});\nexport type FlowDraft = z.infer<typeof FlowDraftSchema>;\n\nexport const AutosaveDraftRequestSchema = z.object({\n manifest: FlowManifestSchema,\n autosaveVersion: z.number().int().nonnegative(),\n});\nexport type AutosaveDraftRequest = z.infer<typeof AutosaveDraftRequestSchema>;\n\nexport const AutosaveDraftResponseSchema = z.object({\n flowId: z.string().uuid(),\n autosaveVersion: z.number().int().nonnegative(),\n updatedAt: z.string().datetime(),\n});\nexport type AutosaveDraftResponse = z.infer<typeof AutosaveDraftResponseSchema>;\n\n/* ----- Publish ----- */\n/**\n * Publishing produces an immutable version per flow. The optional `label`\n * is a free-text human-readable name supplied at publish time (e.g.\n * \"Winter promo\"); the canonical UI label remains \"v{versionNumber}\".\n * Channel assignment happens as a follow-up step (see\n * ChannelAssignmentRequestSchema), which is why this request has no\n * environment field.\n */\nexport const PublishRequestSchema = z.object({\n label: z.string().trim().max(120).optional(),\n});\nexport type PublishRequest = z.infer<typeof PublishRequestSchema>;\n\nexport const PublishValidationErrorSchema = z.object({\n stepId: z.string().nullable().optional(),\n path: z.array(z.union([z.string(), z.number()])).optional(),\n message: z.string(),\n code: z.string(),\n});\nexport type PublishValidationError = z.infer<typeof PublishValidationErrorSchema>;\n\n/* ----- Versions ----- */\nexport const FlowVersionSchema = z.object({\n id: z.string().uuid(),\n flowId: z.string().uuid(),\n versionNumber: z.number().int().positive(),\n label: z.string().nullable().optional(),\n createdAt: z.string().datetime(),\n publishedByUserId: z.string().uuid().nullable().optional(),\n});\nexport type FlowVersionSummary = z.infer<typeof FlowVersionSchema>;\n\nexport const FlowVersionWithManifestSchema = FlowVersionSchema.extend({\n manifest: FlowManifestSchema,\n});\nexport type FlowVersionWithManifest = z.infer<typeof FlowVersionWithManifestSchema>;\n\nexport const PublishResponseSchema = z.object({\n version: FlowVersionSchema,\n});\nexport type PublishResponse = z.infer<typeof PublishResponseSchema>;\n\nexport const ListVersionsResponseSchema = z.object({\n items: z.array(FlowVersionSchema),\n});\nexport type ListVersionsResponse = z.infer<typeof ListVersionsResponseSchema>;\n\n","import { z } from 'zod';\nimport { ENVIRONMENTS } from '../constants/index.js';\n\n\n/* ----- Channels ----- */\nexport const ChannelAssignmentKindSchema = z.enum(['direct', 'experiment']);\nexport type ChannelAssignmentKind = z.infer<typeof ChannelAssignmentKindSchema>;\n\nexport const ChannelDirectAssignmentSchema = z.object({\n kind: z.literal('direct'),\n flowId: z.string().uuid(),\n versionId: z.string().uuid(),\n});\nexport const ChannelExperimentAssignmentSchema = z.object({\n kind: z.literal('experiment'),\n experimentId: z.string().uuid(),\n});\nexport const ChannelAssignmentRequestSchema = z.discriminatedUnion('kind', [\n ChannelDirectAssignmentSchema,\n ChannelExperimentAssignmentSchema,\n]);\nexport type ChannelAssignmentRequest = z.infer<typeof ChannelAssignmentRequestSchema>;\n\n/**\n * A user-created channel. Multiple channels per environment are allowed\n * so a single app can serve different flows to different surfaces (e.g.\n * onboarding vs. settings) at the same time. The SDK identifies the\n * target channel via `publicId` sent in the X-Rheo-Channel header.\n */\nexport const ChannelSchema = z.object({\n id: z.string().uuid(),\n publicId: z.string(),\n appId: z.string().uuid(),\n environment: z.enum(ENVIRONMENTS),\n name: z.string(),\n archivedAt: z.string().datetime().nullable(),\n createdAt: z.string().datetime(),\n assignmentKind: ChannelAssignmentKindSchema.nullable(),\n assignmentVersion: z.number().int().nonnegative(),\n assignmentUpdatedAt: z.string().datetime().nullable(),\n pinned: z\n .object({\n flowId: z.string().uuid(),\n flowName: z.string(),\n versionId: z.string().uuid(),\n versionNumber: z.number().int().positive(),\n versionLabel: z.string().nullable().optional(),\n })\n .nullable(),\n experimentId: z.string().uuid().nullable(),\n});\nexport type Channel = z.infer<typeof ChannelSchema>;\n\nexport const ListChannelsResponseSchema = z.object({\n items: z.array(ChannelSchema),\n});\nexport type ListChannelsResponse = z.infer<typeof ListChannelsResponseSchema>;\n\nexport const CreateChannelRequestSchema = z.object({\n name: z.string().min(1).max(64),\n environment: z.enum(ENVIRONMENTS),\n});\nexport type CreateChannelRequest = z.infer<typeof CreateChannelRequestSchema>;\n\nexport const RenameChannelRequestSchema = z.object({\n name: z.string().min(1).max(64),\n});\nexport type RenameChannelRequest = z.infer<typeof RenameChannelRequestSchema>;\n\n/**\n * Archive is destructive enough to require a typed confirmation: the\n * user types the channel's exact name to proceed. Mirrors the app-delete\n * confirmation pattern.\n */\nexport const ArchiveChannelRequestSchema = z.object({\n confirmName: z.string().min(1),\n});\nexport type ArchiveChannelRequest = z.infer<typeof ArchiveChannelRequestSchema>;\n\n/**\n * Unarchive may report that the previously-stored assignment is no\n * longer valid (e.g. its version was deleted while archived). When\n * `restored` is false the channel comes back as unassigned and the UI\n * should surface `restoreWarning` so the user can re-pin manually.\n */\nexport const UnarchiveChannelResponseSchema = z.object({\n channel: ChannelSchema,\n restored: z.boolean(),\n restoreWarning: z.string().nullable(),\n});\nexport type UnarchiveChannelResponse = z.infer<typeof UnarchiveChannelResponseSchema>;\n\n","import { z } from 'zod';\nimport { ENVIRONMENTS } from '../constants/index.js';\n\nexport const ChannelEventTypeSchema = z.enum([\n 'channel_created',\n 'channel_renamed',\n 'channel_archived',\n 'channel_unarchived',\n 'direct_pinned',\n 'experiment_assigned',\n 'assignment_cleared',\n 'experiment_stopped_repinned',\n 'experiment_winner_promoted',\n 'rollout_requested',\n 'rollout_rejected',\n 'rollout_cancelled',\n]);\nexport type ChannelEventType = z.infer<typeof ChannelEventTypeSchema>;\n\nexport const ChannelHistoryFlowVersionSnapshotSchema = z.object({\n flowId: z.string().uuid(),\n flowName: z.string(),\n versionId: z.string().uuid(),\n versionNumber: z.number().int().positive(),\n versionLabel: z.string().nullable().optional(),\n});\nexport type ChannelHistoryFlowVersionSnapshot = z.infer<\n typeof ChannelHistoryFlowVersionSnapshotSchema\n>;\n\nexport const ChannelHistoryExperimentSnapshotSchema = z.object({\n experimentId: z.string().uuid(),\n experimentName: z.string(),\n variantCount: z.number().int().nonnegative().optional(),\n});\nexport type ChannelHistoryExperimentSnapshot = z.infer<\n typeof ChannelHistoryExperimentSnapshotSchema\n>;\n\nexport const ChannelHistoryPreviousAssignmentSchema = z.object({\n kind: z.enum(['direct', 'experiment']).nullable(),\n pinned: ChannelHistoryFlowVersionSnapshotSchema.nullable().optional(),\n experiment: ChannelHistoryExperimentSnapshotSchema.nullable().optional(),\n});\nexport type ChannelHistoryPreviousAssignment = z.infer<\n typeof ChannelHistoryPreviousAssignmentSchema\n>;\n\nexport const ChannelCreatedPayloadSchema = z.object({\n type: z.literal('channel_created'),\n environment: z.enum(ENVIRONMENTS),\n name: z.string(),\n});\n\nexport const ChannelRenamedPayloadSchema = z.object({\n type: z.literal('channel_renamed'),\n previousName: z.string(),\n newName: z.string(),\n});\n\nexport const ChannelArchivedPayloadSchema = z.object({\n type: z.literal('channel_archived'),\n name: z.string(),\n});\n\nexport const ChannelUnarchivedPayloadSchema = z.object({\n type: z.literal('channel_unarchived'),\n assignmentRestored: z.boolean(),\n restoreWarning: z.string().nullable(),\n assignmentCleared: z.boolean().optional(),\n});\n\nexport const DirectPinnedPayloadSchema = z.object({\n type: z.literal('direct_pinned'),\n flowId: z.string().uuid(),\n flowName: z.string(),\n versionId: z.string().uuid(),\n versionNumber: z.number().int().positive(),\n versionLabel: z.string().nullable().optional(),\n source: z.enum(['direct', 'rollout']),\n rolloutRequestId: z.string().uuid().optional(),\n previous: ChannelHistoryPreviousAssignmentSchema.optional(),\n});\n\nexport const ExperimentAssignedPayloadSchema = z.object({\n type: z.literal('experiment_assigned'),\n experimentId: z.string().uuid(),\n experimentName: z.string(),\n variantCount: z.number().int().nonnegative(),\n previous: ChannelHistoryPreviousAssignmentSchema.optional(),\n});\n\nexport const AssignmentClearedPayloadSchema = z.object({\n type: z.literal('assignment_cleared'),\n previous: ChannelHistoryPreviousAssignmentSchema,\n reason: z.enum(['manual', 'unarchive_restore_failed']).optional(),\n});\n\nexport const ExperimentStoppedRepinnedPayloadSchema = z.object({\n type: z.literal('experiment_stopped_repinned'),\n experimentId: z.string().uuid(),\n experimentName: z.string(),\n pinned: ChannelHistoryFlowVersionSnapshotSchema,\n});\n\nexport const ExperimentWinnerPromotedPayloadSchema = z.object({\n type: z.literal('experiment_winner_promoted'),\n experimentId: z.string().uuid(),\n experimentName: z.string(),\n pinned: ChannelHistoryFlowVersionSnapshotSchema,\n wasPendingDecision: z.boolean(),\n});\n\nexport const RolloutFlowPayloadSchema = z.object({\n type: z.enum(['rollout_requested', 'rollout_rejected', 'rollout_cancelled']),\n rolloutRequestId: z.string().uuid(),\n flow: ChannelHistoryFlowVersionSnapshotSchema,\n});\n\nexport const ChannelEventPayloadSchema = z.discriminatedUnion('type', [\n ChannelCreatedPayloadSchema,\n ChannelRenamedPayloadSchema,\n ChannelArchivedPayloadSchema,\n ChannelUnarchivedPayloadSchema,\n DirectPinnedPayloadSchema,\n ExperimentAssignedPayloadSchema,\n AssignmentClearedPayloadSchema,\n ExperimentStoppedRepinnedPayloadSchema,\n ExperimentWinnerPromotedPayloadSchema,\n RolloutFlowPayloadSchema,\n]);\nexport type ChannelEventPayload = z.infer<typeof ChannelEventPayloadSchema>;\n\nexport const ChannelEventSchema = z.object({\n id: z.string().uuid(),\n type: ChannelEventTypeSchema,\n actorUserId: z.string().uuid().nullable(),\n actorLabel: z.string().nullable(),\n occurredAt: z.string().datetime(),\n payload: z.record(z.unknown()),\n});\nexport type ChannelEvent = z.infer<typeof ChannelEventSchema>;\n\nexport const ListChannelHistoryResponseSchema = z.object({\n items: z.array(ChannelEventSchema),\n total: z.number().int().nonnegative(),\n});\nexport type ListChannelHistoryResponse = z.infer<typeof ListChannelHistoryResponseSchema>;\n","import { z } from 'zod';\nimport { ENVIRONMENTS } from '../constants/index.js';\n\n\n/* ----- Rollout approvals ----- */\nexport const RolloutRequestStatusSchema = z.enum([\n 'pending',\n 'approved',\n 'rejected',\n 'cancelled',\n]);\nexport type RolloutRequestStatus = z.infer<typeof RolloutRequestStatusSchema>;\n\nexport const RolloutCommentKindSchema = z.enum(['comment', 'system']);\nexport type RolloutCommentKind = z.infer<typeof RolloutCommentKindSchema>;\n\nexport const CreateRolloutRequestsBodySchema = z.object({\n appId: z.string().uuid(),\n versionId: z.string().uuid(),\n channelIds: z.array(z.string().uuid()).min(1),\n /** PR-style summary: what changed, why, risk notes (first activity comment). */\n description: z.string().trim().min(1).max(8000),\n});\nexport type CreateRolloutRequestsBody = z.infer<typeof CreateRolloutRequestsBodySchema>;\n\nexport const RolloutPolicyResponseSchema = z.object({\n enabled: z.boolean(),\n environments: z.array(z.enum(ENVIRONMENTS)),\n approverUserIds: z.array(z.string().uuid()),\n});\nexport type RolloutPolicyResponse = z.infer<typeof RolloutPolicyResponseSchema>;\n\nexport const PatchRolloutPolicySchema = z.object({\n enabled: z.boolean(),\n environments: z.array(z.enum(ENVIRONMENTS)),\n approverUserIds: z.array(z.string().uuid()),\n});\nexport type PatchRolloutPolicy = z.infer<typeof PatchRolloutPolicySchema>;\n\nexport const RolloutCommentMentionUserSchema = z.object({\n userId: z.string().uuid(),\n label: z.string(),\n});\nexport type RolloutCommentMentionUser = z.infer<typeof RolloutCommentMentionUserSchema>;\n\nexport const RolloutRequestCommentSchema = z.object({\n id: z.string().uuid(),\n authorUserId: z.string().uuid(),\n body: z.string(),\n kind: RolloutCommentKindSchema,\n createdAt: z.string().datetime(),\n mentions: z.array(RolloutCommentMentionUserSchema),\n});\nexport type RolloutRequestComment = z.infer<typeof RolloutRequestCommentSchema>;\n\nexport const RolloutRequestSummarySchema = z.object({\n id: z.string().uuid(),\n orgId: z.string().uuid(),\n channelId: z.string().uuid(),\n channelName: z.string(),\n channelPublicId: z.string(),\n channelEnvironment: z.enum(ENVIRONMENTS),\n appId: z.string().uuid(),\n appName: z.string(),\n flowId: z.string().uuid(),\n flowName: z.string(),\n flowVersionId: z.string().uuid(),\n versionNumber: z.number().int().positive(),\n versionLabel: z.string().nullable().optional(),\n requestedByUserId: z.string().uuid(),\n requestedByEmail: z.string(),\n /** Display: full name, else username, else email. */\n requestedByLabel: z.string(),\n status: RolloutRequestStatusSchema,\n decidedByUserId: z.string().uuid().nullable().optional(),\n decidedAt: z.string().datetime().nullable().optional(),\n createdAt: z.string().datetime(),\n});\nexport type RolloutRequestSummary = z.infer<typeof RolloutRequestSummarySchema>;\n\nexport const RolloutRequestDetailSchema = RolloutRequestSummarySchema.extend({\n comments: z.array(RolloutRequestCommentSchema),\n});\nexport type RolloutRequestDetail = z.infer<typeof RolloutRequestDetailSchema>;\n\nexport const CreateRolloutRequestsResponseSchema = z.object({\n items: z.array(\n z.object({\n id: z.string().uuid(),\n channelId: z.string().uuid(),\n }),\n ),\n});\nexport type CreateRolloutRequestsResponse = z.infer<typeof CreateRolloutRequestsResponseSchema>;\n\nexport const ListRolloutRequestsResponseSchema = z.object({\n items: z.array(RolloutRequestSummarySchema),\n total: z.number().int().nonnegative(),\n});\nexport type ListRolloutRequestsResponse = z.infer<typeof ListRolloutRequestsResponseSchema>;\n\nexport const RejectRolloutRequestSchema = z.object({\n message: z.string().trim().max(4000).optional(),\n});\nexport type RejectRolloutRequest = z.infer<typeof RejectRolloutRequestSchema>;\n\n/** Optional closing note on approve (merge-commit style). */\nexport const ApproveRolloutRequestSchema = z.object({\n message: z.string().trim().max(4000).optional(),\n});\nexport type ApproveRolloutRequest = z.infer<typeof ApproveRolloutRequestSchema>;\n\nexport const AddRolloutCommentSchema = z.object({\n body: z.string().trim().min(1).max(8000),\n mentionedUserIds: z.array(z.string().uuid()).max(20).optional().default([]),\n});\nexport type AddRolloutComment = z.infer<typeof AddRolloutCommentSchema>;\n\nexport const AddRolloutCommentResponseSchema = z.object({\n comment: RolloutRequestCommentSchema,\n});\nexport type AddRolloutCommentResponse = z.infer<typeof AddRolloutCommentResponseSchema>;\n\n","import { z } from 'zod';\n\n/** Default canvas comment pin seeded when a flow is created from a flow template. */\nexport const FlowTemplateDefaultCommentSchema = z.object({\n positionX: z.number().finite(),\n positionY: z.number().finite(),\n body: z.string().trim().min(1).max(8000),\n});\nexport type FlowTemplateDefaultComment = z.infer<typeof FlowTemplateDefaultCommentSchema>;\n\n/** Author label shown for threads seeded from a flow template. */\nexport const TEMPLATE_COMMENT_AUTHOR_LABEL = 'Template';\n\nexport const FlowCommentThreadSourceSchema = z.enum(['user', 'template']);\nexport type FlowCommentThreadSource = z.infer<typeof FlowCommentThreadSourceSchema>;\n","import { z } from 'zod';\nimport { DecisionNodeIdSchema } from '../decisions.js';\nimport { ExternalSurfaceNodeIdSchema } from '../externalSurfaces.js';\nimport { LayerIdSchema, ScreenIdSchema } from '../layers/ids.js';\nimport { FlowCommentThreadSourceSchema } from '../flowTemplateComments.js';\nimport { RolloutCommentMentionUserSchema } from './rollouts.js';\n\n/* ----- Flow canvas comments (builder pins, flow-scoped threads) ----- */\n\nexport const FlowCommentFilterSchema = z.enum(['active', 'archived', 'all']);\nexport type FlowCommentFilter = z.infer<typeof FlowCommentFilterSchema>;\n\nexport const CreateFlowCommentThreadRequestSchema = z\n .object({\n positionX: z.number().finite(),\n positionY: z.number().finite(),\n body: z.string().trim().min(1).max(8000),\n mentionedUserIds: z.array(z.string().uuid()).max(20).optional().default([]),\n anchorScreenId: ScreenIdSchema.optional(),\n anchorLayerId: LayerIdSchema.optional(),\n anchorDecisionNodeId: DecisionNodeIdSchema.optional(),\n anchorExternalSurfaceNodeId: ExternalSurfaceNodeIdSchema.optional(),\n })\n .refine((d) => !d.anchorLayerId || !!d.anchorScreenId, {\n message: 'anchorLayerId requires anchorScreenId',\n path: ['anchorLayerId'],\n })\n .refine(\n (d) => {\n const n =\n (d.anchorScreenId ? 1 : 0) +\n (d.anchorDecisionNodeId ? 1 : 0) +\n (d.anchorExternalSurfaceNodeId ? 1 : 0);\n return n <= 1;\n },\n {\n message: 'only one of anchorScreenId, anchorDecisionNodeId, or anchorExternalSurfaceNodeId',\n path: ['anchorScreenId'],\n },\n );\nexport type CreateFlowCommentThreadRequest = z.infer<typeof CreateFlowCommentThreadRequestSchema>;\n\nexport const AddFlowCommentMessageRequestSchema = z.object({\n body: z.string().trim().min(1).max(8000),\n parentMessageId: z.string().uuid().nullable().optional(),\n mentionedUserIds: z.array(z.string().uuid()).max(20).optional().default([]),\n});\nexport type AddFlowCommentMessageRequest = z.infer<typeof AddFlowCommentMessageRequestSchema>;\n\nexport const FlowCommentMessageSchema = z.object({\n id: z.string().uuid(),\n threadId: z.string().uuid(),\n authorUserId: z.string().uuid(),\n body: z.string(),\n parentMessageId: z.string().uuid().nullable(),\n createdAt: z.string().datetime(),\n mentions: z.array(RolloutCommentMentionUserSchema),\n});\nexport type FlowCommentMessage = z.infer<typeof FlowCommentMessageSchema>;\n\nexport const FlowCommentThreadSummarySchema = z.object({\n id: z.string().uuid(),\n flowId: z.string().uuid(),\n positionX: z.number(),\n positionY: z.number(),\n anchorScreenId: z.string().nullable(),\n anchorLayerId: z.string().nullable(),\n anchorDecisionNodeId: z.string().nullable(),\n anchorExternalSurfaceNodeId: z.string().nullable(),\n archivedAt: z.string().datetime().nullable(),\n createdAt: z.string().datetime(),\n createdByUserId: z.string().uuid(),\n source: FlowCommentThreadSourceSchema.optional().default('user'),\n messageCount: z.number().int().nonnegative(),\n previewSnippet: z.string(),\n rootMessageAuthorLabel: z.string(),\n rootMessageCreatedAt: z.string().datetime(),\n rootMessageBody: z.string(),\n});\nexport type FlowCommentThreadSummary = z.infer<typeof FlowCommentThreadSummarySchema>;\n\nexport const ListFlowCommentThreadsResponseSchema = z.object({\n items: z.array(FlowCommentThreadSummarySchema),\n});\nexport type ListFlowCommentThreadsResponse = z.infer<typeof ListFlowCommentThreadsResponseSchema>;\n\nexport const GetFlowCommentThreadResponseSchema = z.object({\n thread: FlowCommentThreadSummarySchema,\n messages: z.array(FlowCommentMessageSchema),\n});\nexport type GetFlowCommentThreadResponse = z.infer<typeof GetFlowCommentThreadResponseSchema>;\n\nexport const CreateFlowCommentThreadResponseSchema = z.object({\n thread: FlowCommentThreadSummarySchema,\n message: FlowCommentMessageSchema,\n});\nexport type CreateFlowCommentThreadResponse = z.infer<typeof CreateFlowCommentThreadResponseSchema>;\n\nexport const AddFlowCommentMessageResponseSchema = z.object({\n message: FlowCommentMessageSchema,\n});\nexport type AddFlowCommentMessageResponse = z.infer<typeof AddFlowCommentMessageResponseSchema>;\n\nexport const ArchiveFlowCommentThreadResponseSchema = z.object({\n thread: FlowCommentThreadSummarySchema,\n});\nexport type ArchiveFlowCommentThreadResponse = z.infer<typeof ArchiveFlowCommentThreadResponseSchema>;\n\n","import { z } from 'zod';\nimport { ENVIRONMENTS } from '../constants/index.js';\nimport { FlowManifestSchema } from '../manifest.js';\nimport { MediaAssetSchema, MediaTypeSchema } from '../media.js';\n\n\n/* ----- Legacy publication shape (kept for old callers / read endpoints) ----- */\nexport const PublicationSchema = z.object({\n id: z.string().uuid(),\n flowId: z.string().uuid(),\n environment: z.enum(ENVIRONMENTS),\n revision: z.number().int().positive(),\n manifest: FlowManifestSchema,\n publishedAt: z.string().datetime(),\n supersededAt: z.string().datetime().nullable().optional(),\n});\nexport type Publication = z.infer<typeof PublicationSchema>;\n\n/* ----- Media ----- */\nexport const SignUploadRequestSchema = z.object({\n type: MediaTypeSchema,\n contentType: z.string(),\n sizeBytes: z.number().int().positive(),\n filename: z.string().min(1).max(200).optional(),\n});\nexport type SignUploadRequest = z.infer<typeof SignUploadRequestSchema>;\n\nexport const SignUploadResponseSchema = z.object({\n assetId: z.string().uuid(),\n uploadUrl: z.string().url(),\n objectKey: z.string(),\n publicUrl: z.string().url(),\n headers: z.record(z.string(), z.string()).optional(),\n});\nexport type SignUploadResponse = z.infer<typeof SignUploadResponseSchema>;\n\nexport const ConfirmUploadRequestSchema = z.object({\n assetId: z.string().uuid(),\n name: z.string().max(200).optional(),\n});\nexport type ConfirmUploadRequest = z.infer<typeof ConfirmUploadRequestSchema>;\n\nexport const ListMediaResponseSchema = z.object({\n items: z.array(MediaAssetSchema),\n});\n\nexport const MediaAssetUsageReferenceSchema = z.object({\n flowId: z.string().uuid(),\n flowName: z.string(),\n appId: z.string().uuid(),\n appName: z.string(),\n inDraft: z.boolean(),\n publishedVersionNumbers: z.array(z.number().int().positive()),\n});\n\nexport type MediaAssetUsageReference = z.infer<typeof MediaAssetUsageReferenceSchema>;\n\nexport const MediaAssetUsageResponseSchema = z.object({\n references: z.array(MediaAssetUsageReferenceSchema),\n});\n\nexport type MediaAssetUsageResponse = z.infer<typeof MediaAssetUsageResponseSchema>;\n\nexport const DeleteMediaAssetResponseSchema = z.object({\n asset: MediaAssetSchema,\n});\n\n/** Base name only; API merges with the asset's existing file extension. */\nexport const UpdateMediaAssetRequestSchema = z.object({\n nameStem: z.string().trim().min(1).max(200),\n});\n\nexport type UpdateMediaAssetRequest = z.infer<typeof UpdateMediaAssetRequestSchema>;\n\nexport const UpdateMediaAssetResponseSchema = z.object({\n asset: MediaAssetSchema,\n});\n\n","import { z } from 'zod';\nimport { ENVIRONMENTS } from '../constants/index.js';\n\nimport { TagsSchema, TagsSchemaOptional } from './tags.js';\n\n/* ----- Experiments ----- */\n/**\n * Experiment lifecycle:\n * * draft — being configured; no traffic.\n * * running — bucketing live SDK requests across arms.\n * * pending_decision — endsAt has passed but the experiment keeps\n * serving traffic (frozen bucketing). The\n * operator must promote a winner or extend.\n * * stopped — terminal; channel typically pinned to a\n * winner version at stop time.\n */\nexport const ExperimentStatusSchema = z.enum([\n 'draft',\n 'running',\n 'pending_decision',\n 'stopped',\n]);\nexport type ExperimentStatus = z.infer<typeof ExperimentStatusSchema>;\n\n/**\n * One arm of an experiment. Each arm pins its own version of a (possibly\n * different) flow, so cross-flow A/Bs are first-class.\n */\nexport const VariantSchema = z.object({\n id: z.string().uuid(),\n experimentId: z.string().uuid(),\n name: z.string().min(1),\n weight: z.number().int().positive(),\n flowId: z.string().uuid().nullable(),\n versionId: z.string().uuid().nullable(),\n /** Convenience read fields populated by list/get endpoints. */\n flowName: z.string().nullable().optional(),\n versionNumber: z.number().int().positive().nullable().optional(),\n versionLabel: z.string().nullable().optional(),\n});\nexport type Variant = z.infer<typeof VariantSchema>;\n\nexport const ExperimentEndedReasonSchema = z.enum([\n 'manual',\n 'scheduled_resolved',\n]);\nexport type ExperimentEndedReason = z.infer<typeof ExperimentEndedReasonSchema>;\n\nexport const ExperimentSchema = z.object({\n id: z.string().uuid(),\n appId: z.string().uuid(),\n /** Internal channel uuid. */\n channelId: z.string().uuid(),\n /** Display name of the channel (denormalized for list views). */\n channelName: z.string(),\n /** Test/live env of the channel — kept for badges and analytics filters. */\n channelEnvironment: z.enum(ENVIRONMENTS),\n name: z.string(),\n status: ExperimentStatusSchema,\n variants: z.array(VariantSchema),\n startedAt: z.string().datetime().nullable().optional(),\n stoppedAt: z.string().datetime().nullable().optional(),\n endsAt: z.string().datetime().nullable().optional(),\n endedReason: ExperimentEndedReasonSchema.nullable().optional(),\n archivedAt: z.string().datetime().nullable().optional(),\n createdAt: z.string().datetime(),\n /** Dashboard user who created the experiment (null for legacy rows). */\n createdByUserId: z.string().uuid().nullable().optional(),\n /** Display: full name, else @username, else email; null when unknown. */\n createdByLabel: z.string().nullable().optional(),\n tags: z.array(z.string()),\n /** Power-analysis inputs; nulls → dashboard defaults for sample accumulation. */\n statsDesignBaselineCvr: z.number().nullable().optional(),\n statsDesignMdePp: z.number().nullable().optional(),\n statsDesignAlpha: z.number().nullable().optional(),\n statsDesignPower: z.number().nullable().optional(),\n});\nexport type Experiment = z.infer<typeof ExperimentSchema>;\n\n/** Defaults for sample accumulation / required-N (aligned with `resolveExperimentSampleDesign` in this package). */\nexport const EXPERIMENT_STATS_DESIGN_DEFAULTS = {\n statsDesignBaselineCvr: 0.342,\n statsDesignMdePp: 3,\n statsDesignAlpha: 0.05,\n statsDesignPower: 0.8,\n} as const;\n\nexport const ExperimentStatsDesignInputSchema = z.object({\n statsDesignBaselineCvr: z.number().min(0.000_001).max(0.999_999),\n statsDesignMdePp: z.number().min(0.01).max(50),\n statsDesignAlpha: z.number().min(0.001).max(0.5),\n statsDesignPower: z.number().min(0.5).max(0.999),\n});\nexport type ExperimentStatsDesignInput = z.infer<typeof ExperimentStatsDesignInputSchema>;\n\nexport const CreateExperimentRequestSchema = z.object({\n channelId: z.string().uuid(),\n name: z.string().min(1),\n /** Required auto-stop. Hour granularity is enforced server-side. */\n endsAt: z.string().datetime(),\n tags: TagsSchemaOptional,\n statsDesignBaselineCvr: z.number().min(0.000_001).max(0.999_999).optional(),\n statsDesignMdePp: z.number().min(0.01).max(50).optional(),\n statsDesignAlpha: z.number().min(0.001).max(0.5).optional(),\n statsDesignPower: z.number().min(0.5).max(0.999).optional(),\n});\nexport type CreateExperimentRequest = z.infer<typeof CreateExperimentRequestSchema>;\n\n/** Patch shape for editing experiments. Name/channel/endsAt only apply while `draft`; tags may be updated in any status. */\nexport const UpdateExperimentRequestSchema = z.object({\n name: z.string().min(1).optional(),\n channelId: z.string().uuid().optional(),\n endsAt: z.string().datetime().optional(),\n tags: TagsSchema.optional(),\n statsDesignBaselineCvr: z.number().min(0.000_001).max(0.999_999).optional(),\n statsDesignMdePp: z.number().min(0.01).max(50).optional(),\n statsDesignAlpha: z.number().min(0.001).max(0.5).optional(),\n statsDesignPower: z.number().min(0.5).max(0.999).optional(),\n});\nexport type UpdateExperimentRequest = z.infer<typeof UpdateExperimentRequestSchema>;\n\n/**\n * Push back the auto-stop time on a `pending_decision` experiment. The\n * server flips it back to `running` and leaves the channel assignment\n * untouched (the channel was already pointing at this experiment).\n */\nexport const ExtendExperimentRequestSchema = z.object({\n endsAt: z.string().datetime(),\n});\nexport type ExtendExperimentRequest = z.infer<typeof ExtendExperimentRequestSchema>;\n\n/**\n * Stop an experiment with an explicit channel fallback. The two writes\n * (status flip + channel pin) are atomic on the server. The fallback\n * either re-pins to one of the experiment's variant versions, or to\n * any other version in the app.\n */\nexport const StopExperimentRequestSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('variant'), variantId: z.string().uuid() }),\n z.object({\n kind: z.literal('version'),\n flowId: z.string().uuid(),\n versionId: z.string().uuid(),\n }),\n]);\nexport type StopExperimentRequest = z.infer<typeof StopExperimentRequestSchema>;\n\nexport const CreateVariantRequestSchema = z.object({\n weight: z.number().int().positive(),\n flowId: z.string().uuid().optional(),\n versionId: z.string().uuid().optional(),\n});\nexport type CreateVariantRequest = z.infer<typeof CreateVariantRequestSchema>;\n\nexport const ReorderExperimentVariantsRequestSchema = z.object({\n variantIds: z.array(z.string().uuid()).min(1),\n});\nexport type ReorderExperimentVariantsRequest = z.infer<\n typeof ReorderExperimentVariantsRequestSchema\n>;\n\nexport const UpdateExperimentStatusRequestSchema = z.object({\n status: ExperimentStatusSchema,\n});\nexport type UpdateExperimentStatusRequest = z.infer<\n typeof UpdateExperimentStatusRequestSchema\n>;\n\nexport const ListExperimentsResponseSchema = z.object({\n items: z.array(ExperimentSchema),\n});\n\n","import { z } from 'zod';\n\n\n/* ----- Experiment stats ----- */\n\n/**\n * Per-variant statistics. `lift`, `pValue`, and `significant` are computed\n * relative to the control variant (first by sort order); they are null on the\n * control row itself.\n */\nexport const ExperimentArmStatsSchema = z.object({\n variantId: z.string().uuid(),\n name: z.string(),\n weight: z.number().int().nonnegative(),\n trafficShare: z.number(),\n /** Distinct users with ≥1 `flow_started` in the window. */\n starts: z.number().int().nonnegative(),\n /** Distinct users with ≥1 `flow_completed` in the window. */\n completes: z.number().int().nonnegative(),\n /** Distinct users with ≥1 `flow_abandoned` in the window. */\n abandoningUsers: z.number().int().nonnegative(),\n /** abandoningUsers / starts when starts > 0, else 0. */\n abandonRate: z.number(),\n /** Raw event counts (sessions), for debugging / power users. */\n rawStarts: z.number().int().nonnegative(),\n rawCompletes: z.number().int().nonnegative(),\n /** Distinct-user completion rate (`completes / starts`). JSON field name is historical. */\n conversionRate: z.number(),\n /** Wilson 95% CI bounds. */\n ciLow: z.number(),\n ciHigh: z.number(),\n lift: z.number().nullable(),\n pValue: z.number().nullable(),\n significant: z.boolean().nullable(),\n /** (completion rate − control) in percentage points; null on control. */\n liftAbsolutePp: z.number().nullable(),\n /** 95% CI for absolute completion-rate difference (treatment − control). */\n liftDiffCiLow: z.number().nullable(),\n liftDiffCiHigh: z.number().nullable(),\n});\nexport type ExperimentArmStats = z.infer<typeof ExperimentArmStatsSchema>;\n\nexport const ExperimentFunnelStepSchema = z.object({\n stepId: z.string(),\n stepName: z.string().nullable().optional(),\n views: z.number().int().nonnegative(),\n completes: z.number().int().nonnegative(),\n skips: z.number().int().nonnegative(),\n dropoffs: z.number().int().nonnegative(),\n});\n\nexport const ExperimentAbandonStepRowSchema = z.object({\n variantId: z.string().uuid(),\n stepId: z.string(),\n stepName: z.string().nullable().optional(),\n users: z.number().int().nonnegative(),\n});\n\nexport const ExperimentSrmSchema = z.object({\n chiSquareStatistic: z.number(),\n pValue: z.number().nullable(),\n /** True when p < 0.01 (observed split unlikely vs configured weights). */\n flagged: z.boolean(),\n});\n\nexport const ExperimentVariantFunnelSchema = z.object({\n variantId: z.string().uuid(),\n steps: z.array(ExperimentFunnelStepSchema),\n});\n\n/** One AND clause in experiment analytics composite cohort filters. */\nexport const ExperimentCohortRuleSchema = z.discriminatedUnion('dimension', [\n z.object({ dimension: z.literal('platform'), key: z.string().min(1) }),\n z.object({ dimension: z.literal('locale'), key: z.string().min(1) }),\n z.object({ dimension: z.literal('app_version'), key: z.string().min(1) }),\n z.object({ dimension: z.literal('experiment_variant'), key: z.string().min(1) }),\n z.object({\n dimension: z.literal('custom_property'),\n customKey: z.string().regex(/^[A-Za-z0-9._-]{1,64}$/),\n key: z.string().min(1),\n }),\n]);\nexport type ExperimentCohortRule = z.infer<typeof ExperimentCohortRuleSchema>;\n\nexport const ExperimentSampleAccumulationSchema = z.object({\n requiredPerArm: z.number(),\n /** ISO range used for accumulation starters (same analytics window as results; cohort filters apply). */\n accumulationRangeStart: z.string().datetime(),\n accumulationRangeEnd: z.string().datetime(),\n comparisons: z.number().int(),\n alphaPerComparison: z.number(),\n familyAlpha: z.number(),\n baselineCvr: z.number(),\n mdePp: z.number(),\n power: z.number(),\n /** Distinct starters in the accumulation window (matches Results table when cohorts match). */\n arms: z.array(\n z.object({\n variantId: z.string().uuid(),\n name: z.string(),\n observedStarters: z.number().int(),\n pctOfRequired: z.number(),\n }),\n ),\n allArmsAboveThreshold: z.boolean(),\n});\nexport type ExperimentSampleAccumulation = z.infer<typeof ExperimentSampleAccumulationSchema>;\n\nexport const ExperimentResultsOverviewSchema = z.object({\n winningVariant: z\n .object({ variantId: z.string().uuid(), name: z.string() })\n .nullable(),\n /** Sum of distinct starters per arm in the selected stats window. */\n totalSessions: z.number().int().nonnegative(),\n experimentTimelineLabel: z.string().nullable(),\n bestLift: z\n .object({\n variantId: z.string().uuid(),\n name: z.string(),\n absolutePp: z.number(),\n relativePct: z.number(),\n })\n .nullable(),\n assignmentBalance: z.object({\n pass: z.boolean(),\n pValue: z.number().nullable(),\n chiSquareStatistic: z.number(),\n threshold: z.number(),\n }),\n significanceEta: z\n .object({\n daysElapsedInclusive: z.number().int().nullable(),\n daysPlannedInclusive: z.number().int().nullable(),\n projectedTotalDays: z.number().nullable(),\n /** Positive = fewer days than planned window to reach projected end. */\n aheadOfPlanDays: z.number().nullable(),\n })\n .nullable(),\n});\nexport type ExperimentResultsOverview = z.infer<typeof ExperimentResultsOverviewSchema>;\n\nexport const ExperimentStatsResponseSchema = z.object({\n rangeStart: z.string().datetime(),\n rangeEnd: z.string().datetime(),\n /** Active composite cohort (AND). Null when unsegmented. */\n cohort: z.array(ExperimentCohortRuleSchema).nullable(),\n srm: ExperimentSrmSchema,\n resultsOverview: ExperimentResultsOverviewSchema,\n arms: z.array(ExperimentArmStatsSchema),\n abandonByStep: z.array(ExperimentAbandonStepRowSchema),\n funnel: z.array(ExperimentVariantFunnelSchema),\n sampleAccumulation: ExperimentSampleAccumulationSchema.optional(),\n});\nexport type ExperimentStatsResponse = z.infer<typeof ExperimentStatsResponseSchema>;\n\n/** Daily completion rate per variant (rolling-smoothed series from API). */\nexport const ExperimentCvrTimeseriesResponseSchema = z.object({\n keys: z.array(z.string()),\n points: z.array(\n z.object({\n date: z.string(),\n conversionRates: z.array(z.union([z.number(), z.null()])),\n }),\n ),\n});\nexport type ExperimentCvrTimeseriesResponse = z.infer<\n typeof ExperimentCvrTimeseriesResponseSchema\n>;\n\n","import { z } from 'zod';\nimport { ENVIRONMENTS } from '../constants/index.js';\n\n\n/* ----- Notifications ----- */\n\n/**\n * Payload for `experiment_ended_pick_winner`. Carries everything the\n * bell-icon UI needs to render and deep-link without a follow-up fetch.\n */\nexport const ExperimentEndedPayloadSchema = z.object({\n appId: z.string().uuid(),\n experimentId: z.string().uuid(),\n experimentName: z.string(),\n channelId: z.string().uuid(),\n channelName: z.string(),\n channelEnvironment: z.enum(ENVIRONMENTS),\n});\nexport type ExperimentEndedPayload = z.infer<typeof ExperimentEndedPayloadSchema>;\n\nexport const NotificationKindSchema = z.enum([\n 'experiment_ended_pick_winner',\n 'rollout_comment_mention',\n 'flow_comment_new',\n 'flow_comment_mention',\n 'flow_comment_reply',\n]);\nexport type NotificationKind = z.infer<typeof NotificationKindSchema>;\n\n/**\n * Payload for `rollout_comment_mention`. Deep-links to the rollout request thread.\n */\nexport const RolloutCommentMentionPayloadSchema = z.object({\n appId: z.string().uuid(),\n channelId: z.string().uuid(),\n requestId: z.string().uuid(),\n commentId: z.string().uuid(),\n authorUserId: z.string().uuid(),\n authorLabel: z.string(),\n channelName: z.string(),\n flowName: z.string(),\n snippet: z.string(),\n});\nexport type RolloutCommentMentionPayload = z.infer<typeof RolloutCommentMentionPayloadSchema>;\n\nexport const FlowCommentNotificationBasePayloadSchema = z.object({\n appId: z.string().uuid(),\n flowId: z.string().uuid(),\n flowName: z.string(),\n threadId: z.string().uuid(),\n messageId: z.string().uuid(),\n authorUserId: z.string().uuid(),\n authorLabel: z.string(),\n snippet: z.string(),\n});\nexport type FlowCommentNotificationBasePayload = z.infer<typeof FlowCommentNotificationBasePayloadSchema>;\n\nexport const FlowCommentNewPayloadSchema = FlowCommentNotificationBasePayloadSchema;\nexport type FlowCommentNewPayload = z.infer<typeof FlowCommentNewPayloadSchema>;\n\nexport const FlowCommentMentionPayloadSchema = FlowCommentNotificationBasePayloadSchema;\nexport type FlowCommentMentionPayload = z.infer<typeof FlowCommentMentionPayloadSchema>;\n\nexport const FlowCommentReplyPayloadSchema = FlowCommentNotificationBasePayloadSchema.extend({\n parentMessageId: z.string().uuid(),\n});\nexport type FlowCommentReplyPayload = z.infer<typeof FlowCommentReplyPayloadSchema>;\n\nconst NotificationBaseSchema = z.object({\n id: z.string().uuid(),\n readAt: z.string().datetime().nullable(),\n createdAt: z.string().datetime(),\n});\n\nexport const NotificationSchema = z.discriminatedUnion('kind', [\n NotificationBaseSchema.extend({\n kind: z.literal('experiment_ended_pick_winner'),\n payload: ExperimentEndedPayloadSchema,\n }),\n NotificationBaseSchema.extend({\n kind: z.literal('rollout_comment_mention'),\n payload: RolloutCommentMentionPayloadSchema,\n }),\n NotificationBaseSchema.extend({\n kind: z.literal('flow_comment_new'),\n payload: FlowCommentNewPayloadSchema,\n }),\n NotificationBaseSchema.extend({\n kind: z.literal('flow_comment_mention'),\n payload: FlowCommentMentionPayloadSchema,\n }),\n NotificationBaseSchema.extend({\n kind: z.literal('flow_comment_reply'),\n payload: FlowCommentReplyPayloadSchema,\n }),\n]);\nexport type Notification = z.infer<typeof NotificationSchema>;\n\n","/** Clerk org roles used by Rheo (coarse). */\nexport const CLERK_ORG_ADMIN = 'org:admin';\nexport const CLERK_ORG_MEMBER = 'org:member';\n\nexport const WORKSPACE_ROLES = ['owner', 'admin', 'editor', 'viewer'] as const;\nexport type WorkspaceRole = (typeof WORKSPACE_ROLES)[number];\n\nexport const WORKSPACE_CAPABILITIES = [\n 'org:read',\n 'billing:manage',\n 'workspace:delete',\n 'workspace:settings',\n 'app:settings',\n 'app:manage',\n 'member:invite',\n 'member:remove',\n 'member:role',\n 'ownership:transfer',\n 'flow:read',\n 'flow:edit',\n 'flow:publish',\n 'channel:read',\n 'channel:manage',\n 'experiment:read',\n 'experiment:manage',\n 'media:manage',\n 'ai:brand_extract',\n 'ai:translate',\n 'store:manage',\n 'analytics:read',\n 'customers:read',\n 'notifications:read',\n 'notifications:write',\n 'apiKey:manage',\n /** Granted at runtime via workspace-access when the member may approve rollouts. */\n 'rollout:approve',\n] as const;\n\nexport type WorkspaceCapability = (typeof WORKSPACE_CAPABILITIES)[number];\n\n/** Owner receives all capabilities except `rollout:approve` (that cap is merged per org in workspace-access). */\nconst OWNER_CAPS = new Set<WorkspaceCapability>(\n WORKSPACE_CAPABILITIES.filter((c) => c !== 'rollout:approve'),\n);\n\nconst caps = (...c: WorkspaceCapability[]) => new Set(c);\n\n/** Role → capabilities (owner is expanded to full set separately). */\nconst ROLE_CAPABILITIES: Record<Exclude<WorkspaceRole, 'owner'>, ReadonlySet<WorkspaceCapability>> = {\n admin: caps(\n 'org:read',\n 'workspace:settings',\n 'app:settings',\n 'app:manage',\n 'member:invite',\n 'member:remove',\n 'member:role',\n 'flow:read',\n 'flow:edit',\n 'flow:publish',\n 'channel:read',\n 'channel:manage',\n 'experiment:read',\n 'experiment:manage',\n 'media:manage',\n 'ai:brand_extract',\n 'ai:translate',\n 'store:manage',\n 'analytics:read',\n 'customers:read',\n 'notifications:read',\n 'notifications:write',\n ),\n editor: caps(\n 'org:read',\n 'flow:read',\n 'flow:edit',\n 'flow:publish',\n 'channel:read',\n 'channel:manage',\n 'experiment:read',\n 'experiment:manage',\n 'media:manage',\n 'ai:brand_extract',\n 'ai:translate',\n 'store:manage',\n 'analytics:read',\n 'customers:read',\n 'notifications:read',\n 'notifications:write',\n ),\n viewer: caps(\n 'org:read',\n 'flow:read',\n 'channel:read',\n 'experiment:read',\n 'analytics:read',\n 'customers:read',\n 'notifications:read',\n 'notifications:write',\n ),\n};\n\nexport const resolveCapabilities = (role: WorkspaceRole): ReadonlySet<WorkspaceCapability> => {\n if (role === 'owner') return OWNER_CAPS;\n return ROLE_CAPABILITIES[role];\n};\n\nexport const hasCapability = (\n role: WorkspaceRole,\n capability: WorkspaceCapability,\n): boolean => resolveCapabilities(role).has(capability);\n\nexport const hasAnyCapability = (\n role: WorkspaceRole,\n capabilities: ReadonlyArray<WorkspaceCapability>,\n): boolean => {\n const set = resolveCapabilities(role);\n return capabilities.some((c) => set.has(c));\n};\n\n/** Normalize DB / legacy string to WorkspaceRole. */\nexport const parseWorkspaceRole = (raw: string): WorkspaceRole | null => {\n if (raw === 'owner' || raw === 'admin' || raw === 'editor' || raw === 'viewer') return raw;\n return null;\n};\n\nexport const assertWorkspaceRole = (raw: string): WorkspaceRole => {\n const r = parseWorkspaceRole(raw);\n if (!r) {\n throw new TypeError(`invalid_workspace_role:${raw}`);\n }\n return r;\n};\n","import { z } from 'zod';\nimport { ENVIRONMENTS } from '../constants/index.js';\nimport { WORKSPACE_ROLES } from '../workspaceCapabilities.js';\nimport { NotificationSchema } from './notifications.js';\n\n/* ----- Workspace members (shared list shape) ----- */\n\nexport const WorkspaceMemberRowSchema = z.object({\n userId: z.string().uuid(),\n email: z.string(),\n /** Same display rule as rollout requester labels. */\n label: z.string(),\n workspaceRole: z.enum(WORKSPACE_ROLES),\n createdAt: z.string(),\n});\nexport type WorkspaceMemberRow = z.infer<typeof WorkspaceMemberRowSchema>;\n\nexport const ListWorkspaceMembersResponseSchema = z.object({\n items: z.array(WorkspaceMemberRowSchema),\n});\nexport type ListWorkspaceMembersResponse = z.infer<typeof ListWorkspaceMembersResponseSchema>;\n\nexport const ListNotificationsResponseSchema = z.object({\n items: z.array(NotificationSchema),\n unreadCount: z.number().int().nonnegative(),\n});\nexport type ListNotificationsResponse = z.infer<typeof ListNotificationsResponseSchema>;\n\n/* ----- Analytics ----- */\nexport const AnalyticsRangeSchema = z.object({\n flowId: z.string().uuid(),\n environment: z.enum(ENVIRONMENTS),\n startDate: z.string().datetime(),\n endDate: z.string().datetime(),\n filters: z\n .object({\n platform: z.array(z.string()).optional(),\n locale: z.array(z.string()).optional(),\n variantId: z.array(z.string()).optional(),\n customProperties: z.record(z.string(), z.string()).optional(),\n })\n .optional(),\n});\nexport type AnalyticsRange = z.infer<typeof AnalyticsRangeSchema>;\n\nexport const FunnelResponseSchema = z.object({\n steps: z.array(\n z.object({\n stepId: z.string(),\n views: z.number().int().nonnegative(),\n completes: z.number().int().nonnegative(),\n skips: z.number().int().nonnegative(),\n dropoffs: z.number().int().nonnegative(),\n }),\n ),\n totalStarts: z.number().int().nonnegative(),\n totalCompletes: z.number().int().nonnegative(),\n});\nexport type FunnelResponse = z.infer<typeof FunnelResponseSchema>;\n\nexport const ResponseBreakdownSchema = z.object({\n fields: z.array(\n z.object({\n stepId: z.string(),\n fieldKey: z.string(),\n values: z.array(\n z.object({\n value: z.string(),\n count: z.number().int().nonnegative(),\n }),\n ),\n }),\n ),\n});\nexport type ResponseBreakdown = z.infer<typeof ResponseBreakdownSchema>;\n\n/* ----- Memberships / role ----- */\n","import { z } from 'zod';\nimport { ROLES } from '../constants/index.js';\n\nexport const RoleSchema = z.enum(ROLES);\nexport const MembershipSchema = z.object({\n userId: z.string().uuid(),\n orgId: z.string().uuid(),\n role: RoleSchema,\n});\nexport type Membership = z.infer<typeof MembershipSchema>;\n\n","import { z } from 'zod';\n\nexport const ONBOARDING_TASK_IDS = ['sdk_events'] as const;\n\nexport const OnboardingTaskIdSchema = z.enum(ONBOARDING_TASK_IDS);\nexport type OnboardingTaskId = z.infer<typeof OnboardingTaskIdSchema>;\n\nexport const OnboardingTaskStatusSchema = z.enum(['pending', 'done', 'unknown']);\nexport type OnboardingTaskStatus = z.infer<typeof OnboardingTaskStatusSchema>;\n\nexport const OnboardingTaskCompletionSourceSchema = z.enum(['auto', 'manual']).nullable();\nexport type OnboardingTaskCompletionSource = z.infer<\n typeof OnboardingTaskCompletionSourceSchema\n>;\n\nexport const OnboardingTaskActionSchema = z.object({\n docsHref: z.string().url().optional(),\n keysHref: z.string().optional(),\n verifyable: z.boolean().optional(),\n});\nexport type OnboardingTaskAction = z.infer<typeof OnboardingTaskActionSchema>;\n\nexport const OnboardingTaskSchema = z.object({\n id: OnboardingTaskIdSchema,\n title: z.string(),\n description: z.string(),\n status: OnboardingTaskStatusSchema,\n completionSource: OnboardingTaskCompletionSourceSchema,\n action: OnboardingTaskActionSchema.optional(),\n});\nexport type OnboardingTask = z.infer<typeof OnboardingTaskSchema>;\n\nexport const OnboardingChecklistFocusAppSchema = z.object({\n id: z.string().uuid(),\n name: z.string(),\n});\nexport type OnboardingChecklistFocusApp = z.infer<typeof OnboardingChecklistFocusAppSchema>;\n\nexport const OnboardingChecklistResponseSchema = z.object({\n tasks: z.array(OnboardingTaskSchema),\n completedCount: z.number().int().nonnegative(),\n totalCount: z.number().int().nonnegative(),\n focusApp: OnboardingChecklistFocusAppSchema.nullable(),\n dismissed: z.boolean(),\n eligible: z.boolean(),\n});\nexport type OnboardingChecklistResponse = z.infer<typeof OnboardingChecklistResponseSchema>;\n\nexport const OnboardingTaskVerifyResponseSchema = z.object({\n task: OnboardingTaskSchema,\n});\nexport type OnboardingTaskVerifyResponse = z.infer<typeof OnboardingTaskVerifyResponseSchema>;\n\nexport const OnboardingTaskCompleteResponseSchema = z.object({\n task: OnboardingTaskSchema,\n});\nexport type OnboardingTaskCompleteResponse = z.infer<typeof OnboardingTaskCompleteResponseSchema>;\n\nexport const OnboardingChecklistDismissResponseSchema = z.object({\n ok: z.literal(true),\n});\nexport type OnboardingChecklistDismissResponse = z.infer<\n typeof OnboardingChecklistDismissResponseSchema\n>;\n","import { z } from 'zod';\n\nexport const SdkIdentitySchema = z.object({\n appUserId: z.string().min(1),\n customUserId: z.string().min(1).optional(),\n sessionId: z.string().min(1).optional(),\n});\nexport type SdkIdentity = z.infer<typeof SdkIdentitySchema>;\n\nexport const SdkContextSchema = z.object({\n platform: z.enum(['ios', 'android', 'web']).optional(),\n appVersion: z.string().optional(),\n locale: z.string().optional(),\n customProperties: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional(),\n});\nexport type SdkContext = z.infer<typeof SdkContextSchema>;\n","import { z } from 'zod';\nimport { ResolvedAppIntegrationsSchema } from './appIntegrations';\n\n/** Default HTTPS API origin for SDK resolve/events when hosts omit `apiBaseUrl`. */\nexport const RHEO_DEFAULT_SDK_API_BASE_URL = 'https://api.getrheo.io' as const;\nimport { BrandingSchema } from './dashboard';\nimport { FlowManifestSchema } from './manifest';\nimport { SdkContextSchema, SdkIdentitySchema } from './identity';\n\n/**\n * Resolve request is app-scoped: the publishable key identifies the app and\n * channel, the channel's assignment chooses which flow version to serve. The\n * SDK never specifies a flowId — that's a server-side decision now.\n */\nexport const SdkResolveRequestSchema = z.object({\n identity: SdkIdentitySchema,\n context: SdkContextSchema.optional(),\n});\nexport type SdkResolveRequest = z.infer<typeof SdkResolveRequestSchema>;\n\nexport const SdkResolveResponseSchema = z.object({\n flowId: z.string().uuid(),\n versionId: z.string().uuid(),\n versionNumber: z.number().int().positive(),\n /** Stable id clients can use as an ETag when re-fetching. */\n assignmentVersion: z.number().int().nonnegative(),\n environment: z.enum(['test', 'live']),\n /** PublicId of the channel that resolved this request (for client cache keys). */\n channelId: z.string(),\n experimentId: z.string().uuid().nullable(),\n variantId: z.string().nullable(),\n manifest: FlowManifestSchema,\n mediaMap: z.record(z.string(), z.string().url()),\n /** App branding (gradient presets, etc.) when present on the app record. */\n branding: BrandingSchema.optional(),\n /** Workspace-gated SDK capabilities for this resolve. */\n features: z\n .object({\n /** When false, the SDK should not start MMP attribution listeners (Indie / lapsed billing). */\n attribution: z.boolean(),\n })\n .optional(),\n /** Per-app integration toggles from the dashboard; SDK should respect these after resolve. */\n integrations: ResolvedAppIntegrationsSchema,\n});\nexport type SdkResolveResponse = z.infer<typeof SdkResolveResponseSchema>;\n\n/**\n * Batch resolve response for `POST /v1/sdk/resolve-all`. Returns one entry per\n * assigned channel in the publishable key's environment. Each entry has the\n * same shape as a single `/resolve`, so SDKs can drop them straight into the\n * per-channel manifest cache (channels that fail to resolve are omitted).\n */\nexport const SdkResolveAllResponseSchema = z.object({\n channels: z.array(SdkResolveResponseSchema),\n});\nexport type SdkResolveAllResponse = z.infer<typeof SdkResolveAllResponseSchema>;\n\n/** Resolve metadata without manifest/media (for tooling; terminal callbacks use {@link FlowTerminalCorrelationSchema}). */\nexport const SdkResolveAssignmentSchema = SdkResolveResponseSchema.omit({\n manifest: true,\n mediaMap: true,\n});\nexport type SdkResolveAssignment = z.infer<typeof SdkResolveAssignmentSchema>;\n\n/** Join keys for correlating a terminal event with analytics / dashboard (no integration flags). */\nexport const FlowTerminalCorrelationSchema = z.object({\n channelId: z.string(),\n flowId: z.string().uuid(),\n versionId: z.string().uuid(),\n assignmentVersion: z.number().int().nonnegative(),\n environment: z.enum(['test', 'live']),\n experimentId: z.string().uuid().nullable(),\n variantId: z.string().nullable(),\n});\nexport type FlowTerminalCorrelation = z.infer<typeof FlowTerminalCorrelationSchema>;\n\nexport const FlowTerminalDeviceSchema = z.object({\n locale: z.string(),\n platform: z.string(),\n appVersion: z.string().optional(),\n customProperties: z\n .record(z.string(), z.union([z.string(), z.number(), z.boolean()]))\n .optional(),\n});\nexport type FlowTerminalDevice = z.infer<typeof FlowTerminalDeviceSchema>;\n\n/**\n * Consumer-oriented snapshot for `onFlowCompleted` / `onFlowAbandoned`: small JSON\n * suitable for POSTing to your API, CRM, or LLM prompts (`schemaVersion` bumps on breaking changes).\n */\nexport const FlowTerminalSnapshotSchema = z.object({\n schemaVersion: z.literal(1),\n terminal: z.enum(['completed', 'abandoned']),\n /** When the flow reached a terminal status (`FlowState.completedAt`). */\n occurredAt: z.string().nullable(),\n correlation: FlowTerminalCorrelationSchema,\n subject: SdkIdentitySchema,\n device: FlowTerminalDeviceSchema,\n /**\n * Normalized field-key → value summary (same shape as analytics completion map).\n * Includes every capture field from visited screens (input layers, checkboxes, OS permission keys):\n * keys with no recorded response appear as `null`. OAuth / email-password auth keys are omitted;\n * use auth provider callbacks for those.\n */\n answers: z.record(z.string(), z.unknown()),\n /** Single merged SDK/decision context at terminal time (host + attribution + patches). */\n traits: z.record(z.string(), z.unknown()),\n /** Walked screen / surface node ids when `includePathInTerminalPayload` is true. */\n path: z.array(z.string()).optional(),\n /** Raw step responses (minus auth keys) when `includeAnswerDetailInTerminalPayload` is true. */\n answersDetail: z.record(z.string(), z.unknown()).optional(),\n manifest: FlowManifestSchema.optional(),\n});\nexport type FlowTerminalSnapshot = z.infer<typeof FlowTerminalSnapshotSchema>;\n\n/** @deprecated Use {@link FlowTerminalSnapshotSchema}. */\nexport const SdkCompletionPayloadSchema = FlowTerminalSnapshotSchema;\n\n/** @deprecated Use {@link FlowTerminalSnapshot} / {@link FlowTerminalSnapshotSchema}. */\nexport type SdkCompletionPayload = FlowTerminalSnapshot;\n"]}