hikoutei 0.4.2 → 0.4.3

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 (140) hide show
  1. package/dist/application/sync/outbound/SheetsEffectDispatcher.d.ts +64 -0
  2. package/dist/application/sync/outbound/SheetsEffectDispatcher.d.ts.map +1 -0
  3. package/dist/application/sync/outbound/SheetsEffectDispatcher.js +440 -0
  4. package/dist/application/sync/outbound/SheetsEffectDispatcher.js.map +1 -0
  5. package/dist/application/sync/service/SyncServiceBootstrap.d.ts +3 -4
  6. package/dist/application/sync/service/SyncServiceBootstrap.d.ts.map +1 -1
  7. package/dist/application/sync/service/SyncServiceBootstrap.js +7 -4
  8. package/dist/application/sync/service/SyncServiceBootstrap.js.map +1 -1
  9. package/dist/application/sync/telemetry/syncTiming.d.ts +20 -33
  10. package/dist/application/sync/telemetry/syncTiming.d.ts.map +1 -1
  11. package/dist/application/sync/telemetry/syncTiming.js +14 -12
  12. package/dist/application/sync/telemetry/syncTiming.js.map +1 -1
  13. package/dist/infrastructure/storage/errors.d.ts +10 -5
  14. package/dist/infrastructure/storage/errors.d.ts.map +1 -1
  15. package/dist/infrastructure/storage/errors.js +10 -7
  16. package/dist/infrastructure/storage/errors.js.map +1 -1
  17. package/dist/infrastructure/storage/index.d.ts +6 -4
  18. package/dist/infrastructure/storage/index.d.ts.map +1 -1
  19. package/dist/infrastructure/storage/index.js +3 -2
  20. package/dist/infrastructure/storage/index.js.map +1 -1
  21. package/dist/infrastructure/storage/sqlite/schema.d.ts +12 -11
  22. package/dist/infrastructure/storage/sqlite/schema.d.ts.map +1 -1
  23. package/dist/infrastructure/storage/sqlite/schema.js +17 -109
  24. package/dist/infrastructure/storage/sqlite/schema.js.map +1 -1
  25. package/dist/infrastructure/storage/state/canonical/canonicalCommit.d.ts +2 -2
  26. package/dist/infrastructure/storage/state/canonical/canonicalCommit.d.ts.map +1 -1
  27. package/dist/infrastructure/storage/state/canonical/canonicalCommit.js +2 -2
  28. package/dist/infrastructure/storage/state/canonical/canonicalCommit.js.map +1 -1
  29. package/dist/infrastructure/storage/state/mapped/mappedPersistenceContext.d.ts +1 -2
  30. package/dist/infrastructure/storage/state/mapped/mappedPersistenceContext.d.ts.map +1 -1
  31. package/dist/infrastructure/storage/state/mapped/mappedPersistenceContext.js +1 -2
  32. package/dist/infrastructure/storage/state/mapped/mappedPersistenceContext.js.map +1 -1
  33. package/dist/infrastructure/storage/state/observation/observationCanonical.d.ts +1 -1
  34. package/dist/infrastructure/storage/state/observation/observationCanonical.d.ts.map +1 -1
  35. package/dist/infrastructure/storage/state/observation/observationQuarantine.d.ts +1 -1
  36. package/dist/infrastructure/storage/state/observation/observationQuarantine.d.ts.map +1 -1
  37. package/dist/infrastructure/storage/state/observation/observationQuarantine.js +1 -1
  38. package/dist/infrastructure/storage/state/observation/observationQuarantine.js.map +1 -1
  39. package/dist/infrastructure/storage/state/observation/observationTypes.d.ts +1 -1
  40. package/dist/infrastructure/storage/state/observation/observationTypes.d.ts.map +1 -1
  41. package/dist/infrastructure/storage/state/observation/observationValidation.d.ts +1 -1
  42. package/dist/infrastructure/storage/state/observation/observationValidation.d.ts.map +1 -1
  43. package/dist/infrastructure/storage/state/observation/observationWriter.d.ts +1 -1
  44. package/dist/infrastructure/storage/state/observation/observationWriter.d.ts.map +1 -1
  45. package/dist/infrastructure/storage/state/observation/observationWriter.js +1 -2
  46. package/dist/infrastructure/storage/state/observation/observationWriter.js.map +1 -1
  47. package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts +1 -2
  48. package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts.map +1 -1
  49. package/dist/infrastructure/storage/state/resolution/resolutionWriter.js +1 -2
  50. package/dist/infrastructure/storage/state/resolution/resolutionWriter.js.map +1 -1
  51. package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.d.ts +1 -1
  52. package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.d.ts.map +1 -1
  53. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.d.ts +1 -1
  54. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.d.ts.map +1 -1
  55. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.js +1 -1
  56. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.js.map +1 -1
  57. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts +1 -1
  58. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts.map +1 -1
  59. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js +2 -2
  60. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js.map +1 -1
  61. package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.d.ts +1 -1
  62. package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.d.ts.map +1 -1
  63. package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.js +1 -1
  64. package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.js.map +1 -1
  65. package/dist/infrastructure/storage/sync/shared/syncRegistry.d.ts +1 -1
  66. package/dist/infrastructure/storage/sync/shared/syncRegistry.js +1 -1
  67. package/package.json +13 -7
  68. package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.d.ts +0 -66
  69. package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.d.ts.map +0 -1
  70. package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.js +0 -123
  71. package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.js.map +0 -1
  72. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts +0 -111
  73. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts.map +0 -1
  74. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js +0 -369
  75. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js.map +0 -1
  76. package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts +0 -127
  77. package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts.map +0 -1
  78. package/dist/application/sync/outbound/effects/SyncEffectWorker.js +0 -552
  79. package/dist/application/sync/outbound/effects/SyncEffectWorker.js.map +0 -1
  80. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts +0 -85
  81. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts.map +0 -1
  82. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js +0 -74
  83. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js.map +0 -1
  84. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts +0 -31
  85. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts.map +0 -1
  86. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js +0 -222
  87. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js.map +0 -1
  88. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.d.ts +0 -14
  89. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.d.ts.map +0 -1
  90. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js +0 -25
  91. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js.map +0 -1
  92. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts +0 -61
  93. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts.map +0 -1
  94. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js +0 -296
  95. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js.map +0 -1
  96. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.d.ts +0 -17
  97. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.d.ts.map +0 -1
  98. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.js +0 -80
  99. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.js.map +0 -1
  100. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts +0 -13
  101. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts.map +0 -1
  102. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js +0 -248
  103. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js.map +0 -1
  104. package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts +0 -141
  105. package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts.map +0 -1
  106. package/dist/infrastructure/storage/sync/outbound/effectOutbox.js +0 -318
  107. package/dist/infrastructure/storage/sync/outbound/effectOutbox.js.map +0 -1
  108. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts +0 -143
  109. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts.map +0 -1
  110. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js +0 -16
  111. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js.map +0 -1
  112. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts +0 -33
  113. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts.map +0 -1
  114. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js +0 -259
  115. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js.map +0 -1
  116. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts +0 -27
  117. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts.map +0 -1
  118. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js +0 -316
  119. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js.map +0 -1
  120. package/dist/infrastructure/storage/sync/shared/writerLease.d.ts +0 -76
  121. package/dist/infrastructure/storage/sync/shared/writerLease.d.ts.map +0 -1
  122. package/dist/infrastructure/storage/sync/shared/writerLease.js +0 -189
  123. package/dist/infrastructure/storage/sync/shared/writerLease.js.map +0 -1
  124. package/docs/advanced-sheets-gateway-concurrency-problem.md +0 -434
  125. package/docs/architecture.md +0 -224
  126. package/docs/ci.md +0 -293
  127. package/docs/code-guidelines.md +0 -248
  128. package/docs/development.md +0 -74
  129. package/docs/gateway-removal-inventory.md +0 -147
  130. package/docs/git-workflow.md +0 -224
  131. package/docs/google-sheets-sync-scaling-strategy.md +0 -459
  132. package/docs/mikro-orm-adapter-spike.md +0 -89
  133. package/docs/quick-start.md +0 -137
  134. package/docs/sql-layer-plan.md +0 -59
  135. package/docs/sync-bulk-write-benchmark.md +0 -2117
  136. package/docs/sync-observability.md +0 -100
  137. package/docs/task-queue-write-model.md +0 -640
  138. package/docs/typed-sheets-mvp-scope-2026-06-29.md +0 -490
  139. package/docs/typed-sheets-plan.md +0 -417
  140. package/docs/write-and-synchronization-flow.md +0 -179
@@ -1,248 +0,0 @@
1
- /** Durable result transitions for provider responses and response-loss recovery. */
2
- import { stableHash } from "../../../../domain/index.js";
3
- import { LOOKUP_RESULT_KINDS, } from "../../../../shared/state/constants.js";
4
- import { SYNC_EFFECT_RESULT_STATUSES, SYNC_POSTCONDITION_DISPOSITIONS, } from "../../sheets/constants.js";
5
- import { OUTBOX_EFFECT_STATUSES, SYNC_EFFECT_KINDS, WORKER_ERROR_CODES, } from "./SyncEffectWorkerConstants.js";
6
- import { absentValue, presentValue } from "../../../../shared/state/index.js";
7
- import { applicabilityFromSqlNullable, isPresent, lookupResult, safeErrorMessage, } from "./SyncEffectWorkerHelpers.js";
8
- import { groupByPostconditionRequest, isCandidateProtectingUserInputEffect, } from "./SyncEffectWorkerRouting.js";
9
- export async function completeProviderResult(options, storage, fence, item, result, report) {
10
- if (result.status === SYNC_EFFECT_RESULT_STATUSES.APPLIED ||
11
- result.status === SYNC_EFFECT_RESULT_STATUSES.ALREADY_APPLIED) {
12
- if (!isPresent(result.visibleRevision) || !isPresent(result.visibleHash)) {
13
- await deferDeliveryUncertain(storage, fence, item, WORKER_ERROR_CODES.POSTCONDITION_APPLIED_WITHOUT_VISIBLE_STATE, "Provider applied result did not include receipt-backed visible evidence.", report);
14
- return;
15
- }
16
- await completeApplied(storage, fence, item, result.visibleRevision, result.visibleHash, report);
17
- return;
18
- }
19
- if (result.status === SYNC_EFFECT_RESULT_STATUSES.SUPERSEDED) {
20
- if (await storage.applyEffectResult({
21
- ...fence,
22
- effectId: item.pending.effect_id,
23
- claimToken: item.claimToken,
24
- status: OUTBOX_EFFECT_STATUSES.SUPERSEDED,
25
- lastErrorCode: presentValue(WORKER_ERROR_CODES.PROVIDER_SUPERSEDED),
26
- lastErrorMessage: result.reason,
27
- }))
28
- report.superseded += 1;
29
- return;
30
- }
31
- if (result.status === SYNC_EFFECT_RESULT_STATUSES.GUARD_MISMATCH) {
32
- const blocked = isPresent(item.providerEffect) &&
33
- isCandidateProtectingUserInputEffect(item.providerEffect.value);
34
- const status = blocked
35
- ? OUTBOX_EFFECT_STATUSES.BLOCKED_CANDIDATE
36
- : OUTBOX_EFFECT_STATUSES.CONFLICT;
37
- const applied = await storage.applyEffectResult({
38
- ...fence,
39
- effectId: item.pending.effect_id,
40
- claimToken: item.claimToken,
41
- status,
42
- lastErrorCode: presentValue(blocked
43
- ? WORKER_ERROR_CODES.CANDIDATE_GUARD_MISMATCH
44
- : WORKER_ERROR_CODES.VISIBLE_GUARD_MISMATCH),
45
- lastErrorMessage: result.reason,
46
- });
47
- if (applied) {
48
- if (blocked)
49
- report.blockedCandidate += 1;
50
- else
51
- report.conflicted += 1;
52
- }
53
- return;
54
- }
55
- if (result.status === SYNC_EFFECT_RESULT_STATUSES.REPAIR_REOBSERVE) {
56
- await replanOrFail(options, storage, fence, item, {
57
- effect: item.pending,
58
- providerResult: presentValue(result),
59
- postcondition: absentValue(),
60
- }, report);
61
- return;
62
- }
63
- await completeFailure(storage, fence, item, result.status === SYNC_EFFECT_RESULT_STATUSES.SCHEMA_ERROR
64
- ? WORKER_ERROR_CODES.PROVIDER_SCHEMA_ERROR
65
- : WORKER_ERROR_CODES.PROVIDER_RETRYABLE_ERROR, result.reason, report);
66
- }
67
- const DURABLE_PROBE_RETRY_DELAY_MS = 1_000;
68
- export async function recoverUnknownResults(options, storage, fence, items, report) {
69
- const liveFence = () => ({
70
- ...fence,
71
- now: options.clock?.() ?? fence.now,
72
- });
73
- const usable = [];
74
- for (const item of items) {
75
- if (isPresent(item.providerEffect)) {
76
- usable.push(item);
77
- continue;
78
- }
79
- await completeFailure(storage, liveFence(), item, WORKER_ERROR_CODES.INVALID_EFFECT_PAYLOAD, item.invalidPayloadError, report);
80
- }
81
- for (const group of groupByPostconditionRequest(usable)) {
82
- let results;
83
- try {
84
- results = await options.provider.readEffectPostconditions(group.request);
85
- }
86
- catch (error) {
87
- for (const item of group.items) {
88
- await deferDeliveryUncertain(storage, liveFence(), item, WORKER_ERROR_CODES.POSTCONDITION_READ_FAILED, safeErrorMessage(error), report);
89
- }
90
- continue;
91
- }
92
- const byEffectId = new Map(results.map((result) => [result.effectId, result]));
93
- for (const item of group.items) {
94
- const result = lookupResult(byEffectId.get(item.pending.effect_id));
95
- if (result.kind === LOOKUP_RESULT_KINDS.NOT_FOUND ||
96
- result.value.payloadHash !== item.pending.payload_hash) {
97
- await deferDeliveryUncertain(storage, liveFence(), item, WORKER_ERROR_CODES.POSTCONDITION_READ_FAILED, "Provider postcondition batch did not return the expected effect evidence.", report);
98
- continue;
99
- }
100
- await settleUnknownPostcondition(options, storage, liveFence(), item, result.value.postcondition, report);
101
- }
102
- }
103
- }
104
- export async function settleUnknownPostcondition(options, storage, fence, item, postcondition, report) {
105
- if (!isPresent(item.providerEffect)) {
106
- await completeFailure(storage, fence, item, WORKER_ERROR_CODES.INVALID_EFFECT_PAYLOAD, item.invalidPayloadError, report);
107
- return;
108
- }
109
- if (postcondition.disposition === SYNC_POSTCONDITION_DISPOSITIONS.APPLIED &&
110
- isPresent(postcondition.visibleRevision) &&
111
- isPresent(postcondition.visibleHash)) {
112
- if (await completeApplied(storage, fence, item, postcondition.visibleRevision, postcondition.visibleHash, report)) {
113
- report.responseLossRecovered += 1;
114
- }
115
- return;
116
- }
117
- if (postcondition.disposition === SYNC_POSTCONDITION_DISPOSITIONS.APPLIED) {
118
- await deferDeliveryUncertain(storage, fence, item, WORKER_ERROR_CODES.POSTCONDITION_APPLIED_WITHOUT_VISIBLE_STATE, "Provider claimed an applied postcondition without a verified visible revision and hash.", report);
119
- return;
120
- }
121
- if (postcondition.disposition === SYNC_POSTCONDITION_DISPOSITIONS.CHANGED &&
122
- item.providerEffect.value.effectKind === SYNC_EFFECT_KINDS.SYSTEM_REPAIR) {
123
- await replanOrFail(options, storage, fence, item, {
124
- effect: item.pending,
125
- providerResult: absentValue(),
126
- postcondition: presentValue(postcondition),
127
- }, report);
128
- return;
129
- }
130
- if (postcondition.disposition === SYNC_POSTCONDITION_DISPOSITIONS.UNAPPLIED) {
131
- const requeued = await storage.retryClaimedEffect({
132
- ...fence,
133
- effectId: item.pending.effect_id,
134
- claimToken: item.claimToken,
135
- lastErrorCode: WORKER_ERROR_CODES.POSTCONDITION_UNAPPLIED_REQUIRES_REDRIVE,
136
- lastErrorMessage: "Provider did not expose the effect as applied; it was returned to pending.",
137
- nextAttemptAt: fence.now + DURABLE_PROBE_RETRY_DELAY_MS,
138
- });
139
- if (requeued) {
140
- report.deferred += 1;
141
- report.requeued += 1;
142
- }
143
- return;
144
- }
145
- if (postcondition.disposition === SYNC_POSTCONDITION_DISPOSITIONS.UNAVAILABLE) {
146
- await deferDeliveryUncertain(storage, fence, item, WORKER_ERROR_CODES.POSTCONDITION_UNAVAILABLE, "Provider response was not observed; postcondition=unavailable" +
147
- (postcondition.reason === undefined ? "" : ", reason=" + postcondition.reason), report);
148
- return;
149
- }
150
- const code = postcondition.disposition === SYNC_POSTCONDITION_DISPOSITIONS.CHANGED
151
- ? WORKER_ERROR_CODES.POSTCONDITION_CHANGED
152
- : WORKER_ERROR_CODES.POSTCONDITION_UNAPPLIED_REQUIRES_REDRIVE;
153
- await completeFailure(storage, fence, item, code, presentValue("Provider response was not observed; postcondition=" +
154
- postcondition.disposition +
155
- (postcondition.reason === undefined ? "" : ", reason=" + postcondition.reason)), report);
156
- }
157
- async function deferDeliveryUncertain(storage, fence, item, code, message, report) {
158
- const marked = await storage.markDeliveryUncertain({
159
- ...fence,
160
- effectId: item.pending.effect_id,
161
- claimToken: item.claimToken,
162
- uncertainSince: item.pending.uncertain_since ?? fence.now,
163
- nextProbeAt: fence.now + DURABLE_PROBE_RETRY_DELAY_MS,
164
- lastErrorCode: code,
165
- lastErrorMessage: message,
166
- });
167
- if (marked)
168
- report.deferred += 1;
169
- }
170
- export async function completeApplied(storage, fence, item, visibleRevision, visibleHash, report) {
171
- const providerEffect = item.providerEffect;
172
- if (!isPresent(providerEffect)) {
173
- await completeFailure(storage, fence, item, WORKER_ERROR_CODES.INVALID_EFFECT_PAYLOAD, item.invalidPayloadError, report);
174
- return false;
175
- }
176
- if (!isPresent(visibleRevision) || !isPresent(visibleHash)) {
177
- await deferDeliveryUncertain(storage, fence, item, WORKER_ERROR_CODES.POSTCONDITION_APPLIED_WITHOUT_VISIBLE_STATE, "Applied effect lacks receipt-backed visible revision and hash evidence.", report);
178
- return false;
179
- }
180
- if (visibleHash.value !== providerEffect.value.payload.targetVisibleHash) {
181
- await completeFailure(storage, fence, item, WORKER_ERROR_CODES.POSTCONDITION_READ_FAILED, presentValue("Provider postcondition visible hash does not match the effect target."), report);
182
- return false;
183
- }
184
- const confirmation = isPresent(providerEffect) &&
185
- isPresent(providerEffect.value.rowBindingId) &&
186
- isPresent(visibleRevision) &&
187
- isPresent(visibleHash)
188
- ? {
189
- physicalSheetId: item.pending.physical_sheet_id,
190
- projection: item.pending.projection,
191
- rowBindingId: providerEffect.value.rowBindingId.value,
192
- visibleRevision: visibleRevision.value,
193
- visibleHash: visibleHash.value,
194
- entityRevision: applicabilityFromSqlNullable(item.pending.target_entity_revision),
195
- fieldHashes: Object.fromEntries(Object.entries(providerEffect.value.payload.fields)
196
- .map(([fieldName, value]) => [fieldName, stableHash(value)])),
197
- }
198
- : undefined;
199
- const applied = await storage.applyEffectResult({
200
- ...fence,
201
- effectId: item.pending.effect_id,
202
- claimToken: item.claimToken,
203
- status: OUTBOX_EFFECT_STATUSES.APPLIED,
204
- lastErrorCode: absentValue(),
205
- lastErrorMessage: absentValue(),
206
- ...(confirmation === undefined ? {} : { projectionConfirmation: confirmation }),
207
- });
208
- if (applied)
209
- report.applied += 1;
210
- return applied;
211
- }
212
- export async function replanOrFail(options, storage, fence, item, request, report) {
213
- if (options.makeRepairReplan === undefined) {
214
- await completeFailure(storage, fence, item, WORKER_ERROR_CODES.REPAIR_REOBSERVE_REQUIRES_WRITER_REPLAN, presentValue("A system repair changed remotely and no writer replan factory was configured."), report);
215
- return;
216
- }
217
- let replacement;
218
- try {
219
- replacement = options.makeRepairReplan(request);
220
- }
221
- catch (error) {
222
- await completeFailure(storage, fence, item, WORKER_ERROR_CODES.REPAIR_REPLAN_FAILED, presentValue(safeErrorMessage(error)), report);
223
- return;
224
- }
225
- if (!isPresent(replacement)) {
226
- await completeFailure(storage, fence, item, WORKER_ERROR_CODES.REPAIR_REPLAN_DEFERRED, presentValue("Writer deferred repair replan pending a fresh observation."), report);
227
- return;
228
- }
229
- try {
230
- await storage.supersedeAndReplan(fence, item.pending.effect_id, replacement.value);
231
- report.replanned += 1;
232
- }
233
- catch (error) {
234
- await completeFailure(storage, fence, item, WORKER_ERROR_CODES.REPAIR_REPLAN_FAILED, presentValue(safeErrorMessage(error)), report);
235
- }
236
- }
237
- export async function completeFailure(storage, fence, item, code, message, report) {
238
- if (await storage.applyEffectResult({
239
- ...fence,
240
- effectId: item.pending.effect_id,
241
- claimToken: item.claimToken,
242
- status: OUTBOX_EFFECT_STATUSES.FAILED,
243
- lastErrorCode: presentValue(code),
244
- lastErrorMessage: message,
245
- }))
246
- report.failed += 1;
247
- }
248
- //# sourceMappingURL=SyncEffectWorkerTransitions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SyncEffectWorkerTransitions.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerTransitions.ts"],"names":[],"mappings":"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"}
@@ -1,141 +0,0 @@
1
- /**
2
- * Effect outbox claim, apply, and recovery operations.
3
- *
4
- * Per design concurrency/writer-rpc.md and storage-schema.md:
5
- * - Effects are claimed atomically (CAS on status = 'pending').
6
- * - Only one worker can claim an effect at a time.
7
- * - Apply results must pass fencing validation (epoch + token).
8
- * - Supersede/replan atomically closes old effect and inserts new one.
9
- */
10
- import type { FencingContext } from "../shared/writerLease.js";
11
- import { type SqlExecutor, type SqlStorageAdapter } from "../../../../adapter/persistence/contracts/sql.js";
12
- import type { ApplyResultOptions, ClaimEffectOptions, ClaimResult, MarkDeliveryUncertainOptions, NewEffect, RenewEffectLeaseOptions, PendingEffect, RetryClaimedEffectOptions } from "./effectOutboxContracts.js";
13
- export { SYNC_EFFECT_RECOVERY_ERROR_CODES } from "./effectOutboxContracts.js";
14
- export type { AppliedEffectResultOptions, ApplyResultOptions, ClaimEffectOptions, ClaimResult, NonAppliedEffectResultOptions, RenewEffectLeaseOptions, EffectProjectionConfirmation, MarkDeliveryUncertainOptions, NewEffect, PendingEffect, RetryClaimedEffectOptions, } from "./effectOutboxContracts.js";
15
- /**
16
- * Claims a pending effect through an already-active async SQL context.
17
- *
18
- * The compare-and-set query and both fencing checks use the same connection,
19
- * so a worker cannot claim through a different SQLite connection.
20
- */
21
- export declare function claimEffectWithSql(sql: SqlExecutor, options: ClaimEffectOptions): Promise<ClaimResult>;
22
- /** Claims one effect inside an adapter-owned transaction. */
23
- export declare function claimEffectWithAdapter(storage: SqlStorageAdapter, options: ClaimEffectOptions): Promise<ClaimResult>;
24
- /** Renews a processing effect only while the current writer fence and claim still match. */
25
- export declare function renewEffectLeaseWithSql(sql: SqlExecutor, options: RenewEffectLeaseOptions): Promise<boolean>;
26
- /** Renews one claimed effect through an adapter-owned transaction. */
27
- export declare function renewEffectLeaseWithAdapter(storage: SqlStorageAdapter, options: RenewEffectLeaseOptions): Promise<boolean>;
28
- /**
29
- * Appends pending effects under the supplied writer fence.
30
- *
31
- * This is used for conflict/quarantine effects that do not accompany a
32
- * canonical field commit. It owns a savepoint so a duplicate dedupe key or a
33
- * lost fence cannot leave only part of an effect set behind.
34
- */
35
- /**
36
- * Appends pending effects inside an already-active async SQL transaction.
37
- *
38
- * This is the MikroORM-compatible path used when an entity mutation and its
39
- * Sheets outbox records must commit or roll back together.
40
- */
41
- export declare function appendPendingEffectsWithSql(sql: SqlExecutor, fence: FencingContext, effects: readonly NewEffect[]): Promise<boolean>;
42
- /** Appends pending effects in one adapter-owned transaction. */
43
- export declare function appendPendingEffectsWithAdapter(storage: SqlStorageAdapter, fence: FencingContext, effects: readonly NewEffect[]): Promise<boolean>;
44
- /**
45
- * Applies a result to a claimed effect.
46
- * Validates fencing (claim token + writer epoch) before applying.
47
- * Returns true if the result was applied, false if fencing failed.
48
- */
49
- /**
50
- * Applies a claimed effect result through an already-active async SQL context.
51
- *
52
- * If projection confirmation fails, the savepoint rolls the effect transition
53
- * back too; confirmed visible state can never advance without its outbox row.
54
- */
55
- export declare function applyEffectResultWithSql(sql: SqlExecutor, options: ApplyResultOptions): Promise<boolean>;
56
- /** Applies one effect result inside an adapter-owned transaction. */
57
- export declare function applyEffectResultWithAdapter(storage: SqlStorageAdapter, options: ApplyResultOptions): Promise<boolean>;
58
- /**
59
- * Supersedes an old effect and inserts a new replacement effect atomically.
60
- * Used for repair replan when the canonical target has advanced.
61
- *
62
- * Per design: the old effect is marked 'superseded', a new effect with a new
63
- * effect_id and new dedupe_key is inserted, and the new effect's
64
- * predecessor_effect_id links to the old one.
65
- */
66
- /** Supersedes and replans an effect through an already-active async SQL context. */
67
- export declare function supersedeAndReplanWithSql(sql: SqlExecutor, fence: FencingContext, oldEffectId: string, newEffect: NewEffect): Promise<void>;
68
- /** Supersedes and replans an effect inside an adapter-owned transaction. */
69
- export declare function supersedeAndReplanWithAdapter(storage: SqlStorageAdapter, fence: FencingContext, oldEffectId: string, newEffect: NewEffect): Promise<void>;
70
- /**
71
- * Marks expired processing effects as requiring postcondition recovery.
72
- *
73
- * The worker must read the remote postcondition before it schedules a retry;
74
- * an expired lease is not evidence that the remote write did not happen.
75
- */
76
- /** Marks expired effect leases through an already-active async SQL context. */
77
- export declare function recoverExpiredLeasesWithSql(sql: SqlExecutor, fence: FencingContext): Promise<number>;
78
- /** Marks expired effect leases inside an adapter-owned transaction. */
79
- export declare function recoverExpiredLeasesWithAdapter(storage: SqlStorageAdapter, fence: FencingContext): Promise<number>;
80
- /** Moves a claimed effect into durable ambiguous-delivery recovery. */
81
- export declare function markDeliveryUncertainWithSql(sql: SqlExecutor, options: MarkDeliveryUncertainOptions): Promise<boolean>;
82
- /** Moves one claimed effect into durable ambiguous-delivery recovery. */
83
- export declare function markDeliveryUncertainWithAdapter(storage: SqlStorageAdapter, options: MarkDeliveryUncertainOptions): Promise<boolean>;
84
- /**
85
- * Returns an acknowledged-but-unprocessed batch suffix to pending.
86
- *
87
- * This is intentionally narrower than a generic redrive: it may be used only
88
- * after a valid provider response explicitly says the batch budget stopped
89
- * before this effect. Unknown response loss remains failed until read-back.
90
- */
91
- /** Returns one acknowledged-but-unprocessed effect through an async SQL context. */
92
- export declare function releaseUnprocessedEffectWithSql(sql: SqlExecutor, options: Pick<FencingContext, "role" | "writerEpoch" | "fencingToken" | "now"> & {
93
- readonly effectId: string;
94
- readonly claimToken: string;
95
- }): Promise<boolean>;
96
- /** Returns one acknowledged-but-unprocessed effect inside an adapter transaction. */
97
- export declare function releaseUnprocessedEffectWithAdapter(storage: SqlStorageAdapter, options: Pick<FencingContext, "role" | "writerEpoch" | "fencingToken" | "now"> & {
98
- readonly effectId: string;
99
- readonly claimToken: string;
100
- }): Promise<boolean>;
101
- /** Requeues a claimed effect only after the current fence still owns it. */
102
- /** Requeues a claimed effect through an already-active async SQL context. */
103
- export declare function retryClaimedEffectWithSql(sql: SqlExecutor, options: RetryClaimedEffectOptions): Promise<boolean>;
104
- /** Requeues a claimed effect inside an adapter-owned transaction. */
105
- export declare function retryClaimedEffectWithAdapter(storage: SqlStorageAdapter, options: RetryClaimedEffectOptions): Promise<boolean>;
106
- /**
107
- * Finds pending effects for a given stream (target), ordered by stream_sequence.
108
- * Returns the head-of-line effects for a target stream.
109
- */
110
- /** Reads one target stream through an already-active async SQL context. */
111
- export declare function findPendingEffectsByTargetWithSql(sql: SqlExecutor, logicalSheetId: string, targetKind: string, targetId: string): Promise<readonly PendingEffect[]>;
112
- /** Reads one target stream through a fresh adapter read context. */
113
- export declare function findPendingEffectsByTargetWithAdapter(storage: SqlStorageAdapter, logicalSheetId: string, targetKind: string, targetId: string): Promise<readonly PendingEffect[]>;
114
- /**
115
- * Returns ordered head-of-line effects across streams for one bounded worker pass.
116
- *
117
- * Claiming still performs the authoritative CAS, so a concurrent worker can
118
- * safely race this advisory selection without processing a later stream item.
119
- */
120
- /** Reads bounded head-of-line effects through an already-active async SQL context. */
121
- export declare function listReadyEffectsWithSql(sql: SqlExecutor, limit: number, now?: number): Promise<readonly PendingEffect[]>;
122
- /** Reads bounded head-of-line effects through a fresh adapter read context. */
123
- export declare function listReadyEffectsWithAdapter(storage: SqlStorageAdapter, limit: number, now?: number): Promise<readonly PendingEffect[]>;
124
- /**
125
- * Reads bounded head-of-line effects that can only be fast-append rows.
126
- *
127
- * The query jumps past any regular/recovery backlog in the same ready order,
128
- * so an arbitrary number of head-of-queue rows cannot starve the bulk append
129
- * path. Only the SQL-visible append shape is filtered; the worker still
130
- * validates each row's payload (createIfMissing) before claiming it.
131
- */
132
- /** Reads bounded ready fast-append candidates through an already-active async SQL context. */
133
- export declare function listReadyFastAppendEffectsWithSql(sql: SqlExecutor, limit: number, now?: number): Promise<readonly PendingEffect[]>;
134
- /** Reads bounded ready fast-append candidates through a fresh adapter read context. */
135
- export declare function listReadyFastAppendEffectsWithAdapter(storage: SqlStorageAdapter, limit: number, now?: number): Promise<readonly PendingEffect[]>;
136
- /** Returns whether normal outbox work is still pending or actively processing. */
137
- /** Checks whether the durable outbox still has pending or processing work. */
138
- export declare function hasPendingOrProcessingEffectsWithSql(sql: SqlExecutor): Promise<boolean>;
139
- /** Checks outbox activity through a fresh adapter read context. */
140
- export declare function hasPendingOrProcessingEffectsWithAdapter(storage: SqlStorageAdapter): Promise<boolean>;
141
- //# sourceMappingURL=effectOutbox.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"effectOutbox.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/storage/sync/outbound/effectOutbox.ts"],"names":[],"mappings":"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"}