hikoutei 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (535) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +135 -0
  3. package/README.ko.md +138 -0
  4. package/README.md +143 -0
  5. package/apps-script/gateway/Code.gs +412 -0
  6. package/dist/adapter/persistence/contracts/index.d.ts +3 -0
  7. package/dist/adapter/persistence/contracts/index.d.ts.map +1 -0
  8. package/dist/adapter/persistence/contracts/index.js +3 -0
  9. package/dist/adapter/persistence/contracts/index.js.map +1 -0
  10. package/dist/adapter/persistence/contracts/sql.d.ts +50 -0
  11. package/dist/adapter/persistence/contracts/sql.d.ts.map +1 -0
  12. package/dist/adapter/persistence/contracts/sql.js +9 -0
  13. package/dist/adapter/persistence/contracts/sql.js.map +1 -0
  14. package/dist/adapter/persistence/index.d.ts +2 -0
  15. package/dist/adapter/persistence/index.d.ts.map +1 -0
  16. package/dist/adapter/persistence/index.js +2 -0
  17. package/dist/adapter/persistence/index.js.map +1 -0
  18. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.d.ts +53 -0
  19. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.d.ts.map +1 -0
  20. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.js +105 -0
  21. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.js.map +1 -0
  22. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts +39 -0
  23. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts.map +1 -0
  24. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.js +54 -0
  25. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.js.map +1 -0
  26. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.d.ts +38 -0
  27. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.d.ts.map +1 -0
  28. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.js +55 -0
  29. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.js.map +1 -0
  30. package/dist/adapter/persistence/providers/mikro-orm/index.d.ts +16 -0
  31. package/dist/adapter/persistence/providers/mikro-orm/index.d.ts.map +1 -0
  32. package/dist/adapter/persistence/providers/mikro-orm/index.js +9 -0
  33. package/dist/adapter/persistence/providers/mikro-orm/index.js.map +1 -0
  34. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.d.ts +27 -0
  35. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.d.ts.map +1 -0
  36. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js +67 -0
  37. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js.map +1 -0
  38. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.d.ts +19 -0
  39. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.d.ts.map +1 -0
  40. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.js +67 -0
  41. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.js.map +1 -0
  42. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.d.ts +78 -0
  43. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.d.ts.map +1 -0
  44. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.js +121 -0
  45. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.js.map +1 -0
  46. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteSchema.d.ts +20 -0
  47. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteSchema.d.ts.map +1 -0
  48. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteSchema.js +125 -0
  49. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteSchema.js.map +1 -0
  50. package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts +42 -0
  51. package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts.map +1 -0
  52. package/dist/adapter/sheets/providers/apps-script-gateway/errors.js +51 -0
  53. package/dist/adapter/sheets/providers/apps-script-gateway/errors.js.map +1 -0
  54. package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts +22 -0
  55. package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts.map +1 -0
  56. package/dist/adapter/sheets/providers/apps-script-gateway/index.js +12 -0
  57. package/dist/adapter/sheets/providers/apps-script-gateway/index.js.map +1 -0
  58. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts +42 -0
  59. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts.map +1 -0
  60. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js +161 -0
  61. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js.map +1 -0
  62. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.d.ts +3 -0
  63. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.d.ts.map +1 -0
  64. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js +692 -0
  65. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js.map +1 -0
  66. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.d.ts +29 -0
  67. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.d.ts.map +1 -0
  68. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js +538 -0
  69. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js.map +1 -0
  70. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.d.ts +12 -0
  71. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.d.ts.map +1 -0
  72. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.js +190 -0
  73. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.js.map +1 -0
  74. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts +23 -0
  75. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts.map +1 -0
  76. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js +166 -0
  77. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js.map +1 -0
  78. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.d.ts +50 -0
  79. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.d.ts.map +1 -0
  80. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.js +60 -0
  81. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.js.map +1 -0
  82. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.d.ts +44 -0
  83. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.d.ts.map +1 -0
  84. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.js +40 -0
  85. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.js.map +1 -0
  86. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.d.ts +7 -0
  87. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.d.ts.map +1 -0
  88. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js +47 -0
  89. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js.map +1 -0
  90. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.d.ts +5 -0
  91. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.d.ts.map +1 -0
  92. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.js +54 -0
  93. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.js.map +1 -0
  94. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.d.ts +5 -0
  95. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.d.ts.map +1 -0
  96. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.js +2 -0
  97. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.js.map +1 -0
  98. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.d.ts +10 -0
  99. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.d.ts.map +1 -0
  100. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.js +35 -0
  101. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.js.map +1 -0
  102. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts +67 -0
  103. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts.map +1 -0
  104. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js +204 -0
  105. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js.map +1 -0
  106. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts +78 -0
  107. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts.map +1 -0
  108. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js +343 -0
  109. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js.map +1 -0
  110. package/dist/application/index.d.ts +4 -0
  111. package/dist/application/index.d.ts.map +1 -0
  112. package/dist/application/index.js +4 -0
  113. package/dist/application/index.js.map +1 -0
  114. package/dist/application/orm/api/TypedSheetsOrm.d.ts +71 -0
  115. package/dist/application/orm/api/TypedSheetsOrm.d.ts.map +1 -0
  116. package/dist/application/orm/api/TypedSheetsOrm.js +116 -0
  117. package/dist/application/orm/api/TypedSheetsOrm.js.map +1 -0
  118. package/dist/application/orm/api/contracts.d.ts +118 -0
  119. package/dist/application/orm/api/contracts.d.ts.map +1 -0
  120. package/dist/application/orm/api/contracts.js +21 -0
  121. package/dist/application/orm/api/contracts.js.map +1 -0
  122. package/dist/application/orm/errors.d.ts +35 -0
  123. package/dist/application/orm/errors.d.ts.map +1 -0
  124. package/dist/application/orm/errors.js +35 -0
  125. package/dist/application/orm/errors.js.map +1 -0
  126. package/dist/application/orm/index.d.ts +13 -0
  127. package/dist/application/orm/index.d.ts.map +1 -0
  128. package/dist/application/orm/index.js +7 -0
  129. package/dist/application/orm/index.js.map +1 -0
  130. package/dist/application/orm/mapping/contracts.d.ts +113 -0
  131. package/dist/application/orm/mapping/contracts.d.ts.map +1 -0
  132. package/dist/application/orm/mapping/contracts.js +8 -0
  133. package/dist/application/orm/mapping/contracts.js.map +1 -0
  134. package/dist/application/orm/mapping/definition.d.ts +16 -0
  135. package/dist/application/orm/mapping/definition.d.ts.map +1 -0
  136. package/dist/application/orm/mapping/definition.js +145 -0
  137. package/dist/application/orm/mapping/definition.js.map +1 -0
  138. package/dist/application/orm/mapping/entityMapping.d.ts +13 -0
  139. package/dist/application/orm/mapping/entityMapping.d.ts.map +1 -0
  140. package/dist/application/orm/mapping/entityMapping.js +13 -0
  141. package/dist/application/orm/mapping/entityMapping.js.map +1 -0
  142. package/dist/application/orm/mapping/identity.d.ts +14 -0
  143. package/dist/application/orm/mapping/identity.d.ts.map +1 -0
  144. package/dist/application/orm/mapping/identity.js +37 -0
  145. package/dist/application/orm/mapping/identity.js.map +1 -0
  146. package/dist/application/orm/mapping/observationMapping.d.ts +42 -0
  147. package/dist/application/orm/mapping/observationMapping.d.ts.map +1 -0
  148. package/dist/application/orm/mapping/observationMapping.js +65 -0
  149. package/dist/application/orm/mapping/observationMapping.js.map +1 -0
  150. package/dist/application/orm/mapping/projection.d.ts +22 -0
  151. package/dist/application/orm/mapping/projection.d.ts.map +1 -0
  152. package/dist/application/orm/mapping/projection.js +74 -0
  153. package/dist/application/orm/mapping/projection.js.map +1 -0
  154. package/dist/application/orm/mapping/registry.d.ts +15 -0
  155. package/dist/application/orm/mapping/registry.d.ts.map +1 -0
  156. package/dist/application/orm/mapping/registry.js +38 -0
  157. package/dist/application/orm/mapping/registry.js.map +1 -0
  158. package/dist/application/orm/mapping/values.d.ts +17 -0
  159. package/dist/application/orm/mapping/values.d.ts.map +1 -0
  160. package/dist/application/orm/mapping/values.js +141 -0
  161. package/dist/application/orm/mapping/values.js.map +1 -0
  162. package/dist/application/orm/persistence/flush/flushCoordinator.d.ts +28 -0
  163. package/dist/application/orm/persistence/flush/flushCoordinator.d.ts.map +1 -0
  164. package/dist/application/orm/persistence/flush/flushCoordinator.js +170 -0
  165. package/dist/application/orm/persistence/flush/flushCoordinator.js.map +1 -0
  166. package/dist/application/orm/persistence/flush/mappedFlushCoordinator.d.ts +9 -0
  167. package/dist/application/orm/persistence/flush/mappedFlushCoordinator.d.ts.map +1 -0
  168. package/dist/application/orm/persistence/flush/mappedFlushCoordinator.js +8 -0
  169. package/dist/application/orm/persistence/flush/mappedFlushCoordinator.js.map +1 -0
  170. package/dist/application/orm/persistence/lifecycle/entityLifecycle.d.ts +12 -0
  171. package/dist/application/orm/persistence/lifecycle/entityLifecycle.d.ts.map +1 -0
  172. package/dist/application/orm/persistence/lifecycle/entityLifecycle.js +134 -0
  173. package/dist/application/orm/persistence/lifecycle/entityLifecycle.js.map +1 -0
  174. package/dist/application/orm/persistence/projection/projectionEffects.d.ts +21 -0
  175. package/dist/application/orm/persistence/projection/projectionEffects.d.ts.map +1 -0
  176. package/dist/application/orm/persistence/projection/projectionEffects.js +203 -0
  177. package/dist/application/orm/persistence/projection/projectionEffects.js.map +1 -0
  178. package/dist/application/orm/persistence/support/businessKeys.d.ts +17 -0
  179. package/dist/application/orm/persistence/support/businessKeys.d.ts.map +1 -0
  180. package/dist/application/orm/persistence/support/businessKeys.js +72 -0
  181. package/dist/application/orm/persistence/support/businessKeys.js.map +1 -0
  182. package/dist/application/orm/persistence/support/canonicalState.d.ts +22 -0
  183. package/dist/application/orm/persistence/support/canonicalState.d.ts.map +1 -0
  184. package/dist/application/orm/persistence/support/canonicalState.js +88 -0
  185. package/dist/application/orm/persistence/support/canonicalState.js.map +1 -0
  186. package/dist/application/orm/persistence/support/contracts.d.ts +139 -0
  187. package/dist/application/orm/persistence/support/contracts.d.ts.map +1 -0
  188. package/dist/application/orm/persistence/support/contracts.js +93 -0
  189. package/dist/application/orm/persistence/support/contracts.js.map +1 -0
  190. package/dist/application/orm/persistence/support/helpers.d.ts +32 -0
  191. package/dist/application/orm/persistence/support/helpers.d.ts.map +1 -0
  192. package/dist/application/orm/persistence/support/helpers.js +66 -0
  193. package/dist/application/orm/persistence/support/helpers.js.map +1 -0
  194. package/dist/application/orm/persistence/support/timing.d.ts +20 -0
  195. package/dist/application/orm/persistence/support/timing.d.ts.map +1 -0
  196. package/dist/application/orm/persistence/support/timing.js +55 -0
  197. package/dist/application/orm/persistence/support/timing.js.map +1 -0
  198. package/dist/application/sync/gateway/SyncGatewayBootstrap.d.ts +46 -0
  199. package/dist/application/sync/gateway/SyncGatewayBootstrap.d.ts.map +1 -0
  200. package/dist/application/sync/gateway/SyncGatewayBootstrap.js +93 -0
  201. package/dist/application/sync/gateway/SyncGatewayBootstrap.js.map +1 -0
  202. package/dist/application/sync/gateway/constants.d.ts +65 -0
  203. package/dist/application/sync/gateway/constants.d.ts.map +1 -0
  204. package/dist/application/sync/gateway/constants.js +57 -0
  205. package/dist/application/sync/gateway/constants.js.map +1 -0
  206. package/dist/application/sync/gateway/errors.d.ts +15 -0
  207. package/dist/application/sync/gateway/errors.d.ts.map +1 -0
  208. package/dist/application/sync/gateway/errors.js +16 -0
  209. package/dist/application/sync/gateway/errors.js.map +1 -0
  210. package/dist/application/sync/gateway/syncGateway.d.ts +313 -0
  211. package/dist/application/sync/gateway/syncGateway.d.ts.map +1 -0
  212. package/dist/application/sync/gateway/syncGateway.js +202 -0
  213. package/dist/application/sync/gateway/syncGateway.js.map +1 -0
  214. package/dist/application/sync/gateway/validation.d.ts +17 -0
  215. package/dist/application/sync/gateway/validation.d.ts.map +1 -0
  216. package/dist/application/sync/gateway/validation.js +60 -0
  217. package/dist/application/sync/gateway/validation.js.map +1 -0
  218. package/dist/application/sync/inbound/polling/SimpleSheetPolling.d.ts +72 -0
  219. package/dist/application/sync/inbound/polling/SimpleSheetPolling.d.ts.map +1 -0
  220. package/dist/application/sync/inbound/polling/SimpleSheetPolling.js +272 -0
  221. package/dist/application/sync/inbound/polling/SimpleSheetPolling.js.map +1 -0
  222. package/dist/application/sync/index.d.ts +16 -0
  223. package/dist/application/sync/index.d.ts.map +1 -0
  224. package/dist/application/sync/index.js +9 -0
  225. package/dist/application/sync/index.js.map +1 -0
  226. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts +106 -0
  227. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts.map +1 -0
  228. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js +297 -0
  229. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js.map +1 -0
  230. package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts +100 -0
  231. package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts.map +1 -0
  232. package/dist/application/sync/outbound/effects/SyncEffectWorker.js +345 -0
  233. package/dist/application/sync/outbound/effects/SyncEffectWorker.js.map +1 -0
  234. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts +46 -0
  235. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts.map +1 -0
  236. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js +63 -0
  237. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js.map +1 -0
  238. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts +20 -0
  239. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts.map +1 -0
  240. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js +102 -0
  241. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js.map +1 -0
  242. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.d.ts +19 -0
  243. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.d.ts.map +1 -0
  244. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js +32 -0
  245. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js.map +1 -0
  246. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts +30 -0
  247. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts.map +1 -0
  248. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js +202 -0
  249. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js.map +1 -0
  250. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.d.ts +17 -0
  251. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.d.ts.map +1 -0
  252. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.js +80 -0
  253. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.js.map +1 -0
  254. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts +13 -0
  255. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts.map +1 -0
  256. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js +205 -0
  257. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js.map +1 -0
  258. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.d.ts +81 -0
  259. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.d.ts.map +1 -0
  260. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js +245 -0
  261. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js.map +1 -0
  262. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts +77 -0
  263. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -0
  264. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js +518 -0
  265. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -0
  266. package/dist/application/sync/telemetry/syncTiming.d.ts +50 -0
  267. package/dist/application/sync/telemetry/syncTiming.d.ts.map +1 -0
  268. package/dist/application/sync/telemetry/syncTiming.js +22 -0
  269. package/dist/application/sync/telemetry/syncTiming.js.map +1 -0
  270. package/dist/domain/conflict/errors.d.ts +42 -0
  271. package/dist/domain/conflict/errors.d.ts.map +1 -0
  272. package/dist/domain/conflict/errors.js +36 -0
  273. package/dist/domain/conflict/errors.js.map +1 -0
  274. package/dist/domain/conflict/index.d.ts +5 -0
  275. package/dist/domain/conflict/index.d.ts.map +1 -0
  276. package/dist/domain/conflict/index.js +3 -0
  277. package/dist/domain/conflict/index.js.map +1 -0
  278. package/dist/domain/conflict/transitions.d.ts +52 -0
  279. package/dist/domain/conflict/transitions.d.ts.map +1 -0
  280. package/dist/domain/conflict/transitions.js +115 -0
  281. package/dist/domain/conflict/transitions.js.map +1 -0
  282. package/dist/domain/errors/evaluation.d.ts +13 -0
  283. package/dist/domain/errors/evaluation.d.ts.map +1 -0
  284. package/dist/domain/errors/evaluation.js +14 -0
  285. package/dist/domain/errors/evaluation.js.map +1 -0
  286. package/dist/domain/errors/identity.d.ts +12 -0
  287. package/dist/domain/errors/identity.d.ts.map +1 -0
  288. package/dist/domain/errors/identity.js +15 -0
  289. package/dist/domain/errors/identity.js.map +1 -0
  290. package/dist/domain/errors/index.d.ts +7 -0
  291. package/dist/domain/errors/index.d.ts.map +1 -0
  292. package/dist/domain/errors/index.js +5 -0
  293. package/dist/domain/errors/index.js.map +1 -0
  294. package/dist/domain/errors/stableEncoding.d.ts +7 -0
  295. package/dist/domain/errors/stableEncoding.d.ts.map +1 -0
  296. package/dist/domain/errors/stableEncoding.js +8 -0
  297. package/dist/domain/errors/stableEncoding.js.map +1 -0
  298. package/dist/domain/errors/types.d.ts +20 -0
  299. package/dist/domain/errors/types.d.ts.map +1 -0
  300. package/dist/domain/errors/types.js +18 -0
  301. package/dist/domain/errors/types.js.map +1 -0
  302. package/dist/domain/evaluate/constants.d.ts +55 -0
  303. package/dist/domain/evaluate/constants.d.ts.map +1 -0
  304. package/dist/domain/evaluate/constants.js +41 -0
  305. package/dist/domain/evaluate/constants.js.map +1 -0
  306. package/dist/domain/evaluate/contracts.d.ts +125 -0
  307. package/dist/domain/evaluate/contracts.d.ts.map +1 -0
  308. package/dist/domain/evaluate/contracts.js +8 -0
  309. package/dist/domain/evaluate/contracts.js.map +1 -0
  310. package/dist/domain/evaluate/evaluateBatch.d.ts +11 -0
  311. package/dist/domain/evaluate/evaluateBatch.d.ts.map +1 -0
  312. package/dist/domain/evaluate/evaluateBatch.js +91 -0
  313. package/dist/domain/evaluate/evaluateBatch.js.map +1 -0
  314. package/dist/domain/evaluate/fieldEvaluation.d.ts +14 -0
  315. package/dist/domain/evaluate/fieldEvaluation.d.ts.map +1 -0
  316. package/dist/domain/evaluate/fieldEvaluation.js +133 -0
  317. package/dist/domain/evaluate/fieldEvaluation.js.map +1 -0
  318. package/dist/domain/evaluate/identity.d.ts +21 -0
  319. package/dist/domain/evaluate/identity.d.ts.map +1 -0
  320. package/dist/domain/evaluate/identity.js +72 -0
  321. package/dist/domain/evaluate/identity.js.map +1 -0
  322. package/dist/domain/evaluate/index.d.ts +4 -0
  323. package/dist/domain/evaluate/index.d.ts.map +1 -0
  324. package/dist/domain/evaluate/index.js +3 -0
  325. package/dist/domain/evaluate/index.js.map +1 -0
  326. package/dist/domain/evaluate/preconditions.d.ts +30 -0
  327. package/dist/domain/evaluate/preconditions.d.ts.map +1 -0
  328. package/dist/domain/evaluate/preconditions.js +389 -0
  329. package/dist/domain/evaluate/preconditions.js.map +1 -0
  330. package/dist/domain/evaluate/quarantine.d.ts +15 -0
  331. package/dist/domain/evaluate/quarantine.d.ts.map +1 -0
  332. package/dist/domain/evaluate/quarantine.js +185 -0
  333. package/dist/domain/evaluate/quarantine.js.map +1 -0
  334. package/dist/domain/index.d.ts +7 -0
  335. package/dist/domain/index.d.ts.map +1 -0
  336. package/dist/domain/index.js +7 -0
  337. package/dist/domain/index.js.map +1 -0
  338. package/dist/domain/model/constants.d.ts +73 -0
  339. package/dist/domain/model/constants.d.ts.map +1 -0
  340. package/dist/domain/model/constants.js +59 -0
  341. package/dist/domain/model/constants.js.map +1 -0
  342. package/dist/domain/model/index.d.ts +3 -0
  343. package/dist/domain/model/index.d.ts.map +1 -0
  344. package/dist/domain/model/index.js +2 -0
  345. package/dist/domain/model/index.js.map +1 -0
  346. package/dist/domain/model/types.d.ts +330 -0
  347. package/dist/domain/model/types.d.ts.map +1 -0
  348. package/dist/domain/model/types.js +8 -0
  349. package/dist/domain/model/types.js.map +1 -0
  350. package/dist/index.d.ts +17 -0
  351. package/dist/index.d.ts.map +1 -0
  352. package/dist/index.js +11 -0
  353. package/dist/index.js.map +1 -0
  354. package/dist/infrastructure/index.d.ts +3 -0
  355. package/dist/infrastructure/index.d.ts.map +1 -0
  356. package/dist/infrastructure/index.js +3 -0
  357. package/dist/infrastructure/index.js.map +1 -0
  358. package/dist/infrastructure/storage/constants.d.ts +4 -0
  359. package/dist/infrastructure/storage/constants.d.ts.map +1 -0
  360. package/dist/infrastructure/storage/constants.js +4 -0
  361. package/dist/infrastructure/storage/constants.js.map +1 -0
  362. package/dist/infrastructure/storage/errors.d.ts +55 -0
  363. package/dist/infrastructure/storage/errors.d.ts.map +1 -0
  364. package/dist/infrastructure/storage/errors.js +58 -0
  365. package/dist/infrastructure/storage/errors.js.map +1 -0
  366. package/dist/infrastructure/storage/index.d.ts +23 -0
  367. package/dist/infrastructure/storage/index.d.ts.map +1 -0
  368. package/dist/infrastructure/storage/index.js +13 -0
  369. package/dist/infrastructure/storage/index.js.map +1 -0
  370. package/dist/infrastructure/storage/recovery/restoreRecovery.d.ts +64 -0
  371. package/dist/infrastructure/storage/recovery/restoreRecovery.d.ts.map +1 -0
  372. package/dist/infrastructure/storage/recovery/restoreRecovery.js +148 -0
  373. package/dist/infrastructure/storage/recovery/restoreRecovery.js.map +1 -0
  374. package/dist/infrastructure/storage/sqlite/schema.d.ts +49 -0
  375. package/dist/infrastructure/storage/sqlite/schema.d.ts.map +1 -0
  376. package/dist/infrastructure/storage/sqlite/schema.js +529 -0
  377. package/dist/infrastructure/storage/sqlite/schema.js.map +1 -0
  378. package/dist/infrastructure/storage/sqlite/schemaTypes.d.ts +5 -0
  379. package/dist/infrastructure/storage/sqlite/schemaTypes.d.ts.map +1 -0
  380. package/dist/infrastructure/storage/sqlite/schemaTypes.js +2 -0
  381. package/dist/infrastructure/storage/sqlite/schemaTypes.js.map +1 -0
  382. package/dist/infrastructure/storage/sqlite/sqlScript.d.ts +9 -0
  383. package/dist/infrastructure/storage/sqlite/sqlScript.d.ts.map +1 -0
  384. package/dist/infrastructure/storage/sqlite/sqlScript.js +122 -0
  385. package/dist/infrastructure/storage/sqlite/sqlScript.js.map +1 -0
  386. package/dist/infrastructure/storage/sqlite/sqlState.d.ts +6 -0
  387. package/dist/infrastructure/storage/sqlite/sqlState.d.ts.map +1 -0
  388. package/dist/infrastructure/storage/sqlite/sqlState.js +14 -0
  389. package/dist/infrastructure/storage/sqlite/sqlState.js.map +1 -0
  390. package/dist/infrastructure/storage/sqlite/sqlTransaction.d.ts +6 -0
  391. package/dist/infrastructure/storage/sqlite/sqlTransaction.d.ts.map +1 -0
  392. package/dist/infrastructure/storage/sqlite/sqlTransaction.js +24 -0
  393. package/dist/infrastructure/storage/sqlite/sqlTransaction.js.map +1 -0
  394. package/dist/infrastructure/storage/sqlite/sqliteBridge.d.ts +44 -0
  395. package/dist/infrastructure/storage/sqlite/sqliteBridge.d.ts.map +1 -0
  396. package/dist/infrastructure/storage/sqlite/sqliteBridge.js +66 -0
  397. package/dist/infrastructure/storage/sqlite/sqliteBridge.js.map +1 -0
  398. package/dist/infrastructure/storage/state/canonical/canonicalCommit.d.ts +101 -0
  399. package/dist/infrastructure/storage/state/canonical/canonicalCommit.d.ts.map +1 -0
  400. package/dist/infrastructure/storage/state/canonical/canonicalCommit.js +417 -0
  401. package/dist/infrastructure/storage/state/canonical/canonicalCommit.js.map +1 -0
  402. package/dist/infrastructure/storage/state/observation/observationAudit.d.ts +16 -0
  403. package/dist/infrastructure/storage/state/observation/observationAudit.d.ts.map +1 -0
  404. package/dist/infrastructure/storage/state/observation/observationAudit.js +85 -0
  405. package/dist/infrastructure/storage/state/observation/observationAudit.js.map +1 -0
  406. package/dist/infrastructure/storage/state/observation/observationCanonical.d.ts +31 -0
  407. package/dist/infrastructure/storage/state/observation/observationCanonical.d.ts.map +1 -0
  408. package/dist/infrastructure/storage/state/observation/observationCanonical.js +439 -0
  409. package/dist/infrastructure/storage/state/observation/observationCanonical.js.map +1 -0
  410. package/dist/infrastructure/storage/state/observation/observationConstants.d.ts +53 -0
  411. package/dist/infrastructure/storage/state/observation/observationConstants.d.ts.map +1 -0
  412. package/dist/infrastructure/storage/state/observation/observationConstants.js +41 -0
  413. package/dist/infrastructure/storage/state/observation/observationConstants.js.map +1 -0
  414. package/dist/infrastructure/storage/state/observation/observationLedger.d.ts +49 -0
  415. package/dist/infrastructure/storage/state/observation/observationLedger.d.ts.map +1 -0
  416. package/dist/infrastructure/storage/state/observation/observationLedger.js +537 -0
  417. package/dist/infrastructure/storage/state/observation/observationLedger.js.map +1 -0
  418. package/dist/infrastructure/storage/state/observation/observationQuarantine.d.ts +15 -0
  419. package/dist/infrastructure/storage/state/observation/observationQuarantine.d.ts.map +1 -0
  420. package/dist/infrastructure/storage/state/observation/observationQuarantine.js +100 -0
  421. package/dist/infrastructure/storage/state/observation/observationQuarantine.js.map +1 -0
  422. package/dist/infrastructure/storage/state/observation/observationTypes.d.ts +124 -0
  423. package/dist/infrastructure/storage/state/observation/observationTypes.d.ts.map +1 -0
  424. package/dist/infrastructure/storage/state/observation/observationTypes.js +13 -0
  425. package/dist/infrastructure/storage/state/observation/observationTypes.js.map +1 -0
  426. package/dist/infrastructure/storage/state/observation/observationValidation.d.ts +28 -0
  427. package/dist/infrastructure/storage/state/observation/observationValidation.d.ts.map +1 -0
  428. package/dist/infrastructure/storage/state/observation/observationValidation.js +223 -0
  429. package/dist/infrastructure/storage/state/observation/observationValidation.js.map +1 -0
  430. package/dist/infrastructure/storage/state/observation/observationWriter.d.ts +28 -0
  431. package/dist/infrastructure/storage/state/observation/observationWriter.d.ts.map +1 -0
  432. package/dist/infrastructure/storage/state/observation/observationWriter.js +293 -0
  433. package/dist/infrastructure/storage/state/observation/observationWriter.js.map +1 -0
  434. package/dist/infrastructure/storage/state/readonly/readOnlyObservation.d.ts +58 -0
  435. package/dist/infrastructure/storage/state/readonly/readOnlyObservation.d.ts.map +1 -0
  436. package/dist/infrastructure/storage/state/readonly/readOnlyObservation.js +195 -0
  437. package/dist/infrastructure/storage/state/readonly/readOnlyObservation.js.map +1 -0
  438. package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts +31 -0
  439. package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts.map +1 -0
  440. package/dist/infrastructure/storage/state/resolution/resolutionWriter.js +563 -0
  441. package/dist/infrastructure/storage/state/resolution/resolutionWriter.js.map +1 -0
  442. package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.d.ts +118 -0
  443. package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.d.ts.map +1 -0
  444. package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.js +18 -0
  445. package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.js.map +1 -0
  446. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.d.ts +23 -0
  447. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.d.ts.map +1 -0
  448. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.js +84 -0
  449. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.js.map +1 -0
  450. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts +16 -0
  451. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts.map +1 -0
  452. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js +97 -0
  453. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js.map +1 -0
  454. package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts +137 -0
  455. package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts.map +1 -0
  456. package/dist/infrastructure/storage/sync/outbound/effectOutbox.js +396 -0
  457. package/dist/infrastructure/storage/sync/outbound/effectOutbox.js.map +1 -0
  458. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts +101 -0
  459. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts.map +1 -0
  460. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js +9 -0
  461. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js.map +1 -0
  462. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts +21 -0
  463. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts.map +1 -0
  464. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js +184 -0
  465. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js.map +1 -0
  466. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts +25 -0
  467. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts.map +1 -0
  468. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js +158 -0
  469. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js.map +1 -0
  470. package/dist/infrastructure/storage/sync/shared/syncRegistry.d.ts +69 -0
  471. package/dist/infrastructure/storage/sync/shared/syncRegistry.d.ts.map +1 -0
  472. package/dist/infrastructure/storage/sync/shared/syncRegistry.js +272 -0
  473. package/dist/infrastructure/storage/sync/shared/syncRegistry.js.map +1 -0
  474. package/dist/infrastructure/storage/sync/shared/writerLease.d.ts +90 -0
  475. package/dist/infrastructure/storage/sync/shared/writerLease.d.ts.map +1 -0
  476. package/dist/infrastructure/storage/sync/shared/writerLease.js +282 -0
  477. package/dist/infrastructure/storage/sync/shared/writerLease.js.map +1 -0
  478. package/dist/shared/constants.d.ts +8 -0
  479. package/dist/shared/constants.d.ts.map +1 -0
  480. package/dist/shared/constants.js +8 -0
  481. package/dist/shared/constants.js.map +1 -0
  482. package/dist/shared/encoding/constants.d.ts +45 -0
  483. package/dist/shared/encoding/constants.d.ts.map +1 -0
  484. package/dist/shared/encoding/constants.js +37 -0
  485. package/dist/shared/encoding/constants.js.map +1 -0
  486. package/dist/shared/encoding/index.d.ts +6 -0
  487. package/dist/shared/encoding/index.d.ts.map +1 -0
  488. package/dist/shared/encoding/index.js +4 -0
  489. package/dist/shared/encoding/index.js.map +1 -0
  490. package/dist/shared/encoding/stableEncode.d.ts +34 -0
  491. package/dist/shared/encoding/stableEncode.d.ts.map +1 -0
  492. package/dist/shared/encoding/stableEncode.js +210 -0
  493. package/dist/shared/encoding/stableEncode.js.map +1 -0
  494. package/dist/shared/encoding/typeGuards.d.ts +15 -0
  495. package/dist/shared/encoding/typeGuards.d.ts.map +1 -0
  496. package/dist/shared/encoding/typeGuards.js +11 -0
  497. package/dist/shared/encoding/typeGuards.js.map +1 -0
  498. package/dist/shared/encoding/types.d.ts +52 -0
  499. package/dist/shared/encoding/types.d.ts.map +1 -0
  500. package/dist/shared/encoding/types.js +8 -0
  501. package/dist/shared/encoding/types.js.map +1 -0
  502. package/dist/shared/index.d.ts +6 -0
  503. package/dist/shared/index.d.ts.map +1 -0
  504. package/dist/shared/index.js +6 -0
  505. package/dist/shared/index.js.map +1 -0
  506. package/dist/shared/state/constants.d.ts +16 -0
  507. package/dist/shared/state/constants.d.ts.map +1 -0
  508. package/dist/shared/state/constants.js +16 -0
  509. package/dist/shared/state/constants.js.map +1 -0
  510. package/dist/shared/state/index.d.ts +3 -0
  511. package/dist/shared/state/index.d.ts.map +1 -0
  512. package/dist/shared/state/index.js +2 -0
  513. package/dist/shared/state/index.js.map +1 -0
  514. package/dist/shared/state/types.d.ts +23 -0
  515. package/dist/shared/state/types.d.ts.map +1 -0
  516. package/dist/shared/state/types.js +2 -0
  517. package/dist/shared/state/types.js.map +1 -0
  518. package/dist/shared/validation.d.ts +9 -0
  519. package/dist/shared/validation.d.ts.map +1 -0
  520. package/dist/shared/validation.js +25 -0
  521. package/dist/shared/validation.js.map +1 -0
  522. package/docs/architecture.md +72 -0
  523. package/docs/code-guidelines.md +256 -0
  524. package/docs/development.md +48 -0
  525. package/docs/git-workflow.md +224 -0
  526. package/docs/mikro-orm-adapter-spike.md +248 -0
  527. package/docs/quick-start.md +102 -0
  528. package/docs/sql-layer-plan.md +59 -0
  529. package/docs/sync-bulk-write-benchmark.md +1036 -0
  530. package/docs/sync-observability.md +71 -0
  531. package/docs/task-queue-write-model.md +640 -0
  532. package/docs/typed-sheets-mvp-scope-2026-06-29.md +490 -0
  533. package/docs/typed-sheets-plan.md +417 -0
  534. package/docs/write-and-synchronization-flow.md +71 -0
  535. package/package.json +68 -0
@@ -0,0 +1,118 @@
1
+ /** Status, command, row, and SQL-result contracts for resolution persistence. */
2
+ import type { ResolutionCommand } from "../../../../domain/index.js";
3
+ import type { NewEffect } from "../../sync/outbound/effectOutbox.js";
4
+ /** Runtime values for the durable resolution-command lifecycle. */
5
+ export declare const RESOLUTION_COMMAND_STATUSES: {
6
+ readonly PROCESSING: "processing";
7
+ readonly APPLIED: "applied";
8
+ readonly STALE: "stale";
9
+ readonly REJECTED: "rejected";
10
+ readonly FAILED: "failed";
11
+ };
12
+ /** Closed set of statuses stored for a resolution command. */
13
+ export type ResolutionCommandStatus = (typeof RESOLUTION_COMMAND_STATUSES)[keyof typeof RESOLUTION_COMMAND_STATUSES];
14
+ /** Runtime values for results returned by the resolution writer. */
15
+ export declare const PERSIST_RESOLUTION_RESULT_KINDS: {
16
+ readonly FENCED_OUT: "fenced_out";
17
+ readonly APPLIED: "applied";
18
+ readonly STALE: "stale";
19
+ readonly REJECTED: "rejected";
20
+ readonly DUPLICATE: "duplicate";
21
+ };
22
+ /** Closed set of resolution-writer result kinds. */
23
+ export type PersistResolutionCommandResultKind = (typeof PERSIST_RESOLUTION_RESULT_KINDS)[keyof typeof PERSIST_RESOLUTION_RESULT_KINDS];
24
+ /** Input required to durably process one trusted `acknowledge_system` request. */
25
+ export interface PersistResolutionCommandInput {
26
+ readonly logicalSheetId: string;
27
+ readonly command: ResolutionCommand;
28
+ /** Durable transaction identity for effects created by this resolution. */
29
+ readonly commitId: string;
30
+ /** Effects to materialize after a successful acknowledge_system transition. */
31
+ readonly effects: readonly NewEffect[];
32
+ /**
33
+ * Effects to materialize when the request is stale. This normally consumes a
34
+ * checked control cell while projecting NEEDS_REBASE rather than retrying an
35
+ * old acknowledgement forever.
36
+ */
37
+ readonly staleEffects?: readonly NewEffect[];
38
+ /** Effects to materialize when a trusted request is rejected. */
39
+ readonly rejectedEffects?: readonly NewEffect[];
40
+ /**
41
+ * Effects to materialize when a replay reaches an already terminal command.
42
+ * This normally resets a still-checked one-shot control without reopening or
43
+ * reapplying the canonical resolution.
44
+ */
45
+ readonly duplicateEffects?: readonly NewEffect[];
46
+ }
47
+ /** Terminal or replay-visible result of a resolution command transaction. */
48
+ export type PersistResolutionCommandResult = {
49
+ readonly kind: typeof PERSIST_RESOLUTION_RESULT_KINDS.FENCED_OUT;
50
+ } | {
51
+ readonly kind: typeof PERSIST_RESOLUTION_RESULT_KINDS.APPLIED;
52
+ readonly commandId: string;
53
+ readonly conflictId: string;
54
+ } | {
55
+ readonly kind: typeof PERSIST_RESOLUTION_RESULT_KINDS.STALE;
56
+ readonly commandId: string;
57
+ readonly conflictId: string;
58
+ } | {
59
+ readonly kind: typeof PERSIST_RESOLUTION_RESULT_KINDS.REJECTED;
60
+ readonly commandId: string;
61
+ readonly reason: string;
62
+ } | {
63
+ readonly kind: typeof PERSIST_RESOLUTION_RESULT_KINDS.DUPLICATE;
64
+ readonly commandId: string;
65
+ readonly status: ResolutionCommandStatus;
66
+ };
67
+ export interface ConflictRow {
68
+ readonly conflict_id: string;
69
+ readonly conflict_group_id: string | null;
70
+ readonly event_id: string;
71
+ readonly row_binding_id: string;
72
+ readonly entity_id: string;
73
+ readonly field_name: string;
74
+ readonly user_value: string;
75
+ readonly user_base_revision: number;
76
+ readonly canonical_value_at_detection: string;
77
+ readonly canonical_revision_at_detection: number;
78
+ readonly current_canonical_value: string;
79
+ readonly current_canonical_revision: number;
80
+ readonly candidate_epoch: number;
81
+ readonly status: string;
82
+ readonly resolution_command_id: string | null;
83
+ }
84
+ export interface CommandRow {
85
+ readonly command_id: string;
86
+ readonly request_key: string;
87
+ readonly action: string;
88
+ readonly actor_id: string;
89
+ readonly role: string;
90
+ readonly target_conflict_id: string;
91
+ readonly expected_revision: number;
92
+ readonly active_candidate_hash: string;
93
+ readonly expected_candidate_epoch: number;
94
+ readonly payload_hash: string;
95
+ readonly status: ResolutionCommandStatus;
96
+ }
97
+ export interface ActiveCandidatePointer {
98
+ readonly physical_sheet_id: string;
99
+ readonly projection: string;
100
+ readonly candidate_epoch: number;
101
+ readonly active_candidate_hash: string;
102
+ }
103
+ export interface EffectDedupeRow {
104
+ readonly effect_kind: string;
105
+ readonly commit_id: string;
106
+ readonly logical_sheet_id: string;
107
+ readonly physical_sheet_id: string;
108
+ readonly projection: string;
109
+ readonly target_kind: string;
110
+ readonly target_id: string;
111
+ readonly payload_hash: string;
112
+ }
113
+ export interface RegisteredProjectionRow {
114
+ readonly logical_sheet_id: string;
115
+ readonly projection: string;
116
+ readonly enabled: number;
117
+ }
118
+ //# sourceMappingURL=resolutionWriterContracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolutionWriterContracts.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/storage/state/resolution/resolutionWriterContracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /** Status, command, row, and SQL-result contracts for resolution persistence. */
2
+ /** Runtime values for the durable resolution-command lifecycle. */
3
+ export const RESOLUTION_COMMAND_STATUSES = {
4
+ PROCESSING: "processing",
5
+ APPLIED: "applied",
6
+ STALE: "stale",
7
+ REJECTED: "rejected",
8
+ FAILED: "failed",
9
+ };
10
+ /** Runtime values for results returned by the resolution writer. */
11
+ export const PERSIST_RESOLUTION_RESULT_KINDS = {
12
+ FENCED_OUT: "fenced_out",
13
+ APPLIED: "applied",
14
+ STALE: "stale",
15
+ REJECTED: "rejected",
16
+ DUPLICATE: "duplicate",
17
+ };
18
+ //# sourceMappingURL=resolutionWriterContracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolutionWriterContracts.js","sourceRoot":"","sources":["../../../../../src/infrastructure/storage/state/resolution/resolutionWriterContracts.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAKjF,mEAAmE;AACnE,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;CACR,CAAC;AAMX,oEAAoE;AACpE,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;CACd,CAAC"}
@@ -0,0 +1,23 @@
1
+ /** Validation and fencing helpers shared by the resolution writer paths. */
2
+ import type { ConflictStatus, NormalizedCell, Presence } from "../../../../domain/index.js";
3
+ import { StorageError } from "../../errors.js";
4
+ import { type FencingContext } from "../../sync/shared/writerLease.js";
5
+ import type { DatabaseSyncLike } from "../../sqlite/sqliteBridge.js";
6
+ import type { SqlExecutor } from "../../../../adapter/persistence/contracts/sql.js";
7
+ /** Parses and validates a normalized cell stored as serialized JSON. */
8
+ export declare function parseNormalizedCell(serialized: string, fieldName: string): NormalizedCell;
9
+ /** Promotes a stored status into the domain's closed conflict-status union. */
10
+ export declare function requireConflictStatus(value: string): ConflictStatus;
11
+ /** Converts a nullable SQL column into the explicit internal presence contract. */
12
+ export declare function fromSqlNullable<T>(value: T | null): Presence<T>;
13
+ /** Requires the synchronous writer fence to remain current before a write. */
14
+ export declare function assertCurrentFence(db: DatabaseSyncLike, fence: FencingContext): void;
15
+ /** Requires the writer fence to remain current in the active async SQL transaction. */
16
+ export declare function assertCurrentFenceWithSql(sql: SqlExecutor, fence: FencingContext): Promise<void>;
17
+ /** Returns the common fence parameter tuple used by resolution SQL statements. */
18
+ export declare function fenceParameters(fence: FencingContext): readonly [string, number, string, number];
19
+ /** Signals that a resolution transaction lost its writer ownership. */
20
+ export declare class FenceLostError extends StorageError {
21
+ constructor();
22
+ }
23
+ //# sourceMappingURL=resolutionWriterHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolutionWriterHelpers.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/storage/state/resolution/resolutionWriterHelpers.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAS5E,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,QAAQ,EACT,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAuB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAC;AAEpF,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,cAAc,CAgDzF;AAQD,+EAA+E;AAC/E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAYnE;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAI/D;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAEpF;AAED,uFAAuF;AACvF,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,GACpB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAE3C;AAED,uEAAuE;AACvE,qBAAa,cAAe,SAAQ,YAAY;;CAI/C"}
@@ -0,0 +1,84 @@
1
+ /** Validation and fencing helpers shared by the resolution writer paths. */
2
+ import { JAVASCRIPT_TYPE_NAMES, NORMALIZED_CELL_KINDS, } from "../../../../shared/encoding/constants.js";
3
+ import { isJavaScriptType } from "../../../../shared/encoding/typeGuards.js";
4
+ import { CONFLICT_STATUSES } from "../../../../domain/model/constants.js";
5
+ import { PRESENCE_KINDS } from "../../../../shared/state/constants.js";
6
+ import { STORAGE_ERROR_CODES, StorageError } from "../../errors.js";
7
+ import { isFencingValid, isFencingValidWithSql, } from "../../sync/shared/writerLease.js";
8
+ /** Parses and validates a normalized cell stored as serialized JSON. */
9
+ export function parseNormalizedCell(serialized, fieldName) {
10
+ let value;
11
+ try {
12
+ value = JSON.parse(serialized);
13
+ }
14
+ catch {
15
+ throw new StorageError(STORAGE_ERROR_CODES.INVALID_STORED_CONFLICT, `stored ${fieldName} is not valid JSON`);
16
+ }
17
+ if (value === null)
18
+ return null;
19
+ if (typeof value !== "object" || Array.isArray(value)) {
20
+ throw new StorageError(STORAGE_ERROR_CODES.INVALID_STORED_CONFLICT, `stored ${fieldName} is not a normalized cell`);
21
+ }
22
+ const cell = value;
23
+ if (cell.kind === NORMALIZED_CELL_KINDS.STRING &&
24
+ isJavaScriptType(cell.value, JAVASCRIPT_TYPE_NAMES.STRING)) {
25
+ return { kind: NORMALIZED_CELL_KINDS.STRING, value: cell.value };
26
+ }
27
+ if (cell.kind === NORMALIZED_CELL_KINDS.NUMBER &&
28
+ isJavaScriptType(cell.value, JAVASCRIPT_TYPE_NAMES.NUMBER) &&
29
+ Number.isFinite(cell.value)) {
30
+ return { kind: NORMALIZED_CELL_KINDS.NUMBER, value: cell.value };
31
+ }
32
+ if (cell.kind === NORMALIZED_CELL_KINDS.BOOLEAN &&
33
+ isJavaScriptType(cell.value, JAVASCRIPT_TYPE_NAMES.BOOLEAN)) {
34
+ return { kind: NORMALIZED_CELL_KINDS.BOOLEAN, value: cell.value };
35
+ }
36
+ if (cell.kind === NORMALIZED_CELL_KINDS.DATE &&
37
+ isJavaScriptType(cell.value, JAVASCRIPT_TYPE_NAMES.STRING) &&
38
+ isCanonicalDate(cell.value)) {
39
+ return { kind: NORMALIZED_CELL_KINDS.DATE, value: cell.value };
40
+ }
41
+ throw new StorageError(STORAGE_ERROR_CODES.INVALID_STORED_CONFLICT, `stored ${fieldName} is not a normalized cell`);
42
+ }
43
+ function isCanonicalDate(value) {
44
+ if (!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(value))
45
+ return false;
46
+ const timestamp = Date.parse(value);
47
+ return Number.isFinite(timestamp) && new Date(timestamp).toISOString() === value;
48
+ }
49
+ /** Promotes a stored status into the domain's closed conflict-status union. */
50
+ export function requireConflictStatus(value) {
51
+ if (value === CONFLICT_STATUSES.OPEN ||
52
+ value === CONFLICT_STATUSES.NEEDS_REBASE ||
53
+ value === CONFLICT_STATUSES.RESOLVED) {
54
+ return value;
55
+ }
56
+ throw new StorageError(STORAGE_ERROR_CODES.INVALID_STORED_CONFLICT, `stored conflict has invalid status ${value}`);
57
+ }
58
+ /** Converts a nullable SQL column into the explicit internal presence contract. */
59
+ export function fromSqlNullable(value) {
60
+ return value === null
61
+ ? { kind: PRESENCE_KINDS.ABSENT }
62
+ : { kind: PRESENCE_KINDS.PRESENT, value };
63
+ }
64
+ /** Requires the synchronous writer fence to remain current before a write. */
65
+ export function assertCurrentFence(db, fence) {
66
+ if (!isFencingValid(db, fence))
67
+ throw new FenceLostError();
68
+ }
69
+ /** Requires the writer fence to remain current in the active async SQL transaction. */
70
+ export async function assertCurrentFenceWithSql(sql, fence) {
71
+ if (!(await isFencingValidWithSql(sql, fence)))
72
+ throw new FenceLostError();
73
+ }
74
+ /** Returns the common fence parameter tuple used by resolution SQL statements. */
75
+ export function fenceParameters(fence) {
76
+ return [fence.role, fence.writerEpoch, fence.fencingToken, fence.now];
77
+ }
78
+ /** Signals that a resolution transaction lost its writer ownership. */
79
+ export class FenceLostError extends StorageError {
80
+ constructor() {
81
+ super(STORAGE_ERROR_CODES.STALE_WRITER_FENCE, "writer fencing is stale or expired");
82
+ }
83
+ }
84
+ //# sourceMappingURL=resolutionWriterHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolutionWriterHelpers.js","sourceRoot":"","sources":["../../../../../src/infrastructure/storage/state/resolution/resolutionWriterHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /** SQL statements for the fenced resolution-command state machine. */
2
+ export declare const FENCE_EXISTS_SQL = "\n SELECT 1 FROM writer_lease\n WHERE role = ? AND writer_epoch = ? AND fencing_token = ? AND lease_until > ?\n";
3
+ export declare const FIND_EXISTING_COMMAND_SQL = "\n SELECT command_id, request_key, action, actor_id, role, target_conflict_id,\n expected_revision, active_candidate_hash, expected_candidate_epoch,\n payload_hash, status\n FROM resolution_command\n WHERE command_id = ? OR request_key = ?\n";
4
+ export declare const READ_CONFLICT_SQL = "\n SELECT conflict_id, conflict_group_id, event_id, row_binding_id, entity_id, field_name,\n user_value, user_base_revision, canonical_value_at_detection,\n canonical_revision_at_detection, current_canonical_value,\n current_canonical_revision, candidate_epoch, status, resolution_command_id\n FROM sync_conflict\n WHERE logical_sheet_id = ? AND conflict_id = ?\n";
5
+ export declare const READ_ACTIVE_CANDIDATE_POINTER_SQL = "\n SELECT physical_sheet_id, projection, candidate_epoch, active_candidate_hash\n FROM sheet_visible_field_state\n WHERE row_binding_id = ? AND field_name = ?\n AND active_candidate_conflict_id = ?\n AND active_candidate_hash IS NOT NULL\n";
6
+ export declare const INSERT_PROCESSING_COMMAND_SQL = "\n INSERT INTO resolution_command (\n command_id, request_key, action, actor_id, role, target_conflict_id,\n expected_revision, active_candidate_hash, expected_candidate_epoch,\n payload_hash, status, issued_at\n )\n SELECT ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'processing', ?\n WHERE EXISTS (\n SELECT 1 FROM writer_lease\n WHERE role = ? AND writer_epoch = ? AND fencing_token = ? AND lease_until > ?\n)\n";
7
+ export declare const MARK_CONFLICT_RESOLVED_SQL = "\n UPDATE sync_conflict\n SET status = 'RESOLVED', resolution_command_id = ?, updated_at = ?\n WHERE conflict_id = ? AND status IN ('OPEN', 'NEEDS_REBASE')\n AND current_canonical_revision = ? AND candidate_epoch = ?\n AND EXISTS (\n SELECT 1 FROM writer_lease\n WHERE role = ? AND writer_epoch = ? AND fencing_token = ? AND lease_until > ?\n)\n";
8
+ export declare const CLEAR_ACTIVE_CANDIDATE_POINTER_SQL = "\n UPDATE sheet_visible_field_state\n SET active_candidate_conflict_id = NULL, active_candidate_hash = NULL,\n candidate_epoch = candidate_epoch + 1\n WHERE physical_sheet_id = ? AND projection = ?\n AND row_binding_id = ? AND field_name = ?\n AND active_candidate_conflict_id = ? AND candidate_epoch = ?\n AND EXISTS (\n SELECT 1 FROM writer_lease\n WHERE role = ? AND writer_epoch = ? AND fencing_token = ? AND lease_until > ?\n)\n";
9
+ export declare const ADVANCE_ROW_BINDING_CANDIDATE_EPOCH_SQL = "\n UPDATE row_binding\n SET candidate_epoch = CASE\n WHEN candidate_epoch <= ? THEN ?\n ELSE candidate_epoch\n END\n WHERE row_binding_id = ? AND logical_sheet_id = ?\n AND EXISTS (\n SELECT 1 FROM writer_lease\n WHERE role = ? AND writer_epoch = ? AND fencing_token = ? AND lease_until > ?\n)\n";
10
+ export declare const MARK_COMMAND_APPLIED_SQL = "\n UPDATE resolution_command\n SET status = 'applied', applied_commit_id = ?\n WHERE command_id = ? AND status = 'processing'\n AND EXISTS (\n SELECT 1 FROM writer_lease\n WHERE role = ? AND writer_epoch = ? AND fencing_token = ? AND lease_until > ?\n)\n";
11
+ export declare const MARK_CONFLICT_STALE_SQL = "\n UPDATE sync_conflict\n SET status = ?, updated_at = ?\n WHERE conflict_id = ? AND status IN ('OPEN', 'NEEDS_REBASE')\n AND EXISTS (\n SELECT 1 FROM writer_lease\n WHERE role = ? AND writer_epoch = ? AND fencing_token = ? AND lease_until > ?\n)\n";
12
+ export declare const MARK_COMMAND_STALE_SQL = "\n UPDATE resolution_command\n SET status = 'stale'\n WHERE command_id = ? AND status = 'processing'\n AND EXISTS (\n SELECT 1 FROM writer_lease\n WHERE role = ? AND writer_epoch = ? AND fencing_token = ? AND lease_until > ?\n)\n";
13
+ export declare const MARK_COMMAND_REJECTED_SQL = "\n UPDATE resolution_command\n SET status = 'rejected'\n WHERE command_id = ? AND status = 'processing'\n AND EXISTS (\n SELECT 1 FROM writer_lease\n WHERE role = ? AND writer_epoch = ? AND fencing_token = ? AND lease_until > ?\n)\n";
14
+ export declare const READ_EFFECT_DEDUPE_SQL = "\n SELECT effect_kind, commit_id, logical_sheet_id, physical_sheet_id,\n projection, target_kind, target_id, payload_hash\n FROM sheet_effect_outbox\n WHERE effect_dedupe_key = ?\n";
15
+ export declare const READ_REGISTERED_PROJECTION_SQL = "\n SELECT logical_sheet_id, projection, enabled\n FROM physical_sheet_registry\n WHERE physical_sheet_id = ?\n";
16
+ //# sourceMappingURL=resolutionWriterSql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolutionWriterSql.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/storage/state/resolution/resolutionWriterSql.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,eAAO,MAAM,gBAAgB,sHAG5B,CAAC;AAEF,eAAO,MAAM,yBAAyB,yQAMrC,CAAC;AAEF,eAAO,MAAM,iBAAiB,2YAO7B,CAAC;AAEF,eAAO,MAAM,iCAAiC,6PAM7C,CAAC;AAEF,eAAO,MAAM,6BAA6B,oaAQzC,CAAC;AAEF,eAAO,MAAM,0BAA0B,yWAMtC,CAAC;AAEF,eAAO,MAAM,kCAAkC,ycAQ9C,CAAC;AAEF,eAAO,MAAM,uCAAuC,2TAQnD,CAAC;AAEF,eAAO,MAAM,wBAAwB,2QAKpC,CAAC;AAEF,eAAO,MAAM,uBAAuB,qQAKnC,CAAC;AAEF,eAAO,MAAM,sBAAsB,kPAKlC,CAAC;AAEF,eAAO,MAAM,yBAAyB,qPAKrC,CAAC;AAEF,eAAO,MAAM,sBAAsB,oMAKlC,CAAC;AAEF,eAAO,MAAM,8BAA8B,sHAI1C,CAAC"}
@@ -0,0 +1,97 @@
1
+ /** SQL statements for the fenced resolution-command state machine. */
2
+ export const FENCE_EXISTS_SQL = `
3
+ SELECT 1 FROM writer_lease
4
+ WHERE role = ? AND writer_epoch = ? AND fencing_token = ? AND lease_until > ?
5
+ `;
6
+ export const FIND_EXISTING_COMMAND_SQL = `
7
+ SELECT command_id, request_key, action, actor_id, role, target_conflict_id,
8
+ expected_revision, active_candidate_hash, expected_candidate_epoch,
9
+ payload_hash, status
10
+ FROM resolution_command
11
+ WHERE command_id = ? OR request_key = ?
12
+ `;
13
+ export const READ_CONFLICT_SQL = `
14
+ SELECT conflict_id, conflict_group_id, event_id, row_binding_id, entity_id, field_name,
15
+ user_value, user_base_revision, canonical_value_at_detection,
16
+ canonical_revision_at_detection, current_canonical_value,
17
+ current_canonical_revision, candidate_epoch, status, resolution_command_id
18
+ FROM sync_conflict
19
+ WHERE logical_sheet_id = ? AND conflict_id = ?
20
+ `;
21
+ export const READ_ACTIVE_CANDIDATE_POINTER_SQL = `
22
+ SELECT physical_sheet_id, projection, candidate_epoch, active_candidate_hash
23
+ FROM sheet_visible_field_state
24
+ WHERE row_binding_id = ? AND field_name = ?
25
+ AND active_candidate_conflict_id = ?
26
+ AND active_candidate_hash IS NOT NULL
27
+ `;
28
+ export const INSERT_PROCESSING_COMMAND_SQL = `
29
+ INSERT INTO resolution_command (
30
+ command_id, request_key, action, actor_id, role, target_conflict_id,
31
+ expected_revision, active_candidate_hash, expected_candidate_epoch,
32
+ payload_hash, status, issued_at
33
+ )
34
+ SELECT ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'processing', ?
35
+ WHERE EXISTS (${FENCE_EXISTS_SQL})
36
+ `;
37
+ export const MARK_CONFLICT_RESOLVED_SQL = `
38
+ UPDATE sync_conflict
39
+ SET status = 'RESOLVED', resolution_command_id = ?, updated_at = ?
40
+ WHERE conflict_id = ? AND status IN ('OPEN', 'NEEDS_REBASE')
41
+ AND current_canonical_revision = ? AND candidate_epoch = ?
42
+ AND EXISTS (${FENCE_EXISTS_SQL})
43
+ `;
44
+ export const CLEAR_ACTIVE_CANDIDATE_POINTER_SQL = `
45
+ UPDATE sheet_visible_field_state
46
+ SET active_candidate_conflict_id = NULL, active_candidate_hash = NULL,
47
+ candidate_epoch = candidate_epoch + 1
48
+ WHERE physical_sheet_id = ? AND projection = ?
49
+ AND row_binding_id = ? AND field_name = ?
50
+ AND active_candidate_conflict_id = ? AND candidate_epoch = ?
51
+ AND EXISTS (${FENCE_EXISTS_SQL})
52
+ `;
53
+ export const ADVANCE_ROW_BINDING_CANDIDATE_EPOCH_SQL = `
54
+ UPDATE row_binding
55
+ SET candidate_epoch = CASE
56
+ WHEN candidate_epoch <= ? THEN ?
57
+ ELSE candidate_epoch
58
+ END
59
+ WHERE row_binding_id = ? AND logical_sheet_id = ?
60
+ AND EXISTS (${FENCE_EXISTS_SQL})
61
+ `;
62
+ export const MARK_COMMAND_APPLIED_SQL = `
63
+ UPDATE resolution_command
64
+ SET status = 'applied', applied_commit_id = ?
65
+ WHERE command_id = ? AND status = 'processing'
66
+ AND EXISTS (${FENCE_EXISTS_SQL})
67
+ `;
68
+ export const MARK_CONFLICT_STALE_SQL = `
69
+ UPDATE sync_conflict
70
+ SET status = ?, updated_at = ?
71
+ WHERE conflict_id = ? AND status IN ('OPEN', 'NEEDS_REBASE')
72
+ AND EXISTS (${FENCE_EXISTS_SQL})
73
+ `;
74
+ export const MARK_COMMAND_STALE_SQL = `
75
+ UPDATE resolution_command
76
+ SET status = 'stale'
77
+ WHERE command_id = ? AND status = 'processing'
78
+ AND EXISTS (${FENCE_EXISTS_SQL})
79
+ `;
80
+ export const MARK_COMMAND_REJECTED_SQL = `
81
+ UPDATE resolution_command
82
+ SET status = 'rejected'
83
+ WHERE command_id = ? AND status = 'processing'
84
+ AND EXISTS (${FENCE_EXISTS_SQL})
85
+ `;
86
+ export const READ_EFFECT_DEDUPE_SQL = `
87
+ SELECT effect_kind, commit_id, logical_sheet_id, physical_sheet_id,
88
+ projection, target_kind, target_id, payload_hash
89
+ FROM sheet_effect_outbox
90
+ WHERE effect_dedupe_key = ?
91
+ `;
92
+ export const READ_REGISTERED_PROJECTION_SQL = `
93
+ SELECT logical_sheet_id, projection, enabled
94
+ FROM physical_sheet_registry
95
+ WHERE physical_sheet_id = ?
96
+ `;
97
+ //# sourceMappingURL=resolutionWriterSql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolutionWriterSql.js","sourceRoot":"","sources":["../../../../../src/infrastructure/storage/state/resolution/resolutionWriterSql.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;CAG/B,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;CAMxC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;CAOhC,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAAG;;;;;;CAMhD,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;kBAO3B,gBAAgB;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;kBAKxB,gBAAgB;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAAG;;;;;;;kBAOhC,gBAAgB;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,uCAAuC,GAAG;;;;;;;kBAOrC,gBAAgB;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;kBAItB,gBAAgB;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;kBAIrB,gBAAgB;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;kBAIpB,gBAAgB;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;kBAIvB,gBAAgB;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;CAKrC,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;CAI7C,CAAC"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Effect outbox claim, apply, and recovery operations.
3
+ *
4
+ * Per design concurrency/writer-rpc.md and storage-schema.md:
5
+ * - Effects are claimed atomically (CAS on status = 'pending').
6
+ * - Only one worker can claim an effect at a time.
7
+ * - Apply results must pass fencing validation (epoch + token).
8
+ * - Supersede/replan atomically closes old effect and inserts new one.
9
+ */
10
+ import type { DatabaseSyncLike } from "../../sqlite/sqliteBridge.js";
11
+ import type { FencingContext } from "../shared/writerLease.js";
12
+ import type { SqlExecutor, SqlStorageAdapter } from "../../../../adapter/persistence/contracts/sql.js";
13
+ import type { ApplyResultOptions, ClaimEffectOptions, ClaimResult, NewEffect, PendingEffect, RetryClaimedEffectOptions } from "./effectOutboxContracts.js";
14
+ export { SYNC_EFFECT_RECOVERY_ERROR_CODES } from "./effectOutboxContracts.js";
15
+ export type { ApplyResultOptions, ClaimEffectOptions, ClaimResult, EffectProjectionConfirmation, NewEffect, PendingEffect, RetryClaimedEffectOptions, } from "./effectOutboxContracts.js";
16
+ export declare function claimEffect(db: DatabaseSyncLike, options: ClaimEffectOptions): ClaimResult;
17
+ /**
18
+ * Claims a pending effect through an already-active async SQL context.
19
+ *
20
+ * The compare-and-set query and both fencing checks use the same connection,
21
+ * so a MikroORM-backed worker cannot accidentally claim through a second
22
+ * SQLite connection.
23
+ */
24
+ export declare function claimEffectWithSql(sql: SqlExecutor, options: ClaimEffectOptions): Promise<ClaimResult>;
25
+ /** Claims one effect inside an adapter-owned transaction. */
26
+ export declare function claimEffectWithAdapter(storage: SqlStorageAdapter, options: ClaimEffectOptions): Promise<ClaimResult>;
27
+ /**
28
+ * Appends pending effects under the supplied writer fence.
29
+ *
30
+ * This is used for conflict/quarantine effects that do not accompany a
31
+ * canonical field commit. It owns a savepoint so a duplicate dedupe key or a
32
+ * lost fence cannot leave only part of an effect set behind.
33
+ */
34
+ export declare function appendPendingEffects(db: DatabaseSyncLike, fence: FencingContext, effects: readonly NewEffect[]): boolean;
35
+ /**
36
+ * Appends pending effects inside an already-active async SQL transaction.
37
+ *
38
+ * This is the MikroORM-compatible path used when an entity mutation and its
39
+ * Sheets outbox records must commit or roll back together.
40
+ */
41
+ export declare function appendPendingEffectsWithSql(sql: SqlExecutor, fence: FencingContext, effects: readonly NewEffect[]): Promise<boolean>;
42
+ /** Appends pending effects in one adapter-owned transaction. */
43
+ export declare function appendPendingEffectsWithAdapter(storage: SqlStorageAdapter, fence: FencingContext, effects: readonly NewEffect[]): Promise<boolean>;
44
+ /**
45
+ * Applies a result to a claimed effect.
46
+ * Validates fencing (claim token + writer epoch) before applying.
47
+ * Returns true if the result was applied, false if fencing failed.
48
+ */
49
+ export declare function applyEffectResult(db: DatabaseSyncLike, options: ApplyResultOptions): boolean;
50
+ /**
51
+ * Applies a claimed effect result through an already-active async SQL context.
52
+ *
53
+ * If projection confirmation fails, the savepoint rolls the effect transition
54
+ * back too; confirmed visible state can never advance without its outbox row.
55
+ */
56
+ export declare function applyEffectResultWithSql(sql: SqlExecutor, options: ApplyResultOptions): Promise<boolean>;
57
+ /** Applies one effect result inside an adapter-owned transaction. */
58
+ export declare function applyEffectResultWithAdapter(storage: SqlStorageAdapter, options: ApplyResultOptions): Promise<boolean>;
59
+ /**
60
+ * Supersedes an old effect and inserts a new replacement effect atomically.
61
+ * Used for repair replan when the canonical target has advanced.
62
+ *
63
+ * Per design: the old effect is marked 'superseded', a new effect with a new
64
+ * effect_id and new dedupe_key is inserted, and the new effect's
65
+ * predecessor_effect_id links to the old one.
66
+ */
67
+ export declare function supersedeAndReplan(db: DatabaseSyncLike, fence: FencingContext, oldEffectId: string, newEffect: NewEffect): void;
68
+ /** Supersedes and replans an effect through an already-active async SQL context. */
69
+ export declare function supersedeAndReplanWithSql(sql: SqlExecutor, fence: FencingContext, oldEffectId: string, newEffect: NewEffect): Promise<void>;
70
+ /** Supersedes and replans an effect inside an adapter-owned transaction. */
71
+ export declare function supersedeAndReplanWithAdapter(storage: SqlStorageAdapter, fence: FencingContext, oldEffectId: string, newEffect: NewEffect): Promise<void>;
72
+ /**
73
+ * Marks expired processing effects as requiring postcondition recovery.
74
+ *
75
+ * The worker must read the remote postcondition before it schedules a retry;
76
+ * an expired lease is not evidence that the remote write did not happen.
77
+ */
78
+ export declare function recoverExpiredLeases(db: DatabaseSyncLike, fence: FencingContext): number;
79
+ /** Marks expired effect leases through an already-active async SQL context. */
80
+ export declare function recoverExpiredLeasesWithSql(sql: SqlExecutor, fence: FencingContext): Promise<number>;
81
+ /** Marks expired effect leases inside an adapter-owned transaction. */
82
+ export declare function recoverExpiredLeasesWithAdapter(storage: SqlStorageAdapter, fence: FencingContext): Promise<number>;
83
+ /**
84
+ * Returns an acknowledged-but-unprocessed batch suffix to pending.
85
+ *
86
+ * This is intentionally narrower than a generic redrive: it may be used only
87
+ * after a valid gateway response explicitly says the batch budget stopped
88
+ * before this effect. Unknown response loss remains failed until read-back.
89
+ */
90
+ export declare function releaseUnprocessedEffect(db: DatabaseSyncLike, options: Pick<FencingContext, "role" | "writerEpoch" | "fencingToken" | "now"> & {
91
+ readonly effectId: string;
92
+ readonly claimToken: string;
93
+ }): boolean;
94
+ /** Returns one acknowledged-but-unprocessed effect through an async SQL context. */
95
+ export declare function releaseUnprocessedEffectWithSql(sql: SqlExecutor, options: Pick<FencingContext, "role" | "writerEpoch" | "fencingToken" | "now"> & {
96
+ readonly effectId: string;
97
+ readonly claimToken: string;
98
+ }): Promise<boolean>;
99
+ /** Returns one acknowledged-but-unprocessed effect inside an adapter transaction. */
100
+ export declare function releaseUnprocessedEffectWithAdapter(storage: SqlStorageAdapter, options: Pick<FencingContext, "role" | "writerEpoch" | "fencingToken" | "now"> & {
101
+ readonly effectId: string;
102
+ readonly claimToken: string;
103
+ }): Promise<boolean>;
104
+ /** Input for returning a claimed effect to the redrive queue after read-back. */
105
+ /** Requeues a claimed effect only after the current fence still owns it. */
106
+ export declare function retryClaimedEffect(db: DatabaseSyncLike, options: RetryClaimedEffectOptions): boolean;
107
+ /** Requeues a claimed effect through an already-active async SQL context. */
108
+ export declare function retryClaimedEffectWithSql(sql: SqlExecutor, options: RetryClaimedEffectOptions): Promise<boolean>;
109
+ /** Requeues a claimed effect inside an adapter-owned transaction. */
110
+ export declare function retryClaimedEffectWithAdapter(storage: SqlStorageAdapter, options: RetryClaimedEffectOptions): Promise<boolean>;
111
+ /**
112
+ * Finds pending effects for a given stream (target), ordered by stream_sequence.
113
+ * Returns the head-of-line effects for a target stream.
114
+ */
115
+ export declare function findPendingEffectsByTarget(db: DatabaseSyncLike, logicalSheetId: string, targetKind: string, targetId: string): readonly PendingEffect[];
116
+ /** Reads one target stream through an already-active async SQL context. */
117
+ export declare function findPendingEffectsByTargetWithSql(sql: SqlExecutor, logicalSheetId: string, targetKind: string, targetId: string): Promise<readonly PendingEffect[]>;
118
+ /** Reads one target stream through a fresh adapter read context. */
119
+ export declare function findPendingEffectsByTargetWithAdapter(storage: SqlStorageAdapter, logicalSheetId: string, targetKind: string, targetId: string): Promise<readonly PendingEffect[]>;
120
+ /**
121
+ * Returns ordered head-of-line effects across streams for one bounded worker pass.
122
+ *
123
+ * Claiming still performs the authoritative CAS, so a concurrent worker can
124
+ * safely race this advisory selection without processing a later stream item.
125
+ */
126
+ export declare function listReadyEffects(db: DatabaseSyncLike, limit: number): readonly PendingEffect[];
127
+ /** Reads bounded head-of-line effects through an already-active async SQL context. */
128
+ export declare function listReadyEffectsWithSql(sql: SqlExecutor, limit: number): Promise<readonly PendingEffect[]>;
129
+ /** Reads bounded head-of-line effects through a fresh adapter read context. */
130
+ export declare function listReadyEffectsWithAdapter(storage: SqlStorageAdapter, limit: number): Promise<readonly PendingEffect[]>;
131
+ /** Returns whether normal outbox work is still pending or actively processing. */
132
+ export declare function hasPendingOrProcessingEffects(db: DatabaseSyncLike): boolean;
133
+ /** Checks whether the durable outbox still has pending or processing work. */
134
+ export declare function hasPendingOrProcessingEffectsWithSql(sql: SqlExecutor): Promise<boolean>;
135
+ /** Checks outbox activity through a fresh adapter read context. */
136
+ export declare function hasPendingOrProcessingEffectsWithAdapter(storage: SqlStorageAdapter): Promise<boolean>;
137
+ //# sourceMappingURL=effectOutbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effectOutbox.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/storage/sync/outbound/effectOutbox.ts"],"names":[],"mappings":"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"}