omnibase_infra 0.2.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- omnibase_infra/__init__.py +101 -0
- omnibase_infra/adapters/adapter_onex_tool_execution.py +451 -0
- omnibase_infra/capabilities/__init__.py +15 -0
- omnibase_infra/capabilities/capability_inference_rules.py +211 -0
- omnibase_infra/capabilities/contract_capability_extractor.py +221 -0
- omnibase_infra/capabilities/intent_type_extractor.py +160 -0
- omnibase_infra/cli/__init__.py +1 -0
- omnibase_infra/cli/commands.py +216 -0
- omnibase_infra/clients/__init__.py +0 -0
- omnibase_infra/configs/widget_mapping.yaml +176 -0
- omnibase_infra/constants_topic_patterns.py +26 -0
- omnibase_infra/contracts/handlers/filesystem/handler_contract.yaml +264 -0
- omnibase_infra/contracts/handlers/mcp/handler_contract.yaml +141 -0
- omnibase_infra/decorators/__init__.py +29 -0
- omnibase_infra/decorators/allow_any.py +109 -0
- omnibase_infra/dlq/__init__.py +90 -0
- omnibase_infra/dlq/constants_dlq.py +57 -0
- omnibase_infra/dlq/models/__init__.py +26 -0
- omnibase_infra/dlq/models/enum_replay_status.py +37 -0
- omnibase_infra/dlq/models/model_dlq_replay_record.py +135 -0
- omnibase_infra/dlq/models/model_dlq_tracking_config.py +184 -0
- omnibase_infra/dlq/service_dlq_tracking.py +611 -0
- omnibase_infra/enums/__init__.py +132 -0
- omnibase_infra/enums/enum_any_type_violation.py +104 -0
- omnibase_infra/enums/enum_backend_type.py +27 -0
- omnibase_infra/enums/enum_capture_outcome.py +42 -0
- omnibase_infra/enums/enum_capture_state.py +88 -0
- omnibase_infra/enums/enum_chain_violation_type.py +119 -0
- omnibase_infra/enums/enum_circuit_state.py +51 -0
- omnibase_infra/enums/enum_confirmation_event_type.py +27 -0
- omnibase_infra/enums/enum_consumer_group_purpose.py +92 -0
- omnibase_infra/enums/enum_contract_type.py +84 -0
- omnibase_infra/enums/enum_dedupe_strategy.py +46 -0
- omnibase_infra/enums/enum_dispatch_status.py +191 -0
- omnibase_infra/enums/enum_environment.py +46 -0
- omnibase_infra/enums/enum_execution_shape_violation.py +103 -0
- omnibase_infra/enums/enum_handler_error_type.py +111 -0
- omnibase_infra/enums/enum_handler_loader_error.py +178 -0
- omnibase_infra/enums/enum_handler_source_mode.py +86 -0
- omnibase_infra/enums/enum_handler_source_type.py +87 -0
- omnibase_infra/enums/enum_handler_type.py +77 -0
- omnibase_infra/enums/enum_handler_type_category.py +61 -0
- omnibase_infra/enums/enum_infra_transport_type.py +73 -0
- omnibase_infra/enums/enum_introspection_reason.py +154 -0
- omnibase_infra/enums/enum_kafka_acks.py +99 -0
- omnibase_infra/enums/enum_message_category.py +213 -0
- omnibase_infra/enums/enum_node_archetype.py +74 -0
- omnibase_infra/enums/enum_node_output_type.py +185 -0
- omnibase_infra/enums/enum_non_retryable_error_category.py +224 -0
- omnibase_infra/enums/enum_policy_type.py +32 -0
- omnibase_infra/enums/enum_registration_state.py +261 -0
- omnibase_infra/enums/enum_registration_status.py +33 -0
- omnibase_infra/enums/enum_registry_response_status.py +28 -0
- omnibase_infra/enums/enum_response_status.py +26 -0
- omnibase_infra/enums/enum_retry_error_category.py +98 -0
- omnibase_infra/enums/enum_security_rule_id.py +103 -0
- omnibase_infra/enums/enum_selection_strategy.py +91 -0
- omnibase_infra/enums/enum_topic_standard.py +42 -0
- omnibase_infra/enums/enum_validation_severity.py +78 -0
- omnibase_infra/errors/__init__.py +160 -0
- omnibase_infra/errors/error_architecture_violation.py +152 -0
- omnibase_infra/errors/error_binding_resolution.py +128 -0
- omnibase_infra/errors/error_chain_propagation.py +188 -0
- omnibase_infra/errors/error_compute_registry.py +95 -0
- omnibase_infra/errors/error_consul.py +132 -0
- omnibase_infra/errors/error_container_wiring.py +243 -0
- omnibase_infra/errors/error_event_bus_registry.py +105 -0
- omnibase_infra/errors/error_infra.py +610 -0
- omnibase_infra/errors/error_message_type_registry.py +101 -0
- omnibase_infra/errors/error_policy_registry.py +115 -0
- omnibase_infra/errors/error_vault.py +123 -0
- omnibase_infra/event_bus/__init__.py +72 -0
- omnibase_infra/event_bus/configs/kafka_event_bus_config.yaml +84 -0
- omnibase_infra/event_bus/event_bus_inmemory.py +797 -0
- omnibase_infra/event_bus/event_bus_kafka.py +1716 -0
- omnibase_infra/event_bus/mixin_kafka_broadcast.py +180 -0
- omnibase_infra/event_bus/mixin_kafka_dlq.py +771 -0
- omnibase_infra/event_bus/models/__init__.py +29 -0
- omnibase_infra/event_bus/models/config/__init__.py +20 -0
- omnibase_infra/event_bus/models/config/model_kafka_event_bus_config.py +693 -0
- omnibase_infra/event_bus/models/model_dlq_event.py +206 -0
- omnibase_infra/event_bus/models/model_dlq_metrics.py +304 -0
- omnibase_infra/event_bus/models/model_event_headers.py +115 -0
- omnibase_infra/event_bus/models/model_event_message.py +60 -0
- omnibase_infra/event_bus/testing/__init__.py +26 -0
- omnibase_infra/event_bus/testing/adapter_protocol_event_publisher_inmemory.py +418 -0
- omnibase_infra/event_bus/testing/model_publisher_metrics.py +64 -0
- omnibase_infra/event_bus/topic_constants.py +376 -0
- omnibase_infra/handlers/__init__.py +82 -0
- omnibase_infra/handlers/filesystem/__init__.py +48 -0
- omnibase_infra/handlers/filesystem/enum_file_system_operation.py +35 -0
- omnibase_infra/handlers/filesystem/model_file_system_request.py +298 -0
- omnibase_infra/handlers/filesystem/model_file_system_result.py +166 -0
- omnibase_infra/handlers/handler_consul.py +795 -0
- omnibase_infra/handlers/handler_db.py +1046 -0
- omnibase_infra/handlers/handler_filesystem.py +1478 -0
- omnibase_infra/handlers/handler_graph.py +2015 -0
- omnibase_infra/handlers/handler_http.py +926 -0
- omnibase_infra/handlers/handler_intent.py +387 -0
- omnibase_infra/handlers/handler_manifest_persistence.contract.yaml +184 -0
- omnibase_infra/handlers/handler_manifest_persistence.py +1539 -0
- omnibase_infra/handlers/handler_mcp.py +1430 -0
- omnibase_infra/handlers/handler_qdrant.py +1076 -0
- omnibase_infra/handlers/handler_vault.py +428 -0
- omnibase_infra/handlers/mcp/__init__.py +19 -0
- omnibase_infra/handlers/mcp/adapter_onex_to_mcp.py +446 -0
- omnibase_infra/handlers/mcp/protocols.py +178 -0
- omnibase_infra/handlers/mcp/transport_streamable_http.py +352 -0
- omnibase_infra/handlers/mixins/__init__.py +47 -0
- omnibase_infra/handlers/mixins/mixin_consul_initialization.py +349 -0
- omnibase_infra/handlers/mixins/mixin_consul_kv.py +338 -0
- omnibase_infra/handlers/mixins/mixin_consul_service.py +542 -0
- omnibase_infra/handlers/mixins/mixin_consul_topic_index.py +585 -0
- omnibase_infra/handlers/mixins/mixin_vault_initialization.py +338 -0
- omnibase_infra/handlers/mixins/mixin_vault_retry.py +412 -0
- omnibase_infra/handlers/mixins/mixin_vault_secrets.py +450 -0
- omnibase_infra/handlers/mixins/mixin_vault_token.py +365 -0
- omnibase_infra/handlers/models/__init__.py +286 -0
- omnibase_infra/handlers/models/consul/__init__.py +81 -0
- omnibase_infra/handlers/models/consul/enum_consul_operation_type.py +57 -0
- omnibase_infra/handlers/models/consul/model_consul_deregister_payload.py +51 -0
- omnibase_infra/handlers/models/consul/model_consul_handler_config.py +153 -0
- omnibase_infra/handlers/models/consul/model_consul_handler_payload.py +89 -0
- omnibase_infra/handlers/models/consul/model_consul_kv_get_found_payload.py +55 -0
- omnibase_infra/handlers/models/consul/model_consul_kv_get_not_found_payload.py +49 -0
- omnibase_infra/handlers/models/consul/model_consul_kv_get_recurse_payload.py +50 -0
- omnibase_infra/handlers/models/consul/model_consul_kv_item.py +33 -0
- omnibase_infra/handlers/models/consul/model_consul_kv_put_payload.py +41 -0
- omnibase_infra/handlers/models/consul/model_consul_register_payload.py +53 -0
- omnibase_infra/handlers/models/consul/model_consul_retry_config.py +66 -0
- omnibase_infra/handlers/models/consul/model_payload_consul.py +66 -0
- omnibase_infra/handlers/models/consul/registry_payload_consul.py +214 -0
- omnibase_infra/handlers/models/graph/__init__.py +35 -0
- omnibase_infra/handlers/models/graph/enum_graph_operation_type.py +20 -0
- omnibase_infra/handlers/models/graph/model_graph_execute_payload.py +38 -0
- omnibase_infra/handlers/models/graph/model_graph_handler_config.py +54 -0
- omnibase_infra/handlers/models/graph/model_graph_handler_payload.py +44 -0
- omnibase_infra/handlers/models/graph/model_graph_query_payload.py +40 -0
- omnibase_infra/handlers/models/graph/model_graph_record.py +22 -0
- omnibase_infra/handlers/models/http/__init__.py +50 -0
- omnibase_infra/handlers/models/http/enum_http_operation_type.py +29 -0
- omnibase_infra/handlers/models/http/model_http_body_content.py +45 -0
- omnibase_infra/handlers/models/http/model_http_get_payload.py +88 -0
- omnibase_infra/handlers/models/http/model_http_handler_payload.py +90 -0
- omnibase_infra/handlers/models/http/model_http_post_payload.py +88 -0
- omnibase_infra/handlers/models/http/model_payload_http.py +66 -0
- omnibase_infra/handlers/models/http/registry_payload_http.py +212 -0
- omnibase_infra/handlers/models/mcp/__init__.py +23 -0
- omnibase_infra/handlers/models/mcp/enum_mcp_operation_type.py +24 -0
- omnibase_infra/handlers/models/mcp/model_mcp_handler_config.py +40 -0
- omnibase_infra/handlers/models/mcp/model_mcp_tool_call.py +32 -0
- omnibase_infra/handlers/models/mcp/model_mcp_tool_result.py +45 -0
- omnibase_infra/handlers/models/model_consul_handler_response.py +96 -0
- omnibase_infra/handlers/models/model_db_describe_response.py +83 -0
- omnibase_infra/handlers/models/model_db_query_payload.py +95 -0
- omnibase_infra/handlers/models/model_db_query_response.py +60 -0
- omnibase_infra/handlers/models/model_filesystem_config.py +98 -0
- omnibase_infra/handlers/models/model_filesystem_delete_payload.py +54 -0
- omnibase_infra/handlers/models/model_filesystem_delete_result.py +77 -0
- omnibase_infra/handlers/models/model_filesystem_directory_entry.py +75 -0
- omnibase_infra/handlers/models/model_filesystem_ensure_directory_payload.py +54 -0
- omnibase_infra/handlers/models/model_filesystem_ensure_directory_result.py +60 -0
- omnibase_infra/handlers/models/model_filesystem_list_directory_payload.py +60 -0
- omnibase_infra/handlers/models/model_filesystem_list_directory_result.py +68 -0
- omnibase_infra/handlers/models/model_filesystem_read_payload.py +62 -0
- omnibase_infra/handlers/models/model_filesystem_read_result.py +61 -0
- omnibase_infra/handlers/models/model_filesystem_write_payload.py +70 -0
- omnibase_infra/handlers/models/model_filesystem_write_result.py +55 -0
- omnibase_infra/handlers/models/model_graph_handler_response.py +98 -0
- omnibase_infra/handlers/models/model_handler_response.py +103 -0
- omnibase_infra/handlers/models/model_http_handler_response.py +101 -0
- omnibase_infra/handlers/models/model_manifest_metadata.py +75 -0
- omnibase_infra/handlers/models/model_manifest_persistence_config.py +62 -0
- omnibase_infra/handlers/models/model_manifest_query_payload.py +90 -0
- omnibase_infra/handlers/models/model_manifest_query_result.py +97 -0
- omnibase_infra/handlers/models/model_manifest_retrieve_payload.py +44 -0
- omnibase_infra/handlers/models/model_manifest_retrieve_result.py +98 -0
- omnibase_infra/handlers/models/model_manifest_store_payload.py +47 -0
- omnibase_infra/handlers/models/model_manifest_store_result.py +67 -0
- omnibase_infra/handlers/models/model_operation_context.py +187 -0
- omnibase_infra/handlers/models/model_qdrant_handler_response.py +98 -0
- omnibase_infra/handlers/models/model_retry_state.py +162 -0
- omnibase_infra/handlers/models/model_vault_handler_response.py +98 -0
- omnibase_infra/handlers/models/qdrant/__init__.py +44 -0
- omnibase_infra/handlers/models/qdrant/enum_qdrant_operation_type.py +26 -0
- omnibase_infra/handlers/models/qdrant/model_qdrant_collection_payload.py +42 -0
- omnibase_infra/handlers/models/qdrant/model_qdrant_delete_payload.py +36 -0
- omnibase_infra/handlers/models/qdrant/model_qdrant_handler_config.py +42 -0
- omnibase_infra/handlers/models/qdrant/model_qdrant_handler_payload.py +54 -0
- omnibase_infra/handlers/models/qdrant/model_qdrant_search_payload.py +42 -0
- omnibase_infra/handlers/models/qdrant/model_qdrant_search_result.py +30 -0
- omnibase_infra/handlers/models/qdrant/model_qdrant_upsert_payload.py +36 -0
- omnibase_infra/handlers/models/vault/__init__.py +69 -0
- omnibase_infra/handlers/models/vault/enum_vault_operation_type.py +35 -0
- omnibase_infra/handlers/models/vault/model_payload_vault.py +66 -0
- omnibase_infra/handlers/models/vault/model_vault_delete_payload.py +57 -0
- omnibase_infra/handlers/models/vault/model_vault_handler_config.py +148 -0
- omnibase_infra/handlers/models/vault/model_vault_handler_payload.py +101 -0
- omnibase_infra/handlers/models/vault/model_vault_list_payload.py +58 -0
- omnibase_infra/handlers/models/vault/model_vault_renew_token_payload.py +67 -0
- omnibase_infra/handlers/models/vault/model_vault_retry_config.py +66 -0
- omnibase_infra/handlers/models/vault/model_vault_secret_payload.py +106 -0
- omnibase_infra/handlers/models/vault/model_vault_write_payload.py +66 -0
- omnibase_infra/handlers/models/vault/registry_payload_vault.py +213 -0
- omnibase_infra/handlers/registration_storage/__init__.py +43 -0
- omnibase_infra/handlers/registration_storage/handler_registration_storage_mock.py +392 -0
- omnibase_infra/handlers/registration_storage/handler_registration_storage_postgres.py +922 -0
- omnibase_infra/handlers/registration_storage/models/__init__.py +23 -0
- omnibase_infra/handlers/registration_storage/models/model_delete_registration_request.py +58 -0
- omnibase_infra/handlers/registration_storage/models/model_update_registration_request.py +73 -0
- omnibase_infra/handlers/registration_storage/protocol_registration_persistence.py +191 -0
- omnibase_infra/handlers/service_discovery/__init__.py +43 -0
- omnibase_infra/handlers/service_discovery/handler_service_discovery_consul.py +1051 -0
- omnibase_infra/handlers/service_discovery/handler_service_discovery_mock.py +258 -0
- omnibase_infra/handlers/service_discovery/models/__init__.py +22 -0
- omnibase_infra/handlers/service_discovery/models/model_discovery_result.py +64 -0
- omnibase_infra/handlers/service_discovery/models/model_registration_result.py +138 -0
- omnibase_infra/handlers/service_discovery/models/model_service_info.py +109 -0
- omnibase_infra/handlers/service_discovery/protocol_discovery_operations.py +170 -0
- omnibase_infra/idempotency/__init__.py +94 -0
- omnibase_infra/idempotency/models/__init__.py +43 -0
- omnibase_infra/idempotency/models/model_idempotency_check_result.py +85 -0
- omnibase_infra/idempotency/models/model_idempotency_guard_config.py +130 -0
- omnibase_infra/idempotency/models/model_idempotency_record.py +86 -0
- omnibase_infra/idempotency/models/model_idempotency_store_health_check_result.py +81 -0
- omnibase_infra/idempotency/models/model_idempotency_store_metrics.py +140 -0
- omnibase_infra/idempotency/models/model_postgres_idempotency_store_config.py +299 -0
- omnibase_infra/idempotency/protocol_idempotency_store.py +184 -0
- omnibase_infra/idempotency/store_inmemory.py +265 -0
- omnibase_infra/idempotency/store_postgres.py +923 -0
- omnibase_infra/infrastructure/__init__.py +0 -0
- omnibase_infra/migrations/001_create_event_ledger.sql +166 -0
- omnibase_infra/migrations/001_drop_event_ledger.sql +18 -0
- omnibase_infra/mixins/__init__.py +71 -0
- omnibase_infra/mixins/mixin_async_circuit_breaker.py +656 -0
- omnibase_infra/mixins/mixin_dict_like_accessors.py +146 -0
- omnibase_infra/mixins/mixin_envelope_extraction.py +119 -0
- omnibase_infra/mixins/mixin_node_introspection.py +2670 -0
- omnibase_infra/mixins/mixin_retry_execution.py +386 -0
- omnibase_infra/mixins/protocol_circuit_breaker_aware.py +133 -0
- omnibase_infra/models/__init__.py +144 -0
- omnibase_infra/models/bindings/__init__.py +59 -0
- omnibase_infra/models/bindings/constants.py +144 -0
- omnibase_infra/models/bindings/model_binding_resolution_result.py +103 -0
- omnibase_infra/models/bindings/model_operation_binding.py +44 -0
- omnibase_infra/models/bindings/model_operation_bindings_subcontract.py +152 -0
- omnibase_infra/models/bindings/model_parsed_binding.py +52 -0
- omnibase_infra/models/corpus/__init__.py +17 -0
- omnibase_infra/models/corpus/model_capture_config.py +133 -0
- omnibase_infra/models/corpus/model_capture_result.py +86 -0
- omnibase_infra/models/discovery/__init__.py +42 -0
- omnibase_infra/models/discovery/model_dependency_spec.py +319 -0
- omnibase_infra/models/discovery/model_discovered_capabilities.py +50 -0
- omnibase_infra/models/discovery/model_introspection_config.py +330 -0
- omnibase_infra/models/discovery/model_introspection_performance_metrics.py +169 -0
- omnibase_infra/models/discovery/model_introspection_task_config.py +116 -0
- omnibase_infra/models/dispatch/__init__.py +155 -0
- omnibase_infra/models/dispatch/model_debug_trace_snapshot.py +114 -0
- omnibase_infra/models/dispatch/model_dispatch_context.py +439 -0
- omnibase_infra/models/dispatch/model_dispatch_error.py +336 -0
- omnibase_infra/models/dispatch/model_dispatch_log_context.py +400 -0
- omnibase_infra/models/dispatch/model_dispatch_metadata.py +228 -0
- omnibase_infra/models/dispatch/model_dispatch_metrics.py +496 -0
- omnibase_infra/models/dispatch/model_dispatch_outcome.py +317 -0
- omnibase_infra/models/dispatch/model_dispatch_outputs.py +231 -0
- omnibase_infra/models/dispatch/model_dispatch_result.py +436 -0
- omnibase_infra/models/dispatch/model_dispatch_route.py +279 -0
- omnibase_infra/models/dispatch/model_dispatcher_metrics.py +275 -0
- omnibase_infra/models/dispatch/model_dispatcher_registration.py +352 -0
- omnibase_infra/models/dispatch/model_materialized_dispatch.py +141 -0
- omnibase_infra/models/dispatch/model_parsed_topic.py +135 -0
- omnibase_infra/models/dispatch/model_topic_parser.py +725 -0
- omnibase_infra/models/dispatch/model_tracing_context.py +285 -0
- omnibase_infra/models/errors/__init__.py +45 -0
- omnibase_infra/models/errors/model_handler_validation_error.py +594 -0
- omnibase_infra/models/errors/model_infra_error_context.py +99 -0
- omnibase_infra/models/errors/model_message_type_registry_error_context.py +71 -0
- omnibase_infra/models/errors/model_timeout_error_context.py +110 -0
- omnibase_infra/models/handlers/__init__.py +80 -0
- omnibase_infra/models/handlers/model_bootstrap_handler_descriptor.py +162 -0
- omnibase_infra/models/handlers/model_contract_discovery_result.py +82 -0
- omnibase_infra/models/handlers/model_handler_descriptor.py +200 -0
- omnibase_infra/models/handlers/model_handler_identifier.py +215 -0
- omnibase_infra/models/handlers/model_handler_source_config.py +220 -0
- omnibase_infra/models/health/__init__.py +9 -0
- omnibase_infra/models/health/model_health_check_result.py +40 -0
- omnibase_infra/models/lifecycle/__init__.py +39 -0
- omnibase_infra/models/logging/__init__.py +51 -0
- omnibase_infra/models/logging/model_log_context.py +756 -0
- omnibase_infra/models/mcp/__init__.py +15 -0
- omnibase_infra/models/mcp/model_mcp_contract_config.py +80 -0
- omnibase_infra/models/mcp/model_mcp_server_config.py +67 -0
- omnibase_infra/models/mcp/model_mcp_tool_definition.py +73 -0
- omnibase_infra/models/mcp/model_mcp_tool_parameter.py +35 -0
- omnibase_infra/models/model_node_identity.py +126 -0
- omnibase_infra/models/model_retry_error_classification.py +78 -0
- omnibase_infra/models/projection/__init__.py +43 -0
- omnibase_infra/models/projection/model_capability_fields.py +112 -0
- omnibase_infra/models/projection/model_registration_projection.py +434 -0
- omnibase_infra/models/projection/model_registration_snapshot.py +322 -0
- omnibase_infra/models/projection/model_sequence_info.py +182 -0
- omnibase_infra/models/projection/model_snapshot_topic_config.py +591 -0
- omnibase_infra/models/projectors/__init__.py +41 -0
- omnibase_infra/models/projectors/model_projector_column.py +289 -0
- omnibase_infra/models/projectors/model_projector_discovery_result.py +65 -0
- omnibase_infra/models/projectors/model_projector_index.py +270 -0
- omnibase_infra/models/projectors/model_projector_schema.py +415 -0
- omnibase_infra/models/projectors/model_projector_validation_error.py +63 -0
- omnibase_infra/models/projectors/util_sql_identifiers.py +115 -0
- omnibase_infra/models/registration/__init__.py +68 -0
- omnibase_infra/models/registration/commands/__init__.py +15 -0
- omnibase_infra/models/registration/commands/model_node_registration_acked.py +108 -0
- omnibase_infra/models/registration/events/__init__.py +56 -0
- omnibase_infra/models/registration/events/model_node_became_active.py +103 -0
- omnibase_infra/models/registration/events/model_node_liveness_expired.py +103 -0
- omnibase_infra/models/registration/events/model_node_registration_accepted.py +98 -0
- omnibase_infra/models/registration/events/model_node_registration_ack_received.py +98 -0
- omnibase_infra/models/registration/events/model_node_registration_ack_timed_out.py +112 -0
- omnibase_infra/models/registration/events/model_node_registration_initiated.py +107 -0
- omnibase_infra/models/registration/events/model_node_registration_rejected.py +104 -0
- omnibase_infra/models/registration/model_event_bus_topic_entry.py +59 -0
- omnibase_infra/models/registration/model_introspection_metrics.py +253 -0
- omnibase_infra/models/registration/model_node_capabilities.py +190 -0
- omnibase_infra/models/registration/model_node_event_bus_config.py +99 -0
- omnibase_infra/models/registration/model_node_heartbeat_event.py +126 -0
- omnibase_infra/models/registration/model_node_introspection_event.py +195 -0
- omnibase_infra/models/registration/model_node_metadata.py +79 -0
- omnibase_infra/models/registration/model_node_registration.py +162 -0
- omnibase_infra/models/registration/model_node_registration_record.py +162 -0
- omnibase_infra/models/registry/__init__.py +29 -0
- omnibase_infra/models/registry/model_domain_constraint.py +202 -0
- omnibase_infra/models/registry/model_message_type_entry.py +271 -0
- omnibase_infra/models/resilience/__init__.py +9 -0
- omnibase_infra/models/resilience/model_circuit_breaker_config.py +227 -0
- omnibase_infra/models/routing/__init__.py +25 -0
- omnibase_infra/models/routing/model_routing_entry.py +52 -0
- omnibase_infra/models/routing/model_routing_subcontract.py +70 -0
- omnibase_infra/models/runtime/__init__.py +49 -0
- omnibase_infra/models/runtime/model_contract_security_config.py +41 -0
- omnibase_infra/models/runtime/model_discovery_error.py +81 -0
- omnibase_infra/models/runtime/model_discovery_result.py +162 -0
- omnibase_infra/models/runtime/model_discovery_warning.py +74 -0
- omnibase_infra/models/runtime/model_failed_plugin_load.py +63 -0
- omnibase_infra/models/runtime/model_handler_contract.py +296 -0
- omnibase_infra/models/runtime/model_loaded_handler.py +129 -0
- omnibase_infra/models/runtime/model_plugin_load_context.py +93 -0
- omnibase_infra/models/runtime/model_plugin_load_summary.py +124 -0
- omnibase_infra/models/security/__init__.py +50 -0
- omnibase_infra/models/security/classification_levels.py +99 -0
- omnibase_infra/models/security/model_environment_policy.py +145 -0
- omnibase_infra/models/security/model_handler_security_policy.py +107 -0
- omnibase_infra/models/security/model_security_error.py +81 -0
- omnibase_infra/models/security/model_security_validation_result.py +328 -0
- omnibase_infra/models/security/model_security_warning.py +67 -0
- omnibase_infra/models/snapshot/__init__.py +27 -0
- omnibase_infra/models/snapshot/model_field_change.py +65 -0
- omnibase_infra/models/snapshot/model_snapshot.py +270 -0
- omnibase_infra/models/snapshot/model_snapshot_diff.py +203 -0
- omnibase_infra/models/snapshot/model_subject_ref.py +81 -0
- omnibase_infra/models/types/__init__.py +71 -0
- omnibase_infra/models/validation/__init__.py +89 -0
- omnibase_infra/models/validation/model_any_type_validation_result.py +118 -0
- omnibase_infra/models/validation/model_any_type_violation.py +141 -0
- omnibase_infra/models/validation/model_category_match_result.py +345 -0
- omnibase_infra/models/validation/model_chain_violation.py +166 -0
- omnibase_infra/models/validation/model_coverage_metrics.py +316 -0
- omnibase_infra/models/validation/model_execution_shape_rule.py +159 -0
- omnibase_infra/models/validation/model_execution_shape_validation.py +208 -0
- omnibase_infra/models/validation/model_execution_shape_validation_result.py +294 -0
- omnibase_infra/models/validation/model_execution_shape_violation.py +122 -0
- omnibase_infra/models/validation/model_localhandler_validation_result.py +139 -0
- omnibase_infra/models/validation/model_localhandler_violation.py +100 -0
- omnibase_infra/models/validation/model_output_validation_params.py +74 -0
- omnibase_infra/models/validation/model_validate_and_raise_params.py +84 -0
- omnibase_infra/models/validation/model_validation_error_params.py +84 -0
- omnibase_infra/models/validation/model_validation_outcome.py +287 -0
- omnibase_infra/nodes/__init__.py +57 -0
- omnibase_infra/nodes/architecture_validator/__init__.py +79 -0
- omnibase_infra/nodes/architecture_validator/contract.yaml +252 -0
- omnibase_infra/nodes/architecture_validator/contract_architecture_validator.yaml +203 -0
- omnibase_infra/nodes/architecture_validator/mixins/__init__.py +16 -0
- omnibase_infra/nodes/architecture_validator/mixins/mixin_file_path_rule.py +92 -0
- omnibase_infra/nodes/architecture_validator/models/__init__.py +36 -0
- omnibase_infra/nodes/architecture_validator/models/model_architecture_validation_request.py +56 -0
- omnibase_infra/nodes/architecture_validator/models/model_architecture_validation_result.py +311 -0
- omnibase_infra/nodes/architecture_validator/models/model_architecture_violation.py +163 -0
- omnibase_infra/nodes/architecture_validator/models/model_rule_check_result.py +265 -0
- omnibase_infra/nodes/architecture_validator/models/model_validation_request.py +105 -0
- omnibase_infra/nodes/architecture_validator/models/model_validation_result.py +314 -0
- omnibase_infra/nodes/architecture_validator/node.py +262 -0
- omnibase_infra/nodes/architecture_validator/node_architecture_validator.py +383 -0
- omnibase_infra/nodes/architecture_validator/protocols/__init__.py +9 -0
- omnibase_infra/nodes/architecture_validator/protocols/protocol_architecture_rule.py +225 -0
- omnibase_infra/nodes/architecture_validator/registry/__init__.py +28 -0
- omnibase_infra/nodes/architecture_validator/registry/registry_infra_architecture_validator.py +106 -0
- omnibase_infra/nodes/architecture_validator/validators/__init__.py +104 -0
- omnibase_infra/nodes/architecture_validator/validators/validator_no_direct_dispatch.py +422 -0
- omnibase_infra/nodes/architecture_validator/validators/validator_no_handler_publishing.py +481 -0
- omnibase_infra/nodes/architecture_validator/validators/validator_no_orchestrator_fsm.py +491 -0
- omnibase_infra/nodes/contract_registry_reducer/__init__.py +29 -0
- omnibase_infra/nodes/contract_registry_reducer/contract.yaml +255 -0
- omnibase_infra/nodes/contract_registry_reducer/models/__init__.py +38 -0
- omnibase_infra/nodes/contract_registry_reducer/models/model_contract_registry_state.py +266 -0
- omnibase_infra/nodes/contract_registry_reducer/models/model_payload_cleanup_topic_references.py +55 -0
- omnibase_infra/nodes/contract_registry_reducer/models/model_payload_deactivate_contract.py +58 -0
- omnibase_infra/nodes/contract_registry_reducer/models/model_payload_mark_stale.py +49 -0
- omnibase_infra/nodes/contract_registry_reducer/models/model_payload_update_heartbeat.py +71 -0
- omnibase_infra/nodes/contract_registry_reducer/models/model_payload_update_topic.py +66 -0
- omnibase_infra/nodes/contract_registry_reducer/models/model_payload_upsert_contract.py +92 -0
- omnibase_infra/nodes/contract_registry_reducer/node.py +121 -0
- omnibase_infra/nodes/contract_registry_reducer/reducer.py +784 -0
- omnibase_infra/nodes/contract_registry_reducer/registry/__init__.py +9 -0
- omnibase_infra/nodes/contract_registry_reducer/registry/registry_infra_contract_registry_reducer.py +101 -0
- omnibase_infra/nodes/effects/README.md +358 -0
- omnibase_infra/nodes/effects/__init__.py +26 -0
- omnibase_infra/nodes/effects/contract.yaml +167 -0
- omnibase_infra/nodes/effects/models/__init__.py +32 -0
- omnibase_infra/nodes/effects/models/model_backend_result.py +190 -0
- omnibase_infra/nodes/effects/models/model_effect_idempotency_config.py +92 -0
- omnibase_infra/nodes/effects/models/model_registry_request.py +132 -0
- omnibase_infra/nodes/effects/models/model_registry_response.py +263 -0
- omnibase_infra/nodes/effects/protocol_consul_client.py +89 -0
- omnibase_infra/nodes/effects/protocol_effect_idempotency_store.py +143 -0
- omnibase_infra/nodes/effects/protocol_postgres_adapter.py +96 -0
- omnibase_infra/nodes/effects/registry_effect.py +525 -0
- omnibase_infra/nodes/effects/store_effect_idempotency_inmemory.py +425 -0
- omnibase_infra/nodes/handlers/consul/contract.yaml +85 -0
- omnibase_infra/nodes/handlers/db/contract.yaml +72 -0
- omnibase_infra/nodes/handlers/graph/contract.yaml +127 -0
- omnibase_infra/nodes/handlers/http/contract.yaml +74 -0
- omnibase_infra/nodes/handlers/intent/contract.yaml +66 -0
- omnibase_infra/nodes/handlers/mcp/contract.yaml +69 -0
- omnibase_infra/nodes/handlers/vault/contract.yaml +91 -0
- omnibase_infra/nodes/node_intent_storage_effect/__init__.py +50 -0
- omnibase_infra/nodes/node_intent_storage_effect/contract.yaml +194 -0
- omnibase_infra/nodes/node_intent_storage_effect/models/__init__.py +24 -0
- omnibase_infra/nodes/node_intent_storage_effect/models/model_intent_storage_input.py +141 -0
- omnibase_infra/nodes/node_intent_storage_effect/models/model_intent_storage_output.py +130 -0
- omnibase_infra/nodes/node_intent_storage_effect/node.py +94 -0
- omnibase_infra/nodes/node_intent_storage_effect/registry/__init__.py +35 -0
- omnibase_infra/nodes/node_intent_storage_effect/registry/registry_infra_intent_storage.py +294 -0
- omnibase_infra/nodes/node_ledger_projection_compute/__init__.py +50 -0
- omnibase_infra/nodes/node_ledger_projection_compute/contract.yaml +104 -0
- omnibase_infra/nodes/node_ledger_projection_compute/node.py +284 -0
- omnibase_infra/nodes/node_ledger_projection_compute/registry/__init__.py +29 -0
- omnibase_infra/nodes/node_ledger_projection_compute/registry/registry_infra_ledger_projection.py +118 -0
- omnibase_infra/nodes/node_ledger_write_effect/__init__.py +82 -0
- omnibase_infra/nodes/node_ledger_write_effect/contract.yaml +200 -0
- omnibase_infra/nodes/node_ledger_write_effect/handlers/__init__.py +22 -0
- omnibase_infra/nodes/node_ledger_write_effect/handlers/handler_ledger_append.py +372 -0
- omnibase_infra/nodes/node_ledger_write_effect/handlers/handler_ledger_query.py +597 -0
- omnibase_infra/nodes/node_ledger_write_effect/models/__init__.py +31 -0
- omnibase_infra/nodes/node_ledger_write_effect/models/model_ledger_append_result.py +54 -0
- omnibase_infra/nodes/node_ledger_write_effect/models/model_ledger_entry.py +92 -0
- omnibase_infra/nodes/node_ledger_write_effect/models/model_ledger_query.py +53 -0
- omnibase_infra/nodes/node_ledger_write_effect/models/model_ledger_query_result.py +41 -0
- omnibase_infra/nodes/node_ledger_write_effect/node.py +89 -0
- omnibase_infra/nodes/node_ledger_write_effect/protocols/__init__.py +13 -0
- omnibase_infra/nodes/node_ledger_write_effect/protocols/protocol_ledger_persistence.py +127 -0
- omnibase_infra/nodes/node_ledger_write_effect/registry/__init__.py +9 -0
- omnibase_infra/nodes/node_ledger_write_effect/registry/registry_infra_ledger_write.py +121 -0
- omnibase_infra/nodes/node_registration_orchestrator/README.md +542 -0
- omnibase_infra/nodes/node_registration_orchestrator/__init__.py +120 -0
- omnibase_infra/nodes/node_registration_orchestrator/contract.yaml +482 -0
- omnibase_infra/nodes/node_registration_orchestrator/dispatchers/__init__.py +53 -0
- omnibase_infra/nodes/node_registration_orchestrator/dispatchers/dispatcher_node_introspected.py +376 -0
- omnibase_infra/nodes/node_registration_orchestrator/dispatchers/dispatcher_node_registration_acked.py +376 -0
- omnibase_infra/nodes/node_registration_orchestrator/dispatchers/dispatcher_runtime_tick.py +373 -0
- omnibase_infra/nodes/node_registration_orchestrator/handlers/__init__.py +62 -0
- omnibase_infra/nodes/node_registration_orchestrator/handlers/handler_node_heartbeat.py +376 -0
- omnibase_infra/nodes/node_registration_orchestrator/handlers/handler_node_introspected.py +694 -0
- omnibase_infra/nodes/node_registration_orchestrator/handlers/handler_node_registration_acked.py +458 -0
- omnibase_infra/nodes/node_registration_orchestrator/handlers/handler_runtime_tick.py +364 -0
- omnibase_infra/nodes/node_registration_orchestrator/introspection_event_router.py +544 -0
- omnibase_infra/nodes/node_registration_orchestrator/models/__init__.py +75 -0
- omnibase_infra/nodes/node_registration_orchestrator/models/model_consul_intent_payload.py +194 -0
- omnibase_infra/nodes/node_registration_orchestrator/models/model_consul_registration_intent.py +67 -0
- omnibase_infra/nodes/node_registration_orchestrator/models/model_intent_execution_result.py +50 -0
- omnibase_infra/nodes/node_registration_orchestrator/models/model_node_liveness_expired.py +107 -0
- omnibase_infra/nodes/node_registration_orchestrator/models/model_orchestrator_config.py +67 -0
- omnibase_infra/nodes/node_registration_orchestrator/models/model_orchestrator_input.py +41 -0
- omnibase_infra/nodes/node_registration_orchestrator/models/model_orchestrator_output.py +166 -0
- omnibase_infra/nodes/node_registration_orchestrator/models/model_postgres_intent_payload.py +235 -0
- omnibase_infra/nodes/node_registration_orchestrator/models/model_postgres_upsert_intent.py +68 -0
- omnibase_infra/nodes/node_registration_orchestrator/models/model_reducer_execution_result.py +384 -0
- omnibase_infra/nodes/node_registration_orchestrator/models/model_reducer_state.py +60 -0
- omnibase_infra/nodes/node_registration_orchestrator/models/model_registration_intent.py +177 -0
- omnibase_infra/nodes/node_registration_orchestrator/models/model_registry_intent.py +247 -0
- omnibase_infra/nodes/node_registration_orchestrator/node.py +195 -0
- omnibase_infra/nodes/node_registration_orchestrator/plugin.py +909 -0
- omnibase_infra/nodes/node_registration_orchestrator/protocols.py +439 -0
- omnibase_infra/nodes/node_registration_orchestrator/registry/__init__.py +41 -0
- omnibase_infra/nodes/node_registration_orchestrator/registry/registry_infra_node_registration_orchestrator.py +528 -0
- omnibase_infra/nodes/node_registration_orchestrator/timeout_coordinator.py +393 -0
- omnibase_infra/nodes/node_registration_orchestrator/wiring.py +743 -0
- omnibase_infra/nodes/node_registration_reducer/__init__.py +15 -0
- omnibase_infra/nodes/node_registration_reducer/contract.yaml +301 -0
- omnibase_infra/nodes/node_registration_reducer/models/__init__.py +38 -0
- omnibase_infra/nodes/node_registration_reducer/models/model_validation_result.py +113 -0
- omnibase_infra/nodes/node_registration_reducer/node.py +139 -0
- omnibase_infra/nodes/node_registration_reducer/registry/__init__.py +9 -0
- omnibase_infra/nodes/node_registration_reducer/registry/registry_infra_node_registration_reducer.py +79 -0
- omnibase_infra/nodes/node_registration_storage_effect/__init__.py +41 -0
- omnibase_infra/nodes/node_registration_storage_effect/contract.yaml +220 -0
- omnibase_infra/nodes/node_registration_storage_effect/models/__init__.py +44 -0
- omnibase_infra/nodes/node_registration_storage_effect/models/model_delete_result.py +132 -0
- omnibase_infra/nodes/node_registration_storage_effect/models/model_registration_record.py +199 -0
- omnibase_infra/nodes/node_registration_storage_effect/models/model_registration_update.py +155 -0
- omnibase_infra/nodes/node_registration_storage_effect/models/model_storage_health_check_details.py +123 -0
- omnibase_infra/nodes/node_registration_storage_effect/models/model_storage_health_check_result.py +117 -0
- omnibase_infra/nodes/node_registration_storage_effect/models/model_storage_query.py +100 -0
- omnibase_infra/nodes/node_registration_storage_effect/models/model_storage_result.py +136 -0
- omnibase_infra/nodes/node_registration_storage_effect/models/model_upsert_result.py +127 -0
- omnibase_infra/nodes/node_registration_storage_effect/node.py +112 -0
- omnibase_infra/nodes/node_registration_storage_effect/protocols/__init__.py +22 -0
- omnibase_infra/nodes/node_registration_storage_effect/protocols/protocol_registration_persistence.py +333 -0
- omnibase_infra/nodes/node_registration_storage_effect/registry/__init__.py +23 -0
- omnibase_infra/nodes/node_registration_storage_effect/registry/registry_infra_registration_storage.py +215 -0
- omnibase_infra/nodes/node_registry_effect/__init__.py +85 -0
- omnibase_infra/nodes/node_registry_effect/contract.yaml +677 -0
- omnibase_infra/nodes/node_registry_effect/handlers/__init__.py +70 -0
- omnibase_infra/nodes/node_registry_effect/handlers/handler_consul_deregister.py +211 -0
- omnibase_infra/nodes/node_registry_effect/handlers/handler_consul_register.py +212 -0
- omnibase_infra/nodes/node_registry_effect/handlers/handler_partial_retry.py +417 -0
- omnibase_infra/nodes/node_registry_effect/handlers/handler_postgres_deactivate.py +215 -0
- omnibase_infra/nodes/node_registry_effect/handlers/handler_postgres_upsert.py +208 -0
- omnibase_infra/nodes/node_registry_effect/models/__init__.py +43 -0
- omnibase_infra/nodes/node_registry_effect/models/model_partial_retry_request.py +92 -0
- omnibase_infra/nodes/node_registry_effect/node.py +165 -0
- omnibase_infra/nodes/node_registry_effect/registry/__init__.py +27 -0
- omnibase_infra/nodes/node_registry_effect/registry/registry_infra_registry_effect.py +196 -0
- omnibase_infra/nodes/node_service_discovery_effect/__init__.py +111 -0
- omnibase_infra/nodes/node_service_discovery_effect/contract.yaml +246 -0
- omnibase_infra/nodes/node_service_discovery_effect/models/__init__.py +67 -0
- omnibase_infra/nodes/node_service_discovery_effect/models/enum_health_status.py +72 -0
- omnibase_infra/nodes/node_service_discovery_effect/models/enum_service_discovery_operation.py +58 -0
- omnibase_infra/nodes/node_service_discovery_effect/models/model_discovery_query.py +99 -0
- omnibase_infra/nodes/node_service_discovery_effect/models/model_discovery_result.py +98 -0
- omnibase_infra/nodes/node_service_discovery_effect/models/model_health_check_config.py +121 -0
- omnibase_infra/nodes/node_service_discovery_effect/models/model_query_metadata.py +63 -0
- omnibase_infra/nodes/node_service_discovery_effect/models/model_registration_result.py +130 -0
- omnibase_infra/nodes/node_service_discovery_effect/models/model_service_discovery_health_check_details.py +111 -0
- omnibase_infra/nodes/node_service_discovery_effect/models/model_service_discovery_health_check_result.py +119 -0
- omnibase_infra/nodes/node_service_discovery_effect/models/model_service_info.py +106 -0
- omnibase_infra/nodes/node_service_discovery_effect/models/model_service_registration.py +121 -0
- omnibase_infra/nodes/node_service_discovery_effect/node.py +111 -0
- omnibase_infra/nodes/node_service_discovery_effect/protocols/__init__.py +14 -0
- omnibase_infra/nodes/node_service_discovery_effect/protocols/protocol_discovery_operations.py +279 -0
- omnibase_infra/nodes/node_service_discovery_effect/registry/__init__.py +13 -0
- omnibase_infra/nodes/node_service_discovery_effect/registry/registry_infra_service_discovery.py +222 -0
- omnibase_infra/nodes/reducers/__init__.py +30 -0
- omnibase_infra/nodes/reducers/models/__init__.py +37 -0
- omnibase_infra/nodes/reducers/models/model_payload_consul_register.py +87 -0
- omnibase_infra/nodes/reducers/models/model_payload_ledger_append.py +133 -0
- omnibase_infra/nodes/reducers/models/model_payload_postgres_upsert_registration.py +60 -0
- omnibase_infra/nodes/reducers/models/model_registration_confirmation.py +166 -0
- omnibase_infra/nodes/reducers/models/model_registration_state.py +433 -0
- omnibase_infra/nodes/reducers/registration_reducer.py +1138 -0
- omnibase_infra/observability/__init__.py +143 -0
- omnibase_infra/observability/constants_metrics.py +91 -0
- omnibase_infra/observability/factory_observability_sink.py +525 -0
- omnibase_infra/observability/handlers/__init__.py +118 -0
- omnibase_infra/observability/handlers/handler_logging_structured.py +967 -0
- omnibase_infra/observability/handlers/handler_metrics_prometheus.py +1120 -0
- omnibase_infra/observability/handlers/model_logging_handler_config.py +71 -0
- omnibase_infra/observability/handlers/model_logging_handler_response.py +77 -0
- omnibase_infra/observability/handlers/model_metrics_handler_config.py +172 -0
- omnibase_infra/observability/handlers/model_metrics_handler_payload.py +135 -0
- omnibase_infra/observability/handlers/model_metrics_handler_response.py +101 -0
- omnibase_infra/observability/hooks/__init__.py +74 -0
- omnibase_infra/observability/hooks/hook_observability.py +1223 -0
- omnibase_infra/observability/models/__init__.py +30 -0
- omnibase_infra/observability/models/enum_required_log_context_key.py +77 -0
- omnibase_infra/observability/models/model_buffered_log_entry.py +117 -0
- omnibase_infra/observability/models/model_logging_sink_config.py +73 -0
- omnibase_infra/observability/models/model_metrics_sink_config.py +156 -0
- omnibase_infra/observability/sinks/__init__.py +69 -0
- omnibase_infra/observability/sinks/sink_logging_structured.py +809 -0
- omnibase_infra/observability/sinks/sink_metrics_prometheus.py +710 -0
- omnibase_infra/plugins/__init__.py +27 -0
- omnibase_infra/plugins/examples/__init__.py +28 -0
- omnibase_infra/plugins/examples/plugin_json_normalizer.py +271 -0
- omnibase_infra/plugins/examples/plugin_json_normalizer_error_handling.py +210 -0
- omnibase_infra/plugins/models/__init__.py +21 -0
- omnibase_infra/plugins/models/model_plugin_context.py +76 -0
- omnibase_infra/plugins/models/model_plugin_input_data.py +58 -0
- omnibase_infra/plugins/models/model_plugin_output_data.py +62 -0
- omnibase_infra/plugins/plugin_compute_base.py +449 -0
- omnibase_infra/projectors/__init__.py +30 -0
- omnibase_infra/projectors/contracts/__init__.py +63 -0
- omnibase_infra/projectors/contracts/registration_projector.yaml +370 -0
- omnibase_infra/projectors/projection_reader_registration.py +1559 -0
- omnibase_infra/projectors/snapshot_publisher_registration.py +1329 -0
- omnibase_infra/protocols/__init__.py +104 -0
- omnibase_infra/protocols/protocol_capability_projection.py +253 -0
- omnibase_infra/protocols/protocol_capability_query.py +251 -0
- omnibase_infra/protocols/protocol_container_aware.py +200 -0
- omnibase_infra/protocols/protocol_dispatch_engine.py +152 -0
- omnibase_infra/protocols/protocol_event_bus_like.py +127 -0
- omnibase_infra/protocols/protocol_event_projector.py +96 -0
- omnibase_infra/protocols/protocol_idempotency_store.py +142 -0
- omnibase_infra/protocols/protocol_message_dispatcher.py +247 -0
- omnibase_infra/protocols/protocol_message_type_registry.py +306 -0
- omnibase_infra/protocols/protocol_plugin_compute.py +368 -0
- omnibase_infra/protocols/protocol_projector_schema_validator.py +82 -0
- omnibase_infra/protocols/protocol_registry_metrics.py +215 -0
- omnibase_infra/protocols/protocol_snapshot_publisher.py +396 -0
- omnibase_infra/protocols/protocol_snapshot_store.py +567 -0
- omnibase_infra/runtime/__init__.py +445 -0
- omnibase_infra/runtime/binding_config_resolver.py +2771 -0
- omnibase_infra/runtime/binding_resolver.py +753 -0
- omnibase_infra/runtime/chain_aware_dispatch.py +467 -0
- omnibase_infra/runtime/constants_notification.py +75 -0
- omnibase_infra/runtime/constants_security.py +70 -0
- omnibase_infra/runtime/contract_handler_discovery.py +587 -0
- omnibase_infra/runtime/contract_loaders/__init__.py +51 -0
- omnibase_infra/runtime/contract_loaders/handler_routing_loader.py +464 -0
- omnibase_infra/runtime/contract_loaders/operation_bindings_loader.py +789 -0
- omnibase_infra/runtime/dispatch_context_enforcer.py +427 -0
- omnibase_infra/runtime/emit_daemon/__init__.py +97 -0
- omnibase_infra/runtime/emit_daemon/cli.py +844 -0
- omnibase_infra/runtime/emit_daemon/client.py +811 -0
- omnibase_infra/runtime/emit_daemon/config.py +535 -0
- omnibase_infra/runtime/emit_daemon/daemon.py +812 -0
- omnibase_infra/runtime/emit_daemon/event_registry.py +477 -0
- omnibase_infra/runtime/emit_daemon/model_daemon_request.py +139 -0
- omnibase_infra/runtime/emit_daemon/model_daemon_response.py +191 -0
- omnibase_infra/runtime/emit_daemon/queue.py +618 -0
- omnibase_infra/runtime/enums/__init__.py +18 -0
- omnibase_infra/runtime/enums/enum_config_ref_scheme.py +33 -0
- omnibase_infra/runtime/enums/enum_scheduler_status.py +170 -0
- omnibase_infra/runtime/envelope_validator.py +179 -0
- omnibase_infra/runtime/event_bus_subcontract_wiring.py +466 -0
- omnibase_infra/runtime/handler_bootstrap_source.py +507 -0
- omnibase_infra/runtime/handler_contract_config_loader.py +603 -0
- omnibase_infra/runtime/handler_contract_source.py +750 -0
- omnibase_infra/runtime/handler_identity.py +81 -0
- omnibase_infra/runtime/handler_plugin_loader.py +2046 -0
- omnibase_infra/runtime/handler_registry.py +329 -0
- omnibase_infra/runtime/handler_source_resolver.py +367 -0
- omnibase_infra/runtime/invocation_security_enforcer.py +427 -0
- omnibase_infra/runtime/kafka_contract_source.py +984 -0
- omnibase_infra/runtime/kernel.py +40 -0
- omnibase_infra/runtime/mixin_policy_validation.py +522 -0
- omnibase_infra/runtime/mixin_semver_cache.py +402 -0
- omnibase_infra/runtime/mixins/__init__.py +24 -0
- omnibase_infra/runtime/mixins/mixin_projector_notification_publishing.py +566 -0
- omnibase_infra/runtime/mixins/mixin_projector_sql_operations.py +778 -0
- omnibase_infra/runtime/models/__init__.py +229 -0
- omnibase_infra/runtime/models/model_batch_lifecycle_result.py +217 -0
- omnibase_infra/runtime/models/model_binding_config.py +168 -0
- omnibase_infra/runtime/models/model_binding_config_cache_stats.py +135 -0
- omnibase_infra/runtime/models/model_binding_config_resolver_config.py +329 -0
- omnibase_infra/runtime/models/model_cached_secret.py +138 -0
- omnibase_infra/runtime/models/model_compute_key.py +138 -0
- omnibase_infra/runtime/models/model_compute_registration.py +97 -0
- omnibase_infra/runtime/models/model_config_cache_entry.py +61 -0
- omnibase_infra/runtime/models/model_config_ref.py +331 -0
- omnibase_infra/runtime/models/model_config_ref_parse_result.py +125 -0
- omnibase_infra/runtime/models/model_contract_load_result.py +224 -0
- omnibase_infra/runtime/models/model_domain_plugin_config.py +92 -0
- omnibase_infra/runtime/models/model_domain_plugin_result.py +270 -0
- omnibase_infra/runtime/models/model_duplicate_response.py +54 -0
- omnibase_infra/runtime/models/model_enabled_protocols_config.py +61 -0
- omnibase_infra/runtime/models/model_event_bus_config.py +54 -0
- omnibase_infra/runtime/models/model_failed_component.py +55 -0
- omnibase_infra/runtime/models/model_health_check_response.py +168 -0
- omnibase_infra/runtime/models/model_health_check_result.py +229 -0
- omnibase_infra/runtime/models/model_lifecycle_result.py +245 -0
- omnibase_infra/runtime/models/model_logging_config.py +42 -0
- omnibase_infra/runtime/models/model_optional_correlation_id.py +167 -0
- omnibase_infra/runtime/models/model_optional_string.py +94 -0
- omnibase_infra/runtime/models/model_optional_uuid.py +110 -0
- omnibase_infra/runtime/models/model_policy_context.py +100 -0
- omnibase_infra/runtime/models/model_policy_key.py +138 -0
- omnibase_infra/runtime/models/model_policy_registration.py +139 -0
- omnibase_infra/runtime/models/model_policy_result.py +103 -0
- omnibase_infra/runtime/models/model_policy_type_filter.py +157 -0
- omnibase_infra/runtime/models/model_projector_notification_config.py +171 -0
- omnibase_infra/runtime/models/model_projector_plugin_loader_config.py +47 -0
- omnibase_infra/runtime/models/model_protocol_registration_config.py +65 -0
- omnibase_infra/runtime/models/model_retry_policy.py +105 -0
- omnibase_infra/runtime/models/model_runtime_config.py +150 -0
- omnibase_infra/runtime/models/model_runtime_contract_config.py +268 -0
- omnibase_infra/runtime/models/model_runtime_scheduler_config.py +625 -0
- omnibase_infra/runtime/models/model_runtime_scheduler_metrics.py +233 -0
- omnibase_infra/runtime/models/model_runtime_tick.py +193 -0
- omnibase_infra/runtime/models/model_secret_cache_stats.py +82 -0
- omnibase_infra/runtime/models/model_secret_mapping.py +63 -0
- omnibase_infra/runtime/models/model_secret_resolver_config.py +107 -0
- omnibase_infra/runtime/models/model_secret_resolver_metrics.py +111 -0
- omnibase_infra/runtime/models/model_secret_source_info.py +72 -0
- omnibase_infra/runtime/models/model_secret_source_spec.py +66 -0
- omnibase_infra/runtime/models/model_security_config.py +109 -0
- omnibase_infra/runtime/models/model_shutdown_batch_result.py +75 -0
- omnibase_infra/runtime/models/model_shutdown_config.py +94 -0
- omnibase_infra/runtime/models/model_transition_notification_outbox_config.py +112 -0
- omnibase_infra/runtime/models/model_transition_notification_outbox_metrics.py +140 -0
- omnibase_infra/runtime/models/model_transition_notification_publisher_metrics.py +357 -0
- omnibase_infra/runtime/projector_plugin_loader.py +1462 -0
- omnibase_infra/runtime/projector_schema_manager.py +565 -0
- omnibase_infra/runtime/projector_shell.py +1330 -0
- omnibase_infra/runtime/protocol_contract_descriptor.py +92 -0
- omnibase_infra/runtime/protocol_contract_source.py +92 -0
- omnibase_infra/runtime/protocol_domain_plugin.py +474 -0
- omnibase_infra/runtime/protocol_handler_discovery.py +221 -0
- omnibase_infra/runtime/protocol_handler_plugin_loader.py +327 -0
- omnibase_infra/runtime/protocol_lifecycle_executor.py +435 -0
- omnibase_infra/runtime/protocol_policy.py +366 -0
- omnibase_infra/runtime/protocols/__init__.py +37 -0
- omnibase_infra/runtime/protocols/protocol_runtime_scheduler.py +468 -0
- omnibase_infra/runtime/publisher_topic_scoped.py +294 -0
- omnibase_infra/runtime/registry/__init__.py +93 -0
- omnibase_infra/runtime/registry/mixin_message_type_query.py +326 -0
- omnibase_infra/runtime/registry/mixin_message_type_registration.py +354 -0
- omnibase_infra/runtime/registry/registry_event_bus_binding.py +268 -0
- omnibase_infra/runtime/registry/registry_message_type.py +542 -0
- omnibase_infra/runtime/registry/registry_protocol_binding.py +445 -0
- omnibase_infra/runtime/registry_compute.py +1143 -0
- omnibase_infra/runtime/registry_contract_source.py +693 -0
- omnibase_infra/runtime/registry_dispatcher.py +678 -0
- omnibase_infra/runtime/registry_policy.py +1185 -0
- omnibase_infra/runtime/runtime_contract_config_loader.py +406 -0
- omnibase_infra/runtime/runtime_scheduler.py +1070 -0
- omnibase_infra/runtime/secret_resolver.py +2112 -0
- omnibase_infra/runtime/security_metadata_validator.py +776 -0
- omnibase_infra/runtime/service_kernel.py +1651 -0
- omnibase_infra/runtime/service_message_dispatch_engine.py +2350 -0
- omnibase_infra/runtime/service_runtime_host_process.py +3493 -0
- omnibase_infra/runtime/transition_notification_outbox.py +1190 -0
- omnibase_infra/runtime/transition_notification_publisher.py +765 -0
- omnibase_infra/runtime/util_container_wiring.py +1124 -0
- omnibase_infra/runtime/util_validation.py +314 -0
- omnibase_infra/runtime/util_version.py +98 -0
- omnibase_infra/runtime/util_wiring.py +723 -0
- omnibase_infra/schemas/schema_registration_projection.sql +320 -0
- omnibase_infra/schemas/schema_transition_notification_outbox.sql +245 -0
- omnibase_infra/services/__init__.py +89 -0
- omnibase_infra/services/corpus_capture.py +684 -0
- omnibase_infra/services/mcp/__init__.py +31 -0
- omnibase_infra/services/mcp/mcp_server_lifecycle.py +449 -0
- omnibase_infra/services/mcp/service_mcp_tool_discovery.py +411 -0
- omnibase_infra/services/mcp/service_mcp_tool_registry.py +329 -0
- omnibase_infra/services/mcp/service_mcp_tool_sync.py +565 -0
- omnibase_infra/services/registry_api/__init__.py +40 -0
- omnibase_infra/services/registry_api/main.py +261 -0
- omnibase_infra/services/registry_api/models/__init__.py +66 -0
- omnibase_infra/services/registry_api/models/model_capability_widget_mapping.py +38 -0
- omnibase_infra/services/registry_api/models/model_pagination_info.py +48 -0
- omnibase_infra/services/registry_api/models/model_registry_discovery_response.py +73 -0
- omnibase_infra/services/registry_api/models/model_registry_health_response.py +49 -0
- omnibase_infra/services/registry_api/models/model_registry_instance_view.py +88 -0
- omnibase_infra/services/registry_api/models/model_registry_node_view.py +88 -0
- omnibase_infra/services/registry_api/models/model_registry_summary.py +60 -0
- omnibase_infra/services/registry_api/models/model_response_list_instances.py +43 -0
- omnibase_infra/services/registry_api/models/model_response_list_nodes.py +51 -0
- omnibase_infra/services/registry_api/models/model_warning.py +49 -0
- omnibase_infra/services/registry_api/models/model_widget_defaults.py +28 -0
- omnibase_infra/services/registry_api/models/model_widget_mapping.py +51 -0
- omnibase_infra/services/registry_api/routes.py +371 -0
- omnibase_infra/services/registry_api/service.py +837 -0
- omnibase_infra/services/service_capability_query.py +945 -0
- omnibase_infra/services/service_health.py +898 -0
- omnibase_infra/services/service_node_selector.py +530 -0
- omnibase_infra/services/service_timeout_emitter.py +699 -0
- omnibase_infra/services/service_timeout_scanner.py +394 -0
- omnibase_infra/services/session/__init__.py +56 -0
- omnibase_infra/services/session/config_consumer.py +137 -0
- omnibase_infra/services/session/config_store.py +139 -0
- omnibase_infra/services/session/consumer.py +1007 -0
- omnibase_infra/services/session/protocol_session_aggregator.py +117 -0
- omnibase_infra/services/session/store.py +997 -0
- omnibase_infra/services/snapshot/__init__.py +31 -0
- omnibase_infra/services/snapshot/service_snapshot.py +647 -0
- omnibase_infra/services/snapshot/store_inmemory.py +637 -0
- omnibase_infra/services/snapshot/store_postgres.py +1279 -0
- omnibase_infra/shared/__init__.py +8 -0
- omnibase_infra/testing/__init__.py +10 -0
- omnibase_infra/testing/utils.py +23 -0
- omnibase_infra/topics/__init__.py +45 -0
- omnibase_infra/topics/platform_topic_suffixes.py +140 -0
- omnibase_infra/topics/util_topic_composition.py +95 -0
- omnibase_infra/types/__init__.py +48 -0
- omnibase_infra/types/type_cache_info.py +49 -0
- omnibase_infra/types/type_dsn.py +173 -0
- omnibase_infra/types/type_infra_aliases.py +60 -0
- omnibase_infra/types/typed_dict/__init__.py +29 -0
- omnibase_infra/types/typed_dict/typed_dict_envelope_build_params.py +115 -0
- omnibase_infra/types/typed_dict/typed_dict_introspection_cache.py +128 -0
- omnibase_infra/types/typed_dict/typed_dict_performance_metrics_cache.py +140 -0
- omnibase_infra/types/typed_dict_capabilities.py +64 -0
- omnibase_infra/utils/__init__.py +117 -0
- omnibase_infra/utils/correlation.py +208 -0
- omnibase_infra/utils/util_atomic_file.py +261 -0
- omnibase_infra/utils/util_consumer_group.py +232 -0
- omnibase_infra/utils/util_datetime.py +372 -0
- omnibase_infra/utils/util_db_transaction.py +239 -0
- omnibase_infra/utils/util_dsn_validation.py +333 -0
- omnibase_infra/utils/util_env_parsing.py +264 -0
- omnibase_infra/utils/util_error_sanitization.py +457 -0
- omnibase_infra/utils/util_pydantic_validators.py +477 -0
- omnibase_infra/utils/util_retry_optimistic.py +281 -0
- omnibase_infra/utils/util_semver.py +233 -0
- omnibase_infra/validation/__init__.py +307 -0
- omnibase_infra/validation/contracts/security.validation.yaml +114 -0
- omnibase_infra/validation/enums/__init__.py +11 -0
- omnibase_infra/validation/enums/enum_contract_violation_severity.py +13 -0
- omnibase_infra/validation/infra_validators.py +1514 -0
- omnibase_infra/validation/linter_contract.py +907 -0
- omnibase_infra/validation/mixin_any_type_classification.py +120 -0
- omnibase_infra/validation/mixin_any_type_exemption.py +580 -0
- omnibase_infra/validation/mixin_any_type_reporting.py +106 -0
- omnibase_infra/validation/mixin_execution_shape_violation_checks.py +596 -0
- omnibase_infra/validation/mixin_node_archetype_detection.py +254 -0
- omnibase_infra/validation/models/__init__.py +15 -0
- omnibase_infra/validation/models/model_contract_lint_result.py +101 -0
- omnibase_infra/validation/models/model_contract_violation.py +41 -0
- omnibase_infra/validation/service_validation_aggregator.py +395 -0
- omnibase_infra/validation/validation_exemptions.yaml +2033 -0
- omnibase_infra/validation/validator_any_type.py +715 -0
- omnibase_infra/validation/validator_chain_propagation.py +839 -0
- omnibase_infra/validation/validator_execution_shape.py +465 -0
- omnibase_infra/validation/validator_localhandler.py +261 -0
- omnibase_infra/validation/validator_registration_security.py +410 -0
- omnibase_infra/validation/validator_routing_coverage.py +1020 -0
- omnibase_infra/validation/validator_runtime_shape.py +915 -0
- omnibase_infra/validation/validator_security.py +513 -0
- omnibase_infra/validation/validator_topic_category.py +1152 -0
- omnibase_infra-0.2.6.dist-info/METADATA +197 -0
- omnibase_infra-0.2.6.dist-info/RECORD +833 -0
- omnibase_infra-0.2.6.dist-info/WHEEL +4 -0
- omnibase_infra-0.2.6.dist-info/entry_points.txt +5 -0
- omnibase_infra-0.2.6.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Protocol for Service Discovery Operations.
|
|
4
|
+
|
|
5
|
+
This module defines ProtocolDiscoveryOperations, the protocol for
|
|
6
|
+
pluggable service discovery backends in the NodeServiceDiscoveryEffect node.
|
|
7
|
+
|
|
8
|
+
Architecture:
|
|
9
|
+
ProtocolDiscoveryOperations defines the interface for service
|
|
10
|
+
discovery backends. Implementations include:
|
|
11
|
+
- Consul: HashiCorp Consul service discovery
|
|
12
|
+
- Kubernetes: K8s native service discovery
|
|
13
|
+
- Etcd: CoreOS etcd service discovery
|
|
14
|
+
|
|
15
|
+
This protocol enables the capability-oriented design principle:
|
|
16
|
+
"I'm interested in what you do, not what you are"
|
|
17
|
+
|
|
18
|
+
Protocol Duplication Note:
|
|
19
|
+
This protocol is intentionally separate from the handler-level protocol
|
|
20
|
+
at ``handlers/service_discovery/protocol_discovery_operations.py``:
|
|
21
|
+
|
|
22
|
+
- **This protocol (nodes/*/protocols/)**: Node-level contract used for
|
|
23
|
+
container-based dependency injection and registry binding. Uses
|
|
24
|
+
``ModelServiceRegistration`` with required ``correlation_id``.
|
|
25
|
+
|
|
26
|
+
- **Handler protocol (handlers/*/protocol_*.py)**: Handler implementation
|
|
27
|
+
contract used by tests for compliance verification. Uses
|
|
28
|
+
``ModelServiceInfo`` with optional ``correlation_id``.
|
|
29
|
+
|
|
30
|
+
The separation allows:
|
|
31
|
+
1. Node-level protocols to evolve independently of handler contracts
|
|
32
|
+
2. Different parameter models appropriate for each layer
|
|
33
|
+
3. Clear ownership boundaries (nodes own their protocols)
|
|
34
|
+
|
|
35
|
+
Both protocols share the same name for discoverability, but serve
|
|
36
|
+
different architectural layers.
|
|
37
|
+
|
|
38
|
+
Protocol Verification:
|
|
39
|
+
Per ONEX conventions, protocol compliance is verified via duck typing
|
|
40
|
+
rather than isinstance checks. The @runtime_checkable decorator enables
|
|
41
|
+
structural subtyping checks.
|
|
42
|
+
|
|
43
|
+
However, registries use isinstance() for fail-fast validation at
|
|
44
|
+
registration time. See registry_infra_service_discovery.py for rationale.
|
|
45
|
+
|
|
46
|
+
Thread Safety:
|
|
47
|
+
Handler implementations may be invoked concurrently.
|
|
48
|
+
Implementations should be designed for thread-safe operation.
|
|
49
|
+
|
|
50
|
+
Related:
|
|
51
|
+
- NodeServiceDiscoveryEffect: Effect node that uses this protocol
|
|
52
|
+
- ModelServiceRegistration: Input model for registration
|
|
53
|
+
- ModelDiscoveryQuery: Input model for discovery queries
|
|
54
|
+
- ModelDiscoveryResult: Output model for discovery results
|
|
55
|
+
- ModelRegistrationResult: Output model for registration
|
|
56
|
+
- handlers/service_discovery/protocol_discovery_operations.py: Handler protocol
|
|
57
|
+
- OMN-1131: Capability-oriented node architecture
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
from __future__ import annotations
|
|
61
|
+
|
|
62
|
+
from typing import TYPE_CHECKING, Protocol, runtime_checkable
|
|
63
|
+
from uuid import UUID
|
|
64
|
+
|
|
65
|
+
if TYPE_CHECKING:
|
|
66
|
+
from omnibase_infra.nodes.node_service_discovery_effect.models import (
|
|
67
|
+
ModelDiscoveryQuery,
|
|
68
|
+
ModelDiscoveryResult,
|
|
69
|
+
ModelRegistrationResult,
|
|
70
|
+
ModelServiceDiscoveryHealthCheckResult,
|
|
71
|
+
ModelServiceRegistration,
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
@runtime_checkable
|
|
76
|
+
class ProtocolDiscoveryOperations(Protocol):
|
|
77
|
+
"""Protocol for service discovery backends.
|
|
78
|
+
|
|
79
|
+
Defines the interface that all service discovery backend handlers
|
|
80
|
+
must implement. This enables pluggable backends (Consul, Kubernetes,
|
|
81
|
+
Etcd) while maintaining a unified capability-oriented interface.
|
|
82
|
+
|
|
83
|
+
Protocol Verification:
|
|
84
|
+
Per ONEX conventions, protocol compliance is verified via duck typing:
|
|
85
|
+
|
|
86
|
+
.. code-block:: python
|
|
87
|
+
|
|
88
|
+
# Verify required properties and methods exist
|
|
89
|
+
if (hasattr(handler, 'handler_type') and
|
|
90
|
+
hasattr(handler, 'register_service') and callable(handler.register_service)):
|
|
91
|
+
registry.register_handler(handler)
|
|
92
|
+
|
|
93
|
+
Attributes:
|
|
94
|
+
handler_type: Type identifier for this handler (consul, kubernetes, etcd).
|
|
95
|
+
|
|
96
|
+
Methods:
|
|
97
|
+
register_service: Register a service with the backend.
|
|
98
|
+
deregister_service: Remove a service registration.
|
|
99
|
+
discover_services: Query for service instances.
|
|
100
|
+
health_check: Verify backend connectivity.
|
|
101
|
+
|
|
102
|
+
Example:
|
|
103
|
+
.. code-block:: python
|
|
104
|
+
|
|
105
|
+
class ConsulServiceDiscoveryHandler:
|
|
106
|
+
'''Consul implementation of service discovery.'''
|
|
107
|
+
|
|
108
|
+
@property
|
|
109
|
+
def handler_type(self) -> str:
|
|
110
|
+
return "consul"
|
|
111
|
+
|
|
112
|
+
async def register_service(
|
|
113
|
+
self,
|
|
114
|
+
registration: ModelServiceRegistration,
|
|
115
|
+
correlation_id: UUID,
|
|
116
|
+
) -> ModelRegistrationResult:
|
|
117
|
+
# Consul-specific registration logic
|
|
118
|
+
...
|
|
119
|
+
|
|
120
|
+
async def deregister_service(
|
|
121
|
+
self,
|
|
122
|
+
service_id: UUID,
|
|
123
|
+
correlation_id: UUID,
|
|
124
|
+
) -> None:
|
|
125
|
+
# Consul-specific deregistration logic
|
|
126
|
+
...
|
|
127
|
+
|
|
128
|
+
async def discover_services(
|
|
129
|
+
self,
|
|
130
|
+
query: ModelDiscoveryQuery,
|
|
131
|
+
correlation_id: UUID,
|
|
132
|
+
) -> ModelDiscoveryResult:
|
|
133
|
+
# Consul-specific discovery logic
|
|
134
|
+
...
|
|
135
|
+
|
|
136
|
+
async def health_check(
|
|
137
|
+
self,
|
|
138
|
+
correlation_id: UUID | None = None,
|
|
139
|
+
) -> ModelServiceDiscoveryHealthCheckResult:
|
|
140
|
+
# Check Consul agent connectivity
|
|
141
|
+
...
|
|
142
|
+
|
|
143
|
+
Note:
|
|
144
|
+
Method bodies in this Protocol use ``...`` (Ellipsis) rather than
|
|
145
|
+
``raise NotImplementedError()``. This is the standard Python convention
|
|
146
|
+
for ``typing.Protocol`` classes per PEP 544.
|
|
147
|
+
|
|
148
|
+
.. versionadded:: 0.6.0
|
|
149
|
+
"""
|
|
150
|
+
|
|
151
|
+
@property
|
|
152
|
+
def handler_type(self) -> str:
|
|
153
|
+
"""Return the type identifier for this handler.
|
|
154
|
+
|
|
155
|
+
The handler type identifies the backend implementation:
|
|
156
|
+
- "consul": HashiCorp Consul
|
|
157
|
+
- "kubernetes": Kubernetes native
|
|
158
|
+
- "etcd": CoreOS etcd
|
|
159
|
+
|
|
160
|
+
Returns:
|
|
161
|
+
str: Handler type identifier.
|
|
162
|
+
"""
|
|
163
|
+
...
|
|
164
|
+
|
|
165
|
+
async def register_service(
|
|
166
|
+
self,
|
|
167
|
+
registration: ModelServiceRegistration,
|
|
168
|
+
correlation_id: UUID,
|
|
169
|
+
) -> ModelRegistrationResult:
|
|
170
|
+
"""Register a service with the backend.
|
|
171
|
+
|
|
172
|
+
Creates or updates a service registration in the service
|
|
173
|
+
discovery backend. The operation should be idempotent.
|
|
174
|
+
|
|
175
|
+
Args:
|
|
176
|
+
registration: Service registration details including
|
|
177
|
+
service_id, service_name, address, port, tags, etc.
|
|
178
|
+
correlation_id: Correlation ID for distributed tracing.
|
|
179
|
+
|
|
180
|
+
Returns:
|
|
181
|
+
ModelRegistrationResult with success status and any errors.
|
|
182
|
+
|
|
183
|
+
Raises:
|
|
184
|
+
InfraConnectionError: If connection to backend fails.
|
|
185
|
+
InfraTimeoutError: If operation times out.
|
|
186
|
+
InfraUnavailableError: If circuit breaker is open.
|
|
187
|
+
"""
|
|
188
|
+
...
|
|
189
|
+
|
|
190
|
+
async def deregister_service(
|
|
191
|
+
self,
|
|
192
|
+
service_id: UUID,
|
|
193
|
+
correlation_id: UUID,
|
|
194
|
+
) -> None:
|
|
195
|
+
"""Deregister a service from the backend.
|
|
196
|
+
|
|
197
|
+
Removes a service registration from the service discovery
|
|
198
|
+
backend. The operation should be idempotent (no error if
|
|
199
|
+
service does not exist).
|
|
200
|
+
|
|
201
|
+
Args:
|
|
202
|
+
service_id: ID of the service to deregister.
|
|
203
|
+
correlation_id: Correlation ID for distributed tracing.
|
|
204
|
+
|
|
205
|
+
Raises:
|
|
206
|
+
InfraConnectionError: If connection to backend fails.
|
|
207
|
+
InfraTimeoutError: If operation times out.
|
|
208
|
+
InfraUnavailableError: If circuit breaker is open.
|
|
209
|
+
"""
|
|
210
|
+
...
|
|
211
|
+
|
|
212
|
+
async def discover_services(
|
|
213
|
+
self,
|
|
214
|
+
query: ModelDiscoveryQuery,
|
|
215
|
+
correlation_id: UUID,
|
|
216
|
+
) -> ModelDiscoveryResult:
|
|
217
|
+
"""Discover services matching query criteria.
|
|
218
|
+
|
|
219
|
+
Queries the service discovery backend for services matching
|
|
220
|
+
the specified criteria (service_name, tags, health_filter).
|
|
221
|
+
|
|
222
|
+
Args:
|
|
223
|
+
query: Query parameters for filtering services.
|
|
224
|
+
correlation_id: Correlation ID for distributed tracing.
|
|
225
|
+
|
|
226
|
+
Returns:
|
|
227
|
+
ModelDiscoveryResult with matching services and query metadata.
|
|
228
|
+
|
|
229
|
+
Raises:
|
|
230
|
+
InfraConnectionError: If connection to backend fails.
|
|
231
|
+
InfraTimeoutError: If operation times out.
|
|
232
|
+
InfraUnavailableError: If circuit breaker is open.
|
|
233
|
+
"""
|
|
234
|
+
...
|
|
235
|
+
|
|
236
|
+
async def health_check(
|
|
237
|
+
self,
|
|
238
|
+
correlation_id: UUID | None = None,
|
|
239
|
+
) -> ModelServiceDiscoveryHealthCheckResult:
|
|
240
|
+
"""Check health of the service discovery backend.
|
|
241
|
+
|
|
242
|
+
Verifies connectivity and availability of the service
|
|
243
|
+
discovery backend.
|
|
244
|
+
|
|
245
|
+
Args:
|
|
246
|
+
correlation_id: Optional correlation ID for distributed tracing.
|
|
247
|
+
If not provided, implementations should generate one.
|
|
248
|
+
|
|
249
|
+
Returns:
|
|
250
|
+
ModelServiceDiscoveryHealthCheckResult: Health status including:
|
|
251
|
+
- healthy: bool indicating overall health
|
|
252
|
+
- backend_type: str identifying the backend
|
|
253
|
+
- latency_ms: float connection latency
|
|
254
|
+
- reason: str explaining the health status
|
|
255
|
+
- error_type: str | None exception type if failed
|
|
256
|
+
- details: ModelServiceDiscoveryHealthCheckDetails with typed diagnostics
|
|
257
|
+
- correlation_id: UUID | None for tracing
|
|
258
|
+
|
|
259
|
+
Example:
|
|
260
|
+
>>> from omnibase_infra.nodes.node_service_discovery_effect.models import (
|
|
261
|
+
... ModelServiceDiscoveryHealthCheckDetails,
|
|
262
|
+
... )
|
|
263
|
+
>>> health = await handler.health_check()
|
|
264
|
+
>>> health
|
|
265
|
+
ModelServiceDiscoveryHealthCheckResult(
|
|
266
|
+
healthy=True,
|
|
267
|
+
backend_type="consul",
|
|
268
|
+
latency_ms=5.2,
|
|
269
|
+
reason="ok",
|
|
270
|
+
details=ModelServiceDiscoveryHealthCheckDetails(
|
|
271
|
+
agent_address="localhost:8500",
|
|
272
|
+
service_count=15,
|
|
273
|
+
),
|
|
274
|
+
)
|
|
275
|
+
"""
|
|
276
|
+
...
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
__all__ = ["ProtocolDiscoveryOperations"]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Registry for Service Discovery Effect Node.
|
|
4
|
+
|
|
5
|
+
This module exports the registry for service discovery node dependencies:
|
|
6
|
+
|
|
7
|
+
Classes:
|
|
8
|
+
RegistryInfraServiceDiscovery: Registry for service discovery dependencies.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from .registry_infra_service_discovery import RegistryInfraServiceDiscovery
|
|
12
|
+
|
|
13
|
+
__all__ = ["RegistryInfraServiceDiscovery"]
|
omnibase_infra/nodes/node_service_discovery_effect/registry/registry_infra_service_discovery.py
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Registry for Service Discovery Node Dependencies.
|
|
4
|
+
|
|
5
|
+
This module provides RegistryInfraServiceDiscovery for registering
|
|
6
|
+
service discovery node dependencies with the ONEX container.
|
|
7
|
+
|
|
8
|
+
Architecture:
|
|
9
|
+
RegistryInfraServiceDiscovery handles dependency injection setup
|
|
10
|
+
for the NodeServiceDiscoveryEffect node:
|
|
11
|
+
- Registers protocol implementations (Consul, K8s, Etcd handlers)
|
|
12
|
+
- Configures handler resolution based on environment/configuration
|
|
13
|
+
- Provides factory methods for handler instantiation
|
|
14
|
+
|
|
15
|
+
Usage:
|
|
16
|
+
The registry is typically called during application bootstrap:
|
|
17
|
+
|
|
18
|
+
.. code-block:: python
|
|
19
|
+
|
|
20
|
+
from omnibase_core.models.container import ModelONEXContainer
|
|
21
|
+
from omnibase_infra.nodes.node_service_discovery_effect.registry import (
|
|
22
|
+
RegistryInfraServiceDiscovery,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
container = ModelONEXContainer()
|
|
26
|
+
RegistryInfraServiceDiscovery.register(container)
|
|
27
|
+
|
|
28
|
+
# Or with specific handler configuration
|
|
29
|
+
RegistryInfraServiceDiscovery.register_with_handler(
|
|
30
|
+
container,
|
|
31
|
+
handler=consul_handler_instance,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
Related:
|
|
35
|
+
- NodeServiceDiscoveryEffect: Node that consumes registered dependencies
|
|
36
|
+
- ProtocolDiscoveryOperations: Protocol for handlers
|
|
37
|
+
- ModelONEXContainer: DI container for dependency resolution
|
|
38
|
+
- OMN-1131: Capability-oriented node architecture
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
from __future__ import annotations
|
|
42
|
+
|
|
43
|
+
import logging
|
|
44
|
+
from typing import TYPE_CHECKING
|
|
45
|
+
|
|
46
|
+
from omnibase_infra.errors import ProtocolConfigurationError
|
|
47
|
+
|
|
48
|
+
if TYPE_CHECKING:
|
|
49
|
+
from omnibase_core.models.container.model_onex_container import ModelONEXContainer
|
|
50
|
+
from omnibase_infra.nodes.node_service_discovery_effect.protocols import (
|
|
51
|
+
ProtocolDiscoveryOperations,
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
logger = logging.getLogger(__name__)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class RegistryInfraServiceDiscovery:
|
|
58
|
+
"""Registry for service discovery node dependencies.
|
|
59
|
+
|
|
60
|
+
Provides static methods for registering service discovery
|
|
61
|
+
dependencies with the ONEX container. Supports both default
|
|
62
|
+
registration and explicit handler configuration.
|
|
63
|
+
|
|
64
|
+
API Pattern Note:
|
|
65
|
+
This registry uses ``container.service_registry.register_instance()``
|
|
66
|
+
for protocol-based type-safe DI resolution. This differs from
|
|
67
|
+
RegistryInfraRegistrationStorage which uses a module-level dict for
|
|
68
|
+
multi-handler routing by type string (e.g., "postgresql", "mock"),
|
|
69
|
+
as ServiceRegistry does not support dict-style indexed access.
|
|
70
|
+
|
|
71
|
+
The different patterns serve different purposes:
|
|
72
|
+
- Protocol-based registration: Single handler per protocol type
|
|
73
|
+
- Dict-based registration: Multiple handlers with type routing
|
|
74
|
+
|
|
75
|
+
Class Methods:
|
|
76
|
+
register: Register with default/environment-based configuration.
|
|
77
|
+
register_with_handler: Register with explicit handler instance.
|
|
78
|
+
|
|
79
|
+
Example:
|
|
80
|
+
.. code-block:: python
|
|
81
|
+
|
|
82
|
+
from omnibase_core.models.container import ModelONEXContainer
|
|
83
|
+
|
|
84
|
+
# Default registration (uses environment configuration)
|
|
85
|
+
container = ModelONEXContainer()
|
|
86
|
+
RegistryInfraServiceDiscovery.register(container)
|
|
87
|
+
|
|
88
|
+
# Explicit handler registration
|
|
89
|
+
consul_handler = HandlerServiceDiscoveryConsul(
|
|
90
|
+
container=container,
|
|
91
|
+
consul_host="localhost",
|
|
92
|
+
)
|
|
93
|
+
RegistryInfraServiceDiscovery.register_with_handler(
|
|
94
|
+
container,
|
|
95
|
+
handler=consul_handler,
|
|
96
|
+
)
|
|
97
|
+
"""
|
|
98
|
+
|
|
99
|
+
@staticmethod
|
|
100
|
+
def register(container: ModelONEXContainer) -> None:
|
|
101
|
+
"""Register service discovery dependencies with default configuration.
|
|
102
|
+
|
|
103
|
+
Registers service discovery dependencies using environment-based
|
|
104
|
+
or default configuration. The specific handler implementation
|
|
105
|
+
is determined by configuration at runtime.
|
|
106
|
+
|
|
107
|
+
Args:
|
|
108
|
+
container: ONEX dependency injection container.
|
|
109
|
+
|
|
110
|
+
Note:
|
|
111
|
+
This method registers a factory function that creates the
|
|
112
|
+
appropriate handler based on configuration. The actual
|
|
113
|
+
handler is not instantiated until resolution time.
|
|
114
|
+
|
|
115
|
+
Example:
|
|
116
|
+
>>> container = ModelONEXContainer()
|
|
117
|
+
>>> RegistryInfraServiceDiscovery.register(container)
|
|
118
|
+
"""
|
|
119
|
+
if container.service_registry is None:
|
|
120
|
+
return
|
|
121
|
+
|
|
122
|
+
# NOTE: Factory registration (register_factory) is not implemented in
|
|
123
|
+
# omnibase_core v1.0. This method provides no-op registration for forward
|
|
124
|
+
# compatibility. Use register_with_handler() to explicitly provide a
|
|
125
|
+
# pre-configured handler instance.
|
|
126
|
+
logger.debug(
|
|
127
|
+
"Service discovery factory registration skipped - "
|
|
128
|
+
"factory registration not implemented in v1.0. "
|
|
129
|
+
"Use register_with_handler() to register an explicit handler instance."
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
@staticmethod
|
|
133
|
+
async def register_with_handler(
|
|
134
|
+
container: ModelONEXContainer,
|
|
135
|
+
handler: ProtocolDiscoveryOperations,
|
|
136
|
+
) -> None:
|
|
137
|
+
"""Register service discovery dependencies with explicit handler.
|
|
138
|
+
|
|
139
|
+
Registers the provided handler implementation directly.
|
|
140
|
+
Use this method when you have a pre-configured handler instance.
|
|
141
|
+
|
|
142
|
+
Args:
|
|
143
|
+
container: ONEX dependency injection container.
|
|
144
|
+
handler: Pre-configured handler implementation.
|
|
145
|
+
|
|
146
|
+
Raises:
|
|
147
|
+
TypeError: If handler does not implement ProtocolDiscoveryOperations.
|
|
148
|
+
|
|
149
|
+
Example:
|
|
150
|
+
>>> container = ModelONEXContainer()
|
|
151
|
+
>>> handler = HandlerServiceDiscoveryConsul(config)
|
|
152
|
+
>>> await RegistryInfraServiceDiscovery.register_with_handler(
|
|
153
|
+
... container,
|
|
154
|
+
... handler=handler,
|
|
155
|
+
... )
|
|
156
|
+
"""
|
|
157
|
+
# Import at runtime for isinstance check (protocol is @runtime_checkable)
|
|
158
|
+
from omnibase_core.enums import EnumInjectionScope
|
|
159
|
+
from omnibase_infra.nodes.node_service_discovery_effect.protocols import (
|
|
160
|
+
ProtocolDiscoveryOperations,
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
# NOTE: isinstance() is intentionally used here instead of duck typing for:
|
|
164
|
+
# 1. Fail-fast validation: Immediately reject invalid handlers at registration
|
|
165
|
+
# time rather than discovering missing methods at runtime during operations
|
|
166
|
+
# 2. Type safety: The @runtime_checkable decorator enables structural subtyping
|
|
167
|
+
# checks that verify all required Protocol methods exist
|
|
168
|
+
# 3. Clear error messages: TypeError with specific protocol name aids debugging
|
|
169
|
+
# Duck typing (hasattr checks) would defer validation to method call time,
|
|
170
|
+
# making it harder to diagnose misconfigured handlers.
|
|
171
|
+
# See: conftest.py "Protocol Compliance Strategy" for when to use each approach.
|
|
172
|
+
if not isinstance(handler, ProtocolDiscoveryOperations):
|
|
173
|
+
raise TypeError(
|
|
174
|
+
f"Handler must implement ProtocolDiscoveryOperations, "
|
|
175
|
+
f"got {type(handler).__name__}"
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
if container.service_registry is None:
|
|
179
|
+
return
|
|
180
|
+
|
|
181
|
+
await container.service_registry.register_instance(
|
|
182
|
+
interface=ProtocolDiscoveryOperations, # type: ignore[type-abstract]
|
|
183
|
+
instance=handler,
|
|
184
|
+
scope=EnumInjectionScope.GLOBAL,
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
@staticmethod
|
|
188
|
+
def _create_handler_from_config(
|
|
189
|
+
_container: ModelONEXContainer,
|
|
190
|
+
) -> ProtocolDiscoveryOperations:
|
|
191
|
+
"""Create handler based on configuration.
|
|
192
|
+
|
|
193
|
+
Factory function that creates the appropriate handler
|
|
194
|
+
implementation based on environment/configuration.
|
|
195
|
+
|
|
196
|
+
Args:
|
|
197
|
+
container: ONEX container (for accessing configuration).
|
|
198
|
+
|
|
199
|
+
Returns:
|
|
200
|
+
Configured handler implementation.
|
|
201
|
+
|
|
202
|
+
Raises:
|
|
203
|
+
ProtocolConfigurationError: If no handler can be configured.
|
|
204
|
+
|
|
205
|
+
Note:
|
|
206
|
+
This is a placeholder implementation. Actual handler
|
|
207
|
+
creation depends on available backend implementations
|
|
208
|
+
(Consul, Kubernetes, Etcd adapters).
|
|
209
|
+
"""
|
|
210
|
+
# Placeholder implementation
|
|
211
|
+
# In production, this would:
|
|
212
|
+
# 1. Read configuration (CONSUL_AGENT_URL, K8S_NAMESPACE, etc.)
|
|
213
|
+
# 2. Instantiate appropriate handler (ConsulHandler, K8sHandler, etc.)
|
|
214
|
+
# 3. Return the configured handler
|
|
215
|
+
raise ProtocolConfigurationError(
|
|
216
|
+
"No service discovery handler configured. "
|
|
217
|
+
"Use register_with_handler() to provide a handler, "
|
|
218
|
+
"or implement handler auto-configuration."
|
|
219
|
+
)
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
__all__ = ["RegistryInfraServiceDiscovery"]
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""ONEX Infrastructure Reducers Module.
|
|
4
|
+
|
|
5
|
+
This module provides reducer nodes for aggregating and consolidating state
|
|
6
|
+
from multiple sources in the ONEX 4-node architecture.
|
|
7
|
+
|
|
8
|
+
Reducers are responsible for:
|
|
9
|
+
- State aggregation from multiple sources
|
|
10
|
+
- Event sourcing and state reconstruction
|
|
11
|
+
- Multi-source data consolidation
|
|
12
|
+
- Dual registration coordination (Consul + PostgreSQL)
|
|
13
|
+
|
|
14
|
+
Available Reducers:
|
|
15
|
+
- NodeRegistrationReducer: Declarative FSM-driven reducer (ONEX pattern).
|
|
16
|
+
Located at: nodes/node_registration_reducer/node.py
|
|
17
|
+
Uses contract.yaml for FSM state transitions.
|
|
18
|
+
|
|
19
|
+
- RegistrationReducer: Pure function reducer implementation.
|
|
20
|
+
Uses ModelReducerOutput from omnibase_core.
|
|
21
|
+
|
|
22
|
+
Related:
|
|
23
|
+
- OMN-1104: Refactor RegistrationReducer to be fully declarative
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
from omnibase_infra.nodes.reducers.registration_reducer import RegistrationReducer
|
|
27
|
+
|
|
28
|
+
__all__ = [
|
|
29
|
+
"RegistrationReducer",
|
|
30
|
+
]
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Models for Reducers.
|
|
4
|
+
|
|
5
|
+
This module exports models used by infrastructure reducers (pure function pattern).
|
|
6
|
+
|
|
7
|
+
Available Models:
|
|
8
|
+
- ModelRegistrationState: Immutable state for pure reducer pattern
|
|
9
|
+
- ModelRegistrationConfirmation: Confirmation event from Effect layer (Phase 2)
|
|
10
|
+
- ModelPayloadConsulRegister: Payload for Consul registration intents
|
|
11
|
+
- ModelPayloadLedgerAppend: Payload for audit ledger append intents
|
|
12
|
+
- ModelPayloadPostgresUpsertRegistration: Payload for PostgreSQL upsert intents
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from omnibase_infra.nodes.reducers.models.model_payload_consul_register import (
|
|
16
|
+
ModelPayloadConsulRegister,
|
|
17
|
+
)
|
|
18
|
+
from omnibase_infra.nodes.reducers.models.model_payload_ledger_append import (
|
|
19
|
+
ModelPayloadLedgerAppend,
|
|
20
|
+
)
|
|
21
|
+
from omnibase_infra.nodes.reducers.models.model_payload_postgres_upsert_registration import (
|
|
22
|
+
ModelPayloadPostgresUpsertRegistration,
|
|
23
|
+
)
|
|
24
|
+
from omnibase_infra.nodes.reducers.models.model_registration_confirmation import (
|
|
25
|
+
ModelRegistrationConfirmation,
|
|
26
|
+
)
|
|
27
|
+
from omnibase_infra.nodes.reducers.models.model_registration_state import (
|
|
28
|
+
ModelRegistrationState,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
__all__ = [
|
|
32
|
+
"ModelPayloadConsulRegister",
|
|
33
|
+
"ModelPayloadLedgerAppend",
|
|
34
|
+
"ModelPayloadPostgresUpsertRegistration",
|
|
35
|
+
"ModelRegistrationConfirmation",
|
|
36
|
+
"ModelRegistrationState",
|
|
37
|
+
]
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Consul register payload model for registration reducer.
|
|
4
|
+
|
|
5
|
+
This payload implements ProtocolIntentPayload for use with ModelIntent.
|
|
6
|
+
It contains the same data as ModelConsulRegisterIntent but with an
|
|
7
|
+
`intent_type` field instead of `kind` to satisfy the protocol.
|
|
8
|
+
|
|
9
|
+
Related:
|
|
10
|
+
- ModelConsulRegisterIntent: Core intent model (uses `kind` discriminator)
|
|
11
|
+
- ProtocolIntentPayload: Protocol requiring `intent_type` property
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
from typing import Literal
|
|
17
|
+
from uuid import UUID
|
|
18
|
+
|
|
19
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
20
|
+
|
|
21
|
+
from omnibase_infra.models.registration.model_node_event_bus_config import (
|
|
22
|
+
ModelNodeEventBusConfig,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
# NOTE: ModelIntentPayloadBase was removed in omnibase_core 0.6.2
|
|
26
|
+
# Using pydantic.BaseModel directly as the base class
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class ModelPayloadConsulRegister(BaseModel):
|
|
30
|
+
"""Payload for Consul service registration intents.
|
|
31
|
+
|
|
32
|
+
This payload follows the ONEX intent payload pattern for use with ModelIntent.
|
|
33
|
+
|
|
34
|
+
Attributes:
|
|
35
|
+
intent_type: Discriminator literal for intent routing. Always "consul.register".
|
|
36
|
+
correlation_id: Correlation ID for distributed tracing.
|
|
37
|
+
service_id: Unique service identifier for Consul registration.
|
|
38
|
+
service_name: Service name for Consul service catalog.
|
|
39
|
+
tags: Service tags for filtering and categorization.
|
|
40
|
+
health_check: Optional health check configuration.
|
|
41
|
+
event_bus_config: Resolved event bus topics for registry storage.
|
|
42
|
+
If None, node is not included in dynamic topic routing lookups.
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
model_config = ConfigDict(frozen=True, extra="forbid", from_attributes=True)
|
|
46
|
+
|
|
47
|
+
intent_type: Literal["consul.register"] = Field(
|
|
48
|
+
default="consul.register",
|
|
49
|
+
description="Discriminator literal for intent routing.",
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
correlation_id: UUID = Field(
|
|
53
|
+
...,
|
|
54
|
+
description="Correlation ID for distributed tracing.",
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
service_id: str = Field(
|
|
58
|
+
...,
|
|
59
|
+
min_length=1,
|
|
60
|
+
description="Unique service identifier for Consul registration.",
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
service_name: str = Field(
|
|
64
|
+
...,
|
|
65
|
+
min_length=1,
|
|
66
|
+
description="Service name for Consul service catalog.",
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
tags: list[str] = Field(
|
|
70
|
+
...,
|
|
71
|
+
description="Service tags for filtering and categorization.",
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
health_check: dict[str, str] | None = Field(
|
|
75
|
+
default=None,
|
|
76
|
+
description="Optional health check configuration (HTTP, Interval, Timeout).",
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
event_bus_config: ModelNodeEventBusConfig | None = Field(
|
|
80
|
+
default=None,
|
|
81
|
+
description="Resolved event bus topics for registry storage.",
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
__all__ = [
|
|
86
|
+
"ModelPayloadConsulRegister",
|
|
87
|
+
]
|