@abloatai/transaction 0.51.0 → 0.52.0

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 (164) hide show
  1. package/dist/ablo.d.ts +1 -1
  2. package/dist/ablo.js +1 -1
  3. package/dist/ai-sdk/updateTool.d.ts +1 -1
  4. package/dist/ai-sdk/updateTool.js +1 -1
  5. package/dist/auth/capability.d.ts +2 -2
  6. package/dist/auth/capability.js +1 -1
  7. package/dist/auth/index.d.ts +6 -1
  8. package/dist/auth/index.d.ts.map +1 -1
  9. package/dist/auth/index.js +25 -20
  10. package/dist/auth/index.js.map +1 -1
  11. package/dist/auth/schemas.d.ts +24 -1
  12. package/dist/auth/schemas.d.ts.map +1 -1
  13. package/dist/auth/schemas.js +8 -2
  14. package/dist/auth/schemas.js.map +1 -1
  15. package/dist/auth/sessionIssuanceProtocol.d.ts +41 -0
  16. package/dist/auth/sessionIssuanceProtocol.d.ts.map +1 -0
  17. package/dist/auth/sessionIssuanceProtocol.js +48 -0
  18. package/dist/auth/sessionIssuanceProtocol.js.map +1 -0
  19. package/dist/auth/sessionMint.js +2 -2
  20. package/dist/branches.d.ts +4 -4
  21. package/dist/coordination/schema.d.ts +3 -2
  22. package/dist/coordination/schema.d.ts.map +1 -1
  23. package/dist/coordination/schema.js +7 -2
  24. package/dist/coordination/schema.js.map +1 -1
  25. package/dist/errorCodes.d.ts +3 -2
  26. package/dist/errorCodes.d.ts.map +1 -1
  27. package/dist/errorCodes.js +4 -3
  28. package/dist/errorCodes.js.map +1 -1
  29. package/dist/errors.d.ts +1 -1
  30. package/dist/errors.js +1 -1
  31. package/dist/resources/httpResources.d.ts +3 -2
  32. package/dist/resources/httpResources.d.ts.map +1 -1
  33. package/dist/resources/modelOperations.d.ts +6 -6
  34. package/dist/schema/ddl.d.ts.map +1 -1
  35. package/dist/schema/ddl.js +9 -12
  36. package/dist/schema/ddl.js.map +1 -1
  37. package/dist/schema/field.d.ts +3 -3
  38. package/dist/schema/field.js +2 -2
  39. package/dist/schema/fieldRef.d.ts +1 -1
  40. package/dist/schema/generate.d.ts +2 -3
  41. package/dist/schema/generate.d.ts.map +1 -1
  42. package/dist/schema/generate.js +2 -8
  43. package/dist/schema/generate.js.map +1 -1
  44. package/dist/schema/index.d.ts +2 -2
  45. package/dist/schema/index.js +3 -3
  46. package/dist/schema/model.d.ts +7 -7
  47. package/dist/schema/model.js +2 -2
  48. package/dist/schema/openapi.d.ts.map +1 -1
  49. package/dist/schema/openapi.js +4 -7
  50. package/dist/schema/openapi.js.map +1 -1
  51. package/dist/schema/queries.d.ts +1 -1
  52. package/dist/schema/queries.js +1 -1
  53. package/dist/schema/relation.d.ts +8 -8
  54. package/dist/schema/relation.js +5 -5
  55. package/dist/schema/schema.d.ts +24 -37
  56. package/dist/schema/schema.d.ts.map +1 -1
  57. package/dist/schema/schema.js +15 -28
  58. package/dist/schema/schema.js.map +1 -1
  59. package/dist/schema/sugar.d.ts +7 -7
  60. package/dist/schema/sugar.js +5 -5
  61. package/dist/server/commit.d.ts +5 -1
  62. package/dist/server/commit.d.ts.map +1 -1
  63. package/dist/source/adapters/drizzle.d.ts.map +1 -1
  64. package/dist/source/adapters/drizzle.js +5 -0
  65. package/dist/source/adapters/drizzle.js.map +1 -1
  66. package/dist/source/adapters/kysely.d.ts.map +1 -1
  67. package/dist/source/adapters/kysely.js +33 -8
  68. package/dist/source/adapters/kysely.js.map +1 -1
  69. package/dist/source/adapters/kyselyMutationCore.d.ts +1 -1
  70. package/dist/source/adapters/kyselyMutationCore.d.ts.map +1 -1
  71. package/dist/source/adapters/kyselyMutationCore.js +58 -20
  72. package/dist/source/adapters/kyselyMutationCore.js.map +1 -1
  73. package/dist/source/adapters/memory.d.ts.map +1 -1
  74. package/dist/source/adapters/memory.js +5 -0
  75. package/dist/source/adapters/memory.js.map +1 -1
  76. package/dist/source/adapters/prisma.d.ts.map +1 -1
  77. package/dist/source/adapters/prisma.js +6 -1
  78. package/dist/source/adapters/prisma.js.map +1 -1
  79. package/dist/source/conformance.js +21 -21
  80. package/dist/source/contract.d.ts +17 -0
  81. package/dist/source/contract.d.ts.map +1 -1
  82. package/dist/source/contract.js +31 -0
  83. package/dist/source/contract.js.map +1 -1
  84. package/dist/source/index.d.ts +1 -1
  85. package/dist/source/index.d.ts.map +1 -1
  86. package/dist/source/index.js +1 -1
  87. package/dist/source/index.js.map +1 -1
  88. package/dist/source/types.d.ts +1 -0
  89. package/dist/source/types.d.ts.map +1 -1
  90. package/dist/source/types.js.map +1 -1
  91. package/dist/transactionLayer.d.ts +3 -3
  92. package/dist/transactionLayer.js +3 -3
  93. package/dist/transport/httpClient.d.ts +6 -2
  94. package/dist/transport/httpClient.d.ts.map +1 -1
  95. package/dist/transport/httpClient.js.map +1 -1
  96. package/dist/transport/httpTransport.d.ts +1 -0
  97. package/dist/transport/httpTransport.d.ts.map +1 -1
  98. package/dist/transport/httpTransport.js +50 -4
  99. package/dist/transport/httpTransport.js.map +1 -1
  100. package/dist/transport/wsFrameHandlers.d.ts.map +1 -1
  101. package/dist/transport/wsFrameHandlers.js +3 -0
  102. package/dist/transport/wsFrameHandlers.js.map +1 -1
  103. package/dist/types/streams.d.ts +2 -2
  104. package/dist/wire/accountResponses.js +2 -2
  105. package/dist/wire/accountResponses.js.map +1 -1
  106. package/dist/wire/commit.d.ts +144 -0
  107. package/dist/wire/commit.d.ts.map +1 -1
  108. package/dist/wire/commit.js +22 -1
  109. package/dist/wire/commit.js.map +1 -1
  110. package/dist/wire/frames.d.ts +4 -0
  111. package/dist/wire/frames.d.ts.map +1 -1
  112. package/dist/wire/inboundFrames.d.ts +22 -0
  113. package/dist/wire/inboundFrames.d.ts.map +1 -1
  114. package/dist/wire/index.d.ts +2 -2
  115. package/dist/wire/index.d.ts.map +1 -1
  116. package/dist/wire/index.js +1 -1
  117. package/dist/wire/index.js.map +1 -1
  118. package/dist/wire/protocol.d.ts +1 -1
  119. package/dist/wire/protocol.js +1 -1
  120. package/package.json +1 -1
  121. package/src/ablo.ts +1 -1
  122. package/src/ai-sdk/updateTool.ts +1 -1
  123. package/src/auth/capability.ts +3 -3
  124. package/src/auth/index.ts +51 -20
  125. package/src/auth/schemas.ts +16 -2
  126. package/src/auth/sessionIssuanceProtocol.ts +57 -0
  127. package/src/auth/sessionMint.ts +2 -2
  128. package/src/coordination/schema.ts +7 -2
  129. package/src/errorCodes.ts +10 -4
  130. package/src/errors.ts +1 -1
  131. package/src/resources/httpResources.ts +3 -2
  132. package/src/resources/modelOperations.ts +6 -6
  133. package/src/schema/ddl.ts +9 -13
  134. package/src/schema/field.ts +3 -3
  135. package/src/schema/fieldRef.ts +1 -1
  136. package/src/schema/generate.ts +2 -8
  137. package/src/schema/index.ts +3 -3
  138. package/src/schema/model.ts +7 -7
  139. package/src/schema/openapi.ts +4 -7
  140. package/src/schema/queries.ts +1 -1
  141. package/src/schema/relation.ts +8 -8
  142. package/src/schema/residency.ts +0 -1
  143. package/src/schema/schema.ts +33 -58
  144. package/src/schema/sugar.ts +7 -7
  145. package/src/server/commit.ts +5 -1
  146. package/src/source/adapters/drizzle.ts +5 -0
  147. package/src/source/adapters/kysely.ts +48 -10
  148. package/src/source/adapters/kyselyMutationCore.ts +69 -22
  149. package/src/source/adapters/memory.ts +5 -0
  150. package/src/source/adapters/prisma.ts +6 -1
  151. package/src/source/conformance.ts +21 -21
  152. package/src/source/contract.ts +34 -0
  153. package/src/source/index.ts +2 -0
  154. package/src/source/types.ts +1 -0
  155. package/src/transactionLayer.ts +3 -3
  156. package/src/transport/httpClient.ts +6 -2
  157. package/src/transport/httpTransport.ts +59 -4
  158. package/src/transport/wsFrameHandlers.ts +3 -0
  159. package/src/types/global.ts +1 -1
  160. package/src/types/streams.ts +2 -2
  161. package/src/wire/accountResponses.ts +2 -2
  162. package/src/wire/commit.ts +31 -1
  163. package/src/wire/index.ts +3 -0
  164. package/src/wire/protocol.ts +1 -1
@@ -102,6 +102,31 @@ export type CommitWait = z.infer<typeof commitWaitSchema>;
102
102
  const missingIdsSchema = z.array(z.string().min(1));
103
103
  const notificationsSchema = z.array(staleNotificationSchema);
104
104
 
105
+ export const commitOperationOutcomeSchema = z.enum([
106
+ 'created',
107
+ 'updated',
108
+ 'deleted',
109
+ 'archived',
110
+ 'unarchived',
111
+ ]);
112
+
113
+ export const commitOperationResultSchema = z.strictObject({
114
+ transactionId: z.string().min(1),
115
+ outcome: commitOperationOutcomeSchema,
116
+ row: z.record(z.string(), z.unknown()),
117
+ });
118
+ export type CommitOperationResult<
119
+ Row extends Record<string, unknown> = Record<string, unknown>,
120
+ > = Omit<z.infer<typeof commitOperationResultSchema>, 'row'> & { readonly row: Row };
121
+
122
+ const operationResultsSchema = z
123
+ .array(commitOperationResultSchema)
124
+ .min(1)
125
+ .refine(
126
+ (results) => new Set(results.map((result) => result.transactionId)).size === results.length,
127
+ 'operation result transactionIds must be unique',
128
+ );
129
+
105
130
  export const commitActorSchema = z.strictObject({
106
131
  kind: participantKindSchema,
107
132
  id: z.string().min(1),
@@ -155,6 +180,8 @@ const successfulReceiptCommonShape = {
155
180
  authority: effectiveAuthoritySchema,
156
181
  notifications: notificationsSchema.optional(),
157
182
  missingIds: missingIdsSchema.optional(),
183
+ /** Exact rows returned by the writing transaction; absent on durable replay. */
184
+ operationResults: operationResultsSchema.optional(),
158
185
  } as const;
159
186
 
160
187
  const queuedCommitReceiptSchema = queuedCommitStatusSchema.safeExtend(
@@ -316,6 +343,7 @@ export type CommitExecutionResult = z.infer<typeof commitExecutionResultSchema>;
316
343
  const ackCommonShape = {
317
344
  notifications: notificationsSchema.optional(),
318
345
  missingIds: missingIdsSchema.optional(),
346
+ operationResults: operationResultsSchema.optional(),
319
347
  } as const;
320
348
 
321
349
  /** Normalized acknowledgement handed from a mutation transport to the queue. */
@@ -350,6 +378,7 @@ export const clientCommitReceiptSchema = z.strictObject({
350
378
  lastSyncId: readSetWatermarkSchema.optional(),
351
379
  notifications: notificationsSchema.optional(),
352
380
  missingIds: missingIdsSchema.optional(),
381
+ operationResults: operationResultsSchema.optional(),
353
382
  });
354
383
  export type ClientCommitReceipt = z.infer<typeof clientCommitReceiptSchema>;
355
384
 
@@ -382,13 +411,14 @@ export const commitOperationBodySchema = z.object({
382
411
  action: z.string(),
383
412
  model: z.string(),
384
413
  data: z.record(z.string(), z.unknown()).nullish(),
414
+ where: z.record(z.string().min(1), z.unknown()).nullish(),
385
415
  });
386
416
  export type CommitOperationBody = z.infer<typeof commitOperationBodySchema>;
387
417
 
388
418
  /** Commit records retain intent metadata but never copy customer mutation data. */
389
419
  export const COMMIT_OPERATION_DATA_RETENTION = 'redacted' as const;
390
420
  export const commitRecordOperationSchema = commitOperationBodySchema
391
- .omit({ data: true })
421
+ .omit({ data: true, where: true })
392
422
  .safeExtend({ data: z.strictObject({ retention: z.literal(COMMIT_OPERATION_DATA_RETENTION) }) });
393
423
  export type CommitRecordOperation = z.infer<typeof commitRecordOperationSchema>;
394
424
 
package/src/wire/index.ts CHANGED
@@ -99,6 +99,8 @@ export {
99
99
  commitStatusSchema,
100
100
  commitWaitSchema,
101
101
  commitReceiptSchema,
102
+ commitOperationOutcomeSchema,
103
+ commitOperationResultSchema,
102
104
  rejectedCommitReceiptSchema,
103
105
  mutationResultPayloadSchema,
104
106
  mutationResultMessageSchema,
@@ -121,6 +123,7 @@ export {
121
123
  } from './commit.js';
122
124
  export type {
123
125
  CommitOperationBody,
126
+ CommitOperationResult,
124
127
  CommitActor,
125
128
  CommitAttempt,
126
129
  CommitClaimReference,
@@ -16,7 +16,7 @@
16
16
  * The lease is three ping intervals long and is renewed on every ping, so a
17
17
  * live holder always has at least two intervals of runway and a silent one
18
18
  * lapses about two missed pings after it stops renewing. The window measures
19
- * liveness, not how long a task may run: widening the lease without also
19
+ * liveness, not how long a item may run: widening the lease without also
20
20
  * widening the ping makes holders flap, and neither value should be redefined
21
21
  * anywhere else.
22
22
  */