hikoutei 0.9.29 → 0.9.30

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 (75) hide show
  1. package/dist/api/Hikoutei.d.ts +2 -2
  2. package/dist/api/Hikoutei.d.ts.map +1 -1
  3. package/dist/api/Hikoutei.js +3 -0
  4. package/dist/api/Hikoutei.js.map +1 -1
  5. package/dist/api/index.d.ts +1 -1
  6. package/dist/api/index.d.ts.map +1 -1
  7. package/dist/api/syncRuntime.d.ts +9 -0
  8. package/dist/api/syncRuntime.d.ts.map +1 -1
  9. package/dist/api/syncRuntime.js +3 -0
  10. package/dist/api/syncRuntime.js.map +1 -1
  11. package/dist/composition/syncEngine.d.ts.map +1 -1
  12. package/dist/composition/syncEngine.js +11 -0
  13. package/dist/composition/syncEngine.js.map +1 -1
  14. package/dist/contracts/sheets/googleSheetsApi.d.ts +90 -3
  15. package/dist/contracts/sheets/googleSheetsApi.d.ts.map +1 -1
  16. package/dist/contracts/sheets/googleSheetsApi.js +46 -0
  17. package/dist/contracts/sheets/googleSheetsApi.js.map +1 -1
  18. package/dist/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts +5 -0
  19. package/dist/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts.map +1 -1
  20. package/dist/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js +91 -11
  21. package/dist/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js.map +1 -1
  22. package/dist/sheets/providers/google-sheets-api/model/preflightContext.d.ts +3 -1
  23. package/dist/sheets/providers/google-sheets-api/model/preflightContext.d.ts.map +1 -1
  24. package/dist/sheets/providers/google-sheets-api/model/preflightContext.js +4 -1
  25. package/dist/sheets/providers/google-sheets-api/model/preflightContext.js.map +1 -1
  26. package/dist/sheets/providers/google-sheets-api/operations/anchors.d.ts.map +1 -1
  27. package/dist/sheets/providers/google-sheets-api/operations/anchors.js +3 -2
  28. package/dist/sheets/providers/google-sheets-api/operations/anchors.js.map +1 -1
  29. package/dist/sheets/providers/google-sheets-api/operations/applyEffects.d.ts.map +1 -1
  30. package/dist/sheets/providers/google-sheets-api/operations/applyEffects.js +44 -85
  31. package/dist/sheets/providers/google-sheets-api/operations/applyEffects.js.map +1 -1
  32. package/dist/sheets/providers/google-sheets-api/operations/fastAppend.d.ts.map +1 -1
  33. package/dist/sheets/providers/google-sheets-api/operations/fastAppend.js +72 -132
  34. package/dist/sheets/providers/google-sheets-api/operations/fastAppend.js.map +1 -1
  35. package/dist/sheets/providers/google-sheets-api/operations/preflightOp.d.ts.map +1 -1
  36. package/dist/sheets/providers/google-sheets-api/operations/preflightOp.js +7 -4
  37. package/dist/sheets/providers/google-sheets-api/operations/preflightOp.js.map +1 -1
  38. package/dist/sheets/providers/google-sheets-api/operations/provisioning.d.ts.map +1 -1
  39. package/dist/sheets/providers/google-sheets-api/operations/provisioning.js +7 -4
  40. package/dist/sheets/providers/google-sheets-api/operations/provisioning.js.map +1 -1
  41. package/dist/sheets/providers/google-sheets-api/operations/readEngine.d.ts.map +1 -1
  42. package/dist/sheets/providers/google-sheets-api/operations/readEngine.js +4 -3
  43. package/dist/sheets/providers/google-sheets-api/operations/readEngine.js.map +1 -1
  44. package/dist/sheets/providers/google-sheets-api/operations/readRows.d.ts.map +1 -1
  45. package/dist/sheets/providers/google-sheets-api/operations/readRows.js +5 -3
  46. package/dist/sheets/providers/google-sheets-api/operations/readRows.js.map +1 -1
  47. package/dist/sheets/providers/google-sheets-api/operations/shared.d.ts +83 -3
  48. package/dist/sheets/providers/google-sheets-api/operations/shared.d.ts.map +1 -1
  49. package/dist/sheets/providers/google-sheets-api/operations/shared.js +172 -18
  50. package/dist/sheets/providers/google-sheets-api/operations/shared.js.map +1 -1
  51. package/dist/sheets/providers/google-sheets-api/operations/writeEngine.d.ts +90 -0
  52. package/dist/sheets/providers/google-sheets-api/operations/writeEngine.d.ts.map +1 -0
  53. package/dist/sheets/providers/google-sheets-api/operations/writeEngine.js +112 -0
  54. package/dist/sheets/providers/google-sheets-api/operations/writeEngine.js.map +1 -0
  55. package/dist/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts +39 -2
  56. package/dist/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts.map +1 -1
  57. package/dist/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js +110 -9
  58. package/dist/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js.map +1 -1
  59. package/dist/sheets/providers/google-sheets-api/transport/quotaGovernor.d.ts +229 -0
  60. package/dist/sheets/providers/google-sheets-api/transport/quotaGovernor.d.ts.map +1 -0
  61. package/dist/sheets/providers/google-sheets-api/transport/quotaGovernor.js +299 -0
  62. package/dist/sheets/providers/google-sheets-api/transport/quotaGovernor.js.map +1 -0
  63. package/dist/sheets/providers/google-sheets-api/transport/rateLimiter.d.ts +15 -0
  64. package/dist/sheets/providers/google-sheets-api/transport/rateLimiter.d.ts.map +1 -1
  65. package/dist/sheets/providers/google-sheets-api/transport/rateLimiter.js +16 -2
  66. package/dist/sheets/providers/google-sheets-api/transport/rateLimiter.js.map +1 -1
  67. package/dist/sync-engine/api/hikouteiCore.d.ts +22 -0
  68. package/dist/sync-engine/api/hikouteiCore.d.ts.map +1 -1
  69. package/dist/sync-engine/api/hikouteiCore.js +12 -0
  70. package/dist/sync-engine/api/hikouteiCore.js.map +1 -1
  71. package/dist/sync-engine/sync/service/syncAutoStart.d.ts +41 -1
  72. package/dist/sync-engine/sync/service/syncAutoStart.d.ts.map +1 -1
  73. package/dist/sync-engine/sync/service/syncAutoStart.js +111 -3
  74. package/dist/sync-engine/sync/service/syncAutoStart.js.map +1 -1
  75. package/package.json +2 -2
@@ -13,9 +13,9 @@
13
13
  * only the public factory entry and re-exports the internal helpers for the
14
14
  * staying root modules and internal deep-import tests.
15
15
  */
16
- import { resolveDefaultDbPath, validateTypedSheetsOptions, createInternalHikoutei, type CreateTypedSheetsOptions, type Hikoutei } from "../sync-engine/api/hikouteiCore.js";
16
+ import { resolveDefaultDbPath, validateTypedSheetsOptions, createInternalHikoutei, type CreateTypedSheetsOptions, type HikouteiProviderOptions, type Hikoutei } from "../sync-engine/api/hikouteiCore.js";
17
17
  import "../composition/index.js";
18
- export { createInternalHikoutei, resolveDefaultDbPath, validateTypedSheetsOptions, type CreateTypedSheetsOptions, type Hikoutei, };
18
+ export { createInternalHikoutei, resolveDefaultDbPath, validateTypedSheetsOptions, type CreateTypedSheetsOptions, type HikouteiProviderOptions, type Hikoutei, };
19
19
  /**
20
20
  * Opens the local SQLite runtime for the declared scalar entities.
21
21
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Hikoutei.d.ts","sourceRoot":"","sources":["../../src/api/Hikoutei.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,QAAQ,EACd,MAAM,2CAA2C,CAAC;AAMnD,OAAO,gCAAgC,CAAC;AAExC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,QAAQ,GACd,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,QAAQ,CAAC,CAyCnB"}
1
+ {"version":3,"file":"Hikoutei.d.ts","sourceRoot":"","sources":["../../src/api/Hikoutei.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,QAAQ,EACd,MAAM,2CAA2C,CAAC;AAMnD,OAAO,gCAAgC,CAAC;AAExC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,QAAQ,GACd,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,QAAQ,CAAC,CA4CnB"}
@@ -58,6 +58,9 @@ export async function createTypedSheets(options = {}) {
58
58
  dbName,
59
59
  entities: [...entities],
60
60
  env: process.env,
61
+ ...(options.providerOptions === undefined
62
+ ? {}
63
+ : { providerOptions: options.providerOptions }),
61
64
  });
62
65
  // This factory never passes `adopt`, so the `adopt-dry-run` variant is
63
66
  // unreachable here; narrow for the type system only.
@@ -1 +1 @@
1
- {"version":3,"file":"Hikoutei.js","sourceRoot":"","sources":["../../src/api/Hikoutei.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,GAGvB,MAAM,2CAA2C,CAAC;AAEnD,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AAC9E,6EAA6E;AAC7E,OAAO,gCAAgC,CAAC;AAExC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,GAG3B,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAoC,EAAE;IAEtC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAEpC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,oBAAoB,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,yBAAyB,EAAE,CAAC;IACjE,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,aAAa,CACrB,oBAAoB,CAAC,yBAAyB,EAC9C,iIAAiI,CAClI,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;IACjE,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjE,yEAAyE;QACzE,8CAA8C;QAC9C,MAAM,EAAE,6BAA6B,EAAE,GAAG,MAAM,MAAM,CACpD,uCAAuC,CACxC,CAAC;QACF,OAAO,6BAA6B,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,4EAA4E;IAC5E,4DAA4D;IAC5D,MAAM,EAAE,yBAAyB,EAAE,GAAG,MAAM,MAAM,CAChD,wCAAwC,CACzC,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC;QAC7C,MAAM;QACN,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;QACvB,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,uEAAuE;IACvE,qDAAqD;IACrD,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACpC,MAAM,IAAI,aAAa,CACrB,oBAAoB,CAAC,mBAAmB,EACxC,gEAAgE,CACjE,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"Hikoutei.js","sourceRoot":"","sources":["../../src/api/Hikoutei.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,GAIvB,MAAM,2CAA2C,CAAC;AAEnD,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AAC9E,6EAA6E;AAC7E,OAAO,gCAAgC,CAAC;AAExC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,GAI3B,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAoC,EAAE;IAEtC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAEpC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,oBAAoB,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,yBAAyB,EAAE,CAAC;IACjE,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,aAAa,CACrB,oBAAoB,CAAC,yBAAyB,EAC9C,iIAAiI,CAClI,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;IACjE,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjE,yEAAyE;QACzE,8CAA8C;QAC9C,MAAM,EAAE,6BAA6B,EAAE,GAAG,MAAM,MAAM,CACpD,uCAAuC,CACxC,CAAC;QACF,OAAO,6BAA6B,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,4EAA4E;IAC5E,4DAA4D;IAC5D,MAAM,EAAE,yBAAyB,EAAE,GAAG,MAAM,MAAM,CAChD,wCAAwC,CACzC,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC;QAC7C,MAAM;QACN,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;QACvB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;YACvC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;KAClD,CAAC,CAAC;IACH,uEAAuE;IACvE,qDAAqD;IACrD,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACpC,MAAM,IAAI,aAAa,CACrB,oBAAoB,CAAC,mBAAmB,EACxC,gEAAgE,CACjE,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC;AACzB,CAAC"}
@@ -11,7 +11,7 @@
11
11
  export { defineTypedSheetsEntity, HIKOUTEI_SCALAR_TYPES, } from "./entity.js";
12
12
  export type { HikouteiEntity, HikouteiEntityDescriptorInput, HikouteiPropertyOptions, HikouteiPropertyDescriptorMap, HikouteiScalarType, HikouteiScalarValueType, HikouteiPropertyValueType, HikouteiEntityInstance, } from "./entity.js";
13
13
  export { createTypedSheets } from "./Hikoutei.js";
14
- export type { CreateTypedSheetsOptions, Hikoutei } from "./Hikoutei.js";
14
+ export type { CreateTypedSheetsOptions, HikouteiProviderOptions, Hikoutei } from "./Hikoutei.js";
15
15
  export { createTypedSheetsWithSync } from "./syncRuntime.js";
16
16
  export type { CreateTypedSheetsWithSyncOptions, AdoptSpec, AdoptEntitySpec, AdoptionRunReport, AdoptionEntityReport, AdoptionColumnBinding, AdoptionProblem, LocalSyncRuntimeResult, RunningSyncServiceResult, AdoptDryRunResult, TypedSheetsWithSyncResult, } from "./syncRuntime.js";
17
17
  export type { EntityManager, HikouteiFilter, HikouteiFindOneOptions, HikouteiFindOptions, HikouteiOperatorFilter, HikouteiOrderBy, HikouteiSortDirection, } from "./EntityManager.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,cAAc,EACd,6BAA6B,EAC7B,uBAAuB,EACvB,6BAA6B,EAC7B,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EACV,gCAAgC,EAChC,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,cAAc,EACd,6BAA6B,EAC7B,uBAAuB,EACvB,6BAA6B,EAC7B,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EACV,gCAAgC,EAChC,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
@@ -147,6 +147,15 @@ export interface CreateTypedSheetsWithSyncOptions {
147
147
  readonly env?: Readonly<Record<string, string | undefined>>;
148
148
  readonly onDiagnostic?: (level: "info" | "error", message: string) => void;
149
149
  readonly adopt?: AdoptSpec;
150
+ /**
151
+ * Provider telemetry/tuning forwarded to the sync-service provider wiring
152
+ * (real-transport path only; inert in local-only mode). Mirrors the public
153
+ * `CreateTypedSheetsOptions.providerOptions` contract: the internal bridge
154
+ * accepts the full `GoogleSheetsApiProviderOptions`, so this narrower
155
+ * public shape flows through with zero cast, and the wrapper's call site
156
+ * pins the assignability.
157
+ */
158
+ readonly providerOptions?: import("./Hikoutei.js").HikouteiProviderOptions;
150
159
  }
151
160
  /**
152
161
  * Opens the runtime for the declared entities and starts the internal sync
@@ -1 +1 @@
1
- {"version":3,"file":"syncRuntime.d.ts","sourceRoot":"","sources":["../../src/api/syncRuntime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syncRuntime.d.ts","sourceRoot":"","sources":["../../src/api/syncRuntime.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,9 @@ export async function createTypedSheetsWithSync(options) {
50
50
  : { env: options.env }),
51
51
  ...(options.onDiagnostic === undefined ? {} : { onDiagnostic: options.onDiagnostic }),
52
52
  ...(options.adopt === undefined ? {} : { adopt: options.adopt }),
53
+ ...(options.providerOptions === undefined
54
+ ? {}
55
+ : { providerOptions: options.providerOptions }),
53
56
  });
54
57
  // Drop the internal service handle from the public result: the runtime
55
58
  // handle is the application-facing contract.
@@ -1 +1 @@
1
- {"version":3,"file":"syncRuntime.js","sourceRoot":"","sources":["../../src/api/syncRuntime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAqIH;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAyC;IAEzC,2EAA2E;IAC3E,qFAAqF;IACrF,MAAM,EAAE,yBAAyB,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CACxD,wCAAwC,CACzC,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC/B,mEAAmE;QACnE,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,kEAAkE;QAClE,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS;YAC3B,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAmD,EAAE;YACtE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;QACzB,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;QACrF,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;KACjE,CAAC,CAAC;IACH,uEAAuE;IACvE,6CAA6C;IAC7C,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACvF,CAAC"}
1
+ {"version":3,"file":"syncRuntime.js","sourceRoot":"","sources":["../../src/api/syncRuntime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AA8IH;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAyC;IAEzC,2EAA2E;IAC3E,qFAAqF;IACrF,MAAM,EAAE,yBAAyB,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CACxD,wCAAwC,CACzC,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC/B,mEAAmE;QACnE,wEAAwE;QACxE,yEAAyE;QACzE,wEAAwE;QACxE,kEAAkE;QAClE,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS;YAC3B,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAmD,EAAE;YACtE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;QACzB,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;QACrF,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;YACvC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;KAClD,CAAC,CAAC;IACH,uEAAuE;IACvE,6CAA6C;IAC7C,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACvF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"syncEngine.d.ts","sourceRoot":"","sources":["../../../../src/syncEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAwBH,OAAO,KAAK,EAEV,0BAA0B,EAE3B,MAAM,wDAAwD,CAAC;AAqFhE;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAEhF"}
1
+ {"version":3,"file":"syncEngine.d.ts","sourceRoot":"","sources":["../../../../src/syncEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAwBH,OAAO,KAAK,EAEV,0BAA0B,EAE3B,MAAM,wDAAwD,CAAC;AAgGhE;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAEhF"}
@@ -77,7 +77,18 @@ function createSyncEnginePorts() {
77
77
  });
78
78
  },
79
79
  createAdoptionReaderTransport(providerOptions) {
80
+ // Adoption is a read-only ONE-SHOT bootstrap path (existing-tab
81
+ // enumeration/values before the worker exists), so it never needs the
82
+ // pool's per-identity pacing/AIMD (those live in the sync provider's
83
+ // transport). But a pool-only deployment has no ADC file: the reader
84
+ // must sign as the FIRST pooled identity — the same principal the
85
+ // startup 403 hint names — or adoption fails with the wrong-principal
86
+ // error. Passing only keyFiles[0] builds a single-client transport:
87
+ // deterministic slot 0, never the fallback round-robin. Without a
88
+ // pool, this stays the historical ADC-only reader.
89
+ const poolKeyFile = providerOptions?.serviceAccountKeyFiles?.[0];
80
90
  return new GoogleSheetsApiHttpTransport({
91
+ ...(poolKeyFile === undefined ? {} : { serviceAccountKeyFiles: [poolKeyFile] }),
81
92
  requestTimeoutMs: providerOptions?.requestTimeoutMs ?? GOOGLE_SHEETS_API_DEFAULTS.REQUEST_TIMEOUT_MS,
82
93
  });
83
94
  },
@@ -1 +1 @@
1
- {"version":3,"file":"syncEngine.js","sourceRoot":"","sources":["../../../../src/syncEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syncEngine.js","sourceRoot":"","sources":["../../../../src/syncEngine.ts"],"names":[],"mappings":"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"}
@@ -89,6 +89,38 @@ export declare const GOOGLE_SHEETS_API_DEFAULTS: {
89
89
  readonly MAX_EFFECTS_PER_REQUEST: 1000;
90
90
  /** Append row cap per request, matching the worker's bulk claim window. */
91
91
  readonly MAX_APPEND_ROWS_PER_REQUEST: 1000;
92
+ /** Sliding window the per-minute budgets enforce over. */
93
+ readonly QUOTA_BUDGET_WINDOW_MS: 60000;
94
+ /**
95
+ * Per-window request-start budget for the READ lane. DISABLED by default
96
+ * (Infinity) for zero behavior change; the RECOMMENDED value below is
97
+ * 45/min (0.75x the measured binding 60/min per-user read quota).
98
+ */
99
+ readonly QUOTA_READ_BUDGET_PER_WINDOW: number;
100
+ /** Recommended READ budget for a measured 60/min per-user quota (0.75x). */
101
+ readonly RECOMMENDED_QUOTA_READ_BUDGET_PER_WINDOW: 45;
102
+ /**
103
+ * Per-window request-start budget for the WRITE lane. DISABLED by default
104
+ * (Infinity); the RECOMMENDED value below is 10/min, well above the
105
+ * measured 2-5/min write demand.
106
+ */
107
+ readonly QUOTA_WRITE_BUDGET_PER_WINDOW: number;
108
+ /** Recommended WRITE budget for the measured 2-5/min write demand. */
109
+ readonly RECOMMENDED_QUOTA_WRITE_BUDGET_PER_WINDOW: 10;
110
+ /** HTTP status that marks a quota-limited (AIMD signal) response. */
111
+ readonly QUOTA_LIMIT_HTTP_STATUS: 429;
112
+ /** google.rpc code that marks a quota-limited response when no status is present. */
113
+ readonly QUOTA_LIMIT_REMOTE_CODE: "RESOURCE_EXHAUSTED";
114
+ /** Multiplicative decrease: pacing interval factor per observed 429. */
115
+ readonly QUOTA_BACKOFF_GROWTH_FACTOR: 2;
116
+ /** Ceiling for the AIMD pacing multiplier (interval never exceeds 4x base). */
117
+ readonly QUOTA_BACKOFF_MAX_MULTIPLIER: 4;
118
+ /** Additive increase: pacing multiplier divisor per recovery step. */
119
+ readonly QUOTA_RECOVERY_STEP_FACTOR: 2;
120
+ /** Successful request starts of quiet before one recovery step. */
121
+ readonly QUOTA_RECOVERY_SUCCESS_THRESHOLD: 25;
122
+ /** Milliseconds since the last 429 that alone earns a recovery step. */
123
+ readonly QUOTA_RECOVERY_QUIET_MS: 10000;
92
124
  };
93
125
  /** REST `CellFormat.numberFormat` object written by the provider. */
94
126
  export interface GoogleSheetsApiNumberFormat {
@@ -182,8 +214,24 @@ export type GoogleSheetsApiWriteRequest = {
182
214
  readonly kind: "deleteSheet";
183
215
  readonly sheetId: number;
184
216
  };
217
+ /**
218
+ * Optional pool-identity binding carried by every transport request.
219
+ *
220
+ * When the provider runs with a credential pool (N > 1 service accounts),
221
+ * request-start admission selects the pacing slot index and threads it here
222
+ * so the transport signs the call with the SAME credential the admission
223
+ * paced against — the budget/interval an identity respected and the client
224
+ * that hits the wire can never disagree. Absent means "no pool binding":
225
+ * a single-credential provider (the historical default) never sets it, and
226
+ * the transport then falls back to its own round-robin cursor over the pool
227
+ * (or its single default client).
228
+ */
229
+ export interface GoogleSheetsApiCredentialBinding {
230
+ /** Zero-based index into the transport's credential pool. */
231
+ readonly credentialIndex?: number;
232
+ }
185
233
  /** Request shape of one `spreadsheets.get` call. */
186
- export interface GoogleSheetsApiGetSpreadsheetRequest {
234
+ export interface GoogleSheetsApiGetSpreadsheetRequest extends GoogleSheetsApiCredentialBinding {
187
235
  readonly spreadsheetId: string;
188
236
  readonly ranges: readonly string[];
189
237
  readonly fields: string;
@@ -195,12 +243,12 @@ export interface GoogleSheetsApiGetSpreadsheetRequest {
195
243
  readonly timeoutMs?: number;
196
244
  }
197
245
  /** Request shape of one `spreadsheets.batchUpdate` call. */
198
- export interface GoogleSheetsApiBatchUpdateRequest {
246
+ export interface GoogleSheetsApiBatchUpdateRequest extends GoogleSheetsApiCredentialBinding {
199
247
  readonly spreadsheetId: string;
200
248
  readonly requests: readonly GoogleSheetsApiWriteRequest[];
201
249
  }
202
250
  /** Request shape of one `spreadsheets.values.get` call. */
203
- export interface GoogleSheetsApiValuesGetRequest {
251
+ export interface GoogleSheetsApiValuesGetRequest extends GoogleSheetsApiCredentialBinding {
204
252
  readonly spreadsheetId: string;
205
253
  readonly range: string;
206
254
  readonly timeoutMs?: number;
@@ -237,6 +285,13 @@ export interface GoogleSheetsApiRequestEvent {
237
285
  readonly code: Presence<string>;
238
286
  /** Pacing wait before the request-start slot was granted (0 when none). */
239
287
  readonly pacingWaitMs?: number;
288
+ /**
289
+ * Pool identity (zero-based credential index) this request was admitted
290
+ * AND signed with. Absent on the single-credential path, so events stay
291
+ * byte-identical to the pre-pool behavior; only the index is ever
292
+ * reported — never an email, client id, or file path.
293
+ */
294
+ readonly credentialIndex?: number;
240
295
  /** Number of batchUpdate requests in the written batch. */
241
296
  readonly requestCount?: number;
242
297
  /** Serialized batchUpdate body-size estimate in bytes. */
@@ -258,6 +313,18 @@ export interface GoogleSheetsApiRequestEvent {
258
313
  export interface GoogleSheetsApiProviderOptions {
259
314
  /** Stub transport for tests; omitted builds the real ADC-backed client. */
260
315
  readonly transport?: GoogleSheetsApiTransport;
316
+ /**
317
+ * Service-account key-file pool: each entry is a distinct ADC-format JSON
318
+ * key file and therefore a distinct Google quota principal. When 2+ files
319
+ * are configured, request-start pacing (interval, per-minute budgets, and
320
+ * AIMD feedback) runs per identity and outbound calls round-robin across
321
+ * the pool, multiplying the effective per-user read/write quota by N.
322
+ * One entry (or absent) keeps the single-credential path byte-identical
323
+ * to the pre-pool behavior. The provider validates entry SHAPE only; file
324
+ * readability/structure is validated by the sync auto-start bridge before
325
+ * startup, and by the transport when it builds each client.
326
+ */
327
+ readonly serviceAccountKeyFiles?: readonly string[];
261
328
  /** Per-request timeout; defaults to 60 seconds, bounded 1s..120s. */
262
329
  readonly requestTimeoutMs?: number;
263
330
  /**
@@ -282,6 +349,26 @@ export interface GoogleSheetsApiProviderOptions {
282
349
  * the shared write limiter instead of being refused by the read burst.
283
350
  */
284
351
  readonly requestStartMaxWaitMs?: number;
352
+ /**
353
+ * Per-minute request-start budget for the READ lane (sliding window);
354
+ * DISABLED by default (`QUOTA_READ_BUDGET_PER_WINDOW` = Infinity) so the
355
+ * shipped pacing matches the pre-budget behavior exactly. Set it to the
356
+ * documented `RECOMMENDED_QUOTA_READ_BUDGET_PER_WINDOW` (45/min, under the
357
+ * measured binding 60/min per-user read quota) when a per-minute ceiling
358
+ * must be enforced. A start whose budget slot lies more than
359
+ * `requestStartMaxWaitMs` out is refused with the same bounded
360
+ * delivery-uncertain error as interval pacing; the budget and the lane
361
+ * pacing SHARE that one admission bound. `Number.POSITIVE_INFINITY`
362
+ * disables the budget.
363
+ */
364
+ readonly quotaReadBudgetPerMinute?: number;
365
+ /**
366
+ * Per-minute request-start budget for the WRITE lane; DISABLED by default
367
+ * like the read budget. `RECOMMENDED_QUOTA_WRITE_BUDGET_PER_WINDOW`
368
+ * (10/min) sits well above the measured 2-5/min write demand. Same
369
+ * bounded-admission and disable semantics as the read budget.
370
+ */
371
+ readonly quotaWriteBudgetPerMinute?: number;
285
372
  /** Serialized batchUpdate byte budget; defaults to ~2 MB. */
286
373
  readonly maxBatchBytes?: number;
287
374
  /** Injectable clock for limiters and telemetry. */
@@ -1 +1 @@
1
- {"version":3,"file":"googleSheetsApi.d.ts","sourceRoot":"","sources":["../../src/sheets/googleSheetsApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"googleSheetsApi.d.ts","sourceRoot":"","sources":["../../src/sheets/googleSheetsApi.ts"],"names":[],"mappings":"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"}
@@ -90,6 +90,52 @@ export const GOOGLE_SHEETS_API_DEFAULTS = {
90
90
  MAX_EFFECTS_PER_REQUEST: 1_000,
91
91
  /** Append row cap per request, matching the worker's bulk claim window. */
92
92
  MAX_APPEND_ROWS_PER_REQUEST: 1_000,
93
+ // -------------------------------------------------------------------------
94
+ // Adaptive quota governor (transport layer, request-START gating only).
95
+ // The binding quota for the deployed per-user project was measured as 60
96
+ // READs/min: a 30k-effect burst peaked near 69 reads/min, producing 429s
97
+ // on ~4.67% of reads and a delivery-uncertain requeue spiral. Interval
98
+ // pacing alone cannot hold a per-minute ceiling, so a sliding-window
99
+ // budget and 429 AIMD feedback gate request starts on top of it. The
100
+ // budgets are DISABLED by default (Infinity) to keep the shipped defaults
101
+ // behavior-identical to the pre-governor pacing (the 800 ms interval
102
+ // already allows up to 75 starts/min, so any finite per-minute default
103
+ // below that would locally refuse healthy workloads with zero 429s);
104
+ // operators facing a measured per-minute quota ceiling opt in via the
105
+ // RECOMMENDED_* values below.
106
+ // -------------------------------------------------------------------------
107
+ /** Sliding window the per-minute budgets enforce over. */
108
+ QUOTA_BUDGET_WINDOW_MS: 60_000,
109
+ /**
110
+ * Per-window request-start budget for the READ lane. DISABLED by default
111
+ * (Infinity) for zero behavior change; the RECOMMENDED value below is
112
+ * 45/min (0.75x the measured binding 60/min per-user read quota).
113
+ */
114
+ QUOTA_READ_BUDGET_PER_WINDOW: Number.POSITIVE_INFINITY,
115
+ /** Recommended READ budget for a measured 60/min per-user quota (0.75x). */
116
+ RECOMMENDED_QUOTA_READ_BUDGET_PER_WINDOW: 45,
117
+ /**
118
+ * Per-window request-start budget for the WRITE lane. DISABLED by default
119
+ * (Infinity); the RECOMMENDED value below is 10/min, well above the
120
+ * measured 2-5/min write demand.
121
+ */
122
+ QUOTA_WRITE_BUDGET_PER_WINDOW: Number.POSITIVE_INFINITY,
123
+ /** Recommended WRITE budget for the measured 2-5/min write demand. */
124
+ RECOMMENDED_QUOTA_WRITE_BUDGET_PER_WINDOW: 10,
125
+ /** HTTP status that marks a quota-limited (AIMD signal) response. */
126
+ QUOTA_LIMIT_HTTP_STATUS: 429,
127
+ /** google.rpc code that marks a quota-limited response when no status is present. */
128
+ QUOTA_LIMIT_REMOTE_CODE: "RESOURCE_EXHAUSTED",
129
+ /** Multiplicative decrease: pacing interval factor per observed 429. */
130
+ QUOTA_BACKOFF_GROWTH_FACTOR: 2,
131
+ /** Ceiling for the AIMD pacing multiplier (interval never exceeds 4x base). */
132
+ QUOTA_BACKOFF_MAX_MULTIPLIER: 4,
133
+ /** Additive increase: pacing multiplier divisor per recovery step. */
134
+ QUOTA_RECOVERY_STEP_FACTOR: 2,
135
+ /** Successful request starts of quiet before one recovery step. */
136
+ QUOTA_RECOVERY_SUCCESS_THRESHOLD: 25,
137
+ /** Milliseconds since the last 429 that alone earns a recovery step. */
138
+ QUOTA_RECOVERY_QUIET_MS: 10_000,
93
139
  };
94
140
  /** A1-notation helpers shared with the provider's model normalization. */
95
141
  /** Converts A1 column letters to a 1-based column number. */
@@ -1 +1 @@
1
- {"version":3,"file":"googleSheetsApi.js","sourceRoot":"","sources":["../../src/sheets/googleSheetsApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,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;;;;;;;;;OASG;IACH,eAAe,EAAE,MAAM;IACvB,2EAA2E;IAC3E,mBAAmB,EAAE,MAAM;IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,yBAAyB,EAAE,GAAG;IAC9B;;;;;;;;;OASG;IACH,mCAAmC,EAAE,KAAK;IAC1C;;;;;OAKG;IACH,uBAAuB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IACxC;;;;;OAKG;IACH,uBAAuB,EAAE,KAAK;IAC9B,2EAA2E;IAC3E,2BAA2B,EAAE,KAAK;CAC1B,CAAC;AA8NX,0EAA0E;AAE1E,6DAA6D;AAC7D,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,KAAK,GAAG,MAAM,CAAC;IACnB,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACnC,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC;QACxD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"googleSheetsApi.js","sourceRoot":"","sources":["../../src/sheets/googleSheetsApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,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;;;;;;;;;OASG;IACH,eAAe,EAAE,MAAM;IACvB,2EAA2E;IAC3E,mBAAmB,EAAE,MAAM;IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,yBAAyB,EAAE,GAAG;IAC9B;;;;;;;;;OASG;IACH,mCAAmC,EAAE,KAAK;IAC1C;;;;;OAKG;IACH,uBAAuB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IACxC;;;;;OAKG;IACH,uBAAuB,EAAE,KAAK;IAC9B,2EAA2E;IAC3E,2BAA2B,EAAE,KAAK;IAClC,4EAA4E;IAC5E,wEAAwE;IACxE,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,qEAAqE;IACrE,qEAAqE;IACrE,0EAA0E;IAC1E,qEAAqE;IACrE,uEAAuE;IACvE,qEAAqE;IACrE,sEAAsE;IACtE,8BAA8B;IAC9B,4EAA4E;IAC5E,0DAA0D;IAC1D,sBAAsB,EAAE,MAAM;IAC9B;;;;OAIG;IACH,4BAA4B,EAAE,MAAM,CAAC,iBAAiB;IACtD,4EAA4E;IAC5E,wCAAwC,EAAE,EAAE;IAC5C;;;;OAIG;IACH,6BAA6B,EAAE,MAAM,CAAC,iBAAiB;IACvD,sEAAsE;IACtE,yCAAyC,EAAE,EAAE;IAC7C,qEAAqE;IACrE,uBAAuB,EAAE,GAAG;IAC5B,qFAAqF;IACrF,uBAAuB,EAAE,oBAAoB;IAC7C,wEAAwE;IACxE,2BAA2B,EAAE,CAAC;IAC9B,+EAA+E;IAC/E,4BAA4B,EAAE,CAAC;IAC/B,sEAAsE;IACtE,0BAA0B,EAAE,CAAC;IAC7B,mEAAmE;IACnE,gCAAgC,EAAE,EAAE;IACpC,wEAAwE;IACxE,uBAAuB,EAAE,MAAM;CACvB,CAAC;AAsRX,0EAA0E;AAE1E,6DAA6D;AAC7D,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,KAAK,GAAG,MAAM,CAAC;IACnB,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACnC,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC;QACxD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AAC9C,CAAC"}
@@ -67,11 +67,16 @@ export declare class GoogleSheetsApiSyncProvider implements SyncEffectWorkerProv
67
67
  private readonly maxBatchBytes;
68
68
  private readonly readScheduler;
69
69
  private readonly writeLimiter;
70
+ private readonly readBudget;
71
+ private readonly writeBudget;
72
+ private readonly quotaGovernor;
70
73
  /** Bounded admission: independent max request-start wait (default 5,000
71
74
  * ms), separate from the pacing interval. */
72
75
  private readonly maxRequestStartWaitMs;
73
76
  private readonly now;
74
77
  private readonly onRequest;
78
+ /** Per-identity pacing pool (2+ credentials only); undefined single-slot. */
79
+ private readonly credentialPacing;
75
80
  private readonly deps;
76
81
  constructor(options: GoogleSheetsApiSyncProviderOptions);
77
82
  /** Exposes the configured outbound timeout (used by lease-headroom checks). */
@@ -1 +1 @@
1
- {"version":3,"file":"GoogleSheetsApiSyncProvider.d.ts","sourceRoot":"","sources":["../../../../../../../src/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GoogleSheetsApiSyncProvider.d.ts","sourceRoot":"","sources":["../../../../../../../src/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,7 @@ import { GoogleSheetsApiHttpTransport, } from "./transport/googleSheetsApiTransp
41
41
  import { ReceiptReadCursor } from "./model/receiptCursor.js";
42
42
  import { createReadCalibration } from "./model/readPlan.js";
43
43
  import { RequestStartLimiter, ReadQoSScheduler } from "./transport/rateLimiter.js";
44
+ import { QUOTA_GOVERNOR_LANES, QuotaPacingGovernor, RollingQuotaBudget, } from "./transport/quotaGovernor.js";
44
45
  import { PromiseTailLock } from "./operations/shared.js";
45
46
  import { fastAppendRows, } from "./operations/fastAppend.js";
46
47
  import { applyEffects, applyPreparedEffects as applyPreparedEffectsOp, preflightApplyEffects as preflightApplyEffectsOp, readEffectPostcondition, readEffectPostconditions, } from "./operations/applyEffects.js";
@@ -73,11 +74,16 @@ export class GoogleSheetsApiSyncProvider {
73
74
  maxBatchBytes;
74
75
  readScheduler;
75
76
  writeLimiter;
77
+ readBudget;
78
+ writeBudget;
79
+ quotaGovernor;
76
80
  /** Bounded admission: independent max request-start wait (default 5,000
77
81
  * ms), separate from the pacing interval. */
78
82
  maxRequestStartWaitMs;
79
83
  now;
80
84
  onRequest;
85
+ /** Per-identity pacing pool (2+ credentials only); undefined single-slot. */
86
+ credentialPacing;
81
87
  deps;
82
88
  constructor(options) {
83
89
  if (options.definitions.length === 0) {
@@ -107,23 +113,91 @@ export class GoogleSheetsApiSyncProvider {
107
113
  const intervalMs = options.rateLimitIntervalMs ?? GOOGLE_SHEETS_API_DEFAULTS.REQUEST_START_INTERVAL_MS;
108
114
  const maxAdmissionWaitMs = options.requestStartMaxWaitMs
109
115
  ?? GOOGLE_SHEETS_API_DEFAULTS.REQUEST_START_MAX_ADMISSION_WAIT_MS;
116
+ const readBudgetPerMinute = options.quotaReadBudgetPerMinute
117
+ ?? GOOGLE_SHEETS_API_DEFAULTS.QUOTA_READ_BUDGET_PER_WINDOW;
118
+ const writeBudgetPerMinute = options.quotaWriteBudgetPerMinute
119
+ ?? GOOGLE_SHEETS_API_DEFAULTS.QUOTA_WRITE_BUDGET_PER_WINDOW;
120
+ for (const budget of [readBudgetPerMinute, writeBudgetPerMinute]) {
121
+ if (budget !== Number.POSITIVE_INFINITY &&
122
+ (!Number.isSafeInteger(budget) || budget < 1)) {
123
+ invalidProviderRequest("Google Sheets API sync provider", "quota budget must be a positive safe integer or Infinity");
124
+ }
125
+ }
126
+ // Credential-pool shape validation: every entry must be a non-empty
127
+ // path string. File readability/structure is validated by the sync
128
+ // auto-start bridge before startup and by the transport when it builds
129
+ // each client; an injected stub transport never touches the files.
130
+ const serviceAccountKeyFiles = options.serviceAccountKeyFiles ?? [];
131
+ for (const keyFile of serviceAccountKeyFiles) {
132
+ if (typeof keyFile !== "string" || keyFile.trim() === "") {
133
+ invalidProviderRequest("Google Sheets API sync provider", "serviceAccountKeyFiles entries must be non-empty paths");
134
+ }
135
+ }
110
136
  this.spreadsheetId = options.spreadsheetId;
111
137
  this.definitions = options.definitions;
112
- this.transport = options.transport ?? new GoogleSheetsApiHttpTransport({ requestTimeoutMs });
138
+ this.transport = options.transport ?? new GoogleSheetsApiHttpTransport({
139
+ requestTimeoutMs,
140
+ ...(serviceAccountKeyFiles.length === 0
141
+ ? {}
142
+ : { serviceAccountKeyFiles }),
143
+ });
113
144
  this.transportTimeoutMs = requestTimeoutMs;
114
145
  this.readTimeoutMs = readTimeoutMs;
115
146
  this.maxBatchBytes = maxBatchBytes;
116
147
  this.now = options.now ?? Date.now;
117
- this.readScheduler = new ReadQoSScheduler({
118
- intervalMs,
119
- now: this.now,
120
- ...(options.sleep === undefined ? {} : { sleep: options.sleep }),
121
- });
122
- this.writeLimiter = new RequestStartLimiter({
123
- intervalMs,
124
- now: this.now,
125
- ...(options.sleep === undefined ? {} : { sleep: options.sleep }),
126
- });
148
+ // One complete admission stack per pooled credential. Google Sheets
149
+ // quota is per principal, so N service accounts pace N independent
150
+ // identities; the round-robin selection in `admitRequestStart` binds
151
+ // each request's pacing AND its signing client to the same index. With
152
+ // one credential (or an unset pool) the flat single-slot wiring below
153
+ // is byte-identical to the pre-pool provider.
154
+ const slotCount = Math.max(serviceAccountKeyFiles.length, 1);
155
+ const slots = [];
156
+ for (let slot = 0; slot < slotCount; slot += 1) {
157
+ // Adaptive quota governor: the AIMD multiplier starts at 1x, so with
158
+ // no 429 ever observed each lane paces exactly as before this wiring
159
+ // existed.
160
+ const quotaGovernor = new QuotaPacingGovernor({
161
+ baseIntervalMs: intervalMs,
162
+ now: this.now,
163
+ });
164
+ slots.push({
165
+ quotaGovernor,
166
+ readBudget: new RollingQuotaBudget({
167
+ maxStartsPerWindow: readBudgetPerMinute,
168
+ windowMs: GOOGLE_SHEETS_API_DEFAULTS.QUOTA_BUDGET_WINDOW_MS,
169
+ now: this.now,
170
+ ...(options.sleep === undefined ? {} : { sleep: options.sleep }),
171
+ }),
172
+ writeBudget: new RollingQuotaBudget({
173
+ maxStartsPerWindow: writeBudgetPerMinute,
174
+ windowMs: GOOGLE_SHEETS_API_DEFAULTS.QUOTA_BUDGET_WINDOW_MS,
175
+ now: this.now,
176
+ ...(options.sleep === undefined ? {} : { sleep: options.sleep }),
177
+ }),
178
+ readScheduler: new ReadQoSScheduler({
179
+ intervalMs,
180
+ getIntervalMs: () => quotaGovernor.intervalMsFor(QUOTA_GOVERNOR_LANES.READ),
181
+ now: this.now,
182
+ ...(options.sleep === undefined ? {} : { sleep: options.sleep }),
183
+ }),
184
+ writeLimiter: new RequestStartLimiter({
185
+ intervalMs,
186
+ getIntervalMs: () => quotaGovernor.intervalMsFor(QUOTA_GOVERNOR_LANES.WRITE),
187
+ now: this.now,
188
+ ...(options.sleep === undefined ? {} : { sleep: options.sleep }),
189
+ }),
190
+ });
191
+ }
192
+ const slot0 = slots[0];
193
+ this.quotaGovernor = slot0.quotaGovernor;
194
+ this.readBudget = slot0.readBudget;
195
+ this.writeBudget = slot0.writeBudget;
196
+ this.readScheduler = slot0.readScheduler;
197
+ this.writeLimiter = slot0.writeLimiter;
198
+ this.credentialPacing = slotCount < 2
199
+ ? undefined
200
+ : { slots, nextIndex: 0 };
127
201
  // Admission bound is independent of the pacing interval: a postcondition
128
202
  // read (paced on the WRITE limiter) is allowed to wait a few intervals for
129
203
  // the write slot, while the interval still spaces request STARTS for quota
@@ -146,7 +220,13 @@ export class GoogleSheetsApiSyncProvider {
146
220
  maxBatchBytes: this.maxBatchBytes,
147
221
  readScheduler: this.readScheduler,
148
222
  writeLimiter: this.writeLimiter,
223
+ readBudget: this.readBudget,
224
+ writeBudget: this.writeBudget,
225
+ quotaGovernor: this.quotaGovernor,
149
226
  maxRequestStartWaitMs: this.maxRequestStartWaitMs,
227
+ ...(this.credentialPacing === undefined
228
+ ? {}
229
+ : { credentialPacing: this.credentialPacing }),
150
230
  now: this.now,
151
231
  onRequest: this.onRequest,
152
232
  };
@@ -1 +1 @@
1
- {"version":3,"file":"GoogleSheetsApiSyncProvider.js","sourceRoot":"","sources":["../../../../../../../src/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GoogleSheetsApiSyncProvider.js","sourceRoot":"","sources":["../../../../../../../src/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.ts"],"names":[],"mappings":"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"}
@@ -161,7 +161,9 @@ export interface ParsedSpreadsheetDocument {
161
161
  export declare function enumerateSheetProperties(transport: GoogleSheetsApiTransport, spreadsheetId: string, timeoutMs?: number,
162
162
  /** Receives the RAW transport document before parsing — telemetry measures
163
163
  * the true response size from it (the parsed result loses wire detail). */
164
- onRawResponse?: (raw: unknown) => void): Promise<readonly ParsedSheet[]>;
164
+ onRawResponse?: (raw: unknown) => void,
165
+ /** Admitted pool identity to bind this call to (absent = no binding). */
166
+ credentialIndex?: number): Promise<readonly ParsedSheet[]>;
165
167
  /**
166
168
  * Read-shape options for one steady-state preflight data read.
167
169
  *