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,98 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Graph Handler Response Model.
|
|
4
|
+
|
|
5
|
+
This module provides the Pydantic model for Graph handler response envelopes
|
|
6
|
+
used by the HandlerGraph.
|
|
7
|
+
|
|
8
|
+
This model provides type consistency with ModelDbQueryResponse and
|
|
9
|
+
ModelConsulHandlerResponse, ensuring all handlers return strongly-typed
|
|
10
|
+
Pydantic models with consistent interfaces (status, payload, correlation_id).
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
from uuid import UUID
|
|
16
|
+
|
|
17
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
18
|
+
|
|
19
|
+
from omnibase_infra.enums import EnumResponseStatus
|
|
20
|
+
from omnibase_infra.handlers.models.graph import (
|
|
21
|
+
ModelGraphHandlerPayload,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class ModelGraphHandlerResponse(BaseModel):
|
|
26
|
+
"""Full Graph handler response envelope.
|
|
27
|
+
|
|
28
|
+
Provides a standardized response format for Graph database (Memgraph/Neo4j)
|
|
29
|
+
operations with status, payload, and correlation tracking.
|
|
30
|
+
|
|
31
|
+
This model mirrors ModelConsulHandlerResponse and ModelDbQueryResponse
|
|
32
|
+
to ensure consistent interfaces across infrastructure handlers.
|
|
33
|
+
|
|
34
|
+
Attributes:
|
|
35
|
+
status: Operation status (EnumResponseStatus.SUCCESS or EnumResponseStatus.ERROR)
|
|
36
|
+
payload: Graph operation result payload containing operation-specific data
|
|
37
|
+
correlation_id: UUID for request/response correlation
|
|
38
|
+
|
|
39
|
+
Example:
|
|
40
|
+
>>> from uuid import uuid4
|
|
41
|
+
>>> from omnibase_infra.enums import EnumResponseStatus
|
|
42
|
+
>>> from omnibase_infra.handlers.models.graph import (
|
|
43
|
+
... ModelGraphHandlerPayload, ModelGraphQueryPayload,
|
|
44
|
+
... )
|
|
45
|
+
>>> response = ModelGraphHandlerResponse(
|
|
46
|
+
... status=EnumResponseStatus.SUCCESS,
|
|
47
|
+
... payload=ModelGraphHandlerPayload(
|
|
48
|
+
... data=ModelGraphQueryPayload(
|
|
49
|
+
... cypher="MATCH (n) RETURN n",
|
|
50
|
+
... records=[],
|
|
51
|
+
... summary={"nodes_created": 0},
|
|
52
|
+
... ),
|
|
53
|
+
... ),
|
|
54
|
+
... correlation_id=uuid4(),
|
|
55
|
+
... )
|
|
56
|
+
>>> print(response.status)
|
|
57
|
+
<EnumResponseStatus.SUCCESS: 'success'>
|
|
58
|
+
>>> print(response.payload.data.operation_type)
|
|
59
|
+
'graph.query'
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
model_config = ConfigDict(
|
|
63
|
+
strict=True,
|
|
64
|
+
frozen=True,
|
|
65
|
+
extra="forbid",
|
|
66
|
+
from_attributes=True, # Support pytest-xdist compatibility
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
status: EnumResponseStatus = Field(
|
|
70
|
+
description="Operation status indicator",
|
|
71
|
+
)
|
|
72
|
+
payload: ModelGraphHandlerPayload = Field(
|
|
73
|
+
description="Graph operation result payload",
|
|
74
|
+
)
|
|
75
|
+
correlation_id: UUID = Field(
|
|
76
|
+
description="UUID for request/response correlation",
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
@property
|
|
80
|
+
def is_success(self) -> bool:
|
|
81
|
+
"""Check if the response indicates a successful operation.
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
True if status is SUCCESS, False otherwise.
|
|
85
|
+
"""
|
|
86
|
+
return self.status == EnumResponseStatus.SUCCESS
|
|
87
|
+
|
|
88
|
+
@property
|
|
89
|
+
def is_error(self) -> bool:
|
|
90
|
+
"""Check if the response indicates an error.
|
|
91
|
+
|
|
92
|
+
Returns:
|
|
93
|
+
True if status is ERROR, False otherwise.
|
|
94
|
+
"""
|
|
95
|
+
return self.status == EnumResponseStatus.ERROR
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
__all__: list[str] = ["ModelGraphHandlerResponse"]
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Generic Handler Response Model.
|
|
4
|
+
|
|
5
|
+
This module provides a generic handler response model that can be parameterized
|
|
6
|
+
with different payload types, enabling consistent response patterns across all
|
|
7
|
+
infrastructure handlers.
|
|
8
|
+
|
|
9
|
+
Usage Pattern:
|
|
10
|
+
Each handler defines its own payload model and uses ModelHandlerResponse[PayloadType]:
|
|
11
|
+
|
|
12
|
+
- HandlerConsul: ModelHandlerResponse[ModelConsulHandlerPayload]
|
|
13
|
+
- HandlerDb: ModelHandlerResponse[ModelDbQueryPayload]
|
|
14
|
+
- HandlerVault: ModelHandlerResponse[ModelVaultHandlerPayload]
|
|
15
|
+
- HttpRestHandler: ModelHandlerResponse[ModelHttpHandlerPayload]
|
|
16
|
+
|
|
17
|
+
This replaces raw dict[str, JsonType] responses with strongly-typed models,
|
|
18
|
+
ensuring consistent access patterns (response.status, response.payload, etc.)
|
|
19
|
+
across all handlers.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
from __future__ import annotations
|
|
23
|
+
|
|
24
|
+
from uuid import UUID
|
|
25
|
+
|
|
26
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
27
|
+
|
|
28
|
+
from omnibase_infra.enums import EnumResponseStatus
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class ModelHandlerResponse[PayloadT: BaseModel](BaseModel):
|
|
32
|
+
"""Generic handler response envelope.
|
|
33
|
+
|
|
34
|
+
Provides a standardized response format for all handler operations
|
|
35
|
+
with status, payload, and correlation tracking.
|
|
36
|
+
|
|
37
|
+
This generic model ensures consistent interfaces across all infrastructure
|
|
38
|
+
handlers. Each handler specializes this with its own payload type.
|
|
39
|
+
|
|
40
|
+
Type Parameters:
|
|
41
|
+
PayloadT: The payload model type specific to the handler.
|
|
42
|
+
|
|
43
|
+
Attributes:
|
|
44
|
+
status: Operation status ("success" or "error")
|
|
45
|
+
payload: Handler-specific result payload
|
|
46
|
+
correlation_id: UUID for request/response correlation
|
|
47
|
+
|
|
48
|
+
Example:
|
|
49
|
+
>>> from uuid import uuid4
|
|
50
|
+
>>> from pydantic import BaseModel
|
|
51
|
+
>>> from omnibase_infra.enums import EnumResponseStatus
|
|
52
|
+
>>>
|
|
53
|
+
>>> class MyPayload(BaseModel):
|
|
54
|
+
... data: str
|
|
55
|
+
...
|
|
56
|
+
>>> response = ModelHandlerResponse[MyPayload](
|
|
57
|
+
... status=EnumResponseStatus.SUCCESS,
|
|
58
|
+
... payload=MyPayload(data="test"),
|
|
59
|
+
... correlation_id=uuid4(),
|
|
60
|
+
... )
|
|
61
|
+
>>> print(response.status)
|
|
62
|
+
<EnumResponseStatus.SUCCESS: 'success'>
|
|
63
|
+
>>> print(response.payload.data)
|
|
64
|
+
'test'
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
model_config = ConfigDict(
|
|
68
|
+
strict=True,
|
|
69
|
+
frozen=True,
|
|
70
|
+
extra="forbid",
|
|
71
|
+
from_attributes=True, # Support pytest-xdist compatibility
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
status: EnumResponseStatus = Field(
|
|
75
|
+
description="Operation status indicator",
|
|
76
|
+
)
|
|
77
|
+
payload: PayloadT = Field(
|
|
78
|
+
description="Handler-specific result payload",
|
|
79
|
+
)
|
|
80
|
+
correlation_id: UUID = Field(
|
|
81
|
+
description="UUID for request/response correlation",
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
@property
|
|
85
|
+
def is_success(self) -> bool:
|
|
86
|
+
"""Check if the response indicates a successful operation.
|
|
87
|
+
|
|
88
|
+
Returns:
|
|
89
|
+
True if status is SUCCESS, False otherwise.
|
|
90
|
+
"""
|
|
91
|
+
return self.status == EnumResponseStatus.SUCCESS
|
|
92
|
+
|
|
93
|
+
@property
|
|
94
|
+
def is_error(self) -> bool:
|
|
95
|
+
"""Check if the response indicates an error.
|
|
96
|
+
|
|
97
|
+
Returns:
|
|
98
|
+
True if status is ERROR, False otherwise.
|
|
99
|
+
"""
|
|
100
|
+
return self.status == EnumResponseStatus.ERROR
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
__all__: list[str] = ["ModelHandlerResponse"]
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""HTTP Handler Response Model.
|
|
4
|
+
|
|
5
|
+
This module provides the Pydantic model for HTTP handler response envelopes
|
|
6
|
+
used by the HttpRestHandler.
|
|
7
|
+
|
|
8
|
+
This model provides type consistency with ModelDbQueryResponse,
|
|
9
|
+
ModelConsulHandlerResponse, and ModelVaultHandlerResponse, ensuring
|
|
10
|
+
all handlers return strongly-typed Pydantic models with consistent
|
|
11
|
+
interfaces (status, payload, correlation_id).
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
from uuid import UUID
|
|
17
|
+
|
|
18
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
19
|
+
|
|
20
|
+
from omnibase_infra.enums import EnumResponseStatus
|
|
21
|
+
from omnibase_infra.handlers.models.http import (
|
|
22
|
+
ModelHttpHandlerPayload,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class ModelHttpHandlerResponse(BaseModel):
|
|
27
|
+
"""Full HTTP handler response envelope.
|
|
28
|
+
|
|
29
|
+
Provides a standardized response format for HTTP operations
|
|
30
|
+
with status, payload, and correlation tracking.
|
|
31
|
+
|
|
32
|
+
This model mirrors ModelDbQueryResponse, ModelConsulHandlerResponse,
|
|
33
|
+
and ModelVaultHandlerResponse to ensure consistent interfaces across
|
|
34
|
+
infrastructure handlers.
|
|
35
|
+
|
|
36
|
+
Attributes:
|
|
37
|
+
status: Operation status (EnumResponseStatus.SUCCESS or EnumResponseStatus.ERROR)
|
|
38
|
+
payload: HTTP operation result payload containing operation-specific data
|
|
39
|
+
correlation_id: UUID for request/response correlation
|
|
40
|
+
|
|
41
|
+
Example:
|
|
42
|
+
>>> from uuid import uuid4
|
|
43
|
+
>>> from omnibase_infra.enums import EnumResponseStatus
|
|
44
|
+
>>> from omnibase_infra.handlers.models.http import (
|
|
45
|
+
... ModelHttpGetPayload,
|
|
46
|
+
... ModelHttpHandlerPayload,
|
|
47
|
+
... )
|
|
48
|
+
>>> response = ModelHttpHandlerResponse(
|
|
49
|
+
... status=EnumResponseStatus.SUCCESS,
|
|
50
|
+
... payload=ModelHttpHandlerPayload(
|
|
51
|
+
... data=ModelHttpGetPayload(
|
|
52
|
+
... status_code=200,
|
|
53
|
+
... headers={"content-type": "application/json"},
|
|
54
|
+
... body={"message": "success"},
|
|
55
|
+
... ),
|
|
56
|
+
... ),
|
|
57
|
+
... correlation_id=uuid4(),
|
|
58
|
+
... )
|
|
59
|
+
>>> print(response.status)
|
|
60
|
+
<EnumResponseStatus.SUCCESS: 'success'>
|
|
61
|
+
>>> print(response.payload.data.status_code)
|
|
62
|
+
200
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
model_config = ConfigDict(
|
|
66
|
+
strict=True,
|
|
67
|
+
frozen=True,
|
|
68
|
+
extra="forbid",
|
|
69
|
+
from_attributes=True, # Support pytest-xdist compatibility
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
status: EnumResponseStatus = Field(
|
|
73
|
+
description="Operation status indicator",
|
|
74
|
+
)
|
|
75
|
+
payload: ModelHttpHandlerPayload = Field(
|
|
76
|
+
description="HTTP operation result payload",
|
|
77
|
+
)
|
|
78
|
+
correlation_id: UUID = Field(
|
|
79
|
+
description="UUID for request/response correlation",
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
@property
|
|
83
|
+
def is_success(self) -> bool:
|
|
84
|
+
"""Check if the response indicates a successful operation.
|
|
85
|
+
|
|
86
|
+
Returns:
|
|
87
|
+
True if status is SUCCESS, False otherwise.
|
|
88
|
+
"""
|
|
89
|
+
return self.status == EnumResponseStatus.SUCCESS
|
|
90
|
+
|
|
91
|
+
@property
|
|
92
|
+
def is_error(self) -> bool:
|
|
93
|
+
"""Check if the response indicates an error.
|
|
94
|
+
|
|
95
|
+
Returns:
|
|
96
|
+
True if status is ERROR, False otherwise.
|
|
97
|
+
"""
|
|
98
|
+
return self.status == EnumResponseStatus.ERROR
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
__all__: list[str] = ["ModelHttpHandlerResponse"]
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Manifest Metadata Model.
|
|
4
|
+
|
|
5
|
+
This module provides the lightweight metadata model for manifest queries
|
|
6
|
+
when full manifest data is not needed.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from datetime import datetime
|
|
12
|
+
from uuid import UUID
|
|
13
|
+
|
|
14
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class ModelManifestMetadata(BaseModel):
|
|
18
|
+
"""Lightweight metadata for a stored manifest.
|
|
19
|
+
|
|
20
|
+
Used when querying manifests with metadata_only=True to avoid
|
|
21
|
+
loading full manifest data. Contains only the essential fields
|
|
22
|
+
needed for listing, filtering, and identification.
|
|
23
|
+
|
|
24
|
+
Attributes:
|
|
25
|
+
manifest_id: The unique identifier of the manifest.
|
|
26
|
+
created_at: Timestamp when the manifest was created/stored.
|
|
27
|
+
correlation_id: The correlation ID from the manifest, if present.
|
|
28
|
+
Used for tracing related operations across the system.
|
|
29
|
+
node_id: The node ID from the manifest, if present.
|
|
30
|
+
Identifies which node generated this manifest.
|
|
31
|
+
|
|
32
|
+
Example:
|
|
33
|
+
>>> from datetime import datetime, timezone
|
|
34
|
+
>>> metadata = ModelManifestMetadata(
|
|
35
|
+
... manifest_id=UUID("550e8400-e29b-41d4-a716-446655440000"),
|
|
36
|
+
... created_at=datetime.now(timezone.utc),
|
|
37
|
+
... correlation_id=UUID("123e4567-e89b-12d3-a456-426614174000"),
|
|
38
|
+
... node_id="registration-orchestrator",
|
|
39
|
+
... )
|
|
40
|
+
>>> print(metadata.manifest_id)
|
|
41
|
+
UUID('550e8400-e29b-41d4-a716-446655440000')
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
model_config = ConfigDict(
|
|
45
|
+
strict=True,
|
|
46
|
+
frozen=True,
|
|
47
|
+
extra="forbid",
|
|
48
|
+
from_attributes=True,
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
manifest_id: UUID = Field(
|
|
52
|
+
description="Unique identifier of the manifest.",
|
|
53
|
+
)
|
|
54
|
+
created_at: datetime = Field(
|
|
55
|
+
description="Timestamp when the manifest was created/stored.",
|
|
56
|
+
)
|
|
57
|
+
correlation_id: UUID | None = Field(
|
|
58
|
+
default=None,
|
|
59
|
+
description="Correlation ID from the manifest for operation tracing.",
|
|
60
|
+
)
|
|
61
|
+
node_id: str | None = Field(
|
|
62
|
+
default=None,
|
|
63
|
+
description="Node ID identifying which node generated this manifest.",
|
|
64
|
+
)
|
|
65
|
+
file_path: str = Field(
|
|
66
|
+
min_length=1,
|
|
67
|
+
description="Absolute path to the manifest file.",
|
|
68
|
+
)
|
|
69
|
+
file_size: int = Field(
|
|
70
|
+
ge=0,
|
|
71
|
+
description="Size of the manifest file in bytes.",
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
__all__: list[str] = ["ModelManifestMetadata"]
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Manifest Persistence Handler Configuration Model.
|
|
4
|
+
|
|
5
|
+
This module provides the Pydantic model for HandlerManifestPersistence initialization
|
|
6
|
+
configuration, defining storage path and optional settings.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from uuid import UUID
|
|
12
|
+
|
|
13
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ModelManifestPersistenceConfig(BaseModel):
|
|
17
|
+
"""Configuration for HandlerManifestPersistence initialization.
|
|
18
|
+
|
|
19
|
+
This model defines the configuration parameters required to initialize
|
|
20
|
+
the manifest persistence handler, including the storage path for manifests.
|
|
21
|
+
|
|
22
|
+
Attributes:
|
|
23
|
+
storage_path: Base directory for manifest storage. Manifests will be
|
|
24
|
+
stored in date-partitioned subdirectories: {storage_path}/{year}/{month}/{day}/
|
|
25
|
+
max_file_size: Maximum manifest file size in bytes for read operations.
|
|
26
|
+
If None, uses default (50 MB).
|
|
27
|
+
correlation_id: Optional correlation ID for initialization tracing.
|
|
28
|
+
|
|
29
|
+
Example:
|
|
30
|
+
>>> config = ModelManifestPersistenceConfig(
|
|
31
|
+
... storage_path="/data/manifests",
|
|
32
|
+
... max_file_size=100 * 1024 * 1024, # 100 MB
|
|
33
|
+
... )
|
|
34
|
+
>>> print(config.storage_path)
|
|
35
|
+
'/data/manifests'
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
model_config = ConfigDict(
|
|
39
|
+
strict=True,
|
|
40
|
+
frozen=True,
|
|
41
|
+
extra="forbid",
|
|
42
|
+
from_attributes=True,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
storage_path: str = Field(
|
|
46
|
+
min_length=1,
|
|
47
|
+
description="Base directory path for manifest storage. "
|
|
48
|
+
"Manifests are stored in date-partitioned subdirectories.",
|
|
49
|
+
)
|
|
50
|
+
max_file_size: int | None = Field(
|
|
51
|
+
default=None,
|
|
52
|
+
gt=0,
|
|
53
|
+
description="Maximum manifest file size in bytes for read operations. "
|
|
54
|
+
"If None, uses default (50 MB).",
|
|
55
|
+
)
|
|
56
|
+
correlation_id: UUID | str | None = Field(
|
|
57
|
+
default=None,
|
|
58
|
+
description="Optional correlation ID for initialization tracing.",
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
__all__: list[str] = ["ModelManifestPersistenceConfig"]
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Manifest Query Payload Model.
|
|
4
|
+
|
|
5
|
+
This module provides the Pydantic model for the manifest.query operation
|
|
6
|
+
payload, supporting flexible filtering by correlation ID, node ID, and
|
|
7
|
+
time ranges.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
from datetime import datetime
|
|
13
|
+
from uuid import UUID
|
|
14
|
+
|
|
15
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class ModelManifestQueryPayload(BaseModel):
|
|
19
|
+
"""Payload for manifest.query operation.
|
|
20
|
+
|
|
21
|
+
Specifies filter criteria for querying stored manifests. All filter
|
|
22
|
+
fields are optional and combined with AND logic when multiple are
|
|
23
|
+
specified.
|
|
24
|
+
|
|
25
|
+
Attributes:
|
|
26
|
+
correlation_id: Filter by correlation ID. Only manifests with
|
|
27
|
+
this exact correlation_id will be returned.
|
|
28
|
+
node_id: Filter by node ID. Only manifests with this exact
|
|
29
|
+
node_id will be returned.
|
|
30
|
+
created_after: Filter by creation time. Only manifests created
|
|
31
|
+
at or after this timestamp will be returned.
|
|
32
|
+
created_before: Filter by creation time. Only manifests created
|
|
33
|
+
at or before this timestamp will be returned.
|
|
34
|
+
limit: Maximum number of manifests to return. Defaults to 100.
|
|
35
|
+
Use to prevent excessive memory usage on large result sets.
|
|
36
|
+
metadata_only: If True, return only lightweight metadata instead
|
|
37
|
+
of full manifest data. Useful for listing/browsing operations.
|
|
38
|
+
|
|
39
|
+
Example:
|
|
40
|
+
>>> from datetime import datetime, timezone
|
|
41
|
+
>>> payload = ModelManifestQueryPayload(
|
|
42
|
+
... node_id="mynode",
|
|
43
|
+
... created_after=datetime(2025, 1, 1, tzinfo=timezone.utc),
|
|
44
|
+
... limit=50,
|
|
45
|
+
... )
|
|
46
|
+
>>> print(payload.metadata_only)
|
|
47
|
+
False
|
|
48
|
+
|
|
49
|
+
>>> metadata_payload = ModelManifestQueryPayload(
|
|
50
|
+
... metadata_only=True,
|
|
51
|
+
... limit=1000,
|
|
52
|
+
... )
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
model_config = ConfigDict(
|
|
56
|
+
strict=True,
|
|
57
|
+
frozen=True,
|
|
58
|
+
extra="forbid",
|
|
59
|
+
from_attributes=True,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
correlation_id: UUID | None = Field(
|
|
63
|
+
default=None,
|
|
64
|
+
description="Filter by exact correlation ID match.",
|
|
65
|
+
)
|
|
66
|
+
node_id: str | None = Field(
|
|
67
|
+
default=None,
|
|
68
|
+
description="Filter by exact node ID match.",
|
|
69
|
+
)
|
|
70
|
+
created_after: datetime | None = Field(
|
|
71
|
+
default=None,
|
|
72
|
+
description="Filter for manifests created at or after this timestamp.",
|
|
73
|
+
)
|
|
74
|
+
created_before: datetime | None = Field(
|
|
75
|
+
default=None,
|
|
76
|
+
description="Filter for manifests created at or before this timestamp.",
|
|
77
|
+
)
|
|
78
|
+
limit: int = Field(
|
|
79
|
+
default=100,
|
|
80
|
+
ge=1,
|
|
81
|
+
le=10000,
|
|
82
|
+
description="Maximum number of manifests to return (1-10000).",
|
|
83
|
+
)
|
|
84
|
+
metadata_only: bool = Field(
|
|
85
|
+
default=False,
|
|
86
|
+
description="If True, return only metadata instead of full manifests.",
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
__all__: list[str] = ["ModelManifestQueryPayload"]
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Manifest Query Result Model.
|
|
4
|
+
|
|
5
|
+
This module provides the Pydantic model for the manifest.query operation
|
|
6
|
+
result, containing the list of matching manifests or metadata.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
12
|
+
|
|
13
|
+
from omnibase_infra.handlers.models.model_manifest_metadata import ModelManifestMetadata
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ModelManifestQueryResult(BaseModel):
|
|
17
|
+
"""Result from manifest.query operation.
|
|
18
|
+
|
|
19
|
+
Contains matching manifests based on the query filters. Uses separate
|
|
20
|
+
fields for metadata-only and full-manifest results to maintain type safety.
|
|
21
|
+
|
|
22
|
+
Attributes:
|
|
23
|
+
manifests: List of matching manifest metadata (when metadata_only=True).
|
|
24
|
+
Empty list when metadata_only=False.
|
|
25
|
+
manifest_data: List of full manifest dictionaries (when metadata_only=False).
|
|
26
|
+
Empty list when metadata_only=True.
|
|
27
|
+
total_count: Number of results returned.
|
|
28
|
+
metadata_only: Whether results contain only metadata.
|
|
29
|
+
|
|
30
|
+
Note:
|
|
31
|
+
This model implements custom __bool__ behavior. The boolean value
|
|
32
|
+
of an instance reflects whether any manifests were found, enabling
|
|
33
|
+
idiomatic conditional checks like:
|
|
34
|
+
|
|
35
|
+
result = handler.query(payload)
|
|
36
|
+
if result: # True only when total_count > 0
|
|
37
|
+
for manifest in result.manifests:
|
|
38
|
+
process(manifest)
|
|
39
|
+
|
|
40
|
+
Example:
|
|
41
|
+
>>> result = ModelManifestQueryResult(
|
|
42
|
+
... manifests=[ModelManifestMetadata(...)],
|
|
43
|
+
... manifest_data=[],
|
|
44
|
+
... total_count=1,
|
|
45
|
+
... metadata_only=True,
|
|
46
|
+
... )
|
|
47
|
+
>>> print(bool(result))
|
|
48
|
+
True
|
|
49
|
+
|
|
50
|
+
>>> empty_result = ModelManifestQueryResult(
|
|
51
|
+
... manifests=[],
|
|
52
|
+
... manifest_data=[],
|
|
53
|
+
... total_count=0,
|
|
54
|
+
... metadata_only=False,
|
|
55
|
+
... )
|
|
56
|
+
>>> print(bool(empty_result))
|
|
57
|
+
False
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
model_config = ConfigDict(
|
|
61
|
+
strict=False, # Allow dict with various value types
|
|
62
|
+
frozen=True,
|
|
63
|
+
extra="forbid",
|
|
64
|
+
from_attributes=True,
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
manifests: list[ModelManifestMetadata] = Field(
|
|
68
|
+
default_factory=list,
|
|
69
|
+
description="List of matching manifest metadata (when metadata_only=True).",
|
|
70
|
+
)
|
|
71
|
+
manifest_data: list[dict[str, object]] = Field(
|
|
72
|
+
default_factory=list,
|
|
73
|
+
description="List of full manifest dictionaries (when metadata_only=False).",
|
|
74
|
+
)
|
|
75
|
+
total_count: int = Field(
|
|
76
|
+
ge=0,
|
|
77
|
+
description="Number of results returned.",
|
|
78
|
+
)
|
|
79
|
+
metadata_only: bool = Field(
|
|
80
|
+
description="True if results contain metadata only, False for full manifests.",
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
def __bool__(self) -> bool:
|
|
84
|
+
"""Return True if any manifests were found.
|
|
85
|
+
|
|
86
|
+
Warning:
|
|
87
|
+
This differs from standard Pydantic model behavior where
|
|
88
|
+
bool(model) always returns True. This model returns True
|
|
89
|
+
only when total_count > 0, enabling idiomatic conditional checks.
|
|
90
|
+
|
|
91
|
+
Returns:
|
|
92
|
+
True if total_count > 0, False otherwise.
|
|
93
|
+
"""
|
|
94
|
+
return self.total_count > 0
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
__all__: list[str] = ["ModelManifestQueryResult"]
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Manifest Retrieve Payload Model.
|
|
4
|
+
|
|
5
|
+
This module provides the Pydantic model for the manifest.retrieve operation
|
|
6
|
+
payload, specifying which manifest to retrieve by ID.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from uuid import UUID
|
|
12
|
+
|
|
13
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ModelManifestRetrievePayload(BaseModel):
|
|
17
|
+
"""Payload for manifest.retrieve operation.
|
|
18
|
+
|
|
19
|
+
Specifies the manifest to retrieve by its unique identifier.
|
|
20
|
+
|
|
21
|
+
Attributes:
|
|
22
|
+
manifest_id: The unique identifier of the manifest to retrieve.
|
|
23
|
+
This corresponds to the manifest_id field in the stored
|
|
24
|
+
ModelExecutionManifest.
|
|
25
|
+
|
|
26
|
+
Example:
|
|
27
|
+
>>> payload = ModelManifestRetrievePayload(
|
|
28
|
+
... manifest_id=UUID("550e8400-e29b-41d4-a716-446655440000"),
|
|
29
|
+
... )
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
model_config = ConfigDict(
|
|
33
|
+
strict=True,
|
|
34
|
+
frozen=True,
|
|
35
|
+
extra="forbid",
|
|
36
|
+
from_attributes=True,
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
manifest_id: UUID = Field(
|
|
40
|
+
description="Unique identifier of the manifest to retrieve.",
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
__all__: list[str] = ["ModelManifestRetrievePayload"]
|