# Workspace Configuration Contracts
#
# Type-safe contracts for workspace configuration schemas.
# These define the complete structure for workspace configurations.

{
  # Workspace metadata contract
  Workspace = {
    name | String,
    version | String,
    created | String,
    current_infra | String,
    current_environment | String,
  },

  # Path definitions contract
  Paths = {
    base | String,
    infra | String,
    cache | String,
    runtime | String,
    providers | String,
    taskservs | String,
    clusters | String,
    orchestrator | String,
    control_center | String,
    kms | String,
    generate | String,
    run_clusters | String,
    run_taskservs | String,
    extensions | String,
    resources | String,
    templates | String,
    tools | String,
  },

  # Provisioning config contract
  ProvisioningConfig = {
    path | String,
  },

  # Core config contract
  CoreConfig = {
    version | String,
    name | String,
  },

  # Debug settings contract
  DebugConfig = {
    enabled | Bool,
    metadata | Bool,
    check_mode | Bool,
    validation | Bool,
    remote | Bool,
    log_level | String,  # "debug" | "info" | "warn" | "error"
    no_terminal | Bool,
  },

  # Output settings contract
  OutputConfig = {
    file_viewer | String,  # "bat" | "less" | "cat"
    format | String,  # "yaml" | "json" | "toml"
  },

  # HTTP client contract
  HttpConfig = {
    use_curl | Bool,
    timeout | Number,
  },

  # Provider config contract
  ProviderConfig = {
    active | Array String,
    default | String,
  },

  # Platform services contract
  PlatformConfig = {
    orchestrator_enabled | Bool,
    control_center_enabled | Bool,
    mcp_enabled | Bool,
  },

  # Secrets management contract
  SecretsConfig = {
    provider | String,  # "sops" | "vault" | "aws-secrets"
    sops_enabled | Bool,
    kms_enabled | Bool,
  },

  # KMS config contract
  KmsConfig = {
    mode | String,  # "local" | "remote" | "hybrid"
    config_file | String,
  },

  # SOPS config contract
  SopsConfig = {
    use_sops | Bool,
    config_path | String,
    key_search_paths | Array String,
  },

  # AI config contract
  AiConfig = {
    enabled | Bool,
    provider | String,  # "openai" | "anthropic" | "local"
    config_path | String,
  },

  # Taskservs config contract
  TaskservsConfig = {
    run_path | String,
  },

  # Clusters config contract
  ClustersConfig = {
    run_path | String,
  },

  # Generation config contract
  GenerationConfig = {
    dir_path | String,
    defs_file | String,
  },

  # Cache config contract
  CacheConfig = {
    enabled | Bool,
    path | String,
    infra_cache | String,
    grace_period | Number,
    check_updates | Bool,
    max_cache_size | String,
  },

  # Infrastructure context contract
  InfraConfig = {
    current | String,
  },

  # Tools config contract
  ToolsConfig = {
    use_kcl | Bool,
    use_kcl_plugin | Bool,
    use_tera_plugin | Bool,
  },

  # KCL module config contract
  KclConfig = {
    core_module | String,
    core_version | String,
    core_package_name | String,
    use_module_loader | Bool,
    module_loader_path | String,
    modules_dir | String,
  },

  # SSH config contract
  SshConfig = {
    user | String,
    options | Array String,
    timeout | Number,
    debug | Bool,
  },

  # Complete workspace config contract
  WorkspaceConfig = {
    workspace | Workspace,
    paths | Paths,
    provisioning | ProvisioningConfig,
    core | CoreConfig,
    debug | DebugConfig,
    output | OutputConfig,
    http | HttpConfig,
    providers | ProviderConfig,
    platform | PlatformConfig,
    secrets | SecretsConfig,
    kms | KmsConfig,
    sops | SopsConfig,
    ai | AiConfig,
    taskservs | TaskservsConfig,
    clusters | ClustersConfig,
    generation | GenerationConfig,
    cache | CacheConfig,
    infra | InfraConfig,
    tools | ToolsConfig,
    kcl | KclConfig,
    ssh | SshConfig,
  },
}
