ontoref/reflection/forms/config.ncl.j2
Jesús Pérez d59644b96f
feat: unified auth model, project onboarding, install pipeline, config management
The full scope across this batch: POST /sessions key→token exchange, SessionStore dual-index with revoke_by_id, CLI Bearer injection (ONTOREF_TOKEN), ontoref setup
  --gen-keys, install scripts, daemon config form roundtrip, ADR-004/005, on+re self-description update (fully-self-described), and landing page refresh.
2026-03-13 20:56:31 +00:00

134 lines
4.1 KiB
Django/Jinja

# ~/.config/ontoref/config.ncl — ontoref-daemon runtime configuration
#
# Edit interactively:
# ontoref config-edit (typedialog-web roundtrip, browser form)
# Validate:
# nickel typecheck ~/.config/ontoref/config.ncl
# Apply (NCL pipe bootstrap, ADR-004):
# ontoref-daemon-boot
# ontoref-daemon-boot --dry-run # preview composed JSON
let Port = std.contract.from_predicate
(fun p => std.is_number p && p > 1024 && p < 65536)
in
let LogLevel = [| 'trace, 'debug, 'info, 'warn, 'error |] in
let Rotation = [| 'daily, 'hourly, 'never |] in
{
{%- if nickel_import_paths and nickel_import_paths != "" %}
nickel_import_paths = {{ nickel_import_paths | split(pat=",") | map(attribute="trim") | json }},
{%- else %}
nickel_import_paths | Array String = [],
{%- endif %}
daemon = {
port | Port = {{ daemon_port }},
host | String = "{{ daemon_host }}",
},
db = {
enabled | Bool = {{ db_enabled }},
url | String = "{{ db_url }}",
pool_max | Number = {{ db_pool_max }},
},
nats_events = {
enabled | Bool = {{ nats_enabled }},
url | String = "{{ nats_url }}",
streams_config | String = "{{ nats_streams_config }}",
emit | Array String = [],
subscribe | Array String = [],
handlers_dir | String = "{{ nats_handlers_dir }}",
},
log = {
level | LogLevel = '{{ log_level }},
rotation | Rotation = '{{ log_rotation }},
max_files | Number = {{ log_max_files }},
compress | Bool = {{ log_compress }},
archive | String = "{{ log_archive }}",
path | String = "{{ log_path }}",
},
cache = {
path | String = "{{ cache_path }}",
},
ui = {
templates_dir | String = "{{ ui_templates_dir }}",
public_dir | String = "{{ ui_public_dir }}",
logo | String = "ontoref-logo.svg",
tls_cert | String = "{{ ui_tls_cert }}",
tls_key | String = "{{ ui_tls_key }}",
},
mode_run = {
rules | Array {
when | { mode_id | String | optional, actor | String | optional },
allow | Bool,
reason | String,
} = [
{%- if allow_validate_ontology %}
{ when = { mode_id = "validate-ontology" }, allow = true, reason = "validation always allowed" },
{%- else %}
{ when = { mode_id = "validate-ontology" }, allow = false, reason = "validation disabled" },
{%- endif %}
{%- if allow_agent_actor %}
{ when = { actor = "agent" }, allow = true, reason = "agent actor always allowed" },
{%- else %}
{ when = { actor = "agent" }, allow = false, reason = "agent actor restricted" },
{%- endif %}
{%- if allow_ci_actor %}
{ when = { actor = "ci" }, allow = true, reason = "ci actor always allowed" },
{%- else %}
{ when = { actor = "ci" }, allow = false, reason = "ci actor restricted" },
{%- endif %}
],
},
actor_init | Array {
actor | String,
mode | String,
auto_run | Bool,
} = [
{ actor = "agent", mode = "{{ actor_init_agent_mode }}", auto_run = {{ actor_init_agent_auto }} },
{ actor = "developer", mode = "{{ actor_init_developer_mode }}", auto_run = false },
{ actor = "ci", mode = "", auto_run = false },
],
quick_actions | Array {
id | String,
label | String,
icon | String,
category | String,
mode | String,
actors | Array String,
} = [
{
id = "gen-docs",
label = "Generate documentation",
icon = "book-open",
category = "docs",
mode = "generate-mdbook",
actors = ["developer", "agent"],
},
{
id = "sync-onto",
label = "Sync ontology",
icon = "refresh",
category = "sync",
mode = "sync-ontology",
actors = ["developer", "ci", "agent"],
},
{
id = "coder-workflow",
label = "Coder workflow",
icon = "code",
category = "process",
mode = "coder-workflow",
actors = ["developer", "agent"],
},
],
}