hikoutei 0.8.0 → 0.8.2
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.
- package/README.md +4 -0
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts +23 -11
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js +26 -18
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/constants.d.ts +24 -5
- package/dist/adapter/sheets/providers/google-sheets-api/constants.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/constants.js +24 -5
- package/dist/adapter/sheets/providers/google-sheets-api/constants.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/errors.d.ts +8 -0
- package/dist/adapter/sheets/providers/google-sheets-api/errors.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/errors.js +20 -0
- package/dist/adapter/sheets/providers/google-sheets-api/errors.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/index.d.ts +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/index.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/index.js +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/index.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/preflightParsing.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/preflightParsing.js +11 -29
- package/dist/adapter/sheets/providers/google-sheets-api/model/preflightParsing.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/rawResponseSchemas.d.ts +20 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/rawResponseSchemas.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/rawResponseSchemas.js +26 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/rawResponseSchemas.js.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.d.ts +11 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.js +12 -2
- package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.d.ts +19 -6
- package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.js +61 -14
- package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts +13 -0
- package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js +60 -29
- package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.d.ts +40 -4
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.js +26 -20
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rawErrorSchemas.d.ts +7 -0
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rawErrorSchemas.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rawErrorSchemas.js +24 -0
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rawErrorSchemas.js.map +1 -0
- package/dist/api/Hikoutei.d.ts.map +1 -1
- package/dist/api/Hikoutei.js +244 -30
- package/dist/api/Hikoutei.js.map +1 -1
- package/dist/api/internalEntityManager.d.ts.map +1 -1
- package/dist/api/internalEntityManager.js +152 -53
- package/dist/api/internalEntityManager.js.map +1 -1
- package/dist/application/sync/outbound/SheetsEffectDispatcher.d.ts +41 -0
- package/dist/application/sync/outbound/SheetsEffectDispatcher.d.ts.map +1 -1
- package/dist/application/sync/outbound/SheetsEffectDispatcher.js +85 -3
- package/dist/application/sync/outbound/SheetsEffectDispatcher.js.map +1 -1
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -1
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js +39 -5
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -1
- package/dist/application/sync/outbound/reconciliation/diff.d.ts +19 -1
- package/dist/application/sync/outbound/reconciliation/diff.d.ts.map +1 -1
- package/dist/application/sync/outbound/reconciliation/diff.js +60 -17
- package/dist/application/sync/outbound/reconciliation/diff.js.map +1 -1
- package/dist/application/sync/outbound/reconciliation/repair.d.ts +34 -3
- package/dist/application/sync/outbound/reconciliation/repair.d.ts.map +1 -1
- package/dist/application/sync/outbound/reconciliation/repair.js +120 -47
- package/dist/application/sync/outbound/reconciliation/repair.js.map +1 -1
- package/dist/application/sync/outbound/reconciliation/shared.d.ts +20 -0
- package/dist/application/sync/outbound/reconciliation/shared.d.ts.map +1 -1
- package/dist/application/sync/outbound/reconciliation/shared.js +35 -0
- package/dist/application/sync/outbound/reconciliation/shared.js.map +1 -1
- package/dist/application/sync/service/SyncPollingSupervisor.d.ts +16 -0
- package/dist/application/sync/service/SyncPollingSupervisor.d.ts.map +1 -1
- package/dist/application/sync/service/SyncPollingSupervisor.js +24 -0
- package/dist/application/sync/service/SyncPollingSupervisor.js.map +1 -1
- package/dist/application/sync/service/SyncServiceBootstrap.d.ts.map +1 -1
- package/dist/application/sync/service/SyncServiceBootstrap.js +26 -1
- package/dist/application/sync/service/SyncServiceBootstrap.js.map +1 -1
- package/dist/application/sync/service/configSchemas.d.ts +10 -0
- package/dist/application/sync/service/configSchemas.d.ts.map +1 -0
- package/dist/application/sync/service/configSchemas.js +13 -0
- package/dist/application/sync/service/configSchemas.js.map +1 -0
- package/dist/application/sync/service/effectSupervisor.d.ts.map +1 -1
- package/dist/application/sync/service/effectSupervisor.js +114 -9
- package/dist/application/sync/service/effectSupervisor.js.map +1 -1
- package/dist/application/sync/service/pollingSupervisor.d.ts +17 -0
- package/dist/application/sync/service/pollingSupervisor.d.ts.map +1 -1
- package/dist/application/sync/service/pollingSupervisor.js +103 -3
- package/dist/application/sync/service/pollingSupervisor.js.map +1 -1
- package/dist/application/sync/service/serviceOptionSchemas.d.ts +11 -0
- package/dist/application/sync/service/serviceOptionSchemas.d.ts.map +1 -0
- package/dist/application/sync/service/serviceOptionSchemas.js +11 -0
- package/dist/application/sync/service/serviceOptionSchemas.js.map +1 -0
- package/dist/application/sync/service/serviceOptions.d.ts.map +1 -1
- package/dist/application/sync/service/serviceOptions.js +20 -6
- package/dist/application/sync/service/serviceOptions.js.map +1 -1
- package/dist/application/sync/service/shutdown.d.ts.map +1 -1
- package/dist/application/sync/service/shutdown.js +6 -2
- package/dist/application/sync/service/shutdown.js.map +1 -1
- package/dist/application/sync/service/syncAutoStart.d.ts +71 -6
- package/dist/application/sync/service/syncAutoStart.d.ts.map +1 -1
- package/dist/application/sync/service/syncAutoStart.js +175 -12
- package/dist/application/sync/service/syncAutoStart.js.map +1 -1
- package/dist/application/sync/service/systemStateReadiness.d.ts +35 -0
- package/dist/application/sync/service/systemStateReadiness.d.ts.map +1 -0
- package/dist/application/sync/service/systemStateReadiness.js +51 -0
- package/dist/application/sync/service/systemStateReadiness.js.map +1 -0
- package/dist/application/sync/sheetsContract/mutationCoordinator/CoordinatedSheetsProvider.d.ts +37 -1
- package/dist/application/sync/sheetsContract/mutationCoordinator/CoordinatedSheetsProvider.d.ts.map +1 -1
- package/dist/application/sync/sheetsContract/mutationCoordinator/CoordinatedSheetsProvider.js +57 -3
- package/dist/application/sync/sheetsContract/mutationCoordinator/CoordinatedSheetsProvider.js.map +1 -1
- package/dist/application/sync/sheetsContract/payloadSchemas.d.ts +14 -0
- package/dist/application/sync/sheetsContract/payloadSchemas.d.ts.map +1 -0
- package/dist/application/sync/sheetsContract/payloadSchemas.js +18 -0
- package/dist/application/sync/sheetsContract/payloadSchemas.js.map +1 -0
- package/dist/application/sync/sheetsContract/syncSheets.d.ts.map +1 -1
- package/dist/application/sync/sheetsContract/syncSheets.js +12 -31
- package/dist/application/sync/sheetsContract/syncSheets.js.map +1 -1
- package/dist/application/sync/sheetsContract/transportOutcome.d.ts +32 -5
- package/dist/application/sync/sheetsContract/transportOutcome.d.ts.map +1 -1
- package/dist/application/sync/sheetsContract/transportOutcome.js +101 -7
- package/dist/application/sync/sheetsContract/transportOutcome.js.map +1 -1
- package/dist/internal/syncStatus.js +33 -2
- package/dist/internal/syncStatus.js.map +1 -1
- package/dist/shared/observability/index.d.ts +9 -0
- package/dist/shared/observability/index.d.ts.map +1 -0
- package/dist/shared/observability/index.js +9 -0
- package/dist/shared/observability/index.js.map +1 -0
- package/dist/shared/observability/internalLog.d.ts +175 -0
- package/dist/shared/observability/internalLog.d.ts.map +1 -0
- package/dist/shared/observability/internalLog.js +471 -0
- package/dist/shared/observability/internalLog.js.map +1 -0
- package/dist/shared/observability/logEvents.d.ts +96 -0
- package/dist/shared/observability/logEvents.d.ts.map +1 -0
- package/dist/shared/observability/logEvents.js +247 -0
- package/dist/shared/observability/logEvents.js.map +1 -0
- package/dist/shared/validation/zodBoundary.d.ts +10 -0
- package/dist/shared/validation/zodBoundary.d.ts.map +1 -0
- package/dist/shared/validation/zodBoundary.js +24 -0
- package/dist/shared/validation/zodBoundary.js.map +1 -0
- package/package.json +7 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repair.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/repair.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EACL,mBAAmB,EACnB,cAAc,GACf,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,2CAA2C,CAAC;AAErE,OAAO,EACL,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"repair.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/repair.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,26 @@ export interface FailedHeadSqlShape {
|
|
|
62
62
|
readonly effect_id: string;
|
|
63
63
|
readonly last_error_code: string | null;
|
|
64
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Reads every active `failed` effect of one logical sheet, newest stream
|
|
67
|
+
* first, so the scanner can detect terminal heads on streams whose Sheet row
|
|
68
|
+
* already matches canonical (drift-free rows never reach per-drift repair
|
|
69
|
+
* planning).
|
|
70
|
+
*/
|
|
71
|
+
export declare const READ_FAILED_HEADS_SQL = "\n SELECT effect_id, target_id, last_error_code\n FROM sheet_effect_outbox\n WHERE logical_sheet_id = ? AND target_kind = 'entity' AND status = 'failed'\n ORDER BY stream_sequence DESC\n";
|
|
72
|
+
export interface FailedHeadsSqlShape {
|
|
73
|
+
readonly effect_id: string;
|
|
74
|
+
readonly target_id: string;
|
|
75
|
+
readonly last_error_code: string | null;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Returns the terminal (non-recoverable) failed head effect id per target
|
|
79
|
+
* stream for one logical sheet.
|
|
80
|
+
*
|
|
81
|
+
* Recoverable failed heads stay on the worker retry path and are never
|
|
82
|
+
* superseded by reconciliation, mirroring `readTerminalFailedHeadWithSql`.
|
|
83
|
+
*/
|
|
84
|
+
export declare function readTerminalFailedHeads(context: ScanContext): Promise<ReadonlyMap<string, string>>;
|
|
65
85
|
export interface ScanContext {
|
|
66
86
|
readonly storage: SqlStorageAdapter;
|
|
67
87
|
readonly provider: SyncSheetsProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* modules can import from one place without importing each other.
|
|
10
10
|
*/
|
|
11
11
|
import { stableHash } from "../../../../shared/encoding/stableEncode.js";
|
|
12
|
+
import { isRecoverableEffectErrorCode, } from "@hikoutei/ikisaki";
|
|
12
13
|
import { NORMALIZED_CELL_KINDS } from "../../../../shared/encoding/constants.js";
|
|
13
14
|
import { isNormalizedCell } from "../../../../shared/encoding/normalizedCell.js";
|
|
14
15
|
import { STORAGE_ERROR_CODES, StorageError } from "../../../../infrastructure/storage/errors.js";
|
|
@@ -61,6 +62,40 @@ export const READ_FAILED_HEAD_SQL = `
|
|
|
61
62
|
ORDER BY stream_sequence DESC
|
|
62
63
|
LIMIT 1
|
|
63
64
|
`;
|
|
65
|
+
/**
|
|
66
|
+
* Reads every active `failed` effect of one logical sheet, newest stream
|
|
67
|
+
* first, so the scanner can detect terminal heads on streams whose Sheet row
|
|
68
|
+
* already matches canonical (drift-free rows never reach per-drift repair
|
|
69
|
+
* planning).
|
|
70
|
+
*/
|
|
71
|
+
export const READ_FAILED_HEADS_SQL = `
|
|
72
|
+
SELECT effect_id, target_id, last_error_code
|
|
73
|
+
FROM sheet_effect_outbox
|
|
74
|
+
WHERE logical_sheet_id = ? AND target_kind = 'entity' AND status = 'failed'
|
|
75
|
+
ORDER BY stream_sequence DESC
|
|
76
|
+
`;
|
|
77
|
+
/**
|
|
78
|
+
* Returns the terminal (non-recoverable) failed head effect id per target
|
|
79
|
+
* stream for one logical sheet.
|
|
80
|
+
*
|
|
81
|
+
* Recoverable failed heads stay on the worker retry path and are never
|
|
82
|
+
* superseded by reconciliation, mirroring `readTerminalFailedHeadWithSql`.
|
|
83
|
+
*/
|
|
84
|
+
export async function readTerminalFailedHeads(context) {
|
|
85
|
+
return context.storage.read(async ({ sql }) => {
|
|
86
|
+
const rows = await sql.all(READ_FAILED_HEADS_SQL, [
|
|
87
|
+
context.logicalSheetId,
|
|
88
|
+
]);
|
|
89
|
+
const byTarget = new Map();
|
|
90
|
+
for (const row of rows) {
|
|
91
|
+
if (isRecoverableEffectErrorCode(row.last_error_code))
|
|
92
|
+
continue;
|
|
93
|
+
if (!byTarget.has(row.target_id))
|
|
94
|
+
byTarget.set(row.target_id, row.effect_id);
|
|
95
|
+
}
|
|
96
|
+
return byTarget;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
64
99
|
export async function readDesiredSystemState(context) {
|
|
65
100
|
return context.storage.read(({ sql }) => readDesiredSystemStateWithSql(sql, context));
|
|
66
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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":"AAAA,qDAAqD;AAErD,MAAM,wBAAwB,GAAG,MAAM,CAAC;AACxC,MAAM,gCAAgC,GAAG,KAAK,CAAC;AAC/C,MAAM,4BAA4B,GAAG,MAAM,CAAC;
|
|
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":"SyncServiceBootstrap.d.ts","sourceRoot":"","sources":["../../../../src/application/sync/service/SyncServiceBootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"SyncServiceBootstrap.d.ts","sourceRoot":"","sources":["../../../../src/application/sync/service/SyncServiceBootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAiDH,OAAO,EAIL,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAChC,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAE7B;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,mBAAmB,CAAC,CAkI9B"}
|
|
@@ -29,6 +29,9 @@ import { createRemoteProvider } from "./remoteProvider.js";
|
|
|
29
29
|
import { createEffectSupervisor } from "./effectSupervisor.js";
|
|
30
30
|
import { createPollingSupervisor } from "./pollingSupervisor.js";
|
|
31
31
|
import { createStopHandler, expireRuntimeWriterLeases } from "./shutdown.js";
|
|
32
|
+
import { registerSystemStateReadiness, unregisterSystemStateReadiness, } from "./systemStateReadiness.js";
|
|
33
|
+
import { describeErrorForInternalLog, logHikouteiInternalEvent, } from "../../../shared/observability/internalLog.js";
|
|
34
|
+
import { HIKOUTEI_LOG_COMPONENTS, HIKOUTEI_LOG_EVENTS, } from "../../../shared/observability/logEvents.js";
|
|
32
35
|
import { createWriterOptions, throwSyncResolutionError, validateServiceOptions, } from "./serviceOptions.js";
|
|
33
36
|
/**
|
|
34
37
|
* Opens, provisions, and starts one internal sync service.
|
|
@@ -94,7 +97,23 @@ export async function createInternalSyncService(options) {
|
|
|
94
97
|
effectSupervisor,
|
|
95
98
|
});
|
|
96
99
|
const provider = new MikroOrmScalarPersistenceProvider(runtime.storage, generated.bindings, runtime.flushCoordinator);
|
|
97
|
-
|
|
100
|
+
// The runtime object is the readiness key: the beforeClose hook runs
|
|
101
|
+
// only after this assignment, so the captured reference is always the
|
|
102
|
+
// fully constructed runtime. Unregistering happens BEFORE the stop
|
|
103
|
+
// handler runs, so a closing runtime reports ready (no outbox to drain)
|
|
104
|
+
// the moment its close begins.
|
|
105
|
+
let hikoutei;
|
|
106
|
+
const hikouteiClose = async () => {
|
|
107
|
+
unregisterSystemStateReadiness(hikoutei);
|
|
108
|
+
await stop();
|
|
109
|
+
};
|
|
110
|
+
hikoutei = createInternalHikoutei(provider, descriptors, hikouteiClose);
|
|
111
|
+
// Phase 4: register the runtime's System_State readiness right after
|
|
112
|
+
// bootstrap so external convergence barriers can wait on the drain;
|
|
113
|
+
// unregistered on close (see hikouteiClose). Never part of the public
|
|
114
|
+
// API — the registration is keyed to the internal/public runtime object
|
|
115
|
+
// and read only through this internal module.
|
|
116
|
+
registerSystemStateReadiness(hikoutei, runtime.storage);
|
|
98
117
|
effectSupervisor.start();
|
|
99
118
|
pollingSupervisor.start();
|
|
100
119
|
return {
|
|
@@ -109,6 +128,12 @@ export async function createInternalSyncService(options) {
|
|
|
109
128
|
};
|
|
110
129
|
}
|
|
111
130
|
catch (error) {
|
|
131
|
+
logHikouteiInternalEvent({
|
|
132
|
+
event: HIKOUTEI_LOG_EVENTS.SYNC_SERVICE_START_FAILED,
|
|
133
|
+
level: "error",
|
|
134
|
+
component: HIKOUTEI_LOG_COMPONENTS.SYNC_SERVICE,
|
|
135
|
+
...describeErrorForInternalLog(error),
|
|
136
|
+
});
|
|
112
137
|
// Conflict-route registration claims this runtime's mapped-role writer
|
|
113
138
|
// lease before remote provisioning runs; a provisioning failure would
|
|
114
139
|
// otherwise leave the claim valid for the full lease window and every
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncServiceBootstrap.js","sourceRoot":"","sources":["../../../../src/application/sync/service/SyncServiceBootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,sBAAsB,
|
|
1
|
+
{"version":3,"file":"SyncServiceBootstrap.js","sourceRoot":"","sources":["../../../../src/application/sync/service/SyncServiceBootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** Required shape of a Google service-account credential document. */
|
|
3
|
+
export declare const syncCredentialsSchema: z.ZodObject<{
|
|
4
|
+
type: z.ZodString;
|
|
5
|
+
client_email: z.ZodString;
|
|
6
|
+
private_key: z.ZodString;
|
|
7
|
+
}, z.core.$loose>;
|
|
8
|
+
/** Decimal-only positive millisecond environment value. */
|
|
9
|
+
export declare const positiveDecimalMillisecondsSchema: z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>;
|
|
10
|
+
//# sourceMappingURL=configSchemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configSchemas.d.ts","sourceRoot":"","sources":["../../../../src/application/sync/service/configSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sEAAsE;AACtE,eAAO,MAAM,qBAAqB;;;;iBAIlB,CAAC;AAEjB,2DAA2D;AAC3D,eAAO,MAAM,iCAAiC,wDAM3C,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** Required shape of a Google service-account credential document. */
|
|
3
|
+
export const syncCredentialsSchema = z.object({
|
|
4
|
+
type: z.string().min(1),
|
|
5
|
+
client_email: z.string().min(1),
|
|
6
|
+
private_key: z.string().min(1),
|
|
7
|
+
}).passthrough();
|
|
8
|
+
/** Decimal-only positive millisecond environment value. */
|
|
9
|
+
export const positiveDecimalMillisecondsSchema = z.string()
|
|
10
|
+
.regex(/^\d+$/)
|
|
11
|
+
.transform(Number)
|
|
12
|
+
.refine((value) => Number.isSafeInteger(value) && value >= 1, { message: "must be a positive safe integer" });
|
|
13
|
+
//# sourceMappingURL=configSchemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configSchemas.js","sourceRoot":"","sources":["../../../../src/application/sync/service/configSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sEAAsE;AACtE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,2DAA2D;AAC3D,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,EAAE;KACxD,KAAK,CAAC,OAAO,CAAC;KACd,SAAS,CAAC,MAAM,CAAC;KACjB,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EACpD,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAC/C,CAAC"}
|
|
@@ -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;
|
|
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;AA4B3B,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,CAsHxB"}
|
|
@@ -12,10 +12,23 @@ 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,
|
|
15
|
+
import { createEffectWorkerSupervisor, APPEND_DISPATCH_THROTTLE_INTERVAL_MS, FAST_APPEND_BATCH_CANDIDATE_LIMIT, readOutboxScanReadinessWithAdapter, } from "@hikoutei/ikisaki";
|
|
16
16
|
import { SheetsEffectDispatcher } from "../outbound/SheetsEffectDispatcher.js";
|
|
17
|
+
import { describeErrorForInternalLog, logHikouteiInternalEvent, stableConsoleErrorTag, } from "../../../shared/observability/internalLog.js";
|
|
18
|
+
import { HIKOUTEI_LOG_COMPONENTS, HIKOUTEI_LOG_EVENTS, } from "../../../shared/observability/logEvents.js";
|
|
17
19
|
/** Minimum delay between System_State reconciliation scans attached to the loop. */
|
|
18
20
|
const DEFAULT_RECONCILIATION_SCAN_INTERVAL_MS = 60_000;
|
|
21
|
+
/**
|
|
22
|
+
* Delay before the FIRST reconciliation scan for the real Google provider.
|
|
23
|
+
*
|
|
24
|
+
* A cold-start service opens with the whole initial backlog already in the
|
|
25
|
+
* outbox; an immediate scan would compete with the System_State drain on the
|
|
26
|
+
* shared request-start limiter. Delaying the first scan by one cadence (and
|
|
27
|
+
* additionally gating it on outbox drain readiness, see below) keeps the
|
|
28
|
+
* scanner out of the critical convergence path. Injected test providers keep
|
|
29
|
+
* the generic supervisor default of 0 (immediate first scan).
|
|
30
|
+
*/
|
|
31
|
+
const DEFAULT_INITIAL_RECONCILIATION_DELAY_MS = 60_000;
|
|
19
32
|
export function createEffectSupervisor(input) {
|
|
20
33
|
const { storage, mappings, provider, writer, effectWorkerId, options } = input;
|
|
21
34
|
// Periodic System_State reconciliation is a lazy repair net, not part of
|
|
@@ -80,21 +93,114 @@ export function createEffectSupervisor(input) {
|
|
|
80
93
|
workerId: effectWorkerId,
|
|
81
94
|
reconciliation: {
|
|
82
95
|
intervalMs: options.reconciliationIntervalMs ?? DEFAULT_RECONCILIATION_SCAN_INTERVAL_MS,
|
|
96
|
+
// Only the real Google Sheets provider starts with a large initial
|
|
97
|
+
// backlog; delay its first scan by one cadence so it cannot compete
|
|
98
|
+
// with the System_State drain on the shared limiter. Injected test
|
|
99
|
+
// providers keep the generic default (first scan immediately).
|
|
100
|
+
...(options.googleSheetsApi === undefined
|
|
101
|
+
? {}
|
|
102
|
+
: { initialReconciliationDelayMs: DEFAULT_INITIAL_RECONCILIATION_DELAY_MS }),
|
|
103
|
+
// First-scan gate: defer ONLY while normal claimable drain work is
|
|
104
|
+
// pending/processing/delivery_uncertain. A terminal failed head
|
|
105
|
+
// (repair-needed) must NEVER defer the scanner — the scanner is the
|
|
106
|
+
// repair net that supersedes the failed head, and deferring would
|
|
107
|
+
// wedge the stream forever. After the first scan the gate is no longer
|
|
108
|
+
// consulted, so busy-outbox scans keep the legacy lazy-repair
|
|
109
|
+
// behavior (isOutboxIdle stays omitted by design).
|
|
110
|
+
isFirstScanReady: async () => {
|
|
111
|
+
const readiness = await readOutboxScanReadinessWithAdapter(storage);
|
|
112
|
+
return readiness.status !== "busy";
|
|
113
|
+
},
|
|
83
114
|
// isOutboxIdle is optional on the supervisor contract and the scanner
|
|
84
115
|
// already defers while corrections are in flight, so it is omitted.
|
|
85
116
|
run: runSystemStateReconciliation,
|
|
86
117
|
...(options.onReconciliationReport === undefined
|
|
87
118
|
? {}
|
|
88
119
|
: { onReport: (report) => options.onReconciliationReport(report) }),
|
|
89
|
-
onError:
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
120
|
+
onError: (error) => {
|
|
121
|
+
// A scan failure must never stop the effect loop; record it in the
|
|
122
|
+
// internal log first (fail-open), then keep the existing console
|
|
123
|
+
// warning / custom-hook behavior unchanged.
|
|
124
|
+
logHikouteiInternalEvent({
|
|
125
|
+
event: HIKOUTEI_LOG_EVENTS.RECONCILIATION_SCAN_FAILED,
|
|
126
|
+
level: "warn",
|
|
127
|
+
component: HIKOUTEI_LOG_COMPONENTS.RECONCILIATION,
|
|
128
|
+
...describeErrorForInternalLog(error),
|
|
129
|
+
retryable: true,
|
|
130
|
+
});
|
|
131
|
+
if (options.onReconciliationError !== undefined) {
|
|
132
|
+
options.onReconciliationError(error);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
// Default console diagnostics emit only the stable allowlisted
|
|
136
|
+
// class/code tag — never the raw message, which can embed provider
|
|
137
|
+
// payload fragments, spreadsheet IDs, emails, or paths. Injected
|
|
138
|
+
// hooks keep receiving the full error unchanged.
|
|
139
|
+
console.warn(`[sync-service] system state reconciliation scan failed: ${stableConsoleErrorTag(error)}`);
|
|
140
|
+
},
|
|
95
141
|
},
|
|
96
142
|
});
|
|
97
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* Wraps the effect-worker pass hooks with redacted boundary logging.
|
|
146
|
+
*
|
|
147
|
+
* The summary fires only for non-idle passes (claimed work, failures,
|
|
148
|
+
* conflicts, or recoveries) so an idle loop adds no log noise. Custom hooks
|
|
149
|
+
* keep running unchanged after the log write; logging is fail-open and can
|
|
150
|
+
* never alter worker results.
|
|
151
|
+
*/
|
|
152
|
+
function wrapEffectWorkerHooks(options) {
|
|
153
|
+
return {
|
|
154
|
+
onReport: (report) => {
|
|
155
|
+
if (isNonIdleWorkerReport(report)) {
|
|
156
|
+
logHikouteiInternalEvent({
|
|
157
|
+
event: HIKOUTEI_LOG_EVENTS.OUTBOX_PASS_SUMMARY,
|
|
158
|
+
level: "info",
|
|
159
|
+
component: HIKOUTEI_LOG_COMPONENTS.OUTBOX,
|
|
160
|
+
counts: {
|
|
161
|
+
selected: report.selected,
|
|
162
|
+
claimed: report.claimed,
|
|
163
|
+
applied: report.applied,
|
|
164
|
+
blockedCandidate: report.blockedCandidate,
|
|
165
|
+
superseded: report.superseded,
|
|
166
|
+
conflicted: report.conflicted,
|
|
167
|
+
failed: report.failed,
|
|
168
|
+
deferred: report.deferred,
|
|
169
|
+
requeued: report.requeued,
|
|
170
|
+
replanned: report.replanned,
|
|
171
|
+
responseLossRecovered: report.responseLossRecovered,
|
|
172
|
+
expiredLeasesRecovered: report.expiredLeasesRecovered,
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
options.onEffectReport?.(report);
|
|
177
|
+
},
|
|
178
|
+
onError: (error) => {
|
|
179
|
+
logHikouteiInternalEvent({
|
|
180
|
+
event: HIKOUTEI_LOG_EVENTS.OUTBOX_PASS_FAILED,
|
|
181
|
+
level: "error",
|
|
182
|
+
component: HIKOUTEI_LOG_COMPONENTS.OUTBOX,
|
|
183
|
+
...describeErrorForInternalLog(error),
|
|
184
|
+
});
|
|
185
|
+
options.onEffectError?.(error);
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/** True when a pass did work worth one summary line (idling is silent). */
|
|
190
|
+
function isNonIdleWorkerReport(report) {
|
|
191
|
+
return report.selected > 0 ||
|
|
192
|
+
report.claimed > 0 ||
|
|
193
|
+
report.applied > 0 ||
|
|
194
|
+
report.blockedCandidate > 0 ||
|
|
195
|
+
report.superseded > 0 ||
|
|
196
|
+
report.conflicted > 0 ||
|
|
197
|
+
report.failed > 0 ||
|
|
198
|
+
report.deferred > 0 ||
|
|
199
|
+
report.requeued > 0 ||
|
|
200
|
+
report.replanned > 0 ||
|
|
201
|
+
report.responseLossRecovered > 0 ||
|
|
202
|
+
report.expiredLeasesRecovered > 0;
|
|
203
|
+
}
|
|
98
204
|
function optionalWorkerOptions(options) {
|
|
99
205
|
// The knobs are tied to the ACTIVE provider: the full direct Google
|
|
100
206
|
// provider's timeouts (its defaults when omitted). The worker provider
|
|
@@ -121,8 +227,7 @@ function optionalWorkerOptions(options) {
|
|
|
121
227
|
appendDispatchIntervalMs: APPEND_DISPATCH_THROTTLE_INTERVAL_MS,
|
|
122
228
|
}),
|
|
123
229
|
...(options.onTiming === undefined ? {} : { onTiming: options.onTiming }),
|
|
124
|
-
...(options
|
|
125
|
-
...(options.onEffectError === undefined ? {} : { onError: options.onEffectError }),
|
|
230
|
+
...wrapEffectWorkerHooks(options),
|
|
126
231
|
};
|
|
127
232
|
}
|
|
128
233
|
//# sourceMappingURL=effectSupervisor.js.map
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,GAGnC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAE/E,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,4CAA4C,CAAC;AAEpD,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,CAAC,KAAc,EAAE,EAAE;gBAC1B,mEAAmE;gBACnE,iEAAiE;gBACjE,4CAA4C;gBAC5C,wBAAwB,CAAC;oBACvB,KAAK,EAAE,mBAAmB,CAAC,0BAA0B;oBACrD,KAAK,EAAE,MAAM;oBACb,SAAS,EAAE,uBAAuB,CAAC,cAAc;oBACjD,GAAG,2BAA2B,CAAC,KAAK,CAAC;oBACrC,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC;gBACH,IAAI,OAAO,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;oBAChD,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;oBACrC,OAAO;gBACT,CAAC;gBACD,+DAA+D;gBAC/D,mEAAmE;gBACnE,iEAAiE;gBACjE,iDAAiD;gBACjD,OAAO,CAAC,IAAI,CACV,2DAA2D,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAC1F,CAAC;YACJ,CAAC;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,qBAAqB,CAAC,OAAmC;IAIhE,OAAO;QACL,QAAQ,EAAE,CAAC,MAAoB,EAAE,EAAE;YACjC,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClC,wBAAwB,CAAC;oBACvB,KAAK,EAAE,mBAAmB,CAAC,mBAAmB;oBAC9C,KAAK,EAAE,MAAM;oBACb,SAAS,EAAE,uBAAuB,CAAC,MAAM;oBACzC,MAAM,EAAE;wBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;wBACzC,UAAU,EAAE,MAAM,CAAC,UAAU;wBAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;wBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;wBACnD,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;qBACtD;iBACF,CAAC,CAAC;YACL,CAAC;YACD,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,EAAE,CAAC,KAAc,EAAE,EAAE;YAC1B,wBAAwB,CAAC;gBACvB,KAAK,EAAE,mBAAmB,CAAC,kBAAkB;gBAC7C,KAAK,EAAE,OAAO;gBACd,SAAS,EAAE,uBAAuB,CAAC,MAAM;gBACzC,GAAG,2BAA2B,CAAC,KAAK,CAAC;aACtC,CAAC,CAAC;YACH,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,SAAS,qBAAqB,CAAC,MAAoB;IACjD,OAAO,MAAM,CAAC,QAAQ,GAAG,CAAC;QACxB,MAAM,CAAC,OAAO,GAAG,CAAC;QAClB,MAAM,CAAC,OAAO,GAAG,CAAC;QAClB,MAAM,CAAC,gBAAgB,GAAG,CAAC;QAC3B,MAAM,CAAC,UAAU,GAAG,CAAC;QACrB,MAAM,CAAC,UAAU,GAAG,CAAC;QACrB,MAAM,CAAC,MAAM,GAAG,CAAC;QACjB,MAAM,CAAC,QAAQ,GAAG,CAAC;QACnB,MAAM,CAAC,QAAQ,GAAG,CAAC;QACnB,MAAM,CAAC,SAAS,GAAG,CAAC;QACpB,MAAM,CAAC,qBAAqB,GAAG,CAAC;QAChC,MAAM,CAAC,sBAAsB,GAAG,CAAC,CAAC;AACtC,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,qBAAqB,CAAC,OAAO,CAAC;KAClC,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;
|
|
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;AAsBnE,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,CA6FrD;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"}
|