{% macro render_setting(setting, id_prefix="") %}
{% set setting_id = (id_prefix ~ "-" if id_prefix else "") ~ setting.key|replace(".", "-") %}
{% if setting.description %}
{% endif %}
{% if setting.ui_element == "textarea" %}
{# Check if this is JSON content that should be expanded into controls #}
{% if setting.value is mapping or (setting.value is string and (setting.value.startswith('{') and setting.value.endswith('}'))) %}
{% if setting.value is string %}
{% set json_value = setting.value|tojson %}
{% else %}
{% set json_value = setting.value %}
{% endif %}
{# Store the original JSON in a hidden field #}
{# Create individual form controls for each JSON property #}
{% for key, value in json_value.items() %}
{% if value is boolean %}
{% elif value is number %}
{% elif value is string and value in ["ITERATION", "NONE"] %}
{% else %}
{% endif %}
{% elif setting.ui_element == "slider" or setting.ui_element == "range" %}
{% set min_value = setting.min_value if setting.min_value is not none else 0 %}
{% set max_value = setting.max_value if setting.max_value is not none else 100 %}
{% set step = setting.step if setting.step is not none else 1 %}
{{ setting.value if setting.value is not none else min_value }}
{% elif setting.ui_element == "number" %}
{% set min_value = setting.min_value if setting.min_value is not none else "" %}
{% set max_value = setting.max_value if setting.max_value is not none else "" %}
{% set step = setting.step if setting.step is not none else 1 %}
{% elif setting.ui_element == "password" %}
{# Render password inputs empty so the saved value never enters
the HTML source (anyone with View Source on the settings page
otherwise reads plaintext API keys). The placeholder
telegraphs configuration state without leaking the secret's
length. autocomplete="new-password" is the standard
cross-browser opt-out from password-manager autofill on
settings forms. To unset a password setting, clear the
source env var or use settings import — submitting an empty
value is a no-op enforced by the route handler. #}
{% set _has_value = setting.value is not none and setting.value != "" %}
{% elif setting.key == "llm.model" or setting.key == "search.tool" %}
{% from "components/custom_dropdown.html" import render_dropdown %}
{{ render_dropdown(
input_id=setting.key,
dropdown_id=setting_id + "-dropdown",
placeholder="Select or enter a value",
label=None,
help_text=setting.description if setting.description else None,
allow_custom=setting.key == "llm.model",
show_refresh=True,
refresh_aria_label="Refresh model list" if setting.key == "llm.model" else "Refresh search engine list",
data_setting_key=setting.key
) }}
{% if setting.key == "llm.model" %}
No model selected. Choose a model from the list, or type one supported by your provider.
{% endif %}
{% else %}
{% if setting.value is mapping or (setting.value is string and (setting.value.startswith('{') and setting.value.endswith('}'))) %}
{% if setting.value is string %}
{% set json_value = setting.value|tojson %}
{% else %}
{% set json_value = setting.value %}
{% endif %}
{# Store the original JSON in a hidden field #}
{# Create individual form controls for each JSON property #}
{% for key, value in json_value.items() %}
{% if value is boolean %}
{% elif value is number %}
{% else %}
{% endif %}
{{ key|replace("_", " ")|title }}
{% endfor %}
{% else %}
{% endif %}
{% endif %}
{% if setting.description and setting.key != "llm.model" and setting.key != "search.tool" and setting.key != "llm.provider" %}
{{ setting.description }}
{% endif %}
{% if setting.key == "notifications.service_url" %}