# Command Registry Default Values

let { make_command, .. } = import "schemas/commands_registry/defaults.ncl" in
let cmd_reg_schema = import "schemas/commands_registry/schema.ncl" in

{
  commands = [
    make_command {
      command = "help",
      aliases = ["h", "-h", "--help"],
      uses_cache = true,
      help_category = "infrastructure",
      description = "Show help for commands",
    },
    make_command {
      command = "platform",
      aliases = ["plat", "p"],
      uses_cache = true,
      help_category = "platform",
      description = "Manage platform services",
    },
    make_command {
      command = "guide",
      aliases = ["guides", "howto"],
      uses_cache = true,
      help_category = "guides",
      description = "Show guides and tutorials",
    },
    make_command {
      command = "shortcuts",
      aliases = ["sc"],
      uses_cache = true,
      requires_args = true,
      help_category = "guides",
      description = "Show command shortcuts",
    },
    make_command {
      command = "quickstart",
      aliases = ["quick"],
      uses_cache = true,
      requires_args = true,
      help_category = "guides",
      description = "Quick start guide",
    },
    make_command {
      command = "from-scratch",
      aliases = ["scratch"],
      uses_cache = true,
      requires_args = true,
      help_category = "guides",
      description = "Start from scratch guide",
    },
    make_command {
      command = "customize",
      aliases = ["custom"],
      uses_cache = true,
      requires_args = true,
      help_category = "guides",
      description = "Customization guide",
    },
    make_command {
      command = "bootstrap",
      aliases = ["bstrap"],
      help_category = "infrastructure",
      description = "L1 Hetzner resource bootstrap (network, firewall, SSH key, Floating IPs)",
    },
    make_command {
      command = "fip",
      aliases = ["floating-ip"],
      help_category = "infrastructure",
      description = "Floating IP management (list, show, assign, unassign, protection)",
    },
    make_command {
      command = "volume",
      aliases = ["vol"],
      help_category = "infrastructure",
      description = "Volume management (list, create, attach, detach, delete)",
    },
    make_command {
      command = "server",
      aliases = ["s"],
      requires_daemon = true,
      requires_services = true,
      requires_args = true,
      help_category = "infrastructure",
      description = "Server management",
    },
    make_command {
      command = "ssh",
      requires_args = true,
      help_category = "infrastructure",
      description = "SSH shortcut: connect to a server by hostname (e.g. prvng ssh sgoyol-1)",
    },
    make_command {
      command = "taskserv",
      aliases = ["task", "t"],
      requires_args = true,
      help_category = "infrastructure",
      description = "Task server management",
    },
    make_command {
      command = "component",
      aliases = ["c", "comp", "cl"],
      requires_args = true,
      help_category = "infrastructure",
      description = "Component management — list, show, and status for workspace component instances",
    },
    make_command {
      command = "extension",
      aliases = ["e", "ext"],
      requires_args = true,
      help_category = "infrastructure",
      description = "Extension catalog — browse extensions/components/ definitions and metadata",
    },
    make_command {
      command = "create",
      aliases = ["new"],
      requires_args = true,
      requires_daemon = true,
      requires_services = true,
      help_category = "infrastructure",
      description = "Create resources (server, taskserv, cluster)",
    },
    make_command {
      command = "delete",
      aliases = ["d"],
      requires_args = true,
      help_category = "infrastructure",
      description = "Delete resources (server, taskserv, cluster)",
    },
    make_command {
      command = "workspace",
      aliases = ["ws"],
      requires_daemon = true,
      uses_cache = true,
      requires_args = true,
      help_category = "workspace",
      description = "Workspace management",
    },
    make_command {
      command = "validate",
      aliases = ["val"],
      uses_cache = true,
      requires_args = true,
      help_category = "config",
      description = "Validate configuration",
    },
    make_command {
      command = "config",
      uses_cache = true,
      requires_args = true,
      help_category = "setup",
      description = "Configuration management",
    },
    make_command {
      command = "env",
      uses_cache = true,
      requires_args = true,
      help_category = "config",
      description = "Environment configuration",
    },
    make_command {
      command = "alias",
      aliases = ["a", "al"],
      uses_cache = true,
      help_category = "utils",
      description = "Show command aliases — alias list (al) displays the full shortcut table",
    },
    make_command {
      command = "show",
      uses_cache = true,
      requires_args = true,
      help_category = "config",
      description = "Show configuration",
    },
    make_command {
      command = "setup",
      aliases = ["st"],
      uses_cache = true,
      help_category = "setup",
      description = "Initial setup",
    },
    make_command {
      command = "state",
      aliases = ["st"],
      uses_cache = false,
      requires_args = true,
      help_category = "state",
      description = "Workspace provisioning state management",
    },
    make_command {
      command = "job",
      aliases = ["j"],
      requires_args = true,
      uses_cache = false,
      help_category = "orchestration",
      description = "Orchestrator job management (list, status, monitor, submit)",
    },
    make_command {
      command = "workflow",
      aliases = ["w", "wflow"],
      requires_args = true,
      uses_cache = false,
      help_category = "orchestration",
      description = "Workspace workflow management — WorkflowDef lifecycle (list, show, run, validate, status)",
    },
    make_command {
      command = "batch",
      aliases = ["b", "bat"],
      requires_daemon = true,
      uses_cache = true,
      requires_args = true,
      help_category = "orchestration",
      description = "Batch operations",
    },
    make_command {
      command = "orchestrator",
      aliases = ["o", "orch"],
      requires_daemon = true,
      uses_cache = true,
      requires_args = true,
      help_category = "orchestration",
      description = "Orchestrator management",
    },
    make_command {
      command = "module",
      aliases = ["mod"],
      uses_cache = true,
      requires_args = true,
      help_category = "development",
      description = "Module management",
    },
    make_command {
      command = "layer",
      aliases = ["lyr"],
      uses_cache = true,
      requires_args = true,
      help_category = "development",
      description = "Layer management",
    },
    make_command {
      command = "discover",
      aliases = ["disc"],
      uses_cache = true,
      requires_args = true,
      help_category = "development",
      description = "Discover modules",
    },
    make_command {
      command = "status",
      uses_cache = true,
      requires_args = true,
      help_category = "diagnostics",
      description = "Show status",
    },
    make_command {
      command = "health",
      uses_cache = true,
      requires_args = true,
      help_category = "diagnostics",
      description = "Health check",
    },
    make_command {
      command = "diagnostics",
      aliases = ["diag"],
      uses_cache = true,
      requires_args = true,
      help_category = "diagnostics",
      description = "Run diagnostics",
    },
    make_command {
      command = "build",
      aliases = ["bd"],
      requires_daemon = true,
      uses_cache = true,
      requires_args = true,
      help_category = "build",
      description = "Build operations",
    },
    make_command {
      command = "auth",
      requires_daemon = true,
      uses_cache = true,
      requires_args = true,
      help_category = "authentication",
      description = "Authentication management",
    },
    make_command {
      command = "login",
      requires_daemon = true,
      uses_cache = true,
      requires_args = true,
      help_category = "authentication",
      description = "Login",
    },
    make_command {
      command = "integrations",
      aliases = ["int"],
      requires_daemon = true,
      uses_cache = true,
      requires_args = true,
      help_category = "integrations",
      description = "Integration management",
    },
    make_command {
      command = "vm",
      requires_daemon = true,
      uses_cache = true,
      requires_args = true,
      help_category = "vm",
      description = "VM management",
    },
  ],
}
