# Commands Contracts - Type definitions for command metadata schemas
# NO Array constraints - use bare fields for arrays
# NO circular imports

{
  CommandRequirements = {
    interactive | Bool,
    requires_auth | Bool,
    auth_type | [| 'none, 'jwt, 'mfa, 'cedar |],
    requires_workspace | Bool,
    side_effects | Bool,
    side_effect_type | [| 'none, 'create, 'update, 'delete, 'deploy |],
    requires_confirmation | Bool,
    min_permission | [| 'read, 'write, 'admin, 'superadmin |],
    slow_operation | Bool,
    rust_optimizable | Bool,
  },

  CommandMetadata = {
    name | String,
    domain | [| 'infrastructure, 'orchestration, 'workspace, 'configuration, 'authentication, 'platform, 'utilities, 'development |],
    description | String,
    aliases,
    requirements,
    form_path | String | optional,
    estimated_time | Number,
  },

  CommandRegistry = {
    version | String,
    commands,
  },
}
