@automate.ax/api-contract 0.44.0 → 0.46.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
@@ -12,7 +12,203 @@ const SIGNAL_FAILURE_SCHEMA = z.object({
12
12
  name: z.string(),
13
13
  })
14
14
 
15
- const TERMINAL_ACTION_STATUS_SCHEMA = z.enum(["closed", "failed", "succeeded"])
15
+ const OUTCOME_SEQUENCE_SCHEMA = z.number().int().positive()
16
+
17
+ const ACTION_INVOCATION_BASE_SCHEMA = z.object({
18
+ actionDependencyIds: z.string().array(),
19
+ description: z.string().nullable(),
20
+ eventDependencyIds: z.string().array(),
21
+ inputHash: z.string(),
22
+ name: z.string(),
23
+ signalDependencyIds: z.string().array(),
24
+ slot: z.number().int().nonnegative(),
25
+ })
26
+
27
+ const ACTION_INVOCATION_SCHEMA = z.union([
28
+ ACTION_INVOCATION_BASE_SCHEMA.extend({ status: z.literal("pending") }),
29
+ ACTION_INVOCATION_BASE_SCHEMA.extend({
30
+ reason: z.literal("closed-dependency"),
31
+ status: z.literal("skipped"),
32
+ }),
33
+ ACTION_INVOCATION_BASE_SCHEMA.extend({
34
+ failure: SIGNAL_FAILURE_SCHEMA,
35
+ reason: z.literal("failed-dependency"),
36
+ status: z.literal("skipped"),
37
+ }),
38
+ ])
39
+
40
+ const ACTION_RUN_INVOCATION_BASE_SCHEMA = ACTION_INVOCATION_BASE_SCHEMA.extend({
41
+ actionInvocationId: z.string(),
42
+ })
43
+
44
+ const ACTION_RUN_INVOCATION_SCHEMA = z.union([
45
+ ACTION_RUN_INVOCATION_BASE_SCHEMA.extend({ status: z.literal("pending") }),
46
+ ACTION_RUN_INVOCATION_BASE_SCHEMA.extend({
47
+ failure: SIGNAL_FAILURE_SCHEMA,
48
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
49
+ status: z.literal("failed"),
50
+ }),
51
+ ACTION_RUN_INVOCATION_BASE_SCHEMA.extend({
52
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
53
+ reason: z.literal("closed-dependency"),
54
+ status: z.literal("skipped"),
55
+ }),
56
+ ACTION_RUN_INVOCATION_BASE_SCHEMA.extend({
57
+ failure: SIGNAL_FAILURE_SCHEMA,
58
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
59
+ reason: z.literal("failed-dependency"),
60
+ status: z.literal("skipped"),
61
+ }),
62
+ ACTION_RUN_INVOCATION_BASE_SCHEMA.extend({
63
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
64
+ status: z.literal("succeeded"),
65
+ }),
66
+ ])
67
+
68
+ const SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA = z.object({
69
+ actionDependencyIds: z.string().array(),
70
+ eventDependencyIds: z.string().array(),
71
+ signalDependencyIds: z.string().array(),
72
+ slot: z.number().int().nonnegative(),
73
+ })
74
+
75
+ const CORRELATION_ENTRY_SCHEMA = SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
76
+ key: encodableSchema,
77
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
78
+ streamName: z.string().min(1),
79
+ streamNames: z.string().min(1).array().min(2),
80
+ value: encodableSchema,
81
+ })
82
+
83
+ const SIGNAL_INVOCATION_SCHEMA = z.union([
84
+ SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
85
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA.optional(),
86
+ status: z.literal("closed"),
87
+ }),
88
+ SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
89
+ failure: SIGNAL_FAILURE_SCHEMA,
90
+ status: z.literal("failed"),
91
+ }),
92
+ SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
93
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA.optional(),
94
+ selectedIndex: z.number().int().nonnegative().optional(),
95
+ status: z.literal("open"),
96
+ }),
97
+ ])
98
+
99
+ const SIGNAL_BATCH_OUTCOME_BASE_SCHEMA =
100
+ SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.extend({
101
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
102
+ signalInvocationId: z.string(),
103
+ })
104
+
105
+ const SIGNAL_BATCH_OUTCOME_SCHEMA = z.union([
106
+ SIGNAL_BATCH_OUTCOME_BASE_SCHEMA.extend({
107
+ selectedIndex: z.number().int().nonnegative().optional(),
108
+ status: z.literal("open"),
109
+ }),
110
+ SIGNAL_BATCH_OUTCOME_BASE_SCHEMA.extend({ status: z.literal("closed") }),
111
+ SIGNAL_BATCH_OUTCOME_BASE_SCHEMA.extend({
112
+ failure: SIGNAL_FAILURE_SCHEMA,
113
+ status: z.literal("failed"),
114
+ }),
115
+ SIGNAL_BATCH_OUTCOME_BASE_SCHEMA.extend({ status: z.literal("succeeded") }),
116
+ ])
117
+
118
+ const ACTION_VALUE_OUTCOME_SCHEMA = z.union([
119
+ z.object({
120
+ actionInvocationId: z.string(),
121
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
122
+ slot: z.number().int(),
123
+ status: z.literal("failed"),
124
+ failure: SIGNAL_FAILURE_SCHEMA,
125
+ }),
126
+ z.object({
127
+ actionInvocationId: z.string(),
128
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
129
+ reason: z.literal("closed-dependency"),
130
+ slot: z.number().int(),
131
+ status: z.literal("skipped"),
132
+ }),
133
+ z.object({
134
+ actionInvocationId: z.string(),
135
+ failure: SIGNAL_FAILURE_SCHEMA,
136
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
137
+ reason: z.literal("failed-dependency"),
138
+ slot: z.number().int(),
139
+ status: z.literal("skipped"),
140
+ }),
141
+ z.object({
142
+ actionInvocationId: z.string(),
143
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
144
+ output: encodableSchema,
145
+ slot: z.number().int(),
146
+ status: z.literal("succeeded"),
147
+ }),
148
+ ])
149
+
150
+ const SIGNAL_VALUE_OUTCOME_BASE_SCHEMA = z.object({
151
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
152
+ signalInvocationId: z.string(),
153
+ slot: z.number().int(),
154
+ })
155
+
156
+ const SIGNAL_VALUE_OUTCOME_SCHEMA = z.union([
157
+ SIGNAL_VALUE_OUTCOME_BASE_SCHEMA.extend({
158
+ selectedIndex: z.number().int().nonnegative().optional(),
159
+ status: z.literal("open"),
160
+ }),
161
+ SIGNAL_VALUE_OUTCOME_BASE_SCHEMA.extend({ status: z.literal("closed") }),
162
+ SIGNAL_VALUE_OUTCOME_BASE_SCHEMA.extend({
163
+ failure: SIGNAL_FAILURE_SCHEMA,
164
+ status: z.literal("failed"),
165
+ }),
166
+ SIGNAL_VALUE_OUTCOME_BASE_SCHEMA.extend({
167
+ output: encodableSchema,
168
+ status: z.literal("succeeded"),
169
+ }),
170
+ ])
171
+
172
+ const RUNTIME_VALUE_CONTEXT_SCHEMA = z.object({
173
+ actionOutputs: ACTION_VALUE_OUTCOME_SCHEMA.array(),
174
+ contextId: z.string(),
175
+ events: z
176
+ .object({
177
+ automationEventId: z.string(),
178
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
179
+ payload: encodableSchema,
180
+ slot: z.number().int(),
181
+ })
182
+ .array(),
183
+ signalOutputs: SIGNAL_VALUE_OUTCOME_SCHEMA.array(),
184
+ })
185
+
186
+ const RUNTIME_RUN_CONTEXT_SCHEMA = z.object({
187
+ actions: ACTION_RUN_INVOCATION_SCHEMA.array(),
188
+ contextId: z.string(),
189
+ events: z
190
+ .object({
191
+ automationEventId: z.string(),
192
+ outcomeSeq: OUTCOME_SEQUENCE_SCHEMA,
193
+ slot: z.number().int(),
194
+ })
195
+ .array(),
196
+ signalOutputs: SIGNAL_BATCH_OUTCOME_SCHEMA.array(),
197
+ })
198
+
199
+ const TARGET_ACTION_SCHEMA = z.union([
200
+ z.object({
201
+ context: RUNTIME_VALUE_CONTEXT_SCHEMA,
202
+ id: z.string(),
203
+ slot: z.number().int(),
204
+ status: z.literal("pending"),
205
+ }),
206
+ z.object({
207
+ id: z.string(),
208
+ slot: z.number().int(),
209
+ status: z.enum(["failed", "skipped", "succeeded"]),
210
+ }),
211
+ ])
16
212
 
17
213
  const GENERATION_WARNING_SCHEMA = z.discriminatedUnion("type", [
18
214
  z.object({
@@ -153,24 +349,25 @@ export const runtimeContract = {
153
349
  commit: oc
154
350
  .input(
155
351
  z.object({
156
- actionInvocations: z
157
- .object({
158
- actionDependencyIds: z.string().array(),
159
- description: z.string().nullable(),
160
- eventDependencyIds: z.string().array(),
161
- inputHash: z.string(),
162
- name: z.string(),
163
- slot: z.number().int().nonnegative(),
164
- })
165
- .array()
166
- .default([]),
352
+ actionInvocations: ACTION_INVOCATION_SCHEMA.array().default([]),
353
+ correlationEntries: CORRELATION_ENTRY_SCHEMA.array().default([]),
354
+ settled: z.boolean().default(true),
355
+ signalInvocations: SIGNAL_INVOCATION_SCHEMA.array().default([]),
167
356
  }),
168
357
  )
169
358
  .output(z.void()),
170
- completeInvocation: oc
359
+ completeAction: oc
171
360
  .input(
172
- z.discriminatedUnion("status", [
173
- z.object({ status: z.literal("closed") }),
361
+ z.union([
362
+ z.object({
363
+ reason: z.literal("closed-dependency"),
364
+ status: z.literal("skipped"),
365
+ }),
366
+ z.object({
367
+ failure: SIGNAL_FAILURE_SCHEMA,
368
+ reason: z.literal("failed-dependency"),
369
+ status: z.literal("skipped"),
370
+ }),
174
371
  z.object({
175
372
  failure: SIGNAL_FAILURE_SCHEMA,
176
373
  status: z.literal("failed"),
@@ -185,67 +382,16 @@ export const runtimeContract = {
185
382
  generate: oc
186
383
  .input(RUNTIME_GENERATION_INPUT_SCHEMA)
187
384
  .output(generationResultSchema),
188
- loadInvocation: oc.output(
385
+ load: oc.output(
189
386
  z.object({
190
- context: z.object({
191
- actionOutputs: z
192
- .discriminatedUnion("status", [
193
- z.object({
194
- actionInvocationId: z.string(),
195
- slot: z.number().int(),
196
- status: z.literal("closed"),
197
- }),
198
- z.object({
199
- actionInvocationId: z.string(),
200
- failure: SIGNAL_FAILURE_SCHEMA,
201
- slot: z.number().int(),
202
- status: z.literal("failed"),
203
- }),
204
- z.object({
205
- actionInvocationId: z.string(),
206
- output: encodableSchema,
207
- slot: z.number().int(),
208
- status: z.literal("succeeded"),
209
- }),
210
- ])
211
- .array(),
212
- contextId: z.string(),
213
- events: z
214
- .object({
215
- automationEventId: z.string(),
216
- payload: encodableSchema,
217
- slot: z.number().int(),
218
- })
219
- .array(),
220
- }),
221
- id: z.string(),
222
- slot: z.number().int(),
223
- }),
224
- ),
225
- nextBatch: oc.output(
226
- z.object({
227
- context: z.object({
228
- actionOutputs: z
229
- .object({
230
- actionDependencyIds: z.string().array(),
231
- actionInvocationId: z.string(),
232
- eventDependencyIds: z.string().array(),
233
- inputHash: z.string(),
234
- name: z.string(),
235
- slot: z.number().int(),
236
- status: TERMINAL_ACTION_STATUS_SCHEMA,
237
- })
238
- .array(),
239
- contextId: z.string(),
240
- events: z
241
- .object({
242
- automationEventId: z.string(),
243
- slot: z.number().int(),
244
- })
245
- .array(),
246
- }),
387
+ context: RUNTIME_RUN_CONTEXT_SCHEMA,
388
+ finalAttempt: z.boolean(),
389
+ targetAction: TARGET_ACTION_SCHEMA.optional(),
247
390
  }),
248
391
  ),
392
+ loadValues: oc
393
+ .input(SIGNAL_INVOCATION_DEPENDENCIES_SCHEMA.omit({ slot: true }))
394
+ .output(RUNTIME_VALUE_CONTEXT_SCHEMA),
249
395
  resolveAccountInput: oc
250
396
  .input(
251
397
  z.strictObject({