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,192 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Runtime Models Module.
|
|
4
|
+
|
|
5
|
+
This module exports Pydantic models for runtime configuration and events.
|
|
6
|
+
All models are strongly typed to eliminate Any usage.
|
|
7
|
+
|
|
8
|
+
Exports:
|
|
9
|
+
ModelComputeKey: Strongly-typed compute registry key model
|
|
10
|
+
ModelComputeRegistration: Compute plugin registration parameters model
|
|
11
|
+
ModelConfigRef: Parsed configuration reference (file, env, vault)
|
|
12
|
+
ModelConfigRefParseResult: Result of parsing a config reference
|
|
13
|
+
EnumConfigRefScheme: Supported config reference schemes
|
|
14
|
+
ModelDomainPluginConfig: Configuration for domain plugin lifecycle hooks
|
|
15
|
+
ModelDomainPluginResult: Result of domain plugin lifecycle operations
|
|
16
|
+
ModelEventBusConfig: Event bus configuration model
|
|
17
|
+
ModelEnabledProtocolsConfig: Enabled protocols configuration model
|
|
18
|
+
ModelProtocolRegistrationConfig: Individual protocol registration config model
|
|
19
|
+
ModelLoggingConfig: Logging configuration model
|
|
20
|
+
ModelShutdownConfig: Shutdown configuration model
|
|
21
|
+
ModelRuntimeConfig: Top-level runtime configuration model
|
|
22
|
+
ModelRuntimeSchedulerConfig: Runtime tick scheduler configuration model
|
|
23
|
+
ModelRuntimeSchedulerMetrics: Runtime scheduler metrics model
|
|
24
|
+
ModelOptionalString: Wrapper for optional string values
|
|
25
|
+
ModelOptionalUUID: Wrapper for optional UUID values
|
|
26
|
+
ModelOptionalCorrelationId: Wrapper for optional correlation ID values
|
|
27
|
+
ModelPolicyTypeFilter: Wrapper for policy type filter values
|
|
28
|
+
ModelPolicyContext: Structured context model for policy evaluation
|
|
29
|
+
ModelPolicyResult: Structured result model for policy decisions
|
|
30
|
+
ModelPolicyRegistration: Policy registration parameters model
|
|
31
|
+
ModelPolicyKey: Strongly-typed policy registry key model
|
|
32
|
+
ModelRuntimeTick: Infrastructure event emitted by runtime scheduler
|
|
33
|
+
ModelDuplicateResponse: Response for duplicate message detection
|
|
34
|
+
ModelLifecycleResult: Result of individual handler lifecycle operation
|
|
35
|
+
ModelBatchLifecycleResult: Result of batch handler lifecycle operations
|
|
36
|
+
ModelFailedComponent: Represents a component that failed during shutdown
|
|
37
|
+
ModelShutdownBatchResult: Result of batch shutdown operation
|
|
38
|
+
ModelHealthCheckResult: Result of component health check operation
|
|
39
|
+
ModelHealthCheckResponse: HTTP response model for health check endpoints
|
|
40
|
+
ModelProjectorPluginLoaderConfig: Projector plugin loader configuration model
|
|
41
|
+
ModelSecretSourceSpec: Source specification for a single secret
|
|
42
|
+
SecretSourceType: Type alias for secret source types (env, vault, file)
|
|
43
|
+
ModelSecretMapping: Mapping from logical name to source specification
|
|
44
|
+
ModelSecretResolverConfig: Configuration for SecretResolver
|
|
45
|
+
ModelCachedSecret: Cached secret with TTL tracking
|
|
46
|
+
ModelSecretCacheStats: Cache statistics for observability
|
|
47
|
+
ModelSecretResolverMetrics: Resolution metrics for observability
|
|
48
|
+
ModelSecretSourceInfo: Non-sensitive source information for introspection
|
|
49
|
+
ModelRetryPolicy: Retry policy configuration for handler operations
|
|
50
|
+
ModelBindingConfig: Configuration for binding a handler to the runtime
|
|
51
|
+
ModelBindingConfigCacheStats: Cache statistics for BindingConfigResolver
|
|
52
|
+
ModelBindingConfigResolverConfig: Configuration for BindingConfigResolver
|
|
53
|
+
ModelConfigCacheEntry: Internal cache entry for BindingConfigResolver
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
from omnibase_infra.runtime.enums.enum_config_ref_scheme import EnumConfigRefScheme
|
|
57
|
+
from omnibase_infra.runtime.models.model_batch_lifecycle_result import (
|
|
58
|
+
ModelBatchLifecycleResult,
|
|
59
|
+
)
|
|
60
|
+
from omnibase_infra.runtime.models.model_binding_config import ModelBindingConfig
|
|
61
|
+
from omnibase_infra.runtime.models.model_binding_config_cache_stats import (
|
|
62
|
+
ModelBindingConfigCacheStats,
|
|
63
|
+
)
|
|
64
|
+
from omnibase_infra.runtime.models.model_binding_config_resolver_config import (
|
|
65
|
+
ModelBindingConfigResolverConfig,
|
|
66
|
+
)
|
|
67
|
+
from omnibase_infra.runtime.models.model_cached_secret import ModelCachedSecret
|
|
68
|
+
from omnibase_infra.runtime.models.model_compute_key import ModelComputeKey
|
|
69
|
+
from omnibase_infra.runtime.models.model_compute_registration import (
|
|
70
|
+
ModelComputeRegistration,
|
|
71
|
+
)
|
|
72
|
+
from omnibase_infra.runtime.models.model_config_cache_entry import ModelConfigCacheEntry
|
|
73
|
+
from omnibase_infra.runtime.models.model_config_ref import ModelConfigRef
|
|
74
|
+
from omnibase_infra.runtime.models.model_config_ref_parse_result import (
|
|
75
|
+
ModelConfigRefParseResult,
|
|
76
|
+
)
|
|
77
|
+
from omnibase_infra.runtime.models.model_domain_plugin_config import (
|
|
78
|
+
ModelDomainPluginConfig,
|
|
79
|
+
)
|
|
80
|
+
from omnibase_infra.runtime.models.model_domain_plugin_result import (
|
|
81
|
+
ModelDomainPluginResult,
|
|
82
|
+
)
|
|
83
|
+
from omnibase_infra.runtime.models.model_duplicate_response import (
|
|
84
|
+
ModelDuplicateResponse,
|
|
85
|
+
)
|
|
86
|
+
from omnibase_infra.runtime.models.model_enabled_protocols_config import (
|
|
87
|
+
ModelEnabledProtocolsConfig,
|
|
88
|
+
)
|
|
89
|
+
from omnibase_infra.runtime.models.model_event_bus_config import ModelEventBusConfig
|
|
90
|
+
from omnibase_infra.runtime.models.model_failed_component import ModelFailedComponent
|
|
91
|
+
from omnibase_infra.runtime.models.model_health_check_response import (
|
|
92
|
+
ModelHealthCheckResponse,
|
|
93
|
+
)
|
|
94
|
+
from omnibase_infra.runtime.models.model_health_check_result import (
|
|
95
|
+
ModelHealthCheckResult,
|
|
96
|
+
)
|
|
97
|
+
from omnibase_infra.runtime.models.model_lifecycle_result import (
|
|
98
|
+
ModelLifecycleResult,
|
|
99
|
+
)
|
|
100
|
+
from omnibase_infra.runtime.models.model_logging_config import ModelLoggingConfig
|
|
101
|
+
from omnibase_infra.runtime.models.model_optional_correlation_id import (
|
|
102
|
+
ModelOptionalCorrelationId,
|
|
103
|
+
)
|
|
104
|
+
from omnibase_infra.runtime.models.model_optional_string import ModelOptionalString
|
|
105
|
+
from omnibase_infra.runtime.models.model_optional_uuid import ModelOptionalUUID
|
|
106
|
+
from omnibase_infra.runtime.models.model_policy_context import ModelPolicyContext
|
|
107
|
+
from omnibase_infra.runtime.models.model_policy_key import ModelPolicyKey
|
|
108
|
+
from omnibase_infra.runtime.models.model_policy_registration import (
|
|
109
|
+
ModelPolicyRegistration,
|
|
110
|
+
)
|
|
111
|
+
from omnibase_infra.runtime.models.model_policy_result import ModelPolicyResult
|
|
112
|
+
from omnibase_infra.runtime.models.model_policy_type_filter import ModelPolicyTypeFilter
|
|
113
|
+
from omnibase_infra.runtime.models.model_projector_plugin_loader_config import (
|
|
114
|
+
ModelProjectorPluginLoaderConfig,
|
|
115
|
+
)
|
|
116
|
+
from omnibase_infra.runtime.models.model_protocol_registration_config import (
|
|
117
|
+
ModelProtocolRegistrationConfig,
|
|
118
|
+
)
|
|
119
|
+
from omnibase_infra.runtime.models.model_retry_policy import ModelRetryPolicy
|
|
120
|
+
from omnibase_infra.runtime.models.model_runtime_config import ModelRuntimeConfig
|
|
121
|
+
from omnibase_infra.runtime.models.model_runtime_scheduler_config import (
|
|
122
|
+
ModelRuntimeSchedulerConfig,
|
|
123
|
+
)
|
|
124
|
+
from omnibase_infra.runtime.models.model_runtime_scheduler_metrics import (
|
|
125
|
+
ModelRuntimeSchedulerMetrics,
|
|
126
|
+
)
|
|
127
|
+
from omnibase_infra.runtime.models.model_runtime_tick import ModelRuntimeTick
|
|
128
|
+
from omnibase_infra.runtime.models.model_secret_cache_stats import ModelSecretCacheStats
|
|
129
|
+
from omnibase_infra.runtime.models.model_secret_mapping import ModelSecretMapping
|
|
130
|
+
from omnibase_infra.runtime.models.model_secret_resolver_config import (
|
|
131
|
+
ModelSecretResolverConfig,
|
|
132
|
+
)
|
|
133
|
+
from omnibase_infra.runtime.models.model_secret_resolver_metrics import (
|
|
134
|
+
ModelSecretResolverMetrics,
|
|
135
|
+
)
|
|
136
|
+
from omnibase_infra.runtime.models.model_secret_source_info import ModelSecretSourceInfo
|
|
137
|
+
from omnibase_infra.runtime.models.model_secret_source_spec import (
|
|
138
|
+
ModelSecretSourceSpec,
|
|
139
|
+
SecretSourceType,
|
|
140
|
+
)
|
|
141
|
+
from omnibase_infra.runtime.models.model_shutdown_batch_result import (
|
|
142
|
+
ModelShutdownBatchResult,
|
|
143
|
+
)
|
|
144
|
+
from omnibase_infra.runtime.models.model_shutdown_config import ModelShutdownConfig
|
|
145
|
+
|
|
146
|
+
__all__: list[str] = [
|
|
147
|
+
"EnumConfigRefScheme",
|
|
148
|
+
"ModelBatchLifecycleResult",
|
|
149
|
+
"ModelBindingConfig",
|
|
150
|
+
"ModelBindingConfigCacheStats",
|
|
151
|
+
"ModelBindingConfigResolverConfig",
|
|
152
|
+
"ModelCachedSecret",
|
|
153
|
+
"ModelComputeKey",
|
|
154
|
+
"ModelComputeRegistration",
|
|
155
|
+
"ModelConfigCacheEntry",
|
|
156
|
+
"ModelConfigRef",
|
|
157
|
+
"ModelConfigRefParseResult",
|
|
158
|
+
"ModelDomainPluginConfig",
|
|
159
|
+
"ModelDomainPluginResult",
|
|
160
|
+
"ModelDuplicateResponse",
|
|
161
|
+
"ModelEnabledProtocolsConfig",
|
|
162
|
+
"ModelEventBusConfig",
|
|
163
|
+
"ModelFailedComponent",
|
|
164
|
+
"ModelHealthCheckResponse",
|
|
165
|
+
"ModelHealthCheckResult",
|
|
166
|
+
"ModelLifecycleResult",
|
|
167
|
+
"ModelLoggingConfig",
|
|
168
|
+
"ModelOptionalCorrelationId",
|
|
169
|
+
"ModelOptionalString",
|
|
170
|
+
"ModelOptionalUUID",
|
|
171
|
+
"ModelPolicyContext",
|
|
172
|
+
"ModelPolicyKey",
|
|
173
|
+
"ModelPolicyRegistration",
|
|
174
|
+
"ModelPolicyResult",
|
|
175
|
+
"ModelPolicyTypeFilter",
|
|
176
|
+
"ModelProjectorPluginLoaderConfig",
|
|
177
|
+
"ModelProtocolRegistrationConfig",
|
|
178
|
+
"ModelRetryPolicy",
|
|
179
|
+
"ModelRuntimeConfig",
|
|
180
|
+
"ModelRuntimeSchedulerConfig",
|
|
181
|
+
"ModelRuntimeSchedulerMetrics",
|
|
182
|
+
"ModelRuntimeTick",
|
|
183
|
+
"ModelSecretCacheStats",
|
|
184
|
+
"ModelSecretMapping",
|
|
185
|
+
"ModelSecretResolverConfig",
|
|
186
|
+
"ModelSecretResolverMetrics",
|
|
187
|
+
"ModelSecretSourceInfo",
|
|
188
|
+
"ModelSecretSourceSpec",
|
|
189
|
+
"ModelShutdownBatchResult",
|
|
190
|
+
"ModelShutdownConfig",
|
|
191
|
+
"SecretSourceType",
|
|
192
|
+
]
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Batch Lifecycle Result Model for handler batch shutdown operations.
|
|
4
|
+
|
|
5
|
+
This module provides the ModelBatchLifecycleResult class for representing the
|
|
6
|
+
aggregate outcome of batch handler lifecycle operations (e.g., shutdown_handlers_by_priority).
|
|
7
|
+
|
|
8
|
+
Design Pattern:
|
|
9
|
+
ModelBatchLifecycleResult replaces tuple[list[str], list[tuple[str, str | None]]]
|
|
10
|
+
returns with a strongly-typed model that provides:
|
|
11
|
+
- Clear separation of succeeded and failed results
|
|
12
|
+
- Convenient helper methods for common queries
|
|
13
|
+
- Full traceability via ModelLifecycleResult for each handler
|
|
14
|
+
|
|
15
|
+
Thread Safety:
|
|
16
|
+
ModelBatchLifecycleResult is immutable (frozen=True) after creation,
|
|
17
|
+
making it thread-safe for concurrent read access.
|
|
18
|
+
|
|
19
|
+
Example:
|
|
20
|
+
>>> from omnibase_infra.runtime.models import (
|
|
21
|
+
... ModelBatchLifecycleResult,
|
|
22
|
+
... ModelLifecycleResult,
|
|
23
|
+
... )
|
|
24
|
+
>>>
|
|
25
|
+
>>> # Create batch result from individual results
|
|
26
|
+
>>> results = [
|
|
27
|
+
... ModelLifecycleResult.succeeded("kafka"),
|
|
28
|
+
... ModelLifecycleResult.succeeded("consul"),
|
|
29
|
+
... ModelLifecycleResult.failed("db", "Timeout"),
|
|
30
|
+
... ]
|
|
31
|
+
>>> batch = ModelBatchLifecycleResult.from_results(results)
|
|
32
|
+
>>> batch.total_count
|
|
33
|
+
3
|
|
34
|
+
>>> batch.success_count
|
|
35
|
+
2
|
|
36
|
+
>>> batch.failure_count
|
|
37
|
+
1
|
|
38
|
+
>>> batch.all_succeeded
|
|
39
|
+
False
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
43
|
+
|
|
44
|
+
from omnibase_infra.runtime.models.model_lifecycle_result import ModelLifecycleResult
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class ModelBatchLifecycleResult(BaseModel):
|
|
48
|
+
"""Result of a batch handler lifecycle operation (e.g., shutdown_handlers_by_priority).
|
|
49
|
+
|
|
50
|
+
Provides a strongly-typed replacement for tuple[list[str], list[tuple[str, str | None]]]
|
|
51
|
+
with clear separation of succeeded/failed handlers and helper methods.
|
|
52
|
+
|
|
53
|
+
Attributes:
|
|
54
|
+
results: List of all lifecycle results (both successes and failures).
|
|
55
|
+
succeeded_handlers: List of handler types that completed successfully.
|
|
56
|
+
failed_handlers: List of ModelLifecycleResult for handlers that failed.
|
|
57
|
+
|
|
58
|
+
Example:
|
|
59
|
+
>>> batch = ModelBatchLifecycleResult(
|
|
60
|
+
... results=[
|
|
61
|
+
... ModelLifecycleResult.succeeded("kafka"),
|
|
62
|
+
... ModelLifecycleResult.failed("db", "Timeout"),
|
|
63
|
+
... ],
|
|
64
|
+
... succeeded_handlers=["kafka"],
|
|
65
|
+
... failed_handlers=[ModelLifecycleResult.failed("db", "Timeout")],
|
|
66
|
+
... )
|
|
67
|
+
>>> batch.has_failures
|
|
68
|
+
True
|
|
69
|
+
>>> batch.success_count
|
|
70
|
+
1
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
model_config = ConfigDict(
|
|
74
|
+
strict=True,
|
|
75
|
+
frozen=True,
|
|
76
|
+
extra="forbid",
|
|
77
|
+
from_attributes=True,
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
results: list[ModelLifecycleResult] = Field(
|
|
81
|
+
default_factory=list,
|
|
82
|
+
description="All lifecycle results in execution order.",
|
|
83
|
+
)
|
|
84
|
+
succeeded_handlers: list[str] = Field(
|
|
85
|
+
default_factory=list,
|
|
86
|
+
description="Handler types that completed successfully.",
|
|
87
|
+
)
|
|
88
|
+
failed_handlers: list[ModelLifecycleResult] = Field(
|
|
89
|
+
default_factory=list,
|
|
90
|
+
description="Lifecycle results for handlers that failed.",
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
@classmethod
|
|
94
|
+
def from_results(
|
|
95
|
+
cls, results: list[ModelLifecycleResult]
|
|
96
|
+
) -> "ModelBatchLifecycleResult":
|
|
97
|
+
"""Create a batch result from a list of individual lifecycle results.
|
|
98
|
+
|
|
99
|
+
Automatically separates succeeded and failed handlers.
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
results: List of individual ModelLifecycleResult instances.
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
ModelBatchLifecycleResult with succeeded/failed handlers categorized.
|
|
106
|
+
|
|
107
|
+
Example:
|
|
108
|
+
>>> results = [
|
|
109
|
+
... ModelLifecycleResult.succeeded("kafka"),
|
|
110
|
+
... ModelLifecycleResult.failed("db", "Error"),
|
|
111
|
+
... ]
|
|
112
|
+
>>> batch = ModelBatchLifecycleResult.from_results(results)
|
|
113
|
+
>>> batch.succeeded_handlers
|
|
114
|
+
['kafka']
|
|
115
|
+
"""
|
|
116
|
+
succeeded = [r.handler_type for r in results if r.success]
|
|
117
|
+
failed = [r for r in results if not r.success]
|
|
118
|
+
return cls(
|
|
119
|
+
results=results,
|
|
120
|
+
succeeded_handlers=succeeded,
|
|
121
|
+
failed_handlers=failed,
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
@classmethod
|
|
125
|
+
def empty(cls) -> "ModelBatchLifecycleResult":
|
|
126
|
+
"""Create an empty batch result (no handlers processed).
|
|
127
|
+
|
|
128
|
+
Returns:
|
|
129
|
+
Empty ModelBatchLifecycleResult.
|
|
130
|
+
|
|
131
|
+
Example:
|
|
132
|
+
>>> batch = ModelBatchLifecycleResult.empty()
|
|
133
|
+
>>> batch.total_count
|
|
134
|
+
0
|
|
135
|
+
"""
|
|
136
|
+
return cls(results=[], succeeded_handlers=[], failed_handlers=[])
|
|
137
|
+
|
|
138
|
+
@property
|
|
139
|
+
def total_count(self) -> int:
|
|
140
|
+
"""Return total number of handlers processed.
|
|
141
|
+
|
|
142
|
+
Returns:
|
|
143
|
+
Count of all handlers (succeeded + failed).
|
|
144
|
+
"""
|
|
145
|
+
return len(self.results)
|
|
146
|
+
|
|
147
|
+
@property
|
|
148
|
+
def success_count(self) -> int:
|
|
149
|
+
"""Return number of handlers that succeeded.
|
|
150
|
+
|
|
151
|
+
Returns:
|
|
152
|
+
Count of successfully completed handlers.
|
|
153
|
+
"""
|
|
154
|
+
return len(self.succeeded_handlers)
|
|
155
|
+
|
|
156
|
+
@property
|
|
157
|
+
def failure_count(self) -> int:
|
|
158
|
+
"""Return number of handlers that failed.
|
|
159
|
+
|
|
160
|
+
Returns:
|
|
161
|
+
Count of failed handlers.
|
|
162
|
+
"""
|
|
163
|
+
return len(self.failed_handlers)
|
|
164
|
+
|
|
165
|
+
@property
|
|
166
|
+
def all_succeeded(self) -> bool:
|
|
167
|
+
"""Check if all handlers completed successfully.
|
|
168
|
+
|
|
169
|
+
Returns:
|
|
170
|
+
True if no failures occurred, False otherwise.
|
|
171
|
+
"""
|
|
172
|
+
return len(self.failed_handlers) == 0 and len(self.results) > 0
|
|
173
|
+
|
|
174
|
+
@property
|
|
175
|
+
def has_failures(self) -> bool:
|
|
176
|
+
"""Check if any handlers failed.
|
|
177
|
+
|
|
178
|
+
Returns:
|
|
179
|
+
True if at least one handler failed, False otherwise.
|
|
180
|
+
"""
|
|
181
|
+
return len(self.failed_handlers) > 0
|
|
182
|
+
|
|
183
|
+
def get_failure_messages(self) -> dict[str, str]:
|
|
184
|
+
"""Get a mapping of failed handler types to their error messages.
|
|
185
|
+
|
|
186
|
+
Note:
|
|
187
|
+
All failed handlers have non-empty error messages since
|
|
188
|
+
ModelLifecycleResult.failed() requires a non-empty error_message.
|
|
189
|
+
|
|
190
|
+
Returns:
|
|
191
|
+
Dict mapping handler_type to error_message for all failures.
|
|
192
|
+
|
|
193
|
+
Example:
|
|
194
|
+
>>> batch = ModelBatchLifecycleResult.from_results([
|
|
195
|
+
... ModelLifecycleResult.failed("db", "Timeout"),
|
|
196
|
+
... ModelLifecycleResult.failed("cache", "Connection refused"),
|
|
197
|
+
... ])
|
|
198
|
+
>>> batch.get_failure_messages()
|
|
199
|
+
{'db': 'Timeout', 'cache': 'Connection refused'}
|
|
200
|
+
"""
|
|
201
|
+
return {r.handler_type: r.error_message for r in self.failed_handlers}
|
|
202
|
+
|
|
203
|
+
def __str__(self) -> str:
|
|
204
|
+
"""Return a human-readable string representation for debugging.
|
|
205
|
+
|
|
206
|
+
Returns:
|
|
207
|
+
String format showing succeeded and failed counts.
|
|
208
|
+
"""
|
|
209
|
+
return (
|
|
210
|
+
f"ModelBatchLifecycleResult("
|
|
211
|
+
f"total={self.total_count}, "
|
|
212
|
+
f"succeeded={self.success_count}, "
|
|
213
|
+
f"failed={self.failure_count})"
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
__all__ = ["ModelBatchLifecycleResult"]
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Binding configuration model for BindingConfigResolver.
|
|
4
|
+
|
|
5
|
+
.. versionadded:: 0.8.0
|
|
6
|
+
Initial implementation for OMN-765.
|
|
7
|
+
|
|
8
|
+
This module provides the configuration model for handler bindings used
|
|
9
|
+
by BindingConfigResolver.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
15
|
+
|
|
16
|
+
from omnibase_core.types import JsonType
|
|
17
|
+
from omnibase_infra.runtime.models.model_retry_policy import ModelRetryPolicy
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class ModelBindingConfig(BaseModel):
|
|
21
|
+
"""Configuration for binding a handler to the runtime.
|
|
22
|
+
|
|
23
|
+
Defines how a specific handler is configured, including its operational
|
|
24
|
+
parameters, retry behavior, and optional external configuration references.
|
|
25
|
+
|
|
26
|
+
Attributes:
|
|
27
|
+
handler_type: Handler type identifier (e.g., "vault", "db", "consul").
|
|
28
|
+
Used for handler discovery and routing.
|
|
29
|
+
name: Optional display name for the handler. Defaults to handler_type
|
|
30
|
+
if not specified.
|
|
31
|
+
enabled: Whether the handler is active. Disabled handlers are not loaded.
|
|
32
|
+
priority: Execution priority for handler ordering. Higher values execute
|
|
33
|
+
first. Use negative values to ensure late execution.
|
|
34
|
+
config_ref: Reference to external configuration. Supported schemes:
|
|
35
|
+
- "file:configs/handler.yaml" - File path (preferred format)
|
|
36
|
+
- "file:/absolute/path/config.yaml" - Absolute file path
|
|
37
|
+
- "env:CONFIG_VAR" - Load from environment variable
|
|
38
|
+
- "vault:secret/data/path" - Load from Vault secret
|
|
39
|
+
- "vault:secret/data/path#field" - Load specific field from Vault secret
|
|
40
|
+
Note: file:// prefix is also supported for backwards compatibility.
|
|
41
|
+
config: Inline configuration dictionary. If both config_ref and config
|
|
42
|
+
are provided, config takes precedence for overlapping keys.
|
|
43
|
+
retry_policy: Retry configuration for transient failures.
|
|
44
|
+
timeout_ms: Operation timeout in milliseconds. Applies to individual
|
|
45
|
+
handler operations, not total request time.
|
|
46
|
+
rate_limit_per_second: Maximum operations per second. None means no limit.
|
|
47
|
+
|
|
48
|
+
Example:
|
|
49
|
+
>>> config = ModelBindingConfig(
|
|
50
|
+
... handler_type="db",
|
|
51
|
+
... name="primary-postgres",
|
|
52
|
+
... priority=10,
|
|
53
|
+
... timeout_ms=5000,
|
|
54
|
+
... retry_policy=ModelRetryPolicy(max_retries=5),
|
|
55
|
+
... rate_limit_per_second=100.0,
|
|
56
|
+
... )
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
model_config = ConfigDict(
|
|
60
|
+
strict=True,
|
|
61
|
+
frozen=True,
|
|
62
|
+
extra="forbid",
|
|
63
|
+
from_attributes=True,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
handler_type: str = Field(
|
|
67
|
+
...,
|
|
68
|
+
min_length=1,
|
|
69
|
+
max_length=64,
|
|
70
|
+
description="Handler type identifier (e.g., 'vault', 'db', 'consul'). "
|
|
71
|
+
"Must be non-empty and match a registered handler implementation.",
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
name: str | None = Field(
|
|
75
|
+
default=None,
|
|
76
|
+
min_length=1,
|
|
77
|
+
max_length=128,
|
|
78
|
+
description="Optional display name for the handler. "
|
|
79
|
+
"Defaults to handler_type if not specified.",
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
enabled: bool = Field(
|
|
83
|
+
default=True,
|
|
84
|
+
description="Whether this handler binding is active. "
|
|
85
|
+
"Disabled handlers are skipped during runtime initialization.",
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
priority: int = Field(
|
|
89
|
+
default=0,
|
|
90
|
+
ge=-100,
|
|
91
|
+
le=100,
|
|
92
|
+
description="Execution priority for handler ordering (-100 to 100). "
|
|
93
|
+
"Higher values execute first. Use 0 for default ordering.",
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
config_ref: str | None = Field(
|
|
97
|
+
default=None,
|
|
98
|
+
min_length=1,
|
|
99
|
+
max_length=512,
|
|
100
|
+
description="Reference to external configuration. "
|
|
101
|
+
"Supported schemes: file: (including file://), env:, vault:",
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
config: dict[str, JsonType] | None = Field(
|
|
105
|
+
default=None,
|
|
106
|
+
description="Inline configuration dictionary. "
|
|
107
|
+
"Takes precedence over config_ref for overlapping keys.",
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
retry_policy: ModelRetryPolicy | None = Field(
|
|
111
|
+
default=None,
|
|
112
|
+
description="Retry configuration for transient failures. "
|
|
113
|
+
"If not specified, handler uses its default retry behavior.",
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
timeout_ms: int = Field(
|
|
117
|
+
default=30000,
|
|
118
|
+
ge=100,
|
|
119
|
+
le=600000,
|
|
120
|
+
description="Operation timeout in milliseconds (100-600000). "
|
|
121
|
+
"Default 30s; max 10min for long-running operations.",
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
rate_limit_per_second: float | None = Field(
|
|
125
|
+
default=None,
|
|
126
|
+
ge=0.1,
|
|
127
|
+
le=10000.0,
|
|
128
|
+
description="Maximum operations per second (0.1-10000). "
|
|
129
|
+
"None means no rate limiting.",
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
@field_validator("config_ref")
|
|
133
|
+
@classmethod
|
|
134
|
+
def validate_config_ref_scheme(cls, v: str | None) -> str | None:
|
|
135
|
+
"""Validate that config_ref uses a supported scheme.
|
|
136
|
+
|
|
137
|
+
Args:
|
|
138
|
+
v: The config_ref value to validate.
|
|
139
|
+
|
|
140
|
+
Returns:
|
|
141
|
+
The validated config_ref value.
|
|
142
|
+
|
|
143
|
+
Raises:
|
|
144
|
+
ValueError: If config_ref uses an unsupported scheme.
|
|
145
|
+
"""
|
|
146
|
+
if v is None:
|
|
147
|
+
return v
|
|
148
|
+
|
|
149
|
+
# Use "file:" to accept both "file://path" and shorthand "file:path" formats
|
|
150
|
+
supported_schemes = ("file:", "env:", "vault:")
|
|
151
|
+
if not any(v.startswith(scheme) for scheme in supported_schemes):
|
|
152
|
+
raise ValueError(
|
|
153
|
+
f"config_ref must start with one of {supported_schemes}, got: {v!r}"
|
|
154
|
+
)
|
|
155
|
+
return v
|
|
156
|
+
|
|
157
|
+
def get_effective_name(self) -> str:
|
|
158
|
+
"""Get the effective name for this handler binding.
|
|
159
|
+
|
|
160
|
+
Returns:
|
|
161
|
+
The name field if set, otherwise the handler_type.
|
|
162
|
+
"""
|
|
163
|
+
return self.name if self.name is not None else self.handler_type
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
__all__: list[str] = [
|
|
167
|
+
"ModelBindingConfig",
|
|
168
|
+
]
|