hikoutei 0.8.0 → 0.8.2

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 (139) hide show
  1. package/README.md +4 -0
  2. package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts +23 -11
  3. package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts.map +1 -1
  4. package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js +26 -18
  5. package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js.map +1 -1
  6. package/dist/adapter/sheets/providers/google-sheets-api/constants.d.ts +24 -5
  7. package/dist/adapter/sheets/providers/google-sheets-api/constants.d.ts.map +1 -1
  8. package/dist/adapter/sheets/providers/google-sheets-api/constants.js +24 -5
  9. package/dist/adapter/sheets/providers/google-sheets-api/constants.js.map +1 -1
  10. package/dist/adapter/sheets/providers/google-sheets-api/errors.d.ts +8 -0
  11. package/dist/adapter/sheets/providers/google-sheets-api/errors.d.ts.map +1 -1
  12. package/dist/adapter/sheets/providers/google-sheets-api/errors.js +20 -0
  13. package/dist/adapter/sheets/providers/google-sheets-api/errors.js.map +1 -1
  14. package/dist/adapter/sheets/providers/google-sheets-api/index.d.ts +1 -1
  15. package/dist/adapter/sheets/providers/google-sheets-api/index.d.ts.map +1 -1
  16. package/dist/adapter/sheets/providers/google-sheets-api/index.js +1 -1
  17. package/dist/adapter/sheets/providers/google-sheets-api/index.js.map +1 -1
  18. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightParsing.d.ts.map +1 -1
  19. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightParsing.js +11 -29
  20. package/dist/adapter/sheets/providers/google-sheets-api/model/preflightParsing.js.map +1 -1
  21. package/dist/adapter/sheets/providers/google-sheets-api/model/rawResponseSchemas.d.ts +20 -0
  22. package/dist/adapter/sheets/providers/google-sheets-api/model/rawResponseSchemas.d.ts.map +1 -0
  23. package/dist/adapter/sheets/providers/google-sheets-api/model/rawResponseSchemas.js +26 -0
  24. package/dist/adapter/sheets/providers/google-sheets-api/model/rawResponseSchemas.js.map +1 -0
  25. package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.d.ts +11 -1
  26. package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.d.ts.map +1 -1
  27. package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.js +12 -2
  28. package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.js.map +1 -1
  29. package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.d.ts +19 -6
  30. package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.d.ts.map +1 -1
  31. package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.js +61 -14
  32. package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.js.map +1 -1
  33. package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts +13 -0
  34. package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts.map +1 -1
  35. package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js +60 -29
  36. package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js.map +1 -1
  37. package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.d.ts +40 -4
  38. package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.d.ts.map +1 -1
  39. package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.js +26 -20
  40. package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.js.map +1 -1
  41. package/dist/adapter/sheets/providers/google-sheets-api/transport/rawErrorSchemas.d.ts +7 -0
  42. package/dist/adapter/sheets/providers/google-sheets-api/transport/rawErrorSchemas.d.ts.map +1 -0
  43. package/dist/adapter/sheets/providers/google-sheets-api/transport/rawErrorSchemas.js +24 -0
  44. package/dist/adapter/sheets/providers/google-sheets-api/transport/rawErrorSchemas.js.map +1 -0
  45. package/dist/api/Hikoutei.d.ts.map +1 -1
  46. package/dist/api/Hikoutei.js +244 -30
  47. package/dist/api/Hikoutei.js.map +1 -1
  48. package/dist/api/internalEntityManager.d.ts.map +1 -1
  49. package/dist/api/internalEntityManager.js +152 -53
  50. package/dist/api/internalEntityManager.js.map +1 -1
  51. package/dist/application/sync/outbound/SheetsEffectDispatcher.d.ts +41 -0
  52. package/dist/application/sync/outbound/SheetsEffectDispatcher.d.ts.map +1 -1
  53. package/dist/application/sync/outbound/SheetsEffectDispatcher.js +85 -3
  54. package/dist/application/sync/outbound/SheetsEffectDispatcher.js.map +1 -1
  55. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -1
  56. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js +39 -5
  57. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -1
  58. package/dist/application/sync/outbound/reconciliation/diff.d.ts +19 -1
  59. package/dist/application/sync/outbound/reconciliation/diff.d.ts.map +1 -1
  60. package/dist/application/sync/outbound/reconciliation/diff.js +60 -17
  61. package/dist/application/sync/outbound/reconciliation/diff.js.map +1 -1
  62. package/dist/application/sync/outbound/reconciliation/repair.d.ts +34 -3
  63. package/dist/application/sync/outbound/reconciliation/repair.d.ts.map +1 -1
  64. package/dist/application/sync/outbound/reconciliation/repair.js +120 -47
  65. package/dist/application/sync/outbound/reconciliation/repair.js.map +1 -1
  66. package/dist/application/sync/outbound/reconciliation/shared.d.ts +20 -0
  67. package/dist/application/sync/outbound/reconciliation/shared.d.ts.map +1 -1
  68. package/dist/application/sync/outbound/reconciliation/shared.js +35 -0
  69. package/dist/application/sync/outbound/reconciliation/shared.js.map +1 -1
  70. package/dist/application/sync/service/SyncPollingSupervisor.d.ts +16 -0
  71. package/dist/application/sync/service/SyncPollingSupervisor.d.ts.map +1 -1
  72. package/dist/application/sync/service/SyncPollingSupervisor.js +24 -0
  73. package/dist/application/sync/service/SyncPollingSupervisor.js.map +1 -1
  74. package/dist/application/sync/service/SyncServiceBootstrap.d.ts.map +1 -1
  75. package/dist/application/sync/service/SyncServiceBootstrap.js +26 -1
  76. package/dist/application/sync/service/SyncServiceBootstrap.js.map +1 -1
  77. package/dist/application/sync/service/configSchemas.d.ts +10 -0
  78. package/dist/application/sync/service/configSchemas.d.ts.map +1 -0
  79. package/dist/application/sync/service/configSchemas.js +13 -0
  80. package/dist/application/sync/service/configSchemas.js.map +1 -0
  81. package/dist/application/sync/service/effectSupervisor.d.ts.map +1 -1
  82. package/dist/application/sync/service/effectSupervisor.js +114 -9
  83. package/dist/application/sync/service/effectSupervisor.js.map +1 -1
  84. package/dist/application/sync/service/pollingSupervisor.d.ts +17 -0
  85. package/dist/application/sync/service/pollingSupervisor.d.ts.map +1 -1
  86. package/dist/application/sync/service/pollingSupervisor.js +103 -3
  87. package/dist/application/sync/service/pollingSupervisor.js.map +1 -1
  88. package/dist/application/sync/service/serviceOptionSchemas.d.ts +11 -0
  89. package/dist/application/sync/service/serviceOptionSchemas.d.ts.map +1 -0
  90. package/dist/application/sync/service/serviceOptionSchemas.js +11 -0
  91. package/dist/application/sync/service/serviceOptionSchemas.js.map +1 -0
  92. package/dist/application/sync/service/serviceOptions.d.ts.map +1 -1
  93. package/dist/application/sync/service/serviceOptions.js +20 -6
  94. package/dist/application/sync/service/serviceOptions.js.map +1 -1
  95. package/dist/application/sync/service/shutdown.d.ts.map +1 -1
  96. package/dist/application/sync/service/shutdown.js +6 -2
  97. package/dist/application/sync/service/shutdown.js.map +1 -1
  98. package/dist/application/sync/service/syncAutoStart.d.ts +71 -6
  99. package/dist/application/sync/service/syncAutoStart.d.ts.map +1 -1
  100. package/dist/application/sync/service/syncAutoStart.js +175 -12
  101. package/dist/application/sync/service/syncAutoStart.js.map +1 -1
  102. package/dist/application/sync/service/systemStateReadiness.d.ts +35 -0
  103. package/dist/application/sync/service/systemStateReadiness.d.ts.map +1 -0
  104. package/dist/application/sync/service/systemStateReadiness.js +51 -0
  105. package/dist/application/sync/service/systemStateReadiness.js.map +1 -0
  106. package/dist/application/sync/sheetsContract/mutationCoordinator/CoordinatedSheetsProvider.d.ts +37 -1
  107. package/dist/application/sync/sheetsContract/mutationCoordinator/CoordinatedSheetsProvider.d.ts.map +1 -1
  108. package/dist/application/sync/sheetsContract/mutationCoordinator/CoordinatedSheetsProvider.js +57 -3
  109. package/dist/application/sync/sheetsContract/mutationCoordinator/CoordinatedSheetsProvider.js.map +1 -1
  110. package/dist/application/sync/sheetsContract/payloadSchemas.d.ts +14 -0
  111. package/dist/application/sync/sheetsContract/payloadSchemas.d.ts.map +1 -0
  112. package/dist/application/sync/sheetsContract/payloadSchemas.js +18 -0
  113. package/dist/application/sync/sheetsContract/payloadSchemas.js.map +1 -0
  114. package/dist/application/sync/sheetsContract/syncSheets.d.ts.map +1 -1
  115. package/dist/application/sync/sheetsContract/syncSheets.js +12 -31
  116. package/dist/application/sync/sheetsContract/syncSheets.js.map +1 -1
  117. package/dist/application/sync/sheetsContract/transportOutcome.d.ts +32 -5
  118. package/dist/application/sync/sheetsContract/transportOutcome.d.ts.map +1 -1
  119. package/dist/application/sync/sheetsContract/transportOutcome.js +101 -7
  120. package/dist/application/sync/sheetsContract/transportOutcome.js.map +1 -1
  121. package/dist/internal/syncStatus.js +33 -2
  122. package/dist/internal/syncStatus.js.map +1 -1
  123. package/dist/shared/observability/index.d.ts +9 -0
  124. package/dist/shared/observability/index.d.ts.map +1 -0
  125. package/dist/shared/observability/index.js +9 -0
  126. package/dist/shared/observability/index.js.map +1 -0
  127. package/dist/shared/observability/internalLog.d.ts +175 -0
  128. package/dist/shared/observability/internalLog.d.ts.map +1 -0
  129. package/dist/shared/observability/internalLog.js +471 -0
  130. package/dist/shared/observability/internalLog.js.map +1 -0
  131. package/dist/shared/observability/logEvents.d.ts +96 -0
  132. package/dist/shared/observability/logEvents.d.ts.map +1 -0
  133. package/dist/shared/observability/logEvents.js +247 -0
  134. package/dist/shared/observability/logEvents.js.map +1 -0
  135. package/dist/shared/validation/zodBoundary.d.ts +10 -0
  136. package/dist/shared/validation/zodBoundary.d.ts.map +1 -0
  137. package/dist/shared/validation/zodBoundary.js +24 -0
  138. package/dist/shared/validation/zodBoundary.js.map +1 -0
  139. package/package.json +7 -5
package/README.md CHANGED
@@ -290,6 +290,10 @@ entity API.
290
290
  durable outbox, idempotent delivery, and conflict-aware updates.
291
291
  - [Contributing](website/guide/contributing.md) — local development and test
292
292
  commands.
293
+ - [Soak testing](website/guide/soak-testing.md) — the long-duration soak
294
+ runner: source build, six scalar tables, 6h preflight and 24h direct-live
295
+ runs, log envs, redaction contract, resume/cleanup, and acceptance
296
+ criteria.
293
297
  - [Benchmark notes](website/guide/benchmarks.md) — dated measurements and
294
298
  their limitations.
295
299
 
@@ -2,7 +2,7 @@
2
2
  * Full sync provider over the Google Sheets REST API.
3
3
  *
4
4
  * Implements every provider capability the sync runtime needs with ONE
5
- * provider instance (one transport, one read limiter, one write limiter, one
5
+ * provider instance (one transport, one shared request-start limiter, one
6
6
  * telemetry sink): the outbound effect worker (fast append, applyEffects,
7
7
  * postcondition recovery), projection provisioning, values-only table reads,
8
8
  * row-anchor assignment, and full metadata snapshots. The service-account
@@ -20,8 +20,14 @@
20
20
  *
21
21
  * Request pacing is per transport call: every `getSpreadsheet` (preflight
22
22
  * enumeration, preflight data, observation reads, post-reads, table reads,
23
- * provisioning reads) and every `batchUpdate` acquires its class limiter and
24
- * emits one redacted telemetry event.
23
+ * provisioning reads) and every `batchUpdate` acquires the ONE shared
24
+ * request-start limiter and emits one redacted telemetry event. Reads and
25
+ * writes serialize against each other, so a combined read+write burst can
26
+ * never outpace the interval. Admission is BOUNDED: a request whose slot
27
+ * lies more than one interval out is refused before any SDK call with the
28
+ * stable delivery-uncertain `google_sheets_api_request_start_refused`
29
+ * error, so an arbitrarily long limiter queue can never make a request
30
+ * wait past its effect lease — the durable worker requeues instead.
25
31
  */
26
32
  import type { ApplySyncEffectsRequest, ApplySyncEffectsResult, EnsureSyncRowAnchorsRequest, EnsureSyncRowAnchorsResult, FastAppendRowsRequest, FastAppendRowsResult, ReadSyncEffectPostconditionsRequest, ReadSyncSnapshotRequest, ReadSyncTableRowsRequest, SyncEffectPostcondition, SyncEffectPostconditionResult, SyncEffectWorkerProvider, SyncObservedSnapshot, SyncSheetsObservationBatchProvider, SyncSheetsObservationProvider, SyncSheetsSnapshot, SyncSheetsTableReader, SyncProjectionEffect, SyncTableRowsResult } from "../../../../application/sync/sheetsContract/syncSheets.js";
27
33
  import type { RegisteredSyncProjectionDefinition, SyncSheetsProvisioner, SyncSheetsProvisionRoute } from "../../../../application/sync/sheetsContract/sheetsProvisioning.js";
@@ -50,7 +56,11 @@ export interface GoogleSheetsApiProviderOptions {
50
56
  * lease.
51
57
  */
52
58
  readonly readTimeoutMs?: number;
53
- /** Minimum interval between request starts per class; defaults to 1,100 ms. */
59
+ /**
60
+ * Minimum interval between request starts; defaults to 2,500 ms. Also the
61
+ * admission bound: a request whose slot lies more than one interval out is
62
+ * refused before any SDK call (delivery-uncertain, requeued durably).
63
+ */
54
64
  readonly rateLimitIntervalMs?: number;
55
65
  /** Serialized batchUpdate byte budget; defaults to ~2 MB. */
56
66
  readonly maxBatchBytes?: number;
@@ -70,11 +80,12 @@ export interface GoogleSheetsApiSyncProviderOptions extends GoogleSheetsApiProvi
70
80
  * Full sync provider over the Sheets REST API: outbound effects, provisioning,
71
81
  * table reads, anchors, and snapshots behind the shared provider contracts.
72
82
  *
73
- * All reads share one read limiter; all writes share one write limiter; the
74
- * worker-level append throttle stays enabled on top in service mode via the
75
- * bootstrap's bulk worker options. Provisioning runs at startup before the
76
- * worker, and observation anchors are the only metadata mutations outside
77
- * effect batches.
83
+ * All reads and writes share ONE request-start limiter, so combined
84
+ * read+write starts are serialized (at most one transport call per
85
+ * interval); the worker-level append throttle stays enabled on top in
86
+ * service mode via the bootstrap's bulk worker options. Provisioning runs
87
+ * at startup before the worker, and observation anchors are the only
88
+ * metadata mutations outside effect batches.
78
89
  *
79
90
  * The class is a thin facade: every method body lives in an operation module
80
91
  * under `operations/` and receives the immutable wiring from `this.deps`.
@@ -86,8 +97,9 @@ export declare class GoogleSheetsApiSyncProvider implements SyncEffectWorkerProv
86
97
  private readonly transportTimeoutMs;
87
98
  private readonly readTimeoutMs;
88
99
  private readonly maxBatchBytes;
89
- private readonly readLimiter;
90
- private readonly writeLimiter;
100
+ private readonly requestLimiter;
101
+ /** Bounded admission: at most one interval of wait per request start. */
102
+ private readonly maxRequestStartWaitMs;
91
103
  private readonly now;
92
104
  private readonly onRequest;
93
105
  private readonly deps;
@@ -1 +1 @@
1
- {"version":3,"file":"GoogleSheetsApiSyncProvider.d.ts","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GoogleSheetsApiSyncProvider.d.ts","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,mCAAmC,EACnC,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,6BAA6B,EAE7B,wBAAwB,EACxB,oBAAoB,EACpB,kCAAkC,EAClC,6BAA6B,EAC7B,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,2DAA2D,CAAC;AAKnE,OAAO,KAAK,EACV,kCAAkC,EAClC,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,mEAAmE,CAAC;AAC3E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAKlE,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,yCAAyC,CAAC;AAyBjD,oEAAoE;AACpE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,gBAAgB,GAAG,aAAa,CAAC;IACrD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACjC;AAED,8EAA8E;AAC9E,MAAM,WAAW,8BAA8B;IAC7C,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,CAAC,EAAE,wBAAwB,CAAC;IAC9C,qEAAqE;IACrE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,6DAA6D;IAC7D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,mDAAmD;IACnD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,uCAAuC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAC;CACnE;AAED,6EAA6E;AAC7E,MAAM,WAAW,kCAAmC,SAAQ,8BAA8B;IACxF,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,SAAS,kCAAkC,EAAE,CAAC;CACrE;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,2BACX,YACE,wBAAwB,EACxB,6BAA6B,EAC7B,kCAAkC,EAClC,qBAAqB,EACrB,qBAAqB;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;IAC5E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;IACrD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;IACrD,yEAAyE;IACzE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6D;IACvF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA8B;gBAEhC,OAAO,EAAE,kCAAkC;IAyE9D,+EAA+E;IAC/E,IAAW,SAAS,IAAI,MAAM,CAE7B;IAMD,wEAAwE;IAC3D,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAI1F,6EAA6E;IAChE,YAAY,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI5F,+EAA+E;IAClE,uBAAuB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIpG,uEAAuE;IAC1D,wBAAwB,CACnC,OAAO,EAAE,mCAAmC,GAC3C,OAAO,CAAC,SAAS,6BAA6B,EAAE,CAAC;IAQpD;;;;;;;;OAQG;IACU,iBAAiB,CAC5B,aAAa,EAAE,SAAS,wBAAwB,EAAE,GACjD,OAAO,CAAC;QACT,QAAQ,CAAC,aAAa,EAAE,SAAS,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC,EAAE,CAAC;QAC7E,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;QAC1C,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;KAChD,CAAC;IAQF,sEAAsE;IACzD,QAAQ,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAItF;;;;OAIG;IACU,aAAa,CACxB,QAAQ,EAAE,SAAS,wBAAwB,EAAE,GAC5C,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC;IAQ1C;;;;;OAKG;IACU,gBAAgB,CAC3B,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC;IAItC,gEAAgE;IACnD,YAAY,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIxF,0EAA0E;IAC7D,eAAe,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAI7F;;;;;OAKG;IACU,gBAAgB,CAC3B,QAAQ,EAAE,SAAS,uBAAuB,EAAE,GAC3C,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC;CAG5C"}
@@ -2,7 +2,7 @@
2
2
  * Full sync provider over the Google Sheets REST API.
3
3
  *
4
4
  * Implements every provider capability the sync runtime needs with ONE
5
- * provider instance (one transport, one read limiter, one write limiter, one
5
+ * provider instance (one transport, one shared request-start limiter, one
6
6
  * telemetry sink): the outbound effect worker (fast append, applyEffects,
7
7
  * postcondition recovery), projection provisioning, values-only table reads,
8
8
  * row-anchor assignment, and full metadata snapshots. The service-account
@@ -20,8 +20,14 @@
20
20
  *
21
21
  * Request pacing is per transport call: every `getSpreadsheet` (preflight
22
22
  * enumeration, preflight data, observation reads, post-reads, table reads,
23
- * provisioning reads) and every `batchUpdate` acquires its class limiter and
24
- * emits one redacted telemetry event.
23
+ * provisioning reads) and every `batchUpdate` acquires the ONE shared
24
+ * request-start limiter and emits one redacted telemetry event. Reads and
25
+ * writes serialize against each other, so a combined read+write burst can
26
+ * never outpace the interval. Admission is BOUNDED: a request whose slot
27
+ * lies more than one interval out is refused before any SDK call with the
28
+ * stable delivery-uncertain `google_sheets_api_request_start_refused`
29
+ * error, so an arbitrarily long limiter queue can never make a request
30
+ * wait past its effect lease — the durable worker requeues instead.
25
31
  */
26
32
  import { SYNC_SHEETS_ERROR_CODES, SyncSheetsContractError, } from "../../../../application/sync/sheetsContract/errors.js";
27
33
  import { GOOGLE_SHEETS_API_DEFAULTS, } from "./constants.js";
@@ -37,11 +43,12 @@ import { provisionRegistry, } from "./operations/provisioning.js";
37
43
  * Full sync provider over the Sheets REST API: outbound effects, provisioning,
38
44
  * table reads, anchors, and snapshots behind the shared provider contracts.
39
45
  *
40
- * All reads share one read limiter; all writes share one write limiter; the
41
- * worker-level append throttle stays enabled on top in service mode via the
42
- * bootstrap's bulk worker options. Provisioning runs at startup before the
43
- * worker, and observation anchors are the only metadata mutations outside
44
- * effect batches.
46
+ * All reads and writes share ONE request-start limiter, so combined
47
+ * read+write starts are serialized (at most one transport call per
48
+ * interval); the worker-level append throttle stays enabled on top in
49
+ * service mode via the bootstrap's bulk worker options. Provisioning runs
50
+ * at startup before the worker, and observation anchors are the only
51
+ * metadata mutations outside effect batches.
45
52
  *
46
53
  * The class is a thin facade: every method body lives in an operation module
47
54
  * under `operations/` and receives the immutable wiring from `this.deps`.
@@ -53,8 +60,9 @@ export class GoogleSheetsApiSyncProvider {
53
60
  transportTimeoutMs;
54
61
  readTimeoutMs;
55
62
  maxBatchBytes;
56
- readLimiter;
57
- writeLimiter;
63
+ requestLimiter;
64
+ /** Bounded admission: at most one interval of wait per request start. */
65
+ maxRequestStartWaitMs;
58
66
  now;
59
67
  onRequest;
60
68
  deps;
@@ -91,16 +99,16 @@ export class GoogleSheetsApiSyncProvider {
91
99
  this.readTimeoutMs = readTimeoutMs;
92
100
  this.maxBatchBytes = maxBatchBytes;
93
101
  this.now = options.now ?? Date.now;
94
- this.readLimiter = new RequestStartLimiter({
95
- intervalMs,
96
- now: this.now,
97
- ...(options.sleep === undefined ? {} : { sleep: options.sleep }),
98
- });
99
- this.writeLimiter = new RequestStartLimiter({
102
+ this.requestLimiter = new RequestStartLimiter({
100
103
  intervalMs,
101
104
  now: this.now,
102
105
  ...(options.sleep === undefined ? {} : { sleep: options.sleep }),
103
106
  });
107
+ // Admission bound equals the pacing interval: the immediate slot and the
108
+ // slot exactly one interval out are admitted, every deeper reservation is
109
+ // refused before any SDK call (delivery-uncertain, requeued by the
110
+ // durable worker) instead of waiting out an unbounded queue.
111
+ this.maxRequestStartWaitMs = intervalMs;
104
112
  this.onRequest = options.onRequest;
105
113
  this.deps = {
106
114
  spreadsheetId: this.spreadsheetId,
@@ -108,8 +116,8 @@ export class GoogleSheetsApiSyncProvider {
108
116
  transport: this.transport,
109
117
  readTimeoutMs: this.readTimeoutMs,
110
118
  maxBatchBytes: this.maxBatchBytes,
111
- readLimiter: this.readLimiter,
112
- writeLimiter: this.writeLimiter,
119
+ requestLimiter: this.requestLimiter,
120
+ maxRequestStartWaitMs: this.maxRequestStartWaitMs,
113
121
  now: this.now,
114
122
  onRequest: this.onRequest,
115
123
  };
@@ -1 +1 @@
1
- {"version":3,"file":"GoogleSheetsApiSyncProvider.js","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GoogleSheetsApiSyncProvider.js","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAwBH,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,uDAAuD,CAAC;AAO/D,OAAO,EACL,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,4BAA4B,GAE7B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EACL,cAAc,GACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,YAAY,GACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAgDtC;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,2BAA2B;IAOrB,aAAa,CAAS;IACtB,WAAW,CAAgD;IAC3D,SAAS,CAA2B;IACpC,kBAAkB,CAAS;IAC3B,aAAa,CAAS;IACtB,aAAa,CAAS;IACtB,cAAc,CAAsB;IACrD,yEAAyE;IACxD,qBAAqB,CAAS;IAC9B,GAAG,CAAe;IAClB,SAAS,CAA6D;IACtE,IAAI,CAA8B;IAEnD,YAAmB,OAA2C;QAC5D,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,uBAAuB,CAC/B,uBAAuB,CAAC,gCAAgC,EACxD,kEAAkE,CACnE,CAAC;QACJ,CAAC;QACD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,0BAA0B,CAAC,kBAAkB,CAAC;QACnG,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC;YACvC,gBAAgB,GAAG,0BAA0B,CAAC,sBAAsB;YACpE,gBAAgB,GAAG,0BAA0B,CAAC,sBAAsB,EACpE,CAAC;YACD,sBAAsB,CACpB,iCAAiC,EACjC,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QACD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,0BAA0B,CAAC,eAAe,CAAC;QAC1F,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC;YACpC,aAAa,GAAG,0BAA0B,CAAC,sBAAsB;YACjE,aAAa,GAAG,0BAA0B,CAAC,mBAAmB,EAC9D,CAAC;YACD,sBAAsB,CACpB,iCAAiC,EACjC,uDAAuD,CACxD,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,UAAU,CAAC,KAAK,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC7D,MAAM,IAAI,uBAAuB,CAC/B,uBAAuB,CAAC,gCAAgC,EACxD,yEAAyE,CAC1E,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,0BAA0B,CAAC,uBAAuB,CAAC;QAClG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YAC9D,sBAAsB,CAAC,iCAAiC,EAAE,0BAA0B,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,IAAI,0BAA0B,CAAC,yBAAyB,CAAC;QACvG,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,4BAA4B,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC7F,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,IAAI,mBAAmB,CAAC;YAC5C,UAAU;YACV,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;SACjE,CAAC,CAAC;QACH,yEAAyE;QACzE,0EAA0E;QAC1E,mEAAmE;QACnE,6DAA6D;QAC7D,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG;YACV,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED,+EAA+E;IAC/E,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED,4EAA4E;IAC5E,+DAA+D;IAC/D,4EAA4E;IAE5E,wEAAwE;IACjE,KAAK,CAAC,cAAc,CAAC,OAA8B;QACxD,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,6EAA6E;IACtE,KAAK,CAAC,YAAY,CAAC,OAAgC;QACxD,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,+EAA+E;IACxE,KAAK,CAAC,uBAAuB,CAAC,MAA4B;QAC/D,OAAO,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,uEAAuE;IAChE,KAAK,CAAC,wBAAwB,CACnC,OAA4C;QAE5C,OAAO,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,4EAA4E;IAC5E,kDAAkD;IAClD,4EAA4E;IAE5E;;;;;;;;OAQG;IACI,KAAK,CAAC,iBAAiB,CAC5B,aAAkD;QAMlD,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC;IAED,4EAA4E;IAC5E,qDAAqD;IACrD,4EAA4E;IAE5E,sEAAsE;IAC/D,KAAK,CAAC,QAAQ,CAAC,OAAiC;QACrD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,aAAa,CACxB,QAA6C;QAE7C,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,4EAA4E;IAC5E,oCAAoC;IACpC,4EAA4E;IAE5E;;;;;OAKG;IACI,KAAK,CAAC,gBAAgB,CAC3B,OAAoC;QAEpC,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,gEAAgE;IACzD,KAAK,CAAC,YAAY,CAAC,OAAgC;QACxD,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,0EAA0E;IACnE,KAAK,CAAC,eAAe,CAAC,OAAgC;QAC3D,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,gBAAgB,CAC3B,QAA4C;QAE5C,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;CACF"}
@@ -30,12 +30,31 @@ export declare const GOOGLE_SHEETS_API_DEFAULTS: {
30
30
  /** Upper bound for read timeouts; reads must stay well under the lease. */
31
31
  readonly MAX_READ_TIMEOUT_MS: 60000;
32
32
  /**
33
- * Minimum interval between request starts of one class (reads or writes).
34
- * Google Sheets quota is enforced per 100-second windows; the provider
35
- * spaces request starts so a burst cannot exhaust the read or write budget
36
- * before the worker's own backoff reacts.
33
+ * Minimum interval between request starts of the WHOLE provider: reads and
34
+ * writes share ONE request-start limiter, so at most one Sheets API
35
+ * request can start per interval regardless of class. Google Sheets quota
36
+ * is enforced per 100-second windows; the 2,500 ms default serializes
37
+ * combined read+write starts to about 40 starts per 100 s, leaving
38
+ * headroom inside the default per-user/per-project 100-second quotas for
39
+ * the observation and provisioning reads that run beside the worker. The
40
+ * exact quota stays provider and environment dependent, so operators can
41
+ * override the interval through the internal sync env key
42
+ * (HIKOUTEI_SYNC_RATE_LIMIT_INTERVAL_MS) or the internal provider option;
43
+ * the safe default is intentionally conservative. The interval is part of
44
+ * the effect-lease headroom contract: a worst-case dispatch (two
45
+ * preflight/postcondition reads plus one write, each paced and timed out,
46
+ * with up to one full interval of first-slot wait) must finish inside the
47
+ * lease with the 30-second provider headroom, and the internal service
48
+ * validation rejects an override that would let pacing outlive the lease
49
+ * (the env override is bounded to the largest default-safe interval,
50
+ * ~10 s). Admission is BOUNDED to one interval per request start: a call
51
+ * whose slot lies more than one interval out is refused before any SDK
52
+ * call with the stable delivery-uncertain
53
+ * `google_sheets_api_request_start_refused` error (the durable worker
54
+ * requeues), so an arbitrarily long queue of concurrent lock-free polling
55
+ * reads can never make a write wait past its lease.
37
56
  */
38
- readonly REQUEST_START_INTERVAL_MS: 1100;
57
+ readonly REQUEST_START_INTERVAL_MS: 2500;
39
58
  /**
40
59
  * The provider stops adding effects to one batchUpdate once the serialized
41
60
  * body would exceed this budget and returns `hasMore` for the suffix. The
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,2DAE3B,CAAC;AAEX,wEAAwE;AACxE,eAAO,MAAM,0BAA0B;IACrC,gFAAgF;;;;IAIhF;;;;;OAKG;;IAEH,2EAA2E;;IAE3E;;;;;OAKG;;IAEH;;;;;OAKG;;IAEH,+EAA+E;;IAE/E,2EAA2E;;CAEnE,CAAC;AAEX,wEAAwE;AACxE,eAAO,MAAM,oCAAoC,4CACN,CAAC;AAE5C,4EAA4E;AAC5E,eAAO,MAAM,iCAAiC,+FAOpC,CAAC;AAEX;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B,sBAAsB,CAAC;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,qCAAqC,iBAAiB,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,oCAAoC,6CACb,CAAC;AAErC;;;;GAIG;AACH,eAAO,MAAM,2CAA2C;;;CAG9C,CAAC;AAEX,qEAAqE;AACrE,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;CAanC,CAAC;AAEX,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,gCAAgC,CAAC,CAAC,MAAM,OAAO,gCAAgC,CAAC,CAAC;AAE3F,+EAA+E;AAC/E,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEhE"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,2DAE3B,CAAC;AAEX,wEAAwE;AACxE,eAAO,MAAM,0BAA0B;IACrC,gFAAgF;;;;IAIhF;;;;;OAKG;;IAEH,2EAA2E;;IAE3E;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;;IAEH;;;;;OAKG;;IAEH,+EAA+E;;IAE/E,2EAA2E;;CAEnE,CAAC;AAEX,wEAAwE;AACxE,eAAO,MAAM,oCAAoC,4CACN,CAAC;AAE5C,4EAA4E;AAC5E,eAAO,MAAM,iCAAiC,+FAOpC,CAAC;AAEX;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B,sBAAsB,CAAC;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,qCAAqC,iBAAiB,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,oCAAoC,6CACb,CAAC;AAErC;;;;GAIG;AACH,eAAO,MAAM,2CAA2C;;;CAG9C,CAAC;AAEX,qEAAqE;AACrE,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;CAanC,CAAC;AAEX,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,gCAAgC,CAAC,CAAC,MAAM,OAAO,gCAAgC,CAAC,CAAC;AAE3F,+EAA+E;AAC/E,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEhE"}
@@ -32,12 +32,31 @@ export const GOOGLE_SHEETS_API_DEFAULTS = {
32
32
  /** Upper bound for read timeouts; reads must stay well under the lease. */
33
33
  MAX_READ_TIMEOUT_MS: 60_000,
34
34
  /**
35
- * Minimum interval between request starts of one class (reads or writes).
36
- * Google Sheets quota is enforced per 100-second windows; the provider
37
- * spaces request starts so a burst cannot exhaust the read or write budget
38
- * before the worker's own backoff reacts.
35
+ * Minimum interval between request starts of the WHOLE provider: reads and
36
+ * writes share ONE request-start limiter, so at most one Sheets API
37
+ * request can start per interval regardless of class. Google Sheets quota
38
+ * is enforced per 100-second windows; the 2,500 ms default serializes
39
+ * combined read+write starts to about 40 starts per 100 s, leaving
40
+ * headroom inside the default per-user/per-project 100-second quotas for
41
+ * the observation and provisioning reads that run beside the worker. The
42
+ * exact quota stays provider and environment dependent, so operators can
43
+ * override the interval through the internal sync env key
44
+ * (HIKOUTEI_SYNC_RATE_LIMIT_INTERVAL_MS) or the internal provider option;
45
+ * the safe default is intentionally conservative. The interval is part of
46
+ * the effect-lease headroom contract: a worst-case dispatch (two
47
+ * preflight/postcondition reads plus one write, each paced and timed out,
48
+ * with up to one full interval of first-slot wait) must finish inside the
49
+ * lease with the 30-second provider headroom, and the internal service
50
+ * validation rejects an override that would let pacing outlive the lease
51
+ * (the env override is bounded to the largest default-safe interval,
52
+ * ~10 s). Admission is BOUNDED to one interval per request start: a call
53
+ * whose slot lies more than one interval out is refused before any SDK
54
+ * call with the stable delivery-uncertain
55
+ * `google_sheets_api_request_start_refused` error (the durable worker
56
+ * requeues), so an arbitrarily long queue of concurrent lock-free polling
57
+ * reads can never make a write wait past its lease.
39
58
  */
40
- REQUEST_START_INTERVAL_MS: 1_100,
59
+ REQUEST_START_INTERVAL_MS: 2_500,
41
60
  /**
42
61
  * The provider stops adding effects to one batchUpdate once the serialized
43
62
  * body would exceed this budget and returns `hasMore` for the suffix. The
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,8CAA8C;CACtC,CAAC;AAEX,wEAAwE;AACxE,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,gFAAgF;IAChF,kBAAkB,EAAE,MAAM;IAC1B,sBAAsB,EAAE,KAAK;IAC7B,sBAAsB,EAAE,OAAO;IAC/B;;;;;OAKG;IACH,eAAe,EAAE,MAAM;IACvB,2EAA2E;IAC3E,mBAAmB,EAAE,MAAM;IAC3B;;;;;OAKG;IACH,yBAAyB,EAAE,KAAK;IAChC;;;;;OAKG;IACH,uBAAuB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IACxC,+EAA+E;IAC/E,uBAAuB,EAAE,EAAE;IAC3B,2EAA2E;IAC3E,2BAA2B,EAAE,KAAK;CAC1B,CAAC;AAEX,wEAAwE;AACxE,MAAM,CAAC,MAAM,oCAAoC,GAC/C,yCAAyC,CAAC;AAE5C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,UAAU;IACV,aAAa;IACb,QAAQ;IACR,aAAa;IACb,iBAAiB;IACjB,WAAW;CACH,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,mBAAmB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,cAAc,CAAC;AAEpE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAC/C,kCAAkC,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG;IACzD,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,oCAAoC;CACrC,CAAC;AAEX,qEAAqE;AACrE,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,uCAAuC,EAAE,yCAAyC;IAClF,sBAAsB,EAAE,wBAAwB;IAChD,6BAA6B,EAAE,+BAA+B;IAC9D,yBAAyB,EAAE,2BAA2B;IACtD,qBAAqB,EAAE,uBAAuB;IAC9C,sCAAsC,EAAE,wCAAwC;IAChF,sBAAsB,EAAE,wBAAwB;IAChD,wBAAwB,EAAE,0BAA0B;IACpD,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,2BAA2B,EAAE,6BAA6B;IAC1D,wBAAwB,EAAE,0BAA0B;CAC5C,CAAC;AAKX,+EAA+E;AAC/E,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACtD,OAAO,GAAG,UAAU,oBAAoB,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,8CAA8C;CACtC,CAAC;AAEX,wEAAwE;AACxE,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,gFAAgF;IAChF,kBAAkB,EAAE,MAAM;IAC1B,sBAAsB,EAAE,KAAK;IAC7B,sBAAsB,EAAE,OAAO;IAC/B;;;;;OAKG;IACH,eAAe,EAAE,MAAM;IACvB,2EAA2E;IAC3E,mBAAmB,EAAE,MAAM;IAC3B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,yBAAyB,EAAE,KAAK;IAChC;;;;;OAKG;IACH,uBAAuB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IACxC,+EAA+E;IAC/E,uBAAuB,EAAE,EAAE;IAC3B,2EAA2E;IAC3E,2BAA2B,EAAE,KAAK;CAC1B,CAAC;AAEX,wEAAwE;AACxE,MAAM,CAAC,MAAM,oCAAoC,GAC/C,yCAAyC,CAAC;AAE5C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,UAAU;IACV,aAAa;IACb,QAAQ;IACR,aAAa;IACb,iBAAiB;IACjB,WAAW;CACH,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,mBAAmB,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,cAAc,CAAC;AAEpE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAC/C,kCAAkC,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG;IACzD,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,oCAAoC;CACrC,CAAC;AAEX,qEAAqE;AACrE,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,uCAAuC,EAAE,yCAAyC;IAClF,sBAAsB,EAAE,wBAAwB;IAChD,6BAA6B,EAAE,+BAA+B;IAC9D,yBAAyB,EAAE,2BAA2B;IACtD,qBAAqB,EAAE,uBAAuB;IAC9C,sCAAsC,EAAE,wCAAwC;IAChF,sBAAsB,EAAE,wBAAwB;IAChD,wBAAwB,EAAE,0BAA0B;IACpD,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,2BAA2B,EAAE,6BAA6B;IAC1D,wBAAwB,EAAE,0BAA0B;CAC5C,CAAC;AAKX,+EAA+E;AAC/E,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACtD,OAAO,GAAG,UAAU,oBAAoB,CAAC;AAC3C,CAAC"}
@@ -19,6 +19,14 @@ export declare const GOOGLE_SHEETS_API_TRANSPORT_ERROR_CODES: {
19
19
  readonly HTTP_ERROR: "google_sheets_api_http_error";
20
20
  /** A 2xx response whose structure cannot prove what was applied. */
21
21
  readonly INVALID_RESPONSE: "google_sheets_api_invalid_response";
22
+ /**
23
+ * The shared request-start limiter refused the admission BEFORE any SDK
24
+ * call: the predicted wait exceeded the bounded queue horizon. No remote
25
+ * request was sent, and the limiter horizon was not advanced, so the
26
+ * durable worker requeues through the CAS/recovery path and a later pass
27
+ * can be admitted again.
28
+ */
29
+ readonly REQUEST_START_REFUSED: "google_sheets_api_request_start_refused";
22
30
  };
23
31
  export type GoogleSheetsApiTransportErrorCode = (typeof GOOGLE_SHEETS_API_TRANSPORT_ERROR_CODES)[keyof typeof GOOGLE_SHEETS_API_TRANSPORT_ERROR_CODES];
24
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAMlE,wEAAwE;AACxE,eAAO,MAAM,uCAAuC;IAClD,6EAA6E;;IAE7E,0DAA0D;;IAE1D,8CAA8C;;IAE9C,oEAAoE;;CAE5D,CAAC;AAEX,MAAM,MAAM,iCAAiC,GAC3C,CAAC,OAAO,uCAAuC,CAAC,CAAC,MAAM,OAAO,uCAAuC,CAAC,CAAC;AAEzG;;;;;;GAMG;AACH,qBAAa,6BAA8B,SAAQ,kBAAkB,CACnE,2BAA2B,EAC3B,iCAAiC,CAClC;IACC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAGpC,IAAI,EAAE,iCAAiC,EACvC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EACxB,UAAU,GAAE,QAAQ,CAAC,MAAM,CAAmC;CAMjE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAK5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAK3D"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAWlE,wEAAwE;AACxE,eAAO,MAAM,uCAAuC;IAClD,6EAA6E;;IAE7E,0DAA0D;;IAE1D,8CAA8C;;IAE9C,oEAAoE;;IAEpE;;;;;;OAMG;;CAEK,CAAC;AAEX,MAAM,MAAM,iCAAiC,GAC3C,CAAC,OAAO,uCAAuC,CAAC,CAAC,MAAM,OAAO,uCAAuC,CAAC,CAAC;AAEzG;;;;;;GAMG;AACH,qBAAa,6BAA8B,SAAQ,kBAAkB,CACnE,2BAA2B,EAC3B,iCAAiC,CAClC;IACC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAGpC,IAAI,EAAE,iCAAiC,EACvC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EACxB,UAAU,GAAE,QAAQ,CAAC,MAAM,CAAmC;CAMjE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAK5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAe3D"}
@@ -10,6 +10,8 @@
10
10
  import { CoreErrorException } from "../../../../domain/errors/index.js";
11
11
  import { PRESENCE_KINDS } from "../../../../shared/state/index.js";
12
12
  import { SYNC_SHEETS_ERROR_CODES, SyncSheetsContractError, } from "../../../../application/sync/sheetsContract/errors.js";
13
+ import { logHikouteiInternalEvent } from "../../../../shared/observability/internalLog.js";
14
+ import { HIKOUTEI_LOG_COMPONENTS, HIKOUTEI_LOG_EVENTS, } from "../../../../shared/observability/logEvents.js";
13
15
  /** Stable transport error categories emitted by the direct provider. */
14
16
  export const GOOGLE_SHEETS_API_TRANSPORT_ERROR_CODES = {
15
17
  /** The request exceeded its timeout; the remote may still have committed. */
@@ -20,6 +22,14 @@ export const GOOGLE_SHEETS_API_TRANSPORT_ERROR_CODES = {
20
22
  HTTP_ERROR: "google_sheets_api_http_error",
21
23
  /** A 2xx response whose structure cannot prove what was applied. */
22
24
  INVALID_RESPONSE: "google_sheets_api_invalid_response",
25
+ /**
26
+ * The shared request-start limiter refused the admission BEFORE any SDK
27
+ * call: the predicted wait exceeded the bounded queue horizon. No remote
28
+ * request was sent, and the limiter horizon was not advanced, so the
29
+ * durable worker requeues through the CAS/recovery path and a later pass
30
+ * can be admitted again.
31
+ */
32
+ REQUEST_START_REFUSED: "google_sheets_api_request_start_refused",
23
33
  };
24
34
  /**
25
35
  * Provider-neutral transport error with explicit status/code presence.
@@ -56,6 +66,16 @@ export function invalidProviderRequest(label, message) {
56
66
  * unverified evidence.
57
67
  */
58
68
  export function invalidProviderState(message) {
69
+ // Boundary record for malformed 2xx payloads: only the stable code is
70
+ // logged, never the message (it can echo remote payload fragments).
71
+ logHikouteiInternalEvent({
72
+ event: HIKOUTEI_LOG_EVENTS.TRANSPORT_RESPONSE_INVALID,
73
+ level: "warn",
74
+ component: HIKOUTEI_LOG_COMPONENTS.TRANSPORT,
75
+ code: SYNC_SHEETS_ERROR_CODES.INVALID_PROVIDER_RESPONSE,
76
+ errorClass: "SyncSheetsContractError",
77
+ retryable: true,
78
+ });
59
79
  throw new SyncSheetsContractError(SYNC_SHEETS_ERROR_CODES.INVALID_PROVIDER_RESPONSE, `Google Sheets API provider: ${message}`);
60
80
  }
61
81
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,uDAAuD,CAAC;AAE/D,wEAAwE;AACxE,MAAM,CAAC,MAAM,uCAAuC,GAAG;IACrD,6EAA6E;IAC7E,OAAO,EAAE,2BAA2B;IACpC,0DAA0D;IAC1D,aAAa,EAAE,iCAAiC;IAChD,8CAA8C;IAC9C,UAAU,EAAE,8BAA8B;IAC1C,oEAAoE;IACpE,gBAAgB,EAAE,oCAAoC;CAC9C,CAAC;AAKX;;;;;;GAMG;AACH,MAAM,OAAO,6BAA8B,SAAQ,kBAGlD;IACU,MAAM,CAAmB;IACzB,UAAU,CAAmB;IAEtC,YACE,IAAuC,EACvC,OAAe,EACf,MAAwB,EACxB,aAA+B,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE;QAE9D,KAAK,CAAC,2BAA2B,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,OAAe;IACnE,MAAM,IAAI,uBAAuB,CAC/B,uBAAuB,CAAC,sBAAsB,EAC9C,GAAG,KAAK,wBAAwB,OAAO,EAAE,CAC1C,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,IAAI,uBAAuB,CAC/B,uBAAuB,CAAC,yBAAyB,EACjD,+BAA+B,OAAO,EAAE,CACzC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EACL,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,+CAA+C,CAAC;AAEvD,wEAAwE;AACxE,MAAM,CAAC,MAAM,uCAAuC,GAAG;IACrD,6EAA6E;IAC7E,OAAO,EAAE,2BAA2B;IACpC,0DAA0D;IAC1D,aAAa,EAAE,iCAAiC;IAChD,8CAA8C;IAC9C,UAAU,EAAE,8BAA8B;IAC1C,oEAAoE;IACpE,gBAAgB,EAAE,oCAAoC;IACtD;;;;;;OAMG;IACH,qBAAqB,EAAE,yCAAyC;CACxD,CAAC;AAKX;;;;;;GAMG;AACH,MAAM,OAAO,6BAA8B,SAAQ,kBAGlD;IACU,MAAM,CAAmB;IACzB,UAAU,CAAmB;IAEtC,YACE,IAAuC,EACvC,OAAe,EACf,MAAwB,EACxB,aAA+B,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE;QAE9D,KAAK,CAAC,2BAA2B,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,OAAe;IACnE,MAAM,IAAI,uBAAuB,CAC/B,uBAAuB,CAAC,sBAAsB,EAC9C,GAAG,KAAK,wBAAwB,OAAO,EAAE,CAC1C,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,sEAAsE;IACtE,oEAAoE;IACpE,wBAAwB,CAAC;QACvB,KAAK,EAAE,mBAAmB,CAAC,0BAA0B;QACrD,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,uBAAuB,CAAC,SAAS;QAC5C,IAAI,EAAE,uBAAuB,CAAC,yBAAyB;QACvD,UAAU,EAAE,yBAAyB;QACrC,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IACH,MAAM,IAAI,uBAAuB,CAC/B,uBAAuB,CAAC,yBAAyB,EACjD,+BAA+B,OAAO,EAAE,CACzC,CAAC;AACJ,CAAC"}
@@ -7,7 +7,7 @@
7
7
  */
8
8
  export { GoogleSheetsApiSyncProvider } from "./GoogleSheetsApiSyncProvider.js";
9
9
  export type { GoogleSheetsApiSyncProviderOptions, GoogleSheetsApiProviderOptions, GoogleSheetsApiRequestEvent, } from "./GoogleSheetsApiSyncProvider.js";
10
- export { GoogleSheetsApiHttpTransport, classifyGoogleSheetsApiError, } from "./transport/googleSheetsApiTransport.js";
10
+ export { GoogleSheetsApiHttpTransport, classifyGoogleSheetsApiError, isRetryableTransportStatus, } from "./transport/googleSheetsApiTransport.js";
11
11
  export type { GoogleSheetsApiTransport, GoogleSheetsApiGetSpreadsheetRequest, GoogleSheetsApiBatchUpdateRequest, GoogleSheetsApiWriteRequest, GoogleSheetsApiCell, GoogleSheetsApiCellRow, GoogleSheetsApiHttpTransportOptions, } from "./transport/googleSheetsApiTransport.js";
12
12
  export { RequestStartLimiter } from "./transport/rateLimiter.js";
13
13
  export { GOOGLE_SHEETS_API_DEFAULTS, GOOGLE_SHEETS_API_SCOPES, } from "./constants.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,YAAY,EACV,kCAAkC,EAClC,8BAA8B,EAC9B,2BAA2B,GAC5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,yCAAyC,CAAC;AACjD,YAAY,EACV,wBAAwB,EACxB,oCAAoC,EACpC,iCAAiC,EACjC,2BAA2B,EAC3B,mBAAmB,EACnB,sBAAsB,EACtB,mCAAmC,GACpC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uCAAuC,EACvC,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,YAAY,EACV,kCAAkC,EAClC,8BAA8B,EAC9B,2BAA2B,GAC5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,yCAAyC,CAAC;AACjD,YAAY,EACV,wBAAwB,EACxB,oCAAoC,EACpC,iCAAiC,EACjC,2BAA2B,EAC3B,mBAAmB,EACnB,sBAAsB,EACtB,mCAAmC,GACpC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uCAAuC,EACvC,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC"}
@@ -6,7 +6,7 @@
6
6
  * application API.
7
7
  */
8
8
  export { GoogleSheetsApiSyncProvider } from "./GoogleSheetsApiSyncProvider.js";
9
- export { GoogleSheetsApiHttpTransport, classifyGoogleSheetsApiError, } from "./transport/googleSheetsApiTransport.js";
9
+ export { GoogleSheetsApiHttpTransport, classifyGoogleSheetsApiError, isRetryableTransportStatus, } from "./transport/googleSheetsApiTransport.js";
10
10
  export { RequestStartLimiter } from "./transport/rateLimiter.js";
11
11
  export { GOOGLE_SHEETS_API_DEFAULTS, GOOGLE_SHEETS_API_SCOPES, } from "./constants.js";
12
12
  export { GOOGLE_SHEETS_API_TRANSPORT_ERROR_CODES, GoogleSheetsApiTransportError, } from "./errors.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAM/E,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,yCAAyC,CAAC;AAUjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uCAAuC,EACvC,6BAA6B,GAC9B,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/adapter/sheets/providers/google-sheets-api/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAM/E,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,yCAAyC,CAAC;AAUjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uCAAuC,EACvC,6BAA6B,GAC9B,MAAM,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"preflightParsing.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/model/preflightParsing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAIV,WAAW,EACX,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,yEAAyE;AACzE,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,GACZ,yBAAyB,CA0B3B;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,GACZ,SAAS,WAAW,EAAE,CAWxB;AA2JD,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAOjE;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAOjE"}
1
+ {"version":3,"file":"preflightParsing.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/model/preflightParsing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,KAAK,EAIV,WAAW,EACX,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,yEAAyE;AACzE,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,GACZ,yBAAyB,CAwB3B;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,GACZ,SAAS,WAAW,EAAE,CASxB;AAsKD,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAOjE;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAOjE"}
@@ -9,15 +9,10 @@
9
9
  * are shared by the header and receipt readers.
10
10
  */
11
11
  import { invalidProviderState } from "../errors.js";
12
+ import { parseProviderResponseShape, sheetEntryShapeSchema, spreadsheetDocumentShapeSchema, unknownArraySchema, } from "./rawResponseSchemas.js";
12
13
  /** Promotes an untrusted `spreadsheets.get` body with runtime guards. */
13
14
  export function parseSpreadsheetDocument(value, label) {
14
- if (value === null || typeof value !== "object" || Array.isArray(value)) {
15
- invalidProviderState(`${label} response must be an object`);
16
- }
17
- const record = value;
18
- if (!Array.isArray(record.sheets)) {
19
- invalidProviderState(`${label} response must contain a sheets array`);
20
- }
15
+ const record = parseProviderResponseShape(spreadsheetDocumentShapeSchema, value, `${label} response must contain a sheets array`);
21
16
  const grids = new Map();
22
17
  const sheets = record.sheets.map((entry, index) => {
23
18
  const sheet = parseSheetEntry(entry, `${label} sheets[${index}]`);
@@ -37,23 +32,14 @@ export function parseSpreadsheetDocument(value, label) {
37
32
  * no grid data) with runtime guards.
38
33
  */
39
34
  export function parseSheetPropertiesDocument(value, label) {
40
- if (value === null || typeof value !== "object" || Array.isArray(value)) {
41
- invalidProviderState(`${label} response must be an object`);
42
- }
43
- const record = value;
44
- if (!Array.isArray(record.sheets)) {
45
- invalidProviderState(`${label} response must contain a sheets array`);
46
- }
35
+ const record = parseProviderResponseShape(spreadsheetDocumentShapeSchema, value, `${label} response must contain a sheets array`);
47
36
  return record.sheets.map((entry, index) => parseSheetEntry(entry, `${label} sheets[${index}]`));
48
37
  }
49
38
  /** Validates one REST sheet entry's properties (sheetId, title, hidden). */
50
39
  function parseSheetEntry(value, label) {
51
- if (value === null || typeof value !== "object" || Array.isArray(value)) {
52
- invalidProviderState(`${label} must be an object`);
53
- }
54
- const sheet = value;
40
+ const sheet = parseProviderResponseShape(sheetEntryShapeSchema, value, `${label} must be an object`);
55
41
  const properties = sheet.properties;
56
- if (properties === null || typeof properties !== "object" || Array.isArray(properties)) {
42
+ if (properties === undefined || properties === null || typeof properties !== "object" || Array.isArray(properties)) {
57
43
  invalidProviderState(`${label}.properties must be an object`);
58
44
  }
59
45
  const propertyRecord = properties;
@@ -101,13 +87,11 @@ function optionalPositiveInteger(value, label) {
101
87
  return value;
102
88
  }
103
89
  function parseGridDataArray(value, sheetId, label, grids) {
104
- if (!Array.isArray(value)) {
105
- invalidProviderState(`${label} must be an array`);
106
- }
90
+ const entries = parseProviderResponseShape(unknownArraySchema, value, `${label} must be an array`);
107
91
  if (grids.has(sheetId)) {
108
92
  invalidProviderState(`${label} contains a duplicate grid for one sheet`);
109
93
  }
110
- value.forEach((entry, index) => {
94
+ entries.forEach((entry, index) => {
111
95
  if (entry === null || typeof entry !== "object" || Array.isArray(entry)) {
112
96
  invalidProviderState(`${label}[${index}] must be an object`);
113
97
  }
@@ -122,9 +106,8 @@ function parseGridDataArray(value, sheetId, label, grids) {
122
106
  function parseMergedCells(value, label) {
123
107
  if (value === undefined)
124
108
  return undefined;
125
- if (!Array.isArray(value))
126
- invalidProviderState(`${label} must be an array`);
127
- return value.map((entry, index) => {
109
+ const entries = parseProviderResponseShape(unknownArraySchema, value, `${label} must be an array`);
110
+ return entries.map((entry, index) => {
128
111
  if (entry === null || typeof entry !== "object" || Array.isArray(entry)) {
129
112
  invalidProviderState(`${label}[${index}] must be an object`);
130
113
  }
@@ -153,9 +136,8 @@ function parseMergedCells(value, label) {
153
136
  function parseRowData(value, label) {
154
137
  if (value === undefined)
155
138
  return [];
156
- if (!Array.isArray(value))
157
- invalidProviderState(`${label} must be an array`);
158
- return value.map((entry, index) => {
139
+ const entries = parseProviderResponseShape(unknownArraySchema, value, `${label} must be an array`);
140
+ return entries.map((entry, index) => {
159
141
  if (entry === null || typeof entry !== "object" || Array.isArray(entry)) {
160
142
  invalidProviderState(`${label}[${index}] must be an object`);
161
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"preflightParsing.js","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/model/preflightParsing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preflightParsing.js","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/model/preflightParsing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { z } from "zod";
2
+ /** Structural shape shared by spreadsheet enumeration and grid responses. */
3
+ export declare const spreadsheetDocumentShapeSchema: z.ZodObject<{
4
+ sheets: z.ZodArray<z.ZodUnknown>;
5
+ }, z.core.$loose>;
6
+ /** Structural shape of one REST sheet entry before semantic promotion. */
7
+ export declare const sheetEntryShapeSchema: z.ZodObject<{
8
+ properties: z.ZodOptional<z.ZodUnknown>;
9
+ data: z.ZodOptional<z.ZodUnknown>;
10
+ merges: z.ZodOptional<z.ZodUnknown>;
11
+ }, z.core.$loose>;
12
+ /** Generic array shape used by nested Google response parsers. */
13
+ export declare const unknownArraySchema: z.ZodArray<z.ZodUnknown>;
14
+ /** Structural shape of a batchUpdate response before reply semantics. */
15
+ export declare const batchUpdateResponseShapeSchema: z.ZodObject<{
16
+ replies: z.ZodArray<z.ZodUnknown>;
17
+ }, z.core.$loose>;
18
+ /** Parses one raw provider shape while retaining the provider error boundary. */
19
+ export declare function parseProviderResponseShape<T>(schema: z.ZodType<T>, value: unknown, message: string): T;
20
+ //# sourceMappingURL=rawResponseSchemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rawResponseSchemas.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/model/rawResponseSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,6EAA6E;AAC7E,eAAO,MAAM,8BAA8B;;iBAE3B,CAAC;AAEjB,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB;;;;iBAIlB,CAAC;AAEjB,kEAAkE;AAClE,eAAO,MAAM,kBAAkB,0BAAuB,CAAC;AAEvD,yEAAyE;AACzE,eAAO,MAAM,8BAA8B;;iBAE3B,CAAC;AAEjB,iFAAiF;AACjF,wBAAgB,0BAA0B,CAAC,CAAC,EAC1C,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,GACd,CAAC,CAIH"}
@@ -0,0 +1,26 @@
1
+ import { z } from "zod";
2
+ import { invalidProviderState } from "../errors.js";
3
+ /** Structural shape shared by spreadsheet enumeration and grid responses. */
4
+ export const spreadsheetDocumentShapeSchema = z.object({
5
+ sheets: z.array(z.unknown()),
6
+ }).passthrough();
7
+ /** Structural shape of one REST sheet entry before semantic promotion. */
8
+ export const sheetEntryShapeSchema = z.object({
9
+ properties: z.unknown().optional(),
10
+ data: z.unknown().optional(),
11
+ merges: z.unknown().optional(),
12
+ }).passthrough();
13
+ /** Generic array shape used by nested Google response parsers. */
14
+ export const unknownArraySchema = z.array(z.unknown());
15
+ /** Structural shape of a batchUpdate response before reply semantics. */
16
+ export const batchUpdateResponseShapeSchema = z.object({
17
+ replies: z.array(z.unknown()),
18
+ }).passthrough();
19
+ /** Parses one raw provider shape while retaining the provider error boundary. */
20
+ export function parseProviderResponseShape(schema, value, message) {
21
+ const parsed = schema.safeParse(value);
22
+ if (!parsed.success)
23
+ invalidProviderState(message);
24
+ return parsed.data;
25
+ }
26
+ //# sourceMappingURL=rawResponseSchemas.js.map