@theoremjs/studio 0.3.4-next.407.gd93ec2c → 0.3.4-next.413.gb7a2b75

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.
Files changed (65) hide show
  1. package/browser-transport.d.ts +1 -1
  2. package/browser-transport.js +9 -0
  3. package/package.json +4 -4
  4. package/page/assets/Banner-CIcZcE2z.js +2 -0
  5. package/page/assets/CollapsibleGroup-CL8h1IzH.js +1 -0
  6. package/page/assets/ConsoleFrame-Ix0RXm_R.js +3 -0
  7. package/page/assets/{ContextMenu-BreVLY9J.js → ContextMenu-COkl-sLz.js} +2 -2
  8. package/page/assets/{ToolResultCharts-BV2tbzow.js → ToolResultCharts-UmFnfSOp.js} +1 -1
  9. package/page/assets/{TraceInspector-B8NufbVX.js → TraceInspector-DWw6BGA5.js} +1 -1
  10. package/page/assets/{TraceOverview-DoQOfiAe.js → TraceOverview-BiCh-eqR.js} +2 -2
  11. package/page/assets/{_virtual_studio-type-sources-BJMljtdu.js → _virtual_studio-type-sources-Cwv7y4JN.js} +20 -11
  12. package/page/assets/browser-engine-BY6gYiHv.js +11 -0
  13. package/page/assets/browser-transport-B4Or1xM7.js +47 -0
  14. package/page/assets/crypto-Boxudvjl.js +1 -0
  15. package/page/assets/{export-agent-D2Vo-OSL.js → export-agent-D8hLzzFn.js} +3 -3
  16. package/page/assets/{guardrail-tester-CuqamClw.js → guardrail-tester-C04dSfNv.js} +2 -2
  17. package/page/assets/index-Br0mAcH5.js +100 -0
  18. package/page/assets/{live-messages-BZGmMo_v.js → live-messages-CI-oP2dK.js} +1 -1
  19. package/page/assets/reader-CVFKFctz.js +7 -0
  20. package/page/assets/{stub-DpBSP8Ld.js → stub-Bf9DC2iQ.js} +1 -1
  21. package/page/assets/{studio-code-pane-B9bG0xzf.js → studio-code-pane-B0BB_yGF.js} +3 -3
  22. package/page/assets/studio-console-BLHAfqNd.js +1 -0
  23. package/page/assets/studio-decision-Cfc9arc7.js +1 -0
  24. package/page/assets/studio-embedding-CGSaA2dS.js +2 -0
  25. package/page/assets/studio-host-console-BidxEK6_.js +2 -0
  26. package/page/assets/studio-labels-CWLqOvKg.js +3 -0
  27. package/page/assets/studio-live-C8XxDpXT.js +5 -0
  28. package/page/assets/studio-map-C2zIkdcp.js +1 -0
  29. package/page/assets/studio-session-yEqFQo5o.js +1 -0
  30. package/page/assets/studio-trace-replay-CpbB-zpo.js +2 -0
  31. package/page/assets/{studio-type-checker-Cm6RZxV3.js → studio-type-checker-xhy-9-yy.js} +1 -1
  32. package/page/assets/{tool-schema-CgpwKFX7.js → tool-schema-BlUbzOu9.js} +1 -1
  33. package/page/assets/{tree-BxX70aqA.js → tree-6F02tTxC.js} +1 -1
  34. package/page/assets/{turn-client-BZUECwPn.js → turn-client-4GHmGV_4.js} +2 -2
  35. package/page/assets/types-DN_oZAOJ.js +1 -0
  36. package/page/assets/use-one-call-BJhdZLBt.js +1 -0
  37. package/page/assets/use-second-ticker-VX91zrxj.js +1 -0
  38. package/page/assets/{workspace-Bc---F49.js → workspace-SpjcVXbF.js} +1 -1
  39. package/page/index.html +18 -15
  40. package/runtime.d.ts +1 -1
  41. package/runtime.js +5 -2
  42. package/server/draft-handler.js +17 -1
  43. package/transport.d.ts +1 -1
  44. package/transport.js +10 -0
  45. package/ui/lib/send-when-ready.d.ts +1 -1
  46. package/ui/studio-screen.js +4 -6
  47. package/ui/studio-trace-replay.d.ts +8 -5
  48. package/ui/studio-trace-replay.js +139 -83
  49. package/page/assets/Banner-B1Vat7i_.js +0 -2
  50. package/page/assets/CollapsibleGroup-toq0Nedn.js +0 -2
  51. package/page/assets/PaneState-C8jetBGI.js +0 -1
  52. package/page/assets/browser-engine-BvsLwtiv.js +0 -11
  53. package/page/assets/browser-transport-DxpDmXGb.js +0 -47
  54. package/page/assets/index-C3mDKoGG.js +0 -102
  55. package/page/assets/reader-paEmSrWc.js +0 -7
  56. package/page/assets/studio-console-1qIWsDtV.js +0 -3
  57. package/page/assets/studio-decision-BdJR3HSN.js +0 -1
  58. package/page/assets/studio-embedding-CFzitRLj.js +0 -2
  59. package/page/assets/studio-host-console-BzpDE2TK.js +0 -2
  60. package/page/assets/studio-live-BucphGSr.js +0 -5
  61. package/page/assets/studio-map-BfUMbnZK.js +0 -1
  62. package/page/assets/studio-trace-replay-C5cBxYG_.js +0 -2
  63. package/page/assets/types-BoECJ8mE.js +0 -1
  64. package/page/assets/use-one-call-BVmuHLSm.js +0 -1
  65. /package/page/assets/{PaneState-CnxaP3LD.css → use-second-ticker-CnxaP3LD.css} +0 -0
@@ -1,7 +0,0 @@
1
- import{t as e}from"./preload-helper-DpV6A1kQ.js";import{C as t,E as n,O as r,T as i,b as a,d as o,f as s,g as c,l,m as u,o as d,p as f,s as p,u as m,v as h,w as g,x as _,y as v}from"./schemas-BQ9Jydzb.js";import{$n as y,An as b,Ar as x,Bn as S,Br as ee,Dr as C,Er as w,Fr as T,G as E,Gn as D,Hn as O,Ht as k,Jn as te,Kt as ne,Ln as re,Lr as ie,Lt as ae,Mn as oe,Mr as se,Nn as ce,On as le,Pn as ue,Qt as de,Rn as fe,Sr as pe,Tr as me,Un as he,Vr as ge,Wn as A,Xn as _e,Yn as ve,Zn as ye,Zt as be,_r as xe,cn as Se,dn as j,dr as Ce,en as we,er as Te,fn as Ee,gr as De,ir as Oe,kn as ke,ln as M,mn as Ae,nr as je,pn as Me,qt as Ne,rr as Pe,s as Fe,sr as Ie,tr as Le,un as Re,vr as ze,vt as Be,zr as Ve,zt as He}from"./tool-schema-CgpwKFX7.js";import{c as N}from"./host-patterns-C9RMP16Q.js";import{An as Ue,B as We,Bt as Ge,En as Ke,Et as qe,F as Je,Gt as Ye,Ht as Xe,I as Ze,It as Qe,Lt as $e,M as et,Mn as P,Mt as tt,N as nt,Nn as rt,O as it,On as at,P as ot,Pt as st,Q as ct,Qt as lt,Rt as ut,Sn as dt,St as ft,Ut as pt,Vt as mt,W as ht,Wt as gt,X as _t,bt as vt,et as yt,fn as bt,ft as xt,gn as St,it as Ct,j as wt,jt as Tt,k as Et,mn as Dt,mt as F,nn as Ot,nt as kt,pn as At,qt as jt,rn as Mt,rt as Nt,tt as Pt,ut as Ft,wn as It,wt as Lt,xn as Rt,zt}from"./shaped-data-0GUF7Al3.js";import{a as Bt,n as Vt}from"./live-ingress-lDUGPwth.js";import{n as Ht,t as Ut}from"./trace-schema-9CdEyG6Q.js";import{n as Wt}from"./stub-DpBSP8Ld.js";function I(e){return{type:`guardrail`,guardrail:e}}function Gt(e,t,n,r=`redact`,i){if(n.length!==0)return I({stage:e,trust:t,action:r,hits:n,...i?{provenance:i}:{}})}function Kt(e,t){return e.type===`guardrail`?{...e,guardrail:St(e.guardrail,t)}:e}var qt=65536;function L(e){let t=e.classStarts.length,n=new Uint16Array(qt);for(let r=0;r<t;r++)n.fill(r,e.classStarts[r],e.classStarts[r+1]??qt);let r=e.charsets.map(e=>{let n=new Uint8Array(t);for(let t of e)n[t]=1;return n}),i=e.nodes.length,a=new Int32Array(i),o=new Uint8Array(i),s=[];return e.nodes.forEach((e,t)=>{a[t]=e[0],o[t]=e[1],s.push(Int32Array.from(e.slice(2)))}),{classOf:n,has:r,pattern:a,final:o,edges:s,initials:e.initials,leads:e.leads,size:i}}var Jt,R,Yt;async function Xt(){if(Jt)return;let{FORWARD_AUTOMATON:t,REVERSED_AUTOMATON:n}=await e(async()=>{let{FORWARD_AUTOMATON:e,REVERSED_AUTOMATON:t}=await import(`./egress-automata-B5ZGE1mT.js`);return{FORWARD_AUTOMATON:e,REVERSED_AUTOMATON:t}},[]);Jt={forward:t,reversed:n}}function Zt(){if(!Jt)throw Error(`A stream was opened before loadEgressAutomata() finished.`);return Jt}var z;function Qt(e){let t=String.fromCharCode(e).toUpperCase();if(t.length!==1)return e;let n=t.charCodeAt(0);return e>=128&&n<128?e:n}function $t(e){if(!z){z=new Map;for(let e=0;e<qt;e++){let t=Qt(e),n=z.get(t);n?n.push(e):z.set(t,[e])}}return z.get(Qt(e))??[e]}function en(e){let t=[0];for(let n of e)t.at(-1)!==n&&t.push(n),n+1<qt&&t.push(n+1);return t}var B=new Map;function tn(e){let t=B.get(e);if(t)return t;let n=Array.from({length:e.length},(t,n)=>$t(e.charCodeAt(n))),r=en([...new Set(n.flat())].sort((e,t)=>e-t)),i=e=>r.indexOf(e),a=L({classStarts:r,charsets:n.map(e=>e.map(i)),initials:[0],leads:[-1],nodes:[...n.map((e,t)=>[0,0,t+1,t]),[0,1]]});return B.set(e,a),a}function nn(e){let t=JSON.stringify(e),n=B.get(t);if(n)return n;let r=[...new Set(e.flatMap(e=>Array.from(e,e=>e.charCodeAt(0))))];r.sort((e,t)=>e-t);let i=en(r),a=r.map(e=>[i.indexOf(e)]),o=[],s=L({classStarts:i,charsets:a,initials:e.map((e,t)=>{let n=o.length;for(let n=0;n<e.length;n++)o.push([t,0,o.length+1,r.indexOf(e.charCodeAt(n))]);return o.push([t,1]),n}),leads:e.map(()=>-1),nodes:o});return B.set(t,s),s}function rn(e,t){let n=e.has[0]?.length??0,r=Array.from({length:n},()=>[]);for(let i of t){let t=e.edges[e.initials[i]];for(let i=0;i<t.length;i+=2){let a=e.has[t[i+1]];for(let e=0;e<n;e++)a[e]&&r[e]?.push(t[i])}}return r.map(e=>Int32Array.from(e))}function an(e,t){e.text+=t,e.fresh+=t}function on(e){return e.text.length-e.fresh.length}function V(e,t){let n=on(e);return t>=n?e.fresh.charCodeAt(t-n):e.text.charCodeAt(t)}function sn(e,t,n=e.text.length){let r=on(e);return t>=r?e.fresh.slice(t-r,n-r):e.text.slice(t,n)}function cn(e){let t={text:``,fresh:``,rawAt:e=>e,update(){t.text=e.text,t.fresh=e.fresh}};return t}function ln(e,t){let n={text:``,fresh:``,rawAt:e.rawAt,update(){n.fresh=``,an(n,t(sn(e,n.text.length)))}};return n}var un=/\w/,dn=Math.max(...ut.map(e=>e.length));function fn(e){return e.length<=dn+1&&/^[A-Za-z]*$/.test(e)}function pn(e){let t=0,n,r=!1,i=[],a=(e,t,n)=>{an(o,e);for(let r=0;r<e.length;r++)i.push(t+Math.min(r,n-1))},o={text:``,fresh:``,rawAt:r=>e.rawAt(r<i.length?i[r]:t-(n?.length??0)),update(){o.fresh=``;for(let i=e.text.length;t<i;t++){let i=String.fromCharCode(V(e,t)),o=un.test(i);o&&!r&&(n=``),r=o,o?n===void 0?a(i,t,1):n+=i:(n!==void 0&&a(Xe(n),t-n.length,n.length),n=void 0,a(i,t,1))}n!==void 0&&!fn(n)&&(a(n,t-n.length,n.length),n=void 0)}};return o}function mn(e){let t={text:``,fresh:``,from:[],rawAt:n=>n<t.from.length?t.from[n]:e(),update(){}};return t}function H(e,t,n){an(e,t);for(let r=0;r<t.length;r++)e.from.push(n)}var hn=55296,gn=56319,_n=/[A-Za-z]/,vn=56320,yn=57343;function bn(e){let t=0,n=``,r=[],i=``,a=[],o=!1,s=-1,c=mn(()=>Math.min(t,r[0]??t,a[0]??t,s<0?t:s));function l(e,t){s>=0&&(_n.test(e)||H(c,`\\`,s),s=-1),e===`\\`?s=t:H(c,e,t)}function u(e,t){if(pt(e)&&(o||i)){i+=e;for(let n=0;n<e.length;n++)a.push(t)}else{if(i){if(!_n.test(e))for(let e=0;e<i.length;e++)l(i[e],a[e]);i=``,a=[]}for(let n=0;n<e.length;n++)l(e[n],t);o=_n.test(e)&&e.length===1}}function d(){let e=0;for(;e<n.length;){let t=n.charCodeAt(e),i=t>=hn&&t<=gn;if(i&&e+1>=n.length)break;let a=n.charCodeAt(e+1),o=i&&a>=vn&&a<=yn?2:1;u(n.slice(e,e+o),r[e]),e+=o}n=n.slice(e),r=r.slice(e)}return c.update=()=>{c.fresh=``;let i=e.text.length;for(;t<i;){let a=V(e,t),o=a>=hn&&a<=gn;if(o&&t+1>=i)break;let s=V(e,t+1),c=o&&s>=vn&&s<=yn?2:1,l=gt(sn(e,t,t+c));n+=l;for(let e=0;e<l.length;e++)r.push(t);t+=c}d()},c}var xn=/[0-9A-Fa-f]/;function Sn(e){let t=0,n=-1,r=mn(()=>n<0?t:n);r.update=()=>{r.fresh=``;let a=e.text.length;for(;t<a;){let a=String.fromCharCode(V(e,t));if(n<0){a===`%`?n=t:(H(r,a,t),t++);continue}let o=(t-n)%3;if(o===0?a===`%`:xn.test(a))t++;else{i(t-o);for(let n=t-o;n<t;n++)H(r,String.fromCharCode(V(e,n)),n)}}};function i(t){t>n&&H(r,zt(sn(e,n,t)),n),n=-1}return r}var Cn=new Set([`injection`,`base64`,`hex`,`spaced`,`pipe`]),wn=new Map($e.map(({pattern:e,hit:t})=>[e,t])),Tn=new Map(Pt.flatMap(({pattern:e,hit:t})=>t?[[e,t]]:[]));function U(e){return{rule:Rt(e),severity:`high`,detector:e}}var En=U(`injection`),Dn=U(`marker_leak`),On=U(`tool_leak`);function kn({kind:e,group:t}){if(Cn.has(e))return En;switch(e){case`sensitive`:case`card`:return t===void 0?void 0:U(t);case`boundary`:return Dn;case`image`:return U(`ungiven_images`);default:return U(`ungiven_links`)}}function An(e,t,n){if(e===`card`)return{hit:kt};if(e===`image`||e===`link`){let r=(e===`image`?Nt:Ct).indexOf(t),i=n[e][r];return`find`in i?{find:i.find}:{hit:i.test}}let r=wn.get(t)??Tn.get(t);return r?{hit:r}:{}}function jn(e,{given:t,allow:n,skipImages:r}){let i=e=>({...e,...t?{given:t}:{}}),a={image:Ft(i(n?.ungiven_images)),link:xt(i(n?.ungiven_links),r??e.includes(`ungiven_images`))},o=[];return ct.forEach((t,n)=>{let r=kn(t);r?.detector&&e.includes(r.detector)&&o.push({...r,id:n,regex:new RegExp(t.pattern.source,t.pattern.flags),...An(t.kind,t.pattern,a)})}),o}function Mn(){let e=[];return ct.forEach(({kind:t,pattern:n},r)=>{if(t!==`injection`)return;let i=wn.get(n);e.push({...En,id:r,regex:new RegExp(n.source,n.flags),...i?{hit:i}:{}})}),e}function Nn(){return Ye.map((e,t)=>({...En,id:t,regex:new RegExp(e.source,e.flags)}))}function Pn(e,t,n){let r=rn(t,n.map(e=>e.id)),i=new Int32Array(t.initials.length).fill(-1);n.forEach((e,t)=>{i[e.id]=t});let a=new Int32Array(t.size),o=new Int32Array(t.size),s=new Int32Array(t.size),c=new Int32Array(t.size),l=0,u=new Int32Array(t.size),d=new Int32Array(t.size),f=0,p=0,m=new Uint8Array(n.length),h=new Uint8Array(n.length),g=new Int32Array(n.length),_=new Int32Array(n.length),v=new Uint8Array(n.length),y=Uint8Array.from(n,e=>+!!e.find),b=new Int32Array(n.length).fill(-1),x=new Int32Array(n.length).fill(-1),S=Int32Array.from(n,e=>t.leads[e.id]??-1),ee=[...new Set(S)].filter(e=>e>=0),C=n.flatMap((e,t)=>S[t]<0?[]:[t]),w=new Int32Array(t.has.length).fill(-1);function T(){let{text:n,fresh:h}=e,g=on(e),{classOf:_,has:v,edges:C,final:T,pattern:E}=t;for(;p<n.length;p++){let e=_[p>=g?h.charCodeAt(p-g):n.charCodeAt(p)];f++;let t=0,D=(e,n)=>{if(d[e]===f){let t=u[e];n<c[t]&&(c[t]=n)}else d[e]=f,u[e]=t,s[t]=e,c[t]=n,t++,T[e]&&(m[i[E[e]]]=1)};for(let t=0;t<l;t++){let n=C[a[t]],r=o[t];for(let t=0;t<n.length;t+=2)v[n[t+1]][e]&&D(n[t],r)}let O=r[e];for(let e=0;e<O.length;e++){let t=O[e],n=i[E[t]],r=S[n],a=r<0?-1:w[r],o=a<0?p:a;D(t,o),y[n]&&(x[n]=p,b[n]<0&&(b[n]=o))}for(let t of ee)v[t][e]?w[t]<0&&(w[t]=p):w[t]=-1;[a,s]=[s,a],[o,c]=[c,o],l=t}}function E(){let n=e.text.length;_.fill(n),v.fill(0);let r=n;for(let e=0;e<l;e++){let n=a[e],s=i[t.pattern[n]],c=o[e];c<_[s]&&(_[s]=c),t.final[n]&&(v[s]=1),c<r&&(r=c)}for(let e of C){let t=w[S[e]];t<0||(t<_[e]&&(_[e]=t),t<r&&(r=t))}return r}function D(t,r){let i=b[t],a=g[t];if(i<0||i>=r){g[t]=r;return}let{find:o,rule:s,severity:c,detector:l}=n[t],u=o?.(e.text,a,r);if(u===void 0)g[t]=r,b[t]=x[t]>=r?r:-1;else return g[t]=Math.max(a,u)+1,{rule:s,severity:c,start:e.rawAt(u),detector:l}}function O(t,r){if(!m[t]&&!h[t]){g[t]=r;return}m[t]=0;let i=e.text,{regex:a,hit:o,rule:s,severity:c,detector:l}=n[t];for(a.lastIndex=g[t];;){let n=a.exec(i);if(!n||n.index>=r){g[t]=r,h[t]=n||v[t]?1:0;return}let[u]=n;if(u&&(!o||o(u,i,n.index)))return g[t]=a.lastIndex,h[t]=1,{rule:s,severity:c,start:e.rawAt(n.index),detector:l};u||a.lastIndex++,g[t]=a.lastIndex}}function k(){for(let e=0;e<n.length;e++){let t=_[e];if(t<=g[e])continue;let r=n[e].find?D(e,t):O(e,t);if(r)return r}}return{run(t){T();let n=E();for(let e=k();e;e=k())t.push(e);return e.rawAt(n)}}}var Fn=new WeakMap;function In(e){let t=Fn.get(e);return t||(t=L(e),Fn.set(e,t)),t}function Ln(e={}){let t={text:``,fresh:``},n=cn(t),r=[n],i=(e,t,n)=>(r.includes(e)||r.push(e),Pn(e,t,n)),a=[],o=e.detect??[],s=jn(o,e);if(s.length>0&&(R??=L(Zt().forward),a.push(i(n,R,s))),o.includes(`injection`)){R??=L(Zt().forward),Yt??=L(Zt().reversed);let e=bn(t),r=Mn();a.push(i(n,Yt,Nn()),i(pn(n),R,r),i(e,R,r),i(pn(e),R,r),i(ln(n,mt),R,r),i(ln(n,e=>Ge(e)??e),R,r),i(Sn(t),R,r))}if(o.includes(`marker_leak`)&&e.note){let t=yt(e.note);a.push(i(n,tn(e.note),[{...Dn,id:0,regex:t}]))}if(o.includes(`tool_leak`)&&e.tools){let t=ht(e.tools),r=t.map(({regex:e},t)=>({...On,id:t,regex:e}));t.length>0&&a.push(i(n,nn(t.map(({literal:e})=>e)),r))}for(let{detector:t,compiled:r,matchers:o}of e.own??[]){let e=o.map(({regex:e},n)=>({...U(t),id:n,regex:new RegExp(e.source,e.flags)}));a.push(i(n,In(r.automaton),e))}let c=0;return{push(e){t.text+=e,t.fresh=e;for(let e of r)e.update();let n=[],i=t.text.length;for(let e of a)i=Math.min(i,e.run(n));return c=i,n},holdFrom:()=>c}}function Rn(e,t,n={},r=[]){let i=ot(e,t).filter(e=>!(Ze(e)||r.includes(e))),a=Je(e,t);if(i.length===0&&a.length===0)return;let o=[...i,...a.map(({id:e})=>e)],s=t.sources??{},c=[...i.map(e=>({detector:e,...s[e]})),...a.map(({id:e,matchers:t,compiled:n})=>({detector:e,matchers:t,compiled:n}))],l=c.some(({matchers:e,compiled:t})=>e?.length&&!t),u=Ln({detect:i.filter(e=>s[e]?.theorem!==!1),own:c.flatMap(({detector:e,compiled:t,matchers:n=[]})=>t?[{detector:e,compiled:t,matchers:n}]:[]),skipImages:t.ungiven_images[e]!==`ignore`,...n.allow?{allow:n.allow}:{},...n.givenUrls?{given:n.givenUrls}:{},...n.note?{note:n.note}:{},...n.ownTools?{tools:n.ownTools}:{}}),d=a.some(({find:e})=>e),f=e===`live_reply`?96:256,p=``,m=[];return{push(e){p+=e;for(let{start:t,detector:n}of u.push(e))n&&m.push({start:t,detector:n})},holdFrom(){if(l)return 0;let e=u.holdFrom();return d?Math.min(e,Math.max(0,p.length-f)):e},take(r,i,a=!1){let s=m.filter(({start:e})=>e<i);if(s.length===0&&!a&&!d)return{action:`allow`,text:p.slice(r,i),hits:[],taken:i-r};let c={from:r,to:i,settled:s.map(({detector:e})=>e)},l=nt(p,c,e,t,{detectors:o,scope:n});return m=m.filter(({start:e})=>e>=r+l.taken),l}}}function zn(e){let{context:t}=e,n=e.detect,r=n?Rn(n.boundary,n.matrix,n.scope):void 0,i=e=>n?n.matrix[e][n.boundary]:`block`,a=i(`canary_leak`),o=i(`prompt_leak`),s=t.canaryGiven||a===`ignore`?void 0:t.canary,c=o===`ignore`?void 0:t.privateSystem,l=s!==void 0||c!==void 0,u=l?e.carry??``:``,d=[],f=new Set,p=``,m=0,h=``,g=u.slice(-F),_=u,v=0,y=u,b=0,x=0,S=s?ft(s):void 0;S?.push(u);function ee(e){let n=[];if(S?.push(e)&&n.push([a,Dt]),c){let r=_.length;_+=e;let i=Qe(_,r);_=_.slice(i),v+=i;let[a]=_t(_,c,t.canary);a&&n.push([o,a])}for(let[e,t]of n)e!==`flag`||f.has(t.rule)||(f.add(t.rule),d.push(t));return n.filter(([e])=>e!==`flag`).map(([,e])=>e)}function C(e){let t=l?ee(e??``):[];return e&&r?.push(e),t.length===0?null:{hits:t,...n?{boundary:n.boundary}:{}}}function w(){let e=s&&a!==`flag`?E(s):h.length,n=c&&o!==`flag`?D(c,t.canary):h.length;return m+Math.min(e,n)}function T(e){if(d.length===0)return e;let t=[...d,...e.found?.hits??[]];return d=[],{...e,found:{action:e.found?.action??`flag`,hits:t}}}function E(e){let t=u.length+m,n=Math.max(t,x),r=Math.max(b,n-F),i=r+vt(y.slice(r-b),e);i<n&&n>t&&(y=g+h,b=t-g.length,i=b+vt(y,e)),x=Math.min(i,u.length+p.length-F);let a=Math.max(b,Math.max(t,x)-F);return y=y.slice(a-b),b=a,Math.max(0,i-t)}function D(e,t){let n=m===0?u:``,r=u.length+m-n.length,[i,a]=v>=r?[_,v]:[n+h,r];return Math.max(0,a+st(i,e,t)-u.length-m)}function O(e){let t=C(e);if(t)return{blocked:!0,...t};let i=e===void 0,a=i?p.length:Math.min(w(),r?.holdFrom()??p.length),o=Math.max(0,a-m);if(!(n&&r))return T({blocked:!1,emit:k(o)});let s=r.take(m,m+o,i);return s.action===`block`||s.action===`redact`&&!n.rewrite?{blocked:!0,hits:s.hits,boundary:n.boundary}:(k(s.taken),T({blocked:!1,emit:s.text??``,...s.action===`allow`?{}:{found:{action:s.action,hits:s.hits}}}))}function k(e){let t=h.slice(0,e);return h=h.slice(e),m+=t.length,l&&(g=(g+t).slice(-F)),t}return{process(e){return e?(p+=e,h+=e,l&&(y+=e),O(e)):{blocked:!1,emit:``}},flush:()=>O(),accumulated:()=>p,unreleased:()=>h,drainUnreleased:()=>k(h.length),carryOut:()=>l?qe(u+p,s,c):``}}function W(e,t,n){return et(t,e.detect,n)}async function Bn(e,t,n,r){return W(e,[n],t)?(await Xt(),Vn(e,t,n,r)):null}function Vn(e,t,n,r){return W(e,[n],t)?zn({context:t,detect:{matrix:e.detect,boundary:n,rewrite:n===`reply`,scope:We(e,t)},...r?{carry:r}:{}}):null}async function Hn(e,t,n,r){return W(e,[n],r??t)?(await Xt(),zn({context:t,detect:{matrix:e.detect,boundary:n,rewrite:!1,scope:r??We(e,t)}})):null}var Un=class{open;gate;constructor(e){this.open=e}async read(e){if(this.gate===void 0&&(this.gate=await this.open()),this.gate===`stopped`)return``;if(!this.gate)return e;let t=this.gate.process(e);return t.blocked?(this.gate=`stopped`,``):t.emit}end(){if(!this.gate||this.gate===`stopped`)return``;let e=this.gate.flush();return e.blocked?``:e.emit}},Wn=2,Gn=4,Kn=3,qn=/(^|,)(\s*)("?)(?:([=@])|([+-])(?![0-9."]))/gm,Jn=/^[A-Za-z0-9+/]*={0,2}$/,Yn=new Set([`text/csv`,`text/plain`,`text/markdown`]);function Xn(e){let{maxFiles:t,maxBytes:n,maxTurnBytes:r,limitsByMime:i}=e;if(t&&n&&r)return{maxFiles:t,maxBytes:n,maxTurnBytes:r,limitsByMime:i}}function Zn(e,t){if(t.limitsByMime){let n=Me(e);if(t.limitsByMime[n])return t.limitsByMime[n];let[r]=n.split(`/`),i=`${r}/*`;if(t.limitsByMime[i])return t.limitsByMime[i]}return t.maxBytes}function G(e){return`uri`in e}function Qn(e){if(e.type===`speech`)throw new N(`request`,`Profile ${e.id} (speech) does not accept media input`);if(e.type===`live`)throw new N(`request`,`Profile ${e.id} (live) does not accept turn attachment input`);if(e.type===`host`||e.type===`decision`||e.type===`embedding`)throw new N(`request`,`Profile ${e.id} (${e.type}) does not accept turn input`);let t=Xn(e.inputs??{});if(!t)throw new N(`config`,`Profile ${e.id} must set maxFiles, maxBytes, and maxTurnBytes`);return t}function $n(e){let t=0;return e.endsWith(`==`)?t=Wn:e.endsWith(`=`)&&(t=1),Math.floor(e.length*Kn/Gn)-t}function er(e){try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return new TextDecoder(`latin1`).decode(e)}}function tr(e){return e.replace(qn,(e,...t)=>{let[n,r,i,a,o]=t;return`${n}${r}${i}'${a??``}${o??``}`})}function nr(e,t,n){let r=er(t);return e===`text/csv`&&(r=tr(r)),new TextEncoder().encode(n.read(r))}function rr(e,t){return t?{...e,fileName:t}:e}function ir(e,t,n){return t.filter(t=>!M(e,t.mimeType)).map(e=>rr({code:`mime_not_allowed`,params:{mimeType:e.mimeType,channel:n}},e.name))}function ar(e,t){let n=[];e.length>t.maxFiles&&n.push({code:`too_many_files`,params:{maxFiles:t.maxFiles}});let r=0;for(let i of e){if(i.sizeBytes===void 0)continue;let e=Zn(i.mimeType,t);i.sizeBytes>e&&n.push(rr({code:`file_too_large`,params:{maxBytes:e}},i.name)),r+=i.sizeBytes}return r>t.maxTurnBytes&&n.push({code:`turn_too_large`,params:{maxTurnBytes:t.maxTurnBytes}}),n}function or(e,t,n){let r=[];return t.length>0&&!e.attachments&&r.push({code:`attachments_not_accepted`,params:{channel:`attachment`}}),n.length>0&&!e.voice&&r.push({code:`voice_not_accepted`,params:{channel:`voice`}}),r.length>0||t.length===0&&n.length===0?r:(e.attachments&&r.push(...ir(e.attachments,t,`attachment`)),e.voice&&r.push(...ir(e.voice,n,`voice`)),e.limits?[...r,...ar([...t,...n],e.limits)]:[...r,{code:`limits_unconfigured`}])}var sr={mime_not_allowed:`attachments.mime_not_allowed`,too_many_files:`attachments.too_many_files`,too_many_of_kind:`attachments.too_many_of_kind`,file_too_large:`attachments.file_too_large`,turn_too_large:`attachments.turn_too_large`,attachments_not_accepted:`attachments.not_accepted`,voice_not_accepted:`attachments.not_accepted`,limits_unconfigured:`attachments.limits_unconfigured`};function cr(e){let t={};for(let[n,r]of Object.entries(e.params??{}))r!==void 0&&(t[n]=r);return e.fileName!==void 0&&(t.fileName=e.fileName),{key:sr[e.code],params:t}}function lr(e,t){let n=cr(e);return P(n.key,n.params,t)}function ur(e){return new N(`input`,`attachments refused: ${e.map(e=>e.code).join(`, `)}`,{copy:e.map(cr)})}function dr(e){if(!Jn.test(e))throw new N(`request`,`attachment data must be base64`);return $n(e)}function fr(e){let t={mimeType:e.mimeType,name:e.name};return G(e)||(t.sizeBytes=dr(e.data)),t}function pr(e,t,n){if(!hr(t,n))return;let r=Qn(e),i=or({attachments:Re(e,`attachments`),voice:Re(e,`voice`),limits:r},(t??[]).map(fr),(n??[]).map(fr));if(i.length>0)throw ur(i)}function mr(e,t){if(G(e))return e;let{mimeType:n,data:r}=e;if(!Yn.has(Me(n)))return e;let i=nr(n,bt(r),t);return{...e,data:At(i)}}function hr(e,t){return(e?.length??0)>0||(t?.length??0)>0}function gr(e,t,n,r){return pr(e,t,n),{attachments:t?.length?t.map(e=>mr(e,r.attachment)):t,voice:n?.length?n.map(e=>mr(e,r.voice)):n}}var _r=`
2
-
3
- `;function vr(e){if(typeof e==`string`)return;if(typeof e!=`object`||!e||Array.isArray(e))return`must be a string or { private: string }`;let t=Object.keys(e);if(t.length!==1||t[0]!==`private`)return`must have exactly one key, private`;let n=e.private;if(typeof n!=`string`)return`must be a string`;if(n===``)return`must not be empty`}function yr(e,t){if(typeof e!=`string`){if(!Array.isArray(e))return`${t} must be a string or an array of parts`;if(e.length===0)return`${t} must not be an empty array`;for(let[n,r]of e.entries()){let e=vr(r);if(e)return`${t}[${n}]${typeof r==`object`&&r&&`private`in r?`.private`:``} ${e}`}}}function br(e,t){let n=yr(e,t);if(n)throw new N(`config`,n)}function xr(e,t,n){return br(e,t),typeof e==`string`?n(e):e.map(e=>typeof e==`string`?n(e):{private:n(e.private)})}function Sr(e){if(typeof e==`string`)return[{text:e,private:!0}];let t=e.some(e=>typeof e!=`string`);return e.map(e=>typeof e==`string`?{text:e,private:!t}:{text:e.private,private:!0})}function Cr(e){let t=[];for(let n of e)n.some(e=>e.text)&&(t.length>0&&t.push({text:_r,private:!0}),t.push(...n));return t}function wr(e){return e.map(e=>e.text).join(``)}function Tr(e){let t=[],n=``;for(let r of e)r.private?n+=r.text:(n.trim()&&t.push(n),n=``);return n.trim()&&t.push(n),{text:wr(e),private:t}}function Er(e,t){return Tr(Cr([e,...t.map(e=>e?[{text:e,private:!0}]:[])]))}var Dr=[`user`,`slots`,`repair`,`attachment`,`voice`,`history`,`system`];function Or(e,t){return e&&Object.fromEntries(Object.entries(e).map(([e,n])=>[e,t.read(n)]))}var kr={client:`untrusted`,server:`assembled`};function Ar(e){return typeof e==`string`?e:JSON.stringify(e)}function jr(e,t){let n=[],r=!1;if(!e)return{context:e,events:n,blocked:r};let i={};for(let a of A){let o=e[a];if(o===void 0)continue;let s=t();i[a]=s.read(Ar(o));let c=s.found(),l=wt(`context`,c);l&&n.push({...l,trust:kr[a]}),r||=c.action===`block`}return{context:i,events:n,blocked:r}}var Mr=/^[A-Za-z0-9._-]+$/;function Nr(e){let t=e?.trim();return t&&Mr.test(t)?t:void 0}function Pr(e,t){if(!e)return e;let n=e.guidance?t.read(e.guidance):void 0;return{previousOutput:t.read(e.previousOutput),rejection:t.read(e.rejection),...n?{guidance:n}:{}}}function Fr(e,t){return e.map(e=>{let n=e.content===void 0?void 0:t.read(e.content),r=e.parts?.map(e=>e.type===`text`?{...e,text:t.read(e.text)}:e);return{role:e.role,...n===void 0?{}:{content:n},...r?{parts:r}:{},...e.tool_calls?{tool_calls:e.tool_calls}:{},...e.tool_call_id?{tool_call_id:e.tool_call_id}:{},...e.name?{name:e.name}:{},...e.metadata?{metadata:e.metadata}:{},...e.reasoning?{reasoning:e.reasoning}:{}}})}function Ir(e){return new N(`input`,`guardrails.detect blocked the request at ${e}`,{copy:{key:`detect.blocked`}})}function Lr(e,t){let{detect:n}=Ae(t.guardrails),r=Ke(Dr,e=>Et(e,n)),i=e.input??{},a=i.text===void 0?void 0:r.user.read(i.text),o=e.system===void 0?void 0:xr(e.system,`TurnRequest.system`,e=>r.system.read(e)),s=Or(i.slots,r.slots),c=jr(i.context,()=>Et(`context`,n)),l=Pr(i.repair,r.repair),u=i.history?Fr(i.history,r.history):void 0,{attachments:d,voice:f}=i.attachments?.length||i.voice?.length?gr(t,i.attachments,i.voice,r):i,p=[],m;for(let e of Dr){let t=r[e].found(),n=wt(e,t);n&&p.push(I(n)),t.action===`block`&&(m??=Ir(e))}return p.push(...c.events.map(I)),c.blocked&&(m??=Ir(`context`)),{request:{...e,system:o,projectId:Nr(e.projectId),input:{...i,text:a,slots:s,...c.context?{context:c.context}:{},repair:l,history:u,attachments:d,voice:f}},events:p,...m?{refusal:m}:{}}}function Rr(e,t){let{request:n,refusal:r}=Lr(e,t);if(r)throw r;return n}function zr(e){let t=Object.keys(e);return t.length===1?t[0]:void 0}function Br(e,t){return[...new Set([...t.filter(t=>M(e,t)),...e.filter(e=>M(t,e))])]}function Vr(e,t){let n=e.attachments?t?Br(e.attachments.accept,t.media.flatMap(e=>e.accept)):[...e.attachments.accept]:[],r=(t?.media??[]).flatMap(e=>e.maxPerInput===void 0?[]:[{accept:[...e.accept],max:e.maxPerInput}]);return{text:e.text!==!1,...n.length>0?{attachments:{accept:n}}:{},...e.maxFiles===void 0?{}:{maxFiles:e.maxFiles},...e.maxBytes===void 0?{}:{maxBytes:e.maxBytes},...e.maxTurnBytes===void 0?{}:{maxTurnBytes:e.maxTurnBytes},...e.limitsByMime===void 0?{}:{limitsByMime:{...e.limitsByMime}},...t?.maxInputs===void 0?{}:{maxInputs:t.maxInputs},...r.length>0?{perInput:r}:{}}}function Hr(e){let t=Me(e[0]??``);return t===`application/pdf`?`PDF`:t.split(`/`)[0]??t}function Ur(e,t){let n=Xn(e),r=or({attachments:e.attachments?.accept,...n?{limits:{...n,maxFiles:2**53-1}}:{}},t.flat(),[]);if(n)for(let i of t){i.length>n.maxFiles&&r.push({code:`too_many_files`,params:{maxFiles:n.maxFiles}});for(let t of e.perInput??[])i.filter(e=>M(t.accept,e.mimeType)).length>t.max&&r.push({code:`too_many_of_kind`,params:{maxFiles:t.max,kind:Hr(t.accept)}})}let i=new Set;return r.filter(e=>{let t=JSON.stringify(e);return!i.has(t)&&(i.add(t),!0)})}function Wr(e,t){let n=e.get(t);return n!==void 0&&n.type!==`builtin`}function Gr(e,t){return!e||e.includes(`*`)?!0:t?e.includes(t):!1}function Kr(e,t){return t.filter(n=>{let r=e.get(n);return r?.type!==`builtin`||!(r.conflictsWith??[]).some(e=>t.includes(e))})}function K(e){return`tools`in e?e.tools.allow:[]}function qr(e){return e.type===`text`||e.type===`image`?e.tools:void 0}function Jr(e){return`tools`in e?e.tools.parallel:void 0}function Yr(e,t,n){return K(t).filter(r=>{let i=e.get(r);return!i||i.type===`builtin`?!1:t.type===`host`||Gr(i.paths,n.path)})}function Xr(e,t,n,r){let i=t.models[r];return i?(i.builtInTools??[]).filter(t=>{let r=e.get(t);return r?.type===`builtin`&&Gr(r.paths,n.path)}):[]}function Zr(e,t){let n=e.get(t);if(n&&n.type!==`builtin`)return{type:`function`,name:n.name,description:n.description,parameters:n.inputSchema}}function Qr(e,t){let n=[];for(let r of t){let t=Zr(e,r);t&&n.push(t)}return n}function $r(e,t,n){if(t.visible.includes(n))return;t.visible.push(n);let r=Zr(e,n);r&&!t.wire.some(e=>e.name===n)&&t.wire.push(r)}function ei(e,t,n){if(t.builtins.includes(n))return;let r=e.get(n);if(r?.type!==`builtin`)return;let i=r.conflictsWith??[];t.builtins=t.builtins.filter(t=>{if(i.includes(t))return!1;let r=e.get(t);return!(r?.type===`builtin`&&r.conflictsWith?.includes(n))}),t.builtins.push(n)}function ti(e,t,n){return t.type===`live`||t.type===`host`?[...n]:n.filter(t=>e.get(t)?.loadTier===`T0`)}function ni(e,t,n){return Kr(e,n.filter(n=>{let r=e.get(n);return r?.type===`builtin`&&(t.type===`live`||r.loadTier===`T0`)}))}function ri(e,t,n,r){let i=Yr(e,t,n),a=t.type===`host`||t.type===`decision`||t.type===`embedding`||r===void 0?[]:Xr(e,t,n,r),o=[...i,...a],s=ni(e,t,o),c=ti(e,t,o);return{builtins:s,gated:o,visible:c,executable:c.filter(t=>Wr(e,t)),path:n.path,sessionPermissions:n.sessionPermissions,wire:Qr(e,c)}}async function ii(e,t,n,r){let i=ri(e,t,n,r);return await oi(e,i,t,n),i}function ai(e){return{builtins:[...e.builtins],gated:[...e.gated],visible:[...e.visible],executable:[...e.executable],path:e.path,sessionPermissions:e.sessionPermissions?[...e.sessionPermissions]:void 0,wire:e.wire.map(e=>({...e,parameters:structuredClone(e.parameters)}))}}async function oi(e,t,n,r){let i=qr(n)?.t1Policy;if(!i)return;let a;try{a=await i({profile:n,input:r.input,path:r.path,sessionPermissions:r.sessionPermissions,gated:t.gated,host:r.host})}catch(e){let t=e instanceof Error?e.message:String(e);throw new N(`config`,`Profile '${n.id}' tools.t1Policy rejected: ${t}`,{cause:e})}if(!Array.isArray(a))throw new N(`config`,`Profile '${n.id}' tools.t1Policy must return ToolId[]`);for(let n of a){if(!t.gated.includes(n))continue;let r=e.get(n);r?.loadTier===`T2`&&(r.type===`builtin`?ei(e,t,n):$r(e,t,n))}t.executable=t.visible.filter(t=>Wr(e,t))}var si=new Set([`__proto__`,`constructor`,`prototype`]);function ci(e){if(!it(e))return;let{loaded:t}=e;if(Array.isArray(t)&&t.every(e=>typeof e==`string`))return t}function li(e,t,n,r){if(r.type===`live`||r.type===`host`)return{promoted:[]};let i=[];for(let a of n){if(typeof a!=`string`||si.has(a))return{promoted:[],failure:{code:`invalid_output`,kind:`bad_response`,message:`tools.t2Loader loaded ids must be plain strings`}};let n=di(e,a,r);if(`failure`in n)return{promoted:[],failure:n.failure};let{tool:o}=n;Gr(o.paths,t.path)&&t.gated.includes(a)&&i.push(a)}let a=[];for(let n of i)$r(e,t,n),a.push(n);return t.executable=t.visible.filter(t=>Wr(e,t)),{promoted:a}}function ui(e){return{failure:{code:`invalid_output`,kind:`bad_response`,message:e}}}function di(e,t,n){if(!K(n).includes(t))return ui(`tools.t2Loader attempted to promote tool '${t}' outside profile allow`);let r=e.get(t);return r?r.type===`builtin`?ui(`tools.t2Loader attempted to promote builtin '${t}' — only custom tools may be promoted`):r.loadTier===`T2`?{tool:r}:ui(`tools.t2Loader attempted to promote tool '${t}' with loadTier '${r.loadTier}' — only T2 tools may be promoted`):ui(`tools.t2Loader attempted to promote unknown tool '${t}'`)}function fi(e,t){return e.get(t)||{name:t,missing:!0}}function pi(e){let t=new Set;if(e.type===`host`||e.type===`decision`||e.type===`embedding`)return[];for(let n of Object.values(e.models))for(let e of n.builtInTools??[])t.add(e);return[...t]}function mi(e,t){return[...K(t),...pi(t)].map(t=>fi(e,t))}function hi(e,t){if(Array.isArray(e)){for(let n of e)hi(n,t);return}if(typeof e!=`object`||!e)return;let{properties:n,...r}=e;if(typeof n==`object`&&n)for(let[e,r]of Object.entries(n))t.add(e),hi(r,t);for(let e of Object.values(r))hi(e,t)}function gi(e,t){let n=mi(e,t);if(n.length===0)return;let r=new Set;for(let e of n)`inputSchema`in e&&hi(e.inputSchema,r);return{names:n.map(({name:e})=>e),params:[...r]}}function _i(e){return!e||e.length===0?[]:e.slice(-4)}function vi(e,t){if(e.length===0)return``;let n=e.map(e=>`${e.role===`user`?`User`:`Assistant`}: ${e.content}`);return`${P(`repair.history_heading`,{count:e.length},t)}\n${n.join(`
4
- `)}\n\n`}function yi(e){let{profile:t,repair:n,history:r}=e,i=n.guidance||P(`repair.default_guidance`,{},t.labels),a=vi(_i(r),t.labels),o=`${P(`repair.prompt_header`,{},t.labels)}\n\n`;return o+=`${P(`repair.prompt_intro`,{},t.labels)}\n\n`,o+=`${P(`repair.section_previous_output`,{},t.labels)}\n\`\`\`\n${n.previousOutput.trim()}\n\`\`\`\n\n`,o+=`${P(`repair.section_validator_rejection`,{},t.labels)}\n${n.rejection.trim()}\n\n`,i.trim()&&(o+=`${P(`repair.section_repair_guidance`,{},t.labels)}\n${i.trim()}\n\n`),a&&(o+=a),o+=`${P(`repair.section_instructions`,{},t.labels)}\n`,o+=P(`repair.prompt_instructions`,{},t.labels),o}function bi(e,t){let n=[];return t&&n.push(`structured`),e.type===`image`&&n.push(`image`),e.type===`speech`&&n.push(`speech`),n}function xi(e,t){let n=bi(e,t);if(!(n.length<=1))throw new N(`config`,`Profile ${e.id} declares multiple output wire formats (${n.join(`, `)}). Only one of a structured JSON schema (outputs.structured), image, or speech may be active.`)}function Si(e,t){if(e.type!==`speech`){if(t.speech)throw new N(`request`,`Profile ${e.id} (${e.type}) takes no speech settings — only a speech profile speaks`)}else if(t.system)throw new N(`config`,`Profile ${e.id} (speech) takes no system prompt — the input text is the transcript`)}function Ci(e,t){return e.type===`speech`?{...e.speech,...wi(t.speech)}:void 0}function wi(e){return Object.fromEntries(Object.entries(e??{}).filter(([,e])=>e!==void 0))}function Ti(e){if(e.type!==`image`)return null;let t=e.image;return{type:`image`,mimeType:t.mimeType,aspectRatio:t.aspectRatio,resolution:t.resolution,quality:t.quality,background:t.background,n:t.n,seed:t.seed,outputCompression:t.outputCompression,includeText:t.includeText===!0}}function Ei(e){let t=Se(e);if(!t)throw new N(`input`,`MIME '${e}' is not a supported media input type`);return t}function Di(e){return e.map(e=>{let t=Ei(e.mimeType),n=Me(e.mimeType),r=n===`image/jpg`?`image/jpeg`:n;return G(e)?{type:t,mimeType:r,uri:e.uri}:{type:t,mimeType:r,data:e.data}})}function Oi(e,t){let{text:n,repair:r,history:i}=t.input??{};if(e.type===`speech`&&!n?.trim())throw new N(`request`,`Profile ${e.id} (speech) requires text input`);if(j(e)?.text===!1&&n)throw new N(`request`,`Profile ${e.id} does not accept text input`);let a=r?yi({profile:e,repair:r,history:i}):Ai(e,t)??n;if(e.type===`speech`)return a?{type:`text`,text:a}:null;let o=[...ki(t),...a?[tt(a)]:[]];return o.length>0?{type:`text`,text:o.join(`
5
-
6
- `)}:null}function ki(e){let t=e.input?.context??{};return[...A].reverse().filter(e=>t[e]!==void 0).map(e=>Tt(e,Ar(t[e])))}function Ai(e,t){if(t.continueFrom&&He.includes(e.type)){if(t.input?.text)throw new N(`request`,`Profile ${e.id}: a continueFrom turn takes no input.text — its user message is the continue instruction`);return P(`continue.instruction`,{},e.labels)}}function ji(e){return e.type===`image`&&e.image.references?Di(e.image.references):[]}function Mi(e,t){let n=t.input?.attachments??[],r=t.input?.voice??[];return[...ji(e),...Di(n),...Di(r)]}function Ni(e,t){let n=[],r=Oi(e,t);return r&&n.push(r),n.push(...Mi(e,t)),n}function Pi(e,t){let n=t.input?.slots;if(!n)return;let r=j(e)?.slots??{};for(let[t,i]of Object.entries(n)){let n=Object.hasOwn(r,t)?r[t]:void 0;if(!n)throw new N(`request`,`Profile ${e.id} has no slot '${t}'`);if(!n.includes(i))throw new N(`request`,`Profile ${e.id}: slot '${t}' takes ${n.join(`, `)}, not '${i}'`)}}function Fi(e,t){let n=t.input?.context;if(!n)return;let r=j(e)?.context;for(let[t,i]of Object.entries(n))if(i!==void 0){if(!A.includes(t)||!r?.from.some(e=>e===t))throw new N(`request`,`Profile ${e.id} takes no context from '${t}'`);if(Ar(i).length>r.maxChars)throw new N(`request`,`Profile ${e.id}: context from '${t}' is over inputs.context.maxChars (${String(r.maxChars)})`)}}var Ii=/\{([A-Za-z_][\w-]*)\}/g;function Li(e,t,n,r){let i=j(e)?.slots;return i?t.replace(Ii,(t,a)=>{if(!Object.hasOwn(i,a))return t;let o=n&&Object.hasOwn(n,a)?n[a]:void 0;if(o===void 0)throw new N(`request`,`Profile ${e.id}: ${r} uses slot '${a}', and the request chose no value for it`);return o}):t}function Ri(e,t){let{handle:n}=e.identity,r=e.type===`speech`?void 0:e.identity.systemByRole;return t&&r&&Object.hasOwn(r,t)?t:n}function zi(e,t,n){if(e.type===`speech`)return[];let{systemByRole:r,system:i}=e.identity,a=r?.[t]||i||``;return a?Sr(xr(a,`Profile ${e.id} identity.system`,t=>Li(e,t,n,`identity.system`))):[]}function Bi(e,t){return Cr([zi(e,Ri(e,t.input?.role),t.input?.slots),t.system===void 0?[]:Sr(t.system)])}function Vi(e){return e.type!==`host`&&e.type!==`decision`&&e.type!==`embedding`}function Hi(e,t){if(Vi(e))return e;throw e.type===`host`?new N(`request`,`Profile ${e.id}: type 'host' never runs a model — ${t} is not supported; execute tools with invokeTool`):e.type===`embedding`?new N(`request`,`Profile ${e.id}: type 'embedding' runs through runEmbedding — ${t} is not supported`):new N(`request`,`Profile ${e.id}: type 'decision' runs through runDecision — ${t} is not supported`)}function Ui(e,t){if(t){if(!e.allowModelSelect)throw new N(`request`,`Profile ${e.id} does not allow model selection`);if(!e.models[t])throw new N(`request`,`Unknown model '${t}' for ${e.id}`);return t}return e.defaultModel}function Wi(e,t,n,r){let i=t.efforts;if(!i||Object.keys(i).length===0){if(r)throw new N(`request`,`Profile ${e.id} model '${n}' has no selectable efforts`);return}let a=Object.keys(i);if(r){if(!t.allowEffortSelect)throw new N(`request`,`Profile ${e.id} model '${n}' does not allow effort selection`);let a=i[r];if(!a)throw new N(`request`,`Unknown effort '${r}' for ${e.id} model '${n}'`);return a}return i[t.defaultEffort??a[0]]}function Gi(e){if(e.summaries===!0)return`auto`;if(e.summaries===!1)return`none`}function Ki(e,t){if(e.type===`live`)return null;let n=e.outputs?.structured;if(!n)return null;if(typeof n==`string`)return n;let r=t?.[n.by];if(r){let e=n.map[r];if(e)return e}return n.fallback}function qi(e){return e.type===`live`||e.outputs?.streaming?.mode!==`buffered`}function Ji(e,t){return e.type===`live`?`live`:`turn`}function Yi(e,t){if(!t.continueFrom)return;if(e.type===`live`)throw new N(`request`,`Profile ${e.id}: type 'live' uses live.sessionResumption, not turnBehaviour.resumption/continueFrom`);let n=Ne(e)?.maxContinues;if(n===void 0)return;let r=t.continuation;if(r===void 0)throw new N(`request`,`Profile ${e.id}: continueFrom requires TurnRequest.continuation when turnBehaviour.resumption.maxContinues is set`);if(r<1)throw new N(`request`,`Profile ${e.id}: continuation must be >= 1`);if(r>n)throw new N(`request`,`Profile ${e.id}: continuation ${r} exceeds turnBehaviour.resumption.maxContinues (${n})`)}function Xi(e,t){return W(Ae(t),[`live_reply`])?{...e,transcription:{...e?.transcription,output:!0}}:e}function Zi(e){let{detect:t}=Ae(e.guardrails);return e.type!==`speech`&&Mt(t,`canary_leak`)?Lt():``}function Qi(e,t,n,r){if(!r)return;let i={};for(let[a,o]of Object.entries(r)){if(!n.builtInTools?.includes(a))throw new N(`request`,`Profile ${e.id}: builtInArgs names '${a}', which model '${t}' does not list in builtInTools`);i[a]=o}return i}function $i(e,t,n){let r=Hi(e.profiles.get(t.profile),`resolveTurn`);Pi(r,t),Fi(r,t);let i=Rr(t,r),a=i.input??{};Yi(r,i);let o=n??Ui(r,i.model),s=Ee(r,o),c=ri(e.tools,r,i,o),l=c.builtins,u=Ki(r,a.slots);xi(r,u),Si(r,i);let d=Qi(r,o,s,i.builtInArgs),f=Ji(r,s);return{profile:r,generation:{model:o,apiId:s.apiId,transport:f,stream:qi(r),thinking:Wi(r,s,o,i.effort),summaries:Gi(s),maxOutputTokens:s.maxOutputTokens,temperature:s.temperature,builtins:l,builtInArgs:d,sessionId:i.sessionId,tools:c,sessionPermissions:i.sessionPermissions,execution:i.execution,pageExecution:i.pageExecution,history:a.history,maxSteps:r.maxSteps??20,structured:u?{id:u,jsonSchema:e.schemas.get(u).jsonSchema}:null,image:Ti(r),speech:Ci(r,i),live:r.type===`live`?Xi(r.live,r.guardrails):void 0,input:Ni(r,i),canary:Zi(r),resolvedSystem:Bi(r,i),host:i.host}}}function ea(e){return e.type===`image`?e.image:null}function ta(e,t){let n=Hi(t,`projectProfile`),{identity:r}=n,i=j(n)??null,a=n.type===`live`?null:n.outputs??null;return{id:n.id,type:n.type,handle:r.handle,models:n.models,defaultModel:n.defaultModel,allowModelSelect:n.allowModelSelect,maxSteps:n.maxSteps,tools:mi(e,n),inputs:i,outputs:a,image:ea(n),speech:n.type===`speech`?n.speech:null,live:n.type===`live`?n.live:null}}function na(e,t){return ta(e.tools,e.profiles.get(t))}function ra(e){return e==null}function q(e){return ra(e)||typeof e!=`object`||Array.isArray(e)?null:e}function ia(e){let t=q(e);return!t||t.type!==void 0&&t.type!==`object`?null:t}function aa(e){let t=e.required;return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}function oa(e){let t=e.properties;return q(t)??{}}function sa(e,t){return e?`${e}.${t}`:t}function ca(e,t){t.push({path:e,error:`required field '${e}' is missing`})}async function la(e,t,n,r,i){if(!n)return;let a=await n(t,r);a.isValid||i.push({path:e,error:a.error||a.finding||`Validation failed for '${e}'`})}async function ua(e){let{path:t,propSchema:n,child:r,isRequired:i,fields:a,slots:o,failures:s}=e;if(ra(r)){i&&ca(t,s);return}await la(t,r,a?.[t],o,s);let c=ia(n),l=c?q(r):null;c&&l&&await da(c,l,t,a,o,s)}async function da(e,t,n,r,i,a){let o=oa(e),s=new Set(aa(e)),c=new Set([...Object.keys(o),...s]),l=q(t);for(let e of c)await ua({path:sa(n,e),propSchema:o[e],child:l?.[e],isRequired:s.has(e),fields:r,slots:i,failures:a})}async function fa(e,t,n,r){let i=ia(e);if(!i)throw new N(`config`,`structured validation requires a JSON Schema object root`);let a=[];if(!q(t)){for(let e of aa(i))ca(e,a);return a}return await da(i,t,``,n,r,a),a}function pa(e,t){let n=e;for(let e of t.split(`.`)){let t=ia(n);if(!t)return!1;let r=oa(t);if(!Object.hasOwn(r,e)&&!aa(t).includes(e))return!1;n=r[e]}return!0}function ma(e){return e.map(e=>e.error).join(`; `)}function ha(e,t){let n=e;for(let e of t.split(`.`))n=q(n)?.[e];return n}function ga(e,t,n){let[r,...i]=t.split(`.`),a=q(e)??{};return r===void 0?e:{...a,[r]:i.length?ga(a[r],i.join(`.`),n):n}}async function _a(e,t,n){let r=[];for(let[i,a]of Object.entries(t??{})){let t=ha(e,i);if(Array.isArray(t))for(let[e,o]of t.entries()){let t=await a.check(o,n);t.isValid||r.push({path:i,index:e,item:o,reason:t.error||t.finding||`Validation failed for '${i}'`,onFail:a.onFail})}}return r}function va(e,t){let n=e;for(let e of t.split(`.`)){let t=ia(n);if(!t)return;n=oa(t)[e]}let r=q(n);if(r?.type===`array`)return q(r.items)??void 0}var ya=class extends Error{failure;constructor(e){super(e.message),this.failure=e}},ba=new Set([`text`,`image`,`speech`]),xa=g().regex(/\S/),Sa=t({mimeType:g(),data:m(),name:g().optional()}),Ca=t({mimeType:g(),uri:g(),name:g().optional()}),wa=t({voice:g().optional(),style:g().optional(),speed:h().positive().optional()});function Ta(e){return t(Object.fromEntries(Object.entries(e).map(([e,t])=>[e,d(t).optional()])))}var Ea=new Set([`text`,`attachments`,`voice`,`slots`,`speech`]);function Da(e,t){if(!e.hostFields)return{sent:t};let n={...t},r={};for(let t of Object.keys(e.hostFields))n[t]!==void 0&&(r[t]=n[t]);let{text:i,attachments:a,voice:o,slots:s,speech:c}=t;return{sent:{text:i,...a?{attachments:a}:{},...o?{voice:o}:{},...s?{slots:s}:{},...c?{speech:c}:{}},hostInput:r}}function Oa(e,n){let{inputs:r}=e,a={text:xa};r?.attachments&&(a.attachments=l(i([Sa,Ca])).optional()),r?.voice&&(a.voice=l(Sa).optional()),r?.slots&&(a.slots=Ta(r.slots).optional()),e.type===`speech`&&(a.speech=wa.optional());for(let e of n?.hostOnly??[]){if(!a[e])throw new N(`config`,`Tool '${n?.name}' keeps '${e}' for the host, which its profile does not take`);delete a[e]}for(let[e,t]of Object.entries(n?.fieldText??{})){let r=a[e];if(!r)throw new N(`config`,`Tool '${n?.name}' describes '${e}', which its profile does not take`);a[e]=r.describe(t)}for(let[e,t]of Object.entries(n?.hostFields??{})){if(Ea.has(e))throw new N(`config`,`Tool '${n?.name}' declares the host field '${e}', which is a field of every agent tool`);a[e]=t}return t(a)}var ka=v({text:g().optional(),structured:n().optional(),removed:l(v({path:g(),reason:g(),item:n()})).optional(),parts:l(b).optional(),sources:l(ue).optional()});function Aa(e){return e.type===`speech`||(e.type===`text`||e.type===`image`)&&e.inputs.text!==!1}function ja(e){return e.type===`builtin`?!1:e.permission!==`auto`||`auth`in e&&e.auth!==void 0&&(e.auth.onUnauthenticated??`gate`)===`gate`}function Ma(e,t){if(!ba.has(e.type))return`it is a ${e.type} profile; an agent tool runs a text, image, or speech profile`;if(!Aa(e))return`it does not take text`;for(let n of K(e)){let e=t(n);if(!e)return`its tool '${n}' is not registered; register it first`;if(ja(e))return`its tool '${n}' can stop on a gate; give it permission 'auto' and no sign-in`}}function Na(e,t,n){let r=`Agent tool "${e.name}"`,i=e.maxCallsPerTurn;if(i!==void 0&&!(Number.isInteger(i)&&i>0))throw new N(`config`,`${r}: maxCallsPerTurn must be a whole number above 0`);let a=t(e.profile);if(!a)throw new N(`config`,`${r}: profile '${e.profile}' must be registered before the tool`);let o=Ma(a,n);if(o)throw new N(`config`,`${r} can't run '${e.profile}': ${o}`);return a}function Pa(e){if(!e)return`delegated`;let t=`models`in e&&Object.values(e.models).some(e=>(e.builtInTools?.length??0)>0);return K(e).length===0&&!t?`local`:`delegated`}function Fa(e){let t=oe(e),n=t.flatMap(e=>e.type===`text`?[e.text]:[]).join(``),r=ae(t,e=>e.type===`structured`),i=r?.structured,a=t.flatMap(e=>e.type===`media`?[{type:e.media.mimeType.startsWith(`audio/`)?`audio`:`image`,mimeType:e.media.mimeType,data:e.media.data}]:[]),o=t.flatMap(e=>e.type===`citation`?e.sources:[]);return{...i===void 0?{text:n}:{structured:i},...r?.removed?.length?{removed:r.removed}:{},...a.length>0?{parts:a}:{},...o.length>0?{sources:o}:{}}}function Ia(e,t,n){return{...e,type:`agent`,input:t,output:ka,sources:e=>e.sources??[],...n}}var La=256,Ra=18e5,za=/^[\x21-\x7E]{1,256}$/;function Ba(e=Date.now){let t=new Map,n=new Map;return{get(n){let r=t.get(n);if(r&&(t.delete(n),!(e()-r.usedAt>Ra)))return t.set(n,{...r,usedAt:e()}),{id:r.id,protocolVersion:r.protocolVersion}},open(r,i){let a=n.get(r);if(a)return a;let o=i().then(n=>{t.delete(r),t.set(r,{...n,usedAt:e()});for(let e of t.keys()){if(t.size<=La)break;t.delete(e)}return n}).finally(()=>n.delete(r));return n.set(r,o),o},drop(e,n){t.get(e)?.id===n&&t.delete(e)},clear(){t.clear(),n.clear()}}}function Va(e){return e!==null&&za.test(e)}async function Ha(e,t){let n=JSON.stringify([e,Object.entries(t).map(([e,t])=>[e.toLowerCase(),t]).sort(([e],[t])=>e<t?-1:+(e>t))]),r=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(n));return[...new Uint8Array(r)].map(e=>e.toString(16).padStart(2,`0`)).join(``)}function Ua(e,t,n){if(!e||typeof e!=`object`||Array.isArray(e))return n.push(`${t}: schema must be an object`),!1;let r=typeof e.type==`string`||Array.isArray(e.type),i=e.anyOf!==void 0||e.oneOf!==void 0;if(!r&&!i){if(t!==`$`)return!0;n.push(`${t}: missing type or combinator`)}return e.type===`array`&&e.items===void 0&&n.push(`${t}: array schema must define items`),!0}function Wa(e,t,n,r){let i=Array.isArray(t)?t:[];for(let t of i)typeof t==`string`&&!Object.hasOwn(e,t)&&r.push(`${n}: required key '${t}' missing from properties`);for(let[t,i]of Object.entries(e))i&&typeof i==`object`&&Ga(i,`${n}.properties.${t}`,r)}function Ga(e,t,n){if(!Ua(e,t,n))return;let r=e.properties;r&&typeof r==`object`&&!Array.isArray(r)&&Wa(r,e.required,t,n),e.items&&typeof e.items==`object`&&!Array.isArray(e.items)&&Ga(e.items,`${t}.items`,n);for(let r of[`anyOf`,`oneOf`]){let i=e[r];Array.isArray(i)&&i.forEach((e,i)=>{e&&typeof e==`object`&&Ga(e,`${t}.${r}[${i}]`,n)})}}function Ka(e,t){let n=[];if(Ga(e,`$`,n),n.length>0)throw new N(`config`,`Invalid tool ${t} schema: ${n.join(`; `)}`)}function qa(e,t=`output`){let n=r(e,{target:`draft-7`,io:t});return delete n.$schema,n.type||=`object`,n}function Ja(e){if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(Ja);let t={};for(let n of Object.keys(e))n!==`__proto__`&&n!==`constructor`&&n!==`prototype`&&(t[n]=Ja(e[n]));return t}function Ya(e){let t=/^[a-z][a-z0-9+.-]*:\/\/[^/?#]*/i.exec(e)?.[0];if(!t||/[{}]/.test(t))throw new N(`config`,`Endpoint "${e}" must start with a fixed scheme and host; placeholders belong in the path or query`)}var Xa=class{value;constructor(e){this.value=e}};function Za(e){return new Xa(e)}function Qa(e){return(t,n)=>{let{page:r}=n;if(r&&`output`in r)return Za(r.output);let{labels:i}=n.profile;throw r?.timedOut?Error(P(`tool.page_timed_out`,{},i)):Error(P(`tool.page_no_answer`,{tool:e},i))}}function $a(e){let t=qa(e.input,`input`);Ka(t,`input`);let n=qa(e.output,`output`);Ka(n,`output`);let r={activity:{input:t},activityPast:{input:t,output:n},activityFailed:{input:t},request:{input:t}};for(let t of[`activity`,`activityPast`,`activityFailed`,`request`]){let n=e.labels?.[t],i=n?Be(n,r[t]):void 0;if(i)throw new N(`config`,`Tool "${e.name}" ${t} label: ${i}`)}return{inputSchema:t,outputSchema:n}}function eo(e,t){if(t&&(typeof t.service!=`string`||!t.service.trim()))throw new N(`config`,`Tool "${e}" signs in with slot "${t.slot}" but names no service`)}function to(e,t,n=[]){if(t?.queryParam===void 0)return;let r=t.queryParam.trim()?t.type===`api_key`?t.headerName!==void 0||t.headerPrefix!==void 0?`is set with headerName or headerPrefix; the key goes in one place`:n.includes(t.queryParam)?`"${t.queryParam}" is also one of mapping.queryParams`:void 0:`is set on a '${t.type}' sign-in; only an API key goes in the URL`:`is blank`;if(r)throw new N(`config`,`Tool "${e}" auth.queryParam ${r}`)}function no(e,t){if(t!==void 0&&!(Number.isInteger(t.requests)&&t.requests>0&&Number.isFinite(t.windowMs)&&t.windowMs>0))throw new N(`config`,`Tool "${e}" limit needs a whole number of requests above 0 and a window above 0 ms`)}function ro(e,t){if(!(t===void 0||Number.isFinite(t)&&t>0))throw new N(`config`,`Tool "${e}" timeoutMs needs a finite number of ms above 0`)}function io(e){return Ya(e.endpoint),eo(e.name,e.auth),to(e.name,e.auth,e.mapping?.queryParams),no(e.name,e.limit),ro(e.name,e.timeoutMs),{...e,type:`http`,...$a(e)}}function ao(e){return eo(e.name,e.auth),to(e.name,e.auth),{...e,type:`mcp`,...$a(e)}}function oo(e){eo(e.name,e.auth),to(e.name,e.auth);let t=e.answeredBy===`page`?Qa(e.name):e.handler;if(typeof t!=`function`)throw new N(`config`,`Tool '${e.name}' needs a handler, or answeredBy: 'page'`);return{...e,handler:t,type:`function`,...$a(e)}}function so(e,t,n){if(e.type===`builtin`)return e;if(e.type===`agent`){let r=Na(e,t,n),i=j(r),a=Oa({type:r.type,...i?{inputs:i}:{}},e);return Ia(e,a,$a({...e,input:a,output:ka}))}return e.type===`http`?io(e):e.type===`mcp`?ao(e):oo(e)}function co(e=()=>void 0){let t=new Map,n=Ba(),r=e=>t.get(e),i=n=>{let i=so(n,e,r);return t.set(i.name,i),i};return{register:i,registerMany:e=>e.map(e=>i(e)),get:r,require(e){let t=r(e);if(!t)throw new N(`config`,`Tool '${e}' is not registered`);return t},has:e=>t.has(e),list:()=>[...t.values()],findProfile:e,reset:()=>{t.clear(),n.clear()},mcpSessions:n}}function lo(e,t,n,r){if(!n.provider?.trim()||!n.apiId?.trim())throw new N(`config`,P(`provider.binding_identity`))}function uo(e){bo(e.id,e.models),Ho(e.id,e.observability),us(e.id,e.inputs);for(let[t,n]of Object.entries(e.models))So(e.id,t,n);return{type:`embedding`,id:e.id,identity:{handle:e.identity.handle},models:e.models,defaultModel:xo(e.id,e),allowModelSelect:e.allowModelSelect,inputs:e.inputs,guardrails:e.guardrails,observability:e.observability,labels:e.labels}}function fo(e,t,n,r){let i=r.safeParse(n);if(!i.success)throw new N(`config`,`Profile ${e} model '${t}': ${i.error.issues.map(e=>`${e.path.join(`.`)}: ${e.message}`).join(`; `)}`)}function po(e,t,n){if(fo(e,t,n,de),lo(e,t,n,`decision`),`retry`in n)throw new N(`config`,`Profile ${e} model '${t}': decision retry configuration is unsupported; POSTs are never retried`);if(n.timeoutMs!==void 0&&(!Number.isFinite(n.timeoutMs)||n.timeoutMs<=0))throw new N(`config`,`Profile ${e} model '${t}' timeoutMs must be > 0`)}function mo(e){let t=e.models?zr(e.models):void 0;if(!t)throw new N(`config`,`Profile ${e.id}: type 'decision' must declare exactly one model`);po(e.id,t,e.models[t])}function ho(e){if(e.inputs.state!==`json`)throw new N(`config`,`Profile ${e.id}: decision inputs.state must be 'json'`);let t=e.inputs.maxStateBytes;if(t!==void 0&&!(Number.isInteger(t)&&t>0))throw new N(`config`,`Profile ${e.id}: decision inputs.maxStateBytes must be a positive integer`);if(!e.decision.contract.trim())throw new N(`config`,`Profile ${e.id}: decision.contract must be non-empty`)}function go(e){return mo(e),ho(e),Ho(e.id,e.observability),{...e,identity:{handle:e.identity.handle}}}function _o(e){return e===void 0?{}:{parallel:e}}function vo(e){return yo(e.id,e.tools),Ho(e.id,e.observability),{type:`host`,id:e.id,tools:{allow:e.tools.allow,..._o(e.tools.parallel)},guardrails:e.guardrails,observability:e.observability,labels:e.labels}}function yo(e,t){if(!Array.isArray(t.allow))throw new N(`config`,`Profile ${e}: type 'host' must set tools.allow`)}function bo(e,t){if(Object.keys(t).length===0)throw new N(`config`,`Profile ${e} must declare at least one model`)}function xo(e,t){let n=t.defaultModel??zr(t.models);if(!n)throw new N(`config`,`Profile ${e} must set defaultModel when more than one model is declared`);if(!t.models[n])throw new N(`config`,`Profile ${e} defaultModel '${n}' is not declared`);return n}function So(e,t,n){Co(e,t,n),fo(e,t,n,we),Co(e,t,n)}function Co(e,t,n){let r=n.efforts;if(!r||Object.keys(r).length===0){if(n.defaultEffort||n.allowEffortSelect)throw new N(`config`,`Profile ${e} model '${t}': defaultEffort and allowEffortSelect require efforts`);return}for(let[n,i]of Object.entries(r))if(!Oe.includes(i))throw new N(`config`,`Profile ${e} model '${t}' effort '${n}': '${i}' is not a thinking level (${Oe.join(`, `)})`);let i=Object.keys(r),a=n.defaultEffort??(i.length===1?i[0]:void 0);if(!a)throw new N(`config`,`Profile ${e} model '${t}' must set defaultEffort when more than one effort is declared`);if(!r[a])throw new N(`config`,`Profile ${e} model '${t}' defaultEffort '${a}' is not declared`);if(n.allowEffortSelect&&i.length<2)throw new N(`config`,`Profile ${e} model '${t}' allowEffortSelect requires at least two efforts`)}function wo(e){return{providerContinuation:e.providerContinuation?pe.parse(e.providerContinuation):{},models:e.models,defaultModel:xo(e.id,e),allowModelSelect:e.allowModelSelect,maxSteps:e.maxSteps}}function To(e,t,n){if(n?.length){for(let r of n)if(!k(r))throw new N(`config`,`Profile ${e}: turnBehaviour.resumption.${t} may only include ContinueStopKind (length | stream_incomplete | provider_error); got '${r}'`)}}function Eo(e,t){t&&(To(e,`allowContinue`,t.allowContinue),To(e,`autoContinue`,t.autoContinue))}function Do(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Oo(e,t){let n=[e];for(let e of t)n=n.flatMap(t=>Do(t)?e===`*`?Object.values(t):[t[e]]:[]);return n}var ko=Object.entries(y).filter(([,e])=>e.required===!0).map(([e,t])=>[e,t.profileTypes]).sort(([e],[t])=>e.split(`.`).length-t.split(`.`).length);function Ao(e){if(!Do(e))throw new N(`config`,`Profile definition must be an object`);let t=typeof e.id==`string`&&e.id.trim()?e.id:void 0;if(!t)throw new N(`config`,`Profile definition must set id`);if(!Te.find(t=>t===e.type))throw new N(`config`,`Profile ${t}: type must be one of ${Te.join(`, `)}`)}function jo(e){let t=e.identity?.handle,n=[[`id`,e.id,64],[`identity.handle`,typeof t==`string`?t:``,32]];for(let[t,r,i]of n)if(!(Array.from(r).length<=i))throw new N(`config`,`Profile ${e.id.slice(0,64)}: ${t} must be at most ${i} characters`)}function Mo(e){let{id:t,type:n}=e,r=e;for(let[e,i]of ko){if(i&&!i.includes(n))continue;let a=xe(e),o=Oo(r,a.slice(0,-1)),s=a[a.length-1];if(o.some(e=>{if(!Do(e))return!1;let t=e[s];return t==null||t===``}))throw new N(`config`,`Profile ${t}: type '${n}' must set ${a.join(`.`)}`)}}function No(e){let{id:t,type:n}=e;if(n!==`live`&&ze(`inputs`).includes(n)&&e.inputs==null)throw new N(`config`,`Profile ${t}: type '${n}' must set inputs`)}function Po(e){let[t]=De(e);if(!t)return;let{offValue:n,reason:r}=t.scope,i=n===void 0?``:` (other than ${n})`;throw new N(`config`,`Profile ${e.id}: type '${e.type}' must not set ${t.path}${i} — ${r}`)}function Fo(e,t){let n=t.turnBehaviour;Eo(e,n?.resumption)}function Io(e,t){let n=t=>new N(`config`,`Profile ${e}: ${t}`),r=t?.maxRetries;if(r!==void 0&&(!Number.isInteger(r)||r<0))throw n(`outputs.validation.maxRetries must be a non-negative integer`)}function Lo(e,t){let n=t=>new N(`config`,`Profile ${e}: ${t}`),r=Object.keys(t??{}).find(e=>!Ro.includes(e));if(r!==void 0)throw n(`guardrails.${r} is not a setting; it takes ${Ro.join(`, `)}`);Bo(t?.blockedReply,n)}var Ro=[`quota`,`detect`,`blockedReply`,`network`,`taint`],zo=[`onBlock`,`maxRetries`];function Bo(e,t){if(e===void 0)return;let n=Object.keys(e).find(e=>!zo.includes(e));if(n!==void 0)throw t(`guardrails.blockedReply.${n} is not a setting; it takes onBlock and maxRetries`);let{onBlock:r,maxRetries:i}=e;if(r!==void 0&&!x.includes(r))throw t(`guardrails.blockedReply.onBlock must be one of ${x.join(`, `)}`);if(i!==void 0&&(!Number.isInteger(i)||i<0))throw t(`guardrails.blockedReply.maxRetries must be a non-negative integer`)}function Vo(e){let t=e.guardrails?.detect,n=e.type===`host`?Ot(`guardrails.detect`,t,It):Ot(`guardrails.detect`,t);if(n!==void 0)throw new N(`config`,`Profile ${e.id}: ${n}`)}function Ho(e,t){try{let n=Bt(t);if(!Number.isFinite(n.retainForDays))throw new N(`config`,`Profile ${e}: observability.retainForDays must be a finite number`);if(n.rotateAfterMiB<=0||!Number.isFinite(n.rotateAfterMiB))throw new N(`config`,`Profile ${e}: observability.rotateAfterMiB must be a positive number`)}catch(t){if(t instanceof N&&t.message.startsWith(`Profile `))throw t;let n=t instanceof Error?t.message:String(t);throw new N(`config`,`Profile ${e}: ${n}`)}}function Uo(e){if(e.type===`host`||e.type===`decision`||e.type===`speech`||e.type===`embedding`)return;let{system:t,systemByRole:n}=e.identity;t!==void 0&&br(t,`Profile ${e.id} identity.system`);for(let[t,r]of Object.entries(n??{}))br(r,`Profile ${e.id} identity.systemByRole.${t}`)}function Wo(e){Ao(e);for(let t of[`key`,`fallbackKey`,`protocol`,`provider`])if(t in e)throw new N(`config`,P(`provider.profile_configuration`,{profile:e.id,field:t}));if(Po(e),No(e),Mo(e),jo(e),e.labels&&rt(e.labels,`Profile ${e.id}`),Uo(e),Vo(e),e.type===`host`)return vo(e);if(e.type===`decision`)return go(e);if(e.type===`embedding`)return uo(e);bo(e.id,e.models),Fo(e.id,e),Lo(e.id,e.guardrails),e.type===`text`&&Io(e.id,e.outputs?.validation),Ho(e.id,e.observability);for(let[t,n]of Object.entries(e.models))So(e.id,t,n);let t=e.type===`speech`?{handle:e.identity.handle}:{handle:e.identity.handle,system:e.identity.system,systemByRole:e.identity.systemByRole},n=e.guardrails,r=e.observability,i=e.labels,a=wo(e),o;switch(e.type){case`text`:o={type:`text`,id:e.id,identity:t,...a,tools:e.tools,inputs:e.inputs,outputs:e.outputs,turnBehaviour:e.turnBehaviour,guardrails:n,observability:r,labels:i};break;case`image`:o={type:`image`,id:e.id,identity:t,...a,image:e.image,tools:e.tools,inputs:e.inputs,outputs:e.outputs,turnBehaviour:e.turnBehaviour,guardrails:n,observability:r,labels:i},Xo(o.id,o.inputs.attachments?.accept),Yo(o.id,o.image);break;case`speech`:o={type:`speech`,id:e.id,identity:t,...a,speech:e.speech,outputs:e.outputs,turnBehaviour:e.turnBehaviour,guardrails:n,observability:r,labels:i};break;case`live`:o={type:`live`,id:e.id,identity:t,...a,live:e.live,inputs:e.inputs,tools:{allow:e.tools.allow,..._o(e.tools.parallel)},turnBehaviour:e.turnBehaviour,guardrails:n,observability:r,labels:i},Vt(o),Qo(o.id,o.live.contextCompression),Zo(o);break;default:throw new N(`config`,`Unknown profile type '${String(e)}'`)}return qo(o),Go(o),Ko(o),o}function Go(e){let{maxSteps:t}=e;if(!(t===void 0||Number.isInteger(t)&&t>0))throw new N(`config`,`Profile ${e.id}: maxSteps must be a whole number of 1 or more; leave it out for the default of 20`)}function Ko(e){if(e.type===`text`&&e.turnBehaviour?.atStepLimit===`answer`&&e.maxSteps===1)throw new N(`config`,`Profile ${e.id}: turnBehaviour.atStepLimit 'answer' with maxSteps 1 leaves no step that can call a tool`)}function qo(e){if(e.type===`live`)return;let t=e.outputs?.structured;if(!t||typeof t==`string`)return;let n=j(e)?.slots?.[t.by];if(!n)throw new N(`config`,`Profile ${e.id}: outputs.structured.by '${t.by}' is not a slot in inputs.slots`);let r=Object.keys(t.map).filter(e=>!n.includes(e));if(r.length)throw new N(`config`,`Profile ${e.id}: outputs.structured.map maps ${r.join(`, `)}, not a choice of slot '${t.by}'`)}var Jo={n:{ok:e=>Number.isInteger(e)&&e>=1,rule:`a whole number of 1 or more`},seed:{ok:Number.isInteger,rule:`a whole number`},outputCompression:{ok:e=>Number.isInteger(e)&&e>=0&&e<=100,rule:`a whole number from 0 to 100`}};function Yo(e,t){for(let[n,{ok:r,rule:i}]of Object.entries(Jo)){let a=t[n];if(a!==void 0&&!r(a))throw new N(`config`,`Profile ${e}: image.${n} must be ${i}`)}t.references?.forEach((t,n)=>{let r=`Profile ${e}: image.references[${n}]`;if(Se(t.mimeType)!==`image`)throw new N(`config`,`${r} must be an image, not '${t.mimeType}'`);if(!(G(t)?t.uri:t.data))throw new N(`config`,`${r} needs its bytes or its uri`)})}function Xo(e,t){let n=t?.filter(e=>!M(te,e));if(n?.length)throw new N(`config`,`Profile ${e}: an image profile's attachments take images, video, and PDF only, not ${n.join(`, `)}`)}function Zo(e){let{greeting:t,resumed:n,sessionResumption:r}=e.live,i=`Profile ${e.id} live`;if(t!==void 0&&(typeof t!=`string`||!t.trim()))throw new N(`config`,`${i}.greeting must be a prompt; leave it out to wait`);if(!n)return;if(typeof n.prompt!=`string`||!n.prompt.trim())throw new N(`config`,`${i}.resumed.prompt must be a prompt`);let{afterMs:a}=n;if(a!==void 0&&!(Number.isFinite(a)&&a>=0))throw new N(`config`,`${i}.resumed.afterMs must be 0 or more milliseconds`);if(!r)throw new N(`config`,`${i}.resumed needs live.sessionResumption: without it no call resumes`)}function Qo(e,t){if(!t)return;let n=`Profile ${e} live.contextCompression`,r=t.triggerTokens,i=t.slidingWindow.targetTokens;if($o(`${n}.triggerTokens`,r),$o(`${n}.slidingWindow.targetTokens`,i),r!==void 0&&i!==void 0&&i>=r)throw new N(`config`,`${n}: slidingWindow.targetTokens must be below triggerTokens`)}function $o(e,t){if(!(t===void 0||Number.isInteger(t)&&t>0))throw new N(`config`,`${e} must be a whole number above 0`)}function es(e,t,n,r){let i=`Profile ${t.id} model ${n} compaction`;if(ts(i,r),ns(i,r),r.meter!=null&&r.meter!==`history`&&r.meter!==`input`)throw new N(`config`,`${i}: meter must be 'history' or 'input'`);if(r.profile===void 0){if(t.type!==`text`||t.inputs.text===!1)throw new N(`config`,`${i}: a profile that compacts itself must be a text profile that takes text`);return}let a=e.get(r.profile);if(!a)throw new N(`config`,`${i}: compaction profile '${r.profile}' must be registered before '${t.id}'`);if(a.type!==`text`||a.inputs.text===!1)throw new N(`config`,`${i}: compaction profile '${r.profile}' must be a text profile that takes text`)}function ts(e,t){if(t.maxTokens<=0)throw new N(`config`,`${e}: maxTokens must be > 0`);if(t.compactAt<=0||t.compactAt>=1)throw new N(`config`,`${e}: compactAt must be in (0, 1)`)}function ns(e,t){if(t.previousExchanges<0)throw new N(`config`,`${e}: previousExchanges must be >= 0`);if(t.previousExchanges<1&&t.previousExchanges>=t.compactAt)throw new N(`config`,`${e}: previousExchanges as fraction (${t.previousExchanges}) must be < compactAt (${t.compactAt})`);if(t.previousExchanges>1&&!Number.isInteger(t.previousExchanges))throw new N(`config`,`${e}: previousExchanges >= 1 must be an integer`)}function rs(e,t){for(let n of K(t))if(e.get(n)?.type===`builtin`)throw new N(`config`,t.type===`host`?`Profile ${t.id} lists builtin '${n}' in tools.allow — type 'host' never runs a model`:`Profile ${t.id} lists builtin '${n}' in tools.allow — declare it on models.*.builtInTools instead`)}function is(e,t){let n=qr(t)?.t2Loader;if(n){if(!K(t).includes(n))throw new N(`config`,`Profile ${t.id} tools.t2Loader '${n}' must also be listed in tools.allow`);if(e.get(n)?.type!==`function`)throw new N(`config`,`Profile ${t.id} tools.t2Loader '${n}' must be a registered type: 'function' tool`)}}function*as(e){for(let[t,n]of Object.entries(e.models))for(let e of n.builtInTools??[])yield{modelId:t,id:e}}function os(e,t){for(let{modelId:n,id:r}of as(t))if(e.get(r)?.type!==`builtin`)throw new N(`config`,`Profile ${t.id} model '${n}' lists '${r}' in builtInTools — not a registered builtin`)}function ss(e){let t=e.type===`text`?e.outputs?.structured:void 0;return t?typeof t==`string`?[t]:[...new Set([...Object.values(t.map),t.fallback])]:[]}function cs(e,t){let n=ss(t).map(n=>{let r=e.find(n);if(!r)throw new N(`config`,`Profile ${t.id}: outputs.structured names '${n}', which is not a registered schema; register it before the profile`);return r}),r=t.type===`text`?t.outputs?.validation:void 0,i=Object.keys(r?.fields??{}),a=Object.keys(r?.items??{});if(!i.length&&!a.length)return;if(!n.length)throw new N(`config`,`Profile ${t.id}: outputs.validation checks a structured reply, so it needs outputs.structured`);let o=a.filter(e=>!n.some(t=>va(t.jsonSchema,e)));if(o.length)throw new N(`config`,`Profile ${t.id}: outputs.validation.items has ${o.join(`, `)}, which no structured schema reaches as a list with an items schema`);let s=i.filter(e=>!n.some(t=>pa(t.jsonSchema,e)));if(s.length)throw new N(`config`,`Profile ${t.id}: outputs.validation.fields has ${s.join(`, `)}, which no structured schema reaches through object properties`)}function ls(e){let t=j(e)?.context;if(!t)return;let n=A;if(t.from.length===0||t.from.some(e=>!n.includes(e)))throw new N(`config`,`Profile ${e.id}: inputs.context.from must list ${A.join(` or `)}`);if(!(Number.isInteger(t.maxChars)&&t.maxChars>0))throw new N(`config`,`Profile ${e.id}: inputs.context.maxChars must be a positive integer`)}function us(e,t){if(!t)return;let{attachments:n,voice:r,maxFiles:i,maxBytes:a,maxTurnBytes:o,limitsByMime:s}=t,c={maxFiles:i,maxBytes:a,maxTurnBytes:o};if((n||r)&&Object.values(c).some(e=>e===void 0))throw new N(`config`,`Profile ${e} must set maxFiles, maxBytes, and maxTurnBytes`);for(let[e,t]of Object.entries(s??{}))c[`limitsByMime['${e}']`]=t;for(let[t,n]of Object.entries(c))if(n!==void 0&&!(Number.isInteger(n)&&n>0))throw new N(`config`,`Profile ${e}: inputs.${t} must be a positive integer`)}function ds(e,t,n){let r=new Map,i=i=>{let a=Wo(i),o=n&&a.type!==`host`?{...a,models:Object.fromEntries(Object.entries(a.models).map(([e,t])=>[e,be(n.require(t.provider,t.apiId),t,a.type)]))}:a;if(rs(e,o),is(e,o),o.type!==`host`&&o.type!==`decision`&&o.type!==`embedding`){os(e,o),us(o.id,j(o)),ls(o),cs(t,o);for(let[e,t]of Object.entries(o.models))t.compaction&&es(r,o,e,t.compaction)}r.set(o.id,o)};return{register:i,registerMany(e){for(let t of e)i(t)},get(e){let t=r.get(e);if(!t)throw new N(`config`,`Unknown profile '${e}'`);return t},find:e=>r.get(e),has:e=>r.has(e),list:()=>[...r.values()],clear:()=>r.clear()}}var fs=`https://generativelanguage.googleapis.com/v1beta/models`;function ps(e){let t=e?.trim()??``;if(t.startsWith(`AIza`))return`gemini`;if(t.startsWith(`sk-or-`))return`openrouter`}function ms(e){let t;try{t=new URL(e.baseUrl)}catch{throw new N(`config`,`Enter a valid localhost URL.`)}if(![`http:`,`https:`].includes(t.protocol)||![`localhost`,`127.0.0.1`,`[::1]`].includes(t.hostname)||t.username||t.password||t.search||t.hash)throw new N(`config`,`Use a localhost URL without credentials, query parameters or a fragment.`);return{baseUrl:t.href.replace(/\/$/,``),fetch:(e,n)=>new URL(e instanceof Request?e.url:String(e)).origin===t.origin?fetch(e,{...n,redirect:`error`,credentials:`omit`}):Promise.reject(new N(`blocked`,`Local requests must stay on the configured origin.`))}}var hs=v({data:l(v({id:g().min(1)}))});async function gs(e,t){let n=ms(e);if(!n?.fetch)throw new N(`config`,`Enter a local endpoint.`);let r=await n.fetch(`${n.baseUrl}/v1/models`,{signal:t,headers:{Accept:`application/json`}});if(!r.ok)throw new N(`network`,`Local model list returned HTTP ${r.status}.`);let i=hs.safeParse(await r.json());if(!i.success)throw new N(`request`,`The endpoint returned an invalid model list.`);return[...new Set(i.data.data.map(e=>e.id))]}var _s=`https://openrouter.ai/api/v1/models`,vs=`https://openrouter.ai/api/v1/embeddings/models`,ys=[{id:`gemini-embedding-2-preview`,label:`Gemini Embeddings 2 (preview)`},{id:`gemini-embedding-001`,label:`Gemini Embedding 001`}],bs=[{id:`liquid/lfm-2.5-embedding-350m:free`,label:`Liquid LFM 2.5 Embedding 350M (free)`},{id:`nvidia/nemotron-3-embed-1b:free`,label:`NVIDIA Nemotron 3 Embed 1B (free)`},{id:`nvidia/llama-nemotron-embed-vl-1b-v2:free`,label:`NVIDIA Llama Nemotron Embed VL 1B v2 (free)`}],xs={text:`text`,image:`image`,speech:`speech`,live:void 0,embedding:void 0},Ss=v({data:l(v({id:g().min(1),name:g().optional(),architecture:v({output_modalities:l(g()).optional()}).optional()}))}),Cs=v({data:l(v({id:g().min(1),name:g().optional()}))}),ws=v({models:l(v({name:g().min(1),displayName:g().optional(),supportedGenerationMethods:l(g()).optional()})).optional(),nextPageToken:g().optional()}),Ts=5;async function Es(e,t,n){let r=await fetch(t,{...n,redirect:`error`,credentials:`omit`});if(r.status===400||r.status===401||r.status===403)throw new N(`auth`,`${e} refused the key.`);if(!r.ok)throw new N(`network`,`${e} model list returned HTTP ${r.status}.`);return await r.json()}async function Ds(e,t,n,r){let i=n?.trim();if(t===`embedding`&&!i)return[...e===`openrouter`?bs:ys];if(e===`openrouter`)return await Os(t,i,r);if(!i)throw new N(`auth`,`Choose a key to list Gemini models.`);return await As(t,i,r)}async function Os(e,t,n){let r={signal:n,headers:{Accept:`application/json`,...t?{Authorization:[`Bearer`,t].join(` `)}:{}}};if(e===`embedding`){let e=Cs.safeParse(await Es(`OpenRouter`,vs,r));if(!e.success)throw new N(`bad_response`,`OpenRouter returned an invalid embedding model list.`);return e.data.data.map(e=>({id:e.id,label:e.name??e.id}))}let i=xs[e];if(!i)return[];let a=Ss.safeParse(await Es(`OpenRouter`,`${_s}?output_modalities=${i}`,r));if(!a.success)throw new N(`bad_response`,`OpenRouter returned an invalid model list.`);return a.data.data.filter(e=>e.architecture?.output_modalities?.includes(i)??!0).map(e=>({id:e.id,label:e.name??e.id}))}var ks={live:`bidiGenerateContent`,embedding:`embedContent`};async function As(e,t,n){let r=ks[e]??`generateContent`,i=[],a;for(let e=0;e<Ts;e++){let e=new URL(fs);e.searchParams.set(`pageSize`,`1000`),a&&e.searchParams.set(`pageToken`,a);let o=ws.safeParse(await Es(`Google`,e.href,{signal:n,headers:{Accept:`application/json`,"x-goog-api-key":t}}));if(!o.success)throw new N(`bad_response`,`Google returned an invalid model list.`);for(let e of o.data.models??[]){if(!e.supportedGenerationMethods?.includes(r))continue;let t=e.name.replace(/^models\//,``);i.push({id:t,label:e.displayName??t})}if(a=o.data.nextPageToken,!a)break}return i}function js(e){return[...new Set([e.key,e.fallbackKey,...Object.values(e.models??{}).flatMap(e=>[e.keySlot,e.fallbackKeySlot])].filter(e=>!!e))]}function Ms(e,t){return Object.fromEntries(e.map(e=>[e,Object.hasOwn(t,e)?t[e]:void 0]))}var Ns=[`audio/webm;codecs=opus`,`audio/webm`,`audio/mp4`,`audio/wav`,`audio/mpeg`];function Ps(e){return e.join(`,`)}function Fs(e){let t=e?.attachments?.accept,n=e?.voice?.accept;return{text:e?.text!==!1,attachments:t?.length?{accept:t,acceptAttr:Ps(t)}:null,voice:n?.length?{accept:n}:null,maxFiles:e?.maxFiles,maxBytes:e?.maxBytes,maxTurnBytes:e?.maxTurnBytes,limitsByMime:e?.limitsByMime,slots:e?.slots,context:e?.context}}function Is(e){return{text:e.text,attachments:e.attachments?{accept:e.attachments.accept}:void 0,voice:e.voice?{accept:e.voice.accept}:void 0,maxFiles:e.maxFiles,maxBytes:e.maxBytes,maxTurnBytes:e.maxTurnBytes,limitsByMime:e.limitsByMime,slots:e.slots,context:e.context}}function Ls(e,t){let n=e=>(e??[]).map(({name:e,mimeType:t,sizeBytes:n})=>({name:e,mimeType:t,sizeBytes:n})),r=or({attachments:e.attachments?.accept,voice:e.voice?.accept,limits:Xn(Is(e))},n(t.attachments),n(t.voice));return{ok:r.length===0,issues:r}}function Rs(e){let t=globalThis.MediaRecorder;if(t===void 0)return;let n=e=>t.isTypeSupported(e),r=e=>e.find(n);return e?.length?r(Ns.filter(t=>M(e,t)))??e.find(n):r(Ns)}var zs=v({protocol:g(),provider:g(),apiId:g(),options:_(g(),u()).optional(),keySlot:g().optional(),fallbackKeySlot:g().optional(),efforts:_(g(),d(Oe)).optional(),defaultEffort:g().optional(),allowEffortSelect:o().optional(),summaries:o().optional(),maxOutputTokens:h().optional(),temperature:h().optional(),builtInTools:l(g()).optional(),compaction:v({maxTokens:h(),compactAt:h(),previousExchanges:h(),profile:g().optional(),timing:d(he),meter:d(O).optional()}).optional()}),Bs=v({structured:i([g(),v({by:g(),map:_(g(),g()),fallback:g()}),p()]).optional(),streaming:v({mode:d(Pe).optional(),streamThoughts:o().optional()}).optional()}),Vs=v(Ke(dt,()=>d(lt))),Hs=v(Ke(jt,()=>Vs)),Us=v({id:g(),label:g(),actions:Vs,names:l(g()),find:o()}),Ws=v({hosts:l(g()),fromTools:o()}),Gs=v({quota:v({perDay:h()}).optional(),detect:Hs,patterns:a(d(jt),v({theorem:o(),names:l(g())})).optional(),host:l(Us).optional(),allow:v({ungiven_images:Ws,ungiven_links:Ws}),blockedReply:v({onBlock:d(x),maxRetries:h()})}),Ks=i([o(),v({theorem:o(),host:o()})]),qs=v({record:o(),writeTo:i([c(!1),g()]).optional(),sampleRate:h(),include:v({upstreamLog:o(),outboundWire:o(),evidenceRaw:o(),usage:o(),guardrailDecisions:o(),guardrailMatchPreview:o()}),scrub:v({sensitive:Ks,injection:Ks,canary:Ks}),resource:Ut,retainForDays:h(),rotateAfterMiB:h(),hasOnWriteError:o()}),Js=v({text:o(),attachments:v({accept:l(g()),acceptAttr:g()}).nullable(),voice:v({accept:l(g())}).nullable(),maxFiles:h().optional(),maxBytes:h().optional(),maxTurnBytes:h().optional(),limitsByMime:_(g(),h()).optional(),slots:_(g(),l(g())).optional(),context:v({from:l(d(A)),maxChars:h()}).optional()}),Ys=v({allowContinue:l(d(D)).optional(),autoContinue:l(d(D)).optional(),maxContinues:h().optional()}),Xs=v({resumption:Ys.optional()}),Zs=v({allow:l(g()),page:l(g()),t2Loader:g().optional(),parallel:o().optional()}),Qs={providerContinuation:v({history:d([`host`,`stateless`,`provider`]).optional()}).optional(),id:g(),models:_(g(),zs),defaultModel:g(),allowModelSelect:o().optional(),maxSteps:h().optional(),labels:a(d(at),g()),guardrails:Gs.optional(),observability:qs.optional()},$s=i([g(),l(i([g(),t({private:g().min(1)})])).min(1).readonly()]),ec=v({handle:g(),system:$s.optional(),systemByRole:_(g(),$s).optional()}),J=f(`type`,[v({...Qs,type:c(`text`),identity:ec,outputs:Bs.optional(),inputs:Js,tools:Zs,turnBehaviour:v({resumption:Ys.optional(),allowSteering:o().optional(),atStepLimit:d(je).optional()}).optional(),canStop:c(!0),allowSteering:o()}),v({...Qs,type:c(`image`),identity:ec,outputs:Bs.optional(),image:v({aspectRatio:g().optional(),resolution:g().optional(),mimeType:g().optional(),quality:g().optional(),background:g().optional(),n:h().int().min(1).optional(),seed:h().int().optional(),outputCompression:h().int().min(0).max(100).optional(),references:l(i([v({mimeType:g(),data:g(),name:g().optional()}),v({mimeType:g(),uri:g(),name:g().optional()})])).optional(),includeText:o().optional()}),inputs:Js,tools:Zs,turnBehaviour:Xs.optional(),canStop:c(!0)}),v({...Qs,type:c(`speech`),identity:v({handle:g()}),outputs:Bs.optional(),speech:v({voice:g().optional(),style:g().optional(),speed:h().optional(),format:d(Le).optional()}),inputs:Js,turnBehaviour:Xs.optional(),canStop:c(!0)}),v({...Qs,type:c(`live`),identity:ec,inputs:Js.pick({slots:!0,context:!0}).optional(),live:v({ingress:v({audio:o().optional(),video:o().optional(),text:o().optional()}).optional(),voice:g().optional(),vad:v({activityHandling:d(ve).optional(),startSensitivity:d(ye).optional(),endSensitivity:d(_e).optional(),prefixPaddingMs:h().optional(),silenceDurationMs:h().optional()}).optional(),sessionResumption:o().optional(),contextCompression:v({triggerTokens:h().optional(),slidingWindow:v({targetTokens:h().optional()})}).optional(),transcription:v({input:o().optional(),output:o().optional()}).optional()}),tools:Zs.pick({allow:!0,page:!0}),turnBehaviour:v({allowSteering:o().optional()}).optional()})]);function tc(e){let t=Ae(e),{sources:n,host:r,...i}=t.detect;return{quota:t.quota,detect:i,...n?{patterns:Object.fromEntries(Object.entries(n).map(([e,{theorem:t,matchers:n}])=>[e,{theorem:t,names:n.map(({name:e})=>e)}]))}:{},...r?{host:r.map(({id:e,label:t,actions:n,matchers:r,find:i})=>({id:e,label:t,actions:n,names:r.map(({name:e})=>e),find:!!i}))}:{},allow:{ungiven_images:nc(t.allow.ungiven_images),ungiven_links:nc(t.allow.ungiven_links)},blockedReply:t.blockedReply}}function nc(e){return{hosts:[...e.hosts??[]],fromTools:e.fromTools??!0}}function rc(e){return e===void 0||e===!1||typeof e==`string`?e:`custom`}function ic(e){if(!e)return;let t=Bt(e);return{record:t.record,writeTo:rc(t.writeTo),sampleRate:t.sampleRate,include:t.include,scrub:t.scrub,resource:t.resource,retainForDays:t.retainForDays,rotateAfterMiB:t.rotateAfterMiB,hasOnWriteError:!!t.onWriteError}}function ac(e){let{greeting:t,resumed:n,...r}=e??{};return r}function oc(e,t){let n=e.tools.filter(e=>`type`in e&&e.type===`function`&&e.answeredBy===`page`).map(e=>e.name);if(t){let e=qr(t),r=Jr(t);return{allow:[...K(t)],page:n,...e?.t2Loader?{t2Loader:e.t2Loader}:{},...r===void 0?{}:{parallel:r}}}return{allow:e.tools.filter(e=>!(`type`in e&&e.type===`builtin`)).map(e=>e.name),page:n}}function sc({allow:e,page:t}){return{allow:e,page:t}}function cc(e,t){let n=Fs(e.inputs),r=t?.identity??{handle:e.handle},i=t?tc(t.guardrails):void 0,a=t?ic(t.observability):void 0,o=e.outputs??void 0,s={id:e.id,identity:r,models:e.models,defaultModel:e.defaultModel,allowModelSelect:e.allowModelSelect,maxSteps:e.maxSteps,providerContinuation:e.providerContinuation,outputs:o,guardrails:i,observability:a,labels:Ue(t?.labels)};switch(e.type){case`text`:return J.parse({...s,type:`text`,inputs:n,tools:oc(e,t),turnBehaviour:t?.type===`text`?t.turnBehaviour:void 0,canStop:!0,allowSteering:!t||ne(t)});case`image`:return J.parse({...s,type:`image`,image:e.image??{},inputs:n,tools:oc(e,t),turnBehaviour:t?.type===`image`?t.turnBehaviour:void 0,canStop:!0});case`speech`:return J.parse({...s,type:`speech`,speech:e.speech??{},inputs:n,turnBehaviour:t?.type===`speech`?t.turnBehaviour:void 0,canStop:!0});case`live`:return J.parse({...s,type:`live`,live:ac(e.live),...e.inputs?{inputs:{slots:n.slots,context:n.context}}:{},tools:sc(oc(e,t))});default:return e.type}}function lc(e,t){let n=Hi(e,`interfaceFromProfile`);return cc(ta(t,n),n)}function uc(e){return s(t=>re.safeParse(e(t)).success)}var dc=[`running`,`gate`,`complete`,`error`,`cancel`],fc=s(e=>{let t=re.safeParse({type:`tool`,tool:e});if(!t.success||t.data.type!==`tool`||!(`phase`in t.data.tool))return!1;let{phase:n}=t.data.tool;return dc.some(e=>e===n)}),pc=_(g(),n()),mc=v({operationId:g().optional(),name:g(),callId:g(),arguments:pc,draft:g().optional(),reasoning:l(ce).optional(),stepId:g().optional(),edited:v({from:pc,to:pc}).optional(),activity:g().optional(),activityPast:g().optional(),outputDraft:g().optional(),state:fc.optional(),startedAt:h().optional(),endedAt:h().optional(),artifacts:l(n())}),hc=v({kind:d(Ce),native:g().optional()}),Y={id:g()},X=f(`kind`,[v({...Y,kind:c(`user-text`),text:g()}),v({...Y,kind:d([`user-attachment`,`user-voice`]),name:g(),mimeType:g(),sizeBytes:h(),data:g().optional()}),v({...Y,kind:c(`thought`),text:g()}),v({...Y,kind:c(`text`),text:g()}),v({...Y,kind:c(`tool`),tool:mc}),v({...Y,kind:c(`structured`),value:n(),draft:g().optional()}),v({...Y,kind:c(`media`),mimeType:g(),data:g().optional(),url:g().optional(),previewUrl:g().optional()}),v({...Y,kind:c(`grounding`),grounding:uc(e=>({type:`grounding`,grounding:e}))}),v({...Y,kind:c(`citation`),sources:uc(e=>({type:`citation`,sources:e})),callId:g().optional()}),v({...Y,kind:c(`evidence`),evidence:uc(e=>({type:`evidence`,evidence:e}))}),v({...Y,kind:c(`guardrail`),guardrail:C}),v({...Y,kind:c(`error`),message:g()}),v({...Y,kind:c(`turn-done`),stop:hc.optional(),tokens:uc(e=>({type:`tokens`,tokens:e})).optional(),interactionId:g().optional(),compaction:o().optional(),workedMs:h().optional(),endedAt:h().optional()})]),gc=v({type:g()});function _c(e,t){return Object.hasOwn(e,t)}function vc(e,t){return e.map(e=>{let n=[...t,...e.path],r=`${n.map(String).join(`.`)||`(root)`} ${e.code}`;return e.code!==`invalid_union`||e.errors.length===0?r:`${r} [${e.errors.map(e=>vc(e,n)).join(` | `)}]`}).join(`; `)}function yc(e){return vc(e.issues,[])}function bc(e,t){return new N(`bad_response`,`${e} failed its wire check: ${yc(t)}`)}function Z(e,t,n){let r=e.safeParse(t);if(!r.success)throw bc(n,r.error);return r.data}function xc(e){return{type:`malformed`,error:new N(`bad_response`,e,{copy:{key:`session.part_skipped`}})}}function Sc(e,t){let n=gc.safeParse(t);if(!n.success)return xc(`a line without a kind failed its wire check: ${yc(n.error)}`);let{type:r}=n.data;if(!_c(e,r))return{type:`unsupported`,received:r,raw:t};let i=e[r].safeParse(t);return i.success?i.data:xc(`a '${r}' line failed its wire check: ${yc(i.error)}`)}function Cc(e){try{return{value:JSON.parse(e)}}catch(e){if(e instanceof SyntaxError)return;throw e}}function wc(e,t){let n=Cc(t);return n?Sc(e,n.value):xc(`a line is not JSON`)}function Tc(e){let t=Cc(e);if(!t)throw new N(`bad_response`,`a line is not JSON`);return t.value}var Ec=v({name:g(),mimeType:g(),data:g()}),Dc=v({slots:_(g(),g()).optional(),context:n().optional(),text:g().optional(),attachments:l(Ec).optional(),voice:l(Ec).optional()}),Oc=v({gateKind:d(Ie).optional(),sessionPermissions:l(g()).optional(),name:g().optional(),input:n().optional(),snapshot:S.optional(),promoted:l(g()).optional(),model:g().optional(),effort:g().optional()}),kc=g().trim().min(1);v({input:Dc,conversation:g().min(1).optional(),model:g().optional(),effort:g().optional(),turnId:kc.optional(),abandon:l(ke).min(1).optional(),replay:Oc.pick({sessionPermissions:!0}).optional(),transcript:l(X).optional()});var Ac=[`approve`,`deny`],jc=i([t({unanswered:c(!0)}),t({output:n()}).refine(e=>`output`in e).transform(e=>({output:e.output}))]);v({gateId:g().min(1),operationId:g().min(1).max(256),decision:d(Ac),input:n().optional(),secret:g().optional(),page:jc.optional(),conversation:g().min(1).optional(),turnId:kc.optional(),replay:Oc.optional()}),v({turnId:kc,id:kc,inject:l(fe).min(1)});var Mc=v({type:c(`conversation`),ref:g().min(1),posted:c(!0).optional()}),Nc={...le,conversation:Mc},Pc=v({transcript:l(X),paused:v({events:l(re),blocks:l(X)}).optional()});v({conversation:g().min(1)}),v({conversation:g().min(1),at:h().int().min(-1)}),v({blocks:l(X)});var Fc=v({conversation:g().min(1),view:Pc}),Ic=class extends Error{kind;publicMessage;internalMessage;copy;constructor(e,t,n,r){super(n??t??e),this.name=`TheoremStreamError`,this.kind=e,t&&(this.publicMessage=t),n&&(this.internalMessage=n),r&&(this.copy=r)}};function Lc(e){return e instanceof Ic}function Rc(e){return e?.trim()||void 0}var zc=v({error:g().optional(),errorKind:w.optional(),errorCopy:me.optional(),errorInternal:g().optional()}),Bc=zc;function Vc(e,t){let n=Rc(e.error),r=Rc(e.errorInternal);return new Ic(e.errorKind??t,n,r&&r!==n?r:void 0,e.errorCopy)}function Hc(e){return!Lc(e)||e.copy===void 0?!1:(Array.isArray(e.copy)?e.copy:[e.copy]).some(e=>e.key===`session.conversation_unknown`)}function Uc(e,t){let n=wc(e,t);if(n.type===`error`)throw Vc(zc.parse(n),`internal`);return n}function Wc(e,t,n){let r=e.split(`
7
- `),i=r.pop()??``;for(let e of r)e.trim()&&n(Uc(t,e));return i}async function Gc(e,t,n,r){if(!e.body)throw new N(`bad_response`,`stream reply has no body`);let i=e.body.getReader(),a=new TextDecoder,o=``,s=()=>{i.cancel()};r?.addEventListener(`abort`,s,{once:!0});try{for(;;){Ve(r);let{done:e,value:s}=await i.read();if(e)break;o=Wc(o+a.decode(s,{stream:!0}),t,n)}let e=o.trim();e&&n(Uc(t,e))}finally{r?.removeEventListener(`abort`,s)}}async function Kc(e){let t=typeof e.headers==`function`?await e.headers():e.headers,n=new Headers(t);return n.set(`content-type`,`application/json`),n}async function qc(e,t){let n=await e.text(),r;try{r=JSON.parse(n),t?.(r)}catch{return Vc({errorInternal:`HTTP ${String(e.status)}`},ie(e.status))}let i=zc.safeParse(r);return i.success?Vc({...i.data,errorInternal:i.data.errorInternal??`HTTP ${String(e.status)}`},ie(e.status)):new N(`bad_response`,`HTTP ${String(e.status)} error body failed its wire check`)}async function Jc(e,t,n){let r=n.fetch??globalThis.fetch.bind(globalThis);try{return await r(e,{...t,headers:await Kc(n),credentials:n.credentials??`same-origin`})}catch(e){throw T(e)?e:new N(`network`,se(e),{cause:e})}}async function Yc(e,t,n,r,i={}){await Gc(await Xc(e,t,i),n,r,i.signal)}async function Xc(e,t,n){let r=await Jc(e,{method:`POST`,body:JSON.stringify(t),signal:n.signal},n);if(!r.ok)throw await qc(r);return r}async function Zc(e,t,n={}){await Xc(e,t,n)}async function Q(e,t,n={}){let r=await Jc(e,{...t.body===void 0?{method:`GET`}:{method:`POST`,body:JSON.stringify(t.body)},signal:t.signal},n);if(!r.ok)throw await qc(r,t.failed);return Tc(await r.text())}async function Qc(e,t,n={}){let{signal:r,...i}=n;return Z(Pc,await Q(e,{body:t,signal:r},i),`the conversation`)}async function $c(e,t,n,r){let{signal:i,...a}=n;return Z(Fc,await Q(e,{body:t,signal:i},a),r)}function el(e,t,n={}){return $c(e,t,n,`the rewound conversation`)}function tl(e,t,n={}){return $c(e,t,n,`the started conversation`)}function nl(e){let t=e.length;for(;t>0&&e[t-1]===`/`;)--t;return e.slice(0,t)}var rl=v({interface:J});function il(e={}){let t=nl(e.endpoint??`/api/theorem`);return{async describe(n){let r=await Jc(t,{method:`GET`,signal:n},e);if(!r.ok)throw await qc(r);return Z(rl,Tc(await r.text()),`the profile description`).interface},turn:({replay:n,...r},i,a)=>Yc(`${t}/turn`,r,Nc,i,{...e,signal:a}),invoke:({replay:n,...r},i,a)=>Yc(`${t}/invoke`,r,Nc,i,{...e,signal:a}),conversation:(n,r)=>Qc(`${t}/conversation`,n,{...e,signal:r}),rewind:(n,r)=>el(`${t}/rewind`,n,{...e,signal:r}),pageResult:(n,r)=>Zc(`${t}/page-result`,n,{...e,signal:r}),steer:n=>Zc(`${t}/steer`,n,e)}}function al(e,t){if(typeof e==`string`)return e;let n=Array.isArray(e)?e:Object.keys(e);return n.length?al(n[0],t):t}function ol(e){return e===void 0?{}:{field:e}}function sl(e){if(typeof e==`string`)return/\x60([^\x60\s]+)\x60/.exec(e)?.[1];let t=Array.isArray(e)?e:Object.values(e);for(let e of t){let t=sl(e);if(t!==void 0)return t}}function cl(e,t,n){return{type:`decision`,identity:{handle:e.identity.handle},contract:e.decision.contract,...e.inputs.maxStateBytes===void 0?{}:{maxStateBytes:e.inputs.maxStateBytes},questions:Object.entries(t).map(([e,t])=>({id:e,type:t.type,labels:t.type===`choice`?Object.keys(t.criteria):t.type===`score`?t.criteria.map((e,t)=>al(e,String(t))):[],...t.type===`box`?ol(t.image??sl(t.instructions)):{}})),...n&&Object.keys(n).length>0?{images:n}:{},...e.observability?{observability:{record:Bt(e.observability).record}}:{}}}function ll(e,t){let n=Object.keys(t??{}).find(t=>e&&Object.hasOwn(e,t));if(n!==void 0)throw new N(`request`,`the image ${n} is the host's, so the page's needs another name`);let r={...e,...t};return Object.keys(r).length>0?r:void 0}var $=h().min(0).max(1),ul=_(g(),$).refine(e=>Math.abs(Object.values(e).reduce((e,t)=>e+t,0)-1)<=.001),dl=f(`type`,[v({type:c(`choice`),choice:g(),confidence:$,probabilities:ul}),v({type:c(`noul`),noul:$}),v({type:c(`box`),box:v({top:$,bottom:$,left:$,right:$}),confidence:$}),v({type:c(`score`),score:h().nonnegative(),confidence:$,legend:_(g(),g().min(1)),probabilities:ul})]),fl=v({result:v({model:g().min(1),answers:_(g(),dl),usage:v({inputTokens:h().int().nonnegative(),outputTokens:h().int().nonnegative(),costUsd:h().nonnegative().optional()}).optional()}),traces:l(Ht).optional()}),pl=new WeakMap;function ml(e,t){return t.length>0&&typeof e==`object`&&e&&pl.set(e,t),e}function hl(e){return typeof e==`object`&&!!e&&pl.get(e)||[]}var gl=v({traces:l(Ht)});async function _l(e,t,n,r,i){let a=[],o=e=>{let t=gl.safeParse(e);t.success&&(a=t.data.traces)};try{return i(await Q(e,{body:t,signal:n,failed:o},r))}catch(e){throw ml(e,a)}}function vl(e,t,n,r={}){return _l(e,t,n,r,yl)}function yl(e){return Z(fl,e,`the decision`)}var bl=v({interface:v({type:c(`decision`),identity:v({handle:g()}),contract:g(),maxStateBytes:h().optional(),questions:l(v({id:g(),type:d([`choice`,`noul`,`score`,`box`]),labels:l(g()),field:g().optional()})),images:_(g(),v({mimeType:d([`image/png`,`image/jpeg`]),data:g()})).optional(),observability:v({record:o()}).optional()})});function xl(e={}){let t=(e.endpoint??`/api/decision`).replace(/\/$/,``);return{async describe(n){return Z(bl,await Q(t,{signal:n},e),`the decision description`).interface},decide:(n,r,i)=>vl(`${t}/decide`,{state:n,...i?{assets:i}:{}},r,e)}}function Sl(e,t,n={}){let r={name:t.name,description:t.description,category:t.category,access:t.access,paths:t.paths,loadTier:t.loadTier,permission:t.permission,...t.labels?{labels:t.labels}:{}};if(t.type===`agent`){e.register({...r,type:`agent`,profile:t.profile,...t.maxCallsPerTurn===void 0?{}:{maxCallsPerTurn:t.maxCallsPerTurn}});return}let i={...r,input:Fe(t.inputSchema),output:Fe(t.outputSchema)};if(t.type===`http`){e.register({...i,type:`http`,endpoint:t.endpoint,method:t.method,headers:t.headers,mapping:t.mapping,auth:t.auth});return}if(t.type===`mcp`){e.register({...i,type:`mcp`,serverUrl:t.serverUrl,mcpToolName:t.mcpToolName,headers:t.headers,auth:t.auth});return}if(t.answeredBy===`page`){e.register({...i,type:`function`,answeredBy:`page`});return}let a=t.stubResponse||!Object.hasOwn(n,t.name)?void 0:n[t.name],o=t.stubResponse??Wt(t.outputSchema);e.register({...i,type:`function`,handler:a?e=>{try{return Promise.resolve(a(e))}catch(e){return Promise.reject(e instanceof Error?e:Error(String(e)))}}:()=>Promise.resolve(o)})}function Cl(e,t,n){e.registerMany(E);for(let r of t)Sl(e,r,n)}function wl(e,t,n,r,i){return Cl(e.tools,n,i),r&&t.type!==`live`&&e.schemas.register(r.id,r.spec),e.profiles.register(t),t}function Tl(e){if(e.type===`error`&&e.errorInternal!==void 0){let{errorInternal:t,...n}=e;return{...n,error:t}}if(e.type===`session`&&e.session.kind===`ended`&&e.errorInternal!==void 0){let{errorInternal:t,...n}=e;return{...n,session:{...e.session,message:t}}}if(e.type===`tool`&&e.tool.phase===`error`&&e.tool.failure.error!==void 0){let{failure:t}=e.tool;return{...e,tool:{...e.tool,failure:{...t,error:t.message}}}}return e}function El(e){if(e.type!==`error`&&e.type!==`session`&&e.type!==`tool`||e.errorInternal===void 0)return e;let{errorInternal:t,...n}=e;return n}function Dl(e){if(e.type!==`guardrail`||!e.guardrail?.errorInternal)return e;let{errorInternal:t,...n}=e.guardrail;return{...e,guardrail:n}}function Ol(e){if(e.type!==`evidence`||!e.evidence?.raw)return e;let{raw:t,...n}=e.evidence;return{...e,evidence:n}}function kl(e,t){let n=t?.reader===`builder`?Tl(e):Dl(El(e));return t?.includeEvidenceRaw||(n=Ol(n)),n=Kt(n,!1),n}function Al(e,t){return e.map(e=>kl(e,t))}function jl(e,t,n){let{error:r=``,errorKind:i,errorCopy:a}=kl(ge(ee(e),t),n);return{error:r,errorKind:i,...a?{errorCopy:a}:{}}}var Ml={reader:`builder`};function Nl(e){return e.mode===`demo`?{reader:`visitor`}:Ml}export{Ma as $,wc as A,jr as At,js as B,Hn as Bt,Bc as C,Jr as Ct,Yc as D,Vr as Dt,Zc as E,Ur as Et,Ls as F,yr as Ft,Xa as G,Ln as Gt,ds as H,Vn as Ht,ps as I,lr as It,Ja as J,I as Jt,Ya as K,Xt as Kt,gs as L,ur as Lt,X as M,Rr as Mt,lc as N,Lr as Nt,Z as O,zr as Ot,Rs as P,Er as Pt,ya as Q,Ds as R,dr as Rt,Vc as S,K as St,Hc as T,li as Tt,Wo as U,W as Ut,Ms as V,Bn as Vt,co as W,Rn as Wt,Va as X,Ba as Y,Kt as Yt,Ha as Z,il as _,gi as _t,Al as a,_a as at,el as b,ci as bt,xl as c,va as ct,hl as d,Ui as dt,Oa as et,vl as f,na as ft,Ic as g,Ni as gt,Nc as h,Fi as ht,kl as i,Da as it,Sc as j,Fr as jt,yc as k,Ir as kt,ll as l,ha as lt,ml as m,Li as mt,Nl as n,ka as nt,wl as o,fa as ot,_l as p,$i as pt,qa as q,Gt as qt,jl as r,Fa as rt,Cl as s,ma as st,Ml as t,Pa as tt,cl as u,ga as ut,Qc as v,ai as vt,Lc as w,qr as wt,tl as x,ii as xt,Q as y,oi as yt,ms as z,Un as zt};
@@ -1,3 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,u as n}from"./themeProps-3IqahpCr.js";import{l as r,n as i,t as a,u as o}from"./SegmentedControlItem-BLuJOusN.js";import{t as s}from"./VStack-CkVMcNiK.js";import{n as c,t as l}from"./StackItem-CQviqAfM.js";import{d as u,l as d}from"./browser-transport-DxpDmXGb.js";import{d as f,g as p}from"./fieldParts-Cs6Amprh.js";import{r as m,t as ee}from"./IconButton-CG5klqF1.js";import{a as h,g as te,i as ne,l as g,s as re,u as ie}from"./SidePanel-OYp0bLNO.js";import{t as _}from"./Text-BsiAsowd.js";import{n as v}from"./labels-provider-BqgbdxdT.js";import{n as ae,t as y}from"./Card-Ghe4ozhC.js";import{n as b}from"./ScrollableArea-C8AVuqnt.js";import{i as x}from"./Banner-B1Vat7i_.js";import{a as oe}from"./arrive-DvbqpeRS.js";import{t as se}from"./Center-nHS1JSux.js";import{a as S,o as ce}from"./shaped-data-0GUF7Al3.js";import{n as C}from"./trace-patterns-CS99kExN.js";import{D as le,T as ue,b as w,c as de,jt as fe,v as pe,y as T}from"./index-C3mDKoGG.js";var E=e(n(),1),me=new Set([`image/png`,`image/jpeg`]),D=`image/png,image/jpeg`;function he(e,t){let n=e.replace(/\.[^.]*$/,``).toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``)||`image`,r=`<${n}>`;for(let e=2;t.includes(r);e+=1)r=`<${n}_${String(e)}>`;return r}async function O(e){if(!me.has(e.type))return null;let t=new Uint8Array(await e.arrayBuffer()),n=``;for(let e=0;e<t.length;e+=32768)n+=String.fromCharCode(...t.subarray(e,e+32768));return{mimeType:e.type,data:btoa(n)}}function k(e){return`data:${e.mimeType};base64,${e.data}`}function A(e,t){return typeof e==`string`?e===t:Array.isArray(e)?e.some(e=>A(e,t)):typeof e==`object`&&e?Object.values(e).some(e=>A(e,t)):!1}function j(e,t){return Object.fromEntries(Object.entries(e).filter(([e])=>A(t,e)))}function M(e,t,n){let r=he(e,[...Object.keys(t),...n.map(e=>`<${e}>`)]);return{key:r.slice(1,-1),reference:r}}function N(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function P(e,t){let{images:n,state:r}=t;for(let[i,a]of e){let{key:e,reference:o}=M(i.name,{...t.host,...n},Object.keys(r));n={...n,[o]:a},r={...r,[e]:o}}return{images:n,state:r}}function F(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=Array.isArray(n)?n[Number(e)]:n[e]}return n}function I(e,t,n){let r=Object.keys(e),i=n===void 0||n in e?n:F(t,n);return e[(typeof i==`string`&&i in e?i:void 0)??r.find(e=>A(t,e))??r[0]??``]}function L(e,t,n){return{x:e.left*t,y:e.top*n,width:(e.right-e.left)*t,height:(e.bottom-e.top)*n,line:Math.max(2,Math.round(Math.min(t,n)/200))}}var R=.45;async function ge(e,t,n){let r=new Image;r.src=e,await r.decode();let i=document.createElement(`canvas`);i.width=r.naturalWidth,i.height=r.naturalHeight;let a=i.getContext(`2d`);if(!a)return e;let o=L(t,i.width,i.height);return a.drawImage(r,0,0),a.fillStyle=n.shade,a.globalAlpha=R,a.beginPath(),a.rect(0,0,i.width,i.height),a.rect(o.x,o.y,o.width,o.height),a.fill(`evenodd`),a.globalAlpha=1,a.strokeStyle=n.outline,a.lineWidth=o.line,a.strokeRect(o.x,o.y,o.width,o.height),i.toDataURL(`image/png`)}function _e(e){let t=e.right-e.left,n=e.bottom-e.top;return{width:100/t,height:100/n,left:-e.left/t*100,top:-e.top/n*100}}function ve(e){return e.every(e=>typeof e==`string`)}function z(e){return e==null||typeof e==`string`?``:typeof e==`number`?0:typeof e==`boolean`?!1:Array.isArray(e)?[]:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,z(t)]))}function ye(e){let t=e[0];if(typeof t!=`object`||!t||Array.isArray(t))return null;let n=Object.keys(t);return n.length===0||n.length>4||!e.every(e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.keys(e).join()===n.join()&&Object.values(e).every(e=>typeof e!=`object`||!e))?null:n.map(t=>{let n=e.map(e=>String(e[t]??``).length),r=Math.max(t.length,...n);return{key:t,weight:Math.min(4,Math.max(1,Math.round(r/10)))}})}var B=t();function be(e){return e===null?[]:Array.isArray(e)?e:[e]}function V(){let e=v(),[t,n]=(0,E.useState)(null);return{read:async e=>{n(null);let t=[];for(let r of be(e)){let e=await O(r);e?t.push([r,e]):n(r.name)}return t},status:t===null?void 0:{type:`error`,message:e(`@theorem.decision.image_bad`,{file:t})}}}function xe({onImages:e}){let t=v(),{read:n,status:r}=V();return(0,B.jsx)(T,{label:t(`@theorem.decision.add_image`),isLabelHidden:!0,mode:`dropzone`,isMultiple:!0,accept:D,value:null,placeholder:t(`@theorem.decision.add_image_hint`),status:r,statusVariant:`detached`,onChange:t=>{n(t).then(t=>{t.length>0&&e(t)})}})}var Se={search:()=>[],bootstrap:()=>[]},Ce=48;function H(e,t,n){return Math.min(Math.max(e.split(`
2
- `).length,t),n)}var U=(0,E.createContext)({images:{},onImages:()=>{}});function we({value:e,label:t,isLabelHidden:n}){let r=v(),{images:i,onImages:a}=(0,E.useContext)(U),{read:o,status:s}=V(),[f,p]=(0,E.useState)(!1),m=Object.hasOwn(i,e)?k(i[e]):void 0;return(0,B.jsxs)(c,{gap:2,vAlign:`center`,children:[(0,B.jsx)(u,{src:m,alt:t,label:e,onClick:m?()=>p(!0):void 0}),m?(0,B.jsx)(d,{isOpen:f,onOpenChange:p,media:{src:m,alt:t,caption:e},hasZoom:!0}):null,(0,B.jsx)(l,{size:`fill`,children:(0,B.jsx)(T,{label:t,isLabelHidden:n,accept:D,value:null,placeholder:r(`@theorem.decision.replace_image`),status:s,statusVariant:`detached`,onChange:t=>{o(t).then(([t])=>{t&&a({...i,[e]:t[1]})})}})})]})}function W({value:e,onChange:t,label:n,isLabelHidden:r}){let{images:i}=(0,E.useContext)(U),[a]=(0,E.useState)(()=>typeof e==`string`&&(e.length>Ce||e.includes(`
3
- `))),[o]=(0,E.useState)(()=>typeof e==`string`&&Object.hasOwn(i,e));if(o&&typeof e==`string`)return(0,B.jsx)(we,{value:e,label:n,isLabelHidden:r});if(typeof e==`boolean`)return(0,B.jsx)(pe,{label:n,value:e,onChange:t});if(typeof e==`number`)return(0,B.jsx)(le,{label:n,isLabelHidden:r,size:`sm`,value:e,isWheelEnabled:!1,onChange:t});if(e===null)return(0,B.jsx)(b,{label:n,isLabelHidden:r,size:`sm`,value:``,placeholder:`null`,isDisabled:!0,onChange:()=>{}});let s=String(e);return a?(0,B.jsx)(w,{label:n,isLabelHidden:r,size:`sm`,rows:H(s,2,12),value:s,onChange:t}):(0,B.jsx)(b,{label:n,isLabelHidden:r,size:`sm`,value:s,onChange:t})}function G({label:e,isRequired:t,description:n,children:r}){let i=(0,E.useId)();return(0,B.jsxs)(s,{gap:2,role:`group`,"aria-labelledby":i,children:[(0,B.jsx)(f,{label:e,inputID:``,labelID:i,isGroupLabel:!0,isRequired:t,description:n}),r]})}function K({children:e,...t}){return(0,B.jsx)(G,{...t,children:(0,B.jsx)(`div`,{style:{paddingInlineStart:12,borderInlineStart:`1px solid var(--color-border)`},children:e})})}function q({field:e,onAdd:t}){let n=v();return(0,B.jsx)(c,{children:(0,B.jsx)(m,{label:n(`@theorem.decision.add_item`,{field:e}),size:`sm`,variant:`ghost`,icon:(0,B.jsx)(fe,{size:14}),onClick:t})})}function J({index:e,onRemove:t}){let n=v();return(0,B.jsx)(ee,{label:n(`@theorem.decision.remove_item`,{item:n(`@theorem.data.item`,{index:String(e+1)})}),size:`sm`,variant:`ghost`,icon:(0,B.jsx)(p,{size:14}),onClick:t})}function Y({value:e,onChange:t}){return(0,B.jsx)(s,{gap:3,children:Object.entries(e).map(([n,r])=>(0,B.jsx)(X,{label:S(n),value:r,onChange:r=>t({...e,[n]:r})},n))})}function Te({value:e,onChange:t,label:n}){let r=v(),i=oe(e);if(ve(e))return(0,B.jsx)(ue,{label:n,size:`sm`,value:e.map((e,t)=>({id:`${String(t)}:${e}`,label:e})),searchSource:Se,hasCreate:!0,debounceMs:0,placeholder:r(`@theorem.decision.add_value`),onChange:e=>t(e.map(e=>e.label))});let a=ye(e),o=(0,B.jsx)(q,{field:n,onAdd:()=>t([...e,z(e.at(-1))])}),u=n=>(0,B.jsx)(J,{index:n,onRemove:()=>{i.drop(n),t(e.filter((e,t)=>t!==n))}});if(a){let r={display:`grid`,gap:8,alignItems:`start`,gridTemplateColumns:`${a.map(e=>`minmax(0, ${String(e.weight)}fr)`).join(` `)} auto`},s=e;return(0,B.jsxs)(G,{label:n,children:[(0,B.jsxs)(`div`,{style:r,"aria-hidden":!0,children:[a.map(e=>(0,B.jsx)(_,{type:`supporting`,color:`secondary`,maxLines:1,children:S(e.key)},e.key)),(0,B.jsx)(`span`,{style:{width:28}})]}),i.rows.map(({index:e,key:n})=>{let i=s[e];return(0,B.jsxs)(`div`,{style:r,children:[a.map(n=>(0,B.jsx)(W,{label:`${S(n.key)} ${String(e+1)}`,isLabelHidden:!0,value:i[n.key]??null,onChange:r=>t(s.map((t,i)=>i===e?{...t,[n.key]:r}:t))},n.key)),u(e)]},n)}),o]})}return(0,B.jsx)(K,{label:n,children:(0,B.jsxs)(s,{gap:3,children:[i.rows.map(({item:n,index:i,key:a})=>{let o=r(`@theorem.data.item`,{index:String(i+1)}),s=n=>t(e.map((e,t)=>t===i?n:e));return(0,B.jsxs)(c,{gap:2,vAlign:`start`,children:[(0,B.jsx)(l,{size:`fill`,children:ce(n)?(0,B.jsx)(W,{label:o,isLabelHidden:!0,value:n,onChange:s}):(0,B.jsx)(X,{label:o,value:n,onChange:s})}),u(i)]},a)}),o]})})}function X({value:e,onChange:t,label:n}){return Array.isArray(e)?(0,B.jsx)(Te,{label:n,value:e,onChange:t}):typeof e==`object`&&e?(0,B.jsx)(K,{label:n,children:(0,B.jsx)(Y,{value:e,onChange:t})}):(0,B.jsx)(W,{label:n,value:e,onChange:t})}function Ee({value:e,onChange:t,label:n}){return typeof e==`object`&&e&&!Array.isArray(e)?(0,B.jsx)(Y,{value:e,onChange:t}):(0,B.jsx)(X,{label:n,value:e,onChange:t})}var De={"--theorem-console-card":`var(--color-background-muted)`},Z=`(width < 768px)`,Q=(0,E.createContext)(!0);function $(){return(0,E.useSyncExternalStore)(e=>{let t=globalThis.matchMedia(Z);return t.addEventListener(`change`,e),()=>{t.removeEventListener(`change`,e)}},()=>globalThis.matchMedia(Z).matches,()=>!1)}function Oe({flush:e,wide:t,maxWidth:n,children:r}){return(0,B.jsx)(s,{height:`100%`,paddingInline:3,style:e?De:void 0,children:(0,B.jsx)(y,{variant:`transparent`,height:`100%`,padding:0,style:e?{overflowY:`auto`}:{...re,overflowY:`auto`},children:(0,B.jsx)(se,{axis:`horizontal`,width:`100%`,minHeight:`100%`,children:(0,B.jsx)(s,{width:`100%`,maxWidth:t?void 0:n,gap:3,padding:4,children:r})})})})}function ke({inspector:e,maxWidth:t,flush:n=!1,columns:i=!1,requestLabel:a,className:s,style:c,children:l}){let u=(0,E.useRef)(null);return(0,B.jsx)(x,{inspector:e,children:(0,B.jsx)(o,{ref:u,height:`fill`,className:s,style:c,header:e.toggle?(0,B.jsx)(ie,{children:e.toggle}):void 0,content:(0,B.jsx)(r,{padding:0,isScrollable:!1,children:(0,B.jsx)(Ae,{layoutRef:u,flush:n,columns:i,maxWidth:t,requestLabel:a,children:l})})})})}function Ae({layoutRef:e,flush:t,columns:n,maxWidth:r,requestLabel:i,children:a}){let o=$(),s=E.Children.toArray(a).length,c=n&&s>1;return c&&!o?(0,B.jsx)(je,{requestLabel:i,basisWidth:e.current?.clientWidth??0,children:a}):(0,B.jsx)(Oe,{flush:t,wide:c,maxWidth:r,children:a})}function je({requestLabel:e=`Request`,basisWidth:t,children:n}){let i=v(),a=(0,E.useRef)(null),s=te({defaultSize:t>0?Math.round(t*.4):`40%`,minSize:280,maxSize:`70%`,containerRef:a}),[c,l]=E.Children.toArray(n),u={name:e,show:e,hide:e,resize:i(`@theorem.panel.resize`,{name:e})};return(0,B.jsx)(Q,{value:!1,children:(0,B.jsx)(o,{ref:a,height:`fill`,start:(0,B.jsx)(g,{side:`start`,className:`theorem-console-request`,labels:u,resizable:s,open:!0,children:(0,B.jsx)(h,{label:e,children:c})}),content:(0,B.jsx)(r,{padding:0,isScrollable:!1,children:(0,B.jsx)(ne,{inset:`beside`,className:`theorem-console-response`,children:l})})})})}function Me({children:e}){return(0,B.jsx)(y,{variant:`muted`,padding:0,className:`theorem-console-card`,style:C,children:(0,B.jsx)(Q,{value:!1,children:e})})}function Ne({label:e,fill:t=!1,children:n}){return(0,E.use)(Q)?(0,B.jsx)(y,{variant:`muted`,padding:t?0:4,className:`theorem-console-card`,style:C,children:t?n:(0,B.jsx)(s,{height:`100%`,gap:3,children:n})}):t?n:(0,B.jsx)(h,{label:e,padding:4,children:n})}function Pe(e){return t=>{t.key===`Enter`&&(t.metaKey||t.ctrlKey)&&(t.preventDefault(),e())}}function Fe({title:e,view:t,hasFields:n,onView:r,onRun:o,children:l}){let u=v(),d=(0,E.use)(Q),f=(0,B.jsxs)(s,{gap:3,padding:d?void 0:4,onKeyDown:Pe(o),children:[(0,B.jsxs)(c,{gap:2,hAlign:`between`,vAlign:`center`,children:[(0,B.jsx)(_,{type:`supporting`,color:`secondary`,as:`h3`,children:e}),(0,B.jsxs)(i,{label:u(`@theorem.decision.view`),size:`sm`,value:t,onChange:e=>{r(e===`json`?`json`:`fields`)},children:[(0,B.jsx)(a,{value:`fields`,label:u(`@theorem.decision.fields`),isDisabled:!n}),(0,B.jsx)(a,{value:`json`,label:u(`@theorem.data.json`)})]})]}),l]});return d?(0,B.jsx)(y,{variant:`muted`,padding:4,className:`theorem-console-card`,style:C,children:f}):f}var Ie={"--font-family-body":`var(--font-family-code)`};function Le({label:e,text:t,isInvalid:n,onChange:r}){return(0,B.jsx)(w,{label:e,isLabelHidden:!0,value:t,onChange:r,rows:H(t,8,24),hasSpellCheck:!1,status:n?{type:`error`}:void 0,controlStyle:Ie})}function Re({note:e,isReady:t,isRunning:n,runLabel:r,runningLabel:i,stopLabel:a,onRun:o,onStop:s}){return(0,B.jsxs)(c,{gap:3,hAlign:`between`,vAlign:`center`,children:[(0,B.jsx)(_,{type:`supporting`,color:`secondary`,style:t?void 0:{color:`var(--color-error)`},hasTabularNumbers:!0,children:e}),(0,B.jsxs)(c,{gap:2,vAlign:`center`,children:[n?(0,B.jsx)(m,{label:a,variant:`ghost`,onClick:s}):null,(0,B.jsx)(m,{label:n?i:r,variant:`primary`,isLoading:n,isDisabled:!t,onClick:o})]})]})}function ze(){let e=ae();return(0,E.useMemo)(()=>{let t=new Intl.NumberFormat(e,{style:`unit`,unit:`byte`,unitDisplay:`narrow`}),n=new Intl.NumberFormat(e,{style:`unit`,unit:`kilobyte`,unitDisplay:`narrow`,maximumFractionDigits:1});return e=>e<1024?t.format(e):n.format(e/1024)},[e])}function Be({payload:e,runtime:t=null,traces:n,onActivity:r},i,a){return(0,E.useMemo)(()=>{let o=t?a(e,t,{traces:n}):i(e,{traces:n});return r?de(o,r):o},[e,t,n,r,i,a])}export{N as C,j as S,I as _,Fe as a,k as b,ze as c,G as d,J as f,xe as g,H as h,Le as i,q as l,U as m,ke as n,Ne as o,Ee as p,Me as r,Re as s,Be as t,K as u,_e as v,ge as x,P as y};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,u as n}from"./themeProps-3IqahpCr.js";import{c as r,m as i,n as a,s as o}from"./browser-transport-DxpDmXGb.js";import{n as s,t as c}from"./labels-provider-BqgbdxdT.js";import{a as l,t as u}from"./Banner-B1Vat7i_.js";import{c as d}from"./reader-paEmSrWc.js";import{p as f,u as p}from"./tree-BxX70aqA.js";import{n as m,t as h}from"./PaneState-C8jetBGI.js";import{C as g,S as _,a as v,c as y,g as b,i as x,m as S,n as C,o as w,p as T,s as E,t as D,y as O}from"./studio-console-1qIWsDtV.js";import{i as k,t as A}from"./use-one-call-BVmuHLSm.js";import{d as j,nt as M,tt as N}from"./index-C3mDKoGG.js";var P=(e,t,n,r)=>e.decide(n,t,r);function F(e){let{iface:t,describeFailure:n}=r(e),{call:i,...a}=A(e,`deciding`,P);return{iface:t,describeFailure:n,...a,decide:i}}var I=e(n(),1),L=t();function R(e,t){let n;try{n=JSON.parse(e)}catch{return{ok:!1,reason:`invalid_json`}}if(n===null)return{ok:!1,reason:`null_state`,state:n};let r=new TextEncoder().encode(JSON.stringify(n)).byteLength;return t!==void 0&&r>t?{ok:!1,reason:`too_large`,bytes:r,state:n}:{ok:!0,state:n,bytes:r}}function z(e,t,n,r){return t.ok?n===void 0?null:e(`@theorem.decision.state_size`,{size:r(t.bytes),limit:r(n)}):t.reason===`too_large`?e(`@theorem.decision.too_large`,{limit:r(n??0)}):e(t.reason===`invalid_json`?`@theorem.decision.invalid_json`:`@theorem.decision.null_state`)}function B(e){return e.failure||e.result?`settled`:e.status===`deciding`?`waiting`:`idle`}function V(e,t){let[n,r]=(0,I.useState)(e),i=R(n,t),[a,o]=(0,I.useState)(()=>i.state===void 0?`json`:`fields`);return{text:n,setText:r,check:i,shown:i.state===void 0?`json`:a,setView:o}}function H({form:e,iface:t,images:n,onImages:r,note:i,isRunning:a,onRun:o,onStop:c}){let l=s(),{text:u,setText:d,check:f,shown:p,setView:m}=e,h=t.questions.some(e=>e.type===`box`)||Object.keys(n).length>0,_=p===`fields`?f.state:void 0,y=g(_);return(0,L.jsxs)(v,{title:l(`@theorem.decision.state`),view:p,hasFields:f.state!==void 0,onView:m,onRun:o,children:[_===void 0?(0,L.jsx)(x,{label:l(`@theorem.decision.state`),text:u,isInvalid:!f.ok,onChange:d}):(0,L.jsx)(S,{value:{images:n,onImages:r},children:(0,L.jsx)(T,{label:l(`@theorem.decision.state`),value:_,onChange:e=>{d(JSON.stringify(e,null,2))}})}),h&&y?(0,L.jsx)(b,{onImages:e=>{let i=O(e,{images:n,host:t.images,state:y});r(i.images),d(JSON.stringify(i.state,null,2))}}):null,(0,L.jsx)(E,{note:i,isReady:f.ok,isRunning:a,runLabel:l(`@theorem.decision.decide`),runningLabel:l(`@theorem.decision.deciding`),stopLabel:l(`@theorem.decision.stop`),onRun:o,onStop:c})]})}function U({iface:e,decision:t,asked:n,onQuestion:r,questionText:i}){let a=s(),o=t.status===`deciding`;return(0,L.jsxs)(L.Fragment,{children:[t.failure?(0,L.jsx)(u,{status:`error`,role:`alert`,title:t.failure.error}):null,o&&!t.result?(0,L.jsx)(m,{label:a(`@theorem.decision.deciding`),since:t.startedAt}):null,t.result?(0,L.jsx)(k,{iface:e,result:t.result,asked:n,onQuestion:r,questionText:i,elapsedMs:t.elapsedMs,isStale:o}):null]})}function W(e,t,n,r,i){if(t===`idle`)return null;if(!e)return i;let a=t===`waiting`;return(0,L.jsx)(w,{label:n.answers,fill:a,children:a?(0,L.jsx)(m,{label:n.deciding,since:r}):i})}function G({transport:e,iface:t,decision:n,defaultState:r=`{}`,defaultImages:i,onQuestion:a,questionText:o,maxWidth:c=`960px`,trace:u,flush:d,columns:f=!1,className:p,style:m}){let h=s(),g=y(),v=V(r,t.maxStateBytes),{check:b}=v,[x,S]=(0,I.useState)(i??{}),[w,T]=(0,I.useState)(),E=l(t,e.traces,u);return(0,L.jsxs)(C,{inspector:E,maxWidth:c,flush:d,columns:f,requestLabel:h(`@theorem.decision.state`),className:p,style:m,children:[(0,L.jsx)(H,{form:v,iface:t,images:x,onImages:S,note:z(h,b,t.maxStateBytes,g),isRunning:n.status===`deciding`,onRun:()=>{if(!b.ok)return;let e=_(x,b.state);T({images:{...t.images,...e},state:b.state}),n.decide(b.state,Object.keys(e).length>0?e:void 0)},onStop:n.cancel}),W(f,B(n),{answers:h(`@theorem.decision.answers`),deciding:h(`@theorem.decision.deciding`)},n.startedAt,(0,L.jsx)(U,{iface:t,decision:n,asked:w,onQuestion:a,questionText:o}))]})}function K(e){let t=s(),n=F(e.transport);return n.describeFailure?(0,L.jsx)(h,{title:n.describeFailure.error}):n.iface?(0,L.jsx)(G,{...e,iface:n.iface,decision:n}):(0,L.jsx)(m,{label:t(`@theorem.chat.loading`)})}function q({endpoint:e,http:t,transport:n,theme:r,mode:i,labels:a,...s}){let l=(0,I.useRef)(t);l.current=t;let u=(0,I.useMemo)(()=>n??d({...l.current,endpoint:e}),[n,e]);return(0,L.jsx)(o,{theme:r,mode:i,children:(0,L.jsx)(c,{labels:a,children:(0,L.jsx)(K,{...s,transport:u})})})}var J;function Y(e){if(e.agentId===`pantry.jev`)return J??=M(),{defaultState:N,defaultImages:{...(0,I.use)(J)}};let{profile:t}=e;return{defaultState:(t.type===`decision`?Object.values(t.models)[0]:void 0)?.apiId.startsWith(`respan/`)?f:p}}function X(e){return typeof e==`string`?e:Array.isArray(e)?e.map(X).join(` `):Object.entries(e).map(([e,t])=>`${e}: ${X(t)}`).join(` `)}function Z(e){let t=D(e,i,a);return(0,L.jsx)(Q,{...e,transport:t})}function Q({payload:e,transport:t,trace:n,flush:r,columns:i,className:a}){let{open:o}=(0,I.useContext)(j),s=Y(e),{questions:c}=e,l=(0,I.useMemo)(()=>c&&Object.fromEntries(Object.entries(c).map(([e,t])=>[e,X(t.instructions)])),[c]);return(0,L.jsx)(q,{transport:t,...s,trace:n,flush:r,columns:i,className:a,onQuestion:o,questionText:l})}export{Q as DecisionView,Z as StudioDecision};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/embedding-space-view-BU2AjjAx.js","assets/rolldown-runtime-hePW80VL.js","assets/themeProps-3IqahpCr.js","assets/Text-BsiAsowd.js","assets/mergeProps-ptS-gIMz.js","assets/sharedResizeObserver-4U9Xq5Oq.js","assets/preload-helper-DpV6A1kQ.js"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,l as n,n as r,u as i}from"./themeProps-3IqahpCr.js";import{n as a,t as o}from"./SegmentedControlItem-BLuJOusN.js";import{t as s}from"./VStack-CkVMcNiK.js";import{n as c,t as l}from"./StackItem-CQviqAfM.js";import{N as u,c as d,d as f,h as p,r as m,s as h}from"./browser-transport-DxpDmXGb.js";import{t as g}from"./mergeProps-ptS-gIMz.js";import{g as _}from"./fieldParts-Cs6Amprh.js";import{t as v}from"./Icon-ZfFwTt8n.js";import{r as y,t as b}from"./IconButton-CG5klqF1.js";import{t as x}from"./Text-BsiAsowd.js";import{t as ee}from"./preload-helper-DpV6A1kQ.js";import{n as S,t as te}from"./labels-provider-BqgbdxdT.js";import{t as ne}from"./Tooltip-CTEuMRLe.js";import{t as C}from"./createReactComponent-CZwsv6DD.js";import{n as re}from"./ScrollableArea-C8AVuqnt.js";import{a as ie,o as ae,s as oe,t as w}from"./Banner-B1Vat7i_.js";import{i as se,t as ce}from"./arrive-DvbqpeRS.js";import{t as le}from"./IconFileText-6zOFKKrF.js";import{Et as ue,It as de,Rt as T}from"./reader-paEmSrWc.js";import{d as E,f as D}from"./tree-BxX70aqA.js";import{n as O}from"./encode-files-DZ4tVtEQ.js";import{n as k,t as fe}from"./PaneState-C8jetBGI.js";import{t as pe}from"./useClipboard-B1amtN2V.js";import{a as A,c as j,h as M,i as me,n as he,o as ge,r as _e,s as ve,t as ye}from"./studio-console-1qIWsDtV.js";import{i as be,r as xe}from"./trace-patterns-CS99kExN.js";import{a as Se,n as Ce,r as we,t as Te}from"./use-one-call-BVmuHLSm.js";import{b as Ee,h as De,y as Oe}from"./index-C3mDKoGG.js";var ke=C(`outline`,`baseline-density-medium`,`BaselineDensityMedium`,[[`path`,{d:`M4 20h16`,key:`svg-0`}],[`path`,{d:`M4 12h16`,key:`svg-1`}],[`path`,{d:`M4 4h16`,key:`svg-2`}]]),Ae=C(`outline`,`csv`,`Csv`,[[`path`,{d:`M10 15a1 1 0 0 0 1 1h2a1 1 0 0 0 1 -1v-2a1 1 0 0 0 -1 -1h-2a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1`,key:`svg-0`}],[`path`,{d:`M17 8l2 8l2 -8`,key:`svg-1`}],[`path`,{d:`M7 10a2 2 0 1 0 -4 0v4a2 2 0 1 0 4 0`,key:`svg-2`}]]),je=C(`outline`,`pilcrow`,`Pilcrow`,[[`path`,{d:`M13 4v16`,key:`svg-0`}],[`path`,{d:`M17 4v16`,key:`svg-1`}],[`path`,{d:`M19 4h-9.5a4.5 4.5 0 0 0 0 9h3.5`,key:`svg-2`}]]),Me=C(`outline`,`scissors`,`Scissors`,[[`path`,{d:`M3 7a3 3 0 1 0 6 0a3 3 0 1 0 -6 0`,key:`svg-0`}],[`path`,{d:`M3 17a3 3 0 1 0 6 0a3 3 0 1 0 -6 0`,key:`svg-1`}],[`path`,{d:`M8.6 8.6l10.4 10.4`,key:`svg-2`}],[`path`,{d:`M8.6 15.4l10.4 -10.4`,key:`svg-3`}]]);function Ne(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.type===`text`?typeof t.text==`string`:typeof t.mimeType==`string`?t.type===`media`?typeof t.data==`string`:t.type===`media-ref`&&typeof t.uri==`string`:!1}function Pe(e){if(typeof e==`string`)return!0;if(typeof e!=`object`||!e)return!1;let t=e.parts;return Array.isArray(t)&&t.every(Ne)}function N(e){let t;try{t=JSON.parse(e)}catch{return}return Array.isArray(t)&&t.every(Pe)?t:void 0}function P(e){return typeof e==`string`?[{type:`text`,text:e}]:e.parts}function Fe(e){let t;try{t=JSON.parse(e)}catch{return}return Pe(t)?t:void 0}function Ie(e){let t=P(e),n=t.filter(e=>e.type===`text`);return n.length>1?null:{text:n[0]?.text??``,media:t.filter(e=>e.type!==`text`)}}function Le(e){return e.media.length===0?e.text:{parts:[...e.text?[{type:`text`,text:e.text}]:[],...e.media]}}function Re(e){return e.type===`media`?{mimeType:e.mimeType,sizeBytes:T(e.data)}:{mimeType:e.mimeType}}function F(e,t){let n=[...e];if(n.length===0)return{ok:!1,reason:`no_inputs`};if(t.maxInputs!==void 0&&n.length>t.maxInputs)return{ok:!1,reason:`too_many_inputs`,max:t.maxInputs,inputs:n};let r=[];for(let[e,i]of n.entries()){let a=P(i);if(a.length===0||a.every(e=>e.type===`text`&&!e.text.trim()))return{ok:!1,reason:`empty_input`,index:e,inputs:n};if(!t.text&&a.some(e=>e.type===`text`&&e.text.trim()))return{ok:!1,reason:`text_off`,index:e,inputs:n};let o=[];for(let e of a)if(e.type!==`text`)try{o.push(Re(e))}catch{return{ok:!1,reason:`invalid_json`}}r.push(o)}let i=ue(t,r);return i.length>0?{ok:!1,reason:`attachments`,issues:i,inputs:n}:{ok:!0,inputs:n}}function I(e,t){return(t===`whole`?[e]:t===`lines`?e.split(/\r?\n/):t===`paragraphs`?e.split(/\r?\n[^\S\r\n]*\r?\n/):t===`commas`?e.split(`,`):t.separator?e.split(t.separator):[e]).map(e=>e.trim()).filter(e=>e!==``)}function L(e){return e.type.startsWith(`text/`)||e.type===`application/json`||/\.(txt|md|markdown|csv|tsv|json)$/i.test(e.name)}function R(e,t,n=100){let r=[],i=[];for(let a of e){let e=[...i,a];i.length>0&&(e.length>n||!F(e,t).ok)?(r.push(i),i=[a]):i=e}return i.length>0&&r.push(i),r}function ze(e,t){if(!e||!t)return e??t;let n=(e,t)=>e===void 0&&t===void 0?void 0:(e??0)+(t??0),r=n(e.inputTokens,t.inputTokens),i=n(e.costUsd,t.costUsd);return{...r===void 0?{}:{inputTokens:r},...i===void 0?{}:{costUsd:i},...e.estimated||t.estimated?{estimated:!0}:{}}}function Be(e,t){let n=0,r=0,i=0;for(let a=0;a<Math.min(e.length,t.length);a+=1)n+=e[a]*t[a],r+=e[a]*e[a],i+=t[a]*t[a];return r===0||i===0?0:n/Math.sqrt(r*i)}function Ve(e,t){return t.flatMap((t,n)=>t.length===e.length?[{index:n,score:Be(e,t)}]:[]).sort((e,t)=>t.score-e.score)}var He=200,z=[0,0,0],Ue=3,We=1.4826;function B(e,t,n){let r=0;for(let i=0;i<n;i+=1)r+=e[i]*t[i];return r}function V(e,t,n,r){let i=Array.from(r,(e,n)=>e-t[n]);return[0,1,2].map(t=>e[t]&&n[t]>1e-12?B(e[t],i,i.length)/n[t]:0)}function Ge(e,t,n){return[0,1,2].map(r=>{let i=e[r];if(!i||n.length===0)return 0;let a=n.reduce((e,n)=>{let r=B(i,Array.from(n,(e,n)=>e-t[n]),n.length);return e+r*r},0);return Math.sqrt(a/n.length)})}function Ke(e,t,n){let r=Math.hypot(e[0],e[1],e[2]);if(r<1e-9||t<=0||n<=0)return z;let i=r/(r+t)/n/r;return[e[0]*i,e[1]*i,e[2]*i]}function qe(e,t){let n=new Float64Array(e.length*t);return e.forEach((e,r)=>{n.set(e,r*t)}),n}function*Je(e,t,n){let r=new Float64Array(t*t),i=n-n%4;for(let a=0;a<t;a+=1){let o=a*n;for(let s=a;s<t;s+=1){let c=s*n,l=0,u=0,d=0,f=0;for(let t=0;t<i;t+=4)l+=e[o+t]*e[c+t],u+=e[o+t+1]*e[c+t+1],d+=e[o+t+2]*e[c+t+2],f+=e[o+t+3]*e[c+t+3];for(let t=i;t<n;t+=1)l+=e[o+t]*e[c+t];let p=l+u+d+f;r[a*t+s]=p,r[s*t+a]=p}yield}return r}function Ye(e,t){let n=new Float64Array(t),r=0;for(let i=0;i<t;i+=1){for(let r=0;r<t;r+=1)n[i]+=e[i*t+r];n[i]/=t,r+=n[i]}r/=t;let i=new Float64Array(t*t);for(let a=0;a<t;a+=1)for(let o=0;o<t;o+=1)i[a*t+o]=e[a*t+o]-n[a]-n[o]+r;return i}function Xe(e,t,n){let r=new Float64Array(t),i=0;for(let a=0;a<t;a+=1){let o=0;for(let r=0;r<t;r+=1)o+=e[a*t+r]*n[r];r[a]=o,i+=o*o}if(i=Math.sqrt(i),i<1e-12)return{next:n,length:0,moved:0};let a=0;for(let e=0;e<t;e+=1)r[e]/=i,a=Math.max(a,Math.abs(r[e]-n[e]));return{next:r,length:i,moved:a}}function Ze(e){let t=0;for(let n=1;n<e.length;n+=1)Math.abs(e[n])>Math.abs(e[t])&&(t=n);return e[t]<0?e.map(e=>-e):e}function*Qe(e,t,n){let r=Float64Array.from({length:t},(e,t)=>1+(t*7919+n*104729)%97/97),i=0;for(let n=0;n<He;n+=1){let n=Xe(e,t,r);if(n.length===0||(i=n.length,r=n.next,n.moved<1e-12))break;yield}return{vector:Ze(r),value:i}}function*$e(e,t,n){let r=Float64Array.from(e),i=[],a=Math.max(...Array.from({length:t},(e,n)=>Math.abs(r[n*t+n])),0);for(let e=0;e<Math.min(n,t);e+=1){let{vector:n,value:o}=yield*Qe(r,t,e);if(o<=a*1e-9)break;i.push({vector:n,value:o});for(let e=0;e<t;e+=1)for(let i=0;i<t;i+=1)r[e*t+i]-=o*n[e]*n[i]}return i}function et(e,t,n){let r=new Float64Array(n);for(let i=0;i<t;i+=1)for(let t=0;t<n;t+=1)r[t]+=e[i*n+t];for(let e=0;e<n;e+=1)r[e]/=Math.max(t,1);return r}function tt(e,t,n){let r=t.length,i=new Float64Array(r);for(let a=0;a<n.length;a+=1)for(let o=0;o<r;o+=1)i[o]+=n[a]*(e[a*r+o]-t[o]);let a=0;for(let e=0;e<r;e+=1)a+=i[e]*i[e];if(a=Math.sqrt(a),a>0)for(let e=0;e<r;e+=1)i[e]/=a;return i}function nt(e,t){let n=Array.from({length:t},(n,r)=>Math.sqrt(Math.max(e[r*t+r],0))),r=new Float64Array(t*t);for(let i=0;i<t;i+=1)for(let a=0;a<t;a+=1)r[i*t+a]=n[i]===0||n[a]===0?0:e[i*t+a]/(n[i]*n[a]);return r}function H(e){e.sort();let t=e.length>>1;return e.length%2?e[t]:(e[t-1]+e[t])/2}function U(e){let t=Float64Array.from(e);if(t.length===0)return 1/0;let n=H(t.slice()),r=We*H(t.map(e=>Math.abs(e-n)));return r>0?n+Ue*r:1/0}function rt(e,t){let n=new Float64Array(t*(t-1)/2),r=0;for(let i=0;i<t;i+=1)for(let a=i+1;a<t;a+=1)n[r++]=e[i*t+a];return n}function*it(e,t,n){let r=[];for(let i=0;i<t;i+=1){for(let a=i+1;a<t;a+=1)e[i*t+a]>n&&r.push({a:i,b:a,similarity:e[i*t+a]});yield}return r}function at(e,t,n){let r=-1;for(let i=0;i<t;i+=1)i!==n&&(r<0||e[n*t+i]>e[n*t+r])&&(r=i);return r}function*ot(e,t,n){let r=new Set,i=[];for(let a=0;a<t;a+=1){let o=at(e,t,a),[s,c]=a<o?[a,o]:[o,a];o>=0&&e[a*t+o]>n&&!r.has(s*t+c)&&(r.add(s*t+c),i.push({a:s,b:c,similarity:e[a*t+o]})),yield}return i.sort((e,t)=>e.a-t.a||e.b-t.b)}function st(e,t){let n=Array.from({length:e},(e,t)=>t),r=e=>{for(;n[e]!==e;)n[e]=n[n[e]],e=n[e];return e};for(let e of t)n[r(e.a)]=r(e.b);let i=new Map;for(let t=0;t<e;t+=1){let e=r(t),n=i.get(e);n?n.push(t):i.set(e,[t])}return[...i.values()]}function ct(e,t,n){let r=Array(n).fill(0);for(let i of t)for(let t=0;t<n;t+=1)r[t]+=e[i*n+t];return r.map(e=>e/Math.max(t.length,1))}function W(e){return(Math.atan2(e[1],e[0])/(2*Math.PI)+1)%1}function*lt(e){let t=e[0]?.length??0,n=e.flatMap((e,n)=>e.length===t?[n]:[]),r=n.length,i=qe(n.map(t=>e[t]),t),a=et(i,r,t),o=yield*Je(i,r,t),s=(yield*$e(Ye(o,r),r,3)).map(({vector:e})=>tt(i,a,e)),c=n.map(t=>e[t]),l=Ge(s,a,c),u=c.map(e=>V(s,a,l,e)),d=Float64Array.from(u,e=>Math.hypot(e[0],e[1],e[2])),f=r>0?H(d.slice()):0,p=f>1e-9?f:d.reduce((e,t)=>Math.max(e,t),0),m={mean:a,axes:s,spreads:l,scale:p,reach:d.reduce((e,t)=>Math.max(e,p>0?t/(t+p):0),0)},h=nt(o,r),g=U(rt(h,r)),_=st(r,yield*it(h,r,g)),v=yield*ot(h,r,g),y=_.map(e=>({members:e.map(e=>n[e]),tone:W(G(m,ct(i,e,t)))}));for(let[n,r]of e.entries())r.length!==t&&y.push({members:[n],tone:W(z)});let b=new Map(y.flatMap((e,t)=>e.members.map(e=>[e,t])));return{documents:e.map((e,n)=>({index:n,position:e.length===t?G(m,e):z,cluster:b.get(n)??0})),clusters:y,links:v.map(e=>({...e,a:n[e.a],b:n[e.b]})),threshold:g,basis:m,dimensions:t}}var ut=8;async function dt(e,t){let n=lt(e);for(;;){let e=performance.now()+ut;for(;;){let t=n.next();if(t.done)return t.value;if(performance.now()>=e)break}await new Promise(e=>setTimeout(e,0)),t?.throwIfAborted()}}function ft(e,t){return t.length!==e.dimensions||e.dimensions===0?null:G(e.basis,t)}function G(e,t){return Ke(V(e.axes,e.mean,e.spreads,t),e.scale,e.reach)}var K=(e,t)=>({from:e,input:{parts:[{type:`media`,mimeType:`image/png`,data:t}]}}),pt=[...[`Refunds are available within 14 days of a charge, in full and to the original card.`,`After 14 days a refund is made as credit toward the next invoice, not as money back.`,`Refunds take five to ten working days to reach your bank, depending on the card issuer.`].map(e=>({input:e,from:`refund-policy.md`})),K(`empty-trash-dialog.png`,`iVBORw0KGgoAAAANSUhEUgAAAeAAAAEsCAYAAAAb/mBaAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAARGVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAADoAEAAwAAAAEAAQAAoAIABAAAAAEAAAHgoAMABAAAAAEAAAEsAAAAAKqyRKoAAAGdaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjQ4MDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj40ODA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KS/zElgAAQABJREFUeAHtnQeYFMXWhs+Sk6JkyTkjIDkoKkEUBBRRQYJg4v73qiASRAkqKigGQEQxoIiogOQcRBRYJOeMZCTnHP/6ztDD7MwsOz1hZ9j56nlmZ7q7Ur/V21/XqdNVMaWqN7smDCRAAiRAAiRAAolKIFmilsbCSIAESIAESIAElAAFmBcCCZAACZAACYSBAAU4DNBZJAmQAAmQAAlQgHkNkAAJkAAJkEAYCFCAwwCdRZIACZAACZAABZjXAAmQAAmQAAmEgQAFOAzQWSQJkAAJkAAJUIB5DZAACZAACZBAGAhQgMMAnUWSAAmQAAmQAAWY1wAJkAAJkAAJhIEABTgM0FkkCZAACZAACVCAeQ2QAAmQAAmQQBgIUIDDAJ1FkgAJkAAJkAAFmNcACZAACZAACYSBAAU4DNBZJAmQAAmQAAlQgHkNkAAJkAAJkEAYCFCAwwCdRZIACZAACZAABZjXAAmQAAmQAAmEgQAFOAzQWSQJkAAJkAAJUIB5DZAACZAACZBAGAhQgMMAnUWSAAmQAAmQAAWY1wAJkAAJkAAJhIEABTgM0FkkCZAACZAACVCAeQ2QAAmQAAmQQBgIUIDDAJ1FkgAJkAAJkAAFmNcACZAACZAACYSBAAU4DNBZJAmQAAmQAAlQgHkNkAAJkAAJkEAYCFCAwwCdRZIACZAACZAABZjXAAmQAAmQAAmEgQAFOAzQWSQJkAAJkAAJUIB5DZAACZAACZBAGAhQgMMAnUWSAAmQAAmQAAWY1wAJkAAJkAAJhIEABTgM0FkkCZAACZAACVCAeQ2QAAmQAAmQQBgIUIDDAJ1FkgAJkAAJkAAFmNcACZAACZAACYSBQIowlBnxRZYrXVRqVCknZUoUkjy5ssttGdJLypREFfENxwqSAAlEBIFLly7LqdNnZPfeA7JmwzZZ8PdKWbl2c0TULZIqEVOqerNrkVShcNUlJiZGGtarKa2eaiB5cmYPVzVYLgmQAAkkSQK79x2QH3+dIpNnzpdr1yg7aGQKsIGQN3cO6d3lRSlRtECSvPB5UiRAAiQQKQQ2bN4uvT8cKrv27I+UKoWtHlE/Bly1QmkZNqgXxTdslyALJgESiCYC6Ojgnot7b7SHqBZgXAAfvf2qpEubJtqvA54/CZAACSQaAdxzce+NdhGOWgGG2fm9t/4rKVLQuSrR/utYEAmQAAlcJ4B7L+7BuBdHa4hKAYbDFcZ82fON1sue500CJBAJBHAPxr0Y9+RoDFEpwPB2psNVNF7uPGcSIIFII4B7Me7J0RiiUoDxqhEDCZAACZBAZBCI1nty1Alw+TLF+J5vZPzPsRYkQAIkoAQw9wImQIq2EHUCXL1y2WhrY54vCZAACUQ8Acw+GG0h6gQY00sykAAJkAAJRBaBaLw3R50AY25nBhIgARIggcgiEI335qgTYCyswEACJEACJBBZBKLx3hx1AsxVjSLrn461IQESIAEQiMZ7c9QJMC91EiABEiABEogEAhTgSGgF1oEESIAESCDqCFCAo67JecIkQAIkQAKRQIACHAmtwDqQAAmQAAlEHQEKcNQ1OU+YBEiABEggEghQgCOhFVgHEiABEiCBqCNAAY66JucJkwAJkAAJRAIBCnAktALrQAIkQAIkEHUEKMBR1+Q8YRIgARIggUggQAGOhFZgHUiABEiABKKOAAU46pqcJ0wCJEACJBAJBCjAkdAKrAMJkAAJkEDUEaAAR12T84RJgARIgAQigQAFOBJagXUgARIgARKIOgIU4Khrcp4wCZAACZBAJBCgAEdCK7AOJEACJEACUUeAAhx1Tc4TJgESIAESiAQCKSKhEqyDJ4GrV6/KkSNHZP/+A3L8+An9nDlzRi5duqQfpEiZMqV+0qdPL3fckVE/OXJkl8yZM0uyZHy28qTKPSRAAiQQOQQowJHTFgLR3b17t2zZsk327t3nFNr4qnjhwgXB5/Tp03LgwAFnNAhzrlw5pUiRQpInTx6KsZMMf5AACZBA5BCgAEdAW5w/f17WrVsv69dvVEENtEroJe/YsVM/qVOnlpIli0upUiUlTZo0gWbN9CRAAiRAAkEiQAEOEkh/srl8+bKsWLFKxRe/QxHQQ0YZa9asUxEuX76spEjBZg8Fa+ZJAiRAAnYI8E5sh1YQ4+7cuUtiYxcZ8/GZIOYaf1YQ+FWrVsu2bdukWrWqki9f3vgj8wgJkAAJkEDICVCAQ444bgFXrlyRRYsWy4YNG+MeSKQtCP6sWXOkRIniUrVqZUmePHkilcxiSIAESIAEXAlQgF1phPj3mTNnZebMWca7+WiIS0o4ezwAHDx4UOrVqyvp06dLOAFjkAAJkAAJBJUA31UJKs74Mztx4oRMmjQ5IsTXqiUeBFAn1I2BBEiABEggcQlQgBOBt0N8pyTaeK+dU4JJetKkKRRhO9AYlwRIgASCQIACHASIN8sCZudp02bI+fMXbhYtrMdQN9QRdWUgARIgARJIHAIU4BByhsMVxnwTy9M5kFNBHVFX1JmBBEiABEgg9ATohBVCxosW/R3vmC88kMMZ4IntHjAmjDrXqFHd/VBItk+dOmVeiaqik49g9q7Y2L8lY8aMISmLmUYngXPnzslff/2pJ3///Q9IqlSpvIKIjY2VU6dOmrcDSurscV4jcScJBJkABTjIQK3s8J7vhg2brE2P72rVIk+AUUnUOXfu3InynvC0aVPNTe+Usrl48aIxg0+Vp59u7sGKO0jAXwL79u2TF154XpMvW7ZCsmTJ4jWr3r17ysaNG+Wdd96VNm2e9RqHO0kg2ARogg42UZMfJr3AJBu3akDdQzUzlyuT8ePHuW6K+3acg4m4ce3atUQsLbKLwvzkDKLztJMDCQSbAAU42ERNfpj68VYY943v1FF3nEMow4ED+2XhwoVaRP78+fV70aJFZvWnf53FTpw4QZ58spn069dXhg79Sh56qK5Mnz5Njy9YsECeeqqZlC1bRh588H7p1q2LnDx50pnW9UfHjh00n/79P3LuhskReeNjpUN5DRs2kGLFisrdd5fW/FeuXOFMM2bMaI3ftWsX575Zs2bqvv/7v/8497n/WLt2rbRq1VLrWqlSRUFclGUFq34TJoy3dknv3r0035Ejf9J9OD/UddKkidK58+tSpUolFQU8KA0Z8oXUr19PypQpJY8/3kSGDfvOmY/rj127dmkeyGf+/PnOQ59++onuf/vt3rrv/Plzpif4ttSqda8UKlRAqlevKq+/3sl4yh93pvGlzs7I5seGDRucZe/cuUMP9ezZQ/d9+GE/3d6xY7szzp49e4xT4BmtB86tQoXy0qLF04I2xOIjCDNnzpDmzZ9SVoMHfy4NGjwsderUlr59P9DFSVBmz55vaVz86dSpo/Oac+40Pzp2fFVQHgJ4Dxw4QH/7wkEj8g8J+EmAJmg/wcWXzFpYIb7jt8p+LA6BG3qoFnCYOHGioKeJZRM//XSAPPZYY93G/hdffEkx7d27V/7+e5GZx3q1nD3r8NDGQhPz5v0hrVu30jhp06bV6TUxxebixYtlypRpgn2uIXv2bDJ27G9GBNbLq6920CUcIWTIu0KFCnL77bfLDz98b27WPTQZxgnx6hgeCB5//DEZNWqMVKxYUSBgSHP6tMNsjsj//vuv7suVK5drkc7fhw8fNsLRXMWrQIECAlP7lCmT9ZM+fQapXbu2rF69SrZu3WoEr5YzHeqKssqWLav71qxZIxByVxY40L37G/Lrr79onHTp0smyZcv0A3ZvveU4Hz1o/uTNm1fru2vXThk3Lo/UrFlTRXz48B/k6NGj5gHnIY3apk1rPXdspE6dxqzMtVdGjx4lS5cukRkzZpl9qX2qs2Z2/U+BAvnNVKgrzdsA5zXvvHnzyW+/jVExhSB36dLVWI1i9ZxhJgbP117rYNptrOaQPXsOFU88eO3cuVMGDfrciOZe3Yd2Qk8d9cLc51u2bJbNmzeZB53/me/N12uAh4CN5jyPOLetH+vXr9d6YRvtuWPHDj3kCweNyD8k4CcB9oD9BBdfMgiXL+bb2NjF5kZ5o3cVX37B3o8yUXZCAeeAcwlVGDfOcWOtVq2a3HPPPabH6RAab2ZoiG/Tpk8YkRxunLaqi9Vjqlu3nqxcuUpmz/5dRRUiPHnyJI8qN23aTPehp7toUaz+/v33OfqNfHHTtnrHDz/8sBHypfLHH3+a5RyLqFc4euD+huXLlzl7jv36fWgcghbISy+1N732B00vbb/tbK9cuWoeFHqZh4LR5oFgp1N8+/btZ9prg7EEvKF54oHi+PFjHvk3bdpU982e7fB4X7lypYovpiRt3LiJYTnbKb7vv/+BXgPffPOtptm+fbv8/PNIjzx92ZEmTVrj3FdDoy5dulQfOKye7P79+wVjtdiPUKdOXX0Yg3jioWXYsB9MmyyRZ55pqcddrRLYAfEdOfIXcy2s1nPAPjyI4KHpl19GYVPD1KnTjIXjUWvT+Y2HisKFC+t2p06vyyeffBoyDs5C+YMEDAEKcBAvA9wIsKSgLwFeyCdOeDeZ+pLe3zgo05sHtLf8cC44p2CHLVu2mBv7Os32wQdrq1BAkBCwH8ddA3p2H3/8icCL9c4775RNmxzObdu3/yNt2z6rZkbLuxW9IfcAIS1T5m7dPWPGDNNG67WngzQNGzaUf/75x2mGbtmylZaBG791s0bPzV8OFStWcnrewvQL0zZ6WC++2N70jJ9xr2qC26jvc889b0zQVdVpyEowbtw4I1DN1SyLfehpr1ix0jrs/H78cYcAHz9+XJYsWSxz5szWY+h9o+e5YsVy3b7jjjuMebeFPtjgQadIkaK6f8UK/x8aa9euo3mgJw2mCLAAIOBBZdkyhwDXrVtXLSM//viTtGv3nHnY+MXEe0B++mmExoUVxDXkyJFDxR3XCa4RhHPnzrtGsf07lBxsV4YJkiwBCnAQm3b37t221vMNx7KAdspEzxDnFOzg2st99913jJn1bvnss0+dxbiOhWInTKcxMTF6/NKli2LdgHEuKVKk1E+FChXlvvtqaY/JmZHLjyeeeEK3Zs6caXo3s/R3nTp1zGtPdxiLxY0b+m233eZMZf1Gea5WDVcnLZhUbxYyZcpkzLdjjCn7cTXno9c3Y8Z04+39pJq9XdO65hufgFjj5UiH9rECXuMCiwwZblMOYOFtjm+wrFTJ4YE/ffp0pwDDEoBg5Zk+fXoVQSv/2293cHE/X1/qbOWBhy0EPPBYFogXXnhJ96Fd0MOGyRumcYy/Nm36mPTo8ZYxM8eqNaJevYc0rvsftKEVkicPzi3NLgerfH6TgB0Cwbla7ZSYhONu2bLN1tnhHcXEDnbLtHtOCZ0PbtiWAOOdX/Q0rY8leO4C7LpiE0yZeE0KoVix4vLjjyP006BBA3nggQdNT6im1yo0atRY10GG2fe77xwmVUt08ucv4FwVaurUqZoeogsHK4RChQppLzZbtmy6vXfvPqcjUGzsQt0X3x+cy/Dhw827pXnNGO56GTNmrI47I/6YMWM0mZWv1fPHuDHGMb0FVxauYty6dWvl0L9/f+UAFkWLOnqt7vlYDyNoBzgqgTvMvgjFixfXb4z7YmwaAeZhq+drHbdTZ83E/LnrrrvMe7YldHPatGlq9q1SpYp5aMjgHDq49957zYNKWjPWvUaFGpHHjRsvX345VHvjmtjPP75YMaw41nkmxMHPqjAZCSiBFOQQHAL4x8WN2U4Ix9SPdsvEOeHc4CwVjIBxPsvjtE+f9wTCaIUffxxuHIfeVGen5csdplDrmOs3zMTwdIUjFSZPOHTokN6wUUcstegtoCeKHhg8Z48dOybYrlXrfo0KAYKADRs2zNzoh8jcuXM1zsGDB/Q4nHkQihd3iAe8gWvUqCYwfeLd0ZsFsIOzEQJMr3hogKAhWAKKfOERDkFct26tlm05nWnEeP6UKlVaypUrZ8Y+Vwo8s5F+yZIlyqNUqVLGPN/Wa8oGDRoas31PLQcRYNa2nO1gdoc1ApaPxo0bmYeFimouxnmAU6tWrTVPf+uMNoDoIz+Y59Fm5cqVN17Zf2m+MD8joKeOhw3MzPbFF4M1Pt4TR7AzW5urQx48t197rZPzAUgzu/7HOn+MnaNuGG/2hYNrHvxNAnYJBOeuarfUJBj/8OEjTtOor6fny03W17x8jWe3TPQEjxzx9Bz1tTz3eBBNBNwYrV6XFQcmRsvU7Pqajrv4w4npv//9n/Zof//9dxVfmCG/+OJLpzONlafrt+WAhH2NGzeO06Pq1q27QNgRNm3CUo0HtNfbq1dvNR9jP5x6nn22rQoDxlAPHDggTzzhcPByryPiIzz22ONmIogXta7w4EXvG562MAP36NFT4+BcIJgI6AXnyZNHxUl3XP8TE+P5rwoT/JAhX6nJGQ8V6L3jYQSi/OWXXzlZuuaD3xBSy+MZ25YlAL8hRBh7LV26tAoRxokxngxBHDHiJ+dEFr7UGfm5B2scGPvhgY4ArlawjsPrGdxgksbrX7BG4CEJ4eDBg87eObaTJXMMT+C3Fax9OXPmNO3XVDA+DJHfunWLFSXOd+vWbdTzGmbwefPm+cwhTibcIAGbBGJKVW8WVbMOxE4fZhORb9HXrFlrXqFY4lvk67EwRvfii+1spQk08tCh39ledAHvnJYpUzrQooOeHu+JwlSbLl16KViwoIrczQqB1/C99zpM1FOnTneKnmsajNHC+xavtMAzFt/uAeOT8NzNmTOX08HKPY77Nl5rQvkYQ0U6b68tQTwx1gxTrd0A0/quXbuNeOc2PfOE0w8Z8oVaEdALnzfP0ft0LxPvZO8wDmOoLx4KrIcj13iB1Nk1n/h+oz3w2hFMwq7m9/jix7cfDxHHjh2VO+6402ubWukg7ngIwatpVvCFgxWX34ERqFbfu9UmsFwjNzVN0EFqm+PHT9jO6ezZc/q6hbcbm+3MfEiA8VeUaTf4c252y/AnPhyFYL70JWCyCatXXaZMGa/ii3wwHonXom4WMEaJcWM7AePdlid2fOmyZs0a36EE96PHiE9CAQ8Cb77Z3ekEdbOpPyHkCYl5IHVOqK44jvawrAO+xI8vDjzefeFjjW275uMLB9f4/E0CvhKgAPtKKoF4/ogUBBE9ItdxqgSKCegwynL1WvU1M3/Ozde8EyseTNXwvoVJE+bmaA2Ye9saBoDVoE2bZ6MVBc+bBMJOgAIcpCaAOdSfAKeoxBJguw5Y1vn4e25W+kj47m+8g/FqSb58+fTVo0ioUzjqgB7e2LHjzThwBuN9XjDOOHg46sMySSCaCVCAg9T61rupdrNzOEVltpvMr/h2HbCsQvw9Nyt9JHzD+5hBdMzacn4iDxIggfAS8HStDG99btnS/RUpf0XRH1D+luXvuflTR6YhARIggWghQAEOc0ufOWPfKcrfKidmWf7WkelIgARIIFoIUICD1NKYCtCfcPasf2PHiVmWv+fmTx2ZhgRIgASihQAFOEgt7a9I+fNakL9V9rcsf8/N33oyHQmQAAlEAwEKcJBaGe+k+hP89UxOzLL8PTd/6sg0JEACJBAtBCjAQWrpO+7I6FdO/jpG+VOYv2X5e27+1DGa02CGLXz8eVc7sblhZinU1XWVqMSuQ1Itz9/39ZMqj6R8XhTgILWuvyLlryj6U21/y/L33PypY6SlweQdWMDBWiwe9WvTppWu6zt06FdBqy7m2y5WrKh+1qxZrfnGxsZq2aFYEjLQirds+YzW9aOPPvQ7K6zMBbb4QNARRo4cqWyxFGGwwoABn5nlDAvd9PPLLz8HqziPfHy9XiZPnmTmFm9qZv4qYeYKryCvv97JTBP6h0d+3JF0CFCAg9SWOXJk9ysnazpKvxLbSOTvNJQowt9zs1G9iI2Km+ILLzwvH37Yz1nH06fPCKZ0tLu0ozODBH5YPeDevXtq2dbauQkkC8thq67+FI5VocAWn5MnT2oW6P2B7alTp/3J0msavEYHgb/ZJ5Q9eV+ul2XLlsmrr75iVrNarFYFzLE9evQos/hHG93n9cS485YnwIk4gtSEmTNn1lmF7L4zixtYYkxH6a9ZCw5YODeG0BLA5P/ffvudFlKwYKHQFhaE3Lt1e0OOHj1iVknKF4TcQpvFww8/omtOoxQstIElJxFef72zWWgip/4uX/7m839rpBD+GTv2NxVeXAe9e7+js7b16PGm7hs/fryunhXC4pl1mAhQgIMEHsvR5cqV06wes9N2jokxHaW/zl44p/iW2rN9otcTYBm/vn3fl8WLF+uNBosjvPJKBylf3rGwQrduXcy8zdvN2rOt5M8//zSfeRIb+7eufPTRRx+Z5QI3maXyrkjZsuXMGr8POpcERC+qf/+PZPbsWYLlAsuWLSuVK1eR9u3/45zuE0sCDhz4ma7jiweLypUrS/fub8VZ/cY6L6xPPGHCeN3ctGmj9tQGDfrcOqyr67Rv/6KeR+bMWaR58xbSrl07PY4e1ddfD9X0WNS9SJEi8uijjcwavY7jzkyu/0BveujQobqFKSJ79nzLuW7yyJE/aa/wlVde1SUQE2KH1YOwru9Ss/4wGGNVJ6yDC24//TRClyx84IEHzaIMb+kyfSj0119/MQ8A3+qKTZiuE9xatHhGSpRwrIF8vZrOLyxssX79emnSpIkULVrUiEYvXcYR5WJ94gUL5qvo1a//sC7z6L7gyAazJnCfPu848+vUqaO89NJ/nNt4MB00aKCMGjXK9FwvSM2a9xomvcw0og5fi4SuIWdG5gcWc7AWdMCShJYAY+3h4tfXeMb5dOvWVZdIvPPOO3UN544dXxPU/zeznjNM4zt37hBM5YkFQNDWuG4R1q5dK/369dUlElOlSm3EspJJVz/OWteIh9WY4rte8GCABSOwZCY+CGPGjBL0jPfu3aPb/JP0CFCAg9imGGfyR4AdY7Oh7WX6O/6LcwpmwPJyjRo11OX8cFPGDQsLJUAYhw//UapWrabr++KmhrFQq94XLpzX8TGILG5UWNN2ypTJ+sGKObhRdur0mo4nYm3g/GaZPSxyjw/GUD/55FMdT2vd2rHmL+bf3rZtm34gUlOmTHOKtHW+WLcXN3oE1GPt2jXm143VO4cNcyxtiWXyMIb79tu9zHq5mfXG2737GypqSIu1aHEjddxM98pbb/XA7jgBlpO//16k+06fPqXiBqsFAuqxwywL6As7iB/EDePHlnl4z549snz5cqeZF3mOGPGjwLu9e/c39SGhS5fOutxfqVKl9UFn48aNunrU338vNsvzpUWSOAHii/pi7WGENWvWqOAvWrRIly1E2XjwmD9/vp6/65rDiI/5xSE6VtiwYaP2qK3tzZs36cMULDBggzWBsZDE0KFf+8TBysfXb9QV5+N6zaFcPMy99lpHzQbCjGtm3bp1Mm7cWFmxYqWpyxnzoNLcPCAd1wcOmLmt6zJ9+gxSu3ZtZxVudr2MHj3GGQ8/cP5gjFClSlX95p+kR4BjwEFsU6yZ6m392ISKsEQmoXiBHPenDJwLzimYYfjwH1R8IaDz5y80vaVV2tvCQglWz8Qq78qVq9rrGTVqtKxatUpN4eh1LFu2woyLLXMuDr9y5QoVm3nXHVaaN29ubthjTQ/0G+0hX7t2VbO0xnHr1q2n5c6e/bsOG+CmirFe99ClS1ezXvNLuhsmSvTCXcUIy9vNm/en/PXXArGW5YPQ7dix3Sm+ffv2MzfsDaZ39Ybm88MP35ve+TH3ojy2Z8yYpT1XHOjU6XV9gLDDrkKFisoXaRHw4PLcc8+bHvES85DjuKEvXvy3Hvvjjz/0G71dCNzChYtUOLAsI9YYthPy5s1rxH6FzJ37h3NdYzx4uIeKFSvKL7+Mcu6eOnWa9tqdO8yPTz8dYB561jn3r1ixXA/b4eCany+/8X+Ch4Uffhgu1apVV+e7AgUKqOVi+fKV8v33wzUbxNuyZas512UqvtjZr9+Hei289FJ7ve6wRrNriO96cY2D33gQaNy4kfoYoA1atGjhHoXbSYQAe8BBbEiYakuWLG6ejFfZyjUxpoj0pwycS7DNz9ZTPXqNnTt3Uk779ztuVOg9uYaGDRuqaFj7Bg8eIjNmTFczHnpPhw8f1kOXL1/RXhd6zxBhCDnMv+jNQYwff7ypXLlyRU2wSLB9+z/mhvqspkVvGj0dlN2s2ZO6z9c/6N1Y6wLDxAkhQ08dvUcrjBs3TnuSVm8WPST0nB544AEris/fdtjdd999+vAEy8DHH/fXMlq1aq1r4lasWEnPFw89CBDksWYMElaHqlUrm6GUXPLIIw1UdPDbTqhdu44ueo+F78EfvXd/nNXQ24R5G9ff/fffrw9IVj52ONipO+LCWvHxx5/o9YTtrl276VAHhkGaNGmsZnbsR8AwA1jiGkK7PvlkM12/uEaNmubBrb0R8GqOiNf/xne9xIlkNtq3f0ktLmi7AQMGmoe+NO5RuJ1ECLAHHOSGLFWqpKRIYe+5BuOVoQ52y8A54FyCHayeOAQ4RYqU+oG5+L77ank4mmC/FRy9gkfNDekzvalj/K5Qobjmcdw4O3ToqD0vCO7q1avkjTe6CczOly5dVKFFfjg3q2z0FFE2ejl2Q44cOZxJkid3tPnVq9d0XNs6ABMqysqQ4TYtB2WlT5/OOmzr2w476xq0vlGQ9dt9PBY9PvQ2rVWSYI7FA0ytWvcaa8W/tupojdEiEdrY35AtW3bnw1+yZI58LJO6HQ52y0cP3pVPnz7v6gMfxsghhC1bOoYwrHwzZcpkvJXHmIe8x/U4hgnwkPj000+aXvT3VjT9ju96cY0E68jRo0d1V58+71F8XeEkwd/2lCIJAgj2KeGfFMK1apXjXU5f8t+0aYt5kr7HOJjc7kt023FOnDhpnty32EpXunTJkPzzwyFozpzZ2nv48suvdBxy0aJYM961wfSc7ohTR9cb+KRJk1RAixcvLtOnz9QxxCpVKml83Jh3GgeZAQMG6PbkyVN1vBDOS3hXF+J96NBhyZ07tzo2YWnCgQMHaVy8/4lXwSwHsDgVcNmAoPsaXB8cWrduLQ89VN+MJe83Y4NTNQs4LdkJV686TOh22PmSvyU077//njqt/fe/LxsRvkfH4zGejh4nPHDhxBbqYJ2jL+UEm4Nrma7XHPZbTnh4sIMT3NSpU+Wbb752JsHxefPmGWtDXmNBWK8OaB988J6O948ZM8a8M/6sM64vPzDEMX78RI2KNZsZkjYBCnAI2rd8+bLqrAEHDV8CTIEjRvxiJjYoooLkSxpf48DZBeILE5mvIUOG9Ma5pqyv0W3Fe+KJZmYcbZh69T72WBMjirnU0xlm4M6du8SbF7yIEeBQhMkfINrobSBcuXJZxXvq1CkqGhiXQ08TnssIMCtijBa9l759P5BJkyYagT6p3sBwHoKZc9asORrX/Q+ctRDggNWhwytmnO8j9yge2zC9wjkJDlFdu3YxN9RxZsx6iZYHU3Xbtm090njbYZke0ZOCQPnLzlve2GcJ8K5du8z5z9TPgw/WNs5oafTVOMTxxzKAdL4Eiy3iduzYQT21fUkXbA43KxMe6XgnF5OFwAlswoQJzuiXL1/SdoGXNMJS43WOhzu834zg+iCmO3z4A/+BJk0aacwZM2Y6vbR9SMootyABCnAIGg2mvmrVqsZ7U/dWJARyzZp13g4l+j7U3TJXBrtw9P6+/HKo8QTurgJpiWTbtu2cDk8xMZ4jIzCTYpwSojZ48Of6ekydOnXVS3XOnN8F705+/vlgY3J+w4zxbtcP6g5TJpxjIGZwjsFNFOZVeF4jwGMax9Gr8hZg6oaDFpzAMJ773nsfOE2jrvFdx8rBbsiQr1R8MXaIXhMCRBmvMVnC55redZ/1u3XrNnrzx/mglwUnqoTZxbhma+oad9v1oFVOnz599IEITll4WECA6bxdu+e09+6axvrtnq/r+ccXx9pvfeMdXIzPT58+zTiM/WW8xx3Cg+Pu+Tv2Oa4LX64hq4ybfXuvc9xr7+WXXzbvC+9UL294P0P8f/99jvof4BrCGDH2Dxv2nVoO4M2PUKlSZenRo6f+9qUcjej2x2oft93cTEIEYkpVb3bjvYokdGLxnUrsdMerI/EdD+b+BQsWmldCNgUzy5DnVaJEcalRI67zSCgKhUkXwgJBRO8WrxL5EtBbw40pPu9sPMjgPVg4aGXJkkXy5cunTjKuecMqsGXLZtMzTi8FCxb06WEDszMhb+Rp58YI0zM8ifPkyW1mFLvLtRo+/z548KA+QGCSBgR/2SVUIMZ+9+3bq2Vhgg3X8dyE0gZyHFzxjiwct+y8RRAqDu7nAusDXu3C+DC8970FXB+7du1Uy0HOnLnUkc1bPO67OYFq9X2zDt08l1vnKAU4hG2FG8TEiZPNO6JHQ1hK8LLOnDmTvqPrPg4WvBKYEwmQAAnETyDaBDiuvSV+LjziBwEIWb16dU3vzr+lCv0o0u8kqCPqSvH1GyETkgAJkIAtAhRgW7jsR8YrJw8//JAx66W2nziRUqBuqKO/r8ckUjVZDAmQAAkkKQIU4ERoToylPfpog4jsCaPni7ol1nhfIuBmESRAAiRwSxCgACdSMzlEuKGZTjFTIpWYcDGoy6OPNqT4JoyKMUiABEgg6AQowEFHGn+GMPFiIYISJYrFHymRjqAOqAvNzokEnMWQAAmQgBsBvgfsBiTUm3ByqlGjus7KFBu7SFdTCXWZrvnD5Iz3fPPly+u6m79JgARIgAQSmQAFOJGBW8VBALHWLhZuWLduvU7NaB0LxTcmh8AUmZilK1STbISi3syTBEiABJIqAQpwGFsWQlipUgWzsHcpFeH16zfGmcg/GFXDxAZY1Qjia01tGIx8mQcJkAAJkEBgBCjAgfELSmoIIybBL1++nC4ev2XLNrOY+T7n6j12C8E0guhdFylSSGeM8jYVnt08GZ8ESIAESCC4BCjAweUZUG4QSkydiA+mvzt8+IhZReeAWanmhH4whSIWLcAHAUKLT/r06c00fhn1kz17djNdYmav8xUHVDkmJgESIAESCCoBCnBQcQYvM4hxtmxZ9RO8XJkTCZAACZBApBDga0iR0hKsBwmQAAmQQFQRoABHVXPzZEmABEiABCKFAAU4UlqC9SABEiABEogqAhTgqGpuniwJkAAJkECkEKAAR0pLsB4kQAIkQAJRRYACHFXNzZMlARIgARKIFAIU4EhpCdaDBEiABEggqghQgKOquXmyJEACJEACkUKAAhwpLREl9fj3339lx44dcu3aNY8zPnbsmGzfvl3OnTvncSwSd+A8Tp8+nehVO3HihGzdujUo5e7cucPMuHbYa16YcQ3tceHCBa/HE2Mnrondu3clRlEsgwQSnQAFONGRR3eBa9aslnfffVv++uvPOCBws//oo34yaNAAr+IcJ3KEbLz33ruC8zl48KCMGTM60cR41aqV8skn/f2isHz5cvn99znOtEOHfiVz5sx2brv+OHBgv/Tp847s2rXTdXfIf0+aNFE2bdqo5fzxx1z59NNPQl4mCyCBcBCgAIeDehSXWadOXSlQoKCMHj1KTp486SQxdeoUnfe6ZcvWki5dOuf+SP6RNm1arevhw4dk2rSpcvbs2UiurtYNDwzuDz/xVTpbtuzyxhtvmgU9Enft6JkzZzh7+LVq1ZJXX+0QXxW5nwRuaQKcC/qWbr5br/KY47pt23by9tu95Ndff5YXXnhJYJaGAFesWEnuueceNYn+9NMI2bZtq6RKldqsFFVBHn+8qWBpRfTe1q1bJy+//Irz5D//fJBZ0vFuwc3aPVy+fFl7p0uXLpHkyZPL3XeXlYcffkQyZcok58+fl8mTJ8natWtUPIsUKSL16tXXxTDQq0XvsEGDBjJr1kytY65cueXZZ9uaxS6yaDFp06YTmINnzJiu24MHfy4tW7Y0q1AVjVMN1K9kyZLy4IO1df++fXvlu+++M+f+osTExCRYDhbk+PXXX8wKWXt0dassWbLGyX/FiuUyceJE0xM/IJkzZ5FHHnlEqlatFicONvCQgLgwKffr94F07fqGxsEiH19/PVQ2btwgt912mzz6aCPDvKKe29ixY6RFi5aSO3du84C0X2bOnCkrV67QdqlcubI0btzE68IfO3fulNmzZ8mGDetNnrdL0aJF5YknmuniISgUfEeM+NGYuP+Ru+66y7R7BXnoofra28UQxNy5c3WN7MyZM8vq1avk//7vf1pXmMvjuzbmzZsnmzdvlEKFCgt6zsinfPny8vTTLbzWUTPkHxIIIwH2gMMIP1qLzpUrlxG2hrJo0SIjpmvlxx9/UHFt0eIZuXjxovTt+76KSbNmT6qo4mY6fPj3iuvIkcMeJlGYSI8ePeIV508//agm1ho1aqooLVoUK99//53GHTdurAp6iRIljWg1kJ07d8nIkT/psYsXL6g4DBnyheTMmUsfDCBQP//sOI5IJUuWMOKRU4oXL6FpypUrZ1akukN/u/5B/Q4dOuTcBQGE8OBcEyoHcT/8sK8KWdmy5dRqgAcCK6xfv14g8NmyZZNnnmmlYgYxXbFihRXF+Q3LA+LBwoCHHSssWDBfed93Xy2BGH/11Zcq0hcunDem4E1GyBw9+1GjRsk///wjTZo8JsWKFdOHptjYhVY2cb4HDvzMxN0m9es/rA9Qc+f+LvPm/aFxrAcAPDBAwPFAAYvI/Pl/aVysk50nT24VUnCzxrsTujZwDfz999/mYWSCVKtWXe68807T9nN0X5zKcYMEIoQAe8AR0hDRVg0I8LJlSwW9RtyQn3vuecmYMaP2XOB406NHL8mfP79iQS8RYtms2VO2MKF3On/+fNOrfUgee+xxTQuzMXq96BmjNw4BQM8LAT3k778fJqdOndJt/IEwQ3CssGbNGuuntGnTVn9funRR6w2Rz5o1m/O4nR/xlbNw4UKzFOVx6dy5qxH64prl22/31t4oNqZOnWzKzCrt2/9He9PVqlWTd945INOnT9Pen2sdkB69eIy3165dx3koZ86camoGD/RU+/f/SPbt22d6qzduD+AF8/X99z8g9957n37Qc42J8XyGh4ijHDAvUKCAlrN582ZZvnyZYAjCOqe33urpPI6e7caNG9UqgPH0woWLSOnSpWXLls3Oei5cuEASujbg3Pf6651Njz2Pin+HDq/Inj27TB6eFgFnxvxBAmEicOM/LEwVYLHRSQC9nGefbSdwZEIPtHr1Ggpiz549ApHMm/fGuCNuxgj79+/Xb1//7N//r66rjN6aFdAjwwfhqaeeVmefn38eqT1Uy/HH1UO7WDGH6CE+zLunTwfu9ezFAdz0KL2Xs9N4KcP0XrhwYVRBQ6lSpZwCvHv3HilbtqyKLw7iYQUm2CVLljgi+/AXeUN8EWCaR8B53nnnjd482qtGjRpqTYAowuRfvvw9TgHVRNf/YH3q//3vZdPzXKS9XpiuIcBFizraAaZ0nJP1gIVk3bu/6ZqF19++XBsoG+KLABYwYZ86FXibea0Qd5JAgAQowAECZHL/CRQsWFATW9/YQO8JPWFLELDv6tWr+DI3VP3y+AOxcBVNK4L1OhPGNb2F7777RmJjY1X88uXLJ9mzZzdjnDPiRIVQWAE39GCEM2c8BSG+cuDYhTFUCKAVXJ3UYB6GqdU1XLlyxXUzwd9p0qR1iRP/OWIsGOPbS5Ys1nHxKVMmq+XCeniyMsHY+htvdBXUo1Sp0vpBe1696nj1DG2cIUMG50ODlS6hb1+uDVeOyC9YbZZQ3XicBPwh4Gk/8icXpiGBIBGAgxN6uqdO3fCQxngpAsy7yZOniPNe6pEjR+Jsu1YjU6bMurltmyM9NuCo07PnW+pghDFo9IZhssR4M3pLoQgwbcPMbgWYd30NWbNmMU5ph7S+Vhr0Jq2AOruaabEfvLJn988UbuXr/g0T8fjx49SJ7dVXO8pnnw3UcWDX8WgrDV51god7p06d5aWX2kvDho8ak/+NhwK0MdoNQwRWwFCENf5u7XP/TujacI/PbRKIdAIU4EhvoSirX6VKlfWMJ0yYoJ7JMDvCCatkyVJqHoXTE3pCGBOGefaHH76PlxA8dzEWOXPmdB1/hMPSpEkT5Pbbb1cTaMqUKY0IHFdzK8Z20aNDsPs6UcqUqTQdnIUwvuoeMMYK72OMea9du9ZZjns8b9uVK1fR3ePHj1XBmj17tnorW3HBC+VC9CDyC4xD1e7du425+F4rSpzvVKlS6TiqXXM+rBJ//jlPfvtttHqpow0gst5eUUqVKqWWCQcqiCy4bt26RR3O0CuuUqWq9kzhDAdvaYg4xofhnIeAdkG7I3/XkNC14RrX2284eeE9c4xnM5BAJBC4YdeKhNqwDlFPAGO/Tz/dXL1i4TmLgDG9Nm2e1d8Y7yxgHHvgSIXXasqUKSM5cuTQY+5/YPZ88cUXzU13kDp7oScKj+VnnmkpadKkUQcr5LNgwQLdhkMWxAJex6+91sk9O7Md49WkibFM1OHbb78249dpdGzUNTGcvAYM+Ey++GKwYIwSHsjzjEdw/BbtG+Xky5dfnnzyKeXx559/qqMYBAyChYBXqiBWgwcPchYJR6maNWs6t11/3H333SrSsAIMHfqN6yH9nSyZwwQdt24xKoqPPNJQBRj1QMDQgeXApjuu/ylXrryO9w4ZMlj3oP0aNWpsHn4myqhRv0rz5i3M61qtjEf5SPOK0Wo1R9euXVsdu5AADx14hQl1gYe0ZUZO6NpAWisufruHvXv3mleoVqpp3NWk7x6P2ySQWARiSlVv5jknYGKVHoZyYqcPC0OpLNIuAfRCYapFzwumR/cbK145wTvCGEtMKGB8GK+8YCzVdfwU6TBODBMvesoQbPRgHQ5IccdVEyoDx2E2T58+Q5zxaysden549xWvAeFBwG6AZ/ahQwe1nu7jnMgLJt1jx46aB4G7EmSCc0Rv2Rd27vVEjxZOVZikw9srV67xUd9kyZI7Tfvo0aJ3Cyc7BNQDvWQ8vLiO+eMY2h8iiR67e0jo2nCPz+1bh0C1+m1vncoGoaYU4CBAZBYkQAIkQAKBE4g2AeYYcODXDHMgARIgARIgAdsEKMC2kTEBCZAACZAACQROgAIcOEPmQAIkQAIkQAK2CVCAbSNjAhIgARIgARIInAAFOHCGzIEESIAESIAEbBOgANtGxgQkQAIkQAIkEDgBCnDgDJkDCZAACZAACdgmQAG2jYwJSIAESIAESCBwAhTgwBkyBxIgARIgARKwTYACbBsZE5AACZAACZBA4AQowIEzZA4kQAIkQAIkYJsABdg2MiYgARIgARIggcAJUIADZ8gcSIAESIAESMA2AQqwbWRMQAIkQAIkQAKBE6AAB86QOZAACZAACZCAbQIUYNvImIAESIAESIAEAidAAQ6cIXMgARIgARIgAdsEKMC2kTEBCZAACZAACQROgAIcOEPmQAIkQAIkQAK2CVCAbSNjAhIgARIgARIInAAFOHCGzIEESIAESIAEbBOgANtGxgQkQAIkQAIkEDgBCnDgDJkDCZAACZAACdgmQAG2jYwJSIAESIAESCBwAhTgwBkyBxIgARIgARKwTYACbBsZE5AACZAACZBA4AQowIEzZA4kQAIkQAIkYJsABdg2MiYgARIgARIggcAJUIADZ8gcSIAESIAESMA2AQqwbWRMQAIkQAIkQAKBE6AAB86QOZAACZAACZCAbQIUYNvImIAESIAESIAEAidAAQ6cIXMgARIgARIgAdsEKMC2kTEBCZAACZAACQROgAIcOEPmQAIkQAIkQAK2CVCAbSNjAhIgARIgARIInAAFOHCGzIEESIAESIAEbBOgANtGxgQkQAIkQAIkEDgBCnDgDJkDCZAACZAACdgmQAG2jYwJSIAESIAESCBwAhTgwBkyBxIgARIgARKwTYACbBsZE5AACZAACZBA4AQowIEzZA4kQAIkQAIkYJsABdg2MiYgARIgARIggcAJUIADZ8gcSIAESIAESMA2AQqwbWRMQAIkQAIkQAKBE6AAB86QOZAACZAACZCAbQIUYNvImIAESIAESIAEAidAAQ6cIXMgARIgARIgAdsEKMC2kTEBCZAACZAACQROgAIcOEPmQAIkQAIkQAK2CVCAbSNjAhIgARIgARIInAAFOHCGzIEESIAESIAEbBOgANtGxgQkQAIkQAIkEDgBCnDgDJkDCZAACZAACdgmkMJ2CiYggSgicOXKZTlz5qxcvnxJrl69GkVnHvipJkuWTFKkSCnp06eT5Ml5qwmcKHNIagT4X5HUWpTnExQCly9fliNHDsmpU6fktttuk9SpU0vKlKmCkne0ZHLlyhU5d+6MHDy4XxlmyZI1qEJ8+KzIt6tSysztyWX7iWRy9lJMtKAN63mmS3lNCmS8KvUKXJHnyl6SLOnCWp1bunAK8C3dfKx8KAhAfHft2imZM2eSAgUKGNFIHopioiZPCPHu3btl27atUrBgYdMrDvy2M3lrcukwO7WcvkjRTewLCQ866w4n18/X5gHoszoXpGHhK4ldjSRRHseAk0Qz8iSCRQAm53/+2Sp33ZVDcufOTfENAlg8wOTPn1/y5MmjDzZ4wAkkQHyfn0rxDYRhsNLiAQhtgTZhsE+AAmyfGVMkYQKHDx8yPd/Mki1btiR8luE5NTCFVQGmfX8DzM7o+Yqw5+svw+Cni9E2Qdsw2CNAAbbHi7GTMAH0fjHmi54aQ2gI3HXXXcoYrP0JGPOl2dkfcqFNgzZB2zDYI0ABtseLsZMwAXg7w+GKY76ha2SwBWOw9ifMMA5XDJFJAM5wDPYIUIDt8WLsJEwArxrB25khtATAGKz9CTuMtzNDZBKAJzqDPQIkZo8XYydhAteuXWPvNxHaF71gf9+p5qtGidBAfhbBtrEPjgJsnxlTkAAJkAAJkEDABAJ/IS/gKjADEoguAhcuXJANGzbIxYsXpVChQup1HV0EEudsb+YnfS1xquBXKTerNzIMRd1Tm+Fb5HuRr/P61Wb+JqIA+0uO6UjAJoHz589Lp06dZPTo0WYM9IYX8KOPPioffvihZM+e3WaOoYl+5MgRKVKkiHz88cfStm3b0BQS4lwHPizy3D3xF/LLWnN8QvzHAzlSNLNIzttE/thhP5cjXUXSJHBXrvK1yNqD9vO+WYrNr4jsPSlS/dubxeKxYBNIoKmDXRzzI4HoJIDZoBo1aiRLly6Vhx56SJ5++mk5efKkjBkzRiZNmiTHjx+X8ePHS0xMQv2f0PPDWDiC9R36EoNfQqrrDrmHzoicv/Gs4yzogpd9zoMB/uhVS6RJCZHig0R2G1GzEzaYV6TTXn+bJ6PxB7zLCPmxcyIHzHlY4ax//mtWcq/fKcxgZAbOtOqVTSh3UoBDSZd5k8B1Ar/99puK7zPPPCMDBw50Cm2rVq2kWbNmMmfOHFm4cKHUqFGDzIJIoJ3p5f6+PYgZ2sgquR8eNjW/u1FAizIiXzcSGb1OpOOMG/sD/ZXMPONddTxjBZoV0wdIgAIcIEAmJwFfCHz99deSLl066dWrl1N8rXS9e/fW+ZGPHTumu2CehkjPnj1bNm7cKGXLlpVatWrJyy+/rF7a6DUPGzZMOnbsKP3795etW7dKsWLFpF+/flK6dGnN4+DBg9K1a1eZN2+eWY0ovdSrV0/+85//SOHChfX4zp07pWfPnrJ8+XLJkCGD1KlTR7p37y5p06a1qhUV36OfFDlxXsxCDiINi4pcMGOgP68R+cc0xctVRApnEllvzL0QwKX7RN6oKVIzn+N3k+IieTM6fneZKbJiv0hP0/u9L78D3U9NRbYcccR570+ROdsd+/PfIfJdY5FN5th/JtvH/LwxrUOcZ2wVedp8bzsq8sQokXblRR4zPe8aZh6Zf0+LzN8l8uVSU69/HWW8VFHkFXNO+UydMWsVHkxeN/U+anrYCOlMz/vLhiIPmUskrVGG2D0iL00SOejS+3bE5N9gETCYGUiABEJNYNOmTVKhQgXJkiWLR1GlSpWSn3/+2bn/s88+kw8++ECeeuopQQ957ty58s4778jtt98u7dq1k3///VdiY2Nl5cqV8uKLLwrSDx8+XJ5//nlZtGiRXLp0STCufODAAenQoYOcPn1aBfuvv/6SxYsXy/79+1XQIbbIH+Hzzz+XZcuWydSpU531SAo/ihvcpy96nsmSvQ6no+pGrO5IA3O7yOoDImWyi3Q1IosA8/XGwyL35DSrLhnBLDtEpIL5fX9+x+evnUa8jJAhj2ktRcp96XBiOgcTsXmO2W9EcO8pkWalRNoacbQEuLl5RqqSW2SZEXR/QrHMjvTIAz3ZBUZoGxUTGfSIw9w+a5vInab8lneL1CkoUmiAyMNFRD55yFGn0etFqpm0T5l6mOTOsXCYu5EG9SqeVaReIZGP6om0GedPLZnGFwIUYF8oMQ4JBEAAY70QQSzu4EvAO7Lorfbp00ejN27cWCZOnCibN2+Okxy95KZNTTfLBMwuNWjQIDl79qzG3bJli3z11Vdq3sbxnDlzqohv375dvvjiCx1/njZtmpQoYbpMJsABrHPnzmomx8IJSSVAQLyFmt86eqzWsUbm+Qc9wk7VRN550OGQVOJzh0Bt+p8RsTvjjpEOXizSZZYjNXqzELNny4n0nW9EPJtIrttNXqbXfPKC6eVWdAjgbalETpmHAcRF+GGV49vfv7G7RVobcdxnRL69KQNOVO0nO84DY7qbXhbJkcFR74rmwQFhrjlHxIFwj2pmrhtTJ9fQ5BeR2f+Y6yG9sQJ0MA8fd7ke5e9gE6AAB5so8yMBNwIQR5ifz5yJ35YHszMWsMenS5cuahqGuRqCuWbNGn1lyS1b7cVa+/Lly6dOU0ePHpW1a9fqbpitrYCeMz4IMDvDLP3NN99Yh80CCUf0N3rqSUmAP401JmQvaz/sOuE8dXVyssaJdxx37B+/UeSKESmEbcfMA4wRVJhorQAztRXwG6IKc7V7gHl3snlualrSOGYZk/U6U5cimU0b7Avck/mLJQ7xRZlfLRXZetSYpE09etwnUsA8MGQ1ImqFhbscotvcmKzrFzbmZSPe6JH/4nIex40pHuKLAKevA6dNT9pYBxhCR8A8JzGQAAmEkgA8mzH2unr1aq8zQK1bt05XX3rvvfe0Ghi7xZjskiVLJG/evCrIMD+7B4ioFVy9pzGWDCHPmDGjdTjONzyu3afcxApQeOUoKYkvThrCOtKIjPvnyPVxT8SxxkDx+7rmqvkZ2/EF15V/bk/tiBXfO7TDr/d0IdIQSIRhKx3fgfzdY3q8VuhWU2RCc8cY8BljAh+3QcR6mEAciO19xsHrC9Nzh7g+UlSkfz3TC3/MykHkiDGnuwb0khlCS4ACHFq+zJ0ElAAEdceOHXHGei00GH9FqFu3rpqQR4wYITA7YzwWZmi8toRVmnwNBQsWVKGHgFsBed59991mPd5dOvkHTOJvv/22vuuL930xfpwiRQouw2gBS+C7Zt4bEeqZHiUCxou9hTmmVwmxrJVfBD3QM8YMDc/mYAY4YCHUG26cyUaKvPm7CF5jskKPWiKf1hf52FgEKnzleEUKJuvaBR3mdSsevxOXAE3QicubpUUpAYyvQlBfeeUVgZn3gQce0Mk4MCkHvJrxKlLVqlXV1AyvZDhKwfx8+PBheffdd9W8jJ4tZs9KKMB5C6LarVs39WzGmDKcumAKR4+6devW6mENr2p88GAAb2qU1aNHD8GEIUklvHWf8eSt4Hk2qw+KwDPZ3/CJETOYecvlML1J4+AEUYWpGeHsZcf3m6bsAYscpuYRq0XQS81knKPQI8ZYcDDDjhMOM3m7exye163KOhyxUMaTpcwDgDleKZfI2KccXt541xjjw+glb79udg9mfZiXbwQowL5xYiwSCIgATL6//vqrviyf48MAAAkISURBVBqEHq/V602VKpXuwwxZCNh+88039XUleE1j4QK8O5wrVy5NX65cOedrTK5mZ6tyMD3D4QqvKbVv315atmwpKVOmlPvvv1/zRLyGDRvqK0jvv/++TJgwQZNantgQf0yVieAtfz1wC/yxzMHwFPYWchvrPATYfUIOOE0hnLj+7djy/It4EFgEvAbUY67j1SVsw/wLUcarQvONpzRmrfrRiG7XGmBqPKqXI1bCwaobXo1yDeevb59yqWOfeWYc+FHHq0iIu9OI6nemnGfLi/S+X6TYIOPNXM4hwmXNQwMCvMPfnOMYG7bKchxx/MU5Xrrquoe/g00gplT1ZlFl6Y+dPizYDJlfEiFw5MhhI4ApVcBCeUpwlIJHM8Z1MeUjBNI9QAThTFW8eHF1mMJxvLubNWtWdehyj+9tG45dKAfe197GkE+cOCHr16/X/GCeTizB3bdvnxH5i+aVrKzeqn3TfTkG3hj3vmnEEB0c86TDozn/p47ebGrThcHrS+4BcytnSed4HxdjqXh1aHl7kVX7Qzfdo9F2fU0KY9p4jxkBrxYlM994HQoBr2XlMe4E6IFj1q2EHjQcqXz/u/8VM8AcQKhWv20AqW+9pOwB33ptxhrf4gQyZcqk5uabnQZ6zOgBuwZ4OtsJGNMtWbJkvEngpFWtWrV4j/PAzQlgIo34AnqtED28DtTrfpF78zpiDrkxLB9fUr/3oyeFyUJcw7/Xhdfah3Hq+MaqrTj8TjwCFODEY82SSIAEbnECELlr5o9l4k7odFIaAX69unmlyZhyJ2x0eGMnlIbHo4cABTh62ppnSgIkECCBFyY63gf21XR7zjhkVfvGzKplXvFx740GWBUmTwIEKMBJoBF5CsEhgDFQrFrEEFoCYAxnMX9CupTXzLzNGO0MT8BkFfjYCd7GiO2kv1Xiom0Y7BHw77/AXhmMTQK3BIEUKVI6PYBviQrfopWEgxlY+xMKZKRbrj/cEiMN28Y+ZQqwfWZMkUQJpE+fTie8YC84dA0MtphUBKz9CfUK0ELhD7fESMO2sU+ZAmyfGVMkUQLJk6fQySqw2hBDaAjs3r1bGYO1P+G5spfMwvE0dfrDLpRp0CZoGwZ7BCjA9ngxdhInkDlzVrMwwVHBeroMwSUAplj0wZ/3f62a4N3az+pgBgqKsMUk/N/XtE3QNgz2CFCA7fFi7CROAO/O5s2bT9BTwxSNNEcH3uBguGfPHrOO8X4pWLCwmd3Lv96vVZOGha/IN49cYE/YAhLGb/R80RZoEwb7BAL7T7BfHlOQQMQTgAgXKlTYzI18SFcwwhzKmBgD00Iy+E4AwguHK4z5OuahzqcLPvieQ/wxccOvmvOsfLsqpczYnlx2nEgWVu/o+Gua9I7A2xkOVxjzhdmZPV//25gC7D87pkzCBNBLy579LjWXnjlz1iyccMn0hjnGZafJ8VpX2rTplWGgvV5v5eLG37XaJf14O859JBDpBCjAkd5CrF9YCUA4vM2jHNZKsXASIIEkQYBjwEmiGXkSJEACJEACtxoBCvCt1mKsLwmQAAmQQJIgQAFOEs3IkyABEiABErjVCFCAb7UWY31JgARIgASSBAEKcJJoRp4ECZAACZDArUaAAnyrtRjrSwIkQAIkkCQIRJ0AX7pkFuhkIAESIAESiCgC0XhvjjoBPnX6TERddKwMCZAACZCASDTem6NOgHfvPcBrnQRIgARIIMIIROO9OeoEeM2GbRF22bE6JEACJEAC0XhvjjoBXvD3Sl7pJEACJEACEUYgGu/NUSfAK9dult37aIaOsP89VocESCCKCeCejHtztIWoE2A08I+/Tom2dub5kgAJkEDEEojWe3JUCvDkmfNlw+btEXsxsmIkQAIkEC0EcC/GPTkaQ1QK8LVr16T3h0Pl7Lnz0djmPGcSIAESiAgCuAfjXox7cjSGqBRgNPSuPfvlzT6DzULrnJgjGi98njMJkEB4CeDei3sw7sXRGqJWgNHgi5atlc69BrAnHK1XP8+bBEggLATQ88W9F/fgaA5RLcBoeFwAbV9+m2PC0fxfwHMnARJINAIY88U9N9rFF8BjSlVvFp3Gd7fLLSYmRhrWqymtnmogeXJmdzvKTRIgARIggUAI4FUjeDvD4Spax3zd+VGA3YmY7fJlikn1ymWlTIlCkidXdrktQ3pJmTKFl5jcRQIkQAIk4E4ACytgbmdML4kZrjDJRjS+5+vOxX2bAuxOhNskQAIkQAIkkAgEon4MOBEYswgSIAESIAES8CBAAfZAwh0kQAIkQAIkEHoCFODQM2YJJEACJEACJOBBgALsgYQ7SIAESIAESCD0BCjAoWfMEkiABEiABEjAgwAF2AMJd5AACZAACZBA6AlQgEPPmCWQAAmQAAmQgAcBCrAHEu4gARIgARIggdAToACHnjFLIAESIAESIAEPAhRgDyTcQQIkQAIkQAKhJ0ABDj1jlkACJEACJEACHgQowB5IuIMESIAESIAEQk+AAhx6xiyBBEiABEiABDwIUIA9kHAHCZAACZAACYSeAAU49IxZAgmQAAmQAAl4EKAAeyDhDhIgARIgARIIPQEKcOgZswQSIAESIAES8CBAAfZAwh0kQAIkQAIkEHoCFODQM2YJJEACJEACJOBBgALsgYQ7SIAESIAESCD0BCjAoWfMEkiABEiABEjAgwAF2AMJd5AACZAACZBA6AlQgEPPmCWQAAmQAAmQgAcBCrAHEu4gARIgARIggdAToACHnjFLIAESIAESIAEPAhRgDyTcQQIkQAIkQAKhJ0ABDj1jlkACJEACJEACHgQowB5IuIMESIAESIAEQk+AAhx6xiyBBEiABEiABDwIUIA9kHAHCZAACZAACYSeAAU49IxZAgmQAAmQAAl4EKAAeyDhDhIgARIgARIIPQEKcOgZswQSIAESIAES8CBAAfZAwh0kQAIkQAIkEHoCFODQM2YJJEACJEACJOBBgALsgYQ7SIAESIAESCD0BCjAoWfMEkiABEiABEjAgwAF2AMJd5AACZAACZBA6AlQgEPPmCWQAAmQAAmQgAeBmGsmeOzlDhIgARIgARIggZAS+H+uXdsAmm+DTgAAAABJRU5ErkJggg==`),K(`desktop-stacks.png`,`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`),K(`lisbon-tram-28.png`,`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`)],q=e(i(),1);async function mt(e,t,n,r,i){let a=R(n,r),o=[],s=``,c;i({done:0,total:a.length});for(let[n,r]of a.entries()){let l=await e.embed(r,{task:`document`},t);for(let t of l.traces??[])e.traces?.push(t);o.push(...l.result.embeddings.map(e=>e.values)),s=l.result.model,c=ze(c,l.result.usage),i({done:n+1,total:a.length})}return{result:{inputs:n,vectors:o,model:s,...c?{usage:c}:{},requests:a.length}}}function ht(e){let[t,n]=(0,q.useState)(null),{call:r,...i}=Te(e,`indexing`,mt);return{...i,progress:i.status===`indexing`?t:null,index:(e,t)=>r(e,t,n)}}var gt=(e,t,n,r)=>e.embed(n,r,t);function _t(e){let{iface:t,describeFailure:n}=d(e),{call:r,...i}=Te(e,`embedding`,gt);return{iface:t,describeFailure:n,...i,embed:r}}var J=t(),vt={span:{k7Eaqz:`xeuugli`,k1xSpc:`xrvj5dj`,kZKoxP:`x5yr21d`,$$css:!0}};function Y({columns:e,rows:t,xstyle:i,className:a,style:o,children:s,ref:c,...l}){let u={...e!=null&&{gridColumn:e===`full`?`1 / -1`:`span ${e}`},...t!=null&&{gridRow:`span ${t}`}};return(0,J.jsx)(`div`,{ref:c,...g(r(`grid-span`),n(vt.span,i),a,{...o,...u}),...l,children:s})}Y.displayName=`GridSpan`;var yt=[{value:`whole`,icon:(0,J.jsx)(le,{size:16})},{value:`paragraphs`,icon:(0,J.jsx)(je,{size:16})},{value:`lines`,icon:(0,J.jsx)(ke,{size:16})},{value:`commas`,icon:(0,J.jsx)(Ae,{size:16})},{value:`custom`,icon:(0,J.jsx)(Me,{size:16})}],bt={invalid_json:`@theorem.embedding.empty`,no_inputs:`@theorem.embedding.empty`,empty_input:`@theorem.embedding.empty`,text_off:`@theorem.embedding.text_off`};function xt(e,t,n){return t.ok?null:t.reason===`attachments`?`${n}: ${t.issues.map(e=>de(e)).join(` `)}`:t.reason===`too_many_inputs`?e(`@theorem.embedding.too_many`,{max:t.max}):e(bt[t.reason],{name:n})}function St(e,t,n=[]){let r=S(),[i,a]=(0,q.useState)(e),[o,s]=(0,q.useState)(`paragraphs`),[c,l]=(0,q.useState)(``),[u,d]=(0,q.useState)(()=>[...n]),[f,p]=(0,q.useState)(`fields`),[m,h]=(0,q.useState)(null),g=o===`custom`?{separator:c}:o,_=(0,q.useMemo)(()=>[...I(i,o===`custom`?{separator:c}:o).map(e=>({input:e})),...u],[i,o,c,u]),v=(0,q.useMemo)(()=>_.map(e=>e.input),[_]),y=(0,q.useMemo)(()=>f===`json`?m??JSON.stringify(v,null,2):``,[f,m,v]),b=m!==null&&N(m)===void 0;return{text:i,setText:a,choice:o,setChoice:s,separator:c,setSeparator:l,documents:_,inputs:v,issue:(0,q.useMemo)(()=>{for(let[e,n]of v.entries()){let i=xt(r,F([n],t),r(`@theorem.embedding.document`,{number:e+1}));if(i)return i}return null},[v,t,r]),requests:(0,q.useMemo)(()=>R(v,t).length,[v,t]),view:f,setView:e=>{h(null),p(e)},json:y,jsonInvalid:b,setJson:e=>{h(e);let t=N(e);t!==void 0&&(a(``),d(t.map(e=>({input:e}))))},addFiles:async e=>{let t=e.filter(L),n=e.filter(e=>!L(e)),r=await Promise.all(t.map(async e=>I(await e.text(),g).map(t=>({input:t,from:e.name})))),i=await O(n);d(e=>[...e,...r.flat(),...i.map(({name:e,mimeType:t,data:n})=>({input:{parts:[{type:`media`,mimeType:t,data:n}]},from:e}))])},remove:e=>{let t=_.length-u.length;d(n=>n.filter((n,r)=>!e.includes(r+t)))},fromText:_.length-u.length}}function X(e){return typeof e==`string`?void 0:e.parts.find(e=>e.type!==`text`)}function Ct(e){return typeof e==`string`?e:e.parts.flatMap(e=>e.type===`text`?[e.text]:[]).join(` `)}function wt(e,t,n,r){let i=X(n.input),a=Ct(n.input);if(!i)return{label:a,detail:null};let o=i.type===`media`?t(T(i.data)):e(`@theorem.embedding.held_file`);return{label:a||(n.from??e(`@theorem.embedding.document`,{number:r})),detail:`${i.mimeType} · ${o}`}}function Tt({label:e,placeholder:t,accept:n,isMultiple:r=!1,onFiles:i}){let a=S(),[o,s]=(0,q.useState)(null);return(0,J.jsx)(Oe,{label:e,isLabelHidden:!0,mode:`dropzone`,isMultiple:r,accept:n.join(`,`),value:null,placeholder:t,status:o?{type:`error`,message:o}:void 0,onChange:e=>{let t=e===null?[]:Array.isArray(e)?e:[e];t.length!==0&&(s(null),i(t).catch(()=>{s(a(`@theorem.embedding.unreadable`,{name:t.map(e=>e.name).join(`, `)}))}))}})}function Et({form:e}){let t=S();return(0,J.jsxs)(c,{gap:2,vAlign:`center`,wrap:`wrap`,children:[(0,J.jsx)(x,{type:`supporting`,color:`secondary`,children:t(`@theorem.embedding.split`)}),(0,J.jsx)(a,{label:t(`@theorem.embedding.split`),size:`sm`,value:e.choice,onChange:t=>{e.setChoice(t)},children:yt.map(({value:e,icon:n})=>{let r=t(`@theorem.embedding.split_${e}`);return(0,J.jsx)(ne,{content:r,children:(0,J.jsx)(o,{value:e,label:r,icon:n,isLabelHidden:!0})},e)})}),e.choice===`custom`?(0,J.jsx)(l,{size:`fill`,children:(0,J.jsx)(re,{label:t(`@theorem.embedding.separator`),isLabelHidden:!0,placeholder:t(`@theorem.embedding.separator`),size:`sm`,value:e.separator,onChange:e.setSeparator})}):null]})}var Z=3;function Dt(e,t){let n=new Map;for(let[r,i]of e.documents.entries()){if(X(i.input)||r<e.fromText)continue;let a=i.from?t(`@theorem.embedding.from_file`,{name:i.from}):t(`@theorem.embedding.from_json`),o=n.get(a)??{source:a,at:[]};o.at.push(r),n.set(a,o)}return[...n.values()]}function Ot({group:e,form:t}){let n=S();return(0,J.jsxs)(s,{gap:1,children:[(0,J.jsxs)(c,{gap:1,vAlign:`center`,children:[(0,J.jsx)(l,{size:`fill`,children:(0,J.jsx)(x,{type:`supporting`,color:`secondary`,children:n(`@theorem.embedding.group`,{source:e.source,count:e.at.length})})}),(0,J.jsx)(b,{label:n(`@theorem.embedding.remove`,{name:e.source}),size:`sm`,variant:`ghost`,icon:(0,J.jsx)(_,{size:14}),onClick:()=>{t.remove(e.at)}})]}),e.at.slice(0,Z).map(e=>(0,J.jsx)(x,{maxLines:2,children:Ct(t.documents[e]?.input??``)},String(e))),e.at.length>Z?(0,J.jsx)(x,{type:`supporting`,color:`secondary`,children:n(`@theorem.embedding.more`,{count:e.at.length-Z})}):null]})}function kt({part:e,name:t,label:n,onRemove:r}){let i=e.type===`media`&&e.mimeType.startsWith(`image/`);return(0,J.jsxs)(s,{gap:1,hAlign:`center`,style:{width:At,flexShrink:0},children:[(0,J.jsx)(f,{...i&&e.type===`media`?{src:`data:${e.mimeType};base64,${e.data}`}:{},alt:``,label:n,onRemove:r}),(0,J.jsx)(x,{type:`supporting`,color:`secondary`,maxLines:1,style:{width:`100%`,textAlign:`center`},children:t??e.mimeType})]})}var At=72,jt=new WeakMap,Mt=0;function Nt(e){let t=jt.get(e);return t===void 0&&(t=Mt,Mt+=1,jt.set(e,t)),String(t)}function Pt({form:e}){let t=S(),n=j(),r=e.documents.flatMap((e,t)=>{let n=X(e.input);return n?[{document:e,part:n,at:t}]:[]});return r.length===0?null:(0,J.jsx)(c,{gap:2,wrap:`nowrap`,style:{overflowX:`auto`},children:r.map(({document:r,part:i,at:a})=>{let{label:o,detail:s}=wt(t,n,r,a+1);return(0,J.jsx)(kt,{name:r.from,part:i,label:[o,s].filter(Boolean).join(` · `),onRemove:()=>{e.remove([a])}},Nt(r))})})}function Ft({form:e}){let t=Dt(e,S());return t.length===0&&e.documents.length===0?null:(0,J.jsxs)(s,{gap:3,children:[t.map(t=>(0,J.jsx)(Ot,{group:t,form:e},t.source)),(0,J.jsx)(Pt,{form:e})]})}function It({text:e,file:t}){return!e||!t?(0,J.jsx)(J.Fragment,{children:e??t}):(0,J.jsxs)(De,{columns:3,gap:3,children:[(0,J.jsx)(Y,{columns:2,children:e}),(0,J.jsx)(Y,{columns:1,children:t})]})}function Lt(e){let t=e.text?[`text/*`,`.md`,`.csv`,`.json`]:[];return[...e.attachments?.accept??[],...t]}function Rt({form:e}){let t=S();return(0,J.jsxs)(s,{gap:3,children:[(0,J.jsx)(Ee,{label:t(`@theorem.embedding.text`),isLabelHidden:!0,value:e.text,placeholder:t(`@theorem.embedding.text_placeholder`),rows:M(e.text,4,12),onChange:e.setText}),(0,J.jsx)(Et,{form:e})]})}function zt({form:e,rules:t}){let n=S(),r=Lt(t),i=r.length>0?(0,J.jsx)(Tt,{label:n(`@theorem.embedding.files`),placeholder:n(`@theorem.embedding.drop_files`),accept:r,isMultiple:!0,onFiles:e.addFiles}):null;return(0,J.jsxs)(s,{gap:3,children:[(0,J.jsx)(It,{text:t.text?(0,J.jsx)(Rt,{form:e}):null,file:i}),(0,J.jsx)(Ft,{form:e})]})}function Bt(e,t){return t.jsonInvalid?e(`@theorem.embedding.invalid_json`):t.inputs.length===0?e(`@theorem.embedding.no_documents`):t.issue??e(`@theorem.embedding.ready`,{count:t.inputs.length,requests:t.requests})}function Vt({form:e,rules:t,isRunning:n,onRun:r,onStop:i}){let a=S(),o=!e.jsonInvalid&&e.inputs.length>0&&e.issue===null;return(0,J.jsxs)(A,{title:a(`@theorem.embedding.documents`),view:e.view,hasFields:!0,onView:e.setView,onRun:r,children:[e.view===`fields`?(0,J.jsx)(zt,{form:e,rules:t}):(0,J.jsx)(me,{label:a(`@theorem.embedding.documents`),text:e.json,isInvalid:e.jsonInvalid,onChange:e.setJson}),(0,J.jsx)(ve,{note:Bt(a,e),isReady:o,isRunning:n,runLabel:a(`@theorem.embedding.index`),runningLabel:a(`@theorem.embedding.indexing`),stopLabel:a(`@theorem.embedding.stop`),onRun:r,onStop:i})]})}function Ht(e,t){let n=S(),[r,i]=(0,q.useState)(()=>JSON.stringify(e)),a=Fe(r),o=a===void 0?null:Ie(a),[s,c]=(0,q.useState)(`fields`);return{json:r,setJson:i,input:a,fields:o,issue:a===void 0?n(`@theorem.embedding.query_invalid_json`):xt(n,F([a],t),n(`@theorem.embedding.query`)),shown:o===null?`json`:s,setView:c,setFields:e=>{i(JSON.stringify(Le(e),null,2))}}}function Ut({fields:e,accept:t,onChange:n}){let r=S(),i=j(),a=e.media[0];if(a){let t=a.type===`media`?i(T(a.data)):r(`@theorem.embedding.held_file`);return(0,J.jsx)(kt,{part:a,label:[a.mimeType,t].join(` · `),onRemove:()=>{n({...e,media:[]})}})}return t?(0,J.jsx)(Tt,{label:r(`@theorem.embedding.query_file`),placeholder:r(`@theorem.embedding.query_file`),accept:t,onFiles:async t=>{let r=await O(t);n({...e,media:r.map(({mimeType:e,data:t})=>({type:`media`,mimeType:e,data:t}))})}}):null}function Wt({fields:e,rules:t,onChange:n}){let r=S(),i=t.attachments?.accept,a=t.text?(0,J.jsx)(Ee,{label:r(`@theorem.embedding.query`),isLabelHidden:!0,value:e.text,placeholder:r(`@theorem.embedding.query_placeholder`),rows:M(e.text,2,6),onChange:t=>{n({...e,text:t})}}):null,o=e.media.length>0||i!==void 0?(0,J.jsx)(Ut,{fields:e,accept:i,onChange:n}):null;return(0,J.jsx)(It,{text:a,file:o})}function Gt(e,t,n,r){return r?t.issue?t.issue:n===`stale`?e(`@theorem.embedding.stale`):n===`model`?e(`@theorem.embedding.remodelled`):null:null}function Kt({form:e,rules:t,index:n,isRunning:r,onRun:i,onStop:a}){let o=S(),{input:s}=e,c=e.issue===null&&n===`fresh`&&s!==void 0,[l,u]=(0,q.useState)(!1),d=()=>{u(!0),c&&i(s)};return(0,J.jsxs)(A,{title:o(`@theorem.embedding.query`),view:e.shown,hasFields:e.fields!==null,onView:e.setView,onRun:d,children:[e.shown===`fields`&&e.fields!==null?(0,J.jsx)(Wt,{fields:e.fields,rules:t,onChange:e.setFields}):(0,J.jsx)(me,{label:o(`@theorem.embedding.query`),text:e.json,isInvalid:s===void 0,onChange:e.setJson}),(0,J.jsx)(ve,{note:Gt(o,e,n,l),isReady:c||!l,isRunning:r,runLabel:o(`@theorem.embedding.search`),runningLabel:o(`@theorem.embedding.searching`),stopLabel:o(`@theorem.embedding.stop`),onRun:d,onStop:a})]})}var qt=(0,q.lazy)(()=>ee(()=>import(`./embedding-space-view-BU2AjjAx.js`).then(e=>({default:e.EmbeddingSpaceView})),__vite__mapDeps([0,1,2,3,4,5,6]))),Jt=10,Yt=460,Q=4,Xt={listStyle:`none`,margin:0,padding:0,display:`flex`,flexDirection:`column`,gap:12},Zt=`var(--color-background-muted)`;function $({failure:e}){return e?(0,J.jsx)(w,{status:`error`,role:`alert`,title:e.error}):null}function Qt(e,t){let n=S(),r=j();return i=>wt(n,r,t[i]??{input:e[i]},i+1).label}function $t({matches:e,index:t,documents:n,pointing:r}){let i=S(),a=Se(),o=Qt(t.inputs,n),u=e[0];if(!u)return(0,J.jsx)(w,{status:`warning`,title:i(`@theorem.embedding.no_matches`)});let d=e.slice(0,Jt);return(0,J.jsx)(xe,{title:i(`@theorem.embedding.matches`),value:a.decimal.format(u.score),note:e.length>d.length?i(`@theorem.embedding.matches_shown`,{shown:d.length,count:e.length}):i(`@theorem.embedding.best`,{name:o(u.index)}),children:(0,J.jsx)(`ul`,{style:Xt,children:d.map((e,t)=>{let n=o(e.index),i=a.decimal.format(e.score);return(0,J.jsx)(`li`,{"aria-label":`${n}: ${i}`,onPointerEnter:()=>r.onHover(e.index),onPointerLeave:()=>r.onHover(null),style:{borderRadius:`var(--radius-container)`,margin:`-4px -8px`,padding:`4px 8px`,background:r.hovered===e.index?Zt:void 0},children:(0,J.jsxs)(s,{gap:1,children:[(0,J.jsxs)(c,{gap:3,vAlign:`start`,"aria-hidden":!0,children:[(0,J.jsx)(l,{size:`fill`,children:(0,J.jsx)(x,{type:`supporting`,maxLines:2,children:n})}),(0,J.jsx)(x,{type:`supporting`,color:`secondary`,hasTabularNumbers:!0,children:i})]}),(0,J.jsx)(we,{value:Math.max(e.score,0),isLead:t===0})]})},e.index)})})})}function en({text:e,label:t,isIcon:n}){let r=S()(`@theorem.embedding.copied`),{copy:i,isCopied:a}=pe({announce:r}),o=a?r:t;return n?(0,J.jsx)(b,{label:o,tooltip:o,size:`sm`,variant:`ghost`,icon:(0,J.jsx)(v,{icon:a?oe:ae,size:`xsm`,color:`secondary`}),onClick:()=>void i(e)}):(0,J.jsx)(y,{label:o,size:`sm`,variant:`ghost`,onClick:()=>void i(e)})}function tn({vectors:e,name:t,pointing:n}){let r=S(),i=(0,q.useMemo)(()=>JSON.stringify(e),[e]);return(0,J.jsxs)(s,{gap:2,children:[(0,J.jsxs)(c,{gap:2,vAlign:`center`,children:[(0,J.jsx)(l,{size:`fill`,children:(0,J.jsx)(x,{type:`supporting`,color:`secondary`,children:r(`@theorem.embedding.width`,{dimensions:e[0]?.length??0})})}),(0,J.jsx)(en,{text:i,label:r(`@theorem.embedding.copy_vectors`)})]}),(0,J.jsx)(`ul`,{style:{...Xt,gap:0,maxHeight:Yt,overflowY:`auto`},children:se(e,e=>e.slice(0,8).join()).map(({item:e,index:i,key:a})=>(0,J.jsx)(`li`,{onPointerEnter:()=>n.onHover(i),onPointerLeave:()=>n.onHover(null),style:{borderRadius:`var(--radius-container)`,padding:`4px 8px`,background:n.hovered===i?Zt:void 0},children:(0,J.jsxs)(c,{gap:2,vAlign:`center`,children:[(0,J.jsx)(l,{size:`fill`,children:(0,J.jsxs)(s,{gap:0,children:[(0,J.jsx)(x,{type:`supporting`,maxLines:1,children:t(i)}),(0,J.jsx)(x,{type:`supporting`,color:`secondary`,maxLines:1,hasTabularNumbers:!0,children:`[${e.slice(0,Q).map(e=>e.toFixed(4)).join(`, `)}${e.length>Q?`, …`:``}]`})]})}),(0,J.jsx)(en,{text:JSON.stringify(e),label:r(`@theorem.embedding.copy_vector`),isIcon:!0})]})},a))})]})}function nn(e){let[t,n]=(0,q.useState)(null);return(0,q.useEffect)(()=>{let t=new AbortController;return dt(e,t.signal).then(t=>n({of:e,space:t}),()=>{}),()=>t.abort()},[e]),t?.of===e?t.space:null}function rn(e){let t=U(e.map(e=>e.score));return e.slice(0,Jt).filter(e=>e.score>t).map(e=>({index:e.index,closeness:t<1?Math.min((e.score-t)/(1-t),1):1}))}var an={width:`100%`,aspectRatio:`1 / 1`,maxHeight:Yt};function on({space:e,query:t,matches:n,name:r,pointing:i,onUnavailable:a}){let o=S(),s=(0,q.useMemo)(()=>e&&t?ft(e,t):null,[e,t]),c=(0,q.useMemo)(()=>s?rn(n):[],[s,n]);if(!e)return(0,J.jsx)(`div`,{style:an});let l=o(`@theorem.embedding.space_label`,{count:e.documents.length});return(0,J.jsx)(q.Suspense,{fallback:(0,J.jsx)(`div`,{style:an}),children:(0,J.jsx)(qt,{space:e,query:s,matches:c,hovered:i.hovered,onHover:i.onHover,nameOf:r,label:s?`${l} ${o(`@theorem.embedding.space_query`)}`:l,onUnavailable:a})})}function sn({view:e,onChange:t}){let n=S();return(0,J.jsxs)(a,{label:n(`@theorem.embedding.view`),size:`sm`,value:e,onChange:e=>t(e===`list`?`list`:`space`),children:[(0,J.jsx)(o,{value:`space`,label:n(`@theorem.embedding.space`)}),(0,J.jsx)(o,{value:`list`,label:n(`@theorem.embedding.list`)})]})}function cn({vectors:e,name:t,pointing:n,isDrawable:r}){let i=S();return(0,J.jsxs)(s,{gap:2,children:[r?null:(0,J.jsx)(x,{type:`supporting`,color:`secondary`,children:i(`@theorem.embedding.space_off`)}),(0,J.jsx)(tn,{vectors:e,name:t,pointing:n})]})}function ln({run:e,result:t,documents:n,query:r,matches:i,pointing:a}){let o=S(),[c,l]=(0,q.useState)(`space`),[u,d]=(0,q.useState)(!0),f=nn(t.vectors),p=Qt(t.inputs,n);return(0,J.jsxs)(s,{gap:4,children:[(0,J.jsx)($,{failure:e.failure}),(0,J.jsx)(Ce,{model:t.model,usage:t.usage,elapsedMs:e.elapsedMs,tokens:e=>o(`@theorem.embedding.tokens`,{count:e}),children:(0,J.jsx)(be,{title:o(`@theorem.embedding.index`),value:o(`@theorem.embedding.indexed`,{count:t.vectors.length}),aside:u?(0,J.jsx)(sn,{view:c,onChange:l}):null,children:u&&c===`space`?(0,J.jsx)(on,{space:f,query:r,matches:i,name:p,pointing:a,onUnavailable:()=>d(!1)}):(0,J.jsx)(cn,{vectors:t.vectors,name:p,pointing:a,isDrawable:u})})})]})}function un(e){let{result:t,failure:n}=e.run;return t?(0,J.jsx)(ln,{...e,result:t}):(0,J.jsx)($,{failure:n})}function dn({index:e,search:t,documents:n,matches:r,pointing:i}){let a=S(),o=t.result?.embeddings[0]?.values;return(0,J.jsxs)(s,{gap:4,children:[(0,J.jsx)($,{failure:t.failure}),o&&e.result?(0,J.jsx)(Ce,{model:t.result?.model??``,usage:t.result?.usage,elapsedMs:t.elapsedMs,isStale:t.status===`embedding`,tokens:e=>a(`@theorem.embedding.tokens`,{count:e}),children:(0,J.jsx)(ce,{children:(0,J.jsx)($t,{matches:r,index:e.result,documents:n,pointing:i})})}):null]})}function fn(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function pn(e,t,n){return e?t&&t.model!==e.model?`model`:fn(e.inputs,n)?`fresh`:`stale`:`fresh`}function mn(e){return e.status===`indexing`?`indexing`:e.result!==null||e.failure!==null?`indexed`:`idle`}function hn(e,t,n,r){return n===`idle`?null:e?(0,J.jsx)(ge,{label:t,fill:n===`indexing`,children:r}):r}function gn({index:e}){let t=S(),{progress:n}=e;return(0,J.jsx)(k,{label:n?t(`@theorem.embedding.indexing_progress`,{done:Math.min(n.done+1,n.total),total:n.total}):t(`@theorem.embedding.indexing`),since:e.startedAt})}function _n(e,t,n){let r=pn(e.result,t.result,n);return r===`model`?{state:r,searched:!1,queried:null}:{state:r,searched:t.status!==`idle`||t.result!==null,queried:t.result?.embeddings[0]?.values??null}}function vn({iface:e,index:t,search:n,query:r,indexed:i,state:a,searched:o,matches:c,pointing:l}){return(0,J.jsxs)(_e,{children:[(0,J.jsx)(Kt,{form:r,rules:e.inputs,index:a,isRunning:n.status===`embedding`,onRun:e=>{n.embed([e],{task:`query`})},onStop:n.cancel}),o?(0,J.jsx)(s,{padding:4,children:(0,J.jsx)(dn,{index:t,search:n,documents:i,matches:c,pointing:l})}):null]})}function yn({inputs:e,...t}){let{index:n,indexed:r}=t,{state:i,searched:a,queried:o}=_n(n,t.search,e),c=n.result?.vectors,l=(0,q.useMemo)(()=>o&&c?Ve(o,c):[],[o,c]),[u,d]=(0,q.useState)(null),f=(0,q.useMemo)(()=>({hovered:u,onHover:d}),[u]);return(0,J.jsxs)(s,{gap:3,children:[(0,J.jsx)(un,{run:n,documents:r,query:o,matches:l,pointing:f}),n.result?(0,J.jsx)(vn,{...t,state:i,searched:a,matches:l,pointing:f}):null]})}function bn({transport:e,iface:t,search:n,defaultText:r=``,defaultDocuments:i,defaultQuery:a=``,maxWidth:o=`960px`,trace:s,flush:c,columns:l=!1,className:u,style:d}){let f=S(),p=St(r,t.inputs,i),m=Ht(a,t.inputs),h=ht(e),[g,_]=(0,q.useState)([]),v=ie(t,e.traces,s),y=()=>{p.jsonInvalid||p.issue||p.inputs.length===0||(_(p.documents),h.index(p.inputs,t.inputs))},b=mn(h);return(0,J.jsxs)(he,{inspector:v,maxWidth:o,flush:c,columns:l,requestLabel:f(`@theorem.embedding.documents`),className:u,style:d,children:[(0,J.jsx)(Vt,{form:p,rules:t.inputs,isRunning:b===`indexing`,onRun:y,onStop:h.cancel}),hn(l,f(`@theorem.embedding.results`),b,b===`indexing`?(0,J.jsx)(gn,{index:h}):(0,J.jsx)(yn,{iface:t,index:h,search:n,query:m,indexed:g,inputs:p.inputs}))]})}function xn(e){let t=S(),n=_t(e.transport);return n.describeFailure?(0,J.jsx)(fe,{title:n.describeFailure.error}):n.iface?(0,J.jsx)(bn,{...e,iface:n.iface,search:n}):(0,J.jsx)(k,{label:t(`@theorem.chat.loading`)})}function Sn({endpoint:e,http:t,transport:n,theme:r,mode:i,labels:a,...o}){let s=(0,q.useRef)(t);s.current=t;let c=(0,q.useMemo)(()=>n??u({...s.current,endpoint:e}),[n,e]);return(0,J.jsx)(h,{theme:r,mode:i,children:(0,J.jsx)(te,{labels:a,children:(0,J.jsx)(xn,{...o,transport:c})})})}function Cn(e,t){return e.some(e=>e===t||e.endsWith(`/*`)&&t.startsWith(e.slice(0,-1)))}function wn(e){if(e.type!==`embedding`)return{defaultText:D,defaultQuery:E};let{text:t,attachments:n}=e.inputs,r=pt.filter(({input:e})=>typeof e==`string`?t!==!1:Cn(n?.accept??[],`image/png`));return{defaultText:t===!1?``:D,defaultQuery:t===!1?``:E,defaultDocuments:r}}function Tn(e){let t=ye(e,p,m);return(0,J.jsx)(En,{...e,transport:t})}function En({payload:e,transport:t,trace:n,flush:r,columns:i,className:a}){return(0,J.jsx)(Sn,{transport:t,...wn(e.profile),trace:n,flush:r,columns:i,className:a})}export{En as EmbeddingView,Tn as StudioEmbedding};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ToolResultCharts-BV2tbzow.js","assets/rolldown-runtime-hePW80VL.js","assets/themeProps-3IqahpCr.js","assets/VStack-CkVMcNiK.js","assets/padding.stylex-B76907Zf.js","assets/mergeProps-ptS-gIMz.js","assets/StackItem-CQviqAfM.js","assets/Text-BsiAsowd.js","assets/sharedResizeObserver-4U9Xq5Oq.js","assets/preload-helper-DpV6A1kQ.js","assets/Card-Ghe4ozhC.js","assets/Icon-ZfFwTt8n.js","assets/tokens.stylex-DkHf0P9C.js","assets/devWarning-DxuplmRl.js","assets/useMediaQuery-BCT0NUeZ.js","assets/container.stylex-BmOi-8DQ.js","assets/arrive-DvbqpeRS.js","assets/createReactComponent-CZwsv6DD.js","assets/shaped-data-0GUF7Al3.js","assets/host-patterns-C9RMP16Q.js","assets/TraceOverview-DoQOfiAe.js","assets/CodeBlock-Kjgv83A6.js","assets/focusOutline.stylex-BT0kfa4t.js","assets/IconButton-CG5klqF1.js","assets/useTooltip-rxACYEAC.js","assets/useLayerDismissal-BAnTRYTt.js","assets/useClipboard-B1amtN2V.js","assets/useScrollableArea-vxuztwym.js","assets/useDevWarning-Cna3kqg1.js","assets/labels-provider-BqgbdxdT.js","assets/Tooltip-CTEuMRLe.js","assets/trace-record-BjsBbPRl.js","assets/index-C3mDKoGG.js","assets/SegmentedControlItem-BLuJOusN.js","assets/fieldParts-Cs6Amprh.js","assets/isRtlElement-BG33-k_H.js","assets/browser-transport-DxpDmXGb.js","assets/SidePanel-OYp0bLNO.js","assets/ScrollableArea-C8AVuqnt.js","assets/IconAlertTriangle-BqAEqqdU.js","assets/Banner-B1Vat7i_.js","assets/Center-nHS1JSux.js","assets/IconSearch-BTx66a40.js","assets/schemas-BQ9Jydzb.js","assets/tool-schema-CgpwKFX7.js","assets/reader-paEmSrWc.js","assets/live-ingress-lDUGPwth.js","assets/trace-schema-9CdEyG6Q.js","assets/stub-DpBSP8Ld.js","assets/tree-BxX70aqA.js","assets/types-BoECJ8mE.js","assets/useScrollLock-Dyf6PHJt.js","assets/useContainerReveal-BFy8N_QU.js","assets/focusReturn-CTppP2k0.js","assets/Dialog-BDUExlk_.js","assets/chainEventHandlers-C6ttXGfW.js","assets/HoverCard-C6thuzrf.js","assets/CheckboxInput-C9kbVyhK.js","assets/IconEye-BB5aY-wQ.js","assets/turn-client-BZUECwPn.js","assets/encode-files-DZ4tVtEQ.js","assets/workspace-Bc---F49.js","assets/lent-keys-C32ems-I.js","assets/editors-BJX_S59A.js","assets/EmptyState-C8W4JKBZ.js","assets/PaneState-C8jetBGI.js","assets/PaneState-CnxaP3LD.css","assets/CollapsibleGroup-toq0Nedn.js","assets/useAdaptivePresentation-BY_zvjIp.js","assets/Section-DJ97F7QE.js","assets/ContextMenu-BreVLY9J.js","assets/BottomSheet-BQPskY35.js","assets/index-Oo9otEIT.css","assets/trace-patterns-CS99kExN.js","assets/CardWall-CBRLdDZW.js"])))=>i.map(i=>d[i]);
2
- import{n as e,r as t}from"./rolldown-runtime-hePW80VL.js";import{c as n,l as r,n as i,u as a}from"./themeProps-3IqahpCr.js";import{n as o,t as s}from"./SegmentedControlItem-BLuJOusN.js";import{t as c}from"./VStack-CkVMcNiK.js";import{n as l,t as u}from"./StackItem-CQviqAfM.js";import{t as d}from"./DateInput-BJt-UTCy.js";import{M as f,P as p,c as m,f as h,g as ee,i as te,l as ne,s as re,u as ie}from"./browser-transport-DxpDmXGb.js";import{t as ae}from"./mergeProps-ptS-gIMz.js";import{T as oe,m as se}from"./fieldParts-Cs6Amprh.js";import{t as g}from"./Text-BsiAsowd.js";import{t as ce}from"./preload-helper-DpV6A1kQ.js";import{i as le,l as ue,n as _,t as de}from"./labels-provider-BqgbdxdT.js";import{n as v}from"./Card-Ghe4ozhC.js";import{t as fe}from"./Tooltip-CTEuMRLe.js";import{n as pe}from"./ScrollableArea-C8AVuqnt.js";import{a as me,t as he}from"./Banner-B1Vat7i_.js";import{a as ge,i as _e,n as ve,t as y}from"./arrive-DvbqpeRS.js";import{c as ye,d as be,f as xe,l as Se,u as Ce}from"./tool-schema-CgpwKFX7.js";import{_ as we,a as b,b as Te,c as x,d as Ee,g as De,l as S,m as C,n as w,o as Oe,r as ke,t as Ae,v as T,y as E}from"./shaped-data-0GUF7Al3.js";import{S as je,i as Me,u as Ne}from"./turn-client-BZUECwPn.js";import{t as Pe}from"./EmptyState-C8W4JKBZ.js";import{i as Fe,n as D,t as Ie}from"./PaneState-C8jetBGI.js";import{r as O,s as Le}from"./CollapsibleGroup-toq0Nedn.js";import{i as Re,r as ze}from"./ContextMenu-BreVLY9J.js";import{a as Be,d as Ve,f as He,i as Ue,l as We,n as Ge,o as Ke,s as qe,t as Je,u as k}from"./studio-console-1qIWsDtV.js";import{i as Ye}from"./trace-patterns-CS99kExN.js";import{$ as Xe,C as Ze,D as Qe,Dt as $e,F as et,I as tt,M as nt,P as rt,Pt as it,R as at,S as ot,T as st,at as ct,b as A,h as j,j as lt,m as ut,o as dt,rt as ft,v as pt,w as mt}from"./index-C3mDKoGG.js";var ht=4,gt=3,_t=3,M=8,vt=6,N=3,yt=3,bt=/(^|_)(id|ids|lat|lon|lng|latitude|longitude|offset|interval|index|rank|order)$|Id$|^(generationtime_ms|utc_offset_seconds)$/i,xt=/\.(png|jpe?g|gif|webp|avif|svg)$/i;function St(e){if(/\s/.test(e))return!1;try{let t=new URL(e);return(t.protocol===`http:`||t.protocol===`https:`)&&xt.test(t.pathname)}catch{return!1}}function P(e){return!bt.test(e)}function F(e){return/^[A-Z][A-Z0-9]{1,5}$/.test(e)?e:b(e)}function I(e,t){if(!P(e)||t&&e in t&&Ee(t[e])===void 0)return;let{label:n,unit:r}=ke(e,t);return{label:F(e)===e?e:n,unit:r}}function L(e,t){let n=[];for(let[r,i]of C(e)){if(typeof i!=`number`||!Number.isFinite(i))continue;let e=I(r,t);e&&n.push({key:r,value:i,...e})}return n.sort((e,t)=>Number(t.unit!==void 0)-Number(e.unit!==void 0)).slice(0,ht)}function Ct(e){if(!x(e))return[];for(let[t,n]of C(e)){let r=E(n);if(!x(r)||w(r))continue;let i=Object.values(r);if(i.length===0||!i.every(Oe))continue;let a=L(r,T(e,t));if(a.length>0)return a}return L(e,void 0)}function R(e,t){return new Set(e.map(e=>e[t])).size}function z(e,t,n){return[...new Set(e.flatMap(e=>Object.keys(e)))].filter(n=>n!==t&&e.every(e=>typeof e[n]==`number`||e[n]===null)&&R(e,n)>1).flatMap(e=>{let t=I(e,n);return t?[{key:e,...t}]:[]})}function wt(e){let[t]=e;if(t)return Object.keys(t).find(t=>e.every(e=>typeof e[t]==`string`&&Ae.test(e[t])))}function Tt(e){let t=e.map(e=>e.label.split(` `)),[n=[]]=t,r=0;for(;r<n.length&&t.every(e=>e.length>r+1&&e[r]===n[r]);)r++;if(r)return{title:n.slice(0,r).join(` `),series:e.map((e,n)=>{let i=(t[n]??[]).slice(r).join(` `);return{...e,label:i.charAt(0).toUpperCase()+i.slice(1)}})}}function Et(e,t,n,r,i){let a=new Map;for(let e of z(n,r,i)){let t=a.get(e.unit??``)??[];t.push(e),a.set(e.unit??``,t)}return[...a.values()].map(i=>{let a=i.slice(0,_t),o=a.length>1?Tt(a):void 0;return{kind:`time`,key:`${e}:${a.map(e=>e.key).join(`+`)}`,title:a.length===1?a[0]?.label??t:o?.title??(t||a.map(e=>e.label).join(` · `)),x:r,series:o?.series??a,rows:n}})}function Dt(e){let[t]=e,n=t?we(t):void 0;if(!t||!n||!e.every(e=>typeof e[n]==`string`||typeof e[n]==`number`))return;if(R(e,n)===e.length)return n;let r=t=>e.reduce((e,n)=>e+String(n[t]).length,0),[i]=Object.keys(t).filter(t=>e.every(e=>typeof e[t]==`string`)&&R(e,t)===e.length).sort((e,t)=>r(e)-r(t));return i??n}function Ot(e,t,n,r){let i=Dt(n);return i?z(n,i,r).sort((e,t)=>R(n,t.key)-R(n,e.key)).map(r=>({kind:`category`,key:`${e}:${r.key}`,title:t?`${t} · ${r.label}`:r.label,series:r,rows:n.filter(e=>typeof e[r.key]==`number`).map(e=>({label:String(e[i]),value:e[r.key]})).sort((e,t)=>t.value-e.value).slice(0,M)})):[]}function B(e,t,n,r){if(n.length<N)return[];let i=wt(n);return i?Et(e,t,n,i,r):Ot(e,t,n,r)}function V(e,t,n,r,i){if(i>yt)return[];if(Array.isArray(e)){let i=e.map(E);return i.every(x)?B(t,n,i,r):[]}if(!x(e))return[];let a=w(e);if(a)return B(t,n,De(e,a),r);let o=C(e),s=o.filter(([e,t])=>typeof t==`number`&&P(e));if(i>0&&s.length>=N&&s.length===o.length){let e=s.map(([e,t])=>({label:F(e),value:t}));return[{kind:`category`,key:t,title:n,series:{key:`value`,label:n},rows:e.sort((e,t)=>t.value-e.value).slice(0,M)}]}return o.flatMap(([r,a])=>V(E(a),t?`${t}.${r}`:r,i===0?b(r):`${n} › ${b(r)}`,T(e,r),i+1))}function H(e,t,n,r){if(r.size>=vt||n>4)return;let i=E(e);if(typeof i==`string`)St(i)&&!r.has(i)&&r.set(i,{src:i,alt:b(t||`image`)});else if(Array.isArray(i))for(let e of i)H(e,t,n+1,r);else if(x(i))for(let[e,t]of Object.entries(i))H(t,e,n+1,r)}function kt(e){let t=E(e),n=new Map;return H(t,``,0,n),{figures:Ct(t),charts:V(t,``,``,void 0,0).slice(0,gt),images:[...n.values()]}}function At(e){return e.mimeType&&e.data?`data:${e.mimeType};base64,${e.data}`:void 0}function jt(e,t,n){let r=t.flatMap(e=>{let t=At(e);return t?[{type:e.type,src:t,mimeType:e.mimeType}]:[]});return{images:[...r.filter(e=>e.type===`image`).map(({src:e})=>({src:e,alt:n})),...e.images],audio:r.filter(e=>e.type===`audio`).map(({src:e,mimeType:t})=>({src:e,...t?{mimeType:t}:{}}))}}function Mt(e,t){return e.figures.length+e.charts.length+t.images.length+t.audio.length>0}var Nt=864e5,Pt=10;function Ft(e){return e.some(e=>e.includes(`T`))?{tick:Math.abs(Date.parse(e.at(-1)??``)-Date.parse(e[0]??``))<=Nt?{hour:`numeric`}:{month:`short`,day:`numeric`},when:{dateStyle:`medium`,timeStyle:`short`}}:{tick:e.length<=Pt?{weekday:`short`,timeZone:`UTC`}:{month:`short`,day:`numeric`,timeZone:`UTC`},when:{dateStyle:`medium`,timeZone:`UTC`}}}var U=n(),W={base:{k1xSpc:`x3nfvp2`,kGNEyG:`x6s0dn4`,kjj79g:`xl56j7k`,kaIpWk:`x16rqkct`,kmuXW:`x2lah0s`,kzqmXN:`x1xc55vz`,kZKoxP:`xdk7pt`,$$css:!0},pulsing:{kKVMdj:`x1mta51n`,k44tkh:`x1c74tu6`,kyAemX:`x4hg4is`,ko0y90:`xa4qsjk`,$$css:!0},reducedMotion:{kjO2d4:`x1aquc0h`,$$css:!0}},It={success:{kWkggS:`xdsz4j9`,kMwMTN:`xri61p4`,$$css:!0},warning:{kWkggS:`x1q8g9m5`,kMwMTN:`xrebv38`,$$css:!0},error:{kWkggS:`x1pjz0fi`,kMwMTN:`x1m024r3`,$$css:!0},accent:{kWkggS:`x1ewilqj`,kMwMTN:`x17wrial`,$$css:!0},neutral:{kWkggS:`x1q5y3ey`,kMwMTN:`xrkvqaz`,$$css:!0}};function G({variant:e,label:t,isPulsing:n=!1,tooltip:a,icon:o,xstyle:s,className:c,style:l,ref:u,...d}){let f=oe(o),p=(0,U.jsx)(`span`,{ref:u,role:`img`,"aria-label":t,...ae(i(`status-dot`,{variant:e}),r(W.base,It[e],n&&W.pulsing,n&&W.reducedMotion,s),c,l),...d,children:f&&(0,U.jsx)(`span`,{"aria-hidden":`true`,className:`x78zum5 x6s0dn4 xl56j7k x14ju556 x1xc55vz xdk7pt`,children:o})});return a?(0,U.jsx)(fe,{content:a,children:p}):p}G.displayName=`StatusDot`;var Lt=new Set([`gate`,`complete`,`error`,`cancel`]);function Rt({call:e,failure:t,isRunning:n}){let r=e?.state?.phase;return r!==void 0&&Lt.has(r)?r:t?`error`:n?`running`:`cancel`}function K({call:e,failure:t}){if(t)return{title:t.error};let n=e?.state;if(n?.phase!==`error`)return null;let{error:r,message:i}=n.failure;return r?r===i?{title:r}:{title:r,description:i}:{title:i}}function zt(e){let t=e.tools.find(t=>t.name===e.picked)??e.tools[0],n=t?e.drafts[t.name]??S(Ce(t.inputSchema)):``,r=e.calls.filter(e=>e.name===t?.name),i=r.find(t=>t.id===e.shownId)??r[0]??null;return{tool:t,text:n,shown:i,earlier:e.calls.filter(e=>e!==i)}}var q=t(a(),1);function Bt(){return typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`call-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function Vt(e,t){let n=[...e.events,t],r=t.type===`tool`&&t.tool.phase===`progress`?t.tool.data:e.progress;return{...e,events:n,call:je(n)[0]??null,progress:r}}function Ht(e,t){let n=(0,q.useMemo)(()=>ct(e,t),[e,t]),{iface:r,describeFailure:i}=m(n),[a,o]=(0,q.useState)([]),s=(0,q.useRef)(new Map),c=(0,q.useRef)([]),l=(0,q.useRef)(a);l.current=a,(0,q.useEffect)(()=>{let e=s.current;return()=>{for(let t of e.values())t.abort()}},[]);let u=(0,q.useCallback)((e,t)=>{o(n=>n.map(n=>n.id===e?t(n):n))},[]),d=(0,q.useCallback)(async(e,t)=>{let n=new AbortController;s.current.set(e,n);let r=performance.now();u(e,e=>({...e,isRunning:!0,failure:null}));try{await t(t=>{t.type!==`unsupported`&&t.type!==`malformed`&&u(e,e=>Vt(e,t))},n.signal),u(e,e=>({...e,isRunning:!1,answering:null,elapsedMs:performance.now()-r}))}catch(t){let i=n.signal.aborted?null:p(t);u(e,e=>({...e,isRunning:!1,answering:null,failure:i,elapsedMs:performance.now()-r}))}finally{s.current.get(e)===n&&s.current.delete(e)}},[u]);return{iface:r,describeFailure:i,calls:a,run:(0,q.useCallback)((e,t)=>{let r=Bt();return o(n=>[{id:r,name:e,input:t,events:[],call:null,progress:void 0,isRunning:!0,failure:null,answering:null,startedAt:Date.now(),elapsedMs:null},...n]),d(r,(r,i)=>n.call({name:e,input:t},r,i)),r},[d,n]),answer:(0,q.useCallback)(async(e,t)=>{let r=l.current.find(t=>t.id===e),i=r?.call?.state;if(!r?.call||i?.phase!==`gate`)return;let a=r.call.callId,o=Me(r.call),s=ft({toolName:r.name,gate:i.gate,sessionPermissions:c.current,resolution:t});s.decision===`approve`&&(c.current=s.sessionPermissions);let f=Ne(r.events);u(e,e=>({...e,answering:t.action})),await d(e,(e,t)=>n.invoke({gateId:a,operationId:o,decision:s.decision,...s.decision===`approve`&&s.secret!==void 0?{secret:s.secret}:{},replay:{name:r.name,input:i.gate.preparedArguments??r.input,gateKind:i.gate.kind,sessionPermissions:c.current,...f?{snapshot:f}:{}}},e,t))},[d,n,u]),cancel:(0,q.useCallback)(e=>{s.current.get(e)?.abort(),s.current.delete(e)},[])}}function Ut(e){return(0,U.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`currentColor`,"aria-hidden":!0,...e,children:(0,U.jsx)(`path`,{d:`M13.85 0a4.16 4.16 0 0 0-2.95 1.217L1.456 10.66a.835.835 0 0 0 0 1.18.835.835 0 0 0 1.18 0l9.442-9.442a2.49 2.49 0 0 1 3.541 0 2.49 2.49 0 0 1 0 3.541L8.59 12.97l-.1.1a.835.835 0 0 0 0 1.18.835.835 0 0 0 1.18 0l.1-.098 7.03-7.034a2.49 2.49 0 0 1 3.542 0l.049.05a2.49 2.49 0 0 1 0 3.54l-8.54 8.54a1.96 1.96 0 0 0 0 2.755l1.753 1.753a.835.835 0 0 0 1.18 0 .835.835 0 0 0 0-1.18l-1.753-1.753a.266.266 0 0 1 0-.394l8.54-8.54a4.185 4.185 0 0 0 0-5.9l-.05-.05a4.16 4.16 0 0 0-2.95-1.218c-.2 0-.401.02-.6.048a4.17 4.17 0 0 0-1.17-3.552A4.16 4.16 0 0 0 13.85 0m0 3.333a.84.84 0 0 0-.59.245L6.275 10.56a4.186 4.186 0 0 0 0 5.902 4.186 4.186 0 0 0 5.902 0L19.16 9.48a.835.835 0 0 0 0-1.18.835.835 0 0 0-1.18 0l-6.985 6.984a2.49 2.49 0 0 1-3.54 0 2.49 2.49 0 0 1 0-3.54l6.983-6.985a.835.835 0 0 0 0-1.18.84.84 0 0 0-.59-.245`})})}var Wt={search:()=>[],bootstrap:()=>[]},Gt={"--font-family-body":`var(--font-family-code)`},Kt=2;function J({text:e}){return(0,U.jsx)(g,{type:`supporting`,color:`secondary`,maxLines:Kt,children:e})}function qt({field:e,children:t}){return(0,U.jsx)(Ve,{label:e.label,isRequired:e.isRequired,children:t})}function Jt({field:e,value:t,onChange:n}){let r=_(),[i,a]=(0,q.useState)(()=>t===void 0?``:S(t)),[o,s]=(0,q.useState)(!0);return(0,U.jsx)(A,{label:e.label,isRequired:e.isRequired,size:`sm`,rows:3,value:i,hasSpellCheck:!1,status:o?void 0:{type:`error`,message:r(`@theorem.decision.invalid_json`)},controlStyle:Gt,onChange:e=>{if(a(e),e.trim()===``)s(!0),n(void 0);else try{n(JSON.parse(e)),s(!0)}catch{s(!1)}}})}function Yt({field:e,item:t,value:n,onChange:r}){let i=Array.isArray(n)?n:[],a=ge(i);return(0,U.jsx)(k,{label:e.label,isRequired:e.isRequired,description:e.description&&(0,U.jsx)(J,{text:e.description}),children:(0,U.jsxs)(c,{gap:3,children:[a.rows.map(({item:e,index:n,key:o})=>(0,U.jsxs)(l,{gap:2,vAlign:`start`,children:[(0,U.jsx)(u,{size:`fill`,children:(0,U.jsx)(X,{schema:t,value:x(e)?e:{},onChange:e=>r(i.map((t,r)=>r===n?e:t))})}),(0,U.jsx)(He,{index:n,onRemove:()=>{a.drop(n),r(i.filter((e,t)=>t!==n))}})]},o)),(0,U.jsx)(We,{field:e.label,onAdd:()=>r([...i,ye(t)])})]})})}function Y(e){return{label:e.label,isRequired:e.isRequired,size:`sm`}}function Xt({field:e,options:t,isMenu:n,value:r,onChange:i}){return n?(0,U.jsx)(O,{...Y(e),options:t,value:typeof r==`string`?r:void 0,hasSearch:t.length>10,onChange:i}):(0,U.jsx)(qt,{field:e,children:(0,U.jsx)(l,{children:(0,U.jsx)(o,{label:e.label,size:`sm`,value:typeof r==`string`?r:``,onChange:i,children:t.map(e=>(0,U.jsx)(s,{value:e,label:e},e))})})})}function Zt({field:e,isLong:t,type:n,value:r,onChange:i}){let a=typeof r==`string`?r:``;return t?(0,U.jsx)(A,{...Y(e),rows:3,value:a,onChange:i}):(0,U.jsx)(pe,{...Y(e),type:n,value:a,onChange:i})}function Qt({field:e,value:t,onChange:n}){let r=_(),i=Array.isArray(t)?t:[];return(0,U.jsx)(st,{...Y(e),value:i.map((e,t)=>({id:`${String(t)}:${String(e)}`,label:String(e)})),searchSource:Wt,hasCreate:!0,debounceMs:0,placeholder:r(`@theorem.decision.add_value`),onChange:e=>n(e.map(e=>typeof i[0]==`number`&&Number.isFinite(Number(e.label))?Number(e.label):e.label))})}var $t={choice:({field:e,control:t,value:n,onChange:r})=>(0,U.jsx)(Xt,{field:e,options:t.options,isMenu:t.isMenu,value:n,onChange:r}),range:({field:e,control:t,value:n,onChange:r})=>(0,U.jsx)(ut,{label:e.label,isRequired:e.isRequired,min:t.min,max:t.max,step:1,value:typeof n==`number`?n:t.min,valueDisplay:`text`,onChange:r}),number:({field:e,control:t,value:n,onChange:r})=>(0,U.jsx)(Qe,{...Y(e),value:typeof n==`number`?n:void 0,min:t.min,max:t.max,isIntegerOnly:t.isInteger,isWheelEnabled:!1,onChange:e=>r(e??void 0)}),switch:({field:e,value:t,onChange:n})=>(0,U.jsx)(pt,{label:e.label,value:t===!0,onChange:n}),date:({field:e,value:t,onChange:n})=>(0,U.jsx)(d,{...Y(e),value:typeof t==`string`?t:void 0,onChange:n}),text:({field:e,control:t,value:n,onChange:r})=>(0,U.jsx)(Zt,{field:e,isLong:t.isLong,type:t.type,value:n,onChange:r}),choices:({field:e,control:t,value:n,onChange:r})=>(0,U.jsx)(et,{label:e.label,value:Array.isArray(n)?n.filter(e=>typeof e==`string`):[],onChange:r,children:t.options.map(e=>(0,U.jsx)(rt,{label:e,value:e},e))}),words:({field:e,value:t,onChange:n})=>(0,U.jsx)(Qt,{field:e,value:t,onChange:n}),rows:({field:e,control:t,value:n,onChange:r})=>(0,U.jsx)(Yt,{field:e,item:t.item,value:n,onChange:r}),group:({field:e,control:t,value:n,onChange:r})=>(0,U.jsx)(k,{label:e.label,isRequired:e.isRequired,description:e.description&&(0,U.jsx)(J,{text:e.description}),children:(0,U.jsx)(X,{schema:t.schema,value:x(n)?n:{},onChange:r})}),json:({field:e,value:t,onChange:n})=>(0,U.jsx)(Jt,{field:e,value:t,onChange:n})};function en({field:e,value:t,onChange:n}){let r=$t[e.control.kind],i=r({field:e,control:e.control,value:t,onChange:n}),a=e.control.kind===`rows`||e.control.kind===`group`;return!e.description||a?i:(0,U.jsxs)(c,{gap:1,children:[i,(0,U.jsx)(J,{text:e.description})]})}var tn=200,nn=18;function rn({control:e}){switch(e.kind){case`number`:case`switch`:case`date`:return!0;case`choice`:return e.isMenu||e.options.join(``).length<=nn;case`text`:return!e.isLong;default:return!1}}function X({schema:e,value:t,onChange:n}){return(0,U.jsx)(j,{columns:{minWidth:tn,repeat:`fill`},gap:3,children:be(e).map(e=>(0,U.jsx)(`div`,{style:rn(e)?{minWidth:0,alignSelf:`start`}:{gridColumn:`1 / -1`,minWidth:0},children:(0,U.jsx)(en,{field:e,value:t[e.key],onChange:r=>n(xe(t,e.key,r))})},e.key))})}function an({schema:e,value:t,onChange:n}){return(0,U.jsx)(X,{schema:e,value:t,onChange:n})}var on=(0,q.lazy)(()=>ce(()=>import(`./ToolResultCharts-BV2tbzow.js`).then(e=>({default:e.ToolResultCharts})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74]))),sn=200,cn=236;function ln({images:e}){let[t,n]=(0,q.useState)(null);return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(j,{columns:{minWidth:sn,repeat:`fill`},gap:3,children:e.map((e,t)=>(0,U.jsx)(y,{children:(0,U.jsx)(ie,{label:e.alt||`Open image`,padding:0,onClick:()=>n(t),children:(0,U.jsx)(tt,{ratio:4/3,fit:`cover`,children:(0,U.jsx)(`img`,{src:e.src,alt:e.alt,loading:`lazy`})})})},e.src))}),(0,U.jsx)(ne,{isOpen:t!==null,onOpenChange:e=>{e||n(null)},media:e.map(e=>({src:e.src,alt:e.alt})),index:t??0,onIndexChange:n})]})}function un({figures:e}){let t=v(),n=(0,q.useMemo)(()=>new Intl.NumberFormat(t,{maximumFractionDigits:2}),[t]);return e.length===0?null:(0,U.jsx)(j,{columns:{minWidth:160,repeat:`fill`},gap:3,children:e.map(e=>(0,U.jsx)(y,{children:(0,U.jsx)(Ye,{title:e.label,value:Te(n.format(e.value),e.unit)})},e.key))})}function dn({charts:e}){return e.length===0?null:(0,U.jsx)(q.Suspense,{fallback:(0,U.jsx)(j,{columns:{minWidth:260,repeat:`fill`},gap:3,children:e.map(e=>(0,U.jsx)(y,{children:(0,U.jsx)(h,{height:cn})},e.key))}),children:(0,U.jsx)(on,{charts:e})})}function fn({layout:e,parts:t=[]}){let n=_(),r=(0,q.useMemo)(()=>jt(e,t,n(`@theorem.host.image`)),[e,t,n]);return Mt(e,r)?(0,U.jsxs)(c,{gap:3,children:[(0,U.jsx)(un,{figures:e.figures}),(0,U.jsx)(dn,{charts:e.charts}),r.images.length>0?(0,U.jsx)(ln,{images:r.images}):null,_e(r.audio,e=>e.src).map(({item:e,key:t})=>(0,U.jsx)(y,{children:(0,U.jsx)(at,{src:e.src,mimeType:e.mimeType})},t))]}):null}function pn({output:e,parts:t}){let n=_(),r=(0,q.useMemo)(()=>kt(e),[e]),i=(0,q.useMemo)(()=>r.figures.map(e=>e.key),[r]);return(0,U.jsx)(mt,{value:e,title:n(`@theorem.host.response`),lead:(0,U.jsx)(fn,{layout:r,parts:t}),ledKeys:i})}var mn=8,hn={running:`accent`,gate:`warning`,complete:`success`,error:`error`,cancel:`neutral`};function gn(e,t,n){let r;try{r=JSON.parse(n)}catch{return{ok:!1,note:e(`@theorem.decision.invalid_json`)}}if(!x(r))return{ok:!1,note:e(`@theorem.decision.invalid_json`)};let i=Se(t.inputSchema,r);return i.length>0?{ok:!1,note:e(`@theorem.host.missing`,{fields:i.join(`, `)}),input:r}:{ok:!0,input:r}}var _n={function:it,http:$e,mcp:Ut},vn=440,yn=2;function bn(e,t){let n=e(`@theorem.host.kind.${t.kind}`);return t.description?`${n} · ${t.description}`:n}function xn({tool:e}){let t=_();return e.access===`read-only`?null:(0,U.jsx)(l,{gap:1,wrap:`wrap`,children:(0,U.jsx)(se,{label:t(`@theorem.tool.access.${e.access}`),size:`sm`,color:e.access===`destructive`?`red`:`orange`})})}function Sn(e,t,n){return{label:t.call?nt(t.call):t.name,duration:t.isRunning?le(e,n-t.startedAt):t.elapsedMs==null?null:ue(e,t.elapsedMs)}}function Cn({call:e,onAnswer:t}){let n=e.call?.state;return n?.phase===`gate`?n.gate.kind===`auth`?(0,U.jsx)(Ze,{gate:n.gate,toolName:e.name,submitted:e.answering===`auth`,onAuthenticated:n=>void t(e.id,{action:`auth`,secret:n})}):(0,U.jsx)(ot,{gate:n.gate,toolName:e.name,input:e.input,decided:e.answering===`auth`?null:e.answering,onDecision:n=>void t(e.id,{action:n})}):null}function Z(e){let t=e.call?.state;return!!K(e)||t?.phase===`complete`||!e.isRunning}function Q(e){let t=e.call?.state;return!Z(e)&&t?.phase!==`gate`}function wn({call:e,activity:t}){let n=e.call?.state,r=K(e);return(0,U.jsx)(ve,{children:(0,U.jsxs)(c,{gap:3,children:[r?(0,U.jsx)(y,{children:(0,U.jsx)(he,{status:`error`,role:`alert`,title:r.title,description:r.description})}):null,n?.phase===`complete`?(0,U.jsx)(pn,{output:n.output,parts:n.parts}):null,e.isRunning?null:(0,U.jsx)(y,{children:t})]})})}function Tn({call:e,onAnswer:t}){let n=_(),{label:r,duration:i}=Sn(n,e,Fe(e.isRunning));if(Q(e))return(0,U.jsx)(D,{label:r,since:e.startedAt});let a=(0,U.jsx)(g,{size:`sm`,color:`secondary`,children:i?n(`@theorem.host.finished`,{activity:r,duration:i}):r});return(0,U.jsxs)(c,{gap:3,children:[(0,U.jsx)(Cn,{call:e,onAnswer:t}),Z(e)?(0,U.jsx)(wn,{call:e,activity:a}):null]})}function En({calls:e,onPick:t}){let n=_(),r=v(),i=(0,q.useMemo)(()=>new Intl.DateTimeFormat(r,{timeStyle:`medium`}),[r]);return e.length===0?null:(0,U.jsxs)(c,{gap:1,children:[(0,U.jsx)(g,{type:`supporting`,color:`secondary`,as:`h3`,children:n(`@theorem.host.earlier`)}),(0,U.jsx)(Re,{hasDividers:!0,density:`compact`,children:e.slice(0,mn).map(e=>{let r=Rt(e);return(0,U.jsx)(ze,{label:e.name,startContent:(0,U.jsx)(G,{variant:hn[r],label:n(`@theorem.host.status.${r}`),isPulsing:e.isRunning}),endContent:(0,U.jsx)(g,{type:`supporting`,color:`secondary`,hasTabularNumbers:!0,children:i.format(e.startedAt)}),onClick:()=>t(e)},e.id)})})]})}function Dn({tools:e,tool:t,check:n,text:r,view:i,shown:a,onText:o,onPick:s,onView:l,onRun:u,onStop:d}){let f=_(),p=`input`in n?n.input:void 0,m=i===`fields`&&p!==void 0;return(0,U.jsxs)(Be,{title:f(`@theorem.host.request`),view:m?`fields`:`json`,hasFields:p!==void 0,onView:l,onRun:u,children:[(0,U.jsxs)(c,{gap:2,children:[(0,U.jsx)(O,{label:f(`@theorem.host.tool`),size:`sm`,options:e.map(e=>({value:e.name,label:e.name,icon:_n[e.kind],description:bn(f,e)})),value:t.name,hasSearch:e.length>8,renderOption:e=>(0,U.jsx)(`div`,{style:{width:vn,maxWidth:`100%`,minWidth:0},children:(0,U.jsx)(Le,{icon:e.icon,label:e.label,description:e.description&&(0,U.jsx)(g,{type:`supporting`,color:`secondary`,maxLines:yn,children:e.description})})}),onChange:s}),(0,U.jsx)(xn,{tool:t})]}),m?(0,U.jsx)(an,{schema:t.inputSchema,value:p,onChange:e=>{o(S(e))}},t.name):(0,U.jsx)(Ue,{label:f(`@theorem.host.request`),text:r,isInvalid:p===void 0,onChange:o}),(0,U.jsx)(qe,{note:n.ok?f(`@theorem.host.shortcut`):n.note,isReady:n.ok,isRunning:a?.isRunning===!0,runLabel:f(`@theorem.host.run`),runningLabel:f(`@theorem.host.running`),stopLabel:f(`@theorem.host.stop`),onRun:u,onStop:()=>{a&&d(a.id)}})]})}function On(e,t,n,r){return!t||!n?.ok||r?.isRunning?null:e.run(t.name,n.input)}function kn(e,t){let n=_(),[r,i]=(0,q.useState)(e.tools[0]?.name),[a,o]=(0,q.useState)({}),[s,c]=(0,q.useState)(null),[l,u]=(0,q.useState)(`fields`),{tool:d,text:f,shown:p,earlier:m}=zt({tools:e.tools,picked:r,drafts:a,calls:t.calls,shownId:s}),h=d?gn(n,d,f):null;return{tool:d,text:f,shown:p,earlier:m,check:h,view:l,setView:u,setPicked:i,setText:e=>{d&&o(t=>({...t,[d.name]:e}))},run:()=>{let e=On(t,d,h,p);e!==null&&c(e)},pick:e=>{i(e.name),o(t=>({...t,[e.name]:S(e.input)})),c(e.id)}}}function An({shown:e,earlier:t,onAnswer:n,onPick:r}){return(0,U.jsxs)(U.Fragment,{children:[e?(0,U.jsx)(Tn,{call:e,onAnswer:n}):null,(0,U.jsx)(En,{calls:t,onPick:r})]})}function jn(e,t,n,r,i){if(!e)return i;let a=r.length===0;return!n&&a?null:(0,U.jsx)(Ke,{label:t,fill:n!=null&&Q(n)&&a,children:i})}function Mn({transport:e,iface:t,host:n,maxWidth:r=`960px`,trace:i,flush:a,columns:o=!1,className:s,style:c}){let l=_(),u=me(t,e.traces,i),d=kn(t,n),{tool:f,check:p,shown:m,earlier:h}=d;return(0,U.jsxs)(Ge,{inspector:u,maxWidth:r,flush:a,columns:o,requestLabel:l(`@theorem.host.request`),className:s,style:c,children:[f&&p?(0,U.jsx)(Dn,{tools:t.tools,tool:f,check:p,text:d.text,view:d.view,shown:m,onText:d.setText,onPick:d.setPicked,onView:d.setView,onRun:d.run,onStop:n.cancel}):(0,U.jsx)(Pe,{title:l(`@theorem.host.no_tools`)}),jn(o,l(`@theorem.host.response`),m,h,(0,U.jsx)(An,{shown:m,earlier:h,onAnswer:n.answer,onPick:d.pick}))]})}function Nn(e){let t=_(),n=Ht(e.transport,e.pageTools);return n.describeFailure?(0,U.jsx)(Ie,{title:n.describeFailure.error}):n.iface?(0,U.jsx)(Mn,{...e,iface:n.iface,host:n}):(0,U.jsx)(D,{label:t(`@theorem.chat.loading`)})}function Pn({endpoint:e,http:t,transport:n,theme:r,mode:i,labels:a,detectCodeLanguage:o,...s}){let c=(0,q.useRef)(t);c.current=t;let l=(0,q.useMemo)(()=>n??f({...c.current,endpoint:e}),[n,e]);return(0,U.jsx)(re,{theme:r,mode:i,children:(0,U.jsx)(de,{labels:a,children:(0,U.jsx)(lt,{detectCodeLanguage:o,children:(0,U.jsx)(Nn,{...s,transport:l})})})})}var Fn=e({HostView:()=>$,StudioHostConsole:()=>In});function In(e){let t=Je(e,ee,te);return(0,U.jsx)($,{...e,transport:t})}function $({payload:e,transport:t,trace:n,flush:r,columns:i,className:a}){let o=(0,q.useMemo)(()=>Xe(e),[e]);return(0,U.jsx)(Pn,{detectCodeLanguage:!0,labels:dt,transport:t,pageTools:o,trace:n,flush:r,columns:i,className:a})}export{$ as HostView,In as StudioHostConsole,Ft as n,Fn as t};