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