@botpress/sdk 6.4.2 → 6.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,20 +1,20 @@
1
1
 
2
- > @botpress/sdk@6.4.2 build /home/runner/work/botpress/botpress/packages/sdk
2
+ > @botpress/sdk@6.4.3 build /home/runner/work/botpress/botpress/packages/sdk
3
3
  > pnpm build:type && pnpm build:node && pnpm build:browser
4
4
 
5
5
 
6
- > @botpress/sdk@6.4.2 build:type /home/runner/work/botpress/botpress/packages/sdk
6
+ > @botpress/sdk@6.4.3 build:type /home/runner/work/botpress/botpress/packages/sdk
7
7
  > tsc -p ./tsconfig.package.json --emitDeclarationOnly --declaration
8
8
 
9
9
 
10
- > @botpress/sdk@6.4.2 build:node /home/runner/work/botpress/botpress/packages/sdk
10
+ > @botpress/sdk@6.4.3 build:node /home/runner/work/botpress/botpress/packages/sdk
11
11
  > ts-node -T ./build.ts --node
12
12
 
13
13
  Done
14
14
 
15
- > @botpress/sdk@6.4.2 build:browser /home/runner/work/botpress/botpress/packages/sdk
15
+ > @botpress/sdk@6.4.3 build:browser /home/runner/work/botpress/botpress/packages/sdk
16
16
  > ts-node -T ./build.ts --browser
17
17
 
18
- (node:3416) [DEP0180] DeprecationWarning: fs.Stats constructor is deprecated.
18
+ (node:3353) [DEP0180] DeprecationWarning: fs.Stats constructor is deprecated.
19
19
  (Use `node --trace-deprecation ...` to show where the warning was created)
20
20
  Done
package/dist/index.cjs CHANGED
@@ -69,7 +69,7 @@ ${p.join(" | ")}`;case"ZodIntersection":return`${S(a._def.left,s)} & ${S(a._def.
69
69
  ${J}`.trim();case"ZodEnum":return a._def.values.map(v).join(" | ");case"ZodEffects":return S(a._def.schema,s);case"ZodNativeEnum":throw new Xl("ZodNativeEnum");case"ZodOptional":return`${S(a._def.innerType,s)} | undefined`;case"ZodNullable":return`${S(a._def.innerType,s)} | null`;case"ZodDefault":let le=e.treatDefaultAsOptional?a._def.innerType.optional():a._def.innerType;return S(le,s);case"ZodCatch":return S(a._def.innerType,s);case"ZodPromise":return`Promise<${S(a._def.type,s)}>`;case"ZodBranded":return S(a._def.type,s);case"ZodPipeline":return S(a._def.in,s);case"ZodSymbol":return`${U(a.description)} symbol`.trim();case"ZodReadonly":return`Readonly<${S(a._def.innerType,s)}>`;case"ZodRef":return Zu(a._def.uri);default:ce.assertNever(a)}}l(S,"sUnwrapZod");var Lh=l((t,e)=>{if(t.props.type==="none")return S(t.props.schema,e);let{schema:n,identifier:r}=t.props,i=U(n.description),s=n.describe(""),a=S(s,f(c({},e),{declaration:!0})),u=a.split(`
70
70
  `).length>=zh&&e.includeClosingTags?`// end of ${r}`:"";if(t.props.type!=="type"&&n.typeName==="ZodFunction")return nr(`${i}
71
71
  declare function ${r}${a};${u}`);if(t.props.type==="variable")return nr(`${i}declare const ${r}: ${a};${u}`);let d=t.props.args.length>0?`<${t.props.args.map(Zu).join(", ")}>`:"";return nr(`${i}type ${t.props.identifier}${d} = ${a};${u}`)},"unwrapDeclaration"),Fh=l(t=>t.declaration?t.declaration===!0?"variable":t.declaration:"none","getDeclarationType"),qh=l((t,e)=>{let n=Fh(e),r=t.getReferences();if(n==="none"){if(r.length>0)throw new pr;return new Ct({type:"none",schema:t})}let i="title"in t.ui?t.ui.title:null;if(!i)throw new eu;if(n==="variable"){if(r.length>0)throw new pr;return new Ct({type:"variable",identifier:i,schema:t})}return new Ct({type:"type",identifier:i,schema:t,args:r})},"getDeclarationProps"),Vh=l(t=>{let e=[];if(t.exactLength){let{value:n,message:r}=t.exactLength;e.push(`.length(${v(n)}, ${v(r)})`)}if(t.minLength){let{value:n,message:r}=t.minLength;e.push(`.min(${v(n)}, ${v(r)})`)}if(t.maxLength){let{value:n,message:r}=t.maxLength;e.push(`.max(${v(n)}, ${v(r)})`)}return e.join("")},"generateArrayChecks"),Gh=l(t=>{let e=t.checks;return e.length===0?"":e.map(Jh).join("")},"generateBigIntChecks"),Jh=l(t=>{switch(t.kind){case"min":return`.min(${v(t.value)}, ${v(t.message)})`;case"max":return`.max(${v(t.value)}, ${v(t.message)})`;case"multipleOf":return`.multipleOf(${v(t.value)}, ${v(t.message)})`;default:return""}},"_generateBigIntCheck"),Yh=l(t=>{let e=t.checks;return e.length===0?"":e.map(Xh).join("")},"generateDateChecks"),Xh=l(t=>{switch(t.kind){case"min":return`.min(${Ji(t.value)}, ${v(t.message)})`;case"max":return`.max(${Ji(t.value)}, ${v(t.message)})`;default:return""}},"_generateDateCheck"),Ji=l(t=>`new Date(${t})`,"dateTs"),Qh=l(t=>{let e=t.checks;return e.length===0?"":e.map(ey).join("")},"generateNumberChecks"),ey=l(t=>{switch(t.kind){case"min":return`.min(${v(t.value)}, ${v(t.message)})`;case"max":return`.max(${v(t.value)}, ${v(t.message)})`;case"int":return`.int(${v(t.message)})`;case"multipleOf":return`.multipleOf(${v(t.value)}, ${v(t.message)})`;case"finite":return`.finite(${v(t.message)})`;default:return""}},"_generateNumberCheck"),ty=l(t=>{let e=[];if(t.minSize){let{value:n,message:r}=t.minSize;e.push(`.min(${v(n)}, ${v(r)})`)}if(t.maxSize){let{value:n,message:r}=t.maxSize;e.push(`.max(${v(n)}, ${v(r)})`)}return e.join("")},"generateSetChecks"),ny=l(t=>{let e=t.checks;return e.length===0?"":e.map(ry).join("")},"generateStringChecks"),ry=l(t=>{switch(t.kind){case"min":return`.min(${v(t.value)}, ${v(t.message)})`;case"max":return`.max(${v(t.value)}, ${v(t.message)})`;case"length":return`.length(${v(t.value)}, ${v(t.message)})`;case"email":return`.email(${v(t.message)})`;case"url":return`.url(${v(t.message)})`;case"emoji":return`.emoji(${v(t.message)})`;case"uuid":return`.uuid(${v(t.message)})`;case"cuid":return`.cuid(${v(t.message)})`;case"cuid2":return`.cuid2(${v(t.message)})`;case"ulid":return`.ulid(${v(t.message)})`;case"includes":let e=st({message:t.message,position:t.position});return`.includes(${v(t.value)}, ${e})`;case"startsWith":return`.startsWith(${v(t.value)}, ${v(t.message)})`;case"endsWith":return`.endsWith(${v(t.value)}, ${v(t.message)})`;case"regex":return`.regex(${String(t.regex)}, ${v(t.message)})`;case"trim":return".trim()";case"toLowerCase":return".toLowerCase()";case"toUpperCase":return".toUpperCase()";case"datetime":let r=t.precision===null?void 0:t.precision;return`.datetime(${st({message:t.message,precision:r,offset:t.offset})})`;case"ip":return`.ip(${st({message:t.message,version:t.version})})`;default:return""}},"_generateStringCheck"),{zuiKey:ee}=Pe;function ti(t){return N(t)}l(ti,"toTypescriptSchema");function N(t){let e=t;switch(e.typeName){case"ZodString":return`z.string()${ny(e._def)}${E(e._def)}`.trim();case"ZodNumber":return`z.number()${Qh(e._def)}${E(e._def)}`.trim();case"ZodNaN":return`z.nan()${E(e._def)}`.trim();case"ZodBigInt":return`z.bigint()${Gh(e._def)}${E(e._def)}`.trim();case"ZodBoolean":return`z.boolean()${E(e._def)}`.trim();case"ZodDate":return`z.date()${Yh(e._def)}${E(e._def)}`.trim();case"ZodUndefined":return`z.undefined()${E(e._def)}`.trim();case"ZodNull":return`z.null()${E(e._def)}`.trim();case"ZodAny":return`z.any()${E(e._def)}`.trim();case"ZodUnknown":return`z.unknown()${E(e._def)}`.trim();case"ZodNever":return`z.never()${E(e._def)}`.trim();case"ZodVoid":return`z.void()${E(e._def)}`.trim();case"ZodArray":return`z.array(${N(e._def.type)})${Vh(e._def)}${E(e._def,e._def.type)}`;case"ZodObject":let n=Sg(e.shape,N),r=e.additionalProperties(),i=r?`.catchall(${N(r)})`:"";return["z.object({",...Object.entries(n).map(([vc,_c])=>` ${vc}: ${_c},`),`})${i}${E(e._def)}`].join(`
72
- `).trim();case"ZodUnion":return`z.union([${e._def.options.map(N).join(", ")}])${E(e._def)}`.trim();case"ZodDiscriminatedUnion":let a=e._def.options.map(N);return`z.discriminatedUnion(${v(e._def.discriminator)}, [${a.join(", ")}])${E(e._def)}`.trim();case"ZodIntersection":let u=N(e._def.left),d=N(e._def.right);return`z.intersection(${u}, ${d})${E(e._def)}`.trim();case"ZodTuple":return`z.tuple([${e._def.items.map(N).join(", ")}])${E(e._def)}`.trim();case"ZodRecord":let g=N(e._def.keyType),h=N(e._def.valueType);return`z.record(${g}, ${h})${E(e._def)}`.trim();case"ZodMap":let w=N(e._def.keyType),T=N(e._def.valueType);return`z.map(${w}, ${T})${E(e._def)}`.trim();case"ZodSet":return`z.set(${N(e._def.valueType)})${ty(e._def)}${E(e._def)}`.trim();case"ZodFunction":let D=e._def.args.items.map(N),F=D.length?`.args(${D.join(", ")})`:"",J=N(e._def.returns);return`z.function()${F}.returns(${J})${E(e._def)}`.trim();case"ZodLazy":return`z.lazy(() => ${N(e._def.getter())})${E(e._def)}`.trim();case"ZodLiteral":return`z.literal(${v(e._def.value)})${E(e._def)}`.trim();case"ZodEnum":return`z.enum([${e._def.values.map(v).join(", ")}])${E(e._def)}`.trim();case"ZodEffects":throw new je("ZodEffects");case"ZodNativeEnum":throw new je("ZodNativeEnum");case"ZodOptional":return`z.optional(${N(e._def.innerType)})${E(e._def,e._def.innerType)}`.trim();case"ZodNullable":return`z.nullable(${N(e._def.innerType)})${E(e._def,e._def.innerType)}`.trim();case"ZodDefault":let H=st(e._def.defaultValue());return`z.default(${N(e._def.innerType)}, ${H})${E(e._def,e._def.innerType)}`.trim();case"ZodCatch":throw new je("ZodCatch");case"ZodPromise":return`z.promise(${N(e._def.type)})${E(e._def,e._def.type)}`.trim();case"ZodBranded":throw new je("ZodBranded");case"ZodPipeline":throw new je("ZodPipeline");case"ZodSymbol":throw new je("ZodSymbol");case"ZodReadonly":return`z.readonly(${N(e._def.innerType)})${E(e._def,e._def.innerType)}`.trim();case"ZodRef":return`z.ref(${v(e._def.uri)})${E(e._def)}`.trim();default:ce.assertNever(e)}}l(N,"sUnwrapZod");var E=l((t,e)=>{let n=e?._def;return`${sy(t,n)}${iy(t,n)}`},"_addMetadata"),iy=l((t,e)=>!t.description||e&&e.description===t.description?"":`.describe(${v(t.description)})`,"_maybeDescribe"),sy=l((t,e)=>`${ay(t,e)}${oy(t,e)}${ly(t,e)}${uy(t,e)}${cy(t,e)}${dy(t,e)}${py(t,e)}`,"_addZuiExtensions"),ay=l((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.title;return!i||e&&((r=e[ee])==null?void 0:r.title)===i?"":`.title(${v(i)})`},"_maybeTitle"),oy=l((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.displayAs;return!i||e&&Ie((r=e[ee])==null?void 0:r.displayAs,i)?"":`.displayAs(${Au({id:i[0],params:i[1]})})`},"_maybeDisplayAs"),ly=l((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.disabled;return!i||e&&((r=e[ee])==null?void 0:r.disabled)===i?"":`.disabled(${i})`},"_maybeDisabled"),uy=l((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.hidden;return!i||e&&((r=e[ee])==null?void 0:r.hidden)===i?"":`.hidden(${i})`},"_maybeHidden"),cy=l((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.placeholder;return!i||e&&((r=e[ee])==null?void 0:r.placeholder)===i?"":`.placeholder(${v(i)})`},"_maybePlaceholder"),dy=l((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.secret;return!i||e&&((r=e[ee])==null?void 0:r.secret)===i?"":".secret()"},"_maybeSecret"),py=l((t,e)=>{var n,r;let i=["title","tooltip","displayAs","disabled","hidden","placeholder","secret","coerce"],s=Object.entries((n=t[ee])!=null?n:{}).filter(([a])=>!i.includes(a));if(s.length===0)return"";if(e){let a=Object.entries((r=e[ee])!=null?r:{}).filter(([o])=>!i.includes(o));if(Ie(Object.fromEntries(s),Object.fromEntries(a)))return""}return`.metadata(${Au(Object.fromEntries(s))})`},"_maybeSetMetadata"),fy={};P.prototype.toJSONSchema=function(t={}){return z(this,t)};P.prototype.toTypescriptType=function(t={}){return ei(this,t)};P.prototype.toTypescriptSchema=function(){return ti(this)};var L=y.string().min(1),Uu=y.object({text:L}),zu=y.object({markdown:L}),Ku=y.object({imageUrl:L,title:L.optional()}),Wu=y.object({audioUrl:L,title:L.optional()}),Lu=y.object({videoUrl:L,title:L.optional()}),Fu=y.object({fileUrl:L,title:L.optional()}),qu=y.object({latitude:y.number(),longitude:y.number(),address:y.string().optional(),title:y.string().optional()}),Vu=y.object({title:L,subtitle:L.optional(),imageUrl:L.optional(),actions:y.array(y.object({action:y.enum(["postback","url","say"]),label:L,value:L}))}),$u=y.object({text:L,options:y.array(y.object({label:L,value:L}))}),gy=y.object({items:y.array(Vu)}),Gu=y.union([y.object({type:y.literal("text"),payload:Uu}),y.object({type:y.literal("image"),payload:Ku}),y.object({type:y.literal("audio"),payload:Wu}),y.object({type:y.literal("video"),payload:Lu}),y.object({type:y.literal("file"),payload:Fu}),y.object({type:y.literal("location"),payload:qu})]),my=y.object({items:y.array(Gu)}),hy={schema:zu},yy={schema:y.object({items:y.array(y.union([...Gu.options,y.object({type:y.literal("markdown"),payload:zu})]))})},vy={text:{schema:Uu},image:{schema:Ku},audio:{schema:Wu},video:{schema:Lu},file:{schema:Fu},location:{schema:qu},carousel:{schema:gy},card:{schema:Vu},dropdown:{schema:$u},choice:{schema:$u},bloc:{schema:my}};var _y={HIDDEN_IN_STUDIO:{bpActionHiddenInStudio:"true"},AWAIT_RETURN:{bpActionAwaitReturn:"true"}};var Ju=require("browser-or-node");var ri=console;function re(t){if(!t.body)throw new Error("Missing body");return JSON.parse(t.body)}async function Kt(t,e=8072,n=xy){if(!Ju.isNode)throw new Error("This function can only be called in Node.js");let i=require("http").createServer(async(s,a)=>{try{let o=await Ty(s);if(o.path==="/health"){a.writeHead(200).end("ok");return}let u=await t(o);a.writeHead(u?.status??200,u?.headers??{}).end(u?.body??"{}")}catch(o){let u=o instanceof Error?o.message:String(o);ri.error("Error while handling request",{error:u??"Internal error occured"}),a.writeHead(500).end(JSON.stringify({error:u??"Internal error occured"}))}});return i.listen(e,()=>n(e)),i}async function Ty(t){let e=await wy(t),n={};for(let i=0;i<t.rawHeaders.length;i+=2){let s=t.rawHeaders[i].toLowerCase(),a=t.rawHeaders[i+1];n[s]=a}let r=new URL(t.url??"",t.headers.host?`http://${t.headers.host}`:"http://botpress.cloud");return{body:e,path:r.pathname,query:by(r.search,"?"),headers:n,method:t.method?.toUpperCase()??"GET"}}function by(t,e){return t.indexOf(e)===0?t.slice(e.length):t}async function wy(t){return new Promise((e,n)=>{if(t.method!=="POST"&&t.method!=="PUT"&&t.method!=="PATCH")return e(void 0);let r="";t.on("data",i=>r+=i.toString()),t.on("error",i=>n(i)),t.on("end",()=>e(r))})}function xy(t){ri.info(`Listening on port ${t}`)}var Kn=require("@botpress/client");var ii={};Ze(ii,{DefinitionError:()=>te,isDefinitionError:()=>Py});var te=class extends Error{__IS_SDK_ERROR__=!0;type="definition_error"},Py=t=>t instanceof te||typeof t=="object"&&t!==null&&"__IS_SDK_ERROR__"in t&&t.__IS_SDK_ERROR__===!0&&"type"in t&&t.type==="definition_error";var Z={};Ze(Z,{mapKeys:()=>Oy,mapValues:()=>Sy,mergeRecords:()=>Iy,pairs:()=>In,stripUndefinedProps:()=>Ey,values:()=>ky});var In=t=>Object.entries(t),ky=t=>Object.values(t),Sy=(t,e)=>Object.fromEntries(In(t).map(([n,r])=>[n,e(r,n)])),Oy=(t,e)=>Object.fromEntries(In(t).map(([n,r])=>[e(n),r])),Ey=t=>Object.fromEntries(In(t).filter(([,e])=>e!==void 0)),Iy=(t,e,n)=>{let r=[...Object.keys(t),...Object.keys(e)],i=[...new Set(r)],s={};for(let a of i){let o=t[a],u=e[a];o&&u?s[a]=n(o,u):o?s[a]=o:u&&(s[a]=u)}return s};var b={};Ze(b,{safePush:()=>By,unique:()=>Cy});var By=(t,...e)=>t?[...t,...e]:[...e],Cy=t=>Array.from(new Set(t));var V={};Ze(V,{setName:()=>Ay});var Ay=(t,e)=>(Object.defineProperty(t,"name",{value:e}),t);var Yu=t=>{let{name:e,version:n}=t,r={actions:{},events:{},channels:{}},i={name:e,version:n,entities:Z.mapValues(t.entities,a=>({name:a.name})),actions:{},events:{},channels:{}},s=Z.mapValues(t.entities,a=>a.schema);for(let[a,o]of Object.entries(t.definition.actions??{})){let u=o.input.schema.dereference(s),d=o.output.schema.dereference(s),p=t.actions?.[a]?.name??a;r.actions[p]={...o,...t.actions?.[a]??{},input:{schema:u},output:{schema:d}},i.actions[a]={name:p}}for(let[a,o]of Object.entries(t.definition.events??{})){let u=o.schema.dereference(s),d=t.events?.[a]?.name??a;r.events[d]={...o,...t.events?.[a]??{},schema:u},i.events[a]={name:d}}for(let[a,o]of Object.entries(t.definition.channels??{})){let u={};for(let[p,g]of Object.entries(o.messages)){let h=g.schema.dereference(s);u[p]={...g,schema:h}}let d=t.channels?.[a]?.name??a;r.channels[d]={...o,...t.channels?.[a]??{},message:{...o.message??{},tags:{...o.message?.tags??{},...t.channels?.[a]?.message?.tags??{}}},conversation:{...o.conversation??{},tags:{...o.conversation?.tags??{},...t.channels?.[a]?.conversation?.tags??{}}},messages:u},i.channels[a]={name:d}}return{resolved:r,statement:i}};var Xu="6.4.2";var Ae=Xu;var Bn=Symbol("schemaName"),Qu=t=>t?Z.mapValues(t,(n,r)=>({...n,[Bn]:r})):{},ec=t=>Bn in t&&t[Bn]!==void 0,tc=t=>t[Bn];var Cn=class{constructor(e){this.props=e;this.name=e.name,this.version=e.version,this.icon=e.icon,this.readme=e.readme,this.title=e.title,this.identifier=e.identifier,this.description=e.description,this.configuration=e.configuration,this.configurations=e.configurations,this.events=e.events,this.actions=e.actions,this.channels=e.channels,this.states=e.states,this.user=e.user,this.secrets=e.secrets,this.entities=e.entities,this.interfaces=e.interfaces,this.__advanced=e.__advanced,this.attributes=e.attributes}name;version;title;description;icon;readme;configuration;configurations;events;actions;channels;states;user;secrets;identifier;entities;interfaces;__advanced;attributes;get metadata(){return{sdkVersion:Ae}}extend(e,n){let{entities:r,actions:i,events:s,channels:a}=this._callBuilder(e,n),o=this;o.interfaces??={};let u=Object.values(r).map(h=>h.name),d=u.length===0?e.name:`${e.name}<${u.join(",")}>`,{resolved:p,statement:g}=Yu({...e,entities:r,actions:Z.stripUndefinedProps(i),events:Z.stripUndefinedProps(s),channels:Z.stripUndefinedProps(a)});return o.actions=Z.mergeRecords(o.actions??{},p.actions,this._mergeActions),o.channels=Z.mergeRecords(o.channels??{},p.channels,this._mergeChannels),o.events=Z.mergeRecords(o.events??{},p.events,this._mergeEvents),o.interfaces[d]={id:e.id,...g},this}_callBuilder(e,n){let i={entities:Qu(this.entities)},s=n(i),a=Z.pairs(s.entities).find(([u,d])=>!ec(d));if(a)throw new te(`Cannot extend interface "${e.name}" with entity "${a[0]}"; the provided schema is not part of the integration's entities.`);return{entities:Z.mapValues(s.entities,u=>({name:tc(u),schema:u.schema})),actions:s.actions??{},events:s.events??{},channels:s.channels??{}}}_mergeActions=(e,n)=>({...e,...n,input:{schema:this._mergeObjectSchemas(e.input.schema,n.input.schema)},output:{schema:this._mergeObjectSchemas(e.output.schema,n.output.schema)}});_mergeEvents=(e,n)=>({...e,...n,schema:this._mergeObjectSchemas(e.schema,n.schema)});_mergeChannels=(e,n)=>{let r=Z.mergeRecords(e.messages,n.messages,this._mergeMessage),i;(e.conversation||n.conversation)&&(i={tags:{...e.conversation?.tags,...n.conversation?.tags}});let s;return(e.message||n.message)&&(s={tags:{...e.message?.tags,...n.message?.tags}}),{...e,...n,messages:r,conversation:i,message:s}};_mergeMessage=(e,n)=>({schema:this._mergeObjectSchemas(e.schema,n.schema)});_mergeObjectSchemas=(e,n)=>{let r=e._def,i=n._def;if(r.typeName==="ZodObject"&&i.typeName==="ZodObject"){let s=r.shape(),a=i.shape();return y.object({...s,...a})}if(r.typeName==="ZodRecord"&&i.typeName==="ZodRecord")return y.record(y.intersection(r.valueType,i.valueType));throw new Error("Cannot merge object schemas with record schemas")}};var Se=require("@botpress/client");var nc=Wn(require("@botpress/client")),An={retries:3,retryCondition:t=>nc.axiosRetry.isNetworkOrIdempotentRequestError(t)||[429,502].includes(t.response?.status??0),retryDelay:(t,e)=>(Ry(e.response?.headers??{})??t)*1e3},Ry=t=>{let e=["RateLimit-Reset","X-RateLimit-Reset","Retry-After","ratelimit-reset","x-ratelimit-reset","retry-after"];for(let n of e){let r=t[n];if(r!==void 0)return Ny(String(r))}},Ny=t=>{let e=Dy(t)?Hy(t):t.length>0?parseInt(t,10):void 0;return e===void 0||isNaN(e)?void 0:e},Dy=t=>t.includes(" "),Hy=t=>{let e=My(t);if(!e)return;let n=new Date;return Math.max(0,Math.floor((e.getTime()-n.getTime())/1e3))},My=t=>{let e=new Date(t);return isNaN(e.getTime())?void 0:e};var ut=class{constructor(e){this._client=e}get _inner(){return this._client}createConversation=(e=>this._client.createConversation(e));getConversation=(e=>this._client.getConversation(e));listConversations=(e=>this._client.listConversations(e));getOrCreateConversation=(e=>this._client.getOrCreateConversation(e));updateConversation=(e=>this._client.updateConversation(e));deleteConversation=(e=>this._client.deleteConversation(e));listParticipants=(e=>this._client.listParticipants(e));addParticipant=(e=>this._client.addParticipant(e));getParticipant=(e=>this._client.getParticipant(e));removeParticipant=(e=>this._client.removeParticipant(e));createEvent=(e=>this._client.createEvent(e));getEvent=(e=>this._client.getEvent(e));listEvents=(e=>this._client.listEvents(e));createMessage=(e=>this._client.createMessage(e));getOrCreateMessage=(e=>this._client.getOrCreateMessage(e));getMessage=(e=>this._client.getMessage(e).then(n=>n));updateMessage=(e=>this._client.updateMessage(e).then(n=>n));listMessages=(e=>this._client.listMessages(e));deleteMessage=(e=>this._client.deleteMessage(e));initializeIncomingMessage=(e=>this._client.initializeIncomingMessage(e));createUser=(e=>this._client.createUser(e));getUser=(e=>this._client.getUser(e));listUsers=e=>this._client.listUsers(e);getOrCreateUser=(e=>this._client.getOrCreateUser(e));updateUser=(e=>this._client.updateUser(e));deleteUser=e=>this._client.deleteUser(e);getState=(e=>this._client.getState(e));setState=(e=>this._client.setState(e));getOrSetState=(e=>this._client.getOrSetState(e));patchState=(e=>this._client.patchState(e));configureIntegration=e=>this._client.configureIntegration(e);uploadFile=e=>this._client.uploadFile(e);upsertFile=e=>this._client.upsertFile(e);deleteFile=e=>this._client.deleteFile(e);listFiles=e=>this._client.listFiles(e);getFile=e=>this._client.getFile(e);updateFileMetadata=e=>this._client.updateFileMetadata(e);trackAnalytics=e=>this._client.trackAnalytics(e)};var Zn=class{_cost=0;get cost(){return this._cost}setCost(e){this._cost=e}toJSON(){return{cost:this.cost}}};var pe="#",Rn="x-bot-id",rc="x-bot-user-id",ic="x-integration-id",sc="x-integration-alias",ac="x-webhook-id",oc="x-bp-configuration-type",Nn="x-bp-configuration",Dn="x-bp-operation",lc="x-bp-type";var ie=t=>{throw t instanceof Error?t:new Error(t)};var p_=y.enum(["webhook_received","message_created","action_triggered","register","unregister","ping","create_user","create_conversation"]),uc=t=>({botId:t[Rn]||ie("Missing bot header"),botUserId:t[rc]||ie("Missing bot user header"),integrationId:t[ic]||ie("Missing integration header"),integrationAlias:t[sc]||ie("Missing integration alias header"),webhookId:t[ac]||ie("Missing webhook header"),operation:t[Dn]||ie("Missing operation header"),configurationType:t[oc]??null,configuration:JSON.parse(Buffer.from(t[Nn]||ie("Missing configuration header"),"base64").toString("utf-8"))});var cc=Wn(require("util")),ct=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)}issue(e){console.info(JSON.stringify(e))}_log(e,n){this._getConsoleMethod(e)(this._serializeMessage(n))}_serializeMessage(e){let n=cc.default.format(...e);return process.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 dt=class t extends ct{constructor(e){super({visibleToBotOwners:!1,hiddenToIntegrationOwners:!1,...e})}with(e){return new t({...this.defaultOptions,...e})}withUserId(e){return this.with({userId:e})}withConversationId(e){return this.with({conversationId:e})}withVisibleToBotOwners(e){return this.with({visibleToBotOwners:e})}withHiddenToIntegrationOwners(e){return this.with({hiddenToIntegrationOwners:e})}forBot(){return this.with({hiddenToIntegrationOwners:!1,visibleToBotOwners:!0})}forBotOnly(){return this.with({hiddenToIntegrationOwners:!0,visibleToBotOwners:!0})}getJsonMessage(e){return JSON.stringify({msg:e,visible_to_bot_owner:this.defaultOptions.visibleToBotOwners,hidden_to_integration_owner:this.defaultOptions.hiddenToIntegrationOwners,options:this.defaultOptions})}};var jy=t=>["traceparent","tracestate","sentry-trace"].reduce((e,n)=>(t[n]&&(e[n]=t[n]),e),{}),$y=(t,e,n)=>{let[,r]=(e.headers.traceparent||"").split("-"),i=new Se.Client({botId:t.botId,integrationId:t.integrationId,integrationAlias:t.integrationAlias,retry:An,headers:jy(e.headers)}),s=new ut(i),a=new dt({traceId:r});return{ctx:t,req:e,client:s,logger:a,instance:n}},Uy=async t=>{let{ctx:e}=t;switch(e.operation){case"webhook_received":return await Ky(t);case"register":return await Wy(t);case"unregister":return await Ly(t);case"message_created":return await Vy(t);case"action_triggered":return await Gy(t);case"ping":return await zy(t);case"create_user":return await Fy(t);case"create_conversation":return await qy(t);default:throw new Se.InvalidPayloadError(`Unknown operation ${e.operation}`)}},dc=t=>async e=>{let n=uc(e.headers),r=$y(n,e,t),{logger:i}=r;try{let s;return s=await Jy(r),s?{...s,status:s.status??200}:(s=await Uy(r),s?{...s,status:s.status??200}:{status:200})}catch(s){if((0,Se.isApiError)(s)){let o=s.type==="Runtime"?s:new Se.RuntimeError(s.message,s);return i.forBot().error(o.message),{status:o.code,body:JSON.stringify(o.toJSON())}}console.error(s);let a=new Se.RuntimeError("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(a.message),{status:a.code,body:JSON.stringify(a.toJSON())}}},zy=async t=>{},Ky=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{let{req:s}=re(n);return i.webhook({client:t,ctx:e,req:s,logger:r})},Wy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.register)return;let{webhookUrl:s}=re(n);await i.register({client:t,ctx:e,webhookUrl:s,logger:r})},Ly=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.unregister)return;let{webhookUrl:s}=re(n);await i.unregister({ctx:e,webhookUrl:s,client:t,logger:r})},Fy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.createUser)return;let{tags:s}=re(n);return await i.createUser({ctx:e,client:t,tags:s,logger:r})},qy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.createConversation)return;let{channel:s,tags:a}=re(n);return await i.createConversation({ctx:e,client:t,channel:s,tags:a,logger:r})},Vy=async({ctx:t,req:e,client:n,logger:r,instance:i})=>{let{conversation:s,user:a,type:o,payload:u,message:d}=re(e),p=i.channels[s.channel];if(!p)throw new Error(`Channel ${s.channel} not found`);let g=p.messages[o];if(!g)throw new Error(`Message of type ${o} not found in channel ${s.channel}`);await g({ctx:t,conversation:s,message:d,user:a,type:o,client:n,payload:u,ack:async({tags:w})=>{await n.updateMessage({id:d.id,tags:w})},logger:r})},Gy=async({req:t,ctx:e,client:n,logger:r,instance:i})=>{let{input:s,type:a}=re(t);if(!a)throw new Error("Missing action type");let o=i.actions[a];if(!o)throw new Error(`Action ${a} not found`);let u=new Zn,p={output:await o({ctx:e,input:s,client:n,type:a,logger:r,metadata:u}),meta:u.toJSON()};return{body:JSON.stringify(p)}},Jy=async({instance:t,client:e,ctx:n,logger:r,req:i})=>{let s=t.unknownOperationHandler;if(s)return await s({client:e,ctx:n,logger:r,req:i})};var Hn=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,this.unknownOperationHandler=e.__advanced?.unknownOperationHandler}actions;channels;register;unregister;createUser;createConversation;webhook;unknownOperationHandler;handler=dc(this);start=e=>Kt(this.handler,e)};var Mn=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.secrets=e.secrets,this.workflows=e.workflows,this.attributes=e.attributes,this.__advanced=e.__advanced,this.withPlugins={user:e.user,conversation:e.conversation,message:e.message,states:e.states,events:e.events,recurringEvents:e.recurringEvents,actions:e.actions,tables:e.tables,workflows:e.workflows}}integrations;plugins;user;conversation;message;states;configuration;events;recurringEvents;actions;tables;secrets;workflows;attributes;__advanced;withPlugins;get metadata(){return{sdkVersion:Ae}}addIntegration(e,n){let r=this;r.integrations||(r.integrations={});let i=n?.alias??e.name;if(r.integrations[i])throw new te(`Another integration with alias "${i}" is already installed in the bot`);return r.integrations[i]={...e,alias:i,enabled:n?.enabled,configurationType:n&&"configurationType"in n?n.configurationType:void 0,configuration:n&&"configuration"in n?n.configuration??{}:{},disabledChannels:n?.disabledChannels},this}addPlugin(e,n){let r=this;r.plugins||(r.plugins={});let i=n.alias??e.name;if(r.plugins[i])throw new te(`Another plugin with alias "${i}" is already installed in the bot`);let s=Object.fromEntries(Object.entries(n.dependencies??{}).filter(([o,u])=>"integrationInterfaceAlias"in u).map(([o,u])=>{let d=this.integrations?.[u.integrationAlias];if(!d){let g=Object.keys(this.integrations??{}).join(", ")||"(none)";throw new te(`Interface with alias "${o}" of plugin with alias "${i}" references integration with alias "${u.integrationAlias}" which is not installed. Please make sure to add the integration via addIntegration() before calling addPlugin().
72
+ `).trim();case"ZodUnion":return`z.union([${e._def.options.map(N).join(", ")}])${E(e._def)}`.trim();case"ZodDiscriminatedUnion":let a=e._def.options.map(N);return`z.discriminatedUnion(${v(e._def.discriminator)}, [${a.join(", ")}])${E(e._def)}`.trim();case"ZodIntersection":let u=N(e._def.left),d=N(e._def.right);return`z.intersection(${u}, ${d})${E(e._def)}`.trim();case"ZodTuple":return`z.tuple([${e._def.items.map(N).join(", ")}])${E(e._def)}`.trim();case"ZodRecord":let g=N(e._def.keyType),h=N(e._def.valueType);return`z.record(${g}, ${h})${E(e._def)}`.trim();case"ZodMap":let w=N(e._def.keyType),T=N(e._def.valueType);return`z.map(${w}, ${T})${E(e._def)}`.trim();case"ZodSet":return`z.set(${N(e._def.valueType)})${ty(e._def)}${E(e._def)}`.trim();case"ZodFunction":let D=e._def.args.items.map(N),F=D.length?`.args(${D.join(", ")})`:"",J=N(e._def.returns);return`z.function()${F}.returns(${J})${E(e._def)}`.trim();case"ZodLazy":return`z.lazy(() => ${N(e._def.getter())})${E(e._def)}`.trim();case"ZodLiteral":return`z.literal(${v(e._def.value)})${E(e._def)}`.trim();case"ZodEnum":return`z.enum([${e._def.values.map(v).join(", ")}])${E(e._def)}`.trim();case"ZodEffects":throw new je("ZodEffects");case"ZodNativeEnum":throw new je("ZodNativeEnum");case"ZodOptional":return`z.optional(${N(e._def.innerType)})${E(e._def,e._def.innerType)}`.trim();case"ZodNullable":return`z.nullable(${N(e._def.innerType)})${E(e._def,e._def.innerType)}`.trim();case"ZodDefault":let H=st(e._def.defaultValue());return`z.default(${N(e._def.innerType)}, ${H})${E(e._def,e._def.innerType)}`.trim();case"ZodCatch":throw new je("ZodCatch");case"ZodPromise":return`z.promise(${N(e._def.type)})${E(e._def,e._def.type)}`.trim();case"ZodBranded":throw new je("ZodBranded");case"ZodPipeline":throw new je("ZodPipeline");case"ZodSymbol":throw new je("ZodSymbol");case"ZodReadonly":return`z.readonly(${N(e._def.innerType)})${E(e._def,e._def.innerType)}`.trim();case"ZodRef":return`z.ref(${v(e._def.uri)})${E(e._def)}`.trim();default:ce.assertNever(e)}}l(N,"sUnwrapZod");var E=l((t,e)=>{let n=e?._def;return`${sy(t,n)}${iy(t,n)}`},"_addMetadata"),iy=l((t,e)=>!t.description||e&&e.description===t.description?"":`.describe(${v(t.description)})`,"_maybeDescribe"),sy=l((t,e)=>`${ay(t,e)}${oy(t,e)}${ly(t,e)}${uy(t,e)}${cy(t,e)}${dy(t,e)}${py(t,e)}`,"_addZuiExtensions"),ay=l((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.title;return!i||e&&((r=e[ee])==null?void 0:r.title)===i?"":`.title(${v(i)})`},"_maybeTitle"),oy=l((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.displayAs;return!i||e&&Ie((r=e[ee])==null?void 0:r.displayAs,i)?"":`.displayAs(${Au({id:i[0],params:i[1]})})`},"_maybeDisplayAs"),ly=l((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.disabled;return!i||e&&((r=e[ee])==null?void 0:r.disabled)===i?"":`.disabled(${i})`},"_maybeDisabled"),uy=l((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.hidden;return!i||e&&((r=e[ee])==null?void 0:r.hidden)===i?"":`.hidden(${i})`},"_maybeHidden"),cy=l((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.placeholder;return!i||e&&((r=e[ee])==null?void 0:r.placeholder)===i?"":`.placeholder(${v(i)})`},"_maybePlaceholder"),dy=l((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.secret;return!i||e&&((r=e[ee])==null?void 0:r.secret)===i?"":".secret()"},"_maybeSecret"),py=l((t,e)=>{var n,r;let i=["title","tooltip","displayAs","disabled","hidden","placeholder","secret","coerce"],s=Object.entries((n=t[ee])!=null?n:{}).filter(([a])=>!i.includes(a));if(s.length===0)return"";if(e){let a=Object.entries((r=e[ee])!=null?r:{}).filter(([o])=>!i.includes(o));if(Ie(Object.fromEntries(s),Object.fromEntries(a)))return""}return`.metadata(${Au(Object.fromEntries(s))})`},"_maybeSetMetadata"),fy={};P.prototype.toJSONSchema=function(t={}){return z(this,t)};P.prototype.toTypescriptType=function(t={}){return ei(this,t)};P.prototype.toTypescriptSchema=function(){return ti(this)};var L=y.string().min(1),Uu=y.object({text:L}),zu=y.object({markdown:L}),Ku=y.object({imageUrl:L,title:L.optional()}),Wu=y.object({audioUrl:L,title:L.optional()}),Lu=y.object({videoUrl:L,title:L.optional()}),Fu=y.object({fileUrl:L,title:L.optional()}),qu=y.object({latitude:y.number(),longitude:y.number(),address:y.string().optional(),title:y.string().optional()}),Vu=y.object({title:L,subtitle:L.optional(),imageUrl:L.optional(),actions:y.array(y.object({action:y.enum(["postback","url","say"]),label:L,value:L}))}),$u=y.object({text:L,options:y.array(y.object({label:L,value:L}))}),gy=y.object({items:y.array(Vu)}),Gu=y.union([y.object({type:y.literal("text"),payload:Uu}),y.object({type:y.literal("image"),payload:Ku}),y.object({type:y.literal("audio"),payload:Wu}),y.object({type:y.literal("video"),payload:Lu}),y.object({type:y.literal("file"),payload:Fu}),y.object({type:y.literal("location"),payload:qu})]),my=y.object({items:y.array(Gu)}),hy={schema:zu},yy={schema:y.object({items:y.array(y.union([...Gu.options,y.object({type:y.literal("markdown"),payload:zu})]))})},vy={text:{schema:Uu},image:{schema:Ku},audio:{schema:Wu},video:{schema:Lu},file:{schema:Fu},location:{schema:qu},carousel:{schema:gy},card:{schema:Vu},dropdown:{schema:$u},choice:{schema:$u},bloc:{schema:my}};var _y={HIDDEN_IN_STUDIO:{bpActionHiddenInStudio:"true"},AWAIT_RETURN:{bpActionAwaitReturn:"true"}};var Ju=require("browser-or-node");var ri=console;function re(t){if(!t.body)throw new Error("Missing body");return JSON.parse(t.body)}async function Kt(t,e=8072,n=xy){if(!Ju.isNode)throw new Error("This function can only be called in Node.js");let i=require("http").createServer(async(s,a)=>{try{let o=await Ty(s);if(o.path==="/health"){a.writeHead(200).end("ok");return}let u=await t(o);a.writeHead(u?.status??200,u?.headers??{}).end(u?.body??"{}")}catch(o){let u=o instanceof Error?o.message:String(o);ri.error("Error while handling request",{error:u??"Internal error occured"}),a.writeHead(500).end(JSON.stringify({error:u??"Internal error occured"}))}});return i.listen(e,()=>n(e)),i}async function Ty(t){let e=await wy(t),n={};for(let i=0;i<t.rawHeaders.length;i+=2){let s=t.rawHeaders[i].toLowerCase(),a=t.rawHeaders[i+1];n[s]=a}let r=new URL(t.url??"",t.headers.host?`http://${t.headers.host}`:"http://botpress.cloud");return{body:e,path:r.pathname,query:by(r.search,"?"),headers:n,method:t.method?.toUpperCase()??"GET"}}function by(t,e){return t.indexOf(e)===0?t.slice(e.length):t}async function wy(t){return new Promise((e,n)=>{if(t.method!=="POST"&&t.method!=="PUT"&&t.method!=="PATCH")return e(void 0);let r="";t.on("data",i=>r+=i.toString()),t.on("error",i=>n(i)),t.on("end",()=>e(r))})}function xy(t){ri.info(`Listening on port ${t}`)}var Kn=require("@botpress/client");var ii={};Ze(ii,{DefinitionError:()=>te,isDefinitionError:()=>Py});var te=class extends Error{__IS_SDK_ERROR__=!0;type="definition_error"},Py=t=>t instanceof te||typeof t=="object"&&t!==null&&"__IS_SDK_ERROR__"in t&&t.__IS_SDK_ERROR__===!0&&"type"in t&&t.type==="definition_error";var Z={};Ze(Z,{mapKeys:()=>Oy,mapValues:()=>Sy,mergeRecords:()=>Iy,pairs:()=>In,stripUndefinedProps:()=>Ey,values:()=>ky});var In=t=>Object.entries(t),ky=t=>Object.values(t),Sy=(t,e)=>Object.fromEntries(In(t).map(([n,r])=>[n,e(r,n)])),Oy=(t,e)=>Object.fromEntries(In(t).map(([n,r])=>[e(n),r])),Ey=t=>Object.fromEntries(In(t).filter(([,e])=>e!==void 0)),Iy=(t,e,n)=>{let r=[...Object.keys(t),...Object.keys(e)],i=[...new Set(r)],s={};for(let a of i){let o=t[a],u=e[a];o&&u?s[a]=n(o,u):o?s[a]=o:u&&(s[a]=u)}return s};var b={};Ze(b,{safePush:()=>By,unique:()=>Cy});var By=(t,...e)=>t?[...t,...e]:[...e],Cy=t=>Array.from(new Set(t));var V={};Ze(V,{setName:()=>Ay});var Ay=(t,e)=>(Object.defineProperty(t,"name",{value:e}),t);var Yu=t=>{let{name:e,version:n}=t,r={actions:{},events:{},channels:{}},i={name:e,version:n,entities:Z.mapValues(t.entities,a=>({name:a.name})),actions:{},events:{},channels:{}},s=Z.mapValues(t.entities,a=>a.schema);for(let[a,o]of Object.entries(t.definition.actions??{})){let u=o.input.schema.dereference(s),d=o.output.schema.dereference(s),p=t.actions?.[a]?.name??a;r.actions[p]={...o,...t.actions?.[a]??{},input:{schema:u},output:{schema:d}},i.actions[a]={name:p}}for(let[a,o]of Object.entries(t.definition.events??{})){let u=o.schema.dereference(s),d=t.events?.[a]?.name??a;r.events[d]={...o,...t.events?.[a]??{},schema:u},i.events[a]={name:d}}for(let[a,o]of Object.entries(t.definition.channels??{})){let u={};for(let[p,g]of Object.entries(o.messages)){let h=g.schema.dereference(s);u[p]={...g,schema:h}}let d=t.channels?.[a]?.name??a;r.channels[d]={...o,...t.channels?.[a]??{},message:{...o.message??{},tags:{...o.message?.tags??{},...t.channels?.[a]?.message?.tags??{}}},conversation:{...o.conversation??{},tags:{...o.conversation?.tags??{},...t.channels?.[a]?.conversation?.tags??{}}},messages:u},i.channels[a]={name:d}}return{resolved:r,statement:i}};var Xu="6.4.3";var Ae=Xu;var Bn=Symbol("schemaName"),Qu=t=>t?Z.mapValues(t,(n,r)=>({...n,[Bn]:r})):{},ec=t=>Bn in t&&t[Bn]!==void 0,tc=t=>t[Bn];var Cn=class{constructor(e){this.props=e;this.name=e.name,this.version=e.version,this.icon=e.icon,this.readme=e.readme,this.title=e.title,this.identifier=e.identifier,this.description=e.description,this.configuration=e.configuration,this.configurations=e.configurations,this.events=e.events,this.actions=e.actions,this.channels=e.channels,this.states=e.states,this.user=e.user,this.secrets=e.secrets,this.entities=e.entities,this.interfaces=e.interfaces,this.__advanced=e.__advanced,this.attributes=e.attributes}name;version;title;description;icon;readme;configuration;configurations;events;actions;channels;states;user;secrets;identifier;entities;interfaces;__advanced;attributes;get metadata(){return{sdkVersion:Ae}}extend(e,n){let{entities:r,actions:i,events:s,channels:a}=this._callBuilder(e,n),o=this;o.interfaces??={};let u=Object.values(r).map(h=>h.name),d=u.length===0?e.name:`${e.name}<${u.join(",")}>`,{resolved:p,statement:g}=Yu({...e,entities:r,actions:Z.stripUndefinedProps(i),events:Z.stripUndefinedProps(s),channels:Z.stripUndefinedProps(a)});return o.actions=Z.mergeRecords(o.actions??{},p.actions,this._mergeActions),o.channels=Z.mergeRecords(o.channels??{},p.channels,this._mergeChannels),o.events=Z.mergeRecords(o.events??{},p.events,this._mergeEvents),o.interfaces[d]={id:e.id,...g},this}_callBuilder(e,n){let i={entities:Qu(this.entities)},s=n(i),a=Z.pairs(s.entities).find(([u,d])=>!ec(d));if(a)throw new te(`Cannot extend interface "${e.name}" with entity "${a[0]}"; the provided schema is not part of the integration's entities.`);return{entities:Z.mapValues(s.entities,u=>({name:tc(u),schema:u.schema})),actions:s.actions??{},events:s.events??{},channels:s.channels??{}}}_mergeActions=(e,n)=>({...e,...n,input:{schema:this._mergeObjectSchemas(e.input.schema,n.input.schema)},output:{schema:this._mergeObjectSchemas(e.output.schema,n.output.schema)}});_mergeEvents=(e,n)=>({...e,...n,schema:this._mergeObjectSchemas(e.schema,n.schema)});_mergeChannels=(e,n)=>{let r=Z.mergeRecords(e.messages,n.messages,this._mergeMessage),i;(e.conversation||n.conversation)&&(i={tags:{...e.conversation?.tags,...n.conversation?.tags}});let s;return(e.message||n.message)&&(s={tags:{...e.message?.tags,...n.message?.tags}}),{...e,...n,messages:r,conversation:i,message:s}};_mergeMessage=(e,n)=>({schema:this._mergeObjectSchemas(e.schema,n.schema)});_mergeObjectSchemas=(e,n)=>{let r=e._def,i=n._def;if(r.typeName==="ZodObject"&&i.typeName==="ZodObject"){let s=r.shape(),a=i.shape();return y.object({...s,...a})}if(r.typeName==="ZodRecord"&&i.typeName==="ZodRecord")return y.record(y.intersection(r.valueType,i.valueType));throw new Error("Cannot merge object schemas with record schemas")}};var Se=require("@botpress/client");var nc=Wn(require("@botpress/client")),An={retries:3,retryCondition:t=>nc.axiosRetry.isNetworkOrIdempotentRequestError(t)||[429,502].includes(t.response?.status??0),retryDelay:(t,e)=>(Ry(e.response?.headers??{})??t)*1e3},Ry=t=>{let e=["RateLimit-Reset","X-RateLimit-Reset","Retry-After","ratelimit-reset","x-ratelimit-reset","retry-after"];for(let n of e){let r=t[n];if(r!==void 0)return Ny(String(r))}},Ny=t=>{let e=Dy(t)?Hy(t):t.length>0?parseInt(t,10):void 0;return e===void 0||isNaN(e)?void 0:e},Dy=t=>t.includes(" "),Hy=t=>{let e=My(t);if(!e)return;let n=new Date;return Math.max(0,Math.floor((e.getTime()-n.getTime())/1e3))},My=t=>{let e=new Date(t);return isNaN(e.getTime())?void 0:e};var ut=class{constructor(e){this._client=e}get _inner(){return this._client}createConversation=(e=>this._client.createConversation(e));getConversation=(e=>this._client.getConversation(e));listConversations=(e=>this._client.listConversations(e));getOrCreateConversation=(e=>this._client.getOrCreateConversation(e));updateConversation=(e=>this._client.updateConversation(e));deleteConversation=(e=>this._client.deleteConversation(e));listParticipants=(e=>this._client.listParticipants(e));addParticipant=(e=>this._client.addParticipant(e));getParticipant=(e=>this._client.getParticipant(e));removeParticipant=(e=>this._client.removeParticipant(e));createEvent=(e=>this._client.createEvent(e));getEvent=(e=>this._client.getEvent(e));listEvents=(e=>this._client.listEvents(e));createMessage=(e=>this._client.createMessage(e));getOrCreateMessage=(e=>this._client.getOrCreateMessage(e));getMessage=(e=>this._client.getMessage(e).then(n=>n));updateMessage=(e=>this._client.updateMessage(e).then(n=>n));listMessages=(e=>this._client.listMessages(e));deleteMessage=(e=>this._client.deleteMessage(e));initializeIncomingMessage=(e=>this._client.initializeIncomingMessage(e));createUser=(e=>this._client.createUser(e));getUser=(e=>this._client.getUser(e));listUsers=e=>this._client.listUsers(e);getOrCreateUser=(e=>this._client.getOrCreateUser(e));updateUser=(e=>this._client.updateUser(e));deleteUser=e=>this._client.deleteUser(e);getState=(e=>this._client.getState(e));setState=(e=>this._client.setState(e));getOrSetState=(e=>this._client.getOrSetState(e));patchState=(e=>this._client.patchState(e));configureIntegration=e=>this._client.configureIntegration(e);uploadFile=e=>this._client.uploadFile(e);upsertFile=e=>this._client.upsertFile(e);deleteFile=e=>this._client.deleteFile(e);listFiles=e=>this._client.listFiles(e);getFile=e=>this._client.getFile(e);updateFileMetadata=e=>this._client.updateFileMetadata(e);trackAnalytics=e=>this._client.trackAnalytics(e)};var Zn=class{_cost=0;get cost(){return this._cost}setCost(e){this._cost=e}toJSON(){return{cost:this.cost}}};var pe="#",Rn="x-bot-id",rc="x-bot-user-id",ic="x-integration-id",sc="x-integration-alias",ac="x-webhook-id",oc="x-bp-configuration-type",Nn="x-bp-configuration",Dn="x-bp-operation",lc="x-bp-type";var ie=t=>{throw t instanceof Error?t:new Error(t)};var p_=y.enum(["webhook_received","message_created","action_triggered","register","unregister","ping","create_user","create_conversation"]),uc=t=>({botId:t[Rn]||ie("Missing bot header"),botUserId:t[rc]||ie("Missing bot user header"),integrationId:t[ic]||ie("Missing integration header"),integrationAlias:t[sc]||ie("Missing integration alias header"),webhookId:t[ac]||ie("Missing webhook header"),operation:t[Dn]||ie("Missing operation header"),configurationType:t[oc]??null,configuration:JSON.parse(Buffer.from(t[Nn]||ie("Missing configuration header"),"base64").toString("utf-8"))});var cc=Wn(require("util")),ct=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)}issue(e){console.info(JSON.stringify(e))}_log(e,n){this._getConsoleMethod(e)(this._serializeMessage(n))}_serializeMessage(e){let n=cc.default.format(...e);return process.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 dt=class t extends ct{constructor(e){super({visibleToBotOwners:!1,hiddenToIntegrationOwners:!1,...e})}with(e){return new t({...this.defaultOptions,...e})}withUserId(e){return this.with({userId:e})}withConversationId(e){return this.with({conversationId:e})}withVisibleToBotOwners(e){return this.with({visibleToBotOwners:e})}withHiddenToIntegrationOwners(e){return this.with({hiddenToIntegrationOwners:e})}forBot(){return this.with({hiddenToIntegrationOwners:!1,visibleToBotOwners:!0})}forBotOnly(){return this.with({hiddenToIntegrationOwners:!0,visibleToBotOwners:!0})}getJsonMessage(e){return JSON.stringify({msg:e,visible_to_bot_owner:this.defaultOptions.visibleToBotOwners,hidden_to_integration_owner:this.defaultOptions.hiddenToIntegrationOwners,options:this.defaultOptions})}};var jy=t=>["traceparent","tracestate","sentry-trace"].reduce((e,n)=>(t[n]&&(e[n]=t[n]),e),{}),$y=(t,e,n)=>{let[,r]=(e.headers.traceparent||"").split("-"),i=new Se.Client({botId:t.botId,integrationId:t.integrationId,integrationAlias:t.integrationAlias,retry:An,headers:jy(e.headers)}),s=new ut(i),a=new dt({traceId:r});return{ctx:t,req:e,client:s,logger:a,instance:n}},Uy=async t=>{let{ctx:e}=t;switch(e.operation){case"webhook_received":return await Ky(t);case"register":return await Wy(t);case"unregister":return await Ly(t);case"message_created":return await Vy(t);case"action_triggered":return await Gy(t);case"ping":return await zy(t);case"create_user":return await Fy(t);case"create_conversation":return await qy(t);default:throw new Se.InvalidPayloadError(`Unknown operation ${e.operation}`)}},dc=t=>async e=>{let n=uc(e.headers),r=$y(n,e,t),{logger:i}=r;try{let s;return s=await Jy(r),s?{...s,status:s.status??200}:(s=await Uy(r),s?{...s,status:s.status??200}:{status:200})}catch(s){if((0,Se.isApiError)(s)){let o=s.type==="Runtime"?s:new Se.RuntimeError(s.message,s);return i.forBot().error(o.message),{status:o.code,body:JSON.stringify(o.toJSON())}}console.error(s);let a=new Se.RuntimeError("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(a.message),{status:a.code,body:JSON.stringify(a.toJSON())}}},zy=async t=>{},Ky=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{let{req:s}=re(n);return i.webhook({client:t,ctx:e,req:s,logger:r})},Wy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.register)return;let{webhookUrl:s}=re(n);await i.register({client:t,ctx:e,webhookUrl:s,logger:r})},Ly=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.unregister)return;let{webhookUrl:s}=re(n);await i.unregister({ctx:e,webhookUrl:s,client:t,logger:r})},Fy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.createUser)return;let{tags:s}=re(n);return await i.createUser({ctx:e,client:t,tags:s,logger:r})},qy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.createConversation)return;let{channel:s,tags:a}=re(n);return await i.createConversation({ctx:e,client:t,channel:s,tags:a,logger:r})},Vy=async({ctx:t,req:e,client:n,logger:r,instance:i})=>{let{conversation:s,user:a,type:o,payload:u,message:d}=re(e),p=i.channels[s.channel];if(!p)throw new Error(`Channel ${s.channel} not found`);let g=p.messages[o];if(!g)throw new Error(`Message of type ${o} not found in channel ${s.channel}`);await g({ctx:t,conversation:s,message:d,user:a,type:o,client:n,payload:u,ack:async({tags:w})=>{await n.updateMessage({id:d.id,tags:w})},logger:r})},Gy=async({req:t,ctx:e,client:n,logger:r,instance:i})=>{let{input:s,type:a}=re(t);if(!a)throw new Error("Missing action type");let o=i.actions[a];if(!o)throw new Error(`Action ${a} not found`);let u=new Zn,p={output:await o({ctx:e,input:s,client:n,type:a,logger:r,metadata:u}),meta:u.toJSON()};return{body:JSON.stringify(p)}},Jy=async({instance:t,client:e,ctx:n,logger:r,req:i})=>{let s=t.unknownOperationHandler;if(s)return await s({client:e,ctx:n,logger:r,req:i})};var Hn=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,this.unknownOperationHandler=e.__advanced?.unknownOperationHandler}actions;channels;register;unregister;createUser;createConversation;webhook;unknownOperationHandler;handler=dc(this);start=e=>Kt(this.handler,e)};var Mn=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.secrets=e.secrets,this.workflows=e.workflows,this.attributes=e.attributes,this.__advanced=e.__advanced,this.withPlugins={user:e.user,conversation:e.conversation,message:e.message,states:e.states,events:e.events,recurringEvents:e.recurringEvents,actions:e.actions,tables:e.tables,workflows:e.workflows}}integrations;plugins;user;conversation;message;states;configuration;events;recurringEvents;actions;tables;secrets;workflows;attributes;__advanced;withPlugins;get metadata(){return{sdkVersion:Ae}}addIntegration(e,n){let r=this;r.integrations||(r.integrations={});let i=n?.alias??e.name;if(r.integrations[i])throw new te(`Another integration with alias "${i}" is already installed in the bot`);return r.integrations[i]={...e,alias:i,enabled:n?.enabled,configurationType:n&&"configurationType"in n?n.configurationType:void 0,configuration:n&&"configuration"in n?n.configuration??{}:{},disabledChannels:n?.disabledChannels},this}addPlugin(e,n){let r=this;r.plugins||(r.plugins={});let i=n.alias??e.name;if(r.plugins[i])throw new te(`Another plugin with alias "${i}" is already installed in the bot`);let s=Object.fromEntries(Object.entries(n.dependencies??{}).filter(([o,u])=>"integrationInterfaceAlias"in u).map(([o,u])=>{let d=this.integrations?.[u.integrationAlias];if(!d){let g=Object.keys(this.integrations??{}).join(", ")||"(none)";throw new te(`Interface with alias "${o}" of plugin with alias "${i}" references integration with alias "${u.integrationAlias}" which is not installed. Please make sure to add the integration via addIntegration() before calling addPlugin().
73
73
  Available integration aliases: ${g}`)}let p=d.definition.interfaces?.[u.integrationInterfaceAlias];if(!p){let g=Object.keys(d.definition.interfaces??{}).join(", ")||"(none)";throw new te(`Interface with alias "${u.integrationInterfaceAlias}" does not exist in integration "${d.name}" referenced by interface with alias "${o}" of plugin with alias "${i}".
74
74
  Available interface aliases: ${g}`)}return[o,{...p,id:d.id,name:d.name,version:d.version,...u}]})),a=Object.fromEntries(Object.entries(n.dependencies??{}).filter(([o,u])=>!("integrationInterfaceAlias"in u)).map(([o,u])=>{let d=this.integrations?.[u.integrationAlias];if(!d){let p=Object.keys(this.integrations??{}).join(", ")||"(none)";throw new Error(`Integration with alias "${o}" of plugin with alias "${i}" references integration with alias "${u.integrationAlias}" which is not installed. Please make sure to add the integration via addIntegration() before calling addPlugin().
75
75
  Available integration aliases: ${p}`)}return[o,{...d,...u}]}));return r.plugins[i]={...e,alias:i,configuration:n.configuration??{},interfaces:s,integrations:a},r.withPlugins.user=this._mergeUser(r.withPlugins.user,e.definition.user),r.withPlugins.conversation=this._mergeConversation(r.withPlugins.conversation,e.definition.conversation),r.withPlugins.message=this._mergeMessage(r.withPlugins.message,e.definition.message),r.withPlugins.recurringEvents=this._mergeRecurringEvents(r.withPlugins.recurringEvents,e.definition.recurringEvents),r.withPlugins.tables=this._mergeTables(r.withPlugins.tables,e.definition.tables),r.withPlugins.workflows=this._mergeWorkflows(r.withPlugins.workflows,e.definition.workflows),r.withPlugins.states=this._mergeStates(r.withPlugins.states,this._prefixKeysWithPluginAlias(e.definition.states,i)),r.withPlugins.events=this._mergeEvents(r.withPlugins.events,this._prefixKeysWithPluginAlias(e.definition.events,i)),r.withPlugins.actions=this._mergeActions(r.withPlugins.actions,this._prefixKeysWithPluginAlias(e.definition.actions,i)),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});_prefixKeysWithPluginAlias=(e,n)=>Z.mapKeys(e??{},r=>`${n}${pe}${r}`);dereferencePluginEntities(){let e=this._buildZuiReferenceMap();return{...this,withPlugins:{...this.withPlugins,events:this._dereferenceDefinitionSchemas(this.withPlugins.events,e),states:this._dereferenceDefinitionSchemas(this.withPlugins.states,e),tables:this._dereferenceDefinitionSchemas(this.withPlugins.tables,e),actions:this._dereferenceActionDefinitionSchemas(this.withPlugins.actions,e)},plugins:Object.fromEntries(Object.entries(this.plugins??{}).map(([n,r])=>[n,{...r,definition:{...r.definition,configuration:this._dereferenceDefinitionSchema(r.definition.configuration,e),events:this._dereferenceDefinitionSchemas(r.definition.events,e),states:this._dereferenceDefinitionSchemas(r.definition.states,e),tables:this._dereferenceDefinitionSchemas(r.definition.tables,e),actions:this._dereferenceActionDefinitionSchemas(r.definition.actions,e)}}]))}}_buildZuiReferenceMap(){let e={},n=Object.entries(this.plugins??{});for(let[r,i]of n){let s=Object.entries(i.interfaces??{});for(let[a,o]of s){let u=this.integrations?.[o.integrationAlias];if(!u)throw new te(`Interface with alias "${a}" of plugin with alias "${r}" references integration "${o.name}" which is not installed`);let d=Object.entries(o.entities??{});for(let[p,{name:g}]of d){let h=u.definition.entities?.[g]?.schema;if(!h)throw new Error(`Interface entity "${g}" does not exist in integration "${u.name}"`);e[`interface:${a}/entities/${p}`]=h}}}return e}_dereferenceZuiSchema(e,n){return e.dereference(n)}_dereferenceDefinitionSchemas(e,n){return Object.fromEntries(Object.entries(e??{}).map(([r,i])=>[r,this._dereferenceDefinitionSchema(i,n)]))}_dereferenceDefinitionSchema(e,n){return e&&{...e,schema:this._dereferenceZuiSchema(e.schema,n)}}_dereferenceActionDefinitionSchemas(e,n){return Object.fromEntries(Object.entries(e??{}).map(([r,i])=>[r,{...i,input:{schema:this._dereferenceZuiSchema(i.input.schema,n)},output:{schema:this._dereferenceZuiSchema(i.output.schema,n)}}]))}};var tt=require("@botpress/client");var pt=class t extends ct{constructor(e){super({...e})}with(e){return new t({...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})}};var he=class{constructor(e,n={before:{},after:{}}){this._client=e;this._hooks=n}get _inner(){return this._client}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));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));getOrCreateWorkflow=(e=>this._run("getOrCreateWorkflow",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 i=await this._client[e](n),s=this._hooks.after[e];return s&&(i=await s(i,n)),i}};var Yy=y.enum(["event_received","register","unregister","ping","action_triggered"]),pc=t=>({botId:t[Rn]||ie("Missing bot id header"),operation:Yy.parse(t[Dn]),type:t[lc]||ie("Missing type header"),configuration:JSON.parse(Buffer.from(t[Nn]||ie("Missing configuration header"),"base64").toString("utf-8"))});var G={status:200};var ai=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 Xy=["child_workflow_deleted","child_workflow_finished","workflow_timedout","workflow_started","workflow_continued"],fc=async(t,e)=>{if(t.ctx.type!=="workflow_update"||!Xy.includes(e.payload.type))throw new Error("Unexpected event type");let n={...t,logger:Qy(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),G;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 ev(n,e);default:e.payload.type}return G},Qy=(t,e)=>t.logger.with({eventId:e.id,workflowId:e.payload.workflow.id,conversationId:e.payload.conversation?.id,userId:e.payload.user?.id}),ev=async(t,e)=>{let n=ai(e.payload.type),r=t.self.workflowHandlers[n]?.[e.payload.workflow.name];if(!r||r.length===0)return t.logger.warn(`No ${n} handler found for workflow "${e.payload.workflow.name}"`),G;let{updatedWorkflow:i}=await tv(t,e);return i.status==="pending"&&t.logger.warn(`Workflow "${e.payload.workflow.name}" is still in pending status after processing "${n}" event. This may indicate that the workflow was not properly acknowledged or terminated by the handler. `),G},tv=async(t,e)=>{let n=ai(e.payload.type),r=t.self.workflowHandlers[n]?.[e.payload.workflow.name],i=structuredClone(e.payload.workflow);for(let s of r??[])i=await s({...t,event:e,conversation:e.payload.conversation,user:e.payload.user,workflow:i});return{updatedWorkflow:i}};var gc=t=>async e=>{let n=pc(e.headers),r=new pt,i=new tt.Client({botId:n.botId,retry:An}),s=new he(i,{before:{createMessage:async o=>{let u=t.hookHandlers.before_outgoing_message[o.type]??[];for(let d of u){let p=new he(i);o=(await d({client:p,ctx:n,logger:r.with({conversationId:o.conversationId,userId:o.userId}),data:o}))?.data??o}return o},callAction:async o=>{let u=t.hookHandlers.before_outgoing_call_action[o.type]??[];for(let d of u){let p=new he(i);o=(await d({client:p,ctx:n,logger:r,data:o}))?.data??o}return o}},after:{createMessage:async o=>{let u=t.hookHandlers.after_outgoing_message[o.message.type]??[];for(let d of u){let p=new he(i);o=(await d({client:p,ctx:n,logger:r.with({messageId:o.message.id,conversationId:o.message.conversationId,userId:o.message.userId}),data:o}))?.data??o}return o},callAction:async(o,u)=>{let{type:d}=u,p=t.hookHandlers.after_outgoing_call_action[d]??[];for(let g of p){let h=new he(i);o=(await g({client:h,ctx:n,logger:r,data:{type:d,...o}}))?.data??o}return o}}}),a={req:e,ctx:n,logger:r,client:s,self:t};try{switch(n.operation){case"action_triggered":return await av(a);case"event_received":return await sv(a);case"register":return await rv(a);case"unregister":return await iv(a);case"ping":return await nv(a);default:throw new Error(`Unknown operation ${n.operation}`)}}catch(o){let u=o instanceof Error?o:new Error(String(o));if((0,tt.isApiError)(u)){let p=u.type==="Runtime"?u:new tt.RuntimeError(u.message,u);return r.error(p.message),{status:p.code,body:JSON.stringify(p.toJSON())}}let d=new tt.RuntimeError("An unexpected error occurred in the bot.",u);return r.error(d.message,u),{status:d.code,body:JSON.stringify(d.toJSON())}}},nv=async t=>G,rv=async t=>(await t.self.registerHandler?.({client:t.client,ctx:t.ctx,logger:t.logger}),G),iv=async t=>G,sv=async t=>{let{ctx:e,logger:n,req:r,client:i,self:s}=t,a={client:i,ctx:e,logger:n},o=re(r);if(a.logger=a.logger.with({eventId:o.event.id,messageId:o.event.messageId,conversationId:o.event.conversationId,userId:o.event.userId}),e.type==="workflow_update")return await fc(t,o.event);if(e.type==="message_created"){let w=o.event,T=w.payload.message;a.logger=a.logger.with({messageId:T.id,conversationId:T.conversationId,userId:T.userId});let D=s.hookHandlers.before_incoming_message[T.type]??[];for(let le of D){let H=await le({...a,data:T});if(T=H?.data??T,H?.stop)return G}let F={...a,user:w.payload.user,conversation:w.payload.conversation,message:T,event:w},J=s.messageHandlers[T.type]??[];for(let le of J)await le(F);let oe=s.hookHandlers.after_incoming_message[T.type]??[];for(let le of oe){let H=await le({...a,data:T});if(T=H?.data??T,H?.stop)return G}return G}if(e.type==="state_expired"){let T=o.event.payload.state,D={...a,state:T},F=s.stateExpiredHandlers[T.name]??[];for(let J of F)await J(D);return G}let u=o.event,d=s.hookHandlers.before_incoming_event[u.type]??[];for(let w of d){let T=await w({...a,data:u});if(u=T?.data??u,T?.stop)return G}let p={...a,event:u},g=s.eventHandlers[u.type]??[];for(let w of g)await w(p);let h=s.hookHandlers.after_incoming_event[u.type]??[];for(let w of h){let T=await w({...a,data:u});if(u=T?.data??u,T?.stop)return G}return G},av=async({ctx:t,logger:e,req:n,client:r,self:i})=>{let{input:s,type:a}=re(n);if(!a)throw new Error("Missing action type");let o=i.hookHandlers.before_incoming_call_action[a]??[];for(let h of o){let w=await h({ctx:t,logger:e,client:r,data:{type:a,input:s}});s=w?.data?.input??s,a=w?.data?.type??a}let u=i.actionHandlers[a];if(!u)throw new Error(`Action ${a} not found`);let d=await u({ctx:t,logger:e,input:s,client:r,type:a}),p=i.hookHandlers.after_incoming_call_action[a]??[];for(let h of p){let w=await h({ctx:t,logger:e,client:r,data:{type:a,output:d}});a=w?.data?.type??a,d=w?.data?.output??d}return{status:200,body:JSON.stringify({output:d})}};var ye=(t,{alias:e})=>{if(!("tags"in t)||!e)return t;let n=`${e}${pe}`,r=Object.fromEntries(Object.entries(t.tags??{}).flatMap(([i,s])=>i.startsWith(n)?[[i.slice(n.length),s]]:[]));return{...t,tags:r}},X=(t,{alias:e})=>{if(!("tags"in t)||!e)return t;let n=`${e}${pe}`,r=Object.fromEntries(Object.entries(t.tags??{}).map(([i,s])=>[i.startsWith(n)?i:`${n}${i}`,s]));return{...t,tags:r}};var oi=class{constructor(e){this._list=e}_nextToken;_elementsBuffer=[];_isExhausted=!1;[Symbol.asyncIterator](){return this}async next(){return this._bufferIsEmpty&&!this._isExhausted&&await this._fetchNextPageIntoBuffer(),this._bufferIsEmpty?{done:!0,value:void 0}:{done:!1,value:this._elementsBuffer.shift()}}async take(e){let n=[];for(let r=0;r<e;++r){let i=await this.next();if(i.done)break;n.push(i.value)}return n}async takePage(e){for(let r=0;r<e;++r)this._isExhausted||await this._fetchNextPageIntoBuffer();let n=[...this._elementsBuffer];return this._elementsBuffer.length=0,n}async takeAll(){return this.take(Number.POSITIVE_INFINITY)}get isExhausted(){return this._isExhausted}async _fetchNextPageIntoBuffer(){let{items:e,meta:n}=await this._list({nextToken:this._nextToken});this._elementsBuffer.push(...e),this._nextToken=n.nextToken,n.nextToken||(this._isExhausted=!0)}get _bufferIsEmpty(){return this._elementsBuffer.length===0}},se=t=>new oi(t);var Oe=t=>new Proxy({},{get:(e,n)=>({listInstances:r=>se(({nextToken:i})=>t.client.listWorkflows({...r,name:n,nextToken:i}).then(({meta:s,workflows:a})=>({meta:s,items:a.map(o=>ae({...t,workflow:o}))}))),startNewInstance:async r=>{let{workflow:i}=await t.client.createWorkflow({name:n,status:"pending",...X(r,{alias:void 0})});return{workflow:ae({...t,workflow:i})}}})}),ae=t=>{let e=!1;return{...ye(t.workflow,{alias:void 0}),async update(n){let{workflow:r}=await t.client.updateWorkflow({id:t.workflow.id,...X(n,{alias:void 0})});return await t.onWorkflowUpdate?.(r),{workflow:ae({...t,workflow:r})}},async acknowledgeStartOfProcessing(){if(!t.event||t.workflow.status!=="pending"||e)return{workflow:ae(t)};let{workflow:n}=await t.client.updateWorkflow({id:t.workflow.id,status:"in_progress",eventId:t.event.id});return e=!0,await t.onWorkflowUpdate?.(n),{workflow:ae({...t,workflow:n})}},async setFailed({failureReason:n}){let{workflow:r}=await t.client.updateWorkflow({id:t.workflow.id,status:"failed",failureReason:n});return await t.onWorkflowUpdate?.(r),{workflow:ae({...t,workflow:r})}},async setCompleted({output:n}={}){let{workflow:r}=await t.client.updateWorkflow({id:t.workflow.id,status:"completed",output:n});return await t.onWorkflowUpdate?.(r),{workflow:ae({...t,workflow:r})}},async cancel(){let{workflow:n}=await t.client.updateWorkflow({id:t.workflow.id,status:"cancelled"});return await t.onWorkflowUpdate?.(n),{workflow:ae({...t,workflow:n})}}}};var jn=class{constructor(e){this.props=e;this._registerHandler=e.register,this._actionHandlers=e.actions,this._plugins=e.plugins}_registerHandler;_actionHandlers;_messageHandlers={};_eventHandlers={};_stateExpiredHandlers={};_hookHandlers={before_incoming_event:{},before_incoming_message:{},before_outgoing_message:{},before_outgoing_call_action:{},before_incoming_call_action:{},after_incoming_event:{},after_incoming_message:{},after_outgoing_message:{},after_outgoing_call_action:{},after_incoming_call_action:{}};_workflowHandlers={started:{},continued:{},timed_out:{}};_plugins={};_registerOrder=0;get registerHandler(){return this._registerHandler}get actionHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._actionHandlers[n];if(r)return V.setName(i=>r({...i,workflows:Oe(i)}),r.name);for(let[i,s]of Object.entries(this._plugins)){let[a,o]=n.split(pe);if(!(a!==i||!o))return s.actionHandlers[o]}}})}get messageHandlers(){return new Proxy({},{get:(e,n)=>{let r=Object.values(this._plugins).flatMap(o=>o.messageHandlers[n]??[]),i=n==="*"?[]:this._messageHandlers[n]??[],s=this._messageHandlers["*"]??[],a=[...i,...s].sort((o,u)=>o.order-u.order).map(({handler:o})=>V.setName(u=>o({...u,workflows:Oe(u)}),o.name));return b.unique([...r,...a])}})}get eventHandlers(){return new Proxy({},{get:(e,n)=>{let r=Object.values(this._plugins).flatMap(o=>o.eventHandlers[n]??[]),i=n==="*"?[]:this._eventHandlers[n]??[],s=this._eventHandlers["*"]??[],a=[...i,...s].sort((o,u)=>o.order-u.order).map(({handler:o})=>V.setName(u=>o({...u,workflows:Oe(u)}),o.name));return b.unique([...r,...a])}})}get stateExpiredHandlers(){return new Proxy({},{get:(e,n)=>{let r=Object.values(this._plugins).flatMap(o=>o.stateExpiredHandlers[n]??[]),i=n==="*"?[]:this._stateExpiredHandlers[n]??[],s=this._stateExpiredHandlers["*"]??[],a=[...i,...s].sort((o,u)=>o.order-u.order).map(({handler:o})=>V.setName(u=>o({...u,workflows:Oe(u)}),o.name));return b.unique([...r,...a])}})}get hookHandlers(){return new Proxy({},{get:(e,n)=>{if(this._hookHandlers[n])return new Proxy({},{get:(i,s)=>{let a=Object.values(this._plugins).flatMap(g=>g.hookHandlers[n]?.[s]??[]),o=this._hookHandlers[n]??{},u=s==="*"?[]:o[s]??[],d=o["*"]??[],p=[...u,...d].sort((g,h)=>g.order-h.order).map(({handler:g})=>V.setName(h=>g({...h,workflows:Oe(h)}),g.name));return b.unique([...a,...p])}})}})}get workflowHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._workflowHandlers[n];if(r)return new Proxy({},{get:(i,s)=>{let a=r[s]?.sort((u,d)=>u.order-d.order).map(({handler:u})=>V.setName(async d=>{let p=d.workflow;return await u({...d,workflow:ae({...d,onWorkflowUpdate(g){p=g}}),workflows:Oe(d)}),p},u.name))??[],o=Object.values(this._plugins).flatMap(u=>u.workflowHandlers[n]?.[s]??[]);return b.unique([...a,...o])}})}})}on={message:(e,n)=>{this._messageHandlers[e]=b.safePush(this._messageHandlers[e],{handler:n,order:this._registerOrder++})},event:(e,n)=>{this._eventHandlers[e]=b.safePush(this._eventHandlers[e],{handler:n,order:this._registerOrder++})},stateExpired:(e,n)=>{this._stateExpiredHandlers[e]=b.safePush(this._stateExpiredHandlers[e],{handler:n,order:this._registerOrder++})},beforeIncomingEvent:(e,n)=>{this._hookHandlers.before_incoming_event[e]=b.safePush(this._hookHandlers.before_incoming_event[e],{handler:n,order:this._registerOrder++})},beforeIncomingMessage:(e,n)=>{this._hookHandlers.before_incoming_message[e]=b.safePush(this._hookHandlers.before_incoming_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingMessage:(e,n)=>{this._hookHandlers.before_outgoing_message[e]=b.safePush(this._hookHandlers.before_outgoing_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingCallAction:(e,n)=>{this._hookHandlers.before_outgoing_call_action[e]=b.safePush(this._hookHandlers.before_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},beforeIncomingCallAction:(e,n)=>{this._hookHandlers.before_incoming_call_action[e]=b.safePush(this._hookHandlers.before_incoming_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingEvent:(e,n)=>{this._hookHandlers.after_incoming_event[e]=b.safePush(this._hookHandlers.after_incoming_event[e],{handler:n,order:this._registerOrder++})},afterIncomingMessage:(e,n)=>{this._hookHandlers.after_incoming_message[e]=b.safePush(this._hookHandlers.after_incoming_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingMessage:(e,n)=>{this._hookHandlers.after_outgoing_message[e]=b.safePush(this._hookHandlers.after_outgoing_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingCallAction:(e,n)=>{this._hookHandlers.after_outgoing_call_action[e]=b.safePush(this._hookHandlers.after_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingCallAction:(e,n)=>{this._hookHandlers.after_incoming_call_action[e]=b.safePush(this._hookHandlers.after_incoming_call_action[e],{handler:n,order:this._registerOrder++})},workflowStart:(e,n)=>{this._workflowHandlers.started[e]=b.safePush(this._workflowHandlers.started[e],{handler:n,order:this._registerOrder++})},workflowContinue:(e,n)=>{this._workflowHandlers.continued[e]=b.safePush(this._workflowHandlers.continued[e],{handler:n,order:this._registerOrder++})},workflowTimeout:(e,n)=>{this._workflowHandlers.timed_out[e]=b.safePush(this._workflowHandlers.timed_out[e],{handler:n,order:this._registerOrder++})}};handler=gc(this);start=e=>Kt(this.handler,e)};var $n=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??{},this.attributes=e.attributes,this.__advanced=e.__advanced;let n=this._getEntityReference(this.entities),r=e.events===void 0?{}:Z.mapValues(e.events,a=>({...a,schema:a.schema(n)})),i=e.actions===void 0?{}:Z.mapValues(e.actions,a=>({...a,input:{...a.input,schema:a.input.schema(n)},output:{...a.output,schema:a.output.schema(n)}})),s=e.channels===void 0?{}:Z.mapValues(e.channels,a=>({...a,messages:Z.mapValues(a.messages,o=>({...o,schema:o.schema(n)}))}));this.events=r,this.actions=i,this.channels=s}name;version;title;description;icon;readme;attributes;entities;events;actions;channels;__advanced;get metadata(){return{sdkVersion:Ae}}_getEntityReference=e=>{let n={};for(let[r,i]of Object.entries(e)){let s=i.schema._def["x-zui"]?.title,a=i.schema._def.description,o=y.ref(r);s&&o.title(s),a&&o.describe(a),n[r]=o}return n}};var Un=class{constructor(e){this.props=e;let n=Object.fromEntries(Object.entries(e.interfaces??{}).map(([i,s])=>[i,Object.fromEntries(Object.entries(s.definition.entities??{}).map(([a])=>[a,y.ref(`interface:${i}/entities/${a}`)]))]));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.recurringEvents=e.recurringEvents,this.workflows=e.workflows,this.attributes=e.attributes,this.__advanced=e.__advanced;let r=new Set;for(let i of[...Object.keys(e.integrations??{}),...Object.keys(e.interfaces??{})]){if(r.has(i))throw new te(`Duplicate interface or integration alias detected in plugin definition: '${i}'. Please use unique aliases for each interface and integration.`);r.add(i)}this.configuration=e.configuration?{...e.configuration,schema:typeof e.configuration.schema=="object"?e.configuration.schema:e.configuration.schema({entities:n})}:void 0,this.states=Object.fromEntries(Object.entries(e.states??{}).map(([i,s])=>[i,{...s,schema:typeof s.schema=="object"?s.schema:s.schema({entities:n})}])),this.events=Object.fromEntries(Object.entries(e.events??{}).map(([i,s])=>[i,{...s,schema:typeof s.schema=="object"?s.schema:s.schema({entities:n})}])),this.actions=Object.fromEntries(Object.entries(e.actions??{}).map(([i,s])=>[i,{...s,input:{...s.input,schema:typeof s.input.schema=="object"?s.input.schema:s.input.schema({entities:n})},output:{...s.output,schema:typeof s.output.schema=="object"?s.output.schema:s.output.schema({entities:n})}}])),this.tables=Object.fromEntries(Object.entries(e.tables??{}).map(([i,s])=>[i,{...s,schema:typeof s.schema=="object"?s.schema:s.schema({entities:n})}]))}name;version;title;description;icon;readme;attributes;integrations;interfaces;user;conversation;message;states;configuration;events;recurringEvents;actions;tables;workflows;__advanced;get metadata(){return{sdkVersion:Ae}}dereferenceEntities({intersectWithUnknownRecord:e}={intersectWithUnknownRecord:!0}){let n=this._buildZuiReferenceMap(e);return{...this,configuration:this.configuration?{...this.configuration,schema:this._dereferenceZuiSchema(this.configuration.schema,n)}:void 0,events:this._dereferenceDefinitionSchemas(this.events,n),states:this._dereferenceDefinitionSchemas(this.states,n),tables:this._dereferenceDefinitionSchemas(this.tables,n),actions:this._dereferenceActionDefinitionSchemas(this.actions,n)}}_buildZuiReferenceMap(e){return Object.fromEntries(Object.entries(this.interfaces??{}).flatMap(([n,r])=>Object.entries(r.definition.entities??{}).map(([i,s])=>[`interface:${n}/entities/${i}`,e?s.schema.and(y.record(y.string(),y.unknown())):s.schema])))}_dereferenceZuiSchema(e,n){return e.dereference(n)}_dereferenceDefinitionSchemas(e,n){return Object.fromEntries(Object.entries(e??{}).map(([r,i])=>[r,{...i,schema:this._dereferenceZuiSchema(i.schema,n)}]))}_dereferenceActionDefinitionSchemas(e,n){return Object.fromEntries(Object.entries(e??{}).map(([r,i])=>[r,{...i,input:{schema:this._dereferenceZuiSchema(i.input.schema,n)},output:{schema:this._dereferenceZuiSchema(i.output.schema,n)}}]))}};var mc=(t,e)=>new Proxy({},{get:(n,r)=>new Proxy({},{get:(i,s)=>a=>{let o=(e.integrations[r]??e.interfaces[r])?.integrationAlias,u=e.interfaces[r]?.actions?.[s]?.name??s;return t.callAction({type:`${o}:${u}`,input:a}).then(d=>d.output)}})});var li=t=>({async getById({id:e}){let n=await t.client.getMessage({id:e});return fe({...t,message:n.message})},list(e){return se(({nextToken:n})=>t.client.listMessages({...X(e??{},{alias:t.plugin?.alias}),nextToken:n}).then(({meta:r,messages:i})=>({meta:r,items:i.map(s=>fe({...t,message:s}))})))}}),fe=t=>({...ye(t.message,{alias:t.plugin?.alias}),async delete(){await t.client.deleteMessage({id:t.message.id})},async update(e){let{message:n}=await t.client.updateMessage({...X(e,{alias:t.plugin?.alias}),id:t.message.id});return fe({...t,message:n})}});var ui=t=>({list(e){return se(({nextToken:n})=>t.client.listUsers({...X(e??{},{alias:t.pluginAlias}),nextToken:n}).then(({meta:r,users:i})=>({meta:r,items:i.map(s=>ve({...t,conversationId:e?.conversationId,user:s}))})))},async getById({id:e}){let n=await t.client.getUser({id:e});return ve({...t,user:n.user,conversationId:void 0})}}),ve=t=>{let e={...ye(t.user,{alias:t.pluginAlias}),async update(n){let{user:r}=await t.client.updateUser({...X(n,{alias:t.pluginAlias}),id:t.user.id});return ve({...t,user:r})}};return t.conversationId?{...e,async removeFromConversation(){return await t.client.removeParticipant({id:t.conversationId,userId:t.user.id}),ve({...t,conversationId:void 0})}}:{...e,async addToConversation({conversationId:n}){let{participant:r}=await t.client.addParticipant({id:n,userId:t.user.id});return ve({...t,user:r,conversationId:n})}}};var ci=t=>new Proxy({},{get:(e,n)=>new Proxy({},{get:(r,i)=>({list(s){let a=t.plugin?.interfaces[n]?.integrationAlias??t.plugin?.integrations[n]?.integrationAlias,o=t.plugin?.interfaces[n]?.channels?.[i]?.name??i;return se(({nextToken:u})=>t.client.listConversations({...X(s??{},{alias:t.plugin?.alias}),channel:o==="*"?void 0:o,integrationName:a==="*"?void 0:a,nextToken:u}).then(({meta:d,conversations:p})=>({meta:d,items:p.map(g=>ft({...t,conversation:g}))})))},async getById({id:s}){let a=await t.client.getConversation({id:s});return ft({...t,conversation:a.conversation})}})})}),ft=t=>{let e=t.client;return{...ye(t.conversation,{alias:t.plugin?.alias}),async delete(){await e.deleteConversation({id:t.conversation.id})},async update(n){let{conversation:r}=await e.updateConversation({...X(n,{alias:t.plugin?.alias}),id:t.conversation.id});return ft({...t,conversation:r})},async getMessage({id:n}){let r=await e.getMessage({id:n});return fe({...t,message:r.message})},async getOrCreateMessage(n){let{message:r}=await e.getOrCreateMessage({...X(n,{alias:t.plugin?.alias}),conversationId:t.conversation.id});return fe({...t,message:r})},async createMessage(n){let{message:r}=await e.createMessage({...X(n,{alias:t.plugin?.alias}),conversationId:t.conversation.id});return fe({...t,message:r})},listMessages(n){return se(({nextToken:r})=>e.listMessages({...X(n??{},{alias:t.plugin?.alias}),conversationId:t.conversation.id,nextToken:r}).then(({meta:i,messages:s})=>({meta:i,items:s.map(a=>fe({...t,message:a}))})))},listParticipants(){return se(({nextToken:n})=>e.listParticipants({id:t.conversation.id,nextToken:n}).then(({meta:r,participants:i})=>({meta:r,items:i.map(s=>ve({...t,user:s,conversationId:t.conversation.id}))})))}}};var di=class t{constructor(e){this._props=e}async emit(e){let{conversationId:n,userId:r,messageId:i}=this._props,{event:s}=await this._props.client.createEvent({type:this._props.eventName,payload:e,conversationId:n,userId:r,messageId:i});return s}async schedule(e,n){let{conversationId:r,userId:i,messageId:s}=this._props,{event:a}=await this._props.client.createEvent({type:this._props.eventName,payload:e,conversationId:r,userId:i,messageId:s,schedule:n});return a}withConversationId(e){return new t({...this._props,conversationId:e})}withUserId(e){return new t({...this._props,userId:e})}withMessageId(e){return new t({...this._props,messageId:e})}async getById(e){return(await this._props.client.getEvent({id:e.id})).event}list(e){return se(({nextToken:n})=>this._props.client.listEvents({...e,type:this._props.eventName,conversationId:this._props.conversationId,userId:this._props.userId,messageId:this._props.messageId,nextToken:n}).then(({meta:r,events:i})=>({meta:r,items:i})))}},hc=(t,e)=>new Proxy({},{get:(n,r)=>{let i=e.alias!==void 0?`${e.alias}${pe}${r}`:r;return new di({client:t,eventName:i})}});var pi=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,r){await this._client.setState({type:this._stateType,name:this._stateName,id:e,payload:n,expiry:r?.expiryMs})}async getOrSet(e,n,r){return await this._client.getOrSetState({type:this._stateType,name:this._stateName,id:e,payload:n,expiry:r?.expiryMs}).then(i=>i.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})}},yc=(t,e)=>new Proxy({},{get:(n,r)=>new Proxy({},{get:(i,s)=>{let a=e.alias!==void 0?`${e.alias}${pe}${s}`:s;return new pi(t,r,a)}})});var zn=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:{},before_incoming_call_action:{},after_incoming_event:{},after_incoming_message:{},after_outgoing_message:{},after_outgoing_call_action:{},after_incoming_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,integrations:i,alias:s}=this._runtime,a=mc(e,this._runtime),o=yc(e,this._runtime),u=Oe({client:e,pluginAlias:this._runtime.alias}),d=hc(e,this._runtime),p=ui({client:e,pluginAlias:this._runtime.alias}),g=ci({client:e,plugin:this._runtime}),h=li({client:e,plugin:this._runtime});return{configuration:n,interfaces:r,integrations:i,actions:a,states:o,alias:s,workflows:u,events:d,users:p,conversations:g,messages:h}}get actionHandlers(){return new Proxy({},{get:(e,n)=>{n=this._stripAliasPrefix(n);let r=this._actionHandlers[n];if(r)return V.setName(i=>r({...i,...this._getTools(i.client)}),r.name)}})}get messageHandlers(){return new Proxy({},{get:(e,n)=>{n=this._stripAliasPrefix(n);let r=n==="*"?[]:this._messageHandlers[n]??[],i=this._messageHandlers["*"]??[];return b.unique([...r,...i]).sort((a,o)=>a.order-o.order).map(({handler:a})=>V.setName(o=>a({...o,user:ve({...o,conversationId:o.conversation.id,pluginAlias:this._runtime.alias}),message:fe({...o,plugin:this._runtime,message:o.message}),conversation:ft({...o,plugin:this._runtime,conversation:o.conversation}),...this._getTools(o.client)}),a.name))}})}get eventHandlers(){return new Proxy({},{get:(e,n)=>{n=this._stripAliasPrefix(n);let r=n==="*"?[]:this._eventHandlers[n]??[],i=Object.entries(this._eventHandlers).filter(([o])=>this._eventResolvesTo(o,n)).flatMap(([,o])=>o??[]),s=this._eventHandlers["*"]??[];return b.unique([...r,...i,...s]).sort((o,u)=>o.order-u.order).map(({handler:o})=>V.setName(u=>o({...u,...this._getTools(u.client)}),o.name))}})}get stateExpiredHandlers(){return new Proxy({},{get:(e,n)=>{n=this._stripAliasPrefix(n);let r=n==="*"?[]:this._stateExpiredHandlers[n]??[],i=this._stateExpiredHandlers["*"]??[];return b.unique([...r,...i]).sort((a,o)=>a.order-o.order).map(({handler:a})=>V.setName(o=>a({...o,...this._getTools(o.client)}),a.name))}})}get hookHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._hookHandlers[n];if(r)return new Proxy({},{get:(i,s)=>{s=this._stripAliasPrefix(s);let a=s==="*"?[]:r[s]??[],o=Object.entries(r).filter(([p])=>this._eventResolvesTo(p,s)).flatMap(([,p])=>p??[]),u=r["*"]??[];return b.unique([...a,...o,...u]).sort((p,g)=>p.order-g.order).map(({handler:p})=>V.setName(g=>p({...g,data:ye(g.data,{alias:this._runtime.alias}),...this._getTools(g.client)}),p.name))}})}})}get workflowHandlers(){return new Proxy({},{get:(e,n)=>{let r=this._workflowHandlers[n];if(r)return new Proxy({},{get:(i,s)=>(r[s]?.sort((o,u)=>o.order-u.order)??[]).map(({handler:o})=>V.setName(async u=>{let d=u.workflow;return await o({...u,workflow:ae({...u,workflow:d,onWorkflowUpdate(p){d=p},pluginAlias:this._runtime.alias}),...this._getTools(u.client)}),d},o.name))})}})}on={message:(e,n)=>{this._messageHandlers[e]=b.safePush(this._messageHandlers[e],{handler:n,order:this._registerOrder++})},event:(e,n)=>{this._eventHandlers[e]=b.safePush(this._eventHandlers[e],{handler:n,order:this._registerOrder++})},stateExpired:(e,n)=>{this._stateExpiredHandlers[e]=b.safePush(this._stateExpiredHandlers[e],{handler:n,order:this._registerOrder++})},beforeIncomingEvent:(e,n)=>{this._hookHandlers.before_incoming_event[e]=b.safePush(this._hookHandlers.before_incoming_event[e],{handler:n,order:this._registerOrder++})},beforeIncomingMessage:(e,n)=>{this._hookHandlers.before_incoming_message[e]=b.safePush(this._hookHandlers.before_incoming_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingMessage:(e,n)=>{this._hookHandlers.before_outgoing_message[e]=b.safePush(this._hookHandlers.before_outgoing_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingCallAction:(e,n)=>{this._hookHandlers.before_outgoing_call_action[e]=b.safePush(this._hookHandlers.before_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},beforeIncomingCallAction:(e,n)=>{this._hookHandlers.before_incoming_call_action[e]=b.safePush(this._hookHandlers.before_incoming_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingEvent:(e,n)=>{this._hookHandlers.after_incoming_event[e]=b.safePush(this._hookHandlers.after_incoming_event[e],{handler:n,order:this._registerOrder++})},afterIncomingMessage:(e,n)=>{this._hookHandlers.after_incoming_message[e]=b.safePush(this._hookHandlers.after_incoming_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingMessage:(e,n)=>{this._hookHandlers.after_outgoing_message[e]=b.safePush(this._hookHandlers.after_outgoing_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingCallAction:(e,n)=>{this._hookHandlers.after_outgoing_call_action[e]=b.safePush(this._hookHandlers.after_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingCallAction:(e,n)=>{this._hookHandlers.after_incoming_call_action[e]=b.safePush(this._hookHandlers.after_incoming_call_action[e],{handler:n,order:this._registerOrder++})},workflowStart:(e,n)=>{this._workflowHandlers.started[e]=b.safePush(this._workflowHandlers.started[e],{handler:n,order:this._registerOrder++})},workflowContinue:(e,n)=>{this._workflowHandlers.continued[e]=b.safePush(this._workflowHandlers.continued[e],{handler:n,order:this._registerOrder++})},workflowTimeout:(e,n)=>{this._workflowHandlers.timed_out[e]=b.safePush(this._workflowHandlers.timed_out[e],{handler:n,order:this._registerOrder++})}};_eventResolvesTo=(e,n)=>{let[i,s]=e.split(":");if(!i||!s)return!1;let a=this._runtime.interfaces[i];if(a&&n===`${a.integrationAlias}:${a?.events?.[s]?.name}`)return!0;let o=this._runtime.integrations[i];return!!(o&&n===`${o.integrationAlias}:${s}`)};_stripAliasPrefix=e=>{let{alias:n}=this._runtime;if(!n)return e;let r=`${n}#`;return e.startsWith(r)?e.slice(r.length):e}};var fi={};Ze(fi,{allWithinMajorOf:()=>ov,allWithinMinorOf:()=>lv});var Wt=Wn(require("semver"));function ov(t){let e=Wt.major(t.version);return{...t,version:`>=${e}.0.0 <${e+1}.0.0`}}function lv(t){let e=Wt.major(t.version),n=Wt.minor(t.version);return{...t,version:`>=${e}.${n}.0 <${e}.${n+1}.0`}}0&&(module.exports={Bot,BotDefinition,BotLogger,BotSpecificClient,Integration,IntegrationDefinition,IntegrationLogger,IntegrationSpecificClient,InterfaceDefinition,Plugin,PluginDefinition,RuntimeError,WELL_KNOWN_ATTRIBUTES,errors,isApiError,messages,parseBody,serve,version,z});