@slates/proto 1.0.0-rc.2 → 1.0.0-rc.21

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.
Files changed (57) hide show
  1. package/dist/index.cjs +1632 -2
  2. package/dist/index.d.cts +5397 -0
  3. package/dist/index.d.ts +5397 -4
  4. package/dist/index.module.js +1480 -2
  5. package/package.json +9 -8
  6. package/src/handler/provider.test.ts +121 -0
  7. package/src/handler/provider.ts +268 -27
  8. package/src/index.ts +1 -0
  9. package/src/messages/action.ts +51 -154
  10. package/src/messages/adapter.ts +72 -0
  11. package/src/messages/auth.ts +21 -13
  12. package/src/messages/config.ts +12 -3
  13. package/src/messages/controlFlow.ts +2 -1
  14. package/src/messages/hub.ts +92 -0
  15. package/src/messages/identify.ts +10 -3
  16. package/src/messages/index.ts +68 -14
  17. package/src/messages/legacyTrigger.ts +149 -0
  18. package/src/messages/tracing.ts +38 -0
  19. package/src/messages/triggerGroup.ts +383 -0
  20. package/src/messages/webhookErrors.ts +21 -0
  21. package/src/types/action.ts +25 -13
  22. package/src/types/adapter.ts +15 -0
  23. package/src/types/authMethod.ts +19 -1
  24. package/src/types/index.ts +2 -0
  25. package/src/types/triggerGroup.ts +49 -0
  26. package/src/version.ts +3 -0
  27. package/dist/handler/index.d.ts +0 -2
  28. package/dist/handler/index.d.ts.map +0 -1
  29. package/dist/handler/provider.d.ts +0 -46
  30. package/dist/handler/provider.d.ts.map +0 -1
  31. package/dist/index.cjs.map +0 -1
  32. package/dist/index.d.ts.map +0 -1
  33. package/dist/index.module.js.map +0 -1
  34. package/dist/index.umd.js +0 -2
  35. package/dist/index.umd.js.map +0 -1
  36. package/dist/messages/action.d.ts +0 -474
  37. package/dist/messages/action.d.ts.map +0 -1
  38. package/dist/messages/auth.d.ts +0 -496
  39. package/dist/messages/auth.d.ts.map +0 -1
  40. package/dist/messages/config.d.ts +0 -138
  41. package/dist/messages/config.d.ts.map +0 -1
  42. package/dist/messages/controlFlow.d.ts +0 -64
  43. package/dist/messages/controlFlow.d.ts.map +0 -1
  44. package/dist/messages/identify.d.ts +0 -48
  45. package/dist/messages/identify.d.ts.map +0 -1
  46. package/dist/messages/index.d.ts +0 -556
  47. package/dist/messages/index.d.ts.map +0 -1
  48. package/dist/messages/log.d.ts +0 -27
  49. package/dist/messages/log.d.ts.map +0 -1
  50. package/dist/types/action.d.ts +0 -98
  51. package/dist/types/action.d.ts.map +0 -1
  52. package/dist/types/authMethod.d.ts +0 -29
  53. package/dist/types/authMethod.d.ts.map +0 -1
  54. package/dist/types/index.d.ts +0 -4
  55. package/dist/types/index.d.ts.map +0 -1
  56. package/dist/types/participant.d.ts +0 -10
  57. package/dist/types/participant.d.ts.map +0 -1
@@ -0,0 +1,383 @@
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
+ isPartial: z.boolean().optional()
101
+ })
102
+ });
103
+
104
+ export type SlatesMessageTriggerGroupWebhookTargetsListResponse = z.infer<
105
+ typeof slatesMessageTriggerGroupWebhookTargetsListResponse
106
+ >;
107
+
108
+ /**
109
+ * Register Webhook
110
+ */
111
+ export let slatesMessageTriggerGroupWebhookRegisterRequest = z.object({
112
+ jsonrpc: z.literal('2.0'),
113
+ method: z.literal('slates/trigger_group.webhook.register'),
114
+ id: z.string(),
115
+ params: z.object({
116
+ triggerGroupId: z.string(),
117
+ webhookTargetIdentifier: z.string(),
118
+ webhookTargetPayload: z.any(),
119
+ webhookUrl: z.string()
120
+ })
121
+ });
122
+
123
+ export type SlatesMessageTriggerGroupWebhookRegisterRequest = z.infer<
124
+ typeof slatesMessageTriggerGroupWebhookRegisterRequest
125
+ >;
126
+
127
+ export let slatesMessageTriggerGroupWebhookRegisterResponse = z.object({
128
+ jsonrpc: z.literal('2.0'),
129
+ id: z.string(),
130
+ result: withRequestTraces({
131
+ webhookRegistrationIdentifier: z.string(),
132
+ webhookRegistrationPayload: z.any()
133
+ })
134
+ });
135
+
136
+ export type SlatesMessageTriggerGroupWebhookRegisterResponse = z.infer<
137
+ typeof slatesMessageTriggerGroupWebhookRegisterResponse
138
+ >;
139
+
140
+ /**
141
+ * Unregister Webhook
142
+ */
143
+ export let slatesMessageTriggerGroupWebhookUnregisterRequest = z.object({
144
+ jsonrpc: z.literal('2.0'),
145
+ method: z.literal('slates/trigger_group.webhook.unregister'),
146
+ id: z.string(),
147
+ params: z.object({
148
+ triggerGroupId: z.string(),
149
+ webhookRegistrationIdentifier: z.string(),
150
+ webhookRegistrationPayload: z.any()
151
+ })
152
+ });
153
+
154
+ export type SlatesMessageTriggerGroupWebhookUnregisterRequest = z.infer<
155
+ typeof slatesMessageTriggerGroupWebhookUnregisterRequest
156
+ >;
157
+
158
+ export let slatesMessageTriggerGroupWebhookUnregisterResponse = z.object({
159
+ jsonrpc: z.literal('2.0'),
160
+ id: z.string(),
161
+ result: withRequestTraces({})
162
+ });
163
+
164
+ export type SlatesMessageTriggerGroupWebhookUnregisterResponse = z.infer<
165
+ typeof slatesMessageTriggerGroupWebhookUnregisterResponse
166
+ >;
167
+
168
+ /**
169
+ * Manual Webhook Setup
170
+ */
171
+ export let slatesMessageTriggerGroupWebhookManualSetupRequest = z.object({
172
+ jsonrpc: z.literal('2.0'),
173
+ method: z.literal('slates/trigger_group.webhook.manual_setup'),
174
+ id: z.string(),
175
+ params: z.object({
176
+ triggerGroupId: z.string(),
177
+ webhookUrl: z.string()
178
+ })
179
+ });
180
+
181
+ export type SlatesMessageTriggerGroupWebhookManualSetupRequest = z.infer<
182
+ typeof slatesMessageTriggerGroupWebhookManualSetupRequest
183
+ >;
184
+
185
+ export let slatesMessageTriggerGroupWebhookManualSetupResponse = z.object({
186
+ jsonrpc: z.literal('2.0'),
187
+ id: z.string(),
188
+ result: z.object({
189
+ webhookSetupDocument: z.string(),
190
+ partialWebhookRegistrationPayload: z.any()
191
+ })
192
+ });
193
+
194
+ export type SlatesMessageTriggerGroupWebhookManualSetupResponse = z.infer<
195
+ typeof slatesMessageTriggerGroupWebhookManualSetupResponse
196
+ >;
197
+
198
+ /**
199
+ * Manual Webhook Finish
200
+ */
201
+ export let slatesMessageTriggerGroupWebhookManualFinishRequest = z.object({
202
+ jsonrpc: z.literal('2.0'),
203
+ method: z.literal('slates/trigger_group.webhook.manual_finish'),
204
+ id: z.string(),
205
+ params: z.object({
206
+ triggerGroupId: z.string(),
207
+ webhookUrl: z.string(),
208
+ partialWebhookRegistrationPayload: z.any(),
209
+ userWebhookRegistrationPayload: z.any()
210
+ })
211
+ });
212
+
213
+ export type SlatesMessageTriggerGroupWebhookManualFinishRequest = z.infer<
214
+ typeof slatesMessageTriggerGroupWebhookManualFinishRequest
215
+ >;
216
+
217
+ export let slatesMessageTriggerGroupWebhookManualFinishResponse = z.object({
218
+ jsonrpc: z.literal('2.0'),
219
+ id: z.string(),
220
+ result: withRequestTraces({
221
+ webhookRegistrationPayload: z.any()
222
+ })
223
+ });
224
+
225
+ export type SlatesMessageTriggerGroupWebhookManualFinishResponse = z.infer<
226
+ typeof slatesMessageTriggerGroupWebhookManualFinishResponse
227
+ >;
228
+
229
+ /**
230
+ * Process Webhook Request
231
+ */
232
+ export let slatesMessageTriggerGroupWebhookProcessRequest = z.object({
233
+ jsonrpc: z.literal('2.0'),
234
+ method: z.literal('slates/trigger_group.webhook.process'),
235
+ id: z.string(),
236
+ params: z.object({
237
+ triggerGroupId: z.string(),
238
+ url: z.string(),
239
+ method: z.string(),
240
+ headers: z.record(z.string(), z.string()),
241
+ body: z
242
+ .object({
243
+ encoding: z.literal('base64'),
244
+ content: z.string()
245
+ })
246
+ .nullable(),
247
+ webhookRegistrationPayload: z.any()
248
+ })
249
+ });
250
+
251
+ export type SlatesMessageTriggerGroupWebhookProcessRequest = z.infer<
252
+ typeof slatesMessageTriggerGroupWebhookProcessRequest
253
+ >;
254
+
255
+ export let slatesMessageTriggerGroupWebhookProcessResponse = z.object({
256
+ jsonrpc: z.literal('2.0'),
257
+ id: z.string(),
258
+ result: withRequestTraces({
259
+ events: z.array(slatesTriggerGroupWebhookEvent),
260
+ response: slatesWebhookHttpResponse.nullable().optional()
261
+ })
262
+ });
263
+
264
+ export type SlatesMessageTriggerGroupWebhookProcessResponse = z.infer<
265
+ typeof slatesMessageTriggerGroupWebhookProcessResponse
266
+ >;
267
+
268
+ /**
269
+ * Get Routing Matchers
270
+ */
271
+ export let slatesMessageTriggerGroupRoutingMatchersGetRequest = z.object({
272
+ jsonrpc: z.literal('2.0'),
273
+ method: z.literal('slates/trigger_group.routing_matchers.get'),
274
+ id: z.string(),
275
+ params: z.object({
276
+ triggerGroupId: z.string()
277
+ })
278
+ });
279
+
280
+ export type SlatesMessageTriggerGroupRoutingMatchersGetRequest = z.infer<
281
+ typeof slatesMessageTriggerGroupRoutingMatchersGetRequest
282
+ >;
283
+
284
+ export let slatesMessageTriggerGroupRoutingMatchersGetResponse = z.object({
285
+ jsonrpc: z.literal('2.0'),
286
+ id: z.string(),
287
+ result: withRequestTraces({
288
+ matchers: z.array(slatesTriggerRoutingMatcher)
289
+ })
290
+ });
291
+
292
+ export type SlatesMessageTriggerGroupRoutingMatchersGetResponse = z.infer<
293
+ typeof slatesMessageTriggerGroupRoutingMatchersGetResponse
294
+ >;
295
+
296
+ /**
297
+ * Poll
298
+ */
299
+ export let slatesMessageTriggerGroupPollingPollRequest = z.object({
300
+ jsonrpc: z.literal('2.0'),
301
+ method: z.literal('slates/trigger_group.polling.poll'),
302
+ id: z.string(),
303
+ params: z.object({
304
+ triggerGroupId: z.string(),
305
+ state: z.any().nullable()
306
+ })
307
+ });
308
+
309
+ export type SlatesMessageTriggerGroupPollingPollRequest = z.infer<
310
+ typeof slatesMessageTriggerGroupPollingPollRequest
311
+ >;
312
+
313
+ export let slatesMessageTriggerGroupPollingPollResponse = z.object({
314
+ jsonrpc: z.literal('2.0'),
315
+ id: z.string(),
316
+ result: withRequestTraces({
317
+ updatedState: z.any().nullable().optional(),
318
+ events: z.array(slatesTriggerGroupPollEvent)
319
+ })
320
+ });
321
+
322
+ export type SlatesMessageTriggerGroupPollingPollResponse = z.infer<
323
+ typeof slatesMessageTriggerGroupPollingPollResponse
324
+ >;
325
+
326
+ export type SlatesTriggerGroupRequests =
327
+ | SlatesMessageTriggerGroupsListRequest
328
+ | SlatesMessageTriggerGroupGetRequest
329
+ | SlatesMessageTriggerGroupWebhookTargetsListRequest
330
+ | SlatesMessageTriggerGroupWebhookRegisterRequest
331
+ | SlatesMessageTriggerGroupWebhookUnregisterRequest
332
+ | SlatesMessageTriggerGroupWebhookManualSetupRequest
333
+ | SlatesMessageTriggerGroupWebhookManualFinishRequest
334
+ | SlatesMessageTriggerGroupWebhookProcessRequest
335
+ | SlatesMessageTriggerGroupRoutingMatchersGetRequest
336
+ | SlatesMessageTriggerGroupPollingPollRequest;
337
+
338
+ export type SlatesTriggerGroupResponses =
339
+ | SlatesMessageTriggerGroupsListResponse
340
+ | SlatesMessageTriggerGroupGetResponse
341
+ | SlatesMessageTriggerGroupWebhookTargetsListResponse
342
+ | SlatesMessageTriggerGroupWebhookRegisterResponse
343
+ | SlatesMessageTriggerGroupWebhookUnregisterResponse
344
+ | SlatesMessageTriggerGroupWebhookManualSetupResponse
345
+ | SlatesMessageTriggerGroupWebhookManualFinishResponse
346
+ | SlatesMessageTriggerGroupWebhookProcessResponse
347
+ | SlatesMessageTriggerGroupRoutingMatchersGetResponse
348
+ | SlatesMessageTriggerGroupPollingPollResponse;
349
+
350
+ export let slatesTriggerGroupResponsesByMethod = {
351
+ 'slates/trigger_groups.list': slatesMessageTriggerGroupsListResponse,
352
+ 'slates/trigger_group.get': slatesMessageTriggerGroupGetResponse,
353
+ 'slates/trigger_group.webhook.targets_list':
354
+ slatesMessageTriggerGroupWebhookTargetsListResponse,
355
+ 'slates/trigger_group.webhook.register': slatesMessageTriggerGroupWebhookRegisterResponse,
356
+ 'slates/trigger_group.webhook.unregister':
357
+ slatesMessageTriggerGroupWebhookUnregisterResponse,
358
+ 'slates/trigger_group.webhook.manual_setup':
359
+ slatesMessageTriggerGroupWebhookManualSetupResponse,
360
+ 'slates/trigger_group.webhook.manual_finish':
361
+ slatesMessageTriggerGroupWebhookManualFinishResponse,
362
+ 'slates/trigger_group.webhook.process': slatesMessageTriggerGroupWebhookProcessResponse,
363
+ 'slates/trigger_group.routing_matchers.get':
364
+ slatesMessageTriggerGroupRoutingMatchersGetResponse,
365
+ 'slates/trigger_group.polling.poll': slatesMessageTriggerGroupPollingPollResponse
366
+ };
367
+
368
+ export let slatesTriggerGroupRequestsByMethod = {
369
+ 'slates/trigger_groups.list': slatesMessageTriggerGroupsListRequest,
370
+ 'slates/trigger_group.get': slatesMessageTriggerGroupGetRequest,
371
+ 'slates/trigger_group.webhook.targets_list':
372
+ slatesMessageTriggerGroupWebhookTargetsListRequest,
373
+ 'slates/trigger_group.webhook.register': slatesMessageTriggerGroupWebhookRegisterRequest,
374
+ 'slates/trigger_group.webhook.unregister': slatesMessageTriggerGroupWebhookUnregisterRequest,
375
+ 'slates/trigger_group.webhook.manual_setup':
376
+ slatesMessageTriggerGroupWebhookManualSetupRequest,
377
+ 'slates/trigger_group.webhook.manual_finish':
378
+ slatesMessageTriggerGroupWebhookManualFinishRequest,
379
+ 'slates/trigger_group.webhook.process': slatesMessageTriggerGroupWebhookProcessRequest,
380
+ 'slates/trigger_group.routing_matchers.get':
381
+ slatesMessageTriggerGroupRoutingMatchersGetRequest,
382
+ 'slates/trigger_group.polling.poll': slatesMessageTriggerGroupPollingPollRequest
383
+ };
@@ -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
+ };
@@ -1,5 +1,13 @@
1
1
  import z from 'zod';
2
2
 
3
+ export let slatesActionScopeClause = z.object({
4
+ OR: z.array(z.string()).min(1)
5
+ });
6
+
7
+ export let slatesActionScopes = z.object({
8
+ AND: z.array(slatesActionScopeClause).min(1)
9
+ });
10
+
3
11
  export let slatesActionBase = z.object({
4
12
  id: z.string(),
5
13
 
@@ -14,31 +22,34 @@ export let slatesActionBase = z.object({
14
22
  })
15
23
  .optional(),
16
24
  metadata: z.record(z.string(), z.any()).optional(),
25
+ scopes: slatesActionScopes.optional(),
26
+ authMethods: z.array(z.string()).optional(),
17
27
 
18
28
  inputSchema: z.record(z.string(), z.any()),
19
- outputSchema: z.record(z.string(), z.any())
29
+ outputSchema: z.record(z.string(), z.any()),
30
+
31
+ docs: z.array(
32
+ z.object({
33
+ type: z.literal('docs.action.general').optional(),
34
+ name: z.string(),
35
+ url: z.string()
36
+ })
37
+ ),
38
+
39
+ adapter: z.optional(z.nullable(z.string()))
20
40
  });
21
41
 
22
42
  export let slatesActionTool = slatesActionBase.extend({
23
43
  type: z.literal('action.tool'),
24
- capabilities: z.object({})
44
+ capabilities: z.object({}),
45
+ isPublic: z.boolean()
25
46
  });
26
47
 
27
48
  export let slatesActionTrigger = slatesActionBase.extend({
28
49
  type: z.literal('action.trigger'),
29
50
  capabilities: z.object({}),
30
51
 
31
- invocation: z.union([
32
- z.object({
33
- type: z.literal('polling'),
34
- intervalSeconds: z.number().min(15)
35
- }),
36
- z.object({
37
- type: z.literal('webhook'),
38
- autoRegistration: z.boolean(),
39
- autoUnregistration: z.boolean()
40
- })
41
- ])
52
+ triggerGroupId: z.string()
42
53
  });
43
54
 
44
55
  export let slatesAction = z.union([slatesActionTool, slatesActionTrigger]);
@@ -46,3 +57,4 @@ export let slatesAction = z.union([slatesActionTool, slatesActionTrigger]);
46
57
  export type SlatesAction = z.infer<typeof slatesAction>;
47
58
  export type SlatesActionTool = z.infer<typeof slatesActionTool>;
48
59
  export type SlatesActionTrigger = z.infer<typeof slatesActionTrigger>;
60
+ export type SlatesActionScopes = z.infer<typeof slatesActionScopes>;
@@ -0,0 +1,15 @@
1
+ import z from 'zod';
2
+
3
+ export let slatesAdapter = z.object({
4
+ id: z.string(),
5
+ name: z.string(),
6
+
7
+ capabilities: z.array(
8
+ z.object({
9
+ id: z.string(),
10
+ value: z.any()
11
+ })
12
+ )
13
+ });
14
+
15
+ export type SlateAdapter = z.infer<typeof slatesAdapter>;
@@ -21,6 +21,8 @@ export let slatesAuthenticationMethod = z.object({
21
21
  )
22
22
  .optional(),
23
23
 
24
+ adapters: z.array(z.string()).optional(),
25
+
24
26
  inputSchema: z.record(z.string(), z.any()),
25
27
  outputSchema: z.record(z.string(), z.any()),
26
28
 
@@ -29,7 +31,23 @@ export let slatesAuthenticationMethod = z.object({
29
31
  handleChangedInput: z.object({ enabled: z.boolean() }).optional(),
30
32
  handleTokenRefresh: z.object({ enabled: z.boolean() }).optional(),
31
33
  getProfile: z.object({ enabled: z.boolean() }).optional()
32
- })
34
+ }),
35
+
36
+ docs: z.array(
37
+ z.object({
38
+ type: z
39
+ .union([
40
+ z.literal('docs.auth.oauth'),
41
+ z.literal('docs.auth.oauth_scopes'),
42
+ z.literal('docs.auth.token'),
43
+ z.literal('docs.auth.service_account'),
44
+ z.literal('docs.auth.custom')
45
+ ])
46
+ .optional(),
47
+ name: z.string(),
48
+ url: z.string()
49
+ })
50
+ )
33
51
  });
34
52
 
35
53
  export type SlateAuthenticationMethod = z.infer<typeof slatesAuthenticationMethod>;
@@ -1,3 +1,5 @@
1
1
  export * from './action';
2
+ export * from './adapter';
2
3
  export * from './authMethod';
3
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>;
package/src/version.ts ADDED
@@ -0,0 +1,3 @@
1
+ export const SLATES_PROTOCOL_VERSION = 'slates@2026-01-01' as const;
2
+
3
+ export type SlatesProtocolVersion = typeof SLATES_PROTOCOL_VERSION;
@@ -1,2 +0,0 @@
1
- export * from './provider';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handler/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
@@ -1,46 +0,0 @@
1
- import { SlatesNotifications, SlatesRequests, SlatesResponsesByMethod } from '../messages';
2
- export declare class SlatesProviderProtoHandlerManager {
3
- #private;
4
- onNotification<Method extends SlatesNotifications['method']>(method: Method, handler: (message: Extract<SlatesNotifications, {
5
- method: Method;
6
- }>) => void): void;
7
- onRequest<Method extends SlatesRequests['method']>(method: Method, cb: (message: Extract<SlatesRequests, {
8
- method: Method;
9
- }>) => Promise<SlatesResponsesByMethod[Method]['result']>): void;
10
- private _handleInput;
11
- static handleInput(manager: SlatesProviderProtoHandlerManager, input: SlatesNotifications | SlatesRequests): Promise<{
12
- jsonrpc: "2.0";
13
- id: any;
14
- error: import("@lowerdeck/error").ErrorRecord<"bad_request", 400>;
15
- result?: undefined;
16
- } | {
17
- jsonrpc: "2.0";
18
- id: any;
19
- error: import("@lowerdeck/error").ErrorRecord<string, number>;
20
- result?: undefined;
21
- } | {
22
- jsonrpc: "2.0";
23
- id: any;
24
- error: import("@lowerdeck/error").ErrorRecord<"invalid_data", 400>;
25
- result?: undefined;
26
- } | {
27
- jsonrpc: "2.0";
28
- id: any;
29
- result: any;
30
- error?: undefined;
31
- } | {
32
- jsonrpc: "2.0";
33
- id: any;
34
- error: import("@lowerdeck/error").ServiceError<any>;
35
- result?: undefined;
36
- } | {
37
- jsonrpc: "2.0";
38
- id: any;
39
- error: import("@lowerdeck/error").ErrorRecord<"internal_server_error", 500>;
40
- result?: undefined;
41
- } | undefined>;
42
- }
43
- export declare let createSlatesProviderProtoHandler: (cb: (manager: SlatesProviderProtoHandlerManager) => Promise<void>) => {
44
- run: () => Promise<SlatesProviderProtoHandlerManager>;
45
- };
46
- //# sourceMappingURL=provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/handler/provider.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,mBAAmB,EAEnB,cAAc,EAEd,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAErB,qBAAa,iCAAiC;;IAU5C,cAAc,CAAC,MAAM,SAAS,mBAAmB,CAAC,QAAQ,CAAC,EACzD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,mBAAmB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,IAAI;IAc9E,SAAS,CAAC,MAAM,SAAS,cAAc,CAAC,QAAQ,CAAC,EAC/C,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,CACF,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,KACjD,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;YAc3C,YAAY;WAmFb,WAAW,CACtB,OAAO,EAAE,iCAAiC,EAC1C,KAAK,EAAE,mBAAmB,GAAG,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI9C;AAED,eAAO,IAAI,gCAAgC,GACzC,IAAI,CAAC,OAAO,EAAE,iCAAiC,KAAK,OAAO,CAAC,IAAI,CAAC;;CASjE,CAAC"}