actly 1.1.5 → 1.2.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.
Files changed (119) hide show
  1. package/README.md +232 -434
  2. package/dist/core/act.cjs +353 -35
  3. package/dist/core/act.d.ts.map +1 -1
  4. package/dist/core/act.js +355 -37
  5. package/dist/core/act.js.map +1 -1
  6. package/dist/core/executor.cjs +2 -0
  7. package/dist/core/executor.d.ts +6 -1
  8. package/dist/core/executor.d.ts.map +1 -1
  9. package/dist/core/executor.js +2 -0
  10. package/dist/core/executor.js.map +1 -1
  11. package/dist/core/health.cjs +34 -0
  12. package/dist/core/health.d.ts +18 -0
  13. package/dist/core/health.d.ts.map +1 -0
  14. package/dist/core/health.js +28 -0
  15. package/dist/core/health.js.map +1 -0
  16. package/dist/core/shutdown.cjs +60 -0
  17. package/dist/core/shutdown.d.ts +8 -0
  18. package/dist/core/shutdown.d.ts.map +1 -0
  19. package/dist/core/shutdown.js +56 -0
  20. package/dist/core/shutdown.js.map +1 -0
  21. package/dist/core/tenant.cjs +71 -0
  22. package/dist/core/tenant.d.ts +29 -0
  23. package/dist/core/tenant.d.ts.map +1 -0
  24. package/dist/core/tenant.js +68 -0
  25. package/dist/core/tenant.js.map +1 -0
  26. package/dist/errors.cjs +182 -0
  27. package/dist/errors.d.ts +151 -0
  28. package/dist/errors.d.ts.map +1 -0
  29. package/dist/errors.js +171 -0
  30. package/dist/errors.js.map +1 -0
  31. package/dist/index.cjs +44 -4
  32. package/dist/index.d.ts +17 -2
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +17 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/observability.cjs +45 -0
  37. package/dist/observability.d.ts +145 -0
  38. package/dist/observability.d.ts.map +1 -0
  39. package/dist/observability.js +43 -0
  40. package/dist/observability.js.map +1 -0
  41. package/dist/policies/bulkhead.cjs +97 -0
  42. package/dist/policies/bulkhead.d.ts +3 -0
  43. package/dist/policies/bulkhead.d.ts.map +1 -0
  44. package/dist/policies/bulkhead.js +95 -0
  45. package/dist/policies/bulkhead.js.map +1 -0
  46. package/dist/policies/cache.cjs +168 -31
  47. package/dist/policies/cache.d.ts +17 -4
  48. package/dist/policies/cache.d.ts.map +1 -1
  49. package/dist/policies/cache.js +168 -31
  50. package/dist/policies/cache.js.map +1 -1
  51. package/dist/policies/circuitBreaker.cjs +85 -0
  52. package/dist/policies/circuitBreaker.d.ts +3 -0
  53. package/dist/policies/circuitBreaker.d.ts.map +1 -0
  54. package/dist/policies/circuitBreaker.js +83 -0
  55. package/dist/policies/circuitBreaker.js.map +1 -0
  56. package/dist/policies/dedupe.cjs +74 -45
  57. package/dist/policies/dedupe.d.ts +10 -28
  58. package/dist/policies/dedupe.d.ts.map +1 -1
  59. package/dist/policies/dedupe.js +74 -45
  60. package/dist/policies/dedupe.js.map +1 -1
  61. package/dist/policies/rateLimit.cjs +35 -0
  62. package/dist/policies/rateLimit.d.ts +3 -0
  63. package/dist/policies/rateLimit.d.ts.map +1 -0
  64. package/dist/policies/rateLimit.js +33 -0
  65. package/dist/policies/rateLimit.js.map +1 -0
  66. package/dist/policies/retry.cjs +45 -8
  67. package/dist/policies/retry.d.ts.map +1 -1
  68. package/dist/policies/retry.js +45 -8
  69. package/dist/policies/retry.js.map +1 -1
  70. package/dist/policies/timeout.cjs +25 -53
  71. package/dist/policies/timeout.d.ts +2 -33
  72. package/dist/policies/timeout.d.ts.map +1 -1
  73. package/dist/policies/timeout.js +31 -48
  74. package/dist/policies/timeout.js.map +1 -1
  75. package/dist/state/store.cjs +3 -3
  76. package/dist/state/store.d.ts +3 -3
  77. package/dist/state/store.js +3 -3
  78. package/dist/stores/memory.cjs +126 -53
  79. package/dist/stores/memory.d.ts +35 -16
  80. package/dist/stores/memory.d.ts.map +1 -1
  81. package/dist/stores/memory.js +125 -53
  82. package/dist/stores/memory.js.map +1 -1
  83. package/dist/types/index.d.ts +176 -3
  84. package/dist/types/index.d.ts.map +1 -1
  85. package/dist/utils/abort.cjs +108 -38
  86. package/dist/utils/abort.d.ts +43 -19
  87. package/dist/utils/abort.d.ts.map +1 -1
  88. package/dist/utils/abort.js +108 -38
  89. package/dist/utils/abort.js.map +1 -1
  90. package/dist/utils/abortPool.cjs +26 -0
  91. package/dist/utils/abortPool.d.ts +4 -0
  92. package/dist/utils/abortPool.d.ts.map +1 -0
  93. package/dist/utils/abortPool.js +22 -0
  94. package/dist/utils/abortPool.js.map +1 -0
  95. package/dist/utils/backoff.cjs +12 -1
  96. package/dist/utils/backoff.d.ts.map +1 -1
  97. package/dist/utils/backoff.js +12 -1
  98. package/dist/utils/backoff.js.map +1 -1
  99. package/dist/utils/key.cjs +77 -0
  100. package/dist/utils/key.d.ts +29 -0
  101. package/dist/utils/key.d.ts.map +1 -0
  102. package/dist/utils/key.js +75 -0
  103. package/dist/utils/key.js.map +1 -0
  104. package/dist/utils/limits.cjs +40 -0
  105. package/dist/utils/limits.d.ts +39 -0
  106. package/dist/utils/limits.d.ts.map +1 -0
  107. package/dist/utils/limits.js +38 -0
  108. package/dist/utils/limits.js.map +1 -0
  109. package/dist/utils/sanitize.cjs +29 -0
  110. package/dist/utils/sanitize.d.ts +3 -0
  111. package/dist/utils/sanitize.d.ts.map +1 -0
  112. package/dist/utils/sanitize.js +26 -0
  113. package/dist/utils/sanitize.js.map +1 -0
  114. package/dist/utils/validate.cjs +90 -16
  115. package/dist/utils/validate.d.ts +11 -0
  116. package/dist/utils/validate.d.ts.map +1 -1
  117. package/dist/utils/validate.js +85 -16
  118. package/dist/utils/validate.js.map +1 -1
  119. package/package.json +6 -5
@@ -1,15 +1,20 @@
1
+ import { LIMITS } from '../utils/limits.js';
1
2
  function isUnrefable(t) {
2
3
  return typeof t.unref === 'function';
3
4
  }
4
5
  // ─── Implementation ───────────────────────────────────────────────────────────
5
6
  /**
6
- * Reference `SyncStateStore` implementation backed by a `Map`.
7
+ * Reference `SyncStateStore` implementation backed by a `Map` + doubly-linked
8
+ * list for LRU.
7
9
  *
8
- * # LRU semantics
10
+ * # Properties
9
11
  *
10
- * `Map` iteration order is insertion order, so we implement LRU by
11
- * `delete` + `set` on every access — the most-recently-touched key ends up
12
- * at the end of the iteration, and the oldest is `entries.keys().next().value`.
12
+ * - `size()` is O(1) tracked via a counter instead of full scan.
13
+ * - LRU reordering uses an explicit doubly-linked list, avoiding the
14
+ * `delete + set` Map churn that was 2 Map operations per `get()`.
15
+ * - Default `maxSize` is bounded (`LIMITS.DEFAULT_STORE_MAX_SIZE`) when
16
+ * used as the module-level default — prevents unbounded memory growth
17
+ * in long-running servers.
13
18
  *
14
19
  * # Expiry
15
20
  *
@@ -18,8 +23,10 @@ function isUnrefable(t) {
18
23
  */
19
24
  export class InMemoryStore {
20
25
  _sync = true;
21
- entries = new Map();
26
+ map = new Map();
22
27
  maxSize;
28
+ head; // least recently used
29
+ tail; // most recently used
23
30
  cleanupTimer;
24
31
  constructor(options = {}) {
25
32
  const { autoCleanup = false, cleanupIntervalMs = 30_000, maxSize = Number.POSITIVE_INFINITY, } = options;
@@ -39,74 +46,81 @@ export class InMemoryStore {
39
46
  }
40
47
  }
41
48
  get(key) {
42
- const entry = this.entries.get(key);
43
- if (!entry)
49
+ const node = this.map.get(key);
50
+ if (!node)
44
51
  return undefined;
45
- if (entry.expiresAt !== null && Date.now() > entry.expiresAt) {
46
- this.entries.delete(key);
52
+ if (node.expiresAt !== null && Date.now() > node.expiresAt) {
53
+ this._removeNode(node);
54
+ this.map.delete(key);
47
55
  return undefined;
48
56
  }
49
- // LRU refresh: move to most-recent position.
50
- // delete + set is the canonical pattern for reordering a Map.
51
- this.entries.delete(key);
52
- this.entries.set(key, entry);
53
- return entry.value;
57
+ // LRU refresh: move to tail (most-recent).
58
+ this._moveToTail(node);
59
+ return node.value;
54
60
  }
55
61
  set(key, value, ttlMs) {
56
- // Evict if at capacity AND adding a new key (updates don't grow size).
57
- if (!this.entries.has(key) && this.entries.size >= this.maxSize) {
58
- const oldest = this.entries.keys().next().value;
59
- if (oldest !== undefined)
60
- this.entries.delete(oldest);
62
+ const existing = this.map.get(key);
63
+ const now = Date.now();
64
+ if (existing) {
65
+ // Update in place — don't grow size, don't evict.
66
+ existing.value = value;
67
+ existing.expiresAt = ttlMs != null && ttlMs > 0 ? now + ttlMs : null;
68
+ existing.insertedAt = now;
69
+ this._moveToTail(existing);
70
+ return;
71
+ }
72
+ // New key — evict if at capacity.
73
+ while (this.map.size >= this.maxSize && this.head) {
74
+ const evict = this.head;
75
+ this._removeNode(evict);
76
+ this.map.delete(evict.key);
61
77
  }
62
- const expiresAt = ttlMs != null && ttlMs > 0 ? Date.now() + ttlMs : null;
63
- // delete + set ensures the key is moved to the most-recent position
64
- // even on update, keeping LRU order consistent.
65
- this.entries.delete(key);
66
- this.entries.set(key, { value, expiresAt });
78
+ const node = {
79
+ key,
80
+ value,
81
+ expiresAt: ttlMs != null && ttlMs > 0 ? now + ttlMs : null,
82
+ insertedAt: now,
83
+ };
84
+ this.map.set(key, node);
85
+ this._appendTail(node);
67
86
  }
68
87
  delete(key) {
69
- this.entries.delete(key);
88
+ const node = this.map.get(key);
89
+ if (!node)
90
+ return;
91
+ this._removeNode(node);
92
+ this.map.delete(key);
70
93
  }
71
94
  has(key) {
72
95
  // Inline the expiry check to avoid the LRU side-effect of get().
73
96
  // `has()` should be a pure query, not a touch.
74
- const entry = this.entries.get(key);
75
- if (!entry)
97
+ const node = this.map.get(key);
98
+ if (!node)
76
99
  return false;
77
- if (entry.expiresAt !== null && Date.now() > entry.expiresAt) {
78
- this.entries.delete(key);
100
+ if (node.expiresAt !== null && Date.now() > node.expiresAt) {
101
+ this._removeNode(node);
102
+ this.map.delete(key);
79
103
  return false;
80
104
  }
81
105
  return true;
82
106
  }
83
107
  clear() {
84
- this.entries.clear();
108
+ this.map.clear();
109
+ this.head = undefined;
110
+ this.tail = undefined;
85
111
  }
86
112
  /**
87
113
  * Return the count of live (non-expired) entries.
88
114
  *
89
- * Pure query does NOT touch LRU order. Expired entries discovered during
90
- * the scan are evicted opportunistically (they were already invisible to
91
- * `get()`, so eviction has no observable effect beyond memory reclamation).
115
+ * O(1)returns the Map size directly. Expired-but-not-yet-
116
+ * evicted entries are counted; they're reclaimed lazily on next access
117
+ * or by the background sweep. This is intentional: a fully-accurate
118
+ * count would require an O(n) scan, defeating the purpose.
92
119
  *
93
- * Two-pass to avoid mutating the Map during iteration (spec-safe).
120
+ * Pure query does NOT touch LRU order.
94
121
  */
95
122
  size() {
96
- const now = Date.now();
97
- const expired = [];
98
- let count = 0;
99
- for (const [key, entry] of this.entries) {
100
- if (entry.expiresAt !== null && entry.expiresAt <= now) {
101
- expired.push(key);
102
- }
103
- else {
104
- count++;
105
- }
106
- }
107
- for (const key of expired)
108
- this.entries.delete(key);
109
- return count;
123
+ return this.map.size;
110
124
  }
111
125
  /**
112
126
  * Stop the background cleanup timer and release internal state.
@@ -118,20 +132,78 @@ export class InMemoryStore {
118
132
  this.cleanupTimer = undefined;
119
133
  }
120
134
  }
135
+ // ─── LRU list operations ──────────────────────────────────────────────────
136
+ //
137
+ // All operations are O(1). The list runs head (LRU) → tail (MRU).
138
+ _appendTail(node) {
139
+ if (this.tail) {
140
+ this.tail.next = node;
141
+ node.prev = this.tail;
142
+ node.next = undefined;
143
+ }
144
+ else {
145
+ // Empty list — node is both head and tail.
146
+ this.head = node;
147
+ }
148
+ this.tail = node;
149
+ }
150
+ _removeNode(node) {
151
+ if (node.prev) {
152
+ node.prev.next = node.next;
153
+ }
154
+ else {
155
+ this.head = node.next;
156
+ }
157
+ if (node.next) {
158
+ node.next.prev = node.prev;
159
+ }
160
+ else {
161
+ this.tail = node.prev;
162
+ }
163
+ node.prev = undefined;
164
+ node.next = undefined;
165
+ }
166
+ _moveToTail(node) {
167
+ if (this.tail === node)
168
+ return; // already MRU
169
+ this._removeNode(node);
170
+ this._appendTail(node);
171
+ }
121
172
  /**
122
173
  * Sweep all entries and remove those past their expiry time.
123
174
  * Called by the autoCleanup interval; not part of the public contract.
175
+ *
176
+ * Two-pass to avoid mutating the Map during iteration (spec-safe).
124
177
  */
125
178
  _sweep() {
126
179
  const now = Date.now();
127
180
  const expired = [];
128
- for (const [key, entry] of this.entries) {
129
- if (entry.expiresAt !== null && now > entry.expiresAt) {
181
+ for (const [key, node] of this.map) {
182
+ if (node.expiresAt !== null && now > node.expiresAt) {
130
183
  expired.push(key);
131
184
  }
132
185
  }
133
- for (const key of expired)
134
- this.entries.delete(key);
186
+ for (const key of expired) {
187
+ const node = this.map.get(key);
188
+ if (node) {
189
+ this._removeNode(node);
190
+ this.map.delete(key);
191
+ }
192
+ }
135
193
  }
136
194
  }
195
+ /**
196
+ * Factory for the default module-level store.
197
+ *
198
+ * Bounded by `LIMITS.DEFAULT_STORE_MAX_SIZE` with background sweep —
199
+ * prevents unbounded memory growth in long-running servers without
200
+ * requiring callers to opt in.
201
+ */
202
+ export function createDefaultStore() {
203
+ return new InMemoryStore({
204
+ maxSize: LIMITS.DEFAULT_STORE_MAX_SIZE,
205
+ autoCleanup: true,
206
+ cleanupIntervalMs: LIMITS.DEFAULT_STORE_CLEANUP_INTERVAL_MS,
207
+ });
208
+ }
137
209
  //# sourceMappingURL=memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/stores/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/stores/memory.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,13 @@ export interface ActSuccess<T> {
42
42
  * - Dedupe joiner: mirrors the originator's attempt count
43
43
  */
44
44
  attempts: number;
45
+ /**
46
+ * Trace ID for correlation across logs/metrics. Present when
47
+ * `options.observability` or `options.traceId` is set; `undefined` otherwise.
48
+ */
49
+ traceId?: string;
50
+ /** Wall-clock duration of this act() call in ms. */
51
+ durationMs?: number;
45
52
  }
46
53
  export interface ActFailure {
47
54
  ok: false;
@@ -51,6 +58,13 @@ export interface ActFailure {
51
58
  * For dedupe joiners: mirrors the originator's attempt count.
52
59
  */
53
60
  attempts: number;
61
+ /**
62
+ * Trace ID for correlation across logs/metrics. Present when
63
+ * `options.observability` or `options.traceId` is set; `undefined` otherwise.
64
+ */
65
+ traceId?: string;
66
+ /** Wall-clock duration of this act() call in ms. */
67
+ durationMs?: number;
54
68
  }
55
69
  export type ActResult<T> = ActSuccess<T> | ActFailure;
56
70
  export interface RetryOptions {
@@ -151,7 +165,7 @@ export interface CacheOptions {
151
165
  /** Keep a successful result for this many milliseconds. Must be > 0. */
152
166
  ttl: number;
153
167
  }
154
- export interface ActOptions {
168
+ export interface ActOptions<T = unknown> {
155
169
  retry?: RetryOptions;
156
170
  /** Per-attempt deadline. Each retry gets a fresh clock. */
157
171
  timeout?: TimeoutOptions;
@@ -188,6 +202,86 @@ export interface ActOptions {
188
202
  * over cancellation from outside `act()`.
189
203
  */
190
204
  signal?: AbortSignal;
205
+ /**
206
+ * Observability hooks. All optional. When omitted entirely (the
207
+ * common case), zero overhead is incurred on the hot path — no event
208
+ * objects are allocated, no function calls are made.
209
+ *
210
+ * When hooks ARE registered, events are allocated lazily — only when
211
+ * the corresponding event actually fires.
212
+ *
213
+ * @example
214
+ * ```ts
215
+ * await act('user:42', fn, {
216
+ * retry: { attempts: 3 },
217
+ * observability: {
218
+ * onAttempt: (e) => metrics.increment('act.attempt', { key: e.key, attempt: e.attempt }),
219
+ * onFinalFailure: (e) => logger.error({ key: e.key, traceId: e.traceId, failedBy: e.failedBy }, 'act failed'),
220
+ * onFinalSuccess: (e) => metrics.histogram('act.duration', e.durationMs),
221
+ * },
222
+ * })
223
+ * ```
224
+ */
225
+ observability?: ObservabilityHooks;
226
+ /**
227
+ * Trace ID for logs/metrics correlation. Auto-generated via crypto.randomUUID()
228
+ * when omitted. Appears on every observability event and on ActResult.traceId.
229
+ */
230
+ traceId?: string;
231
+ /** Circuit breaker: trips open after N consecutive failures, blocks calls for a cooldown period. */
232
+ circuitBreaker?: CircuitBreakerOptions;
233
+ /** Bulkhead: limits concurrent in-flight calls per key. Excess callers queue or fail fast. */
234
+ bulkhead?: BulkheadOptions;
235
+ /** Rate limiter: limits calls per window per key. Excess callers fail with RateLimitError. */
236
+ rateLimit?: RateLimitOptions;
237
+ /** Hedge: sends a second fn call after delayMs if the first hasn't settled. Races them. */
238
+ hedge?: HedgeOptions;
239
+ /** Fallback: returns this value if all policies fail. Suppresses ActFailure. */
240
+ fallback?: FallbackOptions<T>;
241
+ /** Audit: logs every act() call with key, traceId, result, timestamp. */
242
+ audit?: AuditOptions;
243
+ }
244
+ export interface CircuitBreakerOptions {
245
+ /** Number of consecutive failures before the breaker opens. Must be >= 1. */
246
+ threshold: number;
247
+ /** How long to stay open before transitioning to half-open (ms). Must be > 0. */
248
+ cooldownMs: number;
249
+ /** Optional: reset failure count after this idle period (ms). Default: Infinity. */
250
+ resetTimeoutMs?: number;
251
+ }
252
+ export interface BulkheadOptions {
253
+ /** Max concurrent in-flight calls per key. Must be >= 1. */
254
+ maxConcurrent: number;
255
+ /** How long to queue before rejecting with BulkheadOverflowError (ms). Default: 0 (fail fast). */
256
+ queueTimeoutMs?: number;
257
+ }
258
+ export interface RateLimitOptions {
259
+ /** Max calls per window per key. Must be >= 1. */
260
+ maxCalls: number;
261
+ /** Window size in ms. Must be > 0. */
262
+ windowMs: number;
263
+ }
264
+ export interface HedgeOptions {
265
+ /** Delay before sending the second (hedge) call (ms). Must be > 0. */
266
+ delayMs: number;
267
+ }
268
+ export interface FallbackOptions<T> {
269
+ /** Value to return if all retries/policies fail. */
270
+ value: T | (() => T | Promise<T>);
271
+ }
272
+ export interface AuditOptions {
273
+ /** Called with audit entry after every act() call (success or failure). */
274
+ log: (entry: AuditEntry) => void;
275
+ }
276
+ export interface AuditEntry {
277
+ key: string;
278
+ traceId: string;
279
+ timestamp: number;
280
+ durationMs: number;
281
+ ok: boolean;
282
+ attempts: number;
283
+ failedBy?: string;
284
+ error?: unknown;
191
285
  }
192
286
  /**
193
287
  * Mutable bag mutated in-place during execution.
@@ -201,11 +295,90 @@ export interface RunMeta {
201
295
  attempts: number;
202
296
  source: ActSource;
203
297
  }
298
+ export interface ObservabilityContext {
299
+ traceId: string;
300
+ hooks: ObservabilityHooks;
301
+ joinerCounter: number;
302
+ }
303
+ /** User-supplied observability hooks. See `observability.ts` for full shape. */
304
+ export interface ObservabilityHooks {
305
+ onAttempt?: (event: {
306
+ readonly type: 'attempt';
307
+ readonly key: string;
308
+ readonly traceId: string;
309
+ readonly timestamp: number;
310
+ readonly attempt: number;
311
+ readonly durationMs?: number;
312
+ readonly error?: unknown;
313
+ }) => void;
314
+ onRetry?: (event: {
315
+ readonly type: 'retry';
316
+ readonly key: string;
317
+ readonly traceId: string;
318
+ readonly timestamp: number;
319
+ readonly attempt: number;
320
+ readonly delayMs: number;
321
+ readonly error: unknown;
322
+ }) => void;
323
+ onCacheHit?: (event: {
324
+ readonly type: 'cache-hit';
325
+ readonly key: string;
326
+ readonly traceId: string;
327
+ readonly timestamp: number;
328
+ readonly ageMs: number;
329
+ }) => void;
330
+ onCacheMiss?: (event: {
331
+ readonly type: 'cache-miss';
332
+ readonly key: string;
333
+ readonly traceId: string;
334
+ readonly timestamp: number;
335
+ }) => void;
336
+ onDedupeJoin?: (event: {
337
+ readonly type: 'dedupe-join';
338
+ readonly key: string;
339
+ readonly traceId: string;
340
+ readonly timestamp: number;
341
+ readonly joinerPosition: number;
342
+ }) => void;
343
+ onTimeout?: (event: {
344
+ readonly type: 'timeout';
345
+ readonly key: string;
346
+ readonly traceId: string;
347
+ readonly timestamp: number;
348
+ readonly kind: 'per-attempt' | 'total';
349
+ readonly ms: number;
350
+ }) => void;
351
+ onFinalSuccess?: (event: {
352
+ readonly type: 'final-success';
353
+ readonly key: string;
354
+ readonly traceId: string;
355
+ readonly timestamp: number;
356
+ readonly source: ActSource;
357
+ readonly attempts: number;
358
+ readonly durationMs: number;
359
+ }) => void;
360
+ onFinalFailure?: (event: {
361
+ readonly type: 'final-failure';
362
+ readonly key: string;
363
+ readonly traceId: string;
364
+ readonly timestamp: number;
365
+ readonly attempts: number;
366
+ readonly durationMs: number;
367
+ readonly failedBy: 'abort' | 'timeout' | 'total-timeout' | 'retry-exhausted' | 'fn-error' | 'validation';
368
+ readonly error: unknown;
369
+ }) => void;
370
+ }
204
371
  /** Everything a policy receives about the current run. */
205
372
  export interface PolicyContext {
206
373
  key: string;
207
374
  store: AnyStateStore;
208
375
  meta: RunMeta;
376
+ /**
377
+ * Observability context. Present only when the caller supplied
378
+ * `options.observability` hooks. Policies check `ctx.observability != null`
379
+ * before allocating event objects — no overhead when absent.
380
+ */
381
+ observability?: ObservabilityContext;
209
382
  }
210
383
  /**
211
384
  * The ONLY shape the executor knows about policies.
@@ -218,9 +391,9 @@ export type PolicyApplier<T> = (fn: ActFn<T>, ctx: PolicyContext) => ActFn<T>;
218
391
  import type { SyncStateStore, AsyncStateStore } from '../stores/base.js';
219
392
  export type { SyncStateStore, AsyncStateStore };
220
393
  /**
221
- * Public store type. v1.1+: alias for `SyncStateStore`.
394
+ * Public store type. Alias for `SyncStateStore` (backwards compat).
222
395
  *
223
- * Kept for backwards compatibility — every v1.0 consumer typed against
396
+ * Kept for backwards compatibility — consumers typed against
224
397
  * `StateStore` continues to compile without changes. A future major version
225
398
  * may widen this to `SyncStateStore | AsyncStateStore`.
226
399
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}