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,74 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Node Archetype Enumeration for ONEX 4-Node Architecture.
|
|
4
|
+
|
|
5
|
+
Defines the canonical node archetypes for the ONEX execution shape validator.
|
|
6
|
+
Each archetype corresponds to a node category in the ONEX 4-node architecture
|
|
7
|
+
and has specific constraints on allowed output types and operations.
|
|
8
|
+
|
|
9
|
+
Node Archetype Output Constraints (see EnumNodeOutputType for output types):
|
|
10
|
+
- EFFECT: External interactions (API calls, DB queries, file I/O).
|
|
11
|
+
Can output EVENT, COMMAND but not PROJECTION.
|
|
12
|
+
- COMPUTE: Pure data processing and business logic transformations.
|
|
13
|
+
Can output EVENT, COMMAND, INTENT. No side effects.
|
|
14
|
+
- REDUCER: State management and persistence operations.
|
|
15
|
+
Can output PROJECTION only. Cannot output EVENT.
|
|
16
|
+
Must be deterministic (no system time access).
|
|
17
|
+
- ORCHESTRATOR: Workflow coordination and step sequencing.
|
|
18
|
+
Can output COMMAND, EVENT but not INTENT or PROJECTION.
|
|
19
|
+
|
|
20
|
+
Note on Design:
|
|
21
|
+
This enum is distinct from:
|
|
22
|
+
- EnumHandlerType: Architectural role (how handler binds to system)
|
|
23
|
+
- EnumHandlerTypeCategory: Behavioral classification (side effects)
|
|
24
|
+
|
|
25
|
+
EnumNodeArchetype specifically captures the 4-node architecture for
|
|
26
|
+
execution shape validation which defines what outputs each node can produce.
|
|
27
|
+
|
|
28
|
+
See Also:
|
|
29
|
+
- EnumNodeOutputType: Defines valid node output types (includes PROJECTION)
|
|
30
|
+
- EnumMessageCategory: Defines message categories for routing (excludes PROJECTION)
|
|
31
|
+
- EnumExecutionShapeViolation: Defines validation violation types
|
|
32
|
+
- EnumHandlerType: Handler architectural role (INFRA_HANDLER, NODE_HANDLER, etc.)
|
|
33
|
+
- EnumHandlerTypeCategory: Handler behavioral classification (EFFECT, COMPUTE, etc.)
|
|
34
|
+
- NODE_ARCHETYPE_EXPECTED_CATEGORIES: Maps archetypes to expected input/output types
|
|
35
|
+
(see topic_category_validator.py for the mapping and its dual-purpose documentation)
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
from enum import Enum
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class EnumNodeArchetype(str, Enum):
|
|
42
|
+
"""Node archetypes for ONEX 4-node architecture execution shape validation.
|
|
43
|
+
|
|
44
|
+
These represent the four canonical node types in the ONEX architecture.
|
|
45
|
+
Each type has specific constraints on what operations are allowed and
|
|
46
|
+
what output types can be produced (see EnumNodeOutputType).
|
|
47
|
+
|
|
48
|
+
Attributes:
|
|
49
|
+
EFFECT: External interaction nodes (API calls, DB operations).
|
|
50
|
+
Responsible for side effects and external system integration.
|
|
51
|
+
Can output: EVENT, COMMAND. Cannot output: PROJECTION.
|
|
52
|
+
COMPUTE: Pure data processing and transformation nodes.
|
|
53
|
+
No side effects, deterministic transformations.
|
|
54
|
+
Can output: EVENT, COMMAND, INTENT.
|
|
55
|
+
REDUCER: State management and persistence nodes.
|
|
56
|
+
Manages state consolidation and projections.
|
|
57
|
+
Can output: PROJECTION only. Cannot output: EVENT.
|
|
58
|
+
Must be deterministic (no system time access).
|
|
59
|
+
ORCHESTRATOR: Workflow coordination nodes.
|
|
60
|
+
Coordinates multi-step workflows and routing.
|
|
61
|
+
Can output: COMMAND, EVENT. Cannot output: INTENT, PROJECTION.
|
|
62
|
+
|
|
63
|
+
Note:
|
|
64
|
+
Output types refer to EnumNodeOutputType values. PROJECTION is a node
|
|
65
|
+
output type, not a message routing category (not in EnumMessageCategory).
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
EFFECT = "effect"
|
|
69
|
+
COMPUTE = "compute"
|
|
70
|
+
REDUCER = "reducer"
|
|
71
|
+
ORCHESTRATOR = "orchestrator"
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
__all__ = ["EnumNodeArchetype"]
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Node Output Type Enumeration for ONEX Execution Shape Validation.
|
|
4
|
+
|
|
5
|
+
Defines the valid output types that ONEX nodes can produce. This enum is used
|
|
6
|
+
for execution shape validation to ensure nodes produce only allowed output types
|
|
7
|
+
based on their node archetype (EFFECT, COMPUTE, REDUCER, ORCHESTRATOR).
|
|
8
|
+
|
|
9
|
+
IMPORTANT: This enum is distinct from EnumMessageCategory:
|
|
10
|
+
- EnumMessageCategory: Defines message categories for routing (Kafka topics)
|
|
11
|
+
- EnumNodeOutputType: Defines valid output types for execution shape validation
|
|
12
|
+
|
|
13
|
+
Key Difference - PROJECTION:
|
|
14
|
+
PROJECTION is a valid node output type (REDUCERs can produce projections)
|
|
15
|
+
but is NOT a message routing category (projections are not routed via Kafka
|
|
16
|
+
topics in the same way as EVENTs, COMMANDs, and INTENTs).
|
|
17
|
+
|
|
18
|
+
Output Type Constraints by Node Archetype:
|
|
19
|
+
- EFFECT: Can output EVENT, COMMAND (external interaction results)
|
|
20
|
+
- COMPUTE: Can output EVENT, COMMAND, INTENT (pure transformations)
|
|
21
|
+
- REDUCER: Can output PROJECTION only (state consolidation)
|
|
22
|
+
- ORCHESTRATOR: Can output COMMAND, EVENT (workflow coordination)
|
|
23
|
+
|
|
24
|
+
See Also:
|
|
25
|
+
- EnumNodeArchetype: Defines the 4-node architecture node archetypes
|
|
26
|
+
- EnumMessageCategory: Defines message categories for topic routing
|
|
27
|
+
- EnumExecutionShapeViolation: Defines validation violation types
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
from __future__ import annotations
|
|
31
|
+
|
|
32
|
+
from enum import Enum
|
|
33
|
+
from typing import TYPE_CHECKING
|
|
34
|
+
from uuid import uuid4
|
|
35
|
+
|
|
36
|
+
if TYPE_CHECKING:
|
|
37
|
+
from omnibase_infra.enums.enum_message_category import EnumMessageCategory
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class EnumNodeOutputType(str, Enum):
|
|
41
|
+
"""Valid output types for ONEX 4-node architecture execution shape validation.
|
|
42
|
+
|
|
43
|
+
This enum defines what types of outputs a node can produce. The execution
|
|
44
|
+
shape validator uses this to ensure nodes only produce outputs allowed
|
|
45
|
+
for their node archetype.
|
|
46
|
+
|
|
47
|
+
This is NOT the same as EnumMessageCategory which defines how messages
|
|
48
|
+
are routed through Kafka topics. EnumNodeOutputType is specifically for
|
|
49
|
+
validating node execution contracts.
|
|
50
|
+
|
|
51
|
+
Attributes:
|
|
52
|
+
EVENT: Domain events representing facts about what happened.
|
|
53
|
+
Produced by: EFFECT, COMPUTE, ORCHESTRATOR
|
|
54
|
+
Example outputs: OrderCreatedEvent, PaymentProcessedEvent
|
|
55
|
+
COMMAND: Commands requesting an action to be performed.
|
|
56
|
+
Produced by: EFFECT, COMPUTE, ORCHESTRATOR
|
|
57
|
+
Example outputs: ProcessPaymentCommand, SendNotificationCommand
|
|
58
|
+
INTENT: User intents requiring validation before processing.
|
|
59
|
+
Produced by: COMPUTE only (transforms user input to validated intent)
|
|
60
|
+
Example outputs: ValidatedCheckoutIntent, ApprovedTransferIntent
|
|
61
|
+
PROJECTION: State projections for read model optimization.
|
|
62
|
+
Produced by: REDUCER only (state consolidation output)
|
|
63
|
+
Example outputs: OrderSummaryProjection, UserProfileProjection
|
|
64
|
+
NOTE: PROJECTION is valid here but NOT in EnumMessageCategory
|
|
65
|
+
because projections are node outputs, not routed messages.
|
|
66
|
+
|
|
67
|
+
Example:
|
|
68
|
+
>>> from omnibase_infra.enums import EnumNodeOutputType, EnumNodeArchetype
|
|
69
|
+
>>>
|
|
70
|
+
>>> # Validate that a REDUCER node can produce PROJECTION
|
|
71
|
+
>>> node_archetype = EnumNodeArchetype.REDUCER
|
|
72
|
+
>>> output_type = EnumNodeOutputType.PROJECTION
|
|
73
|
+
>>> # PROJECTION is valid for REDUCER
|
|
74
|
+
>>>
|
|
75
|
+
>>> # Validate that an EFFECT node cannot produce PROJECTION
|
|
76
|
+
>>> node_archetype = EnumNodeArchetype.EFFECT
|
|
77
|
+
>>> output_type = EnumNodeOutputType.PROJECTION
|
|
78
|
+
>>> # This would be an execution shape violation
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
EVENT = "event"
|
|
82
|
+
COMMAND = "command"
|
|
83
|
+
INTENT = "intent"
|
|
84
|
+
PROJECTION = "projection"
|
|
85
|
+
|
|
86
|
+
def is_event(self) -> bool:
|
|
87
|
+
"""Check if this is an EVENT output type."""
|
|
88
|
+
return self == EnumNodeOutputType.EVENT
|
|
89
|
+
|
|
90
|
+
def is_command(self) -> bool:
|
|
91
|
+
"""Check if this is a COMMAND output type."""
|
|
92
|
+
return self == EnumNodeOutputType.COMMAND
|
|
93
|
+
|
|
94
|
+
def is_intent(self) -> bool:
|
|
95
|
+
"""Check if this is an INTENT output type."""
|
|
96
|
+
return self == EnumNodeOutputType.INTENT
|
|
97
|
+
|
|
98
|
+
def is_projection(self) -> bool:
|
|
99
|
+
"""Check if this is a PROJECTION output type."""
|
|
100
|
+
return self == EnumNodeOutputType.PROJECTION
|
|
101
|
+
|
|
102
|
+
def is_routable(self) -> bool:
|
|
103
|
+
"""Check if this output type can be routed as a message.
|
|
104
|
+
|
|
105
|
+
EVENT, COMMAND, and INTENT are routable message categories that can
|
|
106
|
+
be published to Kafka topics. PROJECTION is NOT routable - it is a
|
|
107
|
+
node output type used for state consolidation in REDUCER nodes.
|
|
108
|
+
|
|
109
|
+
Returns:
|
|
110
|
+
True if this output type can be routed as a message, False otherwise.
|
|
111
|
+
|
|
112
|
+
Example:
|
|
113
|
+
>>> EnumNodeOutputType.EVENT.is_routable()
|
|
114
|
+
True
|
|
115
|
+
>>> EnumNodeOutputType.COMMAND.is_routable()
|
|
116
|
+
True
|
|
117
|
+
>>> EnumNodeOutputType.INTENT.is_routable()
|
|
118
|
+
True
|
|
119
|
+
>>> EnumNodeOutputType.PROJECTION.is_routable()
|
|
120
|
+
False
|
|
121
|
+
"""
|
|
122
|
+
return self != EnumNodeOutputType.PROJECTION
|
|
123
|
+
|
|
124
|
+
def to_message_category(self) -> EnumMessageCategory:
|
|
125
|
+
"""Convert this output type to the corresponding message category.
|
|
126
|
+
|
|
127
|
+
Maps routable output types to their message category equivalents:
|
|
128
|
+
- EVENT -> EnumMessageCategory.EVENT
|
|
129
|
+
- COMMAND -> EnumMessageCategory.COMMAND
|
|
130
|
+
- INTENT -> EnumMessageCategory.INTENT
|
|
131
|
+
|
|
132
|
+
PROJECTION cannot be converted because it is not a routable message
|
|
133
|
+
category - it is a node output type specific to REDUCER nodes.
|
|
134
|
+
|
|
135
|
+
Returns:
|
|
136
|
+
The corresponding EnumMessageCategory for this output type.
|
|
137
|
+
|
|
138
|
+
Raises:
|
|
139
|
+
ProtocolConfigurationError: If this is PROJECTION, which cannot be
|
|
140
|
+
converted to a message category.
|
|
141
|
+
|
|
142
|
+
Example:
|
|
143
|
+
>>> from omnibase_infra.enums import EnumNodeOutputType
|
|
144
|
+
>>> EnumNodeOutputType.EVENT.to_message_category()
|
|
145
|
+
<EnumMessageCategory.EVENT: 'event'>
|
|
146
|
+
>>> EnumNodeOutputType.COMMAND.to_message_category()
|
|
147
|
+
<EnumMessageCategory.COMMAND: 'command'>
|
|
148
|
+
>>> EnumNodeOutputType.INTENT.to_message_category()
|
|
149
|
+
<EnumMessageCategory.INTENT: 'intent'>
|
|
150
|
+
>>> EnumNodeOutputType.PROJECTION.to_message_category() # doctest: +IGNORE_EXCEPTION_DETAIL
|
|
151
|
+
Traceback (most recent call last):
|
|
152
|
+
...
|
|
153
|
+
ProtocolConfigurationError: Invalid output type for message category: expected EVENT, COMMAND, or INTENT, got 'projection'
|
|
154
|
+
"""
|
|
155
|
+
# Import at runtime to avoid circular imports
|
|
156
|
+
from omnibase_infra.enums.enum_infra_transport_type import (
|
|
157
|
+
EnumInfraTransportType,
|
|
158
|
+
)
|
|
159
|
+
from omnibase_infra.enums.enum_message_category import EnumMessageCategory
|
|
160
|
+
from omnibase_infra.errors import (
|
|
161
|
+
ModelInfraErrorContext,
|
|
162
|
+
ProtocolConfigurationError,
|
|
163
|
+
)
|
|
164
|
+
|
|
165
|
+
if self == EnumNodeOutputType.EVENT:
|
|
166
|
+
return EnumMessageCategory.EVENT
|
|
167
|
+
if self == EnumNodeOutputType.COMMAND:
|
|
168
|
+
return EnumMessageCategory.COMMAND
|
|
169
|
+
if self == EnumNodeOutputType.INTENT:
|
|
170
|
+
return EnumMessageCategory.INTENT
|
|
171
|
+
|
|
172
|
+
# PROJECTION cannot be converted to message category
|
|
173
|
+
context = ModelInfraErrorContext(
|
|
174
|
+
transport_type=EnumInfraTransportType.RUNTIME,
|
|
175
|
+
operation="to_message_category",
|
|
176
|
+
correlation_id=uuid4(),
|
|
177
|
+
)
|
|
178
|
+
raise ProtocolConfigurationError(
|
|
179
|
+
f"Invalid output type for message category: expected EVENT, COMMAND, or INTENT, got '{self.value}'",
|
|
180
|
+
context=context,
|
|
181
|
+
output_type=self.value,
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
__all__ = ["EnumNodeOutputType"]
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""
|
|
4
|
+
Non-Retryable Error Category Enumeration.
|
|
5
|
+
|
|
6
|
+
Defines error categories that represent permanent failures and should NOT be retried.
|
|
7
|
+
Used by DLQ replay, event bus retry logic, and dispatch engine to determine retry
|
|
8
|
+
eligibility.
|
|
9
|
+
|
|
10
|
+
Design Rationale:
|
|
11
|
+
Non-retryable errors are permanent failures where retrying would not succeed.
|
|
12
|
+
These include:
|
|
13
|
+
- Authentication/authorization failures (credentials are invalid)
|
|
14
|
+
- Configuration/validation errors (input is malformed)
|
|
15
|
+
- Schema mismatches (requires code changes)
|
|
16
|
+
|
|
17
|
+
See docs/patterns/retry_backoff_compensation_strategy.md for the complete retry
|
|
18
|
+
decision logic and rationale for each category.
|
|
19
|
+
|
|
20
|
+
Thread Safety:
|
|
21
|
+
All enums in this module are immutable and thread-safe.
|
|
22
|
+
Enum values can be safely shared across threads without synchronization.
|
|
23
|
+
|
|
24
|
+
Related:
|
|
25
|
+
- OMN-1032: Centralize NON_RETRYABLE_ERRORS into shared enum
|
|
26
|
+
- docs/patterns/retry_backoff_compensation_strategy.md
|
|
27
|
+
- docs/dlq/DLQ_ARCHITECTURE.md
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
from enum import Enum, unique
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@unique
|
|
34
|
+
class EnumNonRetryableErrorCategory(str, Enum):
|
|
35
|
+
"""
|
|
36
|
+
Error categories that should NOT be retried.
|
|
37
|
+
|
|
38
|
+
These represent permanent failures where retrying would not succeed.
|
|
39
|
+
Used by DLQ replay and event bus to determine retry eligibility.
|
|
40
|
+
|
|
41
|
+
Categories:
|
|
42
|
+
AUTHENTICATION_ERROR: Authentication/authorization failures (invalid credentials)
|
|
43
|
+
CONFIGURATION_ERROR: Protocol or service configuration errors
|
|
44
|
+
SECRET_RESOLUTION_ERROR: Secret/credential resolution failures (missing secrets)
|
|
45
|
+
VALIDATION_ERROR: Input/schema validation errors (malformed data)
|
|
46
|
+
|
|
47
|
+
Why These Are Non-Retryable:
|
|
48
|
+
- AUTHENTICATION_ERROR: Credentials are invalid or permissions denied.
|
|
49
|
+
Retrying with the same credentials will always fail. Requires
|
|
50
|
+
credential refresh or permission changes.
|
|
51
|
+
|
|
52
|
+
- CONFIGURATION_ERROR: Configuration is wrong or incompatible.
|
|
53
|
+
Retrying will not fix malformed configuration. Requires code
|
|
54
|
+
or configuration changes.
|
|
55
|
+
|
|
56
|
+
- SECRET_RESOLUTION_ERROR: Secret does not exist or is inaccessible.
|
|
57
|
+
Retrying will not create the missing secret. Requires secret
|
|
58
|
+
provisioning or path correction.
|
|
59
|
+
|
|
60
|
+
- VALIDATION_ERROR: Input data is malformed or violates schema.
|
|
61
|
+
Retrying with the same data will always fail. Requires data
|
|
62
|
+
correction at the source.
|
|
63
|
+
|
|
64
|
+
Example:
|
|
65
|
+
>>> from omnibase_infra.enums import EnumNonRetryableErrorCategory
|
|
66
|
+
>>> EnumNonRetryableErrorCategory.is_non_retryable("ValidationError")
|
|
67
|
+
True
|
|
68
|
+
>>> EnumNonRetryableErrorCategory.is_non_retryable("InfraConnectionError")
|
|
69
|
+
False
|
|
70
|
+
>>> EnumNonRetryableErrorCategory.VALIDATION_ERROR.value
|
|
71
|
+
'ValidationError'
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
AUTHENTICATION_ERROR = "InfraAuthenticationError"
|
|
75
|
+
"""Authentication/authorization failures from omnibase_infra.errors.
|
|
76
|
+
|
|
77
|
+
Raised when:
|
|
78
|
+
- Invalid credentials (401 Unauthorized)
|
|
79
|
+
- Permission denied (403 Forbidden)
|
|
80
|
+
- Token expired and cannot be refreshed
|
|
81
|
+
- Encryption/decryption key mismatch
|
|
82
|
+
|
|
83
|
+
Why non-retryable:
|
|
84
|
+
Retrying with the same credentials will always fail.
|
|
85
|
+
Requires credential refresh, permission changes, or key rotation.
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
CONFIGURATION_ERROR = "ProtocolConfigurationError"
|
|
89
|
+
"""Protocol or service configuration errors from omnibase_infra.errors.
|
|
90
|
+
|
|
91
|
+
Raised when:
|
|
92
|
+
- Invalid configuration values
|
|
93
|
+
- Schema mismatch between services
|
|
94
|
+
- Missing required configuration fields
|
|
95
|
+
- Incompatible protocol versions
|
|
96
|
+
|
|
97
|
+
Why non-retryable:
|
|
98
|
+
Configuration is statically defined. Retrying will not fix
|
|
99
|
+
malformed or incompatible configuration. Requires code or
|
|
100
|
+
configuration changes and redeployment.
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
SECRET_RESOLUTION_ERROR = "SecretResolutionError"
|
|
104
|
+
"""Secret/credential resolution failures from omnibase_infra.errors.
|
|
105
|
+
|
|
106
|
+
Raised when:
|
|
107
|
+
- Secret path does not exist in Vault
|
|
108
|
+
- Secret key not found within secret data
|
|
109
|
+
- Vault backend unavailable (after retries exhausted)
|
|
110
|
+
- Secret access denied by policy
|
|
111
|
+
|
|
112
|
+
Why non-retryable:
|
|
113
|
+
The secret either doesn't exist or is inaccessible by policy.
|
|
114
|
+
Retrying will not create the missing secret. Requires secret
|
|
115
|
+
provisioning or policy changes.
|
|
116
|
+
"""
|
|
117
|
+
|
|
118
|
+
VALIDATION_ERROR = "ValidationError"
|
|
119
|
+
"""Input/schema validation errors from Pydantic or custom validators.
|
|
120
|
+
|
|
121
|
+
Raised when:
|
|
122
|
+
- Pydantic model validation fails
|
|
123
|
+
- Request payload violates schema
|
|
124
|
+
- Data type mismatches
|
|
125
|
+
- Required fields missing
|
|
126
|
+
- Constraint violations
|
|
127
|
+
|
|
128
|
+
Why non-retryable:
|
|
129
|
+
The input data itself is malformed. Retrying with the same
|
|
130
|
+
malformed data will always fail. Requires correction at
|
|
131
|
+
the data source.
|
|
132
|
+
"""
|
|
133
|
+
|
|
134
|
+
def __str__(self) -> str:
|
|
135
|
+
"""Return the string value for serialization."""
|
|
136
|
+
return self.value
|
|
137
|
+
|
|
138
|
+
@classmethod
|
|
139
|
+
def is_non_retryable(cls, error_type: str) -> bool:
|
|
140
|
+
"""
|
|
141
|
+
Check if an error type is non-retryable.
|
|
142
|
+
|
|
143
|
+
This is the primary method for determining retry eligibility.
|
|
144
|
+
Used by DLQ replay and event bus retry logic.
|
|
145
|
+
|
|
146
|
+
Args:
|
|
147
|
+
error_type: The error type name (e.g., "ValidationError",
|
|
148
|
+
"InfraAuthenticationError"). This typically comes from
|
|
149
|
+
the error_type field in DLQ messages or exception class names.
|
|
150
|
+
|
|
151
|
+
Returns:
|
|
152
|
+
True if the error type is non-retryable, False otherwise
|
|
153
|
+
|
|
154
|
+
Example:
|
|
155
|
+
>>> EnumNonRetryableErrorCategory.is_non_retryable("ValidationError")
|
|
156
|
+
True
|
|
157
|
+
>>> EnumNonRetryableErrorCategory.is_non_retryable("InfraConnectionError")
|
|
158
|
+
False
|
|
159
|
+
>>> EnumNonRetryableErrorCategory.is_non_retryable("TimeoutError")
|
|
160
|
+
False
|
|
161
|
+
"""
|
|
162
|
+
return error_type in {member.value for member in cls}
|
|
163
|
+
|
|
164
|
+
@classmethod
|
|
165
|
+
def get_all_values(cls) -> frozenset[str]:
|
|
166
|
+
"""
|
|
167
|
+
Get all non-retryable error type values as a frozenset.
|
|
168
|
+
|
|
169
|
+
Returns a frozen (immutable) set of all error type values for efficient
|
|
170
|
+
membership testing. This is useful when you need to perform multiple
|
|
171
|
+
lookups or need to pass the set to external code.
|
|
172
|
+
|
|
173
|
+
Returns:
|
|
174
|
+
A frozenset containing all non-retryable error type values
|
|
175
|
+
|
|
176
|
+
Example:
|
|
177
|
+
>>> values = EnumNonRetryableErrorCategory.get_all_values()
|
|
178
|
+
>>> "ValidationError" in values
|
|
179
|
+
True
|
|
180
|
+
>>> isinstance(values, frozenset)
|
|
181
|
+
True
|
|
182
|
+
"""
|
|
183
|
+
return frozenset(member.value for member in cls)
|
|
184
|
+
|
|
185
|
+
@classmethod
|
|
186
|
+
def get_description(cls, error_type: "EnumNonRetryableErrorCategory") -> str:
|
|
187
|
+
"""
|
|
188
|
+
Get a human-readable description of why this error category is non-retryable.
|
|
189
|
+
|
|
190
|
+
Args:
|
|
191
|
+
error_type: The non-retryable error category to describe
|
|
192
|
+
|
|
193
|
+
Returns:
|
|
194
|
+
A human-readable description explaining why the error is non-retryable
|
|
195
|
+
|
|
196
|
+
Example:
|
|
197
|
+
>>> desc = EnumNonRetryableErrorCategory.get_description(
|
|
198
|
+
... EnumNonRetryableErrorCategory.VALIDATION_ERROR
|
|
199
|
+
... )
|
|
200
|
+
>>> "malformed data" in desc.lower()
|
|
201
|
+
True
|
|
202
|
+
"""
|
|
203
|
+
descriptions = {
|
|
204
|
+
cls.AUTHENTICATION_ERROR: (
|
|
205
|
+
"Authentication/authorization failure - credentials are invalid "
|
|
206
|
+
"or permissions denied. Requires credential refresh or permission changes."
|
|
207
|
+
),
|
|
208
|
+
cls.CONFIGURATION_ERROR: (
|
|
209
|
+
"Configuration error - configuration is wrong or incompatible. "
|
|
210
|
+
"Requires code or configuration changes and redeployment."
|
|
211
|
+
),
|
|
212
|
+
cls.SECRET_RESOLUTION_ERROR: (
|
|
213
|
+
"Secret resolution failure - secret does not exist or is inaccessible. "
|
|
214
|
+
"Requires secret provisioning or policy changes."
|
|
215
|
+
),
|
|
216
|
+
cls.VALIDATION_ERROR: (
|
|
217
|
+
"Validation error - input data is malformed or violates schema. "
|
|
218
|
+
"Requires data correction at the source."
|
|
219
|
+
),
|
|
220
|
+
}
|
|
221
|
+
return descriptions.get(error_type, "Unknown error category")
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
__all__ = ["EnumNonRetryableErrorCategory"]
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Policy Type Enumeration.
|
|
4
|
+
|
|
5
|
+
Defines the canonical policy types for the RegistryPolicy plugin system.
|
|
6
|
+
Used to classify and route policies for orchestrator and reducer nodes.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from enum import Enum
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class EnumPolicyType(str, Enum):
|
|
13
|
+
"""Policy types for RegistryPolicy plugin classification.
|
|
14
|
+
|
|
15
|
+
These represent the two primary policy categories in the ONEX
|
|
16
|
+
4-node architecture: orchestrator policies and reducer policies.
|
|
17
|
+
|
|
18
|
+
Attributes:
|
|
19
|
+
ORCHESTRATOR: Policies for orchestrator nodes controlling workflow
|
|
20
|
+
execution. Includes step ordering, retry strategies, backoff
|
|
21
|
+
algorithms, routing decisions, timeout handling, and circuit
|
|
22
|
+
breaker patterns.
|
|
23
|
+
REDUCER: Policies for reducer nodes managing state consolidation.
|
|
24
|
+
Includes state merge strategies, conflict resolution, idempotency
|
|
25
|
+
enforcement, projection rules, and data redaction policies.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
ORCHESTRATOR = "orchestrator"
|
|
29
|
+
REDUCER = "reducer"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
__all__ = ["EnumPolicyType"]
|