@holocronlab/botruntime-sdk 6.13.3

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 (126) hide show
  1. package/LICENSE +8 -0
  2. package/dist/base-logger.d.ts +34 -0
  3. package/dist/base-logger.test.d.ts +1 -0
  4. package/dist/bot/bot-logger.d.ts +18 -0
  5. package/dist/bot/client/index.d.ts +80 -0
  6. package/dist/bot/client/types.d.ts +254 -0
  7. package/dist/bot/client/types.test.d.ts +1 -0
  8. package/dist/bot/common/generic.d.ts +41 -0
  9. package/dist/bot/common/generic.test.d.ts +1 -0
  10. package/dist/bot/common/index.d.ts +2 -0
  11. package/dist/bot/common/types.d.ts +54 -0
  12. package/dist/bot/common/types.test.d.ts +1 -0
  13. package/dist/bot/definition.d.ts +214 -0
  14. package/dist/bot/definition.test.d.ts +1 -0
  15. package/dist/bot/implementation.d.ts +72 -0
  16. package/dist/bot/implementation.test.d.ts +1 -0
  17. package/dist/bot/index.d.ts +6 -0
  18. package/dist/bot/server/context.d.ts +2 -0
  19. package/dist/bot/server/index.d.ts +5 -0
  20. package/dist/bot/server/responses.d.ts +3 -0
  21. package/dist/bot/server/types.d.ts +423 -0
  22. package/dist/bot/server/types.test.d.ts +1 -0
  23. package/dist/bot/server/workflows/update-handler.d.ts +3 -0
  24. package/dist/bot/server/workflows/update-type-conv.d.ts +2 -0
  25. package/dist/bot/workflow-proxy/index.d.ts +2 -0
  26. package/dist/bot/workflow-proxy/proxy.d.ts +17 -0
  27. package/dist/bot/workflow-proxy/types.d.ts +80 -0
  28. package/dist/bot/workflow-proxy/types.test.d.ts +1 -0
  29. package/dist/common/index.d.ts +1 -0
  30. package/dist/common/recurring-events.d.ts +9 -0
  31. package/dist/common/recurring-events.test.d.ts +1 -0
  32. package/dist/common/types.d.ts +8 -0
  33. package/dist/consts.d.ts +11 -0
  34. package/dist/errors.d.ts +19 -0
  35. package/dist/fixtures.d.ts +357 -0
  36. package/dist/index.cjs +5 -0
  37. package/dist/index.cjs.map +7 -0
  38. package/dist/index.d.ts +17 -0
  39. package/dist/index.mjs +34 -0
  40. package/dist/index.mjs.map +7 -0
  41. package/dist/integration/client/index.d.ts +55 -0
  42. package/dist/integration/client/sub-types.d.ts +27 -0
  43. package/dist/integration/client/sub-types.test.d.ts +1 -0
  44. package/dist/integration/client/types.d.ts +209 -0
  45. package/dist/integration/client/types.test.d.ts +1 -0
  46. package/dist/integration/common/generic.d.ts +57 -0
  47. package/dist/integration/common/generic.test.d.ts +1 -0
  48. package/dist/integration/common/index.d.ts +1 -0
  49. package/dist/integration/definition/branded-schema.d.ts +21 -0
  50. package/dist/integration/definition/definition.test.d.ts +1 -0
  51. package/dist/integration/definition/generic.d.ts +9 -0
  52. package/dist/integration/definition/index.d.ts +130 -0
  53. package/dist/integration/definition/types.d.ts +119 -0
  54. package/dist/integration/implementation.d.ts +37 -0
  55. package/dist/integration/index.d.ts +5 -0
  56. package/dist/integration/server/action-metadata.d.ts +9 -0
  57. package/dist/integration/server/context.d.ts +4 -0
  58. package/dist/integration/server/index.d.ts +6 -0
  59. package/dist/integration/server/integration-logger.d.ts +36 -0
  60. package/dist/integration/server/types.d.ts +108 -0
  61. package/dist/interface/common/generic.d.ts +34 -0
  62. package/dist/interface/common/generic.test.d.ts +1 -0
  63. package/dist/interface/common/index.d.ts +1 -0
  64. package/dist/interface/definition.d.ts +87 -0
  65. package/dist/interface/index.d.ts +2 -0
  66. package/dist/interface/resolve.d.ts +18 -0
  67. package/dist/log.d.ts +7 -0
  68. package/dist/message.d.ts +742 -0
  69. package/dist/package.d.ts +64 -0
  70. package/dist/plugin/action-proxy/index.d.ts +2 -0
  71. package/dist/plugin/action-proxy/proxy.d.ts +5 -0
  72. package/dist/plugin/action-proxy/types.d.ts +14 -0
  73. package/dist/plugin/action-proxy/types.test.d.ts +1 -0
  74. package/dist/plugin/common/generic.d.ts +63 -0
  75. package/dist/plugin/common/generic.test.d.ts +1 -0
  76. package/dist/plugin/common/index.d.ts +2 -0
  77. package/dist/plugin/common/types.d.ts +59 -0
  78. package/dist/plugin/conversation-proxy/index.d.ts +2 -0
  79. package/dist/plugin/conversation-proxy/proxy.d.ts +13 -0
  80. package/dist/plugin/conversation-proxy/types.d.ts +54 -0
  81. package/dist/plugin/conversation-proxy/types.test.d.ts +1 -0
  82. package/dist/plugin/definition.d.ts +152 -0
  83. package/dist/plugin/definition.test.d.ts +1 -0
  84. package/dist/plugin/event-proxy/index.d.ts +2 -0
  85. package/dist/plugin/event-proxy/proxy.d.ts +5 -0
  86. package/dist/plugin/event-proxy/types.d.ts +19 -0
  87. package/dist/plugin/event-proxy/types.test.d.ts +1 -0
  88. package/dist/plugin/implementation.d.ts +71 -0
  89. package/dist/plugin/implementation.test.d.ts +1 -0
  90. package/dist/plugin/index.d.ts +4 -0
  91. package/dist/plugin/message-proxy/index.d.ts +2 -0
  92. package/dist/plugin/message-proxy/proxy.d.ts +13 -0
  93. package/dist/plugin/message-proxy/types.d.ts +22 -0
  94. package/dist/plugin/server/index.d.ts +1 -0
  95. package/dist/plugin/server/types.d.ts +505 -0
  96. package/dist/plugin/server/types.test.d.ts +1 -0
  97. package/dist/plugin/state-proxy/index.d.ts +2 -0
  98. package/dist/plugin/state-proxy/proxy.d.ts +5 -0
  99. package/dist/plugin/state-proxy/types.d.ts +29 -0
  100. package/dist/plugin/state-proxy/types.test.d.ts +1 -0
  101. package/dist/plugin/tag-prefixer.d.ts +10 -0
  102. package/dist/plugin/tag-prefixer.test.d.ts +1 -0
  103. package/dist/plugin/user-proxy/index.d.ts +2 -0
  104. package/dist/plugin/user-proxy/proxy.d.ts +14 -0
  105. package/dist/plugin/user-proxy/types.d.ts +30 -0
  106. package/dist/public-consts.d.ts +9 -0
  107. package/dist/retry.d.ts +2 -0
  108. package/dist/retry.test.d.ts +1 -0
  109. package/dist/schema.d.ts +18 -0
  110. package/dist/serve.d.ts +38 -0
  111. package/dist/utils/api-paging-utils.d.ts +43 -0
  112. package/dist/utils/api-paging-utils.test.d.ts +1 -0
  113. package/dist/utils/array-utils.d.ts +2 -0
  114. package/dist/utils/error-utils.d.ts +4 -0
  115. package/dist/utils/function-utils.d.ts +2 -0
  116. package/dist/utils/function-utils.test.d.ts +1 -0
  117. package/dist/utils/index.d.ts +4 -0
  118. package/dist/utils/record-utils.d.ts +6 -0
  119. package/dist/utils/record-utils.test.d.ts +1 -0
  120. package/dist/utils/type-utils.d.ts +63 -0
  121. package/dist/utils/type-utils.test.d.ts +1 -0
  122. package/dist/version-utils.d.ts +18 -0
  123. package/dist/version.d.ts +1 -0
  124. package/dist/zui.d.ts +9 -0
  125. package/package.json +59 -0
  126. package/readme.md +11 -0
@@ -0,0 +1,55 @@
1
+ import * as client from '@holocronlab/botruntime-client';
2
+ import * as common from '../common';
3
+ import * as types from './types';
4
+ export * from './types';
5
+ /**
6
+ * Just like the regular botpress client, but typed with the integration's properties.
7
+ */
8
+ export declare class IntegrationSpecificClient<TIntegration extends common.BaseIntegration> implements types.ClientOperations<TIntegration> {
9
+ private readonly _client;
10
+ constructor(_client: client.Client);
11
+ /**
12
+ * Access the underlying Botpress client.
13
+ * This is useful for operations that are not available in the IntegrationSpecificClient.
14
+ * You probably shouldn't use this directly if you don't know what you're doing.
15
+ */
16
+ get _inner(): client.Client;
17
+ createConversation: types.CreateConversation<TIntegration>;
18
+ getConversation: types.GetConversation<TIntegration>;
19
+ listConversations: types.ListConversations<TIntegration>;
20
+ getOrCreateConversation: types.GetOrCreateConversation<TIntegration>;
21
+ updateConversation: types.UpdateConversation<TIntegration>;
22
+ deleteConversation: types.DeleteConversation<TIntegration>;
23
+ listParticipants: types.ListParticipants<TIntegration>;
24
+ addParticipant: types.AddParticipant<TIntegration>;
25
+ getParticipant: types.GetParticipant<TIntegration>;
26
+ removeParticipant: types.RemoveParticipant<TIntegration>;
27
+ createEvent: types.CreateEvent<TIntegration>;
28
+ getEvent: types.GetEvent<TIntegration>;
29
+ listEvents: types.ListEvents<TIntegration>;
30
+ createMessage: types.CreateMessage<TIntegration>;
31
+ getOrCreateMessage: types.GetOrCreateMessage<TIntegration>;
32
+ getMessage: types.GetMessage<TIntegration>;
33
+ updateMessage: types.UpdateMessage<TIntegration>;
34
+ listMessages: types.ListMessages<TIntegration>;
35
+ deleteMessage: types.DeleteMessage<TIntegration>;
36
+ initializeIncomingMessage: types.InitializeIncomingMessage<TIntegration>;
37
+ createUser: types.CreateUser<TIntegration>;
38
+ getUser: types.GetUser<TIntegration>;
39
+ listUsers: types.ListUsers<TIntegration>;
40
+ getOrCreateUser: types.GetOrCreateUser<TIntegration>;
41
+ updateUser: types.UpdateUser<TIntegration>;
42
+ deleteUser: types.DeleteUser<TIntegration>;
43
+ getState: types.GetState<TIntegration>;
44
+ setState: types.SetState<TIntegration>;
45
+ getOrSetState: types.GetOrSetState<TIntegration>;
46
+ patchState: types.PatchState<TIntegration>;
47
+ configureIntegration: types.ConfigureIntegration<TIntegration>;
48
+ uploadFile: types.UploadFile<TIntegration>;
49
+ upsertFile: types.UpsertFile<TIntegration>;
50
+ deleteFile: types.DeleteFile<TIntegration>;
51
+ listFiles: types.ListFiles<TIntegration>;
52
+ getFile: types.GetFile<TIntegration>;
53
+ updateFileMetadata: types.UpdateFileMetadata<TIntegration>;
54
+ trackAnalytics: types.TrackAnalytics<TIntegration>;
55
+ }
@@ -0,0 +1,27 @@
1
+ import * as utils from '../../utils/type-utils';
2
+ import * as common from '../common';
3
+ export type EnumerateMessages<TIntegration extends common.BaseIntegration> = utils.UnionToIntersection<utils.ValueOf<{
4
+ [TChannelName in keyof TIntegration['channels']]: {
5
+ [TMessageName in keyof TIntegration['channels'][TChannelName]['messages']]: {
6
+ type: TMessageName;
7
+ tags: {
8
+ [Tag in keyof TIntegration['channels'][TChannelName]['message']['tags']]?: string;
9
+ };
10
+ payload: TIntegration['channels'][TChannelName]['messages'][TMessageName];
11
+ };
12
+ };
13
+ }>>;
14
+ export type GetChannelByName<TIntegration extends common.BaseIntegration, TChannelName extends keyof TIntegration['channels']> = utils.Cast<TIntegration['channels'][TChannelName], common.BaseChannel>;
15
+ export type GetMessageByName<TIntegration extends common.BaseIntegration, TMessageName extends keyof EnumerateMessages<TIntegration>> = utils.Cast<EnumerateMessages<TIntegration>[TMessageName], {
16
+ type: string;
17
+ tags: Record<string, any>;
18
+ payload: any;
19
+ }>;
20
+ export type ConversationTags<TIntegration extends common.BaseIntegration> = keyof utils.UnionToIntersection<utils.ValueOf<{
21
+ [TChannelName in keyof TIntegration['channels']]: TIntegration['channels'][TChannelName]['conversation']['tags'];
22
+ }>>;
23
+ export type MessageTags<TIntegration extends common.BaseIntegration> = keyof utils.UnionToIntersection<utils.ValueOf<{
24
+ [TChannelName in keyof TIntegration['channels']]: TIntegration['channels'][TChannelName]['message']['tags'];
25
+ }>>;
26
+ export type UserTags<TIntegration extends common.BaseIntegration> = keyof TIntegration['user']['tags'];
27
+ export type TagsOfMessage<TIntegration extends common.BaseIntegration, TMessageName extends keyof EnumerateMessages<TIntegration>> = keyof utils.UnionToIntersection<GetMessageByName<TIntegration, TMessageName>['tags']>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,209 @@
1
+ import * as client from '@holocronlab/botruntime-client';
2
+ import type { commonTypes } from '../../common';
3
+ import * as utils from '../../utils/type-utils';
4
+ import * as common from '../common';
5
+ import { EnumerateMessages, ConversationTags, GetChannelByName, GetMessageByName, MessageTags, UserTags } from './sub-types';
6
+ type Arg<F extends (...args: any[]) => any> = Parameters<F>[number];
7
+ type Res<F extends (...args: any[]) => any> = ReturnType<F>;
8
+ type ConversationResponse<TIntegration extends common.BaseIntegration, ChannelName extends keyof TIntegration['channels'] = keyof TIntegration['channels']> = utils.ValueOf<{
9
+ [TChannelName in ChannelName]: {
10
+ conversation: utils.Merge<Awaited<Res<client.Client['getConversation']>>['conversation'], {
11
+ channel: TChannelName;
12
+ tags: commonTypes.ToTags<keyof TIntegration['channels'][TChannelName]['conversation']['tags']>;
13
+ }>;
14
+ };
15
+ }>;
16
+ type GetOrCreateConversationResponse<TIntegration extends common.BaseIntegration, ChannelName extends keyof TIntegration['channels'] = keyof TIntegration['channels']> = utils.ValueOf<{
17
+ [TChannelName in ChannelName]: utils.Merge<Awaited<Res<client.Client['getOrCreateConversation']>>, {
18
+ conversation: utils.Merge<Awaited<Res<client.Client['getOrCreateConversation']>>['conversation'], {
19
+ channel: TChannelName;
20
+ tags: commonTypes.ToTags<keyof TIntegration['channels'][TChannelName]['conversation']['tags']>;
21
+ }>;
22
+ }>;
23
+ }>;
24
+ export type CreateConversation<TIntegration extends common.BaseIntegration> = <ChannelName extends keyof TIntegration['channels']>(x: {
25
+ channel: utils.Cast<ChannelName, string>;
26
+ tags: commonTypes.ToTags<keyof GetChannelByName<TIntegration, ChannelName>['conversation']['tags']>;
27
+ }) => Promise<ConversationResponse<TIntegration, ChannelName>>;
28
+ export type GetConversation<TIntegration extends common.BaseIntegration> = (x: Arg<client.Client['getConversation']>) => Promise<ConversationResponse<TIntegration>>;
29
+ export type ListConversations<TIntegration extends common.BaseIntegration> = <ChannelName extends keyof TIntegration['channels']>(x: utils.Merge<Arg<client.Client['listConversations']>, {
30
+ channel?: utils.Cast<ChannelName, string>;
31
+ tags?: commonTypes.ToTags<keyof GetChannelByName<TIntegration, ChannelName>['conversation']['tags']>;
32
+ }>) => Res<client.Client['listConversations']>;
33
+ export type GetOrCreateConversation<TIntegration extends common.BaseIntegration> = <ChannelName extends keyof TIntegration['channels'], TTags extends keyof GetChannelByName<TIntegration, ChannelName>['conversation']['tags']>(x: utils.Merge<Arg<client.Client['getOrCreateConversation']>, {
34
+ channel: utils.Cast<ChannelName, string>;
35
+ tags: commonTypes.ToNullableTags<TTags>;
36
+ discriminateByTags?: NoInfer<utils.Cast<TTags[], string[]>>;
37
+ }>) => Promise<GetOrCreateConversationResponse<TIntegration, ChannelName>>;
38
+ export type UpdateConversation<TIntegration extends common.BaseIntegration> = (x: utils.Merge<Arg<client.Client['updateConversation']>, {
39
+ tags?: commonTypes.ToNullableTags<ConversationTags<TIntegration>>;
40
+ }>) => Promise<ConversationResponse<TIntegration>>;
41
+ export type DeleteConversation<_TIntegration extends common.BaseIntegration> = client.Client['deleteConversation'];
42
+ export type ListParticipants<_TIntegration extends common.BaseIntegration> = client.Client['listParticipants'];
43
+ export type AddParticipant<_TIntegration extends common.BaseIntegration> = client.Client['addParticipant'];
44
+ export type GetParticipant<_TIntegration extends common.BaseIntegration> = client.Client['getParticipant'];
45
+ export type RemoveParticipant<_TIntegration extends common.BaseIntegration> = client.Client['removeParticipant'];
46
+ type EventResponse<TIntegration extends common.BaseIntegration, TEvent extends keyof TIntegration['events']> = {
47
+ event: utils.Merge<Awaited<Res<client.Client['getEvent']>>['event'], {
48
+ type: utils.Cast<TEvent, string>;
49
+ payload: TIntegration['events'][TEvent];
50
+ }>;
51
+ };
52
+ export type CreateEvent<TIntegration extends common.BaseIntegration> = <TEvent extends keyof TIntegration['events']>(x: utils.Merge<Arg<client.Client['createEvent']>, {
53
+ type: utils.Cast<TEvent, string>;
54
+ payload: TIntegration['events'][TEvent];
55
+ }>) => Promise<EventResponse<TIntegration, TEvent>>;
56
+ export type GetEvent<TIntegration extends common.BaseIntegration> = (x: Arg<client.Client['getEvent']>) => Promise<utils.ValueOf<{
57
+ [K in keyof TIntegration['events']]: EventResponse<TIntegration, K>;
58
+ }>>;
59
+ export type ListEvents<TIntegration extends common.BaseIntegration> = (x: utils.Merge<Arg<client.Client['listEvents']>, {
60
+ type?: utils.Cast<keyof TIntegration['events'], string>;
61
+ }>) => Res<client.Client['listEvents']>;
62
+ type MessageResponse<TIntegration extends common.BaseIntegration, TMessage extends keyof EnumerateMessages<TIntegration> = keyof EnumerateMessages<TIntegration>> = {
63
+ message: utils.Merge<Awaited<Res<client.Client['getMessage']>>['message'], utils.Cast<EnumerateMessages<TIntegration>[TMessage], object>>;
64
+ };
65
+ export type CreateMessage<TIntegration extends common.BaseIntegration> = <TMessage extends keyof EnumerateMessages<TIntegration>>(x: utils.Merge<Arg<client.Client['createMessage']>, {
66
+ type: utils.Cast<TMessage, string>;
67
+ payload: GetMessageByName<TIntegration, TMessage>['payload'];
68
+ tags: commonTypes.ToTags<keyof GetMessageByName<TIntegration, TMessage>['tags']>;
69
+ }>) => Promise<MessageResponse<TIntegration, TMessage>>;
70
+ type GetOrCreateMessageResponse<TIntegration extends common.BaseIntegration, TMessage extends keyof EnumerateMessages<TIntegration> = keyof EnumerateMessages<TIntegration>> = utils.Merge<Awaited<Res<client.Client['getOrCreateMessage']>>, {
71
+ message: utils.Merge<Awaited<Res<client.Client['getOrCreateMessage']>>['message'], utils.Cast<EnumerateMessages<TIntegration>[TMessage], object>>;
72
+ }>;
73
+ export type GetOrCreateMessage<TIntegration extends common.BaseIntegration> = <TMessage extends keyof EnumerateMessages<TIntegration>, TTags extends keyof GetMessageByName<TIntegration, TMessage>['tags']>(x: utils.Merge<Arg<client.Client['getOrCreateMessage']>, {
74
+ type: utils.Cast<TMessage, string>;
75
+ payload?: GetMessageByName<TIntegration, TMessage>['payload'];
76
+ tags: commonTypes.ToNullableTags<TTags>;
77
+ discriminateByTags?: NoInfer<utils.Cast<TTags[], string[]>>;
78
+ }>) => Promise<GetOrCreateMessageResponse<TIntegration, TMessage>>;
79
+ export type GetMessage<TIntegration extends common.BaseIntegration> = (x: Arg<client.Client['getMessage']>) => Promise<MessageResponse<TIntegration>>;
80
+ export type UpdateMessage<TIntegration extends common.BaseIntegration> = (x: utils.Merge<Arg<client.Client['updateMessage']>, {
81
+ tags?: commonTypes.ToNullableTags<MessageTags<TIntegration>>;
82
+ }>) => Promise<MessageResponse<TIntegration>>;
83
+ export type ListMessages<TIntegration extends common.BaseIntegration> = (x: utils.Merge<Arg<client.Client['listMessages']>, {
84
+ tags?: commonTypes.ToTags<MessageTags<TIntegration>>;
85
+ }>) => Res<client.Client['listMessages']>;
86
+ export type DeleteMessage<_TIntegration extends common.BaseIntegration> = client.Client['deleteMessage'];
87
+ type UserResponse<TIntegration extends common.BaseIntegration> = {
88
+ user: utils.Merge<Awaited<Res<client.Client['getUser']>>['user'], {
89
+ tags: commonTypes.ToTags<UserTags<TIntegration>>;
90
+ }>;
91
+ };
92
+ export type CreateUser<TIntegration extends common.BaseIntegration> = (x: utils.Merge<Arg<client.Client['createUser']>, {
93
+ tags: commonTypes.ToTags<UserTags<TIntegration>>;
94
+ }>) => Promise<UserResponse<TIntegration>>;
95
+ export type GetUser<TIntegration extends common.BaseIntegration> = (x: Arg<client.Client['getUser']>) => Promise<UserResponse<TIntegration>>;
96
+ export type ListUsers<TIntegration extends common.BaseIntegration> = (x: utils.Merge<Arg<client.Client['listUsers']>, {
97
+ tags?: commonTypes.ToTags<UserTags<TIntegration>>;
98
+ }>) => Res<client.Client['listUsers']>;
99
+ type GetOrCreateUserResponse<TIntegration extends common.BaseIntegration> = utils.Merge<Awaited<Res<client.Client['getOrCreateUser']>>, {
100
+ user: utils.Merge<Awaited<Res<client.Client['getOrCreateUser']>>['user'], {
101
+ tags: commonTypes.ToTags<UserTags<TIntegration>>;
102
+ }>;
103
+ }>;
104
+ export type GetOrCreateUser<TIntegration extends common.BaseIntegration> = <TTags extends keyof TIntegration['user']['tags']>(x: utils.Merge<Arg<client.Client['getOrCreateUser']>, {
105
+ tags: commonTypes.ToNullableTags<TTags>;
106
+ discriminateByTags?: NoInfer<utils.Cast<TTags[], string[]>>;
107
+ }>) => Promise<GetOrCreateUserResponse<TIntegration>>;
108
+ export type UpdateUser<TIntegration extends common.BaseIntegration> = (x: utils.Merge<Arg<client.Client['updateUser']>, {
109
+ tags?: commonTypes.ToNullableTags<UserTags<TIntegration>>;
110
+ }>) => Promise<UserResponse<TIntegration>>;
111
+ export type DeleteUser<_TIntegration extends common.BaseIntegration> = client.Client['deleteUser'];
112
+ export type InitializeIncomingMessage<TIntegration extends common.BaseIntegration> = (x: utils.Merge<Arg<client.Client['initializeIncomingMessage']>, {
113
+ user?: utils.Merge<NonNullable<Arg<client.Client['initializeIncomingMessage']>['user']>, {
114
+ tags: commonTypes.ToTags<UserTags<TIntegration>>;
115
+ }>;
116
+ conversation?: utils.Merge<NonNullable<Arg<client.Client['initializeIncomingMessage']>['conversation']>, {
117
+ tags: commonTypes.ToTags<ConversationTags<TIntegration>>;
118
+ }>;
119
+ message?: utils.Merge<NonNullable<Arg<client.Client['initializeIncomingMessage']>['message']>, {
120
+ tags: commonTypes.ToTags<MessageTags<TIntegration>>;
121
+ }>;
122
+ }>) => Promise<{
123
+ user: Awaited<Res<client.Client['getUser']>>['user'];
124
+ conversation: Awaited<Res<client.Client['getConversation']>>['conversation'];
125
+ message?: MessageResponse<TIntegration>;
126
+ }>;
127
+ type StateResponse<TIntegration extends common.BaseIntegration, TState extends keyof TIntegration['states']> = {
128
+ state: utils.Merge<Awaited<Res<client.Client['getState']>>['state'], {
129
+ name: utils.Cast<TState, string>;
130
+ type: utils.Cast<TIntegration['states'][TState]['type'], string>;
131
+ payload: TIntegration['states'][TState]['payload'];
132
+ }>;
133
+ meta: {
134
+ cached: boolean;
135
+ };
136
+ };
137
+ export type GetState<TIntegration extends common.BaseIntegration> = <TState extends keyof TIntegration['states']>(x: utils.Merge<Arg<client.Client['getState']>, {
138
+ type: utils.Cast<TIntegration['states'][TState]['type'], string>;
139
+ name: utils.Cast<TState, string>;
140
+ }>) => Promise<StateResponse<TIntegration, TState>>;
141
+ export type SetState<TIntegration extends common.BaseIntegration> = <TState extends keyof TIntegration['states']>(x: utils.Merge<Arg<client.Client['setState']>, {
142
+ name: utils.Cast<TState, string>;
143
+ type: utils.Cast<TIntegration['states'][TState]['type'], string>;
144
+ payload: TIntegration['states'][TState]['payload'] | null;
145
+ }>) => Promise<StateResponse<TIntegration, TState>>;
146
+ export type GetOrSetState<TIntegration extends common.BaseIntegration> = <TState extends keyof TIntegration['states']>(x: utils.Merge<Arg<client.Client['getOrSetState']>, {
147
+ name: utils.Cast<TState, string>;
148
+ type: utils.Cast<TIntegration['states'][TState]['type'], string>;
149
+ payload: TIntegration['states'][TState]['payload'];
150
+ }>) => Promise<StateResponse<TIntegration, TState>>;
151
+ export type PatchState<TIntegration extends common.BaseIntegration> = <TState extends keyof TIntegration['states']>(x: utils.Merge<Arg<client.Client['patchState']>, {
152
+ name: utils.Cast<TState, string>;
153
+ type: utils.Cast<TIntegration['states'][TState]['type'], string>;
154
+ payload: Partial<TIntegration['states'][TState]['payload']>;
155
+ }>) => Promise<StateResponse<TIntegration, TState>>;
156
+ export type ConfigureIntegration<_TIntegration extends common.BaseIntegration> = client.Client['configureIntegration'];
157
+ export type UploadFile<_TIntegration extends common.BaseIntegration> = client.Client['uploadFile'];
158
+ export type UpsertFile<_TIntegration extends common.BaseIntegration> = client.Client['upsertFile'];
159
+ export type DeleteFile<_TIntegration extends common.BaseIntegration> = client.Client['deleteFile'];
160
+ export type ListFiles<_TIntegration extends common.BaseIntegration> = client.Client['listFiles'];
161
+ export type GetFile<_TIntegration extends common.BaseIntegration> = client.Client['getFile'];
162
+ export type UpdateFileMetadata<_TIntegration extends common.BaseIntegration> = client.Client['updateFileMetadata'];
163
+ export type TrackAnalytics<_TIntegration extends common.BaseIntegration> = client.Client['trackAnalytics'];
164
+ export type ClientOperations<TIntegration extends common.BaseIntegration> = {
165
+ createConversation: CreateConversation<TIntegration>;
166
+ getConversation: GetConversation<TIntegration>;
167
+ listConversations: ListConversations<TIntegration>;
168
+ getOrCreateConversation: GetOrCreateConversation<TIntegration>;
169
+ updateConversation: UpdateConversation<TIntegration>;
170
+ deleteConversation: DeleteConversation<TIntegration>;
171
+ listParticipants: ListParticipants<TIntegration>;
172
+ addParticipant: AddParticipant<TIntegration>;
173
+ getParticipant: GetParticipant<TIntegration>;
174
+ removeParticipant: RemoveParticipant<TIntegration>;
175
+ createEvent: CreateEvent<TIntegration>;
176
+ getEvent: GetEvent<TIntegration>;
177
+ listEvents: ListEvents<TIntegration>;
178
+ createMessage: CreateMessage<TIntegration>;
179
+ getOrCreateMessage: GetOrCreateMessage<TIntegration>;
180
+ getMessage: GetMessage<TIntegration>;
181
+ updateMessage: UpdateMessage<TIntegration>;
182
+ listMessages: ListMessages<TIntegration>;
183
+ deleteMessage: DeleteMessage<TIntegration>;
184
+ createUser: CreateUser<TIntegration>;
185
+ getUser: GetUser<TIntegration>;
186
+ listUsers: ListUsers<TIntegration>;
187
+ getOrCreateUser: GetOrCreateUser<TIntegration>;
188
+ updateUser: UpdateUser<TIntegration>;
189
+ deleteUser: DeleteUser<TIntegration>;
190
+ getState: GetState<TIntegration>;
191
+ setState: SetState<TIntegration>;
192
+ getOrSetState: GetOrSetState<TIntegration>;
193
+ patchState: PatchState<TIntegration>;
194
+ configureIntegration: ConfigureIntegration<TIntegration>;
195
+ uploadFile: UploadFile<TIntegration>;
196
+ upsertFile: UpsertFile<TIntegration>;
197
+ deleteFile: DeleteFile<TIntegration>;
198
+ listFiles: ListFiles<TIntegration>;
199
+ getFile: GetFile<TIntegration>;
200
+ updateFileMetadata: UpdateFileMetadata<TIntegration>;
201
+ trackAnalytics: TrackAnalytics<TIntegration>;
202
+ };
203
+ export type ClientInputs<TIntegration extends common.BaseIntegration> = {
204
+ [K in keyof ClientOperations<TIntegration>]: Arg<ClientOperations<TIntegration>[K]>;
205
+ };
206
+ export type ClientOutputs<TIntegration extends common.BaseIntegration> = {
207
+ [K in keyof ClientOperations<TIntegration>]: Awaited<Res<ClientOperations<TIntegration>[K]>>;
208
+ };
209
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,57 @@
1
+ import * as utils from '../../utils/type-utils';
2
+ import * as def from '../definition';
3
+ export type BaseMessage = {
4
+ tags: Record<string, any>;
5
+ };
6
+ export type BaseConversation = {
7
+ tags: Record<string, any>;
8
+ };
9
+ export type BaseChannel = {
10
+ messages: Record<string, any>;
11
+ message: BaseMessage;
12
+ conversation: BaseConversation;
13
+ };
14
+ export type BaseUser = {
15
+ tags: Record<string, any>;
16
+ };
17
+ export type BaseAction = {
18
+ input: any;
19
+ output: any;
20
+ };
21
+ export type BaseState = {
22
+ type: def.StateType;
23
+ payload: any;
24
+ };
25
+ export type BaseIntegration = {
26
+ name: string;
27
+ version: string;
28
+ configuration: any;
29
+ configurations: Record<string, any>;
30
+ actions: Record<string, BaseAction>;
31
+ channels: Record<string, BaseChannel>;
32
+ events: Record<string, any>;
33
+ states: Record<string, BaseState>;
34
+ user: BaseUser;
35
+ entities: Record<string, any>;
36
+ };
37
+ export type InputBaseChannel = utils.DeepPartial<BaseChannel>;
38
+ export type DefaultChannel<C extends InputBaseChannel> = {
39
+ messages: utils.Default<C['messages'], BaseChannel['messages']>;
40
+ message: utils.Default<C['message'], BaseChannel['message']>;
41
+ conversation: utils.Default<C['conversation'], BaseChannel['conversation']>;
42
+ };
43
+ export type InputBaseIntegration = utils.DeepPartial<BaseIntegration>;
44
+ export type DefaultIntegration<I extends InputBaseIntegration> = {
45
+ name: utils.Default<I['name'], BaseIntegration['name']>;
46
+ version: utils.Default<I['version'], BaseIntegration['version']>;
47
+ configuration: utils.Default<I['configuration'], BaseIntegration['configuration']>;
48
+ configurations: utils.Default<I['configurations'], BaseIntegration['configurations']>;
49
+ actions: utils.Default<I['actions'], BaseIntegration['actions']>;
50
+ events: utils.Default<I['events'], BaseIntegration['events']>;
51
+ states: utils.Default<I['states'], BaseIntegration['states']>;
52
+ user: utils.Default<I['user'], BaseIntegration['user']>;
53
+ entities: utils.Default<I['entities'], BaseIntegration['entities']>;
54
+ channels: undefined extends I['channels'] ? BaseIntegration['channels'] : {
55
+ [K in keyof I['channels']]: DefaultChannel<utils.Cast<I['channels'][K], InputBaseChannel>>;
56
+ };
57
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export * from './generic';
@@ -0,0 +1,21 @@
1
+ import { z } from '../../zui';
2
+ declare const schemaName: unique symbol;
3
+ type BaseSchemas = Record<string, z.ZodSchema>;
4
+ export type SchemaStoreProps<TSchemas extends BaseSchemas = BaseSchemas> = {
5
+ [K in keyof TSchemas]: {
6
+ schema: TSchemas[K];
7
+ };
8
+ };
9
+ export type BrandedSchema<TSchema extends BaseSchemas[string] = BaseSchemas[string]> = {
10
+ schema: TSchema;
11
+ [schemaName]: string;
12
+ };
13
+ export type SchemaStore<TSchemas extends BaseSchemas = BaseSchemas> = {
14
+ [K in keyof TSchemas]: BrandedSchema<TSchemas[K]>;
15
+ };
16
+ export declare const createStore: <TSchemas extends BaseSchemas>(props: SchemaStoreProps<TSchemas> | undefined) => SchemaStore<TSchemas>;
17
+ export declare const isBranded: (schema: BrandedSchema | {
18
+ schema: z.ZodSchema;
19
+ }) => schema is BrandedSchema;
20
+ export declare const getName: (schema: BrandedSchema) => string;
21
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import { z } from '../../zui';
2
+ export type BaseConfig = z.ZuiObjectSchema;
3
+ export type BaseConfigs = Record<string, BaseConfig>;
4
+ export type BaseEvents = Record<string, z.ZuiObjectSchema>;
5
+ export type BaseActions = Record<string, z.ZuiObjectSchema>;
6
+ export type BaseMessages = Record<string, z.ZuiObjectSchema>;
7
+ export type BaseChannels = Record<string, BaseMessages>;
8
+ export type BaseStates = Record<string, z.ZuiObjectSchema>;
9
+ export type BaseEntities = Record<string, z.ZuiObjectSchema>;
@@ -0,0 +1,130 @@
1
+ import type * as esbuild from 'esbuild';
2
+ import { SchemaTransformOptions } from '../../common/types';
3
+ import { InterfacePackage } from '../../package';
4
+ import * as utils from '../../utils';
5
+ import { z } from '../../zui';
6
+ import { SchemaStore, BrandedSchema } from './branded-schema';
7
+ import { BaseConfig, BaseEvents, BaseActions, BaseChannels, BaseStates, BaseEntities, BaseConfigs } from './generic';
8
+ import { ConfigurationDefinition, EventDefinition, ChannelDefinition, ActionDefinition, StateDefinition, UserDefinition, SecretDefinition, EntityDefinition, AdditionalConfigurationDefinition, InterfaceExtension, IntegrationNetworkDefinition } from './types';
9
+ export * from './types';
10
+ export type IntegrationDefinitionProps<TName extends string = string, TVersion extends string = string, TConfig extends BaseConfig = BaseConfig, TConfigs extends BaseConfigs = BaseConfigs, TEvents extends BaseEvents = BaseEvents, TActions extends BaseActions = BaseActions, TChannels extends BaseChannels = BaseChannels, TStates extends BaseStates = BaseStates, TEntities extends BaseEntities = BaseEntities> = {
11
+ name: TName;
12
+ version: TVersion;
13
+ title?: string;
14
+ description?: string;
15
+ icon?: string;
16
+ readme?: string;
17
+ attributes?: Record<string, string>;
18
+ network?: IntegrationNetworkDefinition;
19
+ identifier?: {
20
+ extractScript?: string;
21
+ fallbackHandlerScript?: string;
22
+ };
23
+ configuration?: ConfigurationDefinition<TConfig>;
24
+ configurations?: {
25
+ [K in keyof TConfigs]: AdditionalConfigurationDefinition<TConfigs[K]>;
26
+ };
27
+ events?: {
28
+ [K in keyof TEvents]: EventDefinition<TEvents[K]>;
29
+ };
30
+ actions?: {
31
+ [K in keyof TActions]: ActionDefinition<TActions[K]>;
32
+ };
33
+ channels?: {
34
+ [K in keyof TChannels]: ChannelDefinition<TChannels[K]>;
35
+ };
36
+ states?: {
37
+ [K in keyof TStates]: StateDefinition<TStates[K]>;
38
+ };
39
+ user?: UserDefinition;
40
+ secrets?: Record<string, SecretDefinition>;
41
+ entities?: {
42
+ [K in keyof TEntities]: EntityDefinition<TEntities[K]>;
43
+ };
44
+ interfaces?: Record<string, InterfaceExtension>;
45
+ __advanced?: SchemaTransformOptions & {
46
+ esbuild?: Partial<esbuild.BuildOptions>;
47
+ extraOperations?: Record<string, {
48
+ enabled: boolean;
49
+ }>;
50
+ };
51
+ };
52
+ type EntitiesOfPackage<TPackage extends InterfacePackage> = {
53
+ [K in keyof TPackage['definition']['entities']]: NonNullable<TPackage['definition']['entities']>[K]['schema'];
54
+ };
55
+ type ActionsOfPackage<TPackage extends InterfacePackage> = {
56
+ [K in keyof TPackage['definition']['actions']]: NonNullable<TPackage['definition']['actions']>[K]['input']['schema'];
57
+ };
58
+ type EventsOfPackage<TPackage extends InterfacePackage> = {
59
+ [K in keyof TPackage['definition']['events']]: NonNullable<TPackage['definition']['events']>[K]['schema'];
60
+ };
61
+ type ChannelsOfPackage<TPackage extends InterfacePackage> = {
62
+ [K in keyof TPackage['definition']['channels']]: {
63
+ [M in keyof NonNullable<TPackage['definition']['channels']>[K]['messages']]: NonNullable<NonNullable<TPackage['definition']['channels']>[K]['messages']>[M]['schema'];
64
+ };
65
+ };
66
+ export type ActionOverrideProps = utils.types.AtLeastOneProperty<Pick<Required<ActionDefinition>, 'title' | 'description' | 'billable' | 'cacheable' | 'attributes'> & {
67
+ name: string;
68
+ }>;
69
+ export type EventOverrideProps = utils.types.AtLeastOneProperty<Pick<Required<EventDefinition>, 'title' | 'description' | 'attributes'> & {
70
+ name: string;
71
+ }>;
72
+ export type ChannelOverrideProps = utils.types.AtLeastOneProperty<Pick<Required<ChannelDefinition>, 'title' | 'description'> & {
73
+ name: string;
74
+ message: {
75
+ tags: Required<Required<ChannelDefinition>['message']>['tags'];
76
+ };
77
+ conversation: {
78
+ tags: Required<Required<ChannelDefinition>['conversation']>['tags'];
79
+ };
80
+ }>;
81
+ type ActionOverrides<TInterfaceActionNames extends string = string> = utils.types.AtLeastOneProperty<Record<TInterfaceActionNames, ActionOverrideProps>>;
82
+ type EventOverrides<TInterfaceEventNames extends string = string> = utils.types.AtLeastOneProperty<Record<TInterfaceEventNames, EventOverrideProps>>;
83
+ type ChannelOverrides<TInterfaceChannelNames extends string = string> = utils.types.AtLeastOneProperty<Record<TInterfaceChannelNames, ChannelOverrideProps>>;
84
+ type ExtensionBuilderInput<TIntegrationEntities extends BaseEntities, _TIntegrationActions extends BaseActions, _TIntegrationEvents extends BaseEvents, _TIntegrationChannels extends BaseChannels> = {
85
+ entities: SchemaStore<TIntegrationEntities>;
86
+ };
87
+ type ExtensionBuilderOutput<TInterfaceEntities extends BaseEntities, TInterfaceActions extends BaseActions, TInterfaceEvents extends BaseEvents, TInterfaceChannels extends BaseChannels> = {
88
+ entities: {
89
+ [K in keyof TInterfaceEntities]: BrandedSchema<z.ZodSchema<z.infer<TInterfaceEntities[K]>>>;
90
+ };
91
+ actions?: ActionOverrides<Extract<keyof TInterfaceActions, string>>;
92
+ events?: EventOverrides<Extract<keyof TInterfaceEvents, string>>;
93
+ channels?: ChannelOverrides<Extract<keyof TInterfaceChannels, string>>;
94
+ };
95
+ type ExtensionBuilder<TIntegrationEntities extends BaseEntities, TIntegrationActions extends BaseActions, TIntegrationEvents extends BaseEvents, TIntegrationChannels extends BaseChannels, TInterfaceEntities extends BaseEntities, TInterfaceActions extends BaseActions, TInterfaceEvents extends BaseEvents, TInterfaceChannels extends BaseChannels> = (input: ExtensionBuilderInput<TIntegrationEntities, TIntegrationActions, TIntegrationEvents, TIntegrationChannels>) => ExtensionBuilderOutput<TInterfaceEntities, TInterfaceActions, TInterfaceEvents, TInterfaceChannels>;
96
+ export declare class IntegrationDefinition<TName extends string = string, TVersion extends string = string, TConfig extends BaseConfig = BaseConfig, TConfigs extends BaseConfigs = BaseConfigs, TEvents extends BaseEvents = BaseEvents, TActions extends BaseActions = BaseActions, TChannels extends BaseChannels = BaseChannels, TStates extends BaseStates = BaseStates, TEntities extends BaseEntities = BaseEntities> {
97
+ readonly props: IntegrationDefinitionProps<TName, TVersion, TConfig, TConfigs, TEvents, TActions, TChannels, TStates, TEntities>;
98
+ readonly name: this['props']['name'];
99
+ readonly version: this['props']['version'];
100
+ readonly title: this['props']['title'];
101
+ readonly description: this['props']['description'];
102
+ readonly icon: this['props']['icon'];
103
+ readonly readme: this['props']['readme'];
104
+ readonly configuration: this['props']['configuration'];
105
+ readonly configurations: this['props']['configurations'];
106
+ readonly events: this['props']['events'];
107
+ readonly actions: this['props']['actions'];
108
+ readonly channels: this['props']['channels'];
109
+ readonly states: this['props']['states'];
110
+ readonly user: this['props']['user'];
111
+ readonly secrets: this['props']['secrets'];
112
+ readonly identifier: this['props']['identifier'];
113
+ readonly entities: this['props']['entities'];
114
+ readonly interfaces: this['props']['interfaces'];
115
+ readonly __advanced: this['props']['__advanced'];
116
+ readonly attributes: this['props']['attributes'];
117
+ readonly network: this['props']['network'];
118
+ constructor(props: IntegrationDefinitionProps<TName, TVersion, TConfig, TConfigs, TEvents, TActions, TChannels, TStates, TEntities>);
119
+ get metadata(): {
120
+ readonly sdkVersion: string;
121
+ };
122
+ readonly clone?: (overrides?: Partial<IntegrationDefinitionProps>) => IntegrationDefinition;
123
+ extend<P extends InterfacePackage>(interfacePkg: P, builder: ExtensionBuilder<TEntities, TActions, TEvents, TChannels, EntitiesOfPackage<P>, ActionsOfPackage<P>, EventsOfPackage<P>, ChannelsOfPackage<P>>): this;
124
+ private _callBuilder;
125
+ private _mergeActions;
126
+ private _mergeEvents;
127
+ private _mergeChannels;
128
+ private _mergeMessage;
129
+ private _mergeObjectSchemas;
130
+ }