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,376 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Topic naming constants and utilities for ONEX event bus.
|
|
4
|
+
|
|
5
|
+
This module defines topic naming conventions for the ONEX event-driven architecture,
|
|
6
|
+
including Dead Letter Queue (DLQ) topics for permanently failed messages.
|
|
7
|
+
|
|
8
|
+
Topic Naming Conventions:
|
|
9
|
+
ONEX uses two primary topic naming formats:
|
|
10
|
+
|
|
11
|
+
1. **ONEX Kafka Format**: `onex.<domain>.<type>`
|
|
12
|
+
- Example: `onex.registration.events`
|
|
13
|
+
- Used for core ONEX system topics
|
|
14
|
+
|
|
15
|
+
2. **Environment-Aware Format**: `<env>.<domain>.<category>.<version>`
|
|
16
|
+
- Example: `dev.user.events.v1`, `prod.order.commands.v1`
|
|
17
|
+
- Used for application-level message routing
|
|
18
|
+
|
|
19
|
+
DLQ Topic Naming:
|
|
20
|
+
Dead Letter Queue topics follow the Environment-Aware format with 'dlq' as the domain:
|
|
21
|
+
|
|
22
|
+
- **DLQ Topic Format**: `<env>.dlq.<category>.<version>`
|
|
23
|
+
- Example: `dev.dlq.intents.v1`, `prod.dlq.events.v1`
|
|
24
|
+
|
|
25
|
+
This convention ensures:
|
|
26
|
+
- DLQ topics are clearly identifiable by the 'dlq' domain
|
|
27
|
+
- Category (intents, events, commands) is preserved for routing analysis
|
|
28
|
+
- Environment separation for multi-environment deployments
|
|
29
|
+
- Version control for DLQ message schema evolution
|
|
30
|
+
|
|
31
|
+
Usage:
|
|
32
|
+
>>> from omnibase_infra.event_bus.topic_constants import (
|
|
33
|
+
... build_dlq_topic,
|
|
34
|
+
... DLQ_INTENT_TOPIC_SUFFIX,
|
|
35
|
+
... )
|
|
36
|
+
>>>
|
|
37
|
+
>>> # Build environment-specific DLQ topic
|
|
38
|
+
>>> topic = build_dlq_topic("prod", "intents")
|
|
39
|
+
>>> print(topic)
|
|
40
|
+
prod.dlq.intents.v1
|
|
41
|
+
>>>
|
|
42
|
+
>>> # Using pre-defined suffix
|
|
43
|
+
>>> topic = f"dev.{DLQ_INTENT_TOPIC_SUFFIX}"
|
|
44
|
+
>>> print(topic)
|
|
45
|
+
dev.dlq.intents.v1
|
|
46
|
+
|
|
47
|
+
See Also:
|
|
48
|
+
- ModelKafkaEventBusConfig.dead_letter_topic: DLQ configuration
|
|
49
|
+
- EventBusKafka._publish_to_dlq(): DLQ publishing implementation
|
|
50
|
+
- topic_category_validator.py: Topic naming validation
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
from __future__ import annotations
|
|
54
|
+
|
|
55
|
+
import re
|
|
56
|
+
from typing import Final
|
|
57
|
+
|
|
58
|
+
from omnibase_infra.enums import EnumInfraTransportType
|
|
59
|
+
from omnibase_infra.errors import ModelInfraErrorContext, ProtocolConfigurationError
|
|
60
|
+
|
|
61
|
+
# ==============================================================================
|
|
62
|
+
# DLQ Topic Version
|
|
63
|
+
# ==============================================================================
|
|
64
|
+
# Version suffix for DLQ topics. Increment when DLQ message schema changes.
|
|
65
|
+
# Current schema includes: original_topic, original_message, failure_reason,
|
|
66
|
+
# failure_timestamp, correlation_id, retry_count, error_type
|
|
67
|
+
|
|
68
|
+
DLQ_TOPIC_VERSION: Final[str] = "v1"
|
|
69
|
+
|
|
70
|
+
# ==============================================================================
|
|
71
|
+
# DLQ Topic Domain
|
|
72
|
+
# ==============================================================================
|
|
73
|
+
# The 'dlq' domain identifies Dead Letter Queue topics
|
|
74
|
+
|
|
75
|
+
DLQ_DOMAIN: Final[str] = "dlq"
|
|
76
|
+
|
|
77
|
+
# ==============================================================================
|
|
78
|
+
# DLQ Topic Suffixes (without environment prefix)
|
|
79
|
+
# ==============================================================================
|
|
80
|
+
# These suffixes can be combined with environment prefix to form full topic names.
|
|
81
|
+
# Format: dlq.<category>.<version>
|
|
82
|
+
|
|
83
|
+
DLQ_INTENT_TOPIC_SUFFIX: Final[str] = f"{DLQ_DOMAIN}.intents.{DLQ_TOPIC_VERSION}"
|
|
84
|
+
"""DLQ topic suffix for permanently failed intents: 'dlq.intents.v1'"""
|
|
85
|
+
|
|
86
|
+
DLQ_EVENT_TOPIC_SUFFIX: Final[str] = f"{DLQ_DOMAIN}.events.{DLQ_TOPIC_VERSION}"
|
|
87
|
+
"""DLQ topic suffix for permanently failed events: 'dlq.events.v1'"""
|
|
88
|
+
|
|
89
|
+
DLQ_COMMAND_TOPIC_SUFFIX: Final[str] = f"{DLQ_DOMAIN}.commands.{DLQ_TOPIC_VERSION}"
|
|
90
|
+
"""DLQ topic suffix for permanently failed commands: 'dlq.commands.v1'"""
|
|
91
|
+
|
|
92
|
+
# ==============================================================================
|
|
93
|
+
# Category-to-Suffix Mapping
|
|
94
|
+
# ==============================================================================
|
|
95
|
+
|
|
96
|
+
DLQ_CATEGORY_SUFFIXES: Final[dict[str, str]] = {
|
|
97
|
+
"intent": DLQ_INTENT_TOPIC_SUFFIX,
|
|
98
|
+
"intents": DLQ_INTENT_TOPIC_SUFFIX,
|
|
99
|
+
"event": DLQ_EVENT_TOPIC_SUFFIX,
|
|
100
|
+
"events": DLQ_EVENT_TOPIC_SUFFIX,
|
|
101
|
+
"command": DLQ_COMMAND_TOPIC_SUFFIX,
|
|
102
|
+
"commands": DLQ_COMMAND_TOPIC_SUFFIX,
|
|
103
|
+
}
|
|
104
|
+
"""Mapping from message category to DLQ topic suffix (singular and plural forms)."""
|
|
105
|
+
|
|
106
|
+
# ==============================================================================
|
|
107
|
+
# DLQ Topic Validation Pattern
|
|
108
|
+
# ==============================================================================
|
|
109
|
+
# Validates DLQ topics in Environment-Aware format: <env>.dlq.<category>.<version>
|
|
110
|
+
# - env: alphanumeric with underscores/hyphens (e.g., dev, staging, prod, test-1)
|
|
111
|
+
# - domain: must be 'dlq'
|
|
112
|
+
# - category: intents, events, or commands
|
|
113
|
+
# - version: v followed by digits (e.g., v1, v2)
|
|
114
|
+
|
|
115
|
+
DLQ_TOPIC_PATTERN: Final[re.Pattern[str]] = re.compile(
|
|
116
|
+
r"^(?P<env>[\w-]+)\.dlq\.(?P<category>intents|events|commands)\.(?P<version>v\d+)$",
|
|
117
|
+
re.IGNORECASE,
|
|
118
|
+
)
|
|
119
|
+
"""
|
|
120
|
+
Regex pattern for validating DLQ topic names.
|
|
121
|
+
|
|
122
|
+
Groups:
|
|
123
|
+
- env: Environment identifier (e.g., 'dev', 'prod')
|
|
124
|
+
- category: Message category (intents, events, commands)
|
|
125
|
+
- version: Topic version (e.g., 'v1')
|
|
126
|
+
|
|
127
|
+
Example matches:
|
|
128
|
+
- dev.dlq.intents.v1
|
|
129
|
+
- prod.dlq.events.v1
|
|
130
|
+
- staging.dlq.commands.v2
|
|
131
|
+
"""
|
|
132
|
+
|
|
133
|
+
# ==============================================================================
|
|
134
|
+
# Environment Validation Pattern
|
|
135
|
+
# ==============================================================================
|
|
136
|
+
# Validates environment identifier: alphanumeric with underscores/hyphens only.
|
|
137
|
+
# This is the same pattern used in DLQ_TOPIC_PATTERN for the env group.
|
|
138
|
+
|
|
139
|
+
ENV_PATTERN: Final[re.Pattern[str]] = re.compile(r"^[\w-]+$")
|
|
140
|
+
"""
|
|
141
|
+
Regex pattern for validating environment identifiers.
|
|
142
|
+
|
|
143
|
+
Valid examples: 'dev', 'prod', 'staging', 'test-1', 'my_env'
|
|
144
|
+
Invalid examples: 'env.name', 'env name', 'env@name', ''
|
|
145
|
+
"""
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def build_dlq_topic(
|
|
149
|
+
environment: str,
|
|
150
|
+
category: str,
|
|
151
|
+
*,
|
|
152
|
+
version: str | None = None,
|
|
153
|
+
) -> str:
|
|
154
|
+
"""Build a DLQ topic name from components.
|
|
155
|
+
|
|
156
|
+
Constructs a Dead Letter Queue topic name following ONEX conventions
|
|
157
|
+
in the Environment-Aware format: `<env>.dlq.<category>.<version>`.
|
|
158
|
+
|
|
159
|
+
Args:
|
|
160
|
+
environment: Environment identifier (e.g., 'dev', 'prod', 'staging').
|
|
161
|
+
Must be alphanumeric with optional underscores or hyphens.
|
|
162
|
+
category: Message category for the DLQ. Accepts both singular and
|
|
163
|
+
plural forms: 'intent'/'intents', 'event'/'events',
|
|
164
|
+
'command'/'commands'. Will be normalized to plural form.
|
|
165
|
+
version: Optional topic version (e.g., 'v1', 'v2'). If not provided,
|
|
166
|
+
defaults to DLQ_TOPIC_VERSION ('v1').
|
|
167
|
+
|
|
168
|
+
Returns:
|
|
169
|
+
Fully-qualified DLQ topic name.
|
|
170
|
+
|
|
171
|
+
Raises:
|
|
172
|
+
ValueError: If environment is empty/whitespace, has invalid format,
|
|
173
|
+
or category is invalid.
|
|
174
|
+
|
|
175
|
+
Example:
|
|
176
|
+
>>> build_dlq_topic("dev", "intents")
|
|
177
|
+
'dev.dlq.intents.v1'
|
|
178
|
+
>>> build_dlq_topic("prod", "intent") # Singular form accepted
|
|
179
|
+
'prod.dlq.intents.v1'
|
|
180
|
+
>>> build_dlq_topic("staging", "events", version="v2")
|
|
181
|
+
'staging.dlq.events.v2'
|
|
182
|
+
>>> build_dlq_topic("test-env", "commands")
|
|
183
|
+
'test-env.dlq.commands.v1'
|
|
184
|
+
>>> build_dlq_topic("my_env", "intents") # Underscores allowed
|
|
185
|
+
'my_env.dlq.intents.v1'
|
|
186
|
+
|
|
187
|
+
Test cases for environment validation:
|
|
188
|
+
- Valid: 'dev', 'prod', 'staging', 'test-1', 'my_env', 'env123'
|
|
189
|
+
- Invalid: 'env.name' (dots), 'env name' (spaces), 'env@name' (special chars)
|
|
190
|
+
- Invalid: '' (empty), ' ' (whitespace only)
|
|
191
|
+
"""
|
|
192
|
+
# Validate environment
|
|
193
|
+
env = environment.strip()
|
|
194
|
+
if not env:
|
|
195
|
+
context = ModelInfraErrorContext.with_correlation(
|
|
196
|
+
transport_type=EnumInfraTransportType.KAFKA,
|
|
197
|
+
operation="build_dlq_topic",
|
|
198
|
+
)
|
|
199
|
+
raise ProtocolConfigurationError(
|
|
200
|
+
"environment cannot be empty",
|
|
201
|
+
context=context,
|
|
202
|
+
parameter="environment",
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
if not ENV_PATTERN.match(env):
|
|
206
|
+
context = ModelInfraErrorContext.with_correlation(
|
|
207
|
+
transport_type=EnumInfraTransportType.KAFKA,
|
|
208
|
+
operation="build_dlq_topic",
|
|
209
|
+
)
|
|
210
|
+
raise ProtocolConfigurationError(
|
|
211
|
+
f"Invalid environment '{environment}'. "
|
|
212
|
+
"Must be alphanumeric with optional underscores or hyphens (pattern: [\\w-]+).",
|
|
213
|
+
context=context,
|
|
214
|
+
parameter="environment",
|
|
215
|
+
value=environment,
|
|
216
|
+
)
|
|
217
|
+
|
|
218
|
+
# Normalize category to lowercase and look up suffix
|
|
219
|
+
cat_lower = category.lower().strip()
|
|
220
|
+
if cat_lower not in DLQ_CATEGORY_SUFFIXES:
|
|
221
|
+
valid_categories = ", ".join(sorted(set(DLQ_CATEGORY_SUFFIXES.keys())))
|
|
222
|
+
context = ModelInfraErrorContext.with_correlation(
|
|
223
|
+
transport_type=EnumInfraTransportType.KAFKA,
|
|
224
|
+
operation="build_dlq_topic",
|
|
225
|
+
)
|
|
226
|
+
raise ProtocolConfigurationError(
|
|
227
|
+
f"Invalid category '{category}'. Valid categories: {valid_categories}",
|
|
228
|
+
context=context,
|
|
229
|
+
parameter="category",
|
|
230
|
+
value=category,
|
|
231
|
+
)
|
|
232
|
+
|
|
233
|
+
# Determine version to use
|
|
234
|
+
topic_version = version if version else DLQ_TOPIC_VERSION
|
|
235
|
+
|
|
236
|
+
# Normalize category to plural form for consistency
|
|
237
|
+
normalized_category = _normalize_category(cat_lower)
|
|
238
|
+
|
|
239
|
+
return f"{env}.{DLQ_DOMAIN}.{normalized_category}.{topic_version}"
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
def _normalize_category(category: str) -> str:
|
|
243
|
+
"""Normalize category to plural form.
|
|
244
|
+
|
|
245
|
+
Args:
|
|
246
|
+
category: Category in singular or plural form.
|
|
247
|
+
|
|
248
|
+
Returns:
|
|
249
|
+
Category in plural form (intents, events, commands).
|
|
250
|
+
"""
|
|
251
|
+
category_map = {
|
|
252
|
+
"intent": "intents",
|
|
253
|
+
"intents": "intents",
|
|
254
|
+
"event": "events",
|
|
255
|
+
"events": "events",
|
|
256
|
+
"command": "commands",
|
|
257
|
+
"commands": "commands",
|
|
258
|
+
}
|
|
259
|
+
return category_map.get(category, category)
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
def parse_dlq_topic(topic: str) -> dict[str, str] | None:
|
|
263
|
+
"""Parse a DLQ topic name into its components.
|
|
264
|
+
|
|
265
|
+
Extracts environment, category, and version from a DLQ topic name
|
|
266
|
+
that follows the ONEX naming convention.
|
|
267
|
+
|
|
268
|
+
Args:
|
|
269
|
+
topic: The DLQ topic name to parse.
|
|
270
|
+
|
|
271
|
+
Returns:
|
|
272
|
+
A dictionary with keys 'environment', 'category', and 'version'
|
|
273
|
+
if the topic matches the DLQ pattern, or None if it doesn't match.
|
|
274
|
+
|
|
275
|
+
Example:
|
|
276
|
+
>>> parse_dlq_topic("dev.dlq.intents.v1")
|
|
277
|
+
{'environment': 'dev', 'category': 'intents', 'version': 'v1'}
|
|
278
|
+
>>> parse_dlq_topic("prod.dlq.events.v2")
|
|
279
|
+
{'environment': 'prod', 'category': 'events', 'version': 'v2'}
|
|
280
|
+
>>> parse_dlq_topic("not.a.dlq.topic")
|
|
281
|
+
None
|
|
282
|
+
"""
|
|
283
|
+
match = DLQ_TOPIC_PATTERN.match(topic)
|
|
284
|
+
if not match:
|
|
285
|
+
return None
|
|
286
|
+
|
|
287
|
+
return {
|
|
288
|
+
"environment": match.group("env"),
|
|
289
|
+
"category": match.group("category"),
|
|
290
|
+
"version": match.group("version"),
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
def is_dlq_topic(topic: str) -> bool:
|
|
295
|
+
"""Check if a topic name is a DLQ topic.
|
|
296
|
+
|
|
297
|
+
Args:
|
|
298
|
+
topic: The topic name to check.
|
|
299
|
+
|
|
300
|
+
Returns:
|
|
301
|
+
True if the topic matches the DLQ naming pattern, False otherwise.
|
|
302
|
+
|
|
303
|
+
Example:
|
|
304
|
+
>>> is_dlq_topic("dev.dlq.intents.v1")
|
|
305
|
+
True
|
|
306
|
+
>>> is_dlq_topic("dev.user.events.v1")
|
|
307
|
+
False
|
|
308
|
+
"""
|
|
309
|
+
return DLQ_TOPIC_PATTERN.match(topic) is not None
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
def get_dlq_topic_for_original(
|
|
313
|
+
original_topic: str,
|
|
314
|
+
environment: str | None = None,
|
|
315
|
+
) -> str | None:
|
|
316
|
+
"""Get the DLQ topic for an original message topic.
|
|
317
|
+
|
|
318
|
+
Infers the appropriate DLQ topic based on the category of the original
|
|
319
|
+
topic. If it follows ONEX naming conventions, the category is extracted
|
|
320
|
+
automatically.
|
|
321
|
+
|
|
322
|
+
Args:
|
|
323
|
+
original_topic: The original topic where the message was consumed from.
|
|
324
|
+
environment: Optional environment override. If not provided, attempts
|
|
325
|
+
to extract from the original topic (Environment-Aware format only).
|
|
326
|
+
|
|
327
|
+
Returns:
|
|
328
|
+
The DLQ topic name, or None if the category cannot be determined.
|
|
329
|
+
|
|
330
|
+
Example:
|
|
331
|
+
>>> get_dlq_topic_for_original("dev.checkout.intents.v1")
|
|
332
|
+
'dev.dlq.intents.v1'
|
|
333
|
+
>>> get_dlq_topic_for_original("prod.order.events.v1")
|
|
334
|
+
'prod.dlq.events.v1'
|
|
335
|
+
>>> get_dlq_topic_for_original("onex.registration.commands")
|
|
336
|
+
None # ONEX format has no environment, must provide explicitly
|
|
337
|
+
>>> get_dlq_topic_for_original("onex.registration.commands", environment="prod")
|
|
338
|
+
'prod.dlq.commands.v1'
|
|
339
|
+
"""
|
|
340
|
+
# Import here to avoid circular imports
|
|
341
|
+
from omnibase_infra.enums import EnumMessageCategory
|
|
342
|
+
|
|
343
|
+
# Try to infer category from topic
|
|
344
|
+
category = EnumMessageCategory.from_topic(original_topic)
|
|
345
|
+
if category is None:
|
|
346
|
+
return None
|
|
347
|
+
|
|
348
|
+
# Try to extract environment from topic if not provided
|
|
349
|
+
if environment is None:
|
|
350
|
+
# Environment-Aware format: <env>.<domain>.<category>.<version>
|
|
351
|
+
parts = original_topic.split(".")
|
|
352
|
+
if len(parts) >= 2 and parts[0].lower() not in ("onex",):
|
|
353
|
+
environment = parts[0]
|
|
354
|
+
else:
|
|
355
|
+
# Cannot determine environment from ONEX format topics
|
|
356
|
+
return None
|
|
357
|
+
|
|
358
|
+
return build_dlq_topic(environment, category.topic_suffix)
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
__all__ = [
|
|
362
|
+
"DLQ_CATEGORY_SUFFIXES",
|
|
363
|
+
"DLQ_COMMAND_TOPIC_SUFFIX",
|
|
364
|
+
"DLQ_DOMAIN",
|
|
365
|
+
"DLQ_EVENT_TOPIC_SUFFIX",
|
|
366
|
+
"DLQ_INTENT_TOPIC_SUFFIX",
|
|
367
|
+
"DLQ_TOPIC_PATTERN",
|
|
368
|
+
# Constants
|
|
369
|
+
"DLQ_TOPIC_VERSION",
|
|
370
|
+
"ENV_PATTERN",
|
|
371
|
+
# Functions
|
|
372
|
+
"build_dlq_topic",
|
|
373
|
+
"get_dlq_topic_for_original",
|
|
374
|
+
"is_dlq_topic",
|
|
375
|
+
"parse_dlq_topic",
|
|
376
|
+
]
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"""Handlers module for omnibase_infra.
|
|
2
|
+
|
|
3
|
+
This module provides handler implementations for various infrastructure
|
|
4
|
+
communication patterns including HTTP REST and database operations.
|
|
5
|
+
|
|
6
|
+
Handlers are responsible for:
|
|
7
|
+
- Processing incoming requests and messages
|
|
8
|
+
- Routing to appropriate services
|
|
9
|
+
- Formatting and returning responses
|
|
10
|
+
- Error handling and logging
|
|
11
|
+
|
|
12
|
+
Available Handlers:
|
|
13
|
+
- HandlerHttpRest: HTTP/REST protocol handler (MVP: GET, POST only)
|
|
14
|
+
- HandlerDb: PostgreSQL database handler (MVP: query, execute only)
|
|
15
|
+
- HandlerVault: HashiCorp Vault secret management handler (MVP: KV v2 secrets)
|
|
16
|
+
- HandlerConsul: HashiCorp Consul service discovery handler (MVP: KV, service registration)
|
|
17
|
+
- HandlerMCP: Model Context Protocol handler for AI agent tool integration
|
|
18
|
+
- HandlerFileSystem: Filesystem handler with path whitelisting and size limits
|
|
19
|
+
- HandlerManifestPersistence: Execution manifest persistence with filesystem storage
|
|
20
|
+
- HandlerGraph: Graph database handler (Memgraph/Neo4j via Bolt protocol)
|
|
21
|
+
- HandlerQdrant: Qdrant vector database handler (MVP: create, upsert, search, delete)
|
|
22
|
+
|
|
23
|
+
Response Models:
|
|
24
|
+
- ModelDbQueryPayload: Database query result payload
|
|
25
|
+
- ModelDbQueryResponse: Database query response envelope
|
|
26
|
+
- ModelDbDescribeResponse: Database handler metadata
|
|
27
|
+
- ModelConsulHandlerPayload: Consul operation result payload
|
|
28
|
+
- ModelConsulHandlerResponse: Consul handler response envelope
|
|
29
|
+
- ModelGraphHandlerResponse: Graph handler response envelope
|
|
30
|
+
- ModelQdrantHandlerResponse: Qdrant handler response envelope
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
from omnibase_infra.handlers.handler_consul import HandlerConsul
|
|
34
|
+
from omnibase_infra.handlers.handler_db import HandlerDb
|
|
35
|
+
from omnibase_infra.handlers.handler_filesystem import HandlerFileSystem
|
|
36
|
+
from omnibase_infra.handlers.handler_graph import HandlerGraph
|
|
37
|
+
from omnibase_infra.handlers.handler_http import HandlerHttpRest
|
|
38
|
+
from omnibase_infra.handlers.handler_manifest_persistence import (
|
|
39
|
+
HandlerManifestPersistence,
|
|
40
|
+
)
|
|
41
|
+
from omnibase_infra.handlers.handler_mcp import HandlerMCP
|
|
42
|
+
from omnibase_infra.handlers.handler_qdrant import HandlerQdrant
|
|
43
|
+
from omnibase_infra.handlers.handler_vault import HandlerVault
|
|
44
|
+
from omnibase_infra.handlers.models import (
|
|
45
|
+
ModelConsulHandlerPayload,
|
|
46
|
+
ModelConsulHandlerResponse,
|
|
47
|
+
ModelDbDescribeResponse,
|
|
48
|
+
ModelDbQueryPayload,
|
|
49
|
+
ModelDbQueryResponse,
|
|
50
|
+
)
|
|
51
|
+
from omnibase_infra.handlers.models.model_graph_handler_response import (
|
|
52
|
+
ModelGraphHandlerResponse,
|
|
53
|
+
)
|
|
54
|
+
from omnibase_infra.handlers.models.model_qdrant_handler_response import (
|
|
55
|
+
ModelQdrantHandlerResponse,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
__all__: list[str] = [
|
|
59
|
+
"HandlerConsul",
|
|
60
|
+
"HandlerDb",
|
|
61
|
+
"HandlerFileSystem",
|
|
62
|
+
"HandlerGraph",
|
|
63
|
+
"HandlerManifestPersistence",
|
|
64
|
+
"HandlerMCP",
|
|
65
|
+
"HandlerQdrant",
|
|
66
|
+
"HandlerVault",
|
|
67
|
+
"HandlerHttpRest",
|
|
68
|
+
"ModelConsulHandlerPayload",
|
|
69
|
+
"ModelConsulHandlerResponse",
|
|
70
|
+
"ModelDbDescribeResponse",
|
|
71
|
+
"ModelDbQueryPayload",
|
|
72
|
+
"ModelDbQueryResponse",
|
|
73
|
+
"ModelGraphHandlerResponse",
|
|
74
|
+
"ModelQdrantHandlerResponse",
|
|
75
|
+
]
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""FileSystem Handler Models.
|
|
4
|
+
|
|
5
|
+
This module provides models for the FileSystem effect handler, which performs
|
|
6
|
+
filesystem operations including read, write, list, delete, and directory
|
|
7
|
+
management.
|
|
8
|
+
|
|
9
|
+
Models:
|
|
10
|
+
- EnumFileSystemOperation: Operation type enum (read/write/list/delete/mkdir)
|
|
11
|
+
- ModelFileSystemRequest: Request model for filesystem operations
|
|
12
|
+
- ModelFileSystemResult: Result model for filesystem operations
|
|
13
|
+
|
|
14
|
+
Related:
|
|
15
|
+
- OMN-1158: FileSystemHandler Implementation
|
|
16
|
+
- OMN-1160: FileSystem Handler contract
|
|
17
|
+
|
|
18
|
+
Example:
|
|
19
|
+
>>> from uuid import uuid4
|
|
20
|
+
>>> from omnibase_infra.handlers.filesystem import (
|
|
21
|
+
... EnumFileSystemOperation,
|
|
22
|
+
... ModelFileSystemRequest,
|
|
23
|
+
... ModelFileSystemResult,
|
|
24
|
+
... )
|
|
25
|
+
>>> request = ModelFileSystemRequest(
|
|
26
|
+
... operation=EnumFileSystemOperation.READ,
|
|
27
|
+
... path="config/settings.yaml",
|
|
28
|
+
... correlation_id=uuid4(),
|
|
29
|
+
... )
|
|
30
|
+
>>> request.operation
|
|
31
|
+
<EnumFileSystemOperation.READ: 'read'>
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
from omnibase_infra.handlers.filesystem.enum_file_system_operation import (
|
|
35
|
+
EnumFileSystemOperation,
|
|
36
|
+
)
|
|
37
|
+
from omnibase_infra.handlers.filesystem.model_file_system_request import (
|
|
38
|
+
ModelFileSystemRequest,
|
|
39
|
+
)
|
|
40
|
+
from omnibase_infra.handlers.filesystem.model_file_system_result import (
|
|
41
|
+
ModelFileSystemResult,
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
__all__: list[str] = [
|
|
45
|
+
"EnumFileSystemOperation",
|
|
46
|
+
"ModelFileSystemRequest",
|
|
47
|
+
"ModelFileSystemResult",
|
|
48
|
+
]
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""FileSystem Operation Type Enum.
|
|
4
|
+
|
|
5
|
+
Defines the discriminator enum for filesystem operation types, used in the
|
|
6
|
+
FileSystem handler request model to specify the operation to perform.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from enum import Enum
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class EnumFileSystemOperation(str, Enum):
|
|
15
|
+
"""FileSystem operation type discriminator.
|
|
16
|
+
|
|
17
|
+
Each value corresponds to a specific filesystem operation type that
|
|
18
|
+
the FileSystem handler can perform.
|
|
19
|
+
|
|
20
|
+
Attributes:
|
|
21
|
+
READ: Read file contents from the filesystem.
|
|
22
|
+
WRITE: Write content to a file (create or overwrite).
|
|
23
|
+
LIST: List directory contents.
|
|
24
|
+
DELETE: Delete a file or directory.
|
|
25
|
+
MKDIR: Create a directory (optionally with parents).
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
READ = "read"
|
|
29
|
+
WRITE = "write"
|
|
30
|
+
LIST = "list"
|
|
31
|
+
DELETE = "delete"
|
|
32
|
+
MKDIR = "mkdir"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
__all__: list[str] = ["EnumFileSystemOperation"]
|