@slates/proto 1.0.0-rc.17 → 1.0.0-rc.19

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.
@@ -0,0 +1,382 @@
1
+ import z from 'zod';
2
+ import {
3
+ slatesTriggerGroup,
4
+ slatesTriggerRoutingMatcher,
5
+ slatesWebhookTarget
6
+ } from '../types';
7
+ import { slatesWebhookHttpResponse } from './action';
8
+ import { withRequestTraces } from './tracing';
9
+
10
+ let slatesTriggerGroupWebhookEvent = z.object({
11
+ matchers: z.array(slatesTriggerRoutingMatcher),
12
+ payload: z.record(z.string(), z.any()),
13
+ idempotencyKey: z.string().optional(),
14
+ triggerIds: z.array(z.string())
15
+ });
16
+
17
+ let slatesTriggerGroupPollEvent = z.object({
18
+ payload: z.record(z.string(), z.any()),
19
+ idempotencyKey: z.string().optional(),
20
+ triggerIds: z.array(z.string())
21
+ });
22
+
23
+ /**
24
+ * List Trigger Groups
25
+ */
26
+ export let slatesMessageTriggerGroupsListRequest = z.object({
27
+ jsonrpc: z.literal('2.0'),
28
+ method: z.literal('slates/trigger_groups.list'),
29
+ id: z.string(),
30
+ params: z.object({})
31
+ });
32
+
33
+ export type SlatesMessageTriggerGroupsListRequest = z.infer<
34
+ typeof slatesMessageTriggerGroupsListRequest
35
+ >;
36
+
37
+ export let slatesMessageTriggerGroupsListResponse = z.object({
38
+ jsonrpc: z.literal('2.0'),
39
+ id: z.string(),
40
+ result: z.object({
41
+ triggerGroups: z.array(slatesTriggerGroup)
42
+ })
43
+ });
44
+
45
+ export type SlatesMessageTriggerGroupsListResponse = z.infer<
46
+ typeof slatesMessageTriggerGroupsListResponse
47
+ >;
48
+
49
+ /**
50
+ * Get Trigger Group
51
+ */
52
+ export let slatesMessageTriggerGroupGetRequest = z.object({
53
+ jsonrpc: z.literal('2.0'),
54
+ method: z.literal('slates/trigger_group.get'),
55
+ id: z.string(),
56
+ params: z.object({
57
+ triggerGroupId: z.string()
58
+ })
59
+ });
60
+
61
+ export type SlatesMessageTriggerGroupGetRequest = z.infer<
62
+ typeof slatesMessageTriggerGroupGetRequest
63
+ >;
64
+
65
+ export let slatesMessageTriggerGroupGetResponse = z.object({
66
+ jsonrpc: z.literal('2.0'),
67
+ id: z.string(),
68
+ result: z.object({
69
+ triggerGroup: slatesTriggerGroup
70
+ })
71
+ });
72
+
73
+ export type SlatesMessageTriggerGroupGetResponse = z.infer<
74
+ typeof slatesMessageTriggerGroupGetResponse
75
+ >;
76
+
77
+ /**
78
+ * List Webhook Targets
79
+ */
80
+ export let slatesMessageTriggerGroupWebhookTargetsListRequest = z.object({
81
+ jsonrpc: z.literal('2.0'),
82
+ method: z.literal('slates/trigger_group.webhook.targets_list'),
83
+ id: z.string(),
84
+ params: z.object({
85
+ triggerGroupId: z.string(),
86
+ pageToken: z.any().nullable().optional()
87
+ })
88
+ });
89
+
90
+ export type SlatesMessageTriggerGroupWebhookTargetsListRequest = z.infer<
91
+ typeof slatesMessageTriggerGroupWebhookTargetsListRequest
92
+ >;
93
+
94
+ export let slatesMessageTriggerGroupWebhookTargetsListResponse = z.object({
95
+ jsonrpc: z.literal('2.0'),
96
+ id: z.string(),
97
+ result: withRequestTraces({
98
+ targets: z.array(slatesWebhookTarget),
99
+ nextPageToken: z.any().nullable()
100
+ })
101
+ });
102
+
103
+ export type SlatesMessageTriggerGroupWebhookTargetsListResponse = z.infer<
104
+ typeof slatesMessageTriggerGroupWebhookTargetsListResponse
105
+ >;
106
+
107
+ /**
108
+ * Register Webhook
109
+ */
110
+ export let slatesMessageTriggerGroupWebhookRegisterRequest = z.object({
111
+ jsonrpc: z.literal('2.0'),
112
+ method: z.literal('slates/trigger_group.webhook.register'),
113
+ id: z.string(),
114
+ params: z.object({
115
+ triggerGroupId: z.string(),
116
+ webhookTargetIdentifier: z.string(),
117
+ webhookTargetPayload: z.any(),
118
+ webhookUrl: z.string()
119
+ })
120
+ });
121
+
122
+ export type SlatesMessageTriggerGroupWebhookRegisterRequest = z.infer<
123
+ typeof slatesMessageTriggerGroupWebhookRegisterRequest
124
+ >;
125
+
126
+ export let slatesMessageTriggerGroupWebhookRegisterResponse = z.object({
127
+ jsonrpc: z.literal('2.0'),
128
+ id: z.string(),
129
+ result: withRequestTraces({
130
+ webhookRegistrationIdentifier: z.string(),
131
+ webhookRegistrationPayload: z.any()
132
+ })
133
+ });
134
+
135
+ export type SlatesMessageTriggerGroupWebhookRegisterResponse = z.infer<
136
+ typeof slatesMessageTriggerGroupWebhookRegisterResponse
137
+ >;
138
+
139
+ /**
140
+ * Unregister Webhook
141
+ */
142
+ export let slatesMessageTriggerGroupWebhookUnregisterRequest = z.object({
143
+ jsonrpc: z.literal('2.0'),
144
+ method: z.literal('slates/trigger_group.webhook.unregister'),
145
+ id: z.string(),
146
+ params: z.object({
147
+ triggerGroupId: z.string(),
148
+ webhookRegistrationIdentifier: z.string(),
149
+ webhookRegistrationPayload: z.any()
150
+ })
151
+ });
152
+
153
+ export type SlatesMessageTriggerGroupWebhookUnregisterRequest = z.infer<
154
+ typeof slatesMessageTriggerGroupWebhookUnregisterRequest
155
+ >;
156
+
157
+ export let slatesMessageTriggerGroupWebhookUnregisterResponse = z.object({
158
+ jsonrpc: z.literal('2.0'),
159
+ id: z.string(),
160
+ result: withRequestTraces({})
161
+ });
162
+
163
+ export type SlatesMessageTriggerGroupWebhookUnregisterResponse = z.infer<
164
+ typeof slatesMessageTriggerGroupWebhookUnregisterResponse
165
+ >;
166
+
167
+ /**
168
+ * Manual Webhook Setup
169
+ */
170
+ export let slatesMessageTriggerGroupWebhookManualSetupRequest = z.object({
171
+ jsonrpc: z.literal('2.0'),
172
+ method: z.literal('slates/trigger_group.webhook.manual_setup'),
173
+ id: z.string(),
174
+ params: z.object({
175
+ triggerGroupId: z.string(),
176
+ webhookUrl: z.string()
177
+ })
178
+ });
179
+
180
+ export type SlatesMessageTriggerGroupWebhookManualSetupRequest = z.infer<
181
+ typeof slatesMessageTriggerGroupWebhookManualSetupRequest
182
+ >;
183
+
184
+ export let slatesMessageTriggerGroupWebhookManualSetupResponse = z.object({
185
+ jsonrpc: z.literal('2.0'),
186
+ id: z.string(),
187
+ result: z.object({
188
+ webhookSetupDocument: z.string(),
189
+ partialWebhookRegistrationPayload: z.any()
190
+ })
191
+ });
192
+
193
+ export type SlatesMessageTriggerGroupWebhookManualSetupResponse = z.infer<
194
+ typeof slatesMessageTriggerGroupWebhookManualSetupResponse
195
+ >;
196
+
197
+ /**
198
+ * Manual Webhook Finish
199
+ */
200
+ export let slatesMessageTriggerGroupWebhookManualFinishRequest = z.object({
201
+ jsonrpc: z.literal('2.0'),
202
+ method: z.literal('slates/trigger_group.webhook.manual_finish'),
203
+ id: z.string(),
204
+ params: z.object({
205
+ triggerGroupId: z.string(),
206
+ webhookUrl: z.string(),
207
+ partialWebhookRegistrationPayload: z.any(),
208
+ userWebhookRegistrationPayload: z.any()
209
+ })
210
+ });
211
+
212
+ export type SlatesMessageTriggerGroupWebhookManualFinishRequest = z.infer<
213
+ typeof slatesMessageTriggerGroupWebhookManualFinishRequest
214
+ >;
215
+
216
+ export let slatesMessageTriggerGroupWebhookManualFinishResponse = z.object({
217
+ jsonrpc: z.literal('2.0'),
218
+ id: z.string(),
219
+ result: withRequestTraces({
220
+ webhookRegistrationPayload: z.any()
221
+ })
222
+ });
223
+
224
+ export type SlatesMessageTriggerGroupWebhookManualFinishResponse = z.infer<
225
+ typeof slatesMessageTriggerGroupWebhookManualFinishResponse
226
+ >;
227
+
228
+ /**
229
+ * Process Webhook Request
230
+ */
231
+ export let slatesMessageTriggerGroupWebhookProcessRequest = z.object({
232
+ jsonrpc: z.literal('2.0'),
233
+ method: z.literal('slates/trigger_group.webhook.process'),
234
+ id: z.string(),
235
+ params: z.object({
236
+ triggerGroupId: z.string(),
237
+ url: z.string(),
238
+ method: z.string(),
239
+ headers: z.record(z.string(), z.string()),
240
+ body: z
241
+ .object({
242
+ encoding: z.literal('base64'),
243
+ content: z.string()
244
+ })
245
+ .nullable(),
246
+ webhookRegistrationPayload: z.any()
247
+ })
248
+ });
249
+
250
+ export type SlatesMessageTriggerGroupWebhookProcessRequest = z.infer<
251
+ typeof slatesMessageTriggerGroupWebhookProcessRequest
252
+ >;
253
+
254
+ export let slatesMessageTriggerGroupWebhookProcessResponse = z.object({
255
+ jsonrpc: z.literal('2.0'),
256
+ id: z.string(),
257
+ result: withRequestTraces({
258
+ events: z.array(slatesTriggerGroupWebhookEvent),
259
+ response: slatesWebhookHttpResponse.nullable().optional()
260
+ })
261
+ });
262
+
263
+ export type SlatesMessageTriggerGroupWebhookProcessResponse = z.infer<
264
+ typeof slatesMessageTriggerGroupWebhookProcessResponse
265
+ >;
266
+
267
+ /**
268
+ * Get Routing Matchers
269
+ */
270
+ export let slatesMessageTriggerGroupRoutingMatchersGetRequest = z.object({
271
+ jsonrpc: z.literal('2.0'),
272
+ method: z.literal('slates/trigger_group.routing_matchers.get'),
273
+ id: z.string(),
274
+ params: z.object({
275
+ triggerGroupId: z.string()
276
+ })
277
+ });
278
+
279
+ export type SlatesMessageTriggerGroupRoutingMatchersGetRequest = z.infer<
280
+ typeof slatesMessageTriggerGroupRoutingMatchersGetRequest
281
+ >;
282
+
283
+ export let slatesMessageTriggerGroupRoutingMatchersGetResponse = z.object({
284
+ jsonrpc: z.literal('2.0'),
285
+ id: z.string(),
286
+ result: withRequestTraces({
287
+ matchers: z.array(slatesTriggerRoutingMatcher)
288
+ })
289
+ });
290
+
291
+ export type SlatesMessageTriggerGroupRoutingMatchersGetResponse = z.infer<
292
+ typeof slatesMessageTriggerGroupRoutingMatchersGetResponse
293
+ >;
294
+
295
+ /**
296
+ * Poll
297
+ */
298
+ export let slatesMessageTriggerGroupPollingPollRequest = z.object({
299
+ jsonrpc: z.literal('2.0'),
300
+ method: z.literal('slates/trigger_group.polling.poll'),
301
+ id: z.string(),
302
+ params: z.object({
303
+ triggerGroupId: z.string(),
304
+ state: z.any().nullable()
305
+ })
306
+ });
307
+
308
+ export type SlatesMessageTriggerGroupPollingPollRequest = z.infer<
309
+ typeof slatesMessageTriggerGroupPollingPollRequest
310
+ >;
311
+
312
+ export let slatesMessageTriggerGroupPollingPollResponse = z.object({
313
+ jsonrpc: z.literal('2.0'),
314
+ id: z.string(),
315
+ result: withRequestTraces({
316
+ updatedState: z.any().nullable().optional(),
317
+ events: z.array(slatesTriggerGroupPollEvent)
318
+ })
319
+ });
320
+
321
+ export type SlatesMessageTriggerGroupPollingPollResponse = z.infer<
322
+ typeof slatesMessageTriggerGroupPollingPollResponse
323
+ >;
324
+
325
+ export type SlatesTriggerGroupRequests =
326
+ | SlatesMessageTriggerGroupsListRequest
327
+ | SlatesMessageTriggerGroupGetRequest
328
+ | SlatesMessageTriggerGroupWebhookTargetsListRequest
329
+ | SlatesMessageTriggerGroupWebhookRegisterRequest
330
+ | SlatesMessageTriggerGroupWebhookUnregisterRequest
331
+ | SlatesMessageTriggerGroupWebhookManualSetupRequest
332
+ | SlatesMessageTriggerGroupWebhookManualFinishRequest
333
+ | SlatesMessageTriggerGroupWebhookProcessRequest
334
+ | SlatesMessageTriggerGroupRoutingMatchersGetRequest
335
+ | SlatesMessageTriggerGroupPollingPollRequest;
336
+
337
+ export type SlatesTriggerGroupResponses =
338
+ | SlatesMessageTriggerGroupsListResponse
339
+ | SlatesMessageTriggerGroupGetResponse
340
+ | SlatesMessageTriggerGroupWebhookTargetsListResponse
341
+ | SlatesMessageTriggerGroupWebhookRegisterResponse
342
+ | SlatesMessageTriggerGroupWebhookUnregisterResponse
343
+ | SlatesMessageTriggerGroupWebhookManualSetupResponse
344
+ | SlatesMessageTriggerGroupWebhookManualFinishResponse
345
+ | SlatesMessageTriggerGroupWebhookProcessResponse
346
+ | SlatesMessageTriggerGroupRoutingMatchersGetResponse
347
+ | SlatesMessageTriggerGroupPollingPollResponse;
348
+
349
+ export let slatesTriggerGroupResponsesByMethod = {
350
+ 'slates/trigger_groups.list': slatesMessageTriggerGroupsListResponse,
351
+ 'slates/trigger_group.get': slatesMessageTriggerGroupGetResponse,
352
+ 'slates/trigger_group.webhook.targets_list':
353
+ slatesMessageTriggerGroupWebhookTargetsListResponse,
354
+ 'slates/trigger_group.webhook.register': slatesMessageTriggerGroupWebhookRegisterResponse,
355
+ 'slates/trigger_group.webhook.unregister':
356
+ slatesMessageTriggerGroupWebhookUnregisterResponse,
357
+ 'slates/trigger_group.webhook.manual_setup':
358
+ slatesMessageTriggerGroupWebhookManualSetupResponse,
359
+ 'slates/trigger_group.webhook.manual_finish':
360
+ slatesMessageTriggerGroupWebhookManualFinishResponse,
361
+ 'slates/trigger_group.webhook.process': slatesMessageTriggerGroupWebhookProcessResponse,
362
+ 'slates/trigger_group.routing_matchers.get':
363
+ slatesMessageTriggerGroupRoutingMatchersGetResponse,
364
+ 'slates/trigger_group.polling.poll': slatesMessageTriggerGroupPollingPollResponse
365
+ };
366
+
367
+ export let slatesTriggerGroupRequestsByMethod = {
368
+ 'slates/trigger_groups.list': slatesMessageTriggerGroupsListRequest,
369
+ 'slates/trigger_group.get': slatesMessageTriggerGroupGetRequest,
370
+ 'slates/trigger_group.webhook.targets_list':
371
+ slatesMessageTriggerGroupWebhookTargetsListRequest,
372
+ 'slates/trigger_group.webhook.register': slatesMessageTriggerGroupWebhookRegisterRequest,
373
+ 'slates/trigger_group.webhook.unregister': slatesMessageTriggerGroupWebhookUnregisterRequest,
374
+ 'slates/trigger_group.webhook.manual_setup':
375
+ slatesMessageTriggerGroupWebhookManualSetupRequest,
376
+ 'slates/trigger_group.webhook.manual_finish':
377
+ slatesMessageTriggerGroupWebhookManualFinishRequest,
378
+ 'slates/trigger_group.webhook.process': slatesMessageTriggerGroupWebhookProcessRequest,
379
+ 'slates/trigger_group.routing_matchers.get':
380
+ slatesMessageTriggerGroupRoutingMatchersGetRequest,
381
+ 'slates/trigger_group.polling.poll': slatesMessageTriggerGroupPollingPollRequest
382
+ };
@@ -0,0 +1,21 @@
1
+ export let SLATES_WEBHOOK_ERROR_CODES = {
2
+ INVALID_SIGNATURE: 'webhook.invalid_signature',
3
+ INVALID_PAYLOAD: 'webhook.invalid_payload',
4
+ UNSUPPORTED_EVENT: 'webhook.unsupported_event',
5
+ DUPLICATE_DELIVERY: 'webhook.duplicate_delivery',
6
+ UNAUTHORIZED: 'webhook.unauthorized'
7
+ } as const;
8
+
9
+ export type SlatesWebhookErrorCode =
10
+ (typeof SLATES_WEBHOOK_ERROR_CODES)[keyof typeof SLATES_WEBHOOK_ERROR_CODES];
11
+
12
+ export let SLATES_WEBHOOK_ERROR_DEFAULTS: Record<
13
+ SlatesWebhookErrorCode,
14
+ { status: number; retryable: boolean }
15
+ > = {
16
+ [SLATES_WEBHOOK_ERROR_CODES.INVALID_SIGNATURE]: { status: 401, retryable: false },
17
+ [SLATES_WEBHOOK_ERROR_CODES.INVALID_PAYLOAD]: { status: 400, retryable: false },
18
+ [SLATES_WEBHOOK_ERROR_CODES.UNSUPPORTED_EVENT]: { status: 400, retryable: false },
19
+ [SLATES_WEBHOOK_ERROR_CODES.DUPLICATE_DELIVERY]: { status: 200, retryable: false },
20
+ [SLATES_WEBHOOK_ERROR_CODES.UNAUTHORIZED]: { status: 401, retryable: false }
21
+ };
@@ -45,53 +45,11 @@ export let slatesActionTool = slatesActionBase.extend({
45
45
  isPublic: z.boolean()
46
46
  });
47
47
 
48
- export let slatesWebhookRequestMatcher = z.object({
49
- method: z.string().optional(),
50
- hasQueryParam: z.string().optional(),
51
- hasHeader: z.string().optional(),
52
- jsonBodyField: z
53
- .object({
54
- path: z.string(),
55
- equals: z.string().optional()
56
- })
57
- .optional(),
58
- formBodyField: z
59
- .object({
60
- path: z.string(),
61
- equals: z.string().optional()
62
- })
63
- .optional()
64
- });
65
-
66
- export let slatesWebhookHttp = z.object({
67
- methods: z
68
- .array(z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']))
69
- .optional(),
70
- sync: z
71
- .object({
72
- mode: z.enum(['never', 'match', 'always']),
73
- match: z.array(slatesWebhookRequestMatcher).optional(),
74
- timeoutMs: z.number().int().positive().max(15_000).optional()
75
- })
76
- .optional()
77
- });
78
-
79
48
  export let slatesActionTrigger = slatesActionBase.extend({
80
49
  type: z.literal('action.trigger'),
81
50
  capabilities: z.object({}),
82
51
 
83
- invocation: z.union([
84
- z.object({
85
- type: z.literal('polling'),
86
- intervalSeconds: z.number().min(60 * 10)
87
- }),
88
- z.object({
89
- type: z.literal('webhook'),
90
- autoRegistration: z.boolean(),
91
- autoUnregistration: z.boolean(),
92
- http: slatesWebhookHttp.optional()
93
- })
94
- ])
52
+ triggerGroupId: z.string()
95
53
  });
96
54
 
97
55
  export let slatesAction = z.union([slatesActionTool, slatesActionTrigger]);
@@ -100,5 +58,3 @@ export type SlatesAction = z.infer<typeof slatesAction>;
100
58
  export type SlatesActionTool = z.infer<typeof slatesActionTool>;
101
59
  export type SlatesActionTrigger = z.infer<typeof slatesActionTrigger>;
102
60
  export type SlatesActionScopes = z.infer<typeof slatesActionScopes>;
103
- export type SlatesWebhookRequestMatcher = z.infer<typeof slatesWebhookRequestMatcher>;
104
- export type SlatesWebhookHttp = z.infer<typeof slatesWebhookHttp>;
@@ -2,3 +2,4 @@ export * from './action';
2
2
  export * from './adapter';
3
3
  export * from './authMethod';
4
4
  export * from './participant';
5
+ export * from './triggerGroup';
@@ -0,0 +1,49 @@
1
+ import z from 'zod';
2
+
3
+ export let slatesTriggerRoutingMatcher = z.record(z.string(), z.any());
4
+
5
+ export let slatesTriggerGroupInvocation = z.union([
6
+ z.object({
7
+ type: z.literal('polling'),
8
+ intervalSeconds: z.number().min(60 * 10)
9
+ }),
10
+ z.object({
11
+ type: z.literal('webhook'),
12
+ registration: z.union([
13
+ z.object({
14
+ mode: z.literal('auto')
15
+ }),
16
+ z.object({
17
+ mode: z.literal('manual'),
18
+ userConfigSchema: z.record(z.string(), z.any()),
19
+ fullConfigSchema: z.record(z.string(), z.any())
20
+ })
21
+ ])
22
+ })
23
+ ]);
24
+
25
+ export let slatesTriggerGroup = z.object({
26
+ id: z.string(),
27
+ name: z.string(),
28
+ description: z.string().optional(),
29
+ metadata: z.record(z.string(), z.any()).optional(),
30
+
31
+ invocation: slatesTriggerGroupInvocation
32
+ });
33
+
34
+ export let slatesWebhookTargetOwnership = z.enum(['single_user', 'multi_user']);
35
+
36
+ export let slatesWebhookTarget = z.object({
37
+ webhookTargetIdentifier: z.string(),
38
+ name: z.string(),
39
+ description: z.string().optional(),
40
+ metadata: z.record(z.string(), z.any()),
41
+ webhookTargetPayload: z.any(),
42
+ targetOwnership: slatesWebhookTargetOwnership
43
+ });
44
+
45
+ export type SlatesTriggerRoutingMatcher = z.infer<typeof slatesTriggerRoutingMatcher>;
46
+ export type SlatesTriggerGroupInvocation = z.infer<typeof slatesTriggerGroupInvocation>;
47
+ export type SlatesTriggerGroup = z.infer<typeof slatesTriggerGroup>;
48
+ export type SlatesWebhookTargetOwnership = z.infer<typeof slatesWebhookTargetOwnership>;
49
+ export type SlatesWebhookTarget = z.infer<typeof slatesWebhookTarget>;