@automate.ax/api-contract 0.54.0 → 0.56.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.
package/src/runtime.ts CHANGED
@@ -94,6 +94,7 @@ const ACTION_INVOCATION_SCHEMA = z.union([
94
94
 
95
95
  const ACTION_RUN_INVOCATION_BASE_SCHEMA = ACTION_INVOCATION_BASE_SCHEMA.extend({
96
96
  actionInvocationId: z.string(),
97
+ contextId: z.string(),
97
98
  })
98
99
 
99
100
  const ACTION_RUN_INVOCATION_SCHEMA = z.union([
@@ -127,15 +128,66 @@ const SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA = z.object({
127
128
  slot: z.number().int().nonnegative(),
128
129
  })
129
130
 
131
+ const BUFFER_PARAMETER_DEPENDENCIES_SCHEMA = z.object({
132
+ parameterActionDependencyIds: z.string().array(),
133
+ parameterEventDependencyIds: z.string().array(),
134
+ parameterSignalDependencyIds: z.string().array(),
135
+ })
136
+
137
+ const BUFFER_PRIMARY_POSITION_SCHEMA = z.enum(["first", "last"])
138
+ const CORRELATION_STREAM_NAMES_SCHEMA = z
139
+ .string()
140
+ .min(1)
141
+ .array()
142
+ .min(2)
143
+ .refine((names) => new Set(names).size === names.length, {
144
+ message: "Correlation stream names must be unique.",
145
+ })
146
+
130
147
  const CORRELATION_ENTRY_SCHEMA = SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
131
148
  key: encodableSchema,
132
- order: z.string().min(1).array().min(2).optional(),
149
+ order: CORRELATION_STREAM_NAMES_SCHEMA.optional(),
133
150
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
134
151
  streamName: z.string().min(1),
135
- streamNames: z.string().min(1).array().min(2),
152
+ streamNames: CORRELATION_STREAM_NAMES_SCHEMA,
136
153
  ttl: z.union([z.string().min(1), z.number().nonnegative()]).optional(),
154
+ }).superRefine((entry, context) => {
155
+ if (!entry.streamNames.includes(entry.streamName)) {
156
+ context.addIssue({
157
+ code: "custom",
158
+ message: "Correlation stream must be included in streamNames.",
159
+ path: ["streamName"],
160
+ })
161
+ }
162
+ if (
163
+ entry.order &&
164
+ (entry.order.length !== entry.streamNames.length ||
165
+ entry.order.some((name) => !entry.streamNames.includes(name)))
166
+ ) {
167
+ context.addIssue({
168
+ code: "custom",
169
+ message: "Correlation order must name every stream exactly once.",
170
+ path: ["order"],
171
+ })
172
+ }
137
173
  })
138
174
 
175
+ const COLLECTION_ENTRY_SCHEMA = SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
176
+ count: z.number().int().positive(),
177
+ key: encodableSchema,
178
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
179
+ primaryPosition: BUFFER_PRIMARY_POSITION_SCHEMA,
180
+ ttl: z.union([z.string().min(1), z.number().nonnegative()]).optional(),
181
+ }).extend(BUFFER_PARAMETER_DEPENDENCIES_SCHEMA.shape)
182
+
183
+ const WINDOW_ENTRY_SCHEMA = SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
184
+ duration: z.union([z.string().min(1), z.number().nonnegative()]),
185
+ key: encodableSchema,
186
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
187
+ primaryPosition: BUFFER_PRIMARY_POSITION_SCHEMA,
188
+ ttl: z.union([z.string().min(1), z.number().nonnegative()]).optional(),
189
+ }).extend(BUFFER_PARAMETER_DEPENDENCIES_SCHEMA.shape)
190
+
139
191
  const SIGNAL_INVOCATION_SCHEMA = z.union([
140
192
  SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
141
193
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA.optional(),
@@ -154,6 +206,7 @@ const SIGNAL_INVOCATION_SCHEMA = z.union([
154
206
 
155
207
  const SIGNAL_BATCH_OUTCOME_BASE_SCHEMA =
156
208
  SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
209
+ contextId: z.string(),
157
210
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
158
211
  signalInvocationId: z.string(),
159
212
  })
@@ -171,44 +224,55 @@ const SIGNAL_BATCH_OUTCOME_SCHEMA = z.union([
171
224
  SIGNAL_BATCH_OUTCOME_BASE_SCHEMA.extend({ status: z.literal("succeeded") }),
172
225
  ])
173
226
 
227
+ const ACTION_VALUE_OUTCOME_BASE_SCHEMA = z.object({
228
+ actionInvocationId: z.string(),
229
+ contextId: z.string(),
230
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
231
+ slot: z.number().int(),
232
+ })
233
+
174
234
  const ACTION_VALUE_OUTCOME_SCHEMA = z.union([
175
- z.object({
176
- actionInvocationId: z.string(),
235
+ ACTION_VALUE_OUTCOME_BASE_SCHEMA.extend({
177
236
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
178
- slot: z.number().int(),
179
237
  status: z.literal("failed"),
180
238
  failure: SIGNAL_FAILURE_SCHEMA,
181
239
  }),
182
- z.object({
183
- actionInvocationId: z.string(),
184
- outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
240
+ ACTION_VALUE_OUTCOME_BASE_SCHEMA.extend({
185
241
  reason: z.literal("closed-dependency"),
186
- slot: z.number().int(),
187
242
  status: z.literal("skipped"),
188
243
  }),
189
- z.object({
190
- actionInvocationId: z.string(),
244
+ ACTION_VALUE_OUTCOME_BASE_SCHEMA.extend({
191
245
  failure: SIGNAL_FAILURE_SCHEMA,
192
- outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
193
246
  reason: z.literal("failed-dependency"),
194
- slot: z.number().int(),
195
247
  status: z.literal("skipped"),
196
248
  }),
197
- z.object({
198
- actionInvocationId: z.string(),
199
- outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
249
+ ACTION_VALUE_OUTCOME_BASE_SCHEMA.extend({
200
250
  output: encodableSchema,
201
- slot: z.number().int(),
202
251
  status: z.literal("succeeded"),
203
252
  }),
204
253
  ])
205
254
 
206
255
  const SIGNAL_VALUE_OUTCOME_BASE_SCHEMA = z.object({
256
+ contextId: z.string(),
207
257
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
208
258
  signalInvocationId: z.string(),
209
259
  slot: z.number().int(),
210
260
  })
211
261
 
262
+ const RUNTIME_CONTEXT_PARENT_SCHEMA = z.object({
263
+ contextId: z.string(),
264
+ isPrimary: z.boolean(),
265
+ parentContextId: z.string(),
266
+ position: z.number().int().nonnegative(),
267
+ })
268
+
269
+ const BUFFER_VALUE_GROUP_SCHEMA = z.object({
270
+ items: SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.omit({ slot: true })
271
+ .extend({ contextId: z.string() })
272
+ .array(),
273
+ signalInvocationId: z.string(),
274
+ })
275
+
212
276
  const SIGNAL_VALUE_OUTCOME_SCHEMA = z.union([
213
277
  SIGNAL_VALUE_OUTCOME_BASE_SCHEMA.extend({
214
278
  selectedIndex: z.number().int().nonnegative().optional(),
@@ -227,10 +291,13 @@ const SIGNAL_VALUE_OUTCOME_SCHEMA = z.union([
227
291
 
228
292
  const RUNTIME_VALUE_CONTEXT_SCHEMA = z.object({
229
293
  actionOutputs: ACTION_VALUE_OUTCOME_SCHEMA.array(),
294
+ bufferGroups: BUFFER_VALUE_GROUP_SCHEMA.array(),
230
295
  contextId: z.string(),
296
+ contextParents: RUNTIME_CONTEXT_PARENT_SCHEMA.array(),
231
297
  events: z
232
298
  .object({
233
299
  automationEventId: z.string(),
300
+ contextId: z.string(),
234
301
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
235
302
  payload: encodableSchema,
236
303
  slot: z.number().int(),
@@ -242,9 +309,11 @@ const RUNTIME_VALUE_CONTEXT_SCHEMA = z.object({
242
309
  const RUNTIME_RUN_CONTEXT_SCHEMA = z.object({
243
310
  actions: ACTION_RUN_INVOCATION_SCHEMA.array(),
244
311
  contextId: z.string(),
312
+ contextParents: RUNTIME_CONTEXT_PARENT_SCHEMA.array(),
245
313
  events: z
246
314
  .object({
247
315
  automationEventId: z.string(),
316
+ contextId: z.string(),
248
317
  outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
249
318
  slot: z.number().int(),
250
319
  })
@@ -406,9 +475,11 @@ export const runtimeContract = {
406
475
  .input(
407
476
  z.object({
408
477
  actionInvocations: ACTION_INVOCATION_SCHEMA.array().default([]),
478
+ collectionEntries: COLLECTION_ENTRY_SCHEMA.array().default([]),
409
479
  correlationEntries: CORRELATION_ENTRY_SCHEMA.array().default([]),
410
480
  settled: z.boolean().default(true),
411
481
  signalInvocations: SIGNAL_INVOCATION_SCHEMA.array().default([]),
482
+ windowEntries: WINDOW_ENTRY_SCHEMA.array().default([]),
412
483
  }),
413
484
  )
414
485
  .output(z.void()),