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,677 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
#
|
|
4
|
+
# ONEX Node Contract
|
|
5
|
+
# Node: NodeRegistryEffect
|
|
6
|
+
#
|
|
7
|
+
# This contract defines the interface for the Registry Effect node,
|
|
8
|
+
# which handles dual-backend node registration against Consul and PostgreSQL.
|
|
9
|
+
# The node uses declarative operation routing to dispatch operations to
|
|
10
|
+
# backend-specific handlers.
|
|
11
|
+
# Contract identifiers
|
|
12
|
+
name: "node_registry_effect"
|
|
13
|
+
contract_name: "node_registry_effect"
|
|
14
|
+
node_name: "node_registry_effect"
|
|
15
|
+
contract_version:
|
|
16
|
+
major: 1
|
|
17
|
+
minor: 1
|
|
18
|
+
patch: 0
|
|
19
|
+
node_version:
|
|
20
|
+
major: 1
|
|
21
|
+
minor: 1
|
|
22
|
+
patch: 0
|
|
23
|
+
# Node type
|
|
24
|
+
node_type: "EFFECT_GENERIC"
|
|
25
|
+
# Description
|
|
26
|
+
description: >
|
|
27
|
+
Effect node for dual-backend node registration. Executes registration operations against both Consul (service discovery) and PostgreSQL (registration record persistence), with support for partial failure handling and targeted retries. Uses declarative operation routing to dispatch to backend-specific handlers.
|
|
28
|
+
|
|
29
|
+
# Strongly typed I/O models
|
|
30
|
+
input_model:
|
|
31
|
+
name: "ModelRegistryRequest"
|
|
32
|
+
module: "omnibase_infra.nodes.node_registry_effect.models"
|
|
33
|
+
description: "Input model containing operation type and registration parameters."
|
|
34
|
+
output_model:
|
|
35
|
+
name: "ModelRegistryResponse"
|
|
36
|
+
module: "omnibase_infra.nodes.node_registry_effect.models"
|
|
37
|
+
description: "Output model containing backend status and registration outcome."
|
|
38
|
+
# =============================================================================
|
|
39
|
+
# HANDLER ROUTING (Declarative Handler Dispatch)
|
|
40
|
+
# =============================================================================
|
|
41
|
+
# This section defines how operations are routed to backend-specific handlers.
|
|
42
|
+
# The routing strategy determines handler selection based on payload type
|
|
43
|
+
# (per ONEX handler routing standards).
|
|
44
|
+
#
|
|
45
|
+
# Design Rationale:
|
|
46
|
+
# - Parallel execution for independent backends (Consul + Postgres)
|
|
47
|
+
# - Partial failure handling allows one backend to succeed even if other fails
|
|
48
|
+
# - Each handler is responsible for a single backend operation
|
|
49
|
+
#
|
|
50
|
+
# Execution Flow:
|
|
51
|
+
# 1. Receive ModelRegistryRequest with operation type
|
|
52
|
+
# 2. Route to all matching handlers based on payload type
|
|
53
|
+
# 3. Execute handlers in parallel (for dual-backend operations)
|
|
54
|
+
# 4. Aggregate results with partial failure handling
|
|
55
|
+
# 5. Return ModelRegistryResponse with combined status
|
|
56
|
+
#
|
|
57
|
+
# ┌─────────────────────────────────────────────────────────────────────────┐
|
|
58
|
+
# │ HANDLER ROUTING ARCHITECTURE │
|
|
59
|
+
# ├─────────────────────────────────────────────────────────────────────────┤
|
|
60
|
+
# │ │
|
|
61
|
+
# │ ┌────────────────────┐ │
|
|
62
|
+
# │ │ ModelRegistryRequest│ │
|
|
63
|
+
# │ │ operation: "X" │ │
|
|
64
|
+
# │ └─────────┬──────────┘ │
|
|
65
|
+
# │ │ │
|
|
66
|
+
# │ ▼ │
|
|
67
|
+
# │ ┌─────────────────────┐ │
|
|
68
|
+
# │ │ Handler Router │ routing_strategy: "payload_type_match" │
|
|
69
|
+
# │ │ (Contract-Driven) │ Matches payload type to handlers │
|
|
70
|
+
# │ └─────────┬───────────┘ │
|
|
71
|
+
# │ │ │
|
|
72
|
+
# │ │ operation == "register_node" │
|
|
73
|
+
# │ │ │
|
|
74
|
+
# │ ┌──────┴──────┐ execution_mode: "parallel" │
|
|
75
|
+
# │ │ │ (asyncio.gather) │
|
|
76
|
+
# │ ▼ ▼ │
|
|
77
|
+
# │ ┌────────────┐ ┌────────────┐ │
|
|
78
|
+
# │ │ Handler │ │ Handler │ │
|
|
79
|
+
# │ │ Consul │ │ Postgres │ │
|
|
80
|
+
# │ │ Register │ │ Upsert │ │
|
|
81
|
+
# │ └─────┬──────┘ └─────┬──────┘ │
|
|
82
|
+
# │ │ │ │
|
|
83
|
+
# │ ▼ ▼ │
|
|
84
|
+
# │ ┌──────────────────────────┐ │
|
|
85
|
+
# │ │ Result Aggregator │ aggregation_strategy: "all_or_partial" │
|
|
86
|
+
# │ │ partial_failure: true │ │
|
|
87
|
+
# │ └────────────┬─────────────┘ │
|
|
88
|
+
# │ │ │
|
|
89
|
+
# │ ▼ │
|
|
90
|
+
# │ ┌─────────────────────────┐ │
|
|
91
|
+
# │ │ ModelRegistryResponse │ status: "success"/"partial"/"failed" │
|
|
92
|
+
# │ │ consul_result: Result │ consul_result.success: bool │
|
|
93
|
+
# │ │ postgres_result: Result│ postgres_result.success: bool │
|
|
94
|
+
# │ └─────────────────────────┘ │
|
|
95
|
+
# │ │
|
|
96
|
+
# └─────────────────────────────────────────────────────────────────────────┘
|
|
97
|
+
#
|
|
98
|
+
# Parallel Execution Behavior:
|
|
99
|
+
# When execution_mode is "parallel", handlers for the same operation execute
|
|
100
|
+
# concurrently using asyncio.gather(). For dual-backend operations like
|
|
101
|
+
# "register_node", both HandlerConsulRegister and HandlerPostgresUpsert run
|
|
102
|
+
# simultaneously, reducing total latency to max(consul_time, postgres_time)
|
|
103
|
+
# rather than consul_time + postgres_time.
|
|
104
|
+
#
|
|
105
|
+
# Partial failure (partial_failure_handling: true) means if Consul succeeds
|
|
106
|
+
# but PostgreSQL fails (or vice versa), the operation returns status="partial"
|
|
107
|
+
# with the successful backend's result.success=true and the failed backend's
|
|
108
|
+
# result.success=false, allowing callers to retry the failed backend
|
|
109
|
+
# via the "retry_partial_failure" operation.
|
|
110
|
+
#
|
|
111
|
+
# Handler Responsibility:
|
|
112
|
+
# Each handler manages its own retry logic using the retry_policy defined
|
|
113
|
+
# in error_handling. The orchestration layer dispatches once per handler
|
|
114
|
+
# and delegates retry behavior to the handlers themselves.
|
|
115
|
+
# =============================================================================
|
|
116
|
+
handler_routing:
|
|
117
|
+
routing_strategy: "payload_type_match"
|
|
118
|
+
handlers:
|
|
119
|
+
# Register Node - Consul Backend
|
|
120
|
+
# Registers service with Consul for service discovery.
|
|
121
|
+
# Uses health check endpoint for automated liveness monitoring.
|
|
122
|
+
- operation: "register_node"
|
|
123
|
+
handler:
|
|
124
|
+
name: "HandlerConsulRegister"
|
|
125
|
+
module: "omnibase_infra.nodes.node_registry_effect.handlers.handler_consul_register"
|
|
126
|
+
backend: "consul"
|
|
127
|
+
description: "Register node with Consul service discovery"
|
|
128
|
+
output_fields:
|
|
129
|
+
- consul_registered
|
|
130
|
+
- consul_service_id
|
|
131
|
+
# Register Node - PostgreSQL Backend
|
|
132
|
+
# Persists registration record to PostgreSQL for durability.
|
|
133
|
+
# Uses upsert semantics for idempotent re-registration.
|
|
134
|
+
- operation: "register_node"
|
|
135
|
+
handler:
|
|
136
|
+
name: "HandlerPostgresUpsert"
|
|
137
|
+
module: "omnibase_infra.nodes.node_registry_effect.handlers.handler_postgres_upsert"
|
|
138
|
+
backend: "postgres"
|
|
139
|
+
description: "Persist node registration to PostgreSQL"
|
|
140
|
+
output_fields:
|
|
141
|
+
- postgres_registered
|
|
142
|
+
- registration_id
|
|
143
|
+
# Deregister Node - Consul Backend
|
|
144
|
+
# Removes service from Consul to stop routing traffic.
|
|
145
|
+
- operation: "deregister_node"
|
|
146
|
+
handler:
|
|
147
|
+
name: "HandlerConsulDeregister"
|
|
148
|
+
module: "omnibase_infra.nodes.node_registry_effect.handlers.handler_consul_deregister"
|
|
149
|
+
backend: "consul"
|
|
150
|
+
description: "Deregister node from Consul service discovery"
|
|
151
|
+
output_fields:
|
|
152
|
+
- consul_deregistered
|
|
153
|
+
# Deregister Node - PostgreSQL Backend
|
|
154
|
+
# Marks registration record as inactive in PostgreSQL.
|
|
155
|
+
- operation: "deregister_node"
|
|
156
|
+
handler:
|
|
157
|
+
name: "HandlerPostgresDeactivate"
|
|
158
|
+
module: "omnibase_infra.nodes.node_registry_effect.handlers.handler_postgres_deactivate"
|
|
159
|
+
backend: "postgres"
|
|
160
|
+
description: "Mark node registration as inactive in PostgreSQL"
|
|
161
|
+
output_fields:
|
|
162
|
+
- postgres_deregistered
|
|
163
|
+
# Retry Partial Failure - Targeted Backend
|
|
164
|
+
# Retries a specific backend after partial failure.
|
|
165
|
+
# Uses idempotency key to ensure safe retry semantics.
|
|
166
|
+
- operation: "retry_partial_failure"
|
|
167
|
+
handler:
|
|
168
|
+
name: "HandlerPartialRetry"
|
|
169
|
+
module: "omnibase_infra.nodes.node_registry_effect.handlers.handler_partial_retry"
|
|
170
|
+
backend: "dynamic"
|
|
171
|
+
description: "Retry registration for specific backend after partial failure"
|
|
172
|
+
dynamic_backend_field: "target_backend"
|
|
173
|
+
output_fields:
|
|
174
|
+
- success
|
|
175
|
+
- backend_status
|
|
176
|
+
# Execution configuration
|
|
177
|
+
execution_mode: "parallel"
|
|
178
|
+
partial_failure_handling: true
|
|
179
|
+
aggregation_strategy: "all_or_partial"
|
|
180
|
+
# =============================================================================
|
|
181
|
+
# ERROR HANDLING (Circuit Breaker + Retry + Sanitization)
|
|
182
|
+
# =============================================================================
|
|
183
|
+
# Error handling configuration following ONEX infrastructure patterns.
|
|
184
|
+
# Uses circuit breakers for backend protection and retry policies for
|
|
185
|
+
# transient failure recovery.
|
|
186
|
+
#
|
|
187
|
+
# Error Flow:
|
|
188
|
+
# 1. Operation fails -> Check if error is retriable
|
|
189
|
+
# 2. Retry with exponential backoff if retriable
|
|
190
|
+
# 3. After max retries, check circuit breaker state
|
|
191
|
+
# 4. Open circuit if failure threshold exceeded
|
|
192
|
+
# 5. Sanitize error before logging/returning
|
|
193
|
+
# =============================================================================
|
|
194
|
+
error_handling:
|
|
195
|
+
# Circuit breaker configuration
|
|
196
|
+
# Prevents cascading failures by stopping requests to failing backends.
|
|
197
|
+
circuit_breaker:
|
|
198
|
+
enabled: true
|
|
199
|
+
failure_threshold: 5
|
|
200
|
+
reset_timeout_ms: 60000
|
|
201
|
+
half_open_max_requests: 3
|
|
202
|
+
per_backend: true
|
|
203
|
+
backends:
|
|
204
|
+
- name: "consul"
|
|
205
|
+
failure_threshold: 5
|
|
206
|
+
reset_timeout_ms: 60000
|
|
207
|
+
- name: "postgres"
|
|
208
|
+
failure_threshold: 5
|
|
209
|
+
reset_timeout_ms: 60000
|
|
210
|
+
# Retry policy with exponential backoff
|
|
211
|
+
# Handles transient infrastructure failures.
|
|
212
|
+
#
|
|
213
|
+
# ==========================================================================
|
|
214
|
+
# IMPORTANT: Effect Layer vs Handler Layer Retry Behavior
|
|
215
|
+
# ==========================================================================
|
|
216
|
+
#
|
|
217
|
+
# Effect Layer (NodeRegistryEffect):
|
|
218
|
+
# - Dispatches to handlers EXACTLY ONCE per operation
|
|
219
|
+
# - Does NOT implement retry loops
|
|
220
|
+
# - Returns immediately after handler execution
|
|
221
|
+
# - Effective retry count at this layer: ZERO (0)
|
|
222
|
+
#
|
|
223
|
+
# Handler Layer (HandlerConsulRegister, HandlerPostgresUpsert, etc.):
|
|
224
|
+
# - OWNS retry logic using this retry_policy configuration
|
|
225
|
+
# - Implements exponential backoff for retriable errors
|
|
226
|
+
# - Returns final ModelBackendResult after all retries exhausted
|
|
227
|
+
# - Effective retry count: 0 to max_retries
|
|
228
|
+
#
|
|
229
|
+
# Caller Layer (Orchestrator or External):
|
|
230
|
+
# - Can call "retry_partial_failure" operation after partial failures
|
|
231
|
+
# - This is explicit retry, not automatic
|
|
232
|
+
# - Retries only the failed backend, not both
|
|
233
|
+
#
|
|
234
|
+
# Why this separation?
|
|
235
|
+
# - Clear separation of concerns (effect routes, handlers retry)
|
|
236
|
+
# - Per-backend retry isolation (Consul retries don't affect Postgres)
|
|
237
|
+
# - Consistent retry behavior across all handler implementations
|
|
238
|
+
# - Callers have full control over partial failure retry strategy
|
|
239
|
+
#
|
|
240
|
+
# ==========================================================================
|
|
241
|
+
retry_policy:
|
|
242
|
+
max_retries: 3
|
|
243
|
+
initial_delay_ms: 100
|
|
244
|
+
max_delay_ms: 5000
|
|
245
|
+
exponential_base: 2
|
|
246
|
+
retry_on:
|
|
247
|
+
- "InfraConnectionError"
|
|
248
|
+
- "InfraTimeoutError"
|
|
249
|
+
- "InfraUnavailableError"
|
|
250
|
+
# Error sanitization
|
|
251
|
+
# Removes sensitive information from error messages before logging.
|
|
252
|
+
error_sanitization:
|
|
253
|
+
enabled: true
|
|
254
|
+
utility: "omnibase_infra.utils.util_error_sanitization"
|
|
255
|
+
sanitize_patterns:
|
|
256
|
+
- "password"
|
|
257
|
+
- "secret"
|
|
258
|
+
- "token"
|
|
259
|
+
- "api_key"
|
|
260
|
+
- "connection_string"
|
|
261
|
+
# Error type definitions
|
|
262
|
+
error_types:
|
|
263
|
+
- name: "InfraConnectionError"
|
|
264
|
+
description: "Failed to connect to backend service"
|
|
265
|
+
recoverable: true
|
|
266
|
+
retry_strategy: "exponential_backoff"
|
|
267
|
+
- name: "InfraTimeoutError"
|
|
268
|
+
description: "Backend operation timed out"
|
|
269
|
+
recoverable: true
|
|
270
|
+
retry_strategy: "exponential_backoff"
|
|
271
|
+
- name: "InfraAuthenticationError"
|
|
272
|
+
description: "Authentication failed with backend"
|
|
273
|
+
recoverable: false
|
|
274
|
+
retry_strategy: "none"
|
|
275
|
+
- name: "InfraUnavailableError"
|
|
276
|
+
description: "Backend service is unavailable (circuit open)"
|
|
277
|
+
recoverable: true
|
|
278
|
+
retry_strategy: "exponential_backoff"
|
|
279
|
+
# Error codes used in ModelBackendResult.error_code field
|
|
280
|
+
# These codes provide programmatic error categorization for handlers.
|
|
281
|
+
# Each code maps to a specific operation failure scenario.
|
|
282
|
+
#
|
|
283
|
+
# Error Code Classification:
|
|
284
|
+
# - *_CONNECTION_ERROR: Retriable - network/connection issues
|
|
285
|
+
# - *_TIMEOUT_ERROR: Retriable - operation exceeded timeout
|
|
286
|
+
# - *_AUTH_ERROR: Non-retriable - authentication/authorization failed
|
|
287
|
+
# - *_UNKNOWN_ERROR: Unknown - unclassified exceptions
|
|
288
|
+
# - *_REGISTRATION_ERROR, *_DEREGISTRATION_ERROR, etc.: Operation-specific failures
|
|
289
|
+
error_codes:
|
|
290
|
+
# Consul backend error codes
|
|
291
|
+
- code: "CONSUL_REGISTRATION_ERROR"
|
|
292
|
+
backend: "consul"
|
|
293
|
+
operation: "register_node"
|
|
294
|
+
description: "Consul service registration failed (non-connection error)"
|
|
295
|
+
retriable: false
|
|
296
|
+
- code: "CONSUL_DEREGISTRATION_ERROR"
|
|
297
|
+
backend: "consul"
|
|
298
|
+
operation: "deregister_node"
|
|
299
|
+
description: "Consul service deregistration failed (non-connection error)"
|
|
300
|
+
retriable: false
|
|
301
|
+
- code: "CONSUL_CONNECTION_ERROR"
|
|
302
|
+
backend: "consul"
|
|
303
|
+
operation: "all"
|
|
304
|
+
description: "Connection to Consul server failed"
|
|
305
|
+
retriable: true
|
|
306
|
+
- code: "CONSUL_TIMEOUT_ERROR"
|
|
307
|
+
backend: "consul"
|
|
308
|
+
operation: "all"
|
|
309
|
+
description: "Consul operation exceeded timeout"
|
|
310
|
+
retriable: true
|
|
311
|
+
- code: "CONSUL_AUTH_ERROR"
|
|
312
|
+
backend: "consul"
|
|
313
|
+
operation: "all"
|
|
314
|
+
description: "Authentication with Consul server failed"
|
|
315
|
+
retriable: false
|
|
316
|
+
- code: "CONSUL_UNKNOWN_ERROR"
|
|
317
|
+
backend: "consul"
|
|
318
|
+
operation: "all"
|
|
319
|
+
description: "Unknown error during Consul operation"
|
|
320
|
+
retriable: false
|
|
321
|
+
# PostgreSQL backend error codes
|
|
322
|
+
- code: "POSTGRES_UPSERT_ERROR"
|
|
323
|
+
backend: "postgres"
|
|
324
|
+
operation: "register_node"
|
|
325
|
+
description: "PostgreSQL upsert operation failed (non-connection error)"
|
|
326
|
+
retriable: false
|
|
327
|
+
- code: "POSTGRES_DEACTIVATION_ERROR"
|
|
328
|
+
backend: "postgres"
|
|
329
|
+
operation: "deregister_node"
|
|
330
|
+
description: "PostgreSQL deactivation operation failed (non-connection error)"
|
|
331
|
+
retriable: false
|
|
332
|
+
- code: "POSTGRES_CONNECTION_ERROR"
|
|
333
|
+
backend: "postgres"
|
|
334
|
+
operation: "all"
|
|
335
|
+
description: "Connection to PostgreSQL server failed"
|
|
336
|
+
retriable: true
|
|
337
|
+
- code: "POSTGRES_TIMEOUT_ERROR"
|
|
338
|
+
backend: "postgres"
|
|
339
|
+
operation: "all"
|
|
340
|
+
description: "PostgreSQL operation exceeded timeout"
|
|
341
|
+
retriable: true
|
|
342
|
+
- code: "POSTGRES_AUTH_ERROR"
|
|
343
|
+
backend: "postgres"
|
|
344
|
+
operation: "all"
|
|
345
|
+
description: "Authentication with PostgreSQL server failed"
|
|
346
|
+
retriable: false
|
|
347
|
+
- code: "POSTGRES_UNKNOWN_ERROR"
|
|
348
|
+
backend: "postgres"
|
|
349
|
+
operation: "all"
|
|
350
|
+
description: "Unknown error during PostgreSQL operation"
|
|
351
|
+
retriable: false
|
|
352
|
+
# Retry operation error codes
|
|
353
|
+
- code: "INVALID_TARGET_BACKEND"
|
|
354
|
+
backend: "dynamic"
|
|
355
|
+
operation: "retry_partial_failure"
|
|
356
|
+
description: "Invalid target_backend specified for retry (must be 'consul' or 'postgres')"
|
|
357
|
+
retriable: false
|
|
358
|
+
# Orchestration-level error codes (used by node.py dispatcher)
|
|
359
|
+
- code: "HANDLER_NOT_EXECUTED"
|
|
360
|
+
backend: "any"
|
|
361
|
+
operation: "all"
|
|
362
|
+
description: "Handler was not executed (default state before dispatch)"
|
|
363
|
+
retriable: true
|
|
364
|
+
- code: "CONSUL_EXCEPTION"
|
|
365
|
+
backend: "consul"
|
|
366
|
+
operation: "all"
|
|
367
|
+
description: "Unhandled exception during Consul operation dispatch"
|
|
368
|
+
retriable: false
|
|
369
|
+
- code: "POSTGRES_EXCEPTION"
|
|
370
|
+
backend: "postgres"
|
|
371
|
+
operation: "all"
|
|
372
|
+
description: "Unhandled exception during PostgreSQL operation dispatch"
|
|
373
|
+
retriable: false
|
|
374
|
+
# IO operations (EFFECT node specific)
|
|
375
|
+
# Note: Input fields reference ModelRegistryRequest, output fields reference ModelRegistryResponse
|
|
376
|
+
io_operations:
|
|
377
|
+
- operation: "register_node"
|
|
378
|
+
description: "Register a node with both Consul and PostgreSQL backends"
|
|
379
|
+
input_fields:
|
|
380
|
+
- node_id
|
|
381
|
+
- node_type
|
|
382
|
+
- node_version
|
|
383
|
+
- correlation_id
|
|
384
|
+
- service_name
|
|
385
|
+
- endpoints
|
|
386
|
+
- tags
|
|
387
|
+
- metadata
|
|
388
|
+
- health_check_config
|
|
389
|
+
- timestamp
|
|
390
|
+
output_fields:
|
|
391
|
+
- status
|
|
392
|
+
- node_id
|
|
393
|
+
- correlation_id
|
|
394
|
+
- consul_result
|
|
395
|
+
- postgres_result
|
|
396
|
+
- processing_time_ms
|
|
397
|
+
- timestamp
|
|
398
|
+
- error_summary
|
|
399
|
+
- operation: "deregister_node"
|
|
400
|
+
description: "Deregister a node from both backends"
|
|
401
|
+
input_fields:
|
|
402
|
+
- node_id
|
|
403
|
+
- node_type
|
|
404
|
+
- node_version
|
|
405
|
+
- correlation_id
|
|
406
|
+
- timestamp
|
|
407
|
+
output_fields:
|
|
408
|
+
- status
|
|
409
|
+
- node_id
|
|
410
|
+
- correlation_id
|
|
411
|
+
- consul_result
|
|
412
|
+
- postgres_result
|
|
413
|
+
- processing_time_ms
|
|
414
|
+
- timestamp
|
|
415
|
+
- error_summary
|
|
416
|
+
- operation: "retry_partial_failure"
|
|
417
|
+
description: "Retry registration for a specific backend after partial failure"
|
|
418
|
+
input_fields:
|
|
419
|
+
- node_id
|
|
420
|
+
- target_backend
|
|
421
|
+
- idempotency_key
|
|
422
|
+
output_fields:
|
|
423
|
+
- status
|
|
424
|
+
- node_id
|
|
425
|
+
- correlation_id
|
|
426
|
+
- consul_result
|
|
427
|
+
- postgres_result
|
|
428
|
+
- processing_time_ms
|
|
429
|
+
- timestamp
|
|
430
|
+
- error_summary
|
|
431
|
+
# Dependencies (protocols this node requires)
|
|
432
|
+
dependencies:
|
|
433
|
+
- name: "protocol_consul_client"
|
|
434
|
+
type: "protocol"
|
|
435
|
+
class_name: "ProtocolConsulClient"
|
|
436
|
+
module: "omnibase_infra.nodes.effects.protocol_consul_client"
|
|
437
|
+
description: "Consul service discovery operations"
|
|
438
|
+
- name: "protocol_postgres_adapter"
|
|
439
|
+
type: "protocol"
|
|
440
|
+
class_name: "ProtocolPostgresAdapter"
|
|
441
|
+
module: "omnibase_infra.nodes.effects.protocol_postgres_adapter"
|
|
442
|
+
description: "PostgreSQL registration persistence"
|
|
443
|
+
- name: "protocol_effect_idempotency_store"
|
|
444
|
+
type: "protocol"
|
|
445
|
+
class_name: "ProtocolEffectIdempotencyStore"
|
|
446
|
+
module: "omnibase_infra.nodes.effects.protocol_effect_idempotency_store"
|
|
447
|
+
description: "Idempotency tracking for retry safety"
|
|
448
|
+
- name: "protocol_circuit_breaker_aware"
|
|
449
|
+
type: "protocol"
|
|
450
|
+
class_name: "ProtocolCircuitBreakerAware"
|
|
451
|
+
module: "omnibase_infra.mixins.protocol_circuit_breaker_aware"
|
|
452
|
+
description: "Circuit breaker awareness for backend protection"
|
|
453
|
+
# Capabilities provided by this node
|
|
454
|
+
capabilities:
|
|
455
|
+
- name: "dual_backend_registration"
|
|
456
|
+
description: "Register nodes with both Consul and PostgreSQL simultaneously"
|
|
457
|
+
- name: "partial_failure_handling"
|
|
458
|
+
description: "Handle and recover from partial registration failures"
|
|
459
|
+
- name: "targeted_retry"
|
|
460
|
+
description: "Retry specific backend operations independently"
|
|
461
|
+
- name: "idempotent_operations"
|
|
462
|
+
description: "Ensure operations are idempotent via idempotency store"
|
|
463
|
+
- name: "circuit_breaker_protection"
|
|
464
|
+
description: "Protect backends with circuit breaker pattern"
|
|
465
|
+
- name: "parallel_execution"
|
|
466
|
+
description: "Execute backend operations in parallel for reduced latency"
|
|
467
|
+
# Model definitions
|
|
468
|
+
# These definitions must exactly match the Pydantic models.
|
|
469
|
+
#
|
|
470
|
+
# Module Resolution:
|
|
471
|
+
# The input_model and output_model reference the node's local models package:
|
|
472
|
+
# - omnibase_infra.nodes.node_registry_effect.models
|
|
473
|
+
# This package re-exports shared effect models from:
|
|
474
|
+
# - omnibase_infra.nodes.effects.models.model_registry_request
|
|
475
|
+
# - omnibase_infra.nodes.effects.models.model_registry_response
|
|
476
|
+
# - omnibase_infra.nodes.effects.models.model_backend_result
|
|
477
|
+
#
|
|
478
|
+
# Sync Status:
|
|
479
|
+
# Last verified: 2026-01-08
|
|
480
|
+
# All definitions below match the Pydantic model fields, types, and defaults.
|
|
481
|
+
definitions:
|
|
482
|
+
ModelRegistryRequest:
|
|
483
|
+
type: object
|
|
484
|
+
description: "Request model for dual-backend registration operations"
|
|
485
|
+
frozen: true
|
|
486
|
+
extra: "forbid"
|
|
487
|
+
properties:
|
|
488
|
+
node_id:
|
|
489
|
+
type: uuid
|
|
490
|
+
description: "Unique identifier for the node being registered"
|
|
491
|
+
node_type:
|
|
492
|
+
type: enum
|
|
493
|
+
enum_class: "EnumNodeKind"
|
|
494
|
+
module: "omnibase_core.enums.enum_node_kind"
|
|
495
|
+
description: "Type of ONEX node (effect, compute, reducer, orchestrator)"
|
|
496
|
+
enum:
|
|
497
|
+
- "effect"
|
|
498
|
+
- "compute"
|
|
499
|
+
- "reducer"
|
|
500
|
+
- "orchestrator"
|
|
501
|
+
node_version:
|
|
502
|
+
type: string
|
|
503
|
+
description: "Semantic version of the node"
|
|
504
|
+
correlation_id:
|
|
505
|
+
type: uuid
|
|
506
|
+
description: "Correlation ID for distributed tracing"
|
|
507
|
+
default_factory: "uuid4"
|
|
508
|
+
service_name:
|
|
509
|
+
type: string
|
|
510
|
+
nullable: true
|
|
511
|
+
default: null
|
|
512
|
+
description: "Name for service discovery registration"
|
|
513
|
+
endpoints:
|
|
514
|
+
type: object
|
|
515
|
+
key_type: string
|
|
516
|
+
value_type: string
|
|
517
|
+
description: "Dict of endpoint type to URL (e.g., {'health': 'http://...'})"
|
|
518
|
+
default_factory: "dict"
|
|
519
|
+
tags:
|
|
520
|
+
type: array
|
|
521
|
+
items:
|
|
522
|
+
type: string
|
|
523
|
+
description: "List of tags for service discovery"
|
|
524
|
+
default_factory: "list"
|
|
525
|
+
metadata:
|
|
526
|
+
type: object
|
|
527
|
+
key_type: string
|
|
528
|
+
value_type: string
|
|
529
|
+
description: "Additional metadata for the registration record"
|
|
530
|
+
default_factory: "dict"
|
|
531
|
+
health_check_config:
|
|
532
|
+
type: object
|
|
533
|
+
key_type: string
|
|
534
|
+
value_type: string
|
|
535
|
+
nullable: true
|
|
536
|
+
default: null
|
|
537
|
+
description: "Optional health check configuration for Consul"
|
|
538
|
+
timestamp:
|
|
539
|
+
type: datetime
|
|
540
|
+
description: "When this request was created (must be timezone-aware, explicitly provided)"
|
|
541
|
+
validation:
|
|
542
|
+
- name: "validate_timestamp_timezone_aware"
|
|
543
|
+
description: "Validates that timestamp has timezone info"
|
|
544
|
+
required:
|
|
545
|
+
- node_id
|
|
546
|
+
- node_type
|
|
547
|
+
- node_version
|
|
548
|
+
- timestamp
|
|
549
|
+
ModelBackendResult:
|
|
550
|
+
type: object
|
|
551
|
+
description: "Result of an individual backend operation (Consul or PostgreSQL)"
|
|
552
|
+
frozen: true
|
|
553
|
+
extra: "forbid"
|
|
554
|
+
# ==========================================================================
|
|
555
|
+
# Design Note: No 'retries' Field at Effect Layer
|
|
556
|
+
# ==========================================================================
|
|
557
|
+
# ModelBackendResult intentionally does NOT include a 'retries' field.
|
|
558
|
+
#
|
|
559
|
+
# Rationale:
|
|
560
|
+
# 1. Effect layer dispatches to handlers ONCE per operation
|
|
561
|
+
# 2. Handlers own their retry logic internally using retry_policy
|
|
562
|
+
# 3. Retry count is handler-internal state, not exposed in results
|
|
563
|
+
# 4. Callers use error_code to determine if retry is appropriate
|
|
564
|
+
#
|
|
565
|
+
# If you need to track retries for observability:
|
|
566
|
+
# - Handlers should emit metrics/logs during retry loops
|
|
567
|
+
# - Use correlation_id to correlate retry attempts
|
|
568
|
+
# - Orchestrator layer can track retry_partial_failure calls
|
|
569
|
+
#
|
|
570
|
+
# See: error_handling.retry_policy for handler retry configuration
|
|
571
|
+
# See: operation_routing.operations["retry_partial_failure"] for caller retries
|
|
572
|
+
# ==========================================================================
|
|
573
|
+
properties:
|
|
574
|
+
success:
|
|
575
|
+
type: boolean
|
|
576
|
+
description: "Whether the backend operation completed successfully"
|
|
577
|
+
error:
|
|
578
|
+
type: string
|
|
579
|
+
nullable: true
|
|
580
|
+
default: null
|
|
581
|
+
description: "Sanitized error message if success is False"
|
|
582
|
+
error_code:
|
|
583
|
+
type: string
|
|
584
|
+
nullable: true
|
|
585
|
+
default: null
|
|
586
|
+
description: "Error code for programmatic handling (e.g., DATABASE_CONNECTION_ERROR)"
|
|
587
|
+
duration_ms:
|
|
588
|
+
type: float
|
|
589
|
+
description: "Time taken for the operation in milliseconds"
|
|
590
|
+
default: 0.0
|
|
591
|
+
ge: 0.0
|
|
592
|
+
backend_id:
|
|
593
|
+
type: string
|
|
594
|
+
nullable: true
|
|
595
|
+
default: null
|
|
596
|
+
description: "Optional identifier for the backend instance"
|
|
597
|
+
correlation_id:
|
|
598
|
+
type: uuid
|
|
599
|
+
nullable: true
|
|
600
|
+
default: null
|
|
601
|
+
description: "Correlation ID for tracing the operation"
|
|
602
|
+
required:
|
|
603
|
+
- success
|
|
604
|
+
ModelRegistryResponse:
|
|
605
|
+
type: object
|
|
606
|
+
description: "Response model for dual-backend registration operations with partial failure support"
|
|
607
|
+
frozen: true
|
|
608
|
+
extra: "forbid"
|
|
609
|
+
properties:
|
|
610
|
+
status:
|
|
611
|
+
type: string
|
|
612
|
+
description: "Overall status: success (both succeeded), partial (one succeeded), or failed (both failed)"
|
|
613
|
+
enum:
|
|
614
|
+
- "success"
|
|
615
|
+
- "partial"
|
|
616
|
+
- "failed"
|
|
617
|
+
node_id:
|
|
618
|
+
type: uuid
|
|
619
|
+
description: "UUID of the node that was registered"
|
|
620
|
+
correlation_id:
|
|
621
|
+
type: uuid
|
|
622
|
+
description: "Correlation ID for distributed tracing"
|
|
623
|
+
consul_result:
|
|
624
|
+
type: ref
|
|
625
|
+
ref: "ModelBackendResult"
|
|
626
|
+
description: "Result of the Consul registration operation"
|
|
627
|
+
postgres_result:
|
|
628
|
+
type: ref
|
|
629
|
+
ref: "ModelBackendResult"
|
|
630
|
+
description: "Result of the PostgreSQL upsert operation"
|
|
631
|
+
processing_time_ms:
|
|
632
|
+
type: float
|
|
633
|
+
description: "Total time for the dual-registration operation in milliseconds"
|
|
634
|
+
default: 0.0
|
|
635
|
+
ge: 0.0
|
|
636
|
+
timestamp:
|
|
637
|
+
type: datetime
|
|
638
|
+
description: "When this response was created (must be explicitly provided)"
|
|
639
|
+
error_summary:
|
|
640
|
+
type: string
|
|
641
|
+
nullable: true
|
|
642
|
+
default: null
|
|
643
|
+
description: "Aggregated error message for failed operations (e.g., 'Consul: error; PostgreSQL: error')"
|
|
644
|
+
required:
|
|
645
|
+
- status
|
|
646
|
+
- node_id
|
|
647
|
+
- correlation_id
|
|
648
|
+
- consul_result
|
|
649
|
+
- postgres_result
|
|
650
|
+
- timestamp
|
|
651
|
+
# Health check configuration
|
|
652
|
+
health_check:
|
|
653
|
+
enabled: true
|
|
654
|
+
endpoint: "/health"
|
|
655
|
+
interval_seconds: 30
|
|
656
|
+
backends:
|
|
657
|
+
- name: "consul"
|
|
658
|
+
check_type: "http"
|
|
659
|
+
endpoint: "/v1/status/leader"
|
|
660
|
+
- name: "postgres"
|
|
661
|
+
check_type: "connection"
|
|
662
|
+
timeout_ms: 5000
|
|
663
|
+
# Metadata
|
|
664
|
+
metadata:
|
|
665
|
+
author: "OmniNode Team"
|
|
666
|
+
license: "MIT"
|
|
667
|
+
created: "2025-01-01"
|
|
668
|
+
updated: "2026-01-08"
|
|
669
|
+
tags:
|
|
670
|
+
- effect
|
|
671
|
+
- registration
|
|
672
|
+
- consul
|
|
673
|
+
- postgresql
|
|
674
|
+
- dual-backend
|
|
675
|
+
- idempotency
|
|
676
|
+
- circuit-breaker
|
|
677
|
+
- parallel-execution
|