omnibase_infra 0.2.5__py3-none-any.whl → 0.2.7__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 (139) hide show
  1. omnibase_infra/constants_topic_patterns.py +26 -0
  2. omnibase_infra/enums/__init__.py +3 -0
  3. omnibase_infra/enums/enum_consumer_group_purpose.py +92 -0
  4. omnibase_infra/enums/enum_handler_source_mode.py +16 -2
  5. omnibase_infra/errors/__init__.py +4 -0
  6. omnibase_infra/errors/error_binding_resolution.py +128 -0
  7. omnibase_infra/event_bus/configs/kafka_event_bus_config.yaml +0 -2
  8. omnibase_infra/event_bus/event_bus_inmemory.py +64 -10
  9. omnibase_infra/event_bus/event_bus_kafka.py +105 -47
  10. omnibase_infra/event_bus/mixin_kafka_broadcast.py +3 -7
  11. omnibase_infra/event_bus/mixin_kafka_dlq.py +12 -6
  12. omnibase_infra/event_bus/models/config/model_kafka_event_bus_config.py +0 -81
  13. omnibase_infra/event_bus/testing/__init__.py +26 -0
  14. omnibase_infra/event_bus/testing/adapter_protocol_event_publisher_inmemory.py +418 -0
  15. omnibase_infra/event_bus/testing/model_publisher_metrics.py +64 -0
  16. omnibase_infra/handlers/handler_consul.py +2 -0
  17. omnibase_infra/handlers/mixins/__init__.py +5 -0
  18. omnibase_infra/handlers/mixins/mixin_consul_service.py +274 -10
  19. omnibase_infra/handlers/mixins/mixin_consul_topic_index.py +585 -0
  20. omnibase_infra/handlers/models/model_filesystem_config.py +4 -4
  21. omnibase_infra/migrations/001_create_event_ledger.sql +166 -0
  22. omnibase_infra/migrations/001_drop_event_ledger.sql +18 -0
  23. omnibase_infra/mixins/mixin_node_introspection.py +189 -19
  24. omnibase_infra/models/__init__.py +8 -0
  25. omnibase_infra/models/bindings/__init__.py +59 -0
  26. omnibase_infra/models/bindings/constants.py +144 -0
  27. omnibase_infra/models/bindings/model_binding_resolution_result.py +103 -0
  28. omnibase_infra/models/bindings/model_operation_binding.py +44 -0
  29. omnibase_infra/models/bindings/model_operation_bindings_subcontract.py +152 -0
  30. omnibase_infra/models/bindings/model_parsed_binding.py +52 -0
  31. omnibase_infra/models/discovery/model_introspection_config.py +25 -17
  32. omnibase_infra/models/dispatch/__init__.py +8 -0
  33. omnibase_infra/models/dispatch/model_debug_trace_snapshot.py +114 -0
  34. omnibase_infra/models/dispatch/model_materialized_dispatch.py +141 -0
  35. omnibase_infra/models/handlers/model_handler_source_config.py +1 -1
  36. omnibase_infra/models/model_node_identity.py +126 -0
  37. omnibase_infra/models/projection/model_snapshot_topic_config.py +3 -2
  38. omnibase_infra/models/registration/__init__.py +9 -0
  39. omnibase_infra/models/registration/model_event_bus_topic_entry.py +59 -0
  40. omnibase_infra/models/registration/model_node_event_bus_config.py +99 -0
  41. omnibase_infra/models/registration/model_node_introspection_event.py +11 -0
  42. omnibase_infra/models/runtime/__init__.py +9 -0
  43. omnibase_infra/models/validation/model_coverage_metrics.py +2 -2
  44. omnibase_infra/nodes/__init__.py +9 -0
  45. omnibase_infra/nodes/contract_registry_reducer/__init__.py +29 -0
  46. omnibase_infra/nodes/contract_registry_reducer/contract.yaml +255 -0
  47. omnibase_infra/nodes/contract_registry_reducer/models/__init__.py +38 -0
  48. omnibase_infra/nodes/contract_registry_reducer/models/model_contract_registry_state.py +266 -0
  49. omnibase_infra/nodes/contract_registry_reducer/models/model_payload_cleanup_topic_references.py +55 -0
  50. omnibase_infra/nodes/contract_registry_reducer/models/model_payload_deactivate_contract.py +58 -0
  51. omnibase_infra/nodes/contract_registry_reducer/models/model_payload_mark_stale.py +49 -0
  52. omnibase_infra/nodes/contract_registry_reducer/models/model_payload_update_heartbeat.py +71 -0
  53. omnibase_infra/nodes/contract_registry_reducer/models/model_payload_update_topic.py +66 -0
  54. omnibase_infra/nodes/contract_registry_reducer/models/model_payload_upsert_contract.py +92 -0
  55. omnibase_infra/nodes/contract_registry_reducer/node.py +121 -0
  56. omnibase_infra/nodes/contract_registry_reducer/reducer.py +784 -0
  57. omnibase_infra/nodes/contract_registry_reducer/registry/__init__.py +9 -0
  58. omnibase_infra/nodes/contract_registry_reducer/registry/registry_infra_contract_registry_reducer.py +101 -0
  59. omnibase_infra/nodes/handlers/consul/contract.yaml +85 -0
  60. omnibase_infra/nodes/handlers/db/contract.yaml +72 -0
  61. omnibase_infra/nodes/handlers/graph/contract.yaml +127 -0
  62. omnibase_infra/nodes/handlers/http/contract.yaml +74 -0
  63. omnibase_infra/nodes/handlers/intent/contract.yaml +66 -0
  64. omnibase_infra/nodes/handlers/mcp/contract.yaml +69 -0
  65. omnibase_infra/nodes/handlers/vault/contract.yaml +91 -0
  66. omnibase_infra/nodes/node_ledger_projection_compute/__init__.py +50 -0
  67. omnibase_infra/nodes/node_ledger_projection_compute/contract.yaml +104 -0
  68. omnibase_infra/nodes/node_ledger_projection_compute/node.py +284 -0
  69. omnibase_infra/nodes/node_ledger_projection_compute/registry/__init__.py +29 -0
  70. omnibase_infra/nodes/node_ledger_projection_compute/registry/registry_infra_ledger_projection.py +118 -0
  71. omnibase_infra/nodes/node_ledger_write_effect/__init__.py +82 -0
  72. omnibase_infra/nodes/node_ledger_write_effect/contract.yaml +200 -0
  73. omnibase_infra/nodes/node_ledger_write_effect/handlers/__init__.py +22 -0
  74. omnibase_infra/nodes/node_ledger_write_effect/handlers/handler_ledger_append.py +372 -0
  75. omnibase_infra/nodes/node_ledger_write_effect/handlers/handler_ledger_query.py +597 -0
  76. omnibase_infra/nodes/node_ledger_write_effect/models/__init__.py +31 -0
  77. omnibase_infra/nodes/node_ledger_write_effect/models/model_ledger_append_result.py +54 -0
  78. omnibase_infra/nodes/node_ledger_write_effect/models/model_ledger_entry.py +92 -0
  79. omnibase_infra/nodes/node_ledger_write_effect/models/model_ledger_query.py +53 -0
  80. omnibase_infra/nodes/node_ledger_write_effect/models/model_ledger_query_result.py +41 -0
  81. omnibase_infra/nodes/node_ledger_write_effect/node.py +89 -0
  82. omnibase_infra/nodes/node_ledger_write_effect/protocols/__init__.py +13 -0
  83. omnibase_infra/nodes/node_ledger_write_effect/protocols/protocol_ledger_persistence.py +127 -0
  84. omnibase_infra/nodes/node_ledger_write_effect/registry/__init__.py +9 -0
  85. omnibase_infra/nodes/node_ledger_write_effect/registry/registry_infra_ledger_write.py +121 -0
  86. omnibase_infra/nodes/node_registration_orchestrator/registry/registry_infra_node_registration_orchestrator.py +7 -5
  87. omnibase_infra/nodes/reducers/models/__init__.py +7 -2
  88. omnibase_infra/nodes/reducers/models/model_payload_consul_register.py +11 -0
  89. omnibase_infra/nodes/reducers/models/model_payload_ledger_append.py +133 -0
  90. omnibase_infra/nodes/reducers/registration_reducer.py +1 -0
  91. omnibase_infra/protocols/__init__.py +3 -0
  92. omnibase_infra/protocols/protocol_dispatch_engine.py +152 -0
  93. omnibase_infra/runtime/__init__.py +60 -0
  94. omnibase_infra/runtime/binding_resolver.py +753 -0
  95. omnibase_infra/runtime/constants_security.py +70 -0
  96. omnibase_infra/runtime/contract_loaders/__init__.py +9 -0
  97. omnibase_infra/runtime/contract_loaders/operation_bindings_loader.py +789 -0
  98. omnibase_infra/runtime/emit_daemon/__init__.py +97 -0
  99. omnibase_infra/runtime/emit_daemon/cli.py +844 -0
  100. omnibase_infra/runtime/emit_daemon/client.py +811 -0
  101. omnibase_infra/runtime/emit_daemon/config.py +535 -0
  102. omnibase_infra/runtime/emit_daemon/daemon.py +812 -0
  103. omnibase_infra/runtime/emit_daemon/event_registry.py +477 -0
  104. omnibase_infra/runtime/emit_daemon/model_daemon_request.py +139 -0
  105. omnibase_infra/runtime/emit_daemon/model_daemon_response.py +191 -0
  106. omnibase_infra/runtime/emit_daemon/queue.py +618 -0
  107. omnibase_infra/runtime/event_bus_subcontract_wiring.py +466 -0
  108. omnibase_infra/runtime/handler_source_resolver.py +43 -2
  109. omnibase_infra/runtime/kafka_contract_source.py +984 -0
  110. omnibase_infra/runtime/models/__init__.py +13 -0
  111. omnibase_infra/runtime/models/model_contract_load_result.py +224 -0
  112. omnibase_infra/runtime/models/model_runtime_contract_config.py +268 -0
  113. omnibase_infra/runtime/models/model_runtime_scheduler_config.py +4 -3
  114. omnibase_infra/runtime/models/model_security_config.py +109 -0
  115. omnibase_infra/runtime/publisher_topic_scoped.py +294 -0
  116. omnibase_infra/runtime/runtime_contract_config_loader.py +406 -0
  117. omnibase_infra/runtime/service_kernel.py +76 -6
  118. omnibase_infra/runtime/service_message_dispatch_engine.py +558 -15
  119. omnibase_infra/runtime/service_runtime_host_process.py +770 -20
  120. omnibase_infra/runtime/transition_notification_publisher.py +3 -2
  121. omnibase_infra/runtime/util_wiring.py +206 -62
  122. omnibase_infra/services/mcp/service_mcp_tool_sync.py +27 -9
  123. omnibase_infra/services/session/config_consumer.py +25 -8
  124. omnibase_infra/services/session/config_store.py +2 -2
  125. omnibase_infra/services/session/consumer.py +1 -1
  126. omnibase_infra/topics/__init__.py +45 -0
  127. omnibase_infra/topics/platform_topic_suffixes.py +140 -0
  128. omnibase_infra/topics/util_topic_composition.py +95 -0
  129. omnibase_infra/types/typed_dict/__init__.py +9 -1
  130. omnibase_infra/types/typed_dict/typed_dict_envelope_build_params.py +115 -0
  131. omnibase_infra/utils/__init__.py +9 -0
  132. omnibase_infra/utils/util_consumer_group.py +232 -0
  133. omnibase_infra/validation/infra_validators.py +18 -1
  134. omnibase_infra/validation/validation_exemptions.yaml +192 -0
  135. {omnibase_infra-0.2.5.dist-info → omnibase_infra-0.2.7.dist-info}/METADATA +3 -3
  136. {omnibase_infra-0.2.5.dist-info → omnibase_infra-0.2.7.dist-info}/RECORD +139 -52
  137. {omnibase_infra-0.2.5.dist-info → omnibase_infra-0.2.7.dist-info}/entry_points.txt +1 -0
  138. {omnibase_infra-0.2.5.dist-info → omnibase_infra-0.2.7.dist-info}/WHEEL +0 -0
  139. {omnibase_infra-0.2.5.dist-info → omnibase_infra-0.2.7.dist-info}/licenses/LICENSE +0 -0
@@ -89,6 +89,23 @@ skip_directories:
89
89
  # These handle method count, parameter count, naming, and style violations
90
90
  pattern_exemptions:
91
91
  # ==========================================================================
92
+ # ModelRuntimeContractConfig Exemptions (OMN-1519)
93
+ # ==========================================================================
94
+ # Data model with cohesive accessor properties for querying loaded contracts.
95
+ # All methods serve same purpose: querying contract_results collection.
96
+ # Properties: all_successful, success_rate, successful_results, failed_results,
97
+ # handler_routing_configs, operation_bindings_configs, error_messages
98
+ # Methods: get_routing_for_contract, get_bindings_for_contract, __bool__, __str__
99
+ - file_pattern: 'model_runtime_contract_config\.py'
100
+ class_pattern: "Class 'ModelRuntimeContractConfig'"
101
+ violation_pattern: 'has \d+ methods'
102
+ reason: >
103
+ Cohesive data model with accessor properties that all query the same contract_results collection. Properties provide convenient typed access to loaded configs, success metrics, and error details. Breaking into smaller classes would reduce cohesion without meaningful benefit.
104
+
105
+ documentation:
106
+ - OMN-1519 PR description
107
+ ticket: OMN-1519
108
+ # ==========================================================================
92
109
  # EventBusKafka Exemptions (OMN-934, OMN-1305)
93
110
  # ==========================================================================
94
111
  # Event bus pattern requires many methods for lifecycle (start/stop/health),
@@ -1762,10 +1779,185 @@ pattern_exemptions:
1762
1779
  - CLAUDE.md (Type Annotation Conventions)
1763
1780
  - Consul service discovery documentation
1764
1781
  ticket: OMN-1278
1782
+ # ==========================================================================
1783
+ # ==========================================================================
1784
+ # OperationBindingResolver.resolve() requires multiple parameters for binding
1785
+ # resolution: operation, bindings_subcontract, envelope, context, correlation_id.
1786
+ # These are distinct inputs required for the resolution process.
1787
+ - file_pattern: 'binding_resolver\.py'
1788
+ # Declarative Operation Bindings Exemptions (OMN-1518)
1789
+
1790
+ method_pattern: "Function 'resolve'"
1791
+ violation_pattern: 'has \d+ parameters'
1792
+ reason: >
1793
+ resolve() requires distinct parameters for binding resolution: operation name, bindings subcontract, envelope data, optional context, and correlation_id for error context. Breaking into multiple calls would require intermediate state or complex configuration objects that reduce API clarity.
1794
+
1795
+ documentation:
1796
+ - docs/decisions/adr-declarative-operation-bindings.md
1797
+ ticket: OMN-1518
1798
+ # parameter_name in binding models is the handler parameter name being bound,
1799
+ # NOT an entity reference. It's a simple string identifier for the target parameter.
1800
+ - file_pattern: 'model_operation_binding\.py'
1801
+ violation_pattern: "Field 'parameter_name' might reference an entity"
1802
+ reason: >
1803
+ parameter_name is the target handler input field name (e.g., "correlation_id", "sql"). This is a Python function parameter name, NOT an entity reference. It maps to the handler's function signature parameter.
1804
+
1805
+ documentation:
1806
+ - docs/decisions/adr-declarative-operation-bindings.md
1807
+ ticket: OMN-1518
1808
+ - file_pattern: 'model_parsed_binding\.py'
1809
+ violation_pattern: "Field 'parameter_name' might reference an entity"
1810
+ reason: >
1811
+ parameter_name is the target handler input field name (e.g., "correlation_id", "sql"). This is a Python function parameter name, NOT an entity reference. It maps to the handler's function signature parameter.
1812
+
1813
+ documentation:
1814
+ - docs/decisions/adr-declarative-operation-bindings.md
1815
+ ticket: OMN-1518
1816
+ # operation_name in ModelBindingResolutionResult is the operation that was
1817
+ # resolved (e.g., "db.query"), NOT an entity reference. It's a dispatch key.
1818
+ - file_pattern: 'model_binding_resolution_result\.py'
1819
+ violation_pattern: "Field 'operation_name' might reference an entity"
1820
+ reason: >
1821
+ operation_name is the dispatch operation key that was resolved (e.g., "db.query", "consul.register"). This is a routing identifier, NOT an entity reference. It identifies which operation's bindings were resolved.
1822
+
1823
+ documentation:
1824
+ - docs/decisions/adr-declarative-operation-bindings.md
1825
+ ticket: OMN-1518
1826
+ # ==========================================================================
1827
+ # ModelNodeIdentity node_name Exemption (OMN-1602)
1828
+ # ==========================================================================
1829
+ # node_name in ModelNodeIdentity is a canonical identifier for the node within
1830
+ # the ONEX infrastructure, NOT a foreign key reference to another entity.
1831
+ # It is one of the four dimensions (env, service, node_name, version) that
1832
+ # uniquely identify a node instance.
1833
+ - file_pattern: 'model_node_identity\.py'
1834
+ violation_pattern: "Field 'node_name' might reference an entity"
1835
+ reason: >
1836
+ node_name is a canonical identifier (e.g., "claude_hook_event_effect") that uniquely identifies a node within its service. It is NOT a foreign key reference - it is the node's own name from its contract. Combined with env, service, and version, it forms the node's identity.
1837
+
1838
+ documentation:
1839
+ - docs/architecture/REGISTRATION_ORCHESTRATOR_ARCHITECTURE.md
1840
+ ticket: OMN-1602
1841
+ # ==========================================================================
1842
+ # Emit Daemon Field Type Exemptions (OMN-1610)
1843
+ # ==========================================================================
1844
+ # Fields that are intentionally str instead of UUID for specific reasons
1845
+ - file_pattern: 'emit_daemon/queue\.py'
1846
+ violation_pattern: "Field 'event_id' should use UUID type instead of str"
1847
+ reason: event_id is a string representation of a UUID for JSON serialization compatibility.
1848
+ documentation:
1849
+ - src/omnibase_infra/runtime/emit_daemon/queue.py
1850
+ ticket: OMN-1610
1851
+ - file_pattern: 'emit_daemon/model_daemon_response\.py'
1852
+ violation_pattern: "Field 'event_id' should use UUID type instead of str"
1853
+ reason: event_id is returned as a string in the daemon protocol for JSON serialization compatibility. Matches queue.py event_id.
1854
+ documentation:
1855
+ - src/omnibase_infra/runtime/emit_daemon/model_daemon_response.py
1856
+ ticket: OMN-1610
1857
+ - file_pattern: 'emit_daemon/config\.py'
1858
+ violation_pattern: "Field 'kafka_client_id' should use UUID type instead of str"
1859
+ reason: kafka_client_id is a Kafka client identifier string, not a UUID.
1860
+ documentation:
1861
+ - Kafka client.id documentation
1862
+ ticket: OMN-1610
1863
+ # ==========================================================================
1864
+ # Contract Registry Reducer Handler Exemptions (OMN-1653)
1865
+ # ==========================================================================
1866
+ # Pure reducer handlers follow the pattern: (self, state, event, topic, partition, offset)
1867
+ # This 6-parameter signature is standard for event-sourced reducers that need:
1868
+ # - state: immutable input state
1869
+ # - event: typed domain event
1870
+ # - topic/partition/offset: Kafka position for idempotency tracking
1871
+ - file_pattern: 'nodes/contract_registry_reducer/reducer\.py'
1872
+ method_pattern: '_on_contract_registered'
1873
+ violation_pattern: 'has 6 parameters'
1874
+ reason: >
1875
+ Standard reducer handler signature for event-sourced reducers. The 6 parameters provide: self, state (immutable input), event (typed domain event), and Kafka position (topic/partition/offset) for idempotency tracking. This is the canonical pattern for ONEX reducers.
1876
+
1877
+ documentation:
1878
+ - CLAUDE.md (Node Archetypes - NodeReducer)
1879
+ - docs/patterns/reducer_pattern.md
1880
+ ticket: OMN-1653
1881
+ - file_pattern: 'nodes/contract_registry_reducer/reducer\.py'
1882
+ method_pattern: '_on_contract_deregistered'
1883
+ violation_pattern: 'has 6 parameters'
1884
+ reason: Same as _on_contract_registered - standard reducer handler signature.
1885
+ documentation:
1886
+ - CLAUDE.md (Node Archetypes - NodeReducer)
1887
+ ticket: OMN-1653
1888
+ - file_pattern: 'nodes/contract_registry_reducer/reducer\.py'
1889
+ method_pattern: '_on_heartbeat'
1890
+ violation_pattern: 'has 6 parameters'
1891
+ reason: Same as _on_contract_registered - standard reducer handler signature.
1892
+ documentation:
1893
+ - CLAUDE.md (Node Archetypes - NodeReducer)
1894
+ ticket: OMN-1653
1895
+ - file_pattern: 'nodes/contract_registry_reducer/reducer\.py'
1896
+ method_pattern: '_on_runtime_tick'
1897
+ violation_pattern: 'has 6 parameters'
1898
+ reason: Same as _on_contract_registered - standard reducer handler signature.
1899
+ documentation:
1900
+ - CLAUDE.md (Node Archetypes - NodeReducer)
1901
+ ticket: OMN-1653
1902
+ # Contract ID is a derived natural key (node_name:major.minor.patch), not a UUID.
1903
+ # This is intentional per the contract registry design where contracts are identified
1904
+ # by their name and version, enabling human-readable queries and deduplication.
1905
+ - file_pattern: 'nodes/contract_registry_reducer/models/model_payload_.*\.py'
1906
+ violation_pattern: "Field 'contract_id' should use UUID"
1907
+ reason: >
1908
+ contract_id is a derived natural key (node_name:major.minor.patch), not a UUID. This design enables human-readable queries, version-based deduplication, and matches the contract.yaml identification pattern used throughout ONEX.
1909
+
1910
+ documentation:
1911
+ - CLAUDE.md (Intent Model Architecture - Contract Identity)
1912
+ ticket: OMN-1653
1913
+ # node_name is the contract's semantic name, not an entity reference requiring ID + display_name.
1914
+ - file_pattern: 'nodes/contract_registry_reducer/models/model_payload_.*\.py'
1915
+ violation_pattern: "Field 'node_name' might reference an entity"
1916
+ reason: >
1917
+ node_name is the contract's semantic identifier from contract.yaml, not a reference to a separate entity. Contracts are identified by name, making this a primary attribute not a foreign key.
1918
+
1919
+ documentation:
1920
+ - CLAUDE.md (Contract-Driven - node_name conventions)
1921
+ ticket: OMN-1653
1765
1922
  # Architecture validator exemptions
1766
1923
  # These handle one-model-per-file violations for domain-grouped protocols
1767
1924
  architecture_exemptions:
1768
1925
  # ==========================================================================
1926
+ # Emit Daemon Config Input Model Exemption (OMN-1610)
1927
+ # ==========================================================================
1928
+ # config.py contains ModelEmitDaemonConfigInput (intermediate input model)
1929
+ # and ModelEmitDaemonConfig (final validated config). The input model is
1930
+ # tightly coupled and only used internally by with_env_overrides() factory.
1931
+ - file_pattern: 'emit_daemon/config\.py'
1932
+ violation_pattern: '\d+ models in one file'
1933
+ reason: >
1934
+ ModelEmitDaemonConfigInput is an intermediate input model used only by ModelEmitDaemonConfig.with_env_overrides() factory method. It provides early validation for environment variable parsing and is tightly coupled with the main config model. Separating would add complexity without benefit.
1935
+
1936
+ documentation:
1937
+ - CLAUDE.md (Protocol File Naming - domain-grouping convention)
1938
+ ticket: OMN-1610
1939
+ # ==========================================================================
1940
+ # Emit Daemon Protocol Models Exemption (OMN-1610)
1941
+ # ==========================================================================
1942
+ # Request and response models form discriminated unions that are always used
1943
+ # together. Separating into individual files would break the cohesive API.
1944
+ - file_pattern: 'emit_daemon/model_daemon_request\.py'
1945
+ violation_pattern: '\d+ models in one file'
1946
+ reason: >
1947
+ ModelDaemonPingRequest and ModelDaemonEmitRequest form a discriminated union (ModelDaemonRequest) for the daemon protocol. These request types are always parsed together via parse_daemon_request(). Per CLAUDE.md domain-grouping convention for protocol messages.
1948
+
1949
+ documentation:
1950
+ - CLAUDE.md (Protocol File Naming - domain-grouping convention)
1951
+ ticket: OMN-1610
1952
+ - file_pattern: 'emit_daemon/model_daemon_response\.py'
1953
+ violation_pattern: '\d+ models in one file'
1954
+ reason: >
1955
+ ModelDaemonPingResponse, ModelDaemonQueuedResponse, and ModelDaemonErrorResponse form a discriminated union (ModelDaemonResponse) for the daemon protocol. These response types are always parsed together via parse_daemon_response(). Per CLAUDE.md domain-grouping convention for protocol messages.
1956
+
1957
+ documentation:
1958
+ - CLAUDE.md (Protocol File Naming - domain-grouping convention)
1959
+ ticket: OMN-1610
1960
+ # ==========================================================================
1769
1961
  # Contract Linter Models Exemption (PR #57)
1770
1962
  # ==========================================================================
1771
1963
  # linter_contract.py contains domain-grouped validation models and enums
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omnibase_infra
3
- Version: 0.2.5
3
+ Version: 0.2.7
4
4
  Summary: ONEX Infrastructure - Service integration and database infrastructure tools
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -28,8 +28,8 @@ Requires-Dist: jinja2 (>=3.1.6,<4.0.0)
28
28
  Requires-Dist: jsonschema (>=4.20.0,<5.0.0)
29
29
  Requires-Dist: mcp (>=1.25.0,<2.0.0)
30
30
  Requires-Dist: neo4j (>=5.15.0,<6.0.0)
31
- Requires-Dist: omnibase-core (>=0.9.6,<0.10.0)
32
- Requires-Dist: omnibase-spi (>=0.6.1,<0.7.0)
31
+ Requires-Dist: omnibase-core (>=0.9.10,<0.10.0)
32
+ Requires-Dist: omnibase-spi (>=0.6.3,<0.7.0)
33
33
  Requires-Dist: opentelemetry-api (>=1.27.0,<2.0.0)
34
34
  Requires-Dist: opentelemetry-exporter-otlp (>=1.27.0,<2.0.0)
35
35
  Requires-Dist: opentelemetry-instrumentation (>=0.48b0,<0.49)