@abloatai/transaction 0.59.0 → 0.59.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 (173) hide show
  1. package/dist/auth/capability.d.ts +15 -15
  2. package/dist/auth/capabilityLifecycle.d.ts +2 -2
  3. package/dist/auth/credentialEndpoint.js.map +1 -1
  4. package/dist/auth/credentialSource.js.map +1 -1
  5. package/dist/auth/identity.js.map +1 -1
  6. package/dist/auth/schemas.d.ts +5 -5
  7. package/dist/auth/sessionIssuanceProtocol.d.ts +8 -8
  8. package/dist/auth/sessionIssuanceProtocol.d.ts.map +1 -1
  9. package/dist/branches.d.ts +38 -38
  10. package/dist/claims/contract.d.ts +27 -27
  11. package/dist/claims/eventContract.d.ts +18 -18
  12. package/dist/claims/routes.d.ts +9 -9
  13. package/dist/claims/routes.d.ts.map +1 -1
  14. package/dist/claims/trace.d.ts.map +1 -1
  15. package/dist/claims/trace.js.map +1 -1
  16. package/dist/client/ablo.d.ts +6 -5
  17. package/dist/client/ablo.d.ts.map +1 -1
  18. package/dist/client/ablo.js +0 -8
  19. package/dist/client/ablo.js.map +1 -1
  20. package/dist/client/resources/httpResources.js.map +1 -1
  21. package/dist/client/resources/modelOperations.d.ts +6 -6
  22. package/dist/client/resources/modelOperations.d.ts.map +1 -1
  23. package/dist/client/resources/where.d.ts +12 -12
  24. package/dist/client/surface.d.ts +2 -2
  25. package/dist/client/surface.d.ts.map +1 -1
  26. package/dist/client/surface.js +7 -0
  27. package/dist/client/surface.js.map +1 -1
  28. package/dist/commit/confirmation/commitEnvelope.d.ts +7 -7
  29. package/dist/commit/confirmation/httpCommitEnvelope.d.ts +1 -1
  30. package/dist/commit/confirmation/pendingWrite.d.ts +5 -5
  31. package/dist/commit/contract.d.ts +249 -249
  32. package/dist/commit/contract.d.ts.map +1 -1
  33. package/dist/commit/recordRuntime.d.ts +3 -2
  34. package/dist/commit/recordRuntime.d.ts.map +1 -1
  35. package/dist/commit/recordRuntime.js +1 -0
  36. package/dist/commit/recordRuntime.js.map +1 -1
  37. package/dist/coordination/schema.d.ts +54 -54
  38. package/dist/coordination/schema.js.map +1 -1
  39. package/dist/environment.d.ts +3 -3
  40. package/dist/environment.d.ts.map +1 -1
  41. package/dist/environment.js.map +1 -1
  42. package/dist/errorCodes.d.ts +6 -5
  43. package/dist/errorCodes.d.ts.map +1 -1
  44. package/dist/errorCodes.js +2 -1
  45. package/dist/errorCodes.js.map +1 -1
  46. package/dist/errorObservation.d.ts +14 -14
  47. package/dist/errors.d.ts +11 -11
  48. package/dist/errors.d.ts.map +1 -1
  49. package/dist/errors.js +16 -1
  50. package/dist/errors.js.map +1 -1
  51. package/dist/index.d.ts +1 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js.map +1 -1
  54. package/dist/keys/index.d.ts +1 -1
  55. package/dist/keys/index.d.ts.map +1 -1
  56. package/dist/keys/index.js.map +1 -1
  57. package/dist/observation/contract.d.ts +34 -34
  58. package/dist/observation/feedContract.d.ts +86 -86
  59. package/dist/observation/persistence/syncDeltaRow.d.ts +23 -23
  60. package/dist/observation/persistence/syncDeltaRow.d.ts.map +1 -1
  61. package/dist/pricing.d.ts +12 -12
  62. package/dist/schema/audit.js.map +1 -1
  63. package/dist/schema/ddl.js.map +1 -1
  64. package/dist/schema/ddlLock.js.map +1 -1
  65. package/dist/schema/deployment/contracts.d.ts +64 -64
  66. package/dist/schema/deployment/index.d.ts.map +1 -1
  67. package/dist/schema/deployment/index.js +52 -3
  68. package/dist/schema/deployment/index.js.map +1 -1
  69. package/dist/schema/deployment/reconcile.d.ts +2 -2
  70. package/dist/schema/deployment/reconcile.d.ts.map +1 -1
  71. package/dist/schema/deployment/reconcile.js +98 -6
  72. package/dist/schema/deployment/reconcile.js.map +1 -1
  73. package/dist/schema/diff.js.map +1 -1
  74. package/dist/schema/field.d.ts +1 -1
  75. package/dist/schema/field.d.ts.map +1 -1
  76. package/dist/schema/loadStrategy.d.ts +2 -2
  77. package/dist/schema/loadStrategy.d.ts.map +1 -1
  78. package/dist/schema/openapi.js.map +1 -1
  79. package/dist/schema/relation.d.ts +3 -3
  80. package/dist/schema/relation.d.ts.map +1 -1
  81. package/dist/schema/residency.d.ts +1 -1
  82. package/dist/schema/roles.d.ts +1 -1
  83. package/dist/schema/roles.d.ts.map +1 -1
  84. package/dist/schema/roles.js.map +1 -1
  85. package/dist/schema/schema.d.ts +1 -1
  86. package/dist/schema/schema.d.ts.map +1 -1
  87. package/dist/schema/serialize.js.map +1 -1
  88. package/dist/schema/sugar.d.ts.map +1 -1
  89. package/dist/schema/tenancy.d.ts +2 -2
  90. package/dist/server/storageMode.d.ts +1 -1
  91. package/dist/source/adapters/adapterProfile.d.ts +6 -6
  92. package/dist/source/adapters/conformance.js.map +1 -1
  93. package/dist/source/adapters/contract.d.ts +14 -14
  94. package/dist/source/adapters/kysely.js.map +1 -1
  95. package/dist/source/adapters/memory.js.map +1 -1
  96. package/dist/source/adapters/prisma.js.map +1 -1
  97. package/dist/source/connector/client.d.ts.map +1 -1
  98. package/dist/source/connector/client.js.map +1 -1
  99. package/dist/source/connector/protocol.d.ts.map +1 -1
  100. package/dist/source/delivery/pushQueue.d.ts.map +1 -1
  101. package/dist/source/delivery/pushQueue.js.map +1 -1
  102. package/dist/source/endpoint/signing.d.ts +4 -4
  103. package/dist/source/endpoint/signing.d.ts.map +1 -1
  104. package/dist/source/outbox/contract.d.ts +4 -4
  105. package/dist/testing/fixtures/httpResponses.d.ts +2 -2
  106. package/dist/testing/fixtures/httpResponses.d.ts.map +1 -1
  107. package/dist/testing/fixtures/httpResponses.js.map +1 -1
  108. package/dist/transport/connection/credentialLifecycle.d.ts.map +1 -1
  109. package/dist/transport/connection/credentialLifecycle.js.map +1 -1
  110. package/dist/transport/connection/manager.d.ts.map +1 -1
  111. package/dist/transport/connection/manager.js.map +1 -1
  112. package/dist/transport/connection/networkProbe.d.ts +18 -5
  113. package/dist/transport/connection/networkProbe.d.ts.map +1 -1
  114. package/dist/transport/connection/networkProbe.js.map +1 -1
  115. package/dist/transport/http/client.d.ts +37 -1
  116. package/dist/transport/http/client.d.ts.map +1 -1
  117. package/dist/transport/http/client.js +117 -2
  118. package/dist/transport/http/client.js.map +1 -1
  119. package/dist/transport/http/transport.d.ts +21 -0
  120. package/dist/transport/http/transport.d.ts.map +1 -1
  121. package/dist/transport/http/transport.js +93 -5
  122. package/dist/transport/http/transport.js.map +1 -1
  123. package/dist/transport/websocket/commitFrames.d.ts +4 -3
  124. package/dist/transport/websocket/commitFrames.d.ts.map +1 -1
  125. package/dist/transport/websocket/commitFrames.js +1 -0
  126. package/dist/transport/websocket/commitFrames.js.map +1 -1
  127. package/dist/transport/websocket/contextSubscription.d.ts +6 -0
  128. package/dist/transport/websocket/contextSubscription.d.ts.map +1 -0
  129. package/dist/transport/websocket/contextSubscription.js +45 -0
  130. package/dist/transport/websocket/contextSubscription.js.map +1 -0
  131. package/dist/transport/websocket/heartbeat.d.ts.map +1 -1
  132. package/dist/transport/websocket/heartbeat.js.map +1 -1
  133. package/dist/transport/websocket/session.d.ts +4 -0
  134. package/dist/transport/websocket/session.d.ts.map +1 -0
  135. package/dist/transport/websocket/session.js +385 -0
  136. package/dist/transport/websocket/session.js.map +1 -0
  137. package/dist/transport/websocket/sessionContract.d.ts +89 -0
  138. package/dist/transport/websocket/sessionContract.d.ts.map +1 -0
  139. package/dist/transport/websocket/sessionContract.js +2 -0
  140. package/dist/transport/websocket/sessionContract.js.map +1 -0
  141. package/dist/transport/websocket/transport.d.ts +22 -0
  142. package/dist/transport/websocket/transport.d.ts.map +1 -1
  143. package/dist/transport/websocket/transport.js +63 -1
  144. package/dist/transport/websocket/transport.js.map +1 -1
  145. package/dist/wire/accountResponses.d.ts +31 -31
  146. package/dist/wire/auth.d.ts +3 -3
  147. package/dist/wire/bootstrapReason.d.ts +2 -2
  148. package/dist/wire/dataSourceResponses.d.ts +2 -2
  149. package/dist/wire/dataSourceResponses.d.ts.map +1 -1
  150. package/dist/wire/frames.d.ts +8 -8
  151. package/dist/wire/inboundFrames.d.ts +56 -56
  152. package/dist/wire/inboundFrames.d.ts.map +1 -1
  153. package/dist/wire/listEnvelope.js.map +1 -1
  154. package/dist/wire/modelResponses.d.ts +2 -2
  155. package/dist/wire/modelShape.d.ts +4 -4
  156. package/dist/wire/pricing.d.ts +3 -3
  157. package/dist/wire/protocolVersion.d.ts.map +1 -1
  158. package/package.json +2 -1
  159. package/src/client/ablo.ts +10 -5
  160. package/src/client/surface.ts +8 -1
  161. package/src/commit/recordRuntime.ts +4 -2
  162. package/src/errorCodes.ts +5 -1
  163. package/src/errors.ts +18 -1
  164. package/src/index.ts +1 -0
  165. package/src/schema/deployment/index.ts +54 -3
  166. package/src/schema/deployment/reconcile.ts +122 -6
  167. package/src/transport/http/client.ts +171 -4
  168. package/src/transport/http/transport.ts +126 -4
  169. package/src/transport/websocket/commitFrames.ts +5 -3
  170. package/src/transport/websocket/contextSubscription.ts +55 -0
  171. package/src/transport/websocket/session.ts +467 -0
  172. package/src/transport/websocket/sessionContract.ts +115 -0
  173. package/src/transport/websocket/transport.ts +72 -0
@@ -203,6 +203,7 @@ export interface CoreSyncEventMap {
203
203
  presence_update: [PresenceUpdate];
204
204
  error: [Error];
205
205
  session_error: [Error];
206
+ protocol_mismatch: [CloseEvent];
206
207
  /**
207
208
  * The WebSocket `onclose` fired before `onopen` — the handshake itself
208
209
  * failed. The browser cannot expose the HTTP status (it shows as code
@@ -998,6 +999,77 @@ export class WsTransport<
998
999
  }
999
1000
  }
1000
1001
 
1002
+ /**
1003
+ * Ask the server for every durable delta after the supplied position.
1004
+ *
1005
+ * This is deliberately part of the carrier rather than the reactive
1006
+ * materialiser: browser stores and headless WebSocket clients resume the same
1007
+ * ordered protocol. The owner decides when a received position is durable
1008
+ * enough to acknowledge.
1009
+ */
1010
+ requestSync(position: {
1011
+ readonly cursor?: string | null;
1012
+ readonly lastSyncId: number;
1013
+ }): void {
1014
+ if (this.ws?.readyState !== WebSocket.OPEN) {
1015
+ throw this.notConnectedError('sync_request');
1016
+ }
1017
+ const capabilities = Object.entries(this.options.capabilities)
1018
+ .filter(([, enabled]) => enabled)
1019
+ .map(([name]) => name);
1020
+ this.send({
1021
+ type: 'sync_request',
1022
+ payload: {
1023
+ cursor: position.cursor ?? null,
1024
+ lastSyncId: position.lastSyncId,
1025
+ capabilities,
1026
+ protocolVersion: PROTOCOL_VERSION,
1027
+ },
1028
+ });
1029
+ }
1030
+
1031
+ /** Persist the server-side resume position after the caller durably applied it. */
1032
+ acknowledge(lastSyncId: number): void {
1033
+ if (!Number.isSafeInteger(lastSyncId) || lastSyncId < 0) {
1034
+ throw new AbloValidationError('acknowledge requires a non-negative safe integer.', {
1035
+ code: 'invalid_request',
1036
+ });
1037
+ }
1038
+ if (this.ws?.readyState !== WebSocket.OPEN) return;
1039
+ this.send({ type: 'ack', payload: { lastSyncId } });
1040
+ }
1041
+
1042
+ /** Announce this participant's current presence on the shared connection. */
1043
+ updatePresence(input: {
1044
+ readonly status?: 'online' | 'away' | 'offline';
1045
+ readonly customStatus?: string;
1046
+ readonly timezone?: string;
1047
+ readonly activity?: Record<string, unknown>;
1048
+ } = {}): void {
1049
+ if (this.ws?.readyState !== WebSocket.OPEN) {
1050
+ throw this.notConnectedError('presence_update');
1051
+ }
1052
+ let timezone = input.timezone;
1053
+ if (!timezone) {
1054
+ try {
1055
+ timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
1056
+ } catch {
1057
+ timezone = 'UTC';
1058
+ }
1059
+ }
1060
+ this.send({
1061
+ type: 'presence_update',
1062
+ payload: {
1063
+ status: input.status ?? 'online',
1064
+ timezone,
1065
+ ...(input.customStatus !== undefined
1066
+ ? { customStatus: input.customStatus }
1067
+ : {}),
1068
+ ...(input.activity !== undefined ? { activity: input.activity } : {}),
1069
+ },
1070
+ });
1071
+ }
1072
+
1001
1073
  /**
1002
1074
  * Sends a `commit` mutation request over the existing WebSocket and resolves
1003
1075
  * when the server's `mutation_result` frame comes back with the same