hikoutei 0.8.42 → 0.8.44

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.
@@ -7,6 +7,18 @@ export interface SyncPollingSupervisorOptions<Report = unknown> {
7
7
  readonly errorBackoffInitialMs?: number;
8
8
  readonly errorBackoffMaxMs?: number;
9
9
  readonly wait?: SyncPollingWait;
10
+ /**
11
+ * Deferral gate applied ONLY to the loop's FIRST pass (default: no gate).
12
+ *
13
+ * The first scheduled pass waits for this promise before any remote
14
+ * read starts, so a host can keep the first polling pass out of an
15
+ * initial drain on a shared request limiter. The gate is consulted once:
16
+ * after it resolves, passes keep the normal interval cadence. A gate
17
+ * that throws surfaces through the normal polling error path and is
18
+ * retried (with backoff) before any pass runs. Manual `runOnce()` calls
19
+ * are deliberately NOT gated: they are explicit caller-driven passes.
20
+ */
21
+ readonly waitForFirstPass?: () => Promise<void>;
10
22
  readonly onReport?: (report: Report) => void;
11
23
  readonly onError?: (error: unknown) => void;
12
24
  }
@@ -20,6 +32,8 @@ export declare class SyncPollingSupervisor<Report = unknown> {
20
32
  private readonly errorBackoffInitialMs;
21
33
  private readonly errorBackoffMaxMs;
22
34
  private readonly wait;
35
+ private readonly waitForFirstPass;
36
+ private firstPassPending;
23
37
  private readonly onReport;
24
38
  private readonly onError;
25
39
  private running;
@@ -31,6 +45,8 @@ export declare class SyncPollingSupervisor<Report = unknown> {
31
45
  constructor(options: SyncPollingSupervisorOptions<Report>);
32
46
  /** Starts the immediate-then-periodic polling loop. */
33
47
  start(): void;
48
+ /** Returns whether a stop has been requested; used to interrupt gates. */
49
+ isStopping(): boolean;
34
50
  /** Runs one pass or joins the pass already in flight. */
35
51
  runOnce(): Promise<Report>;
36
52
  /** Stops scheduling new polls and waits for the current remote read. */
@@ -1 +1 @@
1
- {"version":3,"file":"SyncPollingSupervisor.d.ts","sourceRoot":"","sources":["../../../../src/application/sync/service/SyncPollingSupervisor.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAMrD,KAAK,QAAQ,CAAC,MAAM,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;AAC9C,MAAM,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpE,MAAM,WAAW,4BAA4B,CAAC,MAAM,GAAG,OAAO;IAC5D,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAED;;;GAGG;AACH,qBAAa,qBAAqB,CAAC,MAAM,GAAG,OAAO;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyC;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IACjE,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,UAAU,CAA2B;gBAE1B,OAAO,EAAE,4BAA4B,CAAC,MAAM,CAAC;IAmBhE,uDAAuD;IAChD,KAAK,IAAI,IAAI;IAMpB,yDAAyD;IAClD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAcjC,wEAAwE;IACjE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAed,OAAO;YAiBP,gBAAgB;IAoB9B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,WAAW;CAOpB"}
1
+ {"version":3,"file":"SyncPollingSupervisor.d.ts","sourceRoot":"","sources":["../../../../src/application/sync/service/SyncPollingSupervisor.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAMrD,KAAK,QAAQ,CAAC,MAAM,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;AAC9C,MAAM,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpE,MAAM,WAAW,4BAA4B,CAAC,MAAM,GAAG,OAAO;IAC5D,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;IAChC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAED;;;GAGG;AACH,qBAAa,qBAAqB,CAAC,MAAM,GAAG,OAAO;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoC;IACrE,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyC;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IACjE,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,UAAU,CAA2B;gBAE1B,OAAO,EAAE,4BAA4B,CAAC,MAAM,CAAC;IAqBhE,uDAAuD;IAChD,KAAK,IAAI,IAAI;IAWpB,0EAA0E;IACnE,UAAU,IAAI,OAAO;IAI5B,yDAAyD;IAClD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAcjC,wEAAwE;IACjE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAed,OAAO;YA2BP,gBAAgB;IAoB9B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,WAAW;CAOpB"}
@@ -12,6 +12,8 @@ export class SyncPollingSupervisor {
12
12
  errorBackoffInitialMs;
13
13
  errorBackoffMaxMs;
14
14
  wait;
15
+ waitForFirstPass;
16
+ firstPassPending = false;
15
17
  onReport;
16
18
  onError;
17
19
  running = false;
@@ -29,6 +31,8 @@ export class SyncPollingSupervisor {
29
31
  throw new RangeError("poll maximum error backoff must be at least the initial backoff");
30
32
  }
31
33
  this.wait = options.wait ?? defaultWait;
34
+ this.waitForFirstPass = options.waitForFirstPass;
35
+ this.firstPassPending = options.waitForFirstPass !== undefined;
32
36
  this.onReport = options.onReport;
33
37
  this.onError = options.onError;
34
38
  }
@@ -37,8 +41,17 @@ export class SyncPollingSupervisor {
37
41
  if (this.running || !this.acceptingPasses)
38
42
  return;
39
43
  this.running = true;
44
+ // A stopped-and-restarted supervisor re-arms the first-pass gate: the
45
+ // loop never restarts (stop() is terminal for the accepting flag), but
46
+ // the flag is re-derived here so a fresh supervisor with a gate always
47
+ // consults it exactly once.
48
+ this.firstPassPending = this.waitForFirstPass !== undefined;
40
49
  this.loopPromise = this.runLoop();
41
50
  }
51
+ /** Returns whether a stop has been requested; used to interrupt gates. */
52
+ isStopping() {
53
+ return !this.acceptingPasses || !this.running;
54
+ }
42
55
  /** Runs one pass or joins the pass already in flight. */
43
56
  runOnce() {
44
57
  if (!this.acceptingPasses) {
@@ -73,6 +86,17 @@ export class SyncPollingSupervisor {
73
86
  let errorBackoff = this.errorBackoffInitialMs;
74
87
  while (this.running) {
75
88
  try {
89
+ if (this.firstPassPending && this.waitForFirstPass !== undefined) {
90
+ // The FIRST pass is deferred until the host gate resolves (for
91
+ // example the System_State drain readiness check). The flag is
92
+ // cleared only AFTER the gate resolves, so a throwing gate keeps
93
+ // the first pass pending through the normal error backoff; a
94
+ // stop() requested while the gate waits is honored right here.
95
+ await this.waitForFirstPass();
96
+ this.firstPassPending = false;
97
+ if (!this.running)
98
+ break;
99
+ }
76
100
  const report = await this.runOnce();
77
101
  this.notifyReport(report);
78
102
  errorBackoff = this.errorBackoffInitialMs;
@@ -1 +1 @@
1
- {"version":3,"file":"SyncPollingSupervisor.js","sourceRoot":"","sources":["../../../../src/application/sync/service/SyncPollingSupervisor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SyncPollingSupervisor.js","sourceRoot":"","sources":["../../../../src/application/sync/service/SyncPollingSupervisor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"effectSupervisor.d.ts","sourceRoot":"","sources":["../../../../src/application/sync/service/effectSupervisor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mFAAmF,CAAC;AAC/H,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AACjG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAO1E,OAAO,EAKL,KAAK,sBAAsB,EAE5B,MAAM,mBAAmB,CAAC;AAO3B,6EAA6E;AAC7E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACvD,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;IAChD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;CAC9C;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,2BAA2B,GACjC,sBAAsB,CAqFxB"}
1
+ {"version":3,"file":"effectSupervisor.d.ts","sourceRoot":"","sources":["../../../../src/application/sync/service/effectSupervisor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mFAAmF,CAAC;AAC/H,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AACjG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAO1E,OAAO,EAML,KAAK,sBAAsB,EAE5B,MAAM,mBAAmB,CAAC;AAmB3B,6EAA6E;AAC7E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACvD,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;IAChD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;CAC9C;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,2BAA2B,GACjC,sBAAsB,CAuGxB"}
@@ -12,10 +12,21 @@ import { runReconciliationScan, } from "../outbound/reconciliation/Reconciliatio
12
12
  import { runUserInputCleanupScan } from "../outbound/reconciliation/CleanupScanner.js";
13
13
  import { SYNC_PROJECTIONS } from "../sheetsContract/constants.js";
14
14
  import { GOOGLE_SHEETS_API_DEFAULTS } from "../../../adapter/sheets/providers/google-sheets-api/constants.js";
15
- import { createEffectWorkerSupervisor, APPEND_DISPATCH_THROTTLE_INTERVAL_MS, FAST_APPEND_BATCH_CANDIDATE_LIMIT, safeErrorMessage, } from "@hikoutei/ikisaki";
15
+ import { createEffectWorkerSupervisor, APPEND_DISPATCH_THROTTLE_INTERVAL_MS, FAST_APPEND_BATCH_CANDIDATE_LIMIT, readOutboxScanReadinessWithAdapter, safeErrorMessage, } from "@hikoutei/ikisaki";
16
16
  import { SheetsEffectDispatcher } from "../outbound/SheetsEffectDispatcher.js";
17
17
  /** Minimum delay between System_State reconciliation scans attached to the loop. */
18
18
  const DEFAULT_RECONCILIATION_SCAN_INTERVAL_MS = 60_000;
19
+ /**
20
+ * Delay before the FIRST reconciliation scan for the real Google provider.
21
+ *
22
+ * A cold-start service opens with the whole initial backlog already in the
23
+ * outbox; an immediate scan would compete with the System_State drain on the
24
+ * shared request-start limiter. Delaying the first scan by one cadence (and
25
+ * additionally gating it on outbox drain readiness, see below) keeps the
26
+ * scanner out of the critical convergence path. Injected test providers keep
27
+ * the generic supervisor default of 0 (immediate first scan).
28
+ */
29
+ const DEFAULT_INITIAL_RECONCILIATION_DELAY_MS = 60_000;
19
30
  export function createEffectSupervisor(input) {
20
31
  const { storage, mappings, provider, writer, effectWorkerId, options } = input;
21
32
  // Periodic System_State reconciliation is a lazy repair net, not part of
@@ -80,6 +91,24 @@ export function createEffectSupervisor(input) {
80
91
  workerId: effectWorkerId,
81
92
  reconciliation: {
82
93
  intervalMs: options.reconciliationIntervalMs ?? DEFAULT_RECONCILIATION_SCAN_INTERVAL_MS,
94
+ // Only the real Google Sheets provider starts with a large initial
95
+ // backlog; delay its first scan by one cadence so it cannot compete
96
+ // with the System_State drain on the shared limiter. Injected test
97
+ // providers keep the generic default (first scan immediately).
98
+ ...(options.googleSheetsApi === undefined
99
+ ? {}
100
+ : { initialReconciliationDelayMs: DEFAULT_INITIAL_RECONCILIATION_DELAY_MS }),
101
+ // First-scan gate: defer ONLY while normal claimable drain work is
102
+ // pending/processing/delivery_uncertain. A terminal failed head
103
+ // (repair-needed) must NEVER defer the scanner — the scanner is the
104
+ // repair net that supersedes the failed head, and deferring would
105
+ // wedge the stream forever. After the first scan the gate is no longer
106
+ // consulted, so busy-outbox scans keep the legacy lazy-repair
107
+ // behavior (isOutboxIdle stays omitted by design).
108
+ isFirstScanReady: async () => {
109
+ const readiness = await readOutboxScanReadinessWithAdapter(storage);
110
+ return readiness.status !== "busy";
111
+ },
83
112
  // isOutboxIdle is optional on the supervisor contract and the scanner
84
113
  // already defers while corrections are in flight, so it is omitted.
85
114
  run: runSystemStateReconciliation,
@@ -1 +1 @@
1
- {"version":3,"file":"effectSupervisor.js","sourceRoot":"","sources":["../../../../src/application/sync/service/effectSupervisor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"effectSupervisor.js","sourceRoot":"","sources":["../../../../src/application/sync/service/effectSupervisor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,EACL,qBAAqB,GACtB,MAAM,qDAAqD,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAC9G,OAAO,EACL,4BAA4B,EAC5B,oCAAoC,EACpC,iCAAiC,EACjC,kCAAkC,EAClC,gBAAgB,GAGjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAG/E,oFAAoF;AACpF,MAAM,uCAAuC,GAAG,MAAM,CAAC;AAEvD;;;;;;;;;GASG;AACH,MAAM,uCAAuC,GAAG,MAAM,CAAC;AAYvD,MAAM,UAAU,sBAAsB,CACpC,KAAkC;IAElC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE/E,yEAAyE;IACzE,sEAAsE;IACtE,qEAAqE;IACrE,0EAA0E;IAC1E,yEAAyE;IACzE,wEAAwE;IACxE,sEAAsE;IACtE,sEAAsE;IACtE,sEAAsE;IACtE,0CAA0C;IAC1C,MAAM,4BAA4B,GAAG,KAAK,IAAmD,EAAE;QAC7F,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CACpD,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,KAAK,gBAAgB,CAAC,YAAY,CACxE,CAAC;YACF,IAAI,qBAAqB,KAAK,SAAS;gBAAE,SAAS;YAClD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC;gBACzC,OAAO;gBACP,QAAQ;gBACR,eAAe,EAAE,qBAAqB,CAAC,eAAe;gBACtD,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,+DAA+D;gBAC/D,yDAAyD;gBACzD,YAAY,EAAE;oBACZ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;oBACjD,OAAO,CAAC,kBAAkB;iBAC3B;gBACD,cAAc,EAAE,OAAO,CAAC,kBAAkB;gBAC1C,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG;aAC7B,CAAC,CAAC;YACH,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC;YAC1C,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAClD,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,KAAK,gBAAgB,CAAC,UAAU,CACtE,CAAC;YACF,IAAI,mBAAmB,KAAK,SAAS;gBAAE,SAAS;YAChD,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAAC;gBAClD,OAAO;gBACP,QAAQ;gBACR,eAAe,EAAE,mBAAmB,CAAC,eAAe;gBACpD,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,oEAAoE;gBACpE,wCAAwC;gBACxC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS;gBAC5C,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG;aAC7B,CAAC,CAAC;YACH,eAAe,IAAI,aAAa,CAAC,eAAe,CAAC;QACnD,CAAC;QACD,OAAO,EAAE,eAAe,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO,4BAA4B,CAAC;QAClC,OAAO;QACP,UAAU,EAAE,IAAI,sBAAsB,CAAC;YACrC,QAAQ;YACR,OAAO;SACR,CAAC;QACF,GAAG,qBAAqB,CAAC,OAAO,CAAC;QACjC,QAAQ,EAAE,cAAc;QACxB,cAAc,EAAE;YACd,UAAU,EAAE,OAAO,CAAC,wBAAwB,IAAI,uCAAuC;YACvF,mEAAmE;YACnE,oEAAoE;YACpE,mEAAmE;YACnE,+DAA+D;YAC/D,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;gBACvC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,4BAA4B,EAAE,uCAAuC,EAAE,CAAC;YAC9E,mEAAmE;YACnE,gEAAgE;YAChE,oEAAoE;YACpE,kEAAkE;YAClE,uEAAuE;YACvE,8DAA8D;YAC9D,mDAAmD;YACnD,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAC3B,MAAM,SAAS,GAAG,MAAM,kCAAkC,CAAC,OAAO,CAAC,CAAC;gBACpE,OAAO,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC;YACrC,CAAC;YACD,sEAAsE;YACtE,oEAAoE;YACpE,GAAG,EAAE,4BAA4B;YACjC,GAAG,CAAC,OAAO,CAAC,sBAAsB,KAAK,SAAS;gBAC9C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,MAA4C,EAAE,EAAE,CAC7D,OAAO,CAAC,sBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,OAAO,EAAE,OAAO,CAAC,qBAAqB;gBACpC,CAAC,CAAC,KAAc,EAAE,EAAE;oBAClB,mEAAmE;oBACnE,wDAAwD;oBACxD,OAAO,CAAC,IAAI,CACV,2DAA2D,gBAAgB,CAAC,KAAK,CAAC,EAAE,CACrF,CAAC;gBACJ,CAAC,CAAC;SACL;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAmC;IAYhE,oEAAoE;IACpE,uEAAuE;IACvE,yEAAyE;IACzE,yEAAyE;IACzE,0EAA0E;IAC1E,sEAAsE;IACtE,MAAM,iBAAiB,GAAG,OAAO,CAAC,eAAe,KAAK,SAAS;QAC7D,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,gBAAgB,IAAI,0BAA0B,CAAC,kBAAkB,CAAC;YAC3F,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,aAAa,IAAI,0BAA0B,CAAC,eAAe,CAAC,CAAC;IAC9F,OAAO;QACL,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzE,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;QAC/E,GAAG,CAAC,OAAO,CAAC,qBAAqB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAChH,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;QACnF,GAAG,CAAC,OAAO,CAAC,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACvG,0EAA0E;QAC1E,uCAAuC;QACvC,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;YACvC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACA,uBAAuB,EAAE,iCAAiC;gBAC1D,wBAAwB,EAAE,oCAAoC;aAC/D,CAAC;QACJ,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzE,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;QACrF,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;KACnF,CAAC;AACJ,CAAC"}
@@ -23,4 +23,21 @@ export interface CreatePollingSupervisorInput {
23
23
  readonly options: InternalSyncServiceOptions;
24
24
  }
25
25
  export declare function createPollingSupervisor(input: CreatePollingSupervisorInput): SyncPollingSupervisor<MappedUserInputPollingReport>;
26
+ /**
27
+ * Waits (SQLite-only) until no claimable System_State drain work remains.
28
+ *
29
+ * Polls the kernel's System_State drain classification through the shared
30
+ * storage adapter — never the remote provider — until it reports `ready`
31
+ * or until `isStopping()` turns true (the loop's stop() is honored within
32
+ * one poll tick, so shutdown never waits for the drain). Only genuinely
33
+ * claimable System_State work (processing/delivery_uncertain effects and
34
+ * pending claimable heads) defers; terminal failed/conflict rows and the
35
+ * pending followers they block never defer, so a permanently stuck stream
36
+ * cannot stall the first polling pass forever.
37
+ */
38
+ export declare function waitForSystemStateDrainReadiness(options: {
39
+ readonly storage: MikroOrmSqliteAdapter;
40
+ readonly isStopping: () => boolean;
41
+ readonly pollIntervalMs?: number;
42
+ }): Promise<void>;
26
43
  //# sourceMappingURL=pollingSupervisor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pollingSupervisor.d.ts","sourceRoot":"","sources":["../../../../src/application/sync/service/pollingSupervisor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mFAAmF,CAAC;AAC/H,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AACjG,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAGL,KAAK,4BAA4B,EAClC,MAAM,0FAA0F,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAInE,6EAA6E;AAC7E,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,gCAAgC,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;CAC9C;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,4BAA4B,GAClC,qBAAqB,CAAC,4BAA4B,CAAC,CAqCrD"}
1
+ {"version":3,"file":"pollingSupervisor.d.ts","sourceRoot":"","sources":["../../../../src/application/sync/service/pollingSupervisor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mFAAmF,CAAC;AAC/H,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AACjG,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAGL,KAAK,4BAA4B,EAClC,MAAM,0FAA0F,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAcnE,6EAA6E;AAC7E,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,gCAAgC,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;CAC9C;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,4BAA4B,GAClC,qBAAqB,CAAC,4BAA4B,CAAC,CAwDrD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gCAAgC,CAAC,OAAO,EAAE;IAC9D,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC,GAAG,OAAO,CAAC,IAAI,CAAC,CAOhB"}
@@ -10,7 +10,16 @@
10
10
  */
11
11
  import { MAPPED_USER_INPUT_POLL_MODES, pollMappedUserInputWithMikroOrm, } from "../../../adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js";
12
12
  import { SyncPollingSupervisor } from "./SyncPollingSupervisor.js";
13
+ import { readSystemStateDrainReadinessWithAdapter } from "@hikoutei/ikisaki";
13
14
  const DEFAULT_POLLING_FULL_SCAN_INTERVAL_MS = 60_000;
15
+ /**
16
+ * SQLite poll cadence for the first-pass System_State drain gate.
17
+ *
18
+ * While the gate is pending the loop performs one cheap outbox read per
19
+ * tick and nothing else; 250 ms keeps the first polling pass starting
20
+ * promptly after the drain without hammering SQLite.
21
+ */
22
+ const FIRST_POLLING_PASS_READINESS_POLL_MS = 250;
14
23
  export function createPollingSupervisor(input) {
15
24
  const { storage, provider, mappings, writer, options } = input;
16
25
  const pollingFullScanIntervalMs = options.pollingFullScanIntervalMs
@@ -43,11 +52,51 @@ export function createPollingSupervisor(input) {
43
52
  lastSuccessfulFullScanAt = clock();
44
53
  return report;
45
54
  };
46
- return new SyncPollingSupervisor({
55
+ let supervisor;
56
+ supervisor = new SyncPollingSupervisor({
47
57
  runPass: runPollingPass,
48
58
  ...(options.pollingIntervalMs === undefined ? {} : { intervalMs: options.pollingIntervalMs }),
59
+ // First-polling-pass gate: on a cold start the effect worker drains the
60
+ // initial System_State backlog while the first polling pass would
61
+ // otherwise compete with it on the shared request limiter. The loop's
62
+ // FIRST pass therefore waits (SQLite-only checks, stop-interruptible)
63
+ // until no claimable System_State drain work is left; terminal failed
64
+ // or conflict rows — and the pending followers they block — never
65
+ // defer, so a stuck stream cannot stall polling forever. After the
66
+ // first pass the gate is no longer consulted and the normal cadence
67
+ // (interval + safety full scans) is preserved. Manual runOnce() calls
68
+ // are caller-driven and bypass the gate.
69
+ waitForFirstPass: async () => {
70
+ await waitForSystemStateDrainReadiness({
71
+ storage,
72
+ isStopping: () => supervisor.isStopping(),
73
+ pollIntervalMs: FIRST_POLLING_PASS_READINESS_POLL_MS,
74
+ });
75
+ },
49
76
  onReport: (report) => options.onPollingReport?.(report),
50
77
  ...(options.onPollingError === undefined ? {} : { onError: options.onPollingError }),
51
78
  });
79
+ return supervisor;
80
+ }
81
+ /**
82
+ * Waits (SQLite-only) until no claimable System_State drain work remains.
83
+ *
84
+ * Polls the kernel's System_State drain classification through the shared
85
+ * storage adapter — never the remote provider — until it reports `ready`
86
+ * or until `isStopping()` turns true (the loop's stop() is honored within
87
+ * one poll tick, so shutdown never waits for the drain). Only genuinely
88
+ * claimable System_State work (processing/delivery_uncertain effects and
89
+ * pending claimable heads) defers; terminal failed/conflict rows and the
90
+ * pending followers they block never defer, so a permanently stuck stream
91
+ * cannot stall the first polling pass forever.
92
+ */
93
+ export async function waitForSystemStateDrainReadiness(options) {
94
+ const pollIntervalMs = options.pollIntervalMs ?? FIRST_POLLING_PASS_READINESS_POLL_MS;
95
+ while (!options.isStopping()) {
96
+ const readiness = await readSystemStateDrainReadinessWithAdapter(options.storage);
97
+ if (readiness.status === "ready")
98
+ return;
99
+ await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
100
+ }
52
101
  }
53
102
  //# sourceMappingURL=pollingSupervisor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pollingSupervisor.js","sourceRoot":"","sources":["../../../../src/application/sync/service/pollingSupervisor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,GAEhC,MAAM,0FAA0F,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,qCAAqC,GAAG,MAAM,CAAC;AAWrD,MAAM,UAAU,uBAAuB,CACrC,KAAmC;IAEnC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC/D,MAAM,yBAAyB,GAAG,OAAO,CAAC,yBAAyB;WAC9D,qCAAqC,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACtC,IAAI,wBAA4C,CAAC;IACjD,MAAM,cAAc,GAAG,KAAK,IAA2C,EAAE;QACvE,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;QACpB,MAAM,cAAc,GAAG,wBAAwB,KAAK,SAAS;YAC3D,GAAG,GAAG,wBAAwB,IAAI,yBAAyB,CAAC;QAC9D,4EAA4E;QAC5E,4EAA4E;QAC5E,uEAAuE;QACvE,MAAM,eAAe,GAAG,cAAc,IAAI,wBAAwB,KAAK,SAAS;YAC9E,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,wBAAwB,GAAG,yBAAyB,CAAC;YACzE,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC;YACnD,OAAO;YACP,QAAQ;YACR,QAAQ;YACR,MAAM;YACN,IAAI,EAAE,4BAA4B,CAAC,QAAQ;YAC3C,SAAS,EAAE,cAAc;YACzB,eAAe;YACf,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;SAC1E,CAAC,CAAC;QACH,4EAA4E;QAC5E,+EAA+E;QAC/E,IAAI,MAAM,CAAC,cAAc;YAAE,wBAAwB,GAAG,KAAK,EAAE,CAAC;QAC9D,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,OAAO,IAAI,qBAAqB,CAAC;QAC/B,OAAO,EAAE,cAAc;QACvB,GAAG,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC7F,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC;QACvD,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;KACrF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"pollingSupervisor.js","sourceRoot":"","sources":["../../../../src/application/sync/service/pollingSupervisor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hikoutei",
3
- "version": "0.8.42",
3
+ "version": "0.8.44",
4
4
  "description": "Typed repository and safe write layer for Google Sheets-backed MVPs. SQLite-authoritative entity lifecycle with asynchronous Google Sheets projection.",
5
5
  "repository": {
6
6
  "type": "git",