@botpress/sdk 6.10.0 → 6.11.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.
@@ -1,20 +1,20 @@
1
1
 
2
- > @botpress/sdk@6.10.0 build /home/runner/work/botpress/botpress/packages/sdk
2
+ > @botpress/sdk@6.11.0 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.10.0 build:type /home/runner/work/botpress/botpress/packages/sdk
6
+ > @botpress/sdk@6.11.0 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.10.0 build:node /home/runner/work/botpress/botpress/packages/sdk
10
+ > @botpress/sdk@6.11.0 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.10.0 build:browser /home/runner/work/botpress/botpress/packages/sdk
15
+ > @botpress/sdk@6.11.0 build:browser /home/runner/work/botpress/botpress/packages/sdk
16
16
  > ts-node -T ./build.ts --browser
17
17
 
18
- (node:3353) [DEP0180] DeprecationWarning: fs.Stats constructor is deprecated.
18
+ (node:3415) [DEP0180] DeprecationWarning: fs.Stats constructor is deprecated.
19
19
  (Use `node --trace-deprecation ...` to show where the warning was created)
20
20
  Done
@@ -1,3 +1,4 @@
1
+ export type LogLevel = 'info' | 'debug' | 'warn' | 'error';
1
2
  export type IssueLogEvent = {
2
3
  type: 'issue';
3
4
  code: string;
@@ -23,6 +24,6 @@ export declare abstract class BaseLogger<TOptions extends object> {
23
24
  issue(args: IssueLogEvent): void;
24
25
  private _log;
25
26
  private _serializeMessage;
26
- protected getJsonMessage(msg: string): string;
27
+ protected getJsonMessage(level: LogLevel, msg: string): string;
27
28
  private _getConsoleMethod;
28
29
  }
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(_).join(" | ");case"ZodEffects":return S(a._def.schema,s);case"ZodNativeEnum":throw new Ql("ZodNativeEnum");case"ZodOptional":return`${S(a._def.innerType,s)} | undefined`;case"ZodNullable":return`${S(a._def.innerType,s)} | null`;case"ZodDefault":let Ae=e.treatDefaultAsOptional?a._def.innerType.optional():a._def.innerType;return S(Ae,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 Ru(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 rr(`${i}
71
71
  declare function ${r}${a};${u}`);if(t.props.type==="variable")return rr(`${i}declare const ${r}: ${a};${u}`);let d=t.props.args.length>0?`<${t.props.args.map(Ru).join(", ")}>`:"";return rr(`${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 fr;return new At({type:"none",schema:t})}let i="title"in t.ui?t.ui.title:null;if(!i)throw new tu;if(n==="variable"){if(r.length>0)throw new fr;return new At({type:"variable",identifier:i,schema:t})}return new At({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(${_(n)}, ${_(r)})`)}if(t.minLength){let{value:n,message:r}=t.minLength;e.push(`.min(${_(n)}, ${_(r)})`)}if(t.maxLength){let{value:n,message:r}=t.maxLength;e.push(`.max(${_(n)}, ${_(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(${_(t.value)}, ${_(t.message)})`;case"max":return`.max(${_(t.value)}, ${_(t.message)})`;case"multipleOf":return`.multipleOf(${_(t.value)}, ${_(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(${Yi(t.value)}, ${_(t.message)})`;case"max":return`.max(${Yi(t.value)}, ${_(t.message)})`;default:return""}},"_generateDateCheck"),Yi=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(${_(t.value)}, ${_(t.message)})`;case"max":return`.max(${_(t.value)}, ${_(t.message)})`;case"int":return`.int(${_(t.message)})`;case"multipleOf":return`.multipleOf(${_(t.value)}, ${_(t.message)})`;case"finite":return`.finite(${_(t.message)})`;default:return""}},"_generateNumberCheck"),ty=l(t=>{let e=[];if(t.minSize){let{value:n,message:r}=t.minSize;e.push(`.min(${_(n)}, ${_(r)})`)}if(t.maxSize){let{value:n,message:r}=t.maxSize;e.push(`.max(${_(n)}, ${_(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(${_(t.value)}, ${_(t.message)})`;case"max":return`.max(${_(t.value)}, ${_(t.message)})`;case"length":return`.length(${_(t.value)}, ${_(t.message)})`;case"email":return`.email(${_(t.message)})`;case"url":return`.url(${_(t.message)})`;case"emoji":return`.emoji(${_(t.message)})`;case"uuid":return`.uuid(${_(t.message)})`;case"cuid":return`.cuid(${_(t.message)})`;case"cuid2":return`.cuid2(${_(t.message)})`;case"ulid":return`.ulid(${_(t.message)})`;case"includes":let e=ot({message:t.message,position:t.position});return`.includes(${_(t.value)}, ${e})`;case"startsWith":return`.startsWith(${_(t.value)}, ${_(t.message)})`;case"endsWith":return`.endsWith(${_(t.value)}, ${_(t.message)})`;case"regex":return`.regex(${String(t.regex)}, ${_(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(${ot({message:t.message,precision:r,offset:t.offset})})`;case"ip":return`.ip(${ot({message:t.message,version:t.version})})`;default:return""}},"_generateStringCheck"),{zuiKey:te}=Pe;function ni(t){return D(t)}l(ni,"toTypescriptSchema");function D(t){let e=t;switch(e.typeName){case"ZodString":return`z.string()${ny(e._def)}${I(e._def)}`.trim();case"ZodNumber":return`z.number()${Qh(e._def)}${I(e._def)}`.trim();case"ZodNaN":return`z.nan()${I(e._def)}`.trim();case"ZodBigInt":return`z.bigint()${Gh(e._def)}${I(e._def)}`.trim();case"ZodBoolean":return`z.boolean()${I(e._def)}`.trim();case"ZodDate":return`z.date()${Yh(e._def)}${I(e._def)}`.trim();case"ZodUndefined":return`z.undefined()${I(e._def)}`.trim();case"ZodNull":return`z.null()${I(e._def)}`.trim();case"ZodAny":return`z.any()${I(e._def)}`.trim();case"ZodUnknown":return`z.unknown()${I(e._def)}`.trim();case"ZodNever":return`z.never()${I(e._def)}`.trim();case"ZodVoid":return`z.void()${I(e._def)}`.trim();case"ZodArray":return`z.array(${D(e._def.type)})${Vh(e._def)}${I(e._def,e._def.type)}`;case"ZodObject":let n=Sg(e.shape,D),r=e.additionalProperties(),i=r?`.catchall(${D(r)})`:"";return["z.object({",...Object.entries(n).map(([Ze,_c])=>` ${Ze}: ${_c},`),`})${i}${I(e._def)}`].join(`
72
- `).trim();case"ZodUnion":return`z.union([${e._def.options.map(D).join(", ")}])${I(e._def)}`.trim();case"ZodDiscriminatedUnion":let a=e._def.options.map(D);return`z.discriminatedUnion(${_(e._def.discriminator)}, [${a.join(", ")}])${I(e._def)}`.trim();case"ZodIntersection":let u=D(e._def.left),d=D(e._def.right);return`z.intersection(${u}, ${d})${I(e._def)}`.trim();case"ZodTuple":return`z.tuple([${e._def.items.map(D).join(", ")}])${I(e._def)}`.trim();case"ZodRecord":let g=D(e._def.keyType),m=D(e._def.valueType);return`z.record(${g}, ${m})${I(e._def)}`.trim();case"ZodMap":let v=D(e._def.keyType),T=D(e._def.valueType);return`z.map(${v}, ${T})${I(e._def)}`.trim();case"ZodSet":return`z.set(${D(e._def.valueType)})${ty(e._def)}${I(e._def)}`.trim();case"ZodFunction":let E=e._def.args.items.map(D),$=E.length?`.args(${E.join(", ")})`:"",J=D(e._def.returns);return`z.function()${$}.returns(${J})${I(e._def)}`.trim();case"ZodLazy":return`z.lazy(() => ${D(e._def.getter())})${I(e._def)}`.trim();case"ZodLiteral":return`z.literal(${_(e._def.value)})${I(e._def)}`.trim();case"ZodEnum":return`z.enum([${e._def.values.map(_).join(", ")}])${I(e._def)}`.trim();case"ZodEffects":throw new $e("ZodEffects");case"ZodNativeEnum":throw new $e("ZodNativeEnum");case"ZodOptional":return`z.optional(${D(e._def.innerType)})${I(e._def,e._def.innerType)}`.trim();case"ZodNullable":return`z.nullable(${D(e._def.innerType)})${I(e._def,e._def.innerType)}`.trim();case"ZodDefault":let F=ot(e._def.defaultValue());return`z.default(${D(e._def.innerType)}, ${F})${I(e._def,e._def.innerType)}`.trim();case"ZodCatch":throw new $e("ZodCatch");case"ZodPromise":return`z.promise(${D(e._def.type)})${I(e._def,e._def.type)}`.trim();case"ZodBranded":throw new $e("ZodBranded");case"ZodPipeline":throw new $e("ZodPipeline");case"ZodSymbol":throw new $e("ZodSymbol");case"ZodReadonly":return`z.readonly(${D(e._def.innerType)})${I(e._def,e._def.innerType)}`.trim();case"ZodRef":return`z.ref(${_(e._def.uri)})${I(e._def)}`.trim();default:ce.assertNever(e)}}l(D,"sUnwrapZod");var I=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(${_(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[te])==null?void 0:n.title;return!i||e&&((r=e[te])==null?void 0:r.title)===i?"":`.title(${_(i)})`},"_maybeTitle"),oy=l((t,e)=>{var n,r;let i=(n=t[te])==null?void 0:n.displayAs;return!i||e&&Ie((r=e[te])==null?void 0:r.displayAs,i)?"":`.displayAs(${Zu({id:i[0],params:i[1]})})`},"_maybeDisplayAs"),ly=l((t,e)=>{var n,r;let i=(n=t[te])==null?void 0:n.disabled;return!i||e&&((r=e[te])==null?void 0:r.disabled)===i?"":`.disabled(${i})`},"_maybeDisabled"),uy=l((t,e)=>{var n,r;let i=(n=t[te])==null?void 0:n.hidden;return!i||e&&((r=e[te])==null?void 0:r.hidden)===i?"":`.hidden(${i})`},"_maybeHidden"),cy=l((t,e)=>{var n,r;let i=(n=t[te])==null?void 0:n.placeholder;return!i||e&&((r=e[te])==null?void 0:r.placeholder)===i?"":`.placeholder(${_(i)})`},"_maybePlaceholder"),dy=l((t,e)=>{var n,r;let i=(n=t[te])==null?void 0:n.secret;return!i||e&&((r=e[te])==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[te])!=null?n:{}).filter(([a])=>!i.includes(a));if(s.length===0)return"";if(e){let a=Object.entries((r=e[te])!=null?r:{}).filter(([o])=>!i.includes(o));if(Ie(Object.fromEntries(s),Object.fromEntries(a)))return""}return`.metadata(${Zu(Object.fromEntries(s))})`},"_maybeSetMetadata"),fy={};P.prototype.toJSONSchema=function(t={}){return z(this,t)};P.prototype.toTypescriptType=function(t={}){return ti(this,t)};P.prototype.toTypescriptSchema=function(){return ni(this)};var L=y.string().min(1),zu=y.object({text:L}),Ku=y.object({markdown:L}),Wu=y.object({imageUrl:L,title:L.optional()}),Lu=y.object({audioUrl:L,title:L.optional()}),Fu=y.object({videoUrl:L,title:L.optional()}),qu=y.object({fileUrl:L,title:L.optional()}),Vu=y.object({latitude:y.number(),longitude:y.number(),address:y.string().optional(),title:y.string().optional()}),Gu=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}))}),Uu=y.object({text:L,options:y.array(y.object({label:L,value:L}))}),gy=y.object({items:y.array(Gu)}),Ju=y.union([y.object({type:y.literal("text"),payload:zu}),y.object({type:y.literal("image"),payload:Wu}),y.object({type:y.literal("audio"),payload:Lu}),y.object({type:y.literal("video"),payload:Fu}),y.object({type:y.literal("file"),payload:qu}),y.object({type:y.literal("location"),payload:Vu})]),my=y.object({items:y.array(Ju)}),hy={schema:Ku},yy={schema:y.object({items:y.array(y.union([...Ju.options,y.object({type:y.literal("markdown"),payload:Ku})]))})},vy={text:{schema:zu},image:{schema:Wu},audio:{schema:Lu},video:{schema:Fu},file:{schema:qu},location:{schema:Vu},carousel:{schema:gy},card:{schema:Gu},dropdown:{schema:Uu},choice:{schema:Uu},bloc:{schema:my}};var _y={HIDDEN_IN_STUDIO:{bpActionHiddenInStudio:"true"},AWAIT_RETURN:{bpActionAwaitReturn:"true"}},Ty="x-bp-integration-identifier";var Yu=require("browser-or-node");var ii=console;function ie(t){if(!t.body)throw new Error("Missing body");return JSON.parse(t.body)}async function Wt(t,e=8072,n=Py){if(!Yu.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 by(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);ii.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 by(t){let e=await xy(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:wy(r.search,"?"),headers:n,method:t.method?.toUpperCase()??"GET"}}function wy(t,e){return t.indexOf(e)===0?t.slice(e.length):t}async function xy(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 Py(t){ii.info(`Listening on port ${t}`)}var Wn=require("@botpress/client");var si={};Re(si,{DefinitionError:()=>ne,isDefinitionError:()=>ky});var ne=class extends Error{__IS_SDK_ERROR__=!0;type="definition_error"},ky=t=>t instanceof ne||typeof t=="object"&&t!==null&&"__IS_SDK_ERROR__"in t&&t.__IS_SDK_ERROR__===!0&&"type"in t&&t.type==="definition_error";var R={};Re(R,{mapKeys:()=>Iy,mapValues:()=>Oy,mergeRecords:()=>By,pairs:()=>Bn,stripUndefinedProps:()=>Ey,values:()=>Sy});var Bn=t=>Object.entries(t),Sy=t=>Object.values(t),Oy=(t,e)=>Object.fromEntries(Bn(t).map(([n,r])=>[n,e(r,n)])),Iy=(t,e)=>Object.fromEntries(Bn(t).map(([n,r])=>[e(n),r])),Ey=t=>Object.fromEntries(Bn(t).filter(([,e])=>e!==void 0)),By=(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 w={};Re(w,{safePush:()=>Cy,unique:()=>Ay});var Cy=(t,...e)=>t?[...t,...e]:[...e],Ay=t=>Array.from(new Set(t));var V={};Re(V,{setName:()=>Zy});var Zy=(t,e)=>(Object.defineProperty(t,"name",{value:e}),t);var Xu=t=>{let{name:e,version:n}=t,r={actions:{},events:{},channels:{}},i={name:e,version:n,entities:R.mapValues(t.entities,a=>({name:a.name})),actions:{},events:{},channels:{}},s=R.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 m=g.schema.dereference(s);u[p]={...g,schema:m}}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 Qu="6.10.0";var Ce=Qu;var Cn=Symbol("schemaName"),ec=t=>t?R.mapValues(t,(n,r)=>({...n,[Cn]:r})):{},tc=t=>Cn in t&&t[Cn]!==void 0,nc=t=>t[Cn];var An=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:Ce}}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(m=>m.name),d=u.length===0?e.name:`${e.name}<${u.join(",")}>`,{resolved:p,statement:g}=Xu({...e,entities:r,actions:R.stripUndefinedProps(i),events:R.stripUndefinedProps(s),channels:R.stripUndefinedProps(a)});return o.actions=R.mergeRecords(o.actions??{},p.actions,this._mergeActions),o.channels=R.mergeRecords(o.channels??{},p.channels,this._mergeChannels),o.events=R.mergeRecords(o.events??{},p.events,this._mergeEvents),o.interfaces[d]={id:e.id,...g},this}_callBuilder(e,n){let i={entities:ec(this.entities)},s=n(i),a=R.pairs(s.entities).find(([u,d])=>!tc(d));if(a)throw new ne(`Cannot extend interface "${e.name}" with entity "${a[0]}"; the provided schema is not part of the integration's entities.`);return{entities:R.mapValues(s.entities,u=>({name:nc(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=R.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 rc=Ln(require("@botpress/client")),Zn={retries:3,retryCondition:t=>rc.axiosRetry.isNetworkOrIdempotentRequestError(t)||[429,502].includes(t.response?.status??0),retryDelay:(t,e)=>(Ny(e.response?.headers??{})??t)*1e3},Ny=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 Dy(String(r))}},Dy=t=>{let e=Hy(t)?My(t):t.length>0?parseInt(t,10):void 0;return e===void 0||isNaN(e)?void 0:e},Hy=t=>t.includes(" "),My=t=>{let e=jy(t);if(!e)return;let n=new Date;return Math.max(0,Math.floor((e.getTime()-n.getTime())/1e3))},jy=t=>{let e=new Date(t);return isNaN(e.getTime())?void 0:e};var dt=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 Rn=class{_cost=0;get cost(){return this._cost}setCost(e){this._cost=e}toJSON(){return{cost:this.cost}}};var pe="#",Nn="x-bot-id",ic="x-bot-user-id",sc="x-integration-id",ac="x-integration-alias",oc="x-webhook-id",lc="x-bp-configuration-type",Dn="x-bp-configuration",Hn="x-bp-operation",uc="x-bp-type";var se=t=>{throw t instanceof Error?t:new Error(t)};var g_=y.enum(["webhook_received","message_created","action_triggered","register","unregister","ping","create_user","create_conversation"]),cc=t=>({botId:t[Nn]||se("Missing bot header"),botUserId:t[ic]||se("Missing bot user header"),integrationId:t[sc]||se("Missing integration header"),integrationAlias:t[ac]||se("Missing integration alias header"),webhookId:t[oc]||se("Missing webhook header"),operation:t[Hn]||se("Missing operation header"),configurationType:t[lc]??null,configuration:JSON.parse(Buffer.from(t[Dn]||se("Missing configuration header"),"base64").toString("utf-8"))});var dc=Ln(require("util")),pt=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=dc.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 ft=class t extends pt{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 $y=t=>["traceparent","tracestate","sentry-trace"].reduce((e,n)=>(t[n]&&(e[n]=t[n]),e),{}),Uy=(t,e,n)=>{let[,r]=(e.headers.traceparent||"").split("-"),i=new Se.Client({botId:t.botId,integrationId:t.integrationId,integrationAlias:t.integrationAlias,retry:Zn,headers:n.managesOwnTracePropagation?{}:$y(e.headers)}),s=new dt(i),a=new ft({traceId:r});return{ctx:t,req:e,client:s,logger:a,instance:n}},zy=async t=>{let{ctx:e}=t;switch(e.operation){case"webhook_received":return await Wy(t);case"register":return await Ly(t);case"unregister":return await Fy(t);case"message_created":return await Gy(t);case"action_triggered":return await Jy(t);case"ping":return await Ky(t);case"create_user":return await qy(t);case"create_conversation":return await Vy(t);default:throw new Se.InvalidPayloadError(`Unknown operation ${e.operation}`)}},pc=t=>async e=>{let n=cc(e.headers),r=Uy(n,e,t),{logger:i}=r;try{let s;return s=await Yy(r),s?{...s,status:s.status??200}:(s=await zy(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())}}},Ky=async t=>{},Wy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{let{req:s}=ie(n);return i.webhook({client:t,ctx:e,req:s,logger:r})},Ly=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.register)return;let{webhookUrl:s}=ie(n);await i.register({client:t,ctx:e,webhookUrl:s,logger:r})},Fy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.unregister)return;let{webhookUrl:s}=ie(n);await i.unregister({ctx:e,webhookUrl:s,client:t,logger:r})},qy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.createUser)return;let{tags:s}=ie(n);return await i.createUser({ctx:e,client:t,tags:s,logger:r})},Vy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.createConversation)return;let{channel:s,tags:a}=ie(n);return await i.createConversation({ctx:e,client:t,channel:s,tags:a,logger:r})},Gy=async({ctx:t,req:e,client:n,logger:r,instance:i})=>{let{conversation:s,user:a,type:o,payload:u,message:d}=ie(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:v})=>{await n.updateMessage({id:d.id,tags:v})},logger:r})},Jy=async({req:t,ctx:e,client:n,logger:r,instance:i})=>{let{input:s,type:a}=ie(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 Rn,p={output:await o({ctx:e,input:s,client:n,type:a,logger:r,metadata:u}),meta:u.toJSON()};return{body:JSON.stringify(p)}},Yy=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 Mn=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,this.managesOwnTracePropagation=e.__advanced?.managesOwnTracePropagation}actions;channels;register;unregister;createUser;createConversation;webhook;unknownOperationHandler;managesOwnTracePropagation;handler=pc(this);start=e=>Wt(this.handler,e)};var jn=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:Ce}}addIntegration(e,n){let r=this;r.integrations||(r.integrations={});let i=n?.alias??e.name;if(r.integrations[i])throw new ne(`Another integration with alias "${i}" is already installed in the bot`);let s=n&&"configurationType"in n?n.configurationType:void 0,a=n&&"configuration"in n?n.configuration??{}:{},o=s?e.definition.configurations?.[s]?.schema:e.definition.configuration?.schema,u=o?o.safeParse(a):null,d=u?.success?{...a,...u.data}:a;return r.integrations[i]={...e,alias:i,enabled:n?.enabled,configurationType:s,configuration:d,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 ne(`Another plugin with alias "${i}" is already installed in the bot`);let s=Object.fromEntries(Object.entries(n.dependencies??{}).filter(([g,m])=>"integrationInterfaceAlias"in m).map(([g,m])=>{let v=this.integrations?.[m.integrationAlias];if(!v){let E=Object.keys(this.integrations??{}).join(", ")||"(none)";throw new ne(`Interface with alias "${g}" of plugin with alias "${i}" references integration with alias "${m.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(D).join(", ")}])${I(e._def)}`.trim();case"ZodDiscriminatedUnion":let a=e._def.options.map(D);return`z.discriminatedUnion(${_(e._def.discriminator)}, [${a.join(", ")}])${I(e._def)}`.trim();case"ZodIntersection":let u=D(e._def.left),d=D(e._def.right);return`z.intersection(${u}, ${d})${I(e._def)}`.trim();case"ZodTuple":return`z.tuple([${e._def.items.map(D).join(", ")}])${I(e._def)}`.trim();case"ZodRecord":let g=D(e._def.keyType),m=D(e._def.valueType);return`z.record(${g}, ${m})${I(e._def)}`.trim();case"ZodMap":let v=D(e._def.keyType),T=D(e._def.valueType);return`z.map(${v}, ${T})${I(e._def)}`.trim();case"ZodSet":return`z.set(${D(e._def.valueType)})${ty(e._def)}${I(e._def)}`.trim();case"ZodFunction":let E=e._def.args.items.map(D),$=E.length?`.args(${E.join(", ")})`:"",J=D(e._def.returns);return`z.function()${$}.returns(${J})${I(e._def)}`.trim();case"ZodLazy":return`z.lazy(() => ${D(e._def.getter())})${I(e._def)}`.trim();case"ZodLiteral":return`z.literal(${_(e._def.value)})${I(e._def)}`.trim();case"ZodEnum":return`z.enum([${e._def.values.map(_).join(", ")}])${I(e._def)}`.trim();case"ZodEffects":throw new $e("ZodEffects");case"ZodNativeEnum":throw new $e("ZodNativeEnum");case"ZodOptional":return`z.optional(${D(e._def.innerType)})${I(e._def,e._def.innerType)}`.trim();case"ZodNullable":return`z.nullable(${D(e._def.innerType)})${I(e._def,e._def.innerType)}`.trim();case"ZodDefault":let F=ot(e._def.defaultValue());return`z.default(${D(e._def.innerType)}, ${F})${I(e._def,e._def.innerType)}`.trim();case"ZodCatch":throw new $e("ZodCatch");case"ZodPromise":return`z.promise(${D(e._def.type)})${I(e._def,e._def.type)}`.trim();case"ZodBranded":throw new $e("ZodBranded");case"ZodPipeline":throw new $e("ZodPipeline");case"ZodSymbol":throw new $e("ZodSymbol");case"ZodReadonly":return`z.readonly(${D(e._def.innerType)})${I(e._def,e._def.innerType)}`.trim();case"ZodRef":return`z.ref(${_(e._def.uri)})${I(e._def)}`.trim();default:ce.assertNever(e)}}l(D,"sUnwrapZod");var I=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(${_(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[te])==null?void 0:n.title;return!i||e&&((r=e[te])==null?void 0:r.title)===i?"":`.title(${_(i)})`},"_maybeTitle"),oy=l((t,e)=>{var n,r;let i=(n=t[te])==null?void 0:n.displayAs;return!i||e&&Ie((r=e[te])==null?void 0:r.displayAs,i)?"":`.displayAs(${Zu({id:i[0],params:i[1]})})`},"_maybeDisplayAs"),ly=l((t,e)=>{var n,r;let i=(n=t[te])==null?void 0:n.disabled;return!i||e&&((r=e[te])==null?void 0:r.disabled)===i?"":`.disabled(${i})`},"_maybeDisabled"),uy=l((t,e)=>{var n,r;let i=(n=t[te])==null?void 0:n.hidden;return!i||e&&((r=e[te])==null?void 0:r.hidden)===i?"":`.hidden(${i})`},"_maybeHidden"),cy=l((t,e)=>{var n,r;let i=(n=t[te])==null?void 0:n.placeholder;return!i||e&&((r=e[te])==null?void 0:r.placeholder)===i?"":`.placeholder(${_(i)})`},"_maybePlaceholder"),dy=l((t,e)=>{var n,r;let i=(n=t[te])==null?void 0:n.secret;return!i||e&&((r=e[te])==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[te])!=null?n:{}).filter(([a])=>!i.includes(a));if(s.length===0)return"";if(e){let a=Object.entries((r=e[te])!=null?r:{}).filter(([o])=>!i.includes(o));if(Ie(Object.fromEntries(s),Object.fromEntries(a)))return""}return`.metadata(${Zu(Object.fromEntries(s))})`},"_maybeSetMetadata"),fy={};P.prototype.toJSONSchema=function(t={}){return z(this,t)};P.prototype.toTypescriptType=function(t={}){return ti(this,t)};P.prototype.toTypescriptSchema=function(){return ni(this)};var L=y.string().min(1),zu=y.object({text:L}),Ku=y.object({markdown:L}),Wu=y.object({imageUrl:L,title:L.optional()}),Lu=y.object({audioUrl:L,title:L.optional()}),Fu=y.object({videoUrl:L,title:L.optional()}),qu=y.object({fileUrl:L,title:L.optional()}),Vu=y.object({latitude:y.number(),longitude:y.number(),address:y.string().optional(),title:y.string().optional()}),Gu=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}))}),Uu=y.object({text:L,options:y.array(y.object({label:L,value:L}))}),gy=y.object({items:y.array(Gu)}),Ju=y.union([y.object({type:y.literal("text"),payload:zu}),y.object({type:y.literal("image"),payload:Wu}),y.object({type:y.literal("audio"),payload:Lu}),y.object({type:y.literal("video"),payload:Fu}),y.object({type:y.literal("file"),payload:qu}),y.object({type:y.literal("location"),payload:Vu})]),my=y.object({items:y.array(Ju)}),hy={schema:Ku},yy={schema:y.object({items:y.array(y.union([...Ju.options,y.object({type:y.literal("markdown"),payload:Ku})]))})},vy={text:{schema:zu},image:{schema:Wu},audio:{schema:Lu},video:{schema:Fu},file:{schema:qu},location:{schema:Vu},carousel:{schema:gy},card:{schema:Gu},dropdown:{schema:Uu},choice:{schema:Uu},bloc:{schema:my}};var _y={HIDDEN_IN_STUDIO:{bpActionHiddenInStudio:"true"},AWAIT_RETURN:{bpActionAwaitReturn:"true"}},Ty="x-bp-integration-identifier";var Yu=require("browser-or-node");var ii=console;function ie(t){if(!t.body)throw new Error("Missing body");return JSON.parse(t.body)}async function Wt(t,e=8072,n=Py){if(!Yu.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 by(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);ii.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 by(t){let e=await xy(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:wy(r.search,"?"),headers:n,method:t.method?.toUpperCase()??"GET"}}function wy(t,e){return t.indexOf(e)===0?t.slice(e.length):t}async function xy(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 Py(t){ii.info(`Listening on port ${t}`)}var Wn=require("@botpress/client");var si={};Re(si,{DefinitionError:()=>ne,isDefinitionError:()=>ky});var ne=class extends Error{__IS_SDK_ERROR__=!0;type="definition_error"},ky=t=>t instanceof ne||typeof t=="object"&&t!==null&&"__IS_SDK_ERROR__"in t&&t.__IS_SDK_ERROR__===!0&&"type"in t&&t.type==="definition_error";var R={};Re(R,{mapKeys:()=>Iy,mapValues:()=>Oy,mergeRecords:()=>By,pairs:()=>Bn,stripUndefinedProps:()=>Ey,values:()=>Sy});var Bn=t=>Object.entries(t),Sy=t=>Object.values(t),Oy=(t,e)=>Object.fromEntries(Bn(t).map(([n,r])=>[n,e(r,n)])),Iy=(t,e)=>Object.fromEntries(Bn(t).map(([n,r])=>[e(n),r])),Ey=t=>Object.fromEntries(Bn(t).filter(([,e])=>e!==void 0)),By=(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 w={};Re(w,{safePush:()=>Cy,unique:()=>Ay});var Cy=(t,...e)=>t?[...t,...e]:[...e],Ay=t=>Array.from(new Set(t));var V={};Re(V,{setName:()=>Zy});var Zy=(t,e)=>(Object.defineProperty(t,"name",{value:e}),t);var Xu=t=>{let{name:e,version:n}=t,r={actions:{},events:{},channels:{}},i={name:e,version:n,entities:R.mapValues(t.entities,a=>({name:a.name})),actions:{},events:{},channels:{}},s=R.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 m=g.schema.dereference(s);u[p]={...g,schema:m}}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 Qu="6.11.0";var Ce=Qu;var Cn=Symbol("schemaName"),ec=t=>t?R.mapValues(t,(n,r)=>({...n,[Cn]:r})):{},tc=t=>Cn in t&&t[Cn]!==void 0,nc=t=>t[Cn];var An=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:Ce}}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(m=>m.name),d=u.length===0?e.name:`${e.name}<${u.join(",")}>`,{resolved:p,statement:g}=Xu({...e,entities:r,actions:R.stripUndefinedProps(i),events:R.stripUndefinedProps(s),channels:R.stripUndefinedProps(a)});return o.actions=R.mergeRecords(o.actions??{},p.actions,this._mergeActions),o.channels=R.mergeRecords(o.channels??{},p.channels,this._mergeChannels),o.events=R.mergeRecords(o.events??{},p.events,this._mergeEvents),o.interfaces[d]={id:e.id,...g},this}_callBuilder(e,n){let i={entities:ec(this.entities)},s=n(i),a=R.pairs(s.entities).find(([u,d])=>!tc(d));if(a)throw new ne(`Cannot extend interface "${e.name}" with entity "${a[0]}"; the provided schema is not part of the integration's entities.`);return{entities:R.mapValues(s.entities,u=>({name:nc(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=R.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 rc=Ln(require("@botpress/client")),Zn={retries:3,retryCondition:t=>rc.axiosRetry.isNetworkOrIdempotentRequestError(t)||[429,502].includes(t.response?.status??0),retryDelay:(t,e)=>(Ny(e.response?.headers??{})??t)*1e3},Ny=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 Dy(String(r))}},Dy=t=>{let e=Hy(t)?My(t):t.length>0?parseInt(t,10):void 0;return e===void 0||isNaN(e)?void 0:e},Hy=t=>t.includes(" "),My=t=>{let e=jy(t);if(!e)return;let n=new Date;return Math.max(0,Math.floor((e.getTime()-n.getTime())/1e3))},jy=t=>{let e=new Date(t);return isNaN(e.getTime())?void 0:e};var dt=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 Rn=class{_cost=0;get cost(){return this._cost}setCost(e){this._cost=e}toJSON(){return{cost:this.cost}}};var pe="#",Nn="x-bot-id",ic="x-bot-user-id",sc="x-integration-id",ac="x-integration-alias",oc="x-webhook-id",lc="x-bp-configuration-type",Dn="x-bp-configuration",Hn="x-bp-operation",uc="x-bp-type";var se=t=>{throw t instanceof Error?t:new Error(t)};var g_=y.enum(["webhook_received","message_created","action_triggered","register","unregister","ping","create_user","create_conversation"]),cc=t=>({botId:t[Nn]||se("Missing bot header"),botUserId:t[ic]||se("Missing bot user header"),integrationId:t[sc]||se("Missing integration header"),integrationAlias:t[ac]||se("Missing integration alias header"),webhookId:t[oc]||se("Missing webhook header"),operation:t[Hn]||se("Missing operation header"),configurationType:t[lc]??null,configuration:JSON.parse(Buffer.from(t[Dn]||se("Missing configuration header"),"base64").toString("utf-8"))});var dc=Ln(require("util")),pt=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(e,n))}_serializeMessage(e,n){let r=dc.default.format(...n);return process.env.BP_LOG_FORMAT==="json"?this.getJsonMessage(e,r):r}getJsonMessage(e,n){return JSON.stringify({msg:n,level: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 ft=class t extends pt{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,n){return JSON.stringify({msg:n,level:e,botId:this.defaultOptions.botId,integrationId:this.defaultOptions.integrationId,integrationAlias:this.defaultOptions.integrationAlias,visible_to_bot_owner:this.defaultOptions.visibleToBotOwners,hidden_to_integration_owner:this.defaultOptions.hiddenToIntegrationOwners,options:this.defaultOptions})}};var $y=t=>["traceparent","tracestate","sentry-trace"].reduce((e,n)=>(t[n]&&(e[n]=t[n]),e),{}),Uy=(t,e,n)=>{let[,r]=(e.headers.traceparent||"").split("-"),i=new Se.Client({botId:t.botId,integrationId:t.integrationId,integrationAlias:t.integrationAlias,retry:Zn,headers:n.managesOwnTracePropagation?{}:$y(e.headers)}),s=new dt(i),a=new ft({traceId:r,botId:t.botId,integrationId:t.integrationId,integrationAlias:t.integrationAlias});return{ctx:t,req:e,client:s,logger:a,instance:n}},zy=async t=>{let{ctx:e}=t;switch(e.operation){case"webhook_received":return await Wy(t);case"register":return await Ly(t);case"unregister":return await Fy(t);case"message_created":return await Gy(t);case"action_triggered":return await Jy(t);case"ping":return await Ky(t);case"create_user":return await qy(t);case"create_conversation":return await Vy(t);default:throw new Se.InvalidPayloadError(`Unknown operation ${e.operation}`)}},pc=t=>async e=>{let n=cc(e.headers),r=Uy(n,e,t),{logger:i}=r;try{let s;return s=await Yy(r),s?{...s,status:s.status??200}:(s=await zy(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())}}},Ky=async t=>{},Wy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{let{req:s}=ie(n);return i.webhook({client:t,ctx:e,req:s,logger:r})},Ly=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.register)return;let{webhookUrl:s}=ie(n);await i.register({client:t,ctx:e,webhookUrl:s,logger:r})},Fy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.unregister)return;let{webhookUrl:s}=ie(n);await i.unregister({ctx:e,webhookUrl:s,client:t,logger:r})},qy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.createUser)return;let{tags:s}=ie(n);return await i.createUser({ctx:e,client:t,tags:s,logger:r})},Vy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.createConversation)return;let{channel:s,tags:a}=ie(n);return await i.createConversation({ctx:e,client:t,channel:s,tags:a,logger:r})},Gy=async({ctx:t,req:e,client:n,logger:r,instance:i})=>{let{conversation:s,user:a,type:o,payload:u,message:d}=ie(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:v})=>{await n.updateMessage({id:d.id,tags:v})},logger:r})},Jy=async({req:t,ctx:e,client:n,logger:r,instance:i})=>{let{input:s,type:a}=ie(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 Rn,p={output:await o({ctx:e,input:s,client:n,type:a,logger:r,metadata:u}),meta:u.toJSON()};return{body:JSON.stringify(p)}},Yy=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 Mn=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,this.managesOwnTracePropagation=e.__advanced?.managesOwnTracePropagation}actions;channels;register;unregister;createUser;createConversation;webhook;unknownOperationHandler;managesOwnTracePropagation;handler=pc(this);start=e=>Wt(this.handler,e)};var jn=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:Ce}}addIntegration(e,n){let r=this;r.integrations||(r.integrations={});let i=n?.alias??e.name;if(r.integrations[i])throw new ne(`Another integration with alias "${i}" is already installed in the bot`);let s=n&&"configurationType"in n?n.configurationType:void 0,a=n&&"configuration"in n?n.configuration??{}:{},o=s?e.definition.configurations?.[s]?.schema:e.definition.configuration?.schema,u=o?o.safeParse(a):null,d=u?.success?{...a,...u.data}:a;return r.integrations[i]={...e,alias:i,enabled:n?.enabled,configurationType:s,configuration:d,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 ne(`Another plugin with alias "${i}" is already installed in the bot`);let s=Object.fromEntries(Object.entries(n.dependencies??{}).filter(([g,m])=>"integrationInterfaceAlias"in m).map(([g,m])=>{let v=this.integrations?.[m.integrationAlias];if(!v){let E=Object.keys(this.integrations??{}).join(", ")||"(none)";throw new ne(`Interface with alias "${g}" of plugin with alias "${i}" references integration with alias "${m.integrationAlias}" which is not installed. Please make sure to add the integration via addIntegration() before calling addPlugin().
73
73
  Available integration aliases: ${E}`)}let T=v.definition.interfaces?.[m.integrationInterfaceAlias];if(!T){let E=Object.keys(v.definition.interfaces??{}).join(", ")||"(none)";throw new ne(`Interface with alias "${m.integrationInterfaceAlias}" does not exist in integration "${v.name}" referenced by interface with alias "${g}" of plugin with alias "${i}".
74
74
  Available interface aliases: ${E}`)}return[g,{...T,id:v.id,name:v.name,version:v.version,...m}]})),a=Object.fromEntries(Object.entries(n.dependencies??{}).filter(([g,m])=>!("integrationInterfaceAlias"in m)).map(([g,m])=>{let v=this.integrations?.[m.integrationAlias];if(!v){let T=Object.keys(this.integrations??{}).join(", ")||"(none)";throw new Error(`Integration with alias "${g}" of plugin with alias "${i}" references integration with alias "${m.integrationAlias}" which is not installed. Please make sure to add the integration via addIntegration() before calling addPlugin().
75
75
  Available integration aliases: ${T}`)}return[g,{...v,...m}]})),o=n.configuration??{},u=e.definition.configuration?.schema,d=u?u.safeParse(o):null,p=d?.success?{...o,...d.data}:o;return r.plugins[i]={...e,alias:i,configuration:p,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)=>R.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 ne(`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 m=u.definition.entities?.[g]?.schema;if(!m)throw new Error(`Interface entity "${g}" does not exist in integration "${u.name}"`);e[`interface:${a}/entities/${p}`]=m}}}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 nt=require("@botpress/client");var gt=class t extends pt{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 ye=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 Xy=y.enum(["event_received","register","unregister","ping","action_triggered"]),fc=t=>({botId:t[Nn]||se("Missing bot id header"),operation:Xy.parse(t[Hn]),type:t[uc]||se("Missing type header"),configuration:JSON.parse(Buffer.from(t[Dn]||se("Missing configuration header"),"base64").toString("utf-8"))});var G={status:200};var oi=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 Qy=["child_workflow_deleted","child_workflow_finished","workflow_timedout","workflow_started","workflow_continued"],gc=async(t,e)=>{if(t.ctx.type!=="workflow_update"||!Qy.includes(e.payload.type))throw new Error("Unexpected event type");let n={...t,logger:ev(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 tv(n,e);default:e.payload.type}return G},ev=(t,e)=>t.logger.with({eventId:e.id,workflowId:e.payload.workflow.id,conversationId:e.payload.conversation?.id,userId:e.payload.user?.id}),tv=async(t,e)=>{let n=oi(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 nv(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},nv=async(t,e)=>{let n=oi(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 mc=t=>async e=>{let n=fc(e.headers),r=new gt,i=new nt.Client({botId:n.botId,retry:Zn}),s=new ye(i,{before:{createMessage:async o=>{let u=t.hookHandlers.before_outgoing_message[o.type]??[];for(let d of u){let p=new ye(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 ye(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 ye(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 m=new ye(i);o=(await g({client:m,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 ov(a);case"event_received":return await av(a);case"register":return await iv(a);case"unregister":return await sv(a);case"ping":return await rv(a);default:throw new Error(`Unknown operation ${n.operation}`)}}catch(o){let u=o instanceof Error?o:new Error(String(o));if((0,nt.isApiError)(u)){let p=u.type==="Runtime"?u:new nt.RuntimeError(u.message,u);return r.error(p.message),{status:p.code,body:JSON.stringify(p.toJSON())}}let d=new nt.RuntimeError("An unexpected error occurred in the bot.",u);return r.error(d.message,u),{status:d.code,body:JSON.stringify(d.toJSON())}}},rv=async t=>G,iv=async t=>(await t.self.registerHandler?.({client:t.client,ctx:t.ctx,logger:t.logger}),G),sv=async t=>G,av=async t=>{let{ctx:e,logger:n,req:r,client:i,self:s}=t,a={client:i,ctx:e,logger:n},o=ie(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 gc(t,o.event);if(e.type==="message_created"){let v=o.event,T=v.payload.message,E=v.payload.user,$=v.payload.conversation;a.logger=a.logger.with({messageId:T.id,conversationId:T.conversationId,userId:T.userId});let J=s.hookHandlers.before_incoming_message[T.type]??[];for(let Q of J){let Ze=await Q({...a,user:E,conversation:$,data:T});if(T=Ze?.data??T,Ze?.stop)return G}let le={...a,user:E,conversation:$,message:T,event:v},Ae=s.messageHandlers[T.type]??[];for(let Q of Ae)await Q(le);let F=s.hookHandlers.after_incoming_message[T.type]??[];for(let Q of F){let Ze=await Q({...a,user:E,conversation:$,data:T});if(T=Ze?.data??T,Ze?.stop)return G}return G}if(e.type==="state_expired"){let T=o.event.payload.state,E={...a,state:T},$=s.stateExpiredHandlers[T.name]??[];for(let J of $)await J(E);return G}let u=o.event,d=s.hookHandlers.before_incoming_event[u.type]??[];for(let v of d){let T=await v({...a,data:u});if(u=T?.data??u,T?.stop)return G}let p={...a,event:u},g=s.eventHandlers[u.type]??[];for(let v of g)await v(p);let m=s.hookHandlers.after_incoming_event[u.type]??[];for(let v of m){let T=await v({...a,data:u});if(u=T?.data??u,T?.stop)return G}return G},ov=async({ctx:t,logger:e,req:n,client:r,self:i})=>{let{input:s,type:a}=ie(n);if(!a)throw new Error("Missing action type");let o=i.hookHandlers.before_incoming_call_action[a]??[];for(let m of o){let v=await m({ctx:t,logger:e,client:r,data:{type:a,input:s}});s=v?.data?.input??s,a=v?.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 m of p){let v=await m({ctx:t,logger:e,client:r,data:{type:a,output:d}});a=v?.data?.type??a,d=v?.data?.output??d}return{status:200,body:JSON.stringify({output:d})}};var ve=(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 li=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}},ae=t=>new li(t);var Oe=t=>new Proxy({},{get:(e,n)=>({listInstances:r=>ae(({nextToken:i})=>t.client.listWorkflows({...r,name:n,nextToken:i}).then(({meta:s,workflows:a})=>({meta:s,items:a.map(o=>oe({...t,workflow:o}))}))),startNewInstance:async r=>{let{workflow:i}=await t.client.createWorkflow({name:n,status:"pending",...X(r,{alias:void 0})});return{workflow:oe({...t,workflow:i})}}})}),oe=t=>{let e=!1;return{...ve(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:oe({...t,workflow:r})}},async acknowledgeStartOfProcessing(){if(!t.event||t.workflow.status!=="pending"||e)return{workflow:oe(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:oe({...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:oe({...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:oe({...t,workflow:r})}},async cancel(){let{workflow:n}=await t.client.updateWorkflow({id:t.workflow.id,status:"cancelled"});return await t.onWorkflowUpdate?.(n),{workflow:oe({...t,workflow:n})}}}};var $n=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 w.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 w.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 w.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,m)=>g.order-m.order).map(({handler:g})=>V.setName(m=>g({...m,workflows:Oe(m)}),g.name));return w.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:oe({...d,onWorkflowUpdate(g){p=g}}),workflows:Oe(d)}),p},u.name))??[],o=Object.values(this._plugins).flatMap(u=>u.workflowHandlers[n]?.[s]??[]);return w.unique([...a,...o])}})}})}on={message:(e,n)=>{this._messageHandlers[e]=w.safePush(this._messageHandlers[e],{handler:n,order:this._registerOrder++})},event:(e,n)=>{this._eventHandlers[e]=w.safePush(this._eventHandlers[e],{handler:n,order:this._registerOrder++})},stateExpired:(e,n)=>{this._stateExpiredHandlers[e]=w.safePush(this._stateExpiredHandlers[e],{handler:n,order:this._registerOrder++})},beforeIncomingEvent:(e,n)=>{this._hookHandlers.before_incoming_event[e]=w.safePush(this._hookHandlers.before_incoming_event[e],{handler:n,order:this._registerOrder++})},beforeIncomingMessage:(e,n)=>{this._hookHandlers.before_incoming_message[e]=w.safePush(this._hookHandlers.before_incoming_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingMessage:(e,n)=>{this._hookHandlers.before_outgoing_message[e]=w.safePush(this._hookHandlers.before_outgoing_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingCallAction:(e,n)=>{this._hookHandlers.before_outgoing_call_action[e]=w.safePush(this._hookHandlers.before_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},beforeIncomingCallAction:(e,n)=>{this._hookHandlers.before_incoming_call_action[e]=w.safePush(this._hookHandlers.before_incoming_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingEvent:(e,n)=>{this._hookHandlers.after_incoming_event[e]=w.safePush(this._hookHandlers.after_incoming_event[e],{handler:n,order:this._registerOrder++})},afterIncomingMessage:(e,n)=>{this._hookHandlers.after_incoming_message[e]=w.safePush(this._hookHandlers.after_incoming_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingMessage:(e,n)=>{this._hookHandlers.after_outgoing_message[e]=w.safePush(this._hookHandlers.after_outgoing_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingCallAction:(e,n)=>{this._hookHandlers.after_outgoing_call_action[e]=w.safePush(this._hookHandlers.after_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingCallAction:(e,n)=>{this._hookHandlers.after_incoming_call_action[e]=w.safePush(this._hookHandlers.after_incoming_call_action[e],{handler:n,order:this._registerOrder++})},workflowStart:(e,n)=>{this._workflowHandlers.started[e]=w.safePush(this._workflowHandlers.started[e],{handler:n,order:this._registerOrder++})},workflowContinue:(e,n)=>{this._workflowHandlers.continued[e]=w.safePush(this._workflowHandlers.continued[e],{handler:n,order:this._registerOrder++})},workflowTimeout:(e,n)=>{this._workflowHandlers.timed_out[e]=w.safePush(this._workflowHandlers.timed_out[e],{handler:n,order:this._registerOrder++})}};handler=mc(this);start=e=>Wt(this.handler,e)};var Un=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?{}:R.mapValues(e.events,a=>({...a,schema:a.schema(n)})),i=e.actions===void 0?{}:R.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?{}:R.mapValues(e.channels,a=>({...a,messages:R.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:Ce}}_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 zn=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 ne(`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:Ce}}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 hc=(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 ui=t=>({async getById({id:e}){let n=await t.client.getMessage({id:e});return fe({...t,message:n.message})},list(e){return ae(({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=>({...ve(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 ci=t=>({list(e){return ae(({nextToken:n})=>t.client.listUsers({...X(e??{},{alias:t.pluginAlias}),nextToken:n}).then(({meta:r,users:i})=>({meta:r,items:i.map(s=>ge({...t,conversationId:e?.conversationId,user:s}))})))},async getById({id:e}){let n=await t.client.getUser({id:e});return ge({...t,user:n.user,conversationId:void 0})}}),ge=t=>{let e={...ve(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 ge({...t,user:r})}};return t.conversationId?{...e,async removeFromConversation(){return await t.client.removeParticipant({id:t.conversationId,userId:t.user.id}),ge({...t,conversationId:void 0})}}:{...e,async addToConversation({conversationId:n}){let{participant:r}=await t.client.addParticipant({id:n,userId:t.user.id});return ge({...t,user:r,conversationId:n})}}};var di=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 ae(({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=>rt({...t,conversation:g}))})))},async getById({id:s}){let a=await t.client.getConversation({id:s});return rt({...t,conversation:a.conversation})}})})}),rt=t=>{let e=t.client;return{...ve(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 rt({...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 ae(({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 ae(({nextToken:n})=>e.listParticipants({id:t.conversation.id,nextToken:n}).then(({meta:r,participants:i})=>({meta:r,items:i.map(s=>ge({...t,user:s,conversationId:t.conversation.id}))})))}}};var pi=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 ae(({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})))}},yc=(t,e)=>new Proxy({},{get:(n,r)=>{let i=e.alias!==void 0?`${e.alias}${pe}${r}`:r;return new pi({client:t,eventName:i})}});var fi=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})}},vc=(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 fi(t,r,a)}})});var lv=t=>"user"in t&&"conversation"in t,Kn=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=hc(e,this._runtime),o=vc(e,this._runtime),u=Oe({client:e,pluginAlias:this._runtime.alias}),d=yc(e,this._runtime),p=ci({client:e,pluginAlias:this._runtime.alias}),g=di({client:e,plugin:this._runtime}),m=ui({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:m}}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 w.unique([...r,...i]).sort((a,o)=>a.order-o.order).map(({handler:a})=>V.setName(o=>a({...o,user:ge({...o,conversationId:o.conversation.id,pluginAlias:this._runtime.alias}),message:fe({...o,plugin:this._runtime,message:o.message}),conversation:rt({...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 w.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 w.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 w.unique([...a,...o,...u]).sort((p,g)=>p.order-g.order).map(({handler:p})=>V.setName(g=>{let m=ve(g.data,{alias:this._runtime.alias}),v=this._getTools(g.client),T={};if(lv(g)){let E=ge({client:g.client,user:g.user,conversationId:g.conversation.id,pluginAlias:this._runtime.alias}),$=rt({client:g.client,plugin:this._runtime,conversation:g.conversation});T={user:E,conversation:$}}return p({...g,data:m,...T,...v})},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:oe({...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]=w.safePush(this._messageHandlers[e],{handler:n,order:this._registerOrder++})},event:(e,n)=>{this._eventHandlers[e]=w.safePush(this._eventHandlers[e],{handler:n,order:this._registerOrder++})},stateExpired:(e,n)=>{this._stateExpiredHandlers[e]=w.safePush(this._stateExpiredHandlers[e],{handler:n,order:this._registerOrder++})},beforeIncomingEvent:(e,n)=>{this._hookHandlers.before_incoming_event[e]=w.safePush(this._hookHandlers.before_incoming_event[e],{handler:n,order:this._registerOrder++})},beforeIncomingMessage:(e,n)=>{this._hookHandlers.before_incoming_message[e]=w.safePush(this._hookHandlers.before_incoming_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingMessage:(e,n)=>{this._hookHandlers.before_outgoing_message[e]=w.safePush(this._hookHandlers.before_outgoing_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingCallAction:(e,n)=>{this._hookHandlers.before_outgoing_call_action[e]=w.safePush(this._hookHandlers.before_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},beforeIncomingCallAction:(e,n)=>{this._hookHandlers.before_incoming_call_action[e]=w.safePush(this._hookHandlers.before_incoming_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingEvent:(e,n)=>{this._hookHandlers.after_incoming_event[e]=w.safePush(this._hookHandlers.after_incoming_event[e],{handler:n,order:this._registerOrder++})},afterIncomingMessage:(e,n)=>{this._hookHandlers.after_incoming_message[e]=w.safePush(this._hookHandlers.after_incoming_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingMessage:(e,n)=>{this._hookHandlers.after_outgoing_message[e]=w.safePush(this._hookHandlers.after_outgoing_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingCallAction:(e,n)=>{this._hookHandlers.after_outgoing_call_action[e]=w.safePush(this._hookHandlers.after_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingCallAction:(e,n)=>{this._hookHandlers.after_incoming_call_action[e]=w.safePush(this._hookHandlers.after_incoming_call_action[e],{handler:n,order:this._registerOrder++})},workflowStart:(e,n)=>{this._workflowHandlers.started[e]=w.safePush(this._workflowHandlers.started[e],{handler:n,order:this._registerOrder++})},workflowContinue:(e,n)=>{this._workflowHandlers.continued[e]=w.safePush(this._workflowHandlers.continued[e],{handler:n,order:this._registerOrder++})},workflowTimeout:(e,n)=>{this._workflowHandlers.timed_out[e]=w.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 gi={};Re(gi,{allWithinMajorOf:()=>uv,allWithinMinorOf:()=>cv});var Lt=Ln(require("semver"));function uv(t){let e=Lt.major(t.version);return{...t,version:`>=${e}.0.0 <${e+1}.0.0`}}function cv(t){let e=Lt.major(t.version),n=Lt.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,OAUTH_IDENTIFIER_HEADER,Plugin,PluginDefinition,RuntimeError,WELL_KNOWN_ATTRIBUTES,errors,isApiError,messages,parseBody,serve,version,z});