@botpress/sdk 3.3.2 → 3.4.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.
package/dist/index.mjs CHANGED
@@ -85,7 +85,7 @@ ${v}`.trim();case z.ZodFirstPartyTypeKind.ZodEnum:return s.values.map(jt).join("
85
85
  `))):j=M.stylize("[Circular]","special")),X(S)){if(C&&ve.match(/^\d+$/))return j;S=JSON.stringify(""+ve),S.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(S=S.slice(1,-1),S=M.stylize(S,"name")):(S=S.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),S=M.stylize(S,"string"))}return S+": "+j}function E(M,Z,F){var fe=M.reduce(function(ve,C){return C.indexOf(`
86
86
  `)>=0,ve+C.replace(/\u001b\[\d\d?m/g,"").length+1},0);return fe>60?F[0]+(Z===""?"":Z+`
87
87
  `)+" "+M.join(`,
88
- `)+" "+F[1]:F[0]+Z+" "+M.join(", ")+" "+F[1]}xe.types=OS();function B(M){return Array.isArray(M)}xe.isArray=B;function v(M){return typeof M=="boolean"}xe.isBoolean=v;function I(M){return M===null}xe.isNull=I;function P(M){return M==null}xe.isNullOrUndefined=P;function D(M){return typeof M=="number"}xe.isNumber=D;function $(M){return typeof M=="string"}xe.isString=$;function ae(M){return typeof M=="symbol"}xe.isSymbol=ae;function X(M){return M===void 0}xe.isUndefined=X;function ue(M){return ee(M)&&Ne(M)==="[object RegExp]"}xe.isRegExp=ue,xe.types.isRegExp=ue;function ee(M){return typeof M=="object"&&M!==null}xe.isObject=ee;function ie(M){return ee(M)&&Ne(M)==="[object Date]"}xe.isDate=ie,xe.types.isDate=ie;function Oe(M){return ee(M)&&(Ne(M)==="[object Error]"||M instanceof Error)}xe.isError=Oe,xe.types.isNativeError=Oe;function Se(M){return typeof M=="function"}xe.isFunction=Se;function $e(M){return M===null||typeof M=="boolean"||typeof M=="number"||typeof M=="string"||typeof M=="symbol"||typeof M>"u"}xe.isPrimitive=$e,xe.isBuffer=MS();function Ne(M){return Object.prototype.toString.call(M)}function Me(M){return M<10?"0"+M.toString(10):M.toString(10)}var We=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Ae(){var M=new Date,Z=[Me(M.getHours()),Me(M.getMinutes()),Me(M.getSeconds())].join(":");return[M.getDate(),We[M.getMonth()],Z].join(" ")}xe.log=function(){console.log("%s - %s",Ae(),xe.format.apply(xe,arguments))},xe.inherits=Ct(),xe._extend=function(M,Z){if(!Z||!ee(Z))return M;for(var F=Object.keys(Z),fe=F.length;fe--;)M[F[fe]]=Z[F[fe]];return M};function me(M,Z){return Object.prototype.hasOwnProperty.call(M,Z)}var Pe=typeof Symbol<"u"?Symbol("util.promisify.custom"):void 0;xe.promisify=function(Z){if(typeof Z!="function")throw new TypeError('The "original" argument must be of type Function');if(Pe&&Z[Pe]){if(F=Z[Pe],typeof F!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(F,Pe,{value:F,enumerable:!1,writable:!1,configurable:!0}),F}function F(){for(var fe,ve,C=new Promise(function(V,oe){fe=V,ve=oe}),S=[],j=0;j<arguments.length;j++)S.push(arguments[j]);S.push(function(V,oe){V?ve(V):fe(oe)});try{Z.apply(this||Vr,S)}catch(V){ve(V)}return C}return Object.setPrototypeOf(F,Object.getPrototypeOf(Z)),Pe&&Object.defineProperty(F,Pe,{value:F,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(F,e(Z))},xe.promisify.custom=Pe;function ce(M,Z){if(!M){var F=new Error("Promise was rejected with a falsy value");F.reason=M,M=F}return Z(M)}function he(M){if(typeof M!="function")throw new TypeError('The "original" argument must be of type Function');function Z(){for(var F=[],fe=0;fe<arguments.length;fe++)F.push(arguments[fe]);var ve=F.pop();if(typeof ve!="function")throw new TypeError("The last argument must be of type Function");var C=this||Vr,S=function(){return ve.apply(C,arguments)};M.apply(this||Vr,F).then(function(j){t.nextTick(S.bind(null,null,j))},function(j){t.nextTick(ce.bind(null,j,S))})}return Object.setPrototypeOf(Z,Object.getPrototypeOf(M)),Object.defineProperties(Z,e(M)),Z}return xe.callbackify=he,xe}var le=DS();le.format;le.deprecate;le.debuglog;le.inspect;le.types;le.isArray;le.isBoolean;le.isNull;le.isNullOrUndefined;le.isNumber;le.isString;le.isSymbol;le.isUndefined;le.isRegExp;le.isObject;le.isDate;le.isError;le.isFunction;le.isPrimitive;le.isBuffer;le.log;le.inherits;le._extend;le.promisify;le.callbackify;var zR=le._extend,GR=le.callbackify,VR=le.debuglog,WR=le.deprecate,JR=le.format,YR=le.inherits,XR=le.inspect,QR=le.isArray,ek=le.isBoolean,tk=le.isBuffer,nk=le.isDate,rk=le.isError,ik=le.isFunction,ak=le.isNull,ok=le.isNullOrUndefined,sk=le.isNumber,lk=le.isObject,uk=le.isPrimitive,ck=le.isRegExp,fk=le.isString,dk=le.isSymbol,pk=le.isUndefined,gk=le.log,yk=le.promisify,mk=le.types,hk=le.TextEncoder=globalThis.TextEncoder,vk=le.TextDecoder=globalThis.TextDecoder;var pr=class{defaultOptions;constructor(e){this.defaultOptions=e}info(...e){this._log("info",e)}debug(...e){this._log("debug",e)}warn(...e){this._log("warn",e)}error(...e){this._log("error",e)}_log(e,n){this._getConsoleMethod(e)(this._serializeMessage(n))}_serializeMessage(e){let n=le.format(...e);return Y.env.BP_LOG_FORMAT==="json"?this.getJsonMessage(n):n}getJsonMessage(e){return JSON.stringify({msg:e,options:this.defaultOptions})}_getConsoleMethod(e){switch(e){case"debug":return console.debug;case"warn":return console.warn;case"error":return console.error;default:return console.info}}};var On=class extends pr{constructor(e){super({visibleToBotOwners:!0,...e})}with(e){return new On({...this.defaultOptions,...e})}withUserId(e){return this.with({userId:e})}withConversationId(e){return this.with({conversationId:e})}withVisibleToBotOwners(e){return this.with({visibleToBotOwners:e})}forBot(){return this.withVisibleToBotOwners(!0)}getJsonMessage(e){return JSON.stringify({msg:e,visible_to_bot_owner:this.defaultOptions.visibleToBotOwners,options:this.defaultOptions})}};R();O();k();var gv=t=>async e=>{let n=Rh(e.headers),r=new HS({botId:n.botId,integrationId:n.integrationId,retry:Ua}),a=new qr(r),o=new On,i={ctx:n,req:e,client:a,logger:o,instance:t};try{let s;switch(n.operation){case"webhook_received":s=await jS(i);break;case"register":s=await $S(i);break;case"unregister":s=await ZS(i);break;case"message_created":s=await KS(i);break;case"action_triggered":s=await qS(i);break;case"ping":s=await US(i);break;case"create_user":s=await LS(i);break;case"create_conversation":s=await FS(i);break;default:throw new Error(`Unknown operation ${n.operation}`)}return s?{...s,status:s.status??200}:{status:200}}catch(s){if(NS(s)){let f=s.type==="Runtime"?s:new pv(s.message,s);return o.forBot().error(f.message),{status:f.code,body:JSON.stringify(f.toJSON())}}console.error(s);let l=new pv("An unexpected error occurred in the integration. Bot owners: Check logs for more informations. Integration owners: throw a RuntimeError to return a custom error message instead.");return o.forBot().error(l.message),{status:l.code,body:JSON.stringify(l.toJSON())}}},US=async t=>{},jS=async({client:t,ctx:e,req:n,logger:r,instance:a})=>{let{req:o}=It(n);return a.webhook({client:t,ctx:e,req:o,logger:r})},$S=async({client:t,ctx:e,req:n,logger:r,instance:a})=>{if(!a.register)return;let{webhookUrl:o}=It(n);await a.register({client:t,ctx:e,webhookUrl:o,logger:r})},ZS=async({client:t,ctx:e,req:n,logger:r,instance:a})=>{if(!a.unregister)return;let{webhookUrl:o}=It(n);await a.unregister({ctx:e,webhookUrl:o,client:t,logger:r})},LS=async({client:t,ctx:e,req:n,logger:r,instance:a})=>{if(!a.createUser)return;let{tags:o}=It(n);return await a.createUser({ctx:e,client:t,tags:o,logger:r})},FS=async({client:t,ctx:e,req:n,logger:r,instance:a})=>{if(!a.createConversation)return;let{channel:o,tags:i}=It(n);return await a.createConversation({ctx:e,client:t,channel:o,tags:i,logger:r})},KS=async({ctx:t,req:e,client:n,logger:r,instance:a})=>{let{conversation:o,user:i,type:s,payload:l,message:f}=It(e),g=a.channels[o.channel];if(!g)throw new Error(`Channel ${o.channel} not found`);let y=g.messages[s];if(!y)throw new Error(`Message of type ${s} not found in channel ${o.channel}`);await y({ctx:t,conversation:o,message:f,user:i,type:s,client:n,payload:l,ack:async({tags:m})=>{await n.updateMessage({id:f.id,tags:m})},logger:r})},qS=async({req:t,ctx:e,client:n,logger:r,instance:a})=>{let{input:o,type:i}=It(t);if(!i)throw new Error("Missing action type");let s=a.actions[i];if(!s)throw new Error(`Action ${i} not found`);let l=new ja,g={output:await s({ctx:e,input:o,client:n,type:i,logger:r,metadata:l}),meta:l.toJSON()};return{body:JSON.stringify(g)}};var Ol=class{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}actions;channels;register;unregister;createUser;createConversation;webhook;handler=gv(this);start=e=>Na(this.handler,e)};R();O();k();R();O();k();R();O();k();R();O();k();R();O();k();var Ml=class{constructor(e){this.props=e;this.integrations=e.integrations,this.plugins=e.plugins,this.user=e.user,this.conversation=e.conversation,this.message=e.message,this.states=e.states,this.configuration=e.configuration,this.events=e.events,this.recurringEvents=e.recurringEvents,this.actions=e.actions,this.tables=e.tables}integrations;plugins;user;conversation;message;states;configuration;events;recurringEvents;actions;tables;addIntegration(e,n){let r=this;return r.integrations||(r.integrations={}),r.integrations[e.name]={enabled:n.enabled,...e,configurationType:n.configurationType,configuration:n.configuration},this}addPlugin(e,n){let r=this;return r.plugins||(r.plugins={}),r.plugins[e.name]={...e,configuration:n.configuration,interfaces:n.interfaces},r.user=this._mergeUser(r.user,e.definition.user),r.conversation=this._mergeConversation(r.conversation,e.definition.conversation),r.message=this._mergeMessage(r.message,e.definition.message),r.states=this._mergeStates(r.states,e.definition.states),r.events=this._mergeEvents(r.events,e.definition.events),r.recurringEvents=this._mergeRecurringEvents(r.recurringEvents,e.definition.recurringEvents),r.actions=this._mergeActions(r.actions,e.definition.actions),r.tables=this._mergeTables(r.tables,e.definition.tables),this}_mergeUser=(e,n)=>({tags:{...e?.tags,...n?.tags}});_mergeConversation=(e,n)=>({tags:{...e?.tags,...n?.tags}});_mergeMessage=(e,n)=>({tags:{...e?.tags,...n?.tags}});_mergeStates=(e,n)=>({...e,...n});_mergeEvents=(e,n)=>({...e,...n});_mergeRecurringEvents=(e,n)=>({...e,...n});_mergeActions=(e,n)=>({...e,...n});_mergeTables=(e,n)=>({...e,...n})};R();O();k();R();O();k();import*as mv from"@botpress/client";R();O();k();var Mn=class extends pr{constructor(e){super({...e})}with(e){return new Mn({...this.defaultOptions,...e})}withUserId(e){return this.with({userId:e})}withConversationId(e){return this.with({conversationId:e})}withWorkflowId(e){return this.with({workflowId:e})}};R();O();k();R();O();k();var Xt=class{constructor(e,n={before:{},after:{}}){this._client=e;this._hooks=n}getConversation=e=>this._run("getConversation",e);listConversations=e=>this._run("listConversations",e);updateConversation=e=>this._run("updateConversation",e);deleteConversation=e=>this._run("deleteConversation",e);listParticipants=e=>this._run("listParticipants",e);addParticipant=e=>this._run("addParticipant",e);getParticipant=e=>this._run("getParticipant",e);removeParticipant=e=>this._run("removeParticipant",e);getEvent=e=>this._run("getEvent",e);listEvents=e=>this._run("listEvents",e);createMessage=e=>this._run("createMessage",e);getOrCreateMessage=e=>this._run("getOrCreateMessage",e);getMessage=e=>this._run("getMessage",e);updateMessage=e=>this._run("updateMessage",e);listMessages=e=>this._run("listMessages",e);deleteMessage=e=>this._run("deleteMessage",e);getUser=e=>this._run("getUser",e);listUsers=e=>this._run("listUsers",e);updateUser=e=>this._run("updateUser",e);deleteUser=e=>this._run("deleteUser",e);getState=e=>this._run("getState",e);setState=e=>this._run("setState",e);getOrSetState=e=>this._run("getOrSetState",e);patchState=e=>this._run("patchState",e);callAction=e=>this._run("callAction",e);uploadFile=e=>this._run("uploadFile",e);upsertFile=e=>this._run("upsertFile",e);deleteFile=e=>this._run("deleteFile",e);listFiles=e=>this._run("listFiles",e);getFile=e=>this._run("getFile",e);updateFileMetadata=e=>this._run("updateFileMetadata",e);searchFiles=e=>this._run("searchFiles",e);trackAnalytics=e=>this._run("trackAnalytics",e);getTableRow=e=>this._run("getTableRow",e);createTableRows=e=>this._run("createTableRows",e);findTableRows=e=>this._run("findTableRows",e);deleteTableRows=e=>this._run("deleteTableRows",e);updateTableRows=e=>this._run("updateTableRows",e);upsertTableRows=e=>this._run("upsertTableRows",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);_run=async(e,n)=>{let r=this._hooks.before[e];r&&(n=await r(n));let a=await this._client[e](n),o=this._hooks.after[e];return o&&(a=await o(a)),a}};R();O();k();var zS=re.enum(["event_received","register","unregister","ping","action_triggered"]),yv=t=>{let e=t[da],n=t[pa],r=t[Sy],a=zS.parse(t[ga]);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(!a)throw new Error("Missing operation headers");return{botId:e,operation:a,type:r,configuration:n?JSON.parse(W.from(n,"base64").toString("utf-8")):{}}};R();O();k();var Mt={status:200},hv=t=>async e=>{let n=yv(e.headers),r=new Mn,a=new mv.Client({botId:n.botId,retry:Ua}),o=new Xt(a,{before:{createMessage:async s=>{let l=t.hookHandlers.before_outgoing_message[s.type]??[];for(let f of l)s=(await f({client:new Xt(a),ctx:n,logger:r,data:s}))?.data??s;return s},callAction:async s=>{let l=t.hookHandlers.before_outgoing_call_action[s.type]??[];for(let f of l)s=(await f({client:new Xt(a),ctx:n,logger:r,data:s}))?.data??s;return s}},after:{createMessage:async s=>{let l=t.hookHandlers.after_outgoing_message[s.message.type]??[];for(let f of l)s=(await f({client:new Xt(a),ctx:n,logger:r,data:s}))?.data??s;return s},callAction:async s=>{let l=t.hookHandlers.after_outgoing_call_action[s.output.type]??[];for(let f of l)s=(await f({client:new Xt(a),ctx:n,logger:r,data:s}))?.data??s;return s}}}),i={req:e,ctx:n,logger:r,client:o,self:t};switch(n.operation){case"action_triggered":return await YS(i);case"event_received":return await JS(i);case"register":return await VS(i);case"unregister":return await WS(i);case"ping":return await GS(i);default:throw new Error(`Unknown operation ${n.operation}`)}},GS=async({ctx:t})=>(tr.info(`Received ${t.operation} operation for bot ${t.botId} of type ${t.type}`),Mt),VS=async t=>Mt,WS=async t=>Mt,JS=async({ctx:t,logger:e,req:n,client:r,self:a})=>{let o={client:r,ctx:t,logger:e};tr.debug(`Received event ${t.type}`);let i=It(n);if(t.type==="message_created"){let p=i.event,m=p.payload.message,_=a.hookHandlers.before_incoming_message[m.type]??[];for(let I of _){let P=await I({...o,data:m});if(m=P?.data??m,P?.stop)return Mt}let E={...o,user:p.payload.user,conversation:p.payload.conversation,states:p.payload.states,message:m,event:p},B=a.messageHandlers[m.type]??[];for(let I of B)await I(E);let v=a.hookHandlers.after_incoming_message[m.type]??[];for(let I of v){let P=await I({...o,data:m});if(m=P?.data??m,P?.stop)return Mt}return Mt}if(t.type==="state_expired"){let m=i.event.payload.state,_={...o,state:m},E=a.stateExpiredHandlers["*"]??[];for(let B of E)await B(_);return Mt}let s=i.event,l=a.hookHandlers.before_incoming_event[s.type]??[];for(let p of l){let m=await p({...o,data:s});if(s=m?.data??s,m?.stop)return Mt}let f={...o,event:s},g=a.eventHandlers[s.type]??[];for(let p of g)await p(f);let y=a.hookHandlers.after_incoming_event[s.type]??[];for(let p of y){let m=await p({...o,data:s});if(s=m?.data??s,m?.stop)return Mt}return Mt},YS=async({ctx:t,logger:e,req:n,client:r,self:a})=>{let{input:o,type:i}=It(n);if(!i)throw new Error("Missing action type");let s=a.actionHandlers[i];if(!s)throw new Error(`Action ${i} not found`);let f={output:await s({ctx:t,logger:e,input:o,client:r,type:i})};return{status:200,body:JSON.stringify(f)}};var Dl=class{constructor(e){this.props=e;this._actionHandlers=e.actions,this._plugins=e.plugins}_actionHandlers;_messageHandlers={};_eventHandlers={};_stateExpiredHandlers={};_hookHandlers={before_incoming_event:{},before_incoming_message:{},before_outgoing_message:{},before_outgoing_call_action:{},after_incoming_event:{},after_incoming_message:{},after_outgoing_message:{},after_outgoing_call_action:{}};_plugins={};get actionHandlers(){let e=this._actionHandlers,n=Object.values(this._plugins).reduce((r,a)=>({...r,...a.actionHandlers}),{});return{...e,...n}}get messageHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._messageHandlers[n]??[],a=this._messageHandlers["*"]??[],o=[...r,...a],i=Object.values(this._plugins).flatMap(s=>s.messageHandlers[n]??[]);return Re.unique([...o,...i])}})}get eventHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._eventHandlers[n]??[],a=this._eventHandlers["*"]??[],o=[...r,...a],i=Object.values(this._plugins).flatMap(s=>s.eventHandlers[n]??[]);return Re.unique([...o,...i])}})}get stateExpiredHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._stateExpiredHandlers[n]??[],a=this._stateExpiredHandlers["*"]??[],o=[...r,...a],i=Object.values(this._plugins).flatMap(s=>s.stateExpiredHandlers[n]??[]);return Re.unique([...o,...i])}})}get hookHandlers(){return new Proxy({},{get:(e,n)=>new Proxy({},{get:(r,a)=>{let o=n,i=this._hookHandlers[o]??{},s=i[a]??[],l=i["*"]??[],f=[...s,...l],g=Object.values(this._plugins).flatMap(y=>y.hookHandlers[o]?.[a]??[]);return Re.unique([...f,...g])}})})}on={message:(e,n)=>{this._messageHandlers[e]=Re.safePush(this._messageHandlers[e],n)},event:(e,n)=>{this._eventHandlers[e]=Re.safePush(this._eventHandlers[e],n)},stateExpired:(e,n)=>{this._stateExpiredHandlers[e]=Re.safePush(this._stateExpiredHandlers[e],n)},beforeIncomingEvent:(e,n)=>{this._hookHandlers.before_incoming_event[e]=Re.safePush(this._hookHandlers.before_incoming_event[e],n)},beforeIncomingMessage:(e,n)=>{this._hookHandlers.before_incoming_message[e]=Re.safePush(this._hookHandlers.before_incoming_message[e],n)},beforeOutgoingMessage:(e,n)=>{this._hookHandlers.before_outgoing_message[e]=Re.safePush(this._hookHandlers.before_outgoing_message[e],n)},beforeOutgoingCallAction:(e,n)=>{this._hookHandlers.before_outgoing_call_action[e]=Re.safePush(this._hookHandlers.before_outgoing_call_action[e],n)},afterIncomingEvent:(e,n)=>{this._hookHandlers.after_incoming_event[e]=Re.safePush(this._hookHandlers.after_incoming_event[e],n)},afterIncomingMessage:(e,n)=>{this._hookHandlers.after_incoming_message[e]=Re.safePush(this._hookHandlers.after_incoming_message[e],n)},afterOutgoingMessage:(e,n)=>{this._hookHandlers.after_outgoing_message[e]=Re.safePush(this._hookHandlers.after_outgoing_message[e],n)},afterOutgoingCallAction:(e,n)=>{this._hookHandlers.after_outgoing_call_action[e]=Re.safePush(this._hookHandlers.after_outgoing_call_action[e],n)}};handler=hv(this);start=e=>Na(this.handler,e)};R();O();k();R();O();k();R();O();k();R();O();k();R();O();k();var Nl=class{constructor(e){this.props=e;this.name=e.name,this.version=e.version,this.entities=e.entities??{};let n=this._getEntityReference(this.entities),r=e.events===void 0?{}:ze.mapValues(e.events,i=>({...i,schema:i.schema(n)})),a=e.actions===void 0?{}:ze.mapValues(e.actions,i=>({...i,input:{...i.input,schema:i.input.schema(n)},output:{...i.output,schema:i.output.schema(n)}})),o=e.channels===void 0?{}:ze.mapValues(e.channels,i=>({...i,messages:ze.mapValues(i.messages,s=>({...s,schema:s.schema(n)}))}));this.events=r,this.actions=a,this.channels=o}name;version;entities;events;actions;channels;_getEntityReference=e=>{let n={};for(let[r,a]of Object.entries(e)){let o=a.schema._def["x-zui"]?.title,i=a.schema._def.description,s=py.ref(r);o&&s.title(o),i&&s.describe(i),n[r]=s}return n}};R();O();k();R();O();k();R();O();k();R();O();k();var Hl=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.description=e.description,this.integrations=e.integrations,this.interfaces=e.interfaces,this.user=e.user,this.conversation=e.conversation,this.message=e.message,this.states=e.states,this.configuration=e.configuration,this.events=e.events,this.recurringEvents=e.recurringEvents,this.actions=e.actions,this.tables=e.tables}name;version;title;description;icon;readme;integrations;interfaces;user;conversation;message;states;configuration;events;recurringEvents;actions;tables};R();O();k();R();O();k();R();O();k();R();O();k();var Ul=":";var vv=t=>{let[e,n]=t.split(Ul);return!e||!n?null:{namespace:e,eventName:n}},Tv=t=>`${t.namespace}${Ul}${t.actionName}`,bv=t=>`${t.namespace}${Ul}${t.eventName}`,_v=(t,e)=>{let n=e[t.namespace]??{name:t.namespace,version:"0.0.0",entities:{},actions:{},events:{},channels:{}},r=n.name,a=n.actions[t.actionName]?.name??t.actionName;return{namespace:r,actionName:a}},xv=(t,e)=>{let n=e[t.namespace]??{name:t.namespace,version:"0.0.0",entities:{},actions:{},events:{},channels:{}},r=n.name,a=n.events[t.eventName]?.name??t.eventName;return{namespace:r,eventName:a}};var wv=(t,e)=>new Proxy({},{get:(n,r)=>new Proxy({},{get:(a,o)=>i=>XS({client:t,interfaces:e,integrationOrInterfaceName:r,methodName:o,input:i})})}),XS=async({client:t,interfaces:e,integrationOrInterfaceName:n,methodName:r,input:a})=>{let o=_v({namespace:n,actionName:r},e),i=Tv(o);return(await t.callAction({type:i,input:a})).output};R();O();k();var jl=class{constructor(e){this.props=e;this._actionHandlers=e.actions}_runtimeProps;_actionHandlers;_messageHandlers={};_eventHandlers={};_stateExpiredHandlers={};_hookHandlers={before_incoming_event:{},before_incoming_message:{},before_outgoing_message:{},before_outgoing_call_action:{},after_incoming_event:{},after_incoming_message:{},after_outgoing_message:{},after_outgoing_call_action:{}};initialize(e){return this._runtimeProps=e,this}get _runtime(){if(!this._runtimeProps)throw new Error("Plugin not correctly initialized. This is likely because you access your plugin config outside of an handler.");return this._runtimeProps}_getTools(e){let{configuration:n,interfaces:r}=this._runtime,a=wv(e,r);return{configuration:n,interfaces:r,actions:a}}get actionHandlers(){let e=this._actionHandlers,n={};for(let[r,a]of ze.pairs(e))n[r]=async o=>a({...o,...this._getTools(o.client)});return n}get messageHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._messageHandlers[n]??[],a=this._messageHandlers["*"]??[];return Re.unique([...r,...a]).map(i=>kn.setName(s=>i({...s,...this._getTools(s.client)}),i.name))}})}get eventHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._eventHandlers[n]??[],a=Object.entries(this._eventHandlers).filter(([s])=>this._eventResolvesTo(s,n)).flatMap(([,s])=>s??[]),o=this._eventHandlers["*"]??[];return Re.unique([...r,...a,...o]).map(s=>kn.setName(l=>s({...l,...this._getTools(l.client)}),s.name))}})}get stateExpiredHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._stateExpiredHandlers[n]??[],a=this._stateExpiredHandlers["*"]??[];return Re.unique([...r,...a]).map(i=>kn.setName(s=>i({...s,...this._getTools(s.client)}),i.name))}})}get hookHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._hookHandlers[n];if(r)return new Proxy({},{get:(a,o)=>{let i=r[o]??[],s=Object.entries(r).filter(([g])=>this._eventResolvesTo(g,o)).flatMap(([,g])=>g??[]),l=r["*"]??[];return Re.unique([...i,...s,...l]).map(g=>kn.setName(y=>g({...y,...this._getTools(y.client)}),g.name))}})}})}on={message:(e,n)=>{this._messageHandlers[e]=Re.safePush(this._messageHandlers[e],n)},event:(e,n)=>{this._eventHandlers[e]=Re.safePush(this._eventHandlers[e],n)},stateExpired:(e,n)=>{this._stateExpiredHandlers[e]=Re.safePush(this._stateExpiredHandlers[e],n)},beforeIncomingEvent:(e,n)=>{this._hookHandlers.before_incoming_event[e]=Re.safePush(this._hookHandlers.before_incoming_event[e],n)},beforeIncomingMessage:(e,n)=>{this._hookHandlers.before_incoming_message[e]=Re.safePush(this._hookHandlers.before_incoming_message[e],n)},beforeOutgoingMessage:(e,n)=>{this._hookHandlers.before_outgoing_message[e]=Re.safePush(this._hookHandlers.before_outgoing_message[e],n)},beforeOutgoingCallAction:(e,n)=>{this._hookHandlers.before_outgoing_call_action[e]=Re.safePush(this._hookHandlers.before_outgoing_call_action[e],n)},afterIncomingEvent:(e,n)=>{this._hookHandlers.after_incoming_event[e]=Re.safePush(this._hookHandlers.after_incoming_event[e],n)},afterIncomingMessage:(e,n)=>{this._hookHandlers.after_incoming_message[e]=Re.safePush(this._hookHandlers.after_incoming_message[e],n)},afterOutgoingMessage:(e,n)=>{this._hookHandlers.after_outgoing_message[e]=Re.safePush(this._hookHandlers.after_outgoing_message[e],n)},afterOutgoingCallAction:(e,n)=>{this._hookHandlers.after_outgoing_call_action[e]=Re.safePush(this._hookHandlers.after_outgoing_call_action[e],n)}};_eventResolvesTo=(e,n)=>{let r=vv(e);if(!r)return!1;let a=xv(r,this._runtime.interfaces);return bv(a)===n}};R();O();k();R();O();k();R();O();k();R();O();k();R();O();k();R();O();k();export{aw as BRAND,Dl as Bot,Ml as BotDefinition,Mn as BotLogger,Xt as BotSpecificClient,qn as DIRTY,rw as EMPTY_PATH,Ir as ErrorBoundary,de as INVALID,Ol as Integration,Js as IntegrationDefinition,On as IntegrationLogger,qr as IntegrationSpecificClient,Nl as InterfaceDefinition,xE as NEVER,ut as OK,Bt as ParseInputLazyPath,pt as ParseStatus,jl as Plugin,Hl as PluginDefinition,zD as RuntimeError,ye as Schema,xi as ZodAny,Or as ZodArray,Oo as ZodBigInt,Mo as ZodBoolean,Do as ZodBranded,No as ZodCatch,Ho as ZodDate,sa as ZodDefault,ng as ZodDiscriminatedUnion,vn as ZodEffects,er as ZodEnum,$t as ZodError,Lp as ZodFirstPartyTypeKind,ig as ZodFunction,jo as ZodIntersection,G as ZodIssueCode,$o as ZodLazy,Zo as ZodLiteral,sg as ZodMap,ug as ZodNaN,Lo as ZodNativeEnum,hn as ZodNever,Fo as ZodNull,Gn as ZodNullable,Ko as ZodNumber,Vn as ZodObject,tn as ZodOptional,ne as ZodParsedType,qo as ZodPipeline,ua as ZodPromise,ca as ZodReadonly,mg as ZodRecord,vg as ZodRef,ye as ZodSchema,Tg as ZodSet,ct as ZodString,Rg as ZodSymbol,vn as ZodTransformer,Jn as ZodTuple,ye as ZodType,zo as ZodUndefined,Go as ZodUnion,Pr as ZodUnknown,Dg as ZodVoid,GA as ZuiForm,te as addIssueToContext,Iw as agent,kw as aimodel,Fw as any,Gw as array,Uw as bigint,uy as boolean,da as botIdHeader,Ey as botUserIdHeader,_E as coerce,pa as configurationHeader,Iy as configurationTypeHeader,Ew as conversation,la as createZodEnum,_g as cuid2Regex,bg as cuidRegex,eg as custom,Ow as datasource,jw as date,Sg as datetimeRegex,VA as defaultComponentDefinitions,Yw as discriminatedUnion,nf as effect,Eg as emailRegex,lE as enum,se as errorUtil,Sw as event,TE as fromJsonSchema,bE as fromObject,aE as function,Rr as getErrorMap,en as getParsedType,Nw as instanceof,By as integrationIdHeader,Rw as intent,Xw as intersection,Pg as ipv4Regex,Ig as ipv6Regex,uo as isAborted,qD as isApiError,bi as isAsync,co as isDirty,ow as isEmojiRegex,kr as isValid,fa as jsonSchemaToZui,Mw as knowledgebase,Dw as late,oE as lazy,sE as literal,Ti as makeIssue,rE as map,Nr as mergeObjectSchemas,Pw as message,wy as messages,Hw as nan,uE as nativeEnum,qw as never,Lw as null,dE as nullable,ly as number,Vw as object,Mr as objectToZui,lo as objectUtil,vE as oboolean,hE as onumber,ga as operationHeader,fE as optional,mE as ostring,It as parseBody,yE as pipeline,gE as preprocess,ge as processCreateParams,cE as promise,nw as quotelessJson,nE as readonly,eE as record,tE as ref,Na as serve,iE as set,qp as setErrorMap,Ww as strictObject,sy as string,$w as symbol,Aw as table,Cw as tablerow,nf as transformer,WA as transforms,Qw as tuple,Sy as typeHeader,xg as ulidRegex,Zw as undefined,Jw as union,Kw as unknown,Bw as user,be as util,wg as uuidRegex,ww as variable,zw as void,Py as webhookIdHeader,zE as withErrorBoundary,re as z,Yo as zuiToJsonSchema};
88
+ `)+" "+F[1]:F[0]+Z+" "+M.join(", ")+" "+F[1]}xe.types=OS();function B(M){return Array.isArray(M)}xe.isArray=B;function v(M){return typeof M=="boolean"}xe.isBoolean=v;function I(M){return M===null}xe.isNull=I;function P(M){return M==null}xe.isNullOrUndefined=P;function D(M){return typeof M=="number"}xe.isNumber=D;function $(M){return typeof M=="string"}xe.isString=$;function ae(M){return typeof M=="symbol"}xe.isSymbol=ae;function X(M){return M===void 0}xe.isUndefined=X;function ue(M){return ee(M)&&Ne(M)==="[object RegExp]"}xe.isRegExp=ue,xe.types.isRegExp=ue;function ee(M){return typeof M=="object"&&M!==null}xe.isObject=ee;function ie(M){return ee(M)&&Ne(M)==="[object Date]"}xe.isDate=ie,xe.types.isDate=ie;function Oe(M){return ee(M)&&(Ne(M)==="[object Error]"||M instanceof Error)}xe.isError=Oe,xe.types.isNativeError=Oe;function Se(M){return typeof M=="function"}xe.isFunction=Se;function $e(M){return M===null||typeof M=="boolean"||typeof M=="number"||typeof M=="string"||typeof M=="symbol"||typeof M>"u"}xe.isPrimitive=$e,xe.isBuffer=MS();function Ne(M){return Object.prototype.toString.call(M)}function Me(M){return M<10?"0"+M.toString(10):M.toString(10)}var We=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Ae(){var M=new Date,Z=[Me(M.getHours()),Me(M.getMinutes()),Me(M.getSeconds())].join(":");return[M.getDate(),We[M.getMonth()],Z].join(" ")}xe.log=function(){console.log("%s - %s",Ae(),xe.format.apply(xe,arguments))},xe.inherits=Ct(),xe._extend=function(M,Z){if(!Z||!ee(Z))return M;for(var F=Object.keys(Z),fe=F.length;fe--;)M[F[fe]]=Z[F[fe]];return M};function me(M,Z){return Object.prototype.hasOwnProperty.call(M,Z)}var Pe=typeof Symbol<"u"?Symbol("util.promisify.custom"):void 0;xe.promisify=function(Z){if(typeof Z!="function")throw new TypeError('The "original" argument must be of type Function');if(Pe&&Z[Pe]){if(F=Z[Pe],typeof F!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(F,Pe,{value:F,enumerable:!1,writable:!1,configurable:!0}),F}function F(){for(var fe,ve,C=new Promise(function(V,oe){fe=V,ve=oe}),S=[],j=0;j<arguments.length;j++)S.push(arguments[j]);S.push(function(V,oe){V?ve(V):fe(oe)});try{Z.apply(this||Vr,S)}catch(V){ve(V)}return C}return Object.setPrototypeOf(F,Object.getPrototypeOf(Z)),Pe&&Object.defineProperty(F,Pe,{value:F,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(F,e(Z))},xe.promisify.custom=Pe;function ce(M,Z){if(!M){var F=new Error("Promise was rejected with a falsy value");F.reason=M,M=F}return Z(M)}function he(M){if(typeof M!="function")throw new TypeError('The "original" argument must be of type Function');function Z(){for(var F=[],fe=0;fe<arguments.length;fe++)F.push(arguments[fe]);var ve=F.pop();if(typeof ve!="function")throw new TypeError("The last argument must be of type Function");var C=this||Vr,S=function(){return ve.apply(C,arguments)};M.apply(this||Vr,F).then(function(j){t.nextTick(S.bind(null,null,j))},function(j){t.nextTick(ce.bind(null,j,S))})}return Object.setPrototypeOf(Z,Object.getPrototypeOf(M)),Object.defineProperties(Z,e(M)),Z}return xe.callbackify=he,xe}var le=DS();le.format;le.deprecate;le.debuglog;le.inspect;le.types;le.isArray;le.isBoolean;le.isNull;le.isNullOrUndefined;le.isNumber;le.isString;le.isSymbol;le.isUndefined;le.isRegExp;le.isObject;le.isDate;le.isError;le.isFunction;le.isPrimitive;le.isBuffer;le.log;le.inherits;le._extend;le.promisify;le.callbackify;var zR=le._extend,GR=le.callbackify,VR=le.debuglog,WR=le.deprecate,JR=le.format,YR=le.inherits,XR=le.inspect,QR=le.isArray,ek=le.isBoolean,tk=le.isBuffer,nk=le.isDate,rk=le.isError,ik=le.isFunction,ak=le.isNull,ok=le.isNullOrUndefined,sk=le.isNumber,lk=le.isObject,uk=le.isPrimitive,ck=le.isRegExp,fk=le.isString,dk=le.isSymbol,pk=le.isUndefined,gk=le.log,yk=le.promisify,mk=le.types,hk=le.TextEncoder=globalThis.TextEncoder,vk=le.TextDecoder=globalThis.TextDecoder;var pr=class{defaultOptions;constructor(e){this.defaultOptions=e}info(...e){this._log("info",e)}debug(...e){this._log("debug",e)}warn(...e){this._log("warn",e)}error(...e){this._log("error",e)}_log(e,n){this._getConsoleMethod(e)(this._serializeMessage(n))}_serializeMessage(e){let n=le.format(...e);return Y.env.BP_LOG_FORMAT==="json"?this.getJsonMessage(n):n}getJsonMessage(e){return JSON.stringify({msg:e,options:this.defaultOptions})}_getConsoleMethod(e){switch(e){case"debug":return console.debug;case"warn":return console.warn;case"error":return console.error;default:return console.info}}};var On=class extends pr{constructor(e){super({visibleToBotOwners:!0,...e})}with(e){return new On({...this.defaultOptions,...e})}withUserId(e){return this.with({userId:e})}withConversationId(e){return this.with({conversationId:e})}withVisibleToBotOwners(e){return this.with({visibleToBotOwners:e})}forBot(){return this.withVisibleToBotOwners(!0)}getJsonMessage(e){return JSON.stringify({msg:e,visible_to_bot_owner:this.defaultOptions.visibleToBotOwners,options:this.defaultOptions})}};R();O();k();var gv=t=>async e=>{let n=Rh(e.headers),r=new HS({botId:n.botId,integrationId:n.integrationId,retry:Ua}),a=new qr(r),o=new On,i={ctx:n,req:e,client:a,logger:o,instance:t};try{let s;switch(n.operation){case"webhook_received":s=await jS(i);break;case"register":s=await $S(i);break;case"unregister":s=await ZS(i);break;case"message_created":s=await KS(i);break;case"action_triggered":s=await qS(i);break;case"ping":s=await US(i);break;case"create_user":s=await LS(i);break;case"create_conversation":s=await FS(i);break;default:throw new Error(`Unknown operation ${n.operation}`)}return s?{...s,status:s.status??200}:{status:200}}catch(s){if(NS(s)){let f=s.type==="Runtime"?s:new pv(s.message,s);return o.forBot().error(f.message),{status:f.code,body:JSON.stringify(f.toJSON())}}console.error(s);let l=new pv("An unexpected error occurred in the integration. Bot owners: Check logs for more informations. Integration owners: throw a RuntimeError to return a custom error message instead.");return o.forBot().error(l.message),{status:l.code,body:JSON.stringify(l.toJSON())}}},US=async t=>{},jS=async({client:t,ctx:e,req:n,logger:r,instance:a})=>{let{req:o}=It(n);return a.webhook({client:t,ctx:e,req:o,logger:r})},$S=async({client:t,ctx:e,req:n,logger:r,instance:a})=>{if(!a.register)return;let{webhookUrl:o}=It(n);await a.register({client:t,ctx:e,webhookUrl:o,logger:r})},ZS=async({client:t,ctx:e,req:n,logger:r,instance:a})=>{if(!a.unregister)return;let{webhookUrl:o}=It(n);await a.unregister({ctx:e,webhookUrl:o,client:t,logger:r})},LS=async({client:t,ctx:e,req:n,logger:r,instance:a})=>{if(!a.createUser)return;let{tags:o}=It(n);return await a.createUser({ctx:e,client:t,tags:o,logger:r})},FS=async({client:t,ctx:e,req:n,logger:r,instance:a})=>{if(!a.createConversation)return;let{channel:o,tags:i}=It(n);return await a.createConversation({ctx:e,client:t,channel:o,tags:i,logger:r})},KS=async({ctx:t,req:e,client:n,logger:r,instance:a})=>{let{conversation:o,user:i,type:s,payload:l,message:f}=It(e),g=a.channels[o.channel];if(!g)throw new Error(`Channel ${o.channel} not found`);let y=g.messages[s];if(!y)throw new Error(`Message of type ${s} not found in channel ${o.channel}`);await y({ctx:t,conversation:o,message:f,user:i,type:s,client:n,payload:l,ack:async({tags:m})=>{await n.updateMessage({id:f.id,tags:m})},logger:r})},qS=async({req:t,ctx:e,client:n,logger:r,instance:a})=>{let{input:o,type:i}=It(t);if(!i)throw new Error("Missing action type");let s=a.actions[i];if(!s)throw new Error(`Action ${i} not found`);let l=new ja,g={output:await s({ctx:e,input:o,client:n,type:i,logger:r,metadata:l}),meta:l.toJSON()};return{body:JSON.stringify(g)}};var Ol=class{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}actions;channels;register;unregister;createUser;createConversation;webhook;handler=gv(this);start=e=>Na(this.handler,e)};R();O();k();R();O();k();R();O();k();R();O();k();R();O();k();var Ml=class{constructor(e){this.props=e;this.integrations=e.integrations,this.plugins=e.plugins,this.user=e.user,this.conversation=e.conversation,this.message=e.message,this.states=e.states,this.configuration=e.configuration,this.events=e.events,this.recurringEvents=e.recurringEvents,this.actions=e.actions,this.tables=e.tables}integrations;plugins;user;conversation;message;states;configuration;events;recurringEvents;actions;tables;addIntegration(e,n){let r=this;return r.integrations||(r.integrations={}),r.integrations[e.name]={enabled:n.enabled,...e,configurationType:n.configurationType,configuration:n.configuration},this}addPlugin(e,n){let r=this;return r.plugins||(r.plugins={}),r.plugins[e.name]={...e,configuration:n.configuration,interfaces:n.interfaces},r.user=this._mergeUser(r.user,e.definition.user),r.conversation=this._mergeConversation(r.conversation,e.definition.conversation),r.message=this._mergeMessage(r.message,e.definition.message),r.states=this._mergeStates(r.states,e.definition.states),r.events=this._mergeEvents(r.events,e.definition.events),r.recurringEvents=this._mergeRecurringEvents(r.recurringEvents,e.definition.recurringEvents),r.actions=this._mergeActions(r.actions,e.definition.actions),r.tables=this._mergeTables(r.tables,e.definition.tables),this}_mergeUser=(e,n)=>({tags:{...e?.tags,...n?.tags}});_mergeConversation=(e,n)=>({tags:{...e?.tags,...n?.tags}});_mergeMessage=(e,n)=>({tags:{...e?.tags,...n?.tags}});_mergeStates=(e,n)=>({...e,...n});_mergeEvents=(e,n)=>({...e,...n});_mergeRecurringEvents=(e,n)=>({...e,...n});_mergeActions=(e,n)=>({...e,...n});_mergeTables=(e,n)=>({...e,...n})};R();O();k();R();O();k();import*as mv from"@botpress/client";R();O();k();var Mn=class extends pr{constructor(e){super({...e})}with(e){return new Mn({...this.defaultOptions,...e})}withUserId(e){return this.with({userId:e})}withConversationId(e){return this.with({conversationId:e})}withWorkflowId(e){return this.with({workflowId:e})}};R();O();k();R();O();k();var Xt=class{constructor(e,n={before:{},after:{}}){this._client=e;this._hooks=n}getConversation=e=>this._run("getConversation",e);listConversations=e=>this._run("listConversations",e);updateConversation=e=>this._run("updateConversation",e);deleteConversation=e=>this._run("deleteConversation",e);listParticipants=e=>this._run("listParticipants",e);addParticipant=e=>this._run("addParticipant",e);getParticipant=e=>this._run("getParticipant",e);removeParticipant=e=>this._run("removeParticipant",e);createEvent=e=>this._run("createEvent",e);getEvent=e=>this._run("getEvent",e);listEvents=e=>this._run("listEvents",e);createMessage=e=>this._run("createMessage",e);getOrCreateMessage=e=>this._run("getOrCreateMessage",e);getMessage=e=>this._run("getMessage",e);updateMessage=e=>this._run("updateMessage",e);listMessages=e=>this._run("listMessages",e);deleteMessage=e=>this._run("deleteMessage",e);getUser=e=>this._run("getUser",e);listUsers=e=>this._run("listUsers",e);updateUser=e=>this._run("updateUser",e);deleteUser=e=>this._run("deleteUser",e);getState=e=>this._run("getState",e);setState=e=>this._run("setState",e);getOrSetState=e=>this._run("getOrSetState",e);patchState=e=>this._run("patchState",e);callAction=e=>this._run("callAction",e);uploadFile=e=>this._run("uploadFile",e);upsertFile=e=>this._run("upsertFile",e);deleteFile=e=>this._run("deleteFile",e);listFiles=e=>this._run("listFiles",e);getFile=e=>this._run("getFile",e);updateFileMetadata=e=>this._run("updateFileMetadata",e);searchFiles=e=>this._run("searchFiles",e);trackAnalytics=e=>this._run("trackAnalytics",e);getTableRow=e=>this._run("getTableRow",e);createTableRows=e=>this._run("createTableRows",e);findTableRows=e=>this._run("findTableRows",e);deleteTableRows=e=>this._run("deleteTableRows",e);updateTableRows=e=>this._run("updateTableRows",e);upsertTableRows=e=>this._run("upsertTableRows",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);_run=async(e,n)=>{let r=this._hooks.before[e];r&&(n=await r(n));let a=await this._client[e](n),o=this._hooks.after[e];return o&&(a=await o(a)),a}};R();O();k();var zS=re.enum(["event_received","register","unregister","ping","action_triggered"]),yv=t=>{let e=t[da],n=t[pa],r=t[Sy],a=zS.parse(t[ga]);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(!a)throw new Error("Missing operation headers");return{botId:e,operation:a,type:r,configuration:n?JSON.parse(W.from(n,"base64").toString("utf-8")):{}}};R();O();k();var Mt={status:200},hv=t=>async e=>{let n=yv(e.headers),r=new Mn,a=new mv.Client({botId:n.botId,retry:Ua}),o=new Xt(a,{before:{createMessage:async s=>{let l=t.hookHandlers.before_outgoing_message[s.type]??[];for(let f of l)s=(await f({client:new Xt(a),ctx:n,logger:r,data:s}))?.data??s;return s},callAction:async s=>{let l=t.hookHandlers.before_outgoing_call_action[s.type]??[];for(let f of l)s=(await f({client:new Xt(a),ctx:n,logger:r,data:s}))?.data??s;return s}},after:{createMessage:async s=>{let l=t.hookHandlers.after_outgoing_message[s.message.type]??[];for(let f of l)s=(await f({client:new Xt(a),ctx:n,logger:r,data:s}))?.data??s;return s},callAction:async s=>{let l=t.hookHandlers.after_outgoing_call_action[s.output.type]??[];for(let f of l)s=(await f({client:new Xt(a),ctx:n,logger:r,data:s}))?.data??s;return s}}}),i={req:e,ctx:n,logger:r,client:o,self:t};switch(n.operation){case"action_triggered":return await YS(i);case"event_received":return await JS(i);case"register":return await VS(i);case"unregister":return await WS(i);case"ping":return await GS(i);default:throw new Error(`Unknown operation ${n.operation}`)}},GS=async({ctx:t})=>(tr.info(`Received ${t.operation} operation for bot ${t.botId} of type ${t.type}`),Mt),VS=async t=>Mt,WS=async t=>Mt,JS=async({ctx:t,logger:e,req:n,client:r,self:a})=>{let o={client:r,ctx:t,logger:e};tr.debug(`Received event ${t.type}`);let i=It(n);if(t.type==="message_created"){let p=i.event,m=p.payload.message,_=a.hookHandlers.before_incoming_message[m.type]??[];for(let I of _){let P=await I({...o,data:m});if(m=P?.data??m,P?.stop)return Mt}let E={...o,user:p.payload.user,conversation:p.payload.conversation,states:p.payload.states,message:m,event:p},B=a.messageHandlers[m.type]??[];for(let I of B)await I(E);let v=a.hookHandlers.after_incoming_message[m.type]??[];for(let I of v){let P=await I({...o,data:m});if(m=P?.data??m,P?.stop)return Mt}return Mt}if(t.type==="state_expired"){let m=i.event.payload.state,_={...o,state:m},E=a.stateExpiredHandlers["*"]??[];for(let B of E)await B(_);return Mt}let s=i.event,l=a.hookHandlers.before_incoming_event[s.type]??[];for(let p of l){let m=await p({...o,data:s});if(s=m?.data??s,m?.stop)return Mt}let f={...o,event:s},g=a.eventHandlers[s.type]??[];for(let p of g)await p(f);let y=a.hookHandlers.after_incoming_event[s.type]??[];for(let p of y){let m=await p({...o,data:s});if(s=m?.data??s,m?.stop)return Mt}return Mt},YS=async({ctx:t,logger:e,req:n,client:r,self:a})=>{let{input:o,type:i}=It(n);if(!i)throw new Error("Missing action type");let s=a.actionHandlers[i];if(!s)throw new Error(`Action ${i} not found`);let f={output:await s({ctx:t,logger:e,input:o,client:r,type:i})};return{status:200,body:JSON.stringify(f)}};var Dl=class{constructor(e){this.props=e;this._actionHandlers=e.actions,this._plugins=e.plugins}_actionHandlers;_messageHandlers={};_eventHandlers={};_stateExpiredHandlers={};_hookHandlers={before_incoming_event:{},before_incoming_message:{},before_outgoing_message:{},before_outgoing_call_action:{},after_incoming_event:{},after_incoming_message:{},after_outgoing_message:{},after_outgoing_call_action:{}};_plugins={};get actionHandlers(){let e=this._actionHandlers,n=Object.values(this._plugins).reduce((r,a)=>({...r,...a.actionHandlers}),{});return{...e,...n}}get messageHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._messageHandlers[n]??[],a=this._messageHandlers["*"]??[],o=[...r,...a],i=Object.values(this._plugins).flatMap(s=>s.messageHandlers[n]??[]);return Re.unique([...o,...i])}})}get eventHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._eventHandlers[n]??[],a=this._eventHandlers["*"]??[],o=[...r,...a],i=Object.values(this._plugins).flatMap(s=>s.eventHandlers[n]??[]);return Re.unique([...o,...i])}})}get stateExpiredHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._stateExpiredHandlers[n]??[],a=this._stateExpiredHandlers["*"]??[],o=[...r,...a],i=Object.values(this._plugins).flatMap(s=>s.stateExpiredHandlers[n]??[]);return Re.unique([...o,...i])}})}get hookHandlers(){return new Proxy({},{get:(e,n)=>new Proxy({},{get:(r,a)=>{let o=n,i=this._hookHandlers[o]??{},s=i[a]??[],l=i["*"]??[],f=[...s,...l],g=Object.values(this._plugins).flatMap(y=>y.hookHandlers[o]?.[a]??[]);return Re.unique([...f,...g])}})})}on={message:(e,n)=>{this._messageHandlers[e]=Re.safePush(this._messageHandlers[e],n)},event:(e,n)=>{this._eventHandlers[e]=Re.safePush(this._eventHandlers[e],n)},stateExpired:(e,n)=>{this._stateExpiredHandlers[e]=Re.safePush(this._stateExpiredHandlers[e],n)},beforeIncomingEvent:(e,n)=>{this._hookHandlers.before_incoming_event[e]=Re.safePush(this._hookHandlers.before_incoming_event[e],n)},beforeIncomingMessage:(e,n)=>{this._hookHandlers.before_incoming_message[e]=Re.safePush(this._hookHandlers.before_incoming_message[e],n)},beforeOutgoingMessage:(e,n)=>{this._hookHandlers.before_outgoing_message[e]=Re.safePush(this._hookHandlers.before_outgoing_message[e],n)},beforeOutgoingCallAction:(e,n)=>{this._hookHandlers.before_outgoing_call_action[e]=Re.safePush(this._hookHandlers.before_outgoing_call_action[e],n)},afterIncomingEvent:(e,n)=>{this._hookHandlers.after_incoming_event[e]=Re.safePush(this._hookHandlers.after_incoming_event[e],n)},afterIncomingMessage:(e,n)=>{this._hookHandlers.after_incoming_message[e]=Re.safePush(this._hookHandlers.after_incoming_message[e],n)},afterOutgoingMessage:(e,n)=>{this._hookHandlers.after_outgoing_message[e]=Re.safePush(this._hookHandlers.after_outgoing_message[e],n)},afterOutgoingCallAction:(e,n)=>{this._hookHandlers.after_outgoing_call_action[e]=Re.safePush(this._hookHandlers.after_outgoing_call_action[e],n)}};handler=hv(this);start=e=>Na(this.handler,e)};R();O();k();R();O();k();R();O();k();R();O();k();R();O();k();var Nl=class{constructor(e){this.props=e;this.name=e.name,this.version=e.version,this.entities=e.entities??{};let n=this._getEntityReference(this.entities),r=e.events===void 0?{}:ze.mapValues(e.events,i=>({...i,schema:i.schema(n)})),a=e.actions===void 0?{}:ze.mapValues(e.actions,i=>({...i,input:{...i.input,schema:i.input.schema(n)},output:{...i.output,schema:i.output.schema(n)}})),o=e.channels===void 0?{}:ze.mapValues(e.channels,i=>({...i,messages:ze.mapValues(i.messages,s=>({...s,schema:s.schema(n)}))}));this.events=r,this.actions=a,this.channels=o}name;version;entities;events;actions;channels;_getEntityReference=e=>{let n={};for(let[r,a]of Object.entries(e)){let o=a.schema._def["x-zui"]?.title,i=a.schema._def.description,s=py.ref(r);o&&s.title(o),i&&s.describe(i),n[r]=s}return n}};R();O();k();R();O();k();R();O();k();R();O();k();var Hl=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.description=e.description,this.integrations=e.integrations,this.interfaces=e.interfaces,this.user=e.user,this.conversation=e.conversation,this.message=e.message,this.states=e.states,this.configuration=e.configuration,this.events=e.events,this.recurringEvents=e.recurringEvents,this.actions=e.actions,this.tables=e.tables}name;version;title;description;icon;readme;integrations;interfaces;user;conversation;message;states;configuration;events;recurringEvents;actions;tables};R();O();k();R();O();k();R();O();k();R();O();k();var Ul=":";var vv=t=>{let[e,n]=t.split(Ul);return!e||!n?null:{namespace:e,eventName:n}},Tv=t=>`${t.namespace}${Ul}${t.actionName}`,bv=t=>`${t.namespace}${Ul}${t.eventName}`,_v=(t,e)=>{let n=e[t.namespace]??{name:t.namespace,version:"0.0.0",entities:{},actions:{},events:{},channels:{}},r=n.name,a=n.actions[t.actionName]?.name??t.actionName;return{namespace:r,actionName:a}},xv=(t,e)=>{let n=e[t.namespace]??{name:t.namespace,version:"0.0.0",entities:{},actions:{},events:{},channels:{}},r=n.name,a=n.events[t.eventName]?.name??t.eventName;return{namespace:r,eventName:a}};var wv=(t,e)=>new Proxy({},{get:(n,r)=>new Proxy({},{get:(a,o)=>i=>XS({client:t,interfaces:e,integrationOrInterfaceName:r,methodName:o,input:i})})}),XS=async({client:t,interfaces:e,integrationOrInterfaceName:n,methodName:r,input:a})=>{let o=_v({namespace:n,actionName:r},e),i=Tv(o);return(await t.callAction({type:i,input:a})).output};R();O();k();var jl=class{constructor(e){this.props=e;this._actionHandlers=e.actions}_runtimeProps;_actionHandlers;_messageHandlers={};_eventHandlers={};_stateExpiredHandlers={};_hookHandlers={before_incoming_event:{},before_incoming_message:{},before_outgoing_message:{},before_outgoing_call_action:{},after_incoming_event:{},after_incoming_message:{},after_outgoing_message:{},after_outgoing_call_action:{}};initialize(e){return this._runtimeProps=e,this}get _runtime(){if(!this._runtimeProps)throw new Error("Plugin not correctly initialized. This is likely because you access your plugin config outside of an handler.");return this._runtimeProps}_getTools(e){let{configuration:n,interfaces:r}=this._runtime,a=wv(e,r);return{configuration:n,interfaces:r,actions:a}}get actionHandlers(){let e=this._actionHandlers,n={};for(let[r,a]of ze.pairs(e))n[r]=async o=>a({...o,...this._getTools(o.client)});return n}get messageHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._messageHandlers[n]??[],a=this._messageHandlers["*"]??[];return Re.unique([...r,...a]).map(i=>kn.setName(s=>i({...s,...this._getTools(s.client)}),i.name))}})}get eventHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._eventHandlers[n]??[],a=Object.entries(this._eventHandlers).filter(([s])=>this._eventResolvesTo(s,n)).flatMap(([,s])=>s??[]),o=this._eventHandlers["*"]??[];return Re.unique([...r,...a,...o]).map(s=>kn.setName(l=>s({...l,...this._getTools(l.client)}),s.name))}})}get stateExpiredHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._stateExpiredHandlers[n]??[],a=this._stateExpiredHandlers["*"]??[];return Re.unique([...r,...a]).map(i=>kn.setName(s=>i({...s,...this._getTools(s.client)}),i.name))}})}get hookHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._hookHandlers[n];if(r)return new Proxy({},{get:(a,o)=>{let i=r[o]??[],s=Object.entries(r).filter(([g])=>this._eventResolvesTo(g,o)).flatMap(([,g])=>g??[]),l=r["*"]??[];return Re.unique([...i,...s,...l]).map(g=>kn.setName(y=>g({...y,...this._getTools(y.client)}),g.name))}})}})}on={message:(e,n)=>{this._messageHandlers[e]=Re.safePush(this._messageHandlers[e],n)},event:(e,n)=>{this._eventHandlers[e]=Re.safePush(this._eventHandlers[e],n)},stateExpired:(e,n)=>{this._stateExpiredHandlers[e]=Re.safePush(this._stateExpiredHandlers[e],n)},beforeIncomingEvent:(e,n)=>{this._hookHandlers.before_incoming_event[e]=Re.safePush(this._hookHandlers.before_incoming_event[e],n)},beforeIncomingMessage:(e,n)=>{this._hookHandlers.before_incoming_message[e]=Re.safePush(this._hookHandlers.before_incoming_message[e],n)},beforeOutgoingMessage:(e,n)=>{this._hookHandlers.before_outgoing_message[e]=Re.safePush(this._hookHandlers.before_outgoing_message[e],n)},beforeOutgoingCallAction:(e,n)=>{this._hookHandlers.before_outgoing_call_action[e]=Re.safePush(this._hookHandlers.before_outgoing_call_action[e],n)},afterIncomingEvent:(e,n)=>{this._hookHandlers.after_incoming_event[e]=Re.safePush(this._hookHandlers.after_incoming_event[e],n)},afterIncomingMessage:(e,n)=>{this._hookHandlers.after_incoming_message[e]=Re.safePush(this._hookHandlers.after_incoming_message[e],n)},afterOutgoingMessage:(e,n)=>{this._hookHandlers.after_outgoing_message[e]=Re.safePush(this._hookHandlers.after_outgoing_message[e],n)},afterOutgoingCallAction:(e,n)=>{this._hookHandlers.after_outgoing_call_action[e]=Re.safePush(this._hookHandlers.after_outgoing_call_action[e],n)}};_eventResolvesTo=(e,n)=>{let r=vv(e);if(!r)return!1;let a=xv(r,this._runtime.interfaces);return bv(a)===n}};R();O();k();R();O();k();R();O();k();R();O();k();R();O();k();R();O();k();export{aw as BRAND,Dl as Bot,Ml as BotDefinition,Mn as BotLogger,Xt as BotSpecificClient,qn as DIRTY,rw as EMPTY_PATH,Ir as ErrorBoundary,de as INVALID,Ol as Integration,Js as IntegrationDefinition,On as IntegrationLogger,qr as IntegrationSpecificClient,Nl as InterfaceDefinition,xE as NEVER,ut as OK,Bt as ParseInputLazyPath,pt as ParseStatus,jl as Plugin,Hl as PluginDefinition,zD as RuntimeError,ye as Schema,xi as ZodAny,Or as ZodArray,Oo as ZodBigInt,Mo as ZodBoolean,Do as ZodBranded,No as ZodCatch,Ho as ZodDate,sa as ZodDefault,ng as ZodDiscriminatedUnion,vn as ZodEffects,er as ZodEnum,$t as ZodError,Lp as ZodFirstPartyTypeKind,ig as ZodFunction,jo as ZodIntersection,G as ZodIssueCode,$o as ZodLazy,Zo as ZodLiteral,sg as ZodMap,ug as ZodNaN,Lo as ZodNativeEnum,hn as ZodNever,Fo as ZodNull,Gn as ZodNullable,Ko as ZodNumber,Vn as ZodObject,tn as ZodOptional,ne as ZodParsedType,qo as ZodPipeline,ua as ZodPromise,ca as ZodReadonly,mg as ZodRecord,vg as ZodRef,ye as ZodSchema,Tg as ZodSet,ct as ZodString,Rg as ZodSymbol,vn as ZodTransformer,Jn as ZodTuple,ye as ZodType,zo as ZodUndefined,Go as ZodUnion,Pr as ZodUnknown,Dg as ZodVoid,GA as ZuiForm,te as addIssueToContext,Iw as agent,kw as aimodel,Fw as any,Gw as array,Uw as bigint,uy as boolean,da as botIdHeader,Ey as botUserIdHeader,_E as coerce,pa as configurationHeader,Iy as configurationTypeHeader,Ew as conversation,la as createZodEnum,_g as cuid2Regex,bg as cuidRegex,eg as custom,Ow as datasource,jw as date,Sg as datetimeRegex,VA as defaultComponentDefinitions,Yw as discriminatedUnion,nf as effect,Eg as emailRegex,lE as enum,se as errorUtil,Sw as event,TE as fromJsonSchema,bE as fromObject,aE as function,Rr as getErrorMap,en as getParsedType,Nw as instanceof,By as integrationIdHeader,Rw as intent,Xw as intersection,Pg as ipv4Regex,Ig as ipv6Regex,uo as isAborted,qD as isApiError,bi as isAsync,co as isDirty,ow as isEmojiRegex,kr as isValid,fa as jsonSchemaToZui,Mw as knowledgebase,Dw as late,oE as lazy,sE as literal,Ti as makeIssue,rE as map,Nr as mergeObjectSchemas,Pw as message,wy as messages,Hw as nan,uE as nativeEnum,qw as never,Lw as null,dE as nullable,ly as number,Vw as object,Mr as objectToZui,lo as objectUtil,vE as oboolean,hE as onumber,ga as operationHeader,fE as optional,mE as ostring,It as parseBody,yE as pipeline,gE as preprocess,ge as processCreateParams,cE as promise,nw as quotelessJson,nE as readonly,eE as record,tE as ref,Na as serve,iE as set,qp as setErrorMap,Ww as strictObject,sy as string,$w as symbol,Aw as table,Cw as tablerow,nf as transformer,WA as transforms,Qw as tuple,Sy as typeHeader,xg as ulidRegex,Zw as undefined,Jw as union,Kw as unknown,Bw as user,be as util,wg as uuidRegex,ww as variable,zw as void,Py as webhookIdHeader,zE as withErrorBoundary,re as z,Yo as zuiToJsonSchema};
89
89
  /*! Bundled license information:
90
90
 
91
91
  @jspm/core/nodelibs/browser/chunk-DtuTasat.js: