@botpress/sdk 1.2.1 → 1.2.2

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 (36) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/dist/bot/client/index.d.ts +42 -41
  3. package/dist/bot/client/types.d.ts +126 -60
  4. package/dist/bot/implementation.d.ts +1 -1
  5. package/dist/bot/index.d.ts +1 -1
  6. package/dist/bot/server/context.d.ts +2 -0
  7. package/dist/bot/server/index.d.ts +5 -0
  8. package/dist/bot/server/types.d.ts +59 -0
  9. package/dist/bot/types/common.d.ts +56 -0
  10. package/dist/bot/types/common.test.d.ts +1 -0
  11. package/dist/bot/{generic.d.ts → types/generic.d.ts} +6 -4
  12. package/dist/bot/types/index.d.ts +2 -0
  13. package/dist/index.d.ts +6 -1
  14. package/dist/index.js +1 -1
  15. package/dist/index.js.map +4 -4
  16. package/dist/integration/client/index.d.ts +42 -41
  17. package/dist/integration/client/types.d.ts +127 -21
  18. package/dist/integration/implementation.d.ts +2 -2
  19. package/dist/integration/index.d.ts +1 -2
  20. package/dist/integration/server/context.d.ts +3 -0
  21. package/dist/integration/server/index.d.ts +6 -0
  22. package/dist/integration/server/types.d.ts +102 -0
  23. package/dist/integration/types/common.d.ts +11 -0
  24. package/dist/integration/{generic.d.ts → types/generic.d.ts} +7 -1
  25. package/dist/integration/types/index.d.ts +2 -0
  26. package/dist/message.d.ts +1 -1
  27. package/dist/utils/type-utils.d.ts +9 -2
  28. package/package.json +1 -1
  29. package/dist/bot/client/routes.d.ts +0 -81
  30. package/dist/bot/context.d.ts +0 -12
  31. package/dist/bot/server.d.ts +0 -40
  32. package/dist/integration/client/routes.d.ts +0 -128
  33. package/dist/integration/context.d.ts +0 -23
  34. package/dist/integration/server.d.ts +0 -88
  35. /package/dist/integration/{action-metadata.d.ts → server/action-metadata.d.ts} +0 -0
  36. /package/dist/integration/{logger.d.ts → server/logger.d.ts} +0 -0
@@ -1,128 +0,0 @@
1
- import { Client } from '@botpress/client';
2
- import { Merge, Cast, ValueOf } from '../../utils/type-utils';
3
- import { BaseIntegration } from '../generic';
4
- import { GetChannelByName, ToTags, WithPrefix } from './types';
5
- type Arg<F extends (...args: any[]) => any> = Parameters<F>[number];
6
- type Res<F extends (...args: any[]) => any> = ReturnType<F>;
7
- type AllChannels<TIntegration extends BaseIntegration> = ValueOf<TIntegration['channels']>;
8
- type ConversationResponse<TIntegration extends BaseIntegration, ChannelName extends keyof TIntegration['channels'] = keyof TIntegration['channels']> = {
9
- conversation: Merge<Awaited<Res<Client['getConversation']>>['conversation'], {
10
- channel: ChannelName;
11
- tags: ToTags<keyof TIntegration['channels'][ChannelName]['conversation']['tags']>;
12
- }>;
13
- };
14
- export type CreateConversation<TIntegration extends BaseIntegration> = <ChannelName extends keyof TIntegration['channels']>(x: {
15
- channel: Cast<ChannelName, string>;
16
- tags: ToTags<keyof GetChannelByName<TIntegration, ChannelName>['conversation']['tags']>;
17
- }) => Promise<ConversationResponse<TIntegration, ChannelName>>;
18
- export type GetConversation<TIntegration extends BaseIntegration> = (x: Arg<Client['getConversation']>) => Promise<ConversationResponse<TIntegration>>;
19
- export type ListConversations<TIntegration extends BaseIntegration> = <ChannelName extends keyof TIntegration['channels']>(x: Merge<Arg<Client['listConversations']>, {
20
- channel?: Cast<ChannelName, string>;
21
- tags?: ToTags<keyof GetChannelByName<TIntegration, ChannelName>['conversation']['tags']>;
22
- }>) => Res<Client['listConversations']>;
23
- export type GetOrCreateConversation<TIntegration extends BaseIntegration> = <ChannelName extends keyof TIntegration['channels']>(x: {
24
- channel: Cast<ChannelName, string>;
25
- tags: ToTags<keyof GetChannelByName<TIntegration, ChannelName>['conversation']['tags']>;
26
- }) => Promise<ConversationResponse<TIntegration, ChannelName>>;
27
- export type UpdateConversation<TIntegration extends BaseIntegration> = (x: Merge<Arg<Client['updateConversation']>, {
28
- tags: ToTags<keyof AllChannels<TIntegration>['conversation']['tags']>;
29
- }>) => Promise<ConversationResponse<TIntegration>>;
30
- export type DeleteConversation<_TIntegration extends BaseIntegration> = Client['deleteConversation'];
31
- export type ListParticipants<_TIntegration extends BaseIntegration> = Client['listParticipants'];
32
- export type AddParticipant<_TIntegration extends BaseIntegration> = Client['addParticipant'];
33
- export type GetParticipant<_TIntegration extends BaseIntegration> = Client['getParticipant'];
34
- export type RemoveParticipant<_TIntegration extends BaseIntegration> = Client['removeParticipant'];
35
- type EventResponse<TIntegration extends BaseIntegration, TEvent extends keyof TIntegration['events']> = {
36
- event: Merge<Awaited<Res<Client['getEvent']>>['event'], {
37
- type: TEvent;
38
- payload: TIntegration['events'][TEvent];
39
- }>;
40
- };
41
- export type CreateEvent<TIntegration extends BaseIntegration> = <TEvent extends keyof TIntegration['events']>(x: Merge<Arg<Client['createEvent']>, {
42
- type: WithPrefix<Cast<TEvent, string>, {
43
- allowPrefix: TIntegration['name'];
44
- }>;
45
- payload: TIntegration['events'][TEvent];
46
- }>) => Promise<EventResponse<TIntegration, TEvent>>;
47
- export type GetEvent<TIntegration extends BaseIntegration> = (x: Arg<Client['getEvent']>) => Promise<ValueOf<{
48
- [K in keyof TIntegration['events']]: EventResponse<TIntegration, K>;
49
- }>>;
50
- export type ListEvents<TIntegration extends BaseIntegration> = (x: Merge<Arg<Client['listEvents']>, {
51
- type: WithPrefix<Cast<keyof TIntegration['events'], string>, {
52
- allowPrefix: TIntegration['name'];
53
- }>;
54
- }>) => Res<Client['listEvents']>;
55
- type MessageResponse<TIntegration extends BaseIntegration, TChannel extends keyof TIntegration['channels'], TMessage extends keyof TIntegration['channels'][TChannel]['messages']> = {
56
- message: Merge<Awaited<Res<Client['createMessage']>>['message'], {
57
- payload: TIntegration['channels'][TChannel]['messages'][TMessage];
58
- tags: ToTags<keyof TIntegration['channels'][TChannel]['message']['tags']>;
59
- }>;
60
- };
61
- export type CreateMessage<TIntegration extends BaseIntegration> = <TChannel extends keyof TIntegration['channels'], TMessage extends keyof TIntegration['channels'][TChannel]['messages']>(x: Merge<Arg<Client['createMessage']>, {
62
- type: Cast<TMessage, string>;
63
- payload: TIntegration['channels'][TChannel]['messages'][TMessage];
64
- tags: ToTags<keyof TIntegration['channels'][TChannel]['message']['tags']>;
65
- }>) => Promise<MessageResponse<TIntegration, TChannel, TMessage>>;
66
- export type GetOrCreateMessage<TIntegration extends BaseIntegration> = <TChannel extends keyof TIntegration['channels'], TMessage extends keyof TIntegration['channels'][TChannel]['messages']>(x: Merge<Arg<Client['getOrCreateMessage']>, {
67
- type: Cast<TMessage, string>;
68
- payload: TIntegration['channels'][TChannel]['messages'][TMessage];
69
- tags: ToTags<keyof TIntegration['channels'][TChannel]['message']['tags']>;
70
- }>) => Promise<MessageResponse<TIntegration, TChannel, TMessage>>;
71
- export type GetMessage<TIntegration extends BaseIntegration> = (x: Arg<Client['getMessage']>) => Promise<MessageResponse<TIntegration, keyof TIntegration['channels'], keyof ValueOf<TIntegration['channels']>['messages']>>;
72
- export type UpdateMessage<TIntegration extends BaseIntegration> = (x: Merge<Arg<Client['updateMessage']>, {
73
- tags: ToTags<keyof AllChannels<TIntegration>['message']['tags']>;
74
- }>) => Promise<MessageResponse<TIntegration, keyof TIntegration['channels'], keyof ValueOf<TIntegration['channels']>['messages']>>;
75
- export type ListMessages<TIntegration extends BaseIntegration> = (x: Merge<Arg<Client['listMessages']>, {
76
- tags: ToTags<keyof AllChannels<TIntegration>['message']['tags']>;
77
- }>) => Res<Client['listMessages']>;
78
- export type DeleteMessage<_TIntegration extends BaseIntegration> = Client['deleteMessage'];
79
- type UserResponse<TIntegration extends BaseIntegration> = {
80
- user: Merge<Awaited<Res<Client['getUser']>>['user'], {
81
- tags: ToTags<keyof TIntegration['user']['tags']>;
82
- }>;
83
- };
84
- export type CreateUser<TIntegration extends BaseIntegration> = (x: Merge<Arg<Client['createUser']>, {
85
- tags: ToTags<keyof TIntegration['user']['tags']>;
86
- }>) => Promise<UserResponse<TIntegration>>;
87
- export type GetUser<TIntegration extends BaseIntegration> = (x: Arg<Client['getUser']>) => Promise<UserResponse<TIntegration>>;
88
- export type ListUsers<TIntegration extends BaseIntegration> = (x: Merge<Arg<Client['listUsers']>, {
89
- tags: ToTags<keyof TIntegration['user']['tags']>;
90
- }>) => Res<Client['listUsers']>;
91
- export type GetOrCreateUser<TIntegration extends BaseIntegration> = (x: Merge<Arg<Client['getOrCreateUser']>, {
92
- tags: ToTags<keyof TIntegration['user']['tags']>;
93
- }>) => Promise<UserResponse<TIntegration>>;
94
- export type UpdateUser<TIntegration extends BaseIntegration> = (x: Merge<Arg<Client['updateUser']>, {
95
- tags: ToTags<keyof TIntegration['user']['tags']>;
96
- }>) => Promise<UserResponse<TIntegration>>;
97
- export type DeleteUser<_TIntegration extends BaseIntegration> = Client['deleteUser'];
98
- type StateResponse<TIntegration extends BaseIntegration, TState extends keyof TIntegration['states']> = {
99
- state: Merge<Awaited<Res<Client['getState']>>['state'], {
100
- payload: TIntegration['states'][TState];
101
- }>;
102
- meta: {
103
- cached: boolean;
104
- };
105
- };
106
- export type GetState<TIntegration extends BaseIntegration> = <TState extends keyof TIntegration['states']>(x: Merge<Arg<Client['getState']>, {
107
- name: Cast<TState, string>;
108
- }>) => Promise<StateResponse<TIntegration, TState>>;
109
- export type SetState<TIntegration extends BaseIntegration> = <TState extends keyof TIntegration['states']>(x: Merge<Arg<Client['setState']>, {
110
- name: Cast<TState, string>;
111
- payload: TIntegration['states'][TState] | null;
112
- }>) => Promise<StateResponse<TIntegration, TState>>;
113
- export type GetOrSetState<TIntegration extends BaseIntegration> = <TState extends keyof TIntegration['states']>(x: Merge<Arg<Client['getOrSetState']>, {
114
- name: Cast<TState, string>;
115
- payload: TIntegration['states'][TState];
116
- }>) => Promise<StateResponse<TIntegration, TState>>;
117
- export type PatchState<TIntegration extends BaseIntegration> = <TState extends keyof TIntegration['states']>(x: Merge<Arg<Client['patchState']>, {
118
- name: Cast<TState, string>;
119
- payload: Partial<TIntegration['states'][TState]>;
120
- }>) => Promise<StateResponse<TIntegration, TState>>;
121
- export type ConfigureIntegration<_TIntegration extends BaseIntegration> = Client['configureIntegration'];
122
- export type UploadFile<_TIntegration extends BaseIntegration> = Client['uploadFile'];
123
- export type UpsertFile<_TIntegration extends BaseIntegration> = Client['upsertFile'];
124
- export type DeleteFile<_TIntegration extends BaseIntegration> = Client['deleteFile'];
125
- export type ListFiles<_TIntegration extends BaseIntegration> = Client['listFiles'];
126
- export type GetFile<_TIntegration extends BaseIntegration> = Client['getFile'];
127
- export type UpdateFileMetadata<_TIntegration extends BaseIntegration> = Client['updateFileMetadata'];
128
- export {};
@@ -1,23 +0,0 @@
1
- import { z } from '@bpinternal/zui';
2
- import { ValueOf } from '../utils/type-utils';
3
- import { BaseIntegration } from './generic';
4
- export declare const integrationOperationSchema: import("@bpinternal/zui").ZodEnum<["webhook_received", "message_created", "action_triggered", "register", "unregister", "ping", "create_user", "create_conversation"]>;
5
- export type IntegrationOperation = z.infer<typeof integrationOperationSchema>;
6
- type IntegrationContextConfig<TIntegration extends BaseIntegration> = {
7
- configurationType: null;
8
- configuration: TIntegration['configuration'];
9
- } | ValueOf<{
10
- [TConfigType in keyof TIntegration['configurations']]: {
11
- configurationType: TConfigType;
12
- configuration: TIntegration['configurations'][TConfigType];
13
- };
14
- }>;
15
- export type IntegrationContext<TIntegration extends BaseIntegration = BaseIntegration> = {
16
- botId: string;
17
- botUserId: string;
18
- integrationId: string;
19
- webhookId: string;
20
- operation: IntegrationOperation;
21
- } & IntegrationContextConfig<TIntegration>;
22
- export declare const extractContext: <TIntegration extends BaseIntegration>(headers: Record<string, string | undefined>) => IntegrationContext<TIntegration>;
23
- export {};
@@ -1,88 +0,0 @@
1
- import { type Conversation, type Message, type User } from '@botpress/client';
2
- import { Request, Response } from '../serve';
3
- import { Cast, Merge } from '../utils/type-utils';
4
- import { IntegrationSpecificClient } from './client';
5
- import { ToTags } from './client/types';
6
- import { type IntegrationContext } from './context';
7
- import { BaseIntegration } from './generic';
8
- import { IntegrationLogger } from './logger';
9
- type CommonArgs<TIntegration extends BaseIntegration> = {
10
- ctx: IntegrationContext<TIntegration>;
11
- client: IntegrationSpecificClient<TIntegration>;
12
- logger: IntegrationLogger;
13
- };
14
- type RegisterPayload = {
15
- webhookUrl: string;
16
- };
17
- type RegisterArgs<TIntegration extends BaseIntegration> = CommonArgs<TIntegration> & RegisterPayload;
18
- type UnregisterPayload = {
19
- webhookUrl: string;
20
- };
21
- type UnregisterArgs<TIntegration extends BaseIntegration> = CommonArgs<TIntegration> & UnregisterPayload;
22
- type WebhookPayload = {
23
- req: Request;
24
- };
25
- type WebhookArgs<TIntegration extends BaseIntegration> = CommonArgs<TIntegration> & WebhookPayload;
26
- type ActionMetadata = {
27
- setCost: (cost: number) => void;
28
- };
29
- type ActionPayload<T extends string, I> = {
30
- type: T;
31
- input: I;
32
- metadata: ActionMetadata;
33
- };
34
- type ActionArgs<TIntegration extends BaseIntegration, T extends string, I> = CommonArgs<TIntegration> & ActionPayload<T, I>;
35
- type CreateUserPayload<TIntegration extends BaseIntegration> = {
36
- tags: ToTags<keyof TIntegration['user']['tags']>;
37
- };
38
- type CreateUserArgs<TIntegration extends BaseIntegration> = CommonArgs<TIntegration> & CreateUserPayload<TIntegration>;
39
- type CreateConversationPayload<TIntegration extends BaseIntegration, TChannel extends keyof TIntegration['channels'] = keyof TIntegration['channels']> = {
40
- channel: TChannel;
41
- tags: ToTags<keyof TIntegration['channels'][TChannel]['conversation']['tags']>;
42
- };
43
- type CreateConversationArgs<TIntegration extends BaseIntegration> = CommonArgs<TIntegration> & CreateConversationPayload<TIntegration>;
44
- type MessagePayload<TIntegration extends BaseIntegration, TChannel extends keyof TIntegration['channels'], TMessage extends keyof TIntegration['channels'][TChannel]['messages']> = {
45
- type: TMessage;
46
- payload: TIntegration['channels'][TChannel]['messages'][TMessage];
47
- conversation: Merge<Conversation, {
48
- channel: TChannel;
49
- tags: ToTags<keyof TIntegration['channels'][TChannel]['conversation']['tags']>;
50
- }>;
51
- message: Merge<Message, {
52
- tags: ToTags<keyof TIntegration['channels'][TChannel]['message']['tags']>;
53
- }>;
54
- user: Merge<User, {
55
- tags: ToTags<keyof TIntegration['user']['tags']>;
56
- }>;
57
- };
58
- type MessageArgs<TIntegration extends BaseIntegration, TChannel extends keyof TIntegration['channels'], TMessage extends keyof TIntegration['channels'][TChannel]['messages']> = CommonArgs<TIntegration> & MessagePayload<TIntegration, TChannel, TMessage> & {
59
- ack: (props: {
60
- tags: ToTags<keyof TIntegration['channels'][TChannel]['message']['tags']>;
61
- }) => Promise<void>;
62
- };
63
- export type RegisterFunction<TIntegration extends BaseIntegration> = (props: RegisterArgs<TIntegration>) => Promise<void>;
64
- export type UnregisterFunction<TIntegration extends BaseIntegration> = (props: UnregisterArgs<TIntegration>) => Promise<void>;
65
- export type WebhookFunction<TIntegration extends BaseIntegration> = (props: WebhookArgs<TIntegration>) => Promise<Response | void>;
66
- export type ActionFunctions<TIntegration extends BaseIntegration> = {
67
- [ActionType in keyof TIntegration['actions']]: (props: ActionArgs<TIntegration, Cast<ActionType, string>, TIntegration['actions'][ActionType]['input']>) => Promise<TIntegration['actions'][ActionType]['output']>;
68
- };
69
- export type CreateUserFunction<TIntegration extends BaseIntegration> = (props: CreateUserArgs<TIntegration>) => Promise<Response | void>;
70
- export type CreateConversationFunction<TIntegration extends BaseIntegration> = (props: CreateConversationArgs<TIntegration>) => Promise<Response | void>;
71
- export type ChannelFunctions<TIntegration extends BaseIntegration> = {
72
- [ChannelName in keyof TIntegration['channels']]: {
73
- messages: {
74
- [MessageType in keyof TIntegration['channels'][ChannelName]['messages']]: (props: CommonArgs<TIntegration> & MessageArgs<TIntegration, ChannelName, MessageType>) => Promise<void>;
75
- };
76
- };
77
- };
78
- export type IntegrationHandlers<TIntegration extends BaseIntegration> = {
79
- register: RegisterFunction<TIntegration>;
80
- unregister: UnregisterFunction<TIntegration>;
81
- webhook: WebhookFunction<TIntegration>;
82
- createUser?: CreateUserFunction<TIntegration>;
83
- createConversation?: CreateConversationFunction<TIntegration>;
84
- actions: ActionFunctions<TIntegration>;
85
- channels: ChannelFunctions<TIntegration>;
86
- };
87
- export declare const integrationHandler: <TIntegration extends BaseIntegration>(instance: IntegrationHandlers<TIntegration>) => (req: Request) => Promise<Response | void>;
88
- export {};