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,50 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""HTTP Handler Models Module.
|
|
4
|
+
|
|
5
|
+
This module exports Pydantic models for HTTP handler request/response structures.
|
|
6
|
+
All models are strongly typed to eliminate Any usage.
|
|
7
|
+
|
|
8
|
+
Exports:
|
|
9
|
+
EnumHttpOperationType: Discriminator enum for HTTP operation types
|
|
10
|
+
ModelPayloadHttp: Base model for registry-managed HTTP payloads
|
|
11
|
+
RegistryPayloadHttp: Decorator-based registry for HTTP payload types
|
|
12
|
+
ModelHttpGetPayload: Payload for http.get result
|
|
13
|
+
ModelHttpPostPayload: Payload for http.post result
|
|
14
|
+
HttpPayload: Discriminated union of all HTTP payload types
|
|
15
|
+
ModelHttpHandlerPayload: Wrapper containing discriminated union payload
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
from omnibase_infra.handlers.models.http.enum_http_operation_type import (
|
|
19
|
+
EnumHttpOperationType,
|
|
20
|
+
)
|
|
21
|
+
from omnibase_infra.handlers.models.http.model_http_body_content import (
|
|
22
|
+
ModelHttpBodyContent,
|
|
23
|
+
)
|
|
24
|
+
from omnibase_infra.handlers.models.http.model_http_get_payload import (
|
|
25
|
+
ModelHttpGetPayload,
|
|
26
|
+
)
|
|
27
|
+
from omnibase_infra.handlers.models.http.model_http_handler_payload import (
|
|
28
|
+
HttpPayload,
|
|
29
|
+
ModelHttpHandlerPayload,
|
|
30
|
+
)
|
|
31
|
+
from omnibase_infra.handlers.models.http.model_http_post_payload import (
|
|
32
|
+
ModelHttpPostPayload,
|
|
33
|
+
)
|
|
34
|
+
from omnibase_infra.handlers.models.http.model_payload_http import (
|
|
35
|
+
ModelPayloadHttp,
|
|
36
|
+
)
|
|
37
|
+
from omnibase_infra.handlers.models.http.registry_payload_http import (
|
|
38
|
+
RegistryPayloadHttp,
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
__all__: list[str] = [
|
|
42
|
+
"EnumHttpOperationType",
|
|
43
|
+
"HttpPayload",
|
|
44
|
+
"ModelHttpBodyContent",
|
|
45
|
+
"ModelHttpGetPayload",
|
|
46
|
+
"ModelHttpHandlerPayload",
|
|
47
|
+
"ModelHttpPostPayload",
|
|
48
|
+
"ModelPayloadHttp",
|
|
49
|
+
"RegistryPayloadHttp",
|
|
50
|
+
]
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""HTTP Operation Type Enum.
|
|
4
|
+
|
|
5
|
+
Defines the discriminator enum for HTTP operation types, used in the
|
|
6
|
+
discriminated union for HTTP handler responses.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from enum import Enum
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class EnumHttpOperationType(str, Enum):
|
|
15
|
+
"""HTTP operation type discriminator.
|
|
16
|
+
|
|
17
|
+
Each value corresponds to a specific HTTP operation type and its
|
|
18
|
+
associated payload model in the HttpPayload discriminated union.
|
|
19
|
+
|
|
20
|
+
Attributes:
|
|
21
|
+
GET: GET request operation (ModelHttpGetPayload)
|
|
22
|
+
POST: POST request operation (ModelHttpPostPayload)
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
GET = "get"
|
|
26
|
+
POST = "post"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
__all__: list[str] = ["EnumHttpOperationType"]
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""HTTP Body Content Model.
|
|
4
|
+
|
|
5
|
+
This module provides a model to encapsulate HTTP request body content,
|
|
6
|
+
grouping the raw body and optional pre-serialized bytes together.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ModelHttpBodyContent(BaseModel):
|
|
15
|
+
"""Encapsulates HTTP request body content for request preparation.
|
|
16
|
+
|
|
17
|
+
Groups the raw body and optional pre-serialized bytes together to reduce
|
|
18
|
+
function parameter count while maintaining semantic clarity.
|
|
19
|
+
|
|
20
|
+
Attributes:
|
|
21
|
+
body: The request body content (str, dict, bytes, or None).
|
|
22
|
+
For POST requests, this is the payload to send.
|
|
23
|
+
pre_serialized: Pre-serialized JSON bytes for dict bodies.
|
|
24
|
+
When provided, avoids double serialization by reusing cached bytes
|
|
25
|
+
from size validation.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
model_config = ConfigDict(
|
|
29
|
+
strict=False, # Allow object type for body
|
|
30
|
+
frozen=True,
|
|
31
|
+
extra="forbid",
|
|
32
|
+
arbitrary_types_allowed=True, # Allow bytes type
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
body: object = Field(
|
|
36
|
+
default=None,
|
|
37
|
+
description="Request body content (str, dict, bytes, or None)",
|
|
38
|
+
)
|
|
39
|
+
pre_serialized: bytes | None = Field(
|
|
40
|
+
default=None,
|
|
41
|
+
description="Pre-serialized JSON bytes for dict bodies",
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
__all__: list[str] = ["ModelHttpBodyContent"]
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""HTTP GET Payload Model.
|
|
4
|
+
|
|
5
|
+
This module provides the Pydantic model for http.get operation results.
|
|
6
|
+
Uses the registry pattern for dynamic type resolution.
|
|
7
|
+
|
|
8
|
+
Related:
|
|
9
|
+
- RegistryPayloadHttp: Payload type registration and lookup
|
|
10
|
+
- OMN-1007: Union reduction refactoring
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
from typing import Literal
|
|
16
|
+
|
|
17
|
+
from pydantic import ConfigDict, Field
|
|
18
|
+
|
|
19
|
+
from omnibase_core.types import JsonType
|
|
20
|
+
from omnibase_infra.handlers.models.http.enum_http_operation_type import (
|
|
21
|
+
EnumHttpOperationType,
|
|
22
|
+
)
|
|
23
|
+
from omnibase_infra.handlers.models.http.model_payload_http import (
|
|
24
|
+
ModelPayloadHttp,
|
|
25
|
+
)
|
|
26
|
+
from omnibase_infra.handlers.models.http.registry_payload_http import (
|
|
27
|
+
RegistryPayloadHttp,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@RegistryPayloadHttp.register("get")
|
|
32
|
+
class ModelHttpGetPayload(ModelPayloadHttp):
|
|
33
|
+
"""Payload for http.get operation result.
|
|
34
|
+
|
|
35
|
+
This model is registered with RegistryPayloadHttp for dynamic type resolution.
|
|
36
|
+
Use @RegistryPayloadHttp.register("get") decorator pattern.
|
|
37
|
+
|
|
38
|
+
Contains the HTTP response from a GET request including status code,
|
|
39
|
+
headers, and response body.
|
|
40
|
+
|
|
41
|
+
Attributes:
|
|
42
|
+
operation_type: Discriminator set to "get"
|
|
43
|
+
status_code: HTTP response status code
|
|
44
|
+
headers: Response headers as key-value dictionary
|
|
45
|
+
body: Response body (parsed as JSON if content-type is application/json)
|
|
46
|
+
|
|
47
|
+
Example:
|
|
48
|
+
>>> payload = ModelHttpGetPayload(
|
|
49
|
+
... status_code=200,
|
|
50
|
+
... headers={"content-type": "application/json"},
|
|
51
|
+
... body={"message": "success"},
|
|
52
|
+
... )
|
|
53
|
+
>>> print(payload.status_code)
|
|
54
|
+
200
|
|
55
|
+
|
|
56
|
+
# Dynamic type lookup:
|
|
57
|
+
>>> from omnibase_infra.handlers.models.http import RegistryPayloadHttp
|
|
58
|
+
>>> payload_cls = RegistryPayloadHttp.get_type("get")
|
|
59
|
+
>>> payload_cls.__name__
|
|
60
|
+
'ModelHttpGetPayload'
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
model_config = ConfigDict(
|
|
64
|
+
strict=True,
|
|
65
|
+
frozen=True,
|
|
66
|
+
extra="forbid",
|
|
67
|
+
from_attributes=True,
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
operation_type: Literal[EnumHttpOperationType.GET] = Field(
|
|
71
|
+
default=EnumHttpOperationType.GET,
|
|
72
|
+
description="Operation type discriminator",
|
|
73
|
+
)
|
|
74
|
+
status_code: int = Field(
|
|
75
|
+
ge=100,
|
|
76
|
+
le=599,
|
|
77
|
+
description="HTTP response status code",
|
|
78
|
+
)
|
|
79
|
+
headers: dict[str, str] = Field(
|
|
80
|
+
default_factory=dict,
|
|
81
|
+
description="Response headers as key-value dictionary",
|
|
82
|
+
)
|
|
83
|
+
body: JsonType = Field(
|
|
84
|
+
description="Response body",
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
__all__: list[str] = ["ModelHttpGetPayload"]
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""HTTP Handler Payload Model.
|
|
4
|
+
|
|
5
|
+
This module provides the discriminated union type for HTTP operation payloads
|
|
6
|
+
and the wrapper model that contains them.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from typing import Annotated
|
|
12
|
+
|
|
13
|
+
from pydantic import BaseModel, ConfigDict, Discriminator, Field, Tag
|
|
14
|
+
|
|
15
|
+
from omnibase_infra.handlers.models.http.model_http_get_payload import (
|
|
16
|
+
ModelHttpGetPayload,
|
|
17
|
+
)
|
|
18
|
+
from omnibase_infra.handlers.models.http.model_http_post_payload import (
|
|
19
|
+
ModelHttpPostPayload,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _http_payload_discriminator(value: object) -> str:
|
|
24
|
+
"""Discriminator function for HttpPayload union.
|
|
25
|
+
|
|
26
|
+
Determines which payload type to use based on the operation_type field.
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
value: The raw value being validated (dict or model instance)
|
|
30
|
+
|
|
31
|
+
Returns:
|
|
32
|
+
The discriminator tag value matching the operation_type
|
|
33
|
+
"""
|
|
34
|
+
if isinstance(value, dict):
|
|
35
|
+
operation_type = value.get("operation_type", "get")
|
|
36
|
+
else:
|
|
37
|
+
operation_type = getattr(value, "operation_type", "get")
|
|
38
|
+
|
|
39
|
+
# Handle both enum values and string values
|
|
40
|
+
if hasattr(operation_type, "value"):
|
|
41
|
+
return str(operation_type.value)
|
|
42
|
+
return str(operation_type)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
# Discriminated union of all HTTP payload types
|
|
46
|
+
HttpPayload = Annotated[
|
|
47
|
+
Annotated[ModelHttpGetPayload, Tag("get")]
|
|
48
|
+
| Annotated[ModelHttpPostPayload, Tag("post")],
|
|
49
|
+
Discriminator(_http_payload_discriminator),
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class ModelHttpHandlerPayload(BaseModel):
|
|
54
|
+
"""Wrapper model for HTTP handler payloads.
|
|
55
|
+
|
|
56
|
+
Contains the discriminated union of all possible HTTP operation payloads.
|
|
57
|
+
This allows the HttpRestHandler to return a consistent payload wrapper while
|
|
58
|
+
the actual payload type varies based on the operation.
|
|
59
|
+
|
|
60
|
+
Attributes:
|
|
61
|
+
data: The operation-specific payload (discriminated union)
|
|
62
|
+
|
|
63
|
+
Example:
|
|
64
|
+
>>> from omnibase_infra.handlers.models.http import ModelHttpGetPayload
|
|
65
|
+
>>> get_payload = ModelHttpGetPayload(
|
|
66
|
+
... status_code=200,
|
|
67
|
+
... headers={"content-type": "application/json"},
|
|
68
|
+
... body={"message": "success"},
|
|
69
|
+
... )
|
|
70
|
+
>>> wrapper = ModelHttpHandlerPayload(data=get_payload)
|
|
71
|
+
>>> print(wrapper.data.operation_type)
|
|
72
|
+
<EnumHttpOperationType.GET: 'get'>
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
model_config = ConfigDict(
|
|
76
|
+
strict=True,
|
|
77
|
+
frozen=True,
|
|
78
|
+
extra="forbid",
|
|
79
|
+
from_attributes=True,
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
data: HttpPayload = Field(
|
|
83
|
+
description="Operation-specific payload",
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
__all__: list[str] = [
|
|
88
|
+
"HttpPayload",
|
|
89
|
+
"ModelHttpHandlerPayload",
|
|
90
|
+
]
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""HTTP POST Payload Model.
|
|
4
|
+
|
|
5
|
+
This module provides the Pydantic model for http.post operation results.
|
|
6
|
+
Uses the registry pattern for dynamic type resolution.
|
|
7
|
+
|
|
8
|
+
Related:
|
|
9
|
+
- RegistryPayloadHttp: Payload type registration and lookup
|
|
10
|
+
- OMN-1007: Union reduction refactoring
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
from typing import Literal
|
|
16
|
+
|
|
17
|
+
from pydantic import ConfigDict, Field
|
|
18
|
+
|
|
19
|
+
from omnibase_core.types import JsonType
|
|
20
|
+
from omnibase_infra.handlers.models.http.enum_http_operation_type import (
|
|
21
|
+
EnumHttpOperationType,
|
|
22
|
+
)
|
|
23
|
+
from omnibase_infra.handlers.models.http.model_payload_http import (
|
|
24
|
+
ModelPayloadHttp,
|
|
25
|
+
)
|
|
26
|
+
from omnibase_infra.handlers.models.http.registry_payload_http import (
|
|
27
|
+
RegistryPayloadHttp,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@RegistryPayloadHttp.register("post")
|
|
32
|
+
class ModelHttpPostPayload(ModelPayloadHttp):
|
|
33
|
+
"""Payload for http.post operation result.
|
|
34
|
+
|
|
35
|
+
This model is registered with RegistryPayloadHttp for dynamic type resolution.
|
|
36
|
+
Use @RegistryPayloadHttp.register("post") decorator pattern.
|
|
37
|
+
|
|
38
|
+
Contains the HTTP response from a POST request including status code,
|
|
39
|
+
headers, and response body.
|
|
40
|
+
|
|
41
|
+
Attributes:
|
|
42
|
+
operation_type: Discriminator set to "post"
|
|
43
|
+
status_code: HTTP response status code
|
|
44
|
+
headers: Response headers as key-value dictionary
|
|
45
|
+
body: Response body (parsed as JSON if content-type is application/json)
|
|
46
|
+
|
|
47
|
+
Example:
|
|
48
|
+
>>> payload = ModelHttpPostPayload(
|
|
49
|
+
... status_code=201,
|
|
50
|
+
... headers={"content-type": "application/json", "location": "/items/1"},
|
|
51
|
+
... body={"id": 1, "created": True},
|
|
52
|
+
... )
|
|
53
|
+
>>> print(payload.status_code)
|
|
54
|
+
201
|
|
55
|
+
|
|
56
|
+
# Dynamic type lookup:
|
|
57
|
+
>>> from omnibase_infra.handlers.models.http import RegistryPayloadHttp
|
|
58
|
+
>>> payload_cls = RegistryPayloadHttp.get_type("post")
|
|
59
|
+
>>> payload_cls.__name__
|
|
60
|
+
'ModelHttpPostPayload'
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
model_config = ConfigDict(
|
|
64
|
+
strict=True,
|
|
65
|
+
frozen=True,
|
|
66
|
+
extra="forbid",
|
|
67
|
+
from_attributes=True,
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
operation_type: Literal[EnumHttpOperationType.POST] = Field(
|
|
71
|
+
default=EnumHttpOperationType.POST,
|
|
72
|
+
description="Operation type discriminator",
|
|
73
|
+
)
|
|
74
|
+
status_code: int = Field(
|
|
75
|
+
ge=100,
|
|
76
|
+
le=599,
|
|
77
|
+
description="HTTP response status code",
|
|
78
|
+
)
|
|
79
|
+
headers: dict[str, str] = Field(
|
|
80
|
+
default_factory=dict,
|
|
81
|
+
description="Response headers as key-value dictionary",
|
|
82
|
+
)
|
|
83
|
+
body: JsonType = Field(
|
|
84
|
+
description="Response body",
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
__all__: list[str] = ["ModelHttpPostPayload"]
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Base HTTP payload model for registry-based type resolution.
|
|
4
|
+
|
|
5
|
+
This module provides:
|
|
6
|
+
- ModelPayloadHttp: Base model for all HTTP handler payloads
|
|
7
|
+
|
|
8
|
+
Design Pattern:
|
|
9
|
+
Instead of maintaining explicit union types like:
|
|
10
|
+
HttpPayload = ModelHttpGetPayload | ModelHttpPostPayload | ...
|
|
11
|
+
|
|
12
|
+
Payload models self-register via decorator:
|
|
13
|
+
@RegistryPayloadHttp.register("get")
|
|
14
|
+
class ModelHttpGetPayload(ModelPayloadHttp): ...
|
|
15
|
+
|
|
16
|
+
The registry resolves types dynamically during Pydantic validation,
|
|
17
|
+
enabling new payload types to be added without modifying existing code.
|
|
18
|
+
|
|
19
|
+
Related:
|
|
20
|
+
- RegistryPayloadHttp: Decorator-based registry for payload type discovery
|
|
21
|
+
- EnumHttpOperationType: Operation type enum for discriminator
|
|
22
|
+
- OMN-1007: Union reduction refactoring
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
from __future__ import annotations
|
|
26
|
+
|
|
27
|
+
from pydantic import BaseModel, ConfigDict
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class ModelPayloadHttp(BaseModel):
|
|
31
|
+
"""Base model for all registry-managed HTTP payloads.
|
|
32
|
+
|
|
33
|
+
All concrete HTTP payload models MUST:
|
|
34
|
+
1. Inherit from this base class
|
|
35
|
+
2. Use @RegistryPayloadHttp.register("operation_type") decorator
|
|
36
|
+
3. Define operation_type as Literal["type"] with matching default
|
|
37
|
+
4. Be frozen (immutable) for thread safety
|
|
38
|
+
|
|
39
|
+
This base class defines the common interface that all HTTP payloads share,
|
|
40
|
+
enabling type-safe access to common fields without type narrowing.
|
|
41
|
+
|
|
42
|
+
Example:
|
|
43
|
+
@RegistryPayloadHttp.register("get")
|
|
44
|
+
class ModelHttpGetPayload(ModelPayloadHttp):
|
|
45
|
+
operation_type: Literal["get"] = "get"
|
|
46
|
+
url: str
|
|
47
|
+
status_code: int
|
|
48
|
+
...
|
|
49
|
+
|
|
50
|
+
Attributes:
|
|
51
|
+
operation_type: Operation type identifier used for type discrimination.
|
|
52
|
+
|
|
53
|
+
Related:
|
|
54
|
+
- RegistryPayloadHttp: Registration decorator and type lookup
|
|
55
|
+
- EnumHttpOperationType: Enum for operation type values
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
model_config = ConfigDict(frozen=True, extra="forbid", from_attributes=True)
|
|
59
|
+
|
|
60
|
+
operation_type: str
|
|
61
|
+
"""Operation type identifier used for type discrimination."""
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
__all__ = [
|
|
65
|
+
"ModelPayloadHttp",
|
|
66
|
+
]
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Registry for HTTP payload types with decorator-based registration.
|
|
4
|
+
|
|
5
|
+
This module provides:
|
|
6
|
+
- RegistryPayloadHttp: Decorator-based registry for payload type discovery
|
|
7
|
+
|
|
8
|
+
Design Pattern:
|
|
9
|
+
Instead of maintaining explicit union types like:
|
|
10
|
+
HttpPayload = ModelHttpGetPayload | ModelHttpPostPayload | ...
|
|
11
|
+
|
|
12
|
+
Payload models self-register via decorator:
|
|
13
|
+
@RegistryPayloadHttp.register("get")
|
|
14
|
+
class ModelHttpGetPayload(ModelPayloadHttp): ...
|
|
15
|
+
|
|
16
|
+
The registry resolves types dynamically during Pydantic validation,
|
|
17
|
+
enabling new payload types to be added without modifying existing code.
|
|
18
|
+
|
|
19
|
+
Related:
|
|
20
|
+
- ModelPayloadHttp: Base model for HTTP payloads
|
|
21
|
+
- EnumHttpOperationType: Operation type enum for discriminator
|
|
22
|
+
- OMN-1007: Union reduction refactoring
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
from __future__ import annotations
|
|
26
|
+
|
|
27
|
+
import threading
|
|
28
|
+
import warnings
|
|
29
|
+
from collections.abc import Callable
|
|
30
|
+
from typing import TYPE_CHECKING, ClassVar, TypeVar
|
|
31
|
+
|
|
32
|
+
from omnibase_infra.enums import EnumInfraTransportType
|
|
33
|
+
from omnibase_infra.errors import ModelInfraErrorContext, ProtocolConfigurationError
|
|
34
|
+
|
|
35
|
+
if TYPE_CHECKING:
|
|
36
|
+
from omnibase_infra.handlers.models.http.model_payload_http import (
|
|
37
|
+
ModelPayloadHttp,
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
# TypeVar bound to ModelPayloadHttp to preserve subclass type through decorator
|
|
41
|
+
_HttpPayloadT = TypeVar("_HttpPayloadT", bound="ModelPayloadHttp")
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class RegistryPayloadHttp:
|
|
45
|
+
"""Registry for HTTP payload model types with decorator-based registration.
|
|
46
|
+
|
|
47
|
+
This registry enables dynamic type resolution for Pydantic validation
|
|
48
|
+
without requiring explicit union type definitions.
|
|
49
|
+
|
|
50
|
+
Example:
|
|
51
|
+
@RegistryPayloadHttp.register("get")
|
|
52
|
+
class ModelHttpGetPayload(ModelPayloadHttp):
|
|
53
|
+
operation_type: Literal["get"] = "get"
|
|
54
|
+
...
|
|
55
|
+
|
|
56
|
+
# Later, resolve type from operation_type
|
|
57
|
+
payload_cls = RegistryPayloadHttp.get_type("get")
|
|
58
|
+
payload = payload_cls.model_validate(data)
|
|
59
|
+
|
|
60
|
+
Thread Safety:
|
|
61
|
+
All registration and mutation operations are protected by a class-level
|
|
62
|
+
threading.Lock to ensure thread-safe access. Read operations (get_type,
|
|
63
|
+
get_all_types, is_registered) are atomic dictionary operations and safe
|
|
64
|
+
for concurrent access. The lock ensures that check-and-set operations
|
|
65
|
+
in register() are atomic, preventing race conditions.
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
_types: ClassVar[dict[str, type[ModelPayloadHttp]]] = {}
|
|
69
|
+
_lock: ClassVar[threading.Lock] = threading.Lock()
|
|
70
|
+
|
|
71
|
+
@classmethod
|
|
72
|
+
def register(
|
|
73
|
+
cls, operation_type: str
|
|
74
|
+
) -> Callable[[type[_HttpPayloadT]], type[_HttpPayloadT]]:
|
|
75
|
+
"""Decorator to register an HTTP payload model type.
|
|
76
|
+
|
|
77
|
+
Args:
|
|
78
|
+
operation_type: The operation type identifier (e.g., "get", "post").
|
|
79
|
+
Must match the model's `operation_type` field value.
|
|
80
|
+
|
|
81
|
+
Returns:
|
|
82
|
+
Decorator function that registers the class and returns it unchanged.
|
|
83
|
+
|
|
84
|
+
Raises:
|
|
85
|
+
ValueError: If operation_type is already registered (prevents duplicates).
|
|
86
|
+
|
|
87
|
+
Example:
|
|
88
|
+
@RegistryPayloadHttp.register("get")
|
|
89
|
+
class ModelHttpGetPayload(ModelPayloadHttp):
|
|
90
|
+
operation_type: Literal["get"] = "get"
|
|
91
|
+
url: str
|
|
92
|
+
...
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
def decorator(
|
|
96
|
+
payload_cls: type[_HttpPayloadT],
|
|
97
|
+
) -> type[_HttpPayloadT]:
|
|
98
|
+
# Runtime type validation (outside lock - class inspection is read-only)
|
|
99
|
+
from omnibase_infra.handlers.models.http.model_payload_http import (
|
|
100
|
+
ModelPayloadHttp,
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
if not issubclass(payload_cls, ModelPayloadHttp):
|
|
104
|
+
context = ModelInfraErrorContext(
|
|
105
|
+
transport_type=EnumInfraTransportType.HTTP,
|
|
106
|
+
operation="register_payload_type",
|
|
107
|
+
)
|
|
108
|
+
raise ProtocolConfigurationError(
|
|
109
|
+
f"Registered class {payload_cls.__name__!r} must be a subclass "
|
|
110
|
+
f"of ModelPayloadHttp, got {payload_cls.__mro__}",
|
|
111
|
+
context=context,
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
# Thread-safe registration with atomic check-and-set
|
|
115
|
+
with cls._lock:
|
|
116
|
+
if operation_type in cls._types:
|
|
117
|
+
context = ModelInfraErrorContext(
|
|
118
|
+
transport_type=EnumInfraTransportType.HTTP,
|
|
119
|
+
operation="register_payload_type",
|
|
120
|
+
)
|
|
121
|
+
raise ProtocolConfigurationError(
|
|
122
|
+
f"HTTP payload operation_type '{operation_type}' already registered "
|
|
123
|
+
f"to {cls._types[operation_type].__name__}. "
|
|
124
|
+
f"Cannot register {payload_cls.__name__}.",
|
|
125
|
+
context=context,
|
|
126
|
+
)
|
|
127
|
+
cls._types[operation_type] = payload_cls
|
|
128
|
+
return payload_cls
|
|
129
|
+
|
|
130
|
+
return decorator
|
|
131
|
+
|
|
132
|
+
@classmethod
|
|
133
|
+
def get_type(cls, operation_type: str) -> type[ModelPayloadHttp]:
|
|
134
|
+
"""Get the payload model class for a given operation type.
|
|
135
|
+
|
|
136
|
+
Args:
|
|
137
|
+
operation_type: The operation type identifier.
|
|
138
|
+
|
|
139
|
+
Returns:
|
|
140
|
+
The registered payload model class.
|
|
141
|
+
|
|
142
|
+
Raises:
|
|
143
|
+
KeyError: If operation_type is not registered.
|
|
144
|
+
|
|
145
|
+
Example:
|
|
146
|
+
payload_cls = RegistryPayloadHttp.get_type("get")
|
|
147
|
+
payload = payload_cls.model_validate({"operation_type": "get", ...})
|
|
148
|
+
"""
|
|
149
|
+
if operation_type not in cls._types:
|
|
150
|
+
registered = ", ".join(sorted(cls._types.keys())) or "(none)"
|
|
151
|
+
raise KeyError(
|
|
152
|
+
f"Unknown HTTP operation_type '{operation_type}'. "
|
|
153
|
+
f"Registered types: {registered}"
|
|
154
|
+
)
|
|
155
|
+
return cls._types[operation_type]
|
|
156
|
+
|
|
157
|
+
@classmethod
|
|
158
|
+
def get_all_types(cls) -> dict[str, type[ModelPayloadHttp]]:
|
|
159
|
+
"""Get all registered HTTP payload types.
|
|
160
|
+
|
|
161
|
+
Returns:
|
|
162
|
+
Dict mapping operation_type strings to payload model classes.
|
|
163
|
+
|
|
164
|
+
Example:
|
|
165
|
+
all_types = RegistryPayloadHttp.get_all_types()
|
|
166
|
+
for op_type, payload_cls in all_types.items():
|
|
167
|
+
print(f"{op_type}: {payload_cls.__name__}")
|
|
168
|
+
"""
|
|
169
|
+
return dict(cls._types)
|
|
170
|
+
|
|
171
|
+
@classmethod
|
|
172
|
+
def is_registered(cls, operation_type: str) -> bool:
|
|
173
|
+
"""Check if an operation type is registered.
|
|
174
|
+
|
|
175
|
+
Args:
|
|
176
|
+
operation_type: The operation type identifier.
|
|
177
|
+
|
|
178
|
+
Returns:
|
|
179
|
+
True if registered, False otherwise.
|
|
180
|
+
|
|
181
|
+
Example:
|
|
182
|
+
if RegistryPayloadHttp.is_registered("get"):
|
|
183
|
+
payload_cls = RegistryPayloadHttp.get_type("get")
|
|
184
|
+
"""
|
|
185
|
+
return operation_type in cls._types
|
|
186
|
+
|
|
187
|
+
@classmethod
|
|
188
|
+
def clear(cls) -> None:
|
|
189
|
+
"""Clear all registered types.
|
|
190
|
+
|
|
191
|
+
Warning:
|
|
192
|
+
This method is intended for **testing purposes only**.
|
|
193
|
+
Calling it in production code will emit a warning.
|
|
194
|
+
It breaks the immutability guarantee after startup.
|
|
195
|
+
|
|
196
|
+
Thread Safety:
|
|
197
|
+
This method is protected by the class-level lock to ensure
|
|
198
|
+
thread-safe clearing of the registry.
|
|
199
|
+
"""
|
|
200
|
+
warnings.warn(
|
|
201
|
+
"RegistryPayloadHttp.clear() is intended for testing only. "
|
|
202
|
+
"Do not use in production code.",
|
|
203
|
+
UserWarning,
|
|
204
|
+
stacklevel=2,
|
|
205
|
+
)
|
|
206
|
+
with cls._lock:
|
|
207
|
+
cls._types.clear()
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
__all__ = [
|
|
211
|
+
"RegistryPayloadHttp", # HTTP payload registry
|
|
212
|
+
]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""MCP handler models for Model Context Protocol integration."""
|
|
4
|
+
|
|
5
|
+
from omnibase_infra.handlers.models.mcp.enum_mcp_operation_type import (
|
|
6
|
+
EnumMcpOperationType,
|
|
7
|
+
)
|
|
8
|
+
from omnibase_infra.handlers.models.mcp.model_mcp_handler_config import (
|
|
9
|
+
ModelMcpHandlerConfig,
|
|
10
|
+
)
|
|
11
|
+
from omnibase_infra.handlers.models.mcp.model_mcp_tool_call import (
|
|
12
|
+
ModelMcpToolCall,
|
|
13
|
+
)
|
|
14
|
+
from omnibase_infra.handlers.models.mcp.model_mcp_tool_result import (
|
|
15
|
+
ModelMcpToolResult,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
__all__ = [
|
|
19
|
+
"EnumMcpOperationType",
|
|
20
|
+
"ModelMcpHandlerConfig",
|
|
21
|
+
"ModelMcpToolCall",
|
|
22
|
+
"ModelMcpToolResult",
|
|
23
|
+
]
|