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:
-
core/- Core infrastructure operations- System setup wizard
- Authentication (login, MFA)
- Infrastructure confirmations (delete, deploy)
- Users: Developers, operators
-
provisioning/- Project provisioning configuration- Deployment target selection (docker, k8s, ssh)
- Database configuration (postgres, mysql, sqlite)
- Monitoring setup
- Users: Project setup, CI/CD
-
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 setupforms/auth-login.toml- User authenticationforms/mfa-enroll.toml- MFA enrollmentforms/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 formfragments/- Modular form fragmentsdeployment-*.toml- Docker, K8s, SSH deploymentsdatabase-*.toml- Database configurationsmonitoring.toml- Monitoring setupauth-*.toml- Authentication methods
constraints.toml- Validation constraintsdefaults/- Default valuesschemas/- 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:
- Handling interactive input in bash
- Calling TypeDialog with proper TTY forwarding
- 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-interactiveplugins/auth.nu::login-interactiveplugins/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
-
Top-level forms:
{purpose}.toml- Example:
setup-wizard.toml,auth-login.toml
- Example:
-
Fragment forms:
fragments/{category}-{variant}.toml- Example:
deployment-docker.toml,database-postgres.toml
- Example:
-
Infrastructure forms:
forms/infrastructure/{operation}_{resource}_confirm.toml- Example:
server_delete_confirm.toml
- Example:
Adding New Forms
For Core Operations
- Create form:
.typedialog/core/forms/{operation}.toml - Create wrapper:
core/shlib/{operation}-tty.sh - Integrate in Nushell:
core/nulib/lib_provisioning/
For Provisioning Config
- Create fragment:
.typedialog/provisioning/fragments/{category}-{variant}.toml - Update main form:
.typedialog/provisioning/form.toml - Add defaults:
.typedialog/provisioning/defaults/
For Platform Services (Future)
- Create subsystem:
.typedialog/platform/ - Follow same structure as
core/orprovisioning/ - Document in this README
Related Documentation
- 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)