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.
- omnibase_infra/constants_topic_patterns.py +26 -0
- omnibase_infra/enums/__init__.py +3 -0
- omnibase_infra/enums/enum_consumer_group_purpose.py +92 -0
- omnibase_infra/enums/enum_handler_source_mode.py +16 -2
- omnibase_infra/errors/__init__.py +4 -0
- omnibase_infra/errors/error_binding_resolution.py +128 -0
- omnibase_infra/event_bus/configs/kafka_event_bus_config.yaml +0 -2
- omnibase_infra/event_bus/event_bus_inmemory.py +64 -10
- omnibase_infra/event_bus/event_bus_kafka.py +105 -47
- omnibase_infra/event_bus/mixin_kafka_broadcast.py +3 -7
- omnibase_infra/event_bus/mixin_kafka_dlq.py +12 -6
- omnibase_infra/event_bus/models/config/model_kafka_event_bus_config.py +0 -81
- omnibase_infra/event_bus/testing/__init__.py +26 -0
- omnibase_infra/event_bus/testing/adapter_protocol_event_publisher_inmemory.py +418 -0
- omnibase_infra/event_bus/testing/model_publisher_metrics.py +64 -0
- omnibase_infra/handlers/handler_consul.py +2 -0
- omnibase_infra/handlers/mixins/__init__.py +5 -0
- omnibase_infra/handlers/mixins/mixin_consul_service.py +274 -10
- omnibase_infra/handlers/mixins/mixin_consul_topic_index.py +585 -0
- omnibase_infra/handlers/models/model_filesystem_config.py +4 -4
- omnibase_infra/migrations/001_create_event_ledger.sql +166 -0
- omnibase_infra/migrations/001_drop_event_ledger.sql +18 -0
- omnibase_infra/mixins/mixin_node_introspection.py +189 -19
- omnibase_infra/models/__init__.py +8 -0
- omnibase_infra/models/bindings/__init__.py +59 -0
- omnibase_infra/models/bindings/constants.py +144 -0
- omnibase_infra/models/bindings/model_binding_resolution_result.py +103 -0
- omnibase_infra/models/bindings/model_operation_binding.py +44 -0
- omnibase_infra/models/bindings/model_operation_bindings_subcontract.py +152 -0
- omnibase_infra/models/bindings/model_parsed_binding.py +52 -0
- omnibase_infra/models/discovery/model_introspection_config.py +25 -17
- omnibase_infra/models/dispatch/__init__.py +8 -0
- omnibase_infra/models/dispatch/model_debug_trace_snapshot.py +114 -0
- omnibase_infra/models/dispatch/model_materialized_dispatch.py +141 -0
- omnibase_infra/models/handlers/model_handler_source_config.py +1 -1
- omnibase_infra/models/model_node_identity.py +126 -0
- omnibase_infra/models/projection/model_snapshot_topic_config.py +3 -2
- omnibase_infra/models/registration/__init__.py +9 -0
- omnibase_infra/models/registration/model_event_bus_topic_entry.py +59 -0
- omnibase_infra/models/registration/model_node_event_bus_config.py +99 -0
- omnibase_infra/models/registration/model_node_introspection_event.py +11 -0
- omnibase_infra/models/runtime/__init__.py +9 -0
- omnibase_infra/models/validation/model_coverage_metrics.py +2 -2
- omnibase_infra/nodes/__init__.py +9 -0
- omnibase_infra/nodes/contract_registry_reducer/__init__.py +29 -0
- omnibase_infra/nodes/contract_registry_reducer/contract.yaml +255 -0
- omnibase_infra/nodes/contract_registry_reducer/models/__init__.py +38 -0
- omnibase_infra/nodes/contract_registry_reducer/models/model_contract_registry_state.py +266 -0
- omnibase_infra/nodes/contract_registry_reducer/models/model_payload_cleanup_topic_references.py +55 -0
- omnibase_infra/nodes/contract_registry_reducer/models/model_payload_deactivate_contract.py +58 -0
- omnibase_infra/nodes/contract_registry_reducer/models/model_payload_mark_stale.py +49 -0
- omnibase_infra/nodes/contract_registry_reducer/models/model_payload_update_heartbeat.py +71 -0
- omnibase_infra/nodes/contract_registry_reducer/models/model_payload_update_topic.py +66 -0
- omnibase_infra/nodes/contract_registry_reducer/models/model_payload_upsert_contract.py +92 -0
- omnibase_infra/nodes/contract_registry_reducer/node.py +121 -0
- omnibase_infra/nodes/contract_registry_reducer/reducer.py +784 -0
- omnibase_infra/nodes/contract_registry_reducer/registry/__init__.py +9 -0
- omnibase_infra/nodes/contract_registry_reducer/registry/registry_infra_contract_registry_reducer.py +101 -0
- omnibase_infra/nodes/handlers/consul/contract.yaml +85 -0
- omnibase_infra/nodes/handlers/db/contract.yaml +72 -0
- omnibase_infra/nodes/handlers/graph/contract.yaml +127 -0
- omnibase_infra/nodes/handlers/http/contract.yaml +74 -0
- omnibase_infra/nodes/handlers/intent/contract.yaml +66 -0
- omnibase_infra/nodes/handlers/mcp/contract.yaml +69 -0
- omnibase_infra/nodes/handlers/vault/contract.yaml +91 -0
- omnibase_infra/nodes/node_ledger_projection_compute/__init__.py +50 -0
- omnibase_infra/nodes/node_ledger_projection_compute/contract.yaml +104 -0
- omnibase_infra/nodes/node_ledger_projection_compute/node.py +284 -0
- omnibase_infra/nodes/node_ledger_projection_compute/registry/__init__.py +29 -0
- omnibase_infra/nodes/node_ledger_projection_compute/registry/registry_infra_ledger_projection.py +118 -0
- omnibase_infra/nodes/node_ledger_write_effect/__init__.py +82 -0
- omnibase_infra/nodes/node_ledger_write_effect/contract.yaml +200 -0
- omnibase_infra/nodes/node_ledger_write_effect/handlers/__init__.py +22 -0
- omnibase_infra/nodes/node_ledger_write_effect/handlers/handler_ledger_append.py +372 -0
- omnibase_infra/nodes/node_ledger_write_effect/handlers/handler_ledger_query.py +597 -0
- omnibase_infra/nodes/node_ledger_write_effect/models/__init__.py +31 -0
- omnibase_infra/nodes/node_ledger_write_effect/models/model_ledger_append_result.py +54 -0
- omnibase_infra/nodes/node_ledger_write_effect/models/model_ledger_entry.py +92 -0
- omnibase_infra/nodes/node_ledger_write_effect/models/model_ledger_query.py +53 -0
- omnibase_infra/nodes/node_ledger_write_effect/models/model_ledger_query_result.py +41 -0
- omnibase_infra/nodes/node_ledger_write_effect/node.py +89 -0
- omnibase_infra/nodes/node_ledger_write_effect/protocols/__init__.py +13 -0
- omnibase_infra/nodes/node_ledger_write_effect/protocols/protocol_ledger_persistence.py +127 -0
- omnibase_infra/nodes/node_ledger_write_effect/registry/__init__.py +9 -0
- omnibase_infra/nodes/node_ledger_write_effect/registry/registry_infra_ledger_write.py +121 -0
- omnibase_infra/nodes/node_registration_orchestrator/registry/registry_infra_node_registration_orchestrator.py +7 -5
- omnibase_infra/nodes/reducers/models/__init__.py +7 -2
- omnibase_infra/nodes/reducers/models/model_payload_consul_register.py +11 -0
- omnibase_infra/nodes/reducers/models/model_payload_ledger_append.py +133 -0
- omnibase_infra/nodes/reducers/registration_reducer.py +1 -0
- omnibase_infra/protocols/__init__.py +3 -0
- omnibase_infra/protocols/protocol_dispatch_engine.py +152 -0
- omnibase_infra/runtime/__init__.py +60 -0
- omnibase_infra/runtime/binding_resolver.py +753 -0
- omnibase_infra/runtime/constants_security.py +70 -0
- omnibase_infra/runtime/contract_loaders/__init__.py +9 -0
- omnibase_infra/runtime/contract_loaders/operation_bindings_loader.py +789 -0
- omnibase_infra/runtime/emit_daemon/__init__.py +97 -0
- omnibase_infra/runtime/emit_daemon/cli.py +844 -0
- omnibase_infra/runtime/emit_daemon/client.py +811 -0
- omnibase_infra/runtime/emit_daemon/config.py +535 -0
- omnibase_infra/runtime/emit_daemon/daemon.py +812 -0
- omnibase_infra/runtime/emit_daemon/event_registry.py +477 -0
- omnibase_infra/runtime/emit_daemon/model_daemon_request.py +139 -0
- omnibase_infra/runtime/emit_daemon/model_daemon_response.py +191 -0
- omnibase_infra/runtime/emit_daemon/queue.py +618 -0
- omnibase_infra/runtime/event_bus_subcontract_wiring.py +466 -0
- omnibase_infra/runtime/handler_source_resolver.py +43 -2
- omnibase_infra/runtime/kafka_contract_source.py +984 -0
- omnibase_infra/runtime/models/__init__.py +13 -0
- omnibase_infra/runtime/models/model_contract_load_result.py +224 -0
- omnibase_infra/runtime/models/model_runtime_contract_config.py +268 -0
- omnibase_infra/runtime/models/model_runtime_scheduler_config.py +4 -3
- omnibase_infra/runtime/models/model_security_config.py +109 -0
- omnibase_infra/runtime/publisher_topic_scoped.py +294 -0
- omnibase_infra/runtime/runtime_contract_config_loader.py +406 -0
- omnibase_infra/runtime/service_kernel.py +76 -6
- omnibase_infra/runtime/service_message_dispatch_engine.py +558 -15
- omnibase_infra/runtime/service_runtime_host_process.py +770 -20
- omnibase_infra/runtime/transition_notification_publisher.py +3 -2
- omnibase_infra/runtime/util_wiring.py +206 -62
- omnibase_infra/services/mcp/service_mcp_tool_sync.py +27 -9
- omnibase_infra/services/session/config_consumer.py +25 -8
- omnibase_infra/services/session/config_store.py +2 -2
- omnibase_infra/services/session/consumer.py +1 -1
- omnibase_infra/topics/__init__.py +45 -0
- omnibase_infra/topics/platform_topic_suffixes.py +140 -0
- omnibase_infra/topics/util_topic_composition.py +95 -0
- omnibase_infra/types/typed_dict/__init__.py +9 -1
- omnibase_infra/types/typed_dict/typed_dict_envelope_build_params.py +115 -0
- omnibase_infra/utils/__init__.py +9 -0
- omnibase_infra/utils/util_consumer_group.py +232 -0
- omnibase_infra/validation/infra_validators.py +18 -1
- omnibase_infra/validation/validation_exemptions.yaml +192 -0
- {omnibase_infra-0.2.5.dist-info → omnibase_infra-0.2.7.dist-info}/METADATA +3 -3
- {omnibase_infra-0.2.5.dist-info → omnibase_infra-0.2.7.dist-info}/RECORD +139 -52
- {omnibase_infra-0.2.5.dist-info → omnibase_infra-0.2.7.dist-info}/entry_points.txt +1 -0
- {omnibase_infra-0.2.5.dist-info → omnibase_infra-0.2.7.dist-info}/WHEEL +0 -0
- {omnibase_infra-0.2.5.dist-info → omnibase_infra-0.2.7.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2025 OmniNode Team
|
|
3
|
+
"""Hook Event Daemon - Event emission infrastructure for OmniClaude hooks.
|
|
4
|
+
|
|
5
|
+
This package provides the daemon and supporting infrastructure for emitting
|
|
6
|
+
events from OmniClaude hooks to Kafka topics.
|
|
7
|
+
|
|
8
|
+
Components:
|
|
9
|
+
- EmitDaemon: Unix socket server for persistent Kafka event emission
|
|
10
|
+
- EmitClient: Client for emitting events via the daemon
|
|
11
|
+
- EventRegistry: Maps event types to Kafka topics with metadata injection
|
|
12
|
+
- ModelEventRegistration: Configuration model for event type mappings
|
|
13
|
+
- ModelEmitDaemonConfig: Configuration model for the daemon
|
|
14
|
+
- BoundedEventQueue: In-memory queue with disk spool overflow
|
|
15
|
+
- ModelQueuedEvent: Event model for queued events
|
|
16
|
+
|
|
17
|
+
Example Usage:
|
|
18
|
+
```python
|
|
19
|
+
from omnibase_infra.runtime.emit_daemon import (
|
|
20
|
+
EmitClient,
|
|
21
|
+
EmitDaemon,
|
|
22
|
+
EventRegistry,
|
|
23
|
+
ModelEmitDaemonConfig,
|
|
24
|
+
ModelEventRegistration,
|
|
25
|
+
emit_event,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
# Client usage (recommended for hooks)
|
|
29
|
+
async with EmitClient() as client:
|
|
30
|
+
event_id = await client.emit("prompt.submitted", {"prompt_id": "abc123"})
|
|
31
|
+
|
|
32
|
+
# Or use convenience function
|
|
33
|
+
event_id = await emit_event("prompt.submitted", {"prompt_id": "abc123"})
|
|
34
|
+
|
|
35
|
+
# Daemon usage (for running the server)
|
|
36
|
+
config = ModelEmitDaemonConfig(
|
|
37
|
+
kafka_bootstrap_servers="kafka:9092",
|
|
38
|
+
)
|
|
39
|
+
daemon = EmitDaemon(config)
|
|
40
|
+
await daemon.start()
|
|
41
|
+
await daemon.run_until_shutdown()
|
|
42
|
+
|
|
43
|
+
# Or use the registry directly
|
|
44
|
+
registry = EventRegistry(environment="dev")
|
|
45
|
+
topic = registry.resolve_topic("prompt.submitted")
|
|
46
|
+
```
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
from omnibase_infra.runtime.emit_daemon.cli import main as cli_main
|
|
50
|
+
from omnibase_infra.runtime.emit_daemon.client import (
|
|
51
|
+
EmitClient,
|
|
52
|
+
EmitClientError,
|
|
53
|
+
emit_event,
|
|
54
|
+
emit_event_with_fallback,
|
|
55
|
+
)
|
|
56
|
+
from omnibase_infra.runtime.emit_daemon.config import ModelEmitDaemonConfig
|
|
57
|
+
from omnibase_infra.runtime.emit_daemon.daemon import EmitDaemon
|
|
58
|
+
from omnibase_infra.runtime.emit_daemon.event_registry import (
|
|
59
|
+
EventRegistry,
|
|
60
|
+
ModelEventRegistration,
|
|
61
|
+
)
|
|
62
|
+
from omnibase_infra.runtime.emit_daemon.model_daemon_request import (
|
|
63
|
+
ModelDaemonEmitRequest,
|
|
64
|
+
ModelDaemonPingRequest,
|
|
65
|
+
parse_daemon_request,
|
|
66
|
+
)
|
|
67
|
+
from omnibase_infra.runtime.emit_daemon.model_daemon_response import (
|
|
68
|
+
ModelDaemonErrorResponse,
|
|
69
|
+
ModelDaemonPingResponse,
|
|
70
|
+
ModelDaemonQueuedResponse,
|
|
71
|
+
parse_daemon_response,
|
|
72
|
+
)
|
|
73
|
+
from omnibase_infra.runtime.emit_daemon.queue import (
|
|
74
|
+
BoundedEventQueue,
|
|
75
|
+
ModelQueuedEvent,
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
__all__: list[str] = [
|
|
79
|
+
"BoundedEventQueue",
|
|
80
|
+
"EmitClient",
|
|
81
|
+
"EmitClientError",
|
|
82
|
+
"EmitDaemon",
|
|
83
|
+
"EventRegistry",
|
|
84
|
+
"ModelDaemonEmitRequest",
|
|
85
|
+
"ModelDaemonErrorResponse",
|
|
86
|
+
"ModelDaemonPingRequest",
|
|
87
|
+
"ModelDaemonPingResponse",
|
|
88
|
+
"ModelDaemonQueuedResponse",
|
|
89
|
+
"ModelEmitDaemonConfig",
|
|
90
|
+
"ModelEventRegistration",
|
|
91
|
+
"ModelQueuedEvent",
|
|
92
|
+
"cli_main",
|
|
93
|
+
"emit_event",
|
|
94
|
+
"emit_event_with_fallback",
|
|
95
|
+
"parse_daemon_request",
|
|
96
|
+
"parse_daemon_response",
|
|
97
|
+
]
|