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,608 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Infrastructure-Specific Error Classes.
|
|
4
|
+
|
|
5
|
+
This module defines infrastructure-specific error classes for the
|
|
6
|
+
omnibase_infra package. All error classes extend from ModelOnexError
|
|
7
|
+
(from omnibase_core) to maintain consistency with ONEX error handling patterns.
|
|
8
|
+
|
|
9
|
+
Error Hierarchy:
|
|
10
|
+
ModelOnexError (from omnibase_core)
|
|
11
|
+
└── RuntimeHostError (base infrastructure error)
|
|
12
|
+
├── ProtocolConfigurationError
|
|
13
|
+
├── SecretResolutionError
|
|
14
|
+
├── InfraConnectionError
|
|
15
|
+
├── InfraTimeoutError
|
|
16
|
+
├── InfraAuthenticationError
|
|
17
|
+
└── InfraUnavailableError
|
|
18
|
+
|
|
19
|
+
All errors:
|
|
20
|
+
- Extend ModelOnexError from omnibase_core
|
|
21
|
+
- Use EnumCoreErrorCode for error classification
|
|
22
|
+
- Support proper error chaining with `raise ... from e`
|
|
23
|
+
- Include structured context for debugging
|
|
24
|
+
- Support correlation IDs for request tracking
|
|
25
|
+
- Accept ModelInfraErrorContext for bundled context parameters
|
|
26
|
+
|
|
27
|
+
NOT_FOUND Classification Patterns:
|
|
28
|
+
The ONEX infrastructure uses two distinct patterns for "not found" scenarios:
|
|
29
|
+
|
|
30
|
+
1. **Error-based NOT_FOUND** (for exceptional conditions):
|
|
31
|
+
When a resource SHOULD exist but doesn't, raise an error with
|
|
32
|
+
``EnumCoreErrorCode.RESOURCE_NOT_FOUND``. This is used by:
|
|
33
|
+
- ``SecretResolutionError``: When a required secret is missing from Vault
|
|
34
|
+
- Handler errors: When a required resource lookup fails
|
|
35
|
+
|
|
36
|
+
Callers receive these as exceptions and should handle them via try/except:
|
|
37
|
+
|
|
38
|
+
.. code-block:: python
|
|
39
|
+
|
|
40
|
+
try:
|
|
41
|
+
secret = await vault_handler.get_secret("db/password")
|
|
42
|
+
except SecretResolutionError as e:
|
|
43
|
+
if e.model.error_code == EnumCoreErrorCode.RESOURCE_NOT_FOUND:
|
|
44
|
+
logger.error(f"Secret not found: {e.model.message}")
|
|
45
|
+
# Handle missing secret (fail, use default, etc.)
|
|
46
|
+
|
|
47
|
+
2. **Response-based NOT_FOUND** (for valid "empty" responses):
|
|
48
|
+
When absence is a valid outcome (not an error), return a discriminated
|
|
49
|
+
union variant. This is used by:
|
|
50
|
+
- ``EnumConsulOperationType.KV_GET_NOT_FOUND``: When a Consul key doesn't exist
|
|
51
|
+
- Handler responses with optional data fields
|
|
52
|
+
|
|
53
|
+
Callers check the response type to determine if data was found:
|
|
54
|
+
|
|
55
|
+
.. code-block:: python
|
|
56
|
+
|
|
57
|
+
result = await consul_handler.kv_get("my/key")
|
|
58
|
+
if result.operation_type == EnumConsulOperationType.KV_GET_NOT_FOUND:
|
|
59
|
+
# Key doesn't exist - valid "empty" response
|
|
60
|
+
return default_value
|
|
61
|
+
else:
|
|
62
|
+
return result.value
|
|
63
|
+
|
|
64
|
+
**Choosing the Right Pattern**:
|
|
65
|
+
- Use errors when absence indicates a configuration or operational problem
|
|
66
|
+
- Use response variants when absence is an expected, valid state
|
|
67
|
+
- Secrets, required configs: Use ``RESOURCE_NOT_FOUND`` error
|
|
68
|
+
- Optional keys, cache lookups: Use discriminated union responses
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
from uuid import uuid4
|
|
72
|
+
|
|
73
|
+
from omnibase_core.enums import EnumCoreErrorCode
|
|
74
|
+
from omnibase_core.models.errors import ModelOnexError
|
|
75
|
+
from omnibase_infra.enums import EnumInfraTransportType
|
|
76
|
+
from omnibase_infra.models.errors.model_infra_error_context import (
|
|
77
|
+
ModelInfraErrorContext,
|
|
78
|
+
)
|
|
79
|
+
from omnibase_infra.models.errors.model_timeout_error_context import (
|
|
80
|
+
ModelTimeoutErrorContext,
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class RuntimeHostError(ModelOnexError):
|
|
85
|
+
"""Base error class for runtime host infrastructure errors.
|
|
86
|
+
|
|
87
|
+
All infrastructure-specific errors should inherit from this class.
|
|
88
|
+
Provides common structured fields for infrastructure operations.
|
|
89
|
+
|
|
90
|
+
Structured Fields (via ModelInfraErrorContext):
|
|
91
|
+
transport_type: Type of transport (http, db, kafka, etc.)
|
|
92
|
+
operation: Operation being performed
|
|
93
|
+
correlation_id: Request correlation ID for tracking
|
|
94
|
+
target_name: Target resource/endpoint name
|
|
95
|
+
|
|
96
|
+
Example:
|
|
97
|
+
>>> context = ModelInfraErrorContext(
|
|
98
|
+
... transport_type=EnumInfraTransportType.HTTP,
|
|
99
|
+
... operation="process_request",
|
|
100
|
+
... target_name="api-gateway",
|
|
101
|
+
... )
|
|
102
|
+
>>> raise RuntimeHostError("Operation failed", context=context)
|
|
103
|
+
|
|
104
|
+
# Or with extra context:
|
|
105
|
+
>>> raise RuntimeHostError(
|
|
106
|
+
... "Operation failed",
|
|
107
|
+
... context=context,
|
|
108
|
+
... retry_count=3,
|
|
109
|
+
... )
|
|
110
|
+
"""
|
|
111
|
+
|
|
112
|
+
def __init__(
|
|
113
|
+
self,
|
|
114
|
+
message: str,
|
|
115
|
+
error_code: EnumCoreErrorCode | None = None,
|
|
116
|
+
context: ModelInfraErrorContext | None = None,
|
|
117
|
+
**extra_context: object,
|
|
118
|
+
) -> None:
|
|
119
|
+
"""Initialize RuntimeHostError with structured fields.
|
|
120
|
+
|
|
121
|
+
Args:
|
|
122
|
+
message: Human-readable error message
|
|
123
|
+
error_code: Error code (defaults to OPERATION_FAILED)
|
|
124
|
+
context: Bundled infrastructure context (transport_type, operation, etc.)
|
|
125
|
+
**extra_context: Additional context information
|
|
126
|
+
"""
|
|
127
|
+
# Build structured context from model and extra kwargs
|
|
128
|
+
structured_context: dict[str, object] = dict(extra_context)
|
|
129
|
+
|
|
130
|
+
# Extract fields from context model if provided
|
|
131
|
+
correlation_id = None
|
|
132
|
+
if context is not None:
|
|
133
|
+
if context.transport_type is not None:
|
|
134
|
+
structured_context["transport_type"] = context.transport_type
|
|
135
|
+
if context.operation is not None:
|
|
136
|
+
structured_context["operation"] = context.operation
|
|
137
|
+
if context.target_name is not None:
|
|
138
|
+
structured_context["target_name"] = context.target_name
|
|
139
|
+
if context.namespace is not None:
|
|
140
|
+
structured_context["namespace"] = context.namespace
|
|
141
|
+
correlation_id = context.correlation_id
|
|
142
|
+
|
|
143
|
+
# Auto-generate correlation_id if not provided (per CLAUDE.md guidelines)
|
|
144
|
+
if correlation_id is None:
|
|
145
|
+
correlation_id = uuid4()
|
|
146
|
+
|
|
147
|
+
# Initialize base error with default error code
|
|
148
|
+
super().__init__(
|
|
149
|
+
message=message,
|
|
150
|
+
error_code=error_code or EnumCoreErrorCode.OPERATION_FAILED,
|
|
151
|
+
correlation_id=correlation_id,
|
|
152
|
+
**structured_context,
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
class ProtocolConfigurationError(RuntimeHostError):
|
|
157
|
+
"""Raised when protocol configuration validation fails.
|
|
158
|
+
|
|
159
|
+
Used for configuration parsing errors, missing required fields,
|
|
160
|
+
invalid configuration values, or schema validation failures.
|
|
161
|
+
|
|
162
|
+
Example:
|
|
163
|
+
>>> context = ModelInfraErrorContext(
|
|
164
|
+
... transport_type=EnumInfraTransportType.HTTP,
|
|
165
|
+
... operation="validate_config",
|
|
166
|
+
... )
|
|
167
|
+
>>> raise ProtocolConfigurationError(
|
|
168
|
+
... "Missing required field 'endpoint'",
|
|
169
|
+
... context=context,
|
|
170
|
+
... )
|
|
171
|
+
"""
|
|
172
|
+
|
|
173
|
+
def __init__(
|
|
174
|
+
self,
|
|
175
|
+
message: str,
|
|
176
|
+
context: ModelInfraErrorContext | None = None,
|
|
177
|
+
**extra_context: object,
|
|
178
|
+
) -> None:
|
|
179
|
+
"""Initialize ProtocolConfigurationError.
|
|
180
|
+
|
|
181
|
+
Args:
|
|
182
|
+
message: Human-readable error message
|
|
183
|
+
context: Bundled infrastructure context
|
|
184
|
+
**extra_context: Additional context information
|
|
185
|
+
"""
|
|
186
|
+
super().__init__(
|
|
187
|
+
message=message,
|
|
188
|
+
error_code=EnumCoreErrorCode.INVALID_CONFIGURATION,
|
|
189
|
+
context=context,
|
|
190
|
+
**extra_context,
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
class SecretResolutionError(RuntimeHostError):
|
|
195
|
+
"""Raised when secret or credential resolution fails.
|
|
196
|
+
|
|
197
|
+
Used for Vault connection failures, missing secrets, expired credentials,
|
|
198
|
+
or permission issues accessing secret stores.
|
|
199
|
+
|
|
200
|
+
Security:
|
|
201
|
+
Do NOT include full secret paths in error messages or extra_context.
|
|
202
|
+
Use generic descriptions like "database credential" instead of
|
|
203
|
+
revealing path structure like "database/postgres/password".
|
|
204
|
+
|
|
205
|
+
Example:
|
|
206
|
+
>>> context = ModelInfraErrorContext(
|
|
207
|
+
... transport_type=EnumInfraTransportType.VAULT,
|
|
208
|
+
... operation="get_secret",
|
|
209
|
+
... target_name="vault-primary",
|
|
210
|
+
... )
|
|
211
|
+
>>> # Use generic description, not the actual path
|
|
212
|
+
>>> raise SecretResolutionError(
|
|
213
|
+
... "Database credential not found in Vault",
|
|
214
|
+
... context=context,
|
|
215
|
+
... )
|
|
216
|
+
"""
|
|
217
|
+
|
|
218
|
+
def __init__(
|
|
219
|
+
self,
|
|
220
|
+
message: str,
|
|
221
|
+
context: ModelInfraErrorContext | None = None,
|
|
222
|
+
**extra_context: object,
|
|
223
|
+
) -> None:
|
|
224
|
+
"""Initialize SecretResolutionError.
|
|
225
|
+
|
|
226
|
+
Args:
|
|
227
|
+
message: Human-readable error message
|
|
228
|
+
context: Bundled infrastructure context
|
|
229
|
+
**extra_context: Additional context information (e.g., secret_key, vault_path)
|
|
230
|
+
"""
|
|
231
|
+
super().__init__(
|
|
232
|
+
message=message,
|
|
233
|
+
error_code=EnumCoreErrorCode.RESOURCE_NOT_FOUND,
|
|
234
|
+
context=context,
|
|
235
|
+
**extra_context,
|
|
236
|
+
)
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
class InfraConnectionError(RuntimeHostError):
|
|
240
|
+
"""Raised when infrastructure connection fails.
|
|
241
|
+
|
|
242
|
+
Used for database connection failures, mesh connectivity issues,
|
|
243
|
+
message broker connection problems, or network-related errors.
|
|
244
|
+
|
|
245
|
+
The error code is automatically selected based on the transport type
|
|
246
|
+
in the context:
|
|
247
|
+
- DATABASE -> DATABASE_CONNECTION_ERROR
|
|
248
|
+
- HTTP, GRPC -> NETWORK_ERROR
|
|
249
|
+
- KAFKA, CONSUL, VAULT, VALKEY, FILESYSTEM, QDRANT, GRAPH, MCP -> SERVICE_UNAVAILABLE
|
|
250
|
+
- None (no context) -> SERVICE_UNAVAILABLE
|
|
251
|
+
|
|
252
|
+
Example:
|
|
253
|
+
>>> # Database connection with transport-specific error code
|
|
254
|
+
>>> context = ModelInfraErrorContext(
|
|
255
|
+
... transport_type=EnumInfraTransportType.DATABASE,
|
|
256
|
+
... operation="connect",
|
|
257
|
+
... target_name="postgresql-primary",
|
|
258
|
+
... )
|
|
259
|
+
>>> raise InfraConnectionError(
|
|
260
|
+
... "Failed to connect to PostgreSQL",
|
|
261
|
+
... context=context,
|
|
262
|
+
... host="db.example.com",
|
|
263
|
+
... port=5432,
|
|
264
|
+
... )
|
|
265
|
+
|
|
266
|
+
>>> # HTTP connection uses NETWORK_ERROR
|
|
267
|
+
>>> context = ModelInfraErrorContext(
|
|
268
|
+
... transport_type=EnumInfraTransportType.HTTP,
|
|
269
|
+
... operation="request",
|
|
270
|
+
... target_name="api-gateway",
|
|
271
|
+
... )
|
|
272
|
+
>>> raise InfraConnectionError("API connection failed", context=context)
|
|
273
|
+
|
|
274
|
+
>>> # Kafka connection uses SERVICE_UNAVAILABLE
|
|
275
|
+
>>> context = ModelInfraErrorContext(
|
|
276
|
+
... transport_type=EnumInfraTransportType.KAFKA,
|
|
277
|
+
... operation="produce",
|
|
278
|
+
... target_name="kafka-broker",
|
|
279
|
+
... )
|
|
280
|
+
>>> raise InfraConnectionError("Kafka connection failed", context=context)
|
|
281
|
+
"""
|
|
282
|
+
|
|
283
|
+
# Transport type to error code mapping
|
|
284
|
+
_TRANSPORT_ERROR_CODE_MAP: dict[
|
|
285
|
+
EnumInfraTransportType | None, EnumCoreErrorCode
|
|
286
|
+
] = {
|
|
287
|
+
EnumInfraTransportType.DATABASE: EnumCoreErrorCode.DATABASE_CONNECTION_ERROR,
|
|
288
|
+
EnumInfraTransportType.HTTP: EnumCoreErrorCode.NETWORK_ERROR,
|
|
289
|
+
EnumInfraTransportType.GRPC: EnumCoreErrorCode.NETWORK_ERROR,
|
|
290
|
+
EnumInfraTransportType.KAFKA: EnumCoreErrorCode.SERVICE_UNAVAILABLE,
|
|
291
|
+
EnumInfraTransportType.CONSUL: EnumCoreErrorCode.SERVICE_UNAVAILABLE,
|
|
292
|
+
EnumInfraTransportType.VAULT: EnumCoreErrorCode.SERVICE_UNAVAILABLE,
|
|
293
|
+
EnumInfraTransportType.VALKEY: EnumCoreErrorCode.SERVICE_UNAVAILABLE,
|
|
294
|
+
EnumInfraTransportType.RUNTIME: EnumCoreErrorCode.OPERATION_FAILED,
|
|
295
|
+
EnumInfraTransportType.INMEMORY: EnumCoreErrorCode.OPERATION_FAILED,
|
|
296
|
+
EnumInfraTransportType.FILESYSTEM: EnumCoreErrorCode.SERVICE_UNAVAILABLE,
|
|
297
|
+
EnumInfraTransportType.MCP: EnumCoreErrorCode.SERVICE_UNAVAILABLE,
|
|
298
|
+
EnumInfraTransportType.QDRANT: EnumCoreErrorCode.SERVICE_UNAVAILABLE,
|
|
299
|
+
EnumInfraTransportType.GRAPH: EnumCoreErrorCode.SERVICE_UNAVAILABLE,
|
|
300
|
+
None: EnumCoreErrorCode.SERVICE_UNAVAILABLE,
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
@classmethod
|
|
304
|
+
def _resolve_connection_error_code(
|
|
305
|
+
cls, context: ModelInfraErrorContext | None
|
|
306
|
+
) -> EnumCoreErrorCode:
|
|
307
|
+
"""Resolve the appropriate error code based on transport type.
|
|
308
|
+
|
|
309
|
+
Args:
|
|
310
|
+
context: Infrastructure error context containing transport type
|
|
311
|
+
|
|
312
|
+
Returns:
|
|
313
|
+
Appropriate EnumCoreErrorCode for the transport type:
|
|
314
|
+
- DATABASE -> DATABASE_CONNECTION_ERROR
|
|
315
|
+
- HTTP, GRPC -> NETWORK_ERROR
|
|
316
|
+
- KAFKA, CONSUL, VAULT, VALKEY, FILESYSTEM, QDRANT, GRAPH, MCP, None -> SERVICE_UNAVAILABLE
|
|
317
|
+
"""
|
|
318
|
+
if context is None:
|
|
319
|
+
return cls._TRANSPORT_ERROR_CODE_MAP[None]
|
|
320
|
+
return cls._TRANSPORT_ERROR_CODE_MAP.get(
|
|
321
|
+
context.transport_type,
|
|
322
|
+
EnumCoreErrorCode.SERVICE_UNAVAILABLE,
|
|
323
|
+
)
|
|
324
|
+
|
|
325
|
+
def __init__(
|
|
326
|
+
self,
|
|
327
|
+
message: str,
|
|
328
|
+
context: ModelInfraErrorContext | None = None,
|
|
329
|
+
**extra_context: object,
|
|
330
|
+
) -> None:
|
|
331
|
+
"""Initialize InfraConnectionError with transport-aware error code.
|
|
332
|
+
|
|
333
|
+
The error code is automatically selected based on context.transport_type:
|
|
334
|
+
- DATABASE -> DATABASE_CONNECTION_ERROR
|
|
335
|
+
- HTTP, GRPC -> NETWORK_ERROR
|
|
336
|
+
- KAFKA, CONSUL, VAULT, VALKEY, FILESYSTEM, QDRANT, GRAPH, MCP -> SERVICE_UNAVAILABLE
|
|
337
|
+
- None (no context) -> SERVICE_UNAVAILABLE
|
|
338
|
+
|
|
339
|
+
Args:
|
|
340
|
+
message: Human-readable error message
|
|
341
|
+
context: Bundled infrastructure context (transport_type determines error code)
|
|
342
|
+
**extra_context: Additional context information (e.g., host, port, retry_count)
|
|
343
|
+
"""
|
|
344
|
+
super().__init__(
|
|
345
|
+
message=message,
|
|
346
|
+
error_code=self._resolve_connection_error_code(context),
|
|
347
|
+
context=context,
|
|
348
|
+
**extra_context,
|
|
349
|
+
)
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
class InfraTimeoutError(RuntimeHostError):
|
|
353
|
+
"""Raised when infrastructure operation exceeds timeout.
|
|
354
|
+
|
|
355
|
+
Used for database query timeouts, HTTP request timeouts,
|
|
356
|
+
message broker operation timeouts, or call deadlines.
|
|
357
|
+
|
|
358
|
+
Typing Requirements:
|
|
359
|
+
Context is REQUIRED for timeout errors using ModelTimeoutErrorContext.
|
|
360
|
+
This model enforces stricter typing with required correlation_id.
|
|
361
|
+
|
|
362
|
+
ModelTimeoutErrorContext guarantees:
|
|
363
|
+
- transport_type: Required (identifies the transport layer)
|
|
364
|
+
- operation: Required (identifies the operation that timed out)
|
|
365
|
+
- correlation_id: Required (auto-generated via default_factory if not provided)
|
|
366
|
+
- target_name: Optional (target resource name)
|
|
367
|
+
- timeout_seconds: Optional (the timeout value that was exceeded)
|
|
368
|
+
|
|
369
|
+
Example:
|
|
370
|
+
>>> context = ModelTimeoutErrorContext(
|
|
371
|
+
... transport_type=EnumInfraTransportType.DATABASE,
|
|
372
|
+
... operation="execute_query",
|
|
373
|
+
... target_name="postgresql-primary",
|
|
374
|
+
... correlation_id=request.correlation_id,
|
|
375
|
+
... timeout_seconds=30.0,
|
|
376
|
+
... )
|
|
377
|
+
>>> raise InfraTimeoutError(
|
|
378
|
+
... "Database query exceeded timeout",
|
|
379
|
+
... context=context,
|
|
380
|
+
... )
|
|
381
|
+
|
|
382
|
+
>>> # Auto-generated correlation_id (via default_factory)
|
|
383
|
+
>>> context = ModelTimeoutErrorContext(
|
|
384
|
+
... transport_type=EnumInfraTransportType.HTTP,
|
|
385
|
+
... operation="fetch_resource",
|
|
386
|
+
... timeout_seconds=10.0,
|
|
387
|
+
... )
|
|
388
|
+
>>> raise InfraTimeoutError("Request timed out", context=context)
|
|
389
|
+
"""
|
|
390
|
+
|
|
391
|
+
def __init__(
|
|
392
|
+
self,
|
|
393
|
+
message: str,
|
|
394
|
+
context: ModelTimeoutErrorContext,
|
|
395
|
+
**extra_context: object,
|
|
396
|
+
) -> None:
|
|
397
|
+
"""Initialize InfraTimeoutError with required ModelTimeoutErrorContext.
|
|
398
|
+
|
|
399
|
+
Args:
|
|
400
|
+
message: Human-readable error message
|
|
401
|
+
context: Required timeout error context. ModelTimeoutErrorContext
|
|
402
|
+
guarantees correlation_id is always present (auto-generated
|
|
403
|
+
via default_factory if not explicitly provided).
|
|
404
|
+
**extra_context: Additional context information
|
|
405
|
+
|
|
406
|
+
Note:
|
|
407
|
+
Context uses ModelTimeoutErrorContext which guarantees correlation_id
|
|
408
|
+
at type-check time via its default_factory=uuid4. This provides
|
|
409
|
+
compile-time safety that correlation_id is always present.
|
|
410
|
+
"""
|
|
411
|
+
# Convert ModelTimeoutErrorContext to ModelInfraErrorContext for base class
|
|
412
|
+
# This preserves all fields while maintaining compatibility with RuntimeHostError
|
|
413
|
+
infra_context = ModelInfraErrorContext(
|
|
414
|
+
transport_type=context.transport_type,
|
|
415
|
+
operation=context.operation,
|
|
416
|
+
target_name=context.target_name,
|
|
417
|
+
correlation_id=context.correlation_id,
|
|
418
|
+
)
|
|
419
|
+
# Include timeout_seconds in extra_context if present
|
|
420
|
+
if context.timeout_seconds is not None:
|
|
421
|
+
extra_context = {
|
|
422
|
+
"timeout_seconds": context.timeout_seconds,
|
|
423
|
+
**extra_context,
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
super().__init__(
|
|
427
|
+
message=message,
|
|
428
|
+
error_code=EnumCoreErrorCode.TIMEOUT_ERROR,
|
|
429
|
+
context=infra_context,
|
|
430
|
+
**extra_context,
|
|
431
|
+
)
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
class InfraAuthenticationError(RuntimeHostError):
|
|
435
|
+
"""Raised when infrastructure authentication or authorization fails.
|
|
436
|
+
|
|
437
|
+
Used for invalid credentials, expired tokens, insufficient permissions,
|
|
438
|
+
or authentication failures.
|
|
439
|
+
|
|
440
|
+
Example:
|
|
441
|
+
>>> context = ModelInfraErrorContext(
|
|
442
|
+
... transport_type=EnumInfraTransportType.VAULT,
|
|
443
|
+
... operation="authenticate",
|
|
444
|
+
... target_name="vault-primary",
|
|
445
|
+
... )
|
|
446
|
+
>>> raise InfraAuthenticationError(
|
|
447
|
+
... "Invalid Vault token",
|
|
448
|
+
... context=context,
|
|
449
|
+
... auth_method="token",
|
|
450
|
+
... )
|
|
451
|
+
"""
|
|
452
|
+
|
|
453
|
+
def __init__(
|
|
454
|
+
self,
|
|
455
|
+
message: str,
|
|
456
|
+
context: ModelInfraErrorContext | None = None,
|
|
457
|
+
**extra_context: object,
|
|
458
|
+
) -> None:
|
|
459
|
+
"""Initialize InfraAuthenticationError.
|
|
460
|
+
|
|
461
|
+
Args:
|
|
462
|
+
message: Human-readable error message
|
|
463
|
+
context: Bundled infrastructure context
|
|
464
|
+
**extra_context: Additional context information (e.g., username, auth_method)
|
|
465
|
+
"""
|
|
466
|
+
super().__init__(
|
|
467
|
+
message=message,
|
|
468
|
+
error_code=EnumCoreErrorCode.AUTHENTICATION_ERROR,
|
|
469
|
+
context=context,
|
|
470
|
+
**extra_context,
|
|
471
|
+
)
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
class InfraUnavailableError(RuntimeHostError):
|
|
475
|
+
"""Raised when infrastructure resource is unavailable.
|
|
476
|
+
|
|
477
|
+
Used for resource downtime, maintenance mode, circuit breaker states,
|
|
478
|
+
or health check failures.
|
|
479
|
+
|
|
480
|
+
Example:
|
|
481
|
+
>>> context = ModelInfraErrorContext(
|
|
482
|
+
... transport_type=EnumInfraTransportType.KAFKA,
|
|
483
|
+
... operation="produce",
|
|
484
|
+
... target_name="kafka-broker-1",
|
|
485
|
+
... )
|
|
486
|
+
>>> raise InfraUnavailableError(
|
|
487
|
+
... "Kafka broker unavailable",
|
|
488
|
+
... context=context,
|
|
489
|
+
... host="kafka.example.com",
|
|
490
|
+
... port=9092,
|
|
491
|
+
... retry_count=3,
|
|
492
|
+
... )
|
|
493
|
+
"""
|
|
494
|
+
|
|
495
|
+
def __init__(
|
|
496
|
+
self,
|
|
497
|
+
message: str,
|
|
498
|
+
context: ModelInfraErrorContext | None = None,
|
|
499
|
+
**extra_context: object,
|
|
500
|
+
) -> None:
|
|
501
|
+
"""Initialize InfraUnavailableError.
|
|
502
|
+
|
|
503
|
+
Args:
|
|
504
|
+
message: Human-readable error message
|
|
505
|
+
context: Bundled infrastructure context
|
|
506
|
+
**extra_context: Additional context information (e.g., host, port, retry_count)
|
|
507
|
+
"""
|
|
508
|
+
super().__init__(
|
|
509
|
+
message=message,
|
|
510
|
+
error_code=EnumCoreErrorCode.SERVICE_UNAVAILABLE,
|
|
511
|
+
context=context,
|
|
512
|
+
**extra_context,
|
|
513
|
+
)
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
class EnvelopeValidationError(RuntimeHostError):
|
|
517
|
+
"""Raised when envelope validation fails before dispatch.
|
|
518
|
+
|
|
519
|
+
Used for:
|
|
520
|
+
- Missing required fields (operation)
|
|
521
|
+
- Missing required payload for data operations
|
|
522
|
+
|
|
523
|
+
Note: Invalid correlation_id formats are normalized (not rejected).
|
|
524
|
+
Invalid UUIDs are replaced with newly generated UUIDs during validation.
|
|
525
|
+
|
|
526
|
+
This is a pre-dispatch validation error, NOT a handler-specific error.
|
|
527
|
+
Handlers should NOT use this error class.
|
|
528
|
+
|
|
529
|
+
Example:
|
|
530
|
+
>>> raise EnvelopeValidationError(
|
|
531
|
+
... "operation is required and must be non-empty string",
|
|
532
|
+
... context=context,
|
|
533
|
+
... )
|
|
534
|
+
"""
|
|
535
|
+
|
|
536
|
+
def __init__(
|
|
537
|
+
self,
|
|
538
|
+
message: str,
|
|
539
|
+
context: ModelInfraErrorContext | None = None,
|
|
540
|
+
**extra_context: object,
|
|
541
|
+
) -> None:
|
|
542
|
+
"""Initialize EnvelopeValidationError.
|
|
543
|
+
|
|
544
|
+
Args:
|
|
545
|
+
message: Human-readable error message
|
|
546
|
+
context: Bundled infrastructure context
|
|
547
|
+
**extra_context: Additional context information
|
|
548
|
+
"""
|
|
549
|
+
super().__init__(
|
|
550
|
+
message=message,
|
|
551
|
+
error_code=EnumCoreErrorCode.INVALID_INPUT,
|
|
552
|
+
context=context,
|
|
553
|
+
**extra_context,
|
|
554
|
+
)
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
class UnknownHandlerTypeError(RuntimeHostError):
|
|
558
|
+
"""Raised when an operation references an unknown handler type prefix.
|
|
559
|
+
|
|
560
|
+
Used when dispatching envelopes with operation prefixes that don't
|
|
561
|
+
map to any registered handler (e.g., "lolnope.query" when only
|
|
562
|
+
"db" and "http" are registered).
|
|
563
|
+
|
|
564
|
+
Example:
|
|
565
|
+
>>> context = ModelInfraErrorContext(
|
|
566
|
+
... transport_type=EnumInfraTransportType.RUNTIME,
|
|
567
|
+
... operation="lolnope.query",
|
|
568
|
+
... )
|
|
569
|
+
>>> raise UnknownHandlerTypeError(
|
|
570
|
+
... "No handler registered for prefix: lolnope",
|
|
571
|
+
... context=context,
|
|
572
|
+
... prefix="lolnope",
|
|
573
|
+
... registered_prefixes=["db", "http"],
|
|
574
|
+
... )
|
|
575
|
+
"""
|
|
576
|
+
|
|
577
|
+
def __init__(
|
|
578
|
+
self,
|
|
579
|
+
message: str,
|
|
580
|
+
context: ModelInfraErrorContext | None = None,
|
|
581
|
+
**extra_context: object,
|
|
582
|
+
) -> None:
|
|
583
|
+
"""Initialize UnknownHandlerTypeError.
|
|
584
|
+
|
|
585
|
+
Args:
|
|
586
|
+
message: Human-readable error message
|
|
587
|
+
context: Bundled infrastructure context
|
|
588
|
+
**extra_context: Additional context (prefix, registered_prefixes, etc.)
|
|
589
|
+
"""
|
|
590
|
+
super().__init__(
|
|
591
|
+
message=message,
|
|
592
|
+
error_code=EnumCoreErrorCode.INVALID_INPUT,
|
|
593
|
+
context=context,
|
|
594
|
+
**extra_context,
|
|
595
|
+
)
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
__all__: list[str] = [
|
|
599
|
+
"EnvelopeValidationError",
|
|
600
|
+
"InfraAuthenticationError",
|
|
601
|
+
"InfraConnectionError",
|
|
602
|
+
"InfraTimeoutError",
|
|
603
|
+
"InfraUnavailableError",
|
|
604
|
+
"ProtocolConfigurationError",
|
|
605
|
+
"RuntimeHostError",
|
|
606
|
+
"SecretResolutionError",
|
|
607
|
+
"UnknownHandlerTypeError",
|
|
608
|
+
]
|