@botpress/sdk 4.1.0 → 4.2.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 @@ ${T}`.trim();case q.ZodFirstPartyTypeKind.ZodEnum:return a.values.map(jt).join("
85
85
  `))):j=D.stylize("[Circular]","special")),X(k)){if(A&&ve.match(/^\d+$/))return j;k=JSON.stringify(""+ve),k.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(k=k.slice(1,-1),k=D.stylize(k,"name")):(k=k.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),k=D.stylize(k,"string"))}return k+": "+j}function B(D,Z,F){var fe=D.reduce(function(ve,A){return A.indexOf(`
86
86
  `)>=0,ve+A.replace(/\u001b\[\d\d?m/g,"").length+1},0);return fe>60?F[0]+(Z===""?"":Z+`
87
87
  `)+" "+D.join(`,
88
- `)+" "+F[1]:F[0]+Z+" "+D.join(", ")+" "+F[1]}xe.types=Kk();function P(D){return Array.isArray(D)}xe.isArray=P;function T(D){return typeof D=="boolean"}xe.isBoolean=T;function S(D){return D===null}xe.isNull=S;function E(D){return D==null}xe.isNullOrUndefined=E;function M(D){return typeof D=="number"}xe.isNumber=M;function $(D){return typeof D=="string"}xe.isString=$;function oe(D){return typeof D=="symbol"}xe.isSymbol=oe;function X(D){return D===void 0}xe.isUndefined=X;function ue(D){return ee(D)&&Ne(D)==="[object RegExp]"}xe.isRegExp=ue,xe.types.isRegExp=ue;function ee(D){return typeof D=="object"&&D!==null}xe.isObject=ee;function ie(D){return ee(D)&&Ne(D)==="[object Date]"}xe.isDate=ie,xe.types.isDate=ie;function Re(D){return ee(D)&&(Ne(D)==="[object Error]"||D instanceof Error)}xe.isError=Re,xe.types.isNativeError=Re;function Ie(D){return typeof D=="function"}xe.isFunction=Ie;function $e(D){return D===null||typeof D=="boolean"||typeof D=="number"||typeof D=="string"||typeof D=="symbol"||typeof D>"u"}xe.isPrimitive=$e,xe.isBuffer=Wk();function Ne(D){return Object.prototype.toString.call(D)}function Me(D){return D<10?"0"+D.toString(10):D.toString(10)}var Ve=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Ae(){var D=new Date,Z=[Me(D.getHours()),Me(D.getMinutes()),Me(D.getSeconds())].join(":");return[D.getDate(),Ve[D.getMonth()],Z].join(" ")}xe.log=function(){console.log("%s - %s",Ae(),xe.format.apply(xe,arguments))},xe.inherits=Ct(),xe._extend=function(D,Z){if(!Z||!ee(Z))return D;for(var F=Object.keys(Z),fe=F.length;fe--;)D[F[fe]]=Z[F[fe]];return D};function me(D,Z){return Object.prototype.hasOwnProperty.call(D,Z)}var Se=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(Se&&Z[Se]){if(F=Z[Se],typeof F!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(F,Se,{value:F,enumerable:!1,writable:!1,configurable:!0}),F}function F(){for(var fe,ve,A=new Promise(function(Y,ae){fe=Y,ve=ae}),k=[],j=0;j<arguments.length;j++)k.push(arguments[j]);k.push(function(Y,ae){Y?ve(Y):fe(ae)});try{Z.apply(this||Xr,k)}catch(Y){ve(Y)}return A}return Object.setPrototypeOf(F,Object.getPrototypeOf(Z)),Se&&Object.defineProperty(F,Se,{value:F,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(F,e(Z))},xe.promisify.custom=Se;function ce(D,Z){if(!D){var F=new Error("Promise was rejected with a falsy value");F.reason=D,D=F}return Z(D)}function he(D){if(typeof D!="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 A=this||Xr,k=function(){return ve.apply(A,arguments)};D.apply(this||Xr,F).then(function(j){t.nextTick(k.bind(null,null,j))},function(j){t.nextTick(ce.bind(null,j,k))})}return Object.setPrototypeOf(Z,Object.getPrototypeOf(D)),Object.defineProperties(Z,e(D)),Z}return xe.callbackify=he,xe}var le=qk();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 gO=le._extend,yO=le.callbackify,mO=le.debuglog,hO=le.deprecate,vO=le.format,TO=le.inherits,_O=le.inspect,bO=le.isArray,wO=le.isBoolean,xO=le.isBuffer,BO=le.isDate,PO=le.isError,EO=le.isFunction,SO=le.isNull,kO=le.isNullOrUndefined,IO=le.isNumber,AO=le.isObject,CO=le.isPrimitive,OO=le.isRegExp,RO=le.isString,MO=le.isSymbol,DO=le.isUndefined,NO=le.log,HO=le.promisify,UO=le.types,jO=le.TextEncoder=globalThis.TextEncoder,$O=le.TextDecoder=globalThis.TextDecoder;var yr=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 J.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 Nn=class extends yr{constructor(e){super({visibleToBotOwners:!0,...e})}with(e){return new Nn({...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})}};C();R();O();var Vk=t=>["traceparent","tracestate","sentry-trace"].reduce((e,n)=>(t[n]&&(e[n]=t[n]),e),{}),wv=t=>async e=>{let n=jh(e.headers),[,r]=(e.headers.traceparent||"").split("-"),o=new Gk({botId:n.botId,integrationId:n.integrationId,retry:Ko,headers:Vk(e.headers)}),s=new Vr(o),i=new Nn({traceId:r}),a={ctx:n,req:e,client:s,logger:i,instance:t};try{let l;switch(n.operation){case"webhook_received":l=await Yk(a);break;case"register":l=await Xk(a);break;case"unregister":l=await Qk(a);break;case"message_created":l=await nI(a);break;case"action_triggered":l=await rI(a);break;case"ping":l=await Jk(a);break;case"create_user":l=await eI(a);break;case"create_conversation":l=await tI(a);break;default:throw new Error(`Unknown operation ${n.operation}`)}return l?{...l,status:l.status??200}:{status:200}}catch(l){if(zk(l)){let d=l.type==="Runtime"?l:new bv(l.message,l);return i.forBot().error(d.message),{status:d.code,body:JSON.stringify(d.toJSON())}}console.error(l);let f=new bv("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 i.forBot().error(f.message),{status:f.code,body:JSON.stringify(f.toJSON())}}},Jk=async t=>{},Yk=async({client:t,ctx:e,req:n,logger:r,instance:o})=>{let{req:s}=kt(n);return o.webhook({client:t,ctx:e,req:s,logger:r})},Xk=async({client:t,ctx:e,req:n,logger:r,instance:o})=>{if(!o.register)return;let{webhookUrl:s}=kt(n);await o.register({client:t,ctx:e,webhookUrl:s,logger:r})},Qk=async({client:t,ctx:e,req:n,logger:r,instance:o})=>{if(!o.unregister)return;let{webhookUrl:s}=kt(n);await o.unregister({ctx:e,webhookUrl:s,client:t,logger:r})},eI=async({client:t,ctx:e,req:n,logger:r,instance:o})=>{if(!o.createUser)return;let{tags:s}=kt(n);return await o.createUser({ctx:e,client:t,tags:s,logger:r})},tI=async({client:t,ctx:e,req:n,logger:r,instance:o})=>{if(!o.createConversation)return;let{channel:s,tags:i}=kt(n);return await o.createConversation({ctx:e,client:t,channel:s,tags:i,logger:r})},nI=async({ctx:t,req:e,client:n,logger:r,instance:o})=>{let{conversation:s,user:i,type:a,payload:l,message:f}=kt(e),d=o.channels[s.channel];if(!d)throw new Error(`Channel ${s.channel} not found`);let y=d.messages[a];if(!y)throw new Error(`Message of type ${a} not found in channel ${s.channel}`);await y({ctx:t,conversation:s,message:f,user:i,type:a,client:n,payload:l,ack:async({tags:m})=>{await n.updateMessage({id:f.id,tags:m})},logger:r})},rI=async({req:t,ctx:e,client:n,logger:r,instance:o})=>{let{input:s,type:i}=kt(t);if(!i)throw new Error("Missing action type");let a=o.actions[i];if(!a)throw new Error(`Action ${i} not found`);let l=new Wo,d={output:await a({ctx:e,input:s,client:n,type:i,logger:r,metadata:l}),meta:l.toJSON()};return{body:JSON.stringify(d)}};var Ul=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=wv(this);start=e=>Zo(this.handler,e)};C();R();O();C();R();O();C();R();O();C();R();O();C();R();O();var jl=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,this.workflows=e.workflows}integrations;plugins;user;conversation;message;states;configuration;events;recurringEvents;actions;tables;workflows;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;r.plugins||(r.plugins={});let o=n.alias??e.name;return r.plugins[o]={...e,alias:n.alias,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.recurringEvents=this._mergeRecurringEvents(r.recurringEvents,e.definition.recurringEvents),r.tables=this._mergeTables(r.tables,e.definition.tables),r.workflows=this._mergeWorkflows(r.workflows,e.definition.workflows),r.states=this._mergeStates(r.states,this._prefixKeys(e.definition.states,n.alias)),r.events=this._mergeEvents(r.events,this._prefixKeys(e.definition.events,n.alias)),r.actions=this._mergeActions(r.actions,this._prefixKeys(e.definition.actions,n.alias)),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});_mergeWorkflows=(e,n)=>({...e,...n});_prefixKeys=(e,n)=>!e||!n?e:qe.mapKeys(e,r=>`${n}${qo}${r}`)};C();R();O();C();R();O();import*as Pv from"@botpress/client";C();R();O();var Hn=class extends yr{constructor(e){super({...e})}with(e){return new Hn({...this.defaultOptions,...e})}withUserId(e){return this.with({userId:e})}withConversationId(e){return this.with({conversationId:e})}withWorkflowId(e){return this.with({workflowId:e})}withEventId(e){return this.with({eventId:e})}withMessageId(e){return this.with({messageId:e})}};C();R();O();C();R();O();var Qt=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);createWorkflow=e=>this._run("createWorkflow",e);getWorkflow=e=>this._run("getWorkflow",e);updateWorkflow=e=>this._run("updateWorkflow",e);deleteWorkflow=e=>this._run("deleteWorkflow",e);listWorkflows=e=>this._run("listWorkflows",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 o=await this._client[e](n),s=this._hooks.after[e];return s&&(o=await s(o)),o}};C();R();O();C();R();O();var mr=t=>new Proxy({},{get:(e,n)=>({listInstances:{all:r=>un({workflowName:n,client:t,input:r}),running:r=>un({workflowName:n,client:t,input:r,statuses:["in_progress"]}),scheduled:r=>un({workflowName:n,client:t,input:r,statuses:["pending","listening"]}),allFinished:r=>un({workflowName:n,client:t,input:r,statuses:["completed","cancelled","failed","timedout"]}),cancelled:r=>un({workflowName:n,client:t,input:r,statuses:["cancelled"]}),failed:r=>un({workflowName:n,client:t,input:r,statuses:["failed"]}),succeeded:r=>un({workflowName:n,client:t,input:r,statuses:["completed"]}),timedOut:r=>un({workflowName:n,client:t,input:r,statuses:["timedout"]})},startNewInstance:async r=>{let{workflow:o}=await t.createWorkflow({name:n,status:"pending",...r});return{workflow:cn({client:t,workflow:o})}}})}),un=async t=>{let e=await t.client.listWorkflows({name:t.workflowName,statuses:t.statuses,...t.input});return{...e,workflows:e.workflows.map(n=>cn({client:t.client,workflow:n}))}},cn=t=>({...t.workflow,async update(e){let{workflow:n}=await t.client.updateWorkflow({id:t.workflow.id,...e});return{workflow:cn({client:t.client,workflow:n})}},async setFailed({failureReason:e}){let{workflow:n}=await t.client.updateWorkflow({id:t.workflow.id,status:"failed",failureReason:e});return{workflow:cn({client:t.client,workflow:n})}},async setCompleted({output:e}={}){let{workflow:n}=await t.client.updateWorkflow({id:t.workflow.id,status:"completed",output:e});return{workflow:cn({client:t.client,workflow:n})}},async cancel(){let{workflow:e}=await t.client.updateWorkflow({id:t.workflow.id,status:"cancelled"});return{workflow:cn({client:t.client,workflow:e})}}});C();R();O();C();R();O();var iI=re.enum(["event_received","register","unregister","ping","action_triggered"]),xv=t=>{let e=t[ho],n=t[vo],r=t[Dy],o=iI.parse(t[To]);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(!o)throw new Error("Missing operation headers");return{botId:e,operation:o,type:r,configuration:n?JSON.parse(z.from(n,"base64").toString("utf-8")):{}}};C();R();O();var lt={status:200};C();R();O();C();R();O();var $l=t=>{switch(t){case"workflow_continued":return"continued";case"workflow_started":return"started";case"workflow_timedout":return"timed_out";default:throw new Error(`Unsupported workflow update type: ${t}`)}};var oI=["child_workflow_deleted","child_workflow_finished","workflow_timedout","workflow_started","workflow_continued"],Bv=async(t,e)=>{if(t.ctx.type!=="workflow_update"||!oI.includes(e.payload.type))throw new Error("Unexpected event type");let n={...t,logger:aI(t,e)};if(!e.payload.workflow.name)return n.logger.warn("Received workflow update event without a workflow name. Assuming this workflow was not defined by the bot.",e.payload.workflow),lt;switch(e.payload.type){case"child_workflow_deleted":case"child_workflow_finished":n.logger.info(`Received child workflow event "${e.payload.type}", but child workflows are not yet supported`);break;case"workflow_timedout":case"workflow_started":case"workflow_continued":return await sI(n,e);default:e.payload.type}return lt},aI=(t,e)=>t.logger.with({eventId:e.id,workflowId:e.payload.workflow.id,conversationId:e.payload.conversation?.id,userId:e.payload.user?.id}),sI=async(t,e)=>{let n=$l(e.payload.type),r=t.self.workflowHandlers[n]?.[e.payload.workflow.name];return!r||r.length===0?(t.logger.warn(`No ${n} handler found for workflow "${e.payload.workflow.name}"`),lt):(await lI(t,e),await uI(t,e),lt)},lI=async(t,e)=>{e.payload.workflow.status==="pending"&&await t.client.updateWorkflow({id:e.payload.workflow.id,status:"in_progress",eventId:e.id})},uI=async(t,e)=>{let n=$l(e.payload.type),r=t.self.workflowHandlers[n]?.[e.payload.workflow.name];for(let o of r)await o({...t,conversation:e.payload.conversation,user:e.payload.user,workflow:cn({...t,workflow:e.payload.workflow}),workflows:mr(t.client)})};C();R();O();var Ev=t=>async e=>{let n=xv(e.headers),r=new Hn,o=new Pv.Client({botId:n.botId,retry:Ko}),s=new Qt(o,{before:{createMessage:async a=>{let l=t.hookHandlers.before_outgoing_message[a.type]??[];for(let f of l){let d=new Qt(o);a=(await f({client:d,ctx:n,logger:r.with({conversationId:a.conversationId,userId:a.userId}),data:a,...hr({client:d})}))?.data??a}return a},callAction:async a=>{let l=t.hookHandlers.before_outgoing_call_action[a.type]??[];for(let f of l){let d=new Qt(o);a=(await f({client:d,ctx:n,logger:r,data:a,...hr({client:d})}))?.data??a}return a}},after:{createMessage:async a=>{let l=t.hookHandlers.after_outgoing_message[a.message.type]??[];for(let f of l){let d=new Qt(o);a=(await f({client:d,ctx:n,logger:r.with({messageId:a.message.id,conversationId:a.message.conversationId,userId:a.message.userId}),data:a,...hr({client:d})}))?.data??a}return a},callAction:async a=>{let l=t.hookHandlers.after_outgoing_call_action[a.output.type]??[];for(let f of l){let d=new Qt(o);a=(await f({client:d,ctx:n,logger:r,data:a,...hr({client:d})}))?.data??a}return a}}}),i={req:e,ctx:n,logger:r,client:s,self:t};switch(n.operation){case"action_triggered":return await gI(i);case"event_received":return await pI(i);case"register":return await fI(i);case"unregister":return await dI(i);case"ping":return await cI(i);default:throw new Error(`Unknown operation ${n.operation}`)}},cI=async({ctx:t})=>(ir.info(`Received ${t.operation} operation for bot ${t.botId} of type ${t.type}`),lt),fI=async t=>lt,dI=async t=>lt,pI=async t=>{let{ctx:e,logger:n,req:r,client:o,self:s}=t,i={client:o,ctx:e,logger:n,...hr({client:o})};ir.debug(`Received event ${e.type}`);let a=kt(r);if(i.logger=i.logger.with({eventId:a.event.id,messageId:a.event.messageId,conversationId:a.event.conversationId,userId:a.event.userId}),e.type==="workflow_update")return await Bv(t,a.event);if(e.type==="message_created"){let m=a.event,v=m.payload.message;i.logger=i.logger.with({messageId:v.id,conversationId:v.conversationId,userId:v.userId});let B=s.hookHandlers.before_incoming_message[v.type]??[];for(let E of B){let M=await E({...i,data:v});if(v=M?.data??v,M?.stop)return lt}let P={...i,user:m.payload.user,conversation:m.payload.conversation,message:v,event:m},T=s.messageHandlers[v.type]??[];for(let E of T)await E(P);let S=s.hookHandlers.after_incoming_message[v.type]??[];for(let E of S){let M=await E({...i,data:v});if(v=M?.data??v,M?.stop)return lt}return lt}if(e.type==="state_expired"){let v=a.event.payload.state,B={...i,state:v},P=s.stateExpiredHandlers["*"]??[];for(let T of P)await T(B);return lt}let l=a.event,f=s.hookHandlers.before_incoming_event[l.type]??[];for(let m of f){let v=await m({...i,data:l});if(l=v?.data??l,v?.stop)return lt}let d={...i,event:l},y=s.eventHandlers[l.type]??[];for(let m of y)await m(d);let g=s.hookHandlers.after_incoming_event[l.type]??[];for(let m of g){let v=await m({...i,data:l});if(l=v?.data??l,v?.stop)return lt}return lt},gI=async({ctx:t,logger:e,req:n,client:r,self:o})=>{let{input:s,type:i}=kt(n);if(!i)throw new Error("Missing action type");let a=o.actionHandlers[i];if(!a)throw new Error(`Action ${i} not found`);let f={output:await a({ctx:t,logger:e,input:s,client:r,type:i,...hr({client:r})})};return{status:200,body:JSON.stringify(f)}},hr=t=>({workflows:mr(t.client)});var Zl=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:{}};_workflowHandlers={started:{},continued:{},timed_out:{}};_plugins={};_registerOrder=0;get actionHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._actionHandlers[n];if(r)return r;for(let o of Object.values(this._plugins))if(r=o.actionHandlers[n],r)return r}})}get messageHandlers(){return new Proxy({},{get:(e,n)=>{let r=Object.values(this._plugins).flatMap(a=>a.messageHandlers[n]??[]),o=this._messageHandlers[n]??[],s=this._messageHandlers["*"]??[],i=[...o,...s].sort((a,l)=>a.order-l.order).map(({handler:a})=>a);return Te.unique([...r,...i])}})}get eventHandlers(){return new Proxy({},{get:(e,n)=>{let r=Object.values(this._plugins).flatMap(a=>a.eventHandlers[n]??[]),o=this._eventHandlers[n]??[],s=this._eventHandlers["*"]??[],i=[...o,...s].sort((a,l)=>a.order-l.order).map(({handler:a})=>a);return Te.unique([...r,...i])}})}get stateExpiredHandlers(){return new Proxy({},{get:(e,n)=>{let r=Object.values(this._plugins).flatMap(a=>a.stateExpiredHandlers[n]??[]),o=this._stateExpiredHandlers[n]??[],s=this._stateExpiredHandlers["*"]??[],i=[...o,...s].sort((a,l)=>a.order-l.order).map(({handler:a})=>a);return Te.unique([...r,...i])}})}get hookHandlers(){return new Proxy({},{get:(e,n)=>{if(this._hookHandlers[n])return new Proxy({},{get:(o,s)=>{let i=Object.values(this._plugins).flatMap(y=>y.hookHandlers[n]?.[s]??[]),a=this._hookHandlers[n]??{},l=a[s]??[],f=a["*"]??[],d=[...l,...f].sort((y,g)=>y.order-g.order).map(({handler:y})=>y);return Te.unique([...i,...d])}})}})}get workflowHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._workflowHandlers[n];if(r)return new Proxy({},{get:(o,s)=>{let i=r[s]?.sort((l,f)=>l.order-f.order).map(({handler:l})=>l)??[],a=Object.values(this._plugins).flatMap(l=>l.workflowHandlers[n]?.[s]??[]);return Te.unique([...i,...a])}})}})}on={message:(e,n)=>{this._messageHandlers[e]=Te.safePush(this._messageHandlers[e],{handler:n,order:this._registerOrder++})},event:(e,n)=>{this._eventHandlers[e]=Te.safePush(this._eventHandlers[e],{handler:n,order:this._registerOrder++})},stateExpired:(e,n)=>{this._stateExpiredHandlers[e]=Te.safePush(this._stateExpiredHandlers[e],{handler:n,order:this._registerOrder++})},beforeIncomingEvent:(e,n)=>{this._hookHandlers.before_incoming_event[e]=Te.safePush(this._hookHandlers.before_incoming_event[e],{handler:n,order:this._registerOrder++})},beforeIncomingMessage:(e,n)=>{this._hookHandlers.before_incoming_message[e]=Te.safePush(this._hookHandlers.before_incoming_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingMessage:(e,n)=>{this._hookHandlers.before_outgoing_message[e]=Te.safePush(this._hookHandlers.before_outgoing_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingCallAction:(e,n)=>{this._hookHandlers.before_outgoing_call_action[e]=Te.safePush(this._hookHandlers.before_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingEvent:(e,n)=>{this._hookHandlers.after_incoming_event[e]=Te.safePush(this._hookHandlers.after_incoming_event[e],{handler:n,order:this._registerOrder++})},afterIncomingMessage:(e,n)=>{this._hookHandlers.after_incoming_message[e]=Te.safePush(this._hookHandlers.after_incoming_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingMessage:(e,n)=>{this._hookHandlers.after_outgoing_message[e]=Te.safePush(this._hookHandlers.after_outgoing_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingCallAction:(e,n)=>{this._hookHandlers.after_outgoing_call_action[e]=Te.safePush(this._hookHandlers.after_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},workflowStart:(e,n)=>{this._workflowHandlers.started[e]=Te.safePush(this._workflowHandlers.started[e],{handler:n,order:this._registerOrder++})},workflowContinue:(e,n)=>{this._workflowHandlers.continued[e]=Te.safePush(this._workflowHandlers.continued[e],{handler:n,order:this._registerOrder++})},workflowTimeout:(e,n)=>{this._workflowHandlers.timed_out[e]=Te.safePush(this._workflowHandlers.timed_out[e],{handler:n,order:this._registerOrder++})}};handler=Ev(this);start=e=>Zo(this.handler,e)};C();R();O();C();R();O();C();R();O();C();R();O();C();R();O();var Ll=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?{}:qe.mapValues(e.events,i=>({...i,schema:i.schema(n)})),o=e.actions===void 0?{}:qe.mapValues(e.actions,i=>({...i,input:{...i.input,schema:i.input.schema(n)},output:{...i.output,schema:i.output.schema(n)}})),s=e.channels===void 0?{}:qe.mapValues(e.channels,i=>({...i,messages:qe.mapValues(i.messages,a=>({...a,schema:a.schema(n)}))}));this.events=r,this.actions=o,this.channels=s}name;version;entities;events;actions;channels;_getEntityReference=e=>{let n={};for(let[r,o]of Object.entries(e)){let s=o.schema._def["x-zui"]?.title,i=o.schema._def.description,a=_y.ref(r);s&&a.title(s),i&&a.describe(i),n[r]=a}return n}};C();R();O();C();R();O();C();R();O();C();R();O();var Fl=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,this.workflows=e.workflows}name;version;title;description;icon;readme;integrations;interfaces;user;conversation;message;states;configuration;events;recurringEvents;actions;tables;workflows};C();R();O();C();R();O();C();R();O();C();R();O();var Kl=":";var Sv=t=>{let[e,n]=t.split(Kl);return!e||!n?null:{namespace:e,eventName:n}},kv=t=>`${t.namespace}${Kl}${t.actionName}`,Iv=t=>`${t.namespace}${Kl}${t.eventName}`,Av=(t,e)=>{let n=e[t.namespace]??{name:t.namespace,version:"0.0.0",entities:{},actions:{},events:{},channels:{}},r=n.name,o=n.actions[t.actionName]?.name??t.actionName;return{namespace:r,actionName:o}},Cv=(t,e)=>{let n=e[t.namespace]??{name:t.namespace,version:"0.0.0",entities:{},actions:{},events:{},channels:{}},r=n.name,o=n.events[t.eventName]?.name??t.eventName;return{namespace:r,eventName:o}};var Ov=(t,e)=>new Proxy({},{get:(n,r)=>new Proxy({},{get:(o,s)=>i=>yI({client:t,interfaces:e.interfaces,integrationOrInterfaceName:r,methodName:s,input:i})})}),yI=async({client:t,interfaces:e,integrationOrInterfaceName:n,methodName:r,input:o})=>{let s=Av({namespace:n,actionName:r},e),i=kv(s);return(await t.callAction({type:i,input:o})).output};C();R();O();C();R();O();C();R();O();var Wl=class{constructor(e,n,r){this._client=e;this._stateType=n;this._stateName=r}async get(e){return await this._client.getState({type:this._stateType,name:this._stateName,id:e}).then(n=>n.state.payload)}async set(e,n){await this._client.setState({type:this._stateType,name:this._stateName,id:e,payload:n})}async getOrSet(e,n){return await this._client.getOrSetState({type:this._stateType,name:this._stateName,id:e,payload:n}).then(r=>r.state.payload)}async delete(e){await this._client.setState({type:this._stateType,name:this._stateName,id:e,payload:null})}async patch(e,n){await this._client.patchState({type:this._stateType,name:this._stateName,id:e,payload:n})}},Rv=(t,e)=>new Proxy({},{get:(n,r)=>new Proxy({},{get:(o,s)=>{let i=e.alias!==void 0?`${e.alias}${qo}${s}`:s;return new Wl(t,r,i)}})});C();R();O();var ql=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:{}};_workflowHandlers={started:{},continued:{},timed_out:{}};_registerOrder=0;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,alias:o}=this._runtime,s=Ov(e,this._runtime),i=Rv(e,this._runtime),a=mr(e);return{configuration:n,interfaces:r,actions:s,states:i,alias:o,workflows:a}}get actionHandlers(){return new Proxy({},{get:(e,n)=>{n=this._stripAliasPrefix(n);let r=this._actionHandlers[n];if(r)return Xt.setName(o=>r({...o,...this._getTools(o.client)}),r.name)}})}get messageHandlers(){return new Proxy({},{get:(e,n)=>{n=this._stripAliasPrefix(n);let r=this._messageHandlers[n]??[],o=this._messageHandlers["*"]??[];return Te.unique([...r,...o]).sort((i,a)=>i.order-a.order).map(({handler:i})=>Xt.setName(a=>i({...a,...this._getTools(a.client)}),i.name))}})}get eventHandlers(){return new Proxy({},{get:(e,n)=>{n=this._stripAliasPrefix(n);let r=this._eventHandlers[n]??[],o=Object.entries(this._eventHandlers).filter(([a])=>this._eventResolvesTo(a,n)).flatMap(([,a])=>a??[]),s=this._eventHandlers["*"]??[];return Te.unique([...r,...o,...s]).sort((a,l)=>a.order-l.order).map(({handler:a})=>Xt.setName(l=>a({...l,...this._getTools(l.client)}),a.name))}})}get stateExpiredHandlers(){return new Proxy({},{get:(e,n)=>{n=this._stripAliasPrefix(n);let r=this._stateExpiredHandlers[n]??[],o=this._stateExpiredHandlers["*"]??[];return Te.unique([...r,...o]).sort((i,a)=>i.order-a.order).map(({handler:i})=>Xt.setName(a=>i({...a,...this._getTools(a.client)}),i.name))}})}get hookHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._hookHandlers[n];if(r)return new Proxy({},{get:(o,s)=>{s=this._stripAliasPrefix(s);let i=r[s]??[],a=Object.entries(r).filter(([d])=>this._eventResolvesTo(d,s)).flatMap(([,d])=>d??[]),l=r["*"]??[];return Te.unique([...i,...a,...l]).sort((d,y)=>d.order-y.order).map(({handler:d})=>Xt.setName(y=>d({...y,...this._getTools(y.client)}),d.name))}})}})}get workflowHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._workflowHandlers[n];if(r)return new Proxy({},{get:(o,s)=>(r[s]?.sort((a,l)=>a.order-l.order)??[]).map(({handler:a})=>Xt.setName(l=>a({...l,...this._getTools(l.client)}),a.name))})}})}on={message:(e,n)=>{this._messageHandlers[e]=Te.safePush(this._messageHandlers[e],{handler:n,order:this._registerOrder++})},event:(e,n)=>{this._eventHandlers[e]=Te.safePush(this._eventHandlers[e],{handler:n,order:this._registerOrder++})},stateExpired:(e,n)=>{this._stateExpiredHandlers[e]=Te.safePush(this._stateExpiredHandlers[e],{handler:n,order:this._registerOrder++})},beforeIncomingEvent:(e,n)=>{this._hookHandlers.before_incoming_event[e]=Te.safePush(this._hookHandlers.before_incoming_event[e],{handler:n,order:this._registerOrder++})},beforeIncomingMessage:(e,n)=>{this._hookHandlers.before_incoming_message[e]=Te.safePush(this._hookHandlers.before_incoming_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingMessage:(e,n)=>{this._hookHandlers.before_outgoing_message[e]=Te.safePush(this._hookHandlers.before_outgoing_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingCallAction:(e,n)=>{this._hookHandlers.before_outgoing_call_action[e]=Te.safePush(this._hookHandlers.before_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingEvent:(e,n)=>{this._hookHandlers.after_incoming_event[e]=Te.safePush(this._hookHandlers.after_incoming_event[e],{handler:n,order:this._registerOrder++})},afterIncomingMessage:(e,n)=>{this._hookHandlers.after_incoming_message[e]=Te.safePush(this._hookHandlers.after_incoming_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingMessage:(e,n)=>{this._hookHandlers.after_outgoing_message[e]=Te.safePush(this._hookHandlers.after_outgoing_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingCallAction:(e,n)=>{this._hookHandlers.after_outgoing_call_action[e]=Te.safePush(this._hookHandlers.after_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},workflowStart:(e,n)=>{this._workflowHandlers.started[e]=Te.safePush(this._workflowHandlers.started[e],{handler:n,order:this._registerOrder++})},workflowContinue:(e,n)=>{this._workflowHandlers.continued[e]=Te.safePush(this._workflowHandlers.continued[e],{handler:n,order:this._registerOrder++})},workflowTimeout:(e,n)=>{this._workflowHandlers.timed_out[e]=Te.safePush(this._workflowHandlers.timed_out[e],{handler:n,order:this._registerOrder++})}};_eventResolvesTo=(e,n)=>{let r=Sv(e);if(!r)return!1;let o=Cv(r,this._runtime.interfaces);return Iv(o)===n};_stripAliasPrefix=e=>{let{alias:n}=this._runtime;if(!n)return e;let r=`${n}:`;return e.startsWith(r)?e.slice(r.length):e}};C();R();O();C();R();O();C();R();O();C();R();O();C();R();O();C();R();O();export{yx as BRAND,Zl as Bot,jl as BotDefinition,Hn as BotLogger,Qt as BotSpecificClient,Gn as DIRTY,px as EMPTY_PATH,Cr as ErrorBoundary,de as INVALID,Ul as Integration,tl as IntegrationDefinition,Nn as IntegrationLogger,Vr as IntegrationSpecificClient,Ll as InterfaceDefinition,OB as NEVER,ct as OK,Et as ParseInputLazyPath,gt as ParseStatus,ql as Plugin,Fl as PluginDefinition,mH as RuntimeError,ye as Schema,SA as WELL_KNOWN_ATTRIBUTES,Ei as ZodAny,Hr as ZodArray,ja as ZodBigInt,$a as ZodBoolean,Za as ZodBranded,La as ZodCatch,Fa as ZodDate,fo as ZodDefault,ug as ZodDiscriminatedUnion,bn as ZodEffects,rr as ZodEnum,$t as ZodError,Vp as ZodFirstPartyTypeKind,fg as ZodFunction,Wa as ZodIntersection,G as ZodIssueCode,qa as ZodLazy,za as ZodLiteral,gg as ZodMap,mg as ZodNaN,Ga as ZodNativeEnum,_n as ZodNever,Va as ZodNull,Jn as ZodNullable,Ja as ZodNumber,Yn as ZodObject,nn as ZodOptional,ne as ZodParsedType,Ya as ZodPipeline,go as ZodPromise,yo as ZodReadonly,xg as ZodRecord,Pg as ZodRef,ye as ZodSchema,Eg as ZodSet,ft as ZodString,Ug as ZodSymbol,bn as ZodTransformer,Qn as ZodTuple,ye as ZodType,Xa as ZodUndefined,Qa as ZodUnion,Ar as ZodUnknown,Lg as ZodVoid,cA as ZuiForm,te as addIssueToContext,Hx as agent,Lx as aimodel,Qx as any,rB as array,Gx as bigint,my as boolean,ho as botIdHeader,Cy as botUserIdHeader,CB as coerce,vo as configurationHeader,My as configurationTypeHeader,Mx as conversation,po as createZodEnum,kg as cuid2Regex,Sg as cuidRegex,sg as custom,Fx as datasource,Vx as date,Dg as datetimeRegex,fA as defaultComponentDefinitions,sB as discriminatedUnion,cf as effect,Cg as emailRegex,vB as enum,se as errorUtil,Ux as event,IB as fromJsonSchema,AB as fromObject,yB as function,Dr as getErrorMap,tn as getParsedType,qx as instanceof,Oy as integrationIdHeader,Zx as intent,lB as intersection,Rg as ipv4Regex,Mg as ipv6Regex,ma as isAborted,yH as isApiError,Bi as isAsync,ha as isDirty,mx as isEmojiRegex,Nr as isValid,mo as jsonSchemaToZui,Kx as knowledgebase,Wx as late,mB as lazy,hB as literal,xi as makeIssue,pB as map,$r as mergeObjectSchemas,Nx as message,Ay as messages,zx as nan,TB as nativeEnum,tB as never,Xx as null,wB as nullable,yy as number,iB as object,Ur as objectToZui,ya as objectUtil,kB as oboolean,SB as onumber,To as operationHeader,bB as optional,EB as ostring,kt as parseBody,PB as pipeline,BB as preprocess,ge as processCreateParams,_B as promise,dx as quotelessJson,dB as readonly,cB as record,fB as ref,Zo as serve,gB as set,Xp as setErrorMap,oB as strictObject,gy as string,Jx as symbol,jx as table,$x as tablerow,cf as transformer,dA as transforms,uB as tuple,Dy as typeHeader,Ig as ulidRegex,Yx as undefined,aB as union,eB as unknown,Dx as user,be as util,Ag as uuidRegex,Rx as variable,nB as void,Ry as webhookIdHeader,nP as withErrorBoundary,re as z,rs as zuiToJsonSchema};
88
+ `)+" "+F[1]:F[0]+Z+" "+D.join(", ")+" "+F[1]}xe.types=Kk();function P(D){return Array.isArray(D)}xe.isArray=P;function T(D){return typeof D=="boolean"}xe.isBoolean=T;function S(D){return D===null}xe.isNull=S;function E(D){return D==null}xe.isNullOrUndefined=E;function M(D){return typeof D=="number"}xe.isNumber=M;function $(D){return typeof D=="string"}xe.isString=$;function oe(D){return typeof D=="symbol"}xe.isSymbol=oe;function X(D){return D===void 0}xe.isUndefined=X;function ue(D){return ee(D)&&Ne(D)==="[object RegExp]"}xe.isRegExp=ue,xe.types.isRegExp=ue;function ee(D){return typeof D=="object"&&D!==null}xe.isObject=ee;function ie(D){return ee(D)&&Ne(D)==="[object Date]"}xe.isDate=ie,xe.types.isDate=ie;function Re(D){return ee(D)&&(Ne(D)==="[object Error]"||D instanceof Error)}xe.isError=Re,xe.types.isNativeError=Re;function Ie(D){return typeof D=="function"}xe.isFunction=Ie;function $e(D){return D===null||typeof D=="boolean"||typeof D=="number"||typeof D=="string"||typeof D=="symbol"||typeof D>"u"}xe.isPrimitive=$e,xe.isBuffer=Wk();function Ne(D){return Object.prototype.toString.call(D)}function Me(D){return D<10?"0"+D.toString(10):D.toString(10)}var Ve=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Ae(){var D=new Date,Z=[Me(D.getHours()),Me(D.getMinutes()),Me(D.getSeconds())].join(":");return[D.getDate(),Ve[D.getMonth()],Z].join(" ")}xe.log=function(){console.log("%s - %s",Ae(),xe.format.apply(xe,arguments))},xe.inherits=Ct(),xe._extend=function(D,Z){if(!Z||!ee(Z))return D;for(var F=Object.keys(Z),fe=F.length;fe--;)D[F[fe]]=Z[F[fe]];return D};function me(D,Z){return Object.prototype.hasOwnProperty.call(D,Z)}var Se=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(Se&&Z[Se]){if(F=Z[Se],typeof F!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(F,Se,{value:F,enumerable:!1,writable:!1,configurable:!0}),F}function F(){for(var fe,ve,A=new Promise(function(Y,ae){fe=Y,ve=ae}),k=[],j=0;j<arguments.length;j++)k.push(arguments[j]);k.push(function(Y,ae){Y?ve(Y):fe(ae)});try{Z.apply(this||Xr,k)}catch(Y){ve(Y)}return A}return Object.setPrototypeOf(F,Object.getPrototypeOf(Z)),Se&&Object.defineProperty(F,Se,{value:F,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(F,e(Z))},xe.promisify.custom=Se;function ce(D,Z){if(!D){var F=new Error("Promise was rejected with a falsy value");F.reason=D,D=F}return Z(D)}function he(D){if(typeof D!="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 A=this||Xr,k=function(){return ve.apply(A,arguments)};D.apply(this||Xr,F).then(function(j){t.nextTick(k.bind(null,null,j))},function(j){t.nextTick(ce.bind(null,j,k))})}return Object.setPrototypeOf(Z,Object.getPrototypeOf(D)),Object.defineProperties(Z,e(D)),Z}return xe.callbackify=he,xe}var le=qk();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 gO=le._extend,yO=le.callbackify,mO=le.debuglog,hO=le.deprecate,vO=le.format,TO=le.inherits,_O=le.inspect,bO=le.isArray,wO=le.isBoolean,xO=le.isBuffer,BO=le.isDate,PO=le.isError,EO=le.isFunction,SO=le.isNull,kO=le.isNullOrUndefined,IO=le.isNumber,AO=le.isObject,CO=le.isPrimitive,OO=le.isRegExp,RO=le.isString,MO=le.isSymbol,DO=le.isUndefined,NO=le.log,HO=le.promisify,UO=le.types,jO=le.TextEncoder=globalThis.TextEncoder,$O=le.TextDecoder=globalThis.TextDecoder;var yr=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 J.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 Nn=class extends yr{constructor(e){super({visibleToBotOwners:!0,...e})}with(e){return new Nn({...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})}};C();R();O();var Vk=t=>["traceparent","tracestate","sentry-trace"].reduce((e,n)=>(t[n]&&(e[n]=t[n]),e),{}),wv=t=>async e=>{let n=jh(e.headers),[,r]=(e.headers.traceparent||"").split("-"),o=new Gk({botId:n.botId,integrationId:n.integrationId,retry:Ko,headers:Vk(e.headers)}),s=new Vr(o),i=new Nn({traceId:r}),a={ctx:n,req:e,client:s,logger:i,instance:t};try{let l;switch(n.operation){case"webhook_received":l=await Yk(a);break;case"register":l=await Xk(a);break;case"unregister":l=await Qk(a);break;case"message_created":l=await nI(a);break;case"action_triggered":l=await rI(a);break;case"ping":l=await Jk(a);break;case"create_user":l=await eI(a);break;case"create_conversation":l=await tI(a);break;default:throw new Error(`Unknown operation ${n.operation}`)}return l?{...l,status:l.status??200}:{status:200}}catch(l){if(zk(l)){let d=l.type==="Runtime"?l:new bv(l.message,l);return i.forBot().error(d.message),{status:d.code,body:JSON.stringify(d.toJSON())}}console.error(l);let f=new bv("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 i.forBot().error(f.message),{status:f.code,body:JSON.stringify(f.toJSON())}}},Jk=async t=>{},Yk=async({client:t,ctx:e,req:n,logger:r,instance:o})=>{let{req:s}=kt(n);return o.webhook({client:t,ctx:e,req:s,logger:r})},Xk=async({client:t,ctx:e,req:n,logger:r,instance:o})=>{if(!o.register)return;let{webhookUrl:s}=kt(n);await o.register({client:t,ctx:e,webhookUrl:s,logger:r})},Qk=async({client:t,ctx:e,req:n,logger:r,instance:o})=>{if(!o.unregister)return;let{webhookUrl:s}=kt(n);await o.unregister({ctx:e,webhookUrl:s,client:t,logger:r})},eI=async({client:t,ctx:e,req:n,logger:r,instance:o})=>{if(!o.createUser)return;let{tags:s}=kt(n);return await o.createUser({ctx:e,client:t,tags:s,logger:r})},tI=async({client:t,ctx:e,req:n,logger:r,instance:o})=>{if(!o.createConversation)return;let{channel:s,tags:i}=kt(n);return await o.createConversation({ctx:e,client:t,channel:s,tags:i,logger:r})},nI=async({ctx:t,req:e,client:n,logger:r,instance:o})=>{let{conversation:s,user:i,type:a,payload:l,message:f}=kt(e),d=o.channels[s.channel];if(!d)throw new Error(`Channel ${s.channel} not found`);let y=d.messages[a];if(!y)throw new Error(`Message of type ${a} not found in channel ${s.channel}`);await y({ctx:t,conversation:s,message:f,user:i,type:a,client:n,payload:l,ack:async({tags:m})=>{await n.updateMessage({id:f.id,tags:m})},logger:r})},rI=async({req:t,ctx:e,client:n,logger:r,instance:o})=>{let{input:s,type:i}=kt(t);if(!i)throw new Error("Missing action type");let a=o.actions[i];if(!a)throw new Error(`Action ${i} not found`);let l=new Wo,d={output:await a({ctx:e,input:s,client:n,type:i,logger:r,metadata:l}),meta:l.toJSON()};return{body:JSON.stringify(d)}};var Ul=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=wv(this);start=e=>Zo(this.handler,e)};C();R();O();C();R();O();C();R();O();C();R();O();C();R();O();var jl=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,this.workflows=e.workflows}integrations;plugins;user;conversation;message;states;configuration;events;recurringEvents;actions;tables;workflows;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;r.plugins||(r.plugins={});let o=n.alias??e.name;return r.plugins[o]={...e,alias:n.alias,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.recurringEvents=this._mergeRecurringEvents(r.recurringEvents,e.definition.recurringEvents),r.tables=this._mergeTables(r.tables,e.definition.tables),r.workflows=this._mergeWorkflows(r.workflows,e.definition.workflows),r.states=this._mergeStates(r.states,this._prefixKeys(e.definition.states,n.alias)),r.events=this._mergeEvents(r.events,this._prefixKeys(e.definition.events,n.alias)),r.actions=this._mergeActions(r.actions,this._prefixKeys(e.definition.actions,n.alias)),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});_mergeWorkflows=(e,n)=>({...e,...n});_prefixKeys=(e,n)=>!e||!n?e:qe.mapKeys(e,r=>`${n}${qo}${r}`)};C();R();O();C();R();O();import*as Pv from"@botpress/client";C();R();O();var Hn=class extends yr{constructor(e){super({...e})}with(e){return new Hn({...this.defaultOptions,...e})}withUserId(e){return this.with({userId:e})}withConversationId(e){return this.with({conversationId:e})}withWorkflowId(e){return this.with({workflowId:e})}withEventId(e){return this.with({eventId:e})}withMessageId(e){return this.with({messageId:e})}};C();R();O();C();R();O();var Qt=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);createWorkflow=e=>this._run("createWorkflow",e);getWorkflow=e=>this._run("getWorkflow",e);updateWorkflow=e=>this._run("updateWorkflow",e);deleteWorkflow=e=>this._run("deleteWorkflow",e);listWorkflows=e=>this._run("listWorkflows",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 o=await this._client[e](n),s=this._hooks.after[e];return s&&(o=await s(o)),o}};C();R();O();C();R();O();var mr=t=>new Proxy({},{get:(e,n)=>({listInstances:{all:r=>un({workflowName:n,client:t,input:r}),running:r=>un({workflowName:n,client:t,input:r,statuses:["in_progress"]}),scheduled:r=>un({workflowName:n,client:t,input:r,statuses:["pending","listening"]}),allFinished:r=>un({workflowName:n,client:t,input:r,statuses:["completed","cancelled","failed","timedout"]}),cancelled:r=>un({workflowName:n,client:t,input:r,statuses:["cancelled"]}),failed:r=>un({workflowName:n,client:t,input:r,statuses:["failed"]}),succeeded:r=>un({workflowName:n,client:t,input:r,statuses:["completed"]}),timedOut:r=>un({workflowName:n,client:t,input:r,statuses:["timedout"]})},startNewInstance:async r=>{let{workflow:o}=await t.createWorkflow({name:n,status:"pending",...r});return{workflow:cn({client:t,workflow:o})}}})}),un=async t=>{let e=await t.client.listWorkflows({name:t.workflowName,statuses:t.statuses,...t.input});return{...e,workflows:e.workflows.map(n=>cn({client:t.client,workflow:n}))}},cn=t=>({...t.workflow,async update(e){let{workflow:n}=await t.client.updateWorkflow({id:t.workflow.id,...e});return{workflow:cn({client:t.client,workflow:n})}},async setFailed({failureReason:e}){let{workflow:n}=await t.client.updateWorkflow({id:t.workflow.id,status:"failed",failureReason:e});return{workflow:cn({client:t.client,workflow:n})}},async setCompleted({output:e}={}){let{workflow:n}=await t.client.updateWorkflow({id:t.workflow.id,status:"completed",output:e});return{workflow:cn({client:t.client,workflow:n})}},async cancel(){let{workflow:e}=await t.client.updateWorkflow({id:t.workflow.id,status:"cancelled"});return{workflow:cn({client:t.client,workflow:e})}}});C();R();O();C();R();O();var iI=re.enum(["event_received","register","unregister","ping","action_triggered"]),xv=t=>{let e=t[ho],n=t[vo],r=t[Dy],o=iI.parse(t[To]);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(!o)throw new Error("Missing operation headers");return{botId:e,operation:o,type:r,configuration:n?JSON.parse(z.from(n,"base64").toString("utf-8")):{}}};C();R();O();var lt={status:200};C();R();O();C();R();O();var $l=t=>{switch(t){case"workflow_continued":return"continued";case"workflow_started":return"started";case"workflow_timedout":return"timed_out";default:throw new Error(`Unsupported workflow update type: ${t}`)}};var oI=["child_workflow_deleted","child_workflow_finished","workflow_timedout","workflow_started","workflow_continued"],Bv=async(t,e)=>{if(t.ctx.type!=="workflow_update"||!oI.includes(e.payload.type))throw new Error("Unexpected event type");let n={...t,logger:aI(t,e)};if(!e.payload.workflow.name)return n.logger.warn("Received workflow update event without a workflow name. Assuming this workflow was not defined by the bot.",e.payload.workflow),lt;switch(e.payload.type){case"child_workflow_deleted":case"child_workflow_finished":n.logger.info(`Received child workflow event "${e.payload.type}", but child workflows are not yet supported`);break;case"workflow_timedout":case"workflow_started":case"workflow_continued":return await sI(n,e);default:e.payload.type}return lt},aI=(t,e)=>t.logger.with({eventId:e.id,workflowId:e.payload.workflow.id,conversationId:e.payload.conversation?.id,userId:e.payload.user?.id}),sI=async(t,e)=>{let n=$l(e.payload.type),r=t.self.workflowHandlers[n]?.[e.payload.workflow.name];return!r||r.length===0?(t.logger.warn(`No ${n} handler found for workflow "${e.payload.workflow.name}"`),lt):(await lI(t,e),await uI(t,e),lt)},lI=async(t,e)=>{e.payload.workflow.status==="pending"&&await t.client.updateWorkflow({id:e.payload.workflow.id,status:"in_progress",eventId:e.id})},uI=async(t,e)=>{let n=$l(e.payload.type),r=t.self.workflowHandlers[n]?.[e.payload.workflow.name];for(let o of r)await o({...t,conversation:e.payload.conversation,user:e.payload.user,workflow:cn({...t,workflow:e.payload.workflow}),workflows:mr(t.client)})};C();R();O();var Ev=t=>async e=>{let n=xv(e.headers),r=new Hn,o=new Pv.Client({botId:n.botId,retry:Ko}),s=new Qt(o,{before:{createMessage:async a=>{let l=t.hookHandlers.before_outgoing_message[a.type]??[];for(let f of l){let d=new Qt(o);a=(await f({client:d,ctx:n,logger:r.with({conversationId:a.conversationId,userId:a.userId}),data:a,...hr({client:d})}))?.data??a}return a},callAction:async a=>{let l=t.hookHandlers.before_outgoing_call_action[a.type]??[];for(let f of l){let d=new Qt(o);a=(await f({client:d,ctx:n,logger:r,data:a,...hr({client:d})}))?.data??a}return a}},after:{createMessage:async a=>{let l=t.hookHandlers.after_outgoing_message[a.message.type]??[];for(let f of l){let d=new Qt(o);a=(await f({client:d,ctx:n,logger:r.with({messageId:a.message.id,conversationId:a.message.conversationId,userId:a.message.userId}),data:a,...hr({client:d})}))?.data??a}return a},callAction:async a=>{let l=t.hookHandlers.after_outgoing_call_action[a.output.type]??[];for(let f of l){let d=new Qt(o);a=(await f({client:d,ctx:n,logger:r,data:a,...hr({client:d})}))?.data??a}return a}}}),i={req:e,ctx:n,logger:r,client:s,self:t};switch(n.operation){case"action_triggered":return await gI(i);case"event_received":return await pI(i);case"register":return await fI(i);case"unregister":return await dI(i);case"ping":return await cI(i);default:throw new Error(`Unknown operation ${n.operation}`)}},cI=async({ctx:t})=>(ir.info(`Received ${t.operation} operation for bot ${t.botId} of type ${t.type}`),lt),fI=async t=>lt,dI=async t=>lt,pI=async t=>{let{ctx:e,logger:n,req:r,client:o,self:s}=t,i={client:o,ctx:e,logger:n,...hr({client:o})};ir.debug(`Received event ${e.type}`);let a=kt(r);if(i.logger=i.logger.with({eventId:a.event.id,messageId:a.event.messageId,conversationId:a.event.conversationId,userId:a.event.userId}),e.type==="workflow_update")return await Bv(t,a.event);if(e.type==="message_created"){let m=a.event,v=m.payload.message;i.logger=i.logger.with({messageId:v.id,conversationId:v.conversationId,userId:v.userId});let B=s.hookHandlers.before_incoming_message[v.type]??[];for(let E of B){let M=await E({...i,data:v});if(v=M?.data??v,M?.stop)return lt}let P={...i,user:m.payload.user,conversation:m.payload.conversation,message:v,event:m},T=s.messageHandlers[v.type]??[];for(let E of T)await E(P);let S=s.hookHandlers.after_incoming_message[v.type]??[];for(let E of S){let M=await E({...i,data:v});if(v=M?.data??v,M?.stop)return lt}return lt}if(e.type==="state_expired"){let v=a.event.payload.state,B={...i,state:v},P=s.stateExpiredHandlers["*"]??[];for(let T of P)await T(B);return lt}let l=a.event,f=s.hookHandlers.before_incoming_event[l.type]??[];for(let m of f){let v=await m({...i,data:l});if(l=v?.data??l,v?.stop)return lt}let d={...i,event:l},y=s.eventHandlers[l.type]??[];for(let m of y)await m(d);let g=s.hookHandlers.after_incoming_event[l.type]??[];for(let m of g){let v=await m({...i,data:l});if(l=v?.data??l,v?.stop)return lt}return lt},gI=async({ctx:t,logger:e,req:n,client:r,self:o})=>{let{input:s,type:i}=kt(n);if(!i)throw new Error("Missing action type");let a=o.actionHandlers[i];if(!a)throw new Error(`Action ${i} not found`);let f={output:await a({ctx:t,logger:e,input:s,client:r,type:i,...hr({client:r})})};return{status:200,body:JSON.stringify(f)}},hr=t=>({workflows:mr(t.client)});var Zl=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:{}};_workflowHandlers={started:{},continued:{},timed_out:{}};_plugins={};_registerOrder=0;get actionHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._actionHandlers[n];if(r)return r;for(let o of Object.values(this._plugins))if(r=o.actionHandlers[n],r)return r}})}get messageHandlers(){return new Proxy({},{get:(e,n)=>{let r=Object.values(this._plugins).flatMap(a=>a.messageHandlers[n]??[]),o=this._messageHandlers[n]??[],s=this._messageHandlers["*"]??[],i=[...o,...s].sort((a,l)=>a.order-l.order).map(({handler:a})=>a);return Te.unique([...r,...i])}})}get eventHandlers(){return new Proxy({},{get:(e,n)=>{let r=Object.values(this._plugins).flatMap(a=>a.eventHandlers[n]??[]),o=this._eventHandlers[n]??[],s=this._eventHandlers["*"]??[],i=[...o,...s].sort((a,l)=>a.order-l.order).map(({handler:a})=>a);return Te.unique([...r,...i])}})}get stateExpiredHandlers(){return new Proxy({},{get:(e,n)=>{let r=Object.values(this._plugins).flatMap(a=>a.stateExpiredHandlers[n]??[]),o=this._stateExpiredHandlers[n]??[],s=this._stateExpiredHandlers["*"]??[],i=[...o,...s].sort((a,l)=>a.order-l.order).map(({handler:a})=>a);return Te.unique([...r,...i])}})}get hookHandlers(){return new Proxy({},{get:(e,n)=>{if(this._hookHandlers[n])return new Proxy({},{get:(o,s)=>{let i=Object.values(this._plugins).flatMap(y=>y.hookHandlers[n]?.[s]??[]),a=this._hookHandlers[n]??{},l=a[s]??[],f=a["*"]??[],d=[...l,...f].sort((y,g)=>y.order-g.order).map(({handler:y})=>y);return Te.unique([...i,...d])}})}})}get workflowHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._workflowHandlers[n];if(r)return new Proxy({},{get:(o,s)=>{let i=r[s]?.sort((l,f)=>l.order-f.order).map(({handler:l})=>l)??[],a=Object.values(this._plugins).flatMap(l=>l.workflowHandlers[n]?.[s]??[]);return Te.unique([...i,...a])}})}})}on={message:(e,n)=>{this._messageHandlers[e]=Te.safePush(this._messageHandlers[e],{handler:n,order:this._registerOrder++})},event:(e,n)=>{this._eventHandlers[e]=Te.safePush(this._eventHandlers[e],{handler:n,order:this._registerOrder++})},stateExpired:(e,n)=>{this._stateExpiredHandlers[e]=Te.safePush(this._stateExpiredHandlers[e],{handler:n,order:this._registerOrder++})},beforeIncomingEvent:(e,n)=>{this._hookHandlers.before_incoming_event[e]=Te.safePush(this._hookHandlers.before_incoming_event[e],{handler:n,order:this._registerOrder++})},beforeIncomingMessage:(e,n)=>{this._hookHandlers.before_incoming_message[e]=Te.safePush(this._hookHandlers.before_incoming_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingMessage:(e,n)=>{this._hookHandlers.before_outgoing_message[e]=Te.safePush(this._hookHandlers.before_outgoing_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingCallAction:(e,n)=>{this._hookHandlers.before_outgoing_call_action[e]=Te.safePush(this._hookHandlers.before_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingEvent:(e,n)=>{this._hookHandlers.after_incoming_event[e]=Te.safePush(this._hookHandlers.after_incoming_event[e],{handler:n,order:this._registerOrder++})},afterIncomingMessage:(e,n)=>{this._hookHandlers.after_incoming_message[e]=Te.safePush(this._hookHandlers.after_incoming_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingMessage:(e,n)=>{this._hookHandlers.after_outgoing_message[e]=Te.safePush(this._hookHandlers.after_outgoing_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingCallAction:(e,n)=>{this._hookHandlers.after_outgoing_call_action[e]=Te.safePush(this._hookHandlers.after_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},workflowStart:(e,n)=>{this._workflowHandlers.started[e]=Te.safePush(this._workflowHandlers.started[e],{handler:n,order:this._registerOrder++})},workflowContinue:(e,n)=>{this._workflowHandlers.continued[e]=Te.safePush(this._workflowHandlers.continued[e],{handler:n,order:this._registerOrder++})},workflowTimeout:(e,n)=>{this._workflowHandlers.timed_out[e]=Te.safePush(this._workflowHandlers.timed_out[e],{handler:n,order:this._registerOrder++})}};handler=Ev(this);start=e=>Zo(this.handler,e)};C();R();O();C();R();O();C();R();O();C();R();O();C();R();O();var Ll=class{constructor(e){this.props=e;this.name=e.name,this.version=e.version,this.icon=e.icon,this.title=e.title,this.description=e.description,this.readme=e.readme,this.entities=e.entities??{};let n=this._getEntityReference(this.entities),r=e.events===void 0?{}:qe.mapValues(e.events,i=>({...i,schema:i.schema(n)})),o=e.actions===void 0?{}:qe.mapValues(e.actions,i=>({...i,input:{...i.input,schema:i.input.schema(n)},output:{...i.output,schema:i.output.schema(n)}})),s=e.channels===void 0?{}:qe.mapValues(e.channels,i=>({...i,messages:qe.mapValues(i.messages,a=>({...a,schema:a.schema(n)}))}));this.events=r,this.actions=o,this.channels=s}name;version;title;description;icon;readme;entities;events;actions;channels;_getEntityReference=e=>{let n={};for(let[r,o]of Object.entries(e)){let s=o.schema._def["x-zui"]?.title,i=o.schema._def.description,a=_y.ref(r);s&&a.title(s),i&&a.describe(i),n[r]=a}return n}};C();R();O();C();R();O();C();R();O();C();R();O();var Fl=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,this.workflows=e.workflows}name;version;title;description;icon;readme;integrations;interfaces;user;conversation;message;states;configuration;events;recurringEvents;actions;tables;workflows};C();R();O();C();R();O();C();R();O();C();R();O();var Kl=":";var Sv=t=>{let[e,n]=t.split(Kl);return!e||!n?null:{namespace:e,eventName:n}},kv=t=>`${t.namespace}${Kl}${t.actionName}`,Iv=t=>`${t.namespace}${Kl}${t.eventName}`,Av=(t,e)=>{let n=e[t.namespace]??{name:t.namespace,version:"0.0.0",entities:{},actions:{},events:{},channels:{}},r=n.name,o=n.actions[t.actionName]?.name??t.actionName;return{namespace:r,actionName:o}},Cv=(t,e)=>{let n=e[t.namespace]??{name:t.namespace,version:"0.0.0",entities:{},actions:{},events:{},channels:{}},r=n.name,o=n.events[t.eventName]?.name??t.eventName;return{namespace:r,eventName:o}};var Ov=(t,e)=>new Proxy({},{get:(n,r)=>new Proxy({},{get:(o,s)=>i=>yI({client:t,interfaces:e.interfaces,integrationOrInterfaceName:r,methodName:s,input:i})})}),yI=async({client:t,interfaces:e,integrationOrInterfaceName:n,methodName:r,input:o})=>{let s=Av({namespace:n,actionName:r},e),i=kv(s);return(await t.callAction({type:i,input:o})).output};C();R();O();C();R();O();C();R();O();var Wl=class{constructor(e,n,r){this._client=e;this._stateType=n;this._stateName=r}async get(e){return await this._client.getState({type:this._stateType,name:this._stateName,id:e}).then(n=>n.state.payload)}async set(e,n){await this._client.setState({type:this._stateType,name:this._stateName,id:e,payload:n})}async getOrSet(e,n){return await this._client.getOrSetState({type:this._stateType,name:this._stateName,id:e,payload:n}).then(r=>r.state.payload)}async delete(e){await this._client.setState({type:this._stateType,name:this._stateName,id:e,payload:null})}async patch(e,n){await this._client.patchState({type:this._stateType,name:this._stateName,id:e,payload:n})}},Rv=(t,e)=>new Proxy({},{get:(n,r)=>new Proxy({},{get:(o,s)=>{let i=e.alias!==void 0?`${e.alias}${qo}${s}`:s;return new Wl(t,r,i)}})});C();R();O();var ql=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:{}};_workflowHandlers={started:{},continued:{},timed_out:{}};_registerOrder=0;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,alias:o}=this._runtime,s=Ov(e,this._runtime),i=Rv(e,this._runtime),a=mr(e);return{configuration:n,interfaces:r,actions:s,states:i,alias:o,workflows:a}}get actionHandlers(){return new Proxy({},{get:(e,n)=>{n=this._stripAliasPrefix(n);let r=this._actionHandlers[n];if(r)return Xt.setName(o=>r({...o,...this._getTools(o.client)}),r.name)}})}get messageHandlers(){return new Proxy({},{get:(e,n)=>{n=this._stripAliasPrefix(n);let r=this._messageHandlers[n]??[],o=this._messageHandlers["*"]??[];return Te.unique([...r,...o]).sort((i,a)=>i.order-a.order).map(({handler:i})=>Xt.setName(a=>i({...a,...this._getTools(a.client)}),i.name))}})}get eventHandlers(){return new Proxy({},{get:(e,n)=>{n=this._stripAliasPrefix(n);let r=this._eventHandlers[n]??[],o=Object.entries(this._eventHandlers).filter(([a])=>this._eventResolvesTo(a,n)).flatMap(([,a])=>a??[]),s=this._eventHandlers["*"]??[];return Te.unique([...r,...o,...s]).sort((a,l)=>a.order-l.order).map(({handler:a})=>Xt.setName(l=>a({...l,...this._getTools(l.client)}),a.name))}})}get stateExpiredHandlers(){return new Proxy({},{get:(e,n)=>{n=this._stripAliasPrefix(n);let r=this._stateExpiredHandlers[n]??[],o=this._stateExpiredHandlers["*"]??[];return Te.unique([...r,...o]).sort((i,a)=>i.order-a.order).map(({handler:i})=>Xt.setName(a=>i({...a,...this._getTools(a.client)}),i.name))}})}get hookHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._hookHandlers[n];if(r)return new Proxy({},{get:(o,s)=>{s=this._stripAliasPrefix(s);let i=r[s]??[],a=Object.entries(r).filter(([d])=>this._eventResolvesTo(d,s)).flatMap(([,d])=>d??[]),l=r["*"]??[];return Te.unique([...i,...a,...l]).sort((d,y)=>d.order-y.order).map(({handler:d})=>Xt.setName(y=>d({...y,...this._getTools(y.client)}),d.name))}})}})}get workflowHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._workflowHandlers[n];if(r)return new Proxy({},{get:(o,s)=>(r[s]?.sort((a,l)=>a.order-l.order)??[]).map(({handler:a})=>Xt.setName(l=>a({...l,...this._getTools(l.client)}),a.name))})}})}on={message:(e,n)=>{this._messageHandlers[e]=Te.safePush(this._messageHandlers[e],{handler:n,order:this._registerOrder++})},event:(e,n)=>{this._eventHandlers[e]=Te.safePush(this._eventHandlers[e],{handler:n,order:this._registerOrder++})},stateExpired:(e,n)=>{this._stateExpiredHandlers[e]=Te.safePush(this._stateExpiredHandlers[e],{handler:n,order:this._registerOrder++})},beforeIncomingEvent:(e,n)=>{this._hookHandlers.before_incoming_event[e]=Te.safePush(this._hookHandlers.before_incoming_event[e],{handler:n,order:this._registerOrder++})},beforeIncomingMessage:(e,n)=>{this._hookHandlers.before_incoming_message[e]=Te.safePush(this._hookHandlers.before_incoming_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingMessage:(e,n)=>{this._hookHandlers.before_outgoing_message[e]=Te.safePush(this._hookHandlers.before_outgoing_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingCallAction:(e,n)=>{this._hookHandlers.before_outgoing_call_action[e]=Te.safePush(this._hookHandlers.before_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingEvent:(e,n)=>{this._hookHandlers.after_incoming_event[e]=Te.safePush(this._hookHandlers.after_incoming_event[e],{handler:n,order:this._registerOrder++})},afterIncomingMessage:(e,n)=>{this._hookHandlers.after_incoming_message[e]=Te.safePush(this._hookHandlers.after_incoming_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingMessage:(e,n)=>{this._hookHandlers.after_outgoing_message[e]=Te.safePush(this._hookHandlers.after_outgoing_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingCallAction:(e,n)=>{this._hookHandlers.after_outgoing_call_action[e]=Te.safePush(this._hookHandlers.after_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},workflowStart:(e,n)=>{this._workflowHandlers.started[e]=Te.safePush(this._workflowHandlers.started[e],{handler:n,order:this._registerOrder++})},workflowContinue:(e,n)=>{this._workflowHandlers.continued[e]=Te.safePush(this._workflowHandlers.continued[e],{handler:n,order:this._registerOrder++})},workflowTimeout:(e,n)=>{this._workflowHandlers.timed_out[e]=Te.safePush(this._workflowHandlers.timed_out[e],{handler:n,order:this._registerOrder++})}};_eventResolvesTo=(e,n)=>{let r=Sv(e);if(!r)return!1;let o=Cv(r,this._runtime.interfaces);return Iv(o)===n};_stripAliasPrefix=e=>{let{alias:n}=this._runtime;if(!n)return e;let r=`${n}:`;return e.startsWith(r)?e.slice(r.length):e}};C();R();O();C();R();O();C();R();O();C();R();O();C();R();O();C();R();O();export{yx as BRAND,Zl as Bot,jl as BotDefinition,Hn as BotLogger,Qt as BotSpecificClient,Gn as DIRTY,px as EMPTY_PATH,Cr as ErrorBoundary,de as INVALID,Ul as Integration,tl as IntegrationDefinition,Nn as IntegrationLogger,Vr as IntegrationSpecificClient,Ll as InterfaceDefinition,OB as NEVER,ct as OK,Et as ParseInputLazyPath,gt as ParseStatus,ql as Plugin,Fl as PluginDefinition,mH as RuntimeError,ye as Schema,SA as WELL_KNOWN_ATTRIBUTES,Ei as ZodAny,Hr as ZodArray,ja as ZodBigInt,$a as ZodBoolean,Za as ZodBranded,La as ZodCatch,Fa as ZodDate,fo as ZodDefault,ug as ZodDiscriminatedUnion,bn as ZodEffects,rr as ZodEnum,$t as ZodError,Vp as ZodFirstPartyTypeKind,fg as ZodFunction,Wa as ZodIntersection,G as ZodIssueCode,qa as ZodLazy,za as ZodLiteral,gg as ZodMap,mg as ZodNaN,Ga as ZodNativeEnum,_n as ZodNever,Va as ZodNull,Jn as ZodNullable,Ja as ZodNumber,Yn as ZodObject,nn as ZodOptional,ne as ZodParsedType,Ya as ZodPipeline,go as ZodPromise,yo as ZodReadonly,xg as ZodRecord,Pg as ZodRef,ye as ZodSchema,Eg as ZodSet,ft as ZodString,Ug as ZodSymbol,bn as ZodTransformer,Qn as ZodTuple,ye as ZodType,Xa as ZodUndefined,Qa as ZodUnion,Ar as ZodUnknown,Lg as ZodVoid,cA as ZuiForm,te as addIssueToContext,Hx as agent,Lx as aimodel,Qx as any,rB as array,Gx as bigint,my as boolean,ho as botIdHeader,Cy as botUserIdHeader,CB as coerce,vo as configurationHeader,My as configurationTypeHeader,Mx as conversation,po as createZodEnum,kg as cuid2Regex,Sg as cuidRegex,sg as custom,Fx as datasource,Vx as date,Dg as datetimeRegex,fA as defaultComponentDefinitions,sB as discriminatedUnion,cf as effect,Cg as emailRegex,vB as enum,se as errorUtil,Ux as event,IB as fromJsonSchema,AB as fromObject,yB as function,Dr as getErrorMap,tn as getParsedType,qx as instanceof,Oy as integrationIdHeader,Zx as intent,lB as intersection,Rg as ipv4Regex,Mg as ipv6Regex,ma as isAborted,yH as isApiError,Bi as isAsync,ha as isDirty,mx as isEmojiRegex,Nr as isValid,mo as jsonSchemaToZui,Kx as knowledgebase,Wx as late,mB as lazy,hB as literal,xi as makeIssue,pB as map,$r as mergeObjectSchemas,Nx as message,Ay as messages,zx as nan,TB as nativeEnum,tB as never,Xx as null,wB as nullable,yy as number,iB as object,Ur as objectToZui,ya as objectUtil,kB as oboolean,SB as onumber,To as operationHeader,bB as optional,EB as ostring,kt as parseBody,PB as pipeline,BB as preprocess,ge as processCreateParams,_B as promise,dx as quotelessJson,dB as readonly,cB as record,fB as ref,Zo as serve,gB as set,Xp as setErrorMap,oB as strictObject,gy as string,Jx as symbol,jx as table,$x as tablerow,cf as transformer,dA as transforms,uB as tuple,Dy as typeHeader,Ig as ulidRegex,Yx as undefined,aB as union,eB as unknown,Dx as user,be as util,Ag as uuidRegex,Rx as variable,nB as void,Ry as webhookIdHeader,nP as withErrorBoundary,re as z,rs as zuiToJsonSchema};
89
89
  /*! Bundled license information:
90
90
 
91
91
  @jspm/core/nodelibs/browser/chunk-DtuTasat.js: