hikoutei 0.5.2 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts +1 -1
  2. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts.map +1 -1
  3. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.js +1 -1
  4. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.js.map +1 -1
  5. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts +1 -1
  6. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts.map +1 -1
  7. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js +2 -2
  8. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js.map +1 -1
  9. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.d.ts +1 -1
  10. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.d.ts.map +1 -1
  11. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.js +1 -1
  12. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.js.map +1 -1
  13. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.d.ts +1 -1
  14. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.d.ts.map +1 -1
  15. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js +1 -1
  16. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js.map +1 -1
  17. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js +1 -1
  18. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js.map +1 -1
  19. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.js +1 -1
  20. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.js.map +1 -1
  21. package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts +2 -2
  22. package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts.map +1 -1
  23. package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js +1 -1
  24. package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js.map +1 -1
  25. package/dist/adapter/sheets/providers/google-sheets-api/constants.d.ts +26 -7
  26. package/dist/adapter/sheets/providers/google-sheets-api/constants.d.ts.map +1 -1
  27. package/dist/adapter/sheets/providers/google-sheets-api/constants.js +26 -7
  28. package/dist/adapter/sheets/providers/google-sheets-api/constants.js.map +1 -1
  29. package/dist/adapter/sheets/providers/google-sheets-api/errors.js +1 -1
  30. package/dist/adapter/sheets/providers/google-sheets-api/errors.js.map +1 -1
  31. package/dist/adapter/sheets/providers/google-sheets-api/model/batchBuilder.d.ts.map +1 -1
  32. package/dist/adapter/sheets/providers/google-sheets-api/model/batchBuilder.js +19 -13
  33. package/dist/adapter/sheets/providers/google-sheets-api/model/batchBuilder.js.map +1 -1
  34. package/dist/adapter/sheets/providers/google-sheets-api/model/observation.d.ts +17 -10
  35. package/dist/adapter/sheets/providers/google-sheets-api/model/observation.d.ts.map +1 -1
  36. package/dist/adapter/sheets/providers/google-sheets-api/model/observation.js +41 -15
  37. package/dist/adapter/sheets/providers/google-sheets-api/model/observation.js.map +1 -1
  38. package/dist/adapter/sheets/providers/google-sheets-api/model/planner.d.ts +1 -1
  39. package/dist/adapter/sheets/providers/google-sheets-api/model/planner.d.ts.map +1 -1
  40. package/dist/adapter/sheets/providers/google-sheets-api/model/planner.js +6 -2
  41. package/dist/adapter/sheets/providers/google-sheets-api/model/planner.js.map +1 -1
  42. package/dist/adapter/sheets/providers/google-sheets-api/model/plannerDeletion.d.ts +1 -1
  43. package/dist/adapter/sheets/providers/google-sheets-api/model/plannerDeletion.d.ts.map +1 -1
  44. package/dist/adapter/sheets/providers/google-sheets-api/model/plannerReceipt.d.ts +1 -1
  45. package/dist/adapter/sheets/providers/google-sheets-api/model/plannerReceipt.d.ts.map +1 -1
  46. package/dist/adapter/sheets/providers/google-sheets-api/model/plannerReceipt.js +1 -1
  47. package/dist/adapter/sheets/providers/google-sheets-api/model/plannerReceipt.js.map +1 -1
  48. package/dist/adapter/sheets/providers/google-sheets-api/model/plannerWorkingRow.d.ts +1 -1
  49. package/dist/adapter/sheets/providers/google-sheets-api/model/plannerWorkingRow.d.ts.map +1 -1
  50. package/dist/adapter/sheets/providers/google-sheets-api/model/plannerWorkingRow.js +1 -1
  51. package/dist/adapter/sheets/providers/google-sheets-api/model/plannerWorkingRow.js.map +1 -1
  52. package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.d.ts +1 -1
  53. package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.d.ts.map +1 -1
  54. package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.js +3 -1
  55. package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.js.map +1 -1
  56. package/dist/adapter/sheets/providers/google-sheets-api/model/preflight.d.ts +9 -6
  57. package/dist/adapter/sheets/providers/google-sheets-api/model/preflight.d.ts.map +1 -1
  58. package/dist/adapter/sheets/providers/google-sheets-api/model/preflight.js +8 -5
  59. package/dist/adapter/sheets/providers/google-sheets-api/model/preflight.js.map +1 -1
  60. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightContext.d.ts +7 -7
  61. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightContext.d.ts.map +1 -1
  62. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightContext.js +10 -5
  63. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightContext.js.map +1 -1
  64. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightFields.d.ts +7 -7
  65. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightFields.d.ts.map +1 -1
  66. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightFields.js +7 -10
  67. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightFields.js.map +1 -1
  68. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightHeaders.d.ts +12 -3
  69. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightHeaders.d.ts.map +1 -1
  70. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightHeaders.js +41 -10
  71. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightHeaders.js.map +1 -1
  72. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightParsing.d.ts.map +1 -1
  73. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightParsing.js +1 -39
  74. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightParsing.js.map +1 -1
  75. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightRows.d.ts +26 -11
  76. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightRows.d.ts.map +1 -1
  77. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightRows.js +77 -31
  78. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightRows.js.map +1 -1
  79. package/dist/adapter/sheets/providers/google-sheets-api/model/tableRead.d.ts +6 -3
  80. package/dist/adapter/sheets/providers/google-sheets-api/model/tableRead.d.ts.map +1 -1
  81. package/dist/adapter/sheets/providers/google-sheets-api/model/tableRead.js +9 -4
  82. package/dist/adapter/sheets/providers/google-sheets-api/model/tableRead.js.map +1 -1
  83. package/dist/adapter/sheets/providers/google-sheets-api/operations/anchors.d.ts +13 -10
  84. package/dist/adapter/sheets/providers/google-sheets-api/operations/anchors.d.ts.map +1 -1
  85. package/dist/adapter/sheets/providers/google-sheets-api/operations/anchors.js +23 -15
  86. package/dist/adapter/sheets/providers/google-sheets-api/operations/anchors.js.map +1 -1
  87. package/dist/adapter/sheets/providers/google-sheets-api/operations/applyEffects.d.ts +1 -1
  88. package/dist/adapter/sheets/providers/google-sheets-api/operations/applyEffects.d.ts.map +1 -1
  89. package/dist/adapter/sheets/providers/google-sheets-api/operations/applyEffects.js +1 -1
  90. package/dist/adapter/sheets/providers/google-sheets-api/operations/applyEffects.js.map +1 -1
  91. package/dist/adapter/sheets/providers/google-sheets-api/operations/fastAppend.d.ts +1 -1
  92. package/dist/adapter/sheets/providers/google-sheets-api/operations/fastAppend.d.ts.map +1 -1
  93. package/dist/adapter/sheets/providers/google-sheets-api/operations/fastAppend.js +3 -3
  94. package/dist/adapter/sheets/providers/google-sheets-api/operations/fastAppend.js.map +1 -1
  95. package/dist/adapter/sheets/providers/google-sheets-api/operations/preflightOp.d.ts +2 -2
  96. package/dist/adapter/sheets/providers/google-sheets-api/operations/preflightOp.d.ts.map +1 -1
  97. package/dist/adapter/sheets/providers/google-sheets-api/operations/preflightOp.js +6 -3
  98. package/dist/adapter/sheets/providers/google-sheets-api/operations/preflightOp.js.map +1 -1
  99. package/dist/adapter/sheets/providers/google-sheets-api/operations/provisioning.d.ts +7 -5
  100. package/dist/adapter/sheets/providers/google-sheets-api/operations/provisioning.d.ts.map +1 -1
  101. package/dist/adapter/sheets/providers/google-sheets-api/operations/provisioning.js +61 -19
  102. package/dist/adapter/sheets/providers/google-sheets-api/operations/provisioning.js.map +1 -1
  103. package/dist/adapter/sheets/providers/google-sheets-api/operations/readRows.d.ts +2 -2
  104. package/dist/adapter/sheets/providers/google-sheets-api/operations/readRows.d.ts.map +1 -1
  105. package/dist/adapter/sheets/providers/google-sheets-api/operations/readRows.js +15 -8
  106. package/dist/adapter/sheets/providers/google-sheets-api/operations/readRows.js.map +1 -1
  107. package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.d.ts +1 -1
  108. package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.d.ts.map +1 -1
  109. package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.js +2 -2
  110. package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.js.map +1 -1
  111. package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts +0 -7
  112. package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts.map +1 -1
  113. package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js +0 -21
  114. package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js.map +1 -1
  115. package/dist/application/orm/mapping/contracts.d.ts +1 -1
  116. package/dist/application/orm/mapping/contracts.d.ts.map +1 -1
  117. package/dist/application/orm/mapping/definition.js +1 -1
  118. package/dist/application/orm/mapping/definition.js.map +1 -1
  119. package/dist/application/orm/mapping/projection.js +1 -1
  120. package/dist/application/orm/mapping/projection.js.map +1 -1
  121. package/dist/application/orm/persistence/flush/flushCoordinator.d.ts +1 -1
  122. package/dist/application/orm/persistence/flush/flushCoordinator.d.ts.map +1 -1
  123. package/dist/application/orm/persistence/projection/projectionEffects.js +2 -2
  124. package/dist/application/orm/persistence/projection/projectionEffects.js.map +1 -1
  125. package/dist/application/orm/persistence/support/contracts.d.ts +1 -1
  126. package/dist/application/orm/persistence/support/contracts.d.ts.map +1 -1
  127. package/dist/application/sync/inbound/autoSystemConflictResolution.js +3 -3
  128. package/dist/application/sync/inbound/autoSystemConflictResolution.js.map +1 -1
  129. package/dist/application/sync/inbound/polling/SimpleSheetPolling.d.ts +2 -2
  130. package/dist/application/sync/inbound/polling/SimpleSheetPolling.d.ts.map +1 -1
  131. package/dist/application/sync/outbound/SheetsEffectDispatcher.d.ts +1 -1
  132. package/dist/application/sync/outbound/SheetsEffectDispatcher.d.ts.map +1 -1
  133. package/dist/application/sync/outbound/SheetsEffectDispatcher.js +3 -3
  134. package/dist/application/sync/outbound/SheetsEffectDispatcher.js.map +1 -1
  135. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.d.ts +2 -2
  136. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.d.ts.map +1 -1
  137. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js +2 -2
  138. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js.map +1 -1
  139. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts +7 -3
  140. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -1
  141. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js +12 -414
  142. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -1
  143. package/dist/application/sync/outbound/reconciliation/diff.d.ts +35 -0
  144. package/dist/application/sync/outbound/reconciliation/diff.d.ts.map +1 -0
  145. package/dist/application/sync/outbound/reconciliation/diff.js +199 -0
  146. package/dist/application/sync/outbound/reconciliation/diff.js.map +1 -0
  147. package/dist/application/sync/outbound/reconciliation/repair.d.ts +30 -0
  148. package/dist/application/sync/outbound/reconciliation/repair.d.ts.map +1 -0
  149. package/dist/application/sync/outbound/reconciliation/repair.js +142 -0
  150. package/dist/application/sync/outbound/reconciliation/repair.js.map +1 -0
  151. package/dist/application/sync/outbound/reconciliation/shared.d.ts +69 -0
  152. package/dist/application/sync/outbound/reconciliation/shared.d.ts.map +1 -0
  153. package/dist/application/sync/outbound/reconciliation/shared.js +111 -0
  154. package/dist/application/sync/outbound/reconciliation/shared.js.map +1 -0
  155. package/dist/application/sync/service/SyncServiceBootstrap.d.ts +3 -3
  156. package/dist/application/sync/service/SyncServiceBootstrap.d.ts.map +1 -1
  157. package/dist/application/sync/service/SyncServiceBootstrap.js +3 -3
  158. package/dist/application/sync/service/SyncServiceBootstrap.js.map +1 -1
  159. package/dist/application/sync/service/syncAutoStart.d.ts +4 -3
  160. package/dist/application/sync/service/syncAutoStart.d.ts.map +1 -1
  161. package/dist/application/sync/service/syncAutoStart.js +8 -6
  162. package/dist/application/sync/service/syncAutoStart.js.map +1 -1
  163. package/dist/application/sync/sheetsContract/conflictProjection.d.ts.map +1 -0
  164. package/dist/application/sync/sheetsContract/conflictProjection.js.map +1 -0
  165. package/dist/application/sync/sheetsContract/conflictProjectionRegistration.d.ts.map +1 -0
  166. package/dist/application/sync/sheetsContract/conflictProjectionRegistration.js.map +1 -0
  167. package/dist/application/sync/sheetsContract/constants.d.ts.map +1 -0
  168. package/dist/application/sync/sheetsContract/constants.js.map +1 -0
  169. package/dist/application/sync/sheetsContract/errors.d.ts.map +1 -0
  170. package/dist/application/sync/sheetsContract/errors.js.map +1 -0
  171. package/dist/application/sync/sheetsContract/mutationCoordinator/CoordinatedSheetsProvider.d.ts.map +1 -0
  172. package/dist/application/sync/sheetsContract/mutationCoordinator/CoordinatedSheetsProvider.js.map +1 -0
  173. package/dist/application/sync/sheetsContract/mutationCoordinator/asyncMutex.d.ts.map +1 -0
  174. package/dist/application/sync/sheetsContract/mutationCoordinator/asyncMutex.js.map +1 -0
  175. package/dist/application/sync/sheetsContract/mutationCoordinator/laneTelemetry.d.ts.map +1 -0
  176. package/dist/application/sync/sheetsContract/mutationCoordinator/laneTelemetry.js.map +1 -0
  177. package/dist/application/sync/sheetsContract/sheetsProvisioning.d.ts.map +1 -0
  178. package/dist/application/sync/sheetsContract/sheetsProvisioning.js.map +1 -0
  179. package/dist/application/sync/sheetsContract/syncSheets.d.ts.map +1 -0
  180. package/dist/application/sync/sheetsContract/syncSheets.js.map +1 -0
  181. package/dist/application/sync/sheetsContract/transportOutcome.d.ts.map +1 -0
  182. package/dist/application/sync/sheetsContract/transportOutcome.js.map +1 -0
  183. package/dist/application/sync/sheetsContract/validation.d.ts.map +1 -0
  184. package/dist/application/sync/sheetsContract/validation.js.map +1 -0
  185. package/package.json +1 -1
  186. package/dist/application/sync/sheets/conflictProjection.d.ts.map +0 -1
  187. package/dist/application/sync/sheets/conflictProjection.js.map +0 -1
  188. package/dist/application/sync/sheets/conflictProjectionRegistration.d.ts.map +0 -1
  189. package/dist/application/sync/sheets/conflictProjectionRegistration.js.map +0 -1
  190. package/dist/application/sync/sheets/constants.d.ts.map +0 -1
  191. package/dist/application/sync/sheets/constants.js.map +0 -1
  192. package/dist/application/sync/sheets/errors.d.ts.map +0 -1
  193. package/dist/application/sync/sheets/errors.js.map +0 -1
  194. package/dist/application/sync/sheets/mutationCoordinator/CoordinatedSheetsProvider.d.ts.map +0 -1
  195. package/dist/application/sync/sheets/mutationCoordinator/CoordinatedSheetsProvider.js.map +0 -1
  196. package/dist/application/sync/sheets/mutationCoordinator/asyncMutex.d.ts.map +0 -1
  197. package/dist/application/sync/sheets/mutationCoordinator/asyncMutex.js.map +0 -1
  198. package/dist/application/sync/sheets/mutationCoordinator/laneTelemetry.d.ts.map +0 -1
  199. package/dist/application/sync/sheets/mutationCoordinator/laneTelemetry.js.map +0 -1
  200. package/dist/application/sync/sheets/sheetsProvisioning.d.ts.map +0 -1
  201. package/dist/application/sync/sheets/sheetsProvisioning.js.map +0 -1
  202. package/dist/application/sync/sheets/syncSheets.d.ts.map +0 -1
  203. package/dist/application/sync/sheets/syncSheets.js.map +0 -1
  204. package/dist/application/sync/sheets/transportOutcome.d.ts.map +0 -1
  205. package/dist/application/sync/sheets/transportOutcome.js.map +0 -1
  206. package/dist/application/sync/sheets/validation.d.ts.map +0 -1
  207. package/dist/application/sync/sheets/validation.js.map +0 -1
  208. /package/dist/application/sync/{sheets → sheetsContract}/conflictProjection.d.ts +0 -0
  209. /package/dist/application/sync/{sheets → sheetsContract}/conflictProjection.js +0 -0
  210. /package/dist/application/sync/{sheets → sheetsContract}/conflictProjectionRegistration.d.ts +0 -0
  211. /package/dist/application/sync/{sheets → sheetsContract}/conflictProjectionRegistration.js +0 -0
  212. /package/dist/application/sync/{sheets → sheetsContract}/constants.d.ts +0 -0
  213. /package/dist/application/sync/{sheets → sheetsContract}/constants.js +0 -0
  214. /package/dist/application/sync/{sheets → sheetsContract}/errors.d.ts +0 -0
  215. /package/dist/application/sync/{sheets → sheetsContract}/errors.js +0 -0
  216. /package/dist/application/sync/{sheets → sheetsContract}/mutationCoordinator/CoordinatedSheetsProvider.d.ts +0 -0
  217. /package/dist/application/sync/{sheets → sheetsContract}/mutationCoordinator/CoordinatedSheetsProvider.js +0 -0
  218. /package/dist/application/sync/{sheets → sheetsContract}/mutationCoordinator/asyncMutex.d.ts +0 -0
  219. /package/dist/application/sync/{sheets → sheetsContract}/mutationCoordinator/asyncMutex.js +0 -0
  220. /package/dist/application/sync/{sheets → sheetsContract}/mutationCoordinator/laneTelemetry.d.ts +0 -0
  221. /package/dist/application/sync/{sheets → sheetsContract}/mutationCoordinator/laneTelemetry.js +0 -0
  222. /package/dist/application/sync/{sheets → sheetsContract}/sheetsProvisioning.d.ts +0 -0
  223. /package/dist/application/sync/{sheets → sheetsContract}/sheetsProvisioning.js +0 -0
  224. /package/dist/application/sync/{sheets → sheetsContract}/syncSheets.d.ts +0 -0
  225. /package/dist/application/sync/{sheets → sheetsContract}/syncSheets.js +0 -0
  226. /package/dist/application/sync/{sheets → sheetsContract}/transportOutcome.d.ts +0 -0
  227. /package/dist/application/sync/{sheets → sheetsContract}/transportOutcome.js +0 -0
  228. /package/dist/application/sync/{sheets → sheetsContract}/validation.d.ts +0 -0
  229. /package/dist/application/sync/{sheets → sheetsContract}/validation.js +0 -0
@@ -13,52 +13,20 @@
13
13
  * protected and hidden, so the canonical state is always authoritative and a
14
14
  * drift is always a repair target. User_Input reconciliation remains the
15
15
  * responsibility of the candidate/conflict pipeline.
16
+ *
17
+ * This module owns the scan lifecycle and orchestration only. Drift detection
18
+ * lives in diff.ts, correction effect generation in repair.ts, and the shared
19
+ * contracts/SQL helpers in shared.ts.
16
20
  */
17
21
  import { randomUUID } from "node:crypto";
18
- import { EMPTY_STRING_LENGTH_ZERO, POSITIVE_SAFE_INTEGER_MINIMUM, stableHash, } from "../../../../domain/index.js";
19
- import { APPLICABILITY_KINDS, PRESENCE_KINDS, } from "../../../../shared/state/index.js";
20
- import { NORMALIZED_CELL_KINDS } from "../../../../shared/encoding/constants.js";
21
- import { isNormalizedCell } from "../../../../shared/encoding/normalizedCell.js";
22
- import { isRecord } from "../../../../shared/encoding/typeGuards.js";
22
+ import { POSITIVE_SAFE_INTEGER_MINIMUM } from "../../../../domain/index.js";
23
23
  import { appendPendingEffectsWithAdapter, claimWriterLeaseWithAdapter, requireRegisteredSyncSheetWithAdapter, WRITER_LEASE_CLAIM_RESULT_KINDS, } from "../../../../infrastructure/storage/index.js";
24
24
  import { STORAGE_ERROR_CODES, StorageError } from "../../../../infrastructure/storage/errors.js";
25
- import { computeSyncVisibleHash, observeSyncSnapshot, } from "../../sheets/syncSheets.js";
26
- import { SYNC_PROJECTIONS, SYNC_SNAPSHOT_READ_MODES, } from "../../sheets/constants.js";
27
- import { createSystemProjectionEffect } from "../projection/ProjectionEffectFactory.js";
28
- const DEFAULT_RECONCILIATION_ROLE = "typed-sheets-reconciler";
29
- const DEFAULT_RECONCILIATION_LEASE_MS = 60_000;
30
- const DEFAULT_SYSTEM_TOMBSTONE_FIELD = "_deleted";
31
- const READ_DESIRED_SYSTEM_STATE_SQL = `
32
- SELECT
33
- entity.entity_id AS entity_id,
34
- binding.row_binding_id AS row_binding_id,
35
- binding.anchor_reference AS anchor_reference,
36
- entity.entity_revision AS entity_revision,
37
- field.field_name AS field_name,
38
- field.normalized_value AS normalized_value,
39
- field.ownership AS ownership
40
- FROM entity_state AS entity
41
- JOIN row_binding AS binding
42
- ON binding.entity_id = entity.entity_id
43
- AND binding.logical_sheet_id = ?
44
- AND binding.state = 'active'
45
- JOIN entity_field_state AS field
46
- ON field.entity_id = entity.entity_id
47
- WHERE entity.status = 'active'
48
- ORDER BY entity.entity_id, field.field_name
49
- `;
50
- const READ_LATEST_VISIBLE_STATE_SQL = `
51
- SELECT confirmed_visible_revision, confirmed_snapshot_hash
52
- FROM sheet_visible_state
53
- WHERE physical_sheet_id = ? AND projection = 'system_state' AND row_binding_id = ?
54
- `;
55
- const READ_LATEST_EFFECT_SQL = `
56
- SELECT stream_sequence, expected_visible_revision, expected_visible_hash, status, payload_json
57
- FROM sheet_effect_outbox
58
- WHERE logical_sheet_id = ? AND target_kind = 'entity' AND target_id = ?
59
- ORDER BY stream_sequence DESC
60
- LIMIT 1
61
- `;
25
+ import { observeSyncSnapshot, } from "../../sheetsContract/syncSheets.js";
26
+ import { SYNC_PROJECTIONS, SYNC_SNAPSHOT_READ_MODES, } from "../../sheetsContract/constants.js";
27
+ import { DEFAULT_RECONCILIATION_LEASE_MS, DEFAULT_RECONCILIATION_ROLE, DEFAULT_SYSTEM_TOMBSTONE_FIELD, readDesiredSystemState, } from "./shared.js";
28
+ import { computeDrifts, countExtraRows, countMatchedRows, } from "./diff.js";
29
+ import { buildCorrectionEffects } from "./repair.js";
62
30
  /**
63
31
  * Runs one reconciliation scan and enqueues correction effects for drift.
64
32
  *
@@ -110,7 +78,8 @@ async function scanAndEnqueue(context) {
110
78
  readMode: SYNC_SNAPSHOT_READ_MODES.FULL,
111
79
  };
112
80
  // Fast append intentionally skips metadata. Reconciliation is the lazy
113
- // repair point that assigns stable anchors before comparing the snapshot.
81
+ // repair point; system_state rows are identity-located and never receive
82
+ // anchors (only user_input tabs carry the row-id system column).
114
83
  const observed = await observeSyncSnapshot(context.provider, snapshotRequest);
115
84
  const snapshot = observed.snapshot;
116
85
  const desired = await readDesiredSystemState(context);
@@ -172,278 +141,6 @@ async function scanAndEnqueue(context) {
172
141
  fenceClaimed: true,
173
142
  });
174
143
  }
175
- function computeDrifts(args) {
176
- const rowsByAnchor = new Map();
177
- const ambiguousAnchors = new Set();
178
- const rowsByIdentity = new Map();
179
- const ambiguousIdentities = new Set();
180
- for (const row of args.snapshot.rows) {
181
- if (row.physicalAnchor.kind === PRESENCE_KINDS.PRESENT) {
182
- // A duplicated physical anchor is an anomaly, never a row choice: drop
183
- // the anchor index entry instead of letting the last row win silently.
184
- if (ambiguousAnchors.has(row.physicalAnchor.value))
185
- continue;
186
- if (rowsByAnchor.has(row.physicalAnchor.value)) {
187
- rowsByAnchor.delete(row.physicalAnchor.value);
188
- ambiguousAnchors.add(row.physicalAnchor.value);
189
- }
190
- else {
191
- rowsByAnchor.set(row.physicalAnchor.value, row);
192
- }
193
- }
194
- const identity = snapshotIdentity(row, args.sheet.businessKeyField);
195
- if (identity === undefined || ambiguousIdentities.has(identity))
196
- continue;
197
- if (rowsByIdentity.has(identity)) {
198
- rowsByIdentity.delete(identity);
199
- ambiguousIdentities.add(identity);
200
- }
201
- else {
202
- rowsByIdentity.set(identity, row);
203
- }
204
- }
205
- const drifts = [];
206
- for (const desiredRow of args.desired) {
207
- const identity = desiredRowIdentity(desiredRow, args.sheet.businessKeyField);
208
- // The primary locator's ambiguity is fatal: when the desired anchor is
209
- // duplicated, identity fallback would silently pick one of the rows that
210
- // the corrupted anchor cannot distinguish, so the binding is unmatched.
211
- // The same quarantine applies to a desired identity that appears in the
212
- // snapshot's duplicate set: the duplicated business key cannot prove that
213
- // this binding owns even its unique anchor, so neither locator may match.
214
- const identityAmbiguous = identity !== undefined && ambiguousIdentities.has(identity);
215
- const observed = ambiguousAnchors.has(desiredRow.anchorReference) || identityAmbiguous
216
- ? undefined
217
- : rowsByAnchor.get(desiredRow.anchorReference) ??
218
- (identity === undefined ? undefined : rowsByIdentity.get(identity));
219
- if (observed === undefined) {
220
- drifts.push({ kind: "missing", desired: desiredRow });
221
- continue;
222
- }
223
- const observedHash = computeObservedHash(observed, args.systemFields);
224
- const desiredHash = computeSyncVisibleHash(desiredRow.fields);
225
- if (observedHash !== desiredHash) {
226
- drifts.push({ kind: "drifted", desired: desiredRow });
227
- }
228
- }
229
- return drifts;
230
- }
231
- /** Reads a business-key value from a snapshot row for unanchored fast appends. */
232
- function snapshotIdentity(row, identityField) {
233
- return normalizedCellIdentity(row.cells[identityField]?.normalizedCell);
234
- }
235
- /** Reads the same visible business-key value from canonical desired state. */
236
- function desiredRowIdentity(row, identityField) {
237
- return normalizedCellIdentity(row.fields[identityField]) ?? row.entityId;
238
- }
239
- function normalizedCellIdentity(cell) {
240
- if (cell === undefined || cell === null)
241
- return undefined;
242
- switch (cell.kind) {
243
- case NORMALIZED_CELL_KINDS.STRING:
244
- return cell.value.length === EMPTY_STRING_LENGTH_ZERO ? undefined : cell.value;
245
- case NORMALIZED_CELL_KINDS.NUMBER:
246
- return Number.isFinite(cell.value) ? String(cell.value) : undefined;
247
- case NORMALIZED_CELL_KINDS.BOOLEAN:
248
- return String(cell.value);
249
- case NORMALIZED_CELL_KINDS.DATE:
250
- return cell.value;
251
- }
252
- }
253
- function computeObservedHash(row, systemFields) {
254
- const values = {};
255
- for (const fieldName of systemFields) {
256
- const cell = row.cells[fieldName];
257
- values[fieldName] = cell === undefined ? null : cell.normalizedCell;
258
- }
259
- return computeSyncVisibleHash(values);
260
- }
261
- async function readDesiredSystemState(context) {
262
- return context.storage.read(({ sql }) => readDesiredSystemStateWithSql(sql, context));
263
- }
264
- async function readDesiredSystemStateWithSql(sql, context) {
265
- const rows = await sql.all(READ_DESIRED_SYSTEM_STATE_SQL, [
266
- context.logicalSheetId,
267
- ]);
268
- const byEntity = new Map();
269
- for (const row of rows) {
270
- const existing = byEntity.get(row.entity_id);
271
- const cell = decodeNormalizedCell(row.normalized_value);
272
- if (existing === undefined) {
273
- const fields = {};
274
- fields[row.field_name] = cell;
275
- byEntity.set(row.entity_id, {
276
- entityId: row.entity_id,
277
- rowBindingId: row.row_binding_id,
278
- anchorReference: row.anchor_reference,
279
- entityRevision: row.entity_revision,
280
- fields,
281
- fieldRevisionHash: "",
282
- });
283
- continue;
284
- }
285
- existing.fields[row.field_name] = cell;
286
- }
287
- const desired = [];
288
- for (const row of byEntity.values()) {
289
- ensureTombstoneField(row, context.tombstoneField);
290
- const hash = computeFieldRevisionHash(row.fields);
291
- desired.push({ ...row, fieldRevisionHash: hash });
292
- }
293
- return desired;
294
- }
295
- function ensureTombstoneField(row, tombstoneField) {
296
- if (tombstoneField === undefined)
297
- return;
298
- const fields = row.fields;
299
- if (fields[tombstoneField] === undefined) {
300
- fields[tombstoneField] = { kind: NORMALIZED_CELL_KINDS.BOOLEAN, value: false };
301
- }
302
- }
303
- function computeFieldRevisionHash(fields) {
304
- const entries = Object.entries(fields)
305
- .sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0))
306
- .map(([fieldName, value]) => ({ fieldName, value }));
307
- return stableHash({ fields: entries });
308
- }
309
- function decodeNormalizedCell(value) {
310
- try {
311
- const parsed = JSON.parse(value);
312
- if (!isNormalizedCell(parsed)) {
313
- throw new StorageError(STORAGE_ERROR_CODES.OBSERVATION_STORAGE_INCONSISTENT, "entity_field_state.normalized_value is not a normalized cell");
314
- }
315
- return parsed;
316
- }
317
- catch (error) {
318
- if (error instanceof StorageError)
319
- throw error;
320
- throw new StorageError(STORAGE_ERROR_CODES.OBSERVATION_STORAGE_INCONSISTENT, "entity_field_state.normalized_value is not valid JSON");
321
- }
322
- }
323
- async function buildCorrectionEffects(context, sheet, drifts) {
324
- const effects = [];
325
- const commitId = "reconciliation:" + context.createId();
326
- for (const drift of drifts) {
327
- const baseline = await resolveCorrectionBaseline(context, drift.desired);
328
- if (baseline.skip)
329
- continue;
330
- const effect = createSystemProjectionEffect({
331
- effectId: "effect:" + context.createId(),
332
- commitId,
333
- logicalSheetId: context.logicalSheetId,
334
- physicalSheetId: context.physicalSheetId,
335
- sheetName: sheet.tabName,
336
- registeredRange: sheet.registeredRange,
337
- projection: SYNC_PROJECTIONS.SYSTEM_STATE,
338
- schemaVersion: context.schemaVersion,
339
- targetKind: "entity",
340
- targetId: drift.desired.entityId,
341
- rowBindingId: { kind: PRESENCE_KINDS.PRESENT, value: drift.desired.rowBindingId },
342
- conflictId: { kind: PRESENCE_KINDS.ABSENT },
343
- targetAnchor: drift.desired.anchorReference,
344
- fields: drift.desired.fields,
345
- createIfMissing: baseline.createIfMissing,
346
- expectedVisibleRevision: baseline.expectedVisibleRevision,
347
- expectedVisibleHash: baseline.expectedVisibleHash,
348
- targetEntityRevision: {
349
- kind: APPLICABILITY_KINDS.APPLICABLE,
350
- value: drift.desired.entityRevision,
351
- },
352
- targetFieldRevisionHash: {
353
- kind: APPLICABILITY_KINDS.APPLICABLE,
354
- value: drift.desired.fieldRevisionHash,
355
- },
356
- targetCanonicalCommitId: { kind: APPLICABILITY_KINDS.APPLICABLE, value: commitId },
357
- streamSequence: baseline.streamSequence,
358
- });
359
- effects.push(effect);
360
- }
361
- return effects;
362
- }
363
- async function resolveCorrectionBaseline(context, desired) {
364
- return context.storage.read(({ sql }) => resolveCorrectionBaselineWithSql(sql, context, desired));
365
- }
366
- async function resolveCorrectionBaselineWithSql(sql, context, desired) {
367
- const latestEffect = await sql.get(READ_LATEST_EFFECT_SQL, [
368
- context.logicalSheetId,
369
- desired.entityId,
370
- ]);
371
- if (latestEffect !== undefined && latestEffect.stream_sequence !== null) {
372
- const streamSequence = latestEffect.stream_sequence + 1;
373
- // delivery_uncertain counts as in-flight: the predecessor may still commit
374
- // remotely after a lost response, and the outbox claim ordering keeps any
375
- // successor pending until that effect is probe-settled. Planning a
376
- // correction against the uncertain target (rather than stale visible
377
- // state) is what makes the eventual guard match the committed write.
378
- if (latestEffect.status === "pending" ||
379
- latestEffect.status === "processing" ||
380
- latestEffect.status === "delivery_uncertain") {
381
- const payload = latestEffect.payload_json;
382
- const expectedHash = payload === null ? "" : extractTargetVisibleHash(payload);
383
- if (expectedHash === computeSyncVisibleHash(desired.fields)) {
384
- // A canonical write already has an equivalent correction in flight.
385
- // Do not append another stream item on every periodic scan while the
386
- // first item is waiting for the provider or its recovery read-back.
387
- return {
388
- skip: true,
389
- expectedVisibleRevision: (latestEffect.expected_visible_revision ?? 0) + 1,
390
- expectedVisibleHash: expectedHash,
391
- createIfMissing: false,
392
- streamSequence,
393
- };
394
- }
395
- return {
396
- skip: false,
397
- expectedVisibleRevision: (latestEffect.expected_visible_revision ?? 0) + 1,
398
- expectedVisibleHash: expectedHash,
399
- createIfMissing: false,
400
- streamSequence,
401
- };
402
- }
403
- const visible = await sql.get(READ_LATEST_VISIBLE_STATE_SQL, [
404
- context.physicalSheetId,
405
- desired.rowBindingId,
406
- ]);
407
- return baselineFromVisible(visible, streamSequence);
408
- }
409
- const visible = await sql.get(READ_LATEST_VISIBLE_STATE_SQL, [
410
- context.physicalSheetId,
411
- desired.rowBindingId,
412
- ]);
413
- return baselineFromVisible(visible, POSITIVE_SAFE_INTEGER_MINIMUM);
414
- }
415
- function baselineFromVisible(visible, streamSequence) {
416
- if (visible === undefined ||
417
- visible.confirmed_visible_revision === null ||
418
- visible.confirmed_snapshot_hash === null ||
419
- visible.confirmed_snapshot_hash.length === 0) {
420
- return {
421
- skip: false,
422
- expectedVisibleRevision: 0,
423
- expectedVisibleHash: "",
424
- createIfMissing: true,
425
- streamSequence,
426
- };
427
- }
428
- return {
429
- skip: false,
430
- expectedVisibleRevision: visible.confirmed_visible_revision,
431
- expectedVisibleHash: visible.confirmed_snapshot_hash,
432
- createIfMissing: false,
433
- streamSequence,
434
- };
435
- }
436
- function extractTargetVisibleHash(payloadJson) {
437
- try {
438
- const parsed = JSON.parse(payloadJson);
439
- if (!isRecord(parsed))
440
- return "";
441
- return typeof parsed.targetVisibleHash === "string" ? parsed.targetVisibleHash : "";
442
- }
443
- catch {
444
- return "";
445
- }
446
- }
447
144
  async function claimReconcilerFence(context) {
448
145
  const claim = await claimWriterLeaseWithAdapter(context.storage, {
449
146
  role: context.role,
@@ -461,105 +158,6 @@ async function claimReconcilerFence(context) {
461
158
  now: context.now(),
462
159
  };
463
160
  }
464
- function countMatchedRows(snapshot, desired, identityField) {
465
- const anchors = new Set();
466
- const ambiguousAnchors = new Set();
467
- const identities = new Set();
468
- const duplicateIdentities = new Set();
469
- for (const row of snapshot.rows) {
470
- if (row.physicalAnchor.kind === PRESENCE_KINDS.PRESENT) {
471
- if (ambiguousAnchors.has(row.physicalAnchor.value))
472
- continue;
473
- if (anchors.has(row.physicalAnchor.value)) {
474
- anchors.delete(row.physicalAnchor.value);
475
- ambiguousAnchors.add(row.physicalAnchor.value);
476
- }
477
- else {
478
- anchors.add(row.physicalAnchor.value);
479
- }
480
- }
481
- const identity = snapshotIdentity(row, identityField);
482
- if (identity === undefined || duplicateIdentities.has(identity))
483
- continue;
484
- if (identities.has(identity)) {
485
- identities.delete(identity);
486
- duplicateIdentities.add(identity);
487
- }
488
- else {
489
- identities.add(identity);
490
- }
491
- }
492
- let matched = 0;
493
- for (const row of desired) {
494
- const identity = desiredRowIdentity(row, identityField);
495
- const anchorAmbiguous = ambiguousAnchors.has(row.anchorReference);
496
- // A desired identity duplicated in the sheet quarantines the binding:
497
- // neither its unique anchor nor its identity may count as matched.
498
- const identityAmbiguous = identity !== undefined && duplicateIdentities.has(identity);
499
- if ((!anchorAmbiguous && !identityAmbiguous && anchors.has(row.anchorReference)) ||
500
- (!anchorAmbiguous && !identityAmbiguous && identity !== undefined && identities.has(identity))) {
501
- matched += 1;
502
- }
503
- }
504
- return matched;
505
- }
506
- function countExtraRows(snapshot, desired, identityField) {
507
- // Identities that appear more than once in the snapshot cannot prove
508
- // ownership. A desired row carrying one of these identities is quarantined:
509
- // its anchor never suppresses the extra count, and the duplicated identity
510
- // itself never suppresses it either.
511
- const duplicateIdentities = new Set();
512
- {
513
- const seen = new Set();
514
- for (const row of snapshot.rows) {
515
- const identity = snapshotIdentity(row, identityField);
516
- if (identity === undefined)
517
- continue;
518
- if (seen.has(identity))
519
- duplicateIdentities.add(identity);
520
- seen.add(identity);
521
- }
522
- }
523
- const desiredByAnchor = new Map();
524
- const desiredIdentities = new Set();
525
- for (const row of desired) {
526
- if (!desiredByAnchor.has(row.anchorReference))
527
- desiredByAnchor.set(row.anchorReference, row);
528
- const identity = desiredRowIdentity(row, identityField);
529
- if (identity !== undefined)
530
- desiredIdentities.add(identity);
531
- }
532
- const anchorCounts = new Map();
533
- for (const row of snapshot.rows) {
534
- if (row.physicalAnchor.kind !== PRESENCE_KINDS.PRESENT)
535
- continue;
536
- anchorCounts.set(row.physicalAnchor.value, (anchorCounts.get(row.physicalAnchor.value) ?? 0) + 1);
537
- }
538
- let extra = 0;
539
- for (const row of snapshot.rows) {
540
- // A duplicated anchor cannot prove which row the desired binding owns, so
541
- // it never suppresses the extra count; the business key decides instead.
542
- // A quarantined desired identity (duplicated in the sheet) blocks the
543
- // anchor suppression too, because the anchor cannot prove ownership of a
544
- // business key that appears elsewhere.
545
- if (row.physicalAnchor.kind === PRESENCE_KINDS.PRESENT &&
546
- (anchorCounts.get(row.physicalAnchor.value) ?? 0) === 1) {
547
- const desiredRow = desiredByAnchor.get(row.physicalAnchor.value);
548
- const desiredIdentity = desiredRow === undefined
549
- ? undefined
550
- : desiredRowIdentity(desiredRow, identityField);
551
- if (desiredRow !== undefined &&
552
- (desiredIdentity === undefined || !duplicateIdentities.has(desiredIdentity))) {
553
- continue;
554
- }
555
- }
556
- const identity = snapshotIdentity(row, identityField);
557
- if (identity !== undefined && !duplicateIdentities.has(identity) && desiredIdentities.has(identity))
558
- continue;
559
- extra += 1;
560
- }
561
- return extra;
562
- }
563
161
  function freezeReport(physicalSheetId, snapshot, desired, delta) {
564
162
  return {
565
163
  physicalSheetId,
@@ -1 +1 @@
1
- {"version":3,"file":"ReconciliationScanner.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/ReconciliationScanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReconciliationScanner.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/ReconciliationScanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Drift detection for the System_State reconciliation scan.
3
+ *
4
+ * Compares one provider snapshot against the durable desired state and
5
+ * classifies every desired row as matched, drifted, or missing. Anchor and
6
+ * identity duplicates quarantine the affected locators instead of letting the
7
+ * last row win silently, so a corrupted anchor or duplicated business key can
8
+ * never prove ownership of a row.
9
+ */
10
+ import { type NormalizedCell } from "../../../../domain/index.js";
11
+ import { type SyncSheetsSnapshot } from "../../sheetsContract/syncSheets.js";
12
+ import type { DesiredRow } from "./shared.js";
13
+ export type DriftKind = "drifted" | "missing";
14
+ export interface DriftTarget {
15
+ readonly kind: DriftKind;
16
+ readonly desired: DesiredRow;
17
+ }
18
+ export declare function computeDrifts(args: {
19
+ readonly snapshot: SyncSheetsSnapshot;
20
+ readonly desired: readonly DesiredRow[];
21
+ readonly systemFields: readonly string[];
22
+ readonly sheet: {
23
+ readonly registeredRange: string;
24
+ readonly businessKeyField: string;
25
+ };
26
+ }): readonly DriftTarget[];
27
+ /** Reads a business-key value from a snapshot row for unanchored fast appends. */
28
+ export declare function snapshotIdentity(row: SyncSheetsSnapshot["rows"][number], identityField: string): string | undefined;
29
+ /** Reads the same visible business-key value from canonical desired state. */
30
+ export declare function desiredRowIdentity(row: DesiredRow, identityField: string): string | undefined;
31
+ export declare function normalizedCellIdentity(cell: NormalizedCell | undefined): string | undefined;
32
+ export declare function computeObservedHash(row: SyncSheetsSnapshot["rows"][number], systemFields: readonly string[]): string;
33
+ export declare function countMatchedRows(snapshot: SyncSheetsSnapshot, desired: readonly DesiredRow[], identityField: string): number;
34
+ export declare function countExtraRows(snapshot: SyncSheetsSnapshot, desired: readonly DesiredRow[], identityField: string): number;
35
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;CACzF,GAAG,SAAS,WAAW,EAAE,CAoDzB;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EACvC,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS,CAEpB;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE7F;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAY3F;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EACvC,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,MAAM,CAOR;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,aAAa,EAAE,MAAM,GACpB,MAAM,CAqCR;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,aAAa,EAAE,MAAM,GACpB,MAAM,CAkDR"}