Framework-agnostic headless core for Stream Hub.
stream-hub-core is no longer positioned as a pluggable UI engine. In the v1 direction it focuses on stream models, low-level write commands, command buses, backend contracts, and reusable framework-agnostic building blocks.
The package currently provides:
- core models:
StreamStreamEventStreamParticipant
- backend contract:
StreamBackendInterface
- application context contract:
StreamContextInterface
- command contracts:
StreamCommandInterfaceStreamCommandHandlerInterface
- buses:
CommandBusInterfaceModelCommandBusInterfaceCommandBusGuardedCommandBus
- thin application facade:
StreamHubInterfaceStreamHub
- guard contracts for high-level commands:
StreamCommandGuardInterfaceGuardDecision
- low-level core commands and handlers:
- create stream
- join stream
- append stream event
- mark stream read
- identifier generation:
IdentifierGeneratorInterfaceRandomHexIdentifierGeneratorUuidV4IdentifierGeneratorUuidV7IdentifierGenerator
- Core models are not persistence entities.
- Project-specific enrichment belongs in backend adapters and mappers.
- High-level feature commands may be guarded before handler execution.
- Low-level model commands should stay internal and should not be guarded.
- High-level feature workflows should orchestrate low-level core commands instead of writing directly to storage when a generic low-level command already exists.
- Business authorization rules should live in the application or policy layer, not in the backend contract.
Run tests:
make testRun deptrac:
vendor/bin/deptrac analyse