add cursor-based pull events: clide events --since <cursor> (T-223)
The one-shot request/response complement to the never-returning `tail --events` stream — what an agent poll loop wants. The IPC server now keeps a single global, arrival-ordered event log keyed by a monotonic cursor (alongside the per-subsystem replay ring), bounded by eventLogDepth with drop-oldest back-pressure (D-85: producer never blocks). `clide events [--since <cursor>] [--filter X]` returns events after the cursor, a high-water `cursor` to poll from next, and `gap: true` (+ oldestCursor) when the requested cursor predates the retained window so a caller detects loss instead of silently missing dropped events. Repeated polls neither drop nor duplicate. No on-disk persistence. `events` is handled in the IPC server like `tail` (not the dispatcher); added to the argv umbrella set. bindingWhen/CommandContribution untouched. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -24,8 +24,10 @@ import 'package:clide/src/ipc/envelope.dart';
|
||||
import 'package:clide/src/ipc/schema_v1.dart';
|
||||
|
||||
/// Umbrella commands — single-token names with no subsystem.verb
|
||||
/// split. Match the IDs the dispatcher exposes directly.
|
||||
const Set<String> _umbrellaCommands = {'status', 'tail', 'version', 'ping', 'capabilities'};
|
||||
/// split. Match the IDs the dispatcher exposes directly. `tail` and
|
||||
/// `events` are handled by the IPC server itself (streaming / cursor-pull
|
||||
/// event reads, T-129 / T-223) rather than the dispatcher.
|
||||
const Set<String> _umbrellaCommands = {'status', 'tail', 'events', 'version', 'ping', 'capabilities'};
|
||||
|
||||
/// Sealed result of translating argv. Caller (the IPC server, or the
|
||||
/// C client wrapper in T-126) handles either branch.
|
||||
|
||||
Reference in New Issue
Block a user