LICENSE
README.md
pyproject.toml
src/iotopen_bridge/__about__.py
src/iotopen_bridge/__init__.py
src/iotopen_bridge/__main__.py
src/iotopen_bridge/py.typed
src/iotopen_bridge.egg-info/PKG-INFO
src/iotopen_bridge.egg-info/SOURCES.txt
src/iotopen_bridge.egg-info/dependency_links.txt
src/iotopen_bridge.egg-info/entry_points.txt
src/iotopen_bridge.egg-info/requires.txt
src/iotopen_bridge.egg-info/top_level.txt
src/iotopen_bridge/adapters/__init__.py
src/iotopen_bridge/adapters/discovery_state.py
src/iotopen_bridge/adapters/ha_discovery_publisher.py
src/iotopen_bridge/adapters/ha_native_publisher.py
src/iotopen_bridge/adapters/ha_service_adapter.py
src/iotopen_bridge/adapters/mqtt_router.py
src/iotopen_bridge/adapters/raw_capture.py
src/iotopen_bridge/api/__init__.py
src/iotopen_bridge/api/app.py
src/iotopen_bridge/api/auth.py
src/iotopen_bridge/api/routes/__init__.py
src/iotopen_bridge/api/routes/commands.py
src/iotopen_bridge/api/routes/health.py
src/iotopen_bridge/api/routes/inventory.py
src/iotopen_bridge/bridge/__init__.py
src/iotopen_bridge/bridge/config.py
src/iotopen_bridge/bridge/health.py
src/iotopen_bridge/bridge/health_http.py
src/iotopen_bridge/bridge/profiles.py
src/iotopen_bridge/bridge/runtime.py
src/iotopen_bridge/bridge/supervisor.py
src/iotopen_bridge/cli/__init__.py
src/iotopen_bridge/cli/main.py
src/iotopen_bridge/cli/run_supervised.py
src/iotopen_bridge/cli/commands/__init__.py
src/iotopen_bridge/cli/commands/dump_inventory.py
src/iotopen_bridge/cli/commands/dynsec_apply.py
src/iotopen_bridge/cli/commands/init_config.py
src/iotopen_bridge/cli/commands/probe_api.py
src/iotopen_bridge/cli/commands/probe_mqtt.py
src/iotopen_bridge/cli/commands/rotate_keys.py
src/iotopen_bridge/cli/commands/run.py
src/iotopen_bridge/cli/commands/show_acl.py
src/iotopen_bridge/controllers/__init__.py
src/iotopen_bridge/controllers/commands.py
src/iotopen_bridge/controllers/inventory.py
src/iotopen_bridge/controllers/reconciliation.py
src/iotopen_bridge/controllers/scheduler.py
src/iotopen_bridge/controllers/telemetry.py
src/iotopen_bridge/converters/__init__.py
src/iotopen_bridge/converters/ha_discovery/__init__.py
src/iotopen_bridge/converters/ha_discovery/builder.py
src/iotopen_bridge/converters/ha_discovery/topics.py
src/iotopen_bridge/converters/mapping/__init__.py
src/iotopen_bridge/converters/mapping/entities.py
src/iotopen_bridge/converters/mapping/function_to_entity.py
src/iotopen_bridge/converters/mapping/function_to_topics.py
src/iotopen_bridge/converters/mapping/ha_props.py
src/iotopen_bridge/converters/mapping/naming.py
src/iotopen_bridge/converters/mapping/state_rules.py
src/iotopen_bridge/converters/normalize/__init__.py
src/iotopen_bridge/converters/normalize/bool.py
src/iotopen_bridge/converters/normalize/datetime.py
src/iotopen_bridge/converters/normalize/enum.py
src/iotopen_bridge/converters/normalize/number.py
src/iotopen_bridge/converters/normalize/units.py
src/iotopen_bridge/converters/payload/__init__.py
src/iotopen_bridge/converters/payload/adapters.py
src/iotopen_bridge/converters/payload/base.py
src/iotopen_bridge/converters/payload/bytes_decoder.py
src/iotopen_bridge/converters/payload/json_decoder.py
src/iotopen_bridge/converters/payload/scalar_decoder.py
src/iotopen_bridge/converters/payload/template_decoder.py
src/iotopen_bridge/core/__init__.py
src/iotopen_bridge/core/backoff.py
src/iotopen_bridge/core/clock.py
src/iotopen_bridge/core/config_base.py
src/iotopen_bridge/core/errors.py
src/iotopen_bridge/core/event_bus.py
src/iotopen_bridge/core/ids.py
src/iotopen_bridge/core/lifecycle.py
src/iotopen_bridge/core/mapping_registry.py
src/iotopen_bridge/core/registry.py
src/iotopen_bridge/core/result.py
src/iotopen_bridge/core/typing.py
src/iotopen_bridge/ha/__init__.py
src/iotopen_bridge/ha/facade.py
src/iotopen_bridge/lynx/__init__.py
src/iotopen_bridge/lynx/auth.py
src/iotopen_bridge/lynx/client.py
src/iotopen_bridge/lynx/endpoints.py
src/iotopen_bridge/lynx/mock_server.py
src/iotopen_bridge/lynx/retry.py
src/iotopen_bridge/models/__init__.py
src/iotopen_bridge/models/events.py
src/iotopen_bridge/models/ha.py
src/iotopen_bridge/models/lynx.py
src/iotopen_bridge/models/mqtt.py
src/iotopen_bridge/models/persistence.py
src/iotopen_bridge/models/security.py
src/iotopen_bridge/observability/__init__.py
src/iotopen_bridge/observability/logging.py
src/iotopen_bridge/observability/metrics.py
src/iotopen_bridge/observability/tracing.py
src/iotopen_bridge/plugins/__init__.py
src/iotopen_bridge/plugins/contracts.py
src/iotopen_bridge/plugins/entrypoints.py
src/iotopen_bridge/plugins/registry.py
src/iotopen_bridge/security/__init__.py
src/iotopen_bridge/security/guardrails.py
src/iotopen_bridge/security/policy_engine.py
src/iotopen_bridge/security/audit/__init__.py
src/iotopen_bridge/security/audit/audit_log.py
src/iotopen_bridge/security/audit/sinks.py
src/iotopen_bridge/security/authn/__init__.py
src/iotopen_bridge/security/authn/api_auth.py
src/iotopen_bridge/security/authn/mqtt_auth.py
src/iotopen_bridge/security/authz/__init__.py
src/iotopen_bridge/security/authz/acl_hinting.py
src/iotopen_bridge/security/authz/dynsec_mosquitto.py
src/iotopen_bridge/security/authz/from_config.py
src/iotopen_bridge/security/authz/policy.py
src/iotopen_bridge/security/authz/rules.py
src/iotopen_bridge/security/crypto/__init__.py
src/iotopen_bridge/security/crypto/envelope.py
src/iotopen_bridge/security/crypto/envelope_store.py
src/iotopen_bridge/security/crypto/hmac_sign.py
src/iotopen_bridge/security/crypto/nonce.py
src/iotopen_bridge/security/rate_limit/__init__.py
src/iotopen_bridge/security/rate_limit/quotas.py
src/iotopen_bridge/security/rate_limit/token_bucket.py
src/iotopen_bridge/security/secrets/__init__.py
src/iotopen_bridge/security/secrets/env.py
src/iotopen_bridge/security/secrets/file.py
src/iotopen_bridge/security/secrets/ha_secrets.py
src/iotopen_bridge/security/secrets/keyring.py
src/iotopen_bridge/security/secrets/provider.py
src/iotopen_bridge/security/secrets/redact.py
src/iotopen_bridge/security/tls/__init__.py
src/iotopen_bridge/security/tls/context.py
src/iotopen_bridge/security/tls/mtls.py
src/iotopen_bridge/security/tls/pinning.py
src/iotopen_bridge/security/tls/profiles.py
src/iotopen_bridge/security/tls/verify.py
src/iotopen_bridge/security/validation/__init__.py
src/iotopen_bridge/security/validation/json_safety.py
src/iotopen_bridge/security/validation/limits.py
src/iotopen_bridge/security/validation/schemas.py
src/iotopen_bridge/storage/__init__.py
src/iotopen_bridge/storage/cache.py
src/iotopen_bridge/storage/migrations.py
src/iotopen_bridge/storage/sqlite_store.py
src/iotopen_bridge/storage/store.py
src/iotopen_bridge/transport/__init__.py
src/iotopen_bridge/transport/http/__init__.py
src/iotopen_bridge/transport/http/aiohttp_client.py
src/iotopen_bridge/transport/http/base.py
src/iotopen_bridge/transport/http/requests_client.py
src/iotopen_bridge/transport/mqtt/__init__.py
src/iotopen_bridge/transport/mqtt/base.py
src/iotopen_bridge/transport/mqtt/ha_mqtt_client.py
src/iotopen_bridge/transport/mqtt/null_client.py
src/iotopen_bridge/transport/mqtt/paho_client.py