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:
@@ -8,6 +8,7 @@ import 'package:clide/kernel/src/commands/palette.dart';
|
||||
import 'package:clide/kernel/src/commands/registry.dart';
|
||||
import 'package:clide/kernel/src/dialog.dart';
|
||||
import 'package:clide/kernel/src/events/bus.dart';
|
||||
import 'package:clide/kernel/src/events/message_bus.dart';
|
||||
import 'package:clide/kernel/src/events/types.dart';
|
||||
import 'package:clide/kernel/src/files.dart';
|
||||
import 'package:clide/kernel/src/focus.dart';
|
||||
@@ -30,6 +31,7 @@ class ExtensionManager extends ChangeNotifier {
|
||||
ExtensionManager({
|
||||
required this.log,
|
||||
required this.events,
|
||||
required this.messages,
|
||||
required this.settings,
|
||||
required this.theme,
|
||||
required this.i18n,
|
||||
@@ -52,7 +54,8 @@ class ExtensionManager extends ChangeNotifier {
|
||||
});
|
||||
|
||||
final Logger log;
|
||||
final EventBus events;
|
||||
final DaemonBus events;
|
||||
final MessageBus messages;
|
||||
final SettingsStore settings;
|
||||
final ThemeController theme;
|
||||
final I18n i18n;
|
||||
@@ -239,7 +242,9 @@ class _ExtensionContext implements ClideExtensionContext {
|
||||
@override
|
||||
Logger get log => manager.log;
|
||||
@override
|
||||
EventBus get events => manager.events;
|
||||
DaemonBus get events => manager.events;
|
||||
@override
|
||||
MessageBus get messages => manager.messages;
|
||||
@override
|
||||
SettingsStore get settings => manager.settings;
|
||||
@override
|
||||
|
||||
Reference in New Issue
Block a user