@botpress/sdk 5.5.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.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 +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
|
|
2
|
-
> @botpress/sdk@
|
|
2
|
+
> @botpress/sdk@6.0.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
|
+
> @botpress/sdk@6.0.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@
|
|
10
|
+
> @botpress/sdk@6.0.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@
|
|
15
|
+
> @botpress/sdk@6.0.0 build:browser /home/runner/work/botpress/botpress/packages/sdk
|
|
16
16
|
> ts-node -T ./build.ts --browser
|
|
17
17
|
|
|
18
|
-
(node:
|
|
18
|
+
(node:3377) [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 @@ ${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="5.5.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.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().
|
|
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});
|