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,55 @@
1
+ /** Stable error categories shared by the storage layer. */
2
+ export declare const STORAGE_ERROR_CODES: {
3
+ readonly INVALID_WRITER_LEASE_OPTIONS: "invalid_writer_lease_options";
4
+ readonly INVALID_SYNC_REGISTRATION: "invalid_sync_registration";
5
+ readonly SYNC_REGISTRATION_WRITE_FAILED: "sync_registration_write_failed";
6
+ readonly SYNC_REGISTRATION_CONFLICT: "sync_registration_conflict";
7
+ readonly SYNC_REGISTRY_TARGET_UNAVAILABLE: "sync_registry_target_unavailable";
8
+ readonly INVALID_OBSERVATION_INPUT: "invalid_observation_input";
9
+ readonly OBSERVATION_STORAGE_INCONSISTENT: "observation_storage_inconsistent";
10
+ readonly OBSERVATION_AUDIT_SERIALIZATION_FAILED: "observation_audit_serialization_failed";
11
+ readonly INVALID_READ_ONLY_OBSERVATION: "invalid_read_only_observation";
12
+ readonly INVALID_EFFECT_OPTIONS: "invalid_effect_options";
13
+ readonly INVALID_PENDING_EFFECT: "invalid_pending_effect";
14
+ readonly INVALID_PROJECTION_SEED: "invalid_projection_seed";
15
+ readonly PROJECTION_SEED_CONFLICT: "projection_seed_conflict";
16
+ readonly EFFECT_WRITE_FAILED: "effect_write_failed";
17
+ readonly EFFECT_REPLAN_CONFLICT: "effect_replan_conflict";
18
+ readonly INVALID_EFFECT_RESULT: "invalid_effect_result";
19
+ readonly INVALID_PROJECTION_CONFIRMATION: "invalid_projection_confirmation";
20
+ readonly PROJECTION_CONFIRMATION_REGRESSION: "projection_confirmation_regression";
21
+ readonly STALE_WRITER_FENCE: "stale_writer_fence";
22
+ readonly INVALID_RESTORE_OPTIONS: "invalid_restore_options";
23
+ readonly INVALID_RESTORE_BACKUP: "invalid_restore_backup";
24
+ readonly RESTORE_INSPECTION_MISMATCH: "restore_inspection_mismatch";
25
+ readonly RESTORE_ID_CONFLICT: "restore_id_conflict";
26
+ readonly INVALID_RESTORE_RECONCILIATION: "invalid_restore_reconciliation";
27
+ readonly RESTORE_RECONCILIATION_STATE_INVALID: "restore_reconciliation_state_invalid";
28
+ readonly INVALID_CUTOVER_OPTIONS: "invalid_cutover_options";
29
+ readonly CUTOVER_STATE_INVALID: "cutover_state_invalid";
30
+ readonly CUTOVER_IDENTITY_CONFLICT: "cutover_identity_conflict";
31
+ readonly CUTOVER_CHECKPOINT_FAILED: "cutover_checkpoint_failed";
32
+ readonly INVALID_SYNC_DEPLOYMENT_CONFIG: "invalid_sync_deployment_config";
33
+ readonly INVALID_SYNC_OPERATIONAL_LIMITS: "invalid_sync_operational_limits";
34
+ readonly SYNC_OPERATIONAL_HEALTH_UNAVAILABLE: "sync_operational_health_unavailable";
35
+ readonly INVALID_RESOLUTION_COMMAND: "invalid_resolution_command";
36
+ readonly RESOLUTION_COMMAND_IDENTITY_CONFLICT: "resolution_command_identity_conflict";
37
+ readonly RESOLUTION_STORAGE_INCONSISTENT: "resolution_storage_inconsistent";
38
+ readonly RESOLUTION_EFFECT_CONFLICT: "resolution_effect_conflict";
39
+ readonly RESOLUTION_TARGET_UNAVAILABLE: "resolution_target_unavailable";
40
+ readonly INVALID_STORED_CONFLICT: "invalid_stored_conflict";
41
+ readonly SQLITE_RUNTIME_UNAVAILABLE: "sqlite_runtime_unavailable";
42
+ readonly SCHEMA_VERSION_TOO_NEW: "schema_version_too_new";
43
+ readonly SCHEMA_TABLE_MISSING: "schema_table_missing";
44
+ readonly SCHEMA_INDEX_MISSING: "schema_index_missing";
45
+ readonly SCHEMA_COLUMN_MISSING: "schema_column_missing";
46
+ readonly SCHEMA_VERSION_INVALID: "schema_version_invalid";
47
+ readonly INVALID_SQL_SCRIPT: "invalid_sql_script";
48
+ };
49
+ export type StorageErrorCode = (typeof STORAGE_ERROR_CODES)[keyof typeof STORAGE_ERROR_CODES];
50
+ /** Error raised when storage input, schema, or runtime prerequisites are invalid. */
51
+ export declare class StorageError extends Error {
52
+ readonly code: StorageErrorCode;
53
+ constructor(code: StorageErrorCode, message: string, options?: ErrorOptions);
54
+ }
55
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/storage/errors.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAEjE,qFAAqF;AACrF,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;gBAEpB,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAK5E"}
@@ -0,0 +1,58 @@
1
+ /** Stable error categories shared by the storage layer. */
2
+ export const STORAGE_ERROR_CODES = {
3
+ INVALID_WRITER_LEASE_OPTIONS: "invalid_writer_lease_options",
4
+ INVALID_SYNC_REGISTRATION: "invalid_sync_registration",
5
+ SYNC_REGISTRATION_WRITE_FAILED: "sync_registration_write_failed",
6
+ SYNC_REGISTRATION_CONFLICT: "sync_registration_conflict",
7
+ SYNC_REGISTRY_TARGET_UNAVAILABLE: "sync_registry_target_unavailable",
8
+ INVALID_OBSERVATION_INPUT: "invalid_observation_input",
9
+ OBSERVATION_STORAGE_INCONSISTENT: "observation_storage_inconsistent",
10
+ OBSERVATION_AUDIT_SERIALIZATION_FAILED: "observation_audit_serialization_failed",
11
+ INVALID_READ_ONLY_OBSERVATION: "invalid_read_only_observation",
12
+ INVALID_EFFECT_OPTIONS: "invalid_effect_options",
13
+ INVALID_PENDING_EFFECT: "invalid_pending_effect",
14
+ INVALID_PROJECTION_SEED: "invalid_projection_seed",
15
+ PROJECTION_SEED_CONFLICT: "projection_seed_conflict",
16
+ EFFECT_WRITE_FAILED: "effect_write_failed",
17
+ EFFECT_REPLAN_CONFLICT: "effect_replan_conflict",
18
+ INVALID_EFFECT_RESULT: "invalid_effect_result",
19
+ INVALID_PROJECTION_CONFIRMATION: "invalid_projection_confirmation",
20
+ PROJECTION_CONFIRMATION_REGRESSION: "projection_confirmation_regression",
21
+ STALE_WRITER_FENCE: "stale_writer_fence",
22
+ INVALID_RESTORE_OPTIONS: "invalid_restore_options",
23
+ INVALID_RESTORE_BACKUP: "invalid_restore_backup",
24
+ RESTORE_INSPECTION_MISMATCH: "restore_inspection_mismatch",
25
+ RESTORE_ID_CONFLICT: "restore_id_conflict",
26
+ INVALID_RESTORE_RECONCILIATION: "invalid_restore_reconciliation",
27
+ RESTORE_RECONCILIATION_STATE_INVALID: "restore_reconciliation_state_invalid",
28
+ INVALID_CUTOVER_OPTIONS: "invalid_cutover_options",
29
+ CUTOVER_STATE_INVALID: "cutover_state_invalid",
30
+ CUTOVER_IDENTITY_CONFLICT: "cutover_identity_conflict",
31
+ CUTOVER_CHECKPOINT_FAILED: "cutover_checkpoint_failed",
32
+ INVALID_SYNC_DEPLOYMENT_CONFIG: "invalid_sync_deployment_config",
33
+ INVALID_SYNC_OPERATIONAL_LIMITS: "invalid_sync_operational_limits",
34
+ SYNC_OPERATIONAL_HEALTH_UNAVAILABLE: "sync_operational_health_unavailable",
35
+ INVALID_RESOLUTION_COMMAND: "invalid_resolution_command",
36
+ RESOLUTION_COMMAND_IDENTITY_CONFLICT: "resolution_command_identity_conflict",
37
+ RESOLUTION_STORAGE_INCONSISTENT: "resolution_storage_inconsistent",
38
+ RESOLUTION_EFFECT_CONFLICT: "resolution_effect_conflict",
39
+ RESOLUTION_TARGET_UNAVAILABLE: "resolution_target_unavailable",
40
+ INVALID_STORED_CONFLICT: "invalid_stored_conflict",
41
+ SQLITE_RUNTIME_UNAVAILABLE: "sqlite_runtime_unavailable",
42
+ SCHEMA_VERSION_TOO_NEW: "schema_version_too_new",
43
+ SCHEMA_TABLE_MISSING: "schema_table_missing",
44
+ SCHEMA_INDEX_MISSING: "schema_index_missing",
45
+ SCHEMA_COLUMN_MISSING: "schema_column_missing",
46
+ SCHEMA_VERSION_INVALID: "schema_version_invalid",
47
+ INVALID_SQL_SCRIPT: "invalid_sql_script",
48
+ };
49
+ /** Error raised when storage input, schema, or runtime prerequisites are invalid. */
50
+ export class StorageError extends Error {
51
+ code;
52
+ constructor(code, message, options) {
53
+ super(message, options);
54
+ this.name = "StorageError";
55
+ this.code = code;
56
+ }
57
+ }
58
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/infrastructure/storage/errors.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,4BAA4B,EAAE,8BAA8B;IAC5D,yBAAyB,EAAE,2BAA2B;IACtD,8BAA8B,EAAE,gCAAgC;IAChE,0BAA0B,EAAE,4BAA4B;IACxD,gCAAgC,EAAE,kCAAkC;IACpE,yBAAyB,EAAE,2BAA2B;IACtD,gCAAgC,EAAE,kCAAkC;IACpE,sCAAsC,EAAE,wCAAwC;IAChF,6BAA6B,EAAE,+BAA+B;IAC9D,sBAAsB,EAAE,wBAAwB;IAChD,sBAAsB,EAAE,wBAAwB;IAChD,uBAAuB,EAAE,yBAAyB;IAClD,wBAAwB,EAAE,0BAA0B;IACpD,mBAAmB,EAAE,qBAAqB;IAC1C,sBAAsB,EAAE,wBAAwB;IAChD,qBAAqB,EAAE,uBAAuB;IAC9C,+BAA+B,EAAE,iCAAiC;IAClE,kCAAkC,EAAE,oCAAoC;IACxE,kBAAkB,EAAE,oBAAoB;IACxC,uBAAuB,EAAE,yBAAyB;IAClD,sBAAsB,EAAE,wBAAwB;IAChD,2BAA2B,EAAE,6BAA6B;IAC1D,mBAAmB,EAAE,qBAAqB;IAC1C,8BAA8B,EAAE,gCAAgC;IAChE,oCAAoC,EAAE,sCAAsC;IAC5E,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,yBAAyB,EAAE,2BAA2B;IACtD,yBAAyB,EAAE,2BAA2B;IACtD,8BAA8B,EAAE,gCAAgC;IAChE,+BAA+B,EAAE,iCAAiC;IAClE,mCAAmC,EAAE,qCAAqC;IAC1E,0BAA0B,EAAE,4BAA4B;IACxD,oCAAoC,EAAE,sCAAsC;IAC5E,+BAA+B,EAAE,iCAAiC;IAClE,0BAA0B,EAAE,4BAA4B;IACxD,6BAA6B,EAAE,+BAA+B;IAC9D,uBAAuB,EAAE,yBAAyB;IAClD,0BAA0B,EAAE,4BAA4B;IACxD,sBAAsB,EAAE,wBAAwB;IAChD,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,kBAAkB,EAAE,oBAAoB;CAChC,CAAC;AAKX,qFAAqF;AACrF,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,IAAI,CAAmB;IAEhC,YAAY,IAAsB,EAAE,OAAe,EAAE,OAAsB;QACzE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ export { CURRENT_SCHEMA_VERSION, migrateSchema, schemaDdl } from "./sqlite/schema.js";
2
+ export type { SchemaMigrationResult } from "./sqlite/schema.js";
3
+ export { CANONICAL_COMMIT_RESULT_KINDS, CANONICAL_COMMIT_STALE_TARGETS, commitCanonicalChanges, commitCanonicalChangesWithAdapter, commitCanonicalChangesWithSql, } from "./state/canonical/canonicalCommit.js";
4
+ export type { CanonicalCommitInput, CanonicalCommitResult, CanonicalFieldWrite, CanonicalFieldCommitInput, CanonicalInsertCommitInput, CanonicalUpdateCommitInput, CanonicalDeleteCommitInput, } from "./state/canonical/canonicalCommit.js";
5
+ export { openDatabase, openReadOnlyDatabase, getDatabaseSync, withImmediateTransaction, } from "./sqlite/sqliteBridge.js";
6
+ export type { DatabaseSyncLike, StatementLike } from "./sqlite/sqliteBridge.js";
7
+ export { claimWriterLease, claimWriterLeaseWithAdapter, claimWriterLeaseWithSql, readWriterLease, readWriterLeaseWithAdapter, readWriterLeaseWithSql, isFencingValid, isFencingValidWithAdapter, isFencingValidWithSql, } from "./sync/shared/writerLease.js";
8
+ export { WRITER_LEASE_CLAIM_FAILURE_REASONS, WRITER_LEASE_CLAIM_RESULT_KINDS, } from "./sync/shared/writerLease.js";
9
+ export type { WriterLease, ClaimLeaseOptions, FencingContext, WriterLeaseClaimFailureReason, WriterLeaseClaimResult, WriterLeaseClaimResultKind, } from "./sync/shared/writerLease.js";
10
+ export { claimEffect, claimEffectWithAdapter, claimEffectWithSql, applyEffectResult, applyEffectResultWithAdapter, applyEffectResultWithSql, supersedeAndReplan, supersedeAndReplanWithAdapter, supersedeAndReplanWithSql, recoverExpiredLeases, recoverExpiredLeasesWithAdapter, recoverExpiredLeasesWithSql, releaseUnprocessedEffect, releaseUnprocessedEffectWithAdapter, releaseUnprocessedEffectWithSql, retryClaimedEffect, retryClaimedEffectWithAdapter, retryClaimedEffectWithSql, findPendingEffectsByTarget, findPendingEffectsByTargetWithAdapter, findPendingEffectsByTargetWithSql, listReadyEffects, listReadyEffectsWithAdapter, listReadyEffectsWithSql, hasPendingOrProcessingEffects, hasPendingOrProcessingEffectsWithAdapter, hasPendingOrProcessingEffectsWithSql, appendPendingEffects, appendPendingEffectsWithAdapter, appendPendingEffectsWithSql, } from "./sync/outbound/effectOutbox.js";
11
+ export type { ClaimResult, ClaimEffectOptions, ApplyResultOptions, EffectProjectionConfirmation, NewEffect, PendingEffect, RetryClaimedEffectOptions, } from "./sync/outbound/effectOutbox.js";
12
+ export { SYNC_EFFECT_RECOVERY_ERROR_CODES } from "./sync/outbound/effectOutbox.js";
13
+ export { persistObservedRow, persistObservedRowWithAdapter, persistObservedRowWithSql, } from "./state/observation/observationWriter.js";
14
+ export type { ObservationAttemptInput, EventIdentityInput, BusinessKeyChange, CanonicalRowMutation, PersistObservedRowInput, PersistObservedRowResult, } from "./state/observation/observationWriter.js";
15
+ export { persistResolutionCommand, persistResolutionCommandWithAdapter, persistResolutionCommandWithSql, } from "./state/resolution/resolutionWriter.js";
16
+ export type { PersistResolutionCommandInput, PersistResolutionCommandResult, } from "./state/resolution/resolutionWriter.js";
17
+ export { registerSyncSheet, registerSyncSheetWithAdapter, registerSyncSheetWithSql, requireRegisteredSyncSheet, requireRegisteredSyncSheetWithAdapter, requireRegisteredSyncSheetWithSql, } from "./sync/shared/syncRegistry.js";
18
+ export type { RegisteredProjection, RegisterSyncSheetInput, RegisteredSyncSheet, RegisterSyncSheetResult, } from "./sync/shared/syncRegistry.js";
19
+ export { persistReadOnlySnapshotObservation, persistReadOnlySnapshotObservationWithAdapter, persistReadOnlySnapshotObservationWithSql, } from "./state/readonly/readOnlyObservation.js";
20
+ export type { ReadOnlySnapshotObservationInput, ReadOnlySnapshotObservationResult, } from "./state/readonly/readOnlyObservation.js";
21
+ export { inspectRestoredBackup, beginRestoreReconciliation, completeRestoreReconciliation, requireRestoreAllowsSheetWrites, } from "./recovery/restoreRecovery.js";
22
+ export type { RestoreInspection, BeginRestoreReconciliationOptions, RestoreReconciliation, RestoreEffectDisposition, RestoreEffectReconciliation, CompleteRestoreReconciliationOptions, ReadyRestore, } from "./recovery/restoreRecovery.js";
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/storage/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export { CURRENT_SCHEMA_VERSION, migrateSchema, schemaDdl } from "./sqlite/schema.js";
2
+ export { CANONICAL_COMMIT_RESULT_KINDS, CANONICAL_COMMIT_STALE_TARGETS, commitCanonicalChanges, commitCanonicalChangesWithAdapter, commitCanonicalChangesWithSql, } from "./state/canonical/canonicalCommit.js";
3
+ export { openDatabase, openReadOnlyDatabase, getDatabaseSync, withImmediateTransaction, } from "./sqlite/sqliteBridge.js";
4
+ export { claimWriterLease, claimWriterLeaseWithAdapter, claimWriterLeaseWithSql, readWriterLease, readWriterLeaseWithAdapter, readWriterLeaseWithSql, isFencingValid, isFencingValidWithAdapter, isFencingValidWithSql, } from "./sync/shared/writerLease.js";
5
+ export { WRITER_LEASE_CLAIM_FAILURE_REASONS, WRITER_LEASE_CLAIM_RESULT_KINDS, } from "./sync/shared/writerLease.js";
6
+ export { claimEffect, claimEffectWithAdapter, claimEffectWithSql, applyEffectResult, applyEffectResultWithAdapter, applyEffectResultWithSql, supersedeAndReplan, supersedeAndReplanWithAdapter, supersedeAndReplanWithSql, recoverExpiredLeases, recoverExpiredLeasesWithAdapter, recoverExpiredLeasesWithSql, releaseUnprocessedEffect, releaseUnprocessedEffectWithAdapter, releaseUnprocessedEffectWithSql, retryClaimedEffect, retryClaimedEffectWithAdapter, retryClaimedEffectWithSql, findPendingEffectsByTarget, findPendingEffectsByTargetWithAdapter, findPendingEffectsByTargetWithSql, listReadyEffects, listReadyEffectsWithAdapter, listReadyEffectsWithSql, hasPendingOrProcessingEffects, hasPendingOrProcessingEffectsWithAdapter, hasPendingOrProcessingEffectsWithSql, appendPendingEffects, appendPendingEffectsWithAdapter, appendPendingEffectsWithSql, } from "./sync/outbound/effectOutbox.js";
7
+ export { SYNC_EFFECT_RECOVERY_ERROR_CODES } from "./sync/outbound/effectOutbox.js";
8
+ export { persistObservedRow, persistObservedRowWithAdapter, persistObservedRowWithSql, } from "./state/observation/observationWriter.js";
9
+ export { persistResolutionCommand, persistResolutionCommandWithAdapter, persistResolutionCommandWithSql, } from "./state/resolution/resolutionWriter.js";
10
+ export { registerSyncSheet, registerSyncSheetWithAdapter, registerSyncSheetWithSql, requireRegisteredSyncSheet, requireRegisteredSyncSheetWithAdapter, requireRegisteredSyncSheetWithSql, } from "./sync/shared/syncRegistry.js";
11
+ export { persistReadOnlySnapshotObservation, persistReadOnlySnapshotObservationWithAdapter, persistReadOnlySnapshotObservationWithSql, } from "./state/readonly/readOnlyObservation.js";
12
+ export { inspectRestoredBackup, beginRestoreReconciliation, completeRestoreReconciliation, requireRestoreAllowsSheetWrites, } from "./recovery/restoreRecovery.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEtF,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,sBAAsB,EACtB,iCAAiC,EACjC,6BAA6B,GAC9B,MAAM,sCAAsC,CAAC;AAU9C,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACvB,eAAe,EACf,0BAA0B,EAC1B,sBAAsB,EACtB,cAAc,EACd,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,kCAAkC,EAClC,+BAA+B,GAChC,MAAM,8BAA8B,CAAC;AAStC,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,4BAA4B,EAC5B,wBAAwB,EACxB,kBAAkB,EAClB,6BAA6B,EAC7B,yBAAyB,EACzB,oBAAoB,EACpB,+BAA+B,EAC/B,2BAA2B,EAC3B,wBAAwB,EACxB,mCAAmC,EACnC,+BAA+B,EAC/B,kBAAkB,EAClB,6BAA6B,EAC7B,yBAAyB,EACzB,0BAA0B,EAC1B,qCAAqC,EACrC,iCAAiC,EACjC,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACvB,6BAA6B,EAC7B,wCAAwC,EACxC,oCAAoC,EACpC,oBAAoB,EACpB,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,iCAAiC,CAAC;AAUzC,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,0CAA0C,CAAC;AASlD,OAAO,EACL,wBAAwB,EACxB,mCAAmC,EACnC,+BAA+B,GAChC,MAAM,wCAAwC,CAAC;AAKhD,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,wBAAwB,EACxB,0BAA0B,EAC1B,qCAAqC,EACrC,iCAAiC,GAClC,MAAM,+BAA+B,CAAC;AAOvC,OAAO,EACL,kCAAkC,EAClC,6CAA6C,EAC7C,yCAAyC,GAC1C,MAAM,yCAAyC,CAAC;AAKjD,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Restore-reconciliation gate for a restored SQLite backup.
3
+ *
4
+ * A backup is inspected read-only first. The writable restored copy then
5
+ * invalidates every pre-restore writer fence and remains unable to authorize
6
+ * Sheet effects until the caller records completed reconciliation.
7
+ */
8
+ import type { DatabaseSyncLike } from "../sqlite/sqliteBridge.js";
9
+ /** Immutable facts verified from a read-only backup before restoration begins. */
10
+ export interface RestoreInspection {
11
+ readonly sourceCutoverId: string;
12
+ readonly sourceSnapshotHash: string;
13
+ readonly marker: string;
14
+ readonly priorLeaseRoles: readonly string[];
15
+ }
16
+ /** Input used to begin the persisted restore reconciliation gate. */
17
+ export interface BeginRestoreReconciliationOptions {
18
+ readonly restoreId: string;
19
+ readonly now: number;
20
+ }
21
+ /** A restore that has invalidated old fences but cannot yet write Sheets. */
22
+ export interface RestoreReconciliation {
23
+ readonly restoreId: string;
24
+ readonly sourceCutoverId: string;
25
+ readonly sourceSnapshotHash: string;
26
+ readonly invalidatedLeaseCount: number;
27
+ readonly sheetWritesAllowed: false;
28
+ }
29
+ /** The only outcomes a caller may record after a remote effect postcondition read-back. */
30
+ export type RestoreEffectDisposition = "applied" | "superseded" | "replan_required";
31
+ /** One remote effect outcome used to close restore reconciliation. */
32
+ export interface RestoreEffectReconciliation {
33
+ readonly effectId: string;
34
+ readonly disposition: RestoreEffectDisposition;
35
+ }
36
+ /** Input required to mark a restore reconciliation gate as ready. */
37
+ export interface CompleteRestoreReconciliationOptions {
38
+ readonly effects: readonly RestoreEffectReconciliation[];
39
+ }
40
+ /** A restore whose caller has recorded reconciliation and may resume Sheet writes. */
41
+ export interface ReadyRestore {
42
+ readonly restoreId: string;
43
+ readonly sheetWritesAllowed: true;
44
+ }
45
+ /**
46
+ * Verifies the essential schema and cutover marker through a read-only backup
47
+ * connection. It intentionally performs no replay or lease mutation.
48
+ */
49
+ export declare function inspectRestoredBackup(readOnlyDb: DatabaseSyncLike, sourceCutoverId: string): RestoreInspection;
50
+ /**
51
+ * Persists a reconciliation gate and invalidates every pre-restore lease.
52
+ *
53
+ * The caller must still read current Sheet postconditions. This function only
54
+ * prevents an old fence from being reused and keeps future Sheet writes gated.
55
+ */
56
+ export declare function beginRestoreReconciliation(db: DatabaseSyncLike, inspection: RestoreInspection, options: BeginRestoreReconciliationOptions): RestoreReconciliation;
57
+ /**
58
+ * Records that each relevant effect has been classified by a read-back caller.
59
+ * It does not replay events or turn expired processing effects back to pending.
60
+ */
61
+ export declare function completeRestoreReconciliation(db: DatabaseSyncLike, restore: RestoreReconciliation, options: CompleteRestoreReconciliationOptions): ReadyRestore;
62
+ /** Rejects a Sheet write until the persisted restore reconciliation status is complete. */
63
+ export declare function requireRestoreAllowsSheetWrites(db: DatabaseSyncLike, restoreId: string): void;
64
+ //# sourceMappingURL=restoreRecovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreRecovery.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/storage/recovery/restoreRecovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AA6ClE,kFAAkF;AAClF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED,qEAAqE;AACrE,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,6EAA6E;AAC7E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC;CACpC;AAED,2FAA2F;AAC3F,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,YAAY,GAAG,iBAAiB,CAAC;AAEpF,sEAAsE;AACtE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;CAChD;AAED,qEAAqE;AACrE,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,OAAO,EAAE,SAAS,2BAA2B,EAAE,CAAC;CAC1D;AAED,sFAAsF;AACtF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,gBAAgB,EAC5B,eAAe,EAAE,MAAM,GACtB,iBAAiB,CAyCnB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,EAAE,EAAE,gBAAgB,EACpB,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,iCAAiC,GACzC,qBAAqB,CA6CvB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,EAAE,EAAE,gBAAgB,EACpB,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,oCAAoC,GAC5C,YAAY,CAcd;AAED,2FAA2F;AAC3F,wBAAgB,+BAA+B,CAAC,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAU7F"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Restore-reconciliation gate for a restored SQLite backup.
3
+ *
4
+ * A backup is inspected read-only first. The writable restored copy then
5
+ * invalidates every pre-restore writer fence and remains unable to authorize
6
+ * Sheet effects until the caller records completed reconciliation.
7
+ */
8
+ import { STORAGE_ERROR_CODES, StorageError } from "../errors.js";
9
+ import { withImmediateTransaction } from "../sqlite/sqliteBridge.js";
10
+ const CHECK_REQUIRED_TABLE_SQL = "SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?";
11
+ const READ_CUTOVER_MARKER_SQL = `
12
+ SELECT cutover_id, source_snapshot_hash, marker
13
+ FROM cutover_state
14
+ WHERE cutover_id = ?
15
+ `;
16
+ const READ_WRITER_LEASE_ROLES_SQL = "SELECT role FROM writer_lease ORDER BY role";
17
+ const READ_RESTORE_SOURCE_MARKER_SQL = `
18
+ SELECT source_snapshot_hash, marker
19
+ FROM cutover_state
20
+ WHERE cutover_id = ?
21
+ `;
22
+ const CHECK_RESTORE_ID_SQL = "SELECT cutover_id FROM cutover_state WHERE cutover_id = ?";
23
+ const INVALIDATE_WRITER_LEASES_SQL = "UPDATE writer_lease SET lease_until = ?";
24
+ const INSERT_RESTORE_CUTOVER_SQL = `
25
+ INSERT INTO cutover_state (
26
+ cutover_id, phase, source_snapshot_hash, marker, status, created_at
27
+ ) VALUES (?, 'restore_reconciliation', ?, ?, 'reconciling', ?)
28
+ `;
29
+ const COMPLETE_RESTORE_RECONCILIATION_SQL = `
30
+ UPDATE cutover_state
31
+ SET status = 'reconciled'
32
+ WHERE cutover_id = ? AND phase = 'restore_reconciliation' AND status = 'reconciling'
33
+ `;
34
+ const READ_RESTORE_RECONCILIATION_STATUS_SQL = `
35
+ SELECT status
36
+ FROM cutover_state
37
+ WHERE cutover_id = ? AND phase = 'restore_reconciliation'
38
+ `;
39
+ /**
40
+ * Verifies the essential schema and cutover marker through a read-only backup
41
+ * connection. It intentionally performs no replay or lease mutation.
42
+ */
43
+ export function inspectRestoredBackup(readOnlyDb, sourceCutoverId) {
44
+ requireNonEmptyText(sourceCutoverId, "source cutover ID");
45
+ for (const tableName of [
46
+ "entity_state",
47
+ "sheet_effect_outbox",
48
+ "writer_lease",
49
+ "cutover_state",
50
+ ]) {
51
+ const table = readOnlyDb.prepare(CHECK_REQUIRED_TABLE_SQL)
52
+ .get(tableName);
53
+ if (table === undefined) {
54
+ throw new StorageError(STORAGE_ERROR_CODES.INVALID_RESTORE_BACKUP, "restored backup is missing required table: " + tableName);
55
+ }
56
+ }
57
+ const marker = readOnlyDb.prepare(READ_CUTOVER_MARKER_SQL).get(sourceCutoverId);
58
+ if (marker === undefined ||
59
+ marker.source_snapshot_hash === null ||
60
+ marker.marker === null) {
61
+ throw new StorageError(STORAGE_ERROR_CODES.INVALID_RESTORE_BACKUP, "restored backup is missing the required cutover marker and source snapshot hash");
62
+ }
63
+ const leaseRows = readOnlyDb.prepare(READ_WRITER_LEASE_ROLES_SQL)
64
+ .all();
65
+ return {
66
+ sourceCutoverId: marker.cutover_id,
67
+ sourceSnapshotHash: marker.source_snapshot_hash,
68
+ marker: marker.marker,
69
+ priorLeaseRoles: leaseRows.map((lease) => lease.role),
70
+ };
71
+ }
72
+ /**
73
+ * Persists a reconciliation gate and invalidates every pre-restore lease.
74
+ *
75
+ * The caller must still read current Sheet postconditions. This function only
76
+ * prevents an old fence from being reused and keeps future Sheet writes gated.
77
+ */
78
+ export function beginRestoreReconciliation(db, inspection, options) {
79
+ requireNonEmptyText(options.restoreId, "restore ID");
80
+ requireNonNegativeSafeInteger(options.now, "restore time");
81
+ const result = withImmediateTransaction(db, () => {
82
+ const sourceMarker = db.prepare(READ_RESTORE_SOURCE_MARKER_SQL)
83
+ .get(inspection.sourceCutoverId);
84
+ if (sourceMarker === undefined ||
85
+ sourceMarker.source_snapshot_hash !== inspection.sourceSnapshotHash ||
86
+ sourceMarker.marker !== inspection.marker) {
87
+ throw new StorageError(STORAGE_ERROR_CODES.RESTORE_INSPECTION_MISMATCH, "restore inspection does not match the restored cutover marker");
88
+ }
89
+ const existing = db.prepare(CHECK_RESTORE_ID_SQL).get(options.restoreId);
90
+ if (existing !== undefined) {
91
+ throw new StorageError(STORAGE_ERROR_CODES.RESTORE_ID_CONFLICT, "restore ID already exists: " + options.restoreId);
92
+ }
93
+ const invalidated = db.prepare(INVALIDATE_WRITER_LEASES_SQL).run(options.now);
94
+ db.prepare(INSERT_RESTORE_CUTOVER_SQL).run(options.restoreId, inspection.sourceSnapshotHash, inspection.marker, options.now);
95
+ return invalidated.changes;
96
+ });
97
+ return {
98
+ restoreId: options.restoreId,
99
+ sourceCutoverId: inspection.sourceCutoverId,
100
+ sourceSnapshotHash: inspection.sourceSnapshotHash,
101
+ invalidatedLeaseCount: result,
102
+ sheetWritesAllowed: false,
103
+ };
104
+ }
105
+ /**
106
+ * Records that each relevant effect has been classified by a read-back caller.
107
+ * It does not replay events or turn expired processing effects back to pending.
108
+ */
109
+ export function completeRestoreReconciliation(db, restore, options) {
110
+ validateEffectReconciliation(options.effects);
111
+ withImmediateTransaction(db, () => {
112
+ const result = db.prepare(COMPLETE_RESTORE_RECONCILIATION_SQL).run(restore.restoreId);
113
+ if (result.changes !== 1) {
114
+ throw new StorageError(STORAGE_ERROR_CODES.RESTORE_RECONCILIATION_STATE_INVALID, "restore reconciliation is not pending: " + restore.restoreId);
115
+ }
116
+ });
117
+ return { restoreId: restore.restoreId, sheetWritesAllowed: true };
118
+ }
119
+ /** Rejects a Sheet write until the persisted restore reconciliation status is complete. */
120
+ export function requireRestoreAllowsSheetWrites(db, restoreId) {
121
+ requireNonEmptyText(restoreId, "restore ID");
122
+ const row = db.prepare(READ_RESTORE_RECONCILIATION_STATUS_SQL)
123
+ .get(restoreId);
124
+ if (row === undefined || row.status !== "reconciled") {
125
+ throw new StorageError(STORAGE_ERROR_CODES.RESTORE_RECONCILIATION_STATE_INVALID, "restore reconciliation has not completed: " + restoreId);
126
+ }
127
+ }
128
+ function validateEffectReconciliation(effects) {
129
+ const effectIds = new Set();
130
+ for (const effect of effects) {
131
+ requireNonEmptyText(effect.effectId, "reconciled effect ID");
132
+ if (effectIds.has(effect.effectId)) {
133
+ throw new StorageError(STORAGE_ERROR_CODES.INVALID_RESTORE_RECONCILIATION, "duplicate reconciled effect ID: " + effect.effectId);
134
+ }
135
+ effectIds.add(effect.effectId);
136
+ }
137
+ }
138
+ function requireNonEmptyText(value, label) {
139
+ if (value.length === 0) {
140
+ throw new StorageError(STORAGE_ERROR_CODES.INVALID_RESTORE_OPTIONS, label + " is required");
141
+ }
142
+ }
143
+ function requireNonNegativeSafeInteger(value, label) {
144
+ if (!Number.isSafeInteger(value) || value < 0) {
145
+ throw new StorageError(STORAGE_ERROR_CODES.INVALID_RESTORE_OPTIONS, label + " must be a non-negative safe integer");
146
+ }
147
+ }
148
+ //# sourceMappingURL=restoreRecovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreRecovery.js","sourceRoot":"","sources":["../../../../src/infrastructure/storage/recovery/restoreRecovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { type DatabaseSyncLike } from "./sqliteBridge.js";
2
+ /**
3
+ * SQLite schema and migration DDL for the SQLite-authoritative sync storage layer.
4
+ *
5
+ * Implements the logical schema from design/packages/core/contracts/storage-schema.md.
6
+ * All identity constraints, unique indexes, and foreign keys are fixed here.
7
+ *
8
+ * Table creation order is parent-first. Deletion order is child-first.
9
+ */
10
+ /** Current durable schema version managed by migrateSchema(). */
11
+ export declare const CURRENT_SCHEMA_VERSION = 3;
12
+ /** Observable result of bringing one SQLite database to the current schema. */
13
+ export interface SchemaMigrationResult {
14
+ readonly fromVersion: number;
15
+ readonly toVersion: number;
16
+ /** Versions newly applied during this call; empty means already current. */
17
+ readonly appliedVersions: readonly number[];
18
+ }
19
+ /** Connection settings required by every typed-sheets SQLite store. */
20
+ export declare const SQLITE_CONNECTION_PRAGMAS = "\n PRAGMA foreign_keys = ON;\n PRAGMA journal_mode = WAL;\n PRAGMA busy_timeout = 5000;\n";
21
+ /** Columns that must exist before a version-two-or-later marker is trusted. */
22
+ export declare const REQUIRED_V2_COLUMNS: Readonly<Record<"sync_conflict" | "resolution_command", readonly string[]>>;
23
+ /** Columns that must exist before a version-three marker is trusted. */
24
+ export declare const REQUIRED_V3_COLUMNS: Readonly<Record<"sheet_effect_outbox", readonly string[]>>;
25
+ /**
26
+ * Returns full DDL for an empty database or isolated test fixture.
27
+ *
28
+ * Durable runtime startup must call migrateSchema() instead: executing this
29
+ * directly cannot safely evolve an already-populated database.
30
+ */
31
+ export declare function schemaDdl(): string;
32
+ /**
33
+ * Upgrades a durable database under an immediate writer transaction.
34
+ *
35
+ * Version 1 represents the original one-shot schema. Version 2 persists the
36
+ * candidate epoch needed to prevent a stale resolution request from resolving
37
+ * an ABA candidate retry. Version 3 adds durable effect creation time so
38
+ * operations can measure pending-age backpressure. Unversioned legacy
39
+ * databases created by schemaDdl() are adopted only after verification.
40
+ */
41
+ export declare function migrateSchema(db: DatabaseSyncLike): SchemaMigrationResult;
42
+ /** Returns table DDL only, so migration transactions never change connection pragmas. */
43
+ export declare function syncSchemaTablesDdl(): string;
44
+ /**
45
+ * Creates indexes that depend on additive migration columns only after those
46
+ * columns have been confirmed. This keeps a version-one upgrade ordered.
47
+ */
48
+ export declare function syncSchemaIndexesDdl(): string;
49
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/storage/sqlite/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAOpF;;;;;;;GAOG;AAEH,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,+EAA+E;AAC/E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED,uEAAuE;AACvE,eAAO,MAAM,yBAAyB,iGAIrC,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CACxC,MAAM,CAAC,eAAe,GAAG,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC,CAsClE,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC,CAE1F,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,gBAAgB,GAAG,qBAAqB,CAwDzE;AAED,yFAAyF;AACzF,wBAAgB,mBAAmB,IAAI,MAAM,CAa5C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAK7C"}