# | Workspace configuration contracts (schema definitions)
# | Migrated from: provisioning/kcl/workspace_config.k
# | Pattern: Pure schema definitions using Nickel contracts

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

  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,
  },

  ProvisioningConfig = {
    path | String,
  },

  CoreConfig = {
    version | String,
    name | String,
  },

  DebugConfig = {
    enabled | Bool,
    metadata | Bool,
    check_mode | Bool,
    validation | Bool,
    remote | Bool,
    log_level | String,
    no_terminal | Bool,
  },

  OutputConfig = {
    file_viewer | String,
    format | String,
  },

  HttpConfig = {
    use_curl | Bool,
    timeout | Number,
  },

  ProviderConfig = {
    active,
    default | String,
  },

  PlatformConfig = {
    orchestrator_enabled | Bool,
    control_center_enabled | Bool,
    mcp_enabled | Bool,
  },

  SecretsConfig = {
    provider | String,
    sops_enabled | Bool,
    kms_enabled | Bool,
  },

  KmsConfig = {
    mode | String,
    config_file | String,
  },

  SopsConfig = {
    use_sops | Bool,
    config_path | String,
    key_search_paths,
  },

  AiConfig = {
    enabled | Bool,
    provider | String,
    config_path | String,
  },

  TaskservsConfig = {
    run_path | String,
  },

  ClustersConfig = {
    run_path | String,
  },

  GenerationConfig = {
    dir_path | String,
    defs_file | String,
  },

  CacheConfig = {
    enabled | Bool,
    path | String,
    infra_cache | String,
    grace_period | Number,
    check_updates | Bool,
    max_cache_size | String,
  },

  InfraConfig = {
    current | String,
  },

  ToolsConfig = {
    use_kcl | Bool,
    use_kcl_plugin | Bool,
    use_tera_plugin | Bool,
  },

  KclConfig = {
    core_module | String,
    core_version | String,
    core_package_name | String,
    use_module_loader | Bool,
    module_loader_path | String,
    modules_dir | String,
  },

  SshConfig = {
    user | String,
    options,
    timeout | Number,
    debug | Bool,
  },

  WorkspaceConfig = {
    workspace | Dyn | optional,
    paths | Dyn | optional,
    provisioning | Dyn | optional,
    core | Dyn | optional,
    debug | Dyn | optional,
    output | Dyn | optional,
    http | Dyn | optional,
    providers | Dyn | optional,
    platform | Dyn | optional,
    secrets | Dyn | optional,
    kms | Dyn | optional,
    sops | Dyn | optional,
    ai | Dyn | optional,
    taskservs | Dyn | optional,
    clusters | Dyn | optional,
    generation | Dyn | optional,
    cache | Dyn | optional,
    infra | Dyn | optional,
    tools | Dyn | optional,
    kcl | Dyn | optional,
    ssh | Dyn | optional,
  },
}
