omnibase_infra 0.2.1__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/cli/__init__.py +1 -0
- omnibase_infra/cli/commands.py +216 -0
- omnibase_infra/clients/__init__.py +0 -0
- omnibase_infra/contracts/handlers/filesystem/handler_contract.yaml +261 -0
- omnibase_infra/contracts/handlers/mcp/handler_contract.yaml +138 -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 +123 -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_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 +101 -0
- omnibase_infra/enums/enum_handler_loader_error.py +178 -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_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 +156 -0
- omnibase_infra/errors/error_architecture_violation.py +152 -0
- omnibase_infra/errors/error_chain_propagation.py +188 -0
- omnibase_infra/errors/error_compute_registry.py +92 -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 +102 -0
- omnibase_infra/errors/error_infra.py +608 -0
- omnibase_infra/errors/error_message_type_registry.py +101 -0
- omnibase_infra/errors/error_policy_registry.py +112 -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 +86 -0
- omnibase_infra/event_bus/event_bus_inmemory.py +743 -0
- omnibase_infra/event_bus/event_bus_kafka.py +1658 -0
- omnibase_infra/event_bus/mixin_kafka_broadcast.py +184 -0
- omnibase_infra/event_bus/mixin_kafka_dlq.py +765 -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 +725 -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/topic_constants.py +376 -0
- omnibase_infra/handlers/__init__.py +75 -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 +787 -0
- omnibase_infra/handlers/handler_db.py +1039 -0
- omnibase_infra/handlers/handler_filesystem.py +1478 -0
- omnibase_infra/handlers/handler_graph.py +1154 -0
- omnibase_infra/handlers/handler_http.py +920 -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 +748 -0
- omnibase_infra/handlers/handler_qdrant.py +1076 -0
- omnibase_infra/handlers/handler_vault.py +422 -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 +42 -0
- omnibase_infra/handlers/mixins/mixin_consul_initialization.py +349 -0
- omnibase_infra/handlers/mixins/mixin_consul_kv.py +337 -0
- omnibase_infra/handlers/mixins/mixin_consul_service.py +277 -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 +915 -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 +747 -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 +99 -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/mixins/__init__.py +71 -0
- omnibase_infra/mixins/mixin_async_circuit_breaker.py +655 -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 +2465 -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 +136 -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 +311 -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 +147 -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_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 +37 -0
- omnibase_infra/models/handlers/model_contract_discovery_result.py +80 -0
- omnibase_infra/models/handlers/model_handler_descriptor.py +185 -0
- omnibase_infra/models/handlers/model_handler_identifier.py +215 -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/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 +590 -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 +59 -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_introspection_metrics.py +253 -0
- omnibase_infra/models/registration/model_node_capabilities.py +179 -0
- omnibase_infra/models/registration/model_node_heartbeat_event.py +126 -0
- omnibase_infra/models/registration/model_node_introspection_event.py +175 -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 +40 -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 +280 -0
- omnibase_infra/models/runtime/model_loaded_handler.py +120 -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 +48 -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 +208 -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 +99 -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/effects/README.md +358 -0
- omnibase_infra/nodes/effects/__init__.py +26 -0
- omnibase_infra/nodes/effects/contract.yaml +172 -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/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 +475 -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 +609 -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 +525 -0
- omnibase_infra/nodes/node_registration_orchestrator/timeout_coordinator.py +392 -0
- omnibase_infra/nodes/node_registration_orchestrator/wiring.py +742 -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 +225 -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 +109 -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 +194 -0
- omnibase_infra/nodes/node_registry_effect/__init__.py +85 -0
- omnibase_infra/nodes/node_registry_effect/contract.yaml +682 -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 +416 -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 +214 -0
- omnibase_infra/nodes/reducers/__init__.py +30 -0
- omnibase_infra/nodes/reducers/models/__init__.py +32 -0
- omnibase_infra/nodes/reducers/models/model_payload_consul_register.py +76 -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 +1137 -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 +435 -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 +99 -0
- omnibase_infra/protocols/protocol_capability_projection.py +253 -0
- omnibase_infra/protocols/protocol_capability_query.py +251 -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 +296 -0
- omnibase_infra/runtime/binding_config_resolver.py +2706 -0
- omnibase_infra/runtime/chain_aware_dispatch.py +467 -0
- omnibase_infra/runtime/contract_handler_discovery.py +582 -0
- omnibase_infra/runtime/contract_loaders/__init__.py +42 -0
- omnibase_infra/runtime/contract_loaders/handler_routing_loader.py +464 -0
- omnibase_infra/runtime/dispatch_context_enforcer.py +427 -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/handler_contract_source.py +669 -0
- omnibase_infra/runtime/handler_plugin_loader.py +2029 -0
- omnibase_infra/runtime/handler_registry.py +321 -0
- omnibase_infra/runtime/invocation_security_enforcer.py +427 -0
- omnibase_infra/runtime/kernel.py +40 -0
- omnibase_infra/runtime/mixin_policy_validation.py +522 -0
- omnibase_infra/runtime/mixin_semver_cache.py +378 -0
- omnibase_infra/runtime/mixins/__init__.py +17 -0
- omnibase_infra/runtime/mixins/mixin_projector_sql_operations.py +757 -0
- omnibase_infra/runtime/models/__init__.py +192 -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_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 +228 -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_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_scheduler_config.py +624 -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_shutdown_batch_result.py +75 -0
- omnibase_infra/runtime/models/model_shutdown_config.py +94 -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 +1102 -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 +27 -0
- omnibase_infra/runtime/protocols/protocol_runtime_scheduler.py +468 -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 +444 -0
- omnibase_infra/runtime/registry_compute.py +1143 -0
- omnibase_infra/runtime/registry_dispatcher.py +678 -0
- omnibase_infra/runtime/registry_policy.py +1502 -0
- omnibase_infra/runtime/runtime_scheduler.py +1070 -0
- omnibase_infra/runtime/secret_resolver.py +2110 -0
- omnibase_infra/runtime/security_metadata_validator.py +776 -0
- omnibase_infra/runtime/service_kernel.py +1573 -0
- omnibase_infra/runtime/service_message_dispatch_engine.py +1805 -0
- omnibase_infra/runtime/service_runtime_host_process.py +2260 -0
- omnibase_infra/runtime/util_container_wiring.py +1123 -0
- omnibase_infra/runtime/util_validation.py +314 -0
- omnibase_infra/runtime/util_version.py +98 -0
- omnibase_infra/runtime/util_wiring.py +566 -0
- omnibase_infra/schemas/schema_registration_projection.sql +320 -0
- omnibase_infra/services/__init__.py +68 -0
- omnibase_infra/services/corpus_capture.py +678 -0
- omnibase_infra/services/service_capability_query.py +945 -0
- omnibase_infra/services/service_health.py +897 -0
- omnibase_infra/services/service_node_selector.py +530 -0
- omnibase_infra/services/service_timeout_emitter.py +682 -0
- omnibase_infra/services/service_timeout_scanner.py +390 -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/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 +21 -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 +89 -0
- omnibase_infra/utils/correlation.py +208 -0
- omnibase_infra/utils/util_datetime.py +372 -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_semver.py +233 -0
- omnibase_infra/validation/__init__.py +307 -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 +1486 -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 +1710 -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 +410 -0
- omnibase_infra/validation/validator_topic_category.py +1152 -0
- omnibase_infra-0.2.1.dist-info/METADATA +197 -0
- omnibase_infra-0.2.1.dist-info/RECORD +675 -0
- omnibase_infra-0.2.1.dist-info/WHEEL +4 -0
- omnibase_infra-0.2.1.dist-info/entry_points.txt +4 -0
- omnibase_infra-0.2.1.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Validation severity levels for security and other validation errors.
|
|
4
|
+
|
|
5
|
+
This module defines the severity levels used in validation error models.
|
|
6
|
+
Severity indicates the impact and urgency of addressing a validation failure.
|
|
7
|
+
|
|
8
|
+
Severity Levels:
|
|
9
|
+
- ERROR: Standard validation failure that must be addressed
|
|
10
|
+
- CRITICAL: Severe failure that poses security or stability risk
|
|
11
|
+
- WARNING: Advisory issue that should be reviewed but may not block
|
|
12
|
+
- INFO: Informational only, does not block operations
|
|
13
|
+
|
|
14
|
+
Usage:
|
|
15
|
+
Used in ModelSecurityError and other validation error models to
|
|
16
|
+
provide structured severity classification.
|
|
17
|
+
|
|
18
|
+
See Also:
|
|
19
|
+
- ModelSecurityError: Security validation error model
|
|
20
|
+
- ModelSecurityValidationResult: Complete validation result container
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
from enum import StrEnum
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class EnumValidationSeverity(StrEnum):
|
|
27
|
+
"""Validation error severity levels.
|
|
28
|
+
|
|
29
|
+
Classifies the severity of validation errors to indicate their
|
|
30
|
+
impact and urgency. Used in security validation, architecture
|
|
31
|
+
validation, and other validation contexts.
|
|
32
|
+
|
|
33
|
+
Attributes:
|
|
34
|
+
ERROR: Standard validation failure. The validation constraint
|
|
35
|
+
was violated and must be addressed before proceeding.
|
|
36
|
+
This is the default severity level. Blocks startup.
|
|
37
|
+
CRITICAL: Severe validation failure. Indicates a security risk,
|
|
38
|
+
data integrity issue, or system stability concern that
|
|
39
|
+
requires immediate attention. Blocks startup.
|
|
40
|
+
WARNING: Advisory issue. The validation identified a potential
|
|
41
|
+
problem that should be reviewed but may not necessarily
|
|
42
|
+
block the operation. Does not block startup.
|
|
43
|
+
INFO: Informational only. Provides context or suggestions
|
|
44
|
+
without indicating any problem. Does not block startup.
|
|
45
|
+
|
|
46
|
+
Example:
|
|
47
|
+
>>> from omnibase_infra.enums import EnumValidationSeverity
|
|
48
|
+
>>> severity = EnumValidationSeverity.ERROR
|
|
49
|
+
>>> severity.value
|
|
50
|
+
'error'
|
|
51
|
+
>>> severity == "error"
|
|
52
|
+
True
|
|
53
|
+
>>> severity.blocks_startup()
|
|
54
|
+
True
|
|
55
|
+
>>> EnumValidationSeverity.INFO.blocks_startup()
|
|
56
|
+
False
|
|
57
|
+
|
|
58
|
+
See Also:
|
|
59
|
+
- ModelSecurityError: Uses this enum for severity classification
|
|
60
|
+
- EnumSecurityRuleId: Security validation rule identifiers
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
ERROR = "error"
|
|
64
|
+
CRITICAL = "critical"
|
|
65
|
+
WARNING = "warning"
|
|
66
|
+
INFO = "info"
|
|
67
|
+
|
|
68
|
+
def blocks_startup(self) -> bool:
|
|
69
|
+
"""Whether this severity level should block runtime startup.
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
True if this severity level should prevent the runtime from
|
|
73
|
+
starting when a violation is detected.
|
|
74
|
+
"""
|
|
75
|
+
return self in (EnumValidationSeverity.ERROR, EnumValidationSeverity.CRITICAL)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
__all__ = ["EnumValidationSeverity"]
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""ONEX Infrastructure Errors Module.
|
|
4
|
+
|
|
5
|
+
This module provides infrastructure-specific error classes and error handling
|
|
6
|
+
utilities for the omnibase_infra package. All errors extend from OnexError
|
|
7
|
+
to maintain consistency with the ONEX error handling patterns.
|
|
8
|
+
|
|
9
|
+
Exports:
|
|
10
|
+
ModelInfraErrorContext: Configuration model for bundled error context
|
|
11
|
+
RuntimeHostError: Base infrastructure error class
|
|
12
|
+
ProtocolConfigurationError: Protocol configuration validation errors
|
|
13
|
+
SecretResolutionError: Secret/credential resolution errors
|
|
14
|
+
InfraConnectionError: Infrastructure connection errors
|
|
15
|
+
InfraTimeoutError: Infrastructure timeout errors
|
|
16
|
+
InfraAuthenticationError: Infrastructure authentication errors
|
|
17
|
+
InfraUnavailableError: Infrastructure resource unavailable errors
|
|
18
|
+
EnvelopeValidationError: Envelope validation errors (pre-dispatch)
|
|
19
|
+
UnknownHandlerTypeError: Unknown handler type prefix errors
|
|
20
|
+
PolicyRegistryError: Policy registry operation errors
|
|
21
|
+
ComputeRegistryError: Compute registry operation errors
|
|
22
|
+
EventBusRegistryError: Event bus registry operation errors
|
|
23
|
+
ChainPropagationError: Correlation/causation chain validation errors
|
|
24
|
+
ArchitectureViolationError: Architecture validation errors (blocks startup)
|
|
25
|
+
|
|
26
|
+
Correlation ID Assignment:
|
|
27
|
+
All infrastructure errors support correlation_id for distributed tracing.
|
|
28
|
+
Follow these rules when assigning correlation IDs:
|
|
29
|
+
|
|
30
|
+
- Always propagate correlation_id from incoming requests to error context
|
|
31
|
+
- If no correlation_id exists in the request, generate one using uuid4()
|
|
32
|
+
- Use UUID4 format for all new correlation IDs (from uuid import uuid4)
|
|
33
|
+
- Include correlation_id in all error context for distributed tracing
|
|
34
|
+
- Preserve correlation_id as UUID objects throughout the system (strong typing)
|
|
35
|
+
|
|
36
|
+
Example::
|
|
37
|
+
|
|
38
|
+
from uuid import UUID, uuid4
|
|
39
|
+
from omnibase_infra.errors import InfraConnectionError, ModelInfraErrorContext
|
|
40
|
+
from omnibase_infra.enums import EnumInfraTransportType
|
|
41
|
+
|
|
42
|
+
# Propagate from request or generate new
|
|
43
|
+
correlation_id = request.correlation_id or uuid4()
|
|
44
|
+
|
|
45
|
+
context = ModelInfraErrorContext(
|
|
46
|
+
transport_type=EnumInfraTransportType.DATABASE,
|
|
47
|
+
operation="execute_query",
|
|
48
|
+
target_name="postgresql-primary",
|
|
49
|
+
correlation_id=correlation_id,
|
|
50
|
+
)
|
|
51
|
+
raise InfraConnectionError("Failed to connect", context=context) from e
|
|
52
|
+
|
|
53
|
+
Error Sanitization Guidelines:
|
|
54
|
+
NEVER include in error messages or context:
|
|
55
|
+
- Passwords, API keys, tokens, or secrets
|
|
56
|
+
- Full connection strings with credentials
|
|
57
|
+
- PII (names, emails, SSNs, phone numbers)
|
|
58
|
+
- Internal IP addresses (in production logs)
|
|
59
|
+
- Private keys or certificates
|
|
60
|
+
- Session tokens or cookies
|
|
61
|
+
|
|
62
|
+
SAFE to include:
|
|
63
|
+
- Service names (e.g., "postgresql", "kafka")
|
|
64
|
+
- Operation names (e.g., "connect", "query", "authenticate")
|
|
65
|
+
- Correlation IDs (always include for tracing)
|
|
66
|
+
- Error codes (e.g., EnumCoreErrorCode.DATABASE_CONNECTION_ERROR)
|
|
67
|
+
- Sanitized hostnames (e.g., "db.example.com")
|
|
68
|
+
- Port numbers
|
|
69
|
+
- Retry counts and timeout values
|
|
70
|
+
- Resource identifiers (non-sensitive)
|
|
71
|
+
|
|
72
|
+
Example - BAD (exposes credentials)::
|
|
73
|
+
|
|
74
|
+
raise InfraConnectionError(
|
|
75
|
+
f"Failed to connect with password={password}", # NEVER DO THIS
|
|
76
|
+
context=context,
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
Example - GOOD (sanitized)::
|
|
80
|
+
|
|
81
|
+
raise InfraConnectionError(
|
|
82
|
+
"Failed to connect to database",
|
|
83
|
+
context=context,
|
|
84
|
+
host="db.example.com",
|
|
85
|
+
port=5432,
|
|
86
|
+
retry_count=3,
|
|
87
|
+
)
|
|
88
|
+
"""
|
|
89
|
+
|
|
90
|
+
from omnibase_infra.errors.error_architecture_violation import (
|
|
91
|
+
ArchitectureViolationError,
|
|
92
|
+
)
|
|
93
|
+
from omnibase_infra.errors.error_chain_propagation import ChainPropagationError
|
|
94
|
+
from omnibase_infra.errors.error_compute_registry import ComputeRegistryError
|
|
95
|
+
from omnibase_infra.errors.error_consul import InfraConsulError
|
|
96
|
+
from omnibase_infra.errors.error_container_wiring import (
|
|
97
|
+
ContainerValidationError,
|
|
98
|
+
ContainerWiringError,
|
|
99
|
+
ServiceRegistrationError,
|
|
100
|
+
ServiceRegistryUnavailableError,
|
|
101
|
+
ServiceResolutionError,
|
|
102
|
+
)
|
|
103
|
+
from omnibase_infra.errors.error_event_bus_registry import EventBusRegistryError
|
|
104
|
+
from omnibase_infra.errors.error_infra import (
|
|
105
|
+
EnvelopeValidationError,
|
|
106
|
+
InfraAuthenticationError,
|
|
107
|
+
InfraConnectionError,
|
|
108
|
+
InfraTimeoutError,
|
|
109
|
+
InfraUnavailableError,
|
|
110
|
+
ProtocolConfigurationError,
|
|
111
|
+
RuntimeHostError,
|
|
112
|
+
SecretResolutionError,
|
|
113
|
+
UnknownHandlerTypeError,
|
|
114
|
+
)
|
|
115
|
+
from omnibase_infra.errors.error_message_type_registry import MessageTypeRegistryError
|
|
116
|
+
from omnibase_infra.errors.error_policy_registry import PolicyRegistryError
|
|
117
|
+
from omnibase_infra.errors.error_vault import InfraVaultError
|
|
118
|
+
from omnibase_infra.models.errors.model_infra_error_context import (
|
|
119
|
+
ModelInfraErrorContext,
|
|
120
|
+
)
|
|
121
|
+
from omnibase_infra.models.errors.model_timeout_error_context import (
|
|
122
|
+
ModelTimeoutErrorContext,
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
__all__: list[str] = [
|
|
126
|
+
# Architecture validation errors
|
|
127
|
+
"ArchitectureViolationError",
|
|
128
|
+
"ChainPropagationError",
|
|
129
|
+
"ComputeRegistryError",
|
|
130
|
+
"ContainerValidationError",
|
|
131
|
+
# Container wiring errors
|
|
132
|
+
"ContainerWiringError",
|
|
133
|
+
"EnvelopeValidationError",
|
|
134
|
+
"EventBusRegistryError",
|
|
135
|
+
"InfraAuthenticationError",
|
|
136
|
+
"InfraConnectionError",
|
|
137
|
+
# Service-specific connection errors
|
|
138
|
+
"InfraConsulError",
|
|
139
|
+
"InfraTimeoutError",
|
|
140
|
+
"InfraUnavailableError",
|
|
141
|
+
"InfraVaultError",
|
|
142
|
+
# Message type registry errors
|
|
143
|
+
"MessageTypeRegistryError",
|
|
144
|
+
# Configuration models
|
|
145
|
+
"ModelInfraErrorContext",
|
|
146
|
+
"ModelTimeoutErrorContext",
|
|
147
|
+
"PolicyRegistryError",
|
|
148
|
+
"ProtocolConfigurationError",
|
|
149
|
+
# Error classes
|
|
150
|
+
"RuntimeHostError",
|
|
151
|
+
"SecretResolutionError",
|
|
152
|
+
"ServiceRegistrationError",
|
|
153
|
+
"ServiceRegistryUnavailableError",
|
|
154
|
+
"ServiceResolutionError",
|
|
155
|
+
"UnknownHandlerTypeError",
|
|
156
|
+
]
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Architecture Violation Error.
|
|
4
|
+
|
|
5
|
+
This module defines the error raised when architecture validation fails during
|
|
6
|
+
runtime startup. The error contains detailed information about all blocking
|
|
7
|
+
violations that prevented startup.
|
|
8
|
+
|
|
9
|
+
Related:
|
|
10
|
+
- OMN-1138: Architecture Validator for omnibase_infra
|
|
11
|
+
- RuntimeHostProcess: Validates architecture before starting
|
|
12
|
+
|
|
13
|
+
Example:
|
|
14
|
+
>>> from omnibase_infra.errors import ArchitectureViolationError
|
|
15
|
+
>>> from omnibase_infra.nodes.architecture_validator import ModelArchitectureViolation
|
|
16
|
+
>>>
|
|
17
|
+
>>> violations = (
|
|
18
|
+
... ModelArchitectureViolation(
|
|
19
|
+
... rule_id="NO_HANDLER_PUBLISHING",
|
|
20
|
+
... rule_name="No Handler Publishing",
|
|
21
|
+
... severity=EnumValidationSeverity.ERROR,
|
|
22
|
+
... target_type="handler",
|
|
23
|
+
... target_name="MyHandler",
|
|
24
|
+
... message="Handler must not have direct event bus access",
|
|
25
|
+
... ),
|
|
26
|
+
... )
|
|
27
|
+
>>> raise ArchitectureViolationError(
|
|
28
|
+
... message=f"Architecture validation failed with {len(violations)} blocking violations",
|
|
29
|
+
... violations=violations,
|
|
30
|
+
... )
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
from __future__ import annotations
|
|
34
|
+
|
|
35
|
+
from typing import TYPE_CHECKING
|
|
36
|
+
from uuid import UUID, uuid4
|
|
37
|
+
|
|
38
|
+
from omnibase_core.enums.enum_core_error_code import EnumCoreErrorCode
|
|
39
|
+
from omnibase_infra.enums import EnumInfraTransportType
|
|
40
|
+
from omnibase_infra.errors.error_infra import RuntimeHostError
|
|
41
|
+
from omnibase_infra.models.errors.model_infra_error_context import (
|
|
42
|
+
ModelInfraErrorContext,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
if TYPE_CHECKING:
|
|
46
|
+
from omnibase_infra.nodes.architecture_validator import ModelArchitectureViolation
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class ArchitectureViolationError(RuntimeHostError):
|
|
50
|
+
"""Error raised when architecture validation fails during startup.
|
|
51
|
+
|
|
52
|
+
This error is raised by RuntimeHostProcess when architecture validation
|
|
53
|
+
detects blocking violations (ERROR severity) that should prevent runtime
|
|
54
|
+
startup. The error contains all blocking violations for inspection.
|
|
55
|
+
|
|
56
|
+
Use this error to:
|
|
57
|
+
- Block runtime startup when architecture rules are violated
|
|
58
|
+
- Report detailed violation information for debugging
|
|
59
|
+
- Provide context for CI/CD pipeline failures
|
|
60
|
+
|
|
61
|
+
Attributes:
|
|
62
|
+
violations: Tuple of architecture violations that caused the failure.
|
|
63
|
+
Only violations with ERROR severity should be included.
|
|
64
|
+
|
|
65
|
+
Example:
|
|
66
|
+
>>> # In RuntimeHostProcess._validate_architecture:
|
|
67
|
+
>>> blocking_violations = tuple(
|
|
68
|
+
... v for v in result.violations if v.blocks_startup()
|
|
69
|
+
... )
|
|
70
|
+
>>> if blocking_violations:
|
|
71
|
+
... raise ArchitectureViolationError(
|
|
72
|
+
... message=f"Architecture validation failed with {len(blocking_violations)} blocking violations",
|
|
73
|
+
... violations=blocking_violations,
|
|
74
|
+
... )
|
|
75
|
+
|
|
76
|
+
>>> # Catching and inspecting the error:
|
|
77
|
+
>>> try:
|
|
78
|
+
... await runtime.start()
|
|
79
|
+
... except ArchitectureViolationError as e:
|
|
80
|
+
... for v in e.violations:
|
|
81
|
+
... print(v.format_for_logging())
|
|
82
|
+
... sys.exit(1)
|
|
83
|
+
"""
|
|
84
|
+
|
|
85
|
+
def __init__(
|
|
86
|
+
self,
|
|
87
|
+
message: str,
|
|
88
|
+
violations: tuple[ModelArchitectureViolation, ...],
|
|
89
|
+
context: ModelInfraErrorContext | None = None,
|
|
90
|
+
correlation_id: UUID | None = None,
|
|
91
|
+
**extra_context: object,
|
|
92
|
+
) -> None:
|
|
93
|
+
"""Initialize ArchitectureViolationError.
|
|
94
|
+
|
|
95
|
+
Args:
|
|
96
|
+
message: Human-readable error message describing the validation failure.
|
|
97
|
+
violations: Tuple of architecture violations that caused the failure.
|
|
98
|
+
Should only include violations with ERROR severity (blocking).
|
|
99
|
+
context: Optional infrastructure error context. If not provided,
|
|
100
|
+
a default context for architecture validation is created.
|
|
101
|
+
correlation_id: Optional correlation ID for distributed tracing.
|
|
102
|
+
Used when building the default context if context is None.
|
|
103
|
+
Auto-generated using uuid4() if not provided.
|
|
104
|
+
**extra_context: Additional context information for debugging.
|
|
105
|
+
|
|
106
|
+
Example:
|
|
107
|
+
>>> raise ArchitectureViolationError(
|
|
108
|
+
... message="Architecture validation failed with 3 blocking violations",
|
|
109
|
+
... violations=blocking_violations,
|
|
110
|
+
... correlation_id=request_correlation_id,
|
|
111
|
+
... )
|
|
112
|
+
"""
|
|
113
|
+
self.violations = violations
|
|
114
|
+
|
|
115
|
+
# Auto-generate correlation_id if not provided (per ONEX standards)
|
|
116
|
+
if correlation_id is None:
|
|
117
|
+
correlation_id = uuid4()
|
|
118
|
+
|
|
119
|
+
# Build default context if not provided
|
|
120
|
+
if context is None:
|
|
121
|
+
context = ModelInfraErrorContext(
|
|
122
|
+
transport_type=EnumInfraTransportType.RUNTIME,
|
|
123
|
+
operation="validate_architecture",
|
|
124
|
+
correlation_id=correlation_id,
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
# Add violation summary to extra context
|
|
128
|
+
extra_context["violation_count"] = len(violations)
|
|
129
|
+
extra_context["violation_rule_ids"] = tuple(v.rule_id for v in violations)
|
|
130
|
+
|
|
131
|
+
super().__init__(
|
|
132
|
+
message=message,
|
|
133
|
+
error_code=EnumCoreErrorCode.CONTRACT_VIOLATION,
|
|
134
|
+
context=context,
|
|
135
|
+
**extra_context,
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
def format_violations(self) -> str:
|
|
139
|
+
"""Format all violations for display.
|
|
140
|
+
|
|
141
|
+
Returns:
|
|
142
|
+
Multi-line string with each violation formatted for logging.
|
|
143
|
+
|
|
144
|
+
Example:
|
|
145
|
+
>>> print(error.format_violations())
|
|
146
|
+
[ERROR] NO_HANDLER_PUBLISHING (No Handler Publishing) on handler/MyHandler: ...
|
|
147
|
+
[ERROR] NO_ANY_TYPES (No Any Types) on model/MyModel: ...
|
|
148
|
+
"""
|
|
149
|
+
return "\n".join(v.format_for_logging() for v in self.violations)
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
__all__ = ["ArchitectureViolationError"]
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Chain Propagation Error.
|
|
4
|
+
|
|
5
|
+
Defines the error class for correlation and causation chain validation failures.
|
|
6
|
+
Used when message chains fail to maintain proper correlation_id or causation_id
|
|
7
|
+
propagation, which breaks distributed tracing capabilities.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
from uuid import uuid4
|
|
13
|
+
|
|
14
|
+
from omnibase_core.enums import EnumCoreErrorCode
|
|
15
|
+
from omnibase_infra.enums import EnumInfraTransportType
|
|
16
|
+
from omnibase_infra.errors.error_infra import (
|
|
17
|
+
ProtocolConfigurationError,
|
|
18
|
+
RuntimeHostError,
|
|
19
|
+
)
|
|
20
|
+
from omnibase_infra.models.errors.model_infra_error_context import (
|
|
21
|
+
ModelInfraErrorContext,
|
|
22
|
+
)
|
|
23
|
+
from omnibase_infra.models.validation.model_chain_violation import ModelChainViolation
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class ChainPropagationError(RuntimeHostError):
|
|
27
|
+
"""Raised when correlation or causation chain validation fails.
|
|
28
|
+
|
|
29
|
+
Used when messages fail to properly maintain their correlation and
|
|
30
|
+
causation chains during propagation. This error indicates a break
|
|
31
|
+
in the distributed tracing chain that will impact observability
|
|
32
|
+
and debugging capabilities.
|
|
33
|
+
|
|
34
|
+
Common scenarios:
|
|
35
|
+
- Child message has different correlation_id than parent
|
|
36
|
+
- Message's causation_id doesn't reference parent's message_id
|
|
37
|
+
- Causation chain skips ancestors in the message lineage
|
|
38
|
+
|
|
39
|
+
The error includes all detected violations for comprehensive reporting
|
|
40
|
+
and supports correlation_id from the error context for meta-level tracing.
|
|
41
|
+
|
|
42
|
+
Attributes:
|
|
43
|
+
violations: Immutable tuple of all chain violations detected.
|
|
44
|
+
|
|
45
|
+
Example:
|
|
46
|
+
>>> from uuid import uuid4
|
|
47
|
+
>>> from omnibase_infra.enums import EnumChainViolationType
|
|
48
|
+
>>> from omnibase_infra.models.validation import ModelChainViolation
|
|
49
|
+
>>>
|
|
50
|
+
>>> violations = [
|
|
51
|
+
... ModelChainViolation(
|
|
52
|
+
... violation_type=EnumChainViolationType.CORRELATION_MISMATCH,
|
|
53
|
+
... expected_value=uuid4(),
|
|
54
|
+
... actual_value=uuid4(),
|
|
55
|
+
... message_id=uuid4(),
|
|
56
|
+
... violation_message="correlation_id mismatch",
|
|
57
|
+
... ),
|
|
58
|
+
... ]
|
|
59
|
+
>>> context = ModelInfraErrorContext(
|
|
60
|
+
... operation="validate_chain",
|
|
61
|
+
... correlation_id=uuid4(),
|
|
62
|
+
... )
|
|
63
|
+
>>> raise ChainPropagationError(
|
|
64
|
+
... "Chain validation failed",
|
|
65
|
+
... violations=violations,
|
|
66
|
+
... context=context,
|
|
67
|
+
... )
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
def __init__(
|
|
71
|
+
self,
|
|
72
|
+
message: str,
|
|
73
|
+
violations: list[ModelChainViolation],
|
|
74
|
+
context: ModelInfraErrorContext | None = None,
|
|
75
|
+
**extra_context: object,
|
|
76
|
+
) -> None:
|
|
77
|
+
"""Initialize ChainPropagationError with violation details.
|
|
78
|
+
|
|
79
|
+
Args:
|
|
80
|
+
message: Human-readable error message summarizing the violations.
|
|
81
|
+
violations: List of all chain violations detected. Must contain
|
|
82
|
+
at least one violation.
|
|
83
|
+
context: Bundled infrastructure context including correlation_id
|
|
84
|
+
for meta-level tracing of the validation operation itself.
|
|
85
|
+
**extra_context: Additional context information for debugging.
|
|
86
|
+
|
|
87
|
+
Raises:
|
|
88
|
+
ProtocolConfigurationError: If violations list is empty.
|
|
89
|
+
"""
|
|
90
|
+
if not violations:
|
|
91
|
+
err_context = ModelInfraErrorContext(
|
|
92
|
+
transport_type=EnumInfraTransportType.RUNTIME,
|
|
93
|
+
operation="ChainPropagationError.__init__",
|
|
94
|
+
correlation_id=context.correlation_id if context else uuid4(),
|
|
95
|
+
)
|
|
96
|
+
raise ProtocolConfigurationError(
|
|
97
|
+
"ChainPropagationError requires at least one violation",
|
|
98
|
+
context=err_context,
|
|
99
|
+
parameter="violations",
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
# Store violations for access
|
|
103
|
+
self._violations = violations
|
|
104
|
+
|
|
105
|
+
# Build summary for error message
|
|
106
|
+
error_count = sum(1 for v in violations if v.severity == "error")
|
|
107
|
+
warning_count = sum(1 for v in violations if v.severity == "warning")
|
|
108
|
+
violation_summary = f"{error_count} error(s), {warning_count} warning(s)"
|
|
109
|
+
|
|
110
|
+
# Build detailed message
|
|
111
|
+
full_message = f"{message}: {violation_summary}"
|
|
112
|
+
|
|
113
|
+
# Add violation types summary
|
|
114
|
+
violation_types = {v.violation_type.value for v in violations}
|
|
115
|
+
full_message += f" [{', '.join(sorted(violation_types))}]"
|
|
116
|
+
|
|
117
|
+
super().__init__(
|
|
118
|
+
message=full_message,
|
|
119
|
+
error_code=EnumCoreErrorCode.VALIDATION_ERROR,
|
|
120
|
+
context=context,
|
|
121
|
+
violation_count=len(violations),
|
|
122
|
+
error_count=error_count,
|
|
123
|
+
warning_count=warning_count,
|
|
124
|
+
violation_types=list(violation_types),
|
|
125
|
+
**extra_context,
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
@property
|
|
129
|
+
def violations(self) -> tuple[ModelChainViolation, ...]:
|
|
130
|
+
"""Get all detected chain violations.
|
|
131
|
+
|
|
132
|
+
Returns:
|
|
133
|
+
Immutable tuple of ModelChainViolation instances describing each violation.
|
|
134
|
+
"""
|
|
135
|
+
return tuple(self._violations)
|
|
136
|
+
|
|
137
|
+
def get_blocking_violations(self) -> list[ModelChainViolation]:
|
|
138
|
+
"""Get only violations that should block processing.
|
|
139
|
+
|
|
140
|
+
Returns:
|
|
141
|
+
List of violations with severity='error'.
|
|
142
|
+
|
|
143
|
+
Example:
|
|
144
|
+
>>> blocking = error.get_blocking_violations()
|
|
145
|
+
>>> len(blocking)
|
|
146
|
+
1
|
|
147
|
+
"""
|
|
148
|
+
return [v for v in self._violations if v.is_blocking()]
|
|
149
|
+
|
|
150
|
+
def get_warnings(self) -> list[ModelChainViolation]:
|
|
151
|
+
"""Get only advisory violations.
|
|
152
|
+
|
|
153
|
+
Returns:
|
|
154
|
+
List of violations with severity='warning'.
|
|
155
|
+
|
|
156
|
+
Example:
|
|
157
|
+
>>> warnings = error.get_warnings()
|
|
158
|
+
>>> len(warnings)
|
|
159
|
+
2
|
|
160
|
+
"""
|
|
161
|
+
return [v for v in self._violations if not v.is_blocking()]
|
|
162
|
+
|
|
163
|
+
def format_violations_for_logging(self) -> str:
|
|
164
|
+
"""Format all violations for structured logging output.
|
|
165
|
+
|
|
166
|
+
Returns:
|
|
167
|
+
Multi-line string with each violation formatted for logging.
|
|
168
|
+
|
|
169
|
+
Example:
|
|
170
|
+
>>> error.format_violations_for_logging()
|
|
171
|
+
'[error] CORRELATION_MISMATCH on message=abc...\\n[warning] ...'
|
|
172
|
+
"""
|
|
173
|
+
return "\n".join(v.format_for_logging() for v in self._violations)
|
|
174
|
+
|
|
175
|
+
def has_blocking_violations(self) -> bool:
|
|
176
|
+
"""Check if any violations should block processing.
|
|
177
|
+
|
|
178
|
+
Returns:
|
|
179
|
+
True if at least one violation has severity='error'.
|
|
180
|
+
|
|
181
|
+
Example:
|
|
182
|
+
>>> error.has_blocking_violations()
|
|
183
|
+
True
|
|
184
|
+
"""
|
|
185
|
+
return any(v.is_blocking() for v in self._violations)
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
__all__ = ["ChainPropagationError"]
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Compute Registry Error Class.
|
|
4
|
+
|
|
5
|
+
This module defines the ComputeRegistryError for compute registry operations.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from omnibase_infra.errors.error_infra import RuntimeHostError
|
|
9
|
+
from omnibase_infra.models.errors.model_infra_error_context import (
|
|
10
|
+
ModelInfraErrorContext,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ComputeRegistryError(RuntimeHostError):
|
|
15
|
+
"""Error raised when compute registry operations fail.
|
|
16
|
+
|
|
17
|
+
Used for:
|
|
18
|
+
- Attempting to get an unregistered compute plugin
|
|
19
|
+
- Registration failures (async validation without flag, protocol validation)
|
|
20
|
+
- Plugin validation failures during registration
|
|
21
|
+
- Invalid semver format
|
|
22
|
+
|
|
23
|
+
Extends RuntimeHostError as this is an infrastructure-layer runtime concern.
|
|
24
|
+
|
|
25
|
+
Example:
|
|
26
|
+
>>> from omnibase_infra.errors import ComputeRegistryError
|
|
27
|
+
>>> from omnibase_infra.errors import ModelInfraErrorContext
|
|
28
|
+
>>> from omnibase_infra.enums import EnumInfraTransportType
|
|
29
|
+
>>> from uuid import uuid4
|
|
30
|
+
|
|
31
|
+
>>> # Plugin not found
|
|
32
|
+
>>> try:
|
|
33
|
+
... plugin = registry.get("unknown_plugin")
|
|
34
|
+
... except ComputeRegistryError as e:
|
|
35
|
+
... print(f"Plugin not found: {e}")
|
|
36
|
+
|
|
37
|
+
>>> # With context
|
|
38
|
+
>>> context = ModelInfraErrorContext(
|
|
39
|
+
... transport_type=EnumInfraTransportType.RUNTIME,
|
|
40
|
+
... operation="get_plugin",
|
|
41
|
+
... correlation_id=uuid4(),
|
|
42
|
+
... )
|
|
43
|
+
>>> raise ComputeRegistryError(
|
|
44
|
+
... "Compute plugin not registered",
|
|
45
|
+
... plugin_id="json_normalizer",
|
|
46
|
+
... version="1.0.0",
|
|
47
|
+
... context=context,
|
|
48
|
+
... )
|
|
49
|
+
|
|
50
|
+
>>> # Async validation failure
|
|
51
|
+
>>> raise ComputeRegistryError(
|
|
52
|
+
... "Plugin has async execute() but deterministic_async=True not specified",
|
|
53
|
+
... plugin_id="async_transformer",
|
|
54
|
+
... async_method="execute",
|
|
55
|
+
... )
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
def __init__(
|
|
59
|
+
self,
|
|
60
|
+
message: str,
|
|
61
|
+
plugin_id: str | None = None,
|
|
62
|
+
version: str | None = None,
|
|
63
|
+
registered_plugins: list[str] | None = None,
|
|
64
|
+
context: ModelInfraErrorContext | None = None,
|
|
65
|
+
**extra_context: object,
|
|
66
|
+
) -> None:
|
|
67
|
+
"""Initialize ComputeRegistryError.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
message: Human-readable error message
|
|
71
|
+
plugin_id: The plugin ID that caused the error (if applicable)
|
|
72
|
+
version: The version that caused the error (if applicable)
|
|
73
|
+
registered_plugins: List of currently registered plugin IDs (for error context)
|
|
74
|
+
context: Bundled infrastructure context for correlation_id and structured fields
|
|
75
|
+
**extra_context: Additional context information (e.g., async_method)
|
|
76
|
+
"""
|
|
77
|
+
# Add plugin_id, version, registered_plugins to extra_context if provided
|
|
78
|
+
if plugin_id is not None:
|
|
79
|
+
extra_context["plugin_id"] = plugin_id
|
|
80
|
+
if version is not None:
|
|
81
|
+
extra_context["version"] = version
|
|
82
|
+
if registered_plugins is not None:
|
|
83
|
+
extra_context["registered_plugins"] = registered_plugins
|
|
84
|
+
|
|
85
|
+
super().__init__(
|
|
86
|
+
message=message,
|
|
87
|
+
context=context,
|
|
88
|
+
**extra_context,
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
__all__ = ["ComputeRegistryError"]
|