split EventBus into DaemonBus + MessageBus

DaemonBus (was EventBus): typed events for system/IPC layer.
MessageBus: channel-based pub/sub for UI/extension coordination.
Messages carry publisher (auto-stamped from extension ID),
channel (required), timestamp, and payload. Subscribe by
publisher, channel, or both — zero collision across extensions.

Extension context gains publish() and subscribe() convenience
methods that auto-stamp the extension's ID as publisher.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-23 15:25:07 +02:00
co-authored by Claude Opus 4.6
parent cce1ab63c0
commit 3e1bb27432
19 changed files with 91 additions and 26 deletions
+2 -2
View File
@@ -13,13 +13,13 @@ class DaemonClient extends ChangeNotifier {
DaemonClient({
required this.socketPath,
required Logger log,
required EventBus events,
required DaemonBus events,
}) : _log = log,
_events = events;
final String socketPath;
final Logger _log;
final EventBus _events;
final DaemonBus _events;
Socket? _socket;
bool _connected = false;
+1 -1
View File
@@ -7,7 +7,7 @@ import 'package:clide/src/daemon/dispatcher.dart';
class InProcessClient extends DaemonClient {
InProcessClient({
required Logger log,
required EventBus events,
required DaemonBus events,
required this.dispatcher,
}) : super(socketPath: '', log: log, events: events);