""" 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""" current: str # Version number (e.g., "1.31.0") or "latest" source?: str # GitHub releases URL for automated checking tags?: str # GitHub tags URL (alternative source) site?: str # Official project website check_latest?: bool = False # Enable automatic latest version checking grace_period?: int = 86400 # Cache duration in seconds (24h default) 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""" name: str # Taskserv name (must match directory) version: Version # Primary version configuration dependencies?: [str] # Other taskservs this component depends on profiles?: {str: Version} # Profile-specific version overrides 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""" version: str # Resolved version string fetched_at: str # ISO timestamp of last fetch source: str # Source URL used for resolution ttl: int = 86400 # Time-to-live in seconds 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""" name: str # Package name version: str # Package version api_version: str # API compatibility version build_date: str # Build timestamp kcl_min_version: str # Minimum KCL version required kcl_max_version: str # Maximum KCL version supported dependencies: {str: str} # External dependencies features: {str: bool} # Feature flags schema_exports: [str] # Available schema exports 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" ] }