hikoutei 0.5.10 → 0.5.12
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 +6 -0
- package/dist/application/sync/outbound/reconciliation/CleanupScanner.d.ts +12 -6
- package/dist/application/sync/outbound/reconciliation/CleanupScanner.d.ts.map +1 -1
- package/dist/application/sync/outbound/reconciliation/CleanupScanner.js +12 -6
- package/dist/application/sync/outbound/reconciliation/CleanupScanner.js.map +1 -1
- package/dist/application/sync/outbound/reconciliation/cleanup.d.ts +39 -13
- package/dist/application/sync/outbound/reconciliation/cleanup.d.ts.map +1 -1
- package/dist/application/sync/outbound/reconciliation/cleanup.js +91 -25
- package/dist/application/sync/outbound/reconciliation/cleanup.js.map +1 -1
- package/dist/cli/args.d.ts +50 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +139 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/confirm.d.ts +31 -0
- package/dist/cli/confirm.d.ts.map +1 -0
- package/dist/cli/confirm.js +29 -0
- package/dist/cli/confirm.js.map +1 -0
- package/dist/cli/errors.d.ts +47 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +42 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/gcloudRunner.d.ts +35 -0
- package/dist/cli/gcloudRunner.d.ts.map +1 -0
- package/dist/cli/gcloudRunner.js +40 -0
- package/dist/cli/gcloudRunner.js.map +1 -0
- package/dist/cli/setup.d.ts +13 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +74 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/setupFlow.d.ts +137 -0
- package/dist/cli/setupFlow.d.ts.map +1 -0
- package/dist/cli/setupFlow.js +443 -0
- package/dist/cli/setupFlow.js.map +1 -0
- package/dist/cli/sheetsFactory.d.ts +49 -0
- package/dist/cli/sheetsFactory.d.ts.map +1 -0
- package/dist/cli/sheetsFactory.js +71 -0
- package/dist/cli/sheetsFactory.js.map +1 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts.map +1 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriter.js +7 -5
- package/dist/infrastructure/storage/state/resolution/resolutionWriter.js.map +1 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts +13 -12
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts.map +1 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js +13 -12
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js.map +1 -1
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -125,6 +125,12 @@ an operation for each write. The sync runtime uses one Google Sheets API
|
|
|
125
125
|
provider (the internal `googleSheetsApi` bootstrap option) with a service
|
|
126
126
|
account — no Apps Script deployment.
|
|
127
127
|
|
|
128
|
+
**Fastest path:** install the gcloud CLI, run `gcloud auth login`, then
|
|
129
|
+
`npx hikoutei setup` — it creates the project, service account, key, and a
|
|
130
|
+
spreadsheet owned by that service account, and writes
|
|
131
|
+
`GOOGLE_APPLICATION_CREDENTIALS` plus `HIKOUTEI_SYNC_SPREADSHEET_URL` into
|
|
132
|
+
your `.env`. The manual steps below remain available for advanced setups.
|
|
133
|
+
|
|
128
134
|
### Env-driven sync auto-start
|
|
129
135
|
|
|
130
136
|
Set the spreadsheet URL in the environment and `createTypedSheets()` starts
|
|
@@ -5,13 +5,19 @@
|
|
|
5
5
|
* that surface is corrupted (duplicated business keys or anchors, empty-ID
|
|
6
6
|
* rows, orphan rows) the scan rewrites the tab from SQLite canonical state:
|
|
7
7
|
* bound rows get full-row candidate_reconcile rewrites carrying canonical
|
|
8
|
-
* values
|
|
9
|
-
* durable), and every surplus row (duplicates beyond the kept row, empty-ID
|
|
8
|
+
* values, and every surplus row (duplicates beyond the kept row, empty-ID
|
|
10
9
|
* rows, orphans) gets a `user_input_delete` effect carrying the full observed
|
|
11
|
-
* row as its compare-and-set guard.
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
10
|
+
* row as its compare-and-set guard. Bound-row corrections stream under the
|
|
11
|
+
* binding key (`projection-row:<sheet>:<binding>`) shared with flush
|
|
12
|
+
* projections and resolution reconciles, so the resolution's
|
|
13
|
+
* supersede-and-replan covers them; unbound rows keep the physical anchor as
|
|
14
|
+
* their stream key. A binding with an OPEN/NEEDS_REBASE conflict (durable
|
|
15
|
+
* active candidate pointer) is never planned: the candidate evidence is
|
|
16
|
+
* re-read after the snapshot and again before effect building, and the
|
|
17
|
+
* conflicted row converges exclusively through resolution. All corrections
|
|
18
|
+
* flow through the durable outbox and the effect worker's CAS-guarded slow
|
|
19
|
+
* path, so cleanup never mutates the Sheet directly and can never touch a
|
|
20
|
+
* row that a human or candidate pipeline changed concurrently.
|
|
15
21
|
*
|
|
16
22
|
* Duplicated-anchor groups are converged one row per scan because the real
|
|
17
23
|
* provider only resolves the first row per anchor value; the group's rewrite
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CleanupScanner.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/CleanupScanner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"CleanupScanner.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/CleanupScanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAWH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAC1F,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,oCAAoC,CAAC;AAK5C,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,aAAa,CAAC;AASrB,iEAAiE;AACjE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IAC5C,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACzD;AAED,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CA8B5B"}
|
|
@@ -5,13 +5,19 @@
|
|
|
5
5
|
* that surface is corrupted (duplicated business keys or anchors, empty-ID
|
|
6
6
|
* rows, orphan rows) the scan rewrites the tab from SQLite canonical state:
|
|
7
7
|
* bound rows get full-row candidate_reconcile rewrites carrying canonical
|
|
8
|
-
* values
|
|
9
|
-
* durable), and every surplus row (duplicates beyond the kept row, empty-ID
|
|
8
|
+
* values, and every surplus row (duplicates beyond the kept row, empty-ID
|
|
10
9
|
* rows, orphans) gets a `user_input_delete` effect carrying the full observed
|
|
11
|
-
* row as its compare-and-set guard.
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
10
|
+
* row as its compare-and-set guard. Bound-row corrections stream under the
|
|
11
|
+
* binding key (`projection-row:<sheet>:<binding>`) shared with flush
|
|
12
|
+
* projections and resolution reconciles, so the resolution's
|
|
13
|
+
* supersede-and-replan covers them; unbound rows keep the physical anchor as
|
|
14
|
+
* their stream key. A binding with an OPEN/NEEDS_REBASE conflict (durable
|
|
15
|
+
* active candidate pointer) is never planned: the candidate evidence is
|
|
16
|
+
* re-read after the snapshot and again before effect building, and the
|
|
17
|
+
* conflicted row converges exclusively through resolution. All corrections
|
|
18
|
+
* flow through the durable outbox and the effect worker's CAS-guarded slow
|
|
19
|
+
* path, so cleanup never mutates the Sheet directly and can never touch a
|
|
20
|
+
* row that a human or candidate pipeline changed concurrently.
|
|
15
21
|
*
|
|
16
22
|
* Duplicated-anchor groups are converged one row per scan because the real
|
|
17
23
|
* provider only resolves the first row per anchor value; the group's rewrite
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CleanupScanner.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/CleanupScanner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"CleanupScanner.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/CleanupScanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,15 +13,27 @@
|
|
|
13
13
|
* - Every physical row bound in SQLite (row_binding -> active entity ->
|
|
14
14
|
* canonical user-owned fields) gets a full-row `candidate_reconcile`
|
|
15
15
|
* rewrite carrying the canonical values with the row's observed cells as
|
|
16
|
-
* compare-and-set evidence.
|
|
17
|
-
* (sheet_visible_field_state pointer joined to an OPEN
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* the candidate
|
|
16
|
+
* compare-and-set evidence. A binding with a durable active candidate
|
|
17
|
+
* (sheet_visible_field_state pointer joined to an OPEN/NEEDS_REBASE
|
|
18
|
+
* conflict) is NEVER planned by this scan: the conflict/candidate evidence
|
|
19
|
+
* is re-read after the snapshot (and again right before effect building),
|
|
20
|
+
* and the binding is skipped while a candidate is durable, so a rewrite
|
|
21
|
+
* can never be enqueued into a conflicted row. The conflict converges
|
|
22
|
+
* exclusively through resolution, whose binding-keyed reconcile
|
|
23
|
+
* supersedes any earlier rewrite on the same stream.
|
|
21
24
|
* - Every physical row NOT matching a bound binding (a duplicate of a bound
|
|
22
25
|
* key beyond the kept row, empty-ID rows, and orphan rows) gets a
|
|
23
26
|
* `user_input_delete` carrying the full observed row as its CAS guard.
|
|
24
27
|
*
|
|
28
|
+
* Bound-row corrections stream under the BINDING key
|
|
29
|
+
* (`projection-row:<physicalSheetId>:<rowBindingId>`), the same target key
|
|
30
|
+
* flush projections and resolution reconciles use, so the resolution's
|
|
31
|
+
* supersede-and-replan covers any pending cleanup rewrite in the same
|
|
32
|
+
* transaction and an in-flight flush/reconcile head defers the scan. Only
|
|
33
|
+
* unbound rows (orphans, empty-ID rows without a binding) keep the physical
|
|
34
|
+
* anchor as their stream key, because no binding exists to own the stream;
|
|
35
|
+
* their deletes already write no projection confirmation.
|
|
36
|
+
*
|
|
25
37
|
* Duplicated anchors are resolved the way the real provider resolves them:
|
|
26
38
|
* its preflight anchor index keeps only the FIRST row per anchor value
|
|
27
39
|
* (indexRows in preflightRows.ts; planEffectBatch mirrors the same rule), so
|
|
@@ -73,11 +85,6 @@ export interface CleanupTarget {
|
|
|
73
85
|
* no projection confirmation for a binding that does not exist.
|
|
74
86
|
*/
|
|
75
87
|
readonly rowBindingId?: string;
|
|
76
|
-
/**
|
|
77
|
-
* Rewrite-only: durable active candidate hash the rewrite must expect so
|
|
78
|
-
* the existing candidate guard blocks it. Absent when no candidate exists.
|
|
79
|
-
*/
|
|
80
|
-
readonly expectedCandidateHash?: string;
|
|
81
88
|
}
|
|
82
89
|
/** Durable evidence consulted before any row may be corrected. */
|
|
83
90
|
export interface CleanupEvidence {
|
|
@@ -99,6 +106,21 @@ export interface CleanupCanonicalRow {
|
|
|
99
106
|
readonly fields: Record<string, NormalizedCell>;
|
|
100
107
|
readonly fieldRevisionHash: string;
|
|
101
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Stable binding-keyed stream target id shared with flush projections and
|
|
111
|
+
* resolution reconciles. Bound-row cleanup corrections must stream under the
|
|
112
|
+
* same key so the resolution's supersede-and-replan lookup and the durable
|
|
113
|
+
* stream predecessor guard cover them.
|
|
114
|
+
*/
|
|
115
|
+
export declare function cleanupBindingStreamTargetId(physicalSheetId: string, rowBindingId: string): string;
|
|
116
|
+
/**
|
|
117
|
+
* Reads the set of row bindings carrying a durable active candidate pointer
|
|
118
|
+
* joined to an OPEN/NEEDS_REBASE conflict. The scan must never plan a
|
|
119
|
+
* rewrite/delete for one of these bindings: the conflict converges only
|
|
120
|
+
* through resolution, whose binding-keyed reconcile supersedes any pending
|
|
121
|
+
* rewrite on the same stream.
|
|
122
|
+
*/
|
|
123
|
+
export declare function readCleanupProtectedBindingsWithSql(sql: SqlExecutor, physicalSheetId: string): Promise<ReadonlySet<string>>;
|
|
102
124
|
/** Reads the durable binding/canonical/candidate evidence for one tab. */
|
|
103
125
|
export declare function readCleanupEvidenceWithSql(sql: SqlExecutor, logicalSheetId: string, physicalSheetId: string): Promise<CleanupEvidence>;
|
|
104
126
|
/** Reads cleanup evidence through a fresh adapter read context. */
|
|
@@ -149,14 +171,18 @@ export type CleanupBaseline = {
|
|
|
149
171
|
/**
|
|
150
172
|
* Resolves the outbox baseline for one cleanup stream.
|
|
151
173
|
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
174
|
+
* Bound rows stream under the BINDING key
|
|
175
|
+
* (`projection-row:<physicalSheetId>:<rowBindingId>`, the same key flush
|
|
176
|
+
* projections and resolution reconciles use) so the cleanup correction joins
|
|
177
|
+
* the row's real predecessor chain and the resolution replan covers it;
|
|
178
|
+
* unbound rows (orphans, empty-ID rows without a binding) keep the physical
|
|
179
|
+
* anchor as their stream key. An in-flight head
|
|
154
180
|
* (pending/processing/delivery_uncertain) defers the scan; a recoverable
|
|
155
181
|
* failed head stays on the worker retry path; terminal heads (non-recoverable
|
|
156
182
|
* failed, blocked_candidate, conflict) are superseded with the new correction
|
|
157
183
|
* in the same transaction so the stream can never wedge.
|
|
158
184
|
*/
|
|
159
|
-
export declare function resolveCleanupBaselineWithSql(sql: SqlExecutor, logicalSheetId: string,
|
|
185
|
+
export declare function resolveCleanupBaselineWithSql(sql: SqlExecutor, logicalSheetId: string, targetId: string): Promise<CleanupBaseline>;
|
|
160
186
|
/** Effect-building input shared by the cleanup scan orchestrator. */
|
|
161
187
|
export interface CleanupEffectContext {
|
|
162
188
|
readonly storage: SqlStorageAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,15 +13,27 @@
|
|
|
13
13
|
* - Every physical row bound in SQLite (row_binding -> active entity ->
|
|
14
14
|
* canonical user-owned fields) gets a full-row `candidate_reconcile`
|
|
15
15
|
* rewrite carrying the canonical values with the row's observed cells as
|
|
16
|
-
* compare-and-set evidence.
|
|
17
|
-
* (sheet_visible_field_state pointer joined to an OPEN
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* the candidate
|
|
16
|
+
* compare-and-set evidence. A binding with a durable active candidate
|
|
17
|
+
* (sheet_visible_field_state pointer joined to an OPEN/NEEDS_REBASE
|
|
18
|
+
* conflict) is NEVER planned by this scan: the conflict/candidate evidence
|
|
19
|
+
* is re-read after the snapshot (and again right before effect building),
|
|
20
|
+
* and the binding is skipped while a candidate is durable, so a rewrite
|
|
21
|
+
* can never be enqueued into a conflicted row. The conflict converges
|
|
22
|
+
* exclusively through resolution, whose binding-keyed reconcile
|
|
23
|
+
* supersedes any earlier rewrite on the same stream.
|
|
21
24
|
* - Every physical row NOT matching a bound binding (a duplicate of a bound
|
|
22
25
|
* key beyond the kept row, empty-ID rows, and orphan rows) gets a
|
|
23
26
|
* `user_input_delete` carrying the full observed row as its CAS guard.
|
|
24
27
|
*
|
|
28
|
+
* Bound-row corrections stream under the BINDING key
|
|
29
|
+
* (`projection-row:<physicalSheetId>:<rowBindingId>`), the same target key
|
|
30
|
+
* flush projections and resolution reconciles use, so the resolution's
|
|
31
|
+
* supersede-and-replan covers any pending cleanup rewrite in the same
|
|
32
|
+
* transaction and an in-flight flush/reconcile head defers the scan. Only
|
|
33
|
+
* unbound rows (orphans, empty-ID rows without a binding) keep the physical
|
|
34
|
+
* anchor as their stream key, because no binding exists to own the stream;
|
|
35
|
+
* their deletes already write no projection confirmation.
|
|
36
|
+
*
|
|
25
37
|
* Duplicated anchors are resolved the way the real provider resolves them:
|
|
26
38
|
* its preflight anchor index keeps only the FIRST row per anchor value
|
|
27
39
|
* (indexRows in preflightRows.ts; planEffectBatch mirrors the same rule), so
|
|
@@ -34,7 +46,7 @@
|
|
|
34
46
|
* the durable outbox and the worker's CAS-guarded slow path.
|
|
35
47
|
*/
|
|
36
48
|
import { POSITIVE_SAFE_INTEGER_MINIMUM } from "../../../../domain/index.js";
|
|
37
|
-
import { PRESENCE_KINDS,
|
|
49
|
+
import { PRESENCE_KINDS, } from "../../../../shared/state/index.js";
|
|
38
50
|
import { isRecoverableEffectErrorCode } from "../../../../infrastructure/storage/index.js";
|
|
39
51
|
import { computeSyncVisibleHash, } from "../../sheetsContract/syncSheets.js";
|
|
40
52
|
import { SYNC_PROJECTIONS } from "../../sheetsContract/constants.js";
|
|
@@ -70,11 +82,21 @@ const READ_CLEANUP_CANONICAL_SQL = `
|
|
|
70
82
|
WHERE entity.status = 'active'
|
|
71
83
|
ORDER BY entity.entity_id, field.field_name
|
|
72
84
|
`;
|
|
85
|
+
/**
|
|
86
|
+
* Stable binding-keyed stream target id shared with flush projections and
|
|
87
|
+
* resolution reconciles. Bound-row cleanup corrections must stream under the
|
|
88
|
+
* same key so the resolution's supersede-and-replan lookup and the durable
|
|
89
|
+
* stream predecessor guard cover them.
|
|
90
|
+
*/
|
|
91
|
+
export function cleanupBindingStreamTargetId(physicalSheetId, rowBindingId) {
|
|
92
|
+
return `projection-row:${physicalSheetId}:${rowBindingId}`;
|
|
93
|
+
}
|
|
73
94
|
/**
|
|
74
95
|
* Durable active candidate hashes for user_input bindings. A binding is
|
|
75
96
|
* candidate-protected when any of its fields carries an active candidate
|
|
76
|
-
* pointer
|
|
77
|
-
*
|
|
97
|
+
* pointer joined to an OPEN/NEEDS_REBASE conflict; the scan must never plan
|
|
98
|
+
* a rewrite/delete for such a binding (the conflict converges exclusively
|
|
99
|
+
* through resolution).
|
|
78
100
|
*/
|
|
79
101
|
const READ_CLEANUP_CANDIDATE_HASHES_SQL = `
|
|
80
102
|
SELECT visible.row_binding_id AS row_binding_id,
|
|
@@ -106,6 +128,17 @@ const READ_CLEANUP_LATEST_EFFECT_SQL = `
|
|
|
106
128
|
ORDER BY stream_sequence DESC
|
|
107
129
|
LIMIT 1
|
|
108
130
|
`;
|
|
131
|
+
/**
|
|
132
|
+
* Reads the set of row bindings carrying a durable active candidate pointer
|
|
133
|
+
* joined to an OPEN/NEEDS_REBASE conflict. The scan must never plan a
|
|
134
|
+
* rewrite/delete for one of these bindings: the conflict converges only
|
|
135
|
+
* through resolution, whose binding-keyed reconcile supersedes any pending
|
|
136
|
+
* rewrite on the same stream.
|
|
137
|
+
*/
|
|
138
|
+
export async function readCleanupProtectedBindingsWithSql(sql, physicalSheetId) {
|
|
139
|
+
const candidateRows = await sql.all(READ_CLEANUP_CANDIDATE_HASHES_SQL, [physicalSheetId]);
|
|
140
|
+
return new Set(candidateRows.map((row) => row.row_binding_id));
|
|
141
|
+
}
|
|
109
142
|
/** Reads the durable binding/canonical/candidate evidence for one tab. */
|
|
110
143
|
export async function readCleanupEvidenceWithSql(sql, logicalSheetId, physicalSheetId) {
|
|
111
144
|
const [bindings, canonicalRows, candidateRows] = await Promise.all([
|
|
@@ -242,6 +275,15 @@ export function classifyCleanupRows(rows, evidence) {
|
|
|
242
275
|
if (anchor === null)
|
|
243
276
|
continue;
|
|
244
277
|
const binding = bindingByAnchor.get(anchor);
|
|
278
|
+
if (binding !== undefined && evidence.candidateHashes.has(binding.rowBindingId)) {
|
|
279
|
+
// The duplicate group belongs to a binding with an OPEN/NEEDS_REBASE
|
|
280
|
+
// conflict: never plan the delete while the candidate is durable; the
|
|
281
|
+
// group converges after resolution. The whole group stays handled so
|
|
282
|
+
// no member is re-classified as a rewrite either.
|
|
283
|
+
for (const row of group)
|
|
284
|
+
handled.add(row.rowNumber);
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
245
287
|
targets.push({
|
|
246
288
|
kind: "duplicate",
|
|
247
289
|
row: resolvable,
|
|
@@ -267,13 +309,17 @@ export function classifyCleanupRows(rows, evidence) {
|
|
|
267
309
|
if (observedCanonicalHash(row, canonical.fields) === canonical.fieldRevisionHash) {
|
|
268
310
|
continue;
|
|
269
311
|
}
|
|
270
|
-
|
|
312
|
+
// A binding with a durable active candidate (OPEN/NEEDS_REBASE
|
|
313
|
+
// conflict) is skipped entirely: the conflict converges through
|
|
314
|
+
// resolution, whose binding-keyed reconcile supersedes any pending
|
|
315
|
+
// rewrite, so a scan-planned rewrite can never race the resolution.
|
|
316
|
+
if (evidence.candidateHashes.has(canonical.rowBindingId))
|
|
317
|
+
continue;
|
|
271
318
|
targets.push({
|
|
272
319
|
kind: "rewrite",
|
|
273
320
|
row,
|
|
274
321
|
canonicalFields: canonical.fields,
|
|
275
322
|
rowBindingId: canonical.rowBindingId,
|
|
276
|
-
...(candidateHash === undefined ? {} : { expectedCandidateHash: candidateHash }),
|
|
277
323
|
});
|
|
278
324
|
continue;
|
|
279
325
|
}
|
|
@@ -282,7 +328,11 @@ export function classifyCleanupRows(rows, evidence) {
|
|
|
282
328
|
// Candidate bindings without an entity are human rows pending
|
|
283
329
|
// acceptance; tombstoned/ambiguous bindings are lifecycle-protected.
|
|
284
330
|
// Only an empty-ID row can never bind, so only that shape is deleted.
|
|
285
|
-
if (binding.state === "candidate" &&
|
|
331
|
+
if (binding.state === "candidate" &&
|
|
332
|
+
row.identity === undefined &&
|
|
333
|
+
// An open conflict on the candidate binding means the row is a
|
|
334
|
+
// disputed human edit; the delete must wait for resolution.
|
|
335
|
+
!evidence.candidateHashes.has(binding.rowBindingId)) {
|
|
286
336
|
targets.push({ kind: "empty_id", row, rowBindingId: binding.rowBindingId });
|
|
287
337
|
}
|
|
288
338
|
continue;
|
|
@@ -313,17 +363,21 @@ function lowestRow(rows) {
|
|
|
313
363
|
/**
|
|
314
364
|
* Resolves the outbox baseline for one cleanup stream.
|
|
315
365
|
*
|
|
316
|
-
*
|
|
317
|
-
*
|
|
366
|
+
* Bound rows stream under the BINDING key
|
|
367
|
+
* (`projection-row:<physicalSheetId>:<rowBindingId>`, the same key flush
|
|
368
|
+
* projections and resolution reconciles use) so the cleanup correction joins
|
|
369
|
+
* the row's real predecessor chain and the resolution replan covers it;
|
|
370
|
+
* unbound rows (orphans, empty-ID rows without a binding) keep the physical
|
|
371
|
+
* anchor as their stream key. An in-flight head
|
|
318
372
|
* (pending/processing/delivery_uncertain) defers the scan; a recoverable
|
|
319
373
|
* failed head stays on the worker retry path; terminal heads (non-recoverable
|
|
320
374
|
* failed, blocked_candidate, conflict) are superseded with the new correction
|
|
321
375
|
* in the same transaction so the stream can never wedge.
|
|
322
376
|
*/
|
|
323
|
-
export async function resolveCleanupBaselineWithSql(sql, logicalSheetId,
|
|
377
|
+
export async function resolveCleanupBaselineWithSql(sql, logicalSheetId, targetId) {
|
|
324
378
|
const latest = await sql.get(READ_CLEANUP_LATEST_EFFECT_SQL, [
|
|
325
379
|
logicalSheetId,
|
|
326
|
-
|
|
380
|
+
targetId,
|
|
327
381
|
]);
|
|
328
382
|
if (latest === undefined) {
|
|
329
383
|
return { kind: "append", streamSequence: POSITIVE_SAFE_INTEGER_MINIMUM, supersedeEffectId: null };
|
|
@@ -361,17 +415,32 @@ export async function buildCleanupEffects(context, sheet, targets) {
|
|
|
361
415
|
const plans = [];
|
|
362
416
|
const commitId = "cleanup:" + context.createId();
|
|
363
417
|
await context.storage.read(async ({ sql }) => {
|
|
418
|
+
// Re-read the durable candidate evidence right before effect building:
|
|
419
|
+
// a conflict that opened after the snapshot classification must also
|
|
420
|
+
// suppress the correction, so a rewrite can never be enqueued while a
|
|
421
|
+
// conflict is open (the resolution's binding-keyed reconcile supersedes
|
|
422
|
+
// anything that still slipped through as pending).
|
|
423
|
+
const protectedBindings = await readCleanupProtectedBindingsWithSql(sql, context.physicalSheetId);
|
|
364
424
|
for (const target of targets) {
|
|
365
425
|
const anchor = target.row.anchor;
|
|
366
426
|
if (anchor === null)
|
|
367
427
|
continue;
|
|
368
|
-
|
|
428
|
+
if (target.rowBindingId !== undefined && protectedBindings.has(target.rowBindingId)) {
|
|
429
|
+
continue;
|
|
430
|
+
}
|
|
431
|
+
// Bound rows share the binding-keyed stream with flush projections and
|
|
432
|
+
// resolution reconciles so the supersede-on-resolution covers them;
|
|
433
|
+
// unbound rows keep the physical anchor as their stream key.
|
|
434
|
+
const streamTargetId = target.rowBindingId === undefined
|
|
435
|
+
? anchor
|
|
436
|
+
: cleanupBindingStreamTargetId(context.physicalSheetId, target.rowBindingId);
|
|
437
|
+
const baseline = await resolveCleanupBaselineWithSql(sql, context.logicalSheetId, streamTargetId);
|
|
369
438
|
if (baseline.kind === "defer")
|
|
370
439
|
continue;
|
|
371
440
|
const expectedVisibleRevision = await resolveCleanupExpectedVisibleRevisionWithSql(sql, context.physicalSheetId, target);
|
|
372
441
|
const effect = target.kind === "rewrite"
|
|
373
|
-
? buildRewriteEffect(context, sheet, commitId, anchor, target, baseline.streamSequence, expectedVisibleRevision)
|
|
374
|
-
: buildDeleteEffect(context, sheet, commitId, anchor, target, baseline.streamSequence, expectedVisibleRevision);
|
|
442
|
+
? buildRewriteEffect(context, sheet, commitId, streamTargetId, anchor, target, baseline.streamSequence, expectedVisibleRevision)
|
|
443
|
+
: buildDeleteEffect(context, sheet, commitId, streamTargetId, anchor, target, baseline.streamSequence, expectedVisibleRevision);
|
|
375
444
|
plans.push({ effect, supersedeEffectId: baseline.supersedeEffectId });
|
|
376
445
|
}
|
|
377
446
|
});
|
|
@@ -400,7 +469,7 @@ async function resolveCleanupExpectedVisibleRevisionWithSql(sql, physicalSheetId
|
|
|
400
469
|
}
|
|
401
470
|
return Math.max(target.row.visibleRevision, confirmedRevision);
|
|
402
471
|
}
|
|
403
|
-
function buildRewriteEffect(context, sheet, commitId, anchor, target, streamSequence, expectedVisibleRevision) {
|
|
472
|
+
function buildRewriteEffect(context, sheet, commitId, targetId, anchor, target, streamSequence, expectedVisibleRevision) {
|
|
404
473
|
const canonicalFields = target.canonicalFields ?? {};
|
|
405
474
|
return createCandidateReconcileEffect({
|
|
406
475
|
effectId: "effect:" + context.createId(),
|
|
@@ -412,7 +481,7 @@ function buildRewriteEffect(context, sheet, commitId, anchor, target, streamSequ
|
|
|
412
481
|
projection: SYNC_PROJECTIONS.USER_INPUT,
|
|
413
482
|
schemaVersion: context.schemaVersion,
|
|
414
483
|
targetKind: "projection_row",
|
|
415
|
-
targetId
|
|
484
|
+
targetId,
|
|
416
485
|
rowBindingId: {
|
|
417
486
|
kind: PRESENCE_KINDS.PRESENT,
|
|
418
487
|
value: target.rowBindingId ?? anchor,
|
|
@@ -423,13 +492,10 @@ function buildRewriteEffect(context, sheet, commitId, anchor, target, streamSequ
|
|
|
423
492
|
createIfMissing: false,
|
|
424
493
|
expectedVisibleRevision,
|
|
425
494
|
expectedVisibleHash: observedCanonicalHash(target.row, canonicalFields),
|
|
426
|
-
expectedCandidateHash: target.expectedCandidateHash === undefined
|
|
427
|
-
? notApplicableValue()
|
|
428
|
-
: applicableValue(target.expectedCandidateHash),
|
|
429
495
|
streamSequence,
|
|
430
496
|
});
|
|
431
497
|
}
|
|
432
|
-
function buildDeleteEffect(context, sheet, commitId, anchor, target, streamSequence, expectedVisibleRevision) {
|
|
498
|
+
function buildDeleteEffect(context, sheet, commitId, targetId, anchor, target, streamSequence, expectedVisibleRevision) {
|
|
433
499
|
return createUserInputDeleteEffect({
|
|
434
500
|
effectId: "effect:" + context.createId(),
|
|
435
501
|
commitId,
|
|
@@ -440,7 +506,7 @@ function buildDeleteEffect(context, sheet, commitId, anchor, target, streamSeque
|
|
|
440
506
|
projection: SYNC_PROJECTIONS.USER_INPUT,
|
|
441
507
|
schemaVersion: context.schemaVersion,
|
|
442
508
|
targetKind: "projection_row",
|
|
443
|
-
targetId
|
|
509
|
+
targetId,
|
|
444
510
|
// Unbound rows carry no binding id: the worker candidate gate has
|
|
445
511
|
// nothing to protect and the applied delete writes no projection
|
|
446
512
|
// confirmation for a binding that does not exist.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAE5E,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAG3F,OAAO,EACL,sBAAsB,GAEvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,GAC5B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAqGnD,MAAM,yBAAyB,GAAG;;;;CAIjC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;CAiBlC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,iCAAiC,GAAG;;;;;;;;;;;;CAYzC,CAAC;AAEF;;;;GAIG;AACH,MAAM,2CAA2C,GAAG;;;;CAInD,CAAC;AAEF,MAAM,8BAA8B,GAAG;;;;;;CAMtC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,GAAgB,EAChB,cAAsB,EACtB,eAAuB;IAEvB,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACjE,GAAG,CAAC,GAAG,CAAyB,yBAAyB,EAAE,CAAC,cAAc,CAAC,CAAC;QAC5E,GAAG,CAAC,GAAG,CAA2B,0BAA0B,EAAE,CAAC,cAAc,CAAC,CAAC;QAC/E,GAAG,CAAC,GAAG,CAA+B,iCAAiC,EAAE,CAAC,eAAe,CAAC,CAAC;KAC5F,CAAC,CAAC;IACH,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/B,YAAY,EAAE,GAAG,CAAC,cAAc;YAChC,eAAe,EAAE,GAAG,CAAC,gBAAgB;YACrC,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,CAAC,CAAC;QACH,SAAS,EAAE,kBAAkB,CAAC,aAAa,CAAC;QAC5C,eAAe,EAAE,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;YAClD,GAAG,CAAC,cAAc;YAClB,GAAG,CAAC,qBAAqB;SAC1B,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAA0B,EAC1B,cAAsB,EACtB,eAAuB;IAEvB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAC9B,0BAA0B,CAAC,GAAG,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAyC;IAEzC,MAAM,SAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IACzD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAmC,EAAE,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACpE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE;gBAChC,QAAQ,EAAE,GAAG,CAAC,SAAS;gBACvB,YAAY,EAAE,GAAG,CAAC,cAAc;gBAChC,eAAe,EAAE,GAAG,CAAC,gBAAgB;gBACrC,MAAM;gBACN,iBAAiB,EAAE,EAAE;aACtB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,SAAS,GAA0B,EAAE,CAAC;IAC5C,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAA4B,EAC5B,aAAqB;IAErB,MAAM,IAAI,GAAiB,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;YAAE,SAAS;QACjE,MAAM,MAAM,GAAmC,EAAE,CAAC;QAClD,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,CAAC;QACD,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;YACjE,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAChC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK;YACvB,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;YACzE,GAAG,CAAC,eAAe,CAAC,KAAK,IAAI,6BAA6B;YAC1D,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK;YAC3B,CAAC,CAAC,6BAA6B,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC;YACR,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC,KAAK;YAChC,QAAQ,EAAE,sBAAsB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACvD,eAAe;YACf,WAAW;YACX,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAA2B,EAC3B,QAAyB;IAEzB,MAAM,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC1D,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA+B,CAAC;IACjE,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC3C,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI;YAAE,SAAS;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS;QAC9B,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,UAAU;YACf,oEAAoE;YACpE,kEAAkE;YAClE,mEAAmE;YACnE,2DAA2D;YAC3D,kBAAkB;YAClB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;SACzE,CAAC,CAAC;QACH,KAAK,MAAM,GAAG,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,SAAS;QAChE,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,qEAAqE;YACrE,uEAAuE;YACvE,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACzD,IAAI,qBAAqB,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,iBAAiB,EAAE,CAAC;gBACjF,SAAS;YACX,CAAC;YACD,MAAM,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,SAAS;gBACf,GAAG;gBACH,eAAe,EAAE,SAAS,CAAC,MAAM;gBACjC,YAAY,EAAE,SAAS,CAAC,YAAY;gBACpC,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC;aACjF,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,8DAA8D;YAC9D,qEAAqE;YACrE,sEAAsE;YACtE,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;YAC9E,CAAC;YACD,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;YACvD,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,wEAAwE;AACxE,SAAS,qBAAqB,CAC5B,GAAe,EACf,eAAyD;IAEzD,MAAM,UAAU,GAAmC,EAAE,CAAC;IACtD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QACrD,UAAU,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IACxD,CAAC;IACD,OAAO,sBAAsB,CAAC,UAAU,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,SAAS,CAAC,IAA2B;IAC5C,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;IACtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;YAAE,MAAM,GAAG,GAAG,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,GAAgB,EAChB,cAAsB,EACtB,MAAc;IAEd,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAA8B,8BAA8B,EAAE;QACxF,cAAc;QACd,MAAM;KACP,CAAC,CAAC;IACH,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACpG,CAAC;IACD,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACzD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,SAAS,CAAC;QACf,KAAK,YAAY,CAAC;QAClB,KAAK,oBAAoB;YACvB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC3B,KAAK,SAAS,CAAC;QACf,KAAK,YAAY;YACf,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;QACrE,KAAK,QAAQ;YACX,OAAO,4BAA4B,CAAC,MAAM,CAAC,eAAe,CAAC;gBACzD,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;gBACnB,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QAC9E,KAAK,mBAAmB,CAAC;QACzB,KAAK,UAAU;YACb,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QACjF;YACE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAkBD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAA6B,EAC7B,KAAqE,EACrE,OAAiC;IAEjC,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjD,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;YACjC,IAAI,MAAM,KAAK,IAAI;gBAAE,SAAS;YAC9B,MAAM,QAAQ,GAAG,MAAM,6BAA6B,CAAC,GAAG,EAAE,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YAC1F,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO;gBAAE,SAAS;YACxC,MAAM,uBAAuB,GAAG,MAAM,4CAA4C,CAChF,GAAG,EACH,OAAO,CAAC,eAAe,EACvB,MAAM,CACP,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS;gBACtC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,EAAE,uBAAuB,CAAC;gBAChH,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC;YAClH,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,4CAA4C,CACzD,GAAgB,EAChB,eAAuB,EACvB,MAAqB;IAErB,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IACzE,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,GAAG,CAC7B,2CAA2C,EAC3C,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,CACvC,CAAC;IACF,MAAM,iBAAiB,GAAG,SAAS,EAAE,0BAA0B,CAAC;IAChE,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAClE,OAAO,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,kBAAkB,CACzB,OAA6B,EAC7B,KAAqE,EACrE,QAAgB,EAChB,MAAc,EACd,MAAqB,EACrB,cAAsB,EACtB,uBAA+B;IAE/B,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;IACrD,OAAO,8BAA8B,CAAC;QACpC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE;QACxC,QAAQ;QACR,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,SAAS,EAAE,KAAK,CAAC,OAAO;QACxB,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,UAAU,EAAE,gBAAgB,CAAC,UAAU;QACvC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,UAAU,EAAE,gBAAgB;QAC5B,QAAQ,EAAE,MAAM;QAChB,YAAY,EAAE;YACZ,IAAI,EAAE,cAAc,CAAC,OAAO;YAC5B,KAAK,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM;SACrC;QACD,UAAU,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE;QAC3C,YAAY,EAAE,MAAM;QACpB,MAAM,EAAE,eAAe;QACvB,eAAe,EAAE,KAAK;QACtB,uBAAuB;QACvB,mBAAmB,EAAE,qBAAqB,CAAC,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC;QACvE,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,KAAK,SAAS;YAC/D,CAAC,CAAC,kBAAkB,EAAE;YACtB,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,qBAAqB,CAAC;QACjD,cAAc;KACf,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CACxB,OAA6B,EAC7B,KAAqE,EACrE,QAAgB,EAChB,MAAc,EACd,MAAqB,EACrB,cAAsB,EACtB,uBAA+B;IAE/B,OAAO,2BAA2B,CAAC;QACjC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE;QACxC,QAAQ;QACR,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,SAAS,EAAE,KAAK,CAAC,OAAO;QACxB,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,UAAU,EAAE,gBAAgB,CAAC,UAAU;QACvC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,UAAU,EAAE,gBAAgB;QAC5B,QAAQ,EAAE,MAAM;QAChB,kEAAkE;QAClE,iEAAiE;QACjE,kDAAkD;QAClD,YAAY,EAAE,MAAM,CAAC,YAAY,KAAK,SAAS;YAC7C,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE;YACjC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE;QAChE,UAAU,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE;QAC3C,YAAY,EAAE,MAAM;QACpB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM;QACzB,eAAe,EAAE,KAAK;QACtB,uBAAuB;QACvB,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW;QAC3C,cAAc;KACf,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure command-line parsing for `hikoutei setup`.
|
|
3
|
+
*
|
|
4
|
+
* This module owns flag syntax and defaults only; it never touches gcloud,
|
|
5
|
+
* the filesystem, or the network. The result is an explicit union so the CLI
|
|
6
|
+
* entry can branch on help / valid / invalid without inspecting message text.
|
|
7
|
+
*/
|
|
8
|
+
import { type SetupFailure } from "./errors.js";
|
|
9
|
+
/** Default service-account name when `--sa-name` is not given. */
|
|
10
|
+
export declare const DEFAULT_SA_NAME = "hikoutei-sa";
|
|
11
|
+
/** Default output file name (resolved against the current directory by main). */
|
|
12
|
+
export declare const DEFAULT_OUTPUT_FILE_NAME = ".env";
|
|
13
|
+
/** Parsed and defaulted setup options handed to the setup flow. */
|
|
14
|
+
export interface SetupOptions {
|
|
15
|
+
/** Existing Google Cloud project id; when absent the flow creates one. */
|
|
16
|
+
readonly projectId?: string;
|
|
17
|
+
/** Service-account name within the project. */
|
|
18
|
+
readonly saName: string;
|
|
19
|
+
/** Spreadsheet title; when absent the flow derives `hikoutei-sync-<project>`. */
|
|
20
|
+
readonly spreadsheetTitle?: string;
|
|
21
|
+
/** Output .env path (relative to the current directory). */
|
|
22
|
+
readonly output: string;
|
|
23
|
+
/** Skip interactive confirmation. */
|
|
24
|
+
readonly yes: boolean;
|
|
25
|
+
/** Print the planned command sequence without executing anything. */
|
|
26
|
+
readonly dryRun: boolean;
|
|
27
|
+
}
|
|
28
|
+
/** Discriminated result of `parseSetupArgs`. */
|
|
29
|
+
export type SetupArgsParseResult = {
|
|
30
|
+
readonly status: "help";
|
|
31
|
+
readonly helpText: string;
|
|
32
|
+
} | {
|
|
33
|
+
readonly status: "valid";
|
|
34
|
+
readonly options: SetupOptions;
|
|
35
|
+
} | {
|
|
36
|
+
readonly status: "invalid";
|
|
37
|
+
readonly failure: SetupFailure;
|
|
38
|
+
};
|
|
39
|
+
export declare const SETUP_HELP_TEXT: string;
|
|
40
|
+
/**
|
|
41
|
+
* Parses raw argv (without node/script) into setup options.
|
|
42
|
+
*
|
|
43
|
+
* `--flag value` and `--flag=value` are both accepted. A leading `setup`
|
|
44
|
+
* token is ignored so the npm bin works both as `hikoutei setup ...` and as
|
|
45
|
+
* `node dist/cli/setup.js ...`. Unknown flags, missing values, boolean flags
|
|
46
|
+
* given a value, and other positional arguments are rejected with
|
|
47
|
+
* `invalid_args`. `--help` short-circuits with the help text.
|
|
48
|
+
*/
|
|
49
|
+
export declare function parseSetupArgs(argv: readonly string[]): SetupArgsParseResult;
|
|
50
|
+
//# sourceMappingURL=args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAmC,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEjF,kEAAkE;AAClE,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,iFAAiF;AACjF,eAAO,MAAM,wBAAwB,SAAS,CAAC;AAE/C,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,gDAAgD;AAChD,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC;AAanE,eAAO,MAAM,eAAe,QAyBhB,CAAC;AAUb;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,oBAAoB,CA6E5E"}
|