hikoutei 0.3.4 → 0.3.6

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 (355) hide show
  1. package/README.ja.md +44 -21
  2. package/README.ko.md +43 -23
  3. package/README.md +49 -33
  4. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts +3 -3
  5. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts.map +1 -1
  6. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.js +1 -1
  7. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.d.ts +1 -1
  8. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.js +1 -1
  9. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.js +3 -3
  10. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.js.map +1 -1
  11. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts +3 -3
  12. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts.map +1 -1
  13. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js +15 -15
  14. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js.map +1 -1
  15. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.d.ts +1 -1
  16. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.d.ts.map +1 -1
  17. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.js +3 -3
  18. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.js.map +1 -1
  19. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.d.ts +5 -5
  20. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.d.ts.map +1 -1
  21. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js +5 -5
  22. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js.map +1 -1
  23. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.d.ts +1 -1
  24. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js +5 -5
  25. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js.map +1 -1
  26. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.js +3 -3
  27. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.js.map +1 -1
  28. package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts +156 -0
  29. package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts.map +1 -0
  30. package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js +1112 -0
  31. package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js.map +1 -0
  32. package/dist/adapter/sheets/providers/google-sheets-api/constants.d.ts +87 -0
  33. package/dist/adapter/sheets/providers/google-sheets-api/constants.d.ts.map +1 -0
  34. package/dist/adapter/sheets/providers/google-sheets-api/constants.js +97 -0
  35. package/dist/adapter/sheets/providers/google-sheets-api/constants.js.map +1 -0
  36. package/dist/adapter/sheets/providers/google-sheets-api/errors.d.ts +53 -0
  37. package/dist/adapter/sheets/providers/google-sheets-api/errors.d.ts.map +1 -0
  38. package/dist/adapter/sheets/providers/google-sheets-api/errors.js +61 -0
  39. package/dist/adapter/sheets/providers/google-sheets-api/errors.js.map +1 -0
  40. package/dist/adapter/sheets/providers/google-sheets-api/index.d.ts +16 -0
  41. package/dist/adapter/sheets/providers/google-sheets-api/index.d.ts.map +1 -0
  42. package/dist/adapter/sheets/providers/google-sheets-api/index.js +13 -0
  43. package/dist/adapter/sheets/providers/google-sheets-api/index.js.map +1 -0
  44. package/dist/adapter/sheets/providers/google-sheets-api/model/batchBuilder.d.ts +83 -0
  45. package/dist/adapter/sheets/providers/google-sheets-api/model/batchBuilder.d.ts.map +1 -0
  46. package/dist/adapter/sheets/providers/google-sheets-api/model/batchBuilder.js +413 -0
  47. package/dist/adapter/sheets/providers/google-sheets-api/model/batchBuilder.js.map +1 -0
  48. package/dist/adapter/sheets/providers/google-sheets-api/model/observation.d.ts +86 -0
  49. package/dist/adapter/sheets/providers/google-sheets-api/model/observation.d.ts.map +1 -0
  50. package/dist/adapter/sheets/providers/google-sheets-api/model/observation.js +439 -0
  51. package/dist/adapter/sheets/providers/google-sheets-api/model/observation.js.map +1 -0
  52. package/dist/adapter/sheets/providers/google-sheets-api/model/planner.d.ts +115 -0
  53. package/dist/adapter/sheets/providers/google-sheets-api/model/planner.d.ts.map +1 -0
  54. package/dist/adapter/sheets/providers/google-sheets-api/model/planner.js +522 -0
  55. package/dist/adapter/sheets/providers/google-sheets-api/model/planner.js.map +1 -0
  56. package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.d.ts +17 -0
  57. package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.d.ts.map +1 -0
  58. package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.js +99 -0
  59. package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.js.map +1 -0
  60. package/dist/adapter/sheets/providers/google-sheets-api/model/preflight.d.ts +242 -0
  61. package/dist/adapter/sheets/providers/google-sheets-api/model/preflight.d.ts.map +1 -0
  62. package/dist/adapter/sheets/providers/google-sheets-api/model/preflight.js +707 -0
  63. package/dist/adapter/sheets/providers/google-sheets-api/model/preflight.js.map +1 -0
  64. package/dist/adapter/sheets/providers/google-sheets-api/model/sheetIdAllocator.d.ts +16 -0
  65. package/dist/adapter/sheets/providers/google-sheets-api/model/sheetIdAllocator.d.ts.map +1 -0
  66. package/dist/adapter/sheets/providers/google-sheets-api/model/sheetIdAllocator.js +29 -0
  67. package/dist/adapter/sheets/providers/google-sheets-api/model/sheetIdAllocator.js.map +1 -0
  68. package/dist/adapter/sheets/providers/google-sheets-api/model/tableRead.d.ts +26 -0
  69. package/dist/adapter/sheets/providers/google-sheets-api/model/tableRead.d.ts.map +1 -0
  70. package/dist/adapter/sheets/providers/google-sheets-api/model/tableRead.js +57 -0
  71. package/dist/adapter/sheets/providers/google-sheets-api/model/tableRead.js.map +1 -0
  72. package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.d.ts +102 -0
  73. package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.d.ts.map +1 -0
  74. package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.js +375 -0
  75. package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.js.map +1 -0
  76. package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts +168 -0
  77. package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts.map +1 -0
  78. package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js +247 -0
  79. package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js.map +1 -0
  80. package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.d.ts +47 -0
  81. package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.d.ts.map +1 -0
  82. package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.js +60 -0
  83. package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.js.map +1 -0
  84. package/dist/api/Hikoutei.d.ts +1 -1
  85. package/dist/api/Hikoutei.js +1 -1
  86. package/dist/api/index.d.ts +2 -2
  87. package/dist/api/index.js +2 -2
  88. package/dist/application/orm/mapping/contracts.d.ts +2 -2
  89. package/dist/application/orm/mapping/contracts.d.ts.map +1 -1
  90. package/dist/application/orm/mapping/definition.js +5 -5
  91. package/dist/application/orm/mapping/definition.js.map +1 -1
  92. package/dist/application/orm/mapping/projection.js +7 -7
  93. package/dist/application/orm/mapping/projection.js.map +1 -1
  94. package/dist/application/orm/persistence/flush/flushCoordinator.d.ts +3 -3
  95. package/dist/application/orm/persistence/flush/flushCoordinator.d.ts.map +1 -1
  96. package/dist/application/orm/persistence/flush/flushCoordinator.js +2 -2
  97. package/dist/application/orm/persistence/flush/flushCoordinator.js.map +1 -1
  98. package/dist/application/orm/persistence/projection/projectionEffects.d.ts +1 -1
  99. package/dist/application/orm/persistence/projection/projectionEffects.js +6 -6
  100. package/dist/application/orm/persistence/projection/projectionEffects.js.map +1 -1
  101. package/dist/application/orm/persistence/support/contracts.d.ts +2 -2
  102. package/dist/application/orm/persistence/support/contracts.d.ts.map +1 -1
  103. package/dist/application/sync/inbound/autoSystemConflictResolution.js +7 -7
  104. package/dist/application/sync/inbound/autoSystemConflictResolution.js.map +1 -1
  105. package/dist/application/sync/inbound/polling/SimpleSheetPolling.d.ts +3 -3
  106. package/dist/application/sync/inbound/polling/SimpleSheetPolling.d.ts.map +1 -1
  107. package/dist/application/sync/inbound/polling/SimpleSheetPolling.js +1 -1
  108. package/dist/application/sync/inbound/polling/SimpleSheetPolling.js.map +1 -1
  109. package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.d.ts +17 -1
  110. package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.d.ts.map +1 -1
  111. package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.js +27 -1
  112. package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.js.map +1 -1
  113. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts +2 -2
  114. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts.map +1 -1
  115. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js +26 -6
  116. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js.map +1 -1
  117. package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts +24 -9
  118. package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts.map +1 -1
  119. package/dist/application/sync/outbound/effects/SyncEffectWorker.js +128 -81
  120. package/dist/application/sync/outbound/effects/SyncEffectWorker.js.map +1 -1
  121. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts +31 -14
  122. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts.map +1 -1
  123. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js +32 -15
  124. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js.map +1 -1
  125. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts +13 -9
  126. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts.map +1 -1
  127. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js +53 -37
  128. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js.map +1 -1
  129. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js +1 -1
  130. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js.map +1 -1
  131. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts +29 -19
  132. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts.map +1 -1
  133. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js +59 -41
  134. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js.map +1 -1
  135. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.d.ts +4 -4
  136. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.d.ts.map +1 -1
  137. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.js +3 -3
  138. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.js.map +1 -1
  139. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts +3 -3
  140. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts.map +1 -1
  141. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js +42 -46
  142. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js.map +1 -1
  143. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.d.ts +8 -8
  144. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.d.ts.map +1 -1
  145. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js +15 -15
  146. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js.map +1 -1
  147. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts +3 -3
  148. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -1
  149. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js +10 -10
  150. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -1
  151. package/dist/application/sync/service/SyncPollingSupervisor.d.ts +1 -1
  152. package/dist/application/sync/service/SyncPollingSupervisor.js +1 -1
  153. package/dist/application/sync/service/SyncServiceBootstrap.d.ts +29 -19
  154. package/dist/application/sync/service/SyncServiceBootstrap.d.ts.map +1 -1
  155. package/dist/application/sync/service/SyncServiceBootstrap.js +103 -78
  156. package/dist/application/sync/service/SyncServiceBootstrap.js.map +1 -1
  157. package/dist/application/sync/service/errors.d.ts +1 -1
  158. package/dist/application/sync/service/errors.js +1 -1
  159. package/dist/application/sync/service/errors.js.map +1 -1
  160. package/dist/application/sync/sheets/conflictProjection.d.ts.map +1 -0
  161. package/dist/application/sync/sheets/conflictProjection.js.map +1 -0
  162. package/dist/application/sync/{gateway → sheets}/conflictProjectionRegistration.d.ts +1 -1
  163. package/dist/application/sync/sheets/conflictProjectionRegistration.d.ts.map +1 -0
  164. package/dist/application/sync/{gateway → sheets}/conflictProjectionRegistration.js +3 -3
  165. package/dist/application/sync/sheets/conflictProjectionRegistration.js.map +1 -0
  166. package/dist/application/sync/sheets/constants.d.ts +66 -0
  167. package/dist/application/sync/sheets/constants.d.ts.map +1 -0
  168. package/dist/application/sync/{gateway → sheets}/constants.js +15 -15
  169. package/dist/application/sync/sheets/constants.js.map +1 -0
  170. package/dist/application/sync/sheets/errors.d.ts +15 -0
  171. package/dist/application/sync/sheets/errors.d.ts.map +1 -0
  172. package/dist/application/sync/sheets/errors.js +16 -0
  173. package/dist/application/sync/sheets/errors.js.map +1 -0
  174. package/dist/application/sync/{gateway/coordinator/CoordinatedSyncGateway.d.ts → sheets/mutationCoordinator/CoordinatedSheetsProvider.d.ts} +29 -28
  175. package/dist/application/sync/sheets/mutationCoordinator/CoordinatedSheetsProvider.d.ts.map +1 -0
  176. package/dist/application/sync/{gateway/coordinator/CoordinatedSyncGateway.js → sheets/mutationCoordinator/CoordinatedSheetsProvider.js} +27 -26
  177. package/dist/application/sync/sheets/mutationCoordinator/CoordinatedSheetsProvider.js.map +1 -0
  178. package/dist/application/sync/{gateway/coordinator → sheets/mutationCoordinator}/asyncMutex.d.ts +2 -3
  179. package/dist/application/sync/sheets/mutationCoordinator/asyncMutex.d.ts.map +1 -0
  180. package/dist/application/sync/sheets/mutationCoordinator/asyncMutex.js.map +1 -0
  181. package/dist/application/sync/{gateway/coordinator/coordinatorTelemetry.d.ts → sheets/mutationCoordinator/laneTelemetry.d.ts} +4 -4
  182. package/dist/application/sync/sheets/mutationCoordinator/laneTelemetry.d.ts.map +1 -0
  183. package/dist/application/sync/{gateway/coordinator/coordinatorTelemetry.js → sheets/mutationCoordinator/laneTelemetry.js} +5 -5
  184. package/dist/application/sync/sheets/mutationCoordinator/laneTelemetry.js.map +1 -0
  185. package/dist/application/sync/{gateway/SyncGatewayBootstrap.d.ts → sheets/sheetsProvisioning.d.ts} +14 -14
  186. package/dist/application/sync/sheets/sheetsProvisioning.d.ts.map +1 -0
  187. package/dist/application/sync/sheets/sheetsProvisioning.js +95 -0
  188. package/dist/application/sync/sheets/sheetsProvisioning.js.map +1 -0
  189. package/dist/application/sync/{gateway/syncGateway.d.ts → sheets/syncSheets.d.ts} +61 -117
  190. package/dist/application/sync/sheets/syncSheets.d.ts.map +1 -0
  191. package/dist/application/sync/sheets/syncSheets.js +144 -0
  192. package/dist/application/sync/sheets/syncSheets.js.map +1 -0
  193. package/dist/application/sync/{gateway/transportClassification.d.ts → sheets/transportOutcome.d.ts} +23 -22
  194. package/dist/application/sync/sheets/transportOutcome.d.ts.map +1 -0
  195. package/dist/application/sync/sheets/transportOutcome.js +97 -0
  196. package/dist/application/sync/sheets/transportOutcome.js.map +1 -0
  197. package/dist/application/sync/sheets/validation.d.ts +22 -0
  198. package/dist/application/sync/sheets/validation.d.ts.map +1 -0
  199. package/dist/application/sync/sheets/validation.js +79 -0
  200. package/dist/application/sync/sheets/validation.js.map +1 -0
  201. package/dist/application/sync/telemetry/syncTiming.d.ts +7 -7
  202. package/dist/application/sync/telemetry/syncTiming.d.ts.map +1 -1
  203. package/dist/application/sync/telemetry/syncTiming.js +2 -2
  204. package/dist/application/sync/telemetry/syncTiming.js.map +1 -1
  205. package/dist/domain/evaluate/contracts.d.ts +1 -1
  206. package/dist/domain/evaluate/contracts.js +1 -1
  207. package/dist/domain/model/constants.d.ts +1 -1
  208. package/dist/domain/model/constants.d.ts.map +1 -1
  209. package/dist/domain/model/types.d.ts +1 -1
  210. package/dist/domain/model/types.d.ts.map +1 -1
  211. package/dist/index.d.ts +3 -2
  212. package/dist/index.d.ts.map +1 -1
  213. package/dist/index.js +3 -2
  214. package/dist/index.js.map +1 -1
  215. package/dist/infrastructure/storage/index.d.ts +1 -1
  216. package/dist/infrastructure/storage/index.d.ts.map +1 -1
  217. package/dist/infrastructure/storage/index.js +1 -1
  218. package/dist/infrastructure/storage/index.js.map +1 -1
  219. package/dist/infrastructure/storage/state/observation/observationAudit.d.ts +1 -1
  220. package/dist/infrastructure/storage/state/observation/observationAudit.js +1 -1
  221. package/dist/infrastructure/storage/state/observation/observationTypes.d.ts +3 -3
  222. package/dist/infrastructure/storage/state/observation/observationTypes.d.ts.map +1 -1
  223. package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts +13 -1
  224. package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts.map +1 -1
  225. package/dist/infrastructure/storage/sync/outbound/effectOutbox.js +23 -2
  226. package/dist/infrastructure/storage/sync/outbound/effectOutbox.js.map +1 -1
  227. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts +9 -3
  228. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts.map +1 -1
  229. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js +7 -1
  230. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js.map +1 -1
  231. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts +11 -1
  232. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts.map +1 -1
  233. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js +44 -3
  234. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js.map +1 -1
  235. package/dist/infrastructure/storage/sync/shared/syncRegistry.d.ts +4 -4
  236. package/dist/infrastructure/storage/sync/shared/syncRegistry.d.ts.map +1 -1
  237. package/dist/infrastructure/storage/sync/shared/syncRegistry.js +4 -4
  238. package/dist/infrastructure/storage/sync/shared/syncRegistry.js.map +1 -1
  239. package/dist/shared/encoding/types.d.ts +1 -1
  240. package/docs/architecture.md +52 -23
  241. package/docs/ci.md +31 -23
  242. package/docs/code-guidelines.md +10 -18
  243. package/docs/development.md +37 -11
  244. package/docs/gateway-removal-inventory.md +147 -0
  245. package/docs/quick-start.md +36 -26
  246. package/docs/sync-bulk-write-benchmark.md +561 -0
  247. package/docs/sync-observability.md +38 -45
  248. package/docs/write-and-synchronization-flow.md +56 -39
  249. package/package.json +5 -4
  250. package/apps-script/gateway/Code.gs +0 -447
  251. package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts +0 -43
  252. package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts.map +0 -1
  253. package/dist/adapter/sheets/providers/apps-script-gateway/errors.js +0 -52
  254. package/dist/adapter/sheets/providers/apps-script-gateway/errors.js.map +0 -1
  255. package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts +0 -24
  256. package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts.map +0 -1
  257. package/dist/adapter/sheets/providers/apps-script-gateway/index.js +0 -13
  258. package/dist/adapter/sheets/providers/apps-script-gateway/index.js.map +0 -1
  259. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts +0 -44
  260. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts.map +0 -1
  261. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js +0 -181
  262. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js.map +0 -1
  263. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.d.ts +0 -3
  264. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.d.ts.map +0 -1
  265. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js +0 -810
  266. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js.map +0 -1
  267. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.d.ts +0 -31
  268. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.d.ts.map +0 -1
  269. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js +0 -560
  270. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js.map +0 -1
  271. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.d.ts +0 -12
  272. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.d.ts.map +0 -1
  273. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.js +0 -166
  274. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.js.map +0 -1
  275. package/dist/adapter/sheets/providers/apps-script-gateway/operations/shared/appsScriptStableCodecSource.d.ts +0 -8
  276. package/dist/adapter/sheets/providers/apps-script-gateway/operations/shared/appsScriptStableCodecSource.d.ts.map +0 -1
  277. package/dist/adapter/sheets/providers/apps-script-gateway/operations/shared/appsScriptStableCodecSource.js +0 -122
  278. package/dist/adapter/sheets/providers/apps-script-gateway/operations/shared/appsScriptStableCodecSource.js.map +0 -1
  279. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.d.ts +0 -31
  280. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.d.ts.map +0 -1
  281. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.js +0 -567
  282. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.js.map +0 -1
  283. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts +0 -19
  284. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts.map +0 -1
  285. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js +0 -37
  286. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js.map +0 -1
  287. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.d.ts +0 -51
  288. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.d.ts.map +0 -1
  289. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.js +0 -60
  290. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.js.map +0 -1
  291. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.d.ts +0 -44
  292. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.d.ts.map +0 -1
  293. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.js +0 -40
  294. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.js.map +0 -1
  295. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.d.ts +0 -12
  296. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.d.ts.map +0 -1
  297. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js +0 -41
  298. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js.map +0 -1
  299. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.d.ts +0 -5
  300. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.d.ts.map +0 -1
  301. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.js +0 -53
  302. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.js.map +0 -1
  303. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.d.ts +0 -4
  304. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.d.ts.map +0 -1
  305. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.js +0 -2
  306. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.js.map +0 -1
  307. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.d.ts +0 -11
  308. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.d.ts.map +0 -1
  309. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.js +0 -36
  310. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.js.map +0 -1
  311. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts +0 -68
  312. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts.map +0 -1
  313. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js +0 -273
  314. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js.map +0 -1
  315. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts +0 -73
  316. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts.map +0 -1
  317. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js +0 -363
  318. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js.map +0 -1
  319. package/dist/adapter/sheets/providers/apps-script-gateway/validation.d.ts +0 -3
  320. package/dist/adapter/sheets/providers/apps-script-gateway/validation.d.ts.map +0 -1
  321. package/dist/adapter/sheets/providers/apps-script-gateway/validation.js +0 -10
  322. package/dist/adapter/sheets/providers/apps-script-gateway/validation.js.map +0 -1
  323. package/dist/application/sync/gateway/SyncGatewayBootstrap.d.ts.map +0 -1
  324. package/dist/application/sync/gateway/SyncGatewayBootstrap.js +0 -95
  325. package/dist/application/sync/gateway/SyncGatewayBootstrap.js.map +0 -1
  326. package/dist/application/sync/gateway/conflictProjection.d.ts.map +0 -1
  327. package/dist/application/sync/gateway/conflictProjection.js.map +0 -1
  328. package/dist/application/sync/gateway/conflictProjectionRegistration.d.ts.map +0 -1
  329. package/dist/application/sync/gateway/conflictProjectionRegistration.js.map +0 -1
  330. package/dist/application/sync/gateway/constants.d.ts +0 -66
  331. package/dist/application/sync/gateway/constants.d.ts.map +0 -1
  332. package/dist/application/sync/gateway/constants.js.map +0 -1
  333. package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.d.ts.map +0 -1
  334. package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.js.map +0 -1
  335. package/dist/application/sync/gateway/coordinator/asyncMutex.d.ts.map +0 -1
  336. package/dist/application/sync/gateway/coordinator/asyncMutex.js.map +0 -1
  337. package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.d.ts.map +0 -1
  338. package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.js.map +0 -1
  339. package/dist/application/sync/gateway/errors.d.ts +0 -15
  340. package/dist/application/sync/gateway/errors.d.ts.map +0 -1
  341. package/dist/application/sync/gateway/errors.js +0 -16
  342. package/dist/application/sync/gateway/errors.js.map +0 -1
  343. package/dist/application/sync/gateway/syncGateway.d.ts.map +0 -1
  344. package/dist/application/sync/gateway/syncGateway.js +0 -191
  345. package/dist/application/sync/gateway/syncGateway.js.map +0 -1
  346. package/dist/application/sync/gateway/transportClassification.d.ts.map +0 -1
  347. package/dist/application/sync/gateway/transportClassification.js +0 -133
  348. package/dist/application/sync/gateway/transportClassification.js.map +0 -1
  349. package/dist/application/sync/gateway/validation.d.ts +0 -22
  350. package/dist/application/sync/gateway/validation.d.ts.map +0 -1
  351. package/dist/application/sync/gateway/validation.js +0 -79
  352. package/dist/application/sync/gateway/validation.js.map +0 -1
  353. /package/dist/application/sync/{gateway → sheets}/conflictProjection.d.ts +0 -0
  354. /package/dist/application/sync/{gateway → sheets}/conflictProjection.js +0 -0
  355. /package/dist/application/sync/{gateway/coordinator → sheets/mutationCoordinator}/asyncMutex.js +0 -0
package/README.ja.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  <a href="https://www.npmjs.com/package/hikoutei">npm パッケージ</a> ·
10
10
  <a href="https://github.com/ManddarinShop/Hikoutei/issues">Issues</a> ·
11
- <a href="apps-script/gateway/Code.gs">Apps Script Gateway</a>
11
+ <a href="docs/quick-start.md">クイックスタート</a>
12
12
 
13
13
  [![npm version](https://img.shields.io/npm/v/hikoutei?style=flat-square)](https://www.npmjs.com/package/hikoutei)
14
14
  [![license](https://img.shields.io/npm/l/hikoutei?style=flat-square)](LICENSE)
@@ -18,8 +18,9 @@
18
18
 
19
19
  Hikoutei は、TypeScript と Node.js のアプリケーションで Google Sheets を
20
20
  MVP や社内ワークフローの人間向けの画面として利用できるようにします。
21
- アプリケーションは型付きエンティティとローカル SQLite を使い、付属の
22
- Apps Script Gateway を通して変更を Google Sheets へ非同期に届けられます。
21
+ アプリケーションは型付きエンティティとローカル SQLite を使い、サービス
22
+ アカウントの Google Sheets provider を通して変更を Google Sheets へ非同期に
23
+ 届けられます。
23
24
 
24
25
  Hikoutei の対象は意図的に限定されています。汎用データベースの代替、
25
26
  Prisma/JPA のクローン、汎用 Google Sheets API ラッパーを目的としていません。
@@ -47,7 +48,7 @@ SQLite provider が内部で利用しますが、ルート public API に MikroO
47
48
  ## クイックスタート
48
49
 
49
50
  エンティティ定義と SQLite の lifecycle はルート API だけを使います。Sheet route、
50
- gateway credential、provisioning、polling は内部 service bootstrap の責務です。
51
+ provider credential、provisioning、polling は内部 service bootstrap の責務です。
51
52
 
52
53
  ```ts
53
54
  import { createTypedSheets, defineTypedSheetsEntity } from "hikoutei";
@@ -102,21 +103,43 @@ Sheet への配信は非同期に行います。
102
103
 
103
104
  ## Google Sheets の設定
104
105
 
105
- 1. [`apps-script/gateway/Code.gs`](apps-script/gateway/Code.gs) を対象の
106
- Spreadsheet にバインドした Apps Script プロジェクトへコピーし、Web App として
107
- デプロイします。その後 `/exec` URL を入力して `setupSyncGateway()` を実行します。
108
- 2. `TYPED_SHEETS_GATEWAY_URL`、`TYPED_SHEETS_GATEWAY_SHARED_SECRET`、
109
- `TYPED_SHEETS_GATEWAY_SHEET_ID` を、追跡対象外のサーバー環境ファイルまたは
110
- secret store に保管します。shared secret をブラウザコードや Git に入れないでください。
111
- 3. 内部 sync bootstrap を開始すると private route/ownership configuration を検証し、
112
- タブとヘッダーを provision した後、outbox 配信と User_Input polling を実行します。
113
- アプリケーションは gateway API を直接呼び出しません。
114
-
115
- 外部サーバーからアクセスするには、Web App のアクセス範囲でサーバーを許可する必要が
116
- あり、通常は **Anyone** が必要です。エディタ専用の `/dev` ではなく、デプロイ用の
117
- `/exec` URL を使用してください。`Code.gs` を変更した場合は、Web App deployment を
118
- 新しいバージョンに更新してから利用します。詳しい設定とトラブルシューティングは
119
- [クイックスタート](docs/quick-start.md)を参照してください。
106
+ Google Sheets の同期は service-side の責務です。推奨経路はサービスアカウントの
107
+ `googleSheetsApi` provider で、ひとつのサービスアカウントがタブの provisioning、
108
+ outbound effect の書き込み(高速 append、guarded update/delete、レシート、
109
+ 応答喪失の復旧)、テーブル読み取り、行アンカー、ユーザー編集の観察をすべて
110
+ 行います。アプリケーションは provider クライアントを import したり、Sheet route
111
+ `createTypedSheets()` に渡したりしません。
112
+
113
+ 1. `https://www.googleapis.com/auth/spreadsheets` スコープを持つ Google Cloud
114
+ サービスアカウントを作成し、対象スプレッドシートをそのメールアドレスに
115
+ **編集者**として共有します。provider がタブ作成、effect 行とレシート記録、
116
+ 行アンカー管理を行うため、閲覧者権限では不十分です。Cloud プロジェクトで
117
+ Google Sheets API を有効化します。
118
+ 2. サービスアカウントキーのファイルパスをサーバーの
119
+ `GOOGLE_APPLICATION_CREDENTIALS` に置き、スプレッドシート ID はコミットされない
120
+ シークレットストアに保管します。キーをブラウザコードや Git に入れないでください。
121
+ 3. `googleSheetsApi` で内部 sync bootstrap を起動します。登録タブのヘッダーを
122
+ 作成・検証した後、outbox 配信と User_Input polling を開始します。
123
+
124
+ シートの整合性はリクエスト間の Sheet トランザクションから生まれるのではなく、
125
+ 隠された effect-receipt タブ、effect-id/payload-hash の重複排除、SQLite の
126
+ durable outbox、フェンシング、フィールド単位の compare-and-set 証拠、
127
+ postcondition 復旧から生まれます。provider は資格情報・スプレッドシート ID・
128
+ URL・payload をログに残さず、要求開始間隔をクラスごと(読み取り/書き込み)
129
+ 1,100ms に調整して Google の quota window を守ります。`flush()` はローカル
130
+ コミットのみを意味し、配信は非同期で、すべての書き込みはレシートで記録され、
131
+ 同じ effect worker が復旧します。
132
+
133
+ 追跡される live シナリオはこの provider で実行されます。
134
+ [docs/sync-bulk-write-benchmark.md](docs/sync-bulk-write-benchmark.md) の
135
+ 10,000 行 append と update/delete の live 証拠も同じ REST 経路です。
136
+ `scripts/bench/` の生トランスポート実験はレシート/CAS のない unguarded 経路
137
+ なので、worker 経由の測定までは性能値を検証済みと見なさないでください。live
138
+ 呼び出しは opt-in で、通常の検証は fake provider と SQLite fixture を使います。
139
+
140
+ 従来の Apps Script Gateway と `appsScript`/`googleApiWorker` オプションは削除され、
141
+ 上記のサービスアカウント provider が唯一の同期経路です。詳しい設定と
142
+ トラブルシューティングは [クイックスタート](docs/quick-start.md) を参照してください。
120
143
 
121
144
  ## ドキュメント
122
145
 
@@ -128,7 +151,7 @@ Sheet への配信は非同期に行います。
128
151
 
129
152
  ## 制限事項
130
153
 
131
- - Google Sheets にはクォータ、レイテンシー、Apps Script の実行時間制限があります。
154
+ - Google Sheets にはクォータ、レイテンシー、API のレート制限があります。
132
155
  - Sheet の更新は非同期なので、アプリケーションはローカル状態を読み取るべきです。
133
156
  - SQLite はサービスにローカルなもので、分散調整レイヤーではありません。
134
157
  - スキーマ変更、手動編集、競合する変更に対する運用方針は、アプリケーション側で
@@ -138,7 +161,7 @@ Sheet への配信は非同期に行います。
138
161
 
139
162
  - Google Sheets から意図的なユーザー編集を取り込む機能を完成させる。
140
163
  - update/delete の競合処理と表示を改善する。
141
- - レジストリと Apps Script デプロイ用のセットアップツールを追加する。
164
+ - レジストリと直接 provider デプロイ用のセットアップツールを追加する。
142
165
  - 公開パッケージのリリースを安定化する。
143
166
 
144
167
  現在の作業については [open issues](https://github.com/ManddarinShop/Hikoutei/issues)
package/README.ko.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  <a href="https://www.npmjs.com/package/hikoutei">npm 패키지</a> ·
10
10
  <a href="https://github.com/ManddarinShop/Hikoutei/issues">이슈</a> ·
11
- <a href="apps-script/gateway/Code.gs">Apps Script Gateway</a>
11
+ <a href="docs/quick-start.md">빠른 시작</a>
12
12
 
13
13
  [![npm version](https://img.shields.io/npm/v/hikoutei?style=flat-square)](https://www.npmjs.com/package/hikoutei)
14
14
  [![license](https://img.shields.io/npm/l/hikoutei?style=flat-square)](LICENSE)
@@ -18,8 +18,9 @@
18
18
 
19
19
  Hikoutei는 TypeScript와 Node.js 애플리케이션에서 Google Sheets를 MVP 또는
20
20
  내부 업무 흐름의 사람이 읽기 쉬운 화면으로 사용할 수 있게 합니다. 애플리케이션은
21
- 타입이 지정된 엔티티와 로컬 SQLite를 사용하고, 포함된 Apps Script Gateway를
22
- 통해 변경 내용을 Google Sheets에 비동기적으로 전달할 수 있습니다.
21
+ 타입이 지정된 엔티티와 로컬 SQLite를 사용하고, 서비스 계정 기반 Google
22
+ Sheets provider를 통해 변경 내용을 Google Sheets에 비동기적으로 전달할 수
23
+ 있습니다.
23
24
 
24
25
  Hikoutei의 범위는 의도적으로 작습니다. 범용 데이터베이스 대체재, Prisma/JPA
25
26
  클론, 범용 Google Sheets API 래퍼를 목표로 하지 않습니다.
@@ -47,7 +48,7 @@ SQLite provider가 내부적으로 사용하지만 루트 public API에는 Mikro
47
48
  ## 빠른 시작
48
49
 
49
50
  엔티티 정의와 SQLite lifecycle은 루트 API만 사용합니다. Sheet route,
50
- gateway credential, provisioning, polling은 내부 service bootstrap의 책임입니다.
51
+ provider credential, provisioning, polling은 내부 service bootstrap의 책임입니다.
51
52
 
52
53
  ```ts
53
54
  import { createTypedSheets, defineTypedSheetsEntity } from "hikoutei";
@@ -104,23 +105,42 @@ outbound worker와 User_Input polling을 시작합니다. service mode에서
104
105
 
105
106
  ## Google Sheets 설정
106
107
 
107
- 1. [`apps-script/gateway/Code.gs`](apps-script/gateway/Code.gs)를 대상
108
- Spreadsheet에 bound된 Apps Script 프로젝트에 복사하고 Web App으로
109
- 배포한 `/exec` URL을 입력하고 `setupSyncGateway()`를 실행합니다.
110
- 2. `TYPED_SHEETS_GATEWAY_URL`, `TYPED_SHEETS_GATEWAY_SHARED_SECRET`,
111
- `TYPED_SHEETS_GATEWAY_SHEET_ID`를 추적하지 않는 서버 환경 파일이나
112
- secret store에 보관합니다. shared secret은 브라우저 코드나 Git에 넣지
113
- 마세요.
114
- 3. 내부 sync bootstrap을 시작하면 private route/ownership configuration을
115
- 검증하고 탭과 헤더를 provisioning한 outbox delivery와 User_Input
116
- polling을 실행합니다. 애플리케이션 코드는 gateway API를 호출하지
117
- 않습니다.
118
-
119
- 외부 서버에서 접근하려면 Web App의 액세스 범위가 서버를 허용해야 하며,
120
- 일반적으로 **Anyone** 설정이 필요합니다. 편집기 전용 `/dev`가 아니라 배포용
121
- `/exec` URL을 사용하세요. `Code.gs`를 변경하면 Web App deployment를 새
122
- 버전으로 갱신해야 합니다. 상세한 설정과 문제 해결 방법은
123
- [빠른 시작](docs/quick-start.md)에 설명되어 있습니다.
108
+ Google Sheets 동기화는 service-side의 책임입니다. 권장 경로는 서비스 계정
109
+ 기반 `googleSheetsApi` provider로, 하나의 서비스 계정으로 provisioning,
110
+ outbound effect 쓰기(빠른 append, guarded update/delete, receipt, 응답 유실
111
+ 복구), 테이블 읽기, 행 anchor, 사용자 편집 관찰을 모두 수행합니다.
112
+ 애플리케이션은 provider client를 import하거나 Sheet route를
113
+ `createTypedSheets()`에 넘기지 않습니다.
114
+
115
+ 1. `https://www.googleapis.com/auth/spreadsheets` scope를 가진 Google Cloud
116
+ 서비스 계정을 만들고, 대상 스프레드시트를 이메일로 **Editor** 권한으로
117
+ 공유합니다. provider가 생성, effect 행과 receipt 기록, 행 anchor 관리를
118
+ 하므로 Viewer 권한으로는 부족합니다. Cloud 프로젝트에서 Google Sheets API를
119
+ 활성화합니다.
120
+ 2. 서비스 계정 파일 경로를 서버의 `GOOGLE_APPLICATION_CREDENTIALS`에 두고,
121
+ 스프레드시트 ID는 커밋되지 않는 시크릿 저장소에 보관합니다. 키를 브라우저
122
+ 코드나 Git에 넣지 마세요.
123
+ 3. `googleSheetsApi`로 내부 sync bootstrap을 시작합니다. 등록된 탭의 헤더를
124
+ 생성/검증한 outbox 전달과 User_Input polling을 시작합니다.
125
+
126
+ 시트 일관성은 요청 간 Sheet 트랜잭션에서 오지 않습니다. 숨겨진
127
+ effect-receipt 탭, effect-id/payload-hash 중복 제거, SQLite durable outbox,
128
+ fencing, 필드 단위 compare-and-set 증거, postcondition 복구에서 옵니다.
129
+ provider는 자격 증명, 스프레드시트 ID, URL, payload를 로그에 남기지 않으며,
130
+ 요청 시작 간격을 클래스별(읽기/쓰기) 1,100ms로 조절해 Google quota window를
131
+ 지킵니다. `flush()`는 로컬 커밋만 의미하고 전달은 비동기이며, 모든 쓰기는
132
+ receipt로 기록되고 같은 effect worker가 복구합니다.
133
+
134
+ 추적되는 live 시나리오는 이 provider로 실행됩니다.
135
+ [docs/sync-bulk-write-benchmark.md](docs/sync-bulk-write-benchmark.md)의
136
+ 10,000행 append와 update/delete live 증거도 같은 REST 경로를 사용합니다.
137
+ `scripts/bench/`의 원시 전송 실험은 receipt/CAS 없는 unguarded 경로이므로,
138
+ worker를 통한 측정 전에는 성능 수치를 검증된 것으로 보지 마세요. live 호출은
139
+ opt-in이며, 일반 검증은 fake provider와 SQLite fixture를 사용합니다.
140
+
141
+ 기존 Apps Script Gateway와 `appsScript`/`googleApiWorker` 옵션은 제거되어
142
+ 위 서비스 계정 provider가 유일한 동기화 경로입니다. 상세한 설정과 문제 해결
143
+ 방법은 [빠른 시작](docs/quick-start.md)에 설명되어 있습니다.
124
144
 
125
145
  ## 문서
126
146
 
@@ -134,7 +154,7 @@ outbound worker와 User_Input polling을 시작합니다. service mode에서
134
154
 
135
155
  ## 제한사항
136
156
 
137
- - Google Sheets에는 quota, 지연 시간, Apps Script 실행 시간 제한이 있습니다.
157
+ - Google Sheets에는 quota, 지연 시간, API rate limit이 있습니다.
138
158
  - Sheet 업데이트는 비동기이므로 애플리케이션은 로컬 상태를 읽어야 합니다.
139
159
  - SQLite는 서비스에 로컬이며 분산 조정 계층이 아닙니다.
140
160
  - 스키마 변경, 수동 편집, 충돌하는 변경에 대한 운영 정책은 애플리케이션이
@@ -144,7 +164,7 @@ outbound worker와 User_Input polling을 시작합니다. service mode에서
144
164
 
145
165
  - Google Sheets에서 의도적인 사용자 편집을 수집하는 기능 완성.
146
166
  - update/delete 충돌 처리와 표시 개선.
147
- - 레지스트리 및 Apps Script 배포를 위한 설정 도구 추가.
167
+ - 레지스트리 및 직접 provider 배포를 위한 설정 도구 추가.
148
168
  - 공개 패키지 릴리스 안정화.
149
169
 
150
170
  현재 작업은 [open issues](https://github.com/ManddarinShop/Hikoutei/issues)
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  <a href="https://www.npmjs.com/package/hikoutei">npm package</a> ·
10
10
  <a href="https://github.com/ManddarinShop/Hikoutei/issues">Issues</a> ·
11
- <a href="apps-script/gateway/Code.gs">Apps Script gateway</a>
11
+ <a href="docs/quick-start.md">Quick start</a>
12
12
 
13
13
  [![npm version](https://img.shields.io/npm/v/hikoutei?style=flat-square)](https://www.npmjs.com/package/hikoutei)
14
14
  [![license](https://img.shields.io/npm/l/hikoutei?style=flat-square)](LICENSE)
@@ -19,7 +19,7 @@
19
19
  Hikoutei helps TypeScript and Node.js applications use Google Sheets as a
20
20
  human-friendly part of an MVP or internal workflow. Your application works
21
21
  with typed entities and local SQLite; changes can be delivered to Google
22
- Sheets asynchronously through the included Apps Script gateway.
22
+ Sheets asynchronously through a service-account Google Sheets provider.
23
23
 
24
24
  Hikoutei is intentionally focused. It is not a general-purpose database
25
25
  replacement, a Prisma/JPA clone, or a general Google Sheets API wrapper.
@@ -51,7 +51,7 @@ without changing the entity lifecycle API.
51
51
  ## Quick start
52
52
 
53
53
  Define a scalar entity and use the local SQLite authority through a
54
- request-local manager. Sheet routes, gateway credentials, provisioning, and
54
+ request-local manager. Sheet routes, provider credentials, provisioning, and
55
55
  polling belong to the internal service bootstrap rather than the application
56
56
  API.
57
57
 
@@ -111,36 +111,52 @@ Use a conventional database and direct Google APIs when you need:
111
111
  ## Google Sheets setup
112
112
 
113
113
  Google Sheets synchronization is a service-side concern. Applications do not
114
- import a gateway client, pass Sheet routes to `createTypedSheets()`, call
114
+ import a provider client, pass Sheet routes to `createTypedSheets()`, call
115
115
  `setupSheets()`, or choose an operation for each write.
116
116
 
117
- 1. Copy [`apps-script/gateway/Code.gs`](apps-script/gateway/Code.gs) into a
118
- spreadsheet-bound Apps Script project and deploy it as a Web App. Paste the
119
- deployed `/exec` URL into the `TYPED_SHEETS_GATEWAY_URL` constant in
120
- `Code.gs` and run `setupSyncGateway()` from the editor; it stores the bound
121
- spreadsheet ID and a generated shared secret in Script Properties and logs
122
- a copyable local `.env` block.
123
- 2. Keep `TYPED_SHEETS_GATEWAY_URL`,
124
- `TYPED_SHEETS_GATEWAY_SHARED_SECRET`, and
125
- `TYPED_SHEETS_GATEWAY_SHEET_ID` in an untracked server environment or secret
126
- store. Never put the shared secret in browser code or Git.
127
- 3. Start the internal sync bootstrap. It validates the private route/ownership
128
- configuration, provisions and verifies headers, then starts outbox delivery
129
- and User_Input polling.
130
-
131
- The MVP path is a single `Code.gs` file: it requires no `appsscript.json`
132
- manifest, no Apps Script Advanced Sheets Service, no Google Cloud Sheets API
133
- activation, and no service account. Sheet consistency does not come from
134
- cross-request Sheet transactions; it comes from the Apps Script script lock,
135
- the hidden effect-receipt tab, effect-id/payload-hash dedupe, the SQLite
136
- durable outbox, fencing, and postcondition recovery.
137
-
138
- The gateway must be deployed with an access audience that can reach the
139
- service; an external server normally requires **Anyone**. Use the deployed
140
- `/exec` URL, not the editor-only `/dev` URL. When `Code.gs` changes, update the
141
- existing Web App deployment with a new version. Live Google calls are opt-in;
142
- fake gateways and SQLite fixtures are the normal verification path.
143
- The detailed setup and troubleshooting steps are in the [Quick start](docs/quick-start.md).
117
+ ### Service-account provider (googleSheetsApi)
118
+
119
+ The sync runtime uses one Google Sheets API provider (the internal
120
+ `googleSheetsApi` bootstrap option) with a service account no Apps Script
121
+ deployment. The provider provisions the registered tabs, writes outbound
122
+ effects (fast append, guarded update/delete, receipts, response-loss
123
+ recovery), reads table values, assigns row anchors, and observes human edits:
124
+
125
+ 1. Create a Google Cloud service account with the
126
+ `https://www.googleapis.com/auth/spreadsheets` scope and share the target
127
+ spreadsheet with its email as an Editor: the provider creates tabs, writes
128
+ effect rows and receipt records, and manages row anchors, so Viewer access
129
+ is not enough. Enable the Google Sheets API for the Cloud project.
130
+ 2. Keep the service-account key file path in
131
+ `GOOGLE_APPLICATION_CREDENTIALS` on the server, and the spreadsheet ID in
132
+ an untracked secret store. Never put the key in browser code or Git.
133
+ 3. Start the internal sync bootstrap with `googleSheetsApi` configured. It
134
+ creates and verifies headers on the registered tabs, then starts outbox
135
+ delivery and User_Input polling.
136
+
137
+ Sheet consistency does not come from cross-request Sheet transactions; it
138
+ comes from the hidden effect-receipt tab, effect-id/payload-hash dedupe, the
139
+ SQLite durable outbox, fencing, field-level compare-and-set evidence, and
140
+ postcondition recovery. The provider never logs credentials, spreadsheet IDs,
141
+ URLs, or payloads; it spaces request starts at 1,100 ms per class (reads and
142
+ writes separately) to stay inside Google's quota windows, and it keeps the
143
+ same SQLite-authoritative model: `flush()` commits locally, delivery is
144
+ asynchronous, and every write is receipted and recovered through the same
145
+ effect worker.
146
+
147
+ The tracked live scenario runs through this provider. The 10,000-row append
148
+ and update/delete live evidence recorded in
149
+ [docs/sync-bulk-write-benchmark.md](docs/sync-bulk-write-benchmark.md) uses
150
+ the same REST path; the raw-transport experiments under `scripts/bench/`
151
+ measure the unguarded API path (no receipts, no compare-and-set), so treat
152
+ any throughput number as unverified until it is measured through the full
153
+ worker. Live Google calls are opt-in; fake providers and SQLite fixtures are
154
+ the normal verification path.
155
+
156
+ The previous Apps Script gateway and the `appsScript`/`googleApiWorker`
157
+ options were removed; the service-account provider above is the only sync
158
+ path. The detailed setup and troubleshooting steps are in the
159
+ [Quick start](docs/quick-start.md).
144
160
 
145
161
  ## Documentation
146
162
 
@@ -155,7 +171,7 @@ The detailed setup and troubleshooting steps are in the [Quick start](docs/quick
155
171
 
156
172
  ## Limitations
157
173
 
158
- - Google Sheets has quota, latency, and Apps Script execution limits.
174
+ - Google Sheets has quota, latency, and API rate limits.
159
175
  - Sheet updates are asynchronous; the application should read its local state.
160
176
  - SQLite is local to the service and is not a distributed coordination layer.
161
177
  - Schema changes, manual edits, and conflicting updates still need an
@@ -165,7 +181,7 @@ The detailed setup and troubleshooting steps are in the [Quick start](docs/quick
165
181
 
166
182
  - Complete ingestion of intentional user edits from Google Sheets.
167
183
  - Improve update/delete conflict handling and presentation.
168
- - Add setup tooling for registry and Apps Script deployment.
184
+ - Add setup tooling for registry and direct provider deployment.
169
185
  - Stabilize the public package release.
170
186
 
171
187
  See the [open issues](https://github.com/ManddarinShop/Hikoutei/issues)
@@ -8,7 +8,7 @@
8
8
  import { type TypedSheetsEntityMapping, type TypedSheetsEntityMappingRegistry } from "../../../../../application/orm/mapping/entityMapping.js";
9
9
  import type { RegisteredTypedSheetsMappedProjection, TypedSheetsEntityWriterOptions } from "../../../../../application/orm/persistence/support/contracts.js";
10
10
  import type { TypedSheetsOrm } from "../../../../../application/orm/api/TypedSheetsOrm.js";
11
- import type { RegisteredSyncProjectionDefinition } from "../../../../../application/sync/gateway/SyncGatewayBootstrap.js";
11
+ import type { RegisteredSyncProjectionDefinition } from "../../../../../application/sync/sheets/sheetsProvisioning.js";
12
12
  import { type InitializeMikroOrmSqliteAdapterOptions, type MikroOrmSqliteAdapter } from "../storage/MikroOrmSqliteAdapter.js";
13
13
  /** Options for creating a mapped public ORM around an existing MikroORM SQLite adapter. */
14
14
  export interface CreateMappedTypedSheetsOrmOptions {
@@ -21,7 +21,7 @@ export interface InitializeMappedTypedSheetsOrmOptions extends InitializeMikroOr
21
21
  * Optional internal hook invoked after local registry writes succeed.
22
22
  *
23
23
  * The hook receives the exact generated projection definitions so the sync
24
- * service can provision a remote gateway without duplicating route metadata.
24
+ * service can provision a remote provider without duplicating route metadata.
25
25
  */
26
26
  readonly onRegisteredProjections?: (definitions: readonly RegisteredSyncProjectionDefinition[]) => Promise<void>;
27
27
  }
@@ -41,7 +41,7 @@ export declare function createMappedTypedSheetsOrm(storage: MikroOrmSqliteAdapte
41
41
  * Opens a dedicated MikroORM SQLite runtime ready for mapped entity lifecycle work.
42
42
  *
43
43
  * Startup performs non-destructive entity/schema migration and idempotent local
44
- * projection registration. Remote Apps Script provisioning remains explicit so
44
+ * projection registration. Remote provider-side provisioning remains explicit so
45
45
  * a process cannot mutate a spreadsheet merely by opening its local database.
46
46
  */
47
47
  export declare function initializeMappedTypedSheetsRuntime(options: InitializeMappedTypedSheetsOrmOptions): Promise<InitializedMappedTypedSheetsRuntime>;
@@ -1 +1 @@
1
- {"version":3,"file":"MikroOrmMappedTypedSheets.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,gCAAgC,EACtC,MAAM,yDAAyD,CAAC;AACjE,OAAO,KAAK,EACV,qCAAqC,EACrC,8BAA8B,EAC/B,MAAM,iEAAiE,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,iEAAiE,CAAC;AAI1H,OAAO,EAEL,KAAK,sCAAsC,EAC3C,KAAK,qBAAqB,EAC3B,MAAM,qCAAqC,CAAC;AAG7C,2FAA2F;AAC3F,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,QAAQ,EAAE,gCAAgC,GAAG,SAAS,wBAAwB,EAAE,CAAC;IAC1F,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;CACjD;AAED,2FAA2F;AAC3F,MAAM,WAAW,qCACf,SAAQ,sCAAsC,EAAE,iCAAiC;IACjF;;;;;OAKG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CACjC,WAAW,EAAE,SAAS,kCAAkC,EAAE,KACvD,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAED,kFAAkF;AAClF,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,gCAAgC,CAAC;IACpD,QAAQ,CAAC,aAAa,EAAE,SAAS,qCAAqC,EAAE,CAAC;CAC1E;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,iCAAiC,GACzC,cAAc,CAQhB;AAED;;;;;;GAMG;AACH,wBAAsB,kCAAkC,CACtD,OAAO,EAAE,qCAAqC,GAC7C,OAAO,CAAC,mCAAmC,CAAC,CAyB9C;AAED,mFAAmF;AACnF,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,qCAAqC,GAC7C,OAAO,CAAC,cAAc,CAAC,CAGzB"}
1
+ {"version":3,"file":"MikroOrmMappedTypedSheets.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,gCAAgC,EACtC,MAAM,yDAAyD,CAAC;AACjE,OAAO,KAAK,EACV,qCAAqC,EACrC,8BAA8B,EAC/B,MAAM,iEAAiE,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,8DAA8D,CAAC;AAIvH,OAAO,EAEL,KAAK,sCAAsC,EAC3C,KAAK,qBAAqB,EAC3B,MAAM,qCAAqC,CAAC;AAG7C,2FAA2F;AAC3F,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,QAAQ,EAAE,gCAAgC,GAAG,SAAS,wBAAwB,EAAE,CAAC;IAC1F,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;CACjD;AAED,2FAA2F;AAC3F,MAAM,WAAW,qCACf,SAAQ,sCAAsC,EAAE,iCAAiC;IACjF;;;;;OAKG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CACjC,WAAW,EAAE,SAAS,kCAAkC,EAAE,KACvD,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAED,kFAAkF;AAClF,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,gCAAgC,CAAC;IACpD,QAAQ,CAAC,aAAa,EAAE,SAAS,qCAAqC,EAAE,CAAC;CAC1E;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,iCAAiC,GACzC,cAAc,CAQhB;AAED;;;;;;GAMG;AACH,wBAAsB,kCAAkC,CACtD,OAAO,EAAE,qCAAqC,GAC7C,OAAO,CAAC,mCAAmC,CAAC,CAyB9C;AAED,mFAAmF;AACnF,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,qCAAqC,GAC7C,OAAO,CAAC,cAAc,CAAC,CAGzB"}
@@ -27,7 +27,7 @@ export function createMappedTypedSheetsOrm(storage, options) {
27
27
  * Opens a dedicated MikroORM SQLite runtime ready for mapped entity lifecycle work.
28
28
  *
29
29
  * Startup performs non-destructive entity/schema migration and idempotent local
30
- * projection registration. Remote Apps Script provisioning remains explicit so
30
+ * projection registration. Remote provider-side provisioning remains explicit so
31
31
  * a process cannot mutate a spreadsheet merely by opening its local database.
32
32
  */
33
33
  export async function initializeMappedTypedSheetsRuntime(options) {
@@ -2,7 +2,7 @@
2
2
  * Materializes scalar entity schemas and provider bindings without sync code.
3
3
  *
4
4
  * The root ORM factory imports this module only. Projection mapping, canonical
5
- * state, and gateway code remain behind the internal sync-service path.
5
+ * state, and provider code remain behind the internal sync-service path.
6
6
  */
7
7
  import type { HikouteiEntity } from "../../../../../api/entity.js";
8
8
  import type { MikroOrmSqliteEntity } from "../storage/MikroOrmSqliteAdapter.js";
@@ -2,7 +2,7 @@
2
2
  * Materializes scalar entity schemas and provider bindings without sync code.
3
3
  *
4
4
  * The root ORM factory imports this module only. Projection mapping, canonical
5
- * state, and gateway code remain behind the internal sync-service path.
5
+ * state, and provider code remain behind the internal sync-service path.
6
6
  */
7
7
  import { defineEntity, p } from "@mikro-orm/sql";
8
8
  import { getEntityDescriptor } from "../../../../../api/entity.js";
@@ -12,7 +12,7 @@ import { TYPED_SHEETS_ORM_ERROR_CODES, TypedSheetsOrmError, } from "../../../../
12
12
  import { createMikroOrmScalarEntityRuntime, } from "./MikroOrmScalarEntityRuntime.js";
13
13
  import { FIELD_OWNERSHIPS } from "../../../../../domain/model/constants.js";
14
14
  import { NORMALIZED_CELL_KINDS, } from "../../../../../shared/encoding/constants.js";
15
- import { SYNC_GATEWAY_PROJECTIONS } from "../../../../../application/sync/gateway/constants.js";
15
+ import { SYNC_PROJECTIONS } from "../../../../../application/sync/sheets/constants.js";
16
16
  /**
17
17
  * Adds internal projection mappings to the provider materialization.
18
18
  *
@@ -51,14 +51,14 @@ function createMapping(descriptor, reference, entityConfig, spreadsheetId) {
51
51
  spreadsheetId,
52
52
  tabName: entityConfig.systemState.tabName,
53
53
  registeredRange: entityConfig.systemState.registeredRange,
54
- projection: SYNC_GATEWAY_PROJECTIONS.SYSTEM_STATE,
54
+ projection: SYNC_PROJECTIONS.SYSTEM_STATE,
55
55
  },
56
56
  ...(entityConfig.userInput === undefined ? [] : [{
57
57
  physicalSheetId: `${logicalSheetId}:user_input`,
58
58
  spreadsheetId,
59
59
  tabName: entityConfig.userInput.tabName,
60
60
  registeredRange: entityConfig.userInput.registeredRange,
61
- projection: SYNC_GATEWAY_PROJECTIONS.USER_INPUT,
61
+ projection: SYNC_PROJECTIONS.USER_INPUT,
62
62
  }]),
63
63
  ];
64
64
  return defineTypedSheetsEntityMapping({
@@ -1 +1 @@
1
- {"version":3,"file":"MikroOrmScalarRuntime.js","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MikroOrmScalarRuntime.js","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,12 @@
2
2
  * Polls User_Input projections and applies accepted edits to the local entity
3
3
  * table through the observation writer.
4
4
  *
5
- * The gateway is treated as an untrusted observation source: only rows with a
5
+ * The provider is treated as an untrusted observation source: only rows with a
6
6
  * known SQLite business key and literal/blank cells are promoted. Canonical
7
7
  * state, field revisions, conflict candidates, and the System_State outbox
8
8
  * remain the durable source of truth.
9
9
  */
10
- import type { SyncSheetObservationGateway } from "../../../../../application/sync/gateway/syncGateway.js";
10
+ import type { SyncSheetsObservationProvider } from "../../../../../application/sync/sheets/syncSheets.js";
11
11
  import { type SyncTimingSink } from "../../../../../application/sync/telemetry/syncTiming.js";
12
12
  import type { TypedSheetsEntityMapping, TypedSheetsEntityMappingRegistry } from "../../../../../application/orm/mapping/entityMapping.js";
13
13
  import type { TypedSheetsEntityWriterOptions } from "../../../../../application/orm/persistence/support/contracts.js";
@@ -67,7 +67,7 @@ export interface MappedUserInputPollingReport {
67
67
  /** Options for the provider-specific first inbound worker slice. */
68
68
  export interface PollMappedUserInputWithMikroOrmOptions {
69
69
  readonly storage: MikroOrmSqliteAdapter;
70
- readonly gateway: SyncSheetObservationGateway;
70
+ readonly provider: SyncSheetsObservationProvider;
71
71
  readonly mappings: TypedSheetsEntityMappingRegistry | readonly TypedSheetsEntityMapping[];
72
72
  readonly writer: TypedSheetsEntityWriterOptions;
73
73
  readonly physicalSheetIds?: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"MikroOrmUserInputPolling.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MikroOrmUserInputPolling.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,14 @@
2
2
  * Polls User_Input projections and applies accepted edits to the local entity
3
3
  * table through the observation writer.
4
4
  *
5
- * The gateway is treated as an untrusted observation source: only rows with a
5
+ * The provider is treated as an untrusted observation source: only rows with a
6
6
  * known SQLite business key and literal/blank cells are promoted. Canonical
7
7
  * state, field revisions, conflict candidates, and the System_State outbox
8
8
  * remain the durable source of truth.
9
9
  */
10
10
  import { emptySyncTimingOperationCounts, SYNC_TIMING_SCOPES, } from "../../../../../application/sync/telemetry/syncTiming.js";
11
- import { isSyncSheetTableReaderGateway, observeSyncSnapshots, } from "../../../../../application/sync/gateway/syncGateway.js";
12
- import { SYNC_GATEWAY_PROJECTIONS, SYNC_GATEWAY_SNAPSHOT_READ_MODES, } from "../../../../../application/sync/gateway/constants.js";
11
+ import { isSyncSheetsTableReader, observeSyncSnapshots, } from "../../../../../application/sync/sheets/syncSheets.js";
12
+ import { SYNC_PROJECTIONS, SYNC_SNAPSHOT_READ_MODES, } from "../../../../../application/sync/sheets/constants.js";
13
13
  import { createTypedSheetsEntityMappingRegistry, requireTypedSheetsEntityProjection, typedSheetsEntityProjectionHeaders, } from "../../../../../application/orm/mapping/entityMapping.js";
14
14
  import { resolveTypedSheetsEntityWriterOptions } from "../../../../../application/orm/persistence/flush/flushCoordinator.js";
15
15
  import { claimWriterLeaseWithAdapter, WRITER_LEASE_CLAIM_RESULT_KINDS, } from "../../../../../infrastructure/storage/index.js";
@@ -82,10 +82,10 @@ export async function pollMappedUserInputWithMikroOrm(options) {
82
82
  const accumulators = mappings.map((mapping) => createAccumulator(mapping));
83
83
  const canUseAdaptivePath = requestedMode === MAPPED_USER_INPUT_POLL_MODES.ADAPTIVE &&
84
84
  options.forceFull !== true &&
85
- isSyncSheetTableReaderGateway(options.gateway);
85
+ isSyncSheetsTableReader(options.provider);
86
86
  if (canUseAdaptivePath) {
87
87
  const valuesReadStartedAt = Date.now();
88
- const fastResults = await options.gateway.readRowsBatch(mappings.map(toTableRowsRequest));
88
+ const fastResults = await options.provider.readRowsBatch(mappings.map(toTableRowsRequest));
89
89
  emitPollingTiming(timingSink, POLLING_TIMING_PHASES.VALUES_ONLY_READ, Date.now() - valuesReadStartedAt);
90
90
  assertTableReadCount(fastResults, mappings.length);
91
91
  const fullMappings = [];
@@ -125,7 +125,7 @@ export async function pollMappedUserInputWithMikroOrm(options) {
125
125
  return report;
126
126
  }
127
127
  const observationStartedAt = Date.now();
128
- const observed = await observeSyncSnapshots(options.gateway, fullMappings.map(toSnapshotRequest));
128
+ const observed = await observeSyncSnapshots(options.provider, fullMappings.map(toSnapshotRequest));
129
129
  emitPollingTiming(timingSink, POLLING_TIMING_PHASES.FULL_METADATA_OBSERVATION, Date.now() - observationStartedAt);
130
130
  assertObservationCount(observed, fullMappings.length);
131
131
  const prepared = prepareObservedRows(fullMappings, observed, state, fullAccumulators);
@@ -145,7 +145,7 @@ export async function pollMappedUserInputWithMikroOrm(options) {
145
145
  return report;
146
146
  }
147
147
  const observationStartedAt = Date.now();
148
- const observed = await observeSyncSnapshots(options.gateway, mappings.map(toSnapshotRequest));
148
+ const observed = await observeSyncSnapshots(options.provider, mappings.map(toSnapshotRequest));
149
149
  emitPollingTiming(timingSink, POLLING_TIMING_PHASES.FULL_METADATA_OBSERVATION, Date.now() - observationStartedAt);
150
150
  assertObservationCount(observed, mappings.length);
151
151
  const prepared = prepareObservedRows(mappings, observed, state, accumulators);
@@ -265,14 +265,14 @@ function createPollingReport(startedAt, accumulators, metrics) {
265
265
  };
266
266
  }
267
267
  function toTableRowsRequest(mapping) {
268
- const projection = requireTypedSheetsEntityProjection(mapping, SYNC_GATEWAY_PROJECTIONS.USER_INPUT);
268
+ const projection = requireTypedSheetsEntityProjection(mapping, SYNC_PROJECTIONS.USER_INPUT);
269
269
  return {
270
270
  physicalSheetId: projection.physicalSheetId,
271
271
  sheetName: projection.tabName,
272
272
  registeredRange: projection.registeredRange,
273
- projection: SYNC_GATEWAY_PROJECTIONS.USER_INPUT,
273
+ projection: SYNC_PROJECTIONS.USER_INPUT,
274
274
  schemaVersion: mapping.schemaVersion,
275
- headers: typedSheetsEntityProjectionHeaders(mapping, SYNC_GATEWAY_PROJECTIONS.USER_INPUT),
275
+ headers: typedSheetsEntityProjectionHeaders(mapping, SYNC_PROJECTIONS.USER_INPUT),
276
276
  };
277
277
  }
278
278
  function selectMappings(input, physicalSheetIds) {
@@ -283,21 +283,21 @@ function selectMappings(input, physicalSheetIds) {
283
283
  ? undefined
284
284
  : new Set(physicalSheetIds);
285
285
  return registry.mappings.filter((mapping) => {
286
- const projection = mapping.projections.find((candidate) => candidate.projection === SYNC_GATEWAY_PROJECTIONS.USER_INPUT);
286
+ const projection = mapping.projections.find((candidate) => candidate.projection === SYNC_PROJECTIONS.USER_INPUT);
287
287
  return projection !== undefined && (selected === undefined || selected.has(projection.physicalSheetId));
288
288
  });
289
289
  }
290
290
  function toSnapshotRequest(mapping) {
291
- const projection = requireTypedSheetsEntityProjection(mapping, SYNC_GATEWAY_PROJECTIONS.USER_INPUT);
291
+ const projection = requireTypedSheetsEntityProjection(mapping, SYNC_PROJECTIONS.USER_INPUT);
292
292
  return {
293
293
  physicalSheetId: projection.physicalSheetId,
294
294
  sheetName: projection.tabName,
295
295
  registeredRange: projection.registeredRange,
296
- projection: SYNC_GATEWAY_PROJECTIONS.USER_INPUT,
296
+ projection: SYNC_PROJECTIONS.USER_INPUT,
297
297
  schemaVersion: mapping.schemaVersion,
298
298
  // Polling must retain formula/merge/error metadata so invalid cells are
299
299
  // quarantined instead of being mistaken for literal user edits.
300
- readMode: SYNC_GATEWAY_SNAPSHOT_READ_MODES.FULL,
300
+ readMode: SYNC_SNAPSHOT_READ_MODES.FULL,
301
301
  };
302
302
  }
303
303
  async function readMappedPollingState(storage, mappings) {
@@ -324,7 +324,7 @@ function createAccumulator(mapping) {
324
324
  }
325
325
  function toSheetReport(accumulator) {
326
326
  return {
327
- physicalSheetId: requireTypedSheetsEntityProjection(accumulator.mapping, SYNC_GATEWAY_PROJECTIONS.USER_INPUT).physicalSheetId,
327
+ physicalSheetId: requireTypedSheetsEntityProjection(accumulator.mapping, SYNC_PROJECTIONS.USER_INPUT).physicalSheetId,
328
328
  logicalSheetId: accumulator.mapping.logicalSheetId,
329
329
  rowsScanned: accumulator.rowsScanned,
330
330
  changedRows: accumulator.changedRows,