hikoutei 0.3.0 → 0.3.1

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 (368) hide show
  1. package/README.ja.md +13 -21
  2. package/README.ko.md +14 -22
  3. package/README.md +25 -29
  4. package/dist/adapter/persistence/contracts/sql.d.ts +16 -2
  5. package/dist/adapter/persistence/contracts/sql.d.ts.map +1 -1
  6. package/dist/adapter/persistence/contracts/sql.js +11 -1
  7. package/dist/adapter/persistence/contracts/sql.js.map +1 -1
  8. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.d.ts +1 -1
  9. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.d.ts.map +1 -1
  10. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.js +40 -14
  11. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.js.map +1 -1
  12. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.d.ts +2 -0
  13. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.d.ts.map +1 -1
  14. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.js +23 -8
  15. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.js.map +1 -1
  16. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts +13 -4
  17. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts.map +1 -1
  18. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.js +12 -2
  19. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.js.map +1 -1
  20. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.d.ts +21 -0
  21. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.d.ts.map +1 -0
  22. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.js +59 -0
  23. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.js.map +1 -0
  24. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.d.ts +14 -13
  25. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.d.ts.map +1 -1
  26. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.js +43 -64
  27. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.js.map +1 -1
  28. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.d.ts.map +1 -1
  29. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.js +4 -2
  30. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.js.map +1 -1
  31. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.d.ts.map +1 -1
  32. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js +1 -2
  33. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js.map +1 -1
  34. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts +61 -0
  35. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts.map +1 -0
  36. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js +186 -0
  37. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js.map +1 -0
  38. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.d.ts +56 -0
  39. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.d.ts.map +1 -0
  40. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js +275 -0
  41. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js.map +1 -0
  42. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.d.ts +11 -0
  43. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.d.ts.map +1 -0
  44. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js +345 -0
  45. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js.map +1 -0
  46. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.d.ts +65 -0
  47. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.d.ts.map +1 -0
  48. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.js +51 -0
  49. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.js.map +1 -0
  50. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingState.d.ts +36 -0
  51. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingState.d.ts.map +1 -0
  52. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingState.js +126 -0
  53. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingState.js.map +1 -0
  54. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.d.ts +11 -2
  55. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.d.ts.map +1 -1
  56. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.js +39 -0
  57. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.js.map +1 -1
  58. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts.map +1 -1
  59. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js +46 -35
  60. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js.map +1 -1
  61. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.d.ts.map +1 -1
  62. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js +22 -4
  63. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js.map +1 -1
  64. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.d.ts +2 -0
  65. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.d.ts.map +1 -1
  66. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js +47 -54
  67. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js.map +1 -1
  68. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.d.ts.map +1 -1
  69. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.js +6 -30
  70. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.js.map +1 -1
  71. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts +1 -0
  72. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts.map +1 -1
  73. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js +79 -22
  74. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js.map +1 -1
  75. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.d.ts +2 -1
  76. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.d.ts.map +1 -1
  77. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.js.map +1 -1
  78. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.d.ts +5 -0
  79. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.d.ts.map +1 -1
  80. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js +19 -4
  81. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js.map +1 -1
  82. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.js +5 -6
  83. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.js.map +1 -1
  84. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.d.ts +2 -1
  85. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.d.ts.map +1 -1
  86. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.js +2 -1
  87. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.js.map +1 -1
  88. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts +2 -1
  89. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts.map +1 -1
  90. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js +15 -19
  91. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js.map +1 -1
  92. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts.map +1 -1
  93. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js +44 -30
  94. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js.map +1 -1
  95. package/dist/adapter/sheets/providers/apps-script-gateway/validation.d.ts +3 -0
  96. package/dist/adapter/sheets/providers/apps-script-gateway/validation.d.ts.map +1 -0
  97. package/dist/adapter/sheets/providers/apps-script-gateway/validation.js +10 -0
  98. package/dist/adapter/sheets/providers/apps-script-gateway/validation.js.map +1 -0
  99. package/dist/api/Hikoutei.d.ts +17 -50
  100. package/dist/api/Hikoutei.d.ts.map +1 -1
  101. package/dist/api/Hikoutei.js +46 -105
  102. package/dist/api/Hikoutei.js.map +1 -1
  103. package/dist/api/entity.d.ts +9 -10
  104. package/dist/api/entity.d.ts.map +1 -1
  105. package/dist/api/entity.js +20 -26
  106. package/dist/api/entity.js.map +1 -1
  107. package/dist/api/errors.d.ts +0 -6
  108. package/dist/api/errors.d.ts.map +1 -1
  109. package/dist/api/errors.js +0 -6
  110. package/dist/api/errors.js.map +1 -1
  111. package/dist/api/index.d.ts +4 -4
  112. package/dist/api/index.d.ts.map +1 -1
  113. package/dist/api/index.js +2 -2
  114. package/dist/api/index.js.map +1 -1
  115. package/dist/api/internalEntityManager.d.ts.map +1 -1
  116. package/dist/api/internalEntityManager.js +33 -19
  117. package/dist/api/internalEntityManager.js.map +1 -1
  118. package/dist/application/orm/mapping/contracts.d.ts +16 -6
  119. package/dist/application/orm/mapping/contracts.d.ts.map +1 -1
  120. package/dist/application/orm/mapping/definition.d.ts.map +1 -1
  121. package/dist/application/orm/mapping/definition.js +47 -8
  122. package/dist/application/orm/mapping/definition.js.map +1 -1
  123. package/dist/application/orm/mapping/identity.js +1 -1
  124. package/dist/application/orm/mapping/identity.js.map +1 -1
  125. package/dist/application/orm/mapping/projection.d.ts.map +1 -1
  126. package/dist/application/orm/mapping/projection.js +10 -2
  127. package/dist/application/orm/mapping/projection.js.map +1 -1
  128. package/dist/application/orm/mapping/values.d.ts.map +1 -1
  129. package/dist/application/orm/mapping/values.js +5 -35
  130. package/dist/application/orm/mapping/values.js.map +1 -1
  131. package/dist/application/orm/persistence/flush/flushCoordinator.d.ts +3 -1
  132. package/dist/application/orm/persistence/flush/flushCoordinator.d.ts.map +1 -1
  133. package/dist/application/orm/persistence/flush/flushCoordinator.js +4 -3
  134. package/dist/application/orm/persistence/flush/flushCoordinator.js.map +1 -1
  135. package/dist/application/orm/persistence/lifecycle/entityLifecycle.js +2 -1
  136. package/dist/application/orm/persistence/lifecycle/entityLifecycle.js.map +1 -1
  137. package/dist/application/orm/persistence/projection/projectionEffects.d.ts +3 -1
  138. package/dist/application/orm/persistence/projection/projectionEffects.d.ts.map +1 -1
  139. package/dist/application/orm/persistence/projection/projectionEffects.js +14 -16
  140. package/dist/application/orm/persistence/projection/projectionEffects.js.map +1 -1
  141. package/dist/application/orm/persistence/scalar/unitOfWork.d.ts +6 -6
  142. package/dist/application/orm/persistence/scalar/unitOfWork.d.ts.map +1 -1
  143. package/dist/application/orm/persistence/scalar/unitOfWork.js +28 -28
  144. package/dist/application/orm/persistence/scalar/unitOfWork.js.map +1 -1
  145. package/dist/application/orm/persistence/support/businessKeys.d.ts.map +1 -1
  146. package/dist/application/orm/persistence/support/businessKeys.js +6 -24
  147. package/dist/application/orm/persistence/support/businessKeys.js.map +1 -1
  148. package/dist/application/orm/persistence/support/canonicalState.d.ts.map +1 -1
  149. package/dist/application/orm/persistence/support/canonicalState.js +9 -25
  150. package/dist/application/orm/persistence/support/canonicalState.js.map +1 -1
  151. package/dist/application/orm/persistence/support/contracts.d.ts +0 -57
  152. package/dist/application/orm/persistence/support/contracts.d.ts.map +1 -1
  153. package/dist/application/orm/persistence/support/contracts.js +0 -68
  154. package/dist/application/orm/persistence/support/contracts.js.map +1 -1
  155. package/dist/application/orm/persistence/support/helpers.d.ts +1 -11
  156. package/dist/application/orm/persistence/support/helpers.d.ts.map +1 -1
  157. package/dist/application/orm/persistence/support/helpers.js +1 -21
  158. package/dist/application/orm/persistence/support/helpers.js.map +1 -1
  159. package/dist/application/sync/gateway/constants.d.ts +2 -1
  160. package/dist/application/sync/gateway/constants.d.ts.map +1 -1
  161. package/dist/application/sync/gateway/constants.js +4 -3
  162. package/dist/application/sync/gateway/constants.js.map +1 -1
  163. package/dist/application/sync/gateway/syncGateway.d.ts.map +1 -1
  164. package/dist/application/sync/gateway/syncGateway.js +9 -28
  165. package/dist/application/sync/gateway/syncGateway.js.map +1 -1
  166. package/dist/application/sync/gateway/validation.d.ts +5 -0
  167. package/dist/application/sync/gateway/validation.d.ts.map +1 -1
  168. package/dist/application/sync/gateway/validation.js +22 -3
  169. package/dist/application/sync/gateway/validation.js.map +1 -1
  170. package/dist/application/sync/inbound/polling/SimpleSheetPolling.d.ts.map +1 -1
  171. package/dist/application/sync/inbound/polling/SimpleSheetPolling.js +3 -23
  172. package/dist/application/sync/inbound/polling/SimpleSheetPolling.js.map +1 -1
  173. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts +2 -0
  174. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts.map +1 -1
  175. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js +24 -6
  176. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js.map +1 -1
  177. package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts.map +1 -1
  178. package/dist/application/sync/outbound/effects/SyncEffectWorker.js +35 -34
  179. package/dist/application/sync/outbound/effects/SyncEffectWorker.js.map +1 -1
  180. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts +0 -1
  181. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts.map +1 -1
  182. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js +8 -37
  183. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js.map +1 -1
  184. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts.map +1 -1
  185. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js +2 -2
  186. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js.map +1 -1
  187. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.d.ts +0 -5
  188. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.d.ts.map +1 -1
  189. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js +3 -10
  190. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js.map +1 -1
  191. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts.map +1 -1
  192. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js +13 -21
  193. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js.map +1 -1
  194. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts +1 -1
  195. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts.map +1 -1
  196. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js +15 -3
  197. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js.map +1 -1
  198. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.d.ts.map +1 -1
  199. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js +1 -10
  200. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js.map +1 -1
  201. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -1
  202. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js +5 -9
  203. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -1
  204. package/dist/application/sync/service/SyncPollingSupervisor.d.ts +45 -0
  205. package/dist/application/sync/service/SyncPollingSupervisor.d.ts.map +1 -0
  206. package/dist/application/sync/service/SyncPollingSupervisor.js +142 -0
  207. package/dist/application/sync/service/SyncPollingSupervisor.js.map +1 -0
  208. package/dist/application/sync/service/SyncServiceBootstrap.d.ts +63 -0
  209. package/dist/application/sync/service/SyncServiceBootstrap.d.ts.map +1 -0
  210. package/dist/application/sync/service/SyncServiceBootstrap.js +223 -0
  211. package/dist/application/sync/service/SyncServiceBootstrap.js.map +1 -0
  212. package/dist/application/sync/service/contracts.d.ts +25 -0
  213. package/dist/application/sync/service/contracts.d.ts.map +1 -0
  214. package/dist/application/sync/service/contracts.js +3 -0
  215. package/dist/application/sync/service/contracts.js.map +1 -0
  216. package/dist/application/sync/service/errors.d.ts +15 -0
  217. package/dist/application/sync/service/errors.d.ts.map +1 -0
  218. package/dist/application/sync/service/errors.js +16 -0
  219. package/dist/application/sync/service/errors.js.map +1 -0
  220. package/dist/domain/errors/types.d.ts +1 -1
  221. package/dist/domain/errors/types.d.ts.map +1 -1
  222. package/dist/domain/errors/types.js +2 -2
  223. package/dist/domain/errors/types.js.map +1 -1
  224. package/dist/domain/evaluate/constants.d.ts +1 -1
  225. package/dist/domain/evaluate/constants.d.ts.map +1 -1
  226. package/dist/domain/evaluate/constants.js.map +1 -1
  227. package/dist/domain/evaluate/preconditions.d.ts.map +1 -1
  228. package/dist/domain/evaluate/preconditions.js +25 -32
  229. package/dist/domain/evaluate/preconditions.js.map +1 -1
  230. package/dist/domain/evaluate/quarantine.js +4 -1
  231. package/dist/domain/evaluate/quarantine.js.map +1 -1
  232. package/dist/domain/model/constants.d.ts +48 -0
  233. package/dist/domain/model/constants.d.ts.map +1 -1
  234. package/dist/domain/model/constants.js +38 -0
  235. package/dist/domain/model/constants.js.map +1 -1
  236. package/dist/domain/model/index.d.ts +2 -2
  237. package/dist/domain/model/index.d.ts.map +1 -1
  238. package/dist/domain/model/index.js +1 -1
  239. package/dist/domain/model/index.js.map +1 -1
  240. package/dist/domain/model/types.d.ts +13 -10
  241. package/dist/domain/model/types.d.ts.map +1 -1
  242. package/dist/infrastructure/storage/constants.d.ts +1 -1
  243. package/dist/infrastructure/storage/constants.d.ts.map +1 -1
  244. package/dist/infrastructure/storage/constants.js.map +1 -1
  245. package/dist/infrastructure/storage/errors.d.ts +2 -2
  246. package/dist/infrastructure/storage/errors.d.ts.map +1 -1
  247. package/dist/infrastructure/storage/errors.js +3 -5
  248. package/dist/infrastructure/storage/errors.js.map +1 -1
  249. package/dist/infrastructure/storage/index.d.ts +9 -5
  250. package/dist/infrastructure/storage/index.d.ts.map +1 -1
  251. package/dist/infrastructure/storage/index.js +3 -1
  252. package/dist/infrastructure/storage/index.js.map +1 -1
  253. package/dist/infrastructure/storage/sqlite/migrateSchema.js +9 -4
  254. package/dist/infrastructure/storage/sqlite/migrateSchema.js.map +1 -1
  255. package/dist/infrastructure/storage/state/canonical/canonicalCommit.d.ts +9 -0
  256. package/dist/infrastructure/storage/state/canonical/canonicalCommit.d.ts.map +1 -1
  257. package/dist/infrastructure/storage/state/canonical/canonicalCommit.js +35 -36
  258. package/dist/infrastructure/storage/state/canonical/canonicalCommit.js.map +1 -1
  259. package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.d.ts +8 -1
  260. package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.d.ts.map +1 -1
  261. package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.js +14 -0
  262. package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.js.map +1 -1
  263. package/dist/infrastructure/storage/state/observation/observationAudit.d.ts.map +1 -1
  264. package/dist/infrastructure/storage/state/observation/observationAudit.js +4 -1
  265. package/dist/infrastructure/storage/state/observation/observationAudit.js.map +1 -1
  266. package/dist/infrastructure/storage/state/observation/observationCanonical.d.ts +11 -1
  267. package/dist/infrastructure/storage/state/observation/observationCanonical.d.ts.map +1 -1
  268. package/dist/infrastructure/storage/state/observation/observationCanonical.js +108 -0
  269. package/dist/infrastructure/storage/state/observation/observationCanonical.js.map +1 -1
  270. package/dist/infrastructure/storage/state/observation/observationQuarantine.d.ts +36 -1
  271. package/dist/infrastructure/storage/state/observation/observationQuarantine.d.ts.map +1 -1
  272. package/dist/infrastructure/storage/state/observation/observationQuarantine.js +55 -0
  273. package/dist/infrastructure/storage/state/observation/observationQuarantine.js.map +1 -1
  274. package/dist/infrastructure/storage/state/observation/observationTypes.d.ts +22 -0
  275. package/dist/infrastructure/storage/state/observation/observationTypes.d.ts.map +1 -1
  276. package/dist/infrastructure/storage/state/observation/observationTypes.js +5 -0
  277. package/dist/infrastructure/storage/state/observation/observationTypes.js.map +1 -1
  278. package/dist/infrastructure/storage/state/observation/observationValidation.d.ts +1 -1
  279. package/dist/infrastructure/storage/state/observation/observationValidation.d.ts.map +1 -1
  280. package/dist/infrastructure/storage/state/observation/observationValidation.js +26 -0
  281. package/dist/infrastructure/storage/state/observation/observationValidation.js.map +1 -1
  282. package/dist/infrastructure/storage/state/observation/observationWriter.d.ts +1 -1
  283. package/dist/infrastructure/storage/state/observation/observationWriter.d.ts.map +1 -1
  284. package/dist/infrastructure/storage/state/observation/observationWriter.js +5 -1
  285. package/dist/infrastructure/storage/state/observation/observationWriter.js.map +1 -1
  286. package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts.map +1 -1
  287. package/dist/infrastructure/storage/state/resolution/resolutionWriter.js +3 -2
  288. package/dist/infrastructure/storage/state/resolution/resolutionWriter.js.map +1 -1
  289. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.d.ts +1 -5
  290. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.d.ts.map +1 -1
  291. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.js +3 -43
  292. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.js.map +1 -1
  293. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts +1 -1
  294. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts.map +1 -1
  295. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js +2 -4
  296. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js.map +1 -1
  297. package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts +2 -2
  298. package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts.map +1 -1
  299. package/dist/infrastructure/storage/sync/outbound/effectOutbox.js +20 -10
  300. package/dist/infrastructure/storage/sync/outbound/effectOutbox.js.map +1 -1
  301. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts +33 -18
  302. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts.map +1 -1
  303. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js.map +1 -1
  304. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts +1 -1
  305. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts.map +1 -1
  306. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js +2 -4
  307. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js.map +1 -1
  308. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts +6 -2
  309. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts.map +1 -1
  310. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js +157 -14
  311. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js.map +1 -1
  312. package/dist/infrastructure/storage/sync/outbound/reconciliationSql.d.ts +1 -1
  313. package/dist/infrastructure/storage/sync/outbound/reconciliationSql.d.ts.map +1 -1
  314. package/dist/infrastructure/storage/sync/outbound/reconciliationSql.js +14 -1
  315. package/dist/infrastructure/storage/sync/outbound/reconciliationSql.js.map +1 -1
  316. package/dist/infrastructure/storage/sync/shared/syncRegistry.d.ts +2 -1
  317. package/dist/infrastructure/storage/sync/shared/syncRegistry.d.ts.map +1 -1
  318. package/dist/infrastructure/storage/sync/shared/syncRegistry.js +4 -1
  319. package/dist/infrastructure/storage/sync/shared/syncRegistry.js.map +1 -1
  320. package/dist/infrastructure/storage/sync/shared/writerLease.d.ts +4 -0
  321. package/dist/infrastructure/storage/sync/shared/writerLease.d.ts.map +1 -1
  322. package/dist/infrastructure/storage/sync/shared/writerLease.js +9 -0
  323. package/dist/infrastructure/storage/sync/shared/writerLease.js.map +1 -1
  324. package/dist/shared/constants.d.ts +4 -4
  325. package/dist/shared/constants.d.ts.map +1 -1
  326. package/dist/shared/constants.js.map +1 -1
  327. package/dist/shared/encoding/index.d.ts +1 -0
  328. package/dist/shared/encoding/index.d.ts.map +1 -1
  329. package/dist/shared/encoding/index.js +1 -0
  330. package/dist/shared/encoding/index.js.map +1 -1
  331. package/dist/shared/encoding/normalizedCell.d.ts +4 -0
  332. package/dist/shared/encoding/normalizedCell.d.ts.map +1 -0
  333. package/dist/shared/encoding/normalizedCell.js +29 -0
  334. package/dist/shared/encoding/normalizedCell.js.map +1 -0
  335. package/dist/shared/encoding/stableEncode.d.ts +2 -1
  336. package/dist/shared/encoding/stableEncode.d.ts.map +1 -1
  337. package/dist/shared/encoding/stableEncode.js +6 -12
  338. package/dist/shared/encoding/stableEncode.js.map +1 -1
  339. package/dist/shared/identity/index.d.ts +3 -0
  340. package/dist/shared/identity/index.d.ts.map +1 -0
  341. package/dist/shared/identity/index.js +2 -0
  342. package/dist/shared/identity/index.js.map +1 -0
  343. package/dist/shared/identity/types.d.ts +41 -0
  344. package/dist/shared/identity/types.d.ts.map +1 -0
  345. package/dist/shared/identity/types.js +34 -0
  346. package/dist/shared/identity/types.js.map +1 -0
  347. package/dist/shared/index.d.ts +1 -0
  348. package/dist/shared/index.d.ts.map +1 -1
  349. package/dist/shared/index.js +1 -0
  350. package/dist/shared/index.js.map +1 -1
  351. package/dist/shared/state/constructors.d.ts +10 -0
  352. package/dist/shared/state/constructors.d.ts.map +1 -0
  353. package/dist/shared/state/constructors.js +18 -0
  354. package/dist/shared/state/constructors.js.map +1 -0
  355. package/dist/shared/state/index.d.ts +1 -0
  356. package/dist/shared/state/index.d.ts.map +1 -1
  357. package/dist/shared/state/index.js +1 -0
  358. package/dist/shared/state/index.js.map +1 -1
  359. package/dist/shared/validation.d.ts +2 -0
  360. package/dist/shared/validation.d.ts.map +1 -1
  361. package/dist/shared/validation.js +9 -0
  362. package/dist/shared/validation.js.map +1 -1
  363. package/docs/architecture.md +108 -103
  364. package/docs/ci.md +184 -61
  365. package/docs/mikro-orm-adapter-spike.md +55 -214
  366. package/docs/quick-start.md +58 -96
  367. package/docs/write-and-synchronization-flow.md +70 -39
  368. package/package.json +1 -1
@@ -1,7 +1,8 @@
1
1
  # Hikoutei Quick Start
2
2
 
3
- The project is called Hikoutei and is currently published on npm as
4
- `hikoutei`.
3
+ Hikoutei is a typed repository and safe write layer for Google Sheets-backed MVPs.
4
+ SQLite is the application authority; Google Sheets is an asynchronous internal
5
+ projection and human input surface.
5
6
 
6
7
  ## Installation
7
8
 
@@ -9,13 +10,11 @@ The project is called Hikoutei and is currently published on npm as
9
10
  npm install hikoutei @mikro-orm/core @mikro-orm/sql
10
11
  ```
11
12
 
12
- The root API does not expose MikroORM types. The current built-in SQLite
13
- provider uses those optional peer dependencies internally; a future provider
14
- can replace it without changing the entity lifecycle API.
13
+ The root API does not expose MikroORM, SQL, Apps Script, or sync-worker types.
14
+ The current built-in SQLite provider uses the optional MikroORM peer
15
+ dependencies internally.
15
16
 
16
- ## Define a scalar entity
17
-
18
- Entity metadata and environment-specific Sheet routes are separate:
17
+ ## Define an entity
19
18
 
20
19
  ```ts
21
20
  import { createTypedSheets, defineTypedSheetsEntity } from "hikoutei";
@@ -33,26 +32,16 @@ const User = defineTypedSheetsEntity({
33
32
  const hikoutei = await createTypedSheets({
34
33
  dbName: "./hikoutei.sqlite",
35
34
  entities: [User],
36
- sheets: {
37
- spreadsheetId: process.env.GOOGLE_SHEET_ID!,
38
- routes: {
39
- User: {
40
- systemState: { tabName: "Users_System", registeredRange: "A:Z" },
41
- },
42
- },
43
- },
44
35
  });
45
36
  ```
46
37
 
47
- `createTypedSheets()` validates the descriptors and routes, opens the local
48
- SQLite authority, registers canonical/outbox state, and prepares the current
49
- persistence provider. It does not call Google Sheets or mutate a remote tab.
38
+ `createTypedSheets()` validates entity descriptors, opens the local SQLite
39
+ authority, and creates the declared entity tables. It does not contact Google
40
+ Sheets and accepts no Sheet route or gateway option.
50
41
 
51
42
  ## Entity lifecycle
52
43
 
53
- Use a request-local manager. Reads come from SQLite, never from the remote Sheet.
54
- The Unit of Work owns identity maps and snapshots, so mutation followed by
55
- `flush()` has the same meaning regardless of the persistence provider.
44
+ Use a request-local manager. Reads come from SQLite, never from a remote Sheet.
56
45
 
57
46
  ```ts
58
47
  const em = hikoutei.em.fork();
@@ -69,83 +58,56 @@ const loaded = await em.findOne(User, { id: "u1" });
69
58
  if (loaded !== null) {
70
59
  loaded.name = "Ada Lovelace";
71
60
  await em.flush();
72
-
73
- await em.transactional(async (transactionalEm) => {
74
- transactionalEm.remove(loaded);
75
- });
76
61
  }
62
+
63
+ await em.transactional(async (transactionalEm) => {
64
+ const target = await transactionalEm.findOne(User, { id: "u1" });
65
+ if (target !== null) transactionalEm.remove(target);
66
+ });
77
67
  ```
78
68
 
79
- The stable lifecycle methods are `fork()`, `create()`, `find()`, `persist()`,
80
- `remove()`, `flush()`, and `transactional()`. Relations and provider-specific
81
- query operators are not part of the scalar release.
82
-
83
- ## Sheet setup and delivery
84
-
85
- `createTypedSheets()` opens the local SQLite authority and validates the
86
- registered routes, but it does not contact Google Sheets. Provisioning is an
87
- explicit service/deployment operation, and the included
88
- [`apps-script/gateway/Code.gs`](../apps-script/gateway/Code.gs) must be deployed
89
- before the server can deliver Sheet effects.
90
-
91
- ### Deploy the Apps Script gateway
92
-
93
- Complete these steps once for the spreadsheet that the service will use:
94
-
95
- 1. Create or open the target Google Spreadsheet. From **Extensions → Apps
96
- Script**, create a **bound** Apps Script project for that spreadsheet.
97
- 2. Copy the complete `apps-script/gateway/Code.gs` file from this repository or
98
- from `node_modules/hikoutei/apps-script/gateway/Code.gs` into the Apps Script
99
- editor, then save it.
100
- 3. Choose **Deploy → New deployment**, select **Web app**, and deploy it with
101
- **Execute as: Me**. Choose the narrowest access audience that can reach the
102
- server. A server outside the Workspace normally requires **Anyone**; the
103
- signed request secret still authenticates every useful POST.
104
- 4. Copy the deployed URL ending in `/exec`. Do not use the editor-only `/dev`
105
- URL. Paste the URL into the constant near the top of `Code.gs` and save:
106
-
107
- ```js
108
- var TYPED_SHEETS_GATEWAY_URL =
109
- "https://script.google.com/macros/s/DEPLOYMENT_ID/exec";
110
- ```
111
-
112
- 5. In the **bound** Apps Script editor, select `setupSyncGateway` in the
113
- function menu and click **Run**. Approve the requested Google permissions.
114
- The helper reads the active spreadsheet ID, stores the ID and shared secret
115
- in Script Properties, and logs a copyable local environment block. Running
116
- it from a standalone Apps Script project cannot identify the spreadsheet.
117
- 6. Open the execution log and copy the printed values into an untracked server
118
- environment file or secret store:
119
-
120
- ```dotenv
121
- TYPED_SHEETS_GATEWAY_URL="https://script.google.com/macros/s/DEPLOYMENT_ID/exec"
122
- TYPED_SHEETS_GATEWAY_SHARED_SECRET="generated-secret"
123
- TYPED_SHEETS_GATEWAY_SHEET_ID="spreadsheet-id"
124
- ```
125
-
126
- The sheet ID is derived from the bound spreadsheet; it is not a second
127
- spreadsheet to configure. Never put the shared secret in browser code or
128
- commit it to Git.
129
- 7. If `Code.gs` changes, use **Deploy → Manage deployments**, edit the Web App
130
- deployment, and create a new version before relying on the changed gateway.
131
- The `/exec` URL stays the same when an existing deployment is updated.
132
-
133
- ### Provision and deliver Sheets
134
-
135
- Provide a server-side, provider-neutral `HikouteiSheetProvisioner` using the
136
- server credentials, then explicitly provision the registered tabs and headers:
69
+ The stable lifecycle methods are `fork()`, `create()`, `find()`, `findOne()`,
70
+ `persist()`, `remove()`, `flush()`, and `transactional()`. Relations and
71
+ provider-specific query operators are not part of the scalar release.
137
72
 
138
- ```ts
139
- await hikoutei.setupSheets(provisioner);
140
- ```
73
+ ## Internal Sheet synchronization
74
+
75
+ Applications do not call Sheet APIs or choose a write operation for each
76
+ entity change. A service-side internal sync bootstrap owns:
77
+
78
+ - projection routes and user-owned field configuration
79
+ - Apps Script URL, spreadsheet ID, and shared secret
80
+ - local projection registration and remote provisioning
81
+ - the outbound effect supervisor and durable outbox delivery
82
+ - User_Input polling, evaluation, conflict handling, and reconciliation
83
+
84
+ When that internal service mode is active, `flush()` commits the entity table,
85
+ canonical sync state, and durable Sheet effect outbox in one SQLite transaction.
86
+ The call still does not wait for the remote Sheet write.
87
+
88
+ The internal service provisions and validates the registered tabs before it
89
+ starts delivery. Schema drift or gateway setup failure stops service startup
90
+ rather than silently changing a remote Sheet. These service modules are under
91
+ `src/application/sync/service/` and are intentionally not re-exported from the
92
+ package root.
93
+
94
+ ## Apps Script gateway
95
+
96
+ The deployable gateway is [`apps-script/gateway/Code.gs`](../apps-script/gateway/Code.gs).
97
+ A service deployment supplies its URL and shared secret through a secret store
98
+ or environment configuration. Never place the shared secret in browser code or
99
+ commit it to Git.
100
+
101
+ Live Google integration is opt-in and requires a deployed gateway, credentials,
102
+ a spreadsheet, and external quota. The normal test suite uses fake gateways and
103
+ SQLite fixtures without credentials.
141
104
 
142
- The operation is idempotent and rejects schema drift instead of silently
143
- rewriting headers. After setup, run the sync worker that delivers pending
144
- outbox effects. A successful `flush()` commits the entity table, canonical sync
145
- state, and durable Sheet effect outbox in one SQLite transaction; it does not
146
- mean that the remote Sheet has already been updated.
105
+ ## Read/write guarantees
147
106
 
148
- If `setupSyncGateway()` reports that it must run from a bound project, reopen
149
- Apps Script from the spreadsheet's **Extensions → Apps Script** menu. If the
150
- server receives `gateway_not_configured`, run the setup helper again and make
151
- sure the three environment variables are available to the service.
107
+ - SQLite is the source of truth for application reads.
108
+ - `flush()` returns after the local SQLite transaction commits.
109
+ - Sheet delivery is asynchronous and at-least-once.
110
+ - Stale or conflicting User_Input edits are recorded in SQLite rather than
111
+ silently overwriting canonical data.
112
+ - Gateway response loss is recoverable work, not proof of a failed remote write.
113
+ - Projection route/header drift fails explicitly.
@@ -1,72 +1,103 @@
1
1
  # Write and Synchronization Flow
2
2
 
3
3
  Hikoutei commits local state first and materializes Google Sheets changes
4
- asynchronously. `createTypedSheets()` is local-only; remote tab/header
5
- provisioning happens only through the explicit `setupSheets()` boundary.
4
+ asynchronously. The root ORM API is SQLite-only; the internal sync service owns
5
+ all Sheet communication.
6
6
 
7
- ## Outbound flow: SQLite to Google Sheets
7
+ ## Public ORM flow
8
8
 
9
9
  ```text
10
10
  em.persist(entity) / em.remove(entity)
11
11
  │
12
12
  ▼
13
13
  SQLite transaction
14
- ├─ canonical entity state
15
- └─ durable outbox effect
14
+ └─ entity table
16
15
  │
17
16
  ▼
18
- background effect worker
17
+ return to application
18
+ ```
19
+
20
+ `createTypedSheets()` never contacts Google Sheets and does not require a Sheet
21
+ route, gateway client, or provisioner. Reads always come from SQLite.
22
+
23
+ ## Internal sync service flow
24
+
25
+ The service-side bootstrap uses the same SQLite adapter and adds the canonical
26
+ sync state and durable outbox to the flush transaction:
27
+
28
+ ```text
29
+ EntityManager.flush()
30
+ │
31
+ ▼
32
+ SQLite transaction
33
+ ├─ entity table
34
+ ├─ canonical sync state
35
+ ├─ projection registry/state
36
+ └─ durable Sheet effect outbox
37
+ │
38
+ ▼
39
+ internal effect supervisor
19
40
  ├─ claim with a lease
20
41
  ├─ send a signed operation batch
21
42
  ├─ retry or recover an uncertain response
22
43
  └─ mark the effect applied/failed
23
44
  │
24
45
  ▼
25
- Apps Script gateway ── fast range write ──▶ Google Sheets
46
+ Apps Script gateway ──▶ Google Sheets
26
47
  ```
27
48
 
28
- The application request does not wait for the remote Sheet write. A successful
29
- `flush()` means that SQLite accepted the entity change and the corresponding
30
- effect was durably queued.
49
+ A successful `flush()` means that SQLite accepted the local change and queued
50
+ its projection effect. It does not mean that the remote Sheet write has
51
+ completed.
52
+
53
+ ## Fast append, update, and delete
31
54
 
32
- ## Fast append
55
+ New System_State rows use the bounded fast append operation where possible.
56
+ Updates and deletes use guarded effects with expected visible revision/hash
57
+ evidence. The same internal worker handles retries, response-loss recovery, and
58
+ reconciliation. These operation types are implementation details and are not
59
+ methods on the public EntityManager.
33
60
 
34
- The common system-state append path favors one contiguous range write. It avoids
35
- doing expensive metadata, snapshot, postcondition, and repair work before every
36
- append. Those checks belong to a separate safety path so the common write can
37
- remain small and predictable.
61
+ ## Inbound User_Input flow
38
62
 
39
- ## Update and delete
63
+ The internal service polls registered `User_Input` projections on a bounded
64
+ interval. It reads the visible row, compares it with canonical SQLite state,
65
+ and sends changed fields through the evaluator:
40
66
 
41
- Update and delete effects are still represented as durable outbox work and are
42
- sent by the same worker. Their safety policy can be stricter than append because
43
- overwriting or removing an existing row has a larger failure impact.
67
+ ```text
68
+ User_Input polling
69
+ ├─ normalize literal/blank cells
70
+ ├─ resolve business-key row binding
71
+ ├─ validate ownership and field revisions
72
+ ├─ classify accepted, conflict, stale, or quarantine
73
+ └─ persist accepted observation and entity mutation in SQLite
74
+ ```
44
75
 
45
- ## Gateway boundary
76
+ Accepted observation writes update canonical state and the application entity in
77
+ the same SQLite transaction. They do not enqueue a duplicate User_Input effect;
78
+ only the required system projection repair/materialization is considered.
79
+ Conflicts, stale writes, duplicate keys, and malformed cells remain visible in
80
+ SQLite evidence tables for later handling.
46
81
 
47
- The Apps Script gateway is intentionally thin:
82
+ ## Provisioning and gateway boundary
83
+
84
+ Projection provisioning is an internal service-start operation. The bootstrap
85
+ generates route registrations and headers from the internal mapping, verifies
86
+ remote schema drift, and starts workers only after provisioning succeeds. The
87
+ Apps Script gateway remains intentionally thin:
48
88
 
49
89
  1. verify the signed operation envelope
50
90
  2. validate the operation contract
51
91
  3. execute the allowlisted Sheet operation
52
- 4. return a structured result to the server worker
53
-
54
- Entity evaluation, canonical state, retry policy, reconciliation, and effect
55
- classification remain in the Node/SQLite side of Hikoutei.
56
-
57
- ## Uncertain remote results
58
-
59
- An HTTP timeout or lost response does not prove that the Sheet write failed. The
60
- worker treats that result as recoverable work, retries according to its policy,
61
- and relies on idempotent effects and reconciliation to repair drift later.
92
+ 4. return a structured result to the internal worker
62
93
 
63
- The design therefore favors at-least-once delivery with a repair safety net over
64
- trying to prove exactly-once behavior from a response that may never arrive.
94
+ Applications do not import or call the gateway client, protocol, operation
95
+ builders, polling functions, or provisioning interfaces.
65
96
 
66
- ## Inbound path: user edits
97
+ ## Failure model
67
98
 
68
- User-owned Sheet changes are a separate inbound concern. A future or configured
69
- `onEdit`/lightweight polling path reads the user-editable values, compares them
70
- with SQLite state, and sends the resulting observation into the evaluation and
71
- conflict pipeline. This path is intentionally separate from the fast outbound
72
- append path.
99
+ An HTTP timeout or lost response does not prove that a Sheet write failed. The
100
+ worker preserves durable work, classifies recoverable failures, and uses
101
+ idempotent effects plus reconciliation to repair drift later. The SQLite commit
102
+ is the application success boundary; remote delivery is at-least-once and
103
+ asynchronous.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hikoutei",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Hikoutei — typed repository and safe write layer for Google Sheets-backed MVPs.",
5
5
  "repository": {
6
6
  "type": "git",