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,196 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Registry for NodeRegistryEffect infrastructure dependencies.
|
|
4
|
+
|
|
5
|
+
This registry provides factory methods for creating NodeRegistryEffect
|
|
6
|
+
instances with their required dependencies resolved from the container.
|
|
7
|
+
|
|
8
|
+
Following ONEX naming conventions:
|
|
9
|
+
- File: registry_infra_<node_name>.py
|
|
10
|
+
- Class: RegistryInfra<NodeName>
|
|
11
|
+
|
|
12
|
+
The registry serves as the entry point for creating properly configured
|
|
13
|
+
effect node instances, documenting required protocols, and providing
|
|
14
|
+
node metadata for introspection.
|
|
15
|
+
|
|
16
|
+
Related:
|
|
17
|
+
- contract.yaml: Node contract defining operations and dependencies
|
|
18
|
+
- node.py: Declarative node implementation
|
|
19
|
+
- handlers/: Backend-specific operation handlers
|
|
20
|
+
|
|
21
|
+
.. versionadded:: 0.5.0
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
from __future__ import annotations
|
|
25
|
+
|
|
26
|
+
from typing import TYPE_CHECKING
|
|
27
|
+
|
|
28
|
+
if TYPE_CHECKING:
|
|
29
|
+
from omnibase_core.models.container.model_onex_container import ModelONEXContainer
|
|
30
|
+
from omnibase_infra.nodes.node_registry_effect.node import NodeRegistryEffect
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class RegistryInfraRegistryEffect:
|
|
34
|
+
"""Infrastructure registry for NodeRegistryEffect.
|
|
35
|
+
|
|
36
|
+
Provides dependency resolution and factory methods for creating
|
|
37
|
+
properly configured NodeRegistryEffect instances.
|
|
38
|
+
|
|
39
|
+
This registry follows the ONEX infrastructure registry pattern:
|
|
40
|
+
- Factory method for node creation with container injection
|
|
41
|
+
- Protocol requirements documentation for container validation
|
|
42
|
+
- Node type classification for routing decisions
|
|
43
|
+
- Capability listing for service discovery
|
|
44
|
+
|
|
45
|
+
Example:
|
|
46
|
+
>>> from omnibase_core.models.container import ModelONEXContainer
|
|
47
|
+
>>> from omnibase_infra.nodes.node_registry_effect.registry import (
|
|
48
|
+
... RegistryInfraRegistryEffect,
|
|
49
|
+
... )
|
|
50
|
+
>>>
|
|
51
|
+
>>> # Create container with required protocols registered
|
|
52
|
+
>>> container = ModelONEXContainer()
|
|
53
|
+
>>> # ... register protocols ...
|
|
54
|
+
>>>
|
|
55
|
+
>>> # Create node instance via registry
|
|
56
|
+
>>> effect = RegistryInfraRegistryEffect.create(container)
|
|
57
|
+
|
|
58
|
+
.. versionadded:: 0.5.0
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
@staticmethod
|
|
62
|
+
def create(container: ModelONEXContainer) -> NodeRegistryEffect:
|
|
63
|
+
"""Create a NodeRegistryEffect instance with resolved dependencies.
|
|
64
|
+
|
|
65
|
+
Factory method that creates a fully configured NodeRegistryEffect
|
|
66
|
+
using the provided ONEX container for dependency injection.
|
|
67
|
+
|
|
68
|
+
Args:
|
|
69
|
+
container: ONEX dependency injection container. Must have the
|
|
70
|
+
following protocols registered:
|
|
71
|
+
- ProtocolConsulClient: Consul service discovery operations
|
|
72
|
+
- ProtocolPostgresAdapter: PostgreSQL registration persistence
|
|
73
|
+
- ProtocolEffectIdempotencyStore: Idempotency tracking
|
|
74
|
+
- ProtocolCircuitBreaker: Backend circuit breaker protection
|
|
75
|
+
|
|
76
|
+
Returns:
|
|
77
|
+
Configured NodeRegistryEffect instance ready for operation.
|
|
78
|
+
|
|
79
|
+
Raises:
|
|
80
|
+
OnexError: If required protocols are not registered in container.
|
|
81
|
+
|
|
82
|
+
Example:
|
|
83
|
+
>>> container = ModelONEXContainer()
|
|
84
|
+
>>> container.register(ProtocolConsulClient, consul_client)
|
|
85
|
+
>>> container.register(ProtocolPostgresAdapter, postgres_adapter)
|
|
86
|
+
>>> effect = RegistryInfraRegistryEffect.create(container)
|
|
87
|
+
|
|
88
|
+
.. versionadded:: 0.5.0
|
|
89
|
+
"""
|
|
90
|
+
from omnibase_infra.nodes.node_registry_effect.node import NodeRegistryEffect
|
|
91
|
+
|
|
92
|
+
return NodeRegistryEffect(container)
|
|
93
|
+
|
|
94
|
+
@staticmethod
|
|
95
|
+
def get_required_protocols() -> list[str]:
|
|
96
|
+
"""Get list of protocols required by this node.
|
|
97
|
+
|
|
98
|
+
Returns the protocol class names that must be registered in the
|
|
99
|
+
container before creating a NodeRegistryEffect instance.
|
|
100
|
+
|
|
101
|
+
Returns:
|
|
102
|
+
List of protocol class names required for node operation.
|
|
103
|
+
|
|
104
|
+
Example:
|
|
105
|
+
>>> protocols = RegistryInfraRegistryEffect.get_required_protocols()
|
|
106
|
+
>>> for proto in protocols:
|
|
107
|
+
... if not container.has(proto):
|
|
108
|
+
... raise ConfigurationError(f"Missing: {proto}")
|
|
109
|
+
|
|
110
|
+
.. versionadded:: 0.5.0
|
|
111
|
+
"""
|
|
112
|
+
return [
|
|
113
|
+
"ProtocolConsulClient",
|
|
114
|
+
"ProtocolPostgresAdapter",
|
|
115
|
+
"ProtocolEffectIdempotencyStore",
|
|
116
|
+
"ProtocolCircuitBreaker",
|
|
117
|
+
]
|
|
118
|
+
|
|
119
|
+
@staticmethod
|
|
120
|
+
def get_node_type() -> str:
|
|
121
|
+
"""Get the node type classification.
|
|
122
|
+
|
|
123
|
+
Returns the ONEX node archetype for this node, used for
|
|
124
|
+
routing decisions and execution context selection.
|
|
125
|
+
|
|
126
|
+
Returns:
|
|
127
|
+
Node type string ("EFFECT").
|
|
128
|
+
|
|
129
|
+
Note:
|
|
130
|
+
EFFECT nodes perform external I/O operations and should
|
|
131
|
+
be treated as side-effecting by the runtime.
|
|
132
|
+
|
|
133
|
+
.. versionadded:: 0.5.0
|
|
134
|
+
"""
|
|
135
|
+
return "EFFECT"
|
|
136
|
+
|
|
137
|
+
@staticmethod
|
|
138
|
+
def get_node_name() -> str:
|
|
139
|
+
"""Get the canonical node name.
|
|
140
|
+
|
|
141
|
+
Returns:
|
|
142
|
+
The node name as defined in contract.yaml.
|
|
143
|
+
|
|
144
|
+
.. versionadded:: 0.5.0
|
|
145
|
+
"""
|
|
146
|
+
return "node_registry_effect"
|
|
147
|
+
|
|
148
|
+
@staticmethod
|
|
149
|
+
def get_capabilities() -> list[str]:
|
|
150
|
+
"""Get list of capabilities provided by this node.
|
|
151
|
+
|
|
152
|
+
Returns capability identifiers that can be used for service
|
|
153
|
+
discovery and feature detection.
|
|
154
|
+
|
|
155
|
+
Returns:
|
|
156
|
+
List of capability identifiers.
|
|
157
|
+
|
|
158
|
+
.. versionadded:: 0.5.0
|
|
159
|
+
"""
|
|
160
|
+
return [
|
|
161
|
+
"dual_backend_registration",
|
|
162
|
+
"partial_failure_handling",
|
|
163
|
+
"targeted_retry",
|
|
164
|
+
"idempotent_operations",
|
|
165
|
+
"circuit_breaker_protection",
|
|
166
|
+
"parallel_execution",
|
|
167
|
+
]
|
|
168
|
+
|
|
169
|
+
@staticmethod
|
|
170
|
+
def get_supported_operations() -> list[str]:
|
|
171
|
+
"""Get list of operations supported by this node.
|
|
172
|
+
|
|
173
|
+
Returns:
|
|
174
|
+
List of operation identifiers as defined in contract.yaml.
|
|
175
|
+
|
|
176
|
+
.. versionadded:: 0.5.0
|
|
177
|
+
"""
|
|
178
|
+
return [
|
|
179
|
+
"register_node",
|
|
180
|
+
"deregister_node",
|
|
181
|
+
"retry_partial_failure",
|
|
182
|
+
]
|
|
183
|
+
|
|
184
|
+
@staticmethod
|
|
185
|
+
def get_backends() -> list[str]:
|
|
186
|
+
"""Get list of backend types this node interacts with.
|
|
187
|
+
|
|
188
|
+
Returns:
|
|
189
|
+
List of backend identifiers.
|
|
190
|
+
|
|
191
|
+
.. versionadded:: 0.5.0
|
|
192
|
+
"""
|
|
193
|
+
return ["consul", "postgres"]
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
__all__ = ["RegistryInfraRegistryEffect"]
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Service Discovery Effect Node - Capability-Oriented Service Discovery.
|
|
4
|
+
|
|
5
|
+
This module provides NodeServiceDiscoveryEffect, a capability-oriented effect
|
|
6
|
+
node for service discovery operations with pluggable backend support.
|
|
7
|
+
|
|
8
|
+
Capability-Oriented Design:
|
|
9
|
+
Named by capability (service.discovery) not vendor (consul/k8s/etcd).
|
|
10
|
+
Following the ONEX principle: "I'm interested in what you do, not what you are"
|
|
11
|
+
|
|
12
|
+
Supported Operations:
|
|
13
|
+
- register_service: Register a service with the backend
|
|
14
|
+
- deregister_service: Remove a service registration
|
|
15
|
+
- discover_services: Query for service instances
|
|
16
|
+
- health_check: Verify backend connectivity
|
|
17
|
+
|
|
18
|
+
Pluggable Backends:
|
|
19
|
+
- Consul: HashiCorp Consul service discovery
|
|
20
|
+
- Kubernetes: K8s native service discovery
|
|
21
|
+
- Etcd: CoreOS etcd service discovery
|
|
22
|
+
|
|
23
|
+
Node:
|
|
24
|
+
NodeServiceDiscoveryEffect: Declarative effect node for service discovery.
|
|
25
|
+
|
|
26
|
+
Models:
|
|
27
|
+
ModelServiceRegistration: Input model for registration operations.
|
|
28
|
+
ModelServiceInfo: Information about a discovered service.
|
|
29
|
+
ModelDiscoveryQuery: Query parameters for discovery operations.
|
|
30
|
+
ModelDiscoveryResult: Result of discovery queries.
|
|
31
|
+
ModelRegistrationResult: Result of registration/deregistration.
|
|
32
|
+
|
|
33
|
+
Enums:
|
|
34
|
+
EnumHealthStatus: Health status values (HEALTHY, UNHEALTHY, UNKNOWN).
|
|
35
|
+
|
|
36
|
+
Protocol:
|
|
37
|
+
ProtocolDiscoveryOperations: Protocol for pluggable backends.
|
|
38
|
+
|
|
39
|
+
Registry:
|
|
40
|
+
RegistryInfraServiceDiscovery: DI registry for node dependencies.
|
|
41
|
+
|
|
42
|
+
Example:
|
|
43
|
+
.. code-block:: python
|
|
44
|
+
|
|
45
|
+
from omnibase_core.models.container import ModelONEXContainer
|
|
46
|
+
from omnibase_infra.nodes.node_service_discovery_effect import (
|
|
47
|
+
NodeServiceDiscoveryEffect,
|
|
48
|
+
ModelServiceRegistration,
|
|
49
|
+
RegistryInfraServiceDiscovery,
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
# Setup container with handler
|
|
53
|
+
container = ModelONEXContainer()
|
|
54
|
+
RegistryInfraServiceDiscovery.register_with_handler(
|
|
55
|
+
container,
|
|
56
|
+
handler=consul_handler,
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
# Create node
|
|
60
|
+
node = NodeServiceDiscoveryEffect(container)
|
|
61
|
+
|
|
62
|
+
# Register a service
|
|
63
|
+
registration = ModelServiceRegistration(
|
|
64
|
+
service_name="user-service",
|
|
65
|
+
address="localhost",
|
|
66
|
+
port=8080,
|
|
67
|
+
tags=("api", "v2"),
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
Related:
|
|
71
|
+
- contract.yaml: ONEX contract with capabilities and I/O definitions
|
|
72
|
+
- OMN-1131: Capability-oriented node architecture
|
|
73
|
+
|
|
74
|
+
.. versionadded:: 0.6.0
|
|
75
|
+
"""
|
|
76
|
+
|
|
77
|
+
from .models import (
|
|
78
|
+
EnumHealthStatus,
|
|
79
|
+
ModelDiscoveryQuery,
|
|
80
|
+
ModelDiscoveryResult,
|
|
81
|
+
ModelQueryMetadata,
|
|
82
|
+
ModelRegistrationResult,
|
|
83
|
+
ModelServiceInfo,
|
|
84
|
+
ModelServiceRegistration,
|
|
85
|
+
)
|
|
86
|
+
from .node import (
|
|
87
|
+
NodeServiceDiscoveryEffect,
|
|
88
|
+
)
|
|
89
|
+
from .protocols import (
|
|
90
|
+
ProtocolDiscoveryOperations,
|
|
91
|
+
)
|
|
92
|
+
from .registry import (
|
|
93
|
+
RegistryInfraServiceDiscovery,
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
__all__ = [
|
|
97
|
+
# Node
|
|
98
|
+
"NodeServiceDiscoveryEffect",
|
|
99
|
+
# Models
|
|
100
|
+
"EnumHealthStatus",
|
|
101
|
+
"ModelDiscoveryQuery",
|
|
102
|
+
"ModelDiscoveryResult",
|
|
103
|
+
"ModelQueryMetadata",
|
|
104
|
+
"ModelRegistrationResult",
|
|
105
|
+
"ModelServiceInfo",
|
|
106
|
+
"ModelServiceRegistration",
|
|
107
|
+
# Protocol
|
|
108
|
+
"ProtocolDiscoveryOperations",
|
|
109
|
+
# Registry
|
|
110
|
+
"RegistryInfraServiceDiscovery",
|
|
111
|
+
]
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
#
|
|
4
|
+
# ONEX Node Contract - Service Discovery Effect Node
|
|
5
|
+
#
|
|
6
|
+
# Capability-Oriented Design: "I'm interested in what you do, not what you are"
|
|
7
|
+
# This node is named by capability (service.discovery) not vendor (consul/k8s/etcd).
|
|
8
|
+
# Supports pluggable backends through ProtocolDiscoveryOperations.
|
|
9
|
+
#
|
|
10
|
+
contract_version:
|
|
11
|
+
major: 1
|
|
12
|
+
minor: 0
|
|
13
|
+
patch: 0
|
|
14
|
+
node_version: "1.0.0"
|
|
15
|
+
name: "node_service_discovery_effect"
|
|
16
|
+
node_type: "EFFECT_GENERIC"
|
|
17
|
+
description: >
|
|
18
|
+
Effect node for service discovery operations. Provides capability-oriented service registration, deregistration, and discovery with pluggable backend support (Consul, Kubernetes, Etcd). Named by capability, not vendor.
|
|
19
|
+
|
|
20
|
+
# Strongly typed I/O models
|
|
21
|
+
input_model:
|
|
22
|
+
name: "ModelServiceRegistration"
|
|
23
|
+
module: "omnibase_infra.nodes.node_service_discovery_effect.models"
|
|
24
|
+
description: "Input model for service registration operations."
|
|
25
|
+
output_model:
|
|
26
|
+
name: "ModelDiscoveryResult"
|
|
27
|
+
module: "omnibase_infra.nodes.node_service_discovery_effect.models"
|
|
28
|
+
description: "Output model for service discovery query results."
|
|
29
|
+
# Capability declaration - what this node CAN DO
|
|
30
|
+
capabilities:
|
|
31
|
+
- name: "service.discovery"
|
|
32
|
+
description: >
|
|
33
|
+
Discover services by name, tags, or health status. Provides a unified interface for querying service locations across different backends.
|
|
34
|
+
|
|
35
|
+
- name: "service.registration"
|
|
36
|
+
description: >
|
|
37
|
+
Register services with service discovery backends. Supports health check configuration and metadata attachment.
|
|
38
|
+
|
|
39
|
+
- name: "service.deregistration"
|
|
40
|
+
description: >
|
|
41
|
+
Deregister services from service discovery backends. Handles cleanup and graceful removal.
|
|
42
|
+
|
|
43
|
+
- name: "service.health_check"
|
|
44
|
+
description: >
|
|
45
|
+
Health check operations for service discovery backend connectivity and availability verification.
|
|
46
|
+
|
|
47
|
+
# IO operations (EFFECT node specific)
|
|
48
|
+
io_operations:
|
|
49
|
+
- operation: "register_service"
|
|
50
|
+
description: "Register a service with the configured backend"
|
|
51
|
+
input_fields:
|
|
52
|
+
- service_id
|
|
53
|
+
- service_name
|
|
54
|
+
- address
|
|
55
|
+
- port
|
|
56
|
+
- tags
|
|
57
|
+
- metadata
|
|
58
|
+
- health_check
|
|
59
|
+
output_fields:
|
|
60
|
+
- success
|
|
61
|
+
- service_id
|
|
62
|
+
- error
|
|
63
|
+
- operation: "deregister_service"
|
|
64
|
+
description: "Deregister a service from the configured backend"
|
|
65
|
+
input_fields:
|
|
66
|
+
- service_id
|
|
67
|
+
output_fields:
|
|
68
|
+
- success
|
|
69
|
+
- error
|
|
70
|
+
- operation: "discover_services"
|
|
71
|
+
description: "Discover services matching query criteria"
|
|
72
|
+
input_fields:
|
|
73
|
+
- service_name
|
|
74
|
+
- tags
|
|
75
|
+
- health_filter
|
|
76
|
+
output_fields:
|
|
77
|
+
- services
|
|
78
|
+
- query_metadata
|
|
79
|
+
- operation: "health_check"
|
|
80
|
+
description: "Check health of the service discovery backend"
|
|
81
|
+
input_fields: []
|
|
82
|
+
output_fields:
|
|
83
|
+
- status
|
|
84
|
+
- backend_type
|
|
85
|
+
- details
|
|
86
|
+
# Dependencies (protocols this node requires)
|
|
87
|
+
dependencies:
|
|
88
|
+
- name: "service_discovery_handler"
|
|
89
|
+
type: "protocol"
|
|
90
|
+
class_name: "ProtocolDiscoveryOperations"
|
|
91
|
+
module: "omnibase_infra.nodes.node_service_discovery_effect.protocols"
|
|
92
|
+
description: >
|
|
93
|
+
Protocol for pluggable service discovery backends. Implementations include Consul, Kubernetes, and Etcd handlers.
|
|
94
|
+
|
|
95
|
+
# Error handling configuration
|
|
96
|
+
error_handling:
|
|
97
|
+
retry_policy:
|
|
98
|
+
max_retries: 3
|
|
99
|
+
initial_delay_ms: 100
|
|
100
|
+
max_delay_ms: 5000
|
|
101
|
+
exponential_base: 2
|
|
102
|
+
retry_on:
|
|
103
|
+
- "InfraConnectionError"
|
|
104
|
+
- "InfraTimeoutError"
|
|
105
|
+
circuit_breaker:
|
|
106
|
+
enabled: true
|
|
107
|
+
failure_threshold: 5
|
|
108
|
+
reset_timeout_ms: 60000
|
|
109
|
+
error_types:
|
|
110
|
+
- name: "ServiceRegistrationError"
|
|
111
|
+
description: "Error during service registration"
|
|
112
|
+
recoverable: true
|
|
113
|
+
retry_strategy: "exponential_backoff"
|
|
114
|
+
- name: "ServiceDiscoveryError"
|
|
115
|
+
description: "Error during service discovery query"
|
|
116
|
+
recoverable: true
|
|
117
|
+
retry_strategy: "exponential_backoff"
|
|
118
|
+
- name: "BackendUnavailableError"
|
|
119
|
+
description: "Service discovery backend is unavailable"
|
|
120
|
+
recoverable: true
|
|
121
|
+
retry_strategy: "exponential_backoff"
|
|
122
|
+
# Health check configuration
|
|
123
|
+
health_check:
|
|
124
|
+
enabled: true
|
|
125
|
+
endpoint: "/health"
|
|
126
|
+
interval_seconds: 30
|
|
127
|
+
# Model definitions for contract documentation
|
|
128
|
+
definitions:
|
|
129
|
+
ModelServiceRegistration:
|
|
130
|
+
type: object
|
|
131
|
+
description: "Input model for service registration"
|
|
132
|
+
properties:
|
|
133
|
+
service_id:
|
|
134
|
+
type: string
|
|
135
|
+
description: "Unique identifier for the service instance"
|
|
136
|
+
service_name:
|
|
137
|
+
type: string
|
|
138
|
+
description: "Logical name of the service (e.g., 'user-service')"
|
|
139
|
+
address:
|
|
140
|
+
type: string
|
|
141
|
+
description: "Network address where service is accessible"
|
|
142
|
+
port:
|
|
143
|
+
type: integer
|
|
144
|
+
description: "Port number for the service"
|
|
145
|
+
tags:
|
|
146
|
+
type: array
|
|
147
|
+
items:
|
|
148
|
+
type: string
|
|
149
|
+
description: "Tags for service categorization and filtering"
|
|
150
|
+
metadata:
|
|
151
|
+
type: object
|
|
152
|
+
description: "Additional key-value metadata for the service"
|
|
153
|
+
health_check:
|
|
154
|
+
type: object
|
|
155
|
+
description: "Health check configuration"
|
|
156
|
+
required:
|
|
157
|
+
- service_id
|
|
158
|
+
- service_name
|
|
159
|
+
ModelServiceInfo:
|
|
160
|
+
type: object
|
|
161
|
+
description: "Information about a discovered service"
|
|
162
|
+
properties:
|
|
163
|
+
service_id:
|
|
164
|
+
type: string
|
|
165
|
+
description: "Unique identifier for the service instance"
|
|
166
|
+
service_name:
|
|
167
|
+
type: string
|
|
168
|
+
description: "Logical name of the service"
|
|
169
|
+
address:
|
|
170
|
+
type: string
|
|
171
|
+
description: "Network address of the service"
|
|
172
|
+
port:
|
|
173
|
+
type: integer
|
|
174
|
+
description: "Port number of the service"
|
|
175
|
+
tags:
|
|
176
|
+
type: array
|
|
177
|
+
items:
|
|
178
|
+
type: string
|
|
179
|
+
description: "Tags associated with the service"
|
|
180
|
+
health_status:
|
|
181
|
+
type: string
|
|
182
|
+
description: "Current health status (healthy, unhealthy, unknown)"
|
|
183
|
+
metadata:
|
|
184
|
+
type: object
|
|
185
|
+
description: "Service metadata"
|
|
186
|
+
required:
|
|
187
|
+
- service_id
|
|
188
|
+
- service_name
|
|
189
|
+
- health_status
|
|
190
|
+
ModelDiscoveryQuery:
|
|
191
|
+
type: object
|
|
192
|
+
description: "Query parameters for service discovery"
|
|
193
|
+
properties:
|
|
194
|
+
service_name:
|
|
195
|
+
type: string
|
|
196
|
+
description: "Service name to search for (optional)"
|
|
197
|
+
tags:
|
|
198
|
+
type: array
|
|
199
|
+
items:
|
|
200
|
+
type: string
|
|
201
|
+
description: "Tags to filter by (optional)"
|
|
202
|
+
health_filter:
|
|
203
|
+
type: string
|
|
204
|
+
description: "Health status filter (all, healthy, unhealthy)"
|
|
205
|
+
ModelDiscoveryResult:
|
|
206
|
+
type: object
|
|
207
|
+
description: "Result of service discovery query"
|
|
208
|
+
properties:
|
|
209
|
+
services:
|
|
210
|
+
type: array
|
|
211
|
+
items:
|
|
212
|
+
$ref: "#/definitions/ModelServiceInfo"
|
|
213
|
+
description: "List of discovered services"
|
|
214
|
+
query_metadata:
|
|
215
|
+
type: object
|
|
216
|
+
description: "Metadata about the query execution"
|
|
217
|
+
required:
|
|
218
|
+
- services
|
|
219
|
+
ModelRegistrationResult:
|
|
220
|
+
type: object
|
|
221
|
+
description: "Result of service registration operation"
|
|
222
|
+
properties:
|
|
223
|
+
success:
|
|
224
|
+
type: boolean
|
|
225
|
+
description: "Whether registration succeeded"
|
|
226
|
+
service_id:
|
|
227
|
+
type: string
|
|
228
|
+
description: "ID of the registered service"
|
|
229
|
+
error:
|
|
230
|
+
type: string
|
|
231
|
+
description: "Error message if registration failed"
|
|
232
|
+
required:
|
|
233
|
+
- success
|
|
234
|
+
# Metadata
|
|
235
|
+
metadata:
|
|
236
|
+
author: "OmniNode Team"
|
|
237
|
+
license: "MIT"
|
|
238
|
+
created: "2025-01-06"
|
|
239
|
+
tags:
|
|
240
|
+
- effect
|
|
241
|
+
- service-discovery
|
|
242
|
+
- capability-oriented
|
|
243
|
+
- consul
|
|
244
|
+
- kubernetes
|
|
245
|
+
- etcd
|
|
246
|
+
- pluggable
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Models for Service Discovery Effect Node.
|
|
4
|
+
|
|
5
|
+
This module exports models for the service discovery effect node:
|
|
6
|
+
|
|
7
|
+
Enums:
|
|
8
|
+
EnumHealthStatus: Health status values (HEALTHY, UNHEALTHY, UNKNOWN).
|
|
9
|
+
EnumServiceDiscoveryOperation: Operation types (REGISTER, DEREGISTER).
|
|
10
|
+
|
|
11
|
+
Models:
|
|
12
|
+
ModelHealthCheckConfig: Health check configuration for registration.
|
|
13
|
+
ModelServiceRegistration: Input model for service registration.
|
|
14
|
+
ModelServiceInfo: Information about a discovered service.
|
|
15
|
+
ModelDiscoveryQuery: Query parameters for service discovery.
|
|
16
|
+
ModelDiscoveryResult: Result of service discovery query.
|
|
17
|
+
ModelQueryMetadata: Metadata about query execution.
|
|
18
|
+
ModelRegistrationResult: Result of registration/deregistration.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from .enum_health_status import (
|
|
22
|
+
EnumHealthStatus,
|
|
23
|
+
)
|
|
24
|
+
from .enum_service_discovery_operation import (
|
|
25
|
+
EnumServiceDiscoveryOperation,
|
|
26
|
+
)
|
|
27
|
+
from .model_discovery_query import (
|
|
28
|
+
ModelDiscoveryQuery,
|
|
29
|
+
)
|
|
30
|
+
from .model_discovery_result import (
|
|
31
|
+
ModelDiscoveryResult,
|
|
32
|
+
)
|
|
33
|
+
from .model_health_check_config import (
|
|
34
|
+
ModelHealthCheckConfig,
|
|
35
|
+
)
|
|
36
|
+
from .model_query_metadata import (
|
|
37
|
+
ModelQueryMetadata,
|
|
38
|
+
)
|
|
39
|
+
from .model_registration_result import (
|
|
40
|
+
ModelRegistrationResult,
|
|
41
|
+
)
|
|
42
|
+
from .model_service_discovery_health_check_details import (
|
|
43
|
+
ModelServiceDiscoveryHealthCheckDetails,
|
|
44
|
+
)
|
|
45
|
+
from .model_service_discovery_health_check_result import (
|
|
46
|
+
ModelServiceDiscoveryHealthCheckResult,
|
|
47
|
+
)
|
|
48
|
+
from .model_service_info import (
|
|
49
|
+
ModelServiceInfo,
|
|
50
|
+
)
|
|
51
|
+
from .model_service_registration import (
|
|
52
|
+
ModelServiceRegistration,
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
__all__ = [
|
|
56
|
+
"EnumHealthStatus",
|
|
57
|
+
"EnumServiceDiscoveryOperation",
|
|
58
|
+
"ModelDiscoveryQuery",
|
|
59
|
+
"ModelDiscoveryResult",
|
|
60
|
+
"ModelHealthCheckConfig",
|
|
61
|
+
"ModelQueryMetadata",
|
|
62
|
+
"ModelRegistrationResult",
|
|
63
|
+
"ModelServiceDiscoveryHealthCheckDetails",
|
|
64
|
+
"ModelServiceDiscoveryHealthCheckResult",
|
|
65
|
+
"ModelServiceInfo",
|
|
66
|
+
"ModelServiceRegistration",
|
|
67
|
+
]
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Health Status Enum for Service Discovery.
|
|
4
|
+
|
|
5
|
+
This module provides EnumHealthStatus, representing the health status
|
|
6
|
+
of a service instance in service discovery operations.
|
|
7
|
+
|
|
8
|
+
Architecture:
|
|
9
|
+
EnumHealthStatus defines the possible health states for services:
|
|
10
|
+
- HEALTHY: Service is responding and passing health checks
|
|
11
|
+
- UNHEALTHY: Service is failing health checks
|
|
12
|
+
- UNKNOWN: Health status cannot be determined
|
|
13
|
+
|
|
14
|
+
This enum is backend-agnostic and represents a normalized view
|
|
15
|
+
of health status across Consul, Kubernetes, Etcd, etc.
|
|
16
|
+
|
|
17
|
+
Related:
|
|
18
|
+
- ModelServiceInfo: Uses this enum for health_status field
|
|
19
|
+
- ModelDiscoveryQuery: Uses this enum for health_filter field
|
|
20
|
+
- OMN-1131: Capability-oriented node architecture
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
from __future__ import annotations
|
|
24
|
+
|
|
25
|
+
from enum import Enum
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class EnumHealthStatus(str, Enum):
|
|
29
|
+
"""Health status of a service instance.
|
|
30
|
+
|
|
31
|
+
Represents the possible health states for services discovered
|
|
32
|
+
through service discovery backends.
|
|
33
|
+
|
|
34
|
+
Values:
|
|
35
|
+
HEALTHY: Service is responding and passing health checks.
|
|
36
|
+
UNHEALTHY: Service is failing health checks.
|
|
37
|
+
UNKNOWN: Health status cannot be determined.
|
|
38
|
+
|
|
39
|
+
Backend Mappings:
|
|
40
|
+
- Consul: passing -> HEALTHY, critical -> UNHEALTHY, warning -> UNHEALTHY
|
|
41
|
+
- Kubernetes: Ready=True -> HEALTHY, Ready=False -> UNHEALTHY
|
|
42
|
+
- Etcd: Based on TTL and key presence
|
|
43
|
+
|
|
44
|
+
Example:
|
|
45
|
+
>>> status = EnumHealthStatus.HEALTHY
|
|
46
|
+
>>> status.value
|
|
47
|
+
'healthy'
|
|
48
|
+
>>> status.is_healthy
|
|
49
|
+
True
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
HEALTHY = "healthy"
|
|
53
|
+
UNHEALTHY = "unhealthy"
|
|
54
|
+
UNKNOWN = "unknown"
|
|
55
|
+
|
|
56
|
+
@property
|
|
57
|
+
def is_healthy(self) -> bool:
|
|
58
|
+
"""Return True if the status indicates a healthy service."""
|
|
59
|
+
return self == EnumHealthStatus.HEALTHY
|
|
60
|
+
|
|
61
|
+
@property
|
|
62
|
+
def is_unhealthy(self) -> bool:
|
|
63
|
+
"""Return True if the status indicates an unhealthy service."""
|
|
64
|
+
return self == EnumHealthStatus.UNHEALTHY
|
|
65
|
+
|
|
66
|
+
@property
|
|
67
|
+
def is_unknown(self) -> bool:
|
|
68
|
+
"""Return True if the health status is unknown."""
|
|
69
|
+
return self == EnumHealthStatus.UNKNOWN
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
__all__ = ["EnumHealthStatus"]
|