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
omnibase_infra/nodes/node_registration_reducer/registry/registry_infra_node_registration_reducer.py
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Registry for NodeRegistrationReducer dependencies.
|
|
4
|
+
|
|
5
|
+
This registry provides dependency injection configuration for the
|
|
6
|
+
NodeRegistrationReducer node, following ONEX container-based DI pattern.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from typing import TYPE_CHECKING
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from omnibase_core.models.container.model_onex_container import ModelONEXContainer
|
|
15
|
+
from omnibase_infra.nodes.node_registration_reducer.node import (
|
|
16
|
+
NodeRegistrationReducer,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class RegistryInfraNodeRegistrationReducer:
|
|
21
|
+
"""Registry for NodeRegistrationReducer dependency injection.
|
|
22
|
+
|
|
23
|
+
Why a class instead of a function?
|
|
24
|
+
ONEX registry pattern (CLAUDE.md) requires registry classes with
|
|
25
|
+
the naming convention ``RegistryInfra<NodeName>``. This enables:
|
|
26
|
+
|
|
27
|
+
- **Future extension**: Additional factory methods can be added
|
|
28
|
+
(e.g., ``create_reducer_with_cache()``, ``create_test_reducer()``)
|
|
29
|
+
- **Service registry resolution**: Classes can be registered in the
|
|
30
|
+
ONEX service registry for container-based resolution
|
|
31
|
+
- **Consistent pattern**: All node registries follow the same class-based
|
|
32
|
+
structure, making the codebase predictable and navigable
|
|
33
|
+
- **Container lifecycle management**: The registry can implement caching,
|
|
34
|
+
scoping, or other lifecycle behaviors in the future
|
|
35
|
+
|
|
36
|
+
Provides factory methods for creating NodeRegistrationReducer instances
|
|
37
|
+
with properly configured dependencies from the ONEX container.
|
|
38
|
+
|
|
39
|
+
Usage:
|
|
40
|
+
```python
|
|
41
|
+
from omnibase_core.models.container import ModelONEXContainer
|
|
42
|
+
from omnibase_infra.nodes.node_registration_reducer.registry import (
|
|
43
|
+
RegistryInfraNodeRegistrationReducer,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
# Create container and registry
|
|
47
|
+
container = ModelONEXContainer()
|
|
48
|
+
registry = RegistryInfraNodeRegistrationReducer(container)
|
|
49
|
+
|
|
50
|
+
# Create reducer instance
|
|
51
|
+
reducer = registry.create_reducer()
|
|
52
|
+
|
|
53
|
+
# Use reducer
|
|
54
|
+
result = await reducer.process(input_data)
|
|
55
|
+
```
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
def __init__(self, container: ModelONEXContainer) -> None:
|
|
59
|
+
"""Initialize the registry with ONEX container.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
container: ONEX dependency injection container
|
|
63
|
+
"""
|
|
64
|
+
self._container = container
|
|
65
|
+
|
|
66
|
+
def create_reducer(self) -> NodeRegistrationReducer:
|
|
67
|
+
"""Create a NodeRegistrationReducer instance.
|
|
68
|
+
|
|
69
|
+
Returns:
|
|
70
|
+
Configured NodeRegistrationReducer instance.
|
|
71
|
+
"""
|
|
72
|
+
from omnibase_infra.nodes.node_registration_reducer.node import (
|
|
73
|
+
NodeRegistrationReducer,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
return NodeRegistrationReducer(self._container)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
__all__ = ["RegistryInfraNodeRegistrationReducer"]
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Node Registration Storage Effect - Capability-oriented storage node.
|
|
4
|
+
|
|
5
|
+
This package provides the NodeRegistrationStorageEffect, a capability-oriented
|
|
6
|
+
effect node for registration storage operations.
|
|
7
|
+
|
|
8
|
+
Core Principle:
|
|
9
|
+
"I'm interested in what you do, not what you are"
|
|
10
|
+
|
|
11
|
+
Named by capability (registration.storage), not by specific backend implementation.
|
|
12
|
+
Supports pluggable backends through the handler protocol.
|
|
13
|
+
|
|
14
|
+
Capabilities:
|
|
15
|
+
- registration.storage: Store, query, update, delete registration records
|
|
16
|
+
- registration.storage.query: Query with filtering and pagination
|
|
17
|
+
- registration.storage.upsert: Idempotent insert/update operations
|
|
18
|
+
- registration.storage.delete: Delete by node ID
|
|
19
|
+
- registration.storage.health: Backend health checks
|
|
20
|
+
|
|
21
|
+
Available Exports:
|
|
22
|
+
- NodeRegistrationStorageEffect: The declarative effect node
|
|
23
|
+
|
|
24
|
+
Example:
|
|
25
|
+
>>> from omnibase_core.models.container import ModelONEXContainer
|
|
26
|
+
>>> from omnibase_infra.nodes.node_registration_storage_effect import (
|
|
27
|
+
... NodeRegistrationStorageEffect,
|
|
28
|
+
... )
|
|
29
|
+
>>>
|
|
30
|
+
>>> container = ModelONEXContainer()
|
|
31
|
+
>>> node = NodeRegistrationStorageEffect(container)
|
|
32
|
+
|
|
33
|
+
Related Modules:
|
|
34
|
+
- models: Pydantic models for storage operations
|
|
35
|
+
- protocols: Handler protocol for pluggable backends
|
|
36
|
+
- registry: Dependency injection registration
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
from .node import NodeRegistrationStorageEffect
|
|
40
|
+
|
|
41
|
+
__all__ = ["NodeRegistrationStorageEffect"]
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
#
|
|
4
|
+
# ONEX Node Contract
|
|
5
|
+
# Node: NodeRegistrationStorageEffect
|
|
6
|
+
#
|
|
7
|
+
# Capability-oriented effect node for registration storage operations.
|
|
8
|
+
# Named by capability ("registration.storage"), not by vendor (e.g., PostgreSQL).
|
|
9
|
+
# Principle: "I'm interested in what you do, not what you are"
|
|
10
|
+
#
|
|
11
|
+
# This contract defines the interface for storage operations with pluggable backends.
|
|
12
|
+
# Handlers implementing ProtocolRegistrationPersistence can be swapped without
|
|
13
|
+
# changing the node interface.
|
|
14
|
+
# Contract identifiers
|
|
15
|
+
name: "node_registration_storage_effect"
|
|
16
|
+
contract_name: "node_registration_storage_effect"
|
|
17
|
+
node_name: "node_registration_storage_effect"
|
|
18
|
+
# Version (semantic versioning)
|
|
19
|
+
version:
|
|
20
|
+
major: 1
|
|
21
|
+
minor: 0
|
|
22
|
+
patch: 0
|
|
23
|
+
contract_version:
|
|
24
|
+
major: 1
|
|
25
|
+
minor: 0
|
|
26
|
+
patch: 0
|
|
27
|
+
node_version:
|
|
28
|
+
major: 1
|
|
29
|
+
minor: 0
|
|
30
|
+
patch: 0
|
|
31
|
+
# Node type
|
|
32
|
+
node_type: "EFFECT_GENERIC"
|
|
33
|
+
# Description
|
|
34
|
+
description: >
|
|
35
|
+
Capability-oriented effect node for registration storage operations. Handles store, query, update, and delete operations for node registrations with pluggable backend handlers (e.g., PostgreSQL).
|
|
36
|
+
|
|
37
|
+
# Strongly typed I/O models
|
|
38
|
+
input_model:
|
|
39
|
+
name: "ModelStorageQuery"
|
|
40
|
+
module: "omnibase_infra.nodes.node_registration_storage_effect.models"
|
|
41
|
+
description: "Input model for storage query operations."
|
|
42
|
+
output_model:
|
|
43
|
+
name: "ModelStorageResult"
|
|
44
|
+
module: "omnibase_infra.nodes.node_registration_storage_effect.models"
|
|
45
|
+
description: "Output model containing query results and metadata."
|
|
46
|
+
# Capability declaration (capability-oriented naming)
|
|
47
|
+
capabilities:
|
|
48
|
+
- name: "registration.storage"
|
|
49
|
+
description: "Store, query, update, and delete node registration records"
|
|
50
|
+
version: "1.0.0"
|
|
51
|
+
- name: "registration.storage.query"
|
|
52
|
+
description: "Query registration records with filtering and pagination"
|
|
53
|
+
- name: "registration.storage.upsert"
|
|
54
|
+
description: "Insert or update registration records idempotently"
|
|
55
|
+
- name: "registration.storage.delete"
|
|
56
|
+
description: "Delete registration records by node ID"
|
|
57
|
+
- name: "registration.storage.health"
|
|
58
|
+
description: "Health check for storage backend connectivity"
|
|
59
|
+
# IO operations (EFFECT node specific)
|
|
60
|
+
# Note: correlation_id is optional (UUID | None) for all operations.
|
|
61
|
+
# If not provided, implementations should generate one for tracing.
|
|
62
|
+
io_operations:
|
|
63
|
+
- operation: "store_registration"
|
|
64
|
+
description: "Store a new registration record or update existing"
|
|
65
|
+
input_fields:
|
|
66
|
+
- record: "ModelRegistrationRecord"
|
|
67
|
+
- correlation_id: "UUID | None"
|
|
68
|
+
output_fields:
|
|
69
|
+
- result: "ModelUpsertResult"
|
|
70
|
+
idempotent: true
|
|
71
|
+
- operation: "query_registrations"
|
|
72
|
+
description: "Query registration records with optional filters"
|
|
73
|
+
input_fields:
|
|
74
|
+
- query: "ModelStorageQuery"
|
|
75
|
+
- correlation_id: "UUID | None"
|
|
76
|
+
output_fields:
|
|
77
|
+
- result: "ModelStorageResult"
|
|
78
|
+
idempotent: true
|
|
79
|
+
- operation: "update_registration"
|
|
80
|
+
description: "Update specific fields of a registration record"
|
|
81
|
+
input_fields:
|
|
82
|
+
- node_id: "UUID"
|
|
83
|
+
- updates: "ModelRegistrationUpdate"
|
|
84
|
+
- correlation_id: "UUID | None"
|
|
85
|
+
output_fields:
|
|
86
|
+
- result: "ModelUpsertResult"
|
|
87
|
+
idempotent: true
|
|
88
|
+
- operation: "delete_registration"
|
|
89
|
+
description: "Delete a registration record by node ID"
|
|
90
|
+
input_fields:
|
|
91
|
+
- node_id: "UUID"
|
|
92
|
+
- correlation_id: "UUID | None"
|
|
93
|
+
output_fields:
|
|
94
|
+
- success: "bool"
|
|
95
|
+
idempotent: true
|
|
96
|
+
- operation: "health_check"
|
|
97
|
+
description: "Check storage backend health and connectivity"
|
|
98
|
+
input_fields:
|
|
99
|
+
- correlation_id: "UUID | None"
|
|
100
|
+
output_fields:
|
|
101
|
+
- result: "ModelStorageHealthCheckResult"
|
|
102
|
+
idempotent: true
|
|
103
|
+
# Database schema definition (for PostgreSQL backend)
|
|
104
|
+
database_schema:
|
|
105
|
+
table_name: "node_registrations"
|
|
106
|
+
columns:
|
|
107
|
+
- name: "node_id"
|
|
108
|
+
type: "UUID"
|
|
109
|
+
constraints: "PRIMARY KEY"
|
|
110
|
+
description: "Unique identifier for the registered node"
|
|
111
|
+
- name: "node_type"
|
|
112
|
+
type: "VARCHAR(64)"
|
|
113
|
+
constraints: "NOT NULL"
|
|
114
|
+
description: "Node archetype (EFFECT, COMPUTE, REDUCER, ORCHESTRATOR)"
|
|
115
|
+
- name: "node_version"
|
|
116
|
+
type: "VARCHAR(32)"
|
|
117
|
+
constraints: "NOT NULL"
|
|
118
|
+
description: "Semantic version of the node"
|
|
119
|
+
- name: "capabilities"
|
|
120
|
+
type: "JSONB"
|
|
121
|
+
constraints: "NOT NULL DEFAULT '[]'"
|
|
122
|
+
description: "Array of capability identifiers the node provides"
|
|
123
|
+
- name: "endpoints"
|
|
124
|
+
type: "JSONB"
|
|
125
|
+
constraints: "NOT NULL DEFAULT '{}'"
|
|
126
|
+
description: "Map of endpoint names to URLs"
|
|
127
|
+
- name: "metadata"
|
|
128
|
+
type: "JSONB"
|
|
129
|
+
constraints: "NOT NULL DEFAULT '{}'"
|
|
130
|
+
description: "Additional key-value metadata"
|
|
131
|
+
- name: "created_at"
|
|
132
|
+
type: "TIMESTAMPTZ"
|
|
133
|
+
constraints: "NOT NULL DEFAULT NOW()"
|
|
134
|
+
description: "Timestamp when the registration was created"
|
|
135
|
+
- name: "updated_at"
|
|
136
|
+
type: "TIMESTAMPTZ"
|
|
137
|
+
constraints: "NOT NULL DEFAULT NOW()"
|
|
138
|
+
description: "Timestamp when the registration was last updated"
|
|
139
|
+
indexes:
|
|
140
|
+
- name: "idx_node_registrations_type"
|
|
141
|
+
columns: ["node_type"]
|
|
142
|
+
description: "Index for filtering by node type"
|
|
143
|
+
- name: "idx_node_registrations_updated"
|
|
144
|
+
columns: ["updated_at"]
|
|
145
|
+
description: "Index for ordering by recency"
|
|
146
|
+
# Dependencies (protocols this node requires)
|
|
147
|
+
dependencies:
|
|
148
|
+
- name: "protocol_registration_storage_handler"
|
|
149
|
+
type: "protocol"
|
|
150
|
+
class_name: "ProtocolRegistrationPersistence"
|
|
151
|
+
module: "omnibase_infra.nodes.node_registration_storage_effect.protocols"
|
|
152
|
+
description: "Protocol for registration storage backends (e.g., PostgreSQL, mock)"
|
|
153
|
+
pluggable: true
|
|
154
|
+
implementations:
|
|
155
|
+
- name: "postgresql"
|
|
156
|
+
description: "PostgreSQL implementation for registration storage"
|
|
157
|
+
- name: "mock"
|
|
158
|
+
description: "Mock implementation for testing and development"
|
|
159
|
+
# Handler routing (for pluggable backends)
|
|
160
|
+
handler_routing:
|
|
161
|
+
routing_strategy: "handler_type_match"
|
|
162
|
+
default_handler: "postgresql"
|
|
163
|
+
handlers:
|
|
164
|
+
- handler_type: "postgresql"
|
|
165
|
+
handler:
|
|
166
|
+
name: "HandlerRegistrationStoragePostgres"
|
|
167
|
+
module: "omnibase_infra.handlers.registration_storage.handler_registration_storage_postgres"
|
|
168
|
+
description: "PostgreSQL storage handler"
|
|
169
|
+
- handler_type: "mock"
|
|
170
|
+
handler:
|
|
171
|
+
name: "HandlerRegistrationStorageMock"
|
|
172
|
+
module: "omnibase_infra.handlers.registration_storage.handler_registration_storage_mock"
|
|
173
|
+
description: "Mock storage handler for testing"
|
|
174
|
+
# Error handling configuration
|
|
175
|
+
error_handling:
|
|
176
|
+
retry_policy:
|
|
177
|
+
max_retries: 3
|
|
178
|
+
initial_delay_ms: 100
|
|
179
|
+
max_delay_ms: 5000
|
|
180
|
+
exponential_base: 2
|
|
181
|
+
retry_on:
|
|
182
|
+
- "InfraConnectionError"
|
|
183
|
+
- "InfraTimeoutError"
|
|
184
|
+
circuit_breaker:
|
|
185
|
+
enabled: true
|
|
186
|
+
failure_threshold: 5
|
|
187
|
+
reset_timeout_ms: 60000
|
|
188
|
+
error_types:
|
|
189
|
+
- name: "StorageConnectionError"
|
|
190
|
+
description: "Unable to connect to storage backend"
|
|
191
|
+
recoverable: true
|
|
192
|
+
retry_strategy: "exponential_backoff"
|
|
193
|
+
- name: "StorageTimeoutError"
|
|
194
|
+
description: "Storage operation timed out"
|
|
195
|
+
recoverable: true
|
|
196
|
+
retry_strategy: "exponential_backoff"
|
|
197
|
+
- name: "RecordNotFoundError"
|
|
198
|
+
description: "Registration record not found"
|
|
199
|
+
recoverable: false
|
|
200
|
+
retry_strategy: "none"
|
|
201
|
+
- name: "ValidationError"
|
|
202
|
+
description: "Input validation failed"
|
|
203
|
+
recoverable: false
|
|
204
|
+
retry_strategy: "none"
|
|
205
|
+
# Health check configuration
|
|
206
|
+
health_check:
|
|
207
|
+
enabled: true
|
|
208
|
+
endpoint: "/health"
|
|
209
|
+
interval_seconds: 30
|
|
210
|
+
timeout_ms: 5000
|
|
211
|
+
checks:
|
|
212
|
+
- name: "storage_backend"
|
|
213
|
+
type: "connection"
|
|
214
|
+
critical: true
|
|
215
|
+
# Metadata
|
|
216
|
+
metadata:
|
|
217
|
+
author: "OmniNode Team"
|
|
218
|
+
license: "MIT"
|
|
219
|
+
created: "2025-01-06"
|
|
220
|
+
tags:
|
|
221
|
+
- effect
|
|
222
|
+
- registration
|
|
223
|
+
- storage
|
|
224
|
+
- capability-oriented
|
|
225
|
+
- pluggable-backend
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Models for Registration Storage Effect Node.
|
|
4
|
+
|
|
5
|
+
This module exports models used by the NodeRegistrationStorageEffect for
|
|
6
|
+
capability-oriented storage operations.
|
|
7
|
+
|
|
8
|
+
Available Models:
|
|
9
|
+
- ModelDeleteResult: Delete operation result
|
|
10
|
+
- ModelRegistrationRecord: Complete registration record for storage
|
|
11
|
+
- ModelRegistrationUpdate: Partial update parameters
|
|
12
|
+
- ModelStorageHealthCheckDetails: Backend-specific health check diagnostics
|
|
13
|
+
- ModelStorageHealthCheckResult: Health check result for storage backends
|
|
14
|
+
- ModelStorageQuery: Query parameters with filtering and pagination
|
|
15
|
+
- ModelStorageResult: Query results with records and metadata
|
|
16
|
+
- ModelUpsertResult: Insert/update operation result
|
|
17
|
+
|
|
18
|
+
All models are:
|
|
19
|
+
- Frozen (immutable after creation)
|
|
20
|
+
- Extra="forbid" (no extra fields allowed)
|
|
21
|
+
- Strongly typed (no Any types, no dict primitives in signatures)
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
from .model_delete_result import ModelDeleteResult
|
|
25
|
+
from .model_registration_record import ModelRegistrationRecord
|
|
26
|
+
from .model_registration_update import ModelRegistrationUpdate
|
|
27
|
+
from .model_storage_health_check_details import ModelStorageHealthCheckDetails
|
|
28
|
+
from .model_storage_health_check_result import (
|
|
29
|
+
ModelStorageHealthCheckResult,
|
|
30
|
+
)
|
|
31
|
+
from .model_storage_query import ModelStorageQuery
|
|
32
|
+
from .model_storage_result import ModelStorageResult
|
|
33
|
+
from .model_upsert_result import ModelUpsertResult
|
|
34
|
+
|
|
35
|
+
__all__ = [
|
|
36
|
+
"ModelDeleteResult",
|
|
37
|
+
"ModelRegistrationRecord",
|
|
38
|
+
"ModelRegistrationUpdate",
|
|
39
|
+
"ModelStorageHealthCheckDetails",
|
|
40
|
+
"ModelStorageHealthCheckResult",
|
|
41
|
+
"ModelStorageQuery",
|
|
42
|
+
"ModelStorageResult",
|
|
43
|
+
"ModelUpsertResult",
|
|
44
|
+
]
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Delete Result Model for Registration Storage Operations.
|
|
4
|
+
|
|
5
|
+
This module provides ModelDeleteResult, representing the result of a
|
|
6
|
+
delete operation against registration storage.
|
|
7
|
+
|
|
8
|
+
Architecture:
|
|
9
|
+
ModelDeleteResult captures:
|
|
10
|
+
- success: Whether the operation completed successfully
|
|
11
|
+
- node_id: ID of the record that was targeted for deletion
|
|
12
|
+
- deleted: Whether a record was actually deleted (vs not found)
|
|
13
|
+
- error: Error message if operation failed
|
|
14
|
+
- duration_ms: Time taken for the operation
|
|
15
|
+
- backend_type: The backend that handled the delete
|
|
16
|
+
- correlation_id: Correlation ID for distributed tracing
|
|
17
|
+
|
|
18
|
+
This model replaces primitive bool returns with a strongly-typed
|
|
19
|
+
result that provides richer diagnostics and traceability.
|
|
20
|
+
|
|
21
|
+
Related:
|
|
22
|
+
- ModelRegistrationRecord: Record that was deleted
|
|
23
|
+
- ProtocolRegistrationStorageHandler: Protocol that produces results
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
from __future__ import annotations
|
|
27
|
+
|
|
28
|
+
from uuid import UUID
|
|
29
|
+
|
|
30
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class ModelDeleteResult(BaseModel):
|
|
34
|
+
"""Result model for registration storage delete operations.
|
|
35
|
+
|
|
36
|
+
Indicates the outcome of a delete operation. Success indicates the
|
|
37
|
+
operation completed without errors; deleted indicates whether a
|
|
38
|
+
record was actually found and removed.
|
|
39
|
+
|
|
40
|
+
Immutability:
|
|
41
|
+
This model uses frozen=True to ensure results are immutable
|
|
42
|
+
once created, enabling safe sharing and logging.
|
|
43
|
+
|
|
44
|
+
Attributes:
|
|
45
|
+
success: Whether the operation completed successfully (no errors).
|
|
46
|
+
node_id: UUID of the registration record targeted for deletion.
|
|
47
|
+
deleted: Whether a record was actually deleted (False if not found).
|
|
48
|
+
error: Error message if success is False (sanitized).
|
|
49
|
+
duration_ms: Time taken for the operation in milliseconds.
|
|
50
|
+
backend_type: The backend that handled the delete.
|
|
51
|
+
correlation_id: Correlation ID for request tracing.
|
|
52
|
+
|
|
53
|
+
Example (record deleted):
|
|
54
|
+
>>> result = ModelDeleteResult(
|
|
55
|
+
... success=True,
|
|
56
|
+
... node_id=some_uuid,
|
|
57
|
+
... deleted=True,
|
|
58
|
+
... duration_ms=12.5,
|
|
59
|
+
... backend_type="postgresql",
|
|
60
|
+
... correlation_id=correlation_id,
|
|
61
|
+
... )
|
|
62
|
+
>>> result.was_deleted()
|
|
63
|
+
True
|
|
64
|
+
|
|
65
|
+
Example (record not found):
|
|
66
|
+
>>> result = ModelDeleteResult(
|
|
67
|
+
... success=True,
|
|
68
|
+
... node_id=some_uuid,
|
|
69
|
+
... deleted=False,
|
|
70
|
+
... duration_ms=8.3,
|
|
71
|
+
... backend_type="postgresql",
|
|
72
|
+
... correlation_id=correlation_id,
|
|
73
|
+
... )
|
|
74
|
+
>>> result.was_deleted()
|
|
75
|
+
False
|
|
76
|
+
|
|
77
|
+
Example (operation failed):
|
|
78
|
+
>>> result = ModelDeleteResult(
|
|
79
|
+
... success=False,
|
|
80
|
+
... node_id=some_uuid,
|
|
81
|
+
... deleted=False,
|
|
82
|
+
... error="Connection timeout to database",
|
|
83
|
+
... duration_ms=5000.0,
|
|
84
|
+
... backend_type="postgresql",
|
|
85
|
+
... correlation_id=correlation_id,
|
|
86
|
+
... )
|
|
87
|
+
>>> result.success
|
|
88
|
+
False
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
model_config = ConfigDict(frozen=True, extra="forbid", from_attributes=True)
|
|
92
|
+
|
|
93
|
+
success: bool = Field(
|
|
94
|
+
...,
|
|
95
|
+
description="Whether the operation completed successfully (no errors)",
|
|
96
|
+
)
|
|
97
|
+
node_id: UUID = Field(
|
|
98
|
+
...,
|
|
99
|
+
description="UUID of the registration record targeted for deletion",
|
|
100
|
+
)
|
|
101
|
+
deleted: bool = Field(
|
|
102
|
+
...,
|
|
103
|
+
description="Whether a record was actually deleted (False if not found)",
|
|
104
|
+
)
|
|
105
|
+
error: str | None = Field(
|
|
106
|
+
default=None,
|
|
107
|
+
description="Error message if success is False (sanitized - no secrets)",
|
|
108
|
+
)
|
|
109
|
+
duration_ms: float = Field(
|
|
110
|
+
default=0.0,
|
|
111
|
+
description="Time taken for the operation in milliseconds",
|
|
112
|
+
ge=0.0,
|
|
113
|
+
)
|
|
114
|
+
backend_type: str = Field(
|
|
115
|
+
default="unknown",
|
|
116
|
+
description="The backend type that handled the delete",
|
|
117
|
+
)
|
|
118
|
+
correlation_id: UUID | None = Field(
|
|
119
|
+
default=None,
|
|
120
|
+
description="Correlation ID for request tracing",
|
|
121
|
+
)
|
|
122
|
+
|
|
123
|
+
def was_deleted(self) -> bool:
|
|
124
|
+
"""Check if this result represents a successful deletion.
|
|
125
|
+
|
|
126
|
+
Returns:
|
|
127
|
+
True if operation succeeded and a record was deleted.
|
|
128
|
+
"""
|
|
129
|
+
return self.success and self.deleted
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
__all__ = ["ModelDeleteResult"]
|