""" KCL Version Management Schema for Provisioning System Provides type-safe version definitions with GitHub release integration """ schema Version: """Version information for a component with optional GitHub integration""" # Version number (e.g., "1.31.0") or "latest" current: str # GitHub releases URL for automated checking source?: str # GitHub tags URL (alternative source) tags?: str # Official project website site?: str # Enable automatic latest version checking check_latest?: bool = False # Cache duration in seconds (24h default) grace_period?: int = 86400 check: len(current) > 0, "Version current field cannot be empty" current == "latest" or current == "" or len(current.split(".")) >= 1, "Version must be semantic (x.y.z), 'latest', or empty" schema TaskservVersion: """Complete taskserv version configuration with dependency tracking""" # Taskserv name (must match directory) name: str # Primary version configuration version: Version # Other taskservs this component depends on dependencies?: [str] # Profile-specific version overrides profiles?: {str:Version} check: len(name) > 0, "Taskserv name cannot be empty" name == name.lower(), "Taskserv name must be lowercase" schema VersionCache: """Cache structure for latest version lookups""" # Resolved version string version: str # ISO timestamp of last fetch fetched_at: str # Source URL used for resolution source: str # Time-to-live in seconds ttl: int = 86400 check: len(version) > 0, "Cached version cannot be empty" len(source) > 0, "Cache source URL cannot be empty" # Package metadata for core provisioning KCL module schema PackageMetadata: """Core package metadata for distribution""" # Package name name: str # Package version version: str # API compatibility version api_version: str # Build timestamp build_date: str # Minimum KCL version required kcl_min_version: str # Maximum KCL version supported kcl_max_version: str # External dependencies dependencies: {str:str} # Feature flags features: {str:bool} # Available schema exports schema_exports: [str] check: len(name) > 0, "Package name cannot be empty" len(version) > 0, "Package version cannot be empty" # Default package metadata package_metadata: PackageMetadata = { name = "provisioning" version = "0.1.0" api_version = "v1" build_date = "2025-09-28" kcl_min_version = "0.11.0" kcl_max_version = "0.12.0" dependencies = {} features = { server_management = True cluster_orchestration = True provider_abstraction = True workflow_automation = True batch_operations = True } schema_exports = [ "Settings" "Server" "Cluster" "Provider" "Workflow" "BatchWorkflow" "Version" "PackageMetadata" ] }