@botpress/sdk 2.0.4 → 2.1.0

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 (66) hide show
  1. package/.turbo/turbo-build.log +12 -0
  2. package/dist/base-logger.d.ts +13 -0
  3. package/dist/bot/bot-logger.d.ts +14 -0
  4. package/dist/bot/client/index.d.ts +62 -0
  5. package/dist/bot/client/types.d.ts +141 -0
  6. package/dist/bot/client/types.test.d.ts +1 -0
  7. package/dist/bot/definition.d.ts +111 -0
  8. package/dist/bot/implementation.d.ts +39 -0
  9. package/dist/bot/index.d.ts +6 -0
  10. package/dist/bot/merge-bots.d.ts +2 -0
  11. package/dist/bot/server/context.d.ts +2 -0
  12. package/dist/bot/server/index.d.ts +5 -0
  13. package/dist/bot/server/types.d.ts +254 -0
  14. package/dist/bot/server/types.test.d.ts +1 -0
  15. package/dist/bot/types/common.d.ts +50 -0
  16. package/dist/bot/types/common.test.d.ts +1 -0
  17. package/dist/bot/types/generic.d.ts +31 -0
  18. package/dist/bot/types/generic.test.d.ts +1 -0
  19. package/dist/bot/types/index.d.ts +2 -0
  20. package/dist/const.d.ts +8 -0
  21. package/dist/fixtures.d.ts +108 -0
  22. package/dist/index.d.ts +15 -0
  23. package/dist/index.js +2 -0
  24. package/dist/index.js.map +7 -0
  25. package/dist/integration/client/index.d.ts +47 -0
  26. package/dist/integration/client/types.d.ts +177 -0
  27. package/dist/integration/client/types.test.d.ts +1 -0
  28. package/dist/integration/definition/branded-schema.d.ts +21 -0
  29. package/dist/integration/definition/generic.d.ts +9 -0
  30. package/dist/integration/definition/index.d.ts +76 -0
  31. package/dist/integration/definition/types.d.ts +106 -0
  32. package/dist/integration/implementation.d.ts +31 -0
  33. package/dist/integration/index.d.ts +5 -0
  34. package/dist/integration/server/action-metadata.d.ts +9 -0
  35. package/dist/integration/server/context.d.ts +3 -0
  36. package/dist/integration/server/index.d.ts +6 -0
  37. package/dist/integration/server/integration-logger.d.ts +16 -0
  38. package/dist/integration/server/types.d.ts +102 -0
  39. package/dist/integration/types/common.d.ts +11 -0
  40. package/dist/integration/types/generic.d.ts +52 -0
  41. package/dist/integration/types/generic.test.d.ts +1 -0
  42. package/dist/integration/types/index.d.ts +2 -0
  43. package/dist/interface/definition.d.ts +70 -0
  44. package/dist/interface/index.d.ts +1 -0
  45. package/dist/interface/types/generic.d.ts +34 -0
  46. package/dist/interface/types/generic.test.d.ts +1 -0
  47. package/dist/log.d.ts +7 -0
  48. package/dist/message.d.ts +474 -0
  49. package/dist/package.d.ts +58 -0
  50. package/dist/plugin/definition.d.ts +50 -0
  51. package/dist/plugin/implementation.d.ts +39 -0
  52. package/dist/plugin/index.d.ts +3 -0
  53. package/dist/plugin/server/types.d.ts +1 -0
  54. package/dist/plugin/server/types.test.d.ts +1 -0
  55. package/dist/plugin/types/generic.d.ts +30 -0
  56. package/dist/plugin/types/generic.test.d.ts +1 -0
  57. package/dist/retry.d.ts +2 -0
  58. package/dist/schema.d.ts +18 -0
  59. package/dist/serve.d.ts +20 -0
  60. package/dist/utils/array-utils.d.ts +1 -0
  61. package/dist/utils/index.d.ts +3 -0
  62. package/dist/utils/record-utils.d.ts +3 -0
  63. package/dist/utils/type-utils.d.ts +33 -0
  64. package/dist/utils/type-utils.test.d.ts +1 -0
  65. package/dist/zui.d.ts +5 -0
  66. package/package.json +2 -2
@@ -0,0 +1,76 @@
1
+ import { InterfacePackage } from '../../package';
2
+ import { z } from '../../zui';
3
+ import { SchemaStore, BrandedSchema } from './branded-schema';
4
+ import { BaseConfig, BaseEvents, BaseActions, BaseChannels, BaseStates, BaseEntities, BaseConfigs } from './generic';
5
+ import { ConfigurationDefinition, EventDefinition, ChannelDefinition, ActionDefinition, StateDefinition, UserDefinition, SecretDefinition, EntityDefinition, AdditionalConfigurationDefinition } from './types';
6
+ export * from './types';
7
+ export type InterfaceExtension = InterfacePackage & {
8
+ entities: Record<string, {
9
+ name: string;
10
+ schema: z.AnyZodObject;
11
+ }>;
12
+ };
13
+ 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> = {
14
+ name: TName;
15
+ version: TVersion;
16
+ title?: string;
17
+ description?: string;
18
+ icon?: string;
19
+ readme?: string;
20
+ identifier?: {
21
+ extractScript?: string;
22
+ fallbackHandlerScript?: string;
23
+ };
24
+ configuration?: ConfigurationDefinition<TConfig>;
25
+ configurations?: {
26
+ [K in keyof TConfigs]: AdditionalConfigurationDefinition<TConfigs[K]>;
27
+ };
28
+ events?: {
29
+ [K in keyof TEvents]: EventDefinition<TEvents[K]>;
30
+ };
31
+ actions?: {
32
+ [K in keyof TActions]: ActionDefinition<TActions[K]>;
33
+ };
34
+ channels?: {
35
+ [K in keyof TChannels]: ChannelDefinition<TChannels[K]>;
36
+ };
37
+ states?: {
38
+ [K in keyof TStates]: StateDefinition<TStates[K]>;
39
+ };
40
+ user?: UserDefinition;
41
+ secrets?: Record<string, SecretDefinition>;
42
+ entities?: {
43
+ [K in keyof TEntities]: EntityDefinition<TEntities[K]>;
44
+ };
45
+ interfaces?: Record<string, InterfaceExtension>;
46
+ };
47
+ type EntitiesOfPackage<TPackage extends InterfacePackage> = {
48
+ [K in keyof TPackage['definition']['entities']]: NonNullable<TPackage['definition']['entities']>[K]['schema'];
49
+ };
50
+ type ExtensionBuilderInput<TIntegrationEntities extends BaseEntities> = SchemaStore<TIntegrationEntities>;
51
+ type ExtensionBuilderOutput<TInterfaceEntities extends BaseEntities> = {
52
+ [K in keyof TInterfaceEntities]: BrandedSchema<z.ZodSchema<z.infer<TInterfaceEntities[K]>>>;
53
+ };
54
+ type ExtensionBuilder<TIntegrationEntities extends BaseEntities, TInterfaceEntities extends BaseEntities> = (input: ExtensionBuilderInput<TIntegrationEntities>) => ExtensionBuilderOutput<TInterfaceEntities>;
55
+ 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> {
56
+ readonly props: IntegrationDefinitionProps<TName, TVersion, TConfig, TConfigs, TEvents, TActions, TChannels, TStates, TEntities>;
57
+ readonly name: this['props']['name'];
58
+ readonly version: this['props']['version'];
59
+ readonly title: this['props']['title'];
60
+ readonly description: this['props']['description'];
61
+ readonly icon: this['props']['icon'];
62
+ readonly readme: this['props']['readme'];
63
+ readonly configuration: this['props']['configuration'];
64
+ readonly configurations: this['props']['configurations'];
65
+ readonly events: this['props']['events'];
66
+ readonly actions: this['props']['actions'];
67
+ readonly channels: this['props']['channels'];
68
+ readonly states: this['props']['states'];
69
+ readonly user: this['props']['user'];
70
+ readonly secrets: this['props']['secrets'];
71
+ readonly identifier: this['props']['identifier'];
72
+ readonly entities: this['props']['entities'];
73
+ readonly interfaces: this['props']['interfaces'];
74
+ constructor(props: IntegrationDefinitionProps<TName, TVersion, TConfig, TConfigs, TEvents, TActions, TChannels, TStates, TEntities>);
75
+ extend<P extends InterfacePackage>(interfacePkg: P, builder: ExtensionBuilder<TEntities, EntitiesOfPackage<P>>): this;
76
+ }
@@ -0,0 +1,106 @@
1
+ import { SchemaDefinition } from '../../schema';
2
+ import { ZuiObjectSchema } 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
+ };
22
+ export type MessageDefinition<TMessage extends BaseMessages[string] = BaseMessages[string]> = SchemaDefinition<TMessage>;
23
+ export type ChannelDefinition<TChannel extends BaseChannels[string] = BaseChannels[string]> = {
24
+ title?: string;
25
+ description?: string;
26
+ messages: {
27
+ [K in keyof TChannel]: MessageDefinition<TChannel[K]>;
28
+ };
29
+ message?: {
30
+ tags?: Record<string, TagDefinition>;
31
+ };
32
+ conversation?: Partial<{
33
+ tags: Record<string, TagDefinition>;
34
+ /**
35
+ * @deprecated
36
+ */
37
+ creation: {
38
+ enabled: boolean;
39
+ requiredTags: string[];
40
+ };
41
+ }>;
42
+ };
43
+ export type ActionDefinition<TAction extends BaseActions[string] = BaseActions[string]> = {
44
+ title?: string;
45
+ description?: string;
46
+ input: SchemaDefinition<TAction>;
47
+ output: SchemaDefinition<ZuiObjectSchema>;
48
+ billable?: boolean;
49
+ cacheable?: boolean;
50
+ };
51
+ export type StateDefinition<TState extends BaseStates[string] = BaseStates[string]> = SchemaDefinition<TState> & {
52
+ type: 'integration' | 'conversation' | 'user';
53
+ };
54
+ export type UserDefinition = Partial<{
55
+ tags: Record<string, TagDefinition>;
56
+ /**
57
+ * @deprecated
58
+ */
59
+ creation: {
60
+ enabled: boolean;
61
+ requiredTags: string[];
62
+ };
63
+ }>;
64
+ export type SecretDefinition = {
65
+ optional?: boolean;
66
+ description?: string;
67
+ };
68
+ export type EntityDefinition<TEntity extends BaseEntities[string] = BaseEntities[string]> = SchemaDefinition<TEntity> & {
69
+ title?: string;
70
+ description?: string;
71
+ };
72
+ export type ResolvedInterface<TEvents extends BaseEvents = BaseEvents, TActions extends BaseActions = BaseActions, TChannels extends BaseChannels = BaseChannels> = {
73
+ actions: {
74
+ [K in keyof TActions]: ActionDefinition<TActions[K]>;
75
+ };
76
+ events: {
77
+ [K in keyof TEvents]: EventDefinition<TEvents[K]>;
78
+ };
79
+ channels: {
80
+ [K in keyof TChannels]: ChannelDefinition<TChannels[K]>;
81
+ };
82
+ };
83
+ export type InterfaceImplementationStatement<TEntities extends BaseEntities = BaseEntities, TActions extends BaseActions = BaseActions, TEvents extends BaseEvents = BaseEvents, TChannels extends BaseChannels = BaseChannels> = {
84
+ name: string;
85
+ version: string;
86
+ entities: {
87
+ [K in keyof TEntities]: {
88
+ name: string;
89
+ };
90
+ };
91
+ actions: {
92
+ [K in keyof TActions]: {
93
+ name: string;
94
+ };
95
+ };
96
+ events: {
97
+ [K in keyof TEvents]: {
98
+ name: string;
99
+ };
100
+ };
101
+ channels: {
102
+ [K in keyof TChannels]: {
103
+ name: string;
104
+ };
105
+ };
106
+ };
@@ -0,0 +1,31 @@
1
+ import type { Server } from 'node:http';
2
+ import { RegisterHandler as RegisterFunction, UnregisterHandler as UnregisterFunction, WebhookHandler as WebhookFunction, CreateUserHandler as CreateUserFunction, CreateConversationHandler as CreateConversationFunction, ActionHandlers as ActionFunctions, ChannelHandlers as ChannelFunctions } from './server';
3
+ import { BaseIntegration } from './types';
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
+ };
19
+ export declare class IntegrationImplementation<TIntegration extends BaseIntegration = BaseIntegration> {
20
+ readonly props: IntegrationImplementationProps<TIntegration>;
21
+ readonly actions: IntegrationImplementationProps<TIntegration>['actions'];
22
+ readonly channels: IntegrationImplementationProps<TIntegration>['channels'];
23
+ readonly register: IntegrationImplementationProps<TIntegration>['register'];
24
+ readonly unregister: IntegrationImplementationProps<TIntegration>['unregister'];
25
+ readonly createUser: IntegrationImplementationProps<TIntegration>['createUser'];
26
+ readonly createConversation: IntegrationImplementationProps<TIntegration>['createConversation'];
27
+ readonly webhook: IntegrationImplementationProps<TIntegration>['handler'];
28
+ constructor(props: IntegrationImplementationProps<TIntegration>);
29
+ readonly handler: (req: import("../serve").Request) => Promise<import("../serve").Response | void>;
30
+ readonly start: (port?: number) => Promise<Server>;
31
+ }
@@ -0,0 +1,5 @@
1
+ export * from './definition';
2
+ export * from './implementation';
3
+ export * from './client';
4
+ export * from './server';
5
+ export * from './types/generic';
@@ -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,3 @@
1
+ import { IntegrationContext } from './types';
2
+ export declare const integrationOperationSchema: import("@bpinternal/zui").ZodEnum<["webhook_received", "message_created", "action_triggered", "register", "unregister", "ping", "create_user", "create_conversation"]>;
3
+ export declare const extractContext: (headers: Record<string, string | undefined>) => IntegrationContext;
@@ -0,0 +1,6 @@
1
+ import { Request, Response } from '../../serve';
2
+ import { BaseIntegration } from '../types';
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,16 @@
1
+ import { BaseLogger } from '../../base-logger';
2
+ type IntegrationLogOptions = {
3
+ userID?: string;
4
+ conversationID?: string;
5
+ visibleToBotOwners?: boolean;
6
+ };
7
+ export declare class IntegrationLogger extends BaseLogger<IntegrationLogOptions> {
8
+ constructor(options?: IntegrationLogOptions);
9
+ with(options: IntegrationLogOptions): IntegrationLogger;
10
+ withUserID(userID: string): IntegrationLogger;
11
+ withConversationID(conversationID: string): IntegrationLogger;
12
+ withVisibleToBotOwners(visibleToBotOwners: boolean): IntegrationLogger;
13
+ forBot(): IntegrationLogger;
14
+ protected getJsonMessage(msg: string): string;
15
+ }
16
+ export {};
@@ -0,0 +1,102 @@
1
+ import { type Conversation, type Message, type User } from '@botpress/client';
2
+ import { Request, Response } from '../../serve';
3
+ import { Cast, Merge, ValueOf } from '../../utils/type-utils';
4
+ import { IntegrationSpecificClient } from '../client';
5
+ import { BaseIntegration, ToTags } from '../types';
6
+ import { type IntegrationLogger } from './integration-logger';
7
+ type IntegrationOperation = 'webhook_received' | 'message_created' | 'action_triggered' | 'register' | 'unregister' | 'ping' | 'create_user' | 'create_conversation';
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
+ webhookId: string;
22
+ operation: IntegrationOperation;
23
+ } & IntegrationContextConfig<TIntegration>;
24
+ export type CommonHandlerProps<TIntegration extends BaseIntegration> = {
25
+ ctx: IntegrationContext<TIntegration>;
26
+ client: IntegrationSpecificClient<TIntegration>;
27
+ logger: IntegrationLogger;
28
+ };
29
+ export type RegisterPayload = {
30
+ webhookUrl: string;
31
+ };
32
+ export type RegisterHandlerProps<TIntegration extends BaseIntegration> = CommonHandlerProps<TIntegration> & RegisterPayload;
33
+ export type RegisterHandler<TIntegration extends BaseIntegration> = (props: RegisterHandlerProps<TIntegration>) => Promise<void>;
34
+ export type UnregisterPayload = {
35
+ webhookUrl: string;
36
+ };
37
+ export type UnregisterHandlerProps<TIntegration extends BaseIntegration> = CommonHandlerProps<TIntegration> & UnregisterPayload;
38
+ export type UnregisterHandler<TIntegration extends BaseIntegration> = (props: UnregisterHandlerProps<TIntegration>) => Promise<void>;
39
+ export type WebhookPayload = {
40
+ req: Request;
41
+ };
42
+ export type WebhookHandlerProps<TIntegration extends BaseIntegration> = CommonHandlerProps<TIntegration> & WebhookPayload;
43
+ export type WebhookHandler<TIntegration extends BaseIntegration> = (props: WebhookHandlerProps<TIntegration>) => Promise<Response | void>;
44
+ export type ActionMetadata = {
45
+ setCost: (cost: number) => void;
46
+ };
47
+ export type ActionPayload<T extends string, I> = {
48
+ type: T;
49
+ input: I;
50
+ metadata: ActionMetadata;
51
+ };
52
+ export type ActionHandlerProps<TIntegration extends BaseIntegration, T extends string, I> = CommonHandlerProps<TIntegration> & ActionPayload<T, I>;
53
+ export type ActionHandlers<TIntegration extends BaseIntegration> = {
54
+ [ActionType in keyof TIntegration['actions']]: (props: ActionHandlerProps<TIntegration, Cast<ActionType, string>, TIntegration['actions'][ActionType]['input']>) => Promise<TIntegration['actions'][ActionType]['output']>;
55
+ };
56
+ export type CreateUserPayload<TIntegration extends BaseIntegration> = {
57
+ tags: ToTags<keyof TIntegration['user']['tags']>;
58
+ };
59
+ export type CreateUserHandlerProps<TIntegration extends BaseIntegration> = CommonHandlerProps<TIntegration> & CreateUserPayload<TIntegration>;
60
+ export type CreateUserHandler<TIntegration extends BaseIntegration> = (props: CreateUserHandlerProps<TIntegration>) => Promise<Response | void>;
61
+ export type CreateConversationPayload<TIntegration extends BaseIntegration, TChannel extends keyof TIntegration['channels'] = keyof TIntegration['channels']> = {
62
+ channel: TChannel;
63
+ tags: ToTags<keyof TIntegration['channels'][TChannel]['conversation']['tags']>;
64
+ };
65
+ export type CreateConversationHandlerProps<TIntegration extends BaseIntegration> = CommonHandlerProps<TIntegration> & CreateConversationPayload<TIntegration>;
66
+ export type CreateConversationHandler<TIntegration extends BaseIntegration> = (props: CreateConversationHandlerProps<TIntegration>) => Promise<Response | void>;
67
+ export type MessagePayload<TIntegration extends BaseIntegration, TChannel extends keyof TIntegration['channels'], TMessage extends keyof TIntegration['channels'][TChannel]['messages']> = {
68
+ type: TMessage;
69
+ payload: TIntegration['channels'][TChannel]['messages'][TMessage];
70
+ conversation: Merge<Conversation, {
71
+ channel: TChannel;
72
+ tags: ToTags<keyof TIntegration['channels'][TChannel]['conversation']['tags']>;
73
+ }>;
74
+ message: Merge<Message, {
75
+ tags: ToTags<keyof TIntegration['channels'][TChannel]['message']['tags']>;
76
+ }>;
77
+ user: Merge<User, {
78
+ tags: ToTags<keyof TIntegration['user']['tags']>;
79
+ }>;
80
+ };
81
+ export type MessageHandlerProps<TIntegration extends BaseIntegration, TChannel extends keyof TIntegration['channels'], TMessage extends keyof TIntegration['channels'][TChannel]['messages']> = CommonHandlerProps<TIntegration> & MessagePayload<TIntegration, TChannel, TMessage> & {
82
+ ack: (props: {
83
+ tags: ToTags<keyof TIntegration['channels'][TChannel]['message']['tags']>;
84
+ }) => Promise<void>;
85
+ };
86
+ export type ChannelHandlers<TIntegration extends BaseIntegration> = {
87
+ [ChannelName in keyof TIntegration['channels']]: {
88
+ messages: {
89
+ [MessageType in keyof TIntegration['channels'][ChannelName]['messages']]: (props: CommonHandlerProps<TIntegration> & MessageHandlerProps<TIntegration, ChannelName, MessageType>) => Promise<void>;
90
+ };
91
+ };
92
+ };
93
+ export type IntegrationHandlers<TIntegration extends BaseIntegration> = {
94
+ register: RegisterHandler<TIntegration>;
95
+ unregister: UnregisterHandler<TIntegration>;
96
+ webhook: WebhookHandler<TIntegration>;
97
+ createUser?: CreateUserHandler<TIntegration>;
98
+ createConversation?: CreateConversationHandler<TIntegration>;
99
+ actions: ActionHandlers<TIntegration>;
100
+ channels: ChannelHandlers<TIntegration>;
101
+ };
102
+ export {};
@@ -0,0 +1,11 @@
1
+ import * as utils from '../../utils/type-utils';
2
+ import { BaseIntegration } from './generic';
3
+ export type ConfigurationDefinition = BaseIntegration['configuration'];
4
+ export type ActionDefinition = BaseIntegration['actions'][string];
5
+ export type ChannelDefinition = BaseIntegration['channels'][string];
6
+ export type EventDefinition = BaseIntegration['events'][string];
7
+ export type StateDefinition = BaseIntegration['states'][string];
8
+ export type UserDefinition = BaseIntegration['user'];
9
+ type AsTags<T extends Record<string, string | undefined>> = utils.Cast<T, Record<string, string>>;
10
+ export type ToTags<TTags extends string | number | symbol> = AsTags<Partial<Record<utils.Cast<TTags, string>, string>>>;
11
+ export {};
@@ -0,0 +1,52 @@
1
+ import * as utils from '../../utils/type-utils';
2
+ export type BaseMessage = {
3
+ tags: Record<string, any>;
4
+ };
5
+ export type BaseConversation = {
6
+ tags: Record<string, any>;
7
+ };
8
+ export type BaseChannel = {
9
+ messages: Record<string, any>;
10
+ message: BaseMessage;
11
+ conversation: BaseConversation;
12
+ };
13
+ export type BaseUser = {
14
+ tags: Record<string, any>;
15
+ };
16
+ export type BaseAction = {
17
+ input: any;
18
+ output: any;
19
+ };
20
+ export type BaseIntegration = {
21
+ name: string;
22
+ version: string;
23
+ configuration: any;
24
+ configurations: Record<string, any>;
25
+ actions: Record<string, BaseAction>;
26
+ channels: Record<string, BaseChannel>;
27
+ events: Record<string, any>;
28
+ states: Record<string, any>;
29
+ user: BaseUser;
30
+ entities: Record<string, any>;
31
+ };
32
+ export type InputBaseChannel = utils.DeepPartial<BaseChannel>;
33
+ export type DefaultChannel<C extends InputBaseChannel> = {
34
+ messages: utils.Default<C['messages'], BaseChannel['messages']>;
35
+ message: utils.Default<C['message'], BaseChannel['message']>;
36
+ conversation: utils.Default<C['conversation'], BaseChannel['conversation']>;
37
+ };
38
+ export type InputBaseIntegration = utils.DeepPartial<BaseIntegration>;
39
+ export type DefaultIntegration<I extends InputBaseIntegration> = {
40
+ name: utils.Default<I['name'], BaseIntegration['name']>;
41
+ version: utils.Default<I['version'], BaseIntegration['version']>;
42
+ configuration: utils.Default<I['configuration'], BaseIntegration['configuration']>;
43
+ configurations: utils.Default<I['configurations'], BaseIntegration['configurations']>;
44
+ actions: utils.Default<I['actions'], BaseIntegration['actions']>;
45
+ events: utils.Default<I['events'], BaseIntegration['events']>;
46
+ states: utils.Default<I['states'], BaseIntegration['states']>;
47
+ user: utils.Default<I['user'], BaseIntegration['user']>;
48
+ entities: utils.Default<I['entities'], BaseIntegration['entities']>;
49
+ channels: undefined extends I['channels'] ? BaseIntegration['channels'] : {
50
+ [K in keyof I['channels']]: DefaultChannel<utils.Cast<I['channels'][K], InputBaseChannel>>;
51
+ };
52
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from './generic';
2
+ export * from './common';
@@ -0,0 +1,70 @@
1
+ import { ActionDefinition, ChannelDefinition, EntityDefinition, EventDefinition } from '../integration/definition';
2
+ import { ZuiObjectSchema, GenericZuiSchema, ZodRef } from '../zui';
3
+ type BaseEvents = Record<string, ZuiObjectSchema>;
4
+ type BaseActions = Record<string, ZuiObjectSchema>;
5
+ type BaseMessages = Record<string, ZuiObjectSchema>;
6
+ type BaseChannels = Record<string, BaseMessages>;
7
+ type BaseEntities = Record<string, ZuiObjectSchema>;
8
+ type EntityReferences<TEntities extends BaseEntities> = {
9
+ [K in keyof TEntities]: ZodRef;
10
+ };
11
+ type GenericEventDefinition<TEntities extends BaseEntities, TEvent extends BaseEvents[string] = BaseEvents[string]> = {
12
+ schema: GenericZuiSchema<EntityReferences<TEntities>, TEvent>;
13
+ };
14
+ type GenericChannelDefinition<TEntities extends BaseEntities, TChannel extends BaseChannels[string] = BaseChannels[string]> = {
15
+ messages: {
16
+ [K in keyof TChannel]: {
17
+ schema: GenericZuiSchema<EntityReferences<TEntities>, TChannel[K]>;
18
+ };
19
+ };
20
+ };
21
+ type GenericActionDefinition<TEntities extends BaseEntities, TAction extends BaseActions[string] = BaseActions[string]> = {
22
+ title?: string;
23
+ description?: string;
24
+ billable?: boolean;
25
+ cacheable?: boolean;
26
+ input: {
27
+ schema: GenericZuiSchema<EntityReferences<TEntities>, TAction>;
28
+ };
29
+ output: {
30
+ schema: GenericZuiSchema<EntityReferences<TEntities>, ZuiObjectSchema>;
31
+ };
32
+ };
33
+ 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> = {
34
+ name: TName;
35
+ version: TVersion;
36
+ entities?: {
37
+ [K in keyof TEntities]: EntityDefinition<TEntities[K]>;
38
+ };
39
+ events?: {
40
+ [K in keyof TEvents]: GenericEventDefinition<TEntities, TEvents[K]>;
41
+ };
42
+ actions?: {
43
+ [K in keyof TActions]: GenericActionDefinition<TEntities, TActions[K]>;
44
+ };
45
+ channels?: {
46
+ [K in keyof TChannels]: GenericChannelDefinition<TEntities, TChannels[K]>;
47
+ };
48
+ templateName?: string;
49
+ };
50
+ 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> {
51
+ readonly props: InterfaceDefinitionProps<TName, TVersion, TEntities, TActions, TEvents, TChannels>;
52
+ readonly name: this['props']['name'];
53
+ readonly version: this['props']['version'];
54
+ readonly entities: {
55
+ [K in keyof TEntities]: EntityDefinition<TEntities[K]>;
56
+ };
57
+ readonly events: {
58
+ [K in keyof TEvents]: EventDefinition<TEvents[K]>;
59
+ };
60
+ readonly actions: {
61
+ [K in keyof TActions]: ActionDefinition<TActions[K]>;
62
+ };
63
+ readonly channels: {
64
+ [K in keyof TChannels]: ChannelDefinition<TChannels[K]>;
65
+ };
66
+ readonly templateName: this['props']['templateName'];
67
+ constructor(props: InterfaceDefinitionProps<TName, TVersion, TEntities, TActions, TEvents, TChannels>);
68
+ private _getEntityReference;
69
+ }
70
+ export {};
@@ -0,0 +1 @@
1
+ export * from './definition';
@@ -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 {};
package/dist/log.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export type Logger = {
2
+ debug(message: string, metadata?: any): void;
3
+ info(message: string, metadata?: any): void;
4
+ warn(message: string, metadata?: any): void;
5
+ error(message: string, metadata?: any): void;
6
+ };
7
+ export declare const log: Logger;