wire in-process dispatcher — no daemon socket needed

InProcessClient dispatches IPC requests directly to handlers in the
same process, bypassing the unix socket entirely. All subsystem
registries (pane, files, editor, git, pql) are created in the
Flutter app's boot sequence and registered on a DaemonDispatcher.
Events bridge to the kernel EventBus via _BusEventSink. The app
no longer needs `clide --daemon` running.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-23 00:51:33 +02:00
co-authored by Claude Opus 4.6
parent 1fdd35706e
commit 289d064639
2 changed files with 75 additions and 5 deletions
+32
View File
@@ -0,0 +1,32 @@
import 'package:clide/clide.dart';
import 'package:clide/kernel/src/ipc/client.dart';
import 'package:clide/kernel/src/events/bus.dart';
import 'package:clide/kernel/src/log.dart';
import 'package:clide/src/daemon/dispatcher.dart';
class InProcessClient extends DaemonClient {
InProcessClient({
required Logger log,
required EventBus events,
required this.dispatcher,
}) : super(socketPath: '', log: log, events: events);
final DaemonDispatcher dispatcher;
int _nextReqId = 0;
@override
bool get isConnected => true;
@override
Future<void> start() async {}
@override
Future<void> stop() async {}
@override
Future<IpcResponse> request(String cmd, {Map<String, Object?> args = const {}}) {
final id = '${_nextReqId++}';
final req = IpcRequest(id: id, cmd: cmd, args: args);
return dispatcher.dispatch(req);
}
}