@wildo-ai/external-connectors-models 1.1.9 → 1.1.11
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/dist/esm/core/commons.external-connectors-models.schemas.d.ts +130 -0
- package/dist/esm/core/commons.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/core/commons.external-connectors-models.schemas.js +193 -0
- package/dist/esm/core/commons.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/core/security.external-connectors-models.schemas.d.ts +2 -0
- package/dist/esm/core/security.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/core/security.external-connectors-models.schemas.js +10 -4
- package/dist/esm/core/security.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.d.ts +1 -0
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.js +10 -1
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/billing.standard-interface.schemas.d.ts +8 -0
- package/dist/esm/protocols/billing.standard-interface.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/billing.standard-interface.schemas.js +8 -0
- package/dist/esm/protocols/billing.standard-interface.schemas.js.map +1 -1
- package/dist/esm/protocols/content-safety.external-connectors-models.schemas.d.ts +150 -0
- package/dist/esm/protocols/content-safety.external-connectors-models.schemas.d.ts.map +1 -0
- package/dist/esm/protocols/content-safety.external-connectors-models.schemas.js +182 -0
- package/dist/esm/protocols/content-safety.external-connectors-models.schemas.js.map +1 -0
- package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.d.ts +41 -9
- package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.js +40 -14
- package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/email.standard-interface.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/email.standard-interface.schemas.js +4 -0
- package/dist/esm/protocols/email.standard-interface.schemas.js.map +1 -1
- package/dist/esm/protocols/embeddings.external-connectors-models.schemas.d.ts +37 -4
- package/dist/esm/protocols/embeddings.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/embeddings.external-connectors-models.schemas.js +57 -1
- package/dist/esm/protocols/embeddings.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/file-storage.standard-interface.d.ts +6 -0
- package/dist/esm/protocols/file-storage.standard-interface.d.ts.map +1 -1
- package/dist/esm/protocols/file-storage.standard-interface.js.map +1 -1
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.d.ts +7 -2
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/hooks.external-connectors-models.schemas.d.ts +388 -7
- package/dist/esm/protocols/hooks.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/hooks.external-connectors-models.schemas.js +238 -0
- package/dist/esm/protocols/hooks.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/llm.external-connectors-models.schemas.d.ts +70 -5
- package/dist/esm/protocols/llm.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/llm.external-connectors-models.schemas.js +96 -5
- package/dist/esm/protocols/llm.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.d.ts +446 -5
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.js +406 -0
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/subject-erasure-effect.standard-interface.d.ts +133 -0
- package/dist/esm/protocols/subject-erasure-effect.standard-interface.d.ts.map +1 -0
- package/dist/esm/protocols/subject-erasure-effect.standard-interface.js +61 -0
- package/dist/esm/protocols/subject-erasure-effect.standard-interface.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -9,16 +9,81 @@ export declare enum Hook_ContentType {
|
|
|
9
9
|
FORM_URLENCODED = "application/x-www-form-urlencoded",
|
|
10
10
|
XML = "application/xml"
|
|
11
11
|
}
|
|
12
|
+
/** @wildo_source:part:start external-connectors.models.hook-trigger-strategy facet:kind:api facet:audience:app-developer */
|
|
13
|
+
/**
|
|
14
|
+
* How a provider endpoint's requests are TRUSTED, and so what the engine does with them. A trust posture, kept apart from
|
|
15
|
+
* {@link Hook_SignatureAlgorithm}, which only says how a signature is checked.
|
|
16
|
+
*/
|
|
12
17
|
export declare enum Hook_TriggerStrategy {
|
|
18
|
+
/** The vendor pushes events, verified by the endpoint's `signatureConfig`; a verified event is stored and handled. */
|
|
13
19
|
WEBHOOK = "webhook",
|
|
14
20
|
POLLING = "polling",
|
|
15
|
-
APP_WEBHOOK = "app_webhook"
|
|
21
|
+
APP_WEBHOOK = "app_webhook",
|
|
22
|
+
/**
|
|
23
|
+
* The vendor pushes a NOTIFICATION nobody can verify (#2909): it signs nothing (IgniSign). The request is never
|
|
24
|
+
* trusted. It only names an object (`reReadTrigger.identifyReference`), and the engine:
|
|
25
|
+
* - answers 202 whatever happens, so a sender learns nothing about which references exist;
|
|
26
|
+
* - drops it unless the endpoint's handler resolves the reference to a record of this application;
|
|
27
|
+
* - stores only the reference, under an id derived from the reference and a coalescing window, so one reference
|
|
28
|
+
* causes at most one re-read per window, one at a time, and a notification after that window's re-read is kept for
|
|
29
|
+
* the next window rather than lost;
|
|
30
|
+
* - limits the endpoint's request rate, and charges the re-read to a share of the vendor's declared rate budget, so a
|
|
31
|
+
* flood never spends what polling needs. The provider must therefore DECLARE a budget (`rateBudgets` on its
|
|
32
|
+
* connection, or `maxRequestsPerMinute`); without one the route is withheld.
|
|
33
|
+
* The handler then RE-READS the object from the vendor's authenticated API: what the record becomes is what the
|
|
34
|
+
* vendor answered there, never what the notification said. Its handler resolves the reference to a record in an
|
|
35
|
+
* organization or a person's data, never the application scope. Polling remains the latency floor under attack.
|
|
36
|
+
* Such an endpoint declares no `signatureConfig`.
|
|
37
|
+
*/
|
|
38
|
+
WEBHOOK_TRIGGERS_POLL = "webhook_triggers_poll"
|
|
16
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* What a {@link Hook_TriggerStrategy.WEBHOOK_TRIGGERS_POLL} endpoint declares (#2909). Pure functions and numbers only:
|
|
42
|
+
* the request is unverified, so nothing in it is believed beyond the reference it names.
|
|
43
|
+
*/
|
|
44
|
+
export interface Hook_ReReadTrigger {
|
|
45
|
+
/**
|
|
46
|
+
* The vendor's reference to the object the notification is about (a signature request id), read from the decoded,
|
|
47
|
+
* UNVERIFIED body, or `null` when it names none. It is only ever looked up and re-read, never trusted. Pure: no I/O.
|
|
48
|
+
*/
|
|
49
|
+
readonly identifyReference: (request: Hook_InboundRequest) => string | null;
|
|
50
|
+
/**
|
|
51
|
+
* The coalescing window, in seconds (default {@link HOOK_REREAD_TRIGGER_DEFAULT_COALESCING_WINDOW_SECONDS}): a reference
|
|
52
|
+
* is re-read at most once per window, the windows aligned on the clock. A notification arriving once its window's
|
|
53
|
+
* re-read is already stored is kept for the NEXT window, due at its start, so the last change a vendor reports is
|
|
54
|
+
* never lost. A positive integer; the route is withheld otherwise.
|
|
55
|
+
*/
|
|
56
|
+
readonly coalescingWindowSeconds?: number;
|
|
57
|
+
/**
|
|
58
|
+
* The most requests the endpoint takes per window, from every sender together (default
|
|
59
|
+
* {@link HOOK_REREAD_TRIGGER_DEFAULT_RATE_LIMIT}). Past it a request is dropped, still answered 202. Positive integers.
|
|
60
|
+
*/
|
|
61
|
+
readonly rateLimit?: {
|
|
62
|
+
readonly maxRequests: number;
|
|
63
|
+
readonly windowSeconds: number;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/** The default coalescing window of a re-read trigger: one re-read per reference per minute. */
|
|
67
|
+
export declare const HOOK_REREAD_TRIGGER_DEFAULT_COALESCING_WINDOW_SECONDS = 60;
|
|
68
|
+
/** The default request rate of a re-read trigger endpoint, all senders together. */
|
|
69
|
+
export declare const HOOK_REREAD_TRIGGER_DEFAULT_RATE_LIMIT: {
|
|
70
|
+
readonly maxRequests: 120;
|
|
71
|
+
readonly windowSeconds: 60;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Whether an endpoint only triggers re-reads (#2909): its requests are never verified, never trusted. Decided by an
|
|
75
|
+
* exhaustive switch, so a strategy added tomorrow must be classified here before anything compiles (review F9).
|
|
76
|
+
*/
|
|
77
|
+
export declare function isReReadTriggerEndpoint(endpoint: Pick<Hook_Endpoint, 'triggerStrategy'>): boolean;
|
|
78
|
+
/** Whether a re-read trigger's declared numbers can be enforced: every one a positive integer (#2909 review F6). */
|
|
79
|
+
export declare function reReadTriggerLimitsAreSound(trigger: Pick<Hook_ReReadTrigger, 'coalescingWindowSeconds' | 'rateLimit'>): boolean;
|
|
80
|
+
/** @wildo_source:part:end external-connectors.models.hook-trigger-strategy */
|
|
17
81
|
export declare enum Hook_HandshakeType {
|
|
18
82
|
NONE = "none",
|
|
19
83
|
CHALLENGE_RESPONSE = "challenge_response",
|
|
20
84
|
VERIFICATION_TOKEN = "verification_token"
|
|
21
85
|
}
|
|
86
|
+
/** @wildo_source:part:start external-connectors.models.hook-signature-algorithms facet:kind:api facet:audience:app-developer */
|
|
22
87
|
export declare enum Hook_SignatureAlgorithm {
|
|
23
88
|
HMAC_SHA256 = "hmac-sha256",
|
|
24
89
|
HMAC_SHA512 = "hmac-sha512",
|
|
@@ -33,8 +98,40 @@ export declare enum Hook_SignatureAlgorithm {
|
|
|
33
98
|
* spec-cite: https://docs.svix.com/receiving/verifying-payloads/how-manual — headers, signed content, secret
|
|
34
99
|
* format, versioned signature list and timestamp tolerance.
|
|
35
100
|
*/
|
|
36
|
-
SVIX_V1 = "svix-v1"
|
|
101
|
+
SVIX_V1 = "svix-v1",
|
|
102
|
+
/**
|
|
103
|
+
* Slack's request signing, verified by the ENGINE (#2659): HMAC-SHA256 with the app's signing secret over
|
|
104
|
+
* `v0:{X-Slack-Request-Timestamp}:{raw body}`, sent as `X-Slack-Signature: v0=<hex>`, inside a five-minute
|
|
105
|
+
* window. It covers JSON events and form-encoded interactions and commands alike, because it signs the bytes.
|
|
106
|
+
* Slack signs no delivery id, so the endpoint names its events with `identifyEvent` (an `event_id` or a
|
|
107
|
+
* `trigger_id` read from the verified body).
|
|
108
|
+
*
|
|
109
|
+
* spec-cite: https://docs.slack.dev/authentication/verifying-requests-from-slack — basestring, header names,
|
|
110
|
+
* `v0=` hex signature, raw body, five-minute window.
|
|
111
|
+
*/
|
|
112
|
+
SLACK_V0 = "slack-v0",
|
|
113
|
+
/**
|
|
114
|
+
* The Bot Framework Connector's bearer token, verified by the ENGINE (#2659), for Microsoft Teams and every
|
|
115
|
+
* other Azure Bot Service channel. The request carries `Authorization: Bearer <JWT>`; the token must be
|
|
116
|
+
* signed with a key from the Connector's published key set under an algorithm its OpenID metadata names,
|
|
117
|
+
* with issuer `https://api.botframework.com`, audience equal to the bot's Microsoft App ID (the value the
|
|
118
|
+
* endpoint's secret resolves to), inside its validity period (five minutes' skew), a `serviceUrl` claim
|
|
119
|
+
* equal to the activity's `serviceUrl`, and a signing key endorsed for the activity's `channelId`.
|
|
120
|
+
* The activity carries its own `id`, which the endpoint's `identifyEvent` returns.
|
|
121
|
+
*
|
|
122
|
+
* spec-cite: https://learn.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-connector-authentication
|
|
123
|
+
* — "Authenticate requests from the Bot Connector service to your bot", steps 2-4 and the seven
|
|
124
|
+
* numbered token requirements.
|
|
125
|
+
*/
|
|
126
|
+
BOT_FRAMEWORK_JWT = "bot-framework-jwt"
|
|
37
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* The algorithms the ENGINE verifies itself. An endpoint naming one needs no provider adapter, and cannot be
|
|
130
|
+
* given one: the scheme is engine code, so the one fail-closed decision of the inbound path never moves into a
|
|
131
|
+
* provider package. Every other algorithm is verified by the adapter its provider registers.
|
|
132
|
+
*/
|
|
133
|
+
export declare const HOOK_ENGINE_VERIFIED_SIGNATURE_ALGORITHMS: ReadonlySet<Hook_SignatureAlgorithm>;
|
|
134
|
+
/** @wildo_source:part:end external-connectors.models.hook-signature-algorithms */
|
|
38
135
|
export declare enum Hook_DeliveryStatus {
|
|
39
136
|
PENDING = "pending",
|
|
40
137
|
DELIVERED = "delivered",
|
|
@@ -46,6 +143,7 @@ export declare const Hook_SignatureConfigSchema: z.ZodObject<{
|
|
|
46
143
|
headerName: z.ZodString;
|
|
47
144
|
timestampHeader: z.ZodOptional<z.ZodString>;
|
|
48
145
|
prefix: z.ZodOptional<z.ZodString>;
|
|
146
|
+
organizationAudienceFact: z.ZodOptional<z.ZodString>;
|
|
49
147
|
}, z.core.$strip>;
|
|
50
148
|
export type Hook_SignatureConfig = z.infer<typeof Hook_SignatureConfigSchema>;
|
|
51
149
|
export declare const Hook_TriggerSpecSchema: z.ZodObject<{
|
|
@@ -58,6 +156,7 @@ export declare const Hook_TriggerSpecSchema: z.ZodObject<{
|
|
|
58
156
|
headerName: z.ZodString;
|
|
59
157
|
timestampHeader: z.ZodOptional<z.ZodString>;
|
|
60
158
|
prefix: z.ZodOptional<z.ZodString>;
|
|
159
|
+
organizationAudienceFact: z.ZodOptional<z.ZodString>;
|
|
61
160
|
}, z.core.$strip>>;
|
|
62
161
|
pollingIntervalMs: z.ZodOptional<z.ZodNumber>;
|
|
63
162
|
deduplicationKey: z.ZodOptional<z.ZodString>;
|
|
@@ -129,6 +228,201 @@ export type Hook_EndpointScopeBinding = {
|
|
|
129
228
|
payloadScopeIdPath: string;
|
|
130
229
|
}>;
|
|
131
230
|
};
|
|
231
|
+
/** @wildo_source:part:start external-connectors.models.hook-inbound-endpoint facet:kind:api facet:audience:app-developer */
|
|
232
|
+
/**
|
|
233
|
+
* A provider request AFTER the engine verified it, as an endpoint's pure functions read it.
|
|
234
|
+
*
|
|
235
|
+
* Only ever built from a request whose signature or token the engine accepted, so everything in it, the
|
|
236
|
+
* decoded body included, is what the sender signed (or, for a bearer-token scheme, what an authenticated
|
|
237
|
+
* sender sent over TLS).
|
|
238
|
+
*/
|
|
239
|
+
export interface Hook_InboundRequest {
|
|
240
|
+
/** The exact bytes received. */
|
|
241
|
+
readonly rawBody: Uint8Array;
|
|
242
|
+
/** Every request header, names lower-cased as Node delivers them. */
|
|
243
|
+
readonly headers: Readonly<Record<string, string | readonly string[] | undefined>>;
|
|
244
|
+
/** The media type the body was decoded as: one of the endpoint's `contentTypes`. */
|
|
245
|
+
readonly contentType: Hook_ContentType;
|
|
246
|
+
/**
|
|
247
|
+
* The decoded body. JSON: the parsed value. A form: its fields, a field sent more than once becoming an array of
|
|
248
|
+
* its values in order; bracket names (`a[b]`) are kept as written, never expanded into objects.
|
|
249
|
+
*/
|
|
250
|
+
readonly body: unknown;
|
|
251
|
+
}
|
|
252
|
+
/** What identifies one provider event: the id the store deduplicates on, and the type a handler is chosen by. */
|
|
253
|
+
export interface Hook_InboundEventIdentity {
|
|
254
|
+
/** Unique per event at the provider, and stable across its retries. */
|
|
255
|
+
readonly eventId: string;
|
|
256
|
+
/** The provider's own name for the event (`app_mention`, `block_actions`, `invoke`, …). */
|
|
257
|
+
readonly providerEventType: string;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* A person's PERSONAL (one-to-one) conversation with the bot, as a verified request names it (#2664 S5b): who the person
|
|
261
|
+
* is (the same account their chat identity link is keyed on) and where the bot can post to them later.
|
|
262
|
+
*/
|
|
263
|
+
export interface Hook_InboundPersonalConversation {
|
|
264
|
+
/** The vendor's workspace or tenant, exactly as the provider's chat accounts write it (a lower-cased tenant id). */
|
|
265
|
+
readonly workspaceRef: string;
|
|
266
|
+
/** The vendor's id for the person, exactly as the provider's chat accounts write it (a lower-cased Entra object id). */
|
|
267
|
+
readonly chatUserId: string;
|
|
268
|
+
/** The conversation's id at the vendor. */
|
|
269
|
+
readonly conversationId: string;
|
|
270
|
+
/** Where the vendor takes messages for that conversation (the Bot Connector's `serviceUrl`). */
|
|
271
|
+
readonly serviceUrl: string;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Who sees a chat conversation at the vendor (#2665 S6), which decides where an answer to it may be posted. The chat
|
|
275
|
+
* door reads it from the verified request (`Hook_InboundChatMessage.audience`) and the chat-conversation ledger records it.
|
|
276
|
+
*/
|
|
277
|
+
export declare enum ChatConversationAudience {
|
|
278
|
+
/** A one-to-one conversation with the bot (a Slack DM, a Teams personal chat): answered in it. */
|
|
279
|
+
DIRECT = "direct",
|
|
280
|
+
/**
|
|
281
|
+
* A conversation other people read (a channel, a group chat): answered privately, in the asker's own conversation with
|
|
282
|
+
* the bot, with a content-free pointer in the thread. A turn runs with the asker's authority, so its answer may name
|
|
283
|
+
* what the others in the thread cannot see.
|
|
284
|
+
*/
|
|
285
|
+
SHARED = "shared",
|
|
286
|
+
/** A shared conversation that reaches people outside the organization (Slack Connect, a Teams shared channel): the same. */
|
|
287
|
+
SHARED_WITH_EXTERNAL = "shared_with_external"
|
|
288
|
+
}
|
|
289
|
+
/** Whether a vendor conversation is a thread or a flat stream of messages (#2665 S6, plan B11). */
|
|
290
|
+
export declare enum Hook_ChatConversationThreading {
|
|
291
|
+
/** A thread (a Slack thread, a Teams channel's reply chain): one conversation for its whole life. */
|
|
292
|
+
THREADED = "threaded",
|
|
293
|
+
/**
|
|
294
|
+
* A flat conversation (a top-level Slack DM, a Teams personal or group chat): split after a quiet gap measured on the
|
|
295
|
+
* vendor's clock, so one transcript never grows without bound.
|
|
296
|
+
*/
|
|
297
|
+
FLAT = "flat"
|
|
298
|
+
}
|
|
299
|
+
/** The person who wrote a chat message, as the provider's chat accounts write them: what their chat identity link is keyed on. */
|
|
300
|
+
export declare const Hook_InboundChatSenderSchema: z.ZodObject<{
|
|
301
|
+
workspaceRef: z.ZodString;
|
|
302
|
+
chatUserId: z.ZodString;
|
|
303
|
+
chatUserDisplayName: z.ZodOptional<z.ZodString>;
|
|
304
|
+
workspaceDisplayName: z.ZodOptional<z.ZodString>;
|
|
305
|
+
}, z.core.$strip>;
|
|
306
|
+
export type Hook_InboundChatSender = z.infer<typeof Hook_InboundChatSenderSchema>;
|
|
307
|
+
/**
|
|
308
|
+
* A message a person wrote to the bot, as a verified request carries it (#2665 S6, plan A14). The chat door reads all of
|
|
309
|
+
* it from the request the engine verified, never from a handler, so a handler decides only WHETHER to converse.
|
|
310
|
+
*
|
|
311
|
+
* One schema, the type derived from it (#2665 S6 review L-B): the engine parses what a provider module's `chatMessageOf`
|
|
312
|
+
* returns with this very schema, so a field added here is checked at the engine's boundary the day it is added, and a
|
|
313
|
+
* value the module built wrong (an empty key, a date that is not one) is read as no message.
|
|
314
|
+
*/
|
|
315
|
+
export declare const Hook_InboundChatMessageSchema: z.ZodObject<{
|
|
316
|
+
sender: z.ZodObject<{
|
|
317
|
+
workspaceRef: z.ZodString;
|
|
318
|
+
chatUserId: z.ZodString;
|
|
319
|
+
chatUserDisplayName: z.ZodOptional<z.ZodString>;
|
|
320
|
+
workspaceDisplayName: z.ZodOptional<z.ZodString>;
|
|
321
|
+
}, z.core.$strip>;
|
|
322
|
+
conversationKey: z.ZodString;
|
|
323
|
+
threading: z.ZodEnum<typeof Hook_ChatConversationThreading>;
|
|
324
|
+
audience: z.ZodEnum<typeof ChatConversationAudience>;
|
|
325
|
+
messageKey: z.ZodString;
|
|
326
|
+
sentAt: z.ZodDate;
|
|
327
|
+
text: z.ZodString;
|
|
328
|
+
replyTarget: z.ZodString;
|
|
329
|
+
}, z.core.$strip>;
|
|
330
|
+
export type Hook_InboundChatMessage = z.infer<typeof Hook_InboundChatMessageSchema>;
|
|
331
|
+
/**
|
|
332
|
+
* A chat COMMAND a person sent, as a verified request carries it (#2666 S7): a Slack slash command (`/todo add buy milk`)
|
|
333
|
+
* or a Teams message-extension form a person submitted. Read by the engine from the request it verified, so the command
|
|
334
|
+
* door runs what the person sent and never what a handler says they sent. One schema, the type derived from it: what a
|
|
335
|
+
* provider module's `chatCommandOf` returns is parsed with it, and a value built wrong is read as no command.
|
|
336
|
+
*/
|
|
337
|
+
export declare const Hook_InboundChatCommandSchema: z.ZodObject<{
|
|
338
|
+
sender: z.ZodObject<{
|
|
339
|
+
workspaceRef: z.ZodString;
|
|
340
|
+
chatUserId: z.ZodString;
|
|
341
|
+
chatUserDisplayName: z.ZodOptional<z.ZodString>;
|
|
342
|
+
workspaceDisplayName: z.ZodOptional<z.ZodString>;
|
|
343
|
+
}, z.core.$strip>;
|
|
344
|
+
verb: z.ZodNullable<z.ZodString>;
|
|
345
|
+
text: z.ZodString;
|
|
346
|
+
values: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
347
|
+
audience: z.ZodEnum<typeof ChatConversationAudience>;
|
|
348
|
+
replyTarget: z.ZodString;
|
|
349
|
+
}, z.core.$strip>;
|
|
350
|
+
export type Hook_InboundChatCommand = z.infer<typeof Hook_InboundChatCommandSchema>;
|
|
351
|
+
/**
|
|
352
|
+
* A chat SEARCH a person typed (#2666 S7): a Teams message-extension search, sent as the person types and answered within
|
|
353
|
+
* the vendor's deadline in the same request, never stored. Read by the engine from the request it verified.
|
|
354
|
+
*/
|
|
355
|
+
export declare const Hook_InboundChatSearchSchema: z.ZodObject<{
|
|
356
|
+
sender: z.ZodObject<{
|
|
357
|
+
workspaceRef: z.ZodString;
|
|
358
|
+
chatUserId: z.ZodString;
|
|
359
|
+
chatUserDisplayName: z.ZodOptional<z.ZodString>;
|
|
360
|
+
workspaceDisplayName: z.ZodOptional<z.ZodString>;
|
|
361
|
+
}, z.core.$strip>;
|
|
362
|
+
verb: z.ZodString;
|
|
363
|
+
text: z.ZodString;
|
|
364
|
+
initialRun: z.ZodBoolean;
|
|
365
|
+
skip: z.ZodNumber;
|
|
366
|
+
vendorRequestId: z.ZodString;
|
|
367
|
+
}, z.core.$strip>;
|
|
368
|
+
export type Hook_InboundChatSearch = z.infer<typeof Hook_InboundChatSearchSchema>;
|
|
369
|
+
/** What the engine answers a chat search with, before the vendor module writes it in the vendor's own response (#2666 S7). */
|
|
370
|
+
export declare enum Hook_ChatSearchAnswerKind {
|
|
371
|
+
/** Records the person may insert, each named and linked. Empty when this page has nothing (a later page of the results). */
|
|
372
|
+
RESULTS = "results",
|
|
373
|
+
/** One plain sentence in place of results: nothing found, refused, keep typing, try again. Carries no formatting. */
|
|
374
|
+
MESSAGE = "message",
|
|
375
|
+
/** The person's chat account is linked to no member yet: the page that links it, and the text of the action that opens it. */
|
|
376
|
+
SIGN_IN = "sign_in"
|
|
377
|
+
}
|
|
378
|
+
/** One record a chat search found: its name and its page in the application, nothing else (selecting it shares only these). */
|
|
379
|
+
export interface Hook_ChatSearchAnswerItem {
|
|
380
|
+
/** The record's id. */
|
|
381
|
+
readonly id: string;
|
|
382
|
+
/** The record's name (its resource's `recordLabelFields`), or the framework's "open it" phrase when it has none. */
|
|
383
|
+
readonly title: string;
|
|
384
|
+
/** The record's page in the application, or `null` when its route cannot be built. */
|
|
385
|
+
readonly url: string | null;
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* The engine's answer to a chat search (#2666 S7), in the searcher's language, which the endpoint's
|
|
389
|
+
* {@link Hook_Endpoint.answerChatSearch} turns into the vendor's response (a Teams `composeExtension` of type `result`,
|
|
390
|
+
* `message` or `auth`). Built by the engine from the member's own results; a module only chooses how it looks.
|
|
391
|
+
*/
|
|
392
|
+
export type Hook_ChatSearchAnswer = {
|
|
393
|
+
readonly kind: Hook_ChatSearchAnswerKind.RESULTS;
|
|
394
|
+
readonly items: readonly Hook_ChatSearchAnswerItem[];
|
|
395
|
+
} | {
|
|
396
|
+
readonly kind: Hook_ChatSearchAnswerKind.MESSAGE;
|
|
397
|
+
readonly text: string;
|
|
398
|
+
} | {
|
|
399
|
+
readonly kind: Hook_ChatSearchAnswerKind.SIGN_IN;
|
|
400
|
+
readonly text: string;
|
|
401
|
+
readonly url: string;
|
|
402
|
+
};
|
|
403
|
+
/** How an endpoint's synchronous answer writes its body. */
|
|
404
|
+
export declare enum Hook_AcknowledgementEncoding {
|
|
405
|
+
/** No body. Slack takes an empty 200 as "received, nothing to show"; it closes a submitted modal view. */
|
|
406
|
+
EMPTY = "empty",
|
|
407
|
+
/** `application/json`. */
|
|
408
|
+
JSON = "json",
|
|
409
|
+
/** `text/plain; charset=utf-8`. */
|
|
410
|
+
TEXT = "text"
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* The HTTP answer a provider's contract requires within its deadline, computed from the verified request.
|
|
414
|
+
* Always a 200: it is the answer to a request the engine ACCEPTED (stored, a duplicate, or one no handler takes),
|
|
415
|
+
* so a refusal never takes this path. The work itself still goes through the durable store and the queue.
|
|
416
|
+
*/
|
|
417
|
+
export type Hook_Acknowledgement = {
|
|
418
|
+
readonly encoding: Hook_AcknowledgementEncoding.EMPTY;
|
|
419
|
+
} | {
|
|
420
|
+
readonly encoding: Hook_AcknowledgementEncoding.JSON;
|
|
421
|
+
readonly body: unknown;
|
|
422
|
+
} | {
|
|
423
|
+
readonly encoding: Hook_AcknowledgementEncoding.TEXT;
|
|
424
|
+
readonly body: string;
|
|
425
|
+
};
|
|
132
426
|
/**
|
|
133
427
|
* A webhook endpoint for a specific domain/capability within a provider.
|
|
134
428
|
*
|
|
@@ -159,12 +453,17 @@ export type Hook_Endpoint = {
|
|
|
159
453
|
displayName?: string;
|
|
160
454
|
/** Which capability this endpoint serves */
|
|
161
455
|
capability: string;
|
|
162
|
-
/**
|
|
163
|
-
|
|
164
|
-
|
|
456
|
+
/**
|
|
457
|
+
* How a request is verified. Required on every endpoint except a
|
|
458
|
+
* {@link Hook_TriggerStrategy.WEBHOOK_TRIGGERS_POLL} one, which must declare none (nothing it receives is verified, and
|
|
459
|
+
* a signature setting nothing reads would look like a control). The route gate withholds an endpoint that breaks either
|
|
460
|
+
* half.
|
|
461
|
+
*/
|
|
462
|
+
signatureConfig?: Hook_SignatureConfig;
|
|
463
|
+
/** How the endpoint's requests are trusted, and so handled. See {@link Hook_TriggerStrategy}. */
|
|
165
464
|
triggerStrategy: Hook_TriggerStrategy;
|
|
166
|
-
/**
|
|
167
|
-
|
|
465
|
+
/** Required for, and only for, a {@link Hook_TriggerStrategy.WEBHOOK_TRIGGERS_POLL} endpoint (#2909). */
|
|
466
|
+
reReadTrigger?: Hook_ReReadTrigger;
|
|
168
467
|
/** Event types this endpoint handles (single source of truth) */
|
|
169
468
|
eventTypes: string[];
|
|
170
469
|
/** Declarative scope binding — how events map to engine scope */
|
|
@@ -176,7 +475,89 @@ export type Hook_Endpoint = {
|
|
|
176
475
|
* own body limit applies.
|
|
177
476
|
*/
|
|
178
477
|
maxBodyBytes?: number;
|
|
478
|
+
/**
|
|
479
|
+
* The media types this endpoint accepts (#2659). A request in any other is refused 415 and audited. Omitted,
|
|
480
|
+
* the endpoint accepts JSON only. Slack's interactions and slash commands are `FORM_URLENCODED`. The engine
|
|
481
|
+
* decodes JSON and form bodies; it decodes no XML, so an endpoint declaring XML refuses every request.
|
|
482
|
+
*/
|
|
483
|
+
contentTypes?: ReadonlyArray<Hook_ContentType>;
|
|
484
|
+
/**
|
|
485
|
+
* The verified request names a PERSON of the vendor's chat: a workspace or tenant and a user id, both carried in
|
|
486
|
+
* bytes the vendor signed (Slack's events, clicks and commands; a Teams activity). Only such an endpoint's handler
|
|
487
|
+
* may act as the member that chat account is linked to (`ctx.chat`, #2664); every other handler is refused.
|
|
488
|
+
*
|
|
489
|
+
* Honored only on an endpoint the ENGINE verifies (`HOOK_ENGINE_VERIFIED_SIGNATURE_ALGORITHMS`), read through
|
|
490
|
+
* {@link hookEndpointNamesChatMember}: a person named in bytes the engine did not check could be anyone. An email
|
|
491
|
+
* intake endpoint never declares it, because a From address is not verified by anything.
|
|
492
|
+
*/
|
|
493
|
+
namesChatMember?: boolean;
|
|
494
|
+
/**
|
|
495
|
+
* Answers a HANDSHAKE: a request that proves the endpoint is reachable rather than delivering an event
|
|
496
|
+
* (Slack's `url_verification`, answered with its `challenge`). Returns the answer for a handshake, `null` for
|
|
497
|
+
* anything else. A handshake is answered and never stored: no handler runs for it.
|
|
498
|
+
*/
|
|
499
|
+
answerHandshake?: (request: Hook_InboundRequest) => Hook_Acknowledgement | null;
|
|
500
|
+
/**
|
|
501
|
+
* Names the event in a verified request, for an engine-verified endpoint whose scheme signs no delivery id
|
|
502
|
+
* (`SLACK_V0`, `BOT_FRAMEWORK_JWT`). Returns `null` for a request that carries no event the provider names; it
|
|
503
|
+
* is acknowledged and stored nowhere. `SVIX_V1` needs none: its signed `svix-id` and the body's `type` name it.
|
|
504
|
+
* An engine-verified endpoint whose scheme signs no id is not mounted without one.
|
|
505
|
+
*/
|
|
506
|
+
identifyEvent?: (request: Hook_InboundRequest) => Hook_InboundEventIdentity | null;
|
|
507
|
+
/**
|
|
508
|
+
* The synchronous answer the provider requires, replacing the engine's `{ received: true }` on every accepted
|
|
509
|
+
* request (Slack: an empty 200; a Teams `invoke`: an invoke response body). Omitted, the engine's answer stands.
|
|
510
|
+
*/
|
|
511
|
+
acknowledge?: (request: Hook_InboundRequest) => Hook_Acknowledgement;
|
|
512
|
+
/**
|
|
513
|
+
* The PERSONAL conversation this request happened in, or `null` when it happened anywhere else (a group chat, a
|
|
514
|
+
* channel) or names no person (#2664 S5b). Only for an endpoint that {@link namesChatMember} and whose scheme names
|
|
515
|
+
* the bot the token was for (`BOT_FRAMEWORK_JWT`). The engine records it on the sender's chat identity link in the
|
|
516
|
+
* delivery's organization, under that bot, so the application can post to the person later without their writing
|
|
517
|
+
* first. A throw is logged and records nothing: the delivery is unaffected.
|
|
518
|
+
*/
|
|
519
|
+
personalConversationOf?: (request: Hook_InboundRequest) => Hook_InboundPersonalConversation | null;
|
|
520
|
+
/**
|
|
521
|
+
* The message a person wrote to the bot in this request, or `null` when it carries none: a click, a command, the
|
|
522
|
+
* bot's own message, an edit or a deletion (#2665 S6). Only for an endpoint that {@link namesChatMember}, on a scheme the
|
|
523
|
+
* engine verifies: declared anywhere else, it stops startup (#2666 S7), because a person's words read from it would be
|
|
524
|
+
* stored where READ returns them and nothing empties them. A handler on
|
|
525
|
+
* such an endpoint converses through `ctx.chat.converse()`, which reads the message from here, and the engine orders
|
|
526
|
+
* each sender's messages of one conversation by it (the delivery's ordering key). A throw is treated as `null`.
|
|
527
|
+
* Read the BODY only: the engine calls it at receipt and again from the stored delivery, which keeps no header but
|
|
528
|
+
* `content-type`, and the two reads must name the same message.
|
|
529
|
+
*/
|
|
530
|
+
chatMessageOf?: (request: Hook_InboundRequest) => Hook_InboundChatMessage | null;
|
|
531
|
+
/**
|
|
532
|
+
* The chat command a person sent in this request, or `null` when it carries none (#2666 S7): a Slack slash command, or a
|
|
533
|
+
* Teams message-extension form submitted. Only for an endpoint that {@link namesChatMember} on a scheme the engine
|
|
534
|
+
* verifies; declared anywhere else, it stops startup. The engine marks the stored
|
|
535
|
+
* delivery a COMMAND at receipt, so its body has one copy, and a handler runs it through `ctx.chat.runCommand()`, which
|
|
536
|
+
* reads it from here. A throw is treated as `null`. Read the BODY only: the engine calls it at receipt and again from the
|
|
537
|
+
* stored delivery, which keeps no header but `content-type`.
|
|
538
|
+
*/
|
|
539
|
+
chatCommandOf?: (request: Hook_InboundRequest) => Hook_InboundChatCommand | null;
|
|
540
|
+
/**
|
|
541
|
+
* The chat SEARCH a person typed in this request, or `null` (#2666 S7): a Teams message-extension search. Only for an
|
|
542
|
+
* endpoint that {@link namesChatMember} on a scheme the engine verifies; declared anywhere else, it stops startup. A search is answered in the request and never stored, so the engine asks this
|
|
543
|
+
* BEFORE it names an event: a request it answers is a search, and nothing else runs for it. A throw is treated as `null`.
|
|
544
|
+
* Declared with {@link answerChatSearch}, or startup refuses the endpoint.
|
|
545
|
+
*/
|
|
546
|
+
chatSearchOf?: (request: Hook_InboundRequest) => Hook_InboundChatSearch | null;
|
|
547
|
+
/**
|
|
548
|
+
* The vendor's response to a chat search, from the engine's answer (#2666 S7): the person's results, a sentence, or the
|
|
549
|
+
* page that links their chat account. Pure, because it is written inside the vendor's deadline. Declared exactly when
|
|
550
|
+
* {@link chatSearchOf} is: one without the other stops startup.
|
|
551
|
+
*/
|
|
552
|
+
answerChatSearch?: (answer: Hook_ChatSearchAnswer) => Hook_Acknowledgement;
|
|
179
553
|
};
|
|
554
|
+
/** @wildo_source:part:end external-connectors.models.hook-inbound-endpoint */
|
|
555
|
+
/**
|
|
556
|
+
* Whether an endpoint's handler may act as the chat member its verified request names (#2664): the endpoint declares
|
|
557
|
+
* {@link Hook_Endpoint.namesChatMember}, AND the engine verifies it. A declaration on an endpoint a provider adapter
|
|
558
|
+
* verifies is not honored, so the decision rests on engine code alone.
|
|
559
|
+
*/
|
|
560
|
+
export declare function hookEndpointNamesChatMember(endpoint: Pick<Hook_Endpoint, 'namesChatMember' | 'signatureConfig'>): boolean;
|
|
180
561
|
export type HookInitiatorProvider_Configuration = ExternalProvider_ExchangeProtocol_Configuration_Base & {
|
|
181
562
|
/** Webhook endpoints — each generates a route: POST /webhooks/{providerRef}/{endpointKey} */
|
|
182
563
|
endpoints: Hook_Endpoint[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.external-connectors-models.schemas.d.ts","sourceRoot":"","sources":["../../../../src/protocols/hooks.external-connectors-models.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,cAAc,EACd,oDAAoD,EAErD,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,EAA2C,yCAAyC,EAAE,MAAM,uDAAuD,CAAC;AAc3J,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAIrD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,SAAS,0BAA0B,EAKlE,CAAC;AAEF,oBAAY,gBAAgB;IAC1B,IAAI,qBAAqB;IACzB,eAAe,sCAAsC;IACrD,GAAG,oBAAoB;CACxB;AAED,oBAAY,oBAAoB;IAC9B,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,WAAW,gBAAgB;
|
|
1
|
+
{"version":3,"file":"hooks.external-connectors-models.schemas.d.ts","sourceRoot":"","sources":["../../../../src/protocols/hooks.external-connectors-models.schemas.ts"],"names":[],"mappings":"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"}
|