Several node-type editors (DataPoint, SMTP, MQTT, OutboundWebHook, Lambda) each hold a meta.inputs: List<NodeIdentity> field on their SourceMetaData subclass, but their Settings-tab editors provided no UI to add or remove entries from that list. The field existed in the shared SDK and was even consumed for display in some chip faces (e.g. WebhookConfigDisplayContent already read meta.inputs.first()), but users had no way to wire inputs through the UI.
composeApp/.../executor/ExecutorEditComponents.kt — added a new public InputNodeSelectorSection composable that displays the current inputs list (each entry as its ROW face + ✕ remove button) and an “Add Input Node” button that opens the existing SourceListWithBackNavigation picker. The composable manages its own picker-visible state so it can be dropped into any editor Column without requiring callers to add separate state.composeApp/.../datapoint/DataPointView.kt — added InputNodeSelectorSection after RetentionPicker in EditDataPoint; added missing import krill.zone.app.krillapp.executor.*.composeApp/.../executor/smtp/EditSMTP.kt — added InputNodeSelectorSection at the bottom of the settings Column.composeApp/.../mqtt/EditMqtt.kt — added InputNodeSelectorSection conditionally when meta.action == MqttAction.PUB (inputs are only meaningful when publishing).composeApp/.../executor/webhook/EditOutboundWebHook.kt — added InputNodeSelectorSection conditionally when meta.method == POST || PUT (only body-carrying methods use input data).composeApp/.../executor/lambda/EditLambda.kt — added InputNodeSelectorSection at the end of the main editor Column.SourceMetaData subclass in the SDK, simultaneously check every editor that touches that type for a corresponding UI control. A field without a UI path is invisible to users.meta.inputs.first()), treat that as a signal to verify the editor also allows writing that field.InputNodeSelectorSection composable is now the canonical pattern for inputs management — wire new node types through it rather than building bespoke list UIs.