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,81 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Consul Handler Models Package.
|
|
4
|
+
|
|
5
|
+
This package provides strongly-typed Pydantic models for Consul handler response payloads.
|
|
6
|
+
Each Consul operation has a dedicated payload model with a discriminator field for
|
|
7
|
+
type-safe union handling.
|
|
8
|
+
|
|
9
|
+
Payload Types:
|
|
10
|
+
- ModelConsulKVGetFoundPayload: Single key found in KV store
|
|
11
|
+
- ModelConsulKVGetNotFoundPayload: Key not found in KV store
|
|
12
|
+
- ModelConsulKVGetRecursePayload: Recursive key listing from KV store
|
|
13
|
+
- ModelConsulKVPutPayload: KV put operation result
|
|
14
|
+
- ModelConsulRegisterPayload: Service registration result
|
|
15
|
+
- ModelConsulDeregisterPayload: Service deregistration result
|
|
16
|
+
|
|
17
|
+
Union Type:
|
|
18
|
+
ConsulPayload: Discriminated union of all payload types using operation_type field
|
|
19
|
+
|
|
20
|
+
Registry-Based Alternative (OMN-1007):
|
|
21
|
+
- ModelPayloadConsul: Base model for all Consul handler payloads
|
|
22
|
+
- RegistryPayloadConsul: Decorator-based registry for payload type discovery
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
from omnibase_infra.handlers.models.consul.enum_consul_operation_type import (
|
|
26
|
+
EnumConsulOperationType,
|
|
27
|
+
)
|
|
28
|
+
from omnibase_infra.handlers.models.consul.model_consul_deregister_payload import (
|
|
29
|
+
ModelConsulDeregisterPayload,
|
|
30
|
+
)
|
|
31
|
+
from omnibase_infra.handlers.models.consul.model_consul_handler_config import (
|
|
32
|
+
ModelConsulHandlerConfig,
|
|
33
|
+
)
|
|
34
|
+
from omnibase_infra.handlers.models.consul.model_consul_handler_payload import (
|
|
35
|
+
ConsulPayload,
|
|
36
|
+
ModelConsulHandlerPayload,
|
|
37
|
+
)
|
|
38
|
+
from omnibase_infra.handlers.models.consul.model_consul_kv_get_found_payload import (
|
|
39
|
+
ModelConsulKVGetFoundPayload,
|
|
40
|
+
)
|
|
41
|
+
from omnibase_infra.handlers.models.consul.model_consul_kv_get_not_found_payload import (
|
|
42
|
+
ModelConsulKVGetNotFoundPayload,
|
|
43
|
+
)
|
|
44
|
+
from omnibase_infra.handlers.models.consul.model_consul_kv_get_recurse_payload import (
|
|
45
|
+
ModelConsulKVGetRecursePayload,
|
|
46
|
+
)
|
|
47
|
+
from omnibase_infra.handlers.models.consul.model_consul_kv_item import (
|
|
48
|
+
ModelConsulKVItem,
|
|
49
|
+
)
|
|
50
|
+
from omnibase_infra.handlers.models.consul.model_consul_kv_put_payload import (
|
|
51
|
+
ModelConsulKVPutPayload,
|
|
52
|
+
)
|
|
53
|
+
from omnibase_infra.handlers.models.consul.model_consul_register_payload import (
|
|
54
|
+
ModelConsulRegisterPayload,
|
|
55
|
+
)
|
|
56
|
+
from omnibase_infra.handlers.models.consul.model_consul_retry_config import (
|
|
57
|
+
ModelConsulRetryConfig,
|
|
58
|
+
)
|
|
59
|
+
from omnibase_infra.handlers.models.consul.model_payload_consul import (
|
|
60
|
+
ModelPayloadConsul,
|
|
61
|
+
)
|
|
62
|
+
from omnibase_infra.handlers.models.consul.registry_payload_consul import (
|
|
63
|
+
RegistryPayloadConsul,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
__all__: list[str] = [
|
|
67
|
+
"ConsulPayload",
|
|
68
|
+
"EnumConsulOperationType",
|
|
69
|
+
"ModelConsulDeregisterPayload",
|
|
70
|
+
"ModelConsulHandlerConfig",
|
|
71
|
+
"ModelConsulHandlerPayload",
|
|
72
|
+
"ModelConsulKVGetFoundPayload",
|
|
73
|
+
"ModelConsulKVGetNotFoundPayload",
|
|
74
|
+
"ModelConsulKVGetRecursePayload",
|
|
75
|
+
"ModelConsulKVItem",
|
|
76
|
+
"ModelConsulKVPutPayload",
|
|
77
|
+
"ModelConsulRegisterPayload",
|
|
78
|
+
"ModelConsulRetryConfig",
|
|
79
|
+
"ModelPayloadConsul",
|
|
80
|
+
"RegistryPayloadConsul",
|
|
81
|
+
]
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Consul Operation Type Enum.
|
|
4
|
+
|
|
5
|
+
This module provides the discriminator enum for Consul operation payload types.
|
|
6
|
+
Each operation type corresponds to a specific payload model in the discriminated union.
|
|
7
|
+
|
|
8
|
+
NOT_FOUND Response Pattern:
|
|
9
|
+
The ``KV_GET_NOT_FOUND`` variant represents a successful Consul KV lookup
|
|
10
|
+
where the requested key does not exist. This is distinct from error-based
|
|
11
|
+
NOT_FOUND handling:
|
|
12
|
+
|
|
13
|
+
- **Response variant (this enum)**: Used when key absence is a valid outcome.
|
|
14
|
+
The handler returns a ``KV_GET_NOT_FOUND`` response, allowing callers to
|
|
15
|
+
distinguish between "key exists with value" and "key does not exist"
|
|
16
|
+
without exception handling.
|
|
17
|
+
|
|
18
|
+
- **Error-based NOT_FOUND**: Used in ``SecretResolutionError`` when a
|
|
19
|
+
required resource is missing (exceptional condition). See ``infra_errors.py``
|
|
20
|
+
for error-based patterns.
|
|
21
|
+
|
|
22
|
+
Example usage for callers:
|
|
23
|
+
|
|
24
|
+
.. code-block:: python
|
|
25
|
+
|
|
26
|
+
result = await consul_handler.kv_get("config/my-key")
|
|
27
|
+
match result.operation_type:
|
|
28
|
+
case EnumConsulOperationType.KV_GET_FOUND:
|
|
29
|
+
return result.value
|
|
30
|
+
case EnumConsulOperationType.KV_GET_NOT_FOUND:
|
|
31
|
+
return default_config # Key doesn't exist, use default
|
|
32
|
+
|
|
33
|
+
This pattern allows callers to handle key absence as a normal control flow
|
|
34
|
+
case rather than an exception, which is appropriate for optional configuration
|
|
35
|
+
lookups or cache-style access patterns.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
from __future__ import annotations
|
|
39
|
+
|
|
40
|
+
from enum import Enum
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class EnumConsulOperationType(str, Enum):
|
|
44
|
+
"""Discriminator for Consul operation payload types.
|
|
45
|
+
|
|
46
|
+
Each operation type corresponds to a specific payload model.
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
KV_GET_FOUND = "kv_get_found"
|
|
50
|
+
KV_GET_NOT_FOUND = "kv_get_not_found"
|
|
51
|
+
KV_GET_RECURSE = "kv_get_recurse"
|
|
52
|
+
KV_PUT = "kv_put"
|
|
53
|
+
REGISTER = "register"
|
|
54
|
+
DEREGISTER = "deregister"
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
__all__: list[str] = ["EnumConsulOperationType"]
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Consul Deregister Payload Model.
|
|
4
|
+
|
|
5
|
+
This module provides the payload model for consul.deregister result.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import Literal
|
|
11
|
+
|
|
12
|
+
from pydantic import ConfigDict, Field
|
|
13
|
+
|
|
14
|
+
from omnibase_infra.handlers.models.consul.model_payload_consul import (
|
|
15
|
+
ModelPayloadConsul,
|
|
16
|
+
)
|
|
17
|
+
from omnibase_infra.handlers.models.consul.registry_payload_consul import (
|
|
18
|
+
RegistryPayloadConsul,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@RegistryPayloadConsul.register("deregister")
|
|
23
|
+
class ModelConsulDeregisterPayload(ModelPayloadConsul):
|
|
24
|
+
"""Payload for consul.deregister result.
|
|
25
|
+
|
|
26
|
+
Attributes:
|
|
27
|
+
operation_type: Discriminator literal "deregister".
|
|
28
|
+
deregistered: True if the service was deregistered successfully.
|
|
29
|
+
consul_service_id: The Consul service identifier that was deregistered.
|
|
30
|
+
|
|
31
|
+
Note:
|
|
32
|
+
consul_service_id is a Consul-specific identifier that is a user-defined string,
|
|
33
|
+
NOT a UUID. The Consul API accepts any string as a service ID. This field is
|
|
34
|
+
named with the 'consul_' prefix to avoid pattern validator warnings that expect
|
|
35
|
+
fields ending in '_id' to be UUIDs.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
model_config = ConfigDict(strict=True, frozen=True, extra="forbid")
|
|
39
|
+
|
|
40
|
+
operation_type: Literal["deregister"] = Field(
|
|
41
|
+
default="deregister", description="Discriminator for payload type"
|
|
42
|
+
)
|
|
43
|
+
deregistered: bool = Field(
|
|
44
|
+
description="True if the service was deregistered successfully"
|
|
45
|
+
)
|
|
46
|
+
consul_service_id: str = Field(
|
|
47
|
+
description="The Consul service identifier that was deregistered (user-defined string, not a UUID)"
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
__all__: list[str] = ["ModelConsulDeregisterPayload"]
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Consul Handler Configuration Model.
|
|
4
|
+
|
|
5
|
+
This module provides the Pydantic configuration model for HashiCorp Consul
|
|
6
|
+
handler initialization and operation.
|
|
7
|
+
|
|
8
|
+
Security Note:
|
|
9
|
+
The token field uses SecretStr to prevent accidental logging of
|
|
10
|
+
sensitive ACL tokens. Tokens should come from environment variables,
|
|
11
|
+
never from YAML configuration files.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
from typing import Literal
|
|
17
|
+
|
|
18
|
+
from pydantic import BaseModel, ConfigDict, Field, SecretStr
|
|
19
|
+
|
|
20
|
+
from omnibase_infra.handlers.models.consul.model_consul_retry_config import (
|
|
21
|
+
ModelConsulRetryConfig,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class ModelConsulHandlerConfig(BaseModel):
|
|
26
|
+
"""Configuration for HashiCorp Consul handler.
|
|
27
|
+
|
|
28
|
+
Security Policy:
|
|
29
|
+
- The token field uses SecretStr to prevent accidental logging
|
|
30
|
+
- ACL tokens should be provided via environment variables, not config files
|
|
31
|
+
- Never log or expose token values in error messages
|
|
32
|
+
- Use scheme="https" in production environments
|
|
33
|
+
|
|
34
|
+
Attributes:
|
|
35
|
+
host: Consul server hostname (default "localhost")
|
|
36
|
+
port: Consul server port (1-65535, default 8500)
|
|
37
|
+
scheme: HTTP scheme for connection (default "http")
|
|
38
|
+
token: Consul ACL token (SecretStr for security, optional)
|
|
39
|
+
timeout_seconds: Operation timeout in seconds (1.0-300.0, default 30.0)
|
|
40
|
+
connect_timeout_seconds: Connection timeout in seconds (1.0-60.0, default 10.0)
|
|
41
|
+
retry: Retry configuration with exponential backoff
|
|
42
|
+
health_check_interval_seconds: Interval for health checks (5.0-300.0, default 30.0)
|
|
43
|
+
datacenter: Consul datacenter for multi-datacenter deployments (optional)
|
|
44
|
+
|
|
45
|
+
Example:
|
|
46
|
+
>>> from pydantic import SecretStr
|
|
47
|
+
>>> config = ModelConsulHandlerConfig(
|
|
48
|
+
... host="consul.example.com",
|
|
49
|
+
... port=8500,
|
|
50
|
+
... scheme="https",
|
|
51
|
+
... token=SecretStr("acl-token-abc123"),
|
|
52
|
+
... datacenter="dc1",
|
|
53
|
+
... )
|
|
54
|
+
>>> # Token is protected from accidental logging
|
|
55
|
+
>>> print(config.token)
|
|
56
|
+
SecretStr('**********')
|
|
57
|
+
>>> # Base URL property
|
|
58
|
+
>>> print(config.base_url)
|
|
59
|
+
https://consul.example.com:8500
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
model_config = ConfigDict(
|
|
63
|
+
strict=True,
|
|
64
|
+
frozen=True,
|
|
65
|
+
extra="forbid",
|
|
66
|
+
from_attributes=True,
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
host: str = Field(
|
|
70
|
+
default="localhost",
|
|
71
|
+
min_length=1,
|
|
72
|
+
description="Consul server hostname",
|
|
73
|
+
)
|
|
74
|
+
port: int = Field(
|
|
75
|
+
default=8500,
|
|
76
|
+
ge=1,
|
|
77
|
+
le=65535,
|
|
78
|
+
description="Consul server port",
|
|
79
|
+
)
|
|
80
|
+
scheme: Literal["http", "https"] = Field(
|
|
81
|
+
default="http",
|
|
82
|
+
description="HTTP scheme for Consul connection",
|
|
83
|
+
)
|
|
84
|
+
token: SecretStr | None = Field(
|
|
85
|
+
default=None,
|
|
86
|
+
description="Consul ACL token protected from logging",
|
|
87
|
+
)
|
|
88
|
+
timeout_seconds: float = Field(
|
|
89
|
+
default=30.0,
|
|
90
|
+
ge=1.0,
|
|
91
|
+
le=300.0,
|
|
92
|
+
description="Maximum time allowed per operation",
|
|
93
|
+
)
|
|
94
|
+
connect_timeout_seconds: float = Field(
|
|
95
|
+
default=10.0,
|
|
96
|
+
ge=1.0,
|
|
97
|
+
le=60.0,
|
|
98
|
+
description="Maximum time allowed for connection establishment",
|
|
99
|
+
)
|
|
100
|
+
retry: ModelConsulRetryConfig = Field(
|
|
101
|
+
default_factory=ModelConsulRetryConfig,
|
|
102
|
+
description="Retry behavior for failed operations",
|
|
103
|
+
)
|
|
104
|
+
health_check_interval_seconds: float = Field(
|
|
105
|
+
default=30.0,
|
|
106
|
+
ge=5.0,
|
|
107
|
+
le=300.0,
|
|
108
|
+
description="Interval between health check executions",
|
|
109
|
+
)
|
|
110
|
+
datacenter: str | None = Field(
|
|
111
|
+
default=None,
|
|
112
|
+
description="Consul datacenter for multi-datacenter deployments",
|
|
113
|
+
)
|
|
114
|
+
circuit_breaker_enabled: bool = Field(
|
|
115
|
+
default=True,
|
|
116
|
+
description="Enable automatic failure detection and recovery via circuit breaker",
|
|
117
|
+
)
|
|
118
|
+
circuit_breaker_failure_threshold: int = Field(
|
|
119
|
+
default=5,
|
|
120
|
+
ge=1,
|
|
121
|
+
le=20,
|
|
122
|
+
description="Consecutive failures required to open circuit",
|
|
123
|
+
)
|
|
124
|
+
circuit_breaker_reset_timeout_seconds: float = Field(
|
|
125
|
+
default=30.0,
|
|
126
|
+
ge=1.0,
|
|
127
|
+
le=300.0,
|
|
128
|
+
description="Wait time before testing recovery after circuit opens",
|
|
129
|
+
)
|
|
130
|
+
max_concurrent_operations: int = Field(
|
|
131
|
+
default=10,
|
|
132
|
+
ge=1,
|
|
133
|
+
le=100,
|
|
134
|
+
description="Thread pool size for concurrent operations",
|
|
135
|
+
)
|
|
136
|
+
max_queue_size_multiplier: int = Field(
|
|
137
|
+
default=3,
|
|
138
|
+
ge=1,
|
|
139
|
+
le=10,
|
|
140
|
+
description="Multiplier to calculate queue capacity from thread pool size",
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
@property
|
|
144
|
+
def base_url(self) -> str:
|
|
145
|
+
"""Construct the base URL for Consul API requests.
|
|
146
|
+
|
|
147
|
+
Returns:
|
|
148
|
+
Complete base URL in format scheme://host:port
|
|
149
|
+
"""
|
|
150
|
+
return f"{self.scheme}://{self.host}:{self.port}"
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
__all__: list[str] = ["ModelConsulHandlerConfig"]
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Consul Handler Payload Model.
|
|
4
|
+
|
|
5
|
+
This module provides the discriminated union type and wrapper model for Consul handler
|
|
6
|
+
response payloads.
|
|
7
|
+
|
|
8
|
+
Union Type:
|
|
9
|
+
ConsulPayload: Discriminated union of all payload types using operation_type field
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
from typing import Annotated, Union
|
|
15
|
+
|
|
16
|
+
from pydantic import BaseModel, ConfigDict, Discriminator, Field
|
|
17
|
+
|
|
18
|
+
from omnibase_infra.handlers.models.consul.model_consul_deregister_payload import (
|
|
19
|
+
ModelConsulDeregisterPayload,
|
|
20
|
+
)
|
|
21
|
+
from omnibase_infra.handlers.models.consul.model_consul_kv_get_found_payload import (
|
|
22
|
+
ModelConsulKVGetFoundPayload,
|
|
23
|
+
)
|
|
24
|
+
from omnibase_infra.handlers.models.consul.model_consul_kv_get_not_found_payload import (
|
|
25
|
+
ModelConsulKVGetNotFoundPayload,
|
|
26
|
+
)
|
|
27
|
+
from omnibase_infra.handlers.models.consul.model_consul_kv_get_recurse_payload import (
|
|
28
|
+
ModelConsulKVGetRecursePayload,
|
|
29
|
+
)
|
|
30
|
+
from omnibase_infra.handlers.models.consul.model_consul_kv_put_payload import (
|
|
31
|
+
ModelConsulKVPutPayload,
|
|
32
|
+
)
|
|
33
|
+
from omnibase_infra.handlers.models.consul.model_consul_register_payload import (
|
|
34
|
+
ModelConsulRegisterPayload,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
# Discriminated union type for all Consul payloads
|
|
38
|
+
ConsulPayload = Annotated[
|
|
39
|
+
Union[
|
|
40
|
+
ModelConsulKVGetFoundPayload,
|
|
41
|
+
ModelConsulKVGetNotFoundPayload,
|
|
42
|
+
ModelConsulKVGetRecursePayload,
|
|
43
|
+
ModelConsulKVPutPayload,
|
|
44
|
+
ModelConsulRegisterPayload,
|
|
45
|
+
ModelConsulDeregisterPayload,
|
|
46
|
+
],
|
|
47
|
+
Discriminator("operation_type"),
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class ModelConsulHandlerPayload(BaseModel):
|
|
52
|
+
"""Payload containing Consul operation results.
|
|
53
|
+
|
|
54
|
+
This model wraps the strongly-typed ConsulPayload discriminated union.
|
|
55
|
+
The payload type is determined by the operation_type field.
|
|
56
|
+
|
|
57
|
+
Attributes:
|
|
58
|
+
data: Strongly-typed operation result with discriminated union.
|
|
59
|
+
|
|
60
|
+
Example:
|
|
61
|
+
>>> from omnibase_infra.handlers.models import ModelConsulHandlerPayload
|
|
62
|
+
>>> payload = ModelConsulHandlerPayload(
|
|
63
|
+
... data=ModelConsulKVGetFoundPayload(
|
|
64
|
+
... found=True,
|
|
65
|
+
... key="mykey",
|
|
66
|
+
... value="myvalue",
|
|
67
|
+
... index=100,
|
|
68
|
+
... ),
|
|
69
|
+
... )
|
|
70
|
+
>>> print(payload.data.operation_type)
|
|
71
|
+
'kv_get_found'
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
model_config = ConfigDict(
|
|
75
|
+
strict=True,
|
|
76
|
+
frozen=True,
|
|
77
|
+
extra="forbid",
|
|
78
|
+
from_attributes=True, # Support pytest-xdist compatibility
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
data: ConsulPayload = Field(
|
|
82
|
+
description="Strongly-typed operation result with discriminated union",
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
__all__: list[str] = [
|
|
87
|
+
"ConsulPayload",
|
|
88
|
+
"ModelConsulHandlerPayload",
|
|
89
|
+
]
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Consul KV Get Found Payload Model.
|
|
4
|
+
|
|
5
|
+
This module provides the payload model for consul.kv_get when key is found (single key mode).
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import Literal
|
|
11
|
+
|
|
12
|
+
from pydantic import ConfigDict, Field
|
|
13
|
+
|
|
14
|
+
from omnibase_infra.handlers.models.consul.model_payload_consul import (
|
|
15
|
+
ModelPayloadConsul,
|
|
16
|
+
)
|
|
17
|
+
from omnibase_infra.handlers.models.consul.registry_payload_consul import (
|
|
18
|
+
RegistryPayloadConsul,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@RegistryPayloadConsul.register("kv_get_found")
|
|
23
|
+
class ModelConsulKVGetFoundPayload(ModelPayloadConsul):
|
|
24
|
+
"""Payload for consul.kv_get when key is found (single key mode).
|
|
25
|
+
|
|
26
|
+
Attributes:
|
|
27
|
+
operation_type: Discriminator literal "kv_get_found".
|
|
28
|
+
found: Always True for this payload type.
|
|
29
|
+
key: The KV key path that was queried.
|
|
30
|
+
value: The value stored at the key (decoded from bytes).
|
|
31
|
+
flags: Optional user-defined flags associated with the key.
|
|
32
|
+
modify_index: The Consul modify index for optimistic locking.
|
|
33
|
+
index: The Consul response index for blocking queries.
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
model_config = ConfigDict(
|
|
37
|
+
frozen=True, extra="forbid", coerce_numbers_to_str=False, from_attributes=True
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
operation_type: Literal["kv_get_found"] = Field(
|
|
41
|
+
default="kv_get_found", description="Discriminator for payload type"
|
|
42
|
+
)
|
|
43
|
+
found: Literal[True] = Field(
|
|
44
|
+
default=True, description="Indicates the key was found"
|
|
45
|
+
)
|
|
46
|
+
key: str = Field(description="The KV key path that was queried")
|
|
47
|
+
value: str | None = Field(description="The value stored at the key")
|
|
48
|
+
flags: int | None = Field(default=None, description="User-defined flags")
|
|
49
|
+
modify_index: int | None = Field(
|
|
50
|
+
default=None, description="Consul modify index for CAS operations"
|
|
51
|
+
)
|
|
52
|
+
index: int = Field(description="Consul response index for blocking queries")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
__all__: list[str] = ["ModelConsulKVGetFoundPayload"]
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Consul KV Get Not Found Payload Model.
|
|
4
|
+
|
|
5
|
+
This module provides the payload model for consul.kv_get when key is not found.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import Literal
|
|
11
|
+
|
|
12
|
+
from pydantic import ConfigDict, Field
|
|
13
|
+
|
|
14
|
+
from omnibase_infra.handlers.models.consul.model_payload_consul import (
|
|
15
|
+
ModelPayloadConsul,
|
|
16
|
+
)
|
|
17
|
+
from omnibase_infra.handlers.models.consul.registry_payload_consul import (
|
|
18
|
+
RegistryPayloadConsul,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@RegistryPayloadConsul.register("kv_get_not_found")
|
|
23
|
+
class ModelConsulKVGetNotFoundPayload(ModelPayloadConsul):
|
|
24
|
+
"""Payload for consul.kv_get when key is not found.
|
|
25
|
+
|
|
26
|
+
Attributes:
|
|
27
|
+
operation_type: Discriminator literal "kv_get_not_found".
|
|
28
|
+
found: Always False for this payload type.
|
|
29
|
+
key: The KV key path that was queried.
|
|
30
|
+
value: Always None for not-found case.
|
|
31
|
+
index: The Consul response index for blocking queries.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
model_config = ConfigDict(
|
|
35
|
+
frozen=True, extra="forbid", coerce_numbers_to_str=False, from_attributes=True
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
operation_type: Literal["kv_get_not_found"] = Field(
|
|
39
|
+
default="kv_get_not_found", description="Discriminator for payload type"
|
|
40
|
+
)
|
|
41
|
+
found: Literal[False] = Field(
|
|
42
|
+
default=False, description="Indicates the key was not found"
|
|
43
|
+
)
|
|
44
|
+
key: str = Field(description="The KV key path that was queried")
|
|
45
|
+
value: None = Field(default=None, description="Always None for not-found case")
|
|
46
|
+
index: int = Field(description="Consul response index for blocking queries")
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
__all__: list[str] = ["ModelConsulKVGetNotFoundPayload"]
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Consul KV Get Recurse Payload Model.
|
|
4
|
+
|
|
5
|
+
This module provides the payload model for consul.kv_get with recurse=True.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import Literal
|
|
11
|
+
|
|
12
|
+
from pydantic import ConfigDict, Field
|
|
13
|
+
|
|
14
|
+
from omnibase_infra.handlers.models.consul.model_consul_kv_item import (
|
|
15
|
+
ModelConsulKVItem,
|
|
16
|
+
)
|
|
17
|
+
from omnibase_infra.handlers.models.consul.model_payload_consul import (
|
|
18
|
+
ModelPayloadConsul,
|
|
19
|
+
)
|
|
20
|
+
from omnibase_infra.handlers.models.consul.registry_payload_consul import (
|
|
21
|
+
RegistryPayloadConsul,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@RegistryPayloadConsul.register("kv_get_recurse")
|
|
26
|
+
class ModelConsulKVGetRecursePayload(ModelPayloadConsul):
|
|
27
|
+
"""Payload for consul.kv_get with recurse=True.
|
|
28
|
+
|
|
29
|
+
Attributes:
|
|
30
|
+
operation_type: Discriminator literal "kv_get_recurse".
|
|
31
|
+
found: True if any keys were found under the prefix.
|
|
32
|
+
items: List of KV items found under the prefix.
|
|
33
|
+
count: Number of items found.
|
|
34
|
+
index: The Consul response index for blocking queries.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
model_config = ConfigDict(strict=True, frozen=True, extra="forbid")
|
|
38
|
+
|
|
39
|
+
operation_type: Literal["kv_get_recurse"] = Field(
|
|
40
|
+
default="kv_get_recurse", description="Discriminator for payload type"
|
|
41
|
+
)
|
|
42
|
+
found: bool = Field(description="True if any keys were found under the prefix")
|
|
43
|
+
items: list[ModelConsulKVItem] = Field(
|
|
44
|
+
description="List of KV items found under the prefix"
|
|
45
|
+
)
|
|
46
|
+
count: int = Field(description="Number of items found")
|
|
47
|
+
index: int = Field(description="Consul response index for blocking queries")
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
__all__: list[str] = ["ModelConsulKVGetRecursePayload"]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Consul KV Item Model.
|
|
4
|
+
|
|
5
|
+
This module provides the model for a single KV item from a recurse query.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ModelConsulKVItem(BaseModel):
|
|
14
|
+
"""Single KV item from recurse query.
|
|
15
|
+
|
|
16
|
+
Attributes:
|
|
17
|
+
key: The KV key path.
|
|
18
|
+
value: The value stored at the key (decoded from bytes).
|
|
19
|
+
flags: Optional user-defined flags associated with the key.
|
|
20
|
+
modify_index: The Consul modify index for optimistic locking.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
model_config = ConfigDict(strict=True, frozen=True, extra="forbid")
|
|
24
|
+
|
|
25
|
+
key: str = Field(description="The KV key path")
|
|
26
|
+
value: str | None = Field(description="The value stored at the key")
|
|
27
|
+
flags: int | None = Field(default=None, description="User-defined flags")
|
|
28
|
+
modify_index: int | None = Field(
|
|
29
|
+
default=None, description="Consul modify index for CAS operations"
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
__all__: list[str] = ["ModelConsulKVItem"]
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Consul KV Put Payload Model.
|
|
4
|
+
|
|
5
|
+
This module provides the payload model for consul.kv_put result.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import Literal
|
|
11
|
+
|
|
12
|
+
from pydantic import ConfigDict, Field
|
|
13
|
+
|
|
14
|
+
from omnibase_infra.handlers.models.consul.model_payload_consul import (
|
|
15
|
+
ModelPayloadConsul,
|
|
16
|
+
)
|
|
17
|
+
from omnibase_infra.handlers.models.consul.registry_payload_consul import (
|
|
18
|
+
RegistryPayloadConsul,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@RegistryPayloadConsul.register("kv_put")
|
|
23
|
+
class ModelConsulKVPutPayload(ModelPayloadConsul):
|
|
24
|
+
"""Payload for consul.kv_put result.
|
|
25
|
+
|
|
26
|
+
Attributes:
|
|
27
|
+
operation_type: Discriminator literal "kv_put".
|
|
28
|
+
success: True if the put operation succeeded.
|
|
29
|
+
key: The KV key path that was written.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
model_config = ConfigDict(strict=True, frozen=True, extra="forbid")
|
|
33
|
+
|
|
34
|
+
operation_type: Literal["kv_put"] = Field(
|
|
35
|
+
default="kv_put", description="Discriminator for payload type"
|
|
36
|
+
)
|
|
37
|
+
success: bool = Field(description="True if the put operation succeeded")
|
|
38
|
+
key: str = Field(description="The KV key path that was written")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
__all__: list[str] = ["ModelConsulKVPutPayload"]
|