@applica-software-guru/persona-sdk 0.1.85 → 0.1.86

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.
@@ -24,5 +24,5 @@ __p += '`),H&&(x+=`' +
24
24
  function print() { __p += __j.call(arguments, '') }
25
25
  `:`;
26
26
  `)+x+`return __p
27
- }`;var $=Wo(function(){return J(o,I+"return "+x).apply(i,a)});if($.source=x,ki($))throw $;return $}function hg(n){return Y(n).toLowerCase()}function dg(n){return Y(n).toUpperCase()}function pg(n,t,e){if(n=Y(n),n&&(e||t===i))return Ku(n);if(!n||!(t=On(t)))return n;var r=Qn(n),u=Qn(t),o=ku(r,u),a=qu(r,u)+1;return Pt(r,o,a).join("")}function gg(n,t,e){if(n=Y(n),n&&(e||t===i))return n.slice(0,Hu(n)+1);if(!n||!(t=On(t)))return n;var r=Qn(n),u=qu(r,Qn(t))+1;return Pt(r,0,u).join("")}function _g(n,t,e){if(n=Y(n),n&&(e||t===i))return n.replace(kr,"");if(!n||!(t=On(t)))return n;var r=Qn(n),u=ku(r,Qn(t));return Pt(r,u).join("")}function vg(n,t){var e=Oe,r=En;if(rn(t)){var u="separator"in t?t.separator:u;e="length"in t?B(t.length):e,r="omission"in t?On(t.omission):r}n=Y(n);var o=n.length;if(Jt(n)){var a=Qn(n);o=a.length}if(e>=o)return n;var c=e-Zt(r);if(c<1)return r;var h=a?Pt(a,0,c).join(""):n.slice(0,c);if(u===i)return h+r;if(a&&(c+=h.length-c),qi(u)){if(n.slice(c).search(u)){var y,m=h;for(u.global||(u=ui(u.source,Y(fu.exec(u))+"g")),u.lastIndex=0;y=u.exec(m);)var x=y.index;h=h.slice(0,x===i?c:x)}}else if(n.indexOf(On(u),c)!=c){var A=h.lastIndexOf(u);A>-1&&(h=h.slice(0,A))}return h+r}function wg(n){return n=Y(n),n&&Ra.test(n)?n.replace(su,Jf):n}var yg=te(function(n,t,e){return n+(e?" ":"")+t.toUpperCase()}),Gi=Ws("toUpperCase");function Oo(n,t,e){return n=Y(n),t=e?i:t,t===i?kf(n)?Xf(n):Wf(n):n.match(t)||[]}var Wo=K(function(n,t){try{return Tn(n,i,t)}catch(e){return ki(e)?e:new N(e)}}),mg=ht(function(n,t){return Mn(t,function(e){e=ut(e),ct(n,e,$i(n[e],n))}),n});function xg(n){var t=n==null?0:n.length,e=L();return n=t?en(n,function(r){if(typeof r[1]!="function")throw new $n(S);return[e(r[0]),r[1]]}):[],K(function(r){for(var u=-1;++u<t;){var o=n[u];if(Tn(o[0],this,r))return Tn(o[1],this,r)}})}function Sg(n){return Jc(kn(n,P))}function Ji(n){return function(){return n}}function Ag(n,t){return n==null||n!==n?t:n}var bg=Fs(),Cg=Fs(!0);function In(n){return n}function Zi(n){return ls(typeof n=="function"?n:kn(n,P))}function Pg(n){return ds(kn(n,P))}function Ig(n,t){return ps(n,kn(t,P))}var Rg=K(function(n,t){return function(e){return Se(e,n,t)}}),Eg=K(function(n,t){return function(e){return Se(n,e,t)}});function Yi(n,t,e){var r=dn(t),u=sr(t,r);e==null&&!(rn(t)&&(u.length||!r.length))&&(e=t,t=n,n=this,u=sr(t,dn(t)));var o=!(rn(e)&&"chain"in e)||!!e.chain,a=pt(n);return Mn(u,function(c){var h=t[c];n[c]=h,a&&(n.prototype[c]=function(){var y=this.__chain__;if(o||y){var m=n(this.__wrapped__),x=m.__actions__=bn(this.__actions__);return x.push({func:h,args:arguments,thisArg:n}),m.__chain__=y,m}return h.apply(n,mt([this.value()],arguments))})}),n}function Tg(){return pn._===this&&(pn._=ec),this}function Xi(){}function Lg(n){return n=B(n),K(function(t){return gs(t,n)})}var Og=Ii(en),Wg=Ii(Nu),Dg=Ii(Vr);function Do(n){return Di(n)?jr(ut(n)):cl(n)}function Fg(n){return function(t){return n==null?i:Nt(n,t)}}var Ng=Us(),Ug=Us(!0);function Qi(){return[]}function Vi(){return!1}function Bg(){return{}}function Mg(){return""}function $g(){return!0}function Kg(n,t){if(n=B(n),n<1||n>et)return[];var e=Un,r=_n(n,Un);t=L(t),n-=Un;for(var u=ei(r,t);++e<n;)t(e);return u}function kg(n){return U(n)?en(n,ut):Wn(n)?[n]:bn(js(Y(n)))}function qg(n){var t=++nc;return Y(n)+t}var zg=hr(function(n,t){return n+t},0),Hg=Ri("ceil"),Gg=hr(function(n,t){return n/t},1),Jg=Ri("floor");function Zg(n){return n&&n.length?ur(n,In,di):i}function Yg(n,t){return n&&n.length?ur(n,L(t,2),di):i}function Xg(n){return Mu(n,In)}function Qg(n,t){return Mu(n,L(t,2))}function Vg(n){return n&&n.length?ur(n,In,vi):i}function jg(n,t){return n&&n.length?ur(n,L(t,2),vi):i}var n_=hr(function(n,t){return n*t},1),t_=Ri("round"),e_=hr(function(n,t){return n-t},0);function r_(n){return n&&n.length?ti(n,In):0}function i_(n,t){return n&&n.length?ti(n,L(t,2)):0}return s.after=Pd,s.ary=co,s.assign=dp,s.assignIn=Co,s.assignInWith=Cr,s.assignWith=pp,s.at=gp,s.before=lo,s.bind=$i,s.bindAll=mg,s.bindKey=ho,s.castArray=Bd,s.chain=oo,s.chunk=Jl,s.compact=Zl,s.concat=Yl,s.cond=xg,s.conforms=Sg,s.constant=Ji,s.countBy=rd,s.create=_p,s.curry=po,s.curryRight=go,s.debounce=_o,s.defaults=vp,s.defaultsDeep=wp,s.defer=Id,s.delay=Rd,s.difference=Xl,s.differenceBy=Ql,s.differenceWith=Vl,s.drop=jl,s.dropRight=nh,s.dropRightWhile=th,s.dropWhile=eh,s.fill=rh,s.filter=ud,s.flatMap=ad,s.flatMapDeep=fd,s.flatMapDepth=cd,s.flatten=ro,s.flattenDeep=ih,s.flattenDepth=uh,s.flip=Ed,s.flow=bg,s.flowRight=Cg,s.fromPairs=sh,s.functions=Cp,s.functionsIn=Pp,s.groupBy=ld,s.initial=ah,s.intersection=fh,s.intersectionBy=ch,s.intersectionWith=lh,s.invert=Rp,s.invertBy=Ep,s.invokeMap=dd,s.iteratee=Zi,s.keyBy=pd,s.keys=dn,s.keysIn=Pn,s.map=yr,s.mapKeys=Lp,s.mapValues=Op,s.matches=Pg,s.matchesProperty=Ig,s.memoize=xr,s.merge=Wp,s.mergeWith=Po,s.method=Rg,s.methodOf=Eg,s.mixin=Yi,s.negate=Sr,s.nthArg=Lg,s.omit=Dp,s.omitBy=Fp,s.once=Td,s.orderBy=gd,s.over=Og,s.overArgs=Ld,s.overEvery=Wg,s.overSome=Dg,s.partial=Ki,s.partialRight=vo,s.partition=_d,s.pick=Np,s.pickBy=Io,s.property=Do,s.propertyOf=Fg,s.pull=gh,s.pullAll=uo,s.pullAllBy=_h,s.pullAllWith=vh,s.pullAt=wh,s.range=Ng,s.rangeRight=Ug,s.rearg=Od,s.reject=yd,s.remove=yh,s.rest=Wd,s.reverse=Bi,s.sampleSize=xd,s.set=Bp,s.setWith=Mp,s.shuffle=Sd,s.slice=mh,s.sortBy=Cd,s.sortedUniq=Ih,s.sortedUniqBy=Rh,s.split=ag,s.spread=Dd,s.tail=Eh,s.take=Th,s.takeRight=Lh,s.takeRightWhile=Oh,s.takeWhile=Wh,s.tap=Zh,s.throttle=Fd,s.thru=wr,s.toArray=So,s.toPairs=Ro,s.toPairsIn=Eo,s.toPath=kg,s.toPlainObject=bo,s.transform=$p,s.unary=Nd,s.union=Dh,s.unionBy=Fh,s.unionWith=Nh,s.uniq=Uh,s.uniqBy=Bh,s.uniqWith=Mh,s.unset=Kp,s.unzip=Mi,s.unzipWith=so,s.update=kp,s.updateWith=qp,s.values=ie,s.valuesIn=zp,s.without=$h,s.words=Oo,s.wrap=Ud,s.xor=Kh,s.xorBy=kh,s.xorWith=qh,s.zip=zh,s.zipObject=Hh,s.zipObjectDeep=Gh,s.zipWith=Jh,s.entries=Ro,s.entriesIn=Eo,s.extend=Co,s.extendWith=Cr,Yi(s,s),s.add=zg,s.attempt=Wo,s.camelCase=Zp,s.capitalize=To,s.ceil=Hg,s.clamp=Hp,s.clone=Md,s.cloneDeep=Kd,s.cloneDeepWith=kd,s.cloneWith=$d,s.conformsTo=qd,s.deburr=Lo,s.defaultTo=Ag,s.divide=Gg,s.endsWith=Yp,s.eq=jn,s.escape=Xp,s.escapeRegExp=Qp,s.every=id,s.find=sd,s.findIndex=to,s.findKey=yp,s.findLast=od,s.findLastIndex=eo,s.findLastKey=mp,s.floor=Jg,s.forEach=ao,s.forEachRight=fo,s.forIn=xp,s.forInRight=Sp,s.forOwn=Ap,s.forOwnRight=bp,s.get=zi,s.gt=zd,s.gte=Hd,s.has=Ip,s.hasIn=Hi,s.head=io,s.identity=In,s.includes=hd,s.indexOf=oh,s.inRange=Gp,s.invoke=Tp,s.isArguments=Mt,s.isArray=U,s.isArrayBuffer=Gd,s.isArrayLike=Cn,s.isArrayLikeObject=sn,s.isBoolean=Jd,s.isBuffer=It,s.isDate=Zd,s.isElement=Yd,s.isEmpty=Xd,s.isEqual=Qd,s.isEqualWith=Vd,s.isError=ki,s.isFinite=jd,s.isFunction=pt,s.isInteger=wo,s.isLength=Ar,s.isMap=yo,s.isMatch=np,s.isMatchWith=tp,s.isNaN=ep,s.isNative=rp,s.isNil=up,s.isNull=ip,s.isNumber=mo,s.isObject=rn,s.isObjectLike=un,s.isPlainObject=Re,s.isRegExp=qi,s.isSafeInteger=sp,s.isSet=xo,s.isString=br,s.isSymbol=Wn,s.isTypedArray=re,s.isUndefined=op,s.isWeakMap=ap,s.isWeakSet=fp,s.join=hh,s.kebabCase=Vp,s.last=zn,s.lastIndexOf=dh,s.lowerCase=jp,s.lowerFirst=ng,s.lt=cp,s.lte=lp,s.max=Zg,s.maxBy=Yg,s.mean=Xg,s.meanBy=Qg,s.min=Vg,s.minBy=jg,s.stubArray=Qi,s.stubFalse=Vi,s.stubObject=Bg,s.stubString=Mg,s.stubTrue=$g,s.multiply=n_,s.nth=ph,s.noConflict=Tg,s.noop=Xi,s.now=mr,s.pad=tg,s.padEnd=eg,s.padStart=rg,s.parseInt=ig,s.random=Jp,s.reduce=vd,s.reduceRight=wd,s.repeat=ug,s.replace=sg,s.result=Up,s.round=t_,s.runInContext=l,s.sample=md,s.size=Ad,s.snakeCase=og,s.some=bd,s.sortedIndex=xh,s.sortedIndexBy=Sh,s.sortedIndexOf=Ah,s.sortedLastIndex=bh,s.sortedLastIndexBy=Ch,s.sortedLastIndexOf=Ph,s.startCase=fg,s.startsWith=cg,s.subtract=e_,s.sum=r_,s.sumBy=i_,s.template=lg,s.times=Kg,s.toFinite=gt,s.toInteger=B,s.toLength=Ao,s.toLower=hg,s.toNumber=Hn,s.toSafeInteger=hp,s.toString=Y,s.toUpper=dg,s.trim=pg,s.trimEnd=gg,s.trimStart=_g,s.truncate=vg,s.unescape=wg,s.uniqueId=qg,s.upperCase=yg,s.upperFirst=Gi,s.each=ao,s.eachRight=fo,s.first=io,Yi(s,function(){var n={};return rt(s,function(t,e){Q.call(s.prototype,e)||(n[e]=t)}),n}(),{chain:!1}),s.VERSION=p,Mn(["bind","bindKey","curry","curryRight","partial","partialRight"],function(n){s[n].placeholder=s}),Mn(["drop","take"],function(n,t){z.prototype[n]=function(e){e=e===i?1:cn(B(e),0);var r=this.__filtered__&&!t?new z(this):this.clone();return r.__filtered__?r.__takeCount__=_n(e,r.__takeCount__):r.__views__.push({size:_n(e,Un),type:n+(r.__dir__<0?"Right":"")}),r},z.prototype[n+"Right"]=function(e){return this.reverse()[n](e).reverse()}}),Mn(["filter","map","takeWhile"],function(n,t){var e=t+1,r=e==ae||e==Er;z.prototype[n]=function(u){var o=this.clone();return o.__iteratees__.push({iteratee:L(u,3),type:e}),o.__filtered__=o.__filtered__||r,o}}),Mn(["head","last"],function(n,t){var e="take"+(t?"Right":"");z.prototype[n]=function(){return this[e](1).value()[0]}}),Mn(["initial","tail"],function(n,t){var e="drop"+(t?"":"Right");z.prototype[n]=function(){return this.__filtered__?new z(this):this[e](1)}}),z.prototype.compact=function(){return this.filter(In)},z.prototype.find=function(n){return this.filter(n).head()},z.prototype.findLast=function(n){return this.reverse().find(n)},z.prototype.invokeMap=K(function(n,t){return typeof n=="function"?new z(this):this.map(function(e){return Se(e,n,t)})}),z.prototype.reject=function(n){return this.filter(Sr(L(n)))},z.prototype.slice=function(n,t){n=B(n);var e=this;return e.__filtered__&&(n>0||t<0)?new z(e):(n<0?e=e.takeRight(-n):n&&(e=e.drop(n)),t!==i&&(t=B(t),e=t<0?e.dropRight(-t):e.take(t-n)),e)},z.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},z.prototype.toArray=function(){return this.take(Un)},rt(z.prototype,function(n,t){var e=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),u=s[r?"take"+(t=="last"?"Right":""):t],o=r||/^find/.test(t);u&&(s.prototype[t]=function(){var a=this.__wrapped__,c=r?[1]:arguments,h=a instanceof z,y=c[0],m=h||U(a),x=function(q){var H=u.apply(s,mt([q],c));return r&&A?H[0]:H};m&&e&&typeof y=="function"&&y.length!=1&&(h=m=!1);var A=this.__chain__,I=!!this.__actions__.length,O=o&&!A,$=h&&!I;if(!o&&m){a=$?a:new z(this);var W=n.apply(a,c);return W.__actions__.push({func:wr,args:[x],thisArg:i}),new Kn(W,A)}return O&&$?n.apply(this,c):(W=this.thru(x),O?r?W.value()[0]:W.value():W)})}),Mn(["pop","push","shift","sort","splice","unshift"],function(n){var t=ze[n],e=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",r=/^(?:pop|shift)$/.test(n);s.prototype[n]=function(){var u=arguments;if(r&&!this.__chain__){var o=this.value();return t.apply(U(o)?o:[],u)}return this[e](function(a){return t.apply(U(a)?a:[],u)})}}),rt(z.prototype,function(n,t){var e=s[t];if(e){var r=e.name+"";Q.call(Vt,r)||(Vt[r]=[]),Vt[r].push({name:t,func:e})}}),Vt[lr(i,Rn).name]=[{name:"wrapper",func:i}],z.prototype.clone=wc,z.prototype.reverse=yc,z.prototype.value=mc,s.prototype.at=Yh,s.prototype.chain=Xh,s.prototype.commit=Qh,s.prototype.next=Vh,s.prototype.plant=nd,s.prototype.reverse=td,s.prototype.toJSON=s.prototype.valueOf=s.prototype.value=ed,s.prototype.first=s.prototype.head,ge&&(s.prototype[ge]=jh),s},Yt=Qf();Lt?((Lt.exports=Yt)._=Yt,Zr._=Yt):pn._=Yt}).call(se)}(Te,Te.exports);var qo=Te.exports;const zo=ko(qo);class Ho{constructor(f){D(this,"config");this.config=f}async complete(f,i){var p;await this.persist(f,{...i,success:!0}),(p=this.config.logger)==null||p.debug("Transaction completed:",f)}async fail(f,i){var p;await this.persist(f,{...i,success:!1}),(p=this.config.logger)==null||p.debug("Transaction failed:",{...f,...i})}async persist(f,i){await fetch(`${this.config.apiUrl}/transactions/${f.id}`,{body:JSON.stringify(i),method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","x-persona-apikey":this.config.apiKey}})}}class Go{constructor(f,i){D(this,"transaction");D(this,"manager");this.transaction=f,this.manager=i}getFunctionCall(){return this.transaction.functionCall}async invoke(f,i){var E;const p=this.transaction.functionCall;if(!p){await this.fail("No function call found");return}const _=p.name,v=p.args,S=f[_];if(!S){await this.fail(`Tool ${_} not found`);return}try{const C=zo.get(i,"schema.config.parameters.properties",{}),R=(C&&Object.keys(C).length>0?Object.keys(C):((E=S.toString().replace(/\n/g," ").match(/^[^(]*\(([^)]*)\)/))==null?void 0:E[1].split(",").map(T=>T.trim()).filter(Boolean))||[]).map(T=>v[T]),P=await S.apply(null,R);await this.complete(P)}catch(C){await this.fail(`Error executing tool ${_}: ${C}`)}}async complete(f){await this.manager.complete(this.transaction,{success:!0,output:f,error:null})}async fail(f){await this.manager.fail(this.transaction,{success:!1,output:null,error:f})}}class ji extends ue{constructor(i){super();D(this,"status");D(this,"autostart");D(this,"session");D(this,"config");D(this,"notify",!0);D(this,"_tools");D(this,"_toolSchema",{});if(this.config=i,this.status="disconnected",this.autostart=!0,Array.isArray(i.tools)){this._tools={};for(const p of i.tools)p.schema&&p.implementation&&(this._tools[p.schema.name]=p.implementation,this._toolSchema[p.schema.name]=p)}else this._tools=i.tools}getName(){return"transaction"}getPriority(){return 0}getToolInstance(i){return this._toolSchema[i]}async connect(i){return this.setStatus("connected"),i}async disconnect(){this.setStatus("disconnected"),this.session=null}async syncSession(i){this.session=i}async sendPacket(i){}onTransaction(i){const p=new Ho(this.config),_=new Go(i,p);if(this.config.onTransaction)this.config.onTransaction(_);else{const v=i.functionCall?this.getToolInstance(i.functionCall.name):void 0;_.invoke(this._tools,v)}}getTools(){return this._tools}}function Jo(d,f){if(Array.isArray(d))return d;if(typeof d=="object"&&d!==null){const i=f.dev?"localhost:8000":f.baseUrl||"persona.applica.guru/api",p=f.dev?"http":"https",_=f.dev?"ws":"wss";let v=Object.keys(d).map(S=>{switch(S){case"rest":return Zo(d[S],{baseEndpointProtocol:p,baseEndpoint:i,apiKey:f.apiKey,agentId:f.agentId,userId:f.userId,logger:f.logger});case"webrtc":return Yo(d[S],{baseWebSocketProtocol:_,baseEndpoint:i,apiKey:f.apiKey,agentId:f.agentId,userId:f.userId,logger:f.logger});case"websocket":return Xo(d[S],{baseWebSocketProtocol:_,baseEndpoint:i,apiKey:f.apiKey,agentId:f.agentId,userId:f.userId,logger:f.logger});default:throw new Error(`Unknown protocol: ${S}`)}}).filter(S=>S!==null);return f.tools&&v.push(new ji({apiUrl:`${p}://${i}`,apiKey:f.apiKey,agentId:f.agentId,tools:f.tools,logger:f.logger})),v}throw new Error("Invalid protocols configuration")}function Zo(d,f){return d===!0?new Pr({apiUrl:`${f.baseEndpointProtocol}://${f.baseEndpoint}`,apiKey:f.apiKey,agentId:f.agentId,userId:f.userId,logger:f.logger}):typeof d=="object"&&d!==null?new Pr(d):null}function Yo(d,f){return d===!0?new Rr({webrtcUrl:`${f.baseWebSocketProtocol}://${f.baseEndpoint}/webrtc`,apiKey:f.apiKey,agentId:f.agentId,userId:f.userId,logger:f.logger}):typeof d=="object"&&d!==null?new Rr(d):null}function Xo(d,f){return d===!0?new Ir({webSocketUrl:`${f.baseWebSocketProtocol}://${f.baseEndpoint}/websocket`,apiKey:f.apiKey,agentId:f.agentId,userId:f.userId,logger:f.logger}):typeof d=="object"&&d!==null?new Ir(d):null}function Qo(d,f,i,p,_){return v=>{v.type==="message"?Vo(v.payload,d,f,i,_):v.type==="reasoning"?jo(v.payload,d,f,_):v.type==="transaction"&&na(v.payload,d,p)}}function Vo(d,f,i,p,_){d.createdAt||(d.createdAt=new Date),(d==null?void 0:d.finishReason)==="stop"&&!(d!=null&&d.functionResponse)&&!(d!=null&&d.thought)&&p(!1),d.thought&&(d.type="reasoning"),d.protocol=f.getName(),i(v=>{const S=$t([...v,d]);return _?_(S):S})}function jo(d,f,i,p){const _={type:"reasoning",text:d.thought,role:"assistant",finishReason:"stop",protocol:f.getName(),createdAt:new Date};i(v=>{const S=$t([...v,_]);return p?p(S):S})}function na(d,f,i){i.filter(p=>p!==f).forEach(p=>p.onTransaction(d))}function ta(d){return new Promise((f,i)=>{const p=new FileReader;p.readAsDataURL(d),p.onload=()=>{const v=p.result.split(";base64,")[1];f(v)},p.onerror=_=>{i(_)}})}function ea(d){const f={rest:i=>i.config.apiUrl,webrtc:i=>i.config.webrtcUrl.replace("/webrtc","").replace("ws://","http://").replace("wss://","https://"),websocket:i=>i.config.webSocketUrl.replace("/websocket","").replace("ws://","http://").replace("wss://","https://")};for(const i of d){const p=f[i.getName()];if(p)return p(i)}return null}function ra(d,f,i,p,_){return async v=>{var P;if(((P=v.content[0])==null?void 0:P.type)!=="text")throw new Error("Only text messages are supported");if(!d.some(T=>T.getName()!=="transaction"&&T.status==="connected")){f(T=>{const F={role:"assistant",type:"text",text:"No protocol is connected.",createdAt:new Date,finishReason:"stop"},Z=[...T,F];return p?p(Z):Z});return}const C={role:"user",type:"text",text:v.content[0].text,createdAt:new Date};f(T=>{const F=$t([...T,C]);return p?p(F):F}),i(!0);const M=d.sort((T,F)=>F.getPriority()-T.getPriority()).find(T=>T.status==="connected"),R=[];if(v.attachments)for(const T of v.attachments)T.contentType.startsWith("image/")&&T.file&&R.push({role:"user",image:{contentType:T.contentType,content:await ta(T.file)},text:"",type:"text",createdAt:new Date});v.content&&R.push({role:"user",text:v.content[0].text,type:"text",createdAt:new Date}),_==null||_.debug("Sending message:",R),await(M==null?void 0:M.sendPacket({type:"request",payload:R}))}}function ia(d,f,i,p,_,v){return async S=>{var Z;if(((Z=S.content[0])==null?void 0:Z.type)!=="text")throw new Error("Only text messages are supported");const E=d.sort((k,wn)=>wn.getPriority()-k.getPriority()).find(k=>k.status==="connected");if(!E){v==null||v.debug("No protocol available for edit");return}const C=S.parentId;if(!C){v==null||v.debug("No parent ID provided for edit");return}const M=f.findIndex(k=>k.id===C);if(M===-1){v==null||v.debug("Parent message not found:",C);return}const R=f.slice(0,M+1),P={role:"user",text:S.content[0].text,type:"text",createdAt:new Date},T=$t([...R,P]);i(_?_(T):T),p(!0);const F=[{role:"user",text:S.content[0].text,type:"text",createdAt:new Date}];v==null||v.debug("Sending edited message:",F),await E.sendPacket({type:"request",payload:F})}}function ua(d,f,i,p,_,v){return async(S,E)=>{const C=d.sort((Z,k)=>k.getPriority()-Z.getPriority()).find(Z=>Z.status==="connected");if(!C){v==null||v.debug("No protocol available for reload");return}const M=E.parentId??S;if(!M){v==null||v.debug("No parent ID provided for reload");return}const R=f.findIndex(Z=>Z.id===M);if(R===-1){v==null||v.debug("Parent message not found:",M);return}const P=f[R];i(Z=>{const k=Z.slice(0,R+1);return _?_(k):k});let T;if(P.role==="assistant"||P.role==="function"){for(let Z=R-1;Z>=0;Z--)if(f[Z].role==="user"){T=f[Z];break}}else P.role==="user"&&(T=P);if(!T){v==null||v.debug("No user message found to regenerate from");return}p(!0);const F=[];T.image&&F.push({role:"user",image:T.image,text:"",type:"text",createdAt:new Date}),F.push({role:"user",text:T.text,type:"text",createdAt:new Date}),v==null||v.debug("Regenerating message with config:",{actualParentId:M,sourceId:E.sourceId,custom:E.runConfig.custom}),await C.sendPacket({type:"request",payload:F})}}function sa(d,f,i,p){return()=>(i(!1),f(_=>{const v=_[_.length-1];if((v==null?void 0:v.role)==="assistant"&&!v.finishReason){const S=[..._];return S[S.length-1]={...v,finishReason:"stop",status:{type:"incomplete"}},p?p(S):S}return _}),d.forEach(_=>{_.status==="connected"&&_.sendPacket({type:"command",payload:{command:"set_initial_context",arguments:{cancel:!0}}}).catch(()=>{})}),Promise.resolve())}const oe=G.createContext(void 0);function oa(){const d=G.useContext(oe);if(!d)throw new Error("usePersonaRuntime must be used within a PersonaRuntimeProvider");return d}function nu(d){const f=G.useContext(oe);if(!f)throw new Error("usePersonaRuntimeProtocol must be used within a PersonaRuntimeProvider");const i=f.protocols.find(_=>_.getName()===d);if(!i)return null;const p=f.protocolsStatus.get(i.getName());return{...i,connect:i.connect.bind(i),disconnect:i.disconnect.bind(i),sendPacket:i.sendPacket.bind(i),setSession:i.setSession.bind(i),addStatusChangeListener:i.addStatusChangeListener.bind(i),addPacketListener:i.addPacketListener.bind(i),getName:i.getName.bind(i),getPriority:i.getPriority.bind(i),status:p||i.status}}function aa(){const d=G.useContext(oe);if(!d)throw new Error("usePersonaRuntimeEndpoint must be used within a PersonaRuntimeProvider");return ea(d.protocols)}function fa(){return nu("webrtc")}function ca(){const d=G.useContext(oe);if(!d)throw new Error("usePersonaRuntimeMessages must be used within a PersonaRuntimeProvider");return d.getMessages()}function la(){const d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let f="";for(let i=0;i<16;i++)f+=d.charAt(Math.floor(Math.random()*d.length));return f}function ha(d,f,i,p,_,v,S,E,C,M,R){return{threadId:d,threads:f.filter(P=>P.status==="regular").map(P=>({id:P.threadId,threadId:P.threadId,title:P.title||`Chat ${P.threadId}`,status:P.status})),archivedThreads:f.filter(P=>P.status==="archived").map(P=>({id:P.threadId,threadId:P.threadId,title:P.title||`Archived Chat ${P.threadId}`,status:P.status})),onSwitchToNewThread:()=>{const P=la();R==null||R.debug("Creating new thread:",P);const T={threadId:P,status:"regular",title:"New Chat"};p(F=>[T,...F]),i(P),v==null||v(P)},onSwitchToThread:P=>{R==null||R.debug("Switching to thread:",P),i(P),S==null||S(P)},onArchive:P=>{R==null||R.debug("Archiving thread:",P),p(T=>T.map(F=>F.threadId===P?{...F,status:"archived"}:F)),E==null||E(P)},onUnarchive:P=>{R==null||R.debug("Unarchiving thread:",P),p(T=>T.map(F=>F.threadId===P?{...F,status:"regular"}:F)),C==null||C(P)},onDelete:async P=>{if(R==null||R.debug("Deleting thread:",P),p(T=>T.filter(F=>F.threadId!==P)),d===P){const T=f.filter(F=>F.threadId!==P&&F.status==="regular");T.length>0&&i(T[0].threadId)}_.remove(P).then(()=>R==null?void 0:R.debug("Thread deleted from backend")).catch(T=>R==null?void 0:R.error("Failed to delete thread:",T)),M==null||M(P)}}}class tu{constructor(f){D(this,"endpoint");D(this,"apiKey");D(this,"pageSize");D(this,"logger");this.endpoint=f.endpoint.replace(/\/$/,""),this.apiKey=f.apiKey,this.pageSize=f.pageSize??200,this.logger=f.logger}buildHeaders(){const f={"Content-Type":"application/json"};return this.apiKey&&(f["x-persona-apikey"]=this.apiKey),f}async sync(f){var p,_;if(!f)return[];const i=`${this.endpoint}/sessions/${encodeURIComponent(String(f))}/messages?page=1&size=${this.pageSize}`;try{const v=await fetch(i,{method:"GET",headers:this.buildHeaders()});if(!v.ok)return(p=this.logger)==null||p.warn("PersonaSessionStorage: failed to fetch messages",v.status,await v.text()),[];const S=await v.json();return Array.isArray(S.items)?S.items.map(C=>({id:C.id??C.messageId??void 0,protocol:C.protocol,thought:C.thought,text:C.text??"",image:C.image,type:C.type??"text",role:C.role??"assistant",file:C.file,sources:C.sources,sessionId:C.sessionId??f,finishReason:C.finishReason,functionCalls:C.functionCalls,functionResponse:C.functionResponse,status:C.status,createdAt:C.createdAt?new Date(C.createdAt):void 0,metadata:C.metadata})):[]}catch(v){return(_=this.logger)==null||_.warn("PersonaSessionStorage: error fetching messages",v),[]}}async remove(f){var p,_;if(!f)return;const i=`${this.endpoint}/sessions/${encodeURIComponent(String(f))}`;try{const v=await fetch(i,{method:"DELETE",headers:this.buildHeaders()});if(!v.ok){const S=await v.text();throw(p=this.logger)==null||p.warn("PersonaSessionStorage: failed to delete session",v.status,S),new Error(`Failed to delete session: ${v.status}`)}return}catch(v){throw(_=this.logger)==null||_.warn("PersonaSessionStorage: error deleting session",v),v}}async clearAll(){return Promise.reject(new Error("PersonaAPIMessageStorage: clearAll not supported"))}async list(f,i){var v,S;const p=new URLSearchParams({page:"1",size:"100"});i&&p.set("userId",i),f&&p.set("agentId",f);const _=`${this.endpoint}/sessions?${p.toString()}`;try{const E=await fetch(_,{method:"GET",headers:this.buildHeaders()});if(!E.ok)return(v=this.logger)==null||v.warn("PersonaSessionStorage: failed to list sessions",E.status),[];const C=await E.json();return Array.isArray(C.items)?C.items.map(R=>({threadId:R.code||R.id,title:R.title||`Session ${R.code||R.id}`,status:R.status==="archived"?"archived":"regular"})):[]}catch(E){return(S=this.logger)==null||S.warn("PersonaSessionStorage: error listing sessions",E),[]}}}function da({dev:d=!1,baseUrl:f,protocols:i,logger:p,children:_,session:v="new",transformMessages:S,enableThreads:E=!1,sessionStorage:C,onThreadCreate:M,onThreadSwitch:R,onThreadRename:P,onThreadArchive:T,onThreadUnarchive:F,onThreadDelete:Z,...k}){const[wn,Rn]=G.useState(!1),[tt,an]=G.useState([]),[Et,Jn]=G.useState(new Map),vt=G.useRef(!1),An=G.useRef(!1),Nn=G.useMemo(()=>C||new tu({apiKey:k.apiKey,endpoint:f||"https://persona.applica.guru/api"}),[C,f,k.apiKey]),[Kt,Oe]=G.useState([]),[En,We]=G.useState(""),kt=G.useRef(typeof v=="string"?v:"new"),ae=G.useRef(!1);G.useEffect(()=>{!E||ae.current||(ae.current=!0,Nn.list(k.agentId,k.userId).then(V=>{(V==null?void 0:V.length)>0&&(Oe(V),We(V[0].threadId))}).catch(V=>p==null?void 0:p.error("Failed to load threads:",V)))},[E,Nn,k.agentId,k.userId,p]);const ln=G.useMemo(()=>Jo(i,{dev:d||!1,baseUrl:f,apiKey:k.apiKey,agentId:k.agentId,userId:k.userId,tools:k.tools,logger:p}),[i,d,f,k.apiKey,k.agentId,k.userId,k.tools,p]);G.useEffect(()=>{vt.current||(vt.current=!0,p==null||p.debug("Setting up protocols:",ln.map(V=>V.getName())),ln.forEach(V=>{V.setSession(kt.current),V.clearListeners(),V.addStatusChangeListener(hn=>{p==null||p.debug(`${V.getName()} status: ${hn}`),Jn(Zn=>{const Tt=new Map(Zn);return Tt.set(V.getName(),hn),Tt}),hn==="connected"&&!An.current&&(k.context&&V.sendPacket({type:"command",payload:{command:"set_initial_context",arguments:k.context}}).catch(()=>{}),k.tools&&Array.isArray(k.tools)&&V.sendPacket({type:"command",payload:{command:"set_local_tools",arguments:{tools:k.tools.map(Zn=>Zn.schema)}}}).catch(()=>{}))}),V.addPacketListener(Qo(V,an,Rn,ln,S)),V.autostart&&V.status==="disconnected"&&(p==null||p.debug(`Auto-connecting protocol: ${V.getName()}`),V.connect(kt.current).catch(()=>{}),Rn(!1))}))},[]),G.useEffect(()=>{if(!E||!En){an([]);return}if(An.current||En===kt.current)return;An.current=!0,p==null||p.info("Switching to thread:",En),(async()=>{try{const hn=ln.filter(yn=>yn.status==="connected");hn.length>0&&await Promise.allSettled(hn.map(yn=>yn.disconnect())),kt.current=En,await Promise.allSettled(ln.map(yn=>yn.setSession(En)));const Zn=await Nn.sync(En),Tt=$t(Zn);an(S?S(Tt):Tt),p==null||p.debug(`Loaded ${Zn.length} messages for thread ${En}`);const wt=ln.filter(yn=>yn.autostart);wt.length>0&&await Promise.allSettled(wt.map(yn=>yn.connect(En)))}catch(hn){p==null||p.error("Failed to switch thread:",hn),an([])}finally{An.current=!1}})()},[En,E,ln,Nn,S,p]);const Er=G.useCallback(ra(ln,an,Rn,S,p),[ln,S,p]),st=G.useCallback(ia(ln,tt,an,Rn,S,p),[ln,tt,S,p]),et=G.useCallback(ua(ln,tt,an,Rn,S,p),[ln,tt,S,p]),Tr=G.useCallback(sa(ln,an,Rn,S),[ln,S]),qt=G.useCallback(V=>{const hn=$t([...V]);an(S?S(hn):hn)},[S]),Un=G.useCallback(()=>tt,[tt]),De=G.useMemo(()=>{if(E)return ha(En,Kt,We,Oe,Nn,M,R,T,F,Z,p)},[E,En,Kt,Nn,M,R,T,F,Z,p]),Lr=Ee.useExternalStoreRuntime({isRunning:wn,messages:tt,convertMessage:$o,setMessages:qt,onNew:Er,onEdit:st,onCancel:Tr,onReload:et,adapters:{attachments:new Ee.CompositeAttachmentAdapter([new Ee.SimpleImageAttachmentAdapter]),...De?{threadList:De}:{}}});return Gn.jsx(oe.Provider,{value:{protocols:ln,protocolsStatus:Et,getMessages:Un},children:Gn.jsx(Ee.AssistantRuntimeProvider,{runtime:Lr,children:_})})}function pa({children:d,...f}){return Gn.jsx(da,{...f,children:d})}class ga{constructor(){D(this,"prefix","[Persona]")}log(f,...i){console.log(`${this.prefix} - ${f}`,...i)}info(f,...i){console.info(`${this.prefix} - ${f}`,...i)}warn(f,...i){console.warn(`${this.prefix} - ${f}`,...i)}error(f,...i){console.error(`${this.prefix} - ${f}`,...i)}debug(f,...i){console.debug(`${this.prefix} - ${f}`,...i)}}function Rt(d,f,i){return{type:d,description:f,...i}}function eu(d){const f=Object.entries(d.parameters).filter(([i,p])=>p.required).map(([i])=>i);return{type:"local",name:d.name,description:d.description,config:{timeout:d.timeout||60,parameters:{type:"object",title:d.title||`${d.name} parameters`,required:f,properties:d.parameters},output:{type:"object",title:`${d.name} output`,properties:d.output}}}}function Le(d){return{schema:eu(d),implementation:d.implementation}}function ru(d,f,i,p,_,v){const S={name:d,description:f,title:v==null?void 0:v.title,timeout:v==null?void 0:v.timeout,parameters:p,output:_,implementation:i};return Le(S)}const _a=ru("sum","Sum two numbers",function(f,i){return{result:f+i}},{a:Rt("number","First number to sum",{required:!0}),b:Rt("number","Second number to sum",{required:!0})},{result:Rt("number","Sum of two numbers")}),va=Le({name:"navigate_to",description:"Allow agent to redirect user to specific sub page like /foo or #/foo or anything like that",title:"Sum two numbers",timeout:60,parameters:{a:Rt("number","First number to sum"),b:Rt("number","Seconth number to sum")},output:{result:Rt("number","Sum of two numbers")},implementation:function(f,i){return{result:f+i}}});function wa(d){const f=[],i={};return d.forEach(p=>{const{schema:_,implementation:v}=Le(p);f.push(_),i[p.name]=v}),{schemas:f,implementations:i}}function ya(d,f){const{required:i,properties:p}=f.config.parameters;for(const _ of i)if(!(_ in d))throw new Error(`Missing required parameter: ${_}`);for(const[_,v]of Object.entries(d)){const S=p[_];if(S){if(S.type==="number"&&typeof v!="number")throw new Error(`Parameter ${_} should be a number`);if(S.type==="string"&&typeof v!="string")throw new Error(`Parameter ${_} should be a string`);if(S.type==="boolean"&&typeof v!="boolean")throw new Error(`Parameter ${_} should be a boolean`)}}return!0}return X.PersonaConsoleLogger=ga,X.PersonaProtocolBase=ue,X.PersonaRESTProtocol=Pr,X.PersonaRuntimeProvider=pa,X.PersonaSessionStorage=tu,X.PersonaTransactionProtocol=ji,X.PersonaWebRTCProtocol=Rr,X.PersonaWebSocketProtocol=Ir,X.createParameter=Rt,X.createTool=Le,X.createToolFromFunction=ru,X.createToolRegistry=wa,X.generateToolSchema=eu,X.navigateToToolExample=va,X.sumTool=_a,X.usePersonaRuntime=oa,X.usePersonaRuntimeEndpoint=aa,X.usePersonaRuntimeMessages=ca,X.usePersonaRuntimeProtocol=nu,X.usePersonaRuntimeWebRTCProtocol=fa,X.validateToolParameters=ya,Object.defineProperty(X,Symbol.toStringTag,{value:"Module"}),X}({},React,React,AssistantUI);
27
+ }`;var $=Wo(function(){return J(o,I+"return "+x).apply(i,a)});if($.source=x,ki($))throw $;return $}function hg(n){return Y(n).toLowerCase()}function dg(n){return Y(n).toUpperCase()}function pg(n,t,e){if(n=Y(n),n&&(e||t===i))return Ku(n);if(!n||!(t=On(t)))return n;var r=Qn(n),u=Qn(t),o=ku(r,u),a=qu(r,u)+1;return Pt(r,o,a).join("")}function gg(n,t,e){if(n=Y(n),n&&(e||t===i))return n.slice(0,Hu(n)+1);if(!n||!(t=On(t)))return n;var r=Qn(n),u=qu(r,Qn(t))+1;return Pt(r,0,u).join("")}function _g(n,t,e){if(n=Y(n),n&&(e||t===i))return n.replace(kr,"");if(!n||!(t=On(t)))return n;var r=Qn(n),u=ku(r,Qn(t));return Pt(r,u).join("")}function vg(n,t){var e=Oe,r=En;if(rn(t)){var u="separator"in t?t.separator:u;e="length"in t?B(t.length):e,r="omission"in t?On(t.omission):r}n=Y(n);var o=n.length;if(Jt(n)){var a=Qn(n);o=a.length}if(e>=o)return n;var c=e-Zt(r);if(c<1)return r;var h=a?Pt(a,0,c).join(""):n.slice(0,c);if(u===i)return h+r;if(a&&(c+=h.length-c),qi(u)){if(n.slice(c).search(u)){var y,m=h;for(u.global||(u=ui(u.source,Y(fu.exec(u))+"g")),u.lastIndex=0;y=u.exec(m);)var x=y.index;h=h.slice(0,x===i?c:x)}}else if(n.indexOf(On(u),c)!=c){var A=h.lastIndexOf(u);A>-1&&(h=h.slice(0,A))}return h+r}function wg(n){return n=Y(n),n&&Ra.test(n)?n.replace(su,Jf):n}var yg=te(function(n,t,e){return n+(e?" ":"")+t.toUpperCase()}),Gi=Ws("toUpperCase");function Oo(n,t,e){return n=Y(n),t=e?i:t,t===i?kf(n)?Xf(n):Wf(n):n.match(t)||[]}var Wo=K(function(n,t){try{return Tn(n,i,t)}catch(e){return ki(e)?e:new N(e)}}),mg=ht(function(n,t){return Mn(t,function(e){e=ut(e),ct(n,e,$i(n[e],n))}),n});function xg(n){var t=n==null?0:n.length,e=L();return n=t?en(n,function(r){if(typeof r[1]!="function")throw new $n(S);return[e(r[0]),r[1]]}):[],K(function(r){for(var u=-1;++u<t;){var o=n[u];if(Tn(o[0],this,r))return Tn(o[1],this,r)}})}function Sg(n){return Jc(kn(n,P))}function Ji(n){return function(){return n}}function Ag(n,t){return n==null||n!==n?t:n}var bg=Fs(),Cg=Fs(!0);function In(n){return n}function Zi(n){return ls(typeof n=="function"?n:kn(n,P))}function Pg(n){return ds(kn(n,P))}function Ig(n,t){return ps(n,kn(t,P))}var Rg=K(function(n,t){return function(e){return Se(e,n,t)}}),Eg=K(function(n,t){return function(e){return Se(n,e,t)}});function Yi(n,t,e){var r=dn(t),u=sr(t,r);e==null&&!(rn(t)&&(u.length||!r.length))&&(e=t,t=n,n=this,u=sr(t,dn(t)));var o=!(rn(e)&&"chain"in e)||!!e.chain,a=pt(n);return Mn(u,function(c){var h=t[c];n[c]=h,a&&(n.prototype[c]=function(){var y=this.__chain__;if(o||y){var m=n(this.__wrapped__),x=m.__actions__=bn(this.__actions__);return x.push({func:h,args:arguments,thisArg:n}),m.__chain__=y,m}return h.apply(n,mt([this.value()],arguments))})}),n}function Tg(){return pn._===this&&(pn._=ec),this}function Xi(){}function Lg(n){return n=B(n),K(function(t){return gs(t,n)})}var Og=Ii(en),Wg=Ii(Nu),Dg=Ii(Vr);function Do(n){return Di(n)?jr(ut(n)):cl(n)}function Fg(n){return function(t){return n==null?i:Nt(n,t)}}var Ng=Us(),Ug=Us(!0);function Qi(){return[]}function Vi(){return!1}function Bg(){return{}}function Mg(){return""}function $g(){return!0}function Kg(n,t){if(n=B(n),n<1||n>et)return[];var e=Un,r=_n(n,Un);t=L(t),n-=Un;for(var u=ei(r,t);++e<n;)t(e);return u}function kg(n){return U(n)?en(n,ut):Wn(n)?[n]:bn(js(Y(n)))}function qg(n){var t=++nc;return Y(n)+t}var zg=hr(function(n,t){return n+t},0),Hg=Ri("ceil"),Gg=hr(function(n,t){return n/t},1),Jg=Ri("floor");function Zg(n){return n&&n.length?ur(n,In,di):i}function Yg(n,t){return n&&n.length?ur(n,L(t,2),di):i}function Xg(n){return Mu(n,In)}function Qg(n,t){return Mu(n,L(t,2))}function Vg(n){return n&&n.length?ur(n,In,vi):i}function jg(n,t){return n&&n.length?ur(n,L(t,2),vi):i}var n_=hr(function(n,t){return n*t},1),t_=Ri("round"),e_=hr(function(n,t){return n-t},0);function r_(n){return n&&n.length?ti(n,In):0}function i_(n,t){return n&&n.length?ti(n,L(t,2)):0}return s.after=Pd,s.ary=co,s.assign=dp,s.assignIn=Co,s.assignInWith=Cr,s.assignWith=pp,s.at=gp,s.before=lo,s.bind=$i,s.bindAll=mg,s.bindKey=ho,s.castArray=Bd,s.chain=oo,s.chunk=Jl,s.compact=Zl,s.concat=Yl,s.cond=xg,s.conforms=Sg,s.constant=Ji,s.countBy=rd,s.create=_p,s.curry=po,s.curryRight=go,s.debounce=_o,s.defaults=vp,s.defaultsDeep=wp,s.defer=Id,s.delay=Rd,s.difference=Xl,s.differenceBy=Ql,s.differenceWith=Vl,s.drop=jl,s.dropRight=nh,s.dropRightWhile=th,s.dropWhile=eh,s.fill=rh,s.filter=ud,s.flatMap=ad,s.flatMapDeep=fd,s.flatMapDepth=cd,s.flatten=ro,s.flattenDeep=ih,s.flattenDepth=uh,s.flip=Ed,s.flow=bg,s.flowRight=Cg,s.fromPairs=sh,s.functions=Cp,s.functionsIn=Pp,s.groupBy=ld,s.initial=ah,s.intersection=fh,s.intersectionBy=ch,s.intersectionWith=lh,s.invert=Rp,s.invertBy=Ep,s.invokeMap=dd,s.iteratee=Zi,s.keyBy=pd,s.keys=dn,s.keysIn=Pn,s.map=yr,s.mapKeys=Lp,s.mapValues=Op,s.matches=Pg,s.matchesProperty=Ig,s.memoize=xr,s.merge=Wp,s.mergeWith=Po,s.method=Rg,s.methodOf=Eg,s.mixin=Yi,s.negate=Sr,s.nthArg=Lg,s.omit=Dp,s.omitBy=Fp,s.once=Td,s.orderBy=gd,s.over=Og,s.overArgs=Ld,s.overEvery=Wg,s.overSome=Dg,s.partial=Ki,s.partialRight=vo,s.partition=_d,s.pick=Np,s.pickBy=Io,s.property=Do,s.propertyOf=Fg,s.pull=gh,s.pullAll=uo,s.pullAllBy=_h,s.pullAllWith=vh,s.pullAt=wh,s.range=Ng,s.rangeRight=Ug,s.rearg=Od,s.reject=yd,s.remove=yh,s.rest=Wd,s.reverse=Bi,s.sampleSize=xd,s.set=Bp,s.setWith=Mp,s.shuffle=Sd,s.slice=mh,s.sortBy=Cd,s.sortedUniq=Ih,s.sortedUniqBy=Rh,s.split=ag,s.spread=Dd,s.tail=Eh,s.take=Th,s.takeRight=Lh,s.takeRightWhile=Oh,s.takeWhile=Wh,s.tap=Zh,s.throttle=Fd,s.thru=wr,s.toArray=So,s.toPairs=Ro,s.toPairsIn=Eo,s.toPath=kg,s.toPlainObject=bo,s.transform=$p,s.unary=Nd,s.union=Dh,s.unionBy=Fh,s.unionWith=Nh,s.uniq=Uh,s.uniqBy=Bh,s.uniqWith=Mh,s.unset=Kp,s.unzip=Mi,s.unzipWith=so,s.update=kp,s.updateWith=qp,s.values=ie,s.valuesIn=zp,s.without=$h,s.words=Oo,s.wrap=Ud,s.xor=Kh,s.xorBy=kh,s.xorWith=qh,s.zip=zh,s.zipObject=Hh,s.zipObjectDeep=Gh,s.zipWith=Jh,s.entries=Ro,s.entriesIn=Eo,s.extend=Co,s.extendWith=Cr,Yi(s,s),s.add=zg,s.attempt=Wo,s.camelCase=Zp,s.capitalize=To,s.ceil=Hg,s.clamp=Hp,s.clone=Md,s.cloneDeep=Kd,s.cloneDeepWith=kd,s.cloneWith=$d,s.conformsTo=qd,s.deburr=Lo,s.defaultTo=Ag,s.divide=Gg,s.endsWith=Yp,s.eq=jn,s.escape=Xp,s.escapeRegExp=Qp,s.every=id,s.find=sd,s.findIndex=to,s.findKey=yp,s.findLast=od,s.findLastIndex=eo,s.findLastKey=mp,s.floor=Jg,s.forEach=ao,s.forEachRight=fo,s.forIn=xp,s.forInRight=Sp,s.forOwn=Ap,s.forOwnRight=bp,s.get=zi,s.gt=zd,s.gte=Hd,s.has=Ip,s.hasIn=Hi,s.head=io,s.identity=In,s.includes=hd,s.indexOf=oh,s.inRange=Gp,s.invoke=Tp,s.isArguments=Mt,s.isArray=U,s.isArrayBuffer=Gd,s.isArrayLike=Cn,s.isArrayLikeObject=sn,s.isBoolean=Jd,s.isBuffer=It,s.isDate=Zd,s.isElement=Yd,s.isEmpty=Xd,s.isEqual=Qd,s.isEqualWith=Vd,s.isError=ki,s.isFinite=jd,s.isFunction=pt,s.isInteger=wo,s.isLength=Ar,s.isMap=yo,s.isMatch=np,s.isMatchWith=tp,s.isNaN=ep,s.isNative=rp,s.isNil=up,s.isNull=ip,s.isNumber=mo,s.isObject=rn,s.isObjectLike=un,s.isPlainObject=Re,s.isRegExp=qi,s.isSafeInteger=sp,s.isSet=xo,s.isString=br,s.isSymbol=Wn,s.isTypedArray=re,s.isUndefined=op,s.isWeakMap=ap,s.isWeakSet=fp,s.join=hh,s.kebabCase=Vp,s.last=zn,s.lastIndexOf=dh,s.lowerCase=jp,s.lowerFirst=ng,s.lt=cp,s.lte=lp,s.max=Zg,s.maxBy=Yg,s.mean=Xg,s.meanBy=Qg,s.min=Vg,s.minBy=jg,s.stubArray=Qi,s.stubFalse=Vi,s.stubObject=Bg,s.stubString=Mg,s.stubTrue=$g,s.multiply=n_,s.nth=ph,s.noConflict=Tg,s.noop=Xi,s.now=mr,s.pad=tg,s.padEnd=eg,s.padStart=rg,s.parseInt=ig,s.random=Jp,s.reduce=vd,s.reduceRight=wd,s.repeat=ug,s.replace=sg,s.result=Up,s.round=t_,s.runInContext=l,s.sample=md,s.size=Ad,s.snakeCase=og,s.some=bd,s.sortedIndex=xh,s.sortedIndexBy=Sh,s.sortedIndexOf=Ah,s.sortedLastIndex=bh,s.sortedLastIndexBy=Ch,s.sortedLastIndexOf=Ph,s.startCase=fg,s.startsWith=cg,s.subtract=e_,s.sum=r_,s.sumBy=i_,s.template=lg,s.times=Kg,s.toFinite=gt,s.toInteger=B,s.toLength=Ao,s.toLower=hg,s.toNumber=Hn,s.toSafeInteger=hp,s.toString=Y,s.toUpper=dg,s.trim=pg,s.trimEnd=gg,s.trimStart=_g,s.truncate=vg,s.unescape=wg,s.uniqueId=qg,s.upperCase=yg,s.upperFirst=Gi,s.each=ao,s.eachRight=fo,s.first=io,Yi(s,function(){var n={};return rt(s,function(t,e){Q.call(s.prototype,e)||(n[e]=t)}),n}(),{chain:!1}),s.VERSION=p,Mn(["bind","bindKey","curry","curryRight","partial","partialRight"],function(n){s[n].placeholder=s}),Mn(["drop","take"],function(n,t){z.prototype[n]=function(e){e=e===i?1:cn(B(e),0);var r=this.__filtered__&&!t?new z(this):this.clone();return r.__filtered__?r.__takeCount__=_n(e,r.__takeCount__):r.__views__.push({size:_n(e,Un),type:n+(r.__dir__<0?"Right":"")}),r},z.prototype[n+"Right"]=function(e){return this.reverse()[n](e).reverse()}}),Mn(["filter","map","takeWhile"],function(n,t){var e=t+1,r=e==ae||e==Er;z.prototype[n]=function(u){var o=this.clone();return o.__iteratees__.push({iteratee:L(u,3),type:e}),o.__filtered__=o.__filtered__||r,o}}),Mn(["head","last"],function(n,t){var e="take"+(t?"Right":"");z.prototype[n]=function(){return this[e](1).value()[0]}}),Mn(["initial","tail"],function(n,t){var e="drop"+(t?"":"Right");z.prototype[n]=function(){return this.__filtered__?new z(this):this[e](1)}}),z.prototype.compact=function(){return this.filter(In)},z.prototype.find=function(n){return this.filter(n).head()},z.prototype.findLast=function(n){return this.reverse().find(n)},z.prototype.invokeMap=K(function(n,t){return typeof n=="function"?new z(this):this.map(function(e){return Se(e,n,t)})}),z.prototype.reject=function(n){return this.filter(Sr(L(n)))},z.prototype.slice=function(n,t){n=B(n);var e=this;return e.__filtered__&&(n>0||t<0)?new z(e):(n<0?e=e.takeRight(-n):n&&(e=e.drop(n)),t!==i&&(t=B(t),e=t<0?e.dropRight(-t):e.take(t-n)),e)},z.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},z.prototype.toArray=function(){return this.take(Un)},rt(z.prototype,function(n,t){var e=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),u=s[r?"take"+(t=="last"?"Right":""):t],o=r||/^find/.test(t);u&&(s.prototype[t]=function(){var a=this.__wrapped__,c=r?[1]:arguments,h=a instanceof z,y=c[0],m=h||U(a),x=function(q){var H=u.apply(s,mt([q],c));return r&&A?H[0]:H};m&&e&&typeof y=="function"&&y.length!=1&&(h=m=!1);var A=this.__chain__,I=!!this.__actions__.length,O=o&&!A,$=h&&!I;if(!o&&m){a=$?a:new z(this);var W=n.apply(a,c);return W.__actions__.push({func:wr,args:[x],thisArg:i}),new Kn(W,A)}return O&&$?n.apply(this,c):(W=this.thru(x),O?r?W.value()[0]:W.value():W)})}),Mn(["pop","push","shift","sort","splice","unshift"],function(n){var t=ze[n],e=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",r=/^(?:pop|shift)$/.test(n);s.prototype[n]=function(){var u=arguments;if(r&&!this.__chain__){var o=this.value();return t.apply(U(o)?o:[],u)}return this[e](function(a){return t.apply(U(a)?a:[],u)})}}),rt(z.prototype,function(n,t){var e=s[t];if(e){var r=e.name+"";Q.call(Vt,r)||(Vt[r]=[]),Vt[r].push({name:t,func:e})}}),Vt[lr(i,Rn).name]=[{name:"wrapper",func:i}],z.prototype.clone=wc,z.prototype.reverse=yc,z.prototype.value=mc,s.prototype.at=Yh,s.prototype.chain=Xh,s.prototype.commit=Qh,s.prototype.next=Vh,s.prototype.plant=nd,s.prototype.reverse=td,s.prototype.toJSON=s.prototype.valueOf=s.prototype.value=ed,s.prototype.first=s.prototype.head,ge&&(s.prototype[ge]=jh),s},Yt=Qf();Lt?((Lt.exports=Yt)._=Yt,Zr._=Yt):pn._=Yt}).call(se)}(Te,Te.exports);var qo=Te.exports;const zo=ko(qo);class Ho{constructor(f){D(this,"config");this.config=f}async complete(f,i){var p;await this.persist(f,{...i,success:!0}),(p=this.config.logger)==null||p.debug("Transaction completed:",f)}async fail(f,i){var p;await this.persist(f,{...i,success:!1}),(p=this.config.logger)==null||p.debug("Transaction failed:",{...f,...i})}async persist(f,i){await fetch(`${this.config.apiUrl}/transactions/${f.id}`,{body:JSON.stringify(i),method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","x-persona-apikey":this.config.apiKey}})}}class Go{constructor(f,i){D(this,"transaction");D(this,"manager");this.transaction=f,this.manager=i}getFunctionCall(){return this.transaction.functionCall}async invoke(f,i){var E;const p=this.transaction.functionCall;if(!p){await this.fail("No function call found");return}const _=p.name,v=p.args,S=f[_];if(!S){await this.fail(`Tool ${_} not found`);return}try{const C=zo.get(i,"schema.config.parameters.properties",{}),R=(C&&Object.keys(C).length>0?Object.keys(C):((E=S.toString().replace(/\n/g," ").match(/^[^(]*\(([^)]*)\)/))==null?void 0:E[1].split(",").map(T=>T.trim()).filter(Boolean))||[]).map(T=>v[T]),P=await S.apply(null,R);await this.complete(P)}catch(C){await this.fail(`Error executing tool ${_}: ${C}`)}}async complete(f){await this.manager.complete(this.transaction,{success:!0,output:f,error:null})}async fail(f){await this.manager.fail(this.transaction,{success:!1,output:null,error:f})}}class ji extends ue{constructor(i){super();D(this,"status");D(this,"autostart");D(this,"session");D(this,"config");D(this,"notify",!0);D(this,"_tools");D(this,"_toolSchema",{});if(this.config=i,this.status="disconnected",this.autostart=!0,Array.isArray(i.tools)){this._tools={};for(const p of i.tools)p.schema&&p.implementation&&(this._tools[p.schema.name]=p.implementation,this._toolSchema[p.schema.name]=p)}else this._tools=i.tools}getName(){return"transaction"}getPriority(){return 0}getToolInstance(i){return this._toolSchema[i]}async connect(i){return this.setStatus("connected"),i}async disconnect(){this.setStatus("disconnected"),this.session=null}async syncSession(i){this.session=i}async sendPacket(i){}onTransaction(i){const p=new Ho(this.config),_=new Go(i,p);if(this.config.onTransaction)this.config.onTransaction(_);else{const v=i.functionCall?this.getToolInstance(i.functionCall.name):void 0;_.invoke(this._tools,v)}}getTools(){return this._tools}}function Jo(d,f){if(Array.isArray(d))return d;if(typeof d=="object"&&d!==null){const i=f.dev?"localhost:8000":f.baseUrl||"persona.applica.guru/api",p=f.dev?"http":"https",_=f.dev?"ws":"wss";let v=Object.keys(d).map(S=>{switch(S){case"rest":return Zo(d[S],{baseEndpointProtocol:p,baseEndpoint:i,apiKey:f.apiKey,agentId:f.agentId,userId:f.userId,logger:f.logger});case"webrtc":return Yo(d[S],{baseWebSocketProtocol:_,baseEndpoint:i,apiKey:f.apiKey,agentId:f.agentId,userId:f.userId,logger:f.logger});case"websocket":return Xo(d[S],{baseWebSocketProtocol:_,baseEndpoint:i,apiKey:f.apiKey,agentId:f.agentId,userId:f.userId,logger:f.logger});default:throw new Error(`Unknown protocol: ${S}`)}}).filter(S=>S!==null);return f.tools&&v.push(new ji({apiUrl:`${p}://${i}`,apiKey:f.apiKey,agentId:f.agentId,tools:f.tools,logger:f.logger})),v}throw new Error("Invalid protocols configuration")}function Zo(d,f){return d===!0?new Pr({apiUrl:`${f.baseEndpointProtocol}://${f.baseEndpoint}`,apiKey:f.apiKey,agentId:f.agentId,userId:f.userId,logger:f.logger}):typeof d=="object"&&d!==null?new Pr(d):null}function Yo(d,f){return d===!0?new Rr({webrtcUrl:`${f.baseWebSocketProtocol}://${f.baseEndpoint}/webrtc`,apiKey:f.apiKey,agentId:f.agentId,userId:f.userId,logger:f.logger}):typeof d=="object"&&d!==null?new Rr(d):null}function Xo(d,f){return d===!0?new Ir({webSocketUrl:`${f.baseWebSocketProtocol}://${f.baseEndpoint}/websocket`,apiKey:f.apiKey,agentId:f.agentId,userId:f.userId,logger:f.logger}):typeof d=="object"&&d!==null?new Ir(d):null}function Qo(d,f,i,p,_){return v=>{v.type==="message"?Vo(v.payload,d,f,i,_):v.type==="reasoning"?jo(v.payload,d,f,_):v.type==="transaction"&&na(v.payload,d,p)}}function Vo(d,f,i,p,_){d.createdAt||(d.createdAt=new Date),(d==null?void 0:d.finishReason)==="stop"&&!(d!=null&&d.functionResponse)&&!(d!=null&&d.thought)&&p(!1),d.thought&&(d.type="reasoning"),d.protocol=f.getName(),i(v=>{const S=$t([...v,d]);return _?_(S):S})}function jo(d,f,i,p){const _={type:"reasoning",text:d.thought,role:"assistant",finishReason:"stop",protocol:f.getName(),createdAt:new Date};i(v=>{const S=$t([...v,_]);return p?p(S):S})}function na(d,f,i){i.filter(p=>p!==f).forEach(p=>p.onTransaction(d))}function ta(d){return new Promise((f,i)=>{const p=new FileReader;p.readAsDataURL(d),p.onload=()=>{const v=p.result.split(";base64,")[1];f(v)},p.onerror=_=>{i(_)}})}function ea(d){const f={rest:i=>i.config.apiUrl,webrtc:i=>i.config.webrtcUrl.replace("/webrtc","").replace("ws://","http://").replace("wss://","https://"),websocket:i=>i.config.webSocketUrl.replace("/websocket","").replace("ws://","http://").replace("wss://","https://")};for(const i of d){const p=f[i.getName()];if(p)return p(i)}return null}function ra(d,f,i,p,_){return async v=>{var P;if(((P=v.content[0])==null?void 0:P.type)!=="text")throw new Error("Only text messages are supported");if(!d.some(T=>T.getName()!=="transaction"&&T.status==="connected")){f(T=>{const F={role:"assistant",type:"text",text:"No protocol is connected.",createdAt:new Date,finishReason:"stop"},Z=[...T,F];return p?p(Z):Z});return}const C={role:"user",type:"text",text:v.content[0].text,createdAt:new Date};f(T=>{const F=$t([...T,C]);return p?p(F):F}),i(!0);const M=d.sort((T,F)=>F.getPriority()-T.getPriority()).find(T=>T.status==="connected"),R=[];if(v.attachments)for(const T of v.attachments)T.contentType.startsWith("image/")&&T.file&&R.push({role:"user",image:{contentType:T.contentType,content:await ta(T.file)},text:"",type:"text",createdAt:new Date});v.content&&R.push({role:"user",text:v.content[0].text,type:"text",createdAt:new Date}),_==null||_.debug("Sending message:",R),await(M==null?void 0:M.sendPacket({type:"request",payload:R}))}}function ia(d,f,i,p,_,v){return async S=>{var Z;if(((Z=S.content[0])==null?void 0:Z.type)!=="text")throw new Error("Only text messages are supported");const E=d.sort((k,wn)=>wn.getPriority()-k.getPriority()).find(k=>k.status==="connected");if(!E){v==null||v.debug("No protocol available for edit");return}const C=S.parentId;if(!C){v==null||v.debug("No parent ID provided for edit");return}const M=f.findIndex(k=>k.id===C);if(M===-1){v==null||v.debug("Parent message not found:",C);return}const R=f.slice(0,M+1),P={role:"user",text:S.content[0].text,type:"text",createdAt:new Date},T=$t([...R,P]);i(_?_(T):T),p(!0);const F=[{role:"user",text:S.content[0].text,type:"text",createdAt:new Date}];v==null||v.debug("Sending edited message:",F),await E.sendPacket({type:"request",payload:F})}}function ua(d,f,i,p,_,v){return async(S,E)=>{const C=d.sort((Z,k)=>k.getPriority()-Z.getPriority()).find(Z=>Z.status==="connected");if(!C){v==null||v.debug("No protocol available for reload");return}const M=E.parentId??S;if(!M){v==null||v.debug("No parent ID provided for reload");return}const R=f.findIndex(Z=>Z.id===M);if(R===-1){v==null||v.debug("Parent message not found:",M);return}const P=f[R];i(Z=>{const k=Z.slice(0,R+1);return _?_(k):k});let T;if(P.role==="assistant"||P.role==="function"){for(let Z=R-1;Z>=0;Z--)if(f[Z].role==="user"){T=f[Z];break}}else P.role==="user"&&(T=P);if(!T){v==null||v.debug("No user message found to regenerate from");return}p(!0);const F=[];T.image&&F.push({role:"user",image:T.image,text:"",type:"text",createdAt:new Date}),F.push({role:"user",text:T.text,type:"text",createdAt:new Date}),v==null||v.debug("Regenerating message with config:",{actualParentId:M,sourceId:E.sourceId,custom:E.runConfig.custom}),await C.sendPacket({type:"request",payload:F})}}function sa(d,f,i,p){return()=>(i(!1),f(_=>{const v=_[_.length-1];if((v==null?void 0:v.role)==="assistant"&&!v.finishReason){const S=[..._];return S[S.length-1]={...v,finishReason:"stop",status:{type:"incomplete"}},p?p(S):S}return _}),d.forEach(_=>{_.status==="connected"&&_.sendPacket({type:"command",payload:{command:"set_initial_context",arguments:{cancel:!0}}}).catch(()=>{})}),Promise.resolve())}const oe=G.createContext(void 0);function oa(){const d=G.useContext(oe);if(!d)throw new Error("usePersonaRuntime must be used within a PersonaRuntimeProvider");return d}function nu(d){const f=G.useContext(oe);if(!f)throw new Error("usePersonaRuntimeProtocol must be used within a PersonaRuntimeProvider");const i=f.protocols.find(_=>_.getName()===d);if(!i)return null;const p=f.protocolsStatus.get(i.getName());return{...i,connect:i.connect.bind(i),disconnect:i.disconnect.bind(i),sendPacket:i.sendPacket.bind(i),setSession:i.setSession.bind(i),addStatusChangeListener:i.addStatusChangeListener.bind(i),addPacketListener:i.addPacketListener.bind(i),getName:i.getName.bind(i),getPriority:i.getPriority.bind(i),status:p||i.status}}function aa(){const d=G.useContext(oe);if(!d)throw new Error("usePersonaRuntimeEndpoint must be used within a PersonaRuntimeProvider");return ea(d.protocols)}function fa(){return nu("webrtc")}function ca(){const d=G.useContext(oe);if(!d)throw new Error("usePersonaRuntimeMessages must be used within a PersonaRuntimeProvider");return d.getMessages()}function la(){const d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let f="";for(let i=0;i<16;i++)f+=d.charAt(Math.floor(Math.random()*d.length));return f}function ha(d,f,i,p,_,v,S,E,C,M,R){return{threadId:d,threads:f.filter(P=>P.status==="regular").map(P=>({id:P.threadId,threadId:P.threadId,title:P.title||`Chat ${P.threadId}`,status:P.status})),archivedThreads:f.filter(P=>P.status==="archived").map(P=>({id:P.threadId,threadId:P.threadId,title:P.title||`Archived Chat ${P.threadId}`,status:P.status})),onSwitchToNewThread:()=>{const P=la();R==null||R.debug("Creating new thread:",P);const T={threadId:P,status:"regular",title:"New Chat"};p(F=>[T,...F]),i(P),v==null||v(P)},onSwitchToThread:P=>{R==null||R.debug("Switching to thread:",P),i(P),S==null||S(P)},onArchive:P=>{R==null||R.debug("Archiving thread:",P),p(T=>T.map(F=>F.threadId===P?{...F,status:"archived"}:F)),E==null||E(P)},onUnarchive:P=>{R==null||R.debug("Unarchiving thread:",P),p(T=>T.map(F=>F.threadId===P?{...F,status:"regular"}:F)),C==null||C(P)},onDelete:async P=>{if(R==null||R.debug("Deleting thread:",P),p(T=>T.filter(F=>F.threadId!==P)),d===P){const T=f.filter(F=>F.threadId!==P&&F.status==="regular");T.length>0&&i(T[0].threadId)}_.remove(P).then(()=>R==null?void 0:R.debug("Thread deleted from backend")).catch(T=>R==null?void 0:R.error("Failed to delete thread:",T)),M==null||M(P)}}}class tu{constructor(f){D(this,"endpoint");D(this,"apiKey");D(this,"pageSize");D(this,"logger");this.endpoint=f.endpoint.replace(/\/$/,""),this.apiKey=f.apiKey,this.pageSize=f.pageSize??200,this.logger=f.logger}buildHeaders(){const f={"Content-Type":"application/json"};return this.apiKey&&(f["x-persona-apikey"]=this.apiKey),f}async sync(f){var p,_;if(!f)return[];const i=`${this.endpoint}/sessions/${encodeURIComponent(String(f))}/messages?page=1&size=${this.pageSize}`;try{const v=await fetch(i,{method:"GET",headers:this.buildHeaders()});if(!v.ok)return(p=this.logger)==null||p.warn("PersonaSessionStorage: failed to fetch messages",v.status,await v.text()),[];const S=await v.json();return Array.isArray(S.items)?S.items.map(C=>({id:C.id??C.messageId??void 0,protocol:C.protocol,thought:C.thought,text:C.text??"",image:C.image,type:C.type??"text",role:C.role??"assistant",file:C.file,sources:C.sources,sessionId:C.sessionId??f,finishReason:C.finishReason,functionCalls:C.functionCalls,functionResponse:C.functionResponse,status:C.status,createdAt:C.createdAt?new Date(C.createdAt):void 0,metadata:C.metadata})):[]}catch(v){return(_=this.logger)==null||_.warn("PersonaSessionStorage: error fetching messages",v),[]}}async remove(f){var p,_;if(!f)return;const i=`${this.endpoint}/sessions/${encodeURIComponent(String(f))}`;try{const v=await fetch(i,{method:"DELETE",headers:this.buildHeaders()});if(!v.ok){const S=await v.text();throw(p=this.logger)==null||p.warn("PersonaSessionStorage: failed to delete session",v.status,S),new Error(`Failed to delete session: ${v.status}`)}return}catch(v){throw(_=this.logger)==null||_.warn("PersonaSessionStorage: error deleting session",v),v}}async clearAll(){return Promise.reject(new Error("PersonaAPIMessageStorage: clearAll not supported"))}async list(f,i){var v,S;const p=new URLSearchParams({page:"1",size:"100"});i&&p.set("userId",i),f&&p.set("agentId",f);const _=`${this.endpoint}/sessions?${p.toString()}`;try{const E=await fetch(_,{method:"GET",headers:this.buildHeaders()});if(!E.ok)return(v=this.logger)==null||v.warn("PersonaSessionStorage: failed to list sessions",E.status),[];const C=await E.json();return Array.isArray(C.items)?C.items.map(R=>({threadId:R.code||R.id,title:R.title||`Session ${R.code||R.id}`,status:R.status==="archived"?"archived":"regular"})):[]}catch(E){return(S=this.logger)==null||S.warn("PersonaSessionStorage: error listing sessions",E),[]}}}function da({dev:d=!1,baseUrl:f,protocols:i,logger:p,children:_,session:v="new",transformMessages:S,threads:E=!1,sessionStorage:C,onThreadCreate:M,onThreadSwitch:R,onThreadRename:P,onThreadArchive:T,onThreadUnarchive:F,onThreadDelete:Z,...k}){const[wn,Rn]=G.useState(!1),[tt,an]=G.useState([]),[Et,Jn]=G.useState(new Map),vt=G.useRef(!1),An=G.useRef(!1),Nn=G.useMemo(()=>C||new tu({apiKey:k.apiKey,endpoint:f||"https://persona.applica.guru/api"}),[C,f,k.apiKey]),[Kt,Oe]=G.useState([]),[En,We]=G.useState(""),kt=G.useRef(typeof v=="string"?v:"new"),ae=G.useRef(!1);G.useEffect(()=>{!E||ae.current||(ae.current=!0,Nn.list(k.agentId,k.userId).then(V=>{(V==null?void 0:V.length)>0&&(Oe(V),We(V[0].threadId))}).catch(V=>p==null?void 0:p.error("Failed to load threads:",V)))},[E,Nn,k.agentId,k.userId,p]);const ln=G.useMemo(()=>Jo(i,{dev:d||!1,baseUrl:f,apiKey:k.apiKey,agentId:k.agentId,userId:k.userId,tools:k.tools,logger:p}),[i,d,f,k.apiKey,k.agentId,k.userId,k.tools,p]);G.useEffect(()=>{vt.current||(vt.current=!0,p==null||p.debug("Setting up protocols:",ln.map(V=>V.getName())),ln.forEach(V=>{V.setSession(kt.current),V.clearListeners(),V.addStatusChangeListener(hn=>{p==null||p.debug(`${V.getName()} status: ${hn}`),Jn(Zn=>{const Tt=new Map(Zn);return Tt.set(V.getName(),hn),Tt}),hn==="connected"&&!An.current&&(k.context&&V.sendPacket({type:"command",payload:{command:"set_initial_context",arguments:k.context}}).catch(()=>{}),k.tools&&Array.isArray(k.tools)&&V.sendPacket({type:"command",payload:{command:"set_local_tools",arguments:{tools:k.tools.map(Zn=>Zn.schema)}}}).catch(()=>{}))}),V.addPacketListener(Qo(V,an,Rn,ln,S)),V.autostart&&V.status==="disconnected"&&(p==null||p.debug(`Auto-connecting protocol: ${V.getName()}`),V.connect(kt.current).catch(()=>{}),Rn(!1))}))},[]),G.useEffect(()=>{if(!E||!En){an([]);return}if(An.current||En===kt.current)return;An.current=!0,p==null||p.info("Switching to thread:",En),(async()=>{try{const hn=ln.filter(yn=>yn.status==="connected");hn.length>0&&await Promise.allSettled(hn.map(yn=>yn.disconnect())),kt.current=En,await Promise.allSettled(ln.map(yn=>yn.setSession(En)));const Zn=await Nn.sync(En),Tt=$t(Zn);an(S?S(Tt):Tt),p==null||p.debug(`Loaded ${Zn.length} messages for thread ${En}`);const wt=ln.filter(yn=>yn.autostart);wt.length>0&&await Promise.allSettled(wt.map(yn=>yn.connect(En)))}catch(hn){p==null||p.error("Failed to switch thread:",hn),an([])}finally{An.current=!1}})()},[En,E,ln,Nn,S,p]);const Er=G.useCallback(ra(ln,an,Rn,S,p),[ln,S,p]),st=G.useCallback(ia(ln,tt,an,Rn,S,p),[ln,tt,S,p]),et=G.useCallback(ua(ln,tt,an,Rn,S,p),[ln,tt,S,p]),Tr=G.useCallback(sa(ln,an,Rn,S),[ln,S]),qt=G.useCallback(V=>{const hn=$t([...V]);an(S?S(hn):hn)},[S]),Un=G.useCallback(()=>tt,[tt]),De=G.useMemo(()=>{if(E)return ha(En,Kt,We,Oe,Nn,M,R,T,F,Z,p)},[E,En,Kt,Nn,M,R,T,F,Z,p]),Lr=Ee.useExternalStoreRuntime({isRunning:wn,messages:tt,convertMessage:$o,setMessages:qt,onNew:Er,onEdit:st,onCancel:Tr,onReload:et,adapters:{attachments:new Ee.CompositeAttachmentAdapter([new Ee.SimpleImageAttachmentAdapter]),...De?{threadList:De}:{}}});return Gn.jsx(oe.Provider,{value:{protocols:ln,protocolsStatus:Et,getMessages:Un},children:Gn.jsx(Ee.AssistantRuntimeProvider,{runtime:Lr,children:_})})}function pa({children:d,...f}){return Gn.jsx(da,{...f,children:d})}class ga{constructor(){D(this,"prefix","[Persona]")}log(f,...i){console.log(`${this.prefix} - ${f}`,...i)}info(f,...i){console.info(`${this.prefix} - ${f}`,...i)}warn(f,...i){console.warn(`${this.prefix} - ${f}`,...i)}error(f,...i){console.error(`${this.prefix} - ${f}`,...i)}debug(f,...i){console.debug(`${this.prefix} - ${f}`,...i)}}function Rt(d,f,i){return{type:d,description:f,...i}}function eu(d){const f=Object.entries(d.parameters).filter(([i,p])=>p.required).map(([i])=>i);return{type:"local",name:d.name,description:d.description,config:{timeout:d.timeout||60,parameters:{type:"object",title:d.title||`${d.name} parameters`,required:f,properties:d.parameters},output:{type:"object",title:`${d.name} output`,properties:d.output}}}}function Le(d){return{schema:eu(d),implementation:d.implementation}}function ru(d,f,i,p,_,v){const S={name:d,description:f,title:v==null?void 0:v.title,timeout:v==null?void 0:v.timeout,parameters:p,output:_,implementation:i};return Le(S)}const _a=ru("sum","Sum two numbers",function(f,i){return{result:f+i}},{a:Rt("number","First number to sum",{required:!0}),b:Rt("number","Second number to sum",{required:!0})},{result:Rt("number","Sum of two numbers")}),va=Le({name:"navigate_to",description:"Allow agent to redirect user to specific sub page like /foo or #/foo or anything like that",title:"Sum two numbers",timeout:60,parameters:{a:Rt("number","First number to sum"),b:Rt("number","Seconth number to sum")},output:{result:Rt("number","Sum of two numbers")},implementation:function(f,i){return{result:f+i}}});function wa(d){const f=[],i={};return d.forEach(p=>{const{schema:_,implementation:v}=Le(p);f.push(_),i[p.name]=v}),{schemas:f,implementations:i}}function ya(d,f){const{required:i,properties:p}=f.config.parameters;for(const _ of i)if(!(_ in d))throw new Error(`Missing required parameter: ${_}`);for(const[_,v]of Object.entries(d)){const S=p[_];if(S){if(S.type==="number"&&typeof v!="number")throw new Error(`Parameter ${_} should be a number`);if(S.type==="string"&&typeof v!="string")throw new Error(`Parameter ${_} should be a string`);if(S.type==="boolean"&&typeof v!="boolean")throw new Error(`Parameter ${_} should be a boolean`)}}return!0}return X.PersonaConsoleLogger=ga,X.PersonaProtocolBase=ue,X.PersonaRESTProtocol=Pr,X.PersonaRuntimeProvider=pa,X.PersonaSessionStorage=tu,X.PersonaTransactionProtocol=ji,X.PersonaWebRTCProtocol=Rr,X.PersonaWebSocketProtocol=Ir,X.createParameter=Rt,X.createTool=Le,X.createToolFromFunction=ru,X.createToolRegistry=wa,X.generateToolSchema=eu,X.navigateToToolExample=va,X.sumTool=_a,X.usePersonaRuntime=oa,X.usePersonaRuntimeEndpoint=aa,X.usePersonaRuntimeMessages=ca,X.usePersonaRuntimeProtocol=nu,X.usePersonaRuntimeWebRTCProtocol=fa,X.validateToolParameters=ya,Object.defineProperty(X,Symbol.toStringTag,{value:"Module"}),X}({},React,React,AssistantUI);
28
28
  //# sourceMappingURL=bundle.iife.js.map