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

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 +1631 -2
  2. package/dist/index.d.cts +5394 -0
  3. package/dist/index.d.ts +5394 -4
  4. package/dist/index.module.js +1479 -2
  5. package/package.json +8 -7
  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 +382 -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,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
+ };
@@ -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"}