@botpress/sdk 6.0.0 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,20 +1,20 @@
1
1
 
2
- > @botpress/sdk@6.0.0 build /home/runner/work/botpress/botpress/packages/sdk
2
+ > @botpress/sdk@6.2.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.0.0 build:type /home/runner/work/botpress/botpress/packages/sdk
6
+ > @botpress/sdk@6.2.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.0.0 build:node /home/runner/work/botpress/botpress/packages/sdk
10
+ > @botpress/sdk@6.2.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.0.0 build:browser /home/runner/work/botpress/botpress/packages/sdk
15
+ > @botpress/sdk@6.2.0 build:browser /home/runner/work/botpress/botpress/packages/sdk
16
16
  > ts-node -T ./build.ts --browser
17
17
 
18
- (node:3377) [DEP0180] DeprecationWarning: fs.Stats constructor is deprecated.
18
+ (node:3390) [DEP0180] DeprecationWarning: fs.Stats constructor is deprecated.
19
19
  (Use `node --trace-deprecation ...` to show where the warning was created)
20
20
  Done
@@ -19,6 +19,14 @@ type MessageResponse<TBot extends common.BaseBot, TMessage extends keyof common.
19
19
  }>;
20
20
  }>;
21
21
  };
22
+ type GetOrCreateMessageResponse<TBot extends common.BaseBot, TMessage extends keyof common.GetMessages<TBot> = keyof common.GetMessages<TBot>> = utils.Merge<Awaited<Res<client.Client['getOrCreateMessage']>>, {
23
+ message: utils.ValueOf<{
24
+ [K in keyof common.GetMessages<TBot> as K extends TMessage ? K : never]: utils.Merge<Awaited<Res<client.Client['getOrCreateMessage']>>['message'], {
25
+ type: K;
26
+ payload: common.GetMessages<TBot>[K];
27
+ }>;
28
+ }>;
29
+ }>;
22
30
  type StateResponse<TBot extends common.BaseBot, TState extends keyof TBot['states'] = keyof TBot['states']> = utils.Merge<Awaited<Res<client.Client['getState']>>, {
23
31
  state: utils.Merge<Awaited<Res<client.Client['getState']>>['state'], {
24
32
  type: utils.Cast<TBot['states'][TState]['type'], string>;
@@ -47,8 +55,8 @@ export type CreateMessage<TBot extends common.BaseBot> = <TMessage extends keyof
47
55
  }>) => Promise<MessageResponse<TBot, TMessage>>;
48
56
  export type GetOrCreateMessage<TBot extends common.BaseBot> = <TMessage extends keyof common.GetMessages<TBot>>(x: utils.Merge<Arg<client.Client['getOrCreateMessage']>, {
49
57
  type: utils.Cast<TMessage, string>;
50
- payload: utils.Cast<common.GetMessages<TBot>[TMessage], Record<string, any>>;
51
- }>) => Promise<MessageResponse<TBot, TMessage>>;
58
+ payload?: utils.Cast<common.GetMessages<TBot>[TMessage], Record<string, any>>;
59
+ }>) => Promise<GetOrCreateMessageResponse<TBot, TMessage>>;
52
60
  export type GetMessage<TBot extends common.BaseBot> = (x: Arg<client.Client['getMessage']>) => Promise<MessageResponse<TBot>>;
53
61
  export type UpdateMessage<TBot extends common.BaseBot> = (x: Arg<client.Client['updateMessage']>) => Promise<MessageResponse<TBot>>;
54
62
  export type ListMessages<_TBot extends common.BaseBot> = client.Client['listMessages'];
@@ -41,6 +41,10 @@ export type ConversationDefinition = {
41
41
  export type MessageDefinition = {
42
42
  tags?: Record<string, TagDefinition>;
43
43
  };
44
+ export type SecretDefinition = {
45
+ optional?: boolean;
46
+ description?: string;
47
+ };
44
48
  export type ActionDefinition<TAction extends BaseActions[string] = BaseActions[string]> = {
45
49
  title?: string;
46
50
  description?: string;
@@ -142,6 +146,7 @@ export type BotDefinitionProps<TStates extends BaseStates = BaseStates, TEvents
142
146
  tables?: {
143
147
  [K in keyof TTables]: TableDefinition<TTables[K]>;
144
148
  };
149
+ secrets?: Record<string, SecretDefinition>;
145
150
  /**
146
151
  * # EXPERIMENTAL
147
152
  * This API is experimental and may change in the future.
@@ -167,6 +172,7 @@ export declare class BotDefinition<TStates extends BaseStates = BaseStates, TEve
167
172
  readonly recurringEvents: this['props']['recurringEvents'];
168
173
  readonly actions: this['props']['actions'];
169
174
  readonly tables: this['props']['tables'];
175
+ readonly secrets: this['props']['secrets'];
170
176
  readonly workflows: this['props']['workflows'];
171
177
  readonly attributes: this['props']['attributes'];
172
178
  readonly __advanced: this['props']['__advanced'];
package/dist/index.cjs CHANGED
@@ -69,7 +69,7 @@ ${f.join(" | ")}`;case"ZodIntersection":return`${S(a._def.left,s)} & ${S(a._def.
69
69
  ${J}`.trim();case"ZodEnum":return a._def.values.map(v).join(" | ");case"ZodEffects":return S(a._def.schema,s);case"ZodNativeEnum":throw new Jl("ZodNativeEnum");case"ZodOptional":return`${S(a._def.innerType,s)} | undefined`;case"ZodNullable":return`${S(a._def.innerType,s)} | null`;case"ZodDefault":let oe=e.treatDefaultAsOptional?a._def.innerType.optional():a._def.innerType;return S(oe,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 Cu(a._def.uri);default:ue.assertNever(a)}}o(S,"sUnwrapZod");var Uh=o((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,p(c({},e),{declaration:!0})),u=a.split(`
70
70
  `).length>=Mh&&e.includeClosingTags?`// end of ${r}`:"";if(t.props.type!=="type"&&n.typeName==="ZodFunction")return tr(`${i}
71
71
  declare function ${r}${a};${u}`);if(t.props.type==="variable")return tr(`${i}declare const ${r}: ${a};${u}`);let d=t.props.args.length>0?`<${t.props.args.map(Cu).join(", ")}>`:"";return tr(`${i}type ${t.props.identifier}${d} = ${a};${u}`)},"unwrapDeclaration"),zh=o(t=>t.declaration?t.declaration===!0?"variable":t.declaration:"none","getDeclarationType"),Kh=o((t,e)=>{let n=zh(e),r=t.getReferences();if(n==="none"){if(r.length>0)throw new dr;return new Bt({type:"none",schema:t})}let i="title"in t.ui?t.ui.title:null;if(!i)throw new Xl;if(n==="variable"){if(r.length>0)throw new dr;return new Bt({type:"variable",identifier:i,schema:t})}return new Bt({type:"type",identifier:i,schema:t,args:r})},"getDeclarationProps"),Wh=o(t=>{let e=[];if(t.exactLength){let{value:n,message:r}=t.exactLength;e.push(`.length(${v(n)}, ${v(r)})`)}if(t.minLength){let{value:n,message:r}=t.minLength;e.push(`.min(${v(n)}, ${v(r)})`)}if(t.maxLength){let{value:n,message:r}=t.maxLength;e.push(`.max(${v(n)}, ${v(r)})`)}return e.join("")},"generateArrayChecks"),Lh=o(t=>{let e=t.checks;return e.length===0?"":e.map(Fh).join("")},"generateBigIntChecks"),Fh=o(t=>{switch(t.kind){case"min":return`.min(${v(t.value)}, ${v(t.message)})`;case"max":return`.max(${v(t.value)}, ${v(t.message)})`;case"multipleOf":return`.multipleOf(${v(t.value)}, ${v(t.message)})`;default:return""}},"_generateBigIntCheck"),qh=o(t=>{let e=t.checks;return e.length===0?"":e.map(Vh).join("")},"generateDateChecks"),Vh=o(t=>{switch(t.kind){case"min":return`.min(${Vi(t.value)}, ${v(t.message)})`;case"max":return`.max(${Vi(t.value)}, ${v(t.message)})`;default:return""}},"_generateDateCheck"),Vi=o(t=>`new Date(${t})`,"dateTs"),Gh=o(t=>{let e=t.checks;return e.length===0?"":e.map(Jh).join("")},"generateNumberChecks"),Jh=o(t=>{switch(t.kind){case"min":return`.min(${v(t.value)}, ${v(t.message)})`;case"max":return`.max(${v(t.value)}, ${v(t.message)})`;case"int":return`.int(${v(t.message)})`;case"multipleOf":return`.multipleOf(${v(t.value)}, ${v(t.message)})`;case"finite":return`.finite(${v(t.message)})`;default:return""}},"_generateNumberCheck"),Yh=o(t=>{let e=[];if(t.minSize){let{value:n,message:r}=t.minSize;e.push(`.min(${v(n)}, ${v(r)})`)}if(t.maxSize){let{value:n,message:r}=t.maxSize;e.push(`.max(${v(n)}, ${v(r)})`)}return e.join("")},"generateSetChecks"),Xh=o(t=>{let e=t.checks;return e.length===0?"":e.map(Qh).join("")},"generateStringChecks"),Qh=o(t=>{switch(t.kind){case"min":return`.min(${v(t.value)}, ${v(t.message)})`;case"max":return`.max(${v(t.value)}, ${v(t.message)})`;case"length":return`.length(${v(t.value)}, ${v(t.message)})`;case"email":return`.email(${v(t.message)})`;case"url":return`.url(${v(t.message)})`;case"emoji":return`.emoji(${v(t.message)})`;case"uuid":return`.uuid(${v(t.message)})`;case"cuid":return`.cuid(${v(t.message)})`;case"cuid2":return`.cuid2(${v(t.message)})`;case"ulid":return`.ulid(${v(t.message)})`;case"includes":let e=rt({message:t.message,position:t.position});return`.includes(${v(t.value)}, ${e})`;case"startsWith":return`.startsWith(${v(t.value)}, ${v(t.message)})`;case"endsWith":return`.endsWith(${v(t.value)}, ${v(t.message)})`;case"regex":return`.regex(${String(t.regex)}, ${v(t.message)})`;case"trim":return".trim()";case"toLowerCase":return".toLowerCase()";case"toUpperCase":return".toUpperCase()";case"datetime":let r=t.precision===null?void 0:t.precision;return`.datetime(${rt({message:t.message,precision:r,offset:t.offset})})`;case"ip":return`.ip(${rt({message:t.message,version:t.version})})`;default:return""}},"_generateStringCheck"),{zuiKey:ee}=Pe;function ei(t){return R(t)}o(ei,"toTypescriptSchema");function R(t){let e=t;switch(e.typeName){case"ZodString":return`z.string()${Xh(e._def)}${E(e._def)}`.trim();case"ZodNumber":return`z.number()${Gh(e._def)}${E(e._def)}`.trim();case"ZodNaN":return`z.nan()${E(e._def)}`.trim();case"ZodBigInt":return`z.bigint()${Lh(e._def)}${E(e._def)}`.trim();case"ZodBoolean":return`z.boolean()${E(e._def)}`.trim();case"ZodDate":return`z.date()${qh(e._def)}${E(e._def)}`.trim();case"ZodUndefined":return`z.undefined()${E(e._def)}`.trim();case"ZodNull":return`z.null()${E(e._def)}`.trim();case"ZodAny":return`z.any()${E(e._def)}`.trim();case"ZodUnknown":return`z.unknown()${E(e._def)}`.trim();case"ZodNever":return`z.never()${E(e._def)}`.trim();case"ZodVoid":return`z.void()${E(e._def)}`.trim();case"ZodArray":return`z.array(${R(e._def.type)})${Wh(e._def)}${E(e._def,e._def.type)}`;case"ZodObject":let n=xg(e.shape,R),r=e.additionalProperties(),i=r?`.catchall(${R(r)})`:"";return["z.object({",...Object.entries(n).map(([hc,yc])=>` ${hc}: ${yc},`),`})${i}${E(e._def)}`].join(`
72
- `).trim();case"ZodUnion":return`z.union([${e._def.options.map(R).join(", ")}])${E(e._def)}`.trim();case"ZodDiscriminatedUnion":let a=e._def.options.map(R);return`z.discriminatedUnion(${v(e._def.discriminator)}, [${a.join(", ")}])${E(e._def)}`.trim();case"ZodIntersection":let u=R(e._def.left),d=R(e._def.right);return`z.intersection(${u}, ${d})${E(e._def)}`.trim();case"ZodTuple":return`z.tuple([${e._def.items.map(R).join(", ")}])${E(e._def)}`.trim();case"ZodRecord":let g=R(e._def.keyType),h=R(e._def.valueType);return`z.record(${g}, ${h})${E(e._def)}`.trim();case"ZodMap":let w=R(e._def.keyType),T=R(e._def.valueType);return`z.map(${w}, ${T})${E(e._def)}`.trim();case"ZodSet":return`z.set(${R(e._def.valueType)})${Yh(e._def)}${E(e._def)}`.trim();case"ZodFunction":let N=e._def.args.items.map(R),F=N.length?`.args(${N.join(", ")})`:"",J=R(e._def.returns);return`z.function()${F}.returns(${J})${E(e._def)}`.trim();case"ZodLazy":return`z.lazy(() => ${R(e._def.getter())})${E(e._def)}`.trim();case"ZodLiteral":return`z.literal(${v(e._def.value)})${E(e._def)}`.trim();case"ZodEnum":return`z.enum([${e._def.values.map(v).join(", ")}])${E(e._def)}`.trim();case"ZodEffects":throw new De("ZodEffects");case"ZodNativeEnum":throw new De("ZodNativeEnum");case"ZodOptional":return`z.optional(${R(e._def.innerType)})${E(e._def,e._def.innerType)}`.trim();case"ZodNullable":return`z.nullable(${R(e._def.innerType)})${E(e._def,e._def.innerType)}`.trim();case"ZodDefault":let D=rt(e._def.defaultValue());return`z.default(${R(e._def.innerType)}, ${D})${E(e._def,e._def.innerType)}`.trim();case"ZodCatch":throw new De("ZodCatch");case"ZodPromise":return`z.promise(${R(e._def.type)})${E(e._def,e._def.type)}`.trim();case"ZodBranded":throw new De("ZodBranded");case"ZodPipeline":throw new De("ZodPipeline");case"ZodSymbol":throw new De("ZodSymbol");case"ZodReadonly":return`z.readonly(${R(e._def.innerType)})${E(e._def,e._def.innerType)}`.trim();case"ZodRef":return`z.ref(${v(e._def.uri)})${E(e._def)}`.trim();default:ue.assertNever(e)}}o(R,"sUnwrapZod");var E=o((t,e)=>{let n=e?._def;return`${ty(t,n)}${ey(t,n)}`},"_addMetadata"),ey=o((t,e)=>!t.description||e&&e.description===t.description?"":`.describe(${v(t.description)})`,"_maybeDescribe"),ty=o((t,e)=>`${ny(t,e)}${ry(t,e)}${iy(t,e)}${sy(t,e)}${ay(t,e)}${oy(t,e)}${ly(t,e)}`,"_addZuiExtensions"),ny=o((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.title;return!i||e&&((r=e[ee])==null?void 0:r.title)===i?"":`.title(${v(i)})`},"_maybeTitle"),ry=o((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.displayAs;return!i||e&&Ie((r=e[ee])==null?void 0:r.displayAs,i)?"":`.displayAs(${Bu({id:i[0],params:i[1]})})`},"_maybeDisplayAs"),iy=o((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.disabled;return!i||e&&((r=e[ee])==null?void 0:r.disabled)===i?"":`.disabled(${i})`},"_maybeDisabled"),sy=o((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.hidden;return!i||e&&((r=e[ee])==null?void 0:r.hidden)===i?"":`.hidden(${i})`},"_maybeHidden"),ay=o((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.placeholder;return!i||e&&((r=e[ee])==null?void 0:r.placeholder)===i?"":`.placeholder(${v(i)})`},"_maybePlaceholder"),oy=o((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.secret;return!i||e&&((r=e[ee])==null?void 0:r.secret)===i?"":".secret()"},"_maybeSecret"),ly=o((t,e)=>{var n,r;let i=["title","tooltip","displayAs","disabled","hidden","placeholder","secret","coerce"],s=Object.entries((n=t[ee])!=null?n:{}).filter(([a])=>!i.includes(a));if(s.length===0)return"";if(e){let a=Object.entries((r=e[ee])!=null?r:{}).filter(([l])=>!i.includes(l));if(Ie(Object.fromEntries(s),Object.fromEntries(a)))return""}return`.metadata(${Bu(Object.fromEntries(s))})`},"_maybeSetMetadata"),uy={};x.prototype.toJSONSchema=function(){return L(this)};x.prototype.toTypescriptType=function(t){return Qr(this,t)};x.prototype.toTypescriptSchema=function(){return ei(this)};var W=y.string().min(1),ju=y.object({text:W}),$u=y.object({markdown:W}),Uu=y.object({imageUrl:W,title:W.optional()}),zu=y.object({audioUrl:W,title:W.optional()}),Ku=y.object({videoUrl:W,title:W.optional()}),Wu=y.object({fileUrl:W,title:W.optional()}),Lu=y.object({latitude:y.number(),longitude:y.number(),address:y.string().optional(),title:y.string().optional()}),Fu=y.object({title:W,subtitle:W.optional(),imageUrl:W.optional(),actions:y.array(y.object({action:y.enum(["postback","url","say"]),label:W,value:W}))}),Mu=y.object({text:W,options:y.array(y.object({label:W,value:W}))}),cy=y.object({items:y.array(Fu)}),qu=y.union([y.object({type:y.literal("text"),payload:ju}),y.object({type:y.literal("image"),payload:Uu}),y.object({type:y.literal("audio"),payload:zu}),y.object({type:y.literal("video"),payload:Ku}),y.object({type:y.literal("file"),payload:Wu}),y.object({type:y.literal("location"),payload:Lu})]),dy=y.object({items:y.array(qu)}),py={schema:$u},fy={schema:y.object({items:y.array(y.union([...qu.options,y.object({type:y.literal("markdown"),payload:$u})]))})},gy={text:{schema:ju},image:{schema:Uu},audio:{schema:zu},video:{schema:Ku},file:{schema:Wu},location:{schema:Lu},carousel:{schema:cy},card:{schema:Fu},dropdown:{schema:Mu},choice:{schema:Mu},bloc:{schema:dy}};var my={HIDDEN_IN_STUDIO:{bpActionHiddenInStudio:"true"},AWAIT_RETURN:{bpActionAwaitReturn:"true"}};var Vu=require("browser-or-node");var ni=console;function ne(t){if(!t.body)throw new Error("Missing body");return JSON.parse(t.body)}async function Ut(t,e=8072,n=_y){if(!Vu.isNode)throw new Error("This function can only be called in Node.js");let i=require("http").createServer(async(s,a)=>{try{let l=await hy(s);if(l.path==="/health"){a.writeHead(200).end("ok");return}let u=await t(l);a.writeHead(u?.status??200,u?.headers??{}).end(u?.body??"{}")}catch(l){let u=l instanceof Error?l.message:String(l);ni.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 hy(t){let e=await vy(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:yy(r.search,"?"),headers:n,method:t.method?.toUpperCase()??"GET"}}function yy(t,e){return t.indexOf(e)===0?t.slice(e.length):t}async function vy(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 _y(t){ni.info(`Listening on port ${t}`)}var zn=require("@botpress/client");var Z={};Xe(Z,{mapKeys:()=>wy,mapValues:()=>by,mergeRecords:()=>xy,pairs:()=>En,stripUndefinedProps:()=>Py,values:()=>Ty});var En=t=>Object.entries(t),Ty=t=>Object.values(t),by=(t,e)=>Object.fromEntries(En(t).map(([n,r])=>[n,e(r,n)])),wy=(t,e)=>Object.fromEntries(En(t).map(([n,r])=>[e(n),r])),Py=t=>Object.fromEntries(En(t).filter(([,e])=>e!==void 0)),xy=(t,e,n)=>{let r=[...Object.keys(t),...Object.keys(e)],i=[...new Set(r)],s={};for(let a of i){let l=t[a],u=e[a];l&&u?s[a]=n(l,u):l?s[a]=l:u&&(s[a]=u)}return s};var b={};Xe(b,{safePush:()=>ky,unique:()=>Sy});var ky=(t,...e)=>t?[...t,...e]:[...e],Sy=t=>Array.from(new Set(t));var V={};Xe(V,{setName:()=>Oy});var Oy=(t,e)=>(Object.defineProperty(t,"name",{value:e}),t);var Gu=t=>{let{name:e,version:n}=t,r={actions:{},events:{},channels:{}},i={name:e,version:n,entities:Z.mapValues(t.entities,a=>({name:a.name})),actions:{},events:{},channels:{}},s=Z.mapValues(t.entities,a=>a.schema);for(let[a,l]of Object.entries(t.definition.actions??{})){let u=l.input.schema.dereference(s),d=l.output.schema.dereference(s),f=t.actions?.[a]?.name??a;r.actions[f]={...l,...t.actions?.[a]??{},input:{schema:u},output:{schema:d}},i.actions[a]={name:f}}for(let[a,l]of Object.entries(t.definition.events??{})){let u=l.schema.dereference(s),d=t.events?.[a]?.name??a;r.events[d]={...l,...t.events?.[a]??{},schema:u},i.events[a]={name:d}}for(let[a,l]of Object.entries(t.definition.channels??{})){let u={};for(let[f,g]of Object.entries(l.messages)){let h=g.schema.dereference(s);u[f]={...g,schema:h}}let d=t.channels?.[a]?.name??a;r.channels[d]={...l,...t.channels?.[a]??{},message:{...l.message??{},tags:{...l.message?.tags??{},...t.channels?.[a]?.message?.tags??{}}},conversation:{...l.conversation??{},tags:{...l.conversation?.tags??{},...t.channels?.[a]?.conversation?.tags??{}}},messages:u},i.channels[a]={name:d}}return{resolved:r,statement:i}};var Ju="6.0.0";var Ae=Ju;var In=Symbol("schemaName"),Yu=t=>t?Z.mapValues(t,(n,r)=>({...n,[In]:r})):{},Xu=t=>In in t&&t[In]!==void 0,Qu=t=>t[In];var Bn=class{constructor(e){this.props=e;this.name=e.name,this.version=e.version,this.icon=e.icon,this.readme=e.readme,this.title=e.title,this.identifier=e.identifier,this.description=e.description,this.configuration=e.configuration,this.configurations=e.configurations,this.events=e.events,this.actions=e.actions,this.channels=e.channels,this.states=e.states,this.user=e.user,this.secrets=e.secrets,this.entities=e.entities,this.interfaces=e.interfaces,this.__advanced=e.__advanced,this.attributes=e.attributes}name;version;title;description;icon;readme;configuration;configurations;events;actions;channels;states;user;secrets;identifier;entities;interfaces;__advanced;attributes;get metadata(){return{sdkVersion:Ae}}extend(e,n){let{entities:r,actions:i,events:s,channels:a}=this._callBuilder(e,n),l=this;l.interfaces??={};let u=Object.values(r).map(h=>h.name),d=u.length===0?e.name:`${e.name}<${u.join(",")}>`,{resolved:f,statement:g}=Gu({...e,entities:r,actions:Z.stripUndefinedProps(i),events:Z.stripUndefinedProps(s),channels:Z.stripUndefinedProps(a)});return l.actions=Z.mergeRecords(l.actions??{},f.actions,this._mergeActions),l.channels=Z.mergeRecords(l.channels??{},f.channels,this._mergeChannels),l.events=Z.mergeRecords(l.events??{},f.events,this._mergeEvents),l.interfaces[d]={id:e.id,...g},this}_callBuilder(e,n){let i={entities:Yu(this.entities)},s=n(i),a=Z.pairs(s.entities).find(([u,d])=>!Xu(d));if(a)throw new Error(`Cannot extend interface "${e.name}" with entity "${a[0]}"; the provided schema is not part of the integration's entities.`);return{entities:Z.mapValues(s.entities,u=>({name:Qu(u),schema:u.schema})),actions:s.actions??{},events:s.events??{},channels:s.channels??{}}}_mergeActions=(e,n)=>({...e,...n,input:{schema:this._mergeObjectSchemas(e.input.schema,n.input.schema)},output:{schema:this._mergeObjectSchemas(e.output.schema,n.output.schema)}});_mergeEvents=(e,n)=>({...e,...n,schema:this._mergeObjectSchemas(e.schema,n.schema)});_mergeChannels=(e,n)=>{let r=Z.mergeRecords(e.messages,n.messages,this._mergeMessage),i;(e.conversation||n.conversation)&&(i={tags:{...e.conversation?.tags,...n.conversation?.tags}});let s;return(e.message||n.message)&&(s={tags:{...e.message?.tags,...n.message?.tags}}),{...e,...n,messages:r,conversation:i,message:s}};_mergeMessage=(e,n)=>({schema:this._mergeObjectSchemas(e.schema,n.schema)});_mergeObjectSchemas=(e,n)=>{let r=e._def,i=n._def;if(r.typeName==="ZodObject"&&i.typeName==="ZodObject"){let s=r.shape(),a=i.shape();return y.object({...s,...a})}if(r.typeName==="ZodRecord"&&i.typeName==="ZodRecord")return y.record(y.intersection(r.valueType,i.valueType));throw new Error("Cannot merge object schemas with record schemas")}};var ke=require("@botpress/client");var ec=Kn(require("@botpress/client")),Cn={retries:3,retryCondition:t=>ec.axiosRetry.isNetworkOrIdempotentRequestError(t)||[429,502].includes(t.response?.status??0),retryDelay:(t,e)=>(Iy(e.response?.headers??{})??t)*1e3},Iy=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 By(String(r))}},By=t=>{let e=Cy(t)?Ay(t):t.length>0?parseInt(t,10):void 0;return e===void 0||isNaN(e)?void 0:e},Cy=t=>t.includes(" "),Ay=t=>{let e=Zy(t);if(!e)return;let n=new Date;return Math.max(0,Math.floor((e.getTime()-n.getTime())/1e3))},Zy=t=>{let e=new Date(t);return isNaN(e.getTime())?void 0:e};var lt=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 An=class{_cost=0;get cost(){return this._cost}setCost(e){this._cost=e}toJSON(){return{cost:this.cost}}};var de="#",Zn="x-bot-id",tc="x-bot-user-id",nc="x-integration-id",rc="x-integration-alias",ic="x-webhook-id",sc="x-bp-configuration-type",Rn="x-bp-configuration",Nn="x-bp-operation",ac="x-bp-type";var re=t=>{throw t instanceof Error?t:new Error(t)};var a_=y.enum(["webhook_received","message_created","action_triggered","register","unregister","ping","create_user","create_conversation"]),oc=t=>({botId:t[Zn]||re("Missing bot header"),botUserId:t[tc]||re("Missing bot user header"),integrationId:t[nc]||re("Missing integration header"),integrationAlias:t[rc]||re("Missing integration alias header"),webhookId:t[ic]||re("Missing webhook header"),operation:t[Nn]||re("Missing operation header"),configurationType:t[sc]??null,configuration:JSON.parse(Buffer.from(t[Rn]||re("Missing configuration header"),"base64").toString("utf-8"))});var lc=Kn(require("util")),ut=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=lc.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 ct=class t extends ut{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 Ry=t=>["traceparent","tracestate","sentry-trace"].reduce((e,n)=>(t[n]&&(e[n]=t[n]),e),{}),Ny=(t,e,n)=>{let[,r]=(e.headers.traceparent||"").split("-"),i=new ke.Client({botId:t.botId,integrationId:t.integrationId,integrationAlias:t.integrationAlias,retry:Cn,headers:Ry(e.headers)}),s=new lt(i),a=new ct({traceId:r});return{ctx:t,req:e,client:s,logger:a,instance:n}},Dy=async t=>{let{ctx:e}=t;switch(e.operation){case"webhook_received":return await My(t);case"register":return await jy(t);case"unregister":return await $y(t);case"message_created":return await Ky(t);case"action_triggered":return await Wy(t);case"ping":return await Hy(t);case"create_user":return await Uy(t);case"create_conversation":return await zy(t);default:throw new ke.InvalidPayloadError(`Unknown operation ${e.operation}`)}},uc=t=>async e=>{let n=oc(e.headers),r=Ny(n,e,t),{logger:i}=r;try{let s;return s=await Ly(r),s?{...s,status:s.status??200}:(s=await Dy(r),s?{...s,status:s.status??200}:{status:200})}catch(s){if((0,ke.isApiError)(s)){let l=s.type==="Runtime"?s:new ke.RuntimeError(s.message,s);return i.forBot().error(l.message),{status:l.code,body:JSON.stringify(l.toJSON())}}console.error(s);let a=new ke.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())}}},Hy=async t=>{},My=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{let{req:s}=ne(n);return i.webhook({client:t,ctx:e,req:s,logger:r})},jy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.register)return;let{webhookUrl:s}=ne(n);await i.register({client:t,ctx:e,webhookUrl:s,logger:r})},$y=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.unregister)return;let{webhookUrl:s}=ne(n);await i.unregister({ctx:e,webhookUrl:s,client:t,logger:r})},Uy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.createUser)return;let{tags:s}=ne(n);return await i.createUser({ctx:e,client:t,tags:s,logger:r})},zy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.createConversation)return;let{channel:s,tags:a}=ne(n);return await i.createConversation({ctx:e,client:t,channel:s,tags:a,logger:r})},Ky=async({ctx:t,req:e,client:n,logger:r,instance:i})=>{let{conversation:s,user:a,type:l,payload:u,message:d}=ne(e),f=i.channels[s.channel];if(!f)throw new Error(`Channel ${s.channel} not found`);let g=f.messages[l];if(!g)throw new Error(`Message of type ${l} not found in channel ${s.channel}`);await g({ctx:t,conversation:s,message:d,user:a,type:l,client:n,payload:u,ack:async({tags:w})=>{await n.updateMessage({id:d.id,tags:w})},logger:r})},Wy=async({req:t,ctx:e,client:n,logger:r,instance:i})=>{let{input:s,type:a}=ne(t);if(!a)throw new Error("Missing action type");let l=i.actions[a];if(!l)throw new Error(`Action ${a} not found`);let u=new An,f={output:await l({ctx:e,input:s,client:n,type:a,logger:r,metadata:u}),meta:u.toJSON()};return{body:JSON.stringify(f)}},Ly=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 Dn=class{constructor(e){this.props=e;this.actions=e.actions,this.channels=e.channels,this.register=e.register,this.unregister=e.unregister,this.createUser=e.createUser,this.createConversation=e.createConversation,this.webhook=e.handler,this.unknownOperationHandler=e.__advanced?.unknownOperationHandler}actions;channels;register;unregister;createUser;createConversation;webhook;unknownOperationHandler;handler=uc(this);start=e=>Ut(this.handler,e)};var Hn=class{constructor(e){this.props=e;this.integrations=e.integrations,this.plugins=e.plugins,this.user=e.user,this.conversation=e.conversation,this.message=e.message,this.states=e.states,this.configuration=e.configuration,this.events=e.events,this.recurringEvents=e.recurringEvents,this.actions=e.actions,this.tables=e.tables,this.workflows=e.workflows,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;workflows;attributes;__advanced;withPlugins;get metadata(){return{sdkVersion:Ae}}addIntegration(e,n){let r=this;r.integrations||(r.integrations={});let i=n?.alias??e.name;if(r.integrations[i])throw new Error(`Another integration with alias "${i}" is already installed in the bot`);return r.integrations[i]={...e,alias:i,enabled:n?.enabled,configurationType:n&&"configurationType"in n?n.configurationType:void 0,configuration:n&&"configuration"in n?n.configuration??{}:{},disabledChannels:n?.disabledChannels},this}addPlugin(e,n){let r=this;r.plugins||(r.plugins={});let i=n.alias??e.name;if(r.plugins[i])throw new Error(`Another plugin with alias "${i}" is already installed in the bot`);let s=Object.fromEntries(Object.entries(n.dependencies??{}).filter(([l,u])=>"integrationInterfaceAlias"in u).map(([l,u])=>{let d=this.integrations?.[u.integrationAlias];if(!d){let g=Object.keys(this.integrations??{}).join(", ")||"(none)";throw new Error(`Interface with alias "${l}" of plugin with alias "${i}" references integration with alias "${u.integrationAlias}" which is not installed. Please make sure to add the integration via addIntegration() before calling addPlugin().
72
+ `).trim();case"ZodUnion":return`z.union([${e._def.options.map(R).join(", ")}])${E(e._def)}`.trim();case"ZodDiscriminatedUnion":let a=e._def.options.map(R);return`z.discriminatedUnion(${v(e._def.discriminator)}, [${a.join(", ")}])${E(e._def)}`.trim();case"ZodIntersection":let u=R(e._def.left),d=R(e._def.right);return`z.intersection(${u}, ${d})${E(e._def)}`.trim();case"ZodTuple":return`z.tuple([${e._def.items.map(R).join(", ")}])${E(e._def)}`.trim();case"ZodRecord":let g=R(e._def.keyType),h=R(e._def.valueType);return`z.record(${g}, ${h})${E(e._def)}`.trim();case"ZodMap":let w=R(e._def.keyType),T=R(e._def.valueType);return`z.map(${w}, ${T})${E(e._def)}`.trim();case"ZodSet":return`z.set(${R(e._def.valueType)})${Yh(e._def)}${E(e._def)}`.trim();case"ZodFunction":let N=e._def.args.items.map(R),F=N.length?`.args(${N.join(", ")})`:"",J=R(e._def.returns);return`z.function()${F}.returns(${J})${E(e._def)}`.trim();case"ZodLazy":return`z.lazy(() => ${R(e._def.getter())})${E(e._def)}`.trim();case"ZodLiteral":return`z.literal(${v(e._def.value)})${E(e._def)}`.trim();case"ZodEnum":return`z.enum([${e._def.values.map(v).join(", ")}])${E(e._def)}`.trim();case"ZodEffects":throw new De("ZodEffects");case"ZodNativeEnum":throw new De("ZodNativeEnum");case"ZodOptional":return`z.optional(${R(e._def.innerType)})${E(e._def,e._def.innerType)}`.trim();case"ZodNullable":return`z.nullable(${R(e._def.innerType)})${E(e._def,e._def.innerType)}`.trim();case"ZodDefault":let D=rt(e._def.defaultValue());return`z.default(${R(e._def.innerType)}, ${D})${E(e._def,e._def.innerType)}`.trim();case"ZodCatch":throw new De("ZodCatch");case"ZodPromise":return`z.promise(${R(e._def.type)})${E(e._def,e._def.type)}`.trim();case"ZodBranded":throw new De("ZodBranded");case"ZodPipeline":throw new De("ZodPipeline");case"ZodSymbol":throw new De("ZodSymbol");case"ZodReadonly":return`z.readonly(${R(e._def.innerType)})${E(e._def,e._def.innerType)}`.trim();case"ZodRef":return`z.ref(${v(e._def.uri)})${E(e._def)}`.trim();default:ue.assertNever(e)}}o(R,"sUnwrapZod");var E=o((t,e)=>{let n=e?._def;return`${ty(t,n)}${ey(t,n)}`},"_addMetadata"),ey=o((t,e)=>!t.description||e&&e.description===t.description?"":`.describe(${v(t.description)})`,"_maybeDescribe"),ty=o((t,e)=>`${ny(t,e)}${ry(t,e)}${iy(t,e)}${sy(t,e)}${ay(t,e)}${oy(t,e)}${ly(t,e)}`,"_addZuiExtensions"),ny=o((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.title;return!i||e&&((r=e[ee])==null?void 0:r.title)===i?"":`.title(${v(i)})`},"_maybeTitle"),ry=o((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.displayAs;return!i||e&&Ie((r=e[ee])==null?void 0:r.displayAs,i)?"":`.displayAs(${Bu({id:i[0],params:i[1]})})`},"_maybeDisplayAs"),iy=o((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.disabled;return!i||e&&((r=e[ee])==null?void 0:r.disabled)===i?"":`.disabled(${i})`},"_maybeDisabled"),sy=o((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.hidden;return!i||e&&((r=e[ee])==null?void 0:r.hidden)===i?"":`.hidden(${i})`},"_maybeHidden"),ay=o((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.placeholder;return!i||e&&((r=e[ee])==null?void 0:r.placeholder)===i?"":`.placeholder(${v(i)})`},"_maybePlaceholder"),oy=o((t,e)=>{var n,r;let i=(n=t[ee])==null?void 0:n.secret;return!i||e&&((r=e[ee])==null?void 0:r.secret)===i?"":".secret()"},"_maybeSecret"),ly=o((t,e)=>{var n,r;let i=["title","tooltip","displayAs","disabled","hidden","placeholder","secret","coerce"],s=Object.entries((n=t[ee])!=null?n:{}).filter(([a])=>!i.includes(a));if(s.length===0)return"";if(e){let a=Object.entries((r=e[ee])!=null?r:{}).filter(([l])=>!i.includes(l));if(Ie(Object.fromEntries(s),Object.fromEntries(a)))return""}return`.metadata(${Bu(Object.fromEntries(s))})`},"_maybeSetMetadata"),uy={};x.prototype.toJSONSchema=function(){return L(this)};x.prototype.toTypescriptType=function(t){return Qr(this,t)};x.prototype.toTypescriptSchema=function(){return ei(this)};var W=y.string().min(1),ju=y.object({text:W}),$u=y.object({markdown:W}),Uu=y.object({imageUrl:W,title:W.optional()}),zu=y.object({audioUrl:W,title:W.optional()}),Ku=y.object({videoUrl:W,title:W.optional()}),Wu=y.object({fileUrl:W,title:W.optional()}),Lu=y.object({latitude:y.number(),longitude:y.number(),address:y.string().optional(),title:y.string().optional()}),Fu=y.object({title:W,subtitle:W.optional(),imageUrl:W.optional(),actions:y.array(y.object({action:y.enum(["postback","url","say"]),label:W,value:W}))}),Mu=y.object({text:W,options:y.array(y.object({label:W,value:W}))}),cy=y.object({items:y.array(Fu)}),qu=y.union([y.object({type:y.literal("text"),payload:ju}),y.object({type:y.literal("image"),payload:Uu}),y.object({type:y.literal("audio"),payload:zu}),y.object({type:y.literal("video"),payload:Ku}),y.object({type:y.literal("file"),payload:Wu}),y.object({type:y.literal("location"),payload:Lu})]),dy=y.object({items:y.array(qu)}),py={schema:$u},fy={schema:y.object({items:y.array(y.union([...qu.options,y.object({type:y.literal("markdown"),payload:$u})]))})},gy={text:{schema:ju},image:{schema:Uu},audio:{schema:zu},video:{schema:Ku},file:{schema:Wu},location:{schema:Lu},carousel:{schema:cy},card:{schema:Fu},dropdown:{schema:Mu},choice:{schema:Mu},bloc:{schema:dy}};var my={HIDDEN_IN_STUDIO:{bpActionHiddenInStudio:"true"},AWAIT_RETURN:{bpActionAwaitReturn:"true"}};var Vu=require("browser-or-node");var ni=console;function ne(t){if(!t.body)throw new Error("Missing body");return JSON.parse(t.body)}async function Ut(t,e=8072,n=_y){if(!Vu.isNode)throw new Error("This function can only be called in Node.js");let i=require("http").createServer(async(s,a)=>{try{let l=await hy(s);if(l.path==="/health"){a.writeHead(200).end("ok");return}let u=await t(l);a.writeHead(u?.status??200,u?.headers??{}).end(u?.body??"{}")}catch(l){let u=l instanceof Error?l.message:String(l);ni.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 hy(t){let e=await vy(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:yy(r.search,"?"),headers:n,method:t.method?.toUpperCase()??"GET"}}function yy(t,e){return t.indexOf(e)===0?t.slice(e.length):t}async function vy(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 _y(t){ni.info(`Listening on port ${t}`)}var zn=require("@botpress/client");var Z={};Xe(Z,{mapKeys:()=>wy,mapValues:()=>by,mergeRecords:()=>xy,pairs:()=>En,stripUndefinedProps:()=>Py,values:()=>Ty});var En=t=>Object.entries(t),Ty=t=>Object.values(t),by=(t,e)=>Object.fromEntries(En(t).map(([n,r])=>[n,e(r,n)])),wy=(t,e)=>Object.fromEntries(En(t).map(([n,r])=>[e(n),r])),Py=t=>Object.fromEntries(En(t).filter(([,e])=>e!==void 0)),xy=(t,e,n)=>{let r=[...Object.keys(t),...Object.keys(e)],i=[...new Set(r)],s={};for(let a of i){let l=t[a],u=e[a];l&&u?s[a]=n(l,u):l?s[a]=l:u&&(s[a]=u)}return s};var b={};Xe(b,{safePush:()=>ky,unique:()=>Sy});var ky=(t,...e)=>t?[...t,...e]:[...e],Sy=t=>Array.from(new Set(t));var V={};Xe(V,{setName:()=>Oy});var Oy=(t,e)=>(Object.defineProperty(t,"name",{value:e}),t);var Gu=t=>{let{name:e,version:n}=t,r={actions:{},events:{},channels:{}},i={name:e,version:n,entities:Z.mapValues(t.entities,a=>({name:a.name})),actions:{},events:{},channels:{}},s=Z.mapValues(t.entities,a=>a.schema);for(let[a,l]of Object.entries(t.definition.actions??{})){let u=l.input.schema.dereference(s),d=l.output.schema.dereference(s),f=t.actions?.[a]?.name??a;r.actions[f]={...l,...t.actions?.[a]??{},input:{schema:u},output:{schema:d}},i.actions[a]={name:f}}for(let[a,l]of Object.entries(t.definition.events??{})){let u=l.schema.dereference(s),d=t.events?.[a]?.name??a;r.events[d]={...l,...t.events?.[a]??{},schema:u},i.events[a]={name:d}}for(let[a,l]of Object.entries(t.definition.channels??{})){let u={};for(let[f,g]of Object.entries(l.messages)){let h=g.schema.dereference(s);u[f]={...g,schema:h}}let d=t.channels?.[a]?.name??a;r.channels[d]={...l,...t.channels?.[a]??{},message:{...l.message??{},tags:{...l.message?.tags??{},...t.channels?.[a]?.message?.tags??{}}},conversation:{...l.conversation??{},tags:{...l.conversation?.tags??{},...t.channels?.[a]?.conversation?.tags??{}}},messages:u},i.channels[a]={name:d}}return{resolved:r,statement:i}};var Ju="6.2.0";var Ae=Ju;var In=Symbol("schemaName"),Yu=t=>t?Z.mapValues(t,(n,r)=>({...n,[In]:r})):{},Xu=t=>In in t&&t[In]!==void 0,Qu=t=>t[In];var Bn=class{constructor(e){this.props=e;this.name=e.name,this.version=e.version,this.icon=e.icon,this.readme=e.readme,this.title=e.title,this.identifier=e.identifier,this.description=e.description,this.configuration=e.configuration,this.configurations=e.configurations,this.events=e.events,this.actions=e.actions,this.channels=e.channels,this.states=e.states,this.user=e.user,this.secrets=e.secrets,this.entities=e.entities,this.interfaces=e.interfaces,this.__advanced=e.__advanced,this.attributes=e.attributes}name;version;title;description;icon;readme;configuration;configurations;events;actions;channels;states;user;secrets;identifier;entities;interfaces;__advanced;attributes;get metadata(){return{sdkVersion:Ae}}extend(e,n){let{entities:r,actions:i,events:s,channels:a}=this._callBuilder(e,n),l=this;l.interfaces??={};let u=Object.values(r).map(h=>h.name),d=u.length===0?e.name:`${e.name}<${u.join(",")}>`,{resolved:f,statement:g}=Gu({...e,entities:r,actions:Z.stripUndefinedProps(i),events:Z.stripUndefinedProps(s),channels:Z.stripUndefinedProps(a)});return l.actions=Z.mergeRecords(l.actions??{},f.actions,this._mergeActions),l.channels=Z.mergeRecords(l.channels??{},f.channels,this._mergeChannels),l.events=Z.mergeRecords(l.events??{},f.events,this._mergeEvents),l.interfaces[d]={id:e.id,...g},this}_callBuilder(e,n){let i={entities:Yu(this.entities)},s=n(i),a=Z.pairs(s.entities).find(([u,d])=>!Xu(d));if(a)throw new Error(`Cannot extend interface "${e.name}" with entity "${a[0]}"; the provided schema is not part of the integration's entities.`);return{entities:Z.mapValues(s.entities,u=>({name:Qu(u),schema:u.schema})),actions:s.actions??{},events:s.events??{},channels:s.channels??{}}}_mergeActions=(e,n)=>({...e,...n,input:{schema:this._mergeObjectSchemas(e.input.schema,n.input.schema)},output:{schema:this._mergeObjectSchemas(e.output.schema,n.output.schema)}});_mergeEvents=(e,n)=>({...e,...n,schema:this._mergeObjectSchemas(e.schema,n.schema)});_mergeChannels=(e,n)=>{let r=Z.mergeRecords(e.messages,n.messages,this._mergeMessage),i;(e.conversation||n.conversation)&&(i={tags:{...e.conversation?.tags,...n.conversation?.tags}});let s;return(e.message||n.message)&&(s={tags:{...e.message?.tags,...n.message?.tags}}),{...e,...n,messages:r,conversation:i,message:s}};_mergeMessage=(e,n)=>({schema:this._mergeObjectSchemas(e.schema,n.schema)});_mergeObjectSchemas=(e,n)=>{let r=e._def,i=n._def;if(r.typeName==="ZodObject"&&i.typeName==="ZodObject"){let s=r.shape(),a=i.shape();return y.object({...s,...a})}if(r.typeName==="ZodRecord"&&i.typeName==="ZodRecord")return y.record(y.intersection(r.valueType,i.valueType));throw new Error("Cannot merge object schemas with record schemas")}};var ke=require("@botpress/client");var ec=Kn(require("@botpress/client")),Cn={retries:3,retryCondition:t=>ec.axiosRetry.isNetworkOrIdempotentRequestError(t)||[429,502].includes(t.response?.status??0),retryDelay:(t,e)=>(Iy(e.response?.headers??{})??t)*1e3},Iy=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 By(String(r))}},By=t=>{let e=Cy(t)?Ay(t):t.length>0?parseInt(t,10):void 0;return e===void 0||isNaN(e)?void 0:e},Cy=t=>t.includes(" "),Ay=t=>{let e=Zy(t);if(!e)return;let n=new Date;return Math.max(0,Math.floor((e.getTime()-n.getTime())/1e3))},Zy=t=>{let e=new Date(t);return isNaN(e.getTime())?void 0:e};var lt=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 An=class{_cost=0;get cost(){return this._cost}setCost(e){this._cost=e}toJSON(){return{cost:this.cost}}};var de="#",Zn="x-bot-id",tc="x-bot-user-id",nc="x-integration-id",rc="x-integration-alias",ic="x-webhook-id",sc="x-bp-configuration-type",Rn="x-bp-configuration",Nn="x-bp-operation",ac="x-bp-type";var re=t=>{throw t instanceof Error?t:new Error(t)};var a_=y.enum(["webhook_received","message_created","action_triggered","register","unregister","ping","create_user","create_conversation"]),oc=t=>({botId:t[Zn]||re("Missing bot header"),botUserId:t[tc]||re("Missing bot user header"),integrationId:t[nc]||re("Missing integration header"),integrationAlias:t[rc]||re("Missing integration alias header"),webhookId:t[ic]||re("Missing webhook header"),operation:t[Nn]||re("Missing operation header"),configurationType:t[sc]??null,configuration:JSON.parse(Buffer.from(t[Rn]||re("Missing configuration header"),"base64").toString("utf-8"))});var lc=Kn(require("util")),ut=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=lc.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 ct=class t extends ut{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 Ry=t=>["traceparent","tracestate","sentry-trace"].reduce((e,n)=>(t[n]&&(e[n]=t[n]),e),{}),Ny=(t,e,n)=>{let[,r]=(e.headers.traceparent||"").split("-"),i=new ke.Client({botId:t.botId,integrationId:t.integrationId,integrationAlias:t.integrationAlias,retry:Cn,headers:Ry(e.headers)}),s=new lt(i),a=new ct({traceId:r});return{ctx:t,req:e,client:s,logger:a,instance:n}},Dy=async t=>{let{ctx:e}=t;switch(e.operation){case"webhook_received":return await My(t);case"register":return await jy(t);case"unregister":return await $y(t);case"message_created":return await Ky(t);case"action_triggered":return await Wy(t);case"ping":return await Hy(t);case"create_user":return await Uy(t);case"create_conversation":return await zy(t);default:throw new ke.InvalidPayloadError(`Unknown operation ${e.operation}`)}},uc=t=>async e=>{let n=oc(e.headers),r=Ny(n,e,t),{logger:i}=r;try{let s;return s=await Ly(r),s?{...s,status:s.status??200}:(s=await Dy(r),s?{...s,status:s.status??200}:{status:200})}catch(s){if((0,ke.isApiError)(s)){let l=s.type==="Runtime"?s:new ke.RuntimeError(s.message,s);return i.forBot().error(l.message),{status:l.code,body:JSON.stringify(l.toJSON())}}console.error(s);let a=new ke.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())}}},Hy=async t=>{},My=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{let{req:s}=ne(n);return i.webhook({client:t,ctx:e,req:s,logger:r})},jy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.register)return;let{webhookUrl:s}=ne(n);await i.register({client:t,ctx:e,webhookUrl:s,logger:r})},$y=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.unregister)return;let{webhookUrl:s}=ne(n);await i.unregister({ctx:e,webhookUrl:s,client:t,logger:r})},Uy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.createUser)return;let{tags:s}=ne(n);return await i.createUser({ctx:e,client:t,tags:s,logger:r})},zy=async({client:t,ctx:e,req:n,logger:r,instance:i})=>{if(!i.createConversation)return;let{channel:s,tags:a}=ne(n);return await i.createConversation({ctx:e,client:t,channel:s,tags:a,logger:r})},Ky=async({ctx:t,req:e,client:n,logger:r,instance:i})=>{let{conversation:s,user:a,type:l,payload:u,message:d}=ne(e),f=i.channels[s.channel];if(!f)throw new Error(`Channel ${s.channel} not found`);let g=f.messages[l];if(!g)throw new Error(`Message of type ${l} not found in channel ${s.channel}`);await g({ctx:t,conversation:s,message:d,user:a,type:l,client:n,payload:u,ack:async({tags:w})=>{await n.updateMessage({id:d.id,tags:w})},logger:r})},Wy=async({req:t,ctx:e,client:n,logger:r,instance:i})=>{let{input:s,type:a}=ne(t);if(!a)throw new Error("Missing action type");let l=i.actions[a];if(!l)throw new Error(`Action ${a} not found`);let u=new An,f={output:await l({ctx:e,input:s,client:n,type:a,logger:r,metadata:u}),meta:u.toJSON()};return{body:JSON.stringify(f)}},Ly=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 Dn=class{constructor(e){this.props=e;this.actions=e.actions,this.channels=e.channels,this.register=e.register,this.unregister=e.unregister,this.createUser=e.createUser,this.createConversation=e.createConversation,this.webhook=e.handler,this.unknownOperationHandler=e.__advanced?.unknownOperationHandler}actions;channels;register;unregister;createUser;createConversation;webhook;unknownOperationHandler;handler=uc(this);start=e=>Ut(this.handler,e)};var Hn=class{constructor(e){this.props=e;this.integrations=e.integrations,this.plugins=e.plugins,this.user=e.user,this.conversation=e.conversation,this.message=e.message,this.states=e.states,this.configuration=e.configuration,this.events=e.events,this.recurringEvents=e.recurringEvents,this.actions=e.actions,this.tables=e.tables,this.secrets=e.secrets,this.workflows=e.workflows,this.attributes=e.attributes,this.__advanced=e.__advanced,this.withPlugins={user:e.user,conversation:e.conversation,message:e.message,states:e.states,events:e.events,recurringEvents:e.recurringEvents,actions:e.actions,tables:e.tables,workflows:e.workflows}}integrations;plugins;user;conversation;message;states;configuration;events;recurringEvents;actions;tables;secrets;workflows;attributes;__advanced;withPlugins;get metadata(){return{sdkVersion:Ae}}addIntegration(e,n){let r=this;r.integrations||(r.integrations={});let i=n?.alias??e.name;if(r.integrations[i])throw new Error(`Another integration with alias "${i}" is already installed in the bot`);return r.integrations[i]={...e,alias:i,enabled:n?.enabled,configurationType:n&&"configurationType"in n?n.configurationType:void 0,configuration:n&&"configuration"in n?n.configuration??{}:{},disabledChannels:n?.disabledChannels},this}addPlugin(e,n){let r=this;r.plugins||(r.plugins={});let i=n.alias??e.name;if(r.plugins[i])throw new Error(`Another plugin with alias "${i}" is already installed in the bot`);let s=Object.fromEntries(Object.entries(n.dependencies??{}).filter(([l,u])=>"integrationInterfaceAlias"in u).map(([l,u])=>{let d=this.integrations?.[u.integrationAlias];if(!d){let g=Object.keys(this.integrations??{}).join(", ")||"(none)";throw new Error(`Interface with alias "${l}" of plugin with alias "${i}" references integration with alias "${u.integrationAlias}" which is not installed. Please make sure to add the integration via addIntegration() before calling addPlugin().
73
73
  Available integration aliases: ${g}`)}let f=d.definition.interfaces?.[u.integrationInterfaceAlias];if(!f){let g=Object.keys(d.definition.interfaces??{}).join(", ")||"(none)";throw new Error(`Interface with alias "${u.integrationInterfaceAlias}" does not exist in integration "${d.name}" referenced by interface with alias "${l}" of plugin with alias "${i}".
74
74
  Available interface aliases: ${g}`)}return[l,{...f,id:d.id,name:d.name,version:d.version,...u}]})),a=Object.fromEntries(Object.entries(n.dependencies??{}).filter(([l,u])=>!("integrationInterfaceAlias"in u)).map(([l,u])=>{let d=this.integrations?.[u.integrationAlias];if(!d){let f=Object.keys(this.integrations??{}).join(", ")||"(none)";throw new Error(`Integration with alias "${l}" of plugin with alias "${i}" references integration with alias "${u.integrationAlias}" which is not installed. Please make sure to add the integration via addIntegration() before calling addPlugin().
75
75
  Available integration aliases: ${f}`)}return[l,{...d,...u}]}));return r.plugins[i]={...e,alias:i,configuration:n.configuration??{},interfaces:s,integrations:a},r.withPlugins.user=this._mergeUser(r.withPlugins.user,e.definition.user),r.withPlugins.conversation=this._mergeConversation(r.withPlugins.conversation,e.definition.conversation),r.withPlugins.message=this._mergeMessage(r.withPlugins.message,e.definition.message),r.withPlugins.recurringEvents=this._mergeRecurringEvents(r.withPlugins.recurringEvents,e.definition.recurringEvents),r.withPlugins.tables=this._mergeTables(r.withPlugins.tables,e.definition.tables),r.withPlugins.workflows=this._mergeWorkflows(r.withPlugins.workflows,e.definition.workflows),r.withPlugins.states=this._mergeStates(r.withPlugins.states,this._prefixKeysWithPluginAlias(e.definition.states,i)),r.withPlugins.events=this._mergeEvents(r.withPlugins.events,this._prefixKeysWithPluginAlias(e.definition.events,i)),r.withPlugins.actions=this._mergeActions(r.withPlugins.actions,this._prefixKeysWithPluginAlias(e.definition.actions,i)),this}_mergeUser=(e,n)=>({tags:{...e?.tags,...n?.tags}});_mergeConversation=(e,n)=>({tags:{...e?.tags,...n?.tags}});_mergeMessage=(e,n)=>({tags:{...e?.tags,...n?.tags}});_mergeStates=(e,n)=>({...e,...n});_mergeEvents=(e,n)=>({...e,...n});_mergeRecurringEvents=(e,n)=>({...e,...n});_mergeActions=(e,n)=>({...e,...n});_mergeTables=(e,n)=>({...e,...n});_mergeWorkflows=(e,n)=>({...e,...n});_prefixKeysWithPluginAlias=(e,n)=>Z.mapKeys(e??{},r=>`${n}${de}${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,l]of s){let u=this.integrations?.[l.integrationAlias];if(!u)throw new Error(`Interface with alias "${a}" of plugin with alias "${r}" references integration "${l.name}" which is not installed`);let d=Object.entries(l.entities??{});for(let[f,{name:g}]of d){let h=u.definition.entities?.[g]?.schema;if(!h)throw new Error(`Interface entity "${g}" does not exist in integration "${u.name}"`);e[`interface:${a}/entities/${f}`]=h}}}return e}_dereferenceZuiSchema(e,n){return e.dereference(n)}_dereferenceDefinitionSchemas(e,n){return Object.fromEntries(Object.entries(e??{}).map(([r,i])=>[r,this._dereferenceDefinitionSchema(i,n)]))}_dereferenceDefinitionSchema(e,n){return e&&{...e,schema:this._dereferenceZuiSchema(e.schema,n)}}_dereferenceActionDefinitionSchemas(e,n){return Object.fromEntries(Object.entries(e??{}).map(([r,i])=>[r,{...i,input:{schema:this._dereferenceZuiSchema(i.input.schema,n)},output:{schema:this._dereferenceZuiSchema(i.output.schema,n)}}]))}};var Ye=require("@botpress/client");var dt=class t extends ut{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 me=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));getOrCreateMessage=(e=>this._run("getOrCreateMessage",e));getMessage=(e=>this._run("getMessage",e));updateMessage=(e=>this._run("updateMessage",e));listMessages=(e=>this._run("listMessages",e));deleteMessage=(e=>this._run("deleteMessage",e));getUser=(e=>this._run("getUser",e));listUsers=(e=>this._run("listUsers",e));updateUser=(e=>this._run("updateUser",e));deleteUser=(e=>this._run("deleteUser",e));getState=(e=>this._run("getState",e));setState=(e=>this._run("setState",e));getOrSetState=(e=>this._run("getOrSetState",e));patchState=(e=>this._run("patchState",e));callAction=(e=>this._run("callAction",e));uploadFile=(e=>this._run("uploadFile",e));upsertFile=(e=>this._run("upsertFile",e));deleteFile=(e=>this._run("deleteFile",e));listFiles=(e=>this._run("listFiles",e));getFile=(e=>this._run("getFile",e));updateFileMetadata=(e=>this._run("updateFileMetadata",e));searchFiles=(e=>this._run("searchFiles",e));trackAnalytics=(e=>this._run("trackAnalytics",e));getTableRow=(e=>this._run("getTableRow",e));createTableRows=(e=>this._run("createTableRows",e));findTableRows=(e=>this._run("findTableRows",e));deleteTableRows=(e=>this._run("deleteTableRows",e));updateTableRows=(e=>this._run("updateTableRows",e));upsertTableRows=(e=>this._run("upsertTableRows",e));createWorkflow=(e=>this._run("createWorkflow",e));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 Fy=y.enum(["event_received","register","unregister","ping","action_triggered"]),cc=t=>({botId:t[Zn]||re("Missing bot id header"),operation:Fy.parse(t[Nn]),type:t[ac]||re("Missing type header"),configuration:JSON.parse(Buffer.from(t[Rn]||re("Missing configuration header"),"base64").toString("utf-8"))});var G={status:200};var ii=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"],dc=async(t,e)=>{if(t.ctx.type!=="workflow_update"||!qy.includes(e.payload.type))throw new Error("Unexpected event type");let n={...t,logger:Vy(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 Gy(n,e);default:e.payload.type}return G},Vy=(t,e)=>t.logger.with({eventId:e.id,workflowId:e.payload.workflow.id,conversationId:e.payload.conversation?.id,userId:e.payload.user?.id}),Gy=async(t,e)=>{let n=ii(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 Jy(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},Jy=async(t,e)=>{let n=ii(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 pc=t=>async e=>{let n=cc(e.headers),r=new dt,i=new Ye.Client({botId:n.botId,retry:Cn}),s=new me(i,{before:{createMessage:async l=>{let u=t.hookHandlers.before_outgoing_message[l.type]??[];for(let d of u){let f=new me(i);l=(await d({client:f,ctx:n,logger:r.with({conversationId:l.conversationId,userId:l.userId}),data:l}))?.data??l}return l},callAction:async l=>{let u=t.hookHandlers.before_outgoing_call_action[l.type]??[];for(let d of u){let f=new me(i);l=(await d({client:f,ctx:n,logger:r,data:l}))?.data??l}return l}},after:{createMessage:async l=>{let u=t.hookHandlers.after_outgoing_message[l.message.type]??[];for(let d of u){let f=new me(i);l=(await d({client:f,ctx:n,logger:r.with({messageId:l.message.id,conversationId:l.message.conversationId,userId:l.message.userId}),data:l}))?.data??l}return l},callAction:async(l,u)=>{let{type:d}=u,f=t.hookHandlers.after_outgoing_call_action[d]??[];for(let g of f){let h=new me(i);l=(await g({client:h,ctx:n,logger:r,data:{type:d,...l}}))?.data??l}return l}}}),a={req:e,ctx:n,logger:r,client:s,self:t};try{switch(n.operation){case"action_triggered":return await tv(a);case"event_received":return await ev(a);case"register":return await Xy(a);case"unregister":return await Qy(a);case"ping":return await Yy(a);default:throw new Error(`Unknown operation ${n.operation}`)}}catch(l){let u=l instanceof Error?l:new Error(String(l));if((0,Ye.isApiError)(u)){let f=u.type==="Runtime"?u:new Ye.RuntimeError(u.message,u);return r.error(f.message),{status:f.code,body:JSON.stringify(f.toJSON())}}let d=new Ye.RuntimeError("An unexpected error occurred in the bot.",u);return r.error(d.message,u),{status:d.code,body:JSON.stringify(d.toJSON())}}},Yy=async t=>G,Xy=async t=>(await t.self.registerHandler?.({client:t.client,ctx:t.ctx,logger:t.logger}),G),Qy=async t=>G,ev=async t=>{let{ctx:e,logger:n,req:r,client:i,self:s}=t,a={client:i,ctx:e,logger:n},l=ne(r);if(a.logger=a.logger.with({eventId:l.event.id,messageId:l.event.messageId,conversationId:l.event.conversationId,userId:l.event.userId}),e.type==="workflow_update")return await dc(t,l.event);if(e.type==="message_created"){let w=l.event,T=w.payload.message;a.logger=a.logger.with({messageId:T.id,conversationId:T.conversationId,userId:T.userId});let N=s.hookHandlers.before_incoming_message[T.type]??[];for(let oe of N){let D=await oe({...a,data:T});if(T=D?.data??T,D?.stop)return G}let F={...a,user:w.payload.user,conversation:w.payload.conversation,message:T,event:w},J=s.messageHandlers[T.type]??[];for(let oe of J)await oe(F);let ae=s.hookHandlers.after_incoming_message[T.type]??[];for(let oe of ae){let D=await oe({...a,data:T});if(T=D?.data??T,D?.stop)return G}return G}if(e.type==="state_expired"){let T=l.event.payload.state,N={...a,state:T},F=s.stateExpiredHandlers[T.name]??[];for(let J of F)await J(N);return G}let u=l.event,d=s.hookHandlers.before_incoming_event[u.type]??[];for(let w of d){let T=await w({...a,data:u});if(u=T?.data??u,T?.stop)return G}let f={...a,event:u},g=s.eventHandlers[u.type]??[];for(let w of g)await w(f);let h=s.hookHandlers.after_incoming_event[u.type]??[];for(let w of h){let T=await w({...a,data:u});if(u=T?.data??u,T?.stop)return G}return G},tv=async({ctx:t,logger:e,req:n,client:r,self:i})=>{let{input:s,type:a}=ne(n);if(!a)throw new Error("Missing action type");let l=i.hookHandlers.before_incoming_call_action[a]??[];for(let h of l){let w=await h({ctx:t,logger:e,client:r,data:{type:a,input:s}});s=w?.data?.input??s,a=w?.data?.type??a}let u=i.actionHandlers[a];if(!u)throw new Error(`Action ${a} not found`);let d=await u({ctx:t,logger:e,input:s,client:r,type:a}),f=i.hookHandlers.after_incoming_call_action[a]??[];for(let h of f){let w=await h({ctx:t,logger:e,client:r,data:{type:a,output:d}});a=w?.data?.type??a,d=w?.data?.output??d}return{status:200,body:JSON.stringify({output:d})}};var he=(t,{alias:e})=>{if(!("tags"in t)||!e)return t;let n=`${e}${de}`,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}${de}`,r=Object.fromEntries(Object.entries(t.tags??{}).map(([i,s])=>[i.startsWith(n)?i:`${n}${i}`,s]));return{...t,tags:r}};var si=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}},ie=t=>new si(t);var Se=t=>new Proxy({},{get:(e,n)=>({listInstances:r=>ie(({nextToken:i})=>t.client.listWorkflows({...r,name:n,nextToken:i}).then(({meta:s,workflows:a})=>({meta:s,items:a.map(l=>se({...t,workflow:l}))}))),startNewInstance:async r=>{let{workflow:i}=await t.client.createWorkflow({name:n,status:"pending",...X(r,{alias:void 0})});return{workflow:se({...t,workflow:i})}}})}),se=t=>{let e=!1;return{...he(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:se({...t,workflow:r})}},async acknowledgeStartOfProcessing(){if(!t.event||t.workflow.status!=="pending"||e)return{workflow:se(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:se({...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:se({...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:se({...t,workflow:r})}},async cancel(){let{workflow:n}=await t.client.updateWorkflow({id:t.workflow.id,status:"cancelled"});return await t.onWorkflowUpdate?.(n),{workflow:se({...t,workflow:n})}}}};var Mn=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:Se(i)}),r.name);for(let[i,s]of Object.entries(this._plugins)){let[a,l]=n.split(de);if(!(a!==i||!l))return s.actionHandlers[l]}}})}get messageHandlers(){return new Proxy({},{get:(e,n)=>{let r=Object.values(this._plugins).flatMap(l=>l.messageHandlers[n]??[]),i=n==="*"?[]:this._messageHandlers[n]??[],s=this._messageHandlers["*"]??[],a=[...i,...s].sort((l,u)=>l.order-u.order).map(({handler:l})=>V.setName(u=>l({...u,workflows:Se(u)}),l.name));return b.unique([...r,...a])}})}get eventHandlers(){return new Proxy({},{get:(e,n)=>{let r=Object.values(this._plugins).flatMap(l=>l.eventHandlers[n]??[]),i=n==="*"?[]:this._eventHandlers[n]??[],s=this._eventHandlers["*"]??[],a=[...i,...s].sort((l,u)=>l.order-u.order).map(({handler:l})=>V.setName(u=>l({...u,workflows:Se(u)}),l.name));return b.unique([...r,...a])}})}get stateExpiredHandlers(){return new Proxy({},{get:(e,n)=>{let r=Object.values(this._plugins).flatMap(l=>l.stateExpiredHandlers[n]??[]),i=n==="*"?[]:this._stateExpiredHandlers[n]??[],s=this._stateExpiredHandlers["*"]??[],a=[...i,...s].sort((l,u)=>l.order-u.order).map(({handler:l})=>V.setName(u=>l({...u,workflows:Se(u)}),l.name));return b.unique([...r,...a])}})}get hookHandlers(){return new Proxy({},{get:(e,n)=>{if(this._hookHandlers[n])return new Proxy({},{get:(i,s)=>{let a=Object.values(this._plugins).flatMap(g=>g.hookHandlers[n]?.[s]??[]),l=this._hookHandlers[n]??{},u=s==="*"?[]:l[s]??[],d=l["*"]??[],f=[...u,...d].sort((g,h)=>g.order-h.order).map(({handler:g})=>V.setName(h=>g({...h,workflows:Se(h)}),g.name));return b.unique([...a,...f])}})}})}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 f=d.workflow;return await u({...d,workflow:se({...d,onWorkflowUpdate(g){f=g}}),workflows:Se(d)}),f},u.name))??[],l=Object.values(this._plugins).flatMap(u=>u.workflowHandlers[n]?.[s]??[]);return b.unique([...a,...l])}})}})}on={message:(e,n)=>{this._messageHandlers[e]=b.safePush(this._messageHandlers[e],{handler:n,order:this._registerOrder++})},event:(e,n)=>{this._eventHandlers[e]=b.safePush(this._eventHandlers[e],{handler:n,order:this._registerOrder++})},stateExpired:(e,n)=>{this._stateExpiredHandlers[e]=b.safePush(this._stateExpiredHandlers[e],{handler:n,order:this._registerOrder++})},beforeIncomingEvent:(e,n)=>{this._hookHandlers.before_incoming_event[e]=b.safePush(this._hookHandlers.before_incoming_event[e],{handler:n,order:this._registerOrder++})},beforeIncomingMessage:(e,n)=>{this._hookHandlers.before_incoming_message[e]=b.safePush(this._hookHandlers.before_incoming_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingMessage:(e,n)=>{this._hookHandlers.before_outgoing_message[e]=b.safePush(this._hookHandlers.before_outgoing_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingCallAction:(e,n)=>{this._hookHandlers.before_outgoing_call_action[e]=b.safePush(this._hookHandlers.before_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},beforeIncomingCallAction:(e,n)=>{this._hookHandlers.before_incoming_call_action[e]=b.safePush(this._hookHandlers.before_incoming_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingEvent:(e,n)=>{this._hookHandlers.after_incoming_event[e]=b.safePush(this._hookHandlers.after_incoming_event[e],{handler:n,order:this._registerOrder++})},afterIncomingMessage:(e,n)=>{this._hookHandlers.after_incoming_message[e]=b.safePush(this._hookHandlers.after_incoming_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingMessage:(e,n)=>{this._hookHandlers.after_outgoing_message[e]=b.safePush(this._hookHandlers.after_outgoing_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingCallAction:(e,n)=>{this._hookHandlers.after_outgoing_call_action[e]=b.safePush(this._hookHandlers.after_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingCallAction:(e,n)=>{this._hookHandlers.after_incoming_call_action[e]=b.safePush(this._hookHandlers.after_incoming_call_action[e],{handler:n,order:this._registerOrder++})},workflowStart:(e,n)=>{this._workflowHandlers.started[e]=b.safePush(this._workflowHandlers.started[e],{handler:n,order:this._registerOrder++})},workflowContinue:(e,n)=>{this._workflowHandlers.continued[e]=b.safePush(this._workflowHandlers.continued[e],{handler:n,order:this._registerOrder++})},workflowTimeout:(e,n)=>{this._workflowHandlers.timed_out[e]=b.safePush(this._workflowHandlers.timed_out[e],{handler:n,order:this._registerOrder++})}};handler=pc(this);start=e=>Ut(this.handler,e)};var jn=class{constructor(e){this.props=e;this.name=e.name,this.version=e.version,this.icon=e.icon,this.title=e.title,this.description=e.description,this.readme=e.readme,this.entities=e.entities??{},this.attributes=e.attributes,this.__advanced=e.__advanced;let n=this._getEntityReference(this.entities),r=e.events===void 0?{}:Z.mapValues(e.events,a=>({...a,schema:a.schema(n)})),i=e.actions===void 0?{}:Z.mapValues(e.actions,a=>({...a,input:{...a.input,schema:a.input.schema(n)},output:{...a.output,schema:a.output.schema(n)}})),s=e.channels===void 0?{}:Z.mapValues(e.channels,a=>({...a,messages:Z.mapValues(a.messages,l=>({...l,schema:l.schema(n)}))}));this.events=r,this.actions=i,this.channels=s}name;version;title;description;icon;readme;attributes;entities;events;actions;channels;__advanced;get metadata(){return{sdkVersion:Ae}}_getEntityReference=e=>{let n={};for(let[r,i]of Object.entries(e)){let s=i.schema._def["x-zui"]?.title,a=i.schema._def.description,l=y.ref(r);s&&l.title(s),a&&l.describe(a),n[r]=l}return n}};var $n=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 Error(`Duplicate interface or integration alias detected in plugin definition: '${i}'. Please use unique aliases for each interface and integration.`);r.add(i)}this.configuration=e.configuration?{...e.configuration,schema:typeof e.configuration.schema=="object"?e.configuration.schema:e.configuration.schema({entities:n})}:void 0,this.states=Object.fromEntries(Object.entries(e.states??{}).map(([i,s])=>[i,{...s,schema:typeof s.schema=="object"?s.schema:s.schema({entities:n})}])),this.events=Object.fromEntries(Object.entries(e.events??{}).map(([i,s])=>[i,{...s,schema:typeof s.schema=="object"?s.schema:s.schema({entities:n})}])),this.actions=Object.fromEntries(Object.entries(e.actions??{}).map(([i,s])=>[i,{...s,input:{...s.input,schema:typeof s.input.schema=="object"?s.input.schema:s.input.schema({entities:n})},output:{...s.output,schema:typeof s.output.schema=="object"?s.output.schema:s.output.schema({entities:n})}}])),this.tables=Object.fromEntries(Object.entries(e.tables??{}).map(([i,s])=>[i,{...s,schema:typeof s.schema=="object"?s.schema:s.schema({entities:n})}]))}name;version;title;description;icon;readme;attributes;integrations;interfaces;user;conversation;message;states;configuration;events;recurringEvents;actions;tables;workflows;__advanced;get metadata(){return{sdkVersion:Ae}}dereferenceEntities({intersectWithUnknownRecord:e}={intersectWithUnknownRecord:!0}){let n=this._buildZuiReferenceMap(e);return{...this,configuration:this.configuration?{...this.configuration,schema:this._dereferenceZuiSchema(this.configuration.schema,n)}:void 0,events:this._dereferenceDefinitionSchemas(this.events,n),states:this._dereferenceDefinitionSchemas(this.states,n),tables:this._dereferenceDefinitionSchemas(this.tables,n),actions:this._dereferenceActionDefinitionSchemas(this.actions,n)}}_buildZuiReferenceMap(e){return Object.fromEntries(Object.entries(this.interfaces??{}).flatMap(([n,r])=>Object.entries(r.definition.entities??{}).map(([i,s])=>[`interface:${n}/entities/${i}`,e?s.schema.and(y.record(y.string(),y.unknown())):s.schema])))}_dereferenceZuiSchema(e,n){return e.dereference(n)}_dereferenceDefinitionSchemas(e,n){return Object.fromEntries(Object.entries(e??{}).map(([r,i])=>[r,{...i,schema:this._dereferenceZuiSchema(i.schema,n)}]))}_dereferenceActionDefinitionSchemas(e,n){return Object.fromEntries(Object.entries(e??{}).map(([r,i])=>[r,{...i,input:{schema:this._dereferenceZuiSchema(i.input.schema,n)},output:{schema:this._dereferenceZuiSchema(i.output.schema,n)}}]))}};var fc=(t,e)=>new Proxy({},{get:(n,r)=>new Proxy({},{get:(i,s)=>a=>{let l=(e.integrations[r]??e.interfaces[r])?.integrationAlias,u=e.interfaces[r]?.actions?.[s]?.name??s;return t.callAction({type:`${l}:${u}`,input:a}).then(d=>d.output)}})});var ai=t=>({async getById({id:e}){let n=await t.client.getMessage({id:e});return pe({...t,message:n.message})},list(e){return ie(({nextToken:n})=>t.client.listMessages({...X(e??{},{alias:t.plugin?.alias}),nextToken:n}).then(({meta:r,messages:i})=>({meta:r,items:i.map(s=>pe({...t,message:s}))})))}}),pe=t=>({...he(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 pe({...t,message:n})}});var oi=t=>({list(e){return ie(({nextToken:n})=>t.client.listUsers({...X(e??{},{alias:t.pluginAlias}),nextToken:n}).then(({meta:r,users:i})=>({meta:r,items:i.map(s=>ye({...t,conversationId:e?.conversationId,user:s}))})))},async getById({id:e}){let n=await t.client.getUser({id:e});return ye({...t,user:n.user,conversationId:void 0})}}),ye=t=>{let e={...he(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 ye({...t,user:r})}};return t.conversationId?{...e,async removeFromConversation(){return await t.client.removeParticipant({id:t.conversationId,userId:t.user.id}),ye({...t,conversationId:void 0})}}:{...e,async addToConversation({conversationId:n}){let{participant:r}=await t.client.addParticipant({id:n,userId:t.user.id});return ye({...t,user:r,conversationId:n})}}};var li=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,l=t.plugin?.interfaces[n]?.channels?.[i]?.name??i;return ie(({nextToken:u})=>t.client.listConversations({...X(s??{},{alias:t.plugin?.alias}),channel:l==="*"?void 0:l,integrationName:a==="*"?void 0:a,nextToken:u}).then(({meta:d,conversations:f})=>({meta:d,items:f.map(g=>pt({...t,conversation:g}))})))},async getById({id:s}){let a=await t.client.getConversation({id:s});return pt({...t,conversation:a.conversation})}})})}),pt=t=>{let e=t.client;return{...he(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 pt({...t,conversation:r})},async getMessage({id:n}){let r=await e.getMessage({id:n});return pe({...t,message:r.message})},async getOrCreateMessage(n){let{message:r}=await e.getOrCreateMessage({...X(n,{alias:t.plugin?.alias}),conversationId:t.conversation.id});return pe({...t,message:r})},async createMessage(n){let{message:r}=await e.createMessage({...X(n,{alias:t.plugin?.alias}),conversationId:t.conversation.id});return pe({...t,message:r})},listMessages(n){return ie(({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=>pe({...t,message:a}))})))},listParticipants(){return ie(({nextToken:n})=>e.listParticipants({id:t.conversation.id,nextToken:n}).then(({meta:r,participants:i})=>({meta:r,items:i.map(s=>ye({...t,user:s,conversationId:t.conversation.id}))})))}}};var ui=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 ie(({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})))}},gc=(t,e)=>new Proxy({},{get:(n,r)=>{let i=e.alias!==void 0?`${e.alias}${de}${r}`:r;return new ui({client:t,eventName:i})}});var ci=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})}},mc=(t,e)=>new Proxy({},{get:(n,r)=>new Proxy({},{get:(i,s)=>{let a=e.alias!==void 0?`${e.alias}${de}${s}`:s;return new ci(t,r,a)}})});var Un=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=fc(e,this._runtime),l=mc(e,this._runtime),u=Se({client:e,pluginAlias:this._runtime.alias}),d=gc(e,this._runtime),f=oi({client:e,pluginAlias:this._runtime.alias}),g=li({client:e,plugin:this._runtime}),h=ai({client:e,plugin:this._runtime});return{configuration:n,interfaces:r,integrations:i,actions:a,states:l,alias:s,workflows:u,events:d,users:f,conversations:g,messages:h}}get actionHandlers(){return new Proxy({},{get:(e,n)=>{n=this._stripAliasPrefix(n);let r=this._actionHandlers[n];if(r)return V.setName(i=>r({...i,...this._getTools(i.client)}),r.name)}})}get messageHandlers(){return new Proxy({},{get:(e,n)=>{n=this._stripAliasPrefix(n);let r=n==="*"?[]:this._messageHandlers[n]??[],i=this._messageHandlers["*"]??[];return b.unique([...r,...i]).sort((a,l)=>a.order-l.order).map(({handler:a})=>V.setName(l=>a({...l,user:ye({...l,conversationId:l.conversation.id,pluginAlias:this._runtime.alias}),message:pe({...l,plugin:this._runtime,message:l.message}),conversation:pt({...l,plugin:this._runtime,conversation:l.conversation}),...this._getTools(l.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(([l])=>this._eventResolvesTo(l,n)).flatMap(([,l])=>l??[]),s=this._eventHandlers["*"]??[];return b.unique([...r,...i,...s]).sort((l,u)=>l.order-u.order).map(({handler:l})=>V.setName(u=>l({...u,...this._getTools(u.client)}),l.name))}})}get stateExpiredHandlers(){return new Proxy({},{get:(e,n)=>{n=this._stripAliasPrefix(n);let r=n==="*"?[]:this._stateExpiredHandlers[n]??[],i=this._stateExpiredHandlers["*"]??[];return b.unique([...r,...i]).sort((a,l)=>a.order-l.order).map(({handler:a})=>V.setName(l=>a({...l,...this._getTools(l.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]??[],l=Object.entries(r).filter(([f])=>this._eventResolvesTo(f,s)).flatMap(([,f])=>f??[]),u=r["*"]??[];return b.unique([...a,...l,...u]).sort((f,g)=>f.order-g.order).map(({handler:f})=>V.setName(g=>f({...g,data:he(g.data,{alias:this._runtime.alias}),...this._getTools(g.client)}),f.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((l,u)=>l.order-u.order)??[]).map(({handler:l})=>V.setName(async u=>{let d=u.workflow;return await l({...u,workflow:se({...u,workflow:d,onWorkflowUpdate(f){d=f},pluginAlias:this._runtime.alias}),...this._getTools(u.client)}),d},l.name))})}})}on={message:(e,n)=>{this._messageHandlers[e]=b.safePush(this._messageHandlers[e],{handler:n,order:this._registerOrder++})},event:(e,n)=>{this._eventHandlers[e]=b.safePush(this._eventHandlers[e],{handler:n,order:this._registerOrder++})},stateExpired:(e,n)=>{this._stateExpiredHandlers[e]=b.safePush(this._stateExpiredHandlers[e],{handler:n,order:this._registerOrder++})},beforeIncomingEvent:(e,n)=>{this._hookHandlers.before_incoming_event[e]=b.safePush(this._hookHandlers.before_incoming_event[e],{handler:n,order:this._registerOrder++})},beforeIncomingMessage:(e,n)=>{this._hookHandlers.before_incoming_message[e]=b.safePush(this._hookHandlers.before_incoming_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingMessage:(e,n)=>{this._hookHandlers.before_outgoing_message[e]=b.safePush(this._hookHandlers.before_outgoing_message[e],{handler:n,order:this._registerOrder++})},beforeOutgoingCallAction:(e,n)=>{this._hookHandlers.before_outgoing_call_action[e]=b.safePush(this._hookHandlers.before_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},beforeIncomingCallAction:(e,n)=>{this._hookHandlers.before_incoming_call_action[e]=b.safePush(this._hookHandlers.before_incoming_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingEvent:(e,n)=>{this._hookHandlers.after_incoming_event[e]=b.safePush(this._hookHandlers.after_incoming_event[e],{handler:n,order:this._registerOrder++})},afterIncomingMessage:(e,n)=>{this._hookHandlers.after_incoming_message[e]=b.safePush(this._hookHandlers.after_incoming_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingMessage:(e,n)=>{this._hookHandlers.after_outgoing_message[e]=b.safePush(this._hookHandlers.after_outgoing_message[e],{handler:n,order:this._registerOrder++})},afterOutgoingCallAction:(e,n)=>{this._hookHandlers.after_outgoing_call_action[e]=b.safePush(this._hookHandlers.after_outgoing_call_action[e],{handler:n,order:this._registerOrder++})},afterIncomingCallAction:(e,n)=>{this._hookHandlers.after_incoming_call_action[e]=b.safePush(this._hookHandlers.after_incoming_call_action[e],{handler:n,order:this._registerOrder++})},workflowStart:(e,n)=>{this._workflowHandlers.started[e]=b.safePush(this._workflowHandlers.started[e],{handler:n,order:this._registerOrder++})},workflowContinue:(e,n)=>{this._workflowHandlers.continued[e]=b.safePush(this._workflowHandlers.continued[e],{handler:n,order:this._registerOrder++})},workflowTimeout:(e,n)=>{this._workflowHandlers.timed_out[e]=b.safePush(this._workflowHandlers.timed_out[e],{handler:n,order:this._registerOrder++})}};_eventResolvesTo=(e,n)=>{let[i,s]=e.split(":");if(!i||!s)return!1;let a=this._runtime.interfaces[i];if(a&&n===`${a.integrationAlias}:${a?.events?.[s]?.name}`)return!0;let l=this._runtime.integrations[i];return!!(l&&n===`${l.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 di={};Xe(di,{allWithinMajorOf:()=>nv,allWithinMinorOf:()=>rv});var zt=Kn(require("semver"));function nv(t){let e=zt.major(t.version);return{...t,version:`>=${e}.0.0 <${e+1}.0.0`}}function rv(t){let e=zt.major(t.version),n=zt.minor(t.version);return{...t,version:`>=${e}.${n}.0 <${e}.${n+1}.0`}}0&&(module.exports={Bot,BotDefinition,BotLogger,BotSpecificClient,Integration,IntegrationDefinition,IntegrationLogger,IntegrationSpecificClient,InterfaceDefinition,Plugin,PluginDefinition,RuntimeError,WELL_KNOWN_ATTRIBUTES,isApiError,messages,parseBody,serve,version,z});