/** * Compatibility policy helpers for generated scaffold outputs. * * The policy keeps plugin headers, runtime gates, and workspace inventory * metadata aligned when optional or required AI-capable features are added. */ import { type AiFeatureCapabilitySelection, type AiFeatureCompatibilityFloor, type ResolvedAiFeatureCapabilityPlan } from '../add/ai-feature-capability.js'; /** * WordPress plugin header version floors emitted by scaffold templates. */ export interface ScaffoldPluginHeaderCompatibility { requiresAtLeast: string; requiresPhp: string; testedUpTo: string; } /** * Resolved compatibility policy for a set of scaffold feature capabilities. */ export interface ScaffoldCompatibilityPolicy { capabilityPlan: ResolvedAiFeatureCapabilityPlan; pluginHeader: ScaffoldPluginHeaderCompatibility; } /** * Supported WordPress target versions for generated scaffold plugin headers. */ export declare const SCAFFOLD_WORDPRESS_TARGET_VERSIONS: readonly ['6.9', '7.0']; /** * String literal union for scaffold WordPress targets, currently `6.9` or `7.0`. */ export type ScaffoldWordPressTargetVersion = (typeof SCAFFOLD_WORDPRESS_TARGET_VERSIONS)[number]; /** * Default WordPress target version used when create callers omit `--wp-version`. */ export declare const DEFAULT_SCAFFOLD_WORDPRESS_TARGET_VERSION: ScaffoldWordPressTargetVersion; /** * Serializable compatibility metadata stored in generated workspace inventory. */ export interface ScaffoldCompatibilityConfig { hardMinimums: AiFeatureCompatibilityFloor; mode: 'baseline' | 'optional' | 'required'; optionalFeatureIds: string[]; optionalFeatures: string[]; requiredFeatureIds: string[]; requiredFeatures: string[]; runtimeGates: string[]; } /** * Optional hooks for surfacing user-authored compatibility header repairs. */ export interface UpdatePluginHeaderCompatibilityOptions { /** * Receives warnings when a malformed existing plugin header value is * replaced by the resolved policy floor. */ onWarning?: (warning: string) => void; } /** * Baseline headers used by scaffold output before optional features are added. */ export declare const DEFAULT_SCAFFOLD_COMPATIBILITY: ScaffoldPluginHeaderCompatibility; /** * Return whether a string is one of the supported scaffold WordPress targets. */ export declare function isScaffoldWordPressTargetVersion(value: string): value is ScaffoldWordPressTargetVersion; /** * Resolve CLI input into a supported scaffold WordPress target version. * * Empty input falls back to the default `7.0` target. */ export declare function resolveScaffoldWordPressTargetVersion(value?: string): ScaffoldWordPressTargetVersion; /** * Build scaffold header compatibility for the selected WordPress target. * * The selected target controls `Tested up to`; hard minimums remain tied to the * compatibility policy floor. */ export declare function createScaffoldCompatibilityBaseline(wpVersion?: ScaffoldWordPressTargetVersion): ScaffoldPluginHeaderCompatibility; /** * Optional WordPress AI Client surface used by server-only AI feature scaffold. */ export declare const OPTIONAL_WORDPRESS_AI_CLIENT_COMPATIBILITY: readonly AiFeatureCapabilitySelection[]; /** * Required Abilities API surface used by typed workflow ability scaffold. */ export declare const REQUIRED_WORKSPACE_ABILITY_COMPATIBILITY: readonly AiFeatureCapabilitySelection[]; /** * Resolve plugin header floors and capability gates for scaffold selections. */ export declare function resolveScaffoldCompatibilityPolicy(selections: readonly AiFeatureCapabilitySelection[], { baseline }?: { baseline?: ScaffoldPluginHeaderCompatibility; }): ScaffoldCompatibilityPolicy; /** * Convert a resolved policy into workspace-inventory-safe JSON metadata. */ export declare function createScaffoldCompatibilityConfig(policy: ScaffoldCompatibilityPolicy): ScaffoldCompatibilityConfig; /** * Render compatibility metadata as formatted TypeScript object literal JSON. */ export declare function renderScaffoldCompatibilityConfig(policy: ScaffoldCompatibilityPolicy, indent?: string): string; /** * Patch a generated plugin bootstrap header without lowering custom floors. * * Preserves the original header line endings while replacing empty version * strings with policy values. Malformed user-authored values are reported * through `options.onWarning`; without a warning handler they throw instead of * falling back silently. */ export declare function updatePluginHeaderCompatibility(source: string, policy: ScaffoldCompatibilityPolicy, options?: UpdatePluginHeaderCompatibilityOptions): string;