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,542 @@
|
|
|
1
|
+
# Node Registration Orchestrator
|
|
2
|
+
|
|
3
|
+
**Type**: ORCHESTRATOR
|
|
4
|
+
**Version**: 1.0.0
|
|
5
|
+
**Contract Version**: 1.0.0
|
|
6
|
+
|
|
7
|
+
The Registration Orchestrator coordinates node lifecycle registration workflows by consuming introspection events, computing registration intents via a reducer, and executing those intents through effect nodes.
|
|
8
|
+
|
|
9
|
+
## Architecture Overview
|
|
10
|
+
|
|
11
|
+
This orchestrator uses the **declarative pattern** where workflow behavior is 100% driven by `contract.yaml`, not Python code. All workflow logic, retry policies, and result aggregation are handled by the `NodeOrchestrator` base class.
|
|
12
|
+
|
|
13
|
+
## Workflow Diagrams
|
|
14
|
+
|
|
15
|
+
### 1. High-Level Event Flow
|
|
16
|
+
|
|
17
|
+
```mermaid
|
|
18
|
+
flowchart TB
|
|
19
|
+
subgraph Input["Input Events"]
|
|
20
|
+
IE[NodeIntrospectionEvent]
|
|
21
|
+
RT[RuntimeTick]
|
|
22
|
+
RRI[RegistryRequestIntrospectionEvent]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
subgraph Orchestrator["Registration Orchestrator Workflow"]
|
|
26
|
+
direction TB
|
|
27
|
+
RI[receive_introspection]
|
|
28
|
+
RP[read_projection]
|
|
29
|
+
ET[evaluate_timeout]
|
|
30
|
+
CI[compute_intents]
|
|
31
|
+
|
|
32
|
+
subgraph Parallel["Registration Execution"]
|
|
33
|
+
ECR[execute_consul_registration]
|
|
34
|
+
EPR[execute_postgres_registration]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
AR[aggregate_results]
|
|
38
|
+
PO[publish_outcome]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
subgraph Output["Output Events"]
|
|
42
|
+
NRR[NodeRegistrationResultEvent]
|
|
43
|
+
NRI[NodeRegistrationInitiated]
|
|
44
|
+
NRA[NodeRegistrationAccepted]
|
|
45
|
+
NRJ[NodeRegistrationRejected]
|
|
46
|
+
NRAT[NodeRegistrationAckTimedOut]
|
|
47
|
+
NRAR[NodeRegistrationAckReceived]
|
|
48
|
+
NBA[NodeBecameActive]
|
|
49
|
+
NLE[NodeLivenessExpired]
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
subgraph External["External Services"]
|
|
53
|
+
Consul[(Consul)]
|
|
54
|
+
PG[(PostgreSQL)]
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
IE --> RI
|
|
58
|
+
RT --> RI
|
|
59
|
+
RRI --> RI
|
|
60
|
+
|
|
61
|
+
RI --> RP
|
|
62
|
+
RP --> ET
|
|
63
|
+
ET --> CI
|
|
64
|
+
CI --> ECR
|
|
65
|
+
CI --> EPR
|
|
66
|
+
ECR --> AR
|
|
67
|
+
EPR --> AR
|
|
68
|
+
AR --> PO
|
|
69
|
+
|
|
70
|
+
ECR -.-> Consul
|
|
71
|
+
EPR -.-> PG
|
|
72
|
+
|
|
73
|
+
PO --> NRR
|
|
74
|
+
PO --> NRI
|
|
75
|
+
PO --> NRA
|
|
76
|
+
PO --> NRJ
|
|
77
|
+
PO --> NRAT
|
|
78
|
+
PO --> NRAR
|
|
79
|
+
PO --> NBA
|
|
80
|
+
PO --> NLE
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 2. Detailed Execution Graph with Dependencies
|
|
84
|
+
|
|
85
|
+
```mermaid
|
|
86
|
+
flowchart TD
|
|
87
|
+
subgraph ExecutionGraph["Execution Graph (8 Nodes)"]
|
|
88
|
+
N1["<b>receive_introspection</b><br/><i>type: effect</i><br/>Receive introspection or tick event"]
|
|
89
|
+
N2["<b>read_projection</b><br/><i>type: effect</i><br/>Read registration state from projection"]
|
|
90
|
+
N3["<b>evaluate_timeout</b><br/><i>type: compute</i><br/>Evaluate timeout with injected time"]
|
|
91
|
+
N4["<b>compute_intents</b><br/><i>type: reducer</i><br/>Compute registration intents"]
|
|
92
|
+
N5["<b>execute_consul_registration</b><br/><i>type: effect</i><br/>Execute Consul registration intent"]
|
|
93
|
+
N6["<b>execute_postgres_registration</b><br/><i>type: effect</i><br/>Execute PostgreSQL registration intent"]
|
|
94
|
+
N7["<b>aggregate_results</b><br/><i>type: compute</i><br/>Aggregate registration results"]
|
|
95
|
+
N8["<b>publish_outcome</b><br/><i>type: effect</i><br/>Publish registration outcome event"]
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
N1 --> N2
|
|
99
|
+
N2 --> N3
|
|
100
|
+
N3 --> N4
|
|
101
|
+
N4 --> N5
|
|
102
|
+
N4 --> N6
|
|
103
|
+
N5 --> N7
|
|
104
|
+
N6 --> N7
|
|
105
|
+
N7 --> N8
|
|
106
|
+
|
|
107
|
+
style N1 fill:#e1f5fe
|
|
108
|
+
style N2 fill:#e1f5fe
|
|
109
|
+
style N3 fill:#fff3e0
|
|
110
|
+
style N4 fill:#f3e5f5
|
|
111
|
+
style N5 fill:#e1f5fe
|
|
112
|
+
style N6 fill:#e1f5fe
|
|
113
|
+
style N7 fill:#fff3e0
|
|
114
|
+
style N8 fill:#e1f5fe
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Legend**:
|
|
118
|
+
- Blue (effect): External I/O operations
|
|
119
|
+
- Orange (compute): Pure transformations
|
|
120
|
+
- Purple (reducer): State aggregation
|
|
121
|
+
|
|
122
|
+
### 3. Reducer State Machine
|
|
123
|
+
|
|
124
|
+
```mermaid
|
|
125
|
+
stateDiagram-v2
|
|
126
|
+
[*] --> Initial: ModelReducerState.initial()
|
|
127
|
+
|
|
128
|
+
Initial --> Processing: Event received
|
|
129
|
+
Processing --> Updated: Valid event
|
|
130
|
+
Processing --> Initial: Duplicate node_id
|
|
131
|
+
|
|
132
|
+
state Processing {
|
|
133
|
+
[*] --> ValidateEvent
|
|
134
|
+
ValidateEvent --> CheckDuplicate: Event valid
|
|
135
|
+
ValidateEvent --> Error: Invalid event
|
|
136
|
+
CheckDuplicate --> GenerateIntents: New node
|
|
137
|
+
CheckDuplicate --> Skip: Already processed
|
|
138
|
+
GenerateIntents --> UpdateState
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
Updated --> Processing: Next event
|
|
142
|
+
|
|
143
|
+
note right of Initial
|
|
144
|
+
processed_node_ids: frozenset()
|
|
145
|
+
pending_registrations: 0
|
|
146
|
+
last_event_timestamp: None
|
|
147
|
+
end note
|
|
148
|
+
|
|
149
|
+
note right of Updated
|
|
150
|
+
processed_node_ids: frozenset({node_id})
|
|
151
|
+
pending_registrations: +2 per event
|
|
152
|
+
last_event_timestamp: event.timestamp
|
|
153
|
+
end note
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### 4. Intent Generation Flow
|
|
157
|
+
|
|
158
|
+
```mermaid
|
|
159
|
+
flowchart LR
|
|
160
|
+
subgraph Input["Introspection Event"]
|
|
161
|
+
NID[node_id]
|
|
162
|
+
NT[node_type]
|
|
163
|
+
NV[node_version]
|
|
164
|
+
CAP[capabilities]
|
|
165
|
+
EP[endpoints]
|
|
166
|
+
CID[correlation_id]
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
subgraph Reducer["ProtocolReducer.reduce()"]
|
|
170
|
+
direction TB
|
|
171
|
+
VAL[Validate Event]
|
|
172
|
+
DUP[Check Duplicate]
|
|
173
|
+
GEN[Generate Intents]
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
subgraph Intents["Generated Intents"]
|
|
177
|
+
CI["ModelConsulRegistrationIntent<br/><i>kind: 'consul'</i><br/><i>operation: 'register'</i>"]
|
|
178
|
+
PI["ModelPostgresUpsertIntent<br/><i>kind: 'postgres'</i><br/><i>operation: 'upsert'</i>"]
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
NID --> VAL
|
|
182
|
+
NT --> VAL
|
|
183
|
+
NV --> VAL
|
|
184
|
+
CAP --> VAL
|
|
185
|
+
EP --> VAL
|
|
186
|
+
CID --> VAL
|
|
187
|
+
|
|
188
|
+
VAL --> DUP
|
|
189
|
+
DUP --> GEN
|
|
190
|
+
|
|
191
|
+
GEN --> CI
|
|
192
|
+
GEN --> PI
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### 5. Effect Execution and Result Aggregation
|
|
196
|
+
|
|
197
|
+
```mermaid
|
|
198
|
+
flowchart TB
|
|
199
|
+
subgraph Intents["Registration Intents"]
|
|
200
|
+
CI[ConsulRegistrationIntent]
|
|
201
|
+
PI[PostgresUpsertIntent]
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
subgraph Effect["ProtocolEffect.execute_intent()"]
|
|
205
|
+
CE[Execute Consul]
|
|
206
|
+
PE[Execute Postgres]
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
subgraph Results["Intent Execution Results"]
|
|
210
|
+
CR["ModelIntentExecutionResult<br/>intent_kind: 'consul'<br/>success: bool<br/>execution_time_ms: float"]
|
|
211
|
+
PR["ModelIntentExecutionResult<br/>intent_kind: 'postgres'<br/>success: bool<br/>execution_time_ms: float"]
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
subgraph Aggregation["Result Aggregation"]
|
|
215
|
+
AGG{All Success?}
|
|
216
|
+
SUCCESS["status: 'success'<br/>consul_applied: true<br/>postgres_applied: true"]
|
|
217
|
+
PARTIAL["status: 'partial'<br/>one applied, one failed"]
|
|
218
|
+
FAILED["status: 'failed'<br/>consul_applied: false<br/>postgres_applied: false"]
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
subgraph Output["Orchestrator Output"]
|
|
222
|
+
OUT[ModelOrchestratorOutput]
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
CI --> CE
|
|
226
|
+
PI --> PE
|
|
227
|
+
CE --> CR
|
|
228
|
+
PE --> PR
|
|
229
|
+
CR --> AGG
|
|
230
|
+
PR --> AGG
|
|
231
|
+
|
|
232
|
+
AGG -->|Both succeed| SUCCESS
|
|
233
|
+
AGG -->|One succeeds| PARTIAL
|
|
234
|
+
AGG -->|Both fail| FAILED
|
|
235
|
+
|
|
236
|
+
SUCCESS --> OUT
|
|
237
|
+
PARTIAL --> OUT
|
|
238
|
+
FAILED --> OUT
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### 6. Error Handling and Retry Flow
|
|
242
|
+
|
|
243
|
+
```mermaid
|
|
244
|
+
flowchart TB
|
|
245
|
+
subgraph Workflow["Workflow Execution"]
|
|
246
|
+
START([Start Step])
|
|
247
|
+
EXEC[Execute Step]
|
|
248
|
+
CHECK{Success?}
|
|
249
|
+
DONE([Step Complete])
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
subgraph WorkflowRetry["Workflow Step Retry<br/>(coordination_rules.max_retries: 3)"]
|
|
253
|
+
WR_CHECK{Retries < 3?}
|
|
254
|
+
WR_RETRY[Retry Entire Step]
|
|
255
|
+
WR_FAIL[Mark Workflow Failed]
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
subgraph ErrorRetry["Error-Level Retry<br/>(error_handling.retry_policy)"]
|
|
259
|
+
ER_CHECK{Retryable Error?}
|
|
260
|
+
ER_BACKOFF["Exponential Backoff<br/>100ms -> 200ms -> 400ms"]
|
|
261
|
+
ER_CIRCUIT{Circuit Open?}
|
|
262
|
+
ER_FAIL[Return Error Result]
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
subgraph CircuitBreaker["Circuit Breaker<br/>(failure_threshold: 5)"]
|
|
266
|
+
CB_COUNT[Increment Failure Count]
|
|
267
|
+
CB_CHECK{Count >= 5?}
|
|
268
|
+
CB_OPEN[Open Circuit]
|
|
269
|
+
CB_TIMEOUT["Wait 60s<br/>reset_timeout_ms"]
|
|
270
|
+
CB_HALF[Half-Open State]
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
START --> EXEC
|
|
274
|
+
EXEC --> CHECK
|
|
275
|
+
CHECK -->|Yes| DONE
|
|
276
|
+
CHECK -->|No| ER_CHECK
|
|
277
|
+
|
|
278
|
+
ER_CHECK -->|Yes| ER_BACKOFF
|
|
279
|
+
ER_CHECK -->|No| ER_FAIL
|
|
280
|
+
|
|
281
|
+
ER_BACKOFF --> ER_CIRCUIT
|
|
282
|
+
ER_CIRCUIT -->|No| EXEC
|
|
283
|
+
ER_CIRCUIT -->|Yes| WR_CHECK
|
|
284
|
+
|
|
285
|
+
ER_FAIL --> CB_COUNT
|
|
286
|
+
CB_COUNT --> CB_CHECK
|
|
287
|
+
CB_CHECK -->|Yes| CB_OPEN
|
|
288
|
+
CB_CHECK -->|No| WR_CHECK
|
|
289
|
+
|
|
290
|
+
CB_OPEN --> CB_TIMEOUT
|
|
291
|
+
CB_TIMEOUT --> CB_HALF
|
|
292
|
+
CB_HALF --> EXEC
|
|
293
|
+
|
|
294
|
+
WR_CHECK -->|Yes| WR_RETRY
|
|
295
|
+
WR_CHECK -->|No| WR_FAIL
|
|
296
|
+
WR_RETRY --> EXEC
|
|
297
|
+
|
|
298
|
+
style ER_BACKOFF fill:#fff3e0
|
|
299
|
+
style CB_OPEN fill:#ffebee
|
|
300
|
+
style WR_FAIL fill:#ffebee
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### 7. Complete Workflow State Transitions
|
|
304
|
+
|
|
305
|
+
```mermaid
|
|
306
|
+
stateDiagram-v2
|
|
307
|
+
[*] --> Idle
|
|
308
|
+
|
|
309
|
+
Idle --> ReceivingEvent: Event arrives
|
|
310
|
+
|
|
311
|
+
state ReceivingEvent {
|
|
312
|
+
[*] --> WaitingForEvent
|
|
313
|
+
WaitingForEvent --> EventReceived: introspection/tick
|
|
314
|
+
EventReceived --> [*]
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
ReceivingEvent --> ReadingProjection: Event valid
|
|
318
|
+
|
|
319
|
+
state ReadingProjection {
|
|
320
|
+
[*] --> QueryProjection
|
|
321
|
+
QueryProjection --> ProjectionRead: Success
|
|
322
|
+
QueryProjection --> ProjectionError: Failure
|
|
323
|
+
ProjectionError --> QueryProjection: Retry
|
|
324
|
+
ProjectionRead --> [*]
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
ReadingProjection --> EvaluatingTimeout: Projection loaded
|
|
328
|
+
|
|
329
|
+
state EvaluatingTimeout {
|
|
330
|
+
[*] --> CheckTimeout
|
|
331
|
+
CheckTimeout --> TimeoutExpired: Timeout detected
|
|
332
|
+
CheckTimeout --> NoTimeout: Within threshold
|
|
333
|
+
TimeoutExpired --> [*]
|
|
334
|
+
NoTimeout --> [*]
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
EvaluatingTimeout --> ComputingIntents: Timeout evaluated
|
|
338
|
+
|
|
339
|
+
state ComputingIntents {
|
|
340
|
+
[*] --> ReducerProcessing
|
|
341
|
+
ReducerProcessing --> IntentsGenerated: New node
|
|
342
|
+
ReducerProcessing --> NoIntents: Duplicate/filtered
|
|
343
|
+
IntentsGenerated --> [*]
|
|
344
|
+
NoIntents --> [*]
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
ComputingIntents --> ExecutingRegistrations: Intents ready
|
|
348
|
+
|
|
349
|
+
state ExecutingRegistrations {
|
|
350
|
+
[*] --> ConsulRegistration
|
|
351
|
+
[*] --> PostgresRegistration
|
|
352
|
+
ConsulRegistration --> ConsulDone
|
|
353
|
+
PostgresRegistration --> PostgresDone
|
|
354
|
+
ConsulDone --> [*]
|
|
355
|
+
PostgresDone --> [*]
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
ExecutingRegistrations --> AggregatingResults: Both complete
|
|
359
|
+
|
|
360
|
+
state AggregatingResults {
|
|
361
|
+
[*] --> CollectResults
|
|
362
|
+
CollectResults --> DetermineStatus
|
|
363
|
+
DetermineStatus --> StatusSuccess: All passed
|
|
364
|
+
DetermineStatus --> StatusPartial: Some passed
|
|
365
|
+
DetermineStatus --> StatusFailed: None passed
|
|
366
|
+
StatusSuccess --> [*]
|
|
367
|
+
StatusPartial --> [*]
|
|
368
|
+
StatusFailed --> [*]
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
AggregatingResults --> PublishingOutcome: Results aggregated
|
|
372
|
+
|
|
373
|
+
state PublishingOutcome {
|
|
374
|
+
[*] --> EmitEvent
|
|
375
|
+
EmitEvent --> EventPublished
|
|
376
|
+
EventPublished --> [*]
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
PublishingOutcome --> Idle: Complete
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
## Data Models
|
|
383
|
+
|
|
384
|
+
### Input Model: `ModelOrchestratorInput`
|
|
385
|
+
|
|
386
|
+
| Field | Type | Description |
|
|
387
|
+
|-------|------|-------------|
|
|
388
|
+
| `introspection_event` | `ModelNodeIntrospectionEvent` | The introspection event to process |
|
|
389
|
+
| `correlation_id` | `UUID` | Correlation ID for distributed tracing |
|
|
390
|
+
|
|
391
|
+
### Output Model: `ModelOrchestratorOutput`
|
|
392
|
+
|
|
393
|
+
| Field | Type | Description |
|
|
394
|
+
|-------|------|-------------|
|
|
395
|
+
| `correlation_id` | `UUID` | Correlation ID for tracing |
|
|
396
|
+
| `status` | `Literal["success", "partial", "failed"]` | Overall workflow status |
|
|
397
|
+
| `consul_applied` | `bool` | Whether Consul registration succeeded |
|
|
398
|
+
| `postgres_applied` | `bool` | Whether PostgreSQL registration succeeded |
|
|
399
|
+
| `consul_error` | `str \| None` | Consul error message if any |
|
|
400
|
+
| `postgres_error` | `str \| None` | PostgreSQL error message if any |
|
|
401
|
+
| `intent_results` | `list[ModelIntentExecutionResult]` | Results of each intent execution |
|
|
402
|
+
| `total_execution_time_ms` | `float` | Total workflow execution time |
|
|
403
|
+
|
|
404
|
+
### Intent Models
|
|
405
|
+
|
|
406
|
+
#### `ModelConsulRegistrationIntent`
|
|
407
|
+
```python
|
|
408
|
+
kind: Literal["consul"] # Discriminator
|
|
409
|
+
operation: str # "register", "deregister"
|
|
410
|
+
node_id: UUID
|
|
411
|
+
correlation_id: UUID
|
|
412
|
+
payload: ModelConsulIntentPayload
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
#### `ModelPostgresUpsertIntent`
|
|
416
|
+
```python
|
|
417
|
+
kind: Literal["postgres"] # Discriminator
|
|
418
|
+
operation: str # "upsert", "delete"
|
|
419
|
+
node_id: UUID
|
|
420
|
+
correlation_id: UUID
|
|
421
|
+
payload: ModelPostgresIntentPayload
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
## Configuration
|
|
425
|
+
|
|
426
|
+
### Coordination Rules
|
|
427
|
+
|
|
428
|
+
| Setting | Value | Description |
|
|
429
|
+
|---------|-------|-------------|
|
|
430
|
+
| `execution_mode` | `sequential` | Steps execute in order |
|
|
431
|
+
| `parallel_execution_allowed` | `false` | No parallel branches |
|
|
432
|
+
| `max_retries` | `3` | Workflow step retry count |
|
|
433
|
+
| `timeout_ms` | `30000` | Overall workflow timeout |
|
|
434
|
+
| `checkpoint_enabled` | `true` | Enables recovery checkpoints |
|
|
435
|
+
| `rollback_enabled` | `true` | Enables rollback on failure |
|
|
436
|
+
|
|
437
|
+
### Error Handling
|
|
438
|
+
|
|
439
|
+
| Setting | Value | Description |
|
|
440
|
+
|---------|-------|-------------|
|
|
441
|
+
| `retry_policy.max_retries` | `3` | Error-level retry count |
|
|
442
|
+
| `retry_policy.initial_delay_ms` | `100` | Initial backoff delay |
|
|
443
|
+
| `retry_policy.max_delay_ms` | `5000` | Maximum backoff delay |
|
|
444
|
+
| `retry_policy.exponential_base` | `2` | Backoff multiplier |
|
|
445
|
+
| `circuit_breaker.enabled` | `true` | Circuit breaker active |
|
|
446
|
+
| `circuit_breaker.failure_threshold` | `5` | Failures before open |
|
|
447
|
+
| `circuit_breaker.reset_timeout_ms` | `60000` | Time before half-open |
|
|
448
|
+
|
|
449
|
+
## Dependencies
|
|
450
|
+
|
|
451
|
+
| Name | Type | Description |
|
|
452
|
+
|------|------|-------------|
|
|
453
|
+
| `reducer_protocol` | Protocol | For computing registration intents |
|
|
454
|
+
| `effect_node` | Node | For executing registration operations |
|
|
455
|
+
| `projection_reader` | Protocol | For reading current state (OMN-930) |
|
|
456
|
+
|
|
457
|
+
## Events
|
|
458
|
+
|
|
459
|
+
### Consumed Events
|
|
460
|
+
|
|
461
|
+
| Topic Pattern | Event Type | Description |
|
|
462
|
+
|---------------|------------|-------------|
|
|
463
|
+
| `{env}.{namespace}.onex.evt.node-introspection.v1` | `NodeIntrospectionEvent` | Node introspection data |
|
|
464
|
+
| `{env}.{namespace}.onex.evt.registry-request-introspection.v1` | `RegistryRequestIntrospectionEvent` | Registry request |
|
|
465
|
+
| `{env}.{namespace}.onex.internal.runtime-tick.v1` | `RuntimeTick` | Internal tick for timeout evaluation |
|
|
466
|
+
|
|
467
|
+
### Published Events
|
|
468
|
+
|
|
469
|
+
| Topic Pattern | Event Type | Description |
|
|
470
|
+
|---------------|------------|-------------|
|
|
471
|
+
| `{env}.{namespace}.onex.evt.node-registration-result.v1` | `NodeRegistrationResultEvent` | Final registration result |
|
|
472
|
+
| `{env}.{namespace}.onex.evt.node-registration-initiated.v1` | `NodeRegistrationInitiated` | Registration started |
|
|
473
|
+
| `{env}.{namespace}.onex.evt.node-registration-accepted.v1` | `NodeRegistrationAccepted` | Registration accepted |
|
|
474
|
+
| `{env}.{namespace}.onex.evt.node-registration-rejected.v1` | `NodeRegistrationRejected` | Registration rejected |
|
|
475
|
+
| `{env}.{namespace}.onex.evt.node-registration-ack-timed-out.v1` | `NodeRegistrationAckTimedOut` | ACK timeout |
|
|
476
|
+
| `{env}.{namespace}.onex.evt.node-registration-ack-received.v1` | `NodeRegistrationAckReceived` | ACK received |
|
|
477
|
+
| `{env}.{namespace}.onex.evt.node-became-active.v1` | `NodeBecameActive` | Node activated |
|
|
478
|
+
| `{env}.{namespace}.onex.evt.node-liveness-expired.v1` | `NodeLivenessExpired` | Liveness expired |
|
|
479
|
+
|
|
480
|
+
## Coroutine Safety
|
|
481
|
+
|
|
482
|
+
This orchestrator is **NOT coroutine-safe** for concurrent workflow invocations. Each instance should handle one workflow at a time. For concurrent workflows, create multiple instances.
|
|
483
|
+
|
|
484
|
+
## Limitations & Implementation Status
|
|
485
|
+
|
|
486
|
+
This node is part of the MVP implementation for OMN-888. The following limitations apply:
|
|
487
|
+
|
|
488
|
+
### Current Limitations
|
|
489
|
+
|
|
490
|
+
| Limitation | Ticket | Description |
|
|
491
|
+
|------------|--------|-------------|
|
|
492
|
+
| Effect Node Integration | OMN-890 | `NodeRegistryEffect` is implemented in `nodes/effects/registry_effect.py`. The `node_registry_effect` module re-exports from this location. Integration with orchestrator workflow pending reducer implementation. |
|
|
493
|
+
| Reducer Not Implemented | OMN-889 | `ProtocolReducer` is defined but no concrete implementation exists. Intent computation is pending. |
|
|
494
|
+
| Projection Reader Not Wired | OMN-930 | `ProtocolProjectionReader` protocol does not exist in `omnibase_spi.protocols`. The `read_projection` workflow step cannot execute. |
|
|
495
|
+
| Time Injection Not Wired | OMN-973 | Contract declares time injection but orchestrator does not parse or use it. Timeout evaluation uses implicit dispatch context. |
|
|
496
|
+
| Intent Models in Infra | OMN-912 | Intent models are currently in `omnibase_infra`. Should be moved to `omnibase_core` for broader reuse. |
|
|
497
|
+
|
|
498
|
+
### Implementation Status
|
|
499
|
+
|
|
500
|
+
| Component | Status | Location | Notes |
|
|
501
|
+
|-----------|--------|----------|-------|
|
|
502
|
+
| Orchestrator Node | **Complete** | `node.py` | Declarative pattern, extends `NodeOrchestrator` |
|
|
503
|
+
| Contract | **Complete** | `contract.yaml` | Full workflow definition with coordination rules |
|
|
504
|
+
| Protocols | **Complete** | `protocols.py` | `ProtocolReducer`, `ProtocolEffect` defined |
|
|
505
|
+
| Models | **Complete** | `models/` | Input, output, intent, state models |
|
|
506
|
+
| README | **Complete** | `README.md` | This file |
|
|
507
|
+
| Effect Node | **Complete** | `nodes/effects/registry_effect.py` | Alias at `nodes/node_registry_effect/` |
|
|
508
|
+
| Reducer Impl | **Pending** | N/A | No implementation yet (OMN-889) |
|
|
509
|
+
| Projection Reader | **Pending** | N/A | SPI protocol needed (OMN-930) |
|
|
510
|
+
|
|
511
|
+
### What Works Today
|
|
512
|
+
|
|
513
|
+
1. **Contract Parsing**: The contract.yaml is valid and fully defines the workflow
|
|
514
|
+
2. **Model Validation**: All input/output models work with Pydantic validation
|
|
515
|
+
3. **Protocol Definitions**: Type contracts for reducer and effect are complete
|
|
516
|
+
4. **Workflow Structure**: Execution graph with dependencies is defined
|
|
517
|
+
|
|
518
|
+
### What Does NOT Work Today
|
|
519
|
+
|
|
520
|
+
1. **End-to-End Registration**: Cannot register nodes (reducer → effect integration pending)
|
|
521
|
+
2. **Intent Computation**: Cannot generate intents (reducer not implemented)
|
|
522
|
+
3. **Projection Reading**: Cannot read current state (protocol not in SPI)
|
|
523
|
+
4. **Timeout Evaluation**: Uses implicit time, not contract-driven injection
|
|
524
|
+
|
|
525
|
+
Note: The effect node (`NodeRegistryEffect`) is fully implemented and tested. The
|
|
526
|
+
blocker for end-to-end registration is the reducer implementation (OMN-889) which
|
|
527
|
+
must generate intents that the effect node will execute.
|
|
528
|
+
|
|
529
|
+
## Related Tickets
|
|
530
|
+
|
|
531
|
+
- **OMN-888**: Infrastructure MVP Node Registration Orchestrator Workflow
|
|
532
|
+
- **OMN-889**: Reducer Implementation (pending)
|
|
533
|
+
- **OMN-890**: Effect Node Implementation (pending)
|
|
534
|
+
- **OMN-912**: Intent Models in omnibase_core (pending)
|
|
535
|
+
- **OMN-930**: Projection Reader Integration
|
|
536
|
+
- **OMN-973**: Time Injection Context for Timeout Evaluation
|
|
537
|
+
|
|
538
|
+
## Related Documentation
|
|
539
|
+
|
|
540
|
+
- [Node Architecture](../../../../docs/architecture/REGISTRATION_ORCHESTRATOR_ARCHITECTURE.md) - Complete architectural design
|
|
541
|
+
- [Protocol Architecture](../../../../docs/architecture/NODE_REGISTRATION_ORCHESTRATOR_PROTOCOLS.md) - Detailed protocol design
|
|
542
|
+
- [Validation Exemptions](../../validation/validation_exemptions.yaml) - Exemption for domain-grouped protocols
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Registration Orchestrator Node package.
|
|
4
|
+
|
|
5
|
+
This node orchestrates the registration workflow by coordinating between
|
|
6
|
+
the reducer (for intent generation) and effect node (for execution).
|
|
7
|
+
|
|
8
|
+
Node Type: ORCHESTRATOR_GENERIC
|
|
9
|
+
Purpose: Coordinate node lifecycle registration workflows by consuming
|
|
10
|
+
introspection events, requesting intents from reducer, and
|
|
11
|
+
dispatching execution to the effect node.
|
|
12
|
+
|
|
13
|
+
The orchestrator extends NodeOrchestrator from omnibase_core, which provides:
|
|
14
|
+
- Workflow execution from YAML contracts
|
|
15
|
+
- Step dependency resolution
|
|
16
|
+
- Parallel/sequential execution modes
|
|
17
|
+
- Action emission for deferred execution
|
|
18
|
+
|
|
19
|
+
Event Handlers (all co-located in handlers/ subdirectory):
|
|
20
|
+
- HandlerNodeIntrospected: Processes NodeIntrospectionEvent (canonical trigger)
|
|
21
|
+
- HandlerNodeRegistrationAcked: Processes NodeRegistrationAcked commands
|
|
22
|
+
- HandlerRuntimeTick: Processes RuntimeTick for timeout evaluation
|
|
23
|
+
- HandlerNodeHeartbeat: Processes NodeHeartbeat for liveness tracking (OMN-1006)
|
|
24
|
+
|
|
25
|
+
For handler access, import from handlers submodule:
|
|
26
|
+
```python
|
|
27
|
+
from omnibase_infra.nodes.node_registration_orchestrator.handlers import (
|
|
28
|
+
HandlerNodeHeartbeat,
|
|
29
|
+
HandlerNodeIntrospected,
|
|
30
|
+
HandlerNodeRegistrationAcked,
|
|
31
|
+
HandlerRuntimeTick,
|
|
32
|
+
ModelHeartbeatHandlerResult,
|
|
33
|
+
)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Exports:
|
|
37
|
+
NodeRegistrationOrchestrator: Main orchestrator node implementation (declarative)
|
|
38
|
+
TimeoutCoordinator: Coordinator for RuntimeTick timeout coordination
|
|
39
|
+
ModelTimeoutCoordinationResult: Result model for timeout coordinator
|
|
40
|
+
ModelOrchestratorConfig: Configuration model
|
|
41
|
+
ModelOrchestratorInput: Input model
|
|
42
|
+
ModelOrchestratorOutput: Output model
|
|
43
|
+
ModelIntentExecutionResult: Result model for intent execution
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
from __future__ import annotations
|
|
47
|
+
|
|
48
|
+
# Dispatchers (moved from runtime/dispatchers/ - OMN-1346)
|
|
49
|
+
from omnibase_infra.nodes.node_registration_orchestrator.dispatchers import (
|
|
50
|
+
DispatcherNodeIntrospected,
|
|
51
|
+
DispatcherNodeRegistrationAcked,
|
|
52
|
+
DispatcherRuntimeTick,
|
|
53
|
+
)
|
|
54
|
+
from omnibase_infra.nodes.node_registration_orchestrator.introspection_event_router import (
|
|
55
|
+
IntrospectionEventRouter,
|
|
56
|
+
)
|
|
57
|
+
from omnibase_infra.nodes.node_registration_orchestrator.models import (
|
|
58
|
+
ModelIntentExecutionResult,
|
|
59
|
+
ModelOrchestratorConfig,
|
|
60
|
+
ModelOrchestratorInput,
|
|
61
|
+
ModelOrchestratorOutput,
|
|
62
|
+
)
|
|
63
|
+
from omnibase_infra.nodes.node_registration_orchestrator.node import (
|
|
64
|
+
NodeRegistrationOrchestrator,
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
# Domain plugin (OMN-1346) - kernel initialization plugin
|
|
68
|
+
from omnibase_infra.nodes.node_registration_orchestrator.plugin import (
|
|
69
|
+
PluginRegistration,
|
|
70
|
+
)
|
|
71
|
+
from omnibase_infra.nodes.node_registration_orchestrator.timeout_coordinator import (
|
|
72
|
+
ModelTimeoutCoordinationResult,
|
|
73
|
+
TimeoutCoordinator,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
# Domain wiring (OMN-1346) - handler/dispatcher wiring, getters, and route ID constants
|
|
77
|
+
from omnibase_infra.nodes.node_registration_orchestrator.wiring import (
|
|
78
|
+
ROUTE_ID_NODE_INTROSPECTION,
|
|
79
|
+
ROUTE_ID_NODE_REGISTRATION_ACKED,
|
|
80
|
+
ROUTE_ID_RUNTIME_TICK,
|
|
81
|
+
get_handler_node_introspected_from_container,
|
|
82
|
+
get_handler_node_registration_acked_from_container,
|
|
83
|
+
get_handler_runtime_tick_from_container,
|
|
84
|
+
get_projection_reader_from_container,
|
|
85
|
+
wire_registration_dispatchers,
|
|
86
|
+
wire_registration_handlers,
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
__all__: list[str] = [
|
|
90
|
+
# Dispatchers (moved from runtime/dispatchers/ - OMN-1346)
|
|
91
|
+
"DispatcherNodeIntrospected",
|
|
92
|
+
"DispatcherNodeRegistrationAcked",
|
|
93
|
+
"DispatcherRuntimeTick",
|
|
94
|
+
# Event routing (moved from runtime/ - OMN-1346)
|
|
95
|
+
"IntrospectionEventRouter",
|
|
96
|
+
"ModelIntentExecutionResult",
|
|
97
|
+
# Models
|
|
98
|
+
"ModelOrchestratorConfig",
|
|
99
|
+
"ModelOrchestratorInput",
|
|
100
|
+
"ModelOrchestratorOutput",
|
|
101
|
+
"ModelTimeoutCoordinationResult",
|
|
102
|
+
# Primary export - the declarative orchestrator
|
|
103
|
+
"NodeRegistrationOrchestrator",
|
|
104
|
+
# Domain plugin (OMN-1346)
|
|
105
|
+
"PluginRegistration",
|
|
106
|
+
# Route ID constants (OMN-1346)
|
|
107
|
+
"ROUTE_ID_NODE_INTROSPECTION",
|
|
108
|
+
"ROUTE_ID_NODE_REGISTRATION_ACKED",
|
|
109
|
+
"ROUTE_ID_RUNTIME_TICK",
|
|
110
|
+
# Coordinators
|
|
111
|
+
"TimeoutCoordinator",
|
|
112
|
+
# Domain wiring - handler and dispatcher wiring (OMN-1346)
|
|
113
|
+
"wire_registration_dispatchers",
|
|
114
|
+
"wire_registration_handlers",
|
|
115
|
+
# Domain wiring - handler getters (OMN-1346)
|
|
116
|
+
"get_projection_reader_from_container",
|
|
117
|
+
"get_handler_node_introspected_from_container",
|
|
118
|
+
"get_handler_runtime_tick_from_container",
|
|
119
|
+
"get_handler_node_registration_acked_from_container",
|
|
120
|
+
]
|