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,125 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Configuration reference parse result model.
|
|
4
|
+
|
|
5
|
+
.. versionadded:: 0.8.0
|
|
6
|
+
Initial implementation for OMN-765.
|
|
7
|
+
|
|
8
|
+
This module provides the ModelConfigRefParseResult for representing
|
|
9
|
+
the result of parsing a configuration reference string.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
from typing import TYPE_CHECKING
|
|
15
|
+
|
|
16
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from omnibase_infra.runtime.models.model_config_ref import ModelConfigRef
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class ModelConfigRefParseResult(BaseModel):
|
|
23
|
+
"""Result of parsing a configuration reference.
|
|
24
|
+
|
|
25
|
+
This model follows the result pattern where parsing never throws exceptions
|
|
26
|
+
for invalid input. Instead, check `success` or use the model in a boolean
|
|
27
|
+
context to determine if parsing succeeded.
|
|
28
|
+
|
|
29
|
+
Attributes:
|
|
30
|
+
success: True if parsing succeeded, False otherwise.
|
|
31
|
+
config_ref: The parsed ModelConfigRef if successful, None otherwise.
|
|
32
|
+
error_message: Error description if parsing failed, None otherwise.
|
|
33
|
+
|
|
34
|
+
Examples:
|
|
35
|
+
>>> result = ModelConfigRef.parse("file:config.yaml")
|
|
36
|
+
>>> if result:
|
|
37
|
+
... print(f"Path: {result.config_ref.path}")
|
|
38
|
+
Path: config.yaml
|
|
39
|
+
>>>
|
|
40
|
+
>>> result = ModelConfigRef.parse("invalid")
|
|
41
|
+
>>> if not result:
|
|
42
|
+
... print(f"Error: {result.error_message}")
|
|
43
|
+
Error: Invalid config reference format: missing scheme separator ':' in 'invalid'
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
model_config = ConfigDict(
|
|
47
|
+
strict=True,
|
|
48
|
+
frozen=True,
|
|
49
|
+
extra="forbid",
|
|
50
|
+
from_attributes=True,
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
success: bool = Field(
|
|
54
|
+
...,
|
|
55
|
+
description="True if parsing succeeded, False otherwise.",
|
|
56
|
+
)
|
|
57
|
+
# NOTE: Using string annotation to avoid circular import
|
|
58
|
+
config_ref: ModelConfigRef | None = Field(
|
|
59
|
+
default=None,
|
|
60
|
+
description="The parsed configuration reference if successful, None otherwise.",
|
|
61
|
+
)
|
|
62
|
+
error_message: str | None = Field(
|
|
63
|
+
default=None,
|
|
64
|
+
description="Error description if parsing failed, None otherwise.",
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
def __bool__(self) -> bool:
|
|
68
|
+
"""Allow using result in boolean context.
|
|
69
|
+
|
|
70
|
+
Warning:
|
|
71
|
+
**Non-standard __bool__ behavior**: This model overrides ``__bool__`` to
|
|
72
|
+
return ``True`` only when ``success`` is True. This differs from typical
|
|
73
|
+
Pydantic model behavior where ``bool(model)`` always returns ``True`` for
|
|
74
|
+
any valid model instance.
|
|
75
|
+
|
|
76
|
+
This design enables idiomatic parse result checks::
|
|
77
|
+
|
|
78
|
+
result = ModelConfigRef.parse("file:config.yaml")
|
|
79
|
+
if result:
|
|
80
|
+
# Parsing succeeded - use the config_ref
|
|
81
|
+
use_config(result.config_ref)
|
|
82
|
+
else:
|
|
83
|
+
# Parsing failed - handle the error
|
|
84
|
+
log_error(result.error_message)
|
|
85
|
+
|
|
86
|
+
If you need to check model validity instead, use explicit attribute access::
|
|
87
|
+
|
|
88
|
+
# Check for success (uses __bool__)
|
|
89
|
+
if result:
|
|
90
|
+
...
|
|
91
|
+
|
|
92
|
+
# Check model is valid (always True for constructed instance)
|
|
93
|
+
if result is not None:
|
|
94
|
+
...
|
|
95
|
+
|
|
96
|
+
# Explicit success check (preferred for clarity)
|
|
97
|
+
if result.success:
|
|
98
|
+
...
|
|
99
|
+
|
|
100
|
+
Returns:
|
|
101
|
+
True if parsing succeeded, False otherwise.
|
|
102
|
+
|
|
103
|
+
Examples:
|
|
104
|
+
>>> result = ModelConfigRef.parse("file:config.yaml")
|
|
105
|
+
>>> bool(result)
|
|
106
|
+
True
|
|
107
|
+
>>>
|
|
108
|
+
>>> result = ModelConfigRef.parse("")
|
|
109
|
+
>>> bool(result)
|
|
110
|
+
False
|
|
111
|
+
"""
|
|
112
|
+
return self.success
|
|
113
|
+
|
|
114
|
+
def __str__(self) -> str:
|
|
115
|
+
"""Return a human-readable string representation.
|
|
116
|
+
|
|
117
|
+
Returns:
|
|
118
|
+
String format showing success status and config_ref or error.
|
|
119
|
+
"""
|
|
120
|
+
if self.success:
|
|
121
|
+
return f"ModelConfigRefParseResult(success=True, uri='{self.config_ref.to_uri() if self.config_ref else ''}')"
|
|
122
|
+
return f"ModelConfigRefParseResult(success=False, error='{self.error_message}')"
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
__all__: list[str] = ["ModelConfigRefParseResult"]
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Domain plugin configuration model.
|
|
4
|
+
|
|
5
|
+
This module provides the ModelDomainPluginConfig dataclass for passing
|
|
6
|
+
configuration to domain plugins during lifecycle hooks.
|
|
7
|
+
|
|
8
|
+
Design Pattern:
|
|
9
|
+
The kernel creates this config and passes it to each domain plugin
|
|
10
|
+
during bootstrap, providing all context needed for initialization
|
|
11
|
+
and handler wiring.
|
|
12
|
+
|
|
13
|
+
Thread Safety:
|
|
14
|
+
This is a mutable dataclass. The dispatch_engine field may be set
|
|
15
|
+
after initial construction when the MessageDispatchEngine is created.
|
|
16
|
+
|
|
17
|
+
Example:
|
|
18
|
+
>>> from omnibase_infra.runtime.models import ModelDomainPluginConfig
|
|
19
|
+
>>> from uuid import uuid4
|
|
20
|
+
>>>
|
|
21
|
+
>>> config = ModelDomainPluginConfig(
|
|
22
|
+
... container=container,
|
|
23
|
+
... event_bus=event_bus,
|
|
24
|
+
... correlation_id=uuid4(),
|
|
25
|
+
... input_topic="requests",
|
|
26
|
+
... output_topic="responses",
|
|
27
|
+
... consumer_group="onex-runtime",
|
|
28
|
+
... )
|
|
29
|
+
>>> result = await plugin.initialize(config)
|
|
30
|
+
|
|
31
|
+
Related:
|
|
32
|
+
- OMN-1346: Registration Code Extraction
|
|
33
|
+
- OMN-888: Registration Orchestrator
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
from __future__ import annotations
|
|
37
|
+
|
|
38
|
+
from dataclasses import dataclass
|
|
39
|
+
from typing import TYPE_CHECKING
|
|
40
|
+
from uuid import UUID
|
|
41
|
+
|
|
42
|
+
if TYPE_CHECKING:
|
|
43
|
+
from omnibase_core.container import ModelONEXContainer
|
|
44
|
+
from omnibase_infra.event_bus.inmemory_event_bus import InMemoryEventBus
|
|
45
|
+
from omnibase_infra.event_bus.kafka_event_bus import KafkaEventBus
|
|
46
|
+
from omnibase_infra.runtime import MessageDispatchEngine
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@dataclass
|
|
50
|
+
class ModelDomainPluginConfig:
|
|
51
|
+
"""Configuration passed to domain plugins during lifecycle hooks.
|
|
52
|
+
|
|
53
|
+
This model provides all the context a domain plugin needs to initialize
|
|
54
|
+
its resources and wire its handlers. The kernel creates this config
|
|
55
|
+
and passes it to each plugin during bootstrap.
|
|
56
|
+
|
|
57
|
+
Attributes:
|
|
58
|
+
container: The ONEX container for dependency injection.
|
|
59
|
+
event_bus: The event bus instance (InMemoryEventBus or KafkaEventBus).
|
|
60
|
+
correlation_id: Correlation ID for distributed tracing.
|
|
61
|
+
input_topic: The input topic for event consumers.
|
|
62
|
+
output_topic: The output topic for event publishers.
|
|
63
|
+
consumer_group: The consumer group for Kafka consumers.
|
|
64
|
+
dispatch_engine: The MessageDispatchEngine for dispatcher wiring
|
|
65
|
+
(set after engine creation, may be None).
|
|
66
|
+
|
|
67
|
+
Example:
|
|
68
|
+
```python
|
|
69
|
+
config = ModelDomainPluginConfig(
|
|
70
|
+
container=container,
|
|
71
|
+
event_bus=event_bus,
|
|
72
|
+
correlation_id=uuid4(),
|
|
73
|
+
input_topic="requests",
|
|
74
|
+
output_topic="responses",
|
|
75
|
+
consumer_group="onex-runtime",
|
|
76
|
+
)
|
|
77
|
+
result = await plugin.initialize(config)
|
|
78
|
+
```
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
container: ModelONEXContainer
|
|
82
|
+
event_bus: InMemoryEventBus | KafkaEventBus
|
|
83
|
+
correlation_id: UUID
|
|
84
|
+
input_topic: str
|
|
85
|
+
output_topic: str
|
|
86
|
+
consumer_group: str
|
|
87
|
+
|
|
88
|
+
# Optional: MessageDispatchEngine for dispatcher wiring (set after engine creation)
|
|
89
|
+
dispatch_engine: MessageDispatchEngine | None = None
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
__all__ = ["ModelDomainPluginConfig"]
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Domain plugin result model.
|
|
4
|
+
|
|
5
|
+
This module provides the ModelDomainPluginResult dataclass for representing
|
|
6
|
+
the outcome of domain plugin lifecycle operations.
|
|
7
|
+
|
|
8
|
+
Design Pattern:
|
|
9
|
+
Result models provide structured information about operation outcomes,
|
|
10
|
+
including success/failure status, timing, and resources created. This
|
|
11
|
+
model supports the custom __bool__ pattern where truthiness reflects
|
|
12
|
+
operation success.
|
|
13
|
+
|
|
14
|
+
Thread Safety:
|
|
15
|
+
ModelDomainPluginResult is NOT frozen - it may contain mutable lists
|
|
16
|
+
of resources and callbacks.
|
|
17
|
+
|
|
18
|
+
Example:
|
|
19
|
+
>>> from omnibase_infra.runtime.models import ModelDomainPluginResult
|
|
20
|
+
>>>
|
|
21
|
+
>>> # Create success result using factory method
|
|
22
|
+
>>> result = ModelDomainPluginResult.succeeded(
|
|
23
|
+
... plugin_id="registration",
|
|
24
|
+
... message="Plugin initialized",
|
|
25
|
+
... resources_created=["postgres_pool"],
|
|
26
|
+
... )
|
|
27
|
+
>>> if result: # Uses __bool__ - True if success
|
|
28
|
+
... print("Initialization complete!")
|
|
29
|
+
>>>
|
|
30
|
+
>>> # Create failure result
|
|
31
|
+
>>> failure = ModelDomainPluginResult.failed(
|
|
32
|
+
... plugin_id="registration",
|
|
33
|
+
... error_message="Connection refused",
|
|
34
|
+
... )
|
|
35
|
+
>>> if not failure:
|
|
36
|
+
... print(f"Failed: {failure.error_message}")
|
|
37
|
+
|
|
38
|
+
Related:
|
|
39
|
+
- OMN-1346: Registration Code Extraction
|
|
40
|
+
- OMN-888: Registration Orchestrator
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
from __future__ import annotations
|
|
44
|
+
|
|
45
|
+
from collections.abc import Awaitable, Callable
|
|
46
|
+
from dataclasses import dataclass, field
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@dataclass
|
|
50
|
+
class ModelDomainPluginResult:
|
|
51
|
+
"""Result model returned by domain plugin lifecycle hooks.
|
|
52
|
+
|
|
53
|
+
Provides structured information about the outcome of a plugin operation,
|
|
54
|
+
including success/failure status, timing, and resources created or cleaned up.
|
|
55
|
+
|
|
56
|
+
Attributes:
|
|
57
|
+
plugin_id: Identifier of the plugin that produced this result.
|
|
58
|
+
success: Whether the operation succeeded.
|
|
59
|
+
message: Human-readable message describing the outcome.
|
|
60
|
+
resources_created: List of resource identifiers created during this operation.
|
|
61
|
+
services_registered: List of service class names registered in container.
|
|
62
|
+
duration_seconds: Time taken for the operation.
|
|
63
|
+
error_message: Error message if operation failed.
|
|
64
|
+
unsubscribe_callbacks: Callbacks to invoke during shutdown for cleanup.
|
|
65
|
+
|
|
66
|
+
Example:
|
|
67
|
+
```python
|
|
68
|
+
result = ModelDomainPluginResult(
|
|
69
|
+
plugin_id="registration",
|
|
70
|
+
success=True,
|
|
71
|
+
message="Registration plugin initialized",
|
|
72
|
+
resources_created=["postgres_pool"],
|
|
73
|
+
services_registered=["HandlerNodeIntrospected", "HandlerRuntimeTick"],
|
|
74
|
+
duration_seconds=0.5,
|
|
75
|
+
)
|
|
76
|
+
if not result:
|
|
77
|
+
logger.error("Plugin failed: %s", result.error_message)
|
|
78
|
+
```
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
plugin_id: str
|
|
82
|
+
success: bool
|
|
83
|
+
message: str = ""
|
|
84
|
+
resources_created: list[str] = field(default_factory=list)
|
|
85
|
+
services_registered: list[str] = field(default_factory=list)
|
|
86
|
+
duration_seconds: float = 0.0
|
|
87
|
+
error_message: str | None = None
|
|
88
|
+
|
|
89
|
+
# Store unsubscribe callbacks for cleanup
|
|
90
|
+
unsubscribe_callbacks: list[Callable[[], Awaitable[None]]] = field(
|
|
91
|
+
default_factory=list
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
def get_error_message_or_default(self, default: str = "unknown") -> str:
|
|
95
|
+
"""Return error_message if set, otherwise the default value.
|
|
96
|
+
|
|
97
|
+
This helper simplifies error handling in plugin activation code,
|
|
98
|
+
avoiding verbose None checks when accessing error_message.
|
|
99
|
+
|
|
100
|
+
Args:
|
|
101
|
+
default: Value to return if error_message is None or empty.
|
|
102
|
+
|
|
103
|
+
Returns:
|
|
104
|
+
The error_message if it's a non-empty string, otherwise default.
|
|
105
|
+
|
|
106
|
+
Example:
|
|
107
|
+
>>> result = ModelDomainPluginResult.failed(
|
|
108
|
+
... plugin_id="test",
|
|
109
|
+
... error_message="Connection refused",
|
|
110
|
+
... )
|
|
111
|
+
>>> result.get_error_message_or_default()
|
|
112
|
+
'Connection refused'
|
|
113
|
+
>>>
|
|
114
|
+
>>> success = ModelDomainPluginResult.succeeded(plugin_id="test")
|
|
115
|
+
>>> success.get_error_message_or_default("no error")
|
|
116
|
+
'no error'
|
|
117
|
+
"""
|
|
118
|
+
return self.error_message if self.error_message else default
|
|
119
|
+
|
|
120
|
+
def __bool__(self) -> bool:
|
|
121
|
+
"""Return True if the operation succeeded.
|
|
122
|
+
|
|
123
|
+
Warning:
|
|
124
|
+
**Non-standard __bool__ behavior**: This model overrides ``__bool__`` to
|
|
125
|
+
return ``True`` only when ``success`` is True. This differs from typical
|
|
126
|
+
Pydantic/dataclass behavior where ``bool(model)`` always returns ``True``
|
|
127
|
+
for any valid instance.
|
|
128
|
+
|
|
129
|
+
This design enables idiomatic plugin lifecycle checks::
|
|
130
|
+
|
|
131
|
+
result = await plugin.initialize(config)
|
|
132
|
+
if result:
|
|
133
|
+
# Operation succeeded - continue
|
|
134
|
+
await plugin.wire_handlers(config)
|
|
135
|
+
else:
|
|
136
|
+
# Operation failed - handle error
|
|
137
|
+
logger.error("Plugin failed: %s", result.error_message)
|
|
138
|
+
|
|
139
|
+
If you need to check instance validity instead, use explicit checks::
|
|
140
|
+
|
|
141
|
+
# Check for success (uses __bool__)
|
|
142
|
+
if result:
|
|
143
|
+
...
|
|
144
|
+
|
|
145
|
+
# Check instance is valid (always True for constructed instance)
|
|
146
|
+
if result is not None:
|
|
147
|
+
...
|
|
148
|
+
|
|
149
|
+
# Explicit success check (preferred for clarity)
|
|
150
|
+
if result.success:
|
|
151
|
+
...
|
|
152
|
+
|
|
153
|
+
Returns:
|
|
154
|
+
True if success is True, False otherwise.
|
|
155
|
+
"""
|
|
156
|
+
return self.success
|
|
157
|
+
|
|
158
|
+
@classmethod
|
|
159
|
+
def succeeded(
|
|
160
|
+
cls,
|
|
161
|
+
plugin_id: str,
|
|
162
|
+
message: str = "",
|
|
163
|
+
duration_seconds: float = 0.0,
|
|
164
|
+
) -> ModelDomainPluginResult:
|
|
165
|
+
"""Create a simple success result.
|
|
166
|
+
|
|
167
|
+
For results that require additional fields (resources_created, services_registered,
|
|
168
|
+
unsubscribe_callbacks), use the constructor directly.
|
|
169
|
+
|
|
170
|
+
Args:
|
|
171
|
+
plugin_id: Identifier of the plugin.
|
|
172
|
+
message: Human-readable success message.
|
|
173
|
+
duration_seconds: Time taken for the operation.
|
|
174
|
+
|
|
175
|
+
Returns:
|
|
176
|
+
ModelDomainPluginResult with success=True.
|
|
177
|
+
|
|
178
|
+
Example:
|
|
179
|
+
>>> result = ModelDomainPluginResult.succeeded(
|
|
180
|
+
... plugin_id="registration",
|
|
181
|
+
... message="Initialized",
|
|
182
|
+
... )
|
|
183
|
+
>>> result.success
|
|
184
|
+
True
|
|
185
|
+
|
|
186
|
+
>>> # For results with resources, use constructor:
|
|
187
|
+
>>> result = ModelDomainPluginResult(
|
|
188
|
+
... plugin_id="registration",
|
|
189
|
+
... success=True,
|
|
190
|
+
... message="Initialized",
|
|
191
|
+
... resources_created=["pool"],
|
|
192
|
+
... )
|
|
193
|
+
"""
|
|
194
|
+
return cls(
|
|
195
|
+
plugin_id=plugin_id,
|
|
196
|
+
success=True,
|
|
197
|
+
message=message,
|
|
198
|
+
duration_seconds=duration_seconds,
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
@classmethod
|
|
202
|
+
def failed(
|
|
203
|
+
cls,
|
|
204
|
+
plugin_id: str,
|
|
205
|
+
error_message: str,
|
|
206
|
+
message: str = "",
|
|
207
|
+
duration_seconds: float = 0.0,
|
|
208
|
+
) -> ModelDomainPluginResult:
|
|
209
|
+
"""Create a failure result.
|
|
210
|
+
|
|
211
|
+
Args:
|
|
212
|
+
plugin_id: Identifier of the plugin.
|
|
213
|
+
error_message: Description of the error that occurred.
|
|
214
|
+
message: Optional human-readable message (defaults to "Plugin {id} failed").
|
|
215
|
+
duration_seconds: Time taken before failure.
|
|
216
|
+
|
|
217
|
+
Returns:
|
|
218
|
+
ModelDomainPluginResult with success=False.
|
|
219
|
+
|
|
220
|
+
Example:
|
|
221
|
+
>>> result = ModelDomainPluginResult.failed(
|
|
222
|
+
... plugin_id="registration",
|
|
223
|
+
... error_message="Connection refused",
|
|
224
|
+
... )
|
|
225
|
+
>>> result.success
|
|
226
|
+
False
|
|
227
|
+
>>> result.error_message
|
|
228
|
+
'Connection refused'
|
|
229
|
+
"""
|
|
230
|
+
return cls(
|
|
231
|
+
plugin_id=plugin_id,
|
|
232
|
+
success=False,
|
|
233
|
+
message=message or f"Plugin {plugin_id} failed",
|
|
234
|
+
error_message=error_message,
|
|
235
|
+
duration_seconds=duration_seconds,
|
|
236
|
+
)
|
|
237
|
+
|
|
238
|
+
@classmethod
|
|
239
|
+
def skipped(
|
|
240
|
+
cls,
|
|
241
|
+
plugin_id: str,
|
|
242
|
+
reason: str,
|
|
243
|
+
) -> ModelDomainPluginResult:
|
|
244
|
+
"""Create a skipped result (plugin did not activate).
|
|
245
|
+
|
|
246
|
+
Args:
|
|
247
|
+
plugin_id: Identifier of the plugin.
|
|
248
|
+
reason: Explanation of why the plugin was skipped.
|
|
249
|
+
|
|
250
|
+
Returns:
|
|
251
|
+
ModelDomainPluginResult with success=True and skip message.
|
|
252
|
+
|
|
253
|
+
Example:
|
|
254
|
+
>>> result = ModelDomainPluginResult.skipped(
|
|
255
|
+
... plugin_id="registration",
|
|
256
|
+
... reason="POSTGRES_HOST not configured",
|
|
257
|
+
... )
|
|
258
|
+
>>> result.success
|
|
259
|
+
True
|
|
260
|
+
>>> "skipped" in result.message
|
|
261
|
+
True
|
|
262
|
+
"""
|
|
263
|
+
return cls(
|
|
264
|
+
plugin_id=plugin_id,
|
|
265
|
+
success=True,
|
|
266
|
+
message=f"Plugin {plugin_id} skipped: {reason}",
|
|
267
|
+
)
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
__all__ = ["ModelDomainPluginResult"]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Duplicate Response Model.
|
|
4
|
+
|
|
5
|
+
This module provides the Pydantic model for duplicate message detection responses.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import Literal
|
|
11
|
+
from uuid import UUID
|
|
12
|
+
|
|
13
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ModelDuplicateResponse(BaseModel):
|
|
17
|
+
"""Response indicating a duplicate message was detected.
|
|
18
|
+
|
|
19
|
+
This is NOT an error - duplicates are expected under at-least-once delivery.
|
|
20
|
+
The response indicates successful deduplication, informing the caller that
|
|
21
|
+
the message was already processed and no further action is needed.
|
|
22
|
+
|
|
23
|
+
Attributes:
|
|
24
|
+
success: Always True - deduplication is successful behavior.
|
|
25
|
+
status: Always "duplicate" to indicate the response type.
|
|
26
|
+
message: Human-readable description of the deduplication.
|
|
27
|
+
message_id: UUID of the duplicate message that was detected.
|
|
28
|
+
correlation_id: Correlation ID for distributed tracing.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
model_config = ConfigDict(
|
|
32
|
+
strict=True,
|
|
33
|
+
frozen=True,
|
|
34
|
+
extra="forbid",
|
|
35
|
+
from_attributes=True, # Support pytest-xdist compatibility
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
success: Literal[True] = Field(
|
|
39
|
+
default=True,
|
|
40
|
+
description="Deduplication is successful behavior",
|
|
41
|
+
)
|
|
42
|
+
status: Literal["duplicate"] = Field(
|
|
43
|
+
default="duplicate",
|
|
44
|
+
description="Response type indicator",
|
|
45
|
+
)
|
|
46
|
+
message: str = Field(
|
|
47
|
+
default="Message already processed",
|
|
48
|
+
description="Human-readable deduplication message",
|
|
49
|
+
)
|
|
50
|
+
message_id: UUID = Field(description="UUID of the duplicate message")
|
|
51
|
+
correlation_id: UUID = Field(description="Correlation ID for tracing")
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
__all__: list[str] = ["ModelDuplicateResponse"]
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Enabled Protocols Configuration Model.
|
|
4
|
+
|
|
5
|
+
This module provides the Pydantic model for enabled protocol configuration.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import Literal
|
|
11
|
+
|
|
12
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
13
|
+
|
|
14
|
+
# Literal type for valid protocol names
|
|
15
|
+
# These correspond to handler_registry constants:
|
|
16
|
+
# HANDLER_TYPE_HTTP, HANDLER_TYPE_DATABASE, HANDLER_TYPE_KAFKA, etc.
|
|
17
|
+
# NOTE: Values must match the operation prefixes used in handler implementations
|
|
18
|
+
# (e.g., "db" matches "db.query", "valkey" matches "valkey.get")
|
|
19
|
+
ProtocolName = Literal[
|
|
20
|
+
"http",
|
|
21
|
+
"db",
|
|
22
|
+
"kafka",
|
|
23
|
+
"vault",
|
|
24
|
+
"consul",
|
|
25
|
+
"valkey",
|
|
26
|
+
"grpc",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _default_enabled_protocols() -> list[ProtocolName]:
|
|
31
|
+
"""Create default list of enabled protocols.
|
|
32
|
+
|
|
33
|
+
Returns a properly typed list of default protocol names.
|
|
34
|
+
Using a factory function avoids cast() in default_factory for type safety.
|
|
35
|
+
"""
|
|
36
|
+
return ["http", "db"]
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class ModelEnabledProtocolsConfig(BaseModel):
|
|
40
|
+
"""Enabled protocols configuration model.
|
|
41
|
+
|
|
42
|
+
Defines which protocol types are enabled for the runtime.
|
|
43
|
+
|
|
44
|
+
Attributes:
|
|
45
|
+
enabled: List of enabled protocol type names (e.g., ['http', 'db'])
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
model_config = ConfigDict(
|
|
49
|
+
strict=True,
|
|
50
|
+
frozen=True,
|
|
51
|
+
extra="forbid",
|
|
52
|
+
from_attributes=True, # Support pytest-xdist compatibility
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
enabled: list[ProtocolName] = Field(
|
|
56
|
+
default_factory=_default_enabled_protocols,
|
|
57
|
+
description="List of enabled protocol type names",
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
__all__: list[str] = ["ModelEnabledProtocolsConfig", "ProtocolName"]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Event Bus Configuration Model.
|
|
4
|
+
|
|
5
|
+
This module provides the Pydantic model for event bus configuration.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import Literal
|
|
11
|
+
|
|
12
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ModelEventBusConfig(BaseModel):
|
|
16
|
+
"""Event bus configuration model.
|
|
17
|
+
|
|
18
|
+
Defines the event bus type and operational parameters.
|
|
19
|
+
|
|
20
|
+
Attributes:
|
|
21
|
+
type: Event bus implementation type ('inmemory' or 'kafka')
|
|
22
|
+
environment: Deployment environment name
|
|
23
|
+
max_history: Maximum event history to retain
|
|
24
|
+
circuit_breaker_threshold: Failure count before circuit breaker trips
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
model_config = ConfigDict(
|
|
28
|
+
strict=True,
|
|
29
|
+
frozen=True,
|
|
30
|
+
extra="forbid",
|
|
31
|
+
from_attributes=True, # Support pytest-xdist compatibility
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
type: Literal["inmemory", "kafka"] = Field(
|
|
35
|
+
default="inmemory",
|
|
36
|
+
description="Event bus implementation type",
|
|
37
|
+
)
|
|
38
|
+
environment: str = Field(
|
|
39
|
+
default="local",
|
|
40
|
+
description="Deployment environment name",
|
|
41
|
+
)
|
|
42
|
+
max_history: int = Field(
|
|
43
|
+
default=1000,
|
|
44
|
+
ge=0,
|
|
45
|
+
description="Maximum event history to retain",
|
|
46
|
+
)
|
|
47
|
+
circuit_breaker_threshold: int = Field(
|
|
48
|
+
default=5,
|
|
49
|
+
ge=1,
|
|
50
|
+
description="Failure count before circuit breaker trips",
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
__all__: list[str] = ["ModelEventBusConfig"]
|