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