@kronos-ts/messaging 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"tracking-event-processor.js","sourceRoot":"","sources":["../src/tracking-event-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracking-event-processor.js","sourceRoot":"","sources":["../src/tracking-event-processor.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,31 @@ export interface GlobalSequenceToken extends TrackingToken {
55
55
  * This is the default token type for in-memory stores and Axon Server.
56
56
  */
57
57
  export declare function globalSequenceToken(sequence: bigint): GlobalSequenceToken;
58
+ export interface GapAwareToken extends TrackingToken {
59
+ readonly kind: "gap-aware";
60
+ /** The `sequence_position` of the last consumed event — the `position()`. */
61
+ readonly sequence: bigint;
62
+ /**
63
+ * An opaque, store-defined commit-order key that, paired with `sequence`,
64
+ * forms a gap-free tailing cursor. For the Postgres engine this is the
65
+ * event's `transaction_id` (xid8): the durable token MUST carry it because
66
+ * gap-free tailing orders by `(transaction_id, sequence_position)` and only
67
+ * `transaction_id` has a commit watermark (`pg_snapshot_xmin`). A position
68
+ * alone cannot resume the stream without permanently skipping events whose
69
+ * `sequence_position` is lower but whose `transaction_id` is higher (the
70
+ * xid/seq inversion that happens when a transaction writes other rows —
71
+ * stamping its xid — before appending its event).
72
+ */
73
+ readonly gapKey: string;
74
+ }
75
+ /**
76
+ * Creates a token for a gap-free tailing engine: a `sequence` position paired
77
+ * with an opaque `gapKey` (the store's commit-order key, e.g. Postgres xid8).
78
+ * `position()` returns the sequence so replay/`covers` semantics are unchanged;
79
+ * the `gapKey` rides along so the engine can resume the `(gapKey, sequence)`
80
+ * cursor exactly on reopen instead of falling back to a lossy position filter.
81
+ */
82
+ export declare function gapAwareToken(sequence: bigint, gapKey: string): GapAwareToken;
58
83
  /**
59
84
  * Sentinel token representing the beginning of the event stream.
60
85
  * A processor starting with FIRST_TOKEN will read from position 0.
@@ -89,11 +114,40 @@ export interface ReplayToken extends TrackingToken {
89
114
  export declare function replayToken(tokenAtReset: TrackingToken, currentToken: TrackingToken, resetContext?: unknown): ReplayToken;
90
115
  export declare function isReplayToken(token: TrackingToken): token is ReplayToken;
91
116
  export declare function isGlobalSequenceToken(token: TrackingToken): token is GlobalSequenceToken;
117
+ export declare function isGapAwareToken(token: TrackingToken): token is GapAwareToken;
118
+ /**
119
+ * Advance a token to the position represented by `next`, preserving replay
120
+ * wrapping. Generalises {@link advanceToken} to any TrackingToken — used when
121
+ * the event source supplies its own cursor token (e.g. a {@link GapAwareToken}
122
+ * carrying a commit-order key) that must be persisted verbatim rather than
123
+ * collapsed to a bare position.
124
+ */
125
+ export declare function advanceTokenTo(token: TrackingToken, next: TrackingToken): TrackingToken;
92
126
  /**
93
127
  * Advance a token to a new position. If the token is a ReplayToken and
94
128
  * the new position covers the reset point, unwraps to a plain token.
95
129
  */
96
130
  export declare function advanceToken(token: TrackingToken, newPosition: bigint): TrackingToken;
131
+ /** Wire shape for a persisted token: a `kind` discriminant + a JSON body. */
132
+ export interface SerializedToken {
133
+ readonly type: string;
134
+ readonly data: string;
135
+ }
136
+ /**
137
+ * Serialize a token for durable storage. The JSON body always carries
138
+ * `position`; when the token (or, for a ReplayToken, its innermost token) is a
139
+ * {@link GapAwareToken}, the `gapKey` is preserved so the cursor resumes
140
+ * exactly on reload. ReplayTokens still flatten to their current position on
141
+ * the wire (replay-in-progress state does not survive a restart, as before),
142
+ * but the gapKey survives so live tailing resumes without skipping events.
143
+ */
144
+ export declare function serializeToken(token: TrackingToken): SerializedToken;
145
+ /**
146
+ * Reconstruct a token from its persisted form. A body carrying a `gapKey`
147
+ * rehydrates as a {@link GapAwareToken}; otherwise a {@link GlobalSequenceToken}.
148
+ * Returns undefined when there is no stored token.
149
+ */
150
+ export declare function deserializeToken(type: string | null | undefined, data: string | null | undefined): TrackingToken | undefined;
97
151
  /**
98
152
  * Check whether the given token represents a replay in progress.
99
153
  * Returns true if the token is a ReplayToken AND the current position
@@ -1 +1 @@
1
- {"version":3,"file":"tracking-token.d.ts","sourceRoot":"","sources":["../src/tracking-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAAA;IAElB;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAA;IAErC;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAAA;IAE/C;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAAA;IAE/C;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAA;CAC9C;AAMD,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAUzE;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,aAAuC,CAAA;AAEjE;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,aAO1B,CAAA;AAMD,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,qEAAqE;IACrE,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAA;IACpC,qGAAqG;IACrG,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAA;IACpC,mEAAmE;IACnE,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAChC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,YAAY,EAAE,aAAa,EAC3B,YAAY,EAAE,aAAa,EAC3B,YAAY,CAAC,EAAE,OAAO,GACrB,WAAW,CA+Bb;AAMD,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,IAAI,WAAW,CAExE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,IAAI,mBAAmB,CAExF;AAMD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAcrF;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAEzD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAK/D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAE1F"}
1
+ {"version":3,"file":"tracking-token.d.ts","sourceRoot":"","sources":["../src/tracking-token.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,25 @@ export function globalSequenceToken(sequence) {
13
13
  samePositionAs: (other) => sequence === other.position(),
14
14
  };
15
15
  }
16
+ /**
17
+ * Creates a token for a gap-free tailing engine: a `sequence` position paired
18
+ * with an opaque `gapKey` (the store's commit-order key, e.g. Postgres xid8).
19
+ * `position()` returns the sequence so replay/`covers` semantics are unchanged;
20
+ * the `gapKey` rides along so the engine can resume the `(gapKey, sequence)`
21
+ * cursor exactly on reopen instead of falling back to a lossy position filter.
22
+ */
23
+ export function gapAwareToken(sequence, gapKey) {
24
+ return {
25
+ kind: "gap-aware",
26
+ sequence,
27
+ gapKey,
28
+ position: () => sequence,
29
+ covers: (other) => sequence >= other.position(),
30
+ lowerBound: (other) => sequence <= other.position() ? gapAwareToken(sequence, gapKey) : globalSequenceToken(other.position()),
31
+ upperBound: (other) => sequence >= other.position() ? gapAwareToken(sequence, gapKey) : globalSequenceToken(other.position()),
32
+ samePositionAs: (other) => sequence === other.position(),
33
+ };
34
+ }
16
35
  /**
17
36
  * Sentinel token representing the beginning of the event stream.
18
37
  * A processor starting with FIRST_TOKEN will read from position 0.
@@ -78,24 +97,68 @@ export function isReplayToken(token) {
78
97
  export function isGlobalSequenceToken(token) {
79
98
  return token.kind === "global-sequence";
80
99
  }
100
+ export function isGapAwareToken(token) {
101
+ return token.kind === "gap-aware";
102
+ }
81
103
  // ---------------------------------------------------------------------------
82
104
  // Token operations
83
105
  // ---------------------------------------------------------------------------
106
+ /**
107
+ * Advance a token to the position represented by `next`, preserving replay
108
+ * wrapping. Generalises {@link advanceToken} to any TrackingToken — used when
109
+ * the event source supplies its own cursor token (e.g. a {@link GapAwareToken}
110
+ * carrying a commit-order key) that must be persisted verbatim rather than
111
+ * collapsed to a bare position.
112
+ */
113
+ export function advanceTokenTo(token, next) {
114
+ if (!isReplayToken(token)) {
115
+ return next;
116
+ }
117
+ // Check if replay is complete
118
+ if (next.covers(token.tokenAtReset)) {
119
+ return next;
120
+ }
121
+ // Still replaying — wrap the advanced token
122
+ return replayToken(token.tokenAtReset, next, token.resetContext);
123
+ }
84
124
  /**
85
125
  * Advance a token to a new position. If the token is a ReplayToken and
86
126
  * the new position covers the reset point, unwraps to a plain token.
87
127
  */
88
128
  export function advanceToken(token, newPosition) {
89
- const advanced = globalSequenceToken(newPosition);
90
- if (!isReplayToken(token)) {
91
- return advanced;
129
+ return advanceTokenTo(token, globalSequenceToken(newPosition));
130
+ }
131
+ /**
132
+ * Serialize a token for durable storage. The JSON body always carries
133
+ * `position`; when the token (or, for a ReplayToken, its innermost token) is a
134
+ * {@link GapAwareToken}, the `gapKey` is preserved so the cursor resumes
135
+ * exactly on reload. ReplayTokens still flatten to their current position on
136
+ * the wire (replay-in-progress state does not survive a restart, as before),
137
+ * but the gapKey survives so live tailing resumes without skipping events.
138
+ */
139
+ export function serializeToken(token) {
140
+ const inner = unwrapToken(token);
141
+ const payload = {
142
+ position: token.position().toString(),
143
+ };
144
+ if (isGapAwareToken(inner)) {
145
+ payload.gapKey = inner.gapKey;
92
146
  }
93
- // Check if replay is complete
94
- if (advanced.covers(token.tokenAtReset)) {
95
- return advanced;
147
+ return { type: token.kind, data: JSON.stringify(payload) };
148
+ }
149
+ /**
150
+ * Reconstruct a token from its persisted form. A body carrying a `gapKey`
151
+ * rehydrates as a {@link GapAwareToken}; otherwise a {@link GlobalSequenceToken}.
152
+ * Returns undefined when there is no stored token.
153
+ */
154
+ export function deserializeToken(type, data) {
155
+ if (!data)
156
+ return undefined;
157
+ const parsed = JSON.parse(data);
158
+ if (parsed.gapKey !== undefined) {
159
+ return gapAwareToken(BigInt(parsed.position), parsed.gapKey);
96
160
  }
97
- // Still replaying — wrap the advanced position
98
- return replayToken(token.tokenAtReset, advanced, token.resetContext);
161
+ return globalSequenceToken(BigInt(parsed.position));
99
162
  }
100
163
  /**
101
164
  * Check whether the given token represents a replay in progress.
@@ -1 +1 @@
1
- {"version":3,"file":"tracking-token.js","sourceRoot":"","sources":["../src/tracking-token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracking-token.js","sourceRoot":"","sources":["../src/tracking-token.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kronos-ts/messaging",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "Messaging primitives for Kronos — commands, events, handlers, and event processors.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -61,7 +61,7 @@
61
61
  },
62
62
  "dependencies": {
63
63
  "@kronos-ts/common": "0.1.1",
64
- "@kronos-ts/eventsourcing": "0.2.3",
64
+ "@kronos-ts/eventsourcing": "0.3.1",
65
65
  "zod": "^4.3.6"
66
66
  },
67
67
  "devDependencies": {
@@ -1,9 +1,41 @@
1
1
  /**
2
- * Common interface for all event processors.
2
+ * Common control + status surface for all event processors — the kronos analog
3
+ * of AF5's `EventProcessor` interface. This is the contract a host (or an admin
4
+ * UI) drives: enumerate processors, read status, start/stop, reset.
5
+ *
6
+ * AF5 splits a base `EventProcessor` (run/error/lifecycle) from
7
+ * `StreamingEventProcessor` (status, reset, segments). kronos mirrors that: the
8
+ * base is here; the streaming-specific operations (`status`, `resetTokens`,
9
+ * `reprocessDeadLetters`) live on {@link TrackingEventProcessor}.
10
+ */
11
+
12
+ /**
13
+ * A point-in-time snapshot of a processor's progress — the kronos analog of
14
+ * AF5's `EventTrackerStatus`. kronos processors are single-segment, so this is
15
+ * one snapshot per processor rather than a per-segment map.
16
+ */
17
+ export interface EventProcessorStatus {
18
+ /** Whether the processor's polling/streaming loop is active. */
19
+ readonly running: boolean
20
+ /** The most recent unrecovered processing error, if any. Cleared on the next
21
+ * successful batch. A non-undefined value is the kronos `isErrorState`. */
22
+ readonly error?: Error
23
+ /** Current committed position in the event stream. */
24
+ readonly position: bigint
25
+ /** Whether the processor has consumed all currently-available events. */
26
+ readonly caughtUp: boolean
27
+ /** Whether the processor is currently replaying (reset) the stream. */
28
+ readonly replaying: boolean
29
+ }
30
+
31
+ /**
32
+ * Common interface for all event processors. Both tracking and subscribing
33
+ * processors satisfy it, so a host can enumerate and operate them uniformly.
3
34
  */
4
35
  export interface EventProcessor {
5
36
  readonly name: string
6
37
  readonly running: boolean
7
- start(): Promise<void>
38
+ /** Subscribing processors start synchronously; streaming ones return a promise. */
39
+ start(): Promise<void> | void
8
40
  stop(): void
9
41
  }
@@ -8,6 +8,16 @@ import type { TrackingToken } from "./tracking-token.js"
8
8
  export interface SequencedEvent {
9
9
  readonly sequence: bigint
10
10
  readonly event: EventMessage
11
+ /**
12
+ * The cursor token positioned immediately AFTER this event — i.e. resuming a
13
+ * stream from this token reads events strictly following this one. Supplied
14
+ * by gap-free engines (e.g. Postgres) so the processor persists the engine's
15
+ * own `(commit-order-key, sequence)` cursor verbatim instead of synthesising
16
+ * a position-only token, which would lose the commit-order key and skip
17
+ * events on reopen. Engines with a dense global sequence (in-memory, Axon
18
+ * Server) omit it; the processor then falls back to a position+1 token.
19
+ */
20
+ readonly token?: TrackingToken
11
21
  }
12
22
 
13
23
  /**
@@ -17,6 +27,13 @@ export interface SequencedEvent {
17
27
  export interface StreamingCondition {
18
28
  /** Position to start streaming from. */
19
29
  readonly position: bigint
30
+ /**
31
+ * The resume token. When it carries an engine-specific cursor (e.g. a
32
+ * {@link GapAwareToken} with a commit-order key), the engine resumes exactly
33
+ * from that cursor; otherwise it falls back to {@link position}. Optional so
34
+ * engines that only understand a position can ignore it.
35
+ */
36
+ readonly token?: TrackingToken
20
37
  /** Optional criteria to filter events. When omitted, all events are delivered. */
21
38
  readonly criteria?: EventCriteria
22
39
  }
package/src/index.ts CHANGED
@@ -187,8 +187,8 @@ export {
187
187
  createEventGateway,
188
188
  } from "./event-gateway.js"
189
189
 
190
- // Event processor common interface
191
- export { type EventProcessor } from "./event-processor.js"
190
+ // Event processor common control + status surface (AF5 EventProcessor analog)
191
+ export { type EventProcessor, type EventProcessorStatus } from "./event-processor.js"
192
192
 
193
193
  // Event source (for processors)
194
194
  export {
@@ -206,7 +206,6 @@ export {
206
206
  type TrackingEventProcessor,
207
207
  type TrackingEventProcessorOptions,
208
208
  type EventProcessingErrorHandler,
209
- loggingErrorHandler,
210
209
  propagatingErrorHandler,
211
210
  createTrackingEventProcessor,
212
211
  } from "./tracking-event-processor.js"
@@ -236,14 +235,21 @@ export {
236
235
  export {
237
236
  type TrackingToken,
238
237
  type GlobalSequenceToken,
238
+ type GapAwareToken,
239
239
  type ReplayToken,
240
+ type SerializedToken,
240
241
  globalSequenceToken,
242
+ gapAwareToken,
241
243
  FIRST_TOKEN,
242
244
  LATEST_TOKEN,
243
245
  replayToken,
244
246
  isReplayToken,
245
247
  isGlobalSequenceToken,
248
+ isGapAwareToken,
246
249
  advanceToken,
250
+ advanceTokenTo,
251
+ serializeToken,
252
+ deserializeToken,
247
253
  isReplaying,
248
254
  unwrapToken,
249
255
  wasProcessedBeforeReset,
@@ -308,7 +314,6 @@ export {
308
314
  export {
309
315
  type StreamingEventProcessor,
310
316
  type StreamingEventProcessorOptions,
311
- type EventProcessorStatus,
312
317
  createStreamingEventProcessor,
313
318
  } from "./streaming-event-processor.js"
314
319
 
@@ -14,7 +14,7 @@ import {
14
14
  createDeadLetterReprocessor,
15
15
  } from "./dead-letter-reprocessor.js"
16
16
  import type { EventProcessingErrorHandler } from "./tracking-event-processor.js"
17
- import { loggingErrorHandler } from "./tracking-event-processor.js"
17
+ import { propagatingErrorHandler } from "./tracking-event-processor.js"
18
18
  import type { HandlerEnhancerDefinition } from "./handler-enhancer.js"
19
19
  import type { TrackingToken } from "./tracking-token.js"
20
20
  import {
@@ -23,6 +23,7 @@ import {
23
23
  isReplayToken,
24
24
  isReplaying,
25
25
  advanceToken,
26
+ advanceTokenTo,
26
27
  } from "./tracking-token.js"
27
28
  import { REPLAY_STATE_KEY } from "./replay-token.js"
28
29
  import { applyCorrelationData, type CorrelationDataProvider } from "./correlation-data.js"
@@ -146,7 +147,7 @@ export function createStreamingEventProcessor(
146
147
  dlqRetryIntervalMs,
147
148
  batchSize = 1,
148
149
  errorBackoffMs = 1000,
149
- errorHandler = loggingErrorHandler(name),
150
+ errorHandler = propagatingErrorHandler(),
150
151
  handlerEnhancer,
151
152
  onReset,
152
153
  } = options
@@ -216,7 +217,7 @@ export function createStreamingEventProcessor(
216
217
  }
217
218
 
218
219
  function openStream() {
219
- stream = eventSource.open({ position: token.position() })
220
+ stream = eventSource.open({ position: token.position(), token })
220
221
  stream.setCallback(() => {
221
222
  if (isRunning && !processing) {
222
223
  scheduleImmediate()
@@ -312,7 +313,12 @@ export function createStreamingEventProcessor(
312
313
 
313
314
  await deliverEvent(sequencedEvent)
314
315
 
315
- batchEndToken = advanceToken(batchEndToken, sequencedEvent.sequence + 1n)
316
+ // Prefer the engine's own cursor token (carries the commit-order key for
317
+ // gap-free resume); fall back to a position+1 token for dense-sequence
318
+ // engines that don't supply one.
319
+ batchEndToken = sequencedEvent.token
320
+ ? advanceTokenTo(batchEndToken, sequencedEvent.token)
321
+ : advanceToken(batchEndToken, sequencedEvent.sequence + 1n)
316
322
  }
317
323
 
318
324
  if (tokenStore) {
@@ -5,7 +5,7 @@ import type { EventHandlerDefinition } from "./event-handler.js"
5
5
  import type { UoWRunner } from "./unit-of-work.js"
6
6
  import { runInNewUoW } from "./unit-of-work.js"
7
7
  import type { EventProcessingErrorHandler } from "./tracking-event-processor.js"
8
- import { loggingErrorHandler } from "./tracking-event-processor.js"
8
+ import { propagatingErrorHandler } from "./tracking-event-processor.js"
9
9
  import type { SubscribableEventSource } from "./event-bus.js"
10
10
  import type { CommandBus } from "./command-bus.js"
11
11
  import type { QueryBus } from "./query-bus.js"
@@ -98,7 +98,7 @@ export function createSubscribingEventProcessor(
98
98
  correlationDataProviders,
99
99
  onEventDelivery,
100
100
  unitOfWorkRunner = runInNewUoW,
101
- errorHandler = loggingErrorHandler(name),
101
+ errorHandler = propagatingErrorHandler(),
102
102
  handlerEnhancer,
103
103
  } = options
104
104
 
@@ -1,4 +1,5 @@
1
1
  import { emptyMetadata, qualifiedNameToString } from "@kronos-ts/common"
2
+ import type { EventProcessor, EventProcessorStatus } from "./event-processor.js"
2
3
  import type { EventHandlerRegistration } from "./handler.js"
3
4
  import type { EventHandlerDefinition } from "./event-handler.js"
4
5
  import type { StreamableEventSource, MessageStream, SequencedEvent } from "./event-source.js"
@@ -20,6 +21,7 @@ import {
20
21
  isReplayToken,
21
22
  isReplaying,
22
23
  advanceToken,
24
+ advanceTokenTo,
23
25
  } from "./tracking-token.js"
24
26
  import { REPLAY_STATE_KEY } from "./replay-token.js"
25
27
  import { applyCorrelationData, type CorrelationDataProvider } from "./correlation-data.js"
@@ -43,7 +45,7 @@ import { QUERY_BUS_KEY } from "./emit-update.js"
43
45
  * Supports replay via {@link resetTokens} — the processor can be stopped,
44
46
  * reset to a starting position, and restarted.
45
47
  */
46
- export interface TrackingEventProcessor {
48
+ export interface TrackingEventProcessor extends EventProcessor {
47
49
  readonly name: string
48
50
  readonly running: boolean
49
51
  /** Current effective position in the event stream. */
@@ -52,6 +54,11 @@ export interface TrackingEventProcessor {
52
54
  readonly replaying: boolean
53
55
  start(): Promise<void>
54
56
  stop(): void
57
+ /**
58
+ * Point-in-time progress snapshot (running / error / position / caughtUp /
59
+ * replaying) — the surface an admin UI reads to show processor health.
60
+ */
61
+ status(): EventProcessorStatus
55
62
  /**
56
63
  * Reset the processor to replay events from a starting position.
57
64
  * The processor must be stopped before calling this.
@@ -123,21 +130,13 @@ export interface EventProcessingErrorHandler {
123
130
  }
124
131
 
125
132
  /**
126
- * Logs errors and continues processing. Default behavior.
127
- */
128
- export function loggingErrorHandler(processorName: string): EventProcessingErrorHandler {
129
- return {
130
- handleError(error, eventName, position) {
131
- console.error(
132
- `Event processor "${processorName}": handler failed for "${eventName}" at position ${position}:`,
133
- error,
134
- )
135
- },
136
- }
137
- }
138
-
139
- /**
140
- * Rethrows errors, aborting the current batch and triggering rollback.
133
+ * Rethrows errors, aborting the current batch and triggering rollback the
134
+ * default. A failed handler does NOT advance the token: the batch is rolled
135
+ * back and redelivered (with backoff), so a read-model never silently skips a
136
+ * bad event. Mirrors AF5, whose only live processor error handler is
137
+ * `PropagatingErrorHandler` (the swallow-and-continue handler was retired to
138
+ * legacy). When an automation must move past a poison pill instead of
139
+ * retrying, attach a dead-letter queue.
141
140
  */
142
141
  export function propagatingErrorHandler(): EventProcessingErrorHandler {
143
142
  return {
@@ -170,7 +169,7 @@ export function createTrackingEventProcessor(
170
169
  dlqRetryIntervalMs,
171
170
  pollingIntervalMs = 500,
172
171
  batchSize = 1,
173
- errorHandler = loggingErrorHandler(name),
172
+ errorHandler = propagatingErrorHandler(),
174
173
  handlerEnhancer,
175
174
  onReset,
176
175
  } = options
@@ -226,6 +225,9 @@ export function createTrackingEventProcessor(
226
225
  let stream: MessageStream<SequencedEvent> | null = null
227
226
  let pollTimer: ReturnType<typeof setTimeout> | null = null
228
227
  let processing = false
228
+ // Status fields exposed via status() for observability / admin control.
229
+ let caughtUp = false
230
+ let lastError: Error | undefined
229
231
 
230
232
  async function initialize() {
231
233
  if (tokenStore) {
@@ -238,7 +240,7 @@ export function createTrackingEventProcessor(
238
240
  }
239
241
 
240
242
  function openStream() {
241
- stream = eventSource.open({ position: token.position() })
243
+ stream = eventSource.open({ position: token.position(), token })
242
244
  stream.setCallback(() => {
243
245
  if (isRunning && !processing) {
244
246
  scheduleImmediate()
@@ -277,14 +279,22 @@ export function createTrackingEventProcessor(
277
279
  }
278
280
 
279
281
  if (batch.length > 0) {
282
+ caughtUp = false
280
283
  await processBatch(batch)
284
+ // A clean batch clears any prior error — the processor has recovered.
285
+ lastError = undefined
281
286
  if (isRunning) {
282
287
  if (stream!.hasNextAvailable()) {
283
288
  scheduleImmediate()
289
+ } else {
290
+ // Drained everything currently available — caught up until the
291
+ // stream callback wakes us with new events.
292
+ caughtUp = true
284
293
  }
285
- // else: stream callback will wake us when events arrive
286
294
  }
287
295
  } else {
296
+ // No events available — the processor is caught up with the stream.
297
+ caughtUp = true
288
298
  // If replay is done and no more events, unwrap
289
299
  if (isReplayToken(token)) {
290
300
  token = globalSequenceToken(token.position())
@@ -298,6 +308,7 @@ export function createTrackingEventProcessor(
298
308
  }
299
309
  }
300
310
  } catch (err) {
311
+ lastError = err instanceof Error ? err : new Error(String(err))
301
312
  console.error(`Event processor "${name}" error during poll:`, err)
302
313
  // Realign the live stream to the committed checkpoint. During batch
303
314
  // accumulation the stream cursor (and any read-ahead buffer) advanced
@@ -324,7 +335,12 @@ export function createTrackingEventProcessor(
324
335
 
325
336
  await deliverEvent(sequencedEvent)
326
337
 
327
- batchEndToken = advanceToken(batchEndToken, sequencedEvent.sequence + 1n)
338
+ // Prefer the engine's own cursor token (carries the commit-order key for
339
+ // gap-free resume); fall back to a position+1 token for dense-sequence
340
+ // engines that don't supply one.
341
+ batchEndToken = sequencedEvent.token
342
+ ? advanceTokenTo(batchEndToken, sequencedEvent.token)
343
+ : advanceToken(batchEndToken, sequencedEvent.sequence + 1n)
328
344
  }
329
345
 
330
346
  if (tokenStore) {
@@ -412,6 +428,16 @@ export function createTrackingEventProcessor(
412
428
  get position() { return token.position() },
413
429
  get replaying() { return isReplaying(token) },
414
430
 
431
+ status(): EventProcessorStatus {
432
+ return {
433
+ running: isRunning,
434
+ error: lastError,
435
+ position: token.position(),
436
+ caughtUp,
437
+ replaying: isReplaying(token),
438
+ }
439
+ },
440
+
415
441
  async start() {
416
442
  if (isRunning) return
417
443
  await initialize()