# syntaxis/.provctl/gen/values.toml
# Project-specific default values for syntaxis deployment generator
#
# These values override the provctl defaults and are specific to syntaxis
# They incorporate actual service configurations from the syntaxis codebase

[project]
name = "syntaxis"
version = "1.0.0"
description = "Syntaxis: Standalone project management platform with multi-interface support"

# Syntaxis-specific service configurations
# These match the actual crates and binaries in the workspace

[services.cli]
enabled = true
name = "syntaxis-cli"
display_name = "CLI Tool"
type = "cli"
platform_support = ["linux", "macos", "windows"]
min_disk_space_mb = 100
min_memory_mb = 128
background_service = false
config_location = "~/.config/syntaxis"
database_required = true
database_types = ["sqlite", "surrealdb"]

[services.tui]
enabled = true
name = "syntaxis-tui"
display_name = "Terminal UI"
type = "tui"
platform_support = ["linux", "macos"]
min_disk_space_mb = 100
min_memory_mb = 256
background_service = false
config_location = "~/.config/syntaxis"
database_required = true
database_types = ["sqlite", "surrealdb"]
requires = ["cli"]

[services.api]
enabled = true
name = "syntaxis-api"
display_name = "REST API"
type = "server"
port = 3000
platform_support = ["linux", "macos", "windows"]
min_disk_space_mb = 150
min_memory_mb = 512
background_service = true
config_location = "~/.config/syntaxis"
database_required = true
database_types = ["sqlite", "surrealdb"]
restart_policy = "on-failure"
restart_delay_seconds = 5
requires = ["cli"]

[services.api.health_check]
type = "http"
endpoint = "http://127.0.0.1:3000/health"
method = "GET"
expected_status = 200
interval_seconds = 10
timeout_seconds = 5

[services.dashboard]
enabled = true
name = "syntaxis-dashboard"
display_name = "Web Dashboard"
type = "web"
port = 8080
platform_support = ["linux", "macos", "windows"]
min_disk_space_mb = 100
min_memory_mb = 256
background_service = true
config_location = "~/.config/syntaxis"
database_required = false
restart_policy = "on-failure"
restart_delay_seconds = 5
requires = ["api"]

[services.dashboard.health_check]
type = "http"
endpoint = "http://127.0.0.1:8080"
method = "GET"
expected_status = 200
interval_seconds = 10
timeout_seconds = 5

# Database configurations for syntaxis
[databases]
supported = ["sqlite", "surrealdb", "postgres"]
default = "sqlite"

[databases.sqlite]
type = "sqlite"
path = "/var/lib/syntaxis/db.sqlite"
platform_support = ["linux", "macos", "windows"]

[databases.surrealdb]
type = "surrealdb"
host = "localhost"
port = 8000
platform_support = ["linux", "macos"]

[databases.postgres]
type = "postgres"
host = "localhost"
port = 5432
user = "syntaxis"
platform_support = ["linux", "macos"]

# Cache configuration (optional for syntaxis)
[cache]
enabled = false
default = "redis"

[cache.redis]
type = "redis"
host = "localhost"
port = 6379
platform_support = ["linux", "macos"]

[cache.memcached]
type = "memcached"
host = "localhost"
port = 11211
platform_support = ["linux", "macos"]

# Deployment presets for syntaxis
[presets.local]
name = "local"
description = "CLI Only - Command-line only, manual execution"
services_enabled = ["cli"]
manager = "manual"
database_type = "sqlite"
cache_enabled = false

[presets.dev]
name = "dev"
description = "Development - Full development stack with provctl"
services_enabled = ["cli", "tui", "api", "dashboard"]
manager = "provctl"
database_type = "sqlite"
cache_enabled = false
restart_policy = "on-failure"

[presets.staging]
name = "staging"
description = "Staging - Multi-machine deployment"
services_enabled = ["cli", "api", "dashboard"]
manager = "provisioning"
database_type = "postgres"
cache_enabled = false
restart_policy = "on-failure"

[presets.production]
name = "production"
description = "Production - HA production deployment"
services_enabled = ["api", "dashboard"]
manager = "provisioning"
database_type = "postgres"
cache_enabled = false
restart_policy = "always"
high_availability = true

# Port mappings for syntaxis
[ports]
api = 3000
dashboard = 8080
database_postgres = 5432
database_surrealdb = 8000
cache_redis = 6379
cache_memcached = 11211

# Platform-specific defaults
[platforms.linux]
manager = "systemd"
config_dir = "~/.config"
data_dir = "~/.local/share"
log_dir = "~/.local/share/logs"

[platforms.macos]
manager = "launchd"
config_dir = "~/Library/Application Support"
data_dir = "~/Library/Application Support"
log_dir = "~/Library/Logs"

[platforms.windows]
manager = "windows-service"
config_dir = "%APPDATA%"
data_dir = "%APPDATA%"
log_dir = "%APPDATA%\\Logs"

# Build configuration for syntaxis
[build]
rust_edition = "2021"
msrv = "1.75"

# Templates used by syntaxis generator
[templates]
# Template names should match filenames in gen/templates/
kcl = ["schemas.k.tera", "defaults.k.tera", "services.k.tera", "presets.k.tera", "deployment.k.tera"]
tera = ["provisioning-config.j2.tera", "provctl-config.j2.tera", "installer-settings.j2.tera"]
nushell = ["export-config.nu.tera"]

# Validation rules for generated code
[validation]
enforce_rustfmt = true
enforce_kcl_style = true
enforce_nushell_style = true

# Minimum requirements for any syntaxis deployment
min_memory_mb = 256
min_disk_space_mb = 150

# Additional syntaxis-specific settings
[syntaxis]
# Feature flags for what to generate
include_docker_configs = false
include_kubernetes_manifests = false
enable_provisioning_integration = true

# VAPORA integration (syntaxis as taskservs in provisioning)
[syntaxis.vapora]
enabled = false
description = "Integration as VAPORA taskservs"
taskservs_mode = "full"  # Options: "full", "lite"
