2026-01-14 02:59:52 +00:00

5.1 KiB

TypeDialog Configuration Structure

This directory contains TypeDialog forms, templates, and configuration data organized by subsystem.

Directory Organization

.typedialog/
├── core/           # Core subsystem forms (setup, auth, infrastructure)
├── provisioning/   # Main provisioning configuration fragments
└── platform/       # Platform services forms (future)

Why Multiple Subdirectories

Different subsystems have different form requirements:

  1. core/ - Core infrastructure operations

    • System setup wizard
    • Authentication (login, MFA)
    • Infrastructure confirmations (delete, deploy)
    • Users: Developers, operators
  2. provisioning/ - Project provisioning configuration

    • Deployment target selection (docker, k8s, ssh)
    • Database configuration (postgres, mysql, sqlite)
    • Monitoring setup
    • Users: Project setup, CI/CD
  3. platform/ (future) - Platform services

    • Orchestrator configuration
    • Control center setup
    • Service-specific forms
    • Users: Platform administrators

Structure Within Each Subdirectory

Each subdirectory follows this pattern:

{subsystem}/
├── forms/          # TOML form definitions
├── templates/      # Nickel/Jinja2 templates
├── defaults/       # Default configurations
├── constraints/    # Validation rules
└── generated/      # Generated configs (gitignored)

Core Subsystem (core/)

Purpose: Core infrastructure operations (setup, auth, confirmations)

Forms:

  • forms/setup-wizard.toml - Initial system setup
  • forms/auth-login.toml - User authentication
  • forms/mfa-enroll.toml - MFA enrollment
  • forms/infrastructure/*.toml - Delete confirmations (server, cluster, taskserv)

Bash Wrappers (TTY-safe):

  • ../../core/shlib/setup-wizard-tty.sh
  • ../../core/shlib/auth-login-tty.sh
  • ../../core/shlib/mfa-enroll-tty.sh

Usage:

# Run setup wizard
./provisioning/core/shlib/setup-wizard-tty.sh

# Nushell reads result
let config = (open provisioning/.typedialog/core/generated/setup-wizard-result.json | from json)

Provisioning Subsystem (provisioning/)

Purpose: Main provisioning configuration (deployments, databases, monitoring)

Structure:

  • form.toml - Main provisioning form
  • fragments/ - Modular form fragments
    • deployment-*.toml - Docker, K8s, SSH deployments
    • database-*.toml - Database configurations
    • monitoring.toml - Monitoring setup
    • auth-*.toml - Authentication methods
  • constraints.toml - Validation constraints
  • defaults/ - Default values
  • schemas/ - Nickel schemas

Usage:

# Configure provisioning
nu provisioning/.typedialog/provisioning/configure.nu --backend web

Platform Subsystem (platform/ - Future)

Purpose: Platform services configuration

Planned forms:

  • Orchestrator configuration
  • Control center setup
  • MCP server configuration
  • Vault service setup

Status: Structure planned, not yet implemented

Integration with Code

Bash Wrappers (TTY-safe)

Located in: provisioning/core/shlib/*-tty.sh

These wrappers solve Nushell's TTY input limitations by:

  1. Handling interactive input in bash
  2. Calling TypeDialog with proper TTY forwarding
  3. Generating JSON output for Nushell consumption

Pattern:

Bash wrapper → TypeDialog (TTY input) → Nickel config → JSON → Nushell

Nushell Integration

Located in: provisioning/core/nulib/lib_provisioning/

Functions that call the bash wrappers:

  • setup/wizard.nu::run-setup-wizard-interactive
  • plugins/auth.nu::login-interactive
  • plugins/auth.nu::mfa-enroll-interactive

Generated Files

Location: {subsystem}/generated/

Files:

  • *.ncl - Nickel configuration files
  • *.json - JSON exports for Nushell
  • *-defaults.ncl - Default configurations

Note: All generated files are gitignored

Form Naming Conventions

  1. Top-level forms: {purpose}.toml

    • Example: setup-wizard.toml, auth-login.toml
  2. Fragment forms: fragments/{category}-{variant}.toml

    • Example: deployment-docker.toml, database-postgres.toml
  3. Infrastructure forms: forms/infrastructure/{operation}_{resource}_confirm.toml

    • Example: server_delete_confirm.toml

Adding New Forms

For Core Operations

  1. Create form: .typedialog/core/forms/{operation}.toml
  2. Create wrapper: core/shlib/{operation}-tty.sh
  3. Integrate in Nushell: core/nulib/lib_provisioning/

For Provisioning Config

  1. Create fragment: .typedialog/provisioning/fragments/{category}-{variant}.toml
  2. Update main form: .typedialog/provisioning/form.toml
  3. Add defaults: .typedialog/provisioning/defaults/

For Platform Services (Future)

  1. Create subsystem: .typedialog/platform/
  2. Follow same structure as core/ or provisioning/
  3. Document in this README
  • Bash wrappers: provisioning/core/shlib/README.md
  • TypeDialog integration: provisioning/platform/.typedialog/README.md
  • Nushell setup: provisioning/core/nulib/lib_provisioning/setup/wizard.nu

Last Updated: 2025-01-09 Structure Version: 2.0 (Multi-subsystem organization)