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,81 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Security validation error model.
|
|
4
|
+
|
|
5
|
+
This module defines the ModelSecurityError model for capturing security
|
|
6
|
+
validation failures. Errors indicate policy violations that must be addressed
|
|
7
|
+
before handler registration or invocation can proceed.
|
|
8
|
+
|
|
9
|
+
Example:
|
|
10
|
+
>>> from omnibase_infra.enums import EnumValidationSeverity
|
|
11
|
+
>>> error = ModelSecurityError(
|
|
12
|
+
... code="SECRET_SCOPE_NOT_PERMITTED",
|
|
13
|
+
... field="secret_scopes",
|
|
14
|
+
... message="Secret scope 'database-admin' not permitted in production",
|
|
15
|
+
... severity=EnumValidationSeverity.ERROR,
|
|
16
|
+
... )
|
|
17
|
+
|
|
18
|
+
See Also:
|
|
19
|
+
- ModelSecurityWarning: Advisory warnings that don't block validation
|
|
20
|
+
- ModelSecurityValidationResult: Complete validation result container
|
|
21
|
+
- EnumSecurityRuleId: Security validation rule identifiers
|
|
22
|
+
- EnumValidationSeverity: Validation severity levels
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
from __future__ import annotations
|
|
26
|
+
|
|
27
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
28
|
+
|
|
29
|
+
from omnibase_infra.enums import EnumValidationSeverity
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class ModelSecurityError(BaseModel):
|
|
33
|
+
"""A security validation error.
|
|
34
|
+
|
|
35
|
+
Represents a security validation failure that should prevent
|
|
36
|
+
handler registration or invocation. Errors indicate policy
|
|
37
|
+
violations that must be addressed.
|
|
38
|
+
|
|
39
|
+
Attributes:
|
|
40
|
+
code: Error code identifier (e.g., "MISSING_SECRET_SCOPE", "INVALID_DOMAIN").
|
|
41
|
+
Should be a stable identifier suitable for programmatic handling.
|
|
42
|
+
field: The field or policy attribute that caused the error.
|
|
43
|
+
message: Human-readable error description.
|
|
44
|
+
severity: Error severity level using EnumValidationSeverity.
|
|
45
|
+
Defaults to ERROR. Use CRITICAL for severe security issues
|
|
46
|
+
and WARNING for advisory issues.
|
|
47
|
+
|
|
48
|
+
Example:
|
|
49
|
+
>>> from omnibase_infra.enums import EnumValidationSeverity
|
|
50
|
+
>>> error = ModelSecurityError(
|
|
51
|
+
... code="SECRET_SCOPE_NOT_PERMITTED",
|
|
52
|
+
... field="secret_scopes",
|
|
53
|
+
... message="Secret scope 'database-admin' not permitted in production",
|
|
54
|
+
... severity=EnumValidationSeverity.ERROR,
|
|
55
|
+
... )
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
model_config = ConfigDict(
|
|
59
|
+
frozen=True,
|
|
60
|
+
extra="forbid",
|
|
61
|
+
strict=True,
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
code: str = Field(
|
|
65
|
+
description="Error code identifier for programmatic handling",
|
|
66
|
+
)
|
|
67
|
+
field: str = Field(
|
|
68
|
+
description="The field or policy attribute that caused the error",
|
|
69
|
+
)
|
|
70
|
+
message: str = Field(
|
|
71
|
+
description="Human-readable error description",
|
|
72
|
+
)
|
|
73
|
+
severity: EnumValidationSeverity = Field(
|
|
74
|
+
default=EnumValidationSeverity.ERROR,
|
|
75
|
+
description="Error severity level (ERROR, CRITICAL, or WARNING)",
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
__all__ = [
|
|
80
|
+
"ModelSecurityError",
|
|
81
|
+
]
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Security validation result model for security validation.
|
|
4
|
+
|
|
5
|
+
This module defines the ModelSecurityValidationResult model for capturing
|
|
6
|
+
complete security validation outcomes, including all errors and warnings.
|
|
7
|
+
This model is used by SecurityMetadataValidator (OMN-1137) to return
|
|
8
|
+
structured validation outcomes.
|
|
9
|
+
|
|
10
|
+
Example:
|
|
11
|
+
>>> from omnibase_infra.enums import EnumHandlerTypeCategory
|
|
12
|
+
>>> from omnibase_infra.models.security import (
|
|
13
|
+
... ModelSecurityError,
|
|
14
|
+
... ModelSecurityWarning,
|
|
15
|
+
... )
|
|
16
|
+
>>> result = ModelSecurityValidationResult(
|
|
17
|
+
... valid=False,
|
|
18
|
+
... subject="my_component",
|
|
19
|
+
... handler_type=EnumHandlerTypeCategory.EFFECT,
|
|
20
|
+
... errors=[
|
|
21
|
+
... ModelSecurityError(
|
|
22
|
+
... code="MISSING_SECRET_SCOPE",
|
|
23
|
+
... field="secret_scopes",
|
|
24
|
+
... message="Required secret scope not declared",
|
|
25
|
+
... severity="error",
|
|
26
|
+
... )
|
|
27
|
+
... ],
|
|
28
|
+
... warnings=[],
|
|
29
|
+
... )
|
|
30
|
+
>>> result.has_errors
|
|
31
|
+
True
|
|
32
|
+
>>> result.error_count
|
|
33
|
+
1
|
|
34
|
+
|
|
35
|
+
See Also:
|
|
36
|
+
- ModelSecurityError: Security validation error model
|
|
37
|
+
- ModelSecurityWarning: Security validation warning model
|
|
38
|
+
- ModelHandlerSecurityPolicy: Handler-declared security requirements
|
|
39
|
+
- RegistrationSecurityValidator: Registration-time security validation
|
|
40
|
+
- EnumSecurityRuleId: Security validation rule identifiers
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
from __future__ import annotations
|
|
44
|
+
|
|
45
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
46
|
+
|
|
47
|
+
from omnibase_infra.enums import EnumHandlerTypeCategory, EnumInfraTransportType
|
|
48
|
+
from omnibase_infra.errors import ModelInfraErrorContext, ProtocolConfigurationError
|
|
49
|
+
from omnibase_infra.models.security.model_security_error import ModelSecurityError
|
|
50
|
+
from omnibase_infra.models.security.model_security_warning import ModelSecurityWarning
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class ModelSecurityValidationResult(BaseModel):
|
|
54
|
+
"""Result of security validation.
|
|
55
|
+
|
|
56
|
+
Captures the complete outcome of validating a component's security
|
|
57
|
+
policy, including all errors and warnings encountered. This model
|
|
58
|
+
provides a structured interface for validation consumers.
|
|
59
|
+
|
|
60
|
+
The ``valid`` attribute indicates whether the target passed security
|
|
61
|
+
validation. A target is valid only if there are no errors; warnings
|
|
62
|
+
do not affect validity.
|
|
63
|
+
|
|
64
|
+
Attributes:
|
|
65
|
+
valid: Whether the target passed security validation (no errors).
|
|
66
|
+
subject: Name of the validated component or target.
|
|
67
|
+
handler_type: Behavioral classification of the target.
|
|
68
|
+
errors: List of security validation errors.
|
|
69
|
+
warnings: List of security validation warnings.
|
|
70
|
+
|
|
71
|
+
Warning:
|
|
72
|
+
**Non-standard __bool__ behavior**: This model overrides ``__bool__`` to
|
|
73
|
+
return ``True`` only when ``valid`` is True. This differs from typical
|
|
74
|
+
Pydantic model behavior where ``bool(model)`` always returns ``True`` for
|
|
75
|
+
any valid model instance. Use explicit attribute access if needed::
|
|
76
|
+
|
|
77
|
+
if result: # Uses __bool__, True only if valid
|
|
78
|
+
proceed_with_registration()
|
|
79
|
+
|
|
80
|
+
if result is not None: # Always True for constructed instance
|
|
81
|
+
inspect_result()
|
|
82
|
+
|
|
83
|
+
Example:
|
|
84
|
+
>>> from omnibase_infra.enums import EnumHandlerTypeCategory
|
|
85
|
+
>>> result = ModelSecurityValidationResult(
|
|
86
|
+
... valid=True,
|
|
87
|
+
... subject="safe_component",
|
|
88
|
+
... handler_type=EnumHandlerTypeCategory.COMPUTE,
|
|
89
|
+
... errors=[],
|
|
90
|
+
... warnings=[],
|
|
91
|
+
... )
|
|
92
|
+
>>> bool(result)
|
|
93
|
+
True
|
|
94
|
+
>>> result.has_errors
|
|
95
|
+
False
|
|
96
|
+
"""
|
|
97
|
+
|
|
98
|
+
model_config = ConfigDict(
|
|
99
|
+
frozen=True,
|
|
100
|
+
extra="forbid",
|
|
101
|
+
strict=True,
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
valid: bool = Field(
|
|
105
|
+
description="Whether the target passed security validation",
|
|
106
|
+
)
|
|
107
|
+
subject: str = Field(
|
|
108
|
+
description="Identifier of the validated component (e.g., handler name)",
|
|
109
|
+
)
|
|
110
|
+
handler_type: EnumHandlerTypeCategory = Field(
|
|
111
|
+
description="Behavioral classification of the handler",
|
|
112
|
+
)
|
|
113
|
+
errors: tuple[ModelSecurityError, ...] = Field(
|
|
114
|
+
default_factory=tuple,
|
|
115
|
+
description="List of security validation errors",
|
|
116
|
+
)
|
|
117
|
+
warnings: tuple[ModelSecurityWarning, ...] = Field(
|
|
118
|
+
default_factory=tuple,
|
|
119
|
+
description="List of security validation warnings",
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
@property
|
|
123
|
+
def has_errors(self) -> bool:
|
|
124
|
+
"""Check if any validation errors exist.
|
|
125
|
+
|
|
126
|
+
Returns:
|
|
127
|
+
True if there are one or more errors, False otherwise.
|
|
128
|
+
|
|
129
|
+
Example:
|
|
130
|
+
>>> result = ModelSecurityValidationResult(
|
|
131
|
+
... valid=False,
|
|
132
|
+
... subject="test",
|
|
133
|
+
... handler_type=EnumHandlerTypeCategory.EFFECT,
|
|
134
|
+
... errors=(ModelSecurityError(
|
|
135
|
+
... code="TEST", field="test", message="test", severity="error"
|
|
136
|
+
... ),),
|
|
137
|
+
... warnings=(),
|
|
138
|
+
... )
|
|
139
|
+
>>> result.has_errors
|
|
140
|
+
True
|
|
141
|
+
"""
|
|
142
|
+
return len(self.errors) > 0
|
|
143
|
+
|
|
144
|
+
@property
|
|
145
|
+
def has_warnings(self) -> bool:
|
|
146
|
+
"""Check if any validation warnings exist.
|
|
147
|
+
|
|
148
|
+
Returns:
|
|
149
|
+
True if there are one or more warnings, False otherwise.
|
|
150
|
+
|
|
151
|
+
Example:
|
|
152
|
+
>>> result = ModelSecurityValidationResult(
|
|
153
|
+
... valid=True,
|
|
154
|
+
... subject="test",
|
|
155
|
+
... handler_type=EnumHandlerTypeCategory.COMPUTE,
|
|
156
|
+
... errors=(),
|
|
157
|
+
... warnings=(ModelSecurityWarning(
|
|
158
|
+
... code="TEST", field="test", message="test"
|
|
159
|
+
... ),),
|
|
160
|
+
... )
|
|
161
|
+
>>> result.has_warnings
|
|
162
|
+
True
|
|
163
|
+
"""
|
|
164
|
+
return len(self.warnings) > 0
|
|
165
|
+
|
|
166
|
+
@property
|
|
167
|
+
def error_count(self) -> int:
|
|
168
|
+
"""Get the number of validation errors.
|
|
169
|
+
|
|
170
|
+
Returns:
|
|
171
|
+
Count of errors in this result.
|
|
172
|
+
|
|
173
|
+
Example:
|
|
174
|
+
>>> result = ModelSecurityValidationResult(
|
|
175
|
+
... valid=True,
|
|
176
|
+
... subject="test",
|
|
177
|
+
... handler_type=EnumHandlerTypeCategory.COMPUTE,
|
|
178
|
+
... errors=(),
|
|
179
|
+
... warnings=(),
|
|
180
|
+
... )
|
|
181
|
+
>>> result.error_count
|
|
182
|
+
0
|
|
183
|
+
"""
|
|
184
|
+
return len(self.errors)
|
|
185
|
+
|
|
186
|
+
@property
|
|
187
|
+
def warning_count(self) -> int:
|
|
188
|
+
"""Get the number of validation warnings.
|
|
189
|
+
|
|
190
|
+
Returns:
|
|
191
|
+
Count of warnings in this result.
|
|
192
|
+
|
|
193
|
+
Example:
|
|
194
|
+
>>> result = ModelSecurityValidationResult(
|
|
195
|
+
... valid=True,
|
|
196
|
+
... subject="test",
|
|
197
|
+
... handler_type=EnumHandlerTypeCategory.COMPUTE,
|
|
198
|
+
... errors=(),
|
|
199
|
+
... warnings=(),
|
|
200
|
+
... )
|
|
201
|
+
>>> result.warning_count
|
|
202
|
+
0
|
|
203
|
+
"""
|
|
204
|
+
return len(self.warnings)
|
|
205
|
+
|
|
206
|
+
def __bool__(self) -> bool:
|
|
207
|
+
"""Allow using result in boolean context.
|
|
208
|
+
|
|
209
|
+
Warning:
|
|
210
|
+
**Non-standard __bool__ behavior**: This model overrides ``__bool__`` to
|
|
211
|
+
return ``True`` only when ``valid`` is True. This differs from typical
|
|
212
|
+
Pydantic model behavior where ``bool(model)`` always returns ``True`` for
|
|
213
|
+
any valid model instance.
|
|
214
|
+
|
|
215
|
+
This design enables idiomatic conditional checks::
|
|
216
|
+
|
|
217
|
+
if result:
|
|
218
|
+
# Validation passed - proceed with registration
|
|
219
|
+
register_handler()
|
|
220
|
+
else:
|
|
221
|
+
# Validation failed - handle errors
|
|
222
|
+
for error in result.errors:
|
|
223
|
+
log_error(error)
|
|
224
|
+
|
|
225
|
+
Returns:
|
|
226
|
+
True if validation passed, False otherwise.
|
|
227
|
+
"""
|
|
228
|
+
return self.valid
|
|
229
|
+
|
|
230
|
+
@classmethod
|
|
231
|
+
def success(
|
|
232
|
+
cls,
|
|
233
|
+
subject: str,
|
|
234
|
+
handler_type: EnumHandlerTypeCategory,
|
|
235
|
+
warnings: tuple[ModelSecurityWarning, ...] = (),
|
|
236
|
+
) -> ModelSecurityValidationResult:
|
|
237
|
+
"""Create a successful validation result.
|
|
238
|
+
|
|
239
|
+
Factory method for creating a valid result. May include warnings
|
|
240
|
+
but will have no errors.
|
|
241
|
+
|
|
242
|
+
Args:
|
|
243
|
+
subject: Name of the validated component or target.
|
|
244
|
+
handler_type: Behavioral classification of the target.
|
|
245
|
+
warnings: Optional warnings to include in the result.
|
|
246
|
+
|
|
247
|
+
Returns:
|
|
248
|
+
ModelSecurityValidationResult with valid=True and no errors.
|
|
249
|
+
|
|
250
|
+
Example:
|
|
251
|
+
>>> result = ModelSecurityValidationResult.success(
|
|
252
|
+
... subject="my_component",
|
|
253
|
+
... handler_type=EnumHandlerTypeCategory.COMPUTE,
|
|
254
|
+
... )
|
|
255
|
+
>>> result.valid
|
|
256
|
+
True
|
|
257
|
+
>>> result.has_errors
|
|
258
|
+
False
|
|
259
|
+
"""
|
|
260
|
+
return cls(
|
|
261
|
+
valid=True,
|
|
262
|
+
subject=subject,
|
|
263
|
+
handler_type=handler_type,
|
|
264
|
+
errors=(),
|
|
265
|
+
warnings=warnings,
|
|
266
|
+
)
|
|
267
|
+
|
|
268
|
+
@classmethod
|
|
269
|
+
def failure(
|
|
270
|
+
cls,
|
|
271
|
+
subject: str,
|
|
272
|
+
handler_type: EnumHandlerTypeCategory,
|
|
273
|
+
errors: tuple[ModelSecurityError, ...],
|
|
274
|
+
warnings: tuple[ModelSecurityWarning, ...] = (),
|
|
275
|
+
) -> ModelSecurityValidationResult:
|
|
276
|
+
"""Create a failed validation result.
|
|
277
|
+
|
|
278
|
+
Factory method for creating an invalid result with errors.
|
|
279
|
+
|
|
280
|
+
Args:
|
|
281
|
+
subject: Name of the validated component or target.
|
|
282
|
+
handler_type: Behavioral classification of the target.
|
|
283
|
+
errors: Validation errors (must be non-empty for failure).
|
|
284
|
+
warnings: Optional warnings to include in the result.
|
|
285
|
+
|
|
286
|
+
Returns:
|
|
287
|
+
ModelSecurityValidationResult with valid=False and errors.
|
|
288
|
+
|
|
289
|
+
Raises:
|
|
290
|
+
ProtocolConfigurationError: If errors is empty (failures must have errors).
|
|
291
|
+
|
|
292
|
+
Example:
|
|
293
|
+
>>> error = ModelSecurityError(
|
|
294
|
+
... code="TEST",
|
|
295
|
+
... field="test",
|
|
296
|
+
... message="Test error",
|
|
297
|
+
... severity="error",
|
|
298
|
+
... )
|
|
299
|
+
>>> result = ModelSecurityValidationResult.failure(
|
|
300
|
+
... subject="bad_component",
|
|
301
|
+
... handler_type=EnumHandlerTypeCategory.EFFECT,
|
|
302
|
+
... errors=(error,),
|
|
303
|
+
... )
|
|
304
|
+
>>> result.valid
|
|
305
|
+
False
|
|
306
|
+
>>> result.has_errors
|
|
307
|
+
True
|
|
308
|
+
"""
|
|
309
|
+
if not errors:
|
|
310
|
+
context = ModelInfraErrorContext(
|
|
311
|
+
transport_type=EnumInfraTransportType.RUNTIME,
|
|
312
|
+
operation="failure",
|
|
313
|
+
)
|
|
314
|
+
raise ProtocolConfigurationError(
|
|
315
|
+
"errors must be non-empty for failure results", context=context
|
|
316
|
+
)
|
|
317
|
+
return cls(
|
|
318
|
+
valid=False,
|
|
319
|
+
subject=subject,
|
|
320
|
+
handler_type=handler_type,
|
|
321
|
+
errors=errors,
|
|
322
|
+
warnings=warnings,
|
|
323
|
+
)
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
__all__ = [
|
|
327
|
+
"ModelSecurityValidationResult",
|
|
328
|
+
]
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Security validation warning model.
|
|
4
|
+
|
|
5
|
+
This module defines the ModelSecurityWarning model for capturing security
|
|
6
|
+
validation advisories. Warnings do not block handler registration or invocation,
|
|
7
|
+
but indicate potential issues that should be reviewed.
|
|
8
|
+
|
|
9
|
+
Example:
|
|
10
|
+
>>> warning = ModelSecurityWarning(
|
|
11
|
+
... code="WILDCARD_DOMAIN_ACCESS",
|
|
12
|
+
... field="allowed_domains",
|
|
13
|
+
... message="Handler permits access to all domains - consider restricting",
|
|
14
|
+
... )
|
|
15
|
+
|
|
16
|
+
See Also:
|
|
17
|
+
- ModelSecurityError: Blocking errors that prevent validation
|
|
18
|
+
- ModelSecurityValidationResult: Complete validation result container
|
|
19
|
+
- EnumSecurityRuleId: Security validation rule identifiers
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
from __future__ import annotations
|
|
23
|
+
|
|
24
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class ModelSecurityWarning(BaseModel):
|
|
28
|
+
"""A security validation warning.
|
|
29
|
+
|
|
30
|
+
Represents a security advisory that does not block handler
|
|
31
|
+
registration or invocation, but indicates a potential issue
|
|
32
|
+
that should be reviewed.
|
|
33
|
+
|
|
34
|
+
Attributes:
|
|
35
|
+
code: Warning code identifier (e.g., "BROAD_DOMAIN_ACCESS").
|
|
36
|
+
Should be a stable identifier suitable for programmatic handling.
|
|
37
|
+
field: The field or policy attribute that triggered the warning.
|
|
38
|
+
message: Human-readable warning description.
|
|
39
|
+
|
|
40
|
+
Example:
|
|
41
|
+
>>> warning = ModelSecurityWarning(
|
|
42
|
+
... code="WILDCARD_DOMAIN_ACCESS",
|
|
43
|
+
... field="allowed_domains",
|
|
44
|
+
... message="Handler permits access to all domains - consider restricting",
|
|
45
|
+
... )
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
model_config = ConfigDict(
|
|
49
|
+
frozen=True,
|
|
50
|
+
extra="forbid",
|
|
51
|
+
strict=True,
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
code: str = Field(
|
|
55
|
+
description="Warning code identifier for programmatic handling",
|
|
56
|
+
)
|
|
57
|
+
field: str = Field(
|
|
58
|
+
description="The field or policy attribute that triggered the warning",
|
|
59
|
+
)
|
|
60
|
+
message: str = Field(
|
|
61
|
+
description="Human-readable warning description",
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
__all__ = [
|
|
66
|
+
"ModelSecurityWarning",
|
|
67
|
+
]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Generic Snapshot Models for Point-in-Time State Capture.
|
|
4
|
+
|
|
5
|
+
This module provides infrastructure primitives for managing point-in-time
|
|
6
|
+
snapshots of entity state. Snapshots support:
|
|
7
|
+
|
|
8
|
+
- Subject-based grouping (ModelSubjectRef)
|
|
9
|
+
- Structural diffing (ModelSnapshotDiff, ModelFieldChange)
|
|
10
|
+
- Immutable state capture with content hashing (ModelSnapshot)
|
|
11
|
+
- Lineage tracking for fork scenarios
|
|
12
|
+
|
|
13
|
+
Related Tickets:
|
|
14
|
+
- OMN-1246: ServiceSnapshot Infrastructure Primitive
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from omnibase_infra.models.snapshot.model_field_change import ModelFieldChange
|
|
18
|
+
from omnibase_infra.models.snapshot.model_snapshot import ModelSnapshot
|
|
19
|
+
from omnibase_infra.models.snapshot.model_snapshot_diff import ModelSnapshotDiff
|
|
20
|
+
from omnibase_infra.models.snapshot.model_subject_ref import ModelSubjectRef
|
|
21
|
+
|
|
22
|
+
__all__: list[str] = [
|
|
23
|
+
"ModelFieldChange",
|
|
24
|
+
"ModelSnapshot",
|
|
25
|
+
"ModelSnapshotDiff",
|
|
26
|
+
"ModelSubjectRef",
|
|
27
|
+
]
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Field Change Model for Structural Diffs.
|
|
4
|
+
|
|
5
|
+
Represents a single field change between two snapshots, capturing the
|
|
6
|
+
before and after values for diff analysis.
|
|
7
|
+
|
|
8
|
+
Thread Safety:
|
|
9
|
+
This model is frozen (immutable) for safe sharing across threads.
|
|
10
|
+
|
|
11
|
+
Related Tickets:
|
|
12
|
+
- OMN-1246: ServiceSnapshot Infrastructure Primitive
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
18
|
+
|
|
19
|
+
from omnibase_core.types import JsonType
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class ModelFieldChange(BaseModel):
|
|
23
|
+
"""Represents a single field change between snapshots.
|
|
24
|
+
|
|
25
|
+
Captures the transition from one value to another for a specific field
|
|
26
|
+
in a structural diff. Both values must be JSON-compatible.
|
|
27
|
+
|
|
28
|
+
Attributes:
|
|
29
|
+
from_value: The original value before the change.
|
|
30
|
+
to_value: The new value after the change.
|
|
31
|
+
|
|
32
|
+
Example:
|
|
33
|
+
>>> change = ModelFieldChange(
|
|
34
|
+
... from_value="pending",
|
|
35
|
+
... to_value="active",
|
|
36
|
+
... )
|
|
37
|
+
>>> change.from_value
|
|
38
|
+
'pending'
|
|
39
|
+
>>> change.to_value
|
|
40
|
+
'active'
|
|
41
|
+
|
|
42
|
+
>>> # Complex nested changes
|
|
43
|
+
>>> change = ModelFieldChange(
|
|
44
|
+
... from_value={"count": 1, "items": ["a"]},
|
|
45
|
+
... to_value={"count": 2, "items": ["a", "b"]},
|
|
46
|
+
... )
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
model_config = ConfigDict(
|
|
50
|
+
frozen=True,
|
|
51
|
+
extra="forbid",
|
|
52
|
+
from_attributes=True,
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
from_value: JsonType = Field(
|
|
56
|
+
...,
|
|
57
|
+
description="The original value before the change",
|
|
58
|
+
)
|
|
59
|
+
to_value: JsonType = Field(
|
|
60
|
+
...,
|
|
61
|
+
description="The new value after the change",
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
__all__: list[str] = ["ModelFieldChange"]
|