@reventlessdev/reventless-aws 3.0.0-alpha.418 → 3.0.0-alpha.420

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,20 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # 3.0.0-alpha.420 (2026-11-01)
7
+
8
+ ### Features
9
+
10
+ * **core:** a component's log line carries the ids of the message it is about ([9c26267](https://github.com/ReventlessDev/reventless-core/commit/9c26267ca6d03ff66b8406caa32243e205e29b5a))
11
+
12
+
13
+ # 3.0.0-alpha.419 (2026-11-01)
14
+
15
+ ### Features
16
+
17
+ * **core:** a command's outcome, the flow through automations, and each view change are told ([dcaeed2](https://github.com/ReventlessDev/reventless-core/commit/dcaeed2fabe2047a21797b459f2931618474dec3))
18
+
19
+
6
20
  # 3.0.0-alpha.418 (2026-11-01)
7
21
 
8
22
  **Note:** Version bump only for package @reventlessdev/reventless-aws
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reventlessdev/reventless-aws",
3
- "version": "3.0.0-alpha.418",
3
+ "version": "3.0.0-alpha.420",
4
4
  "description": "AWS adapters for Reventless",
5
5
  "license": "Apache-2.0",
6
6
  "bin": {
@@ -22,19 +22,19 @@
22
22
  "sury": "11.0.0",
23
23
  "uuid": "^13.0.0",
24
24
  "yaml": "^2.8.3",
25
- "@reventlessdev/rescript-aws-sdk": "3.0.0-alpha.37",
26
- "@reventlessdev/rescript-effect": "1.0.0-alpha.1",
25
+ "@reventlessdev/rescript-aws-sdk": "3.0.0-alpha.38",
27
26
  "@reventlessdev/rescript-jest": "1.0.0-alpha.13",
28
- "@reventlessdev/rescript-node": "2.0.0-alpha.24",
29
- "@reventlessdev/rescript-pulumi-aws": "3.0.0-alpha.37",
27
+ "@reventlessdev/rescript-effect": "1.0.0-alpha.1",
28
+ "@reventlessdev/rescript-pulumi-aws": "3.0.0-alpha.38",
29
+ "@reventlessdev/rescript-node": "2.0.0-alpha.25",
30
30
  "@reventlessdev/rescript-pulumi-pulumi": "3.0.0-alpha.0",
31
31
  "@reventlessdev/rescript-uuid": "2.0.0-alpha.1",
32
- "@reventlessdev/reventless-core": "3.0.0-alpha.325",
33
- "@reventlessdev/reventless-infra": "3.0.0-alpha.220",
34
- "@reventlessdev/reventless-postgres": "3.0.0-alpha.189",
35
- "@reventlessdev/reventless-interop": "3.0.0-alpha.42",
36
32
  "@reventlessdev/rescript-web": "1.0.0-alpha.8",
37
- "@reventlessdev/reventless-spec": "3.0.0-alpha.191"
33
+ "@reventlessdev/reventless-infra": "3.0.0-alpha.221",
34
+ "@reventlessdev/reventless-postgres": "3.0.0-alpha.191",
35
+ "@reventlessdev/reventless-core": "3.0.0-alpha.327",
36
+ "@reventlessdev/reventless-spec": "3.0.0-alpha.192",
37
+ "@reventlessdev/reventless-interop": "3.0.0-alpha.42"
38
38
  },
39
39
  "devDependencies": {
40
40
  "rescript": "12.3.1",
@@ -31,10 +31,10 @@ function handleQueueEvent(queue, handleJsonCommands) {
31
31
  ReceiptHandle: result._0
32
32
  };
33
33
  }
34
- Effect.runSync(EffectLogger$ReventlessCore.logError("CommandTopicChannel_SQS_Runtime-ReventlessAws", undefined, "handleQueueEvent: Couldn't handle command with ReceiptHandle: " + result._0));
34
+ Effect.runSync(EffectLogger$ReventlessCore.logError("CommandTopicChannel_SQS_Runtime-ReventlessAws", undefined, undefined, "handleQueueEvent: Couldn't handle command with ReceiptHandle: " + result._0));
35
35
  }), x => x);
36
36
  if (deleteEntries.length !== 0) {
37
- return Effect.catchAll(Effect.tap(Util_SQS_Runtime$ReventlessAws.deleteMessages(deleteEntries, queue), () => EffectLogger$ReventlessCore.logInfo("CommandTopicChannel_SQS_Runtime-ReventlessAws", undefined, "handleQueueEvent: Deleted all commands from queue")), errorMsg => EffectLogger$ReventlessCore.logError("CommandTopicChannel_SQS_Runtime-ReventlessAws", undefined, "handleQueueEvent: Couldn't deleteMessageBatch: " + errorMsg));
37
+ return Effect.catchAll(Effect.tap(Util_SQS_Runtime$ReventlessAws.deleteMessages(deleteEntries, queue), () => EffectLogger$ReventlessCore.logInfo("CommandTopicChannel_SQS_Runtime-ReventlessAws", undefined, undefined, "handleQueueEvent: Deleted all commands from queue")), errorMsg => EffectLogger$ReventlessCore.logError("CommandTopicChannel_SQS_Runtime-ReventlessAws", undefined, undefined, "handleQueueEvent: Couldn't deleteMessageBatch: " + errorMsg));
38
38
  } else {
39
39
  return Effect.succeed();
40
40
  }
@@ -52,7 +52,7 @@ function publishJsons(queue, queueService) {
52
52
  return await Effect.runPromise(Util_SQS_Runtime$ReventlessAws.send(queue, queueService, jsons[0]));
53
53
  }
54
54
  } else {
55
- Effect.runPromise(EffectLogger$ReventlessCore.logInfo("CommandTopicChannel_SQS_Runtime-ReventlessAws", undefined, "publishJsons: No commands to send"));
55
+ Effect.runPromise(EffectLogger$ReventlessCore.logInfo("CommandTopicChannel_SQS_Runtime-ReventlessAws", undefined, undefined, "publishJsons: No commands to send"));
56
56
  return;
57
57
  }
58
58
  };
@@ -73,11 +73,11 @@ function handleDynamoDbEvent(handleEvents) {
73
73
  }
74
74
 
75
75
  function enqueueEvent(queue, delay, _id, messageBody) {
76
- return Effect.runPromise(Effect.map(Effect.flatMap(EffectLogger$ReventlessCore.logInfo("EventCollectorChannel_SQS_Runtime-ReventlessAws", undefined, "enqueueEvent: " + delay.toString() + " " + messageBody + " " + queue.name), () => Effect.promise(() => Util_SQS_Runtime$ReventlessAws.sendMessage(queue, delay, messageBody))), () => {}));
76
+ return Effect.runPromise(Effect.map(Effect.flatMap(EffectLogger$ReventlessCore.logInfo("EventCollectorChannel_SQS_Runtime-ReventlessAws", undefined, undefined, "enqueueEvent: " + delay.toString() + " " + messageBody + " " + queue.name), () => Effect.promise(() => Util_SQS_Runtime$ReventlessAws.sendMessage(queue, delay, messageBody))), () => {}));
77
77
  }
78
78
 
79
79
  function enqueueFifoEvent(queue, delay, id, messageBody) {
80
- return Effect.runPromise(Effect.map(Effect.flatMap(EffectLogger$ReventlessCore.logInfo("EventCollectorChannel_SQS_Runtime-ReventlessAws", undefined, "enqueueFifoEvent: " + delay.toString() + " " + messageBody + " " + queue.name), () => Effect.promise(() => Util_SQS_Runtime$ReventlessAws.sendFifoMessage(queue, delay, Util_SQS_Runtime$ReventlessAws.safeGroupId(id), messageBody))), () => {}));
80
+ return Effect.runPromise(Effect.map(Effect.flatMap(EffectLogger$ReventlessCore.logInfo("EventCollectorChannel_SQS_Runtime-ReventlessAws", undefined, undefined, "enqueueFifoEvent: " + delay.toString() + " " + messageBody + " " + queue.name), () => Effect.promise(() => Util_SQS_Runtime$ReventlessAws.sendFifoMessage(queue, delay, Util_SQS_Runtime$ReventlessAws.safeGroupId(id), messageBody))), () => {}));
81
81
  }
82
82
 
83
83
  export {
@@ -248,7 +248,7 @@ function replayStream(table) {
248
248
  }
249
249
 
250
250
  function replay(table) {
251
- return id => Effect$1.runPromise(Effect$1.catchAll(Stream.runCollect(replayStream(table)(id, undefined)), msg => Effect$1.flatMap(EffectLogger$ReventlessCore.logError("EventLogStorage_DynamoDb_Runtime-ReventlessAws", undefined, `Couldn't replay events for id ` + id + ` after retries: ` + msg), () => Effect$1.fail(msg))));
251
+ return id => Effect$1.runPromise(Effect$1.catchAll(Stream.runCollect(replayStream(table)(id, undefined)), msg => Effect$1.flatMap(EffectLogger$ReventlessCore.logError("EventLogStorage_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `Couldn't replay events for id ` + id + ` after retries: ` + msg), () => Effect$1.fail(msg))));
252
252
  }
253
253
 
254
254
  function appendStream(table) {
@@ -56,7 +56,7 @@ function load(table) {
56
56
  })), err => {
57
57
  let tableName = table.name;
58
58
  let msg = QueryDb$ReventlessCore.storageErrorToString(err);
59
- return Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, `load: Couldn't load state for ` + id + ` from ` + tableName + `: ` + msg), () => ({
59
+ return Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `load: Couldn't load state for ` + id + ` from ` + tableName + `: ` + msg), () => ({
60
60
  TAG: "Error",
61
61
  _0: err
62
62
  }));
@@ -73,13 +73,13 @@ function save(table) {
73
73
  case "Init" :
74
74
  tmp = Effect$1.flatMap(Util_DynamoDb_Runtime$ReventlessAws.putIfNotExistsWithRetries(table.hashKey, table.rangeKey, table, id, json$1), result => {
75
75
  if (result.TAG === "Ok") {
76
- return Effect$1.map(EffectLogger$ReventlessCore.logInfo("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, `save: saved Init state to ` + tableName + `: id=` + id), () => ({
76
+ return Effect$1.map(EffectLogger$ReventlessCore.logInfo("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `save: saved Init state to ` + tableName + `: id=` + id), () => ({
77
77
  TAG: "Ok",
78
78
  _0: undefined
79
79
  }));
80
80
  }
81
81
  let errorMsg = result._0;
82
- return Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, `save: Couldn't save Init state to ` + tableName + `, id=` + id + `: ` + errorMsg), () => ({
82
+ return Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `save: Couldn't save Init state to ` + tableName + `, id=` + id + `: ` + errorMsg), () => ({
83
83
  TAG: "Error",
84
84
  _0: {
85
85
  TAG: "NotSavedToStorage",
@@ -96,13 +96,13 @@ function save(table) {
96
96
  if (exit === 1) {
97
97
  tmp = Effect$1.flatMap(Util_DynamoDb_Runtime$ReventlessAws.putWithRetries(table, id, json$1), result => {
98
98
  if (result.TAG === "Ok") {
99
- return Effect$1.map(EffectLogger$ReventlessCore.logInfo("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, `save: saved state to ` + tableName + `: id=` + id), () => ({
99
+ return Effect$1.map(EffectLogger$ReventlessCore.logInfo("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `save: saved state to ` + tableName + `: id=` + id), () => ({
100
100
  TAG: "Ok",
101
101
  _0: undefined
102
102
  }));
103
103
  }
104
104
  let errorMsg = result._0;
105
- return Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, `save: Couldn't save state to ` + tableName + `, id=` + id + `: ` + errorMsg), () => ({
105
+ return Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `save: Couldn't save state to ` + tableName + `, id=` + id + `: ` + errorMsg), () => ({
106
106
  TAG: "Error",
107
107
  _0: {
108
108
  TAG: "NotSavedToStorage",
@@ -127,7 +127,7 @@ function writeMultiple(writeRequests, op, ids, table) {
127
127
  let allIdsStr = ids.join(", ");
128
128
  let size = writeRequests.length;
129
129
  let batches = Stdlib_Math.Int.ceil(size / DynamoDb_DocumentClient$AwsSdk.BatchWriteCommand.maxBatchSize);
130
- let logSplitEffect = batches > 1 ? EffectLogger$ReventlessCore.logInfo("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, `writeBatch: splitting up batch of size ` + size.toString() + ` into ` + batches.toString() + ` batches`) : Effect$1.succeed();
130
+ let logSplitEffect = batches > 1 ? EffectLogger$ReventlessCore.logInfo("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `writeBatch: splitting up batch of size ` + size.toString() + ` into ` + batches.toString() + ` batches`) : Effect$1.succeed();
131
131
  let batchEffects = Stdlib_Array.fromInitializer(batches, batchNr => Effect$1.map(Util_DynamoDb_Runtime$ReventlessAws.batchWriteWithRetries(Util_DynamoDb_Runtime$ReventlessAws.toTable(sliceBatch(writeRequests, batchNr), tableName)), result => {
132
132
  let batchIds = sliceBatch(ids, batchNr);
133
133
  let batchCount = batchIds.length.toString();
@@ -142,14 +142,14 @@ function writeMultiple(writeRequests, op, ids, table) {
142
142
  concurrency: "unbounded"
143
143
  })), results => Stdlib_Array.filterMap(results, x => x)), errors => {
144
144
  if (errors.length === 0) {
145
- return Effect$1.map(EffectLogger$ReventlessCore.logInfo("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, `writeBatch: ` + op + ` ` + count + ` states: ` + tableName + `, ids:` + allIdsStr), () => ({
145
+ return Effect$1.map(EffectLogger$ReventlessCore.logInfo("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `writeBatch: ` + op + ` ` + count + ` states: ` + tableName + `, ids:` + allIdsStr), () => ({
146
146
  TAG: "Ok",
147
147
  _0: undefined
148
148
  }));
149
149
  }
150
150
  let errorsStr = errors.join("; ");
151
151
  let errorMsg = `writeBatch: Couldn't save states to ` + tableName + `: ` + errorsStr;
152
- return Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, errorMsg), () => ({
152
+ return Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, undefined, errorMsg), () => ({
153
153
  TAG: "Error",
154
154
  _0: {
155
155
  TAG: "BatchNotFullyWrittenToStorage",
@@ -159,7 +159,7 @@ function writeMultiple(writeRequests, op, ids, table) {
159
159
  }), err => {
160
160
  let msg = DynamoDb_Error$ReventlessAws.message(err);
161
161
  let errorMsg = `writeBatch: Couldn't save states to ` + tableName + `, ` + count + ` ids:` + allIdsStr + `: ` + msg;
162
- return Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, errorMsg), () => ({
162
+ return Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, undefined, errorMsg), () => ({
163
163
  TAG: "Error",
164
164
  _0: {
165
165
  TAG: "BatchNotFullyWrittenToStorage",
@@ -190,7 +190,7 @@ function saveBatch(table) {
190
190
  function count(table) {
191
191
  return (id, fieldName, inc) => {
192
192
  let tableName = table.name;
193
- return Effect$1.runPromise(Effect$1.catchAll(Effect$1.flatMap(Effect$1.flatMap(EffectLogger$ReventlessCore.logInfo("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, `count: ` + tableName + `, ` + id + `, ` + fieldName + `, ` + inc.toString()), () => Effect.tryPromise(err => Util_Error$ReventlessCore.messageFromUnknown(err, "count"), () => DynamoDb_DocumentClient$AwsSdk.UpdateCommand.send(new LibDynamodb.UpdateCommand({
193
+ return Effect$1.runPromise(Effect$1.catchAll(Effect$1.flatMap(Effect$1.flatMap(EffectLogger$ReventlessCore.logInfo("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `count: ` + tableName + `, ` + id + `, ` + fieldName + `, ` + inc.toString()), () => Effect.tryPromise(err => Util_Error$ReventlessCore.messageFromUnknown(err, "count"), () => DynamoDb_DocumentClient$AwsSdk.UpdateCommand.send(new LibDynamodb.UpdateCommand({
194
194
  Key: Object.fromEntries([[
195
195
  "id",
196
196
  id
@@ -214,7 +214,7 @@ function count(table) {
214
214
  _0: value
215
215
  });
216
216
  } else {
217
- return Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, `count: Invalid updateOutput in count on ` + tableName), () => ({
217
+ return Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `count: Invalid updateOutput in count on ` + tableName), () => ({
218
218
  TAG: "Error",
219
219
  _0: {
220
220
  TAG: "NotCountedOnStorage",
@@ -222,7 +222,7 @@ function count(table) {
222
222
  }
223
223
  }));
224
224
  }
225
- }), errorMsg => Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, `count: Couldn't count on ` + tableName + `: ` + errorMsg), () => ({
225
+ }), errorMsg => Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `count: Couldn't count on ` + tableName + `: ` + errorMsg), () => ({
226
226
  TAG: "Error",
227
227
  _0: {
228
228
  TAG: "NotCountedOnStorage",
@@ -237,13 +237,13 @@ function $$delete(table) {
237
237
  let tableName = table.name;
238
238
  return Effect$1.runPromise(Effect$1.flatMap(Util_DynamoDb_Runtime$ReventlessAws.deleteWithRetries(sort, table, id), result => {
239
239
  if (result.TAG === "Ok") {
240
- return Effect$1.map(EffectLogger$ReventlessCore.logInfo("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, `delete: deleted state from ` + tableName + `: id=` + id + `, sort=` + Stdlib_Option.getOr(JSON.stringify(sort), "None")), () => ({
240
+ return Effect$1.map(EffectLogger$ReventlessCore.logInfo("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `delete: deleted state from ` + tableName + `: id=` + id + `, sort=` + Stdlib_Option.getOr(JSON.stringify(sort), "None")), () => ({
241
241
  TAG: "Ok",
242
242
  _0: undefined
243
243
  }));
244
244
  }
245
245
  let errorMsg = result._0;
246
- return Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, `delete: Couldn't delete state from ` + tableName + `, id=` + id + `, sort=` + Stdlib_Option.getOr(JSON.stringify(sort), "None") + `: ` + errorMsg), () => ({
246
+ return Effect$1.map(EffectLogger$ReventlessCore.logError("QueryDbStorage_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `delete: Couldn't delete state from ` + tableName + `, id=` + id + `, sort=` + Stdlib_Option.getOr(JSON.stringify(sort), "None") + `: ` + errorMsg), () => ({
247
247
  TAG: "Error",
248
248
  _0: {
249
249
  TAG: "NotDeletedFromStorage",
@@ -167,9 +167,9 @@ function queryByTableName(tableName, keyOpt, id, subIdConfig, filterConfigsOpt,
167
167
  Limit: params_Limit,
168
168
  ScanIndexForward: params_ScanIndexForward
169
169
  };
170
- return Effect.runPromise(Effect.flatMap(EffectLogger$ReventlessCore.logDebug("QueryEngine_DynamoDb-ReventlessAws", undefined, "queryByTableName params: " + LogFormat$ReventlessCore.truncate(Stdlib_Option.getOr(JSON.stringify(params), ""))), () => Effect.catchAll(Effect.map(Stream.runCollect(Util_DynamoDb_Runtime$ReventlessAws.queryStream(params)), items => items.map(js => JSON.parse(JSON.stringify(js)))), err => {
170
+ return Effect.runPromise(Effect.flatMap(EffectLogger$ReventlessCore.logDebug("QueryEngine_DynamoDb-ReventlessAws", undefined, undefined, "queryByTableName params: " + LogFormat$ReventlessCore.truncate(Stdlib_Option.getOr(JSON.stringify(params), ""))), () => Effect.catchAll(Effect.map(Stream.runCollect(Util_DynamoDb_Runtime$ReventlessAws.queryStream(params)), items => items.map(js => JSON.parse(JSON.stringify(js)))), err => {
171
171
  let msg = DynamoDb_Error$ReventlessAws.message(err);
172
- return Effect.map(EffectLogger$ReventlessCore.logError("QueryEngine_DynamoDb-ReventlessAws", undefined, "queryByTableName: " + msg), () => []);
172
+ return Effect.map(EffectLogger$ReventlessCore.logError("QueryEngine_DynamoDb-ReventlessAws", undefined, undefined, "queryByTableName: " + msg), () => []);
173
173
  })));
174
174
  }
175
175
 
@@ -197,9 +197,9 @@ function scanByTableName(tableName, filterConfigs, limit) {
197
197
  FilterExpression: params_FilterExpression,
198
198
  Limit: params_Limit
199
199
  };
200
- return Effect.runPromise(Effect.flatMap(EffectLogger$ReventlessCore.logDebug("QueryEngine_DynamoDb-ReventlessAws", undefined, "scanByTableName params: " + LogFormat$ReventlessCore.truncate(Stdlib_Option.getOr(JSON.stringify(params), ""))), () => Effect.catchAll(Effect.map(Stream.runCollect(Util_DynamoDb_Runtime$ReventlessAws.scanStream(params)), items => items.map(js => JSON.parse(JSON.stringify(js)))), err => {
200
+ return Effect.runPromise(Effect.flatMap(EffectLogger$ReventlessCore.logDebug("QueryEngine_DynamoDb-ReventlessAws", undefined, undefined, "scanByTableName params: " + LogFormat$ReventlessCore.truncate(Stdlib_Option.getOr(JSON.stringify(params), ""))), () => Effect.catchAll(Effect.map(Stream.runCollect(Util_DynamoDb_Runtime$ReventlessAws.scanStream(params)), items => items.map(js => JSON.parse(JSON.stringify(js)))), err => {
201
201
  let msg = DynamoDb_Error$ReventlessAws.message(err);
202
- return Effect.map(EffectLogger$ReventlessCore.logError("QueryEngine_DynamoDb-ReventlessAws", undefined, "scanByTableName: " + msg), () => []);
202
+ return Effect.map(EffectLogger$ReventlessCore.logError("QueryEngine_DynamoDb-ReventlessAws", undefined, undefined, "scanByTableName: " + msg), () => []);
203
203
  })));
204
204
  }
205
205
 
@@ -539,7 +539,7 @@ let makeOutboundJsonEventsHandler = (
539
539
  ->Option.getOr("")
540
540
  let (eventType, dataDict) = rawEvent->ReventlessCore.Message.splitMessage
541
541
  switch decoder.decode(~eventType, ~data=dataDict) {
542
- | Some(event) => [(sourceId, event)]
542
+ | Some(event) => [(sourceId, event, ReventlessCore.Message.metaOfEnvelope(envelope))]
543
543
  | None => []
544
544
  }
545
545
  })
@@ -549,7 +549,11 @@ let makeOutboundJsonEventsHandler = (
549
549
  ->Effect.flatMap(events =>
550
550
  Effect.promise(async () => {
551
551
  await loadTodoItems()
552
- await callback.phase1(events, ~capabilities=capabilities())
552
+ await callback.phase1(
553
+ events->Array.map(((sourceId, event, _)) => (sourceId, event)),
554
+ ~metas=events->Array.map(((_, _, meta)) => meta),
555
+ ~capabilities=capabilities(),
556
+ )
553
557
  await syncTodoItems()
554
558
  await callback.phase2(publishJsons, ~capabilities=capabilities())
555
559
  await syncTodoItems()
@@ -187,9 +187,9 @@ function makeLoadTodoItems(queryDbTableName, todoItems, rowSchema, comp) {
187
187
  }
188
188
  todoItems[id] = row;
189
189
  return count + 1 | 0;
190
- })), err => Effect.map(EffectLogger$ReventlessCore.logError(comp, undefined, `restore: couldn't read pending TODO rows from ` + queryDbTableName + `: ` + DynamoDb_Error$ReventlessAws.message(err)), () => 0)));
190
+ })), err => Effect.map(EffectLogger$ReventlessCore.logError(comp, undefined, undefined, `restore: couldn't read pending TODO rows from ` + queryDbTableName + `: ` + DynamoDb_Error$ReventlessAws.message(err)), () => 0)));
191
191
  if (restored > 0) {
192
- return Effect.runSync(EffectLogger$ReventlessCore.logInfo(comp, undefined, `restore: reloaded ` + restored.toString() + ` unfinished TODO row(s) from ` + queryDbTableName));
192
+ return Effect.runSync(EffectLogger$ReventlessCore.logInfo(comp, undefined, undefined, `restore: reloaded ` + restored.toString() + ` unfinished TODO row(s) from ` + queryDbTableName));
193
193
  }
194
194
  };
195
195
  }
@@ -237,7 +237,7 @@ function makeScheduleStore(tableName, rows, comp) {
237
237
  return;
238
238
  }
239
239
  });
240
- }), err => EffectLogger$ReventlessCore.logError(comp, undefined, `restore: couldn't read the schedules from ` + tableName + `: ` + DynamoDb_Error$ReventlessAws.message(err))));
240
+ }), err => EffectLogger$ReventlessCore.logError(comp, undefined, undefined, `restore: couldn't read the schedules from ` + tableName + `: ` + DynamoDb_Error$ReventlessAws.message(err))));
241
241
  stored.contents = Object.keys(rows);
242
242
  };
243
243
  let sync = async () => {
@@ -323,14 +323,18 @@ function makeOutboundJsonEventsHandler(consumedEventSchema, callback, publishJso
323
323
  if (event !== undefined) {
324
324
  return [[
325
325
  sourceId,
326
- Primitive_option.valFromOption(event)
326
+ Primitive_option.valFromOption(event),
327
+ Message$ReventlessCore.metaOfEnvelope(envelope)
327
328
  ]];
328
329
  } else {
329
330
  return [];
330
331
  }
331
332
  })), events => Stream$1.fromIterable(events))), events => Effect.promise(async () => {
332
333
  await loadTodoItems();
333
- await callback.phase1(events, capabilities());
334
+ await callback.phase1(events.map(param => [
335
+ param[0],
336
+ param[1]
337
+ ]), events.map(param => param[2]), capabilities());
334
338
  await syncTodoItems();
335
339
  await callback.phase2(publishJsons, capabilities());
336
340
  return await syncTodoItems();
@@ -436,7 +440,7 @@ async function runSweeps(slices) {
436
440
  } catch (raw_exn) {
437
441
  let exn = Primitive_exceptions.internalToException(raw_exn);
438
442
  let msg = Stdlib_Option.getOr(Stdlib_Option.flatMap(Stdlib_JsExn.fromException(exn), Stdlib_JsExn.message), "unknown");
439
- Effect.runSync(EffectLogger$ReventlessCore.logError(slice.comp, undefined, `sweep failed: ` + msg));
443
+ Effect.runSync(EffectLogger$ReventlessCore.logError(slice.comp, undefined, undefined, `sweep failed: ` + msg));
440
444
  }
441
445
  }
442
446
  }
@@ -461,7 +465,7 @@ async function reconcileSchedules(slices) {
461
465
  for (let i = 0, i_finish = reconciles.length; i < i_finish; ++i) {
462
466
  await reconciles[i]();
463
467
  }
464
- return Effect.runSync(EffectLogger$ReventlessCore.logInfo("AutomationSliceRuntime", undefined, `reconcile: the schedules of ` + reconciles.length.toString() + ` automation(s) are in line`));
468
+ return Effect.runSync(EffectLogger$ReventlessCore.logInfo("AutomationSliceRuntime", undefined, undefined, `reconcile: the schedules of ` + reconciles.length.toString() + ` automation(s) are in line`));
465
469
  }
466
470
 
467
471
  export {
@@ -45,7 +45,7 @@ function deriveScope(specs) {
45
45
  let err = Primitive_exceptions.internalToException(raw_err);
46
46
  if (err.RE_EXN_ID === "JsExn") {
47
47
  let err$1 = err._1;
48
- Effect.runSync(EffectLogger$ReventlessCore.logError("DcbCommandTopicRuntime", undefined, `refusing to start: ` + Stdlib_Option.getOr(Stdlib_JsExn.message(err$1), "unknown error")));
48
+ Effect.runSync(EffectLogger$ReventlessCore.logError("DcbCommandTopicRuntime", undefined, undefined, `refusing to start: ` + Stdlib_Option.getOr(Stdlib_JsExn.message(err$1), "unknown error")));
49
49
  throw err$1;
50
50
  }
51
51
  throw err;
@@ -135,12 +135,12 @@ async function persistAudit(callback, auditQueryDbOps, result) {
135
135
  if (err.TAG === "Ok") {
136
136
  return;
137
137
  } else {
138
- return Effect.runSync(EffectLogger$ReventlessCore.logError("InboundTranslationSlice.audit", undefined, `failed to persist audit row ` + id + `: ` + QueryDb$ReventlessCore.storageErrorToString(err._0)));
138
+ return Effect.runSync(EffectLogger$ReventlessCore.logError("InboundTranslationSlice.audit", undefined, undefined, `failed to persist audit row ` + id + `: ` + QueryDb$ReventlessCore.storageErrorToString(err._0)));
139
139
  }
140
140
  } catch (raw_exn) {
141
141
  let exn = Primitive_exceptions.internalToException(raw_exn);
142
142
  let detail = Stdlib_Option.getOr(Stdlib_Option.flatMap(Stdlib_JsExn.fromException(exn), Stdlib_JsExn.message), "unknown error");
143
- return Effect.runSync(EffectLogger$ReventlessCore.logError("InboundTranslationSlice.audit", undefined, `failed to persist audit row ` + id + `: ` + detail));
143
+ return Effect.runSync(EffectLogger$ReventlessCore.logError("InboundTranslationSlice.audit", undefined, undefined, `failed to persist audit row ` + id + `: ` + detail));
144
144
  }
145
145
  }
146
146
 
@@ -126,6 +126,20 @@ let decodeEnvelope = (json: JSON.t): envelope<'event> => {
126
126
 
127
127
  let exnMessage = StreamRoutedEntryPoint_Ops.exnMessage
128
128
 
129
+ // The event an envelope carries, as the source of the rows its actions change.
130
+ // Read off the JSON, like `producerTime`: an envelope without a meta yields none.
131
+ let sourcesOf = (json: JSON.t): array<ReventlessCore.Projection.changeSource> => {
132
+ let fields = json->JSON.Decode.object->Option.getOr(Dict.make())
133
+ let meta = fields->Dict.get("meta")->Option.flatMap(JSON.Decode.object)
134
+ let string = (d, k) => d->Option.flatMap(d => d->Dict.get(k))->Option.flatMap(JSON.Decode.string)
135
+ switch string(meta, "msgId") {
136
+ | Some(msgId) =>
137
+ let (entityId, entityType) = ReventlessCore.ViewChange.entityOfEnvelope(fields)
138
+ [{msgId, correlationId: ?string(meta, "correlationId"), ?entityId, ?entityType}]
139
+ | None => []
140
+ }
141
+ }
142
+
129
143
  // The typed core of buildJsonEventsHandler: decode each envelope, parse the
130
144
  // event against the slice's consumed-event schema, project, and run every
131
145
  // resulting action against the view table. A decode failure logs and yields no
@@ -140,7 +154,13 @@ let makeJsonEventsHandler = (
140
154
  ~queryDbOps: ReventlessCore.QueryDb_Adapter.operations,
141
155
  ~subIdConfig: option<Reventless.ReadModel.subIdConfig<JSON.t>>,
142
156
  ~stateSchema: option<S.t<unknown>>,
143
- ): ReventlessCore.EventCollector.jsonEventsHandler =>
157
+ ): ReventlessCore.EventCollector.jsonEventsHandler => {
158
+ // Each row the events change is logged; the states are already JSON.
159
+ let onChange = ReventlessCore.ViewChange.reporter(
160
+ ~comp=sliceName,
161
+ ~view=sliceName,
162
+ ~stateToJson=state => state,
163
+ )
144
164
  stream =>
145
165
  stream
146
166
  ->Stream.mapEffect(json =>
@@ -155,11 +175,14 @@ let makeJsonEventsHandler = (
155
175
  // The deployed slice assembles JSON-level operations rather than going
156
176
  // through the typed rewrite, so the trail is appended here — with this
157
177
  // envelope's own time, which the apply below no longer has.
158
- producerTime === ""
159
- ? actions
160
- : actions->Array.map(
161
- ReventlessCore.Projection.rewriteJsonAction(_, ~at=producerTime, ~stateSchema),
162
- )
178
+ let sources = sourcesOf(json)
179
+ let actions =
180
+ producerTime === ""
181
+ ? actions
182
+ : actions->Array.map(
183
+ ReventlessCore.Projection.rewriteJsonAction(_, ~at=producerTime, ~stateSchema),
184
+ )
185
+ actions->Array.map(action => (action, sources))
163
186
  } catch {
164
187
  | exn =>
165
188
  StreamRoutedEntryPoint_Ops.logError(
@@ -171,7 +194,7 @@ let makeJsonEventsHandler = (
171
194
  )
172
195
  )
173
196
  ->Stream.flatMap(actions => Stream.fromIterable(actions))
174
- ->Stream.runForEach(action =>
197
+ ->Stream.runForEach(((action, sources)) =>
175
198
  // Thread the slice's `subIdConfig` (generated from `@subId`) so
176
199
  // sub-id-dependent actions like `UpdateMultiState` can resolve the sort
177
200
  // key. Dropping it here made every such action hit the
@@ -181,9 +204,17 @@ let makeJsonEventsHandler = (
181
204
  // actions. `~comp` is the slice's spec name — attribution for
182
205
  // Projection.handleAction's debug-lazy action log.
183
206
  Effect.promise(() =>
184
- ReventlessCore.Projection.handleAction(~comp=sliceName, action, queryDbOps, subIdConfig)
207
+ ReventlessCore.Projection.handleAction(
208
+ ~comp=sliceName,
209
+ ~sources,
210
+ ~onChange,
211
+ action,
212
+ queryDbOps,
213
+ subIdConfig,
214
+ )
185
215
  )->Effect.map(_ => ())
186
216
  )
217
+ }
187
218
 
188
219
  // ── Handler assembly (called by the shell per HANDLER_CONFIG entry) ─────────
189
220
  // `sliceModules` types the shell's reads off the two dynamically imported
@@ -8,6 +8,7 @@ import * as Stream from "effect/Stream";
8
8
  import * as Primitive_exceptions from "@rescript/runtime/lib/es6/Primitive_exceptions.js";
9
9
  import * as Util_Sury$Reventless from "@reventlessdev/reventless-spec/src/util/Util_Sury.res.mjs";
10
10
  import * as Projection$ReventlessCore from "@reventlessdev/reventless-core/src/Projection.res.mjs";
11
+ import * as ViewChange$ReventlessCore from "@reventlessdev/reventless-core/src/ViewChange.res.mjs";
11
12
  import * as ProjectionEntryPoint_Ops$ReventlessAws from "./ProjectionEntryPoint_Ops.res.mjs";
12
13
  import * as StreamRoutedEntryPoint_Ops$ReventlessAws from "./StreamRoutedEntryPoint_Ops.res.mjs";
13
14
 
@@ -64,7 +65,25 @@ function decodeEnvelope(json) {
64
65
  };
65
66
  }
66
67
 
68
+ function sourcesOf(json) {
69
+ let fields = Stdlib_Option.getOr(Stdlib_JSON.Decode.object(json), {});
70
+ let meta = Stdlib_Option.flatMap(fields["meta"], Stdlib_JSON.Decode.object);
71
+ let string = (d, k) => Stdlib_Option.flatMap(Stdlib_Option.flatMap(d, d => d[k]), Stdlib_JSON.Decode.string);
72
+ let msgId = string(meta, "msgId");
73
+ if (msgId === undefined) {
74
+ return [];
75
+ }
76
+ let match = ViewChange$ReventlessCore.entityOfEnvelope(fields);
77
+ return [{
78
+ msgId: msgId,
79
+ correlationId: string(meta, "correlationId"),
80
+ entityId: match[0],
81
+ entityType: match[1]
82
+ }];
83
+ }
84
+
67
85
  function makeJsonEventsHandler(sliceName, eventSchema, project, queryDbOps, subIdConfig, stateSchema) {
86
+ let onChange = ViewChange$ReventlessCore.reporter(sliceName, sliceName, state => state);
68
87
  return stream => Stream.runForEach(Stream.flatMap(Stream.mapEffect(stream, json => Effect.sync(() => {
69
88
  try {
70
89
  let match = decodeEnvelope(json);
@@ -74,11 +93,12 @@ function makeJsonEventsHandler(sliceName, eventSchema, project, queryDbOps, subI
74
93
  meta: match.meta,
75
94
  recordedAt: match.recordedAt
76
95
  });
77
- if (producerTime === "") {
78
- return actions;
79
- } else {
80
- return actions.map(__x => Projection$ReventlessCore.rewriteJsonAction(__x, producerTime, stateSchema));
81
- }
96
+ let sources = sourcesOf(json);
97
+ let actions$1 = producerTime === "" ? actions : actions.map(__x => Projection$ReventlessCore.rewriteJsonAction(__x, producerTime, stateSchema));
98
+ return actions$1.map(action => [
99
+ action,
100
+ sources
101
+ ]);
82
102
  } catch (raw_exn) {
83
103
  let exn = Primitive_exceptions.internalToException(raw_exn);
84
104
  StreamRoutedEntryPoint_Ops$ReventlessAws.logError("failed to decode event", {
@@ -87,7 +107,11 @@ function makeJsonEventsHandler(sliceName, eventSchema, project, queryDbOps, subI
87
107
  });
88
108
  return [];
89
109
  }
90
- })), actions => Stream.fromIterable(actions)), action => Effect.map(Effect.promise(() => Projection$ReventlessCore.handleAction(sliceName, action, queryDbOps, subIdConfig)), param => {}));
110
+ })), actions => Stream.fromIterable(actions)), param => {
111
+ let sources = param[1];
112
+ let action = param[0];
113
+ return Effect.map(Effect.promise(() => Projection$ReventlessCore.handleAction(sliceName, sources, onChange, action, queryDbOps, subIdConfig)), param => {});
114
+ });
91
115
  }
92
116
 
93
117
  function makeRegisteredHandler(entry, modules) {
@@ -106,6 +130,7 @@ export {
106
130
  parseHandlerConfig,
107
131
  decodeEnvelope,
108
132
  exnMessage,
133
+ sourcesOf,
109
134
  makeJsonEventsHandler,
110
135
  makeRegisteredHandler,
111
136
  }
@@ -60,7 +60,7 @@ function scheduleInput(roleArn, targetArn, setAt, schedule) {
60
60
 
61
61
  function failWithoutQueue(action) {
62
62
  let err = action + ` not possible: no Queue configured !`;
63
- return Effect.runPromise(Effect.flatMap(EffectLogger$ReventlessCore.logError("ScheduledPublisher_EventBridgeScheduler_Runtime-ReventlessAws", undefined, err), () => Effect.sync(() => Stdlib_JsError.throwWithMessage(err))));
63
+ return Effect.runPromise(Effect.flatMap(EffectLogger$ReventlessCore.logError("ScheduledPublisher_EventBridgeScheduler_Runtime-ReventlessAws", undefined, undefined, err), () => Effect.sync(() => Stdlib_JsError.throwWithMessage(err))));
64
64
  }
65
65
 
66
66
  async function putSchedule(roleArn, targetArn, schedule) {
@@ -9,7 +9,7 @@ import * as EffectLogger$ReventlessCore from "@reventlessdev/reventless-core/src
9
9
  function sendMessage(channelId, messageBody) {
10
10
  return Effect$1.runPromise(Effect$1.catchAll(Effect$1.retry(Effect$1.map(Effect.tryPromise(SQS_Error$ReventlessAws.classify, () => SQS_Helpers$AwsSdk.sendMessage(channelId, messageBody, undefined, undefined, undefined)), () => {}), SQS_Error$ReventlessAws.retrySchedule), err => {
11
11
  let msg = SQS_Error$ReventlessAws.message(err);
12
- return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_PluginMessage_Runtime-ReventlessAws", undefined, "Failed to send message to channel: " + msg), () => Effect$1.fail(err));
12
+ return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_PluginMessage_Runtime-ReventlessAws", undefined, undefined, "Failed to send message to channel: " + msg), () => Effect$1.fail(err));
13
13
  }));
14
14
  }
15
15
 
@@ -21,7 +21,7 @@ function addUserToGroup(region, userName, groupName, userPoolId) {
21
21
  return client.send(addUserToGroupCommand);
22
22
  }), () => {}), Cognito_Error$ReventlessAws.retrySchedule), err => {
23
23
  let msg = Cognito_Error$ReventlessAws.message(err);
24
- return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_CognitoGroupUser_Runtime-ReventlessAws", undefined, `addUserToGroup: ` + msg), () => Effect$1.fail(msg));
24
+ return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_CognitoGroupUser_Runtime-ReventlessAws", undefined, undefined, `addUserToGroup: ` + msg), () => Effect$1.fail(msg));
25
25
  }));
26
26
  }
27
27
 
@@ -39,7 +39,7 @@ function removeUserFromGroup(region, userName, groupName, userPoolId) {
39
39
  return client.send(removeUserFromGroupCommand);
40
40
  }), () => {}), Cognito_Error$ReventlessAws.retrySchedule), err => {
41
41
  let msg = Cognito_Error$ReventlessAws.message(err);
42
- return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_CognitoGroupUser_Runtime-ReventlessAws", undefined, `removeUserFromGroup: ` + msg), () => Effect$1.fail(msg));
42
+ return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_CognitoGroupUser_Runtime-ReventlessAws", undefined, undefined, `removeUserFromGroup: ` + msg), () => Effect$1.fail(msg));
43
43
  }));
44
44
  }
45
45
 
@@ -24,7 +24,7 @@ function signUp(region, userPoolId, userPoolClientId, userName, password) {
24
24
  }
25
25
 
26
26
  function signUpIfMissing(region, userPoolId, userPoolClientId, userName, password) {
27
- return Effect$1.runPromise(Effect$1.catchAll(Effect$1.flatMap(Effect.tryPromise(Cognito_Error$ReventlessAws.classify, () => signUp(region, userPoolId, userPoolClientId, userName, password)), result => EffectLogger$ReventlessCore.logInfo("Util_Cognito_Runtime-ReventlessAws", undefined, `Created User ` + userName + ` ` + Stdlib_Option.getOr(result.UserSub, ""))), err => EffectLogger$ReventlessCore.logInfo("Util_Cognito_Runtime-ReventlessAws", undefined, Cognito_Error$ReventlessAws.message(err))));
27
+ return Effect$1.runPromise(Effect$1.catchAll(Effect$1.flatMap(Effect.tryPromise(Cognito_Error$ReventlessAws.classify, () => signUp(region, userPoolId, userPoolClientId, userName, password)), result => EffectLogger$ReventlessCore.logInfo("Util_Cognito_Runtime-ReventlessAws", undefined, undefined, `Created User ` + userName + ` ` + Stdlib_Option.getOr(result.UserSub, ""))), err => EffectLogger$ReventlessCore.logInfo("Util_Cognito_Runtime-ReventlessAws", undefined, undefined, Cognito_Error$ReventlessAws.message(err))));
28
28
  }
29
29
 
30
30
  export {
@@ -46,7 +46,7 @@ function putWithRetries(table, id, item) {
46
46
  break;
47
47
  }
48
48
  let msg = err._0;
49
- return Effect$1.map(EffectLogger$ReventlessCore.logError("Util_DynamoDb_Runtime-ReventlessAws", undefined, `putWithRetries: id=` + id + `: ` + msg), () => ({
49
+ return Effect$1.map(EffectLogger$ReventlessCore.logError("Util_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `putWithRetries: id=` + id + `: ` + msg), () => ({
50
50
  TAG: "Error",
51
51
  _0: `put id=` + id + ` failed: ` + msg
52
52
  }));
@@ -70,7 +70,7 @@ function putIfNotExistsWithRetries(idKey, sortKey, table, id, item) {
70
70
  break;
71
71
  }
72
72
  let msg = err._0;
73
- return Effect$1.map(EffectLogger$ReventlessCore.logError("Util_DynamoDb_Runtime-ReventlessAws", undefined, `putIfNotExistsWithRetries: id=` + id + `: ` + msg), () => ({
73
+ return Effect$1.map(EffectLogger$ReventlessCore.logError("Util_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `putIfNotExistsWithRetries: id=` + id + `: ` + msg), () => ({
74
74
  TAG: "Error",
75
75
  _0: `putIfNotExists id=` + id + ` failed: ` + msg
76
76
  }));
@@ -87,7 +87,7 @@ function deleteWithRetries(sort, table, id) {
87
87
  _0: undefined
88
88
  })), DynamoDb_Error$ReventlessAws.retrySchedule), err => {
89
89
  let msg = DynamoDb_Error$ReventlessAws.message(err);
90
- return Effect$1.map(EffectLogger$ReventlessCore.logError("Util_DynamoDb_Runtime-ReventlessAws", undefined, `delete: id=` + id + `: ` + msg), () => ({
90
+ return Effect$1.map(EffectLogger$ReventlessCore.logError("Util_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `delete: id=` + id + `: ` + msg), () => ({
91
91
  TAG: "Error",
92
92
  _0: `delete id=` + id + ` failed: ` + msg
93
93
  }));
@@ -199,7 +199,7 @@ function batchWriteWithRetries(batchWriteRequests) {
199
199
  }
200
200
  let unprocessedRequests = Stdlib_Option.getOrThrow(writeOutput.UnprocessedItems, undefined);
201
201
  let count = Object.keys(unprocessedRequests).length.toString();
202
- return Effect$1.flatMap(EffectLogger$ReventlessCore.logInfo("Util_DynamoDb_Runtime-ReventlessAws", undefined, `batchWriteWithRetries: retry ` + retry.toString() + `: ` + count + ` unprocessed items`), () => attempt(retry + 1 | 0, unprocessedRequests));
202
+ return Effect$1.flatMap(EffectLogger$ReventlessCore.logInfo("Util_DynamoDb_Runtime-ReventlessAws", undefined, undefined, `batchWriteWithRetries: retry ` + retry.toString() + `: ` + count + ` unprocessed items`), () => attempt(retry + 1 | 0, unprocessedRequests));
203
203
  }), err => {
204
204
  let msg = DynamoDb_Error$ReventlessAws.message(err);
205
205
  return Effect$1.succeed({
@@ -14,7 +14,7 @@ function putRecord(stream, data) {
14
14
  PartitionKey: ""
15
15
  }))), param => {}), Kinesis_Error$ReventlessAws.retrySchedule), err => {
16
16
  let msg = Kinesis_Error$ReventlessAws.message(err);
17
- return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_Kinesis_Runtime-ReventlessAws", undefined, `putRecord: ` + msg), () => Effect$1.fail(msg));
17
+ return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_Kinesis_Runtime-ReventlessAws", undefined, undefined, `putRecord: ` + msg), () => Effect$1.fail(msg));
18
18
  }));
19
19
  }
20
20
 
@@ -9,14 +9,14 @@ import * as EffectLogger$ReventlessCore from "@reventlessdev/reventless-core/src
9
9
  function publish(topic, message) {
10
10
  return Effect$1.runPromise(Effect$1.catchAll(Effect$1.retry(Effect$1.map(Effect.tryPromise(SNS_Error$ReventlessAws.classify, () => SNS_Helpers$AwsSdk.publish(topic.arn, undefined, message)), param => {}), SNS_Error$ReventlessAws.retrySchedule), err => {
11
11
  let msg = SNS_Error$ReventlessAws.message(err);
12
- return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_SNS_Runtime-ReventlessAws", undefined, "publish: " + msg), () => Effect$1.fail(msg));
12
+ return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_SNS_Runtime-ReventlessAws", undefined, undefined, "publish: " + msg), () => Effect$1.fail(msg));
13
13
  }));
14
14
  }
15
15
 
16
16
  function publishFifo(topic, messageGroupId, message) {
17
17
  return Effect$1.runPromise(Effect$1.catchAll(Effect$1.retry(Effect$1.map(Effect.tryPromise(SNS_Error$ReventlessAws.classify, () => SNS_Helpers$AwsSdk.publish(topic.arn, messageGroupId, message)), param => {}), SNS_Error$ReventlessAws.retrySchedule), err => {
18
18
  let msg = SNS_Error$ReventlessAws.message(err);
19
- return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_SNS_Runtime-ReventlessAws", undefined, "publishFifo: " + msg), () => Effect$1.fail(msg));
19
+ return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_SNS_Runtime-ReventlessAws", undefined, undefined, "publishFifo: " + msg), () => Effect$1.fail(msg));
20
20
  }));
21
21
  }
22
22
 
@@ -44,7 +44,7 @@ function send(queue, queueService, commandJson) {
44
44
  }
45
45
  }), () => {}), SQS_Error$ReventlessAws.sendRetrySchedule), err => {
46
46
  let msg = SQS_Error$ReventlessAws.message(err);
47
- return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_SQS_Runtime-ReventlessAws", undefined, "send: " + msg), () => Effect$1.fail(msg));
47
+ return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_SQS_Runtime-ReventlessAws", undefined, undefined, "send: " + msg), () => Effect$1.fail(msg));
48
48
  });
49
49
  }
50
50
 
@@ -69,7 +69,7 @@ function sendMessages(queue, queueService, commandJsons) {
69
69
  return failedIds.some(failedId => failedId === msgId);
70
70
  });
71
71
  if (retry < 5) {
72
- return Effect$1.flatMap(EffectLogger$ReventlessCore.logInfo("Util_SQS_Runtime-ReventlessAws", undefined, `sendMessages: ` + failedIds.length.toString() + ` failed ids, retrying subset`), () => attempt(retry + 1 | 0, commandJsonsToRetry));
72
+ return Effect$1.flatMap(EffectLogger$ReventlessCore.logInfo("Util_SQS_Runtime-ReventlessAws", undefined, undefined, `sendMessages: ` + failedIds.length.toString() + ` failed ids, retrying subset`), () => attempt(retry + 1 | 0, commandJsonsToRetry));
73
73
  }
74
74
  let ids = failedIds.join(", ");
75
75
  return Effect$1.fail({
@@ -79,7 +79,7 @@ function sendMessages(queue, queueService, commandJsons) {
79
79
  });
80
80
  return Effect$1.catchAll(attempt(0, commandJsons), err => {
81
81
  let msg = SQS_Error$ReventlessAws.message(err);
82
- return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_SQS_Runtime-ReventlessAws", undefined, `sendMessages: ` + msg), () => Effect$1.fail(msg));
82
+ return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_SQS_Runtime-ReventlessAws", undefined, undefined, `sendMessages: ` + msg), () => Effect$1.fail(msg));
83
83
  });
84
84
  }
85
85
 
@@ -104,7 +104,7 @@ function deleteMessages(entries, queue) {
104
104
  ReceiptHandle: entry.ReceiptHandle
105
105
  }));
106
106
  if (retry < 5) {
107
- return Effect$1.flatMap(EffectLogger$ReventlessCore.logInfo("Util_SQS_Runtime-ReventlessAws", undefined, `deleteMessages: ` + failedIds.length.toString() + ` failed ids, retrying subset`), () => attempt(retry + 1 | 0, entriesToRetry));
107
+ return Effect$1.flatMap(EffectLogger$ReventlessCore.logInfo("Util_SQS_Runtime-ReventlessAws", undefined, undefined, `deleteMessages: ` + failedIds.length.toString() + ` failed ids, retrying subset`), () => attempt(retry + 1 | 0, entriesToRetry));
108
108
  }
109
109
  let ids = failedIds.join(", ");
110
110
  return Effect$1.fail({
@@ -114,7 +114,7 @@ function deleteMessages(entries, queue) {
114
114
  });
115
115
  return Effect$1.catchAll(attempt(0, entries), err => {
116
116
  let msg = SQS_Error$ReventlessAws.message(err);
117
- return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_SQS_Runtime-ReventlessAws", undefined, `deleteMessages: ` + msg), () => Effect$1.fail(msg));
117
+ return Effect$1.flatMap(EffectLogger$ReventlessCore.logError("Util_SQS_Runtime-ReventlessAws", undefined, undefined, `deleteMessages: ` + msg), () => Effect$1.fail(msg));
118
118
  });
119
119
  }
120
120
 
@@ -388,7 +388,7 @@ describe("AutomationSliceEntryPoint_Ops.makeOutboundJsonEventsHandler", () => {
388
388
  let received = ref([])
389
389
  let callback: AutomationSliceEntryPoint_Ops.outboundCallback<outboundEvent> = {
390
390
  todoItems: Dict.make(),
391
- phase1: async (events, ~capabilities as _) => {
391
+ phase1: async (events, ~metas as _=?, ~capabilities as _) => {
392
392
  received := events
393
393
  steps->Array.push("phase1")
394
394
  },
@@ -581,7 +581,7 @@ globalThis.describe("AutomationSliceEntryPoint_Ops.makeOutboundJsonEventsHandler
581
581
  contents: []
582
582
  };
583
583
  let callback_todoItems = {};
584
- let callback_phase1 = async (events, param) => {
584
+ let callback_phase1 = async (events, param, param$1) => {
585
585
  received.contents = events;
586
586
  steps.push("phase1");
587
587
  };