@botpress/sdk 0.8.29 → 0.8.31

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.
@@ -1,12 +1,12 @@
1
1
 
2
- > @botpress/sdk@0.8.29 build /home/runner/work/botpress/botpress/packages/sdk
2
+ > @botpress/sdk@0.8.31 build /home/runner/work/botpress/botpress/packages/sdk
3
3
  > pnpm build:type && pnpm build:node
4
4
 
5
5
 
6
- > @botpress/sdk@0.8.29 build:type /home/runner/work/botpress/botpress/packages/sdk
6
+ > @botpress/sdk@0.8.31 build:type /home/runner/work/botpress/botpress/packages/sdk
7
7
  > tsc --emitDeclarationOnly --declaration
8
8
 
9
9
 
10
- > @botpress/sdk@0.8.29 build:node /home/runner/work/botpress/botpress/packages/sdk
10
+ > @botpress/sdk@0.8.31 build:node /home/runner/work/botpress/botpress/packages/sdk
11
11
  > ts-node -T build.ts
12
12
 
@@ -1,7 +1,7 @@
1
1
  import { z } from '@bpinternal/zui';
2
2
  import type { Server } from 'node:http';
3
3
  import { SchemaDefinition } from '../schema';
4
- import { AnyZodObject, Cast } from '../type-utils';
4
+ import { AnyZodObject } from '../type-utils';
5
5
  import { BaseIntegrations } from './generic';
6
6
  import { IntegrationInstance } from './integration-instance';
7
7
  import { MessageHandler, EventHandler, StateExpiredHandler, StateType } from './server';
@@ -37,7 +37,7 @@ type MessageDefinition = {
37
37
  };
38
38
  export type BotProps<TIntegrations extends BaseIntegrations = BaseIntegrations, TStates extends BaseStates = BaseStates, TEvents extends BaseEvents = BaseEvents> = {
39
39
  integrations?: {
40
- [K in keyof TIntegrations]?: IntegrationInstance<Cast<K, string>>;
40
+ [K in keyof TIntegrations]?: IntegrationInstance<TIntegrations[K]>;
41
41
  };
42
42
  user?: UserDefinition;
43
43
  conversation?: ConversationDefinition;
@@ -1,7 +1,8 @@
1
- export type IntegrationInstance<TName extends string> = {
1
+ import { BaseIntegration } from '../integration/generic';
2
+ export type IntegrationInstance<TIntegration extends BaseIntegration> = {
2
3
  id: string | null;
3
4
  enabled?: boolean;
4
5
  configuration?: Record<string, any>;
5
- name: TName;
6
- version: string;
6
+ name: TIntegration['name'];
7
+ version: TIntegration['version'];
7
8
  };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  export * as messages from './message';
2
+ export * as interfaces from './interfaces';
2
3
  export * from './const';
3
4
  export * from './serve';
4
5
  export * from './zui';
5
6
  export { isApiError, RuntimeError } from '@botpress/client';
6
- export { IntegrationDefinition, IntegrationDefinitionProps, IntegrationImplementation as Integration, IntegrationImplementationProps as IntegrationProps, IntegrationContext, IntegrationSpecificClient, TagDefinition, ConfigurationDefinition, EventDefinition, ChannelDefinition, MessageDefinition, ActionDefinition, StateDefinition, UserDefinition, SecretDefinition, EntityDefinition, } from './integration';
7
+ export { IntegrationDefinition, IntegrationDefinitionProps, IntegrationImplementation as Integration, IntegrationImplementationProps as IntegrationProps, IntegrationContext, IntegrationSpecificClient, InterfaceDeclaration, InterfaceDeclarationProps, TagDefinition, ConfigurationDefinition, EventDefinition, ChannelDefinition, MessageDefinition, ActionDefinition, StateDefinition, UserDefinition, SecretDefinition, EntityDefinition, } from './integration';
7
8
  export { Bot, BotProps, BotContext, BotSpecificClient, IntegrationInstance } from './bot';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var ge=Object.create;var P=Object.defineProperty;var le=Object.getOwnPropertyDescriptor;var ce=Object.getOwnPropertyNames;var pe=Object.getPrototypeOf,de=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var n in e)P(t,n,{get:e[n],enumerable:!0})},E=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of ce(e))!de.call(t,s)&&s!==n&&P(t,s,{get:()=>e[s],enumerable:!(r=le(e,s))||r.enumerable});return t},l=(t,e,n)=>(E(t,e,"default"),n&&E(n,e,"default")),_=(t,e,n)=>(n=t!=null?ge(pe(t)):{},E(e||!t||!t.__esModule?P(n,"default",{value:t,enumerable:!0}):n,t)),ue=t=>E(P({},"__esModule",{value:!0}),t);var T={};A(T,{Bot:()=>U,BotSpecificClient:()=>b,Integration:()=>M,IntegrationDefinition:()=>y,IntegrationSpecificClient:()=>I,RuntimeError:()=>D.RuntimeError,botIdHeader:()=>v,botUserIdHeader:()=>F,configurationHeader:()=>C,integrationIdHeader:()=>O,isApiError:()=>D.isApiError,messages:()=>k,operationHeader:()=>x,parseBody:()=>u,serve:()=>S,studioComponentDefinitions:()=>K,typeHeader:()=>R,webhookIdHeader:()=>H});module.exports=ue(T);var k={};A(k,{defaults:()=>Ie});var a={};A(a,{default:()=>Te,studioComponentDefinitions:()=>K});var o=require("@bpinternal/zui");l(a,require("@bpinternal/zui"));var d=o.z.object({allowDynamicVariable:o.z.boolean().optional(),horizontal:o.z.boolean().optional()}),K={string:{text:{id:"text",params:d.extend({multiLine:o.z.boolean().optional(),growVertically:o.z.boolean().optional(),suggestions:o.z.array(o.z.string()).optional()})},dropdown:{id:"dropdown",params:d.extend({filterable:o.z.boolean().optional()})},radiogroup:{id:"radiogroup",params:d.extend({})},date:{id:"date",params:d.extend({dateFormat:o.z.string().optional(),minDate:o.z.string().optional(),maxDate:o.z.string().optional(),defaultTimezone:o.z.string().optional(),disableTimezoneSelection:o.z.boolean().optional(),highlightCurrentDay:o.z.boolean().optional(),showShortcutButtons:o.z.boolean().optional(),showOutsideDaysOfMonth:o.z.boolean().optional(),firstDayOfWeek:o.z.number().optional(),canChangeMonth:o.z.boolean().optional(),showWeekNumbers:o.z.boolean().optional()})},time:{id:"time",params:d.extend({useAMPM:o.z.boolean().optional(),timeFormat:o.z.string().optional(),minTime:o.z.string().optional(),maxTime:o.z.string().optional(),showArrowButtons:o.z.boolean().optional(),precision:o.z.enum(["minute","second","millisecond"]).optional()})},richtext:{id:"richtext",params:o.z.object({allowDynamicVariable:o.z.boolean().optional(),resizable:o.z.boolean().optional()})},json:{id:"json",params:d.extend({showPreview:o.z.boolean().optional(),showValidationError:o.z.boolean().optional()})},file:{id:"file",params:d.extend({fileTypes:o.z.array(o.z.enum(["image","audio","video"])).optional(),showUploadedFiles:o.z.boolean().optional()})}},number:{number:{id:"number",params:d.extend({allowNumericCharactersOnly:o.z.boolean().optional(),stepSize:o.z.number().optional()})},slider:{id:"slider",params:o.z.object({horizontal:o.z.boolean().optional(),stepSize:o.z.number().optional()})}},boolean:{switch:{id:"switch",params:d}},array:{options:{id:"options",params:d},strings:{id:"strings",params:d},daterange:{id:"daterange",params:o.z.object({dateFormat:o.z.string().optional(),minDate:o.z.string().optional(),maxDate:o.z.string().optional(),defaultTimezone:o.z.string().optional(),allowSingleDayRange:o.z.boolean().optional(),highlightCurrentDay:o.z.boolean().optional(),showOutsideDaysOfMonth:o.z.boolean().optional(),firstDayOfWeek:o.z.number().optional(),canChangeMonth:o.z.boolean().optional(),showWeekNumbers:o.z.boolean().optional()})}},object:{collapsible:{id:"collapsible",params:o.z.object({defaultOpen:o.z.boolean().optional()})},modal:{id:"modal",params:o.z.object({title:o.z.string().optional(),buttonLabel:o.z.string().optional(),closeButtonLabel:o.z.string().optional()})},popover:{id:"popover",params:o.z.object({buttonLabel:o.z.string().optional()})}},discriminatedUnion:{}},Te=o.z;var c=a.z.string().min(1),z=a.z.object({text:c}),N=a.z.object({markdown:c}),W=a.z.object({imageUrl:c}),$=a.z.object({audioUrl:c}),Z=a.z.object({videoUrl:c}),J=a.z.object({fileUrl:c,title:c.optional()}),V=a.z.object({latitude:a.z.number(),longitude:a.z.number(),address:a.z.string().optional(),title:a.z.string().optional()}),Q=a.z.object({title:c,subtitle:c.optional(),imageUrl:c.optional(),actions:a.z.array(a.z.object({action:a.z.enum(["postback","url","say"]),label:c,value:c}))}),q=a.z.object({text:c,options:a.z.array(a.z.object({label:c,value:c}))}),me=a.z.object({items:a.z.array(Q)}),he=a.z.discriminatedUnion("type",[a.z.object({type:a.z.literal("text"),payload:z}),a.z.object({type:a.z.literal("markdown"),payload:N}),a.z.object({type:a.z.literal("image"),payload:W}),a.z.object({type:a.z.literal("audio"),payload:$}),a.z.object({type:a.z.literal("video"),payload:Z}),a.z.object({type:a.z.literal("file"),payload:J}),a.z.object({type:a.z.literal("location"),payload:V})]),ye=a.z.object({items:a.z.array(he)}),Ie={text:{schema:z},markdown:{schema:N},image:{schema:W},audio:{schema:$},video:{schema:Z},file:{schema:J},location:{schema:V},carousel:{schema:me},card:{schema:Q},dropdown:{schema:q},choice:{schema:q},bloc:{schema:ye}};var v="x-bot-id",F="x-bot-user-id",O="x-integration-id",H="x-webhook-id",C="x-bp-configuration",x="x-bp-operation",R="x-bp-type";var X=require("node:http");var h=console;function u(t){if(!t.body)throw new Error("Missing body");return JSON.parse(t.body)}async function S(t,e=8072,n=ve){let r=(0,X.createServer)(async(s,i)=>{try{let g=await fe(s);if(g.path==="/health"){i.writeHead(200).end("ok");return}let p=await t(g);i.writeHead(p?.status??200,p?.headers??{}).end(p?.body??"{}")}catch(g){h.error("Error while handling request",{error:g?.message??"Internal error occured"}),i.writeHead(500).end(JSON.stringify({error:g?.message??"Internal error occured"}))}});return r.listen(e,()=>n(e)),r}async function fe(t){let e=await Be(t),n={};for(let s=0;s<t.rawHeaders.length;s+=2){let i=t.rawHeaders[s].toLowerCase(),g=t.rawHeaders[s+1];n[i]=g}let r=new URL(t.url??"",t.headers.host?`http://${t.headers.host}`:"http://botpress.cloud");return{body:e,path:r.pathname,query:be(r.search,"?"),headers:n,method:t.method?.toUpperCase()??"GET"}}function be(t,e){return t.indexOf(e)===0?t.slice(e.length):t}async function Be(t){return new Promise((e,n)=>{if(t.method!=="POST"&&t.method!=="PUT"&&t.method!=="PATCH")return e(void 0);let r="";t.on("data",s=>r+=s.toString()),t.on("error",s=>n(s)),t.on("end",()=>e(r))})}function ve(t){h.info(`Listening on port ${t}`)}l(T,a,module.exports);var D=require("@botpress/client");var Y=require("@bpinternal/zui");var Ce=Y.z.enum(["webhook_received","message_created","action_triggered","register","unregister","ping","create_user","create_conversation"]),ee=t=>{let e=t[v],n=t[F],r=t[O],s=t[H],i=t[C],g=Ce.parse(t[x]);if(!e)throw new Error("Missing bot headers");if(!n)throw new Error("Missing bot user headers");if(!r)throw new Error("Missing integration headers");if(!s)throw new Error("Missing webhook headers");if(!i)throw new Error("Missing configuration headers");if(!g)throw new Error("Missing operation headers");return{botId:e,botUserId:n,integrationId:r,webhookId:s,operation:g,configuration:i?JSON.parse(Buffer.from(i,"base64").toString("utf-8")):{}}};var y=class{constructor(e){this.props=e;this.name=e.name,this.version=e.version,this.icon=e.icon,this.readme=e.readme,this.title=e.title,this.identifier=e.identifier,this.description=e.description,this.configuration=e.configuration,this.events=e.events,this.actions=e.actions,this.channels=e.channels,this.states=e.states,this.user=e.user,this.secrets=e.secrets,this.entities=e.entities}name;version;title;description;icon;readme;configuration;events;actions;channels;states;user;secrets;identifier;entities;clone(e){return new y({...this,...e})}};var f=require("@botpress/client");var I=class{constructor(e){this.client=e}createConversation=e=>this.client.createConversation(e);getConversation=e=>this.client.getConversation(e);listConversations=e=>this.client.listConversations(e);getOrCreateConversation=e=>this.client.getOrCreateConversation(e);updateConversation=e=>this.client.updateConversation(e);deleteConversation=e=>this.client.deleteConversation(e);listParticipants=e=>this.client.listParticipants(e);addParticipant=e=>this.client.addParticipant(e);getParticipant=e=>this.client.getParticipant(e);removeParticipant=e=>this.client.removeParticipant(e);createEvent=e=>this.client.createEvent(e);getEvent=e=>this.client.getEvent(e);listEvents=e=>this.client.listEvents(e);createMessage=e=>this.client.createMessage(e);getOrCreateMessage=e=>this.client.getOrCreateMessage(e);getMessage=e=>this.client.getMessage(e);updateMessage=e=>this.client.updateMessage(e);listMessages=e=>this.client.listMessages(e);deleteMessage=e=>this.client.deleteMessage(e);createUser=e=>this.client.createUser(e);getUser=e=>this.client.getUser(e);listUsers=e=>this.client.listUsers(e);getOrCreateUser=e=>this.client.getOrCreateUser(e);updateUser=e=>this.client.updateUser(e);deleteUser=e=>this.client.deleteUser(e);getState=e=>this.client.getState(e);setState=e=>this.client.setState(e);getOrSetState=e=>this.client.getOrSetState(e);patchState=e=>this.client.patchState(e);configureIntegration=e=>this.client.configureIntegration(e);uploadFile=e=>this.client.uploadFile(e);upsertFile=e=>this.client.upsertFile(e);deleteFile=e=>this.client.deleteFile(e);listFiles=e=>this.client.listFiles(e);getFile=e=>this.client.getFile(e);updateFileMetadata=e=>this.client.updateFileMetadata(e)};var j=_(require("util")),w=t=>{if(process.env.BP_LOG_FORMAT==="json")return JSON.stringify({msg:j.default.format(...t),visible_to_bot_owner:!0});{let[e,...n]=t;return j.default.format(`[For Bot Owner] ${e}`,...n)}},te={forBot:()=>({info:(...t)=>{console.info(w(t))},warn:(...t)=>{console.warn(w(t))},error:(...t)=>{console.error(w(t))},debug:(...t)=>{console.debug(w(t))}})};var ne=t=>async e=>{let n=ee(e.headers),r=new I(new f.Client({botId:n.botId,integrationId:n.integrationId})),s={ctx:n,req:e,client:r,logger:te,instance:t};try{let i;switch(n.operation){case"webhook_received":i=await Se(s);break;case"register":i=await Ee(s);break;case"unregister":i=await Pe(s);break;case"message_created":i=await Ue(s);break;case"action_triggered":i=await De(s);break;case"ping":i=await xe(s);break;case"create_user":i=await we(s);break;case"create_conversation":i=await Me(s);break;default:throw new Error(`Unknown operation ${n.operation}`)}return i?{...i,status:i.status??200}:{status:200}}catch(i){if((0,f.isApiError)(i)){let g=new f.RuntimeError(i.message,i);return{status:g.code,body:JSON.stringify(g.toJSON())}}throw i}},xe=async t=>{},Se=async({client:t,ctx:e,req:n,logger:r,instance:s})=>{let{req:i}=u(n);return s.webhook({client:t,ctx:e,req:i,logger:r})},Ee=async({client:t,ctx:e,req:n,logger:r,instance:s})=>{if(!s.register)return;let{webhookUrl:i}=u(n);await s.register({client:t,ctx:e,webhookUrl:i,logger:r})},Pe=async({client:t,ctx:e,req:n,logger:r,instance:s})=>{if(!s.unregister)return;let{webhookUrl:i}=u(n);await s.unregister({ctx:e,webhookUrl:i,client:t,logger:r})},we=async({client:t,ctx:e,req:n,logger:r,instance:s})=>{if(!s.createUser)return;let{tags:i}=u(n);return await s.createUser({ctx:e,client:t,tags:i,logger:r})},Me=async({client:t,ctx:e,req:n,logger:r,instance:s})=>{if(!s.createConversation)return;let{channel:i,tags:g}=u(n);return await s.createConversation({ctx:e,client:t,channel:i,tags:g,logger:r})},Ue=async({ctx:t,req:e,client:n,logger:r,instance:s})=>{let{conversation:i,user:g,type:p,payload:B,message:m}=u(e),G=s.channels[i.channel];if(!G)throw new Error(`Channel ${i.channel} not found`);let L=G.messages[p];if(!L)throw new Error(`Message of type ${p} not found in channel ${i.channel}`);await L({ctx:t,conversation:i,message:m,user:g,type:p,client:n,payload:B,ack:async({tags:re})=>{await n.updateMessage({id:m.id,tags:re})},logger:r})},De=async({req:t,ctx:e,client:n,logger:r,instance:s})=>{let{input:i,type:g}=u(t);if(!g)throw new Error("Missing action type");let p=s.actions[g];if(!p)throw new Error(`Action ${g} not found`);let B=await p({ctx:e,input:i,client:n,type:g,logger:r});return{body:JSON.stringify({output:B})}};var M=class{props;actions;channels;register;unregister;createUser;createConversation;webhook;constructor(e){this.props=e,this.actions=e.actions,this.channels=e.channels,this.register=e.register,this.unregister=e.unregister,this.createUser=e.createUser,this.createConversation=e.createConversation,this.webhook=e.handler}handler=ne(this);start=e=>S(this.handler,e)};var ae=_(require("@botpress/client"));var b=class{constructor(e){this.client=e}getConversation=e=>this.client.getConversation(e);listConversations=e=>this.client.listConversations(e);updateConversation=e=>this.client.updateConversation(e);deleteConversation=e=>this.client.deleteConversation(e);listParticipants=e=>this.client.listParticipants(e);addParticipant=e=>this.client.addParticipant(e);getParticipant=e=>this.client.getParticipant(e);removeParticipant=e=>this.client.removeParticipant(e);getEvent=e=>this.client.getEvent(e);listEvents=e=>this.client.listEvents(e);createMessage=e=>this.client.createMessage(e);getOrCreateMessage=e=>this.client.getOrCreateMessage(e);getMessage=e=>this.client.getMessage(e);updateMessage=e=>this.client.updateMessage(e);listMessages=e=>this.client.listMessages(e);deleteMessage=e=>this.client.deleteMessage(e);getUser=e=>this.client.getUser(e);listUsers=e=>this.client.listUsers(e);updateUser=e=>this.client.updateUser(e);deleteUser=e=>this.client.deleteUser(e);getState=e=>this.client.getState(e).then(n=>({state:{...n.state,payload:n.state.payload}}));setState=e=>this.client.setState(e).then(n=>({state:{...n.state,payload:n.state.payload}}));getOrSetState=e=>this.client.getOrSetState(e).then(n=>({state:{...n.state,payload:n.state.payload}}));patchState=e=>this.client.patchState(e).then(n=>({state:{...n.state,payload:n.state.payload}}));callAction=e=>this.client.callAction(e);uploadFile=e=>this.client.uploadFile(e);upsertFile=e=>this.client.upsertFile(e);deleteFile=e=>this.client.deleteFile(e);listFiles=e=>this.client.listFiles(e);getFile=e=>this.client.getFile(e);updateFileMetadata=e=>this.client.updateFileMetadata(e);searchFiles=e=>this.client.searchFiles(e);createConversation=e=>this.client.createConversation(e);getOrCreateConversation=e=>this.client.getOrCreateConversation(e);createUser=e=>this.client.createUser(e);getOrCreateUser=e=>this.client.getOrCreateUser(e)};var oe=require("@bpinternal/zui");var Ae=oe.z.enum(["event_received","register","unregister","ping","action_triggered"]),se=t=>{let e=t[v],n=t[C],r=t[R],s=Ae.parse(t[x]);if(!e)throw new Error("Missing bot headers");if(!r)throw new Error("Missing type headers");if(!n)throw new Error("Missing configuration headers");if(!s)throw new Error("Missing operation headers");return{botId:e,operation:s,type:r,configuration:n?JSON.parse(Buffer.from(n,"base64").toString("utf-8")):{}}};var ie=t=>async e=>{let n=se(e.headers);n.operation!=="ping"&&h.info(`Received ${n.operation} operation for bot ${n.botId} of type ${n.type}`);let r=new b(new ae.Client({botId:n.botId})),s={req:e,ctx:n,client:r,instance:t};switch(n.operation){case"action_triggered":throw new Error(`Operation ${n.operation} not supported yet`);case"event_received":await He(s);break;case"register":await Fe(s);break;case"unregister":await Oe(s);break;case"ping":await ke(s);break;default:throw new Error(`Unknown operation ${n.operation}`)}return{status:200}},ke=async t=>{},Fe=async t=>{},Oe=async t=>{},He=async({ctx:t,req:e,client:n,instance:r})=>{h.debug(`Received event ${t.type}`);let s=u(e),i=s.event;switch(t.type){case"message_created":let g={user:i.payload.user,conversation:i.payload.conversation,message:i.payload.message,states:i.payload.states,event:i};await Promise.all(r.messageHandlers.map(m=>m({client:n,ctx:t,...g})));break;case"state_expired":let p={state:i.payload.state};await Promise.all(r.stateExpiredHandlers.map(m=>m({client:n,ctx:t,...p})));break;default:let B={event:s.event};await Promise.all(r.eventHandlers.map(m=>m({client:n,ctx:t,...B})))}};var U=class{_state={messageHandlers:[],eventHandlers:[],stateExpiredHandlers:[]};props;constructor(e){this.props=e}message=e=>{this._state.messageHandlers.push(e)};event=e=>{this._state.eventHandlers.push(e)};stateExpired=e=>{this._state.stateExpiredHandlers.push(e)};handler=ie(this._state);start=e=>S(this.handler,e)};0&&(module.exports={Bot,BotSpecificClient,Integration,IntegrationDefinition,IntegrationSpecificClient,RuntimeError,botIdHeader,botUserIdHeader,configurationHeader,integrationIdHeader,isApiError,messages,operationHeader,parseBody,serve,studioComponentDefinitions,typeHeader,webhookIdHeader});
1
+ "use strict";var Ce=Object.create;var j=Object.defineProperty;var Se=Object.getOwnPropertyDescriptor;var Pe=Object.getOwnPropertyNames;var we=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var H=(t,e)=>{for(var o in e)j(t,o,{get:e[o],enumerable:!0})},F=(t,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Pe(e))!Me.call(t,s)&&s!==o&&j(t,s,{get:()=>e[s],enumerable:!(i=Se(e,s))||i.enumerable});return t},g=(t,e,o)=>(F(t,e,"default"),o&&F(o,e,"default")),Y=(t,e,o)=>(o=t!=null?Ce(we(t)):{},F(e||!t||!t.__esModule?j(o,"default",{value:t,enumerable:!0}):o,t)),Ae=t=>F(j({},"__esModule",{value:!0}),t);var y={};H(y,{Bot:()=>_,BotSpecificClient:()=>A,Integration:()=>K,IntegrationDefinition:()=>S,IntegrationSpecificClient:()=>w,InterfaceDeclaration:()=>T,RuntimeError:()=>N.RuntimeError,botIdHeader:()=>k,botUserIdHeader:()=>V,configurationHeader:()=>R,integrationIdHeader:()=>$,interfaces:()=>Z,isApiError:()=>N.isApiError,messages:()=>L,operationHeader:()=>D,parseBody:()=>f,serve:()=>O,studioComponentDefinitions:()=>ee,typeHeader:()=>J,webhookIdHeader:()=>W});module.exports=Ae(y);var L={};H(L,{defaults:()=>De});var n={};H(n,{default:()=>p,studioComponentDefinitions:()=>ee});var r=require("@bpinternal/zui");g(n,require("@bpinternal/zui"));var h=r.z.object({allowDynamicVariable:r.z.boolean().optional(),horizontal:r.z.boolean().optional()}),ee={string:{text:{id:"text",params:h.extend({multiLine:r.z.boolean().optional(),growVertically:r.z.boolean().optional(),suggestions:r.z.array(r.z.string()).optional()})},dropdown:{id:"dropdown",params:h.extend({filterable:r.z.boolean().optional()})},radiogroup:{id:"radiogroup",params:h.extend({})},date:{id:"date",params:h.extend({dateFormat:r.z.string().optional(),minDate:r.z.string().optional(),maxDate:r.z.string().optional(),defaultTimezone:r.z.string().optional(),disableTimezoneSelection:r.z.boolean().optional(),highlightCurrentDay:r.z.boolean().optional(),showShortcutButtons:r.z.boolean().optional(),showOutsideDaysOfMonth:r.z.boolean().optional(),firstDayOfWeek:r.z.number().optional(),canChangeMonth:r.z.boolean().optional(),showWeekNumbers:r.z.boolean().optional()})},time:{id:"time",params:h.extend({useAMPM:r.z.boolean().optional(),timeFormat:r.z.string().optional(),minTime:r.z.string().optional(),maxTime:r.z.string().optional(),showArrowButtons:r.z.boolean().optional(),precision:r.z.enum(["minute","second","millisecond"]).optional()})},richtext:{id:"richtext",params:r.z.object({allowDynamicVariable:r.z.boolean().optional(),resizable:r.z.boolean().optional()})},json:{id:"json",params:h.extend({showPreview:r.z.boolean().optional(),showValidationError:r.z.boolean().optional()})},file:{id:"file",params:h.extend({fileTypes:r.z.array(r.z.enum(["image","audio","video"])).optional(),showUploadedFiles:r.z.boolean().optional()})}},number:{number:{id:"number",params:h.extend({allowNumericCharactersOnly:r.z.boolean().optional(),stepSize:r.z.number().optional()})},slider:{id:"slider",params:r.z.object({horizontal:r.z.boolean().optional(),stepSize:r.z.number().optional()})}},boolean:{switch:{id:"switch",params:h}},array:{options:{id:"options",params:h},strings:{id:"strings",params:h},daterange:{id:"daterange",params:r.z.object({dateFormat:r.z.string().optional(),minDate:r.z.string().optional(),maxDate:r.z.string().optional(),defaultTimezone:r.z.string().optional(),allowSingleDayRange:r.z.boolean().optional(),highlightCurrentDay:r.z.boolean().optional(),showOutsideDaysOfMonth:r.z.boolean().optional(),firstDayOfWeek:r.z.number().optional(),canChangeMonth:r.z.boolean().optional(),showWeekNumbers:r.z.boolean().optional()})}},object:{collapsible:{id:"collapsible",params:r.z.object({defaultOpen:r.z.boolean().optional()})},modal:{id:"modal",params:r.z.object({title:r.z.string().optional(),buttonLabel:r.z.string().optional(),closeButtonLabel:r.z.string().optional()})},popover:{id:"popover",params:r.z.object({buttonLabel:r.z.string().optional()})}},discriminatedUnion:{}},p=r.z;var u=n.z.string().min(1),ne=n.z.object({text:u}),oe=n.z.object({markdown:u}),se=n.z.object({imageUrl:u}),ie=n.z.object({audioUrl:u}),ae=n.z.object({videoUrl:u}),re=n.z.object({fileUrl:u,title:u.optional()}),ce=n.z.object({latitude:n.z.number(),longitude:n.z.number(),address:n.z.string().optional(),title:n.z.string().optional()}),le=n.z.object({title:u,subtitle:u.optional(),imageUrl:u.optional(),actions:n.z.array(n.z.object({action:n.z.enum(["postback","url","say"]),label:u,value:u}))}),te=n.z.object({text:u,options:n.z.array(n.z.object({label:u,value:u}))}),Ue=n.z.object({items:n.z.array(le)}),ke=n.z.discriminatedUnion("type",[n.z.object({type:n.z.literal("text"),payload:ne}),n.z.object({type:n.z.literal("markdown"),payload:oe}),n.z.object({type:n.z.literal("image"),payload:se}),n.z.object({type:n.z.literal("audio"),payload:ie}),n.z.object({type:n.z.literal("video"),payload:ae}),n.z.object({type:n.z.literal("file"),payload:re}),n.z.object({type:n.z.literal("location"),payload:ce})]),Re=n.z.object({items:n.z.array(ke)}),De={text:{schema:ne},markdown:{schema:oe},image:{schema:se},audio:{schema:ie},video:{schema:ae},file:{schema:re},location:{schema:ce},carousel:{schema:Ue},card:{schema:le},dropdown:{schema:te},choice:{schema:te},bloc:{schema:Re}};var Z={};H(Z,{creatable:()=>Le,deletable:()=>Ze,hitl:()=>Ke,listable:()=>Ne,llm:()=>Ge,readable:()=>ze,updatable:()=>qe});var E=t=>Object.entries(t);var C=(t,e)=>Object.fromEntries(E(t).map(([o,i])=>[o,e(i,o)]));var q=Symbol("entityKey"),pe=t=>t?C(t,(o,i)=>({...o,[q]:i})):{},ge=t=>t[q]!==void 0,de=t=>t[q];var S=class{constructor(e){this.props=e;this.name=e.name,this.version=e.version,this.icon=e.icon,this.readme=e.readme,this.title=e.title,this.identifier=e.identifier,this.description=e.description,this.configuration=e.configuration,this.events=e.events,this.actions=e.actions,this.channels=e.channels,this.states=e.states,this.user=e.user,this.secrets=e.secrets,this.entities=e.entities}name;version;title;description;icon;readme;configuration;events;actions;channels;states;user;secrets;identifier;entities;interfaces={};clone(e){let o=new S({...this,...e});for(let[i,s]of Object.entries(this.interfaces))o.interfaces[i]=s;return o}extend(e,o){let i=o(pe(this.entities)),s=E(i).find(([x,Ee])=>!ge(Ee));if(s)throw new Error(`Cannot extend interface "${e.name}" with entity "${s[0]}"; the provided schema is not part of the integration's entities.`);let a=C(i,x=>({name:de(x),schema:x.schema})),{resolved:c,implementStatement:l}=e.resolve({entities:a}),d=this,{actions:m,events:b}=c;d.actions={...d.actions??{},...m},d.events={...d.events??{},...b};let B=Object.values(a).map(x=>x.name),X=`${e.name}<${B.join(",")}>`;return this.interfaces[X]=l,this}};var T=class{constructor(e){this.props=e;this.name=e.name,this.version=e.version,this.events=e.events,this.actions=e.actions,this.entities=e.entities,this.templateName=e.templateName}name;version;entities;events;actions;templateName;resolve(e){let{entities:o}=e,i={name:this.name,version:this.version,entities:C(o,l=>({name:l.name})),actions:{},events:{}},s={},a={};for(let[l,d]of E(this.actions)){let m=this._dereference(d.input.schema,o),b=this._dereference(d.output.schema,o),B=this._rename(o,l);s[B]={input:{schema:m},output:{schema:b}},i.actions[l]={name:B}}for(let[l,d]of E(this.events)){let m=this._dereference(d.schema,o),b=this._rename(o,l);a[b]={schema:m},i.events[l]={name:b}}return{resolved:{actions:s,events:a},implementStatement:i}}_dereference(e,o){let i={},s={};for(let[a,c]of E(o))i[a]=c.schema,s[a]=p.ref(a);return e(s).dereference(i)}_rename(e,o){if(!this.templateName)return o;let i=C(e,s=>s.name);return this.templateName(o,i)}};var Oe=n.z.object({id:n.z.string(),type:n.z.enum(["function"]),function:n.z.object({name:n.z.string(),arguments:n.z.string()})}),Fe=n.z.object({type:n.z.enum(["auto","specific","any","none",""]).optional(),functionName:n.z.string().optional().describe('Required if `type` is "specific"')}),ue=n.z.object({role:n.z.enum(["user","assistant"]),type:n.z.enum(["text","tool_calls","tool_result","multipart"]),toolCalls:n.z.array(Oe).optional().describe('Required if `type` is "tool_calls"'),toolResultCallId:n.z.string().optional().describe('Required if `type` is "tool_result"'),content:n.z.string().or(n.z.array(n.z.object({type:n.z.enum(["text","image"]),mimeType:n.z.string(),text:n.z.string().optional().describe('Required if part type is "text" '),url:n.z.string().optional().describe('Required if part type is "image"')}))).optional().describe('Required unless `type` is "tool_call". If `type` is "multipart", this field must be an array of content objects. If `type` is "tool_result" then this field should be the result of the tool call (a plain string or a JSON-encoded array or object). If `type` is "tool_call" then the `toolCalls` field should be used instead.')}),je=n.z.object({model:n.z.string().describe("Model to use for content generation"),systemPrompt:n.z.string().optional().describe("Optional system prompt to guide the model"),messages:n.z.array(ue).describe("Array of messages for the model to process").min(1),responseFormat:n.z.enum(["text","json_object"]).optional().describe('Response format expected from the model. If "json_object" is chosen, you must instruct the model to generate JSON either via the system prompt or a user message.'),maxTokens:n.z.number().optional().describe("Maximum number of tokens allowed in the generated response"),temperature:n.z.number().min(0).max(2).displayAs({id:"slider",params:{stepSize:.01,horizontal:!0}}).default(1).describe("Sampling temperature for the model. Higher values result in more random outputs."),topP:n.z.number().min(0).max(1).default(1).displayAs({id:"slider",params:{stepSize:.01,horizontal:!0}}).describe("Top-p sampling parameter. Limits sampling to the smallest set of tokens with a cumulative probability above the threshold."),stopSequences:n.z.array(n.z.string()).max(4).optional().describe("Sequences where the model should stop generating further tokens."),tools:n.z.array(n.z.object({type:n.z.literal("function"),function:n.z.object({name:n.z.string(),description:n.z.string().optional(),inputSchema:n.z.object({}).passthrough().optional()})})).optional(),toolChoice:Fe.optional(),userId:n.z.string().optional()}),He=n.z.object({id:n.z.string().describe("Response ID from LLM provider"),provider:n.z.string().describe("LLM provider name"),model:n.z.string().describe("Model name"),choices:n.z.array(ue.omit({role:!0}).extend({role:n.z.literal("assistant"),index:n.z.number().int(),stopReason:n.z.enum(["stop","max_tokens","tool_calls","content_filter","other"])})),usage:n.z.object({inputTokens:n.z.number().int().describe("Number of input tokens used by the model"),inputCost:n.z.number().describe("Cost of the input tokens received by the model, in U.S. dollars"),outputTokens:n.z.number().int().describe("Number of output tokens used by the model"),outputCost:n.z.number().describe("Cost of the output tokens generated by the model, in U.S. dollars")})}),Ge=new T({name:"llm",version:"0.0.1",entities:{},events:{},actions:{generateContent:{input:{schema:()=>je},output:{schema:()=>He}}}});var Ke=new T({name:"hitl",version:"0.0.1",entities:{},events:{},actions:{startHITL:{input:{schema:()=>n.z.object({upstreamConversationId:n.z.string()})},output:{schema:()=>n.z.object({downstreamConversationId:n.z.string()})}}}});var I=p.object({id:p.string()}),v=t=>p.intersection(t,I),_e=t=>t[0].toUpperCase()+t.slice(1),U=(...t)=>{let[e,...o]=t.filter(i=>i.length>0).map(i=>i.toLowerCase());return e?[e,...o.map(_e)].join(""):""},me=p.string().optional(),Ne=new T({name:"listable",version:"0.0.1",entities:{item:{schema:I}},events:{},actions:{list:{input:{schema:()=>p.object({nextToken:me})},output:{schema:t=>p.object({items:p.array(v(t.item)),meta:p.object({nextToken:me})})}}},templateName:(t,e)=>U(e.item,t)}),Le=new T({name:"creatable",version:"0.0.1",entities:{item:{schema:I}},events:{created:{schema:t=>p.object({item:v(t.item)})}},actions:{create:{input:{schema:t=>p.object({item:t.item})},output:{schema:t=>p.object({item:v(t.item)})}}},templateName:(t,e)=>U(e.item,t)}),ze=new T({name:"readable",version:"0.0.1",entities:{item:{schema:I}},events:{},actions:{read:{input:{schema:()=>I},output:{schema:t=>p.object({item:v(t.item)})}}},templateName:(t,e)=>U(e.item,t)}),qe=new T({name:"updatable",version:"0.0.1",entities:{item:{schema:I}},events:{updated:{schema:t=>p.object({item:v(t.item)})}},actions:{update:{input:{schema:t=>I.extend({item:t.item})},output:{schema:t=>p.object({item:v(t.item)})}}},templateName:(t,e)=>U(e.item,t)}),Ze=new T({name:"deletable",version:"0.0.1",entities:{item:{schema:I}},events:{deleted:{schema:t=>p.object({item:v(t.item)})}},actions:{delete:{input:{schema:()=>I},output:{schema:t=>p.object({item:v(t.item)})}}},templateName:(t,e)=>U(e.item,t)});var k="x-bot-id",V="x-bot-user-id",$="x-integration-id",W="x-webhook-id",R="x-bp-configuration",D="x-bp-operation",J="x-bp-type";var Te=require("node:http");var P=console;function f(t){if(!t.body)throw new Error("Missing body");return JSON.parse(t.body)}async function O(t,e=8072,o=Je){let i=(0,Te.createServer)(async(s,a)=>{try{let c=await Ve(s);if(c.path==="/health"){a.writeHead(200).end("ok");return}let l=await t(c);a.writeHead(l?.status??200,l?.headers??{}).end(l?.body??"{}")}catch(c){P.error("Error while handling request",{error:c?.message??"Internal error occured"}),a.writeHead(500).end(JSON.stringify({error:c?.message??"Internal error occured"}))}});return i.listen(e,()=>o(e)),i}async function Ve(t){let e=await We(t),o={};for(let s=0;s<t.rawHeaders.length;s+=2){let a=t.rawHeaders[s].toLowerCase(),c=t.rawHeaders[s+1];o[a]=c}let i=new URL(t.url??"",t.headers.host?`http://${t.headers.host}`:"http://botpress.cloud");return{body:e,path:i.pathname,query:$e(i.search,"?"),headers:o,method:t.method?.toUpperCase()??"GET"}}function $e(t,e){return t.indexOf(e)===0?t.slice(e.length):t}async function We(t){return new Promise((e,o)=>{if(t.method!=="POST"&&t.method!=="PUT"&&t.method!=="PATCH")return e(void 0);let i="";t.on("data",s=>i+=s.toString()),t.on("error",s=>o(s)),t.on("end",()=>e(i))})}function Je(t){P.info(`Listening on port ${t}`)}g(y,n,module.exports);var N=require("@botpress/client");var he=require("@bpinternal/zui");var Qe=he.z.enum(["webhook_received","message_created","action_triggered","register","unregister","ping","create_user","create_conversation"]),fe=t=>{let e=t[k],o=t[V],i=t[$],s=t[W],a=t[R],c=Qe.parse(t[D]);if(!e)throw new Error("Missing bot headers");if(!o)throw new Error("Missing bot user headers");if(!i)throw new Error("Missing integration headers");if(!s)throw new Error("Missing webhook headers");if(!a)throw new Error("Missing configuration headers");if(!c)throw new Error("Missing operation headers");return{botId:e,botUserId:o,integrationId:i,webhookId:s,operation:c,configuration:a?JSON.parse(Buffer.from(a,"base64").toString("utf-8")):{}}};var M=require("@botpress/client");var w=class{constructor(e){this.client=e}createConversation=e=>this.client.createConversation(e);getConversation=e=>this.client.getConversation(e);listConversations=e=>this.client.listConversations(e);getOrCreateConversation=e=>this.client.getOrCreateConversation(e);updateConversation=e=>this.client.updateConversation(e);deleteConversation=e=>this.client.deleteConversation(e);listParticipants=e=>this.client.listParticipants(e);addParticipant=e=>this.client.addParticipant(e);getParticipant=e=>this.client.getParticipant(e);removeParticipant=e=>this.client.removeParticipant(e);createEvent=e=>this.client.createEvent(e);getEvent=e=>this.client.getEvent(e);listEvents=e=>this.client.listEvents(e);createMessage=e=>this.client.createMessage(e);getOrCreateMessage=e=>this.client.getOrCreateMessage(e);getMessage=e=>this.client.getMessage(e);updateMessage=e=>this.client.updateMessage(e);listMessages=e=>this.client.listMessages(e);deleteMessage=e=>this.client.deleteMessage(e);createUser=e=>this.client.createUser(e);getUser=e=>this.client.getUser(e);listUsers=e=>this.client.listUsers(e);getOrCreateUser=e=>this.client.getOrCreateUser(e);updateUser=e=>this.client.updateUser(e);deleteUser=e=>this.client.deleteUser(e);getState=e=>this.client.getState(e);setState=e=>this.client.setState(e);getOrSetState=e=>this.client.getOrSetState(e);patchState=e=>this.client.patchState(e);configureIntegration=e=>this.client.configureIntegration(e);uploadFile=e=>this.client.uploadFile(e);upsertFile=e=>this.client.upsertFile(e);deleteFile=e=>this.client.deleteFile(e);listFiles=e=>this.client.listFiles(e);getFile=e=>this.client.getFile(e);updateFileMetadata=e=>this.client.updateFileMetadata(e)};var Q=Y(require("util")),G=t=>{if(process.env.BP_LOG_FORMAT==="json")return JSON.stringify({msg:Q.default.format(...t),visible_to_bot_owner:!0});{let[e,...o]=t;return Q.default.format(`[For Bot Owner] ${e}`,...o)}},ye={forBot:()=>({info:(...t)=>{console.info(G(t))},warn:(...t)=>{console.warn(G(t))},error:(...t)=>{console.error(G(t))},debug:(...t)=>{console.debug(G(t))}})};var be=t=>async e=>{let o=fe(e.headers),i=new w(new M.Client({botId:o.botId,integrationId:o.integrationId})),s={ctx:o,req:e,client:i,logger:ye,instance:t};try{let a;switch(o.operation){case"webhook_received":a=await Ye(s);break;case"register":a=await et(s);break;case"unregister":a=await tt(s);break;case"message_created":a=await st(s);break;case"action_triggered":a=await it(s);break;case"ping":a=await Xe(s);break;case"create_user":a=await nt(s);break;case"create_conversation":a=await ot(s);break;default:throw new Error(`Unknown operation ${o.operation}`)}return a?{...a,status:a.status??200}:{status:200}}catch(a){if((0,M.isApiError)(a)){let c=new M.RuntimeError(a.message,a);return{status:c.code,body:JSON.stringify(c.toJSON())}}throw a}},Xe=async t=>{},Ye=async({client:t,ctx:e,req:o,logger:i,instance:s})=>{let{req:a}=f(o);return s.webhook({client:t,ctx:e,req:a,logger:i})},et=async({client:t,ctx:e,req:o,logger:i,instance:s})=>{if(!s.register)return;let{webhookUrl:a}=f(o);await s.register({client:t,ctx:e,webhookUrl:a,logger:i})},tt=async({client:t,ctx:e,req:o,logger:i,instance:s})=>{if(!s.unregister)return;let{webhookUrl:a}=f(o);await s.unregister({ctx:e,webhookUrl:a,client:t,logger:i})},nt=async({client:t,ctx:e,req:o,logger:i,instance:s})=>{if(!s.createUser)return;let{tags:a}=f(o);return await s.createUser({ctx:e,client:t,tags:a,logger:i})},ot=async({client:t,ctx:e,req:o,logger:i,instance:s})=>{if(!s.createConversation)return;let{channel:a,tags:c}=f(o);return await s.createConversation({ctx:e,client:t,channel:a,tags:c,logger:i})},st=async({ctx:t,req:e,client:o,logger:i,instance:s})=>{let{conversation:a,user:c,type:l,payload:d,message:m}=f(e),b=s.channels[a.channel];if(!b)throw new Error(`Channel ${a.channel} not found`);let B=b.messages[l];if(!B)throw new Error(`Message of type ${l} not found in channel ${a.channel}`);await B({ctx:t,conversation:a,message:m,user:c,type:l,client:o,payload:d,ack:async({tags:x})=>{await o.updateMessage({id:m.id,tags:x})},logger:i})},it=async({req:t,ctx:e,client:o,logger:i,instance:s})=>{let{input:a,type:c}=f(t);if(!c)throw new Error("Missing action type");let l=s.actions[c];if(!l)throw new Error(`Action ${c} not found`);let d=await l({ctx:e,input:a,client:o,type:c,logger:i});return{body:JSON.stringify({output:d})}};var K=class{props;actions;channels;register;unregister;createUser;createConversation;webhook;constructor(e){this.props=e,this.actions=e.actions,this.channels=e.channels,this.register=e.register,this.unregister=e.unregister,this.createUser=e.createUser,this.createConversation=e.createConversation,this.webhook=e.handler}handler=be(this);start=e=>O(this.handler,e)};var Be=Y(require("@botpress/client"));var A=class{constructor(e){this.client=e}getConversation=e=>this.client.getConversation(e);listConversations=e=>this.client.listConversations(e);updateConversation=e=>this.client.updateConversation(e);deleteConversation=e=>this.client.deleteConversation(e);listParticipants=e=>this.client.listParticipants(e);addParticipant=e=>this.client.addParticipant(e);getParticipant=e=>this.client.getParticipant(e);removeParticipant=e=>this.client.removeParticipant(e);getEvent=e=>this.client.getEvent(e);listEvents=e=>this.client.listEvents(e);createMessage=e=>this.client.createMessage(e);getOrCreateMessage=e=>this.client.getOrCreateMessage(e);getMessage=e=>this.client.getMessage(e);updateMessage=e=>this.client.updateMessage(e);listMessages=e=>this.client.listMessages(e);deleteMessage=e=>this.client.deleteMessage(e);getUser=e=>this.client.getUser(e);listUsers=e=>this.client.listUsers(e);updateUser=e=>this.client.updateUser(e);deleteUser=e=>this.client.deleteUser(e);getState=e=>this.client.getState(e).then(o=>({state:{...o.state,payload:o.state.payload}}));setState=e=>this.client.setState(e).then(o=>({state:{...o.state,payload:o.state.payload}}));getOrSetState=e=>this.client.getOrSetState(e).then(o=>({state:{...o.state,payload:o.state.payload}}));patchState=e=>this.client.patchState(e).then(o=>({state:{...o.state,payload:o.state.payload}}));callAction=e=>this.client.callAction(e);uploadFile=e=>this.client.uploadFile(e);upsertFile=e=>this.client.upsertFile(e);deleteFile=e=>this.client.deleteFile(e);listFiles=e=>this.client.listFiles(e);getFile=e=>this.client.getFile(e);updateFileMetadata=e=>this.client.updateFileMetadata(e);searchFiles=e=>this.client.searchFiles(e);createConversation=e=>this.client.createConversation(e);getOrCreateConversation=e=>this.client.getOrCreateConversation(e);createUser=e=>this.client.createUser(e);getOrCreateUser=e=>this.client.getOrCreateUser(e)};var Ie=require("@bpinternal/zui");var at=Ie.z.enum(["event_received","register","unregister","ping","action_triggered"]),ve=t=>{let e=t[k],o=t[R],i=t[J],s=at.parse(t[D]);if(!e)throw new Error("Missing bot headers");if(!i)throw new Error("Missing type headers");if(!o)throw new Error("Missing configuration headers");if(!s)throw new Error("Missing operation headers");return{botId:e,operation:s,type:i,configuration:o?JSON.parse(Buffer.from(o,"base64").toString("utf-8")):{}}};var xe=t=>async e=>{let o=ve(e.headers);o.operation!=="ping"&&P.info(`Received ${o.operation} operation for bot ${o.botId} of type ${o.type}`);let i=new A(new Be.Client({botId:o.botId})),s={req:e,ctx:o,client:i,instance:t};switch(o.operation){case"action_triggered":throw new Error(`Operation ${o.operation} not supported yet`);case"event_received":await pt(s);break;case"register":await ct(s);break;case"unregister":await lt(s);break;case"ping":await rt(s);break;default:throw new Error(`Unknown operation ${o.operation}`)}return{status:200}},rt=async t=>{},ct=async t=>{},lt=async t=>{},pt=async({ctx:t,req:e,client:o,instance:i})=>{P.debug(`Received event ${t.type}`);let s=f(e),a=s.event;switch(t.type){case"message_created":let c={user:a.payload.user,conversation:a.payload.conversation,message:a.payload.message,states:a.payload.states,event:a};await Promise.all(i.messageHandlers.map(m=>m({client:o,ctx:t,...c})));break;case"state_expired":let l={state:a.payload.state};await Promise.all(i.stateExpiredHandlers.map(m=>m({client:o,ctx:t,...l})));break;default:let d={event:s.event};await Promise.all(i.eventHandlers.map(m=>m({client:o,ctx:t,...d})))}};var _=class{_state={messageHandlers:[],eventHandlers:[],stateExpiredHandlers:[]};props;constructor(e){this.props=e}message=e=>{this._state.messageHandlers.push(e)};event=e=>{this._state.eventHandlers.push(e)};stateExpired=e=>{this._state.stateExpiredHandlers.push(e)};handler=xe(this._state);start=e=>O(this.handler,e)};0&&(module.exports={Bot,BotSpecificClient,Integration,IntegrationDefinition,IntegrationSpecificClient,InterfaceDeclaration,RuntimeError,botIdHeader,botUserIdHeader,configurationHeader,integrationIdHeader,interfaces,isApiError,messages,operationHeader,parseBody,serve,studioComponentDefinitions,typeHeader,webhookIdHeader});
2
2
  //# sourceMappingURL=index.js.map