@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,119 @@
1
+ import { SchemaDefinition } from '../../schema';
2
+ import { z } from '../../zui';
3
+ import { BaseConfig, BaseEvents, BaseActions, BaseMessages, BaseChannels, BaseStates, BaseEntities, BaseConfigs } from './generic';
4
+ export type TagDefinition = {
5
+ title?: string;
6
+ description?: string;
7
+ };
8
+ export type ConfigurationDefinition<TConfig extends BaseConfig = BaseConfig> = SchemaDefinition<TConfig> & {
9
+ identifier?: {
10
+ required?: boolean;
11
+ linkTemplateScript?: string;
12
+ };
13
+ };
14
+ export type AdditionalConfigurationDefinition<TConfig extends BaseConfigs[string] = BaseConfigs[string]> = ConfigurationDefinition<TConfig> & {
15
+ title?: string;
16
+ description?: string;
17
+ };
18
+ export type EventDefinition<TEvent extends BaseEvents[string] = BaseEvents[string]> = SchemaDefinition<TEvent> & {
19
+ title?: string;
20
+ description?: string;
21
+ attributes?: Record<string, string>;
22
+ };
23
+ export type MessageDefinition<TMessage extends BaseMessages[string] = BaseMessages[string]> = SchemaDefinition<TMessage>;
24
+ export type ChannelDefinition<TChannel extends BaseChannels[string] = BaseChannels[string]> = {
25
+ title?: string;
26
+ description?: string;
27
+ messages: {
28
+ [K in keyof TChannel]: MessageDefinition<TChannel[K]>;
29
+ };
30
+ message?: {
31
+ tags?: Record<string, TagDefinition>;
32
+ };
33
+ conversation?: Partial<{
34
+ tags: Record<string, TagDefinition>;
35
+ /**
36
+ * @deprecated
37
+ */
38
+ creation: {
39
+ enabled: boolean;
40
+ requiredTags: string[];
41
+ };
42
+ }>;
43
+ };
44
+ export type ActionDefinition<TAction extends BaseActions[string] = BaseActions[string]> = {
45
+ title?: string;
46
+ description?: string;
47
+ input: SchemaDefinition<TAction>;
48
+ output: SchemaDefinition<z.ZuiObjectSchema>;
49
+ billable?: boolean;
50
+ cacheable?: boolean;
51
+ attributes?: Record<string, string>;
52
+ };
53
+ export type StateType = 'integration' | 'conversation' | 'user';
54
+ export type StateDefinition<TState extends BaseStates[string] = BaseStates[string]> = SchemaDefinition<TState> & {
55
+ type: StateType;
56
+ };
57
+ export type UserDefinition = Partial<{
58
+ tags: Record<string, TagDefinition>;
59
+ /**
60
+ * @deprecated
61
+ */
62
+ creation: {
63
+ enabled: boolean;
64
+ requiredTags: string[];
65
+ };
66
+ }>;
67
+ export type SecretDefinition = {
68
+ optional?: boolean;
69
+ description?: string;
70
+ };
71
+ export type IntegrationNetworkDefinition = {
72
+ providerHosts?: string[];
73
+ ingressRelayed?: boolean;
74
+ webhookAuthMode?: 'shared_secret' | 'provider_verified';
75
+ };
76
+ export type EntityDefinition<TEntity extends BaseEntities[string] = BaseEntities[string]> = SchemaDefinition<TEntity> & {
77
+ title?: string;
78
+ description?: string;
79
+ };
80
+ export type ResolvedInterface<TEvents extends BaseEvents = BaseEvents, TActions extends BaseActions = BaseActions, TChannels extends BaseChannels = BaseChannels> = {
81
+ actions: {
82
+ [K in keyof TActions]: ActionDefinition<TActions[K]>;
83
+ };
84
+ events: {
85
+ [K in keyof TEvents]: EventDefinition<TEvents[K]>;
86
+ };
87
+ channels: {
88
+ [K in keyof TChannels]: ChannelDefinition<TChannels[K]>;
89
+ };
90
+ };
91
+ /**
92
+ * A.K.A. Interface Implementation Statetement
93
+ * Used by an integration to explicitly declare that it implements an interface
94
+ */
95
+ export type InterfaceExtension<TEntities extends BaseEntities = BaseEntities, TActions extends BaseActions = BaseActions, TEvents extends BaseEvents = BaseEvents, TChannels extends BaseChannels = BaseChannels> = {
96
+ id?: string;
97
+ name: string;
98
+ version: string;
99
+ entities: {
100
+ [K in keyof TEntities]: {
101
+ name: string;
102
+ };
103
+ };
104
+ actions: {
105
+ [K in keyof TActions]: {
106
+ name: string;
107
+ };
108
+ };
109
+ events: {
110
+ [K in keyof TEvents]: {
111
+ name: string;
112
+ };
113
+ };
114
+ channels: {
115
+ [K in keyof TChannels]: {
116
+ name: string;
117
+ };
118
+ };
119
+ };
@@ -0,0 +1,37 @@
1
+ import type { Server } from 'node:http';
2
+ import { BaseIntegration } from './common';
3
+ import { RegisterHandler as RegisterFunction, UnregisterHandler as UnregisterFunction, WebhookHandler as WebhookFunction, CreateUserHandler as CreateUserFunction, CreateConversationHandler as CreateConversationFunction, ActionHandlers as ActionFunctions, ChannelHandlers as ChannelFunctions, UnknownOperationHandler as UnknownOperationFunction } from './server';
4
+ export type IntegrationImplementationProps<TIntegration extends BaseIntegration = BaseIntegration> = {
5
+ register: RegisterFunction<TIntegration>;
6
+ unregister: UnregisterFunction<TIntegration>;
7
+ handler: WebhookFunction<TIntegration>;
8
+ /**
9
+ * @deprecated
10
+ */
11
+ createUser?: CreateUserFunction<TIntegration>;
12
+ /**
13
+ * @deprecated
14
+ */
15
+ createConversation?: CreateConversationFunction<TIntegration>;
16
+ actions: ActionFunctions<TIntegration>;
17
+ channels: ChannelFunctions<TIntegration>;
18
+ __advanced?: {
19
+ unknownOperationHandler?: UnknownOperationFunction<TIntegration>;
20
+ managesOwnTracePropagation?: boolean;
21
+ };
22
+ };
23
+ export declare class IntegrationImplementation<TIntegration extends BaseIntegration = BaseIntegration> {
24
+ readonly props: IntegrationImplementationProps<TIntegration>;
25
+ readonly actions: IntegrationImplementationProps<TIntegration>['actions'];
26
+ readonly channels: IntegrationImplementationProps<TIntegration>['channels'];
27
+ readonly register: IntegrationImplementationProps<TIntegration>['register'];
28
+ readonly unregister: IntegrationImplementationProps<TIntegration>['unregister'];
29
+ readonly createUser: IntegrationImplementationProps<TIntegration>['createUser'];
30
+ readonly createConversation: IntegrationImplementationProps<TIntegration>['createConversation'];
31
+ readonly webhook: IntegrationImplementationProps<TIntegration>['handler'];
32
+ readonly unknownOperationHandler: NonNullable<IntegrationImplementationProps<TIntegration>['__advanced']>['unknownOperationHandler'];
33
+ readonly managesOwnTracePropagation: NonNullable<IntegrationImplementationProps<TIntegration>['__advanced']>['managesOwnTracePropagation'];
34
+ constructor(props: IntegrationImplementationProps<TIntegration>);
35
+ readonly handler: (req: import("../serve").Request) => Promise<import("../serve").Response | void>;
36
+ readonly start: (port?: number) => Promise<Server>;
37
+ }
@@ -0,0 +1,5 @@
1
+ export * from './definition';
2
+ export * from './implementation';
3
+ export * from './client';
4
+ export * from './server';
5
+ export * from './common';
@@ -0,0 +1,9 @@
1
+ export type ActionMetadata = {
2
+ cost: number;
3
+ };
4
+ export declare class ActionMetadataStore {
5
+ private _cost;
6
+ get cost(): number;
7
+ setCost(cost: number): void;
8
+ toJSON(): ActionMetadata;
9
+ }
@@ -0,0 +1,4 @@
1
+ import { z } from '@holocronlab/botruntime-zui';
2
+ import { IntegrationContext } from './types';
3
+ export declare const integrationOperationSchema: z.ZodEnum<["webhook_received", "message_created", "action_triggered", "register", "unregister", "ping", "create_user", "create_conversation"]>;
4
+ export declare const extractContext: (headers: Record<string, string | undefined>) => IntegrationContext;
@@ -0,0 +1,6 @@
1
+ import { Request, Response } from '../../serve';
2
+ import { BaseIntegration } from '../common';
3
+ import { IntegrationHandlers } from './types';
4
+ export * from './types';
5
+ export * from './integration-logger';
6
+ export declare const integrationHandler: (instance: IntegrationHandlers<BaseIntegration>) => (req: Request) => Promise<Response | void>;
@@ -0,0 +1,36 @@
1
+ import { BaseLogger, type LogLevel } from '../../base-logger';
2
+ type IntegrationLogOptions = {
3
+ botId?: string;
4
+ integrationId?: string;
5
+ integrationAlias?: string;
6
+ userId?: string;
7
+ conversationId?: string;
8
+ traceId?: string;
9
+ visibleToBotOwners?: boolean;
10
+ hiddenToIntegrationOwners?: boolean;
11
+ };
12
+ export declare class IntegrationLogger extends BaseLogger<IntegrationLogOptions> {
13
+ constructor(options?: IntegrationLogOptions);
14
+ with(options: IntegrationLogOptions): IntegrationLogger;
15
+ withUserId(userId: string): IntegrationLogger;
16
+ withConversationId(conversationId: string): IntegrationLogger;
17
+ /**
18
+ * Used send the log to the bot owner
19
+ */
20
+ withVisibleToBotOwners(visibleToBotOwners: boolean): IntegrationLogger;
21
+ /**
22
+ * Used to *hide* the log from the integration owner
23
+ */
24
+ withHiddenToIntegrationOwners(hiddenToIntegrationOwners: boolean): IntegrationLogger;
25
+ /**
26
+ * Used to send the log to the bot owner _**and**_ the integration owner
27
+ */
28
+ forBot(): IntegrationLogger;
29
+ /**
30
+ * Used to send the log _**only**_ to the bot owner and _**not**_ the integration owner
31
+ */
32
+ forBotOnly(): IntegrationLogger;
33
+ protected getJsonMessage(level: LogLevel, msg: string): string;
34
+ protected getIssueContext(): Record<string, string>;
35
+ }
36
+ export {};
@@ -0,0 +1,108 @@
1
+ import { type Conversation, type Message, type User } from '@holocronlab/botruntime-client';
2
+ import type { commonTypes } from '../../common';
3
+ import { Request, Response } from '../../serve';
4
+ import { Cast, Merge, ValueOf } from '../../utils/type-utils';
5
+ import { IntegrationSpecificClient } from '../client';
6
+ import { BaseIntegration } from '../common';
7
+ import { type IntegrationLogger } from './integration-logger';
8
+ type IntegrationContextConfig<TIntegration extends BaseIntegration> = {
9
+ configurationType: null;
10
+ configuration: TIntegration['configuration'];
11
+ } | ValueOf<{
12
+ [TConfigType in keyof TIntegration['configurations']]: {
13
+ configurationType: TConfigType;
14
+ configuration: TIntegration['configurations'][TConfigType];
15
+ };
16
+ }>;
17
+ export type IntegrationContext<TIntegration extends BaseIntegration = BaseIntegration> = {
18
+ botId: string;
19
+ botUserId: string;
20
+ integrationId: string;
21
+ integrationAlias: string;
22
+ webhookId: string;
23
+ operation: string;
24
+ } & IntegrationContextConfig<TIntegration>;
25
+ export type CommonHandlerProps<TIntegration extends BaseIntegration> = {
26
+ ctx: IntegrationContext<TIntegration>;
27
+ client: IntegrationSpecificClient<TIntegration>;
28
+ logger: IntegrationLogger;
29
+ };
30
+ export type RegisterPayload = {
31
+ webhookUrl: string;
32
+ };
33
+ export type RegisterHandlerProps<TIntegration extends BaseIntegration> = CommonHandlerProps<TIntegration> & RegisterPayload;
34
+ export type RegisterHandler<TIntegration extends BaseIntegration> = (props: RegisterHandlerProps<TIntegration>) => Promise<void>;
35
+ export type UnregisterPayload = {
36
+ webhookUrl: string;
37
+ };
38
+ export type UnregisterHandlerProps<TIntegration extends BaseIntegration> = CommonHandlerProps<TIntegration> & UnregisterPayload;
39
+ export type UnregisterHandler<TIntegration extends BaseIntegration> = (props: UnregisterHandlerProps<TIntegration>) => Promise<void>;
40
+ export type WebhookPayload = {
41
+ req: Request;
42
+ };
43
+ export type WebhookHandlerProps<TIntegration extends BaseIntegration> = CommonHandlerProps<TIntegration> & WebhookPayload;
44
+ export type WebhookHandler<TIntegration extends BaseIntegration> = (props: WebhookHandlerProps<TIntegration>) => Promise<Response | void>;
45
+ export type ActionMetadata = {
46
+ setCost: (cost: number) => void;
47
+ };
48
+ export type ActionPayload<T extends string, I> = {
49
+ type: T;
50
+ input: I;
51
+ metadata: ActionMetadata;
52
+ };
53
+ export type ActionHandlerProps<TIntegration extends BaseIntegration, T extends string, I> = CommonHandlerProps<TIntegration> & ActionPayload<T, I>;
54
+ export type ActionHandlers<TIntegration extends BaseIntegration> = {
55
+ [ActionType in keyof TIntegration['actions']]: (props: ActionHandlerProps<TIntegration, Cast<ActionType, string>, TIntegration['actions'][ActionType]['input']>) => Promise<TIntegration['actions'][ActionType]['output']>;
56
+ };
57
+ export type CreateUserPayload<TIntegration extends BaseIntegration> = {
58
+ tags: commonTypes.ToTags<keyof TIntegration['user']['tags']>;
59
+ };
60
+ export type CreateUserHandlerProps<TIntegration extends BaseIntegration> = CommonHandlerProps<TIntegration> & CreateUserPayload<TIntegration>;
61
+ export type CreateUserHandler<TIntegration extends BaseIntegration> = (props: CreateUserHandlerProps<TIntegration>) => Promise<Response | void>;
62
+ export type CreateConversationPayload<TIntegration extends BaseIntegration, TChannel extends keyof TIntegration['channels'] = keyof TIntegration['channels']> = {
63
+ channel: TChannel;
64
+ tags: commonTypes.ToTags<keyof TIntegration['channels'][TChannel]['conversation']['tags']>;
65
+ };
66
+ export type CreateConversationHandlerProps<TIntegration extends BaseIntegration> = CommonHandlerProps<TIntegration> & CreateConversationPayload<TIntegration>;
67
+ export type CreateConversationHandler<TIntegration extends BaseIntegration> = (props: CreateConversationHandlerProps<TIntegration>) => Promise<Response | void>;
68
+ export type MessagePayload<TIntegration extends BaseIntegration, TChannel extends keyof TIntegration['channels'], TMessage extends keyof TIntegration['channels'][TChannel]['messages']> = {
69
+ type: TMessage;
70
+ payload: TIntegration['channels'][TChannel]['messages'][TMessage];
71
+ conversation: Merge<Conversation, {
72
+ channel: TChannel;
73
+ tags: commonTypes.ToTags<keyof TIntegration['channels'][TChannel]['conversation']['tags']>;
74
+ }>;
75
+ message: Merge<Message, {
76
+ tags: commonTypes.ToTags<keyof TIntegration['channels'][TChannel]['message']['tags']>;
77
+ }>;
78
+ user: Merge<User, {
79
+ tags: commonTypes.ToTags<keyof TIntegration['user']['tags']>;
80
+ }>;
81
+ };
82
+ export type MessageHandlerProps<TIntegration extends BaseIntegration, TChannel extends keyof TIntegration['channels'], TMessage extends keyof TIntegration['channels'][TChannel]['messages']> = CommonHandlerProps<TIntegration> & MessagePayload<TIntegration, TChannel, TMessage> & {
83
+ ack: (props: {
84
+ tags: commonTypes.ToTags<keyof TIntegration['channels'][TChannel]['message']['tags']>;
85
+ }) => Promise<void>;
86
+ };
87
+ export type ChannelHandlers<TIntegration extends BaseIntegration> = {
88
+ [ChannelName in keyof TIntegration['channels']]: {
89
+ messages: {
90
+ [MessageType in keyof TIntegration['channels'][ChannelName]['messages']]: (props: CommonHandlerProps<TIntegration> & MessageHandlerProps<TIntegration, ChannelName, MessageType>) => Promise<void>;
91
+ };
92
+ };
93
+ };
94
+ export type UnknownOperationHandler<TIntegration extends BaseIntegration> = (props: CommonHandlerProps<TIntegration> & {
95
+ req: Request;
96
+ }) => Promise<Response | void>;
97
+ export type IntegrationHandlers<TIntegration extends BaseIntegration> = {
98
+ register: RegisterHandler<TIntegration>;
99
+ unregister: UnregisterHandler<TIntegration>;
100
+ webhook: WebhookHandler<TIntegration>;
101
+ createUser?: CreateUserHandler<TIntegration>;
102
+ createConversation?: CreateConversationHandler<TIntegration>;
103
+ actions: ActionHandlers<TIntegration>;
104
+ channels: ChannelHandlers<TIntegration>;
105
+ unknownOperationHandler?: UnknownOperationHandler<TIntegration>;
106
+ managesOwnTracePropagation?: boolean;
107
+ };
108
+ export {};
@@ -0,0 +1,34 @@
1
+ import * as utils from '../../utils/type-utils';
2
+ export type BaseChannel = {
3
+ messages: Record<string, any>;
4
+ };
5
+ export type BaseUser = {
6
+ tags: Record<string, any>;
7
+ };
8
+ export type BaseAction = {
9
+ input: any;
10
+ output: any;
11
+ };
12
+ export type BaseInterface = {
13
+ name: string;
14
+ version: string;
15
+ actions: Record<string, BaseAction>;
16
+ channels: Record<string, BaseChannel>;
17
+ events: Record<string, any>;
18
+ entities: Record<string, any>;
19
+ };
20
+ export type InputBaseChannel = utils.DeepPartial<BaseChannel>;
21
+ export type DefaultChannel<C extends InputBaseChannel> = {
22
+ messages: utils.Default<C['messages'], BaseChannel['messages']>;
23
+ };
24
+ export type InputBaseInterface = utils.DeepPartial<BaseInterface>;
25
+ export type DefaultInterface<I extends InputBaseInterface> = {
26
+ name: utils.Default<I['name'], BaseInterface['name']>;
27
+ version: utils.Default<I['version'], BaseInterface['version']>;
28
+ actions: utils.Default<I['actions'], BaseInterface['actions']>;
29
+ events: utils.Default<I['events'], BaseInterface['events']>;
30
+ entities: utils.Default<I['entities'], BaseInterface['entities']>;
31
+ channels: undefined extends I['channels'] ? BaseInterface['channels'] : {
32
+ [K in keyof I['channels']]: DefaultChannel<utils.Cast<I['channels'][K], InputBaseChannel>>;
33
+ };
34
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export * from './generic';
@@ -0,0 +1,87 @@
1
+ import { SchemaTransformOptions } from '../common/types';
2
+ import { ActionDefinition, ChannelDefinition, EntityDefinition, EventDefinition } from '../integration/definition';
3
+ import { z } from '../zui';
4
+ type BaseEvents = Record<string, z.ZuiObjectSchema>;
5
+ type BaseActions = Record<string, z.ZuiObjectSchema>;
6
+ type BaseMessages = Record<string, z.ZuiObjectSchema>;
7
+ type BaseChannels = Record<string, BaseMessages>;
8
+ type BaseEntities = Record<string, z.ZuiObjectSchema>;
9
+ type EntityReferences<TEntities extends BaseEntities> = {
10
+ [K in keyof TEntities]: z.ZodRef;
11
+ };
12
+ type GenericEventDefinition<TEntities extends BaseEntities, TEvent extends BaseEvents[string] = BaseEvents[string]> = {
13
+ schema: z.GenericZuiSchema<EntityReferences<TEntities>, TEvent>;
14
+ attributes?: Record<string, string>;
15
+ };
16
+ type GenericChannelDefinition<TEntities extends BaseEntities, TChannel extends BaseChannels[string] = BaseChannels[string]> = {
17
+ messages: {
18
+ [K in keyof TChannel]: {
19
+ schema: z.GenericZuiSchema<EntityReferences<TEntities>, TChannel[K]>;
20
+ };
21
+ };
22
+ };
23
+ type GenericActionDefinition<TEntities extends BaseEntities, TAction extends BaseActions[string] = BaseActions[string]> = {
24
+ title?: string;
25
+ description?: string;
26
+ billable?: boolean;
27
+ cacheable?: boolean;
28
+ input: {
29
+ schema: z.GenericZuiSchema<EntityReferences<TEntities>, TAction>;
30
+ };
31
+ output: {
32
+ schema: z.GenericZuiSchema<EntityReferences<TEntities>, z.ZuiObjectSchema>;
33
+ };
34
+ attributes?: Record<string, string>;
35
+ };
36
+ export type InterfaceDefinitionProps<TName extends string = string, TVersion extends string = string, TEntities extends BaseEntities = BaseEntities, TActions extends BaseActions = BaseActions, TEvents extends BaseEntities = BaseEntities, TChannels extends BaseChannels = BaseChannels> = {
37
+ name: TName;
38
+ version: TVersion;
39
+ title?: string;
40
+ description?: string;
41
+ icon?: string;
42
+ readme?: string;
43
+ attributes?: Record<string, string>;
44
+ entities?: {
45
+ [K in keyof TEntities]: EntityDefinition<TEntities[K]>;
46
+ };
47
+ events?: {
48
+ [K in keyof TEvents]: GenericEventDefinition<TEntities, TEvents[K]>;
49
+ };
50
+ actions?: {
51
+ [K in keyof TActions]: GenericActionDefinition<TEntities, TActions[K]>;
52
+ };
53
+ channels?: {
54
+ [K in keyof TChannels]: GenericChannelDefinition<TEntities, TChannels[K]>;
55
+ };
56
+ __advanced?: SchemaTransformOptions;
57
+ };
58
+ export declare class InterfaceDefinition<TName extends string = string, TVersion extends string = string, TEntities extends BaseEntities = BaseEntities, TActions extends BaseActions = BaseActions, TEvents extends BaseEvents = BaseEvents, TChannels extends BaseChannels = BaseChannels> {
59
+ readonly props: InterfaceDefinitionProps<TName, TVersion, TEntities, TActions, TEvents, TChannels>;
60
+ readonly name: this['props']['name'];
61
+ readonly version: this['props']['version'];
62
+ readonly title: this['props']['title'];
63
+ readonly description: this['props']['description'];
64
+ readonly icon: this['props']['icon'];
65
+ readonly readme: this['props']['readme'];
66
+ readonly attributes: this['props']['attributes'];
67
+ readonly entities: {
68
+ [K in keyof TEntities]: EntityDefinition<TEntities[K]>;
69
+ };
70
+ readonly events: {
71
+ [K in keyof TEvents]: EventDefinition<TEvents[K]>;
72
+ };
73
+ readonly actions: {
74
+ [K in keyof TActions]: ActionDefinition<TActions[K]>;
75
+ };
76
+ readonly channels: {
77
+ [K in keyof TChannels]: ChannelDefinition<TChannels[K]>;
78
+ };
79
+ readonly __advanced: this['props']['__advanced'];
80
+ constructor(props: InterfaceDefinitionProps<TName, TVersion, TEntities, TActions, TEvents, TChannels>);
81
+ get metadata(): {
82
+ readonly sdkVersion: string;
83
+ };
84
+ readonly clone?: (overrides?: Partial<InterfaceDefinitionProps>) => InterfaceDefinition;
85
+ private _getEntityReference;
86
+ }
87
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from './definition';
2
+ export * from './common';
@@ -0,0 +1,18 @@
1
+ import { ActionOverrideProps, ChannelOverrideProps, EventOverrideProps, InterfaceExtension, ResolvedInterface } from '../integration';
2
+ import { InterfacePackage } from '../package';
3
+ import { z } from '../zui';
4
+ type ResolveInterfaceInput = InterfacePackage & {
5
+ entities: Record<string, {
6
+ name: string;
7
+ schema: z.ZuiObjectSchema;
8
+ }>;
9
+ actions: Record<string, ActionOverrideProps>;
10
+ events: Record<string, EventOverrideProps>;
11
+ channels: Record<string, ChannelOverrideProps>;
12
+ };
13
+ type ResolveInterfaceOutput = {
14
+ resolved: ResolvedInterface;
15
+ statement: InterfaceExtension;
16
+ };
17
+ export declare const resolveInterface: (intrface: ResolveInterfaceInput) => ResolveInterfaceOutput;
18
+ export {};
package/dist/log.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export type Logger = {
2
+ debug(message: string, metadata?: unknown): void;
3
+ info(message: string, metadata?: unknown): void;
4
+ warn(message: string, metadata?: unknown): void;
5
+ error(message: string, metadata?: unknown): void;
6
+ };
7
+ export declare const log: Logger;