@rotorsoft/act 1.34.4 → 1.35.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 (41) hide show
  1. package/README.md +2 -2
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/@types/act.d.ts +8 -6
  4. package/dist/@types/act.d.ts.map +1 -1
  5. package/dist/@types/builders/act-builder.d.ts.map +1 -1
  6. package/dist/@types/builders/state-builder.d.ts +1 -1
  7. package/dist/@types/internal/correlate-cycle.d.ts +4 -2
  8. package/dist/@types/internal/correlate-cycle.d.ts.map +1 -1
  9. package/dist/@types/internal/event-sourcing.d.ts +1 -6
  10. package/dist/@types/internal/event-sourcing.d.ts.map +1 -1
  11. package/dist/@types/internal/projection-fold.d.ts +1 -1
  12. package/dist/@types/internal/projection-fold.d.ts.map +1 -1
  13. package/dist/@types/internal/tracing.d.ts.map +1 -1
  14. package/dist/@types/types/act.d.ts +5 -21
  15. package/dist/@types/types/act.d.ts.map +1 -1
  16. package/dist/@types/types/action.d.ts +34 -16
  17. package/dist/@types/types/action.d.ts.map +1 -1
  18. package/dist/@types/types/builders.d.ts +26 -30
  19. package/dist/@types/types/builders.d.ts.map +1 -1
  20. package/dist/@types/types/errors.d.ts +56 -29
  21. package/dist/@types/types/errors.d.ts.map +1 -1
  22. package/dist/{chunk-GBAMBUDN.cjs → chunk-BNTVE7RQ.cjs} +13 -13
  23. package/dist/{chunk-GBAMBUDN.cjs.map → chunk-BNTVE7RQ.cjs.map} +1 -1
  24. package/dist/{chunk-BKCNU6FF.js → chunk-DH2HW5XJ.js} +13 -4
  25. package/dist/chunk-DH2HW5XJ.js.map +1 -0
  26. package/dist/{chunk-RF5MV72K.cjs → chunk-L66OOP2F.cjs} +14 -5
  27. package/dist/chunk-L66OOP2F.cjs.map +1 -0
  28. package/dist/{chunk-IEM2NS6J.js → chunk-MHPUVTMX.js} +2 -2
  29. package/dist/index.cjs +230 -229
  30. package/dist/index.cjs.map +1 -1
  31. package/dist/index.js +73 -72
  32. package/dist/index.js.map +1 -1
  33. package/dist/test/index.cjs +4 -4
  34. package/dist/test/index.js +2 -2
  35. package/dist/types/index.cjs +4 -2
  36. package/dist/types/index.cjs.map +1 -1
  37. package/dist/types/index.js +3 -1
  38. package/package.json +1 -1
  39. package/dist/chunk-BKCNU6FF.js.map +0 -1
  40. package/dist/chunk-RF5MV72K.cjs.map +0 -1
  41. /package/dist/{chunk-IEM2NS6J.js.map → chunk-MHPUVTMX.js.map} +0 -0
package/dist/index.cjs CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
 
42
42
 
43
- var _chunkGBAMBUDNcjs = require('./chunk-GBAMBUDN.cjs');
43
+ var _chunkBNTVE7RQcjs = require('./chunk-BNTVE7RQ.cjs');
44
44
 
45
45
 
46
46
 
@@ -70,24 +70,25 @@ var _chunkGBAMBUDNcjs = require('./chunk-GBAMBUDN.cjs');
70
70
 
71
71
 
72
72
 
73
- var _chunkRF5MV72Kcjs = require('./chunk-RF5MV72K.cjs');
73
+
74
+ var _chunkL66OOP2Fcjs = require('./chunk-L66OOP2F.cjs');
74
75
 
75
76
  // src/signals.ts
76
77
  process.once("SIGINT", async (arg) => {
77
- _chunkGBAMBUDNcjs.log.call(void 0, ).info(arg, "SIGINT");
78
- await _chunkGBAMBUDNcjs.disposeAndExit.call(void 0, "EXIT");
78
+ _chunkBNTVE7RQcjs.log.call(void 0, ).info(arg, "SIGINT");
79
+ await _chunkBNTVE7RQcjs.disposeAndExit.call(void 0, "EXIT");
79
80
  });
80
81
  process.once("SIGTERM", async (arg) => {
81
- _chunkGBAMBUDNcjs.log.call(void 0, ).info(arg, "SIGTERM");
82
- await _chunkGBAMBUDNcjs.disposeAndExit.call(void 0, "EXIT");
82
+ _chunkBNTVE7RQcjs.log.call(void 0, ).info(arg, "SIGTERM");
83
+ await _chunkBNTVE7RQcjs.disposeAndExit.call(void 0, "EXIT");
83
84
  });
84
85
  process.once("uncaughtException", async (arg) => {
85
- _chunkGBAMBUDNcjs.log.call(void 0, ).error(arg, "Uncaught Exception");
86
- await _chunkGBAMBUDNcjs.disposeAndExit.call(void 0, "ERROR");
86
+ _chunkBNTVE7RQcjs.log.call(void 0, ).error(arg, "Uncaught Exception");
87
+ await _chunkBNTVE7RQcjs.disposeAndExit.call(void 0, "ERROR");
87
88
  });
88
89
  process.once("unhandledRejection", async (arg) => {
89
- _chunkGBAMBUDNcjs.log.call(void 0, ).error(arg, "Unhandled Rejection");
90
- await _chunkGBAMBUDNcjs.disposeAndExit.call(void 0, "ERROR");
90
+ _chunkBNTVE7RQcjs.log.call(void 0, ).error(arg, "Unhandled Rejection");
91
+ await _chunkBNTVE7RQcjs.disposeAndExit.call(void 0, "ERROR");
91
92
  });
92
93
 
93
94
  // src/act.ts
@@ -195,7 +196,7 @@ async function* audit(deps, categories, options = {}) {
195
196
  if (need_stats) {
196
197
  const stats = await deps.store().query_stats(
197
198
  {},
198
- { count: true, names: true, exclude: [_chunkRF5MV72Kcjs.SNAP_EVENT] }
199
+ { count: true, names: true, exclude: [_chunkL66OOP2Fcjs.SNAP_EVENT] }
199
200
  );
200
201
  for (const [stream, s] of stats) {
201
202
  for (const p of passes) _optionalChain([p, 'access', _4 => _4.on_stat, 'optionalCall', _5 => _5(stream, s)]);
@@ -277,7 +278,7 @@ var make_schema_pass = (deps) => {
277
278
  return;
278
279
  }
279
280
  const schema = state2.events[name];
280
- const sensitive2 = _chunkRF5MV72Kcjs.pii_fields.call(void 0, schema);
281
+ const sensitive2 = _chunkL66OOP2Fcjs.pii_fields.call(void 0, schema);
281
282
  let parse_schema = schema;
282
283
  if (sensitive2.length > 0) {
283
284
  const omitter = schema.omit;
@@ -411,7 +412,7 @@ var make_restart_candidate_pass = (deps, options) => {
411
412
  {
412
413
  stream,
413
414
  stream_exact: true,
414
- names: [_chunkRF5MV72Kcjs.SNAP_EVENT],
415
+ names: [_chunkL66OOP2Fcjs.SNAP_EVENT],
415
416
  with_snaps: true
416
417
  }
417
418
  );
@@ -840,7 +841,7 @@ async function run_close_cycle(targets, deps) {
840
841
  deps,
841
842
  () => run_full_closes(full, target_map, deps, skipped)
842
843
  );
843
- const retired = [...truncated.entries()].filter(([, r]) => r.committed.name === _chunkRF5MV72Kcjs.TOMBSTONE_EVENT).map(([stream]) => stream);
844
+ const retired = [...truncated.entries()].filter(([, r]) => r.committed.name === _chunkL66OOP2Fcjs.TOMBSTONE_EVENT).map(([stream]) => stream);
844
845
  if (retired.length) _optionalChain([deps, 'access', _42 => _42.forget_subscribed, 'optionalCall', _43 => _43(retired)]);
845
846
  for (const [stream, entry] of windowed_result) truncated.set(stream, entry);
846
847
  return { truncated, skipped };
@@ -922,7 +923,7 @@ async function run_windowed_closes(windowed, deps, skipped) {
922
923
  if (!await windowed_prune_pending(t.stream, t.before, max_id))
923
924
  return void 0;
924
925
  if (t.archive) await t.archive();
925
- const result = await _chunkGBAMBUDNcjs.store.call(void 0, ).truncate([
926
+ const result = await _chunkBNTVE7RQcjs.store.call(void 0, ).truncate([
926
927
  { stream: t.stream, before: t.before, max_id }
927
928
  ]);
928
929
  return result.get(t.stream);
@@ -935,10 +936,10 @@ async function run_windowed_closes(windowed, deps, skipped) {
935
936
  async function windowed_prune_pending(stream, before, max_id) {
936
937
  let boundary_id;
937
938
  let min_id;
938
- await _chunkGBAMBUDNcjs.store.call(void 0, ).query(
939
+ await _chunkBNTVE7RQcjs.store.call(void 0, ).query(
939
940
  (event) => {
940
941
  if (min_id === void 0 || event.id < min_id) min_id = event.id;
941
- if (event.name === _chunkRF5MV72Kcjs.SNAP_EVENT && event.created < before && (max_id === void 0 || event.id <= max_id) && (boundary_id === void 0 || event.id > boundary_id))
942
+ if (event.name === _chunkL66OOP2Fcjs.SNAP_EVENT && event.created < before && (max_id === void 0 || event.id <= max_id) && (boundary_id === void 0 || event.id > boundary_id))
942
943
  boundary_id = event.id;
943
944
  },
944
945
  { stream, stream_exact: true, with_snaps: true, after: -1 }
@@ -949,7 +950,7 @@ async function probe_min_watermarks(streams, page_size, checkpoint) {
949
950
  const min_at = /* @__PURE__ */ new Map();
950
951
  const matches = source_matcher();
951
952
  await walk_streams(
952
- _chunkGBAMBUDNcjs.store.call(void 0, ),
953
+ _chunkBNTVE7RQcjs.store.call(void 0, ),
953
954
  (position) => {
954
955
  const pending = position.correlated_at === void 0 || position.at < position.correlated_at;
955
956
  const cap = pending ? position.at : Math.max(position.at, checkpoint);
@@ -977,17 +978,17 @@ function source_matcher() {
977
978
  };
978
979
  }
979
980
  async function scan_stream_heads(streams) {
980
- const stats = await _chunkGBAMBUDNcjs.store.call(void 0, ).query_stats(streams, {
981
- exclude: [_chunkRF5MV72Kcjs.SNAP_EVENT]
981
+ const stats = await _chunkBNTVE7RQcjs.store.call(void 0, ).query_stats(streams, {
982
+ exclude: [_chunkL66OOP2Fcjs.SNAP_EVENT]
982
983
  });
983
- const domain_heads = await _chunkGBAMBUDNcjs.store.call(void 0, ).query_stats(streams, {
984
- exclude: [_chunkRF5MV72Kcjs.SNAP_EVENT, _chunkRF5MV72Kcjs.TOMBSTONE_EVENT]
984
+ const domain_heads = await _chunkBNTVE7RQcjs.store.call(void 0, ).query_stats(streams, {
985
+ exclude: [_chunkL66OOP2Fcjs.SNAP_EVENT, _chunkL66OOP2Fcjs.TOMBSTONE_EVENT]
985
986
  });
986
- const true_heads = await _chunkGBAMBUDNcjs.store.call(void 0, ).query_stats(streams, {});
987
+ const true_heads = await _chunkBNTVE7RQcjs.store.call(void 0, ).query_stats(streams, {});
987
988
  const out = /* @__PURE__ */ new Map();
988
989
  for (const [stream, { head }] of domain_heads) {
989
990
  const marker_head = _optionalChain([stats, 'access', _45 => _45.get, 'call', _46 => _46(stream), 'optionalAccess', _47 => _47.head]);
990
- const interrupted = _optionalChain([marker_head, 'optionalAccess', _48 => _48.name]) === _chunkRF5MV72Kcjs.TOMBSTONE_EVENT;
991
+ const interrupted = _optionalChain([marker_head, 'optionalAccess', _48 => _48.name]) === _chunkL66OOP2Fcjs.TOMBSTONE_EVENT;
991
992
  out.set(stream, {
992
993
  max_id: head.id,
993
994
  version: true_heads.get(stream).head.version,
@@ -1011,7 +1012,7 @@ async function partition_by_safety(stream_info, reactive, skipped, page_size, ca
1011
1012
  const matches = source_matcher();
1012
1013
  const targets = [...stream_info.keys()];
1013
1014
  await walk_streams(
1014
- _chunkGBAMBUDNcjs.store.call(void 0, ),
1015
+ _chunkBNTVE7RQcjs.store.call(void 0, ),
1015
1016
  (position) => {
1016
1017
  const has_work = position.correlated_at !== void 0 && position.at < position.correlated_at;
1017
1018
  if (!has_work) return;
@@ -1077,7 +1078,7 @@ async function run_archive_callbacks(guarded, target_map) {
1077
1078
  }
1078
1079
  }
1079
1080
  async function heads_still_guarded(guarded, guard_events, skipped) {
1080
- const heads = await _chunkGBAMBUDNcjs.store.call(void 0, ).query_stats(guarded, {});
1081
+ const heads = await _chunkBNTVE7RQcjs.store.call(void 0, ).query_stats(guarded, {});
1081
1082
  return guarded.filter((stream) => {
1082
1083
  if (_optionalChain([heads, 'access', _55 => _55.get, 'call', _56 => _56(stream), 'optionalAccess', _57 => _57.head, 'access', _58 => _58.id]) === guard_events.get(stream).id)
1083
1084
  return true;
@@ -1095,18 +1096,18 @@ async function truncate_and_warm_cache(guarded, seed_states, guard_events, corre
1095
1096
  meta: {
1096
1097
  correlation,
1097
1098
  causation: {
1098
- event: { id: guard.id, name: _chunkRF5MV72Kcjs.TOMBSTONE_EVENT, stream: guard.stream }
1099
+ event: { id: guard.id, name: _chunkL66OOP2Fcjs.TOMBSTONE_EVENT, stream: guard.stream }
1099
1100
  }
1100
1101
  }
1101
1102
  };
1102
1103
  });
1103
- const truncated = await _chunkGBAMBUDNcjs.store.call(void 0, ).truncate(trunc_targets);
1104
+ const truncated = await _chunkBNTVE7RQcjs.store.call(void 0, ).truncate(trunc_targets);
1104
1105
  await Promise.all(
1105
1106
  guarded.map(async (stream) => {
1106
1107
  const entry = truncated.get(stream);
1107
1108
  const state2 = seed_states.get(stream);
1108
1109
  if (state2 && entry) {
1109
- await _chunkGBAMBUDNcjs.cache.call(void 0, ).set(stream, {
1110
+ await _chunkBNTVE7RQcjs.cache.call(void 0, ).set(stream, {
1110
1111
  stream,
1111
1112
  state: state2,
1112
1113
  version: entry.committed.version,
@@ -1115,7 +1116,7 @@ async function truncate_and_warm_cache(guarded, seed_states, guard_events, corre
1115
1116
  snaps: 1
1116
1117
  });
1117
1118
  } else {
1118
- await _chunkGBAMBUDNcjs.cache.call(void 0, ).invalidate(stream);
1119
+ await _chunkBNTVE7RQcjs.cache.call(void 0, ).invalidate(stream);
1119
1120
  }
1120
1121
  })
1121
1122
  );
@@ -1129,7 +1130,7 @@ var _crypto = require('crypto');
1129
1130
  function report_once(seen, key, message) {
1130
1131
  if (seen.has(key)) return;
1131
1132
  seen.add(key);
1132
- _chunkGBAMBUDNcjs.log.call(void 0, ).error(new Error(message));
1133
+ _chunkBNTVE7RQcjs.log.call(void 0, ).error(new Error(message));
1133
1134
  }
1134
1135
 
1135
1136
  // src/internal/correlate-cycle.ts
@@ -1180,7 +1181,7 @@ var CorrelateCycle = (_class3 = class {
1180
1181
  // never lets a resolution re-lane them.
1181
1182
 
1182
1183
  __init11() {this._static_subscriptions = /* @__PURE__ */ new Map()}
1183
- __init12() {this._patterns = new (0, _chunkGBAMBUDNcjs.LruMap)(PATTERN_CACHE_SIZE)}
1184
+ __init12() {this._patterns = new (0, _chunkBNTVE7RQcjs.LruMap)(PATTERN_CACHE_SIZE)}
1184
1185
 
1185
1186
 
1186
1187
 
@@ -1198,7 +1199,7 @@ var CorrelateCycle = (_class3 = class {
1198
1199
  on_init
1199
1200
  }) {;_class3.prototype.__init3.call(this);_class3.prototype.__init4.call(this);_class3.prototype.__init5.call(this);_class3.prototype.__init6.call(this);_class3.prototype.__init7.call(this);_class3.prototype.__init8.call(this);_class3.prototype.__init9.call(this);_class3.prototype.__init10.call(this);_class3.prototype.__init11.call(this);_class3.prototype.__init12.call(this);_class3.prototype.__init13.call(this);
1200
1201
  this._key = shard ? `${registry_key(registry.events)}:${[...shard].sort().join(",")}` : registry_key(registry.events);
1201
- this._dynamic_subscriptions = new (0, _chunkGBAMBUDNcjs.LruMap)(max_subscribed_streams);
1202
+ this._dynamic_subscriptions = new (0, _chunkBNTVE7RQcjs.LruMap)(max_subscribed_streams);
1202
1203
  this._registry = registry;
1203
1204
  this._declared_lanes = declared_lanes;
1204
1205
  this._static_targets = static_targets;
@@ -1256,7 +1257,7 @@ var CorrelateCycle = (_class3 = class {
1256
1257
  /** Would the target's own `fetch` (filtered by `source`) return this event? */
1257
1258
  _in_fetch_window(source, stream) {
1258
1259
  if (source === void 0 || source === stream) return true;
1259
- if (_chunkGBAMBUDNcjs.is_literal_source.call(void 0, source)) return false;
1260
+ if (_chunkBNTVE7RQcjs.is_literal_source.call(void 0, source)) return false;
1260
1261
  let pattern = this._patterns.get(source);
1261
1262
  if (!pattern) {
1262
1263
  pattern = new RegExp(source);
@@ -1265,9 +1266,9 @@ var CorrelateCycle = (_class3 = class {
1265
1266
  return pattern.test(stream);
1266
1267
  }
1267
1268
  /** Scan past the checkpoint, subscribe new targets and raise their work marks. */
1268
- async correlate(query, lease = false) {
1269
+ async correlate(limit, lease = false) {
1269
1270
  if (this._restoring) return { kind: "idle", last_id: this._checkpoint };
1270
- const pass = this._scan(query, lease);
1271
+ const pass = this._scan(limit, lease);
1271
1272
  this._passes.add(pass);
1272
1273
  try {
1273
1274
  return await pass;
@@ -1275,7 +1276,7 @@ var CorrelateCycle = (_class3 = class {
1275
1276
  this._passes.delete(pass);
1276
1277
  }
1277
1278
  }
1278
- async _scan(query, lease) {
1279
+ async _scan(limit, lease) {
1279
1280
  await this._init();
1280
1281
  const epoch = this._epoch;
1281
1282
  const idle = () => ({
@@ -1299,7 +1300,7 @@ var CorrelateCycle = (_class3 = class {
1299
1300
  const correlated = /* @__PURE__ */ new Map();
1300
1301
  let last_id = after;
1301
1302
  let stopped = false;
1302
- const found = await _chunkGBAMBUDNcjs.store.call(void 0, ).query(
1303
+ const found = await _chunkBNTVE7RQcjs.store.call(void 0, ).query(
1303
1304
  (event) => {
1304
1305
  if (stopped) return;
1305
1306
  const register = this._registry.events[event.name];
@@ -1344,9 +1345,9 @@ var CorrelateCycle = (_class3 = class {
1344
1345
  correlated_at: void 0
1345
1346
  };
1346
1347
  const seen_in_scan = correlated.has(resolved.target);
1347
- const held_lane = _nullishCoalesce((seen_in_scan ? entry.lane : _optionalChain([recorded, 'optionalAccess', _61 => _61.lane])), () => ( _chunkRF5MV72Kcjs.DEFAULT_LANE));
1348
+ const held_lane = _nullishCoalesce((seen_in_scan ? entry.lane : _optionalChain([recorded, 'optionalAccess', _61 => _61.lane])), () => ( _chunkL66OOP2Fcjs.DEFAULT_LANE));
1348
1349
  const held_priority = seen_in_scan ? entry.priority : _optionalChain([recorded, 'optionalAccess', _62 => _62.priority]);
1349
- const resolved_lane = _nullishCoalesce(lane, () => ( _chunkRF5MV72Kcjs.DEFAULT_LANE));
1350
+ const resolved_lane = _nullishCoalesce(lane, () => ( _chunkL66OOP2Fcjs.DEFAULT_LANE));
1350
1351
  if (held_priority === priority && held_lane !== resolved_lane)
1351
1352
  report_lane_conflict(
1352
1353
  this._reported,
@@ -1370,7 +1371,7 @@ var CorrelateCycle = (_class3 = class {
1370
1371
  },
1371
1372
  // Resolvers see `pii: null`: correlate runs actor-less, and one
1372
1373
  // undecryptable row would otherwise stop every stream's reactions.
1373
- { after, limit: query.limit, with_pii: false }
1374
+ { after, limit, with_pii: false }
1374
1375
  );
1375
1376
  if (this._declared_lanes.size > 1) await this._recall(correlated);
1376
1377
  const read = last_id > after;
@@ -1409,7 +1410,7 @@ var CorrelateCycle = (_class3 = class {
1409
1410
  return { kind: "scanned", last_id, subscribed, marked, read };
1410
1411
  }
1411
1412
  this._checkpoint = last_id;
1412
- if (!stopped && found !== query.limit) this._lowered = raised;
1413
+ if (!stopped && found !== limit) this._lowered = raised;
1413
1414
  return { kind: "scanned", last_id, subscribed: 0, marked: 0, read };
1414
1415
  }
1415
1416
  /**
@@ -1422,7 +1423,7 @@ var CorrelateCycle = (_class3 = class {
1422
1423
  await Promise.all(
1423
1424
  missed.map(async ([stream, entry]) => {
1424
1425
  let row;
1425
- await _chunkGBAMBUDNcjs.store.call(void 0, ).query_streams(
1426
+ await _chunkBNTVE7RQcjs.store.call(void 0, ).query_streams(
1426
1427
  (position) => {
1427
1428
  row = position;
1428
1429
  },
@@ -1434,8 +1435,8 @@ var CorrelateCycle = (_class3 = class {
1434
1435
  lane: row.lane
1435
1436
  });
1436
1437
  if (entry.priority > row.priority) return;
1437
- const held_lane = _nullishCoalesce(row.lane, () => ( _chunkRF5MV72Kcjs.DEFAULT_LANE));
1438
- const resolved_lane = _nullishCoalesce(entry.lane, () => ( _chunkRF5MV72Kcjs.DEFAULT_LANE));
1438
+ const held_lane = _nullishCoalesce(row.lane, () => ( _chunkL66OOP2Fcjs.DEFAULT_LANE));
1439
+ const resolved_lane = _nullishCoalesce(entry.lane, () => ( _chunkL66OOP2Fcjs.DEFAULT_LANE));
1439
1440
  if (entry.priority === row.priority && held_lane !== resolved_lane)
1440
1441
  report_lane_conflict(
1441
1442
  this._reported,
@@ -1461,7 +1462,7 @@ var CorrelateCycle = (_class3 = class {
1461
1462
  millis: 0
1462
1463
  });
1463
1464
  } catch (error) {
1464
- _chunkGBAMBUDNcjs.log.call(void 0, ).warn(
1465
+ _chunkBNTVE7RQcjs.log.call(void 0, ).warn(
1465
1466
  `Could not hand back the correlation lease during shutdown; it expires on its own within ${CORRELATION_LEASE_MS}ms and correlation resumes normally after that. On a single-writer store this usually means another connection holds the database. Cause: ${String(error)}`
1466
1467
  );
1467
1468
  }
@@ -1614,14 +1615,14 @@ function compute_lag_lead_ratio(handled, lagging, leading) {
1614
1615
  }
1615
1616
 
1616
1617
  // src/internal/drain-ops.ts
1617
- var claim = (lagging, leading, by, millis, lane) => _chunkGBAMBUDNcjs.store.call(void 0, ).claim(lagging, leading, by, millis, lane);
1618
+ var claim = (lagging, leading, by, millis, lane) => _chunkBNTVE7RQcjs.store.call(void 0, ).claim(lagging, leading, by, millis, lane);
1618
1619
  async function fetch(leased, eventLimit) {
1619
1620
  return Promise.all(
1620
1621
  leased.map(async ({ stream, source, at, lagging }) => {
1621
1622
  const events = [];
1622
- const stream_exact = source !== void 0 && _chunkGBAMBUDNcjs.is_literal_source.call(void 0, source) ? true : void 0;
1623
+ const stream_exact = source !== void 0 && _chunkBNTVE7RQcjs.is_literal_source.call(void 0, source) ? true : void 0;
1623
1624
  try {
1624
- await _chunkGBAMBUDNcjs.store.call(void 0, ).query((e) => events.push(e), {
1625
+ await _chunkBNTVE7RQcjs.store.call(void 0, ).query((e) => events.push(e), {
1625
1626
  stream: source,
1626
1627
  stream_exact,
1627
1628
  after: at,
@@ -1641,30 +1642,28 @@ async function fetch(leased, eventLimit) {
1641
1642
  })
1642
1643
  );
1643
1644
  }
1644
- var ack = (leases) => _chunkGBAMBUDNcjs.store.call(void 0, ).ack(leases);
1645
- var block = (leases) => _chunkGBAMBUDNcjs.store.call(void 0, ).block(leases);
1646
- var subscribe = (streams, correlated_at, correlator) => _chunkGBAMBUDNcjs.store.call(void 0, ).subscribe(streams, correlated_at, correlator);
1645
+ var ack = (leases) => _chunkBNTVE7RQcjs.store.call(void 0, ).ack(leases);
1646
+ var block = (leases) => _chunkBNTVE7RQcjs.store.call(void 0, ).block(leases);
1647
+ var subscribe = (streams, correlated_at, correlator) => _chunkBNTVE7RQcjs.store.call(void 0, ).subscribe(streams, correlated_at, correlator);
1647
1648
 
1648
1649
  // src/internal/event-sourcing.ts
1649
1650
  var _actpatch = require('@rotorsoft/act-patch');
1651
+ var _zod2 = require('zod');
1650
1652
  var bare_patch = (_me, state2, partial) => _actpatch.patch.call(void 0, state2, partial);
1651
- var validating_patch = (me, state2, partial, event) => {
1652
- const next = _actpatch.patch.call(void 0, state2, partial);
1653
- return _chunkGBAMBUDNcjs.validate.call(void 0,
1654
- `${me.name}.${String(event.name)}#${event.id}`,
1655
- next,
1656
- me.state
1657
- );
1653
+ var check_invariants = (target, state2, schema) => {
1654
+ const result = schema.safeParse(state2);
1655
+ if (!result.success)
1656
+ throw new (0, _chunkL66OOP2Fcjs.ValidationError)(target, state2, _zod2.prettifyError.call(void 0, result.error));
1658
1657
  };
1659
1658
  var DEFAULT_BATCH = 500;
1660
- var cache_put = (stream, entry) => _chunkGBAMBUDNcjs.cache.call(void 0, ).set(stream, entry).catch(
1661
- (err) => _chunkGBAMBUDNcjs.log.call(void 0, ).warn(
1659
+ var cache_put = (stream, entry) => _chunkBNTVE7RQcjs.cache.call(void 0, ).set(stream, entry).catch(
1660
+ (err) => _chunkBNTVE7RQcjs.log.call(void 0, ).warn(
1662
1661
  err,
1663
1662
  "cache set skipped; the next load re-folds from the store"
1664
1663
  )
1665
1664
  );
1666
- var cache_drop = (stream) => _chunkGBAMBUDNcjs.cache.call(void 0, ).invalidate(stream).catch(
1667
- (err) => _chunkGBAMBUDNcjs.log.call(void 0, ).warn(
1665
+ var cache_drop = (stream) => _chunkBNTVE7RQcjs.cache.call(void 0, ).invalidate(stream).catch(
1666
+ (err) => _chunkBNTVE7RQcjs.log.call(void 0, ).warn(
1668
1667
  err,
1669
1668
  "cache invalidate skipped; a stale checkpoint re-folds from its event_id"
1670
1669
  )
@@ -1672,9 +1671,9 @@ var cache_drop = (stream) => _chunkGBAMBUDNcjs.cache.call(void 0, ).invalidate(s
1672
1671
  async function snap(snapshot) {
1673
1672
  const { id, stream, name, meta, version } = snapshot.event;
1674
1673
  try {
1675
- const [committed] = await _chunkGBAMBUDNcjs.store.call(void 0, ).commit(
1674
+ const [committed] = await _chunkBNTVE7RQcjs.store.call(void 0, ).commit(
1676
1675
  stream,
1677
- [{ name: _chunkRF5MV72Kcjs.SNAP_EVENT, data: snapshot.state }],
1676
+ [{ name: _chunkL66OOP2Fcjs.SNAP_EVENT, data: snapshot.state }],
1678
1677
  {
1679
1678
  correlation: meta.correlation,
1680
1679
  causation: { event: { id, name, stream } }
@@ -1685,22 +1684,22 @@ async function snap(snapshot) {
1685
1684
  return committed;
1686
1685
  } catch (error) {
1687
1686
  const reason = error instanceof Error ? error.message : String(error);
1688
- _chunkGBAMBUDNcjs.log.call(void 0, ).warn(
1687
+ _chunkBNTVE7RQcjs.log.call(void 0, ).warn(
1689
1688
  `Snapshot write failed on stream "${stream}": ${reason} \u2014 cold starts will replay full history until snapshots succeed.`
1690
1689
  );
1691
1690
  }
1692
1691
  }
1693
1692
  async function tombstone(stream, expectedVersion, correlation) {
1694
1693
  try {
1695
- const [committed] = await _chunkGBAMBUDNcjs.store.call(void 0, ).commit(
1694
+ const [committed] = await _chunkBNTVE7RQcjs.store.call(void 0, ).commit(
1696
1695
  stream,
1697
- [{ name: _chunkRF5MV72Kcjs.TOMBSTONE_EVENT, data: {} }],
1696
+ [{ name: _chunkL66OOP2Fcjs.TOMBSTONE_EVENT, data: {} }],
1698
1697
  { correlation, causation: {} },
1699
1698
  expectedVersion
1700
1699
  );
1701
1700
  return committed;
1702
1701
  } catch (error) {
1703
- if (error instanceof _chunkRF5MV72Kcjs.ConcurrencyError) return void 0;
1702
+ if (error instanceof _chunkL66OOP2Fcjs.ConcurrencyError) return void 0;
1704
1703
  throw error;
1705
1704
  }
1706
1705
  }
@@ -1730,9 +1729,9 @@ async function scan(source, opts = {}, callback) {
1730
1729
  if (drop_closed_streams) {
1731
1730
  await source.query(
1732
1731
  (e) => {
1733
- if (e.name === _chunkRF5MV72Kcjs.TOMBSTONE_EVENT) closed_streams.add(e.stream);
1732
+ if (e.name === _chunkL66OOP2Fcjs.TOMBSTONE_EVENT) closed_streams.add(e.stream);
1734
1733
  },
1735
- { names: [_chunkRF5MV72Kcjs.TOMBSTONE_EVENT] }
1734
+ { names: [_chunkL66OOP2Fcjs.TOMBSTONE_EVENT] }
1736
1735
  );
1737
1736
  }
1738
1737
  let max_id;
@@ -1754,11 +1753,11 @@ async function scan(source, opts = {}, callback) {
1754
1753
  if (!is_valid(event))
1755
1754
  throw new Error(`Invalid event at index ${processed}`);
1756
1755
  if (on_progress) on_progress({ processed, id: event.id, max_id });
1757
- if (drop_snapshots && event.name === _chunkRF5MV72Kcjs.SNAP_EVENT) {
1756
+ if (drop_snapshots && event.name === _chunkL66OOP2Fcjs.SNAP_EVENT) {
1758
1757
  dropped_snaps++;
1759
1758
  return;
1760
1759
  }
1761
- if (closed_streams.has(event.stream) && event.name !== _chunkRF5MV72Kcjs.TOMBSTONE_EVENT) {
1760
+ if (closed_streams.has(event.stream) && event.name !== _chunkL66OOP2Fcjs.TOMBSTONE_EVENT) {
1762
1761
  dropped_closed++;
1763
1762
  return;
1764
1763
  }
@@ -1825,17 +1824,17 @@ async function scan(source, opts = {}, callback) {
1825
1824
  async function load(me, target, callback, patch_fn = bare_patch) {
1826
1825
  const { stream, actor, asOf } = target;
1827
1826
  const time_travel = !!asOf && Object.values(asOf).some((v) => v !== void 0);
1828
- const cached = time_travel ? void 0 : await _chunkGBAMBUDNcjs.cache.call(void 0, ).get(stream);
1827
+ const cached = time_travel ? void 0 : await _chunkBNTVE7RQcjs.cache.call(void 0, ).get(stream);
1829
1828
  const cache_hit = !!cached;
1830
1829
  let state2 = _nullishCoalesce(_optionalChain([cached, 'optionalAccess', _72 => _72.state]), () => ( (me.init ? me.init() : {})));
1831
1830
  let patches = _nullishCoalesce(_optionalChain([cached, 'optionalAccess', _73 => _73.patches]), () => ( 0));
1832
1831
  let snaps = _nullishCoalesce(_optionalChain([cached, 'optionalAccess', _74 => _74.snaps]), () => ( 0));
1833
1832
  let replayed = 0;
1834
1833
  let event;
1835
- await _chunkGBAMBUDNcjs.store.call(void 0, ).query(
1834
+ await _chunkBNTVE7RQcjs.store.call(void 0, ).query(
1836
1835
  (raw) => {
1837
1836
  event = me.view(raw, actor);
1838
- if (event.name === _chunkRF5MV72Kcjs.SNAP_EVENT) {
1837
+ if (event.name === _chunkL66OOP2Fcjs.SNAP_EVENT) {
1839
1838
  state2 = event.data;
1840
1839
  snaps++;
1841
1840
  patches = 0;
@@ -1844,8 +1843,8 @@ async function load(me, target, callback, patch_fn = bare_patch) {
1844
1843
  state2 = patch_fn(me, state2, me.patch[event.name](event, state2), event);
1845
1844
  patches++;
1846
1845
  replayed++;
1847
- } else if (event.name !== _chunkRF5MV72Kcjs.TOMBSTONE_EVENT) {
1848
- _chunkGBAMBUDNcjs.log.call(void 0, ).warn(
1846
+ } else if (event.name !== _chunkL66OOP2Fcjs.TOMBSTONE_EVENT) {
1847
+ _chunkBNTVE7RQcjs.log.call(void 0, ).warn(
1849
1848
  `Skipping unknown event "${String(event.name)}" on stream "${stream}" (id=${event.id}) \u2014 no reducer in state "${me.name}"`
1850
1849
  );
1851
1850
  }
@@ -1869,7 +1868,7 @@ async function load(me, target, callback, patch_fn = bare_patch) {
1869
1868
  ...cached ? { after: cached.event_id, with_snaps: true } : { ...time_travel ? {} : { with_snaps: true }, ...asOf }
1870
1869
  }
1871
1870
  );
1872
- const head_is_tombstone = _optionalChain([event, 'optionalAccess', _76 => _76.name]) === _chunkRF5MV72Kcjs.TOMBSTONE_EVENT;
1871
+ const head_is_tombstone = _optionalChain([event, 'optionalAccess', _76 => _76.name]) === _chunkL66OOP2Fcjs.TOMBSTONE_EVENT;
1873
1872
  if (replayed > 0 && !time_travel && event && !me.pii_aware && !head_is_tombstone) {
1874
1873
  await cache_put(stream, {
1875
1874
  stream,
@@ -1897,7 +1896,7 @@ async function action(me, action2, target, payload, options, patch_fn = bare_pat
1897
1896
  if (!stream) throw new Error("Missing target stream");
1898
1897
  const reactingTo = _optionalChain([options, 'optionalAccess', _81 => _81.reactingTo]);
1899
1898
  const correlator = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _82 => _82.correlator]), () => ( default_correlator));
1900
- const validated = _chunkGBAMBUDNcjs.validate.call(void 0, action2, payload, me.actions[action2]);
1899
+ const validated = _chunkBNTVE7RQcjs.validate.call(void 0, action2, payload, me.actions[action2]);
1901
1900
  const opts = _optionalChain([me, 'access', _83 => _83.options, 'optionalAccess', _84 => _84[action2]]);
1902
1901
  const max_retries = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _85 => _85.maxRetries]), () => ( 0));
1903
1902
  for (let attempt = 0; ; attempt++) {
@@ -1908,12 +1907,12 @@ async function action(me, action2, target, payload, options, patch_fn = bare_pat
1908
1907
  void 0,
1909
1908
  patch_fn
1910
1909
  );
1911
- if (_optionalChain([snapshot, 'access', _86 => _86.event, 'optionalAccess', _87 => _87.name]) === _chunkRF5MV72Kcjs.TOMBSTONE_EVENT)
1912
- throw new (0, _chunkRF5MV72Kcjs.StreamClosedError)(stream);
1910
+ if (_optionalChain([snapshot, 'access', _86 => _86.event, 'optionalAccess', _87 => _87.name]) === _chunkL66OOP2Fcjs.TOMBSTONE_EVENT)
1911
+ throw new (0, _chunkL66OOP2Fcjs.StreamClosedError)(stream);
1913
1912
  const expected = _nullishCoalesce(expectedVersion, () => ( (snapshot.version >= 0 ? snapshot.version : void 0)));
1914
- for (const { valid: valid2, description } of _nullishCoalesce(_optionalChain([me, 'access', _88 => _88.given, 'optionalAccess', _89 => _89[action2]]), () => ( [])))
1915
- if (!valid2(snapshot.state, actor))
1916
- throw new (0, _chunkRF5MV72Kcjs.InvariantError)(
1913
+ for (const { valid, description } of _nullishCoalesce(_optionalChain([me, 'access', _88 => _88.given, 'optionalAccess', _89 => _89[action2]]), () => ( [])))
1914
+ if (!valid(snapshot.state, actor))
1915
+ throw new (0, _chunkL66OOP2Fcjs.InvariantError)(
1917
1916
  action2,
1918
1917
  validated,
1919
1918
  target,
@@ -1922,25 +1921,22 @@ async function action(me, action2, target, payload, options, patch_fn = bare_pat
1922
1921
  );
1923
1922
  for (const { holds, description } of _nullishCoalesce(_optionalChain([me, 'access', _90 => _90.requires, 'optionalAccess', _91 => _91[action2]]), () => ( [])))
1924
1923
  if (!holds(validated, snapshot.state, actor))
1925
- throw new (0, _chunkRF5MV72Kcjs.InvariantError)(
1924
+ throw new (0, _chunkL66OOP2Fcjs.PreconditionError)(
1926
1925
  action2,
1927
1926
  validated,
1928
1927
  target,
1929
1928
  snapshot,
1930
- description,
1931
- "precondition"
1929
+ description
1932
1930
  );
1933
1931
  const result = me.on[action2](validated, snapshot, target);
1934
- if (!result) return [snapshot];
1935
- if (Array.isArray(result) && result.length === 0) {
1932
+ if (!result || Array.isArray(result) && !result.length)
1936
1933
  return [snapshot];
1937
- }
1938
1934
  const tuples = Array.isArray(result[0]) ? result : [result];
1939
- const valid = tuples.map(([name, data]) => ({
1935
+ const events = tuples.map(([name, data]) => ({
1940
1936
  name,
1941
- data: _chunkGBAMBUDNcjs.validate.call(void 0, name, data, me.events[name])
1937
+ data: _chunkBNTVE7RQcjs.validate.call(void 0, name, data, me.events[name])
1942
1938
  }));
1943
- const emitted = valid.map((e) => me.message(e));
1939
+ const emitted = events.map((e) => me.message(e));
1944
1940
  const meta = {
1945
1941
  correlation: _optionalChain([reactingTo, 'optionalAccess', _92 => _92.meta, 'access', _93 => _93.correlation]) || correlator({
1946
1942
  action: action2,
@@ -1961,9 +1957,26 @@ async function action(me, action2, target, payload, options, patch_fn = bare_pat
1961
1957
  } : void 0
1962
1958
  }
1963
1959
  };
1960
+ let { state: state2, patches } = snapshot;
1961
+ const created = /* @__PURE__ */ new Date();
1962
+ const folded = events.map((e, i) => {
1963
+ const event = {
1964
+ ...e,
1965
+ id: -1,
1966
+ stream,
1967
+ version: snapshot.version + i + 1,
1968
+ created,
1969
+ meta
1970
+ };
1971
+ const patch2 = me.patch[event.name](event, state2);
1972
+ state2 = patch_fn(me, state2, patch2, event);
1973
+ patches++;
1974
+ return { state: state2, patch: patch2, patches };
1975
+ });
1976
+ check_invariants(`${me.name}.${action2}`, state2, me.state);
1964
1977
  let committed;
1965
1978
  try {
1966
- committed = await _chunkGBAMBUDNcjs.store.call(void 0, ).commit(
1979
+ committed = await _chunkBNTVE7RQcjs.store.call(void 0, ).commit(
1967
1980
  stream,
1968
1981
  emitted,
1969
1982
  meta,
@@ -1972,27 +1985,20 @@ async function action(me, action2, target, payload, options, patch_fn = bare_pat
1972
1985
  reactingTo ? expectedVersion : expected
1973
1986
  );
1974
1987
  } catch (error) {
1975
- if (error instanceof _chunkRF5MV72Kcjs.ConcurrencyError) void cache_drop(stream);
1988
+ if (error instanceof _chunkL66OOP2Fcjs.ConcurrencyError) void cache_drop(stream);
1976
1989
  throw error;
1977
1990
  }
1978
- let { state: state2, patches } = snapshot;
1979
- const snapshots = committed.map((row, i) => {
1980
- const event = { ...row, data: valid[i].data };
1981
- const p = me.patch[event.name](event, state2);
1982
- state2 = patch_fn(me, state2, p, event);
1983
- patches++;
1984
- return {
1985
- event,
1986
- state: state2,
1987
- version: event.version,
1988
- id: event.id,
1989
- patches,
1990
- snaps: snapshot.snaps,
1991
- patch: p,
1992
- cache_hit: snapshot.cache_hit,
1993
- replayed: snapshot.replayed
1994
- };
1995
- });
1991
+ const snapshots = committed.map((row, i) => ({
1992
+ event: { ...row, data: events[i].data },
1993
+ state: folded[i].state,
1994
+ version: row.version,
1995
+ id: row.id,
1996
+ patches: folded[i].patches,
1997
+ snaps: snapshot.snaps,
1998
+ patch: folded[i].patch,
1999
+ cache_hit: snapshot.cache_hit,
2000
+ replayed: snapshot.replayed
2001
+ }));
1996
2002
  const last = snapshots.at(-1);
1997
2003
  const contiguous = committed[0].version === snapshot.version + 1;
1998
2004
  const snapped = contiguous && _optionalChain([me, 'access', _94 => _94.snap, 'optionalCall', _95 => _95(last)]);
@@ -2011,19 +2017,19 @@ async function action(me, action2, target, payload, options, patch_fn = bare_pat
2011
2017
  }
2012
2018
  return snapshots;
2013
2019
  } catch (error) {
2014
- if (!(error instanceof _chunkRF5MV72Kcjs.ConcurrencyError)) throw error;
2020
+ if (!(error instanceof _chunkL66OOP2Fcjs.ConcurrencyError)) throw error;
2015
2021
  if (expectedVersion !== void 0) throw error;
2016
2022
  if (attempt >= max_retries) throw error;
2017
2023
  if (_optionalChain([opts, 'optionalAccess', _98 => _98.backoff])) {
2018
2024
  const delay_ms = compute_backoff_delay(attempt, opts.backoff);
2019
- if (delay_ms > 0) await _chunkGBAMBUDNcjs.sleep.call(void 0, delay_ms);
2025
+ if (delay_ms > 0) await _chunkBNTVE7RQcjs.sleep.call(void 0, delay_ms);
2020
2026
  }
2021
2027
  }
2022
2028
  }
2023
2029
  }
2024
2030
 
2025
2031
  // src/internal/tracing.ts
2026
- var PRETTY = _chunkGBAMBUDNcjs.config.call(void 0, ).env !== "production";
2032
+ var PRETTY = _chunkBNTVE7RQcjs.config.call(void 0, ).env !== "production";
2027
2033
  var C_BLUE = "\x1B[38;5;39m";
2028
2034
  var C_ORANGE = "\x1B[38;5;208m";
2029
2035
  var C_GREEN = "\x1B[38;5;42m";
@@ -2209,7 +2215,7 @@ function budget_exhausted(lease, options, store_failing) {
2209
2215
  if (store_failing || !_optionalChain([options, 'optionalAccess', _108 => _108.blockOnError]) || lease.retry <= options.maxRetries)
2210
2216
  return void 0;
2211
2217
  const error = `Blocking ${lease.stream} after ${lease.retry} claims with no acknowledged progress \u2014 the retry budget (${options.maxRetries}) was spent without the handler ever reporting an error. That means every attempt lost its lease before it could ack: move the reaction to a lane whose leaseMillis covers the handler, then unblock the stream.`;
2212
- _chunkGBAMBUDNcjs.log.call(void 0, ).error(error);
2218
+ _chunkBNTVE7RQcjs.log.call(void 0, ).error(error);
2213
2219
  return { lease, handled: 0, acked_at: lease.at, error, block: true };
2214
2220
  }
2215
2221
  function fetch_failure_policy(registry) {
@@ -2225,13 +2231,13 @@ function fetch_failure_policy(registry) {
2225
2231
  function finalize(lease, handled, at, error, options, logger, failed_at) {
2226
2232
  if (!error) return { lease, handled, acked_at: at };
2227
2233
  logger.error(error);
2228
- const non_retryable = error instanceof _chunkRF5MV72Kcjs.NonRetryableError;
2234
+ const non_retryable = error instanceof _chunkL66OOP2Fcjs.NonRetryableError;
2229
2235
  const block2 = options.blockOnError && (non_retryable || lease.retry >= options.maxRetries);
2230
2236
  if (block2)
2231
2237
  logger.error(
2232
2238
  non_retryable ? `Blocking ${lease.stream} on non-retryable error.` : `Blocking ${lease.stream} after ${lease.retry} retries.`
2233
2239
  );
2234
- const next_attempt_at = block2 ? void 0 : Date.now() + compute_backoff_delay(lease.retry, _nullishCoalesce(options.backoff, () => ( _chunkGBAMBUDNcjs.DEFAULT_BACKOFF)));
2240
+ const next_attempt_at = block2 ? void 0 : Date.now() + compute_backoff_delay(lease.retry, _nullishCoalesce(options.backoff, () => ( _chunkBNTVE7RQcjs.DEFAULT_BACKOFF)));
2235
2241
  return {
2236
2242
  lease,
2237
2243
  handled,
@@ -2359,7 +2365,7 @@ async function run_drain_cycle(deps, cycle) {
2359
2365
  const acked = submitted.length ? await ops.ack(submitted) : [];
2360
2366
  const expected = submitted.filter((l) => l.due === void 0).length;
2361
2367
  if (acked.length < expected)
2362
- _chunkGBAMBUDNcjs.log.call(void 0, ).warn(
2368
+ _chunkBNTVE7RQcjs.log.call(void 0, ).warn(
2363
2369
  `drain: ${expected - acked.length} of ${expected} acks were dropped \u2014 the lease was taken by another worker mid-handler. That work will be redelivered (at-least-once), but persistent drops mean leaseMillis is too short for this handler.`
2364
2370
  );
2365
2371
  const closeable = handled.filter((h) => h.close !== void 0).map((h) => h.close);
@@ -2459,9 +2465,9 @@ var DrainController = (_class5 = class {
2459
2465
  if (!this.armed || this._stopped || this._inflight)
2460
2466
  return EMPTY_DRAIN;
2461
2467
  const d = _nullishCoalesce(this._deps.defaults, () => ( {}));
2462
- const streamLimit = _nullishCoalesce(_nullishCoalesce(d.streamLimit, () => ( options.streamLimit)), () => ( _chunkGBAMBUDNcjs.DEFAULT_STREAM_LIMIT));
2463
- const eventLimit = _nullishCoalesce(options.eventLimit, () => ( _chunkGBAMBUDNcjs.DEFAULT_EVENT_LIMIT));
2464
- const leaseMillis = _nullishCoalesce(_nullishCoalesce(d.leaseMillis, () => ( options.leaseMillis)), () => ( _chunkGBAMBUDNcjs.DEFAULT_LEASE_MILLIS));
2468
+ const streamLimit = _nullishCoalesce(_nullishCoalesce(d.streamLimit, () => ( options.streamLimit)), () => ( _chunkBNTVE7RQcjs.DEFAULT_STREAM_LIMIT));
2469
+ const eventLimit = _nullishCoalesce(options.eventLimit, () => ( _chunkBNTVE7RQcjs.DEFAULT_EVENT_LIMIT));
2470
+ const leaseMillis = _nullishCoalesce(_nullishCoalesce(d.leaseMillis, () => ( options.leaseMillis)), () => ( _chunkBNTVE7RQcjs.DEFAULT_LEASE_MILLIS));
2465
2471
  if (this._deps.breaker.state(Date.now()) === "open")
2466
2472
  return EMPTY_DRAIN;
2467
2473
  const pass = this._pass(streamLimit, eventLimit, leaseMillis).finally(
@@ -2536,7 +2542,7 @@ function pii_gate(event, fields, predicate, actor) {
2536
2542
  const { pii, ...rest } = event;
2537
2543
  if (pii == null) {
2538
2544
  const shredded = { ...data };
2539
- for (const f of fields) shredded[f] = _chunkRF5MV72Kcjs.SHREDDED;
2545
+ for (const f of fields) shredded[f] = _chunkL66OOP2Fcjs.SHREDDED;
2540
2546
  return { ...rest, data: shredded };
2541
2547
  }
2542
2548
  const allowed = !!actor && !!predicate && predicate(event, actor);
@@ -2547,7 +2553,7 @@ function pii_gate(event, fields, predicate, actor) {
2547
2553
  };
2548
2554
  }
2549
2555
  const redacted = { ...data };
2550
- for (const f of fields) redacted[f] = _chunkRF5MV72Kcjs.REDACTED;
2556
+ for (const f of fields) redacted[f] = _chunkL66OOP2Fcjs.REDACTED;
2551
2557
  return { ...rest, data: redacted };
2552
2558
  }
2553
2559
  var IDENTITY_GATE = (event) => event;
@@ -2569,7 +2575,7 @@ function pii_strip(event, fields) {
2569
2575
 
2570
2576
  // src/internal/projection-fold.ts
2571
2577
  var FOLD_RESET = /* @__PURE__ */ Symbol("act.fold.reset");
2572
- function make_fold_handler(me, flush, config2, patch_fn = bare_patch, sensitive_fields) {
2578
+ function make_fold_handler(me, flush, config2, patch_fn, sensitive_fields) {
2573
2579
  const load_me = {
2574
2580
  ...me,
2575
2581
  view: (raw, actor) => {
@@ -2655,7 +2661,7 @@ function make_fold_handler(me, flush, config2, patch_fn = bare_patch, sensitive_
2655
2661
  }
2656
2662
 
2657
2663
  // src/internal/defer-config.ts
2658
- var _zod2 = require('zod');
2664
+
2659
2665
  var DeferDurationSchema = _zod2.z.object({
2660
2666
  days: _zod2.z.number().positive().optional(),
2661
2667
  hours: _zod2.z.number().positive().optional(),
@@ -2684,7 +2690,7 @@ function make_deferred(handler, schedule) {
2684
2690
  const call = handler;
2685
2691
  const deferred = async (event, stream, app) => {
2686
2692
  const when = typeof schedule === "function" ? schedule(event) : schedule;
2687
- if (Date.now() < resolve_defer_at(when, event)) throw new (0, _chunkRF5MV72Kcjs.DeferSignal)(when);
2693
+ if (Date.now() < resolve_defer_at(when, event)) throw new (0, _chunkL66OOP2Fcjs.DeferSignal)(when);
2688
2694
  return call(event, stream, app);
2689
2695
  };
2690
2696
  Object.defineProperty(deferred, "name", { value: handler.name });
@@ -2753,7 +2759,7 @@ function build_handle(deps) {
2753
2759
  handled++;
2754
2760
  }
2755
2761
  } catch (error) {
2756
- if (error instanceof _chunkRF5MV72Kcjs.DeferSignal) {
2762
+ if (error instanceof _chunkL66OOP2Fcjs.DeferSignal) {
2757
2763
  let defer;
2758
2764
  try {
2759
2765
  defer = resolve_defer_at(error.when, event);
@@ -2933,10 +2939,8 @@ var SettleLoop = (_class6 = class {
2933
2939
  }, _class6);
2934
2940
 
2935
2941
  // src/act.ts
2936
- function validate_only_lanes(options, lanes) {
2937
- if (!options.onlyLanes || options.onlyLanes.length === 0) return;
2938
- const declared = /* @__PURE__ */ new Set(["default", ...lanes.map((l) => l.name)]);
2939
- const unknown = options.onlyLanes.filter((l) => !declared.has(l));
2942
+ function validate_only_lanes(only, declared) {
2943
+ const unknown = (_nullishCoalesce(only, () => ( []))).filter((l) => !declared.includes(l));
2940
2944
  if (unknown.length > 0)
2941
2945
  throw new Error(
2942
2946
  `ActOptions.onlyLanes references undeclared lane(s): ${unknown.map((l) => `"${l}"`).join(", ")}`
@@ -3019,7 +3023,7 @@ var Act = (_class7 = class {
3019
3023
  /** Lanes to arm per event; `"all"` when a dynamic resolver hides the lane. */
3020
3024
 
3021
3025
 
3022
- __init27() {this._logger = _chunkGBAMBUDNcjs.log.call(void 0, )}
3026
+ __init27() {this._logger = _chunkBNTVE7RQcjs.log.call(void 0, )}
3023
3027
  /** This Act's ports: its own bag, or the singleton adapters. */
3024
3028
 
3025
3029
  /** Runs a body so internal `store()`/`cache()` calls resolve to `_ports`. */
@@ -3040,10 +3044,10 @@ var Act = (_class7 = class {
3040
3044
  this._batch_handlers = batch_handlers;
3041
3045
  this._lanes = lanes;
3042
3046
  this._declared_lanes = ["default", ...lanes.map((l) => l.name)];
3043
- validate_only_lanes(options, lanes);
3044
- this._ports = _nullishCoalesce(options.scoped, () => ( _chunkGBAMBUDNcjs.default_scope.call(void 0, )));
3047
+ validate_only_lanes(options.onlyLanes, this._declared_lanes);
3048
+ this._ports = _nullishCoalesce(options.scoped, () => ( _chunkBNTVE7RQcjs.default_scope.call(void 0, )));
3045
3049
  const ports = this._ports;
3046
- this._scoped = _chunkGBAMBUDNcjs.make_run_scoped.call(void 0, {
3050
+ this._scoped = _chunkBNTVE7RQcjs.make_run_scoped.call(void 0, {
3047
3051
  // Getters, not a spread: the singletons resolve lazily, so a later
3048
3052
  // `store(...)` / `cache(...)` still takes effect.
3049
3053
  get store() {
@@ -3053,14 +3057,14 @@ var Act = (_class7 = class {
3053
3057
  return ports.cache;
3054
3058
  },
3055
3059
  // Parsed per build, so a bad window throws on every build.
3056
- autoclose_window: _chunkGBAMBUDNcjs.resolveAutocloseConfig.call(void 0, options).autocloseWindow
3060
+ autoclose_window: _chunkBNTVE7RQcjs.resolveAutocloseConfig.call(void 0, options).autocloseWindow
3057
3061
  });
3058
3062
  this._correlator = _nullishCoalesce(options.correlator, () => ( default_correlator));
3059
3063
  this._es = build_es(this._logger, this._correlator, patch_fn);
3060
3064
  this._cd = build_drain(this._logger);
3061
3065
  const handle = build_handle({
3062
3066
  logger: this._logger,
3063
- reaction_scope: _chunkGBAMBUDNcjs.make_reaction_scope.call(void 0, {
3067
+ reaction_scope: _chunkBNTVE7RQcjs.make_reaction_scope.call(void 0, {
3064
3068
  do: this.do.bind(this),
3065
3069
  load: this.load.bind(this),
3066
3070
  query: this.query.bind(this),
@@ -3082,7 +3086,7 @@ var Act = (_class7 = class {
3082
3086
  handle,
3083
3087
  handle_batch
3084
3088
  );
3085
- this._advise_orphaned_lanes(options);
3089
+ this._advise_orphaned_lanes();
3086
3090
  this._audit_deps = this._build_audit_deps();
3087
3091
  this._correlate = this._build_correlate(options, classification);
3088
3092
  this._settle = this._build_settle(options);
@@ -3090,12 +3094,12 @@ var Act = (_class7 = class {
3090
3094
  this._ports.store,
3091
3095
  options.listen !== false
3092
3096
  );
3093
- _chunkGBAMBUDNcjs.register_weak_disposer.call(void 0, new WeakRef(this), (self) => self.shutdown());
3097
+ _chunkBNTVE7RQcjs.register_weak_disposer.call(void 0, new WeakRef(this), (self) => self.shutdown());
3094
3098
  }
3095
3099
  /** Shared by drain, settle and autoclose; bad knobs throw at build. */
3096
3100
  _build_breaker(options) {
3097
3101
  return new CircuitBreaker(
3098
- _chunkGBAMBUDNcjs.resolveCircuitBreakerConfig.call(void 0, options.circuitBreaker),
3102
+ _chunkBNTVE7RQcjs.resolveCircuitBreakerConfig.call(void 0, options.circuitBreaker),
3099
3103
  {
3100
3104
  on_error: (error, circuit) => this._emit_error(error, circuit),
3101
3105
  // When the cooldown elapses, settle once: its scan or claim is the
@@ -3107,7 +3111,7 @@ var Act = (_class7 = class {
3107
3111
  /** Apps that declare no lanes pass no lane filter to `claim`. */
3108
3112
  _build_drain_controllers(options, lanes, handle, handle_batch) {
3109
3113
  const all_lanes = this._declared_lanes;
3110
- const only_set = options.onlyLanes && options.onlyLanes.length > 0 ? new Set(options.onlyLanes) : void 0;
3114
+ const only_set = _optionalChain([options, 'access', _127 => _127.onlyLanes, 'optionalAccess', _128 => _128.length]) ? new Set(options.onlyLanes) : void 0;
3111
3115
  const active_lanes = only_set ? all_lanes.filter((n) => only_set.has(n)) : all_lanes;
3112
3116
  const single_default_lane = lanes.length === 0;
3113
3117
  const controllers = /* @__PURE__ */ new Map();
@@ -3129,7 +3133,7 @@ var Act = (_class7 = class {
3129
3133
  try {
3130
3134
  await this._run_close(targets);
3131
3135
  } catch (error) {
3132
- if (error instanceof _chunkRF5MV72Kcjs.StoreError) throw error;
3136
+ if (error instanceof _chunkL66OOP2Fcjs.StoreError) throw error;
3133
3137
  this._logger.error(
3134
3138
  error,
3135
3139
  `Reaction-requested close of ${targets.map((t) => `"${t.stream}"`).join(", ")} failed and was not retried; close it with app.close(...) once the cause is fixed.`
@@ -3144,15 +3148,14 @@ var Act = (_class7 = class {
3144
3148
  leaseMillis: cfg.leaseMillis
3145
3149
  }
3146
3150
  });
3147
- if (_optionalChain([cfg, 'optionalAccess', _127 => _127.cycleMs]) !== void 0 && options.drain !== false)
3151
+ if (_optionalChain([cfg, 'optionalAccess', _129 => _129.cycleMs]) !== void 0 && this._drain)
3148
3152
  controller.start(cfg.cycleMs);
3149
3153
  controllers.set(name, controller);
3150
3154
  }
3151
3155
  return controllers;
3152
3156
  }
3153
3157
  /** One process can't see the cluster, so it reports its own lane gaps. */
3154
- _advise_orphaned_lanes(options) {
3155
- if (!options.onlyLanes || options.onlyLanes.length === 0) return;
3158
+ _advise_orphaned_lanes() {
3156
3159
  const active = new Set(this._drain_controllers.keys());
3157
3160
  const orphaned = this._declared_lanes.filter((name) => !active.has(name));
3158
3161
  if (orphaned.length === 0) return;
@@ -3164,7 +3167,7 @@ var Act = (_class7 = class {
3164
3167
  /** Audit deps, built after the controllers so the lane set is final. */
3165
3168
  _build_audit_deps() {
3166
3169
  return {
3167
- store: _chunkGBAMBUDNcjs.store,
3170
+ store: _chunkBNTVE7RQcjs.store,
3168
3171
  event_to_state: this._event_to_state,
3169
3172
  // Declared lanes, not this process's controllers: a lane another
3170
3173
  // worker drains is not `unknown-lane`.
@@ -3177,7 +3180,7 @@ var Act = (_class7 = class {
3177
3180
  registry: this.registry,
3178
3181
  static_targets: classification.static_targets,
3179
3182
  cd: this._cd,
3180
- max_subscribed_streams: _nullishCoalesce(options.maxSubscribedStreams, () => ( _chunkRF5MV72Kcjs.DEFAULT_MAX_SUBSCRIBED_STREAMS)),
3183
+ max_subscribed_streams: _nullishCoalesce(options.maxSubscribedStreams, () => ( _chunkL66OOP2Fcjs.DEFAULT_MAX_SUBSCRIBED_STREAMS)),
3181
3184
  // Declared lanes (not active ones): a lane another process claims is
3182
3185
  // still a valid destination.
3183
3186
  declared_lanes: new Set(this._declared_lanes),
@@ -3193,26 +3196,23 @@ var Act = (_class7 = class {
3193
3196
  /** Cold start: an idle deferred stream still fires on time after a restart. */
3194
3197
  async _seed_persisted_defers() {
3195
3198
  const now = Date.now();
3196
- await walk_streams(_chunkGBAMBUDNcjs.store.call(void 0, ), (pos) => {
3199
+ await walk_streams(_chunkBNTVE7RQcjs.store.call(void 0, ), (pos) => {
3197
3200
  if (pos.deferred_at === void 0 || pos.deferred_at <= now) return;
3198
3201
  const controller = this._drain_controllers.get(_nullishCoalesce(pos.lane, () => ( "default")));
3199
- _optionalChain([controller, 'optionalAccess', _128 => _128.seed_defer, 'call', _129 => _129(pos.stream, pos.deferred_at)]);
3202
+ _optionalChain([controller, 'optionalAccess', _130 => _130.seed_defer, 'call', _131 => _131(pos.stream, pos.deferred_at)]);
3200
3203
  });
3201
3204
  }
3202
3205
  _build_settle(options) {
3203
3206
  return new SettleLoop(
3204
3207
  {
3205
- correlate: (q) => this._correlate_pass(
3206
- { ...q, limit: _nullishCoalesce(_nullishCoalesce(q.limit, () => ( this._poll_limit)), () => ( 100)) },
3207
- true
3208
- ),
3208
+ correlate: (q) => this._correlate_pass(_nullishCoalesce(_nullishCoalesce(q.limit, () => ( this._poll_limit)), () => ( 100)), true),
3209
3209
  // `settle()` validated the options, and `_schedule` skips writer-only
3210
3210
  // instances, so the loop drains through the internal path.
3211
3211
  drain: (o) => this._scoped(() => this._drain_all(o)),
3212
3212
  on_settled: (drain) => this.emit("settled", drain),
3213
3213
  breaker: this._breaker
3214
3214
  },
3215
- _nullishCoalesce(options.settleDebounceMs, () => ( _chunkRF5MV72Kcjs.DEFAULT_SETTLE_DEBOUNCE_MS))
3215
+ _nullishCoalesce(options.settleDebounceMs, () => ( _chunkL66OOP2Fcjs.DEFAULT_SETTLE_DEBOUNCE_MS))
3216
3216
  );
3217
3217
  }
3218
3218
 
@@ -3232,7 +3232,7 @@ var Act = (_class7 = class {
3232
3232
  */
3233
3233
  shutdown(options) {
3234
3234
  if (!this._shutdown_promise) {
3235
- _chunkGBAMBUDNcjs.resolveShutdownConfig.call(void 0, options);
3235
+ _chunkBNTVE7RQcjs.resolveShutdownConfig.call(void 0, options);
3236
3236
  this._shutdown_promise = (async () => {
3237
3237
  this.stop_correlations();
3238
3238
  this._settle.stop(true);
@@ -3240,7 +3240,7 @@ var Act = (_class7 = class {
3240
3240
  for (const c of this._drain_controllers.values()) c.stop();
3241
3241
  const disposer = await this._notify_disposer;
3242
3242
  if (disposer) await disposer();
3243
- await this._await_inflight(_optionalChain([options, 'optionalAccess', _130 => _130.graceMs]));
3243
+ await this._await_inflight(_optionalChain([options, 'optionalAccess', _132 => _132.graceMs]));
3244
3244
  await this._scoped(() => this._correlate.release_correlation());
3245
3245
  this._emitter.removeAllListeners();
3246
3246
  })();
@@ -3252,10 +3252,10 @@ var Act = (_class7 = class {
3252
3252
  * default for none or 0, and for a running settle), capped.
3253
3253
  */
3254
3254
  _derive_grace_ms(running, settling) {
3255
- let max = settling ? _chunkGBAMBUDNcjs.DEFAULT_LEASE_MILLIS : 0;
3255
+ let max = settling ? _chunkBNTVE7RQcjs.DEFAULT_LEASE_MILLIS : 0;
3256
3256
  for (const c of running)
3257
- max = Math.max(max, c.lease_millis || _chunkGBAMBUDNcjs.DEFAULT_LEASE_MILLIS);
3258
- return Math.min(max, _chunkGBAMBUDNcjs.MAX_SHUTDOWN_GRACE_MS);
3257
+ max = Math.max(max, c.lease_millis || _chunkBNTVE7RQcjs.DEFAULT_LEASE_MILLIS);
3258
+ return Math.min(max, _chunkBNTVE7RQcjs.MAX_SHUTDOWN_GRACE_MS);
3259
3259
  }
3260
3260
  async _await_inflight(grace_ms) {
3261
3261
  const running = [...this._drain_controllers.values()].filter(
@@ -3300,9 +3300,10 @@ var Act = (_class7 = class {
3300
3300
  }
3301
3301
  /**
3302
3302
  * Executes an action: validates the payload, loads the state, checks its
3303
- * invariants, and commits the events its handler emits, with optimistic
3304
- * concurrency on the stream. The reactions to those events settle on
3305
- * their own (unless `autoSettle: false`).
3303
+ * preconditions, runs the handler, folds the events it emits, checks the
3304
+ * state's invariants (its schema) on the result, and commits them with
3305
+ * optimistic concurrency on the stream. The reactions to those events
3306
+ * settle on their own (unless `autoSettle: false`).
3306
3307
  *
3307
3308
  * @template TKey - Action name from registered actions
3308
3309
  * @param action - The name of the action to execute
@@ -3313,8 +3314,9 @@ var Act = (_class7 = class {
3313
3314
  * framework or orchestrator-level correlator for this call only.
3314
3315
  * @returns Array of snapshots for all affected states (usually one)
3315
3316
  *
3316
- * @throws {ValidationError} If payload doesn't match action schema
3317
- * @throws {InvariantError} If business rules are violated
3317
+ * @throws {ValidationError} If the payload doesn't match the action schema,
3318
+ * or the state the action leaves breaks the state schema
3319
+ * @throws {PreconditionError} If business rules are violated
3318
3320
  * @throws {ConcurrencyError} If another process modified the stream
3319
3321
  *
3320
3322
  * @example Basic action execution
@@ -3333,11 +3335,11 @@ var Act = (_class7 = class {
3333
3335
  *
3334
3336
  * @see {@link Target} for target structure
3335
3337
  * @see {@link Snapshot} for return value structure
3336
- * @see {@link ValidationError}, {@link InvariantError}, {@link ConcurrencyError}
3338
+ * @see {@link ValidationError}, {@link PreconditionError}, {@link ConcurrencyError}
3337
3339
  */
3338
3340
  async do(action2, target, payload, options) {
3339
- const reacting_to = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _131 => _131.reactingTo]), () => ( _chunkGBAMBUDNcjs.current_reacting.call(void 0, )));
3340
- const do_options = reacting_to === _optionalChain([options, 'optionalAccess', _132 => _132.reactingTo]) ? options : { ...options, reactingTo: reacting_to };
3341
+ const reacting_to = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _133 => _133.reactingTo]), () => ( _chunkBNTVE7RQcjs.current_reacting.call(void 0, )));
3342
+ const do_options = reacting_to === _optionalChain([options, 'optionalAccess', _134 => _134.reactingTo]) ? options : { ...options, reactingTo: reacting_to };
3341
3343
  return this._scoped(async () => {
3342
3344
  const snapshots = await this._es.action(
3343
3345
  this.registry.actions[action2],
@@ -3397,11 +3399,11 @@ var Act = (_class7 = class {
3397
3399
  return this._scoped(async () => {
3398
3400
  let first;
3399
3401
  let last;
3400
- const count = await _chunkGBAMBUDNcjs.store.call(void 0, ).query((e) => {
3402
+ const count = await _chunkBNTVE7RQcjs.store.call(void 0, ).query((e) => {
3401
3403
  const gated = this.registry.query_gate(e.name)(e);
3402
3404
  if (!first) first = gated;
3403
3405
  last = gated;
3404
- _optionalChain([callback, 'optionalCall', _133 => _133(gated)]);
3406
+ _optionalChain([callback, 'optionalCall', _135 => _135(gated)]);
3405
3407
  }, query);
3406
3408
  return { first, last, count };
3407
3409
  });
@@ -3427,7 +3429,7 @@ var Act = (_class7 = class {
3427
3429
  async query_array(query) {
3428
3430
  return this._scoped(async () => {
3429
3431
  const events = [];
3430
- await _chunkGBAMBUDNcjs.store.call(void 0, ).query((e) => {
3432
+ await _chunkBNTVE7RQcjs.store.call(void 0, ).query((e) => {
3431
3433
  events.push(this.registry.query_gate(e.name)(e));
3432
3434
  }, query);
3433
3435
  return events;
@@ -3447,14 +3449,14 @@ var Act = (_class7 = class {
3447
3449
  */
3448
3450
  async forget(stream) {
3449
3451
  return this._scoped(async () => {
3450
- const s = _chunkGBAMBUDNcjs.store.call(void 0, );
3452
+ const s = _chunkBNTVE7RQcjs.store.call(void 0, );
3451
3453
  if (!s.forget_pii) {
3452
3454
  throw new Error(
3453
3455
  `Store does not implement forget_pii \u2014 adapter cannot comply with sensitive-data erasure. Use an adapter that declares pii_isolation: true (e.g. @rotorsoft/act on the in-memory store).`
3454
3456
  );
3455
3457
  }
3456
3458
  const eventCount = await s.forget_pii(stream);
3457
- await _chunkGBAMBUDNcjs.cache.call(void 0, ).invalidate(stream);
3459
+ await _chunkBNTVE7RQcjs.cache.call(void 0, ).invalidate(stream);
3458
3460
  if (eventCount > 0) {
3459
3461
  this.emit("forgotten", { stream, at: /* @__PURE__ */ new Date(), eventCount });
3460
3462
  }
@@ -3488,7 +3490,7 @@ var Act = (_class7 = class {
3488
3490
  * @see {@link correlate} for dynamic stream discovery
3489
3491
  */
3490
3492
  async drain(options = {}) {
3491
- _chunkGBAMBUDNcjs.resolveDrainConfig.call(void 0, options);
3493
+ _chunkBNTVE7RQcjs.resolveDrainConfig.call(void 0, options);
3492
3494
  if (!this._drain)
3493
3495
  return { fetched: [], leased: [], acked: [], blocked: [] };
3494
3496
  return this._scoped(() => this._drain_all(options));
@@ -3528,7 +3530,7 @@ var Act = (_class7 = class {
3528
3530
  }
3529
3531
  if (to_arm.size === 0) return false;
3530
3532
  this._correlate.arm();
3531
- for (const lane of to_arm) _optionalChain([this, 'access', _134 => _134._drain_controllers, 'access', _135 => _135.get, 'call', _136 => _136(lane), 'optionalAccess', _137 => _137.arm, 'call', _138 => _138()]);
3533
+ for (const lane of to_arm) _optionalChain([this, 'access', _136 => _136._drain_controllers, 'access', _137 => _137.get, 'call', _138 => _138(lane), 'optionalAccess', _139 => _139.arm, 'call', _140 => _140()]);
3532
3534
  return true;
3533
3535
  }
3534
3536
  /** In parallel, so a slow lane never holds up a fast one. */
@@ -3567,17 +3569,17 @@ var Act = (_class7 = class {
3567
3569
  * @see {@link start_correlations} for automatic periodic correlation
3568
3570
  */
3569
3571
  async correlate(query = {}) {
3570
- const pass = await this._correlate_pass({ limit: _nullishCoalesce(query.limit, () => ( 10)) });
3572
+ const pass = await this._correlate_pass(_nullishCoalesce(query.limit, () => ( 10)));
3571
3573
  return {
3572
3574
  subscribed: pass.kind === "scanned" ? pass.subscribed : 0,
3573
3575
  last_id: pass.last_id
3574
3576
  };
3575
3577
  }
3576
3578
  /** One correlate pass; arms every lane when it found work. */
3577
- async _correlate_pass(query, lease = false) {
3579
+ async _correlate_pass(limit, lease = false) {
3578
3580
  if (!this._drain) return { kind: "idle", last_id: -1 };
3579
3581
  return this._scoped(async () => {
3580
- const pass = await this._correlate.correlate(query, lease);
3582
+ const pass = await this._correlate.correlate(limit, lease);
3581
3583
  if (pass.kind === "scanned" && pass.marked > 0) this._arm_all();
3582
3584
  return pass;
3583
3585
  });
@@ -3670,9 +3672,9 @@ var Act = (_class7 = class {
3670
3672
  */
3671
3673
  async reset(input) {
3672
3674
  return this._scoped(async () => {
3673
- const count = await _chunkGBAMBUDNcjs.store.call(void 0, ).reset(input);
3675
+ const count = await _chunkBNTVE7RQcjs.store.call(void 0, ).reset(input);
3674
3676
  for (const handler of this._batch_handlers.values())
3675
- _optionalChain([handler, 'access', _139 => _139[FOLD_RESET], 'optionalCall', _140 => _140()]);
3677
+ _optionalChain([handler, 'access', _141 => _141[FOLD_RESET], 'optionalCall', _142 => _142()]);
3676
3678
  if (count > 0) {
3677
3679
  this._wake();
3678
3680
  }
@@ -3706,7 +3708,7 @@ var Act = (_class7 = class {
3706
3708
  */
3707
3709
  async unblock(input) {
3708
3710
  return this._scoped(async () => {
3709
- const count = await _chunkGBAMBUDNcjs.store.call(void 0, ).unblock(input);
3711
+ const count = await _chunkBNTVE7RQcjs.store.call(void 0, ).unblock(input);
3710
3712
  if (count > 0) {
3711
3713
  this._wake();
3712
3714
  }
@@ -3761,7 +3763,7 @@ var Act = (_class7 = class {
3761
3763
  return { ...partial, duration_ms: Date.now() - started };
3762
3764
  }
3763
3765
  const target = _nullishCoalesce(sink, () => ( (() => {
3764
- const s = _chunkGBAMBUDNcjs.store.call(void 0, );
3766
+ const s = _chunkBNTVE7RQcjs.store.call(void 0, );
3765
3767
  if (!s.restore) throw new Error("adapter has no restore capability");
3766
3768
  return s;
3767
3769
  })()));
@@ -3807,11 +3809,11 @@ var Act = (_class7 = class {
3807
3809
  async blocked_streams(options) {
3808
3810
  return this._scoped(async () => {
3809
3811
  const positions = [];
3810
- await _chunkGBAMBUDNcjs.store.call(void 0, ).query_streams(
3812
+ await _chunkBNTVE7RQcjs.store.call(void 0, ).query_streams(
3811
3813
  (p) => {
3812
3814
  positions.push(p);
3813
3815
  },
3814
- { blocked: true, after: _optionalChain([options, 'optionalAccess', _141 => _141.after]), limit: _optionalChain([options, 'optionalAccess', _142 => _142.limit]) }
3816
+ { blocked: true, after: _optionalChain([options, 'optionalAccess', _143 => _143.after]), limit: _optionalChain([options, 'optionalAccess', _144 => _144.limit]) }
3815
3817
  );
3816
3818
  return positions;
3817
3819
  });
@@ -3859,7 +3861,7 @@ var Act = (_class7 = class {
3859
3861
  * @see {@link Store.prioritize} for the underlying primitive
3860
3862
  */
3861
3863
  async prioritize(filter, priority) {
3862
- return this._scoped(() => _chunkGBAMBUDNcjs.store.call(void 0, ).prioritize(filter, priority));
3864
+ return this._scoped(() => _chunkBNTVE7RQcjs.store.call(void 0, ).prioritize(filter, priority));
3863
3865
  }
3864
3866
  /** Shared by `close()` and reaction-requested closes. */
3865
3867
  async _run_close(targets) {
@@ -3939,7 +3941,7 @@ var Act = (_class7 = class {
3939
3941
  * @see {@link correlate} for manual correlation
3940
3942
  */
3941
3943
  settle(options) {
3942
- _chunkGBAMBUDNcjs.resolveSettleConfig.call(void 0, _nullishCoalesce(options, () => ( {})));
3944
+ _chunkBNTVE7RQcjs.resolveSettleConfig.call(void 0, _nullishCoalesce(options, () => ( {})));
3943
3945
  this._schedule(options);
3944
3946
  }
3945
3947
  }, _class7);
@@ -4005,12 +4007,12 @@ function policy_min_after_days(options) {
4005
4007
  const parsed = AutoclosePolicySchema.parse(options);
4006
4008
  const windows = [];
4007
4009
  if (parsed.after) windows.push(parsed.after.days);
4008
- if (_optionalChain([parsed, 'access', _143 => _143.or, 'optionalAccess', _144 => _144.after])) windows.push(parsed.or.after.days);
4010
+ if (_optionalChain([parsed, 'access', _145 => _145.or, 'optionalAccess', _146 => _146.after])) windows.push(parsed.or.after.days);
4009
4011
  return windows.length ? Math.min(...windows) : void 0;
4010
4012
  }
4011
4013
  function policy_keep_days(options) {
4012
4014
  const parsed = AutoclosePolicySchema.parse(options);
4013
- return _optionalChain([parsed, 'access', _145 => _145.keep, 'optionalAccess', _146 => _146.days]);
4015
+ return _optionalChain([parsed, 'access', _147 => _147.keep, 'optionalAccess', _148 => _148.days]);
4014
4016
  }
4015
4017
  function compile_autoclose_policy(options) {
4016
4018
  const parsed = AutoclosePolicySchema.parse(options);
@@ -4042,7 +4044,7 @@ function hour_in_zone(now, timeZone) {
4042
4044
  hour: "2-digit",
4043
4045
  hourCycle: "h23"
4044
4046
  }).formatToParts(now);
4045
- return Number(_optionalChain([parts, 'access', _147 => _147.find, 'call', _148 => _148((p) => p.type === "hour"), 'optionalAccess', _149 => _149.value]));
4047
+ return Number(_optionalChain([parts, 'access', _149 => _149.find, 'call', _150 => _150((p) => p.type === "hour"), 'optionalAccess', _151 => _151.value]));
4046
4048
  }
4047
4049
  function hour_in_range(hour, start, end) {
4048
4050
  return start < end ? hour >= start && hour < end : hour >= start || hour < end;
@@ -4095,16 +4097,16 @@ function synthesize_autoclose_reactions(registry, states, read_window) {
4095
4097
  }),
4096
4098
  // Never block on autoclose: a transient query/store error should retry,
4097
4099
  // not quarantine the synthetic stream.
4098
- options: { blockOnError: false, maxRetries: _chunkGBAMBUDNcjs.DEFAULT_MAX_RETRIES },
4100
+ options: { blockOnError: false, maxRetries: _chunkBNTVE7RQcjs.DEFAULT_MAX_RETRIES },
4099
4101
  handler: async (event) => {
4100
4102
  const aggregate = event.stream;
4101
4103
  const window = read_window();
4102
4104
  if (!in_autoclose_window(window, /* @__PURE__ */ new Date()))
4103
- throw new (0, _chunkRF5MV72Kcjs.DeferSignal)({ at: next_window_open(window, /* @__PURE__ */ new Date()) });
4104
- const stats = await _chunkGBAMBUDNcjs.store.call(void 0, ).query_stats([aggregate], {
4105
+ throw new (0, _chunkL66OOP2Fcjs.DeferSignal)({ at: next_window_open(window, /* @__PURE__ */ new Date()) });
4106
+ const stats = await _chunkBNTVE7RQcjs.store.call(void 0, ).query_stats([aggregate], {
4105
4107
  count: true,
4106
4108
  tail: keep_days !== void 0 ? true : void 0,
4107
- exclude: [_chunkRF5MV72Kcjs.TOMBSTONE_EVENT, _chunkRF5MV72Kcjs.SNAP_EVENT]
4109
+ exclude: [_chunkL66OOP2Fcjs.TOMBSTONE_EVENT, _chunkL66OOP2Fcjs.SNAP_EVENT]
4108
4110
  });
4109
4111
  const entry = stats.get(aggregate);
4110
4112
  if (!entry) return;
@@ -4135,12 +4137,12 @@ function synthesize_autoclose_reactions(registry, states, read_window) {
4135
4137
  dues.push(days_after(entry.tail.created, keep_days));
4136
4138
  const future = dues.map((d) => d.getTime()).filter((t) => t > Date.now());
4137
4139
  if (future.length)
4138
- throw new (0, _chunkRF5MV72Kcjs.DeferSignal)({ at: new Date(Math.min(...future)) });
4140
+ throw new (0, _chunkL66OOP2Fcjs.DeferSignal)({ at: new Date(Math.min(...future)) });
4139
4141
  }
4140
4142
  };
4141
4143
  const key = `__autoclose_${st.name}`;
4142
4144
  for (const event_name of Object.keys(st.events)) {
4143
- _optionalChain([registry, 'access', _150 => _150.events, 'access', _151 => _151[event_name], 'optionalAccess', _152 => _152.reactions, 'access', _153 => _153.set, 'call', _154 => _154(
4145
+ _optionalChain([registry, 'access', _152 => _152.events, 'access', _153 => _153[event_name], 'optionalAccess', _154 => _154.reactions, 'access', _155 => _155.set, 'call', _156 => _156(
4144
4146
  key,
4145
4147
  reaction
4146
4148
  )]);
@@ -4340,9 +4342,9 @@ var _this_ = ({ stream }) => ({
4340
4342
 
4341
4343
  // src/builders/builder-utils.ts
4342
4344
  function register_lane(config2, lanes) {
4343
- _chunkGBAMBUDNcjs.resolveLaneConfig.call(void 0, config2);
4344
- if (config2.name === _chunkRF5MV72Kcjs.DEFAULT_LANE)
4345
- throw new Error(`Lane "${_chunkRF5MV72Kcjs.DEFAULT_LANE}" is reserved`);
4345
+ _chunkBNTVE7RQcjs.resolveLaneConfig.call(void 0, config2);
4346
+ if (config2.name === _chunkL66OOP2Fcjs.DEFAULT_LANE)
4347
+ throw new Error(`Lane "${_chunkL66OOP2Fcjs.DEFAULT_LANE}" is reserved`);
4346
4348
  const existing = lanes.find((l) => l.name === config2.name);
4347
4349
  if (!existing) return void lanes.push(config2);
4348
4350
  if (existing.leaseMillis !== config2.leaseMillis || existing.streamLimit !== config2.streamLimit || existing.cycleMs !== config2.cycleMs)
@@ -4384,10 +4386,10 @@ function reaction_on(event, events, builder) {
4384
4386
  // Validate the whole bag at the declaration site so a bad
4385
4387
  // `maxRetries`/`backoff`/`blockOnError` throws ZodError at build,
4386
4388
  // not a NaN gate on the first retry.
4387
- options: _chunkGBAMBUDNcjs.resolveReactionConfig.call(void 0, {
4388
- blockOnError: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _155 => _155.blockOnError]), () => ( _chunkGBAMBUDNcjs.DEFAULT_BLOCK_ON_ERROR)),
4389
- maxRetries: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _156 => _156.maxRetries]), () => ( _chunkGBAMBUDNcjs.DEFAULT_MAX_RETRIES)),
4390
- backoff: _optionalChain([options, 'optionalAccess', _157 => _157.backoff])
4389
+ options: _chunkBNTVE7RQcjs.resolveReactionConfig.call(void 0, {
4390
+ blockOnError: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _157 => _157.blockOnError]), () => ( _chunkBNTVE7RQcjs.DEFAULT_BLOCK_ON_ERROR)),
4391
+ maxRetries: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _158 => _158.maxRetries]), () => ( _chunkBNTVE7RQcjs.DEFAULT_MAX_RETRIES)),
4392
+ backoff: _optionalChain([options, 'optionalAccess', _159 => _159.backoff])
4391
4393
  })
4392
4394
  };
4393
4395
  },
@@ -4406,9 +4408,9 @@ function reaction_on(event, events, builder) {
4406
4408
 
4407
4409
  // src/internal/date-reviver.ts
4408
4410
 
4409
- var def_of = (schema) => _nullishCoalesce(_optionalChain([schema, 'access', _158 => _158._zod, 'optionalAccess', _159 => _159.def]), () => ( schema.def));
4411
+ var def_of = (schema) => _nullishCoalesce(_optionalChain([schema, 'access', _160 => _160._zod, 'optionalAccess', _161 => _161.def]), () => ( schema.def));
4410
4412
  function variant_schema(schema) {
4411
- const shape = _optionalChain([def_of, 'call', _160 => _160(schema), 'optionalAccess', _161 => _161.shape]);
4413
+ const shape = _optionalChain([def_of, 'call', _162 => _162(schema), 'optionalAccess', _163 => _163.shape]);
4412
4414
  if (!shape) {
4413
4415
  const dates = date_reviver_schema(schema);
4414
4416
  return { schema: _nullishCoalesce(dates, () => ( schema)), dated: !!dates };
@@ -4456,7 +4458,7 @@ function date_reviver_schema(schema) {
4456
4458
  return variants.some((v) => v.dated) ? _zod2.z.union(variants.map((v) => v.schema)) : void 0;
4457
4459
  }
4458
4460
  case "nullable":
4459
- return _optionalChain([inner, 'call', _162 => _162(), 'optionalAccess', _163 => _163.nullable, 'call', _164 => _164()]);
4461
+ return _optionalChain([inner, 'call', _164 => _164(), 'optionalAccess', _165 => _165.nullable, 'call', _166 => _166()]);
4460
4462
  case "optional":
4461
4463
  case "nonoptional":
4462
4464
  case "readonly":
@@ -4471,7 +4473,7 @@ function date_reviver_schema(schema) {
4471
4473
 
4472
4474
  // src/builders/event-builder.ts
4473
4475
  function event_tags(schema) {
4474
- const pii = _chunkRF5MV72Kcjs.pii_schemas.call(void 0, schema);
4476
+ const pii = _chunkL66OOP2Fcjs.pii_schemas.call(void 0, schema);
4475
4477
  const pii_dates = {};
4476
4478
  for (const [key, field] of Object.entries(pii)) {
4477
4479
  const dates = date_reviver_schema(field);
@@ -4508,7 +4510,7 @@ function make_event_reader(tags, disclosure, predicate = null) {
4508
4510
  });
4509
4511
  }
4510
4512
  function build_events(registry, states, lanes, owners) {
4511
- const declared = /* @__PURE__ */ new Set([_chunkRF5MV72Kcjs.DEFAULT_LANE, ...lanes.map((l) => l.name)]);
4513
+ const declared = /* @__PURE__ */ new Set([_chunkL66OOP2Fcjs.DEFAULT_LANE, ...lanes.map((l) => l.name)]);
4512
4514
  const lane_errors = [];
4513
4515
  const tags = /* @__PURE__ */ new Map();
4514
4516
  const sensitive2 = /* @__PURE__ */ new Map();
@@ -4572,7 +4574,7 @@ function build_events(registry, states, lanes, owners) {
4572
4574
  if (reader) readers.set(event_name, reader);
4573
4575
  }
4574
4576
  const snap2 = make_event_reader(event_tags(state2.state), "redact", null);
4575
- if (snap2) readers.set(_chunkRF5MV72Kcjs.SNAP_EVENT, snap2);
4577
+ if (snap2) readers.set(_chunkL66OOP2Fcjs.SNAP_EVENT, snap2);
4576
4578
  if (readers.size === 0) continue;
4577
4579
  state2.view = (event, actor) => (_nullishCoalesce(readers.get(event.name), () => ( IDENTITY_GATE)))(event, actor);
4578
4580
  }
@@ -4633,14 +4635,14 @@ function act() {
4633
4635
  let _built = false;
4634
4636
  const read_wrap = (original) => {
4635
4637
  const wrapped = async (events, stream) => {
4636
- const read = events.map((e) => _nullishCoalesce(_optionalChain([_hr, 'access', _165 => _165.get, 'call', _166 => _166(e.name), 'optionalCall', _167 => _167(e)]), () => ( e)));
4638
+ const read = events.map((e) => _nullishCoalesce(_optionalChain([_hr, 'access', _167 => _167.get, 'call', _168 => _168(e.name), 'optionalCall', _169 => _169(e)]), () => ( e)));
4637
4639
  return original(read, stream);
4638
4640
  };
4639
4641
  const reset = original[FOLD_RESET];
4640
4642
  if (reset) Object.defineProperty(wrapped, FOLD_RESET, { value: reset });
4641
4643
  return wrapped;
4642
4644
  };
4643
- const make_batch_handlers = (patch_fn) => {
4645
+ const make_batch_handlers = () => {
4644
4646
  const handlers = new Map(batch_handlers);
4645
4647
  for (const spec of fold_specs) {
4646
4648
  handlers.set(
@@ -4650,7 +4652,7 @@ function act() {
4650
4652
  spec.merged,
4651
4653
  spec.flush,
4652
4654
  spec.config,
4653
- patch_fn,
4655
+ bare_patch,
4654
4656
  // Head loads strip sensitive keys like the warm path.
4655
4657
  registry.sensitive_fields
4656
4658
  )
@@ -4675,7 +4677,7 @@ function act() {
4675
4677
  });
4676
4678
  }
4677
4679
  for (const [action_name, handler] of Object.entries(state2.on)) {
4678
- const static_target = _optionalChain([handler, 'optionalAccess', _168 => _168._static_emit]);
4680
+ const static_target = _optionalChain([handler, 'optionalAccess', _170 => _170._static_emit]);
4679
4681
  if (static_target && deprecated.has(static_target)) {
4680
4682
  const current = current_version_of(static_target, event_names);
4681
4683
  throw new Error(
@@ -4688,7 +4690,7 @@ function act() {
4688
4690
  const list = deprecation_summary.map(
4689
4691
  (d) => `"${d.deprecated}" (current: "${d.current}", state: "${d.state_name}")`
4690
4692
  ).join(", ");
4691
- _chunkGBAMBUDNcjs.log.call(void 0, ).info(
4693
+ _chunkBNTVE7RQcjs.log.call(void 0, ).info(
4692
4694
  `Act registered ${deprecation_summary.length} deprecated event(s): ${list}. These are legacy versions kept for the read path. Consider truncating closed streams via app.close() when feasible to reduce historical event load. See docs/docs/architecture/event-schema-evolution.md.`
4693
4695
  );
4694
4696
  }
@@ -4730,8 +4732,7 @@ function act() {
4730
4732
  return reaction_on(event, registry.events, builder);
4731
4733
  },
4732
4734
  build: (options) => {
4733
- _chunkGBAMBUDNcjs.resolveActConfig.call(void 0, options);
4734
- const patch_fn = _optionalChain([options, 'optionalAccess', _169 => _169.validateFoldedState]) === true ? validating_patch : bare_patch;
4735
+ _chunkBNTVE7RQcjs.resolveActConfig.call(void 0, options);
4735
4736
  if (!_built) {
4736
4737
  for (const proj of pending_projections) add_projection(proj);
4737
4738
  for (const proj of fold_projections) {
@@ -4749,7 +4750,7 @@ function act() {
4749
4750
  `State projection "${proj.target}" of "${fold.name}" is missing events ${missing.join(", ")} \u2014 pass every partial of the state to .of()`
4750
4751
  );
4751
4752
  const claimed = fold_specs.find((s) => s.target === proj.target);
4752
- if (_optionalChain([claimed, 'optionalAccess', _170 => _170.projection]) === proj) continue;
4753
+ if (_optionalChain([claimed, 'optionalAccess', _171 => _171.projection]) === proj) continue;
4753
4754
  if (batch_handlers.has(proj.target) || claimed)
4754
4755
  throw new Error(
4755
4756
  `Duplicate projection target "${proj.target}" \u2014 a target is served by one batch handler or one state projection, never both`
@@ -4782,7 +4783,7 @@ function act() {
4782
4783
  synthesize_autoclose_reactions(
4783
4784
  registry,
4784
4785
  states,
4785
- _chunkGBAMBUDNcjs.current_autoclose_window
4786
+ _chunkBNTVE7RQcjs.current_autoclose_window
4786
4787
  );
4787
4788
  Object.freeze(registry.actions);
4788
4789
  Object.freeze(registry.events);
@@ -4792,10 +4793,9 @@ function act() {
4792
4793
  return new Act(
4793
4794
  registry,
4794
4795
  states,
4795
- make_batch_handlers(patch_fn),
4796
+ make_batch_handlers(),
4796
4797
  options,
4797
- lanes,
4798
- patch_fn
4798
+ lanes
4799
4799
  );
4800
4800
  },
4801
4801
  events: registry.events
@@ -4831,8 +4831,8 @@ function _projection(target) {
4831
4831
  handler,
4832
4832
  resolver: _nullishCoalesce(default_resolver, () => ( _this_)),
4833
4833
  options: {
4834
- blockOnError: _chunkGBAMBUDNcjs.DEFAULT_BLOCK_ON_ERROR,
4835
- maxRetries: _chunkGBAMBUDNcjs.DEFAULT_MAX_RETRIES
4834
+ blockOnError: _chunkBNTVE7RQcjs.DEFAULT_BLOCK_ON_ERROR,
4835
+ maxRetries: _chunkBNTVE7RQcjs.DEFAULT_MAX_RETRIES
4836
4836
  }
4837
4837
  }),
4838
4838
  widened
@@ -4873,7 +4873,7 @@ function _projection(target) {
4873
4873
  throw new Error(
4874
4874
  `Projection "${target}" .of() partials must share one state name \u2014 got "${name}" and "${partial.name}"`
4875
4875
  );
4876
- const config2 = _chunkGBAMBUDNcjs.resolveFoldConfig.call(void 0, options);
4876
+ const config2 = _chunkBNTVE7RQcjs.resolveFoldConfig.call(void 0, options);
4877
4877
  const fold_events = {};
4878
4878
  for (const partial of partials)
4879
4879
  for (const [event_name, schema] of Object.entries(partial.events)) {
@@ -4891,8 +4891,8 @@ function _projection(target) {
4891
4891
  handler: noop,
4892
4892
  resolver: { target },
4893
4893
  options: {
4894
- blockOnError: _chunkGBAMBUDNcjs.DEFAULT_BLOCK_ON_ERROR,
4895
- maxRetries: _chunkGBAMBUDNcjs.DEFAULT_MAX_RETRIES
4894
+ blockOnError: _chunkBNTVE7RQcjs.DEFAULT_BLOCK_ON_ERROR,
4895
+ maxRetries: _chunkBNTVE7RQcjs.DEFAULT_MAX_RETRIES
4896
4896
  }
4897
4897
  }
4898
4898
  ]
@@ -5008,7 +5008,7 @@ function action_builder(state2) {
5008
5008
  throw new Error(`Duplicate action "${action2}"`);
5009
5009
  internal.actions[action2] = schema;
5010
5010
  if (options) {
5011
- _chunkGBAMBUDNcjs.resolveActionConfig.call(void 0, options);
5011
+ _chunkBNTVE7RQcjs.resolveActionConfig.call(void 0, options);
5012
5012
  internal.options ??= {};
5013
5013
  internal.options[action2] = options;
5014
5014
  }
@@ -5300,5 +5300,6 @@ function write_line(writer, line) {
5300
5300
 
5301
5301
 
5302
5302
 
5303
- exports.Act = Act; exports.ActorSchema = _chunkRF5MV72Kcjs.ActorSchema; exports.CausationEventSchema = _chunkRF5MV72Kcjs.CausationEventSchema; exports.CommittedMetaSchema = _chunkRF5MV72Kcjs.CommittedMetaSchema; exports.ConcurrencyError = _chunkRF5MV72Kcjs.ConcurrencyError; exports.ConsoleLogger = _chunkGBAMBUDNcjs.ConsoleLogger; exports.CsvFile = CsvFile; exports.DEFAULT_LANE = _chunkRF5MV72Kcjs.DEFAULT_LANE; exports.DEFAULT_MAX_SUBSCRIBED_STREAMS = _chunkRF5MV72Kcjs.DEFAULT_MAX_SUBSCRIBED_STREAMS; exports.DEFAULT_SETTLE_DEBOUNCE_MS = _chunkRF5MV72Kcjs.DEFAULT_SETTLE_DEBOUNCE_MS; exports.DeferSignal = _chunkRF5MV72Kcjs.DeferSignal; exports.Environments = _chunkRF5MV72Kcjs.Environments; exports.Errors = _chunkRF5MV72Kcjs.Errors; exports.EventMetaSchema = _chunkRF5MV72Kcjs.EventMetaSchema; exports.ExitCodes = _chunkRF5MV72Kcjs.ExitCodes; exports.InMemoryCache = _chunkGBAMBUDNcjs.InMemoryCache; exports.InMemoryStore = _chunkGBAMBUDNcjs.InMemoryStore; exports.InvariantError = _chunkRF5MV72Kcjs.InvariantError; exports.LogLevels = _chunkRF5MV72Kcjs.LogLevels; exports.NonRetryableError = _chunkRF5MV72Kcjs.NonRetryableError; exports.PackageSchema = _chunkGBAMBUDNcjs.PackageSchema; exports.QuerySchema = _chunkRF5MV72Kcjs.QuerySchema; exports.REDACTED = _chunkRF5MV72Kcjs.REDACTED; exports.SHREDDED = _chunkRF5MV72Kcjs.SHREDDED; exports.SNAP_EVENT = _chunkRF5MV72Kcjs.SNAP_EVENT; exports.StoreError = _chunkRF5MV72Kcjs.StoreError; exports.StreamClosedError = _chunkRF5MV72Kcjs.StreamClosedError; exports.TOMBSTONE_EVENT = _chunkRF5MV72Kcjs.TOMBSTONE_EVENT; exports.TargetSchema = _chunkRF5MV72Kcjs.TargetSchema; exports.ValidationError = _chunkRF5MV72Kcjs.ValidationError; exports.ZodEmpty = _chunkRF5MV72Kcjs.ZodEmpty; exports.act = act; exports.cache = _chunkGBAMBUDNcjs.cache; exports.config = _chunkGBAMBUDNcjs.config; exports.dateReviver = _chunkGBAMBUDNcjs.dateReviver; exports.default_scope = _chunkGBAMBUDNcjs.default_scope; exports.dispose = _chunkGBAMBUDNcjs.dispose; exports.disposeAndExit = _chunkGBAMBUDNcjs.disposeAndExit; exports.extend = _chunkGBAMBUDNcjs.extend; exports.is_literal_source = _chunkGBAMBUDNcjs.is_literal_source; exports.log = _chunkGBAMBUDNcjs.log; exports.pii_fields = _chunkRF5MV72Kcjs.pii_fields; exports.port = _chunkGBAMBUDNcjs.port; exports.projection = projection; exports.resolveAutocloseConfig = _chunkGBAMBUDNcjs.resolveAutocloseConfig2; exports.sensitive = _chunkRF5MV72Kcjs.sensitive; exports.sleep = _chunkGBAMBUDNcjs.sleep; exports.slice = slice; exports.state = state; exports.store = _chunkGBAMBUDNcjs.store; exports.validate = _chunkGBAMBUDNcjs.validate;
5303
+
5304
+ exports.Act = Act; exports.ActorSchema = _chunkL66OOP2Fcjs.ActorSchema; exports.CausationEventSchema = _chunkL66OOP2Fcjs.CausationEventSchema; exports.CommittedMetaSchema = _chunkL66OOP2Fcjs.CommittedMetaSchema; exports.ConcurrencyError = _chunkL66OOP2Fcjs.ConcurrencyError; exports.ConsoleLogger = _chunkBNTVE7RQcjs.ConsoleLogger; exports.CsvFile = CsvFile; exports.DEFAULT_LANE = _chunkL66OOP2Fcjs.DEFAULT_LANE; exports.DEFAULT_MAX_SUBSCRIBED_STREAMS = _chunkL66OOP2Fcjs.DEFAULT_MAX_SUBSCRIBED_STREAMS; exports.DEFAULT_SETTLE_DEBOUNCE_MS = _chunkL66OOP2Fcjs.DEFAULT_SETTLE_DEBOUNCE_MS; exports.DeferSignal = _chunkL66OOP2Fcjs.DeferSignal; exports.Environments = _chunkL66OOP2Fcjs.Environments; exports.Errors = _chunkL66OOP2Fcjs.Errors; exports.EventMetaSchema = _chunkL66OOP2Fcjs.EventMetaSchema; exports.ExitCodes = _chunkL66OOP2Fcjs.ExitCodes; exports.InMemoryCache = _chunkBNTVE7RQcjs.InMemoryCache; exports.InMemoryStore = _chunkBNTVE7RQcjs.InMemoryStore; exports.InvariantError = _chunkL66OOP2Fcjs.InvariantError; exports.LogLevels = _chunkL66OOP2Fcjs.LogLevels; exports.NonRetryableError = _chunkL66OOP2Fcjs.NonRetryableError; exports.PackageSchema = _chunkBNTVE7RQcjs.PackageSchema; exports.PreconditionError = _chunkL66OOP2Fcjs.PreconditionError; exports.QuerySchema = _chunkL66OOP2Fcjs.QuerySchema; exports.REDACTED = _chunkL66OOP2Fcjs.REDACTED; exports.SHREDDED = _chunkL66OOP2Fcjs.SHREDDED; exports.SNAP_EVENT = _chunkL66OOP2Fcjs.SNAP_EVENT; exports.StoreError = _chunkL66OOP2Fcjs.StoreError; exports.StreamClosedError = _chunkL66OOP2Fcjs.StreamClosedError; exports.TOMBSTONE_EVENT = _chunkL66OOP2Fcjs.TOMBSTONE_EVENT; exports.TargetSchema = _chunkL66OOP2Fcjs.TargetSchema; exports.ValidationError = _chunkL66OOP2Fcjs.ValidationError; exports.ZodEmpty = _chunkL66OOP2Fcjs.ZodEmpty; exports.act = act; exports.cache = _chunkBNTVE7RQcjs.cache; exports.config = _chunkBNTVE7RQcjs.config; exports.dateReviver = _chunkBNTVE7RQcjs.dateReviver; exports.default_scope = _chunkBNTVE7RQcjs.default_scope; exports.dispose = _chunkBNTVE7RQcjs.dispose; exports.disposeAndExit = _chunkBNTVE7RQcjs.disposeAndExit; exports.extend = _chunkBNTVE7RQcjs.extend; exports.is_literal_source = _chunkBNTVE7RQcjs.is_literal_source; exports.log = _chunkBNTVE7RQcjs.log; exports.pii_fields = _chunkL66OOP2Fcjs.pii_fields; exports.port = _chunkBNTVE7RQcjs.port; exports.projection = projection; exports.resolveAutocloseConfig = _chunkBNTVE7RQcjs.resolveAutocloseConfig2; exports.sensitive = _chunkL66OOP2Fcjs.sensitive; exports.sleep = _chunkBNTVE7RQcjs.sleep; exports.slice = slice; exports.state = state; exports.store = _chunkBNTVE7RQcjs.store; exports.validate = _chunkBNTVE7RQcjs.validate;
5304
5305
  //# sourceMappingURL=index.cjs.map