How-to guides

Extension (not a graph element)

Most Komods are graph elements: the user creates their instances in the graph. An extension, in contrast, belongs to the package, not to the graph:

[Komod("acme.bluetooth", Kind = KomodKind.Extension)]
public sealed class BluetoothKomod : KomodBase<BluetoothSettings> { … }

Behavior

  • It does not appear in the graph palette and cannot be put into the graph.
  • While its package is enabled, KOFA runs exactly one instance of it, with the id ext-<komod id>. It stops when the package is disabled.
  • Its ViewKind.Page view appears in the Extensions menu item (admin).
  • Its settings are kept in the package state, not in the graph.
  • Its [KomodCommand] commands and subscribing to ports work as for a graph instance; the instance is available at /api/instances/ext-<id> (the /api/instances list gives only graph instances).

It suits a system-level service that you do not link with others, for example a connection manager (Bluetooth, network).