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,320 @@
|
|
|
1
|
+
-- ONEX Registration Projection Schema
|
|
2
|
+
-- Ticket: OMN-944 (F1: Implement Registration Projection Schema)
|
|
3
|
+
-- Version: 1.0.0
|
|
4
|
+
--
|
|
5
|
+
-- Design Notes:
|
|
6
|
+
-- - (entity_id, domain) = composite primary key for multi-domain support
|
|
7
|
+
-- - Indexes optimized for orchestrator query patterns:
|
|
8
|
+
-- 1. Deadline scanning (ack_deadline, liveness_deadline)
|
|
9
|
+
-- 2. State filtering (current_state)
|
|
10
|
+
-- 3. Domain + state queries
|
|
11
|
+
-- 4. Idempotency checks (last_applied_event_id)
|
|
12
|
+
-- - JSONB for capabilities (flexible schema, GIN indexable)
|
|
13
|
+
-- - All timestamps are timezone-aware (TIMESTAMPTZ)
|
|
14
|
+
-- - This schema is idempotent (IF NOT EXISTS used throughout)
|
|
15
|
+
--
|
|
16
|
+
-- Usage:
|
|
17
|
+
-- Execute this SQL file to create or update the projection schema.
|
|
18
|
+
-- The schema is designed to be re-run safely (idempotent).
|
|
19
|
+
--
|
|
20
|
+
-- Related Tickets:
|
|
21
|
+
-- - OMN-940 (F0): Projector Execution Model
|
|
22
|
+
-- - OMN-932 (C2): Durable Timeout Handling
|
|
23
|
+
-- - OMN-888 (C1): Registration Orchestrator
|
|
24
|
+
|
|
25
|
+
-- =============================================================================
|
|
26
|
+
-- ENUM TYPES
|
|
27
|
+
-- =============================================================================
|
|
28
|
+
|
|
29
|
+
-- Create enum type for registration states (matches EnumRegistrationState in Python)
|
|
30
|
+
-- Note: PostgreSQL enums are immutable - to add values, use ALTER TYPE ... ADD VALUE
|
|
31
|
+
DO $$
|
|
32
|
+
BEGIN
|
|
33
|
+
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'registration_state') THEN
|
|
34
|
+
CREATE TYPE registration_state AS ENUM (
|
|
35
|
+
'pending_registration',
|
|
36
|
+
'accepted',
|
|
37
|
+
'awaiting_ack',
|
|
38
|
+
'rejected',
|
|
39
|
+
'ack_timed_out',
|
|
40
|
+
'ack_received',
|
|
41
|
+
'active',
|
|
42
|
+
'liveness_expired'
|
|
43
|
+
);
|
|
44
|
+
END IF;
|
|
45
|
+
END$$;
|
|
46
|
+
|
|
47
|
+
-- =============================================================================
|
|
48
|
+
-- MAIN TABLE
|
|
49
|
+
-- =============================================================================
|
|
50
|
+
|
|
51
|
+
CREATE TABLE IF NOT EXISTS registration_projections (
|
|
52
|
+
-- Identity (composite primary key)
|
|
53
|
+
entity_id UUID NOT NULL,
|
|
54
|
+
domain VARCHAR(128) NOT NULL DEFAULT 'registration',
|
|
55
|
+
|
|
56
|
+
-- FSM State
|
|
57
|
+
current_state registration_state NOT NULL,
|
|
58
|
+
|
|
59
|
+
-- Node Information (snapshot at registration time)
|
|
60
|
+
node_type VARCHAR(64) NOT NULL,
|
|
61
|
+
node_version VARCHAR(32) NOT NULL DEFAULT '1.0.0',
|
|
62
|
+
capabilities JSONB NOT NULL DEFAULT '{}',
|
|
63
|
+
|
|
64
|
+
-- Capability fields for fast discovery queries (OMN-1134)
|
|
65
|
+
-- Denormalized from capabilities for GIN-indexed array queries
|
|
66
|
+
contract_type TEXT, -- effect, compute, reducer, orchestrator
|
|
67
|
+
intent_types TEXT[] DEFAULT ARRAY[]::TEXT[], -- Array of intent types this node handles
|
|
68
|
+
protocols TEXT[] DEFAULT ARRAY[]::TEXT[], -- Array of protocols this node implements
|
|
69
|
+
capability_tags TEXT[] DEFAULT ARRAY[]::TEXT[], -- Array of capability tags for discovery
|
|
70
|
+
contract_version TEXT, -- Contract version string
|
|
71
|
+
|
|
72
|
+
-- Timeout Deadlines (for durable timeout handling per C2)
|
|
73
|
+
ack_deadline TIMESTAMPTZ,
|
|
74
|
+
liveness_deadline TIMESTAMPTZ,
|
|
75
|
+
last_heartbeat_at TIMESTAMPTZ,
|
|
76
|
+
|
|
77
|
+
-- Timeout Emission Markers (for deduplication per C2)
|
|
78
|
+
-- These prevent emitting duplicate timeout events during replay
|
|
79
|
+
ack_timeout_emitted_at TIMESTAMPTZ,
|
|
80
|
+
liveness_timeout_emitted_at TIMESTAMPTZ,
|
|
81
|
+
|
|
82
|
+
-- Idempotency and Ordering (per F1 requirements)
|
|
83
|
+
-- These fields enable replay correctness and stale update rejection
|
|
84
|
+
last_applied_event_id UUID NOT NULL,
|
|
85
|
+
last_applied_offset BIGINT NOT NULL DEFAULT 0,
|
|
86
|
+
last_applied_sequence BIGINT,
|
|
87
|
+
last_applied_partition VARCHAR(128),
|
|
88
|
+
|
|
89
|
+
-- Timestamps
|
|
90
|
+
registered_at TIMESTAMPTZ NOT NULL,
|
|
91
|
+
updated_at TIMESTAMPTZ NOT NULL,
|
|
92
|
+
|
|
93
|
+
-- Tracing
|
|
94
|
+
correlation_id UUID,
|
|
95
|
+
|
|
96
|
+
-- Constraints
|
|
97
|
+
PRIMARY KEY (entity_id, domain),
|
|
98
|
+
-- UNIQUE constraint on entity_id enables ON CONFLICT (entity_id) upserts.
|
|
99
|
+
-- Required because omnibase-core's ModelProjectorContract only supports single-column
|
|
100
|
+
-- upsert_key, but we need composite PK for multi-domain support.
|
|
101
|
+
-- See: registration_projector.yaml behavior.upsert_key comment for details.
|
|
102
|
+
UNIQUE (entity_id),
|
|
103
|
+
CONSTRAINT valid_offset CHECK (last_applied_offset >= 0),
|
|
104
|
+
CONSTRAINT valid_sequence CHECK (last_applied_sequence IS NULL OR last_applied_sequence >= 0),
|
|
105
|
+
-- Node types MUST match omnibase_core.enums.EnumNodeKind values (lowercase serialized form)
|
|
106
|
+
-- Source of truth: omnibase_core/enums/enum_node_kind.py
|
|
107
|
+
-- When EnumNodeKind changes, this constraint MUST be updated to match
|
|
108
|
+
CONSTRAINT valid_node_type CHECK (node_type IN ('effect', 'compute', 'reducer', 'orchestrator')),
|
|
109
|
+
-- Contract type validation (same valid values as node_type, but nullable)
|
|
110
|
+
CONSTRAINT valid_contract_type CHECK (
|
|
111
|
+
contract_type IS NULL
|
|
112
|
+
OR contract_type IN ('effect', 'compute', 'reducer', 'orchestrator')
|
|
113
|
+
)
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
-- =============================================================================
|
|
117
|
+
-- INDEXES FOR ORCHESTRATION QUERIES
|
|
118
|
+
-- =============================================================================
|
|
119
|
+
|
|
120
|
+
-- Index for ack deadline scanning (C2: orchestrator queries for overdue ack)
|
|
121
|
+
-- Partial index: only index rows with non-null ack_deadline
|
|
122
|
+
-- Query pattern: SELECT * FROM registration_projections
|
|
123
|
+
-- WHERE ack_deadline < :now
|
|
124
|
+
-- AND ack_timeout_emitted_at IS NULL
|
|
125
|
+
-- AND current_state = 'awaiting_ack'
|
|
126
|
+
CREATE INDEX IF NOT EXISTS idx_registration_ack_deadline
|
|
127
|
+
ON registration_projections (ack_deadline)
|
|
128
|
+
WHERE ack_deadline IS NOT NULL;
|
|
129
|
+
|
|
130
|
+
-- Index for liveness deadline scanning (C2: orchestrator queries for overdue liveness)
|
|
131
|
+
-- Partial index: only index active nodes with non-null liveness_deadline
|
|
132
|
+
-- Query pattern: SELECT * FROM registration_projections
|
|
133
|
+
-- WHERE liveness_deadline < :now
|
|
134
|
+
-- AND liveness_timeout_emitted_at IS NULL
|
|
135
|
+
-- AND current_state = 'active'
|
|
136
|
+
CREATE INDEX IF NOT EXISTS idx_registration_liveness_deadline
|
|
137
|
+
ON registration_projections (liveness_deadline)
|
|
138
|
+
WHERE liveness_deadline IS NOT NULL;
|
|
139
|
+
|
|
140
|
+
-- Index for state filtering (common orchestrator query pattern)
|
|
141
|
+
-- Query pattern: SELECT * FROM registration_projections WHERE current_state = 'active'
|
|
142
|
+
CREATE INDEX IF NOT EXISTS idx_registration_current_state
|
|
143
|
+
ON registration_projections (current_state);
|
|
144
|
+
|
|
145
|
+
-- Index for state + domain filtering (multi-domain queries)
|
|
146
|
+
-- Query pattern: SELECT * FROM registration_projections
|
|
147
|
+
-- WHERE domain = :domain AND current_state = :state
|
|
148
|
+
CREATE INDEX IF NOT EXISTS idx_registration_domain_state
|
|
149
|
+
ON registration_projections (domain, current_state);
|
|
150
|
+
|
|
151
|
+
-- Index for idempotency checks (fast lookup by event_id)
|
|
152
|
+
-- Query pattern: SELECT 1 FROM registration_projections
|
|
153
|
+
-- WHERE last_applied_event_id = :event_id
|
|
154
|
+
CREATE INDEX IF NOT EXISTS idx_registration_last_event_id
|
|
155
|
+
ON registration_projections (last_applied_event_id);
|
|
156
|
+
|
|
157
|
+
-- Index for capability queries (GIN index on JSONB)
|
|
158
|
+
-- Query pattern: SELECT * FROM registration_projections
|
|
159
|
+
-- WHERE capabilities @> '{"postgres": true}'
|
|
160
|
+
CREATE INDEX IF NOT EXISTS idx_registration_capabilities
|
|
161
|
+
ON registration_projections USING GIN (capabilities);
|
|
162
|
+
|
|
163
|
+
-- =============================================================================
|
|
164
|
+
-- GIN INDEXES FOR CAPABILITY ARRAY QUERIES (OMN-1134)
|
|
165
|
+
-- =============================================================================
|
|
166
|
+
|
|
167
|
+
-- GIN index for capability_tags array queries
|
|
168
|
+
-- Query pattern: SELECT * FROM registration_projections
|
|
169
|
+
-- WHERE capability_tags @> ARRAY['postgres.storage']
|
|
170
|
+
CREATE INDEX IF NOT EXISTS idx_registration_capability_tags
|
|
171
|
+
ON registration_projections USING GIN (capability_tags);
|
|
172
|
+
|
|
173
|
+
-- GIN index for intent_types array queries
|
|
174
|
+
-- Query pattern: SELECT * FROM registration_projections
|
|
175
|
+
-- WHERE intent_types @> ARRAY['postgres.upsert']
|
|
176
|
+
CREATE INDEX IF NOT EXISTS idx_registration_intent_types
|
|
177
|
+
ON registration_projections USING GIN (intent_types);
|
|
178
|
+
|
|
179
|
+
-- GIN index for protocols array queries
|
|
180
|
+
-- Query pattern: SELECT * FROM registration_projections
|
|
181
|
+
-- WHERE protocols @> ARRAY['ProtocolDatabaseAdapter']
|
|
182
|
+
CREATE INDEX IF NOT EXISTS idx_registration_protocols
|
|
183
|
+
ON registration_projections USING GIN (protocols);
|
|
184
|
+
|
|
185
|
+
-- B-tree index for contract_type + state queries
|
|
186
|
+
-- Query pattern: SELECT * FROM registration_projections
|
|
187
|
+
-- WHERE contract_type = 'effect' AND current_state = 'active'
|
|
188
|
+
CREATE INDEX IF NOT EXISTS idx_registration_contract_type_state
|
|
189
|
+
ON registration_projections (contract_type, current_state);
|
|
190
|
+
|
|
191
|
+
-- Composite index for deadline + emission marker scans
|
|
192
|
+
-- Optimizes the most common timeout check query
|
|
193
|
+
CREATE INDEX IF NOT EXISTS idx_registration_ack_timeout_scan
|
|
194
|
+
ON registration_projections (ack_deadline, ack_timeout_emitted_at)
|
|
195
|
+
WHERE ack_deadline IS NOT NULL AND ack_timeout_emitted_at IS NULL;
|
|
196
|
+
|
|
197
|
+
CREATE INDEX IF NOT EXISTS idx_registration_liveness_timeout_scan
|
|
198
|
+
ON registration_projections (current_state, liveness_deadline, liveness_timeout_emitted_at)
|
|
199
|
+
WHERE current_state = 'active' AND liveness_deadline IS NOT NULL AND liveness_timeout_emitted_at IS NULL;
|
|
200
|
+
|
|
201
|
+
-- =============================================================================
|
|
202
|
+
-- TABLE AND COLUMN COMMENTS
|
|
203
|
+
-- =============================================================================
|
|
204
|
+
|
|
205
|
+
COMMENT ON TABLE registration_projections IS
|
|
206
|
+
'Materialized registration state for orchestrator queries (OMN-944/F1). '
|
|
207
|
+
'Stores current FSM state, timeout deadlines, and idempotency tracking fields.';
|
|
208
|
+
|
|
209
|
+
COMMENT ON COLUMN registration_projections.entity_id IS
|
|
210
|
+
'Node UUID - partition key for per-entity ordering. Combined with domain forms primary key.';
|
|
211
|
+
|
|
212
|
+
COMMENT ON COLUMN registration_projections.domain IS
|
|
213
|
+
'Domain namespace for multi-domain support. Default: "registration".';
|
|
214
|
+
|
|
215
|
+
COMMENT ON COLUMN registration_projections.current_state IS
|
|
216
|
+
'Current FSM state. Used by orchestrators to determine workflow progression.';
|
|
217
|
+
|
|
218
|
+
COMMENT ON COLUMN registration_projections.ack_deadline IS
|
|
219
|
+
'Deadline for node acknowledgment. Orchestrator emits timeout event when passed.';
|
|
220
|
+
|
|
221
|
+
COMMENT ON COLUMN registration_projections.liveness_deadline IS
|
|
222
|
+
'Deadline for next heartbeat. Orchestrator emits liveness expired event when passed.';
|
|
223
|
+
|
|
224
|
+
COMMENT ON COLUMN registration_projections.last_heartbeat_at IS
|
|
225
|
+
'Timestamp of last received heartbeat from the node. Updated on each HeartbeatReceived event.';
|
|
226
|
+
|
|
227
|
+
COMMENT ON COLUMN registration_projections.ack_timeout_emitted_at IS
|
|
228
|
+
'Marker indicating ack timeout event was already emitted. Prevents duplicates during replay.';
|
|
229
|
+
|
|
230
|
+
COMMENT ON COLUMN registration_projections.liveness_timeout_emitted_at IS
|
|
231
|
+
'Marker indicating liveness timeout event was already emitted. Prevents duplicates during replay.';
|
|
232
|
+
|
|
233
|
+
COMMENT ON COLUMN registration_projections.last_applied_event_id IS
|
|
234
|
+
'message_id of last applied event - used for idempotency checks.';
|
|
235
|
+
|
|
236
|
+
COMMENT ON COLUMN registration_projections.last_applied_offset IS
|
|
237
|
+
'Kafka offset of last applied event - canonical ordering for replay correctness.';
|
|
238
|
+
|
|
239
|
+
COMMENT ON COLUMN registration_projections.last_applied_sequence IS
|
|
240
|
+
'Sequence number for non-Kafka transports (optional). Used when offset is not applicable.';
|
|
241
|
+
|
|
242
|
+
COMMENT ON COLUMN registration_projections.last_applied_partition IS
|
|
243
|
+
'Kafka partition of last applied event. Used with offset for global ordering.';
|
|
244
|
+
|
|
245
|
+
-- =============================================================================
|
|
246
|
+
-- INDEX STRATEGY DOCUMENTATION
|
|
247
|
+
-- =============================================================================
|
|
248
|
+
--
|
|
249
|
+
-- This schema defines multiple indexes for different query patterns. Some indexes
|
|
250
|
+
-- may appear redundant but serve distinct purposes due to partial WHERE clauses.
|
|
251
|
+
--
|
|
252
|
+
-- ACK DEADLINE INDEXES:
|
|
253
|
+
-- ---------------------
|
|
254
|
+
-- 1. idx_registration_ack_deadline:
|
|
255
|
+
-- - Single-column index on ack_deadline
|
|
256
|
+
-- - WHERE: ack_deadline IS NOT NULL
|
|
257
|
+
-- - Use case: General queries filtering by ack_deadline regardless of emission status
|
|
258
|
+
-- - Example: SELECT * FROM registration_projections WHERE ack_deadline < :now
|
|
259
|
+
--
|
|
260
|
+
-- 2. idx_registration_ack_timeout_scan:
|
|
261
|
+
-- - Composite index on (ack_deadline, ack_timeout_emitted_at)
|
|
262
|
+
-- - WHERE: ack_deadline IS NOT NULL AND ack_timeout_emitted_at IS NULL
|
|
263
|
+
-- - Use case: Timeout scanner queries that need un-emitted timeouts only
|
|
264
|
+
-- - Example: SELECT * FROM registration_projections
|
|
265
|
+
-- WHERE ack_deadline < :now AND ack_timeout_emitted_at IS NULL
|
|
266
|
+
--
|
|
267
|
+
-- WHY BOTH INDEXES EXIST:
|
|
268
|
+
-- The partial WHERE clauses differ significantly:
|
|
269
|
+
-- - idx_registration_ack_deadline includes ALL rows with non-null deadlines
|
|
270
|
+
-- - idx_registration_ack_timeout_scan ONLY includes rows awaiting timeout emission
|
|
271
|
+
--
|
|
272
|
+
-- PostgreSQL's query planner selects the most selective index. For timeout scans
|
|
273
|
+
-- (the common orchestrator query), idx_registration_ack_timeout_scan is optimal
|
|
274
|
+
-- because it pre-filters to only candidate rows. For other deadline queries that
|
|
275
|
+
-- don't filter on emission status, idx_registration_ack_deadline is used.
|
|
276
|
+
--
|
|
277
|
+
-- LIVENESS DEADLINE INDEXES:
|
|
278
|
+
-- --------------------------
|
|
279
|
+
-- Similar rationale applies to liveness indexes:
|
|
280
|
+
-- - idx_registration_liveness_deadline: All rows with liveness deadlines
|
|
281
|
+
-- - idx_registration_liveness_timeout_scan: Only active nodes awaiting emission
|
|
282
|
+
--
|
|
283
|
+
-- =============================================================================
|
|
284
|
+
-- UPSERT ORDERING ENFORCEMENT PATTERN
|
|
285
|
+
-- =============================================================================
|
|
286
|
+
--
|
|
287
|
+
-- The projector (projector_registration.py) uses an atomic INSERT-or-UPDATE with
|
|
288
|
+
-- sequence validation to enforce event ordering and reject stale updates.
|
|
289
|
+
--
|
|
290
|
+
-- KEY CONCEPT: Stale Update Rejection
|
|
291
|
+
-- ------------------------------------
|
|
292
|
+
-- "Stale" means the incoming event is older than what we've already processed.
|
|
293
|
+
-- The upsert's WHERE clause compares sequence/offset numbers to ensure we never
|
|
294
|
+
-- regress projection state. If the incoming event is older, PostgreSQL skips
|
|
295
|
+
-- the UPDATE entirely - the existing row remains unchanged.
|
|
296
|
+
--
|
|
297
|
+
-- ORDERING MODES (mutually exclusive):
|
|
298
|
+
-- ------------------------------------
|
|
299
|
+
-- 1. KAFKA-BASED ORDERING (partition IS NOT NULL):
|
|
300
|
+
-- Uses last_applied_offset for ordering within a partition.
|
|
301
|
+
-- Kafka guarantees ordering within a partition, so (partition, offset)
|
|
302
|
+
-- provides a total order for events affecting the same entity.
|
|
303
|
+
--
|
|
304
|
+
-- 2. SEQUENCE-BASED ORDERING (partition IS NULL):
|
|
305
|
+
-- Falls back to last_applied_sequence for non-Kafka transports (e.g., HTTP).
|
|
306
|
+
-- Used when the event source doesn't provide Kafka-style partition/offset.
|
|
307
|
+
--
|
|
308
|
+
-- IDEMPOTENCY FIELDS:
|
|
309
|
+
-- -------------------
|
|
310
|
+
-- - last_applied_event_id: Message UUID for exact duplicate detection
|
|
311
|
+
-- - last_applied_offset: Kafka offset for Kafka-based ordering
|
|
312
|
+
-- - last_applied_sequence: Generic sequence for non-Kafka ordering
|
|
313
|
+
-- - last_applied_partition: Kafka partition for partitioned ordering context
|
|
314
|
+
--
|
|
315
|
+
-- These fields together enable:
|
|
316
|
+
-- 1. Replay correctness: Replaying events produces identical projection state
|
|
317
|
+
-- 2. Stale rejection: Out-of-order events don't regress state
|
|
318
|
+
-- 3. Idempotency: Duplicate events are handled gracefully
|
|
319
|
+
--
|
|
320
|
+
-- See projector_registration.py for the complete upsert SQL implementation.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""ONEX Infrastructure Services Module.
|
|
4
|
+
|
|
5
|
+
Provides high-level services that compose infrastructure components for
|
|
6
|
+
use by orchestrators and runtime hosts. Services provide clean interfaces
|
|
7
|
+
for common operations and encapsulate complexity.
|
|
8
|
+
|
|
9
|
+
Exports:
|
|
10
|
+
DEFAULT_SELECTION_KEY: Default key for round-robin state tracking
|
|
11
|
+
EnumSelectionStrategy: Selection strategies for capability-based discovery
|
|
12
|
+
ModelTimeoutEmissionConfig: Configuration for timeout emitter
|
|
13
|
+
ModelTimeoutEmissionResult: Result model for timeout emission processing
|
|
14
|
+
ModelTimeoutQueryResult: Result model for timeout queries
|
|
15
|
+
ServiceCapabilityQuery: Query nodes by capability, not by name
|
|
16
|
+
ServiceNodeSelector: Select nodes from candidates using various strategies
|
|
17
|
+
ServiceSnapshot: Generic snapshot service for point-in-time state capture
|
|
18
|
+
ServiceTimeoutEmitter: Emitter for timeout events with markers
|
|
19
|
+
ServiceTimeoutScanner: Scanner for querying overdue registration entities
|
|
20
|
+
StoreSnapshotInMemory: In-memory snapshot store for testing
|
|
21
|
+
StoreSnapshotPostgres: PostgreSQL snapshot store for production
|
|
22
|
+
TimeoutEmitter: Alias for ServiceTimeoutEmitter
|
|
23
|
+
TimeoutScanner: Alias for ServiceTimeoutScanner
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
from omnibase_infra.enums import EnumSelectionStrategy
|
|
27
|
+
from omnibase_infra.services.corpus_capture import CorpusCapture
|
|
28
|
+
from omnibase_infra.services.service_capability_query import ServiceCapabilityQuery
|
|
29
|
+
from omnibase_infra.services.service_node_selector import (
|
|
30
|
+
DEFAULT_SELECTION_KEY,
|
|
31
|
+
ServiceNodeSelector,
|
|
32
|
+
)
|
|
33
|
+
from omnibase_infra.services.service_timeout_emitter import (
|
|
34
|
+
ModelTimeoutEmissionConfig,
|
|
35
|
+
ModelTimeoutEmissionResult,
|
|
36
|
+
ServiceTimeoutEmitter,
|
|
37
|
+
)
|
|
38
|
+
from omnibase_infra.services.service_timeout_scanner import (
|
|
39
|
+
ModelTimeoutQueryResult,
|
|
40
|
+
ServiceTimeoutScanner,
|
|
41
|
+
)
|
|
42
|
+
from omnibase_infra.services.snapshot import (
|
|
43
|
+
ServiceSnapshot,
|
|
44
|
+
StoreSnapshotInMemory,
|
|
45
|
+
StoreSnapshotPostgres,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
# Aliases for convenience
|
|
49
|
+
TimeoutEmitter = ServiceTimeoutEmitter
|
|
50
|
+
TimeoutScanner = ServiceTimeoutScanner
|
|
51
|
+
|
|
52
|
+
__all__ = [
|
|
53
|
+
"DEFAULT_SELECTION_KEY",
|
|
54
|
+
"EnumSelectionStrategy",
|
|
55
|
+
"ModelTimeoutEmissionConfig",
|
|
56
|
+
"ModelTimeoutEmissionResult",
|
|
57
|
+
"ModelTimeoutQueryResult",
|
|
58
|
+
"ServiceCapabilityQuery",
|
|
59
|
+
"CorpusCapture",
|
|
60
|
+
"ServiceNodeSelector",
|
|
61
|
+
"ServiceSnapshot",
|
|
62
|
+
"ServiceTimeoutEmitter",
|
|
63
|
+
"ServiceTimeoutScanner",
|
|
64
|
+
"StoreSnapshotInMemory",
|
|
65
|
+
"StoreSnapshotPostgres",
|
|
66
|
+
"TimeoutEmitter",
|
|
67
|
+
"TimeoutScanner",
|
|
68
|
+
]
|