@automate.ax/integration-contracts 0.102.0 → 0.103.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automate.ax/integration-contracts",
3
- "version": "0.102.0",
3
+ "version": "0.103.1",
4
4
  "description": "Shared integration payload contracts and provider primitives for Automate.ax.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -49,7 +49,7 @@
49
49
  }
50
50
  },
51
51
  "dependencies": {
52
- "@automate.ax/codec": "0.102.0",
52
+ "@automate.ax/codec": "0.103.1",
53
53
  "@cfworker/json-schema": "^4.1.1",
54
54
  "@googleapis/calendar": "^15.0.0",
55
55
  "@googleapis/forms": "^6.0.1",
@@ -14,6 +14,24 @@ const RESOURCE_REFERENCE_SCHEMA = z.object({
14
14
  id: z.string().min(1),
15
15
  name: z.string().min(1),
16
16
  })
17
+ const AUTOMATE_ERROR_BASE_SCHEMA = z.object({
18
+ code: z.string().min(1),
19
+ details: z.json().optional(),
20
+ message: z.string(),
21
+ name: z.string().optional(),
22
+ })
23
+ const AUTOMATE_ERROR_DEPTH_0_SCHEMA = AUTOMATE_ERROR_BASE_SCHEMA.extend({
24
+ cause: z.never().optional(),
25
+ })
26
+ const AUTOMATE_ERROR_DEPTH_1_SCHEMA = AUTOMATE_ERROR_BASE_SCHEMA.extend({
27
+ cause: AUTOMATE_ERROR_DEPTH_0_SCHEMA.optional(),
28
+ })
29
+ const AUTOMATE_ERROR_DEPTH_2_SCHEMA = AUTOMATE_ERROR_BASE_SCHEMA.extend({
30
+ cause: AUTOMATE_ERROR_DEPTH_1_SCHEMA.optional(),
31
+ })
32
+ export const AUTOMATE_ERROR_SCHEMA = AUTOMATE_ERROR_BASE_SCHEMA.extend({
33
+ cause: AUTOMATE_ERROR_DEPTH_2_SCHEMA.optional(),
34
+ })
17
35
 
18
36
  export const AUTOMATE_AUTOMATION_TRIGGER_CONFIG_SCHEMA = z.object({
19
37
  automationId: z.string().min(1),
@@ -23,6 +41,12 @@ export const AUTOMATE_DEPLOYMENT_TRIGGER_CONFIG_SCHEMA = z.object({
23
41
  projectId: z.string().min(1),
24
42
  })
25
43
 
44
+ export const AUTOMATE_EXECUTION_TRIGGER_CONFIG_SCHEMA =
45
+ AUTOMATE_AUTOMATION_TRIGGER_CONFIG_SCHEMA
46
+
47
+ export const AUTOMATE_ACTION_ATTEMPT_TRIGGER_CONFIG_SCHEMA =
48
+ AUTOMATE_AUTOMATION_TRIGGER_CONFIG_SCHEMA
49
+
26
50
  export const AUTOMATE_AUTOMATION_STATE_EVENT_SCHEMA = z.object({
27
51
  automation: z.object({
28
52
  description: z.string(),
@@ -93,7 +117,136 @@ export const AUTOMATE_DEPLOYMENT_SUCCEEDED_EVENT_SCHEMA =
93
117
  status: z.literal("succeeded"),
94
118
  })
95
119
 
120
+ const AUTOMATE_EXECUTION_STATUS_SCHEMA = z.enum([
121
+ "running",
122
+ "settled",
123
+ "failed",
124
+ ])
125
+
126
+ export const AUTOMATE_EXECUTION_EVENT_SCHEMA = z.object({
127
+ automation: z.object({
128
+ description: z.string(),
129
+ id: z.string().min(1),
130
+ identityKey: z.string().min(1),
131
+ }),
132
+ eventTypes: z.string().array(),
133
+ execution: z.object({
134
+ createdAt: z.date(),
135
+ id: z.string().min(1),
136
+ settledAt: z.date().nullable(),
137
+ status: AUTOMATE_EXECUTION_STATUS_SCHEMA,
138
+ }),
139
+ failure: AUTOMATE_ERROR_SCHEMA.nullable(),
140
+ organization: RESOURCE_REFERENCE_SCHEMA,
141
+ project: RESOURCE_REFERENCE_SCHEMA,
142
+ transitionedAt: z.date(),
143
+ })
144
+
145
+ export const AUTOMATE_EXECUTION_SETTLED_EVENT_SCHEMA =
146
+ AUTOMATE_EXECUTION_EVENT_SCHEMA.extend({
147
+ execution: AUTOMATE_EXECUTION_EVENT_SCHEMA.shape.execution.extend({
148
+ settledAt: z.date(),
149
+ status: z.literal("settled"),
150
+ }),
151
+ failure: z.null(),
152
+ })
153
+
154
+ export const AUTOMATE_EXECUTION_FAILED_EVENT_SCHEMA =
155
+ AUTOMATE_EXECUTION_EVENT_SCHEMA.extend({
156
+ execution: AUTOMATE_EXECUTION_EVENT_SCHEMA.shape.execution.extend({
157
+ settledAt: z.date(),
158
+ status: z.literal("failed"),
159
+ }),
160
+ failure: AUTOMATE_ERROR_SCHEMA,
161
+ })
162
+
163
+ const AUTOMATE_ACTION_ATTEMPT_STATUS_SCHEMA = z.enum([
164
+ "running",
165
+ "retrying",
166
+ "succeeded",
167
+ "failed",
168
+ "indeterminate",
169
+ ])
170
+
171
+ export const AUTOMATE_ACTION_ATTEMPT_EVENT_SCHEMA = z.object({
172
+ action: z.object({
173
+ id: z.string().min(1),
174
+ maxAttempts: z.number().int().positive(),
175
+ name: z.string(),
176
+ replaySafety: z.enum(["safe", "unsafe"]).nullable(),
177
+ slot: z.number().int().nonnegative(),
178
+ status: z.enum(["pending", "succeeded", "skipped", "failed"]),
179
+ }),
180
+ attempt: z.object({
181
+ completedAt: z.date().nullable(),
182
+ id: z.string().min(1),
183
+ ordinal: z.number().int().positive(),
184
+ retryAt: z.date().nullable(),
185
+ startedAt: z.date(),
186
+ status: AUTOMATE_ACTION_ATTEMPT_STATUS_SCHEMA,
187
+ }),
188
+ automation: z.object({
189
+ id: z.string().min(1),
190
+ identityKey: z.string().min(1),
191
+ }),
192
+ execution: z.object({ id: z.string().min(1) }),
193
+ failure: AUTOMATE_ERROR_SCHEMA.nullable(),
194
+ organization: RESOURCE_REFERENCE_SCHEMA,
195
+ project: RESOURCE_REFERENCE_SCHEMA,
196
+ transitionedAt: z.date(),
197
+ })
198
+
199
+ export const AUTOMATE_ACTION_RETRY_SCHEDULED_EVENT_SCHEMA =
200
+ AUTOMATE_ACTION_ATTEMPT_EVENT_SCHEMA.extend({
201
+ attempt: AUTOMATE_ACTION_ATTEMPT_EVENT_SCHEMA.shape.attempt.extend({
202
+ completedAt: z.date(),
203
+ retryAt: z.date(),
204
+ status: z.literal("retrying"),
205
+ }),
206
+ failure: AUTOMATE_ERROR_SCHEMA,
207
+ })
208
+
209
+ export const AUTOMATE_ACTION_FAILED_EVENT_SCHEMA =
210
+ AUTOMATE_ACTION_ATTEMPT_EVENT_SCHEMA.extend({
211
+ action: AUTOMATE_ACTION_ATTEMPT_EVENT_SCHEMA.shape.action.extend({
212
+ status: z.literal("failed"),
213
+ }),
214
+ attempt: AUTOMATE_ACTION_ATTEMPT_EVENT_SCHEMA.shape.attempt.extend({
215
+ completedAt: z.date(),
216
+ status: z.literal("failed"),
217
+ }),
218
+ failure: AUTOMATE_ERROR_SCHEMA,
219
+ })
220
+
221
+ export const AUTOMATE_ACTION_INDETERMINATE_EVENT_SCHEMA =
222
+ AUTOMATE_ACTION_ATTEMPT_EVENT_SCHEMA.extend({
223
+ action: AUTOMATE_ACTION_ATTEMPT_EVENT_SCHEMA.shape.action.extend({
224
+ status: z.literal("failed"),
225
+ }),
226
+ attempt: AUTOMATE_ACTION_ATTEMPT_EVENT_SCHEMA.shape.attempt.extend({
227
+ completedAt: z.date(),
228
+ status: z.literal("indeterminate"),
229
+ }),
230
+ failure: AUTOMATE_ERROR_SCHEMA,
231
+ })
232
+
96
233
  export const automateTriggerContracts = {
234
+ "automate.action.failed": {
235
+ configSchema: AUTOMATE_ACTION_ATTEMPT_TRIGGER_CONFIG_SCHEMA,
236
+ eventSchema: AUTOMATE_ACTION_FAILED_EVENT_SCHEMA,
237
+ },
238
+ "automate.action.indeterminate": {
239
+ configSchema: AUTOMATE_ACTION_ATTEMPT_TRIGGER_CONFIG_SCHEMA,
240
+ eventSchema: AUTOMATE_ACTION_INDETERMINATE_EVENT_SCHEMA,
241
+ },
242
+ "automate.action.retryScheduled": {
243
+ configSchema: AUTOMATE_ACTION_ATTEMPT_TRIGGER_CONFIG_SCHEMA,
244
+ eventSchema: AUTOMATE_ACTION_RETRY_SCHEDULED_EVENT_SCHEMA,
245
+ },
246
+ "automate.actionAttempt.event": {
247
+ configSchema: AUTOMATE_ACTION_ATTEMPT_TRIGGER_CONFIG_SCHEMA,
248
+ eventSchema: AUTOMATE_ACTION_ATTEMPT_EVENT_SCHEMA,
249
+ },
97
250
  "automate.automation.disabled": {
98
251
  configSchema: AUTOMATE_AUTOMATION_TRIGGER_CONFIG_SCHEMA,
99
252
  eventSchema: AUTOMATE_AUTOMATION_DISABLED_EVENT_SCHEMA,
@@ -126,4 +279,16 @@ export const automateTriggerContracts = {
126
279
  configSchema: AUTOMATE_DEPLOYMENT_TRIGGER_CONFIG_SCHEMA,
127
280
  eventSchema: AUTOMATE_DEPLOYMENT_SUCCEEDED_EVENT_SCHEMA,
128
281
  },
282
+ "automate.execution.event": {
283
+ configSchema: AUTOMATE_EXECUTION_TRIGGER_CONFIG_SCHEMA,
284
+ eventSchema: AUTOMATE_EXECUTION_EVENT_SCHEMA,
285
+ },
286
+ "automate.execution.failed": {
287
+ configSchema: AUTOMATE_EXECUTION_TRIGGER_CONFIG_SCHEMA,
288
+ eventSchema: AUTOMATE_EXECUTION_FAILED_EVENT_SCHEMA,
289
+ },
290
+ "automate.execution.settled": {
291
+ configSchema: AUTOMATE_EXECUTION_TRIGGER_CONFIG_SCHEMA,
292
+ eventSchema: AUTOMATE_EXECUTION_SETTLED_EVENT_SCHEMA,
293
+ },
129
294
  } as const
@@ -252,13 +252,17 @@ const SLACK_PROVIDER_PINNED_INFO_SCHEMA = z
252
252
  pinned_ts: z.number(),
253
253
  })
254
254
  .catchall(z.json())
255
+ const SLACK_PROVIDER_PIN_COUNT_SCHEMA = z.union([
256
+ z.number().int().nonnegative(),
257
+ z.string().regex(/^\d+$/u),
258
+ ])
255
259
  const SLACK_PROVIDER_PIN_EVENT_BASE_SCHEMA = z
256
260
  .object({
257
261
  channel_id: z.string(),
258
262
  event_ts: SLACK_EVENT_TIMESTAMP_SCHEMA,
259
263
  item: SLACK_PROVIDER_PIN_ITEM_SCHEMA,
260
264
  item_user: z.string().optional(),
261
- pin_count: z.string().optional(),
265
+ pin_count: SLACK_PROVIDER_PIN_COUNT_SCHEMA.optional(),
262
266
  pinned_info: SLACK_PROVIDER_PINNED_INFO_SCHEMA.optional(),
263
267
  user: z.string(),
264
268
  })