Registry & Bindings
urirun trennt den Paketvertrag (Bindings) vom Ausführungsbaum
(Registry). Dieselben URI-Adressen funktionieren dann in einer Shell, in einem Backend, in einem Flow und in der IFURI App.
Binding-Dokument
Portables JSON: Es beschreibt URI-Routen, Eingabeschemata (JSON Schema) und die Adapter-Konfiguration.
{
"version": "urirun.bindings.v2",
"bindings": {
"report://local/render/pdf": {
"kind": "command",
"adapter": "argv-template",
"inputSchema": {
"type": "object",
"required": ["input", "output"],
"properties": {
"input": { "type": "string" },
"output": { "type": "string" }
},
"additionalProperties": false
},
"argv": ["python3", "render.py", "{input}", "{output}"]
}
}
}
Registry
Die Registry wird aus einem oder mehreren Binding-Dokumenten kompiliert:
urirun compile bindings.v2.json --out registry.json
Die Runtime dispatcht ausschließlich aus der Registry. Das macht eine generierte Registry prüfbar, reproduzierbar und sicher zwischen Shell-Clients, HTTP-Diensten, Browser-Konsolen, Docker-Orchestratoren und IFURI-Flows übergebbar.
Routenidentität
Die vollständige URI ist entscheidend. Eine Route:
device://device-01/led/command/set
kann koexistieren mit:
device://device-02/led/command/set
weil das target Teil der Routenidentität ist. Das vermeidet Konflikte, wenn mehrere
LAN-Dienste dieselbe Operationsform für verschiedene Geräte/Knoten bereitstellen.
Konfliktrichtlinie
- explizite Binding-Dateien haben Vorrang vor abgeleiteten Skript-/Paket-Routen,
- doppelte vollständige URIs schlagen bei der Validierung fehl, sofern der Scanner sie nicht als dieselbe Quelle kennzeichnet,
- generierte Dateien nach
generated/oder.urirun/schreiben, sie nicht als Quelle bearbeiten, - bei Scanner-Einsatz bleiben die Quellartefakte die maßgebliche Wahrheitsquelle.