omnibase_infra 0.2.1__py3-none-any.whl → 0.2.2__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.
Files changed (116) hide show
  1. omnibase_infra/__init__.py +1 -1
  2. omnibase_infra/adapters/adapter_onex_tool_execution.py +446 -0
  3. omnibase_infra/cli/commands.py +1 -1
  4. omnibase_infra/configs/widget_mapping.yaml +176 -0
  5. omnibase_infra/contracts/handlers/filesystem/handler_contract.yaml +4 -1
  6. omnibase_infra/contracts/handlers/mcp/handler_contract.yaml +4 -1
  7. omnibase_infra/errors/error_compute_registry.py +4 -1
  8. omnibase_infra/errors/error_event_bus_registry.py +4 -1
  9. omnibase_infra/errors/error_infra.py +3 -1
  10. omnibase_infra/errors/error_policy_registry.py +4 -1
  11. omnibase_infra/handlers/handler_db.py +2 -1
  12. omnibase_infra/handlers/handler_graph.py +10 -5
  13. omnibase_infra/handlers/handler_mcp.py +736 -63
  14. omnibase_infra/handlers/mixins/mixin_consul_kv.py +4 -3
  15. omnibase_infra/handlers/mixins/mixin_consul_service.py +2 -1
  16. omnibase_infra/handlers/service_discovery/handler_service_discovery_consul.py +301 -4
  17. omnibase_infra/handlers/service_discovery/models/model_service_info.py +10 -0
  18. omnibase_infra/mixins/mixin_async_circuit_breaker.py +3 -2
  19. omnibase_infra/mixins/mixin_node_introspection.py +24 -7
  20. omnibase_infra/mixins/mixin_retry_execution.py +1 -1
  21. omnibase_infra/models/handlers/__init__.py +10 -0
  22. omnibase_infra/models/handlers/model_bootstrap_handler_descriptor.py +162 -0
  23. omnibase_infra/models/handlers/model_handler_descriptor.py +15 -0
  24. omnibase_infra/models/mcp/__init__.py +15 -0
  25. omnibase_infra/models/mcp/model_mcp_contract_config.py +80 -0
  26. omnibase_infra/models/mcp/model_mcp_server_config.py +67 -0
  27. omnibase_infra/models/mcp/model_mcp_tool_definition.py +73 -0
  28. omnibase_infra/models/mcp/model_mcp_tool_parameter.py +35 -0
  29. omnibase_infra/models/registration/model_node_capabilities.py +11 -0
  30. omnibase_infra/nodes/architecture_validator/contract_architecture_validator.yaml +0 -5
  31. omnibase_infra/nodes/architecture_validator/registry/registry_infra_architecture_validator.py +17 -10
  32. omnibase_infra/nodes/effects/contract.yaml +0 -5
  33. omnibase_infra/nodes/node_registration_orchestrator/contract.yaml +7 -0
  34. omnibase_infra/nodes/node_registration_orchestrator/handlers/handler_node_introspected.py +86 -1
  35. omnibase_infra/nodes/node_registration_orchestrator/introspection_event_router.py +3 -3
  36. omnibase_infra/nodes/node_registration_orchestrator/registry/registry_infra_node_registration_orchestrator.py +9 -8
  37. omnibase_infra/nodes/node_registration_orchestrator/wiring.py +14 -13
  38. omnibase_infra/nodes/node_registration_storage_effect/contract.yaml +0 -5
  39. omnibase_infra/nodes/node_registration_storage_effect/registry/registry_infra_registration_storage.py +46 -25
  40. omnibase_infra/nodes/node_registry_effect/contract.yaml +0 -5
  41. omnibase_infra/nodes/node_registry_effect/handlers/handler_partial_retry.py +2 -1
  42. omnibase_infra/nodes/node_service_discovery_effect/registry/registry_infra_service_discovery.py +24 -19
  43. omnibase_infra/plugins/examples/plugin_json_normalizer.py +2 -2
  44. omnibase_infra/plugins/examples/plugin_json_normalizer_error_handling.py +2 -2
  45. omnibase_infra/plugins/plugin_compute_base.py +16 -2
  46. omnibase_infra/protocols/protocol_event_projector.py +1 -1
  47. omnibase_infra/runtime/__init__.py +51 -1
  48. omnibase_infra/runtime/binding_config_resolver.py +102 -37
  49. omnibase_infra/runtime/constants_notification.py +75 -0
  50. omnibase_infra/runtime/contract_handler_discovery.py +6 -1
  51. omnibase_infra/runtime/handler_bootstrap_source.py +514 -0
  52. omnibase_infra/runtime/handler_contract_config_loader.py +603 -0
  53. omnibase_infra/runtime/handler_contract_source.py +289 -167
  54. omnibase_infra/runtime/handler_plugin_loader.py +4 -2
  55. omnibase_infra/runtime/mixin_semver_cache.py +25 -1
  56. omnibase_infra/runtime/mixins/__init__.py +7 -0
  57. omnibase_infra/runtime/mixins/mixin_projector_notification_publishing.py +566 -0
  58. omnibase_infra/runtime/mixins/mixin_projector_sql_operations.py +31 -10
  59. omnibase_infra/runtime/models/__init__.py +24 -0
  60. omnibase_infra/runtime/models/model_health_check_result.py +2 -1
  61. omnibase_infra/runtime/models/model_projector_notification_config.py +171 -0
  62. omnibase_infra/runtime/models/model_transition_notification_outbox_config.py +112 -0
  63. omnibase_infra/runtime/models/model_transition_notification_outbox_metrics.py +140 -0
  64. omnibase_infra/runtime/models/model_transition_notification_publisher_metrics.py +357 -0
  65. omnibase_infra/runtime/projector_plugin_loader.py +1 -1
  66. omnibase_infra/runtime/projector_shell.py +229 -1
  67. omnibase_infra/runtime/protocols/__init__.py +10 -0
  68. omnibase_infra/runtime/registry/registry_protocol_binding.py +3 -2
  69. omnibase_infra/runtime/registry_policy.py +9 -326
  70. omnibase_infra/runtime/secret_resolver.py +4 -2
  71. omnibase_infra/runtime/service_kernel.py +10 -2
  72. omnibase_infra/runtime/service_message_dispatch_engine.py +4 -2
  73. omnibase_infra/runtime/service_runtime_host_process.py +225 -15
  74. omnibase_infra/runtime/transition_notification_outbox.py +1190 -0
  75. omnibase_infra/runtime/transition_notification_publisher.py +764 -0
  76. omnibase_infra/runtime/util_container_wiring.py +6 -5
  77. omnibase_infra/runtime/util_wiring.py +5 -1
  78. omnibase_infra/schemas/schema_transition_notification_outbox.sql +245 -0
  79. omnibase_infra/services/mcp/__init__.py +31 -0
  80. omnibase_infra/services/mcp/mcp_server_lifecycle.py +443 -0
  81. omnibase_infra/services/mcp/service_mcp_tool_discovery.py +411 -0
  82. omnibase_infra/services/mcp/service_mcp_tool_registry.py +329 -0
  83. omnibase_infra/services/mcp/service_mcp_tool_sync.py +547 -0
  84. omnibase_infra/services/registry_api/__init__.py +40 -0
  85. omnibase_infra/services/registry_api/main.py +243 -0
  86. omnibase_infra/services/registry_api/models/__init__.py +66 -0
  87. omnibase_infra/services/registry_api/models/model_capability_widget_mapping.py +38 -0
  88. omnibase_infra/services/registry_api/models/model_pagination_info.py +48 -0
  89. omnibase_infra/services/registry_api/models/model_registry_discovery_response.py +73 -0
  90. omnibase_infra/services/registry_api/models/model_registry_health_response.py +49 -0
  91. omnibase_infra/services/registry_api/models/model_registry_instance_view.py +88 -0
  92. omnibase_infra/services/registry_api/models/model_registry_node_view.py +88 -0
  93. omnibase_infra/services/registry_api/models/model_registry_summary.py +60 -0
  94. omnibase_infra/services/registry_api/models/model_response_list_instances.py +43 -0
  95. omnibase_infra/services/registry_api/models/model_response_list_nodes.py +51 -0
  96. omnibase_infra/services/registry_api/models/model_warning.py +49 -0
  97. omnibase_infra/services/registry_api/models/model_widget_defaults.py +28 -0
  98. omnibase_infra/services/registry_api/models/model_widget_mapping.py +51 -0
  99. omnibase_infra/services/registry_api/routes.py +371 -0
  100. omnibase_infra/services/registry_api/service.py +846 -0
  101. omnibase_infra/services/service_capability_query.py +4 -4
  102. omnibase_infra/services/service_health.py +3 -2
  103. omnibase_infra/services/service_timeout_emitter.py +13 -2
  104. omnibase_infra/utils/util_dsn_validation.py +1 -1
  105. omnibase_infra/validation/__init__.py +3 -19
  106. omnibase_infra/validation/contracts/security.validation.yaml +114 -0
  107. omnibase_infra/validation/infra_validators.py +35 -24
  108. omnibase_infra/validation/validation_exemptions.yaml +113 -9
  109. omnibase_infra/validation/validator_chain_propagation.py +2 -2
  110. omnibase_infra/validation/validator_runtime_shape.py +1 -1
  111. omnibase_infra/validation/validator_security.py +473 -370
  112. {omnibase_infra-0.2.1.dist-info → omnibase_infra-0.2.2.dist-info}/METADATA +2 -2
  113. {omnibase_infra-0.2.1.dist-info → omnibase_infra-0.2.2.dist-info}/RECORD +116 -74
  114. {omnibase_infra-0.2.1.dist-info → omnibase_infra-0.2.2.dist-info}/WHEEL +0 -0
  115. {omnibase_infra-0.2.1.dist-info → omnibase_infra-0.2.2.dist-info}/entry_points.txt +0 -0
  116. {omnibase_infra-0.2.1.dist-info → omnibase_infra-0.2.2.dist-info}/licenses/LICENSE +0 -0
@@ -5,6 +5,8 @@
5
5
  This module defines the EventBusRegistryError for event bus registry operations.
6
6
  """
7
7
 
8
+ from typing import Any, cast
9
+
8
10
  from omnibase_infra.errors.error_infra import RuntimeHostError
9
11
  from omnibase_infra.models.errors.model_infra_error_context import (
10
12
  ModelInfraErrorContext,
@@ -92,10 +94,11 @@ class EventBusRegistryError(RuntimeHostError):
92
94
  if existing_class is not None:
93
95
  extra_context["existing_class"] = existing_class
94
96
 
97
+ # NOTE: Cast required for mypy - **dict[str, object] doesn't satisfy **context: Any
95
98
  super().__init__(
96
99
  message=message,
97
100
  context=context,
98
- **extra_context,
101
+ **cast("dict[str, Any]", extra_context),
99
102
  )
100
103
 
101
104
 
@@ -68,6 +68,7 @@ NOT_FOUND Classification Patterns:
68
68
  - Optional keys, cache lookups: Use discriminated union responses
69
69
  """
70
70
 
71
+ from typing import Any, cast
71
72
  from uuid import uuid4
72
73
 
73
74
  from omnibase_core.enums import EnumCoreErrorCode
@@ -145,11 +146,12 @@ class RuntimeHostError(ModelOnexError):
145
146
  correlation_id = uuid4()
146
147
 
147
148
  # Initialize base error with default error code
149
+ # NOTE: Cast required for mypy - **dict[str, object] doesn't satisfy **context: Any
148
150
  super().__init__(
149
151
  message=message,
150
152
  error_code=error_code or EnumCoreErrorCode.OPERATION_FAILED,
151
153
  correlation_id=correlation_id,
152
- **structured_context,
154
+ **cast("dict[str, Any]", structured_context),
153
155
  )
154
156
 
155
157
 
@@ -5,6 +5,8 @@
5
5
  This module defines the PolicyRegistryError for policy registry operations.
6
6
  """
7
7
 
8
+ from typing import Any, cast
9
+
8
10
  from omnibase_infra.enums import EnumPolicyType
9
11
  from omnibase_infra.errors.error_infra import RuntimeHostError
10
12
  from omnibase_infra.models.errors.model_infra_error_context import (
@@ -102,10 +104,11 @@ class PolicyRegistryError(RuntimeHostError):
102
104
  else policy_type
103
105
  )
104
106
 
107
+ # NOTE: Cast required for mypy - **dict[str, object] doesn't satisfy **context: Any
105
108
  super().__init__(
106
109
  message=message,
107
110
  context=context,
108
- **extra_context,
111
+ **cast("dict[str, Any]", extra_context),
109
112
  )
110
113
 
111
114
 
@@ -76,6 +76,7 @@ from uuid import UUID, uuid4
76
76
  import asyncpg
77
77
 
78
78
  from omnibase_core.models.dispatch import ModelHandlerOutput
79
+ from omnibase_core.types import JsonType
79
80
  from omnibase_infra.enums import (
80
81
  EnumHandlerType,
81
82
  EnumHandlerTypeCategory,
@@ -1020,7 +1021,7 @@ class HandlerDb(MixinAsyncCircuitBreaker, MixinEnvelopeExtraction):
1020
1021
  - docs/architecture/HANDLER_PROTOCOL_DRIVEN_ARCHITECTURE.md
1021
1022
  """
1022
1023
  # Get circuit breaker state if initialized
1023
- cb_state: dict[str, object] | None = None
1024
+ cb_state: dict[str, JsonType] | None = None
1024
1025
  if self._circuit_breaker_initialized:
1025
1026
  cb_state = self._get_circuit_breaker_state()
1026
1027
 
@@ -464,9 +464,11 @@ class HandlerGraph(MixinAsyncCircuitBreaker, ProtocolGraphDatabaseHandler):
464
464
  try:
465
465
  for query, params in queries:
466
466
  query_start = time.perf_counter()
467
- result = await tx.run(query, dict(params) if params else {})
468
- records_data = await result.data()
469
- summary = await result.consume()
467
+ tx_result = await tx.run(
468
+ query, dict(params) if params else {}
469
+ )
470
+ records_data = await tx_result.data()
471
+ summary = await tx_result.consume()
470
472
  query_time_ms = (time.perf_counter() - query_start) * 1000
471
473
 
472
474
  results.append(
@@ -497,8 +499,11 @@ class HandlerGraph(MixinAsyncCircuitBreaker, ProtocolGraphDatabaseHandler):
497
499
  else:
498
500
  # Execute queries individually without transaction
499
501
  for query, params in queries:
500
- result = await self.execute_query(query, params)
501
- results.append(result)
502
+ # Type assertion: execute_query returns ModelGraphQueryResult in this handler
503
+ query_result: ModelGraphQueryResult = await self.execute_query(
504
+ query, params
505
+ ) # type: ignore[assignment]
506
+ results.append(query_result)
502
507
 
503
508
  return ModelGraphBatchResult(
504
509
  results=results,