aditya
|
d17895dae2
|
feat(events): add EventBus protocol and ReactiveEventBus implementation
- Add EventType StrEnum with 38 typed domain event identifiers across 8
domains (plan lifecycle, decision, actor, tool, resource, sandbox,
validation, session, budget)
- Add frozen DomainEvent Pydantic model with event_type, auto-UTC
timestamp, auto-ULID correlation_id, plan_id, root_plan_id,
session_id, actor_name, project_name, and details fields
- Add @runtime_checkable EventBus Protocol with emit() and subscribe()
- Add ReactiveEventBus backed by RxPY Subject for in-process reactive
streaming with synchronous handler dispatch and raw Observable stream
- Add LoggingEventBus using structlog for audit-trail-only environments
- Wire DecisionService to emit DECISION_CREATED on record_decision()
- Wire PlanLifecycleService to emit PLAN_CREATED and PLAN_PHASE_CHANGED
on use_action() and execute_plan() respectively
- Register ReactiveEventBus as Singleton in DI container and inject into
DecisionService and PlanLifecycleService providers
- Add Behave BDD unit tests: 27 scenarios, 75 steps, 100% branch coverage
- Add Robot Framework integration tests: 9 smoke cases
- Add ASV performance benchmarks: 5 suites covering emit throughput and
subscriber fan-out
- Add reference documentation at docs/reference/event_bus.md
ISSUES CLOSED: #473
|
2026-03-02 11:54:53 +00:00 |
|