@makerstufferupper/flypi 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -4
- package/dist/ui/assets/{index-qaKjH5fH.css → index-CBuNmrDT.css} +1 -1
- package/dist/ui/assets/index-DmMmjg_M.js +102 -0
- package/dist/ui/index.html +2 -2
- package/package.json +15 -5
- package/scripts/dev-container.mjs +131 -0
- package/scripts/flypi.mjs +20 -2
- package/scripts/pi.ts +150 -0
- package/scripts/probe-pi.ts +18 -0
- package/scripts/release-check.mjs +239 -0
- package/scripts/serve.ts +2 -0
- package/src/agent/packages.ts +104 -11
- package/src/agent/pi-compat.ts +204 -0
- package/src/daemon/index.ts +58 -4
- package/src/daemon/pi.ts +373 -0
- package/src/memory/recall.ts +11 -2
- package/src/server/index.ts +44 -4
- package/src/server/protocol.ts +79 -0
- package/src/server/session-registry.ts +26 -2
- package/dist/ui/assets/index-CG1CuGxu.js +0 -105
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible,d=()=>{};function f(e){for(var t=0;t<e.length;t++)e[t]()}function p(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var m=1024,h=2048,g=4096,_=8192,v=16384,y=32768,b=1<<25,x=65536,S=1<<19,ee=1<<20,te=1<<25,C=1<<21,ne=1<<22,w=1<<23,T=Symbol(`$state`),re=Symbol(`component`),ie=Symbol(``),ae=Symbol(`attributes`),oe=Symbol(`class`),se=Symbol(`style`),ce=Symbol(`text`),le=Symbol(`form reset`),ue=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},de=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`),fe={},E=Symbol(`uninitialized`),pe=`http://www.w3.org/1999/xhtml`,me=`http://www.w3.org/2000/svg`,he=`http://www.w3.org/1998/Math/MathML`;function ge(){console.warn(`https://svelte.dev/e/derived_inert`)}function _e(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function ve(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function ye(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var D=!1;function be(e){D=e}var O;function k(e){if(e===null)throw _e(),fe;return O=e}function xe(){return k(nn(O))}function A(e){if(D){if(nn(O)!==null)throw _e(),fe;O=e}}function Se(e=1){if(D){for(var t=e,n=O;t--;)n=nn(n);O=n}}function Ce(e=!0){for(var t=0,n=O;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=nn(n);e&&n.remove(),n=i}}function we(e){if(!e||e.nodeType!==8)throw _e(),fe;return e.data}function Te(e){return e===this.v}function Ee(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function De(e){return!Ee(e,this.v)}function Oe(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function ke(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function Ae(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function je(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function Me(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Ne(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function Pe(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Fe(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Ie(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Le(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Re(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var ze=null;function Be(e){ze=e}function Ve(e,t=!1,n){ze={p:ze,i:!1,c:null,e:null,s:e,x:null,r:V,l:null}}function He(e){var t=ze,n=t.e;if(n!==null){t.e=null;for(var r of n)gn(r)}return e!==void 0&&(t.x=e),t.i=!0,ze=t.p,Ue(e)}function Ue(e={}){return i(e,re,{value:!0}),e}function We(){return!0}var Ge=[];function Ke(){var e=Ge;Ge=[],f(e)}function qe(e){if(Ge.length===0&&!xt){var t=Ge;queueMicrotask(()=>{t===Ge&&Ke()})}Ge.push(e)}function Je(){for(;Ge.length>0;)Ke()}var Ye=~(h|g|m);function Xe(e,t){e.f=e.f&Ye|t}function Ze(e){e.f&512||e.deps===null?Xe(e,m):Xe(e,g)}function Qe(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),Xe(e,m)}function $e(e){D&&tn(e)!==null&&rn(e)}var et=!1;function tt(){et||(et=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[le]?.()})},{capture:!0}))}function nt(e){var t=B,n=V;Rn(null),zn(null);try{return e()}finally{Rn(t),zn(n)}}function rt(e,t,n,r=n){e.addEventListener(t,()=>nt(n));let i=e[le];e[le]=i?()=>{i(),r(!0)}:()=>r(!0),tt()}function it(e,t,n,r){let i=We()?ct:dt;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=V,c=at(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){ln(e,s)}ot()}}var d=st();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>ut(e))).then(u).catch(e=>ln(e,s)).finally(d)}l?l.then(()=>{if(s.f&16384){d();return}c(),f(),ot()}):f()}function at(){var e=V,t=B,n=ze,r=M;return function(i=!0){zn(e),Rn(t),Be(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function ot(e=!0){zn(null),Rn(null),Be(null),e&&M?.deactivate()}function st(){var e=V,t=e.b,n=M,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function ct(e){var t=2|h;return V!==null&&(V.f|=S),{ctx:ze,deps:null,effects:null,equals:Te,f:t,fn:e,reactions:null,rv:0,v:E,wv:0,parent:V,ac:null}}var lt=Symbol(`obsolete`);function ut(e,t,n){let r=V;r===null&&ke();var i=void 0,a=Rt(E),o=!B,s=new Set;return yn(()=>{var t=V,n=p();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==ue&&n.reject(e)}).finally(ot)}catch(e){n.reject(e),ot()}var c=M;if(o){if(t.f&32768)var l=st();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(lt);else for(let e of s.values())e.reject(lt);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==lt&&(c.activate(),t?(a.f|=w,Ht(a,t)):(a.f&8388608&&(a.f^=w),Ht(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),mn(()=>{for(let e of s)e.reject(lt)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function j(e){let t=ct(e);return Vn(t),t}function dt(e){let t=ct(e);return t.equals=De,t}function ft(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)En(t[n])}}function pt(e){var t,n=V,r=e.parent;if(!Fn&&r!==null&&e.v!==E&&r.f&24576)return ge(),e.v;zn(r);try{ft(e),t=$n(e)}finally{zn(n)}return t}function mt(e){var t=pt(e);if(!e.equals(t)&&(e.wv=Xn(),(!M?.is_fork||e.deps===null)&&(M===null?e.v=t:(M.capture(e,t,!0),vt?.capture(e,t,!0)),e.deps===null))){Xe(e,m);return}Fn||(yt===null?Ze(e):(pn()||M?.is_fork)&&yt.set(e,t))}function ht(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac!==null&&nt(()=>{t.ac.abort(ue),t.ac=null}),t.fn!==null&&(t.teardown=d),nr(t,0),wn(t))}function gt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&rr(t)}var _t=null,M=null,vt=null,yt=null,bt=null,xt=!1,St=!1,Ct=null,wt=null,Tt=0,Et=1,Dt=class e{id=Et++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){_t===null?_t=this:(_t.#n=this,this.#t=_t),_t=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)Xe(r,h),t(r);for(r of n.m)Xe(r,g),t(r)}this.#p.add(e)}#g(){var e=[];for(let i of this.#c)if(!(i.f&16384||!(i.f&6144))){for(var t=i,n=!1;t.parent!==null;){t=t.parent;var r=t.f;if(r&96){if(!(r&1024)){n=!0;break}t.f^=m}}n||e.push(t)}return this.#c=[],e}#_(){this.#e=!0;for(let e of this.#u)this.#d.delete(e),Xe(e,h),this.schedule(e);for(let e of this.#d)Xe(e,g),this.schedule(e);this.apply();for(var t=Ct=[],n=[],r=wt=[];this.#c.length>0;){Tt++>1e3&&(this.#S(),kt());for(let e of this.#g())try{this.#v(e,t,n)}catch(t){throw Pt(e),this.#h()||this.discard(),t}}if(M=null,r.length>0){var i=e.ensure();for(let e of r)i.schedule(e)}if(Ct=null,wt=null,this.#h()){this.#x(n),this.#x(t);for(let[e,t]of this.#f)Nt(e,t);r.length>0&&M.#_();return}let a=this.#y();if(a){this.#x(n),this.#x(t),a.#b(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),vt=this,jt(n),jt(t),vt=null,this.#s?.resolve();var o=M;if(this.#a===0&&(this.#c.length===0||o!==null)&&this.#S(),this.#c.length>0){if(o!==null){for(let e of this.#c)o.#c.push(e);this.#c=[]}else o=this}o!==null&&(It.clear(),o.#_())}#v(e,t,n){e.f^=m;for(var r=e.first;r!==null;){var i=r.f,a=!!(i&96);if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=m:i&4?t.push(r):Zn(r)&&(i&16&&this.#d.add(r),rr(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#y(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#b(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),Xe(i,h),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#S(),M=this,this.#_()}#x(e){for(var t=0;t<e.length;t+=1)Qe(e[t],this.#u,this.#d)}capture(e,t,n=!1){e.v!==E&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),yt?.set(e,t)),this.is_fork||(e.v=t)}activate(){M=this}deactivate(){M=null,yt=null}flush(){try{St=!0,M=this,this.#_()}finally{Tt=0,bt=null,Ct=null,wt=null,St=!1,M=null,yt=null,It.clear()}}discard(){for(let e of this.#i)e(this);this.#i.clear();for(let e of this.async_deriveds.values())e.reject(lt);this.#S(),this.#s?.resolve()}register_created_effect(e){this.#l.push(e)}increment(e,t){if(this.#a+=1,e){let e=this.#o.get(t)??0;this.#o.set(t,e+1)}}decrement(e,t){if(--this.#a,e){let e=this.#o.get(t)??0;e===1?this.#o.delete(t):this.#o.set(t,e-1)}this.#m||(this.#m=!0,qe(()=>{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=p()).promise}static ensure(){if(M===null){let t=M=new e;!St&&!xt&&qe(()=>{t.#e||t.flush()})}return M}apply(){yt=null}schedule(e){if(bt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}this.#c.push(e)}#S(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?_t=e:t.#t=e,this.linked=!1}}};function Ot(e){var t=xt,n=vt;vt=null,xt=!0;try{var r;for(e&&(Ot(),r=e());;){if(Je(),M===null)return r;M.flush()}}finally{xt=t,vt=n}}function kt(){try{Pe()}catch(e){ln(e,bt)}}var At=null;function jt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&Zn(r)&&(At=new Set,rr(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&On(r),At?.size>0)){It.clear();for(let e of At){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)At.has(n)&&(At.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||rr(n)}}At.clear()}}At=null}}function Mt(e){M.schedule(e)}function Nt(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),Xe(e,m);for(var n=e.first;n!==null;)Nt(n,t),n=n.next}}function Pt(e){Xe(e,m);for(var t=e.first;t!==null;)Pt(t),t=t.next}var Ft=new Set,It=new Map,Lt=!1;function Rt(e,t){return{f:0,v:e,reactions:null,equals:Te,rv:0,wv:0}}function N(e,t){let n=Rt(e,t);return Vn(n),n}function zt(e,t=!1,n=!0){let r=Rt(e);return t||(r.equals=De),r}function P(e,t,n=!1){return B!==null&&(!Ln||B.f&131072)&&We()&&B.f&4325394&&(Bn===null||!Bn.has(e))&&Le(),Ht(e,n?Kt(t):t,wt)}var Bt=null,Vt=0;function Ht(e,t,n=null){if(!e.equals(t)){Fn?It.set(e,t):It.has(e)||It.set(e,e.v);var r=Dt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&pt(t),yt===null&&Ze(t)}e.wv=Xn(),Bt=null,Vt=0,Gt(e,h,n),Bt=null,We()&&V!==null&&V.f&1024&&!(V.f&96)&&(Wn===null?Gn([e]):Wn.push(e)),!r.is_fork&&Ft.size>0&&!Lt&&Ut()}return t}function Ut(){Lt=!1;for(let e of Ft){e.f&1024&&Xe(e,g);let t;try{t=Zn(e)}catch{t=!0}t&&rr(e)}Ft.clear()}function Wt(e){P(e,e.v+1)}function Gt(e,t,n){var r=e.reactions;if(r!==null){var i=We(),a=r.length;if(Vt+=a,Vt>1e5&&Bt===null&&(Bt=new Set),Bt!==null){if(Bt.has(e))return;Bt.add(e)}for(var o=0;o<a;o++){var s=r[o],c=s.f;if(i||s!==V){var l=(c&h)===0;if(l&&Xe(s,t),c&131072)Ft.add(s);else if(c&2){var u=s;yt?.delete(u),Gt(u,g,n)}else if(l){var d=s;c&16&&At!==null&&At.add(d),n===null?Mt(d):n.push(d)}}}}}function Kt(t){if(typeof t!=`object`||!t||T in t||re in t)return t;let n=l(t);if(n!==s&&n!==c)return t;var r=new Map,i=e(t),o=N(0),u=null,d=Jn,f=e=>{if(Jn===d)return e();var t=B,n=Jn;Rn(null),Yn(d);var r=e();return Rn(t),Yn(n),r};return i&&r.set(`length`,N(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&Fe();var i=r.get(t);return i===void 0?f(()=>{var e=N(n.value,u);return r.set(t,e),e}):P(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>N(E,u));r.set(t,e),Wt(o)}}else P(n,E),Wt(o);return!0},get(e,n,i){if(n===T)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>N(Kt(s?e[n]:E),u)),r.set(n,o)),o!==void 0){var c=H(o);return c===E?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){this.has?.(e,t);var n=Reflect.getOwnPropertyDescriptor(e,t),i=r.get(t);if(i!==void 0){var a=H(i);if(a===E)return;if(n&&`value`in n)n.value=a;else return{enumerable:!0,configurable:!0,value:a,writable:!0}}return n},has(e,t){if(t===T)return!0;var n=r.get(t),i=n!==void 0&&n.v!==E||Reflect.has(e,t);return(n!==void 0||V!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>N(i?Kt(e[t]):E,u)),r.set(t,n)),H(n)===E)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;d<c.v;d+=1){var p=r.get(d+``);p===void 0?d in e&&(p=f(()=>N(E,u)),r.set(d+``,p)):P(p,E)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>N(void 0,u)),P(c,Kt(n)),r.set(t,c));else{l=c.v!==E;var m=f(()=>Kt(n));P(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&P(g,_+1)}Wt(o)}return!0},ownKeys(e){H(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==E});for(var[n,i]of r)i.v!==E&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Ie()}})}function qt(e){try{if(typeof e==`object`&&e&&T in e)return e[T]}catch{}return e}function Jt(e,t){return Object.is(qt(e),qt(t))}var Yt,Xt,Zt,Qt;function $t(){if(Yt===void 0){Yt=window,Xt=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;Zt=a(t,`firstChild`).get,Qt=a(t,`nextSibling`).get,u(e)&&(e[oe]=void 0,e[ae]=null,e[se]=void 0,e.__e=void 0),u(n)&&(n[ce]=void 0)}}function en(e=``){return document.createTextNode(e)}function tn(e){return Zt.call(e)}function nn(e){return Qt.call(e)}function F(e,t){if(!D)return tn(e);var n=tn(O);if(n===null)n=O.appendChild(en());else if(t&&n.nodeType!==3){var r=en();return n?.before(r),k(r),r}return t&&sn(n),k(n),n}function I(e,t=!1){if(!D){var n=tn(e);return n instanceof Comment&&n.data===``?nn(n):n}if(t){if(O?.nodeType!==3){var r=en();return O?.before(r),k(r),r}sn(O)}return O}function L(e,t=!1){if(!D)return tn(e);var n=F(e,t);return A(e),n}function R(e,t=1,n=!1){let r=D?O:e;for(var i;t--;)i=r,r=nn(r);if(!D)return r;if(n){if(r?.nodeType!==3){var a=en();return r===null?i?.after(a):r.before(a),k(a),a}sn(r)}return k(r),r}function rn(e){e.textContent=``}function an(){return!1}function on(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function sn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function cn(e){var t=V;if(t===null)return B.f|=w,e;if(!(t.f&32768)&&!(t.f&4))throw e;ln(e,t)}function ln(e,t){if(e===fe)throw e;if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128&&!(t.f&33570816)){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}function un(e){V===null&&(B===null&&Ne(e),Me()),Fn&&je(e)}function dn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function fn(e,t){var n=V;n!==null&&n.f&8192&&(e|=_);var r={ctx:ze,deps:null,nodes:null,f:e|h|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};M?.register_created_effect(r);var i=r;if(e&4)Ct===null?Dt.ensure().schedule(r):Ct.push(r);else if(t!==null){try{rr(r)}catch(e){throw En(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=x))}if(i!==null&&(i.parent=n,n!==null&&dn(i,n),B!==null&&B.f&2&&!(e&64))){var a=B;(a.effects??=[]).push(i)}return r}function pn(){return B!==null&&!Ln}function mn(e){let t=fn(8,null);return Xe(t,m),t.teardown=e,t}function hn(e){un(`$effect`);var t=V.f;if(!B&&t&32&&ze!==null&&!ze.i){var n=ze;(n.e??=[]).push(e)}else return gn(e)}function gn(e){return fn(4|ee,e)}function _n(e){Dt.ensure();let t=fn(64|S,e);return(e={})=>new Promise(n=>{e.outro?kn(t,()=>{En(t),n(void 0)}):(En(t),n(void 0))})}function vn(e){return fn(4,e)}function yn(e){return fn(ne|S,e)}function bn(e,t=0){return fn(8|t,e)}function z(e,t=[],n=[],r=[]){it(r,t,n,t=>{fn(8,()=>{e(...t.map(H))})})}function xn(e,t=0){return fn(16|t,e)}function Sn(e){return fn(32|S,e)}function Cn(e){var t=e.teardown;if(t!==null){let n=Fn,r=B;In(!0),Rn(null);try{t.call(null)}catch(t){ln(t,e.parent)}finally{In(n),Rn(r)}}}function wn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&nt(()=>{e.abort(ue)});var r=n.next;n.f&64?n.parent=null:En(n,t),n=r}}function Tn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||En(t),t=n}}function En(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Dn(e.nodes.start,e.nodes.end),n=!0),e.f|=b,wn(e,t&&!n),nr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Cn(e),e.f^=b,e.f|=v;var i=e.parent;i!==null&&i.first!==null&&On(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Dn(e,t){for(;e!==null;){var n=e===t?null:nn(e);e.remove(),e=n}}function On(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function kn(e,t,n=!0){var r=[];e.f|=256,An(e,r,!0);var i=()=>{n&&En(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function An(e,t,n){if(!(e.f&8192)){e.f^=_;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=!!(i.f&65536)||!!(i.f&32)&&!!(e.f&16);An(i,t,o?n:!1)}i=a}}}function jn(e){e.f&=-257,Mn(e,!0)}function Mn(e,t){if(!(e.f&256)&&e.f&8192){e.f^=_,e.f&1024||(Xe(e,h),Dt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=!!(n.f&65536)||!!(n.f&32);Mn(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Nn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:nn(n);t.append(n),n=i}}var Pn=null,Fn=!1;function In(e){Fn=e}var B=null,Ln=!1;function Rn(e){B=e}var V=null;function zn(e){V=e}var Bn=null;function Vn(e){B!==null&&(B.f&2097152||B.f&2)&&(Bn??=new Set).add(e)}var Hn=null,Un=0,Wn=null;function Gn(e){Wn=e}var Kn=1,qn=0,Jn=qn;function Yn(e){Jn=e}function Xn(){return++Kn}function Zn(e){var t=e.f;if(t&2048)return!0;if(t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(Zn(a)&&mt(a),a.wv>e.wv)return!0}t&512&&yt===null&&Xe(e,m)}return!1}function Qn(e,t,n=!0){var r=e.reactions;if(r!==null&&!(Bn!==null&&Bn.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?Qn(a,t,!1):t===a&&(n?Xe(a,h):a.f&1024&&Xe(a,g),Mt(a))}}function $n(e){var t=Hn,n=Un,r=Wn,i=B,a=Bn,o=ze,s=Ln,c=Jn,l=e.f;Hn=null,Un=0,Wn=null,B=l&96?null:e,Bn=null,Be(e.ctx),Ln=!1,Jn=++qn,e.ac!==null&&(nt(()=>{e.ac.abort(ue)}),e.ac=null);try{e.f|=C;var u=e.fn,d=u();e.f|=y;var f=er(e);if(We()&&Wn!==null&&!Ln&&f!==null&&!(e.f&6146))for(var p=0;p<Wn.length;p++)Qn(Wn[p],e);if(i!==null&&i!==e){if(qn++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=qn;if(t!==null)for(let e of t)e.rv=qn;Wn!==null&&(r===null?r=Wn:r.push(...Wn))}return e.f&8388608&&(e.f^=w),d}catch(t){return er(e),cn(t)}finally{e.f^=C,Hn=t,Un=n,Wn=r,B=i,Bn=a,Be(o),Ln=s,Jn=c}}function er(e){var t=e.deps,n=M?.is_fork;if(Hn!==null){var r;if(n||nr(e,Un),t!==null&&Un>0)for(t.length=Un+Hn.length,r=0;r<Hn.length;r++)t[Un+r]=Hn[r];else e.deps=t=Hn;if(pn()&&e.f&512)for(r=Un;r<t.length;r++)(t[r].reactions??=[]).push(e)}else!n&&t!==null&&Un<t.length&&(nr(e,Un),t.length=Un);return t}function tr(e,r){let i=r.reactions;if(i!==null){var a=t.call(i,e);if(a!==-1){var o=i.length-1;o===0?i=r.reactions=null:(i[a]=i[o],i.pop())}}if(i===null&&r.f&2&&(Hn===null||!n.call(Hn,r))){var s=r;s.f&512&&(s.f^=512),s.v!==E&&Ze(s),s.ac!==null&&nt(()=>{s.ac.abort(ue),s.ac=null,Xe(s,h)}),ht(s),nr(s,0)}}function nr(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)tr(e,n[r])}function rr(e){var t=e.f;if(!(t&16384)){Xe(e,m);var n=V;V=e;try{t&16777232?Tn(e):wn(e),Cn(e);var r=$n(e);e.teardown=typeof r==`function`?r:null,e.wv=Kn}finally{V=n}}}async function ir(){await Promise.resolve(),Ot()}function H(e){var t=!!(e.f&2);if(Pn?.add(e),B!==null&&!Ln&&!(V!==null&&V.f&16384)&&(Bn===null||!Bn.has(e))){var r=B.deps;if(B.f&2097152)e.rv<qn&&(e.rv=qn,Hn===null&&r!==null&&r[Un]===e?Un++:Hn===null?Hn=[e]:Hn.push(e));else{B.deps??=[],n.call(B.deps,e)||B.deps.push(e);var i=e.reactions;i===null?e.reactions=[B]:n.call(i,B)||i.push(B)}}if(Fn&&It.has(e))return It.get(e);if(t){var a=e;if(Fn){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||or(a))&&(o=pt(a)),It.set(a,o),o}var s=!(a.f&512)&&!Ln&&B!==null&&!!(B.f&512),c=(a.f&y)===0;Zn(a)&&(s&&(a.f|=512),mt(a)),s&&!c&&(gt(a),ar(a))}if(yt?.has(e))return yt.get(e);if(e.f&8388608)throw e.v;return e.v}function ar(e){if(e.f|=512,e.deps!==null)for(let r of e.deps){var t=r.reactions;t===null?r.reactions=[e]:n.call(t,e)||t.push(e),r.f&2&&!(r.f&512)&&(gt(r),ar(r))}}function or(e){if(e.v===E)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(It.has(t)||t.f&2&&or(t))return!0;return!1}function sr(e){var t=Ln;try{return Ln=!0,e()}finally{Ln=t}}function cr(e){if(!(typeof e!=`object`||!e||e instanceof EventTarget)){if(T in e)lr(e);else if(!Array.isArray(e))for(let t in e){let n=e[t];typeof n==`object`&&n&&T in n&&lr(n)}}}function lr(e,t=new Set){if(typeof e==`object`&&e&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let n in e)try{lr(e[n],t)}catch{}let n=l(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){let t=o(n);for(let n in t){let r=t[n].get;if(r)try{r.call(e)}catch{}}}}}[...`allowfullscreen.async.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.webkitdirectory.defer.disablepictureinpicture.disableremoteplayback`.split(`.`)];var ur=[`touchstart`,`touchmove`];function dr(e){return ur.includes(e)}var fr=Symbol(`events`),pr=new Set,mr=new Set;function hr(e,t,n,r={}){function i(e){if(r.capture||br.call(t,e),!e.cancelBubble)return nt(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?(i.__removed=!1,qe(()=>{i.__removed||t.addEventListener(e,i,r)})):t.addEventListener(e,i,r),i}function gr(e,t,n,r,i){var a={capture:r,passive:i},o=hr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&mn(()=>{o.__removed=!0,t.removeEventListener(e,o,a)})}function U(e,t,n){(t[fr]??={})[e]=n}function _r(e){for(var t=0;t<e.length;t++)pr.add(e[t]);for(var n of mr)n(e)}var vr=null,yr=!1;function br(e){var t=this,n=t.ownerDocument,r=e.type,a=e.composedPath?.()||[],o=a[0]||e.target;vr=e,yr||(yr=!0,setTimeout(()=>{yr=!1,vr=null}));var s=0,c=vr===e&&e[fr];if(c){var l=a.indexOf(c);if(l!==-1&&(t===document||t===window)){e[fr]=t;return}var u=a.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(o=a[s]||e.target,o!==t){i(e,`currentTarget`,{configurable:!0,get(){return o||n}});var d=B,f=V;Rn(null),zn(null);try{for(var p,m=[];o!==null&&o!==t;){try{var h=o[fr]?.[r];h!=null&&(!o.disabled||e.target===o)&&h.call(o,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble)break;s++,o=s<a.length?a[s]:null}if(p){for(let e of m)queueMicrotask(()=>{throw e});throw p}}finally{e[fr]=t,delete e.currentTarget,Rn(d),zn(f)}}}var xr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Sr(e){return xr?.createHTML(e)??e}function Cr(e){var t=on(`template`);return t.innerHTML=Sr(e.replaceAll(`<!>`,`<!---->`)),t.content}function wr(e,t){var n=V;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function W(e,t){var n=!!(t&1),r=!!(t&2),i,a=!e.startsWith(`<!>`);return()=>{if(D)return wr(O,null),O;i===void 0&&(i=Cr(a?e:`<!>`+e),n||(i=tn(i)));var t=r||Xt?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=tn(t),s=t.lastChild;wr(o,s)}else wr(t,t);return t}}function Tr(e,t,n=`svg`){var r=!e.startsWith(`<!>`),i=!!(t&1),a=`<${n}>${r?e:`<!>`+e}</${n}>`,o;return()=>{if(D)return wr(O,null),O;if(!o){var e=tn(Cr(a));if(i)for(o=document.createDocumentFragment();tn(e);)o.appendChild(tn(e));else o=tn(e)}var t=o.cloneNode(!0);if(i){var n=tn(t),r=t.lastChild;wr(n,r)}else wr(t,t);return t}}function Er(e,t){return Tr(e,t,`svg`)}function Dr(e=``){if(!D){var t=en(e+``);return wr(t,t),t}var n=O;return n.nodeType===3?sn(n):(n.before(n=en()),k(n)),wr(n,n),n}function Or(){if(D)return wr(O,null),O;var e=document.createDocumentFragment(),t=document.createComment(``),n=en();return e.append(t,n),wr(t,n),e}function G(e,t){if(D){var n=V;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=O),xe();return}e!==null&&e.before(t)}function kr(e){let t=0,n=Rt(0),r;return()=>{pn()&&(H(n),bn(()=>(t===0&&(r=sr(()=>e(()=>Wt(n)))),t+=1,()=>{qe(()=>{--t,t===0&&(r?.(),r=void 0,Wt(n))})})))}}var Ar=x|S;function jr(e,t,n,r){new Mr(e,t,n,r)}var Mr=class{parent;is_pending=!1;transform_error;#e;#t=D?O:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=kr(()=>(this.#m=Rt(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=V;t.b=this,t.f|=128,n(e)},this.parent=V.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=xn(()=>{if(D){let e=we(this.#t);xe();let t=e===`[!`;if(e.startsWith(`[?`)){let t=JSON.parse(e.slice(2));this.#_(t)}else t?this.#b():this.#g()}else this.#x()},Ar),D&&(this.#e=O)}#g(){try{this.#a=Sn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed,{reset:n,invoke_onerror:r}=this.#v(e);qe(r),t&&(this.#s=Sn(()=>{t(this.#e,()=>e,()=>n)}))}#v(e){var t=!1,n=!1;let r=()=>{if(!this.#y()){if(t){ye();return}t=!0,n&&Re(),this.#s!==null&&kn(this.#s,()=>{this.#s=null}),this.#C(()=>{this.#x()})}};return{reset:r,invoke_onerror:()=>{if(!this.#y())try{n=!0,this.#n.onerror?.(e,r),n=!1}catch(e){ln(e,this.#i&&this.#i.parent)}}}}#y(){return(this.#i.f&(v|b))!==0}#b(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=Sn(()=>e(this.#e)),qe(()=>{if(!this.#y()){var e=this.#c=document.createDocumentFragment(),t=en(),n=!1;if(e.append(t),this.#a=this.#C(()=>{try{return Sn(()=>this.#r(t))}catch(e){try{this.error(e),n=!0}catch(e){ln(e,this.#i.parent)}return null}}),this.#a===null){this.#c=null,n&&this.#S(M);return}this.#u===0&&(this.#e.before(e),this.#c=null,kn(this.#o,()=>{this.#o=null}),this.#S(M))}}))}#x(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=Sn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Nn(this.#a,e);let t=this.#n.pending;this.#o=Sn(()=>t(this.#e))}else this.#S(M)}catch(e){this.error(e)}}#S(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){Qe(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#C(e){var t=V,n=B,r=ze;zn(this.#i),Rn(this.#i),Be(this.#i.ctx);try{return Dt.ensure(),e()}finally{zn(t),Rn(n),Be(r)}}#w(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#w(e,t);return}this.#u+=e,this.#u===0&&(this.#S(t),this.#o&&kn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#w(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,qe(()=>{this.#d=!1,this.#m&&Ht(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),H(this.#m)}error(e){if(e===fe||!this.#n.onerror&&!this.#n.failed)throw e;M?.is_fork?(this.#a&&M.skip_effect(this.#a),this.#o&&M.skip_effect(this.#o),this.#s&&M.skip_effect(this.#s),M.oncommit(()=>{this.#y()||this.#T(e)})):this.#T(e)}#T(e){this.#a&&=(En(this.#a),null),this.#o&&=(En(this.#o),null),this.#s&&=(En(this.#s),null),D&&(k(this.#t),Se(),k(Ce()));let t=this.#n.failed,n=e=>{if(this.#y())return;let{reset:n,invoke_onerror:r}=this.#v(e);r(),t&&!this.#y()&&(this.#s=this.#C(()=>{try{return Sn(()=>{var r=V;r.b=this,r.f|=128,t(this.#e,()=>e,()=>n)})}catch(e){return ln(e,this.#i.parent),null}}))};qe(()=>{if(!this.#y()){var t;try{t=this.transform_error(e)}catch(e){ln(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(n,e=>ln(e,this.#i&&this.#i.parent)):n(t)}})}};function K(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[ce]??=e.nodeValue)&&(e[ce]=n,e.nodeValue=`${n}`)}function Nr(e,t){return Fr(e,t)}var Pr=new Map;function Fr(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){$t();var l=void 0,u=_n(()=>{var s=n??t.appendChild(en());jr(s,{pending:()=>{}},t=>{Ve({});var n=ze;if(o&&(n.c=o),a&&(i.$$events=a),D&&wr(t,null),l=e(t,i)||Ue(),D&&(V.nodes.end=O,O===null||O.nodeType!==8||O.data!==`]`))throw _e(),fe;He()},c);var u=new Set,d=e=>{for(var n=0;n<e.length;n++){var r=e[n];if(!u.has(r)){u.add(r);var i=dr(r);for(let e of[t,document]){var a=Pr.get(e);a===void 0&&(a=new Map,Pr.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,br,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return d(r(pr)),mr.add(d),()=>{for(var e of u)for(let n of[t,document]){var r=Pr.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,br),r.delete(e),r.size===0&&Pr.delete(n)):r.set(e,i)}mr.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return Ir.set(l,u),l}var Ir=new WeakMap,Lr=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)jn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(jn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(En(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();Nn(r,t),t.append(en()),this.#n.set(e,{effect:r,fragment:t})}else En(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),kn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(En(n.effect),this.#n.delete(e))};ensure(e,t){var n=M,r=an();if(t&&!this.#t.has(e)&&!this.#n.has(e)){if(r){var i=document.createDocumentFragment(),a=en();i.append(a),this.#n.set(e,{effect:Sn(()=>t(a)),fragment:i})}else this.#t.set(e,Sn(()=>t(this.anchor)))}if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else D&&(this.anchor=O),this.#a(n)}};function q(e,t,n=!1){var r;D&&(r=O,xe());var i=new Lr(e),a=n?x:0;function o(e,t){if(D){var n=we(r);if(e!==parseInt(n.substring(1))){var a=Ce();k(a),i.anchor=a,be(!1),i.ensure(e,t),be(!0);return}}i.ensure(e,t)}xn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function Rr(e,t){return t}function zr(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c<a;c++){let n=t[c];kn(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Br(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=i.length===0&&n!==null&&e.pending.size===0;if(l){var u=n,d=u.parentNode;rn(d),d.append(u),e.items.clear()}Br(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Br(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i<t.length;i++){var a=t[i];r?.has(a)?(a.f|=te,Nn(a,document.createDocumentFragment())):En(t[i],n)}}var Vr;function J(t,n,i,a,o,s=null){var c=t,l=new Map;if(n&4){var u=t;c=D?k(tn(u)):u.appendChild(en())}D&&xe();var d=null,f=dt(()=>{var t=i();return e(t)?t:t==null?[]:r(t)}),p=new Map,m=!0;function h(e){if(!(_.effect.f&16384)){_.pending.delete(e);var t=H(f);_.fallback=d,Ur(_,t,c,n,a),d!==null&&(t.length===0?d.f&33554432?(d.f^=te,Gr(d,null,c)):jn(d):kn(d,()=>{d=null}))}}function g(e){_.pending.delete(e)}var _={effect:xn(()=>{var e=H(f),t=e.length;let r=!1;D&&we(c)===`[!`!=(t===0)&&(c=Ce(),k(c),be(!1),r=!0);for(var u=new Set,_=M,v=an(),y=0;y<t;y+=1){D&&O.nodeType===8&&O.data===`]`&&(c=O,r=!0,be(!1));var b=e[y],x=a(b,y),S=m?null:l.get(x);S?(S.v&&Ht(S.v,b),S.i&&Ht(S.i,y),v&&_.unskip_effect(S.e)):(S=Wr(l,m?c:Vr??=en(),b,x,y,o,n,i),m||(S.e.f|=te),l.set(x,S)),u.add(x)}if(t===0&&s&&!d&&(m?d=Sn(()=>s(c)):(d=Sn(()=>s(Vr??=en())),d.f|=te)),t>u.size&&Ae(``,``,``),D&&t>0&&k(Ce()),!m){if(p.set(_,u),v){for(let[e,t]of l)u.has(e)||_.skip_effect(t.e);_.oncommit(h),_.ondiscard(g)}else h(_)}r&&be(!0),H(f)}),flags:n,items:l,pending:p,outrogroups:null,fallback:d};m=!1,D&&(c=O)}function Hr(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function Ur(e,t,n,i,a){var o=!!(i&8),s=t.length,c=e.items,l=Hr(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v<s;v+=1)h=t[v],g=a(h,v),_=c.get(g).e,_.f&33554432||(_.nodes?.a?.measure(),(f??=new Set).add(_));for(v=0;v<s;v+=1){if(h=t[v],g=a(h,v),_=c.get(g).e,e.outrogroups!==null)for(let t of e.outrogroups)t.pending.delete(_),t.done.delete(_);if(_.f&8192&&(jn(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432){if(_.f^=te,_===l)Gr(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Kr(e,d,_),Kr(e,_,y),Gr(_,y,n),d=_,p=[],m=[],l=Hr(d.next);continue}}if(_!==l){if(u!==void 0&&u.has(_)){if(p.length<m.length){var b=m[0],x;d=b.prev;var S=p[0],ee=p[p.length-1];for(x=0;x<p.length;x+=1)Gr(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);Kr(e,S.prev,ee.next),Kr(e,d,S),Kr(e,ee,b),l=b,d=ee,--v,p=[],m=[]}else u.delete(_),Gr(_,l,n),Kr(e,_.prev,_.next),Kr(e,_,d===null?e.effect.first:d.next),Kr(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=Hr(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=Hr(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(Br(e,r(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var C=[];if(u!==void 0)for(_ of u)_.f&8192||C.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&C.push(l),l=Hr(l.next);var ne=C.length;if(ne>0){var w=i&4&&s===0?n:null;if(o){for(v=0;v<ne;v+=1)C[v].nodes?.a?.measure();for(v=0;v<ne;v+=1)C[v].nodes?.a?.fix()}zr(e,C,w)}}o&&qe(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function Wr(e,t,n,r,i,a,o,s){var c=o&1?o&16?Rt(n):zt(n,!1,!1):null,l=o&2?Rt(i):null;return{v:c,i:l,e:Sn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Gr(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=nn(r);if(a.before(r),r===i)return;r=o}}function Kr(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function qr(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;D&&(o=k(tn(c)))}z(()=>{var e=V;if(s===(s=t()??``)){D&&xe();return}if(n&&!D){e.nodes=null,c.innerHTML=s,s!==``&&wr(tn(c),c.lastChild);return}if(e.nodes!==null&&(Dn(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(D){for(var a=O.data,l=xe(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=nn(l);if(l===null)throw _e(),fe;wr(O,u),o=k(l);return}var d=on(r?`svg`:i?`math`:`template`,r?me:i?he:void 0);d.innerHTML=s;var f=r||i?d:d.content;if(wr(tn(f),f.lastChild),r||i)for(;tn(f);)o.before(tn(f));else o.before(f)}})}function Jr(e,t,n){vn(()=>{var r=sr(()=>t(e,n?.())||{});if(n&&r?.update){var i=!1,a={};bn(()=>{var e=n();cr(e),i&&Ee(a,e)&&(a=e,r.update(e))}),i=!0}if(r?.destroy)return()=>r.destroy()})}var Yr=[...`
|
|
2
|
-
\r\f\xA0\v`];function Xr(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||Yr.includes(r[o-1]))&&(s===r.length||Yr.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Zr(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Qr(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function $r(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\/\*.*?\*\//g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Qr)),i&&c.push(...Object.keys(i).map(Qr));var l=0,u=-1;let t=e.length;for(var d=0;d<t;d++){var f=e[d];if(s?f===`/`&&e[d-1]===`*`&&(s=!1):a?a===f&&(a=!1):f===`/`&&e[d+1]===`*`?s=!0:f===`"`||f===`'`?a=f:f===`(`?o++:f===`)`&&o--,!s&&a===!1&&o===0){if(f===`:`&&u===-1)u=d;else if(f===`;`||d===t-1){if(u!==-1){var p=Qr(e.substring(l,u).trim());if(!c.includes(p)){f!==`;`&&d++;var m=e.substring(l,d).trim();n+=` `+m+`;`}}l=d+1,u=-1}}}}return r&&(n+=Zr(r)),i&&(n+=Zr(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function ei(e,t,n,r,i,a){var o=e[oe];if(D||o!==n||o===void 0){var s=Xr(n,r,a);(!D||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[oe]=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function ti(e,t={},n,r){for(var i in n){var a=n[i];t[i]!==a&&(n[i]==null?e.style.removeProperty(i):e.style.setProperty(i,a,r))}}function ni(e,t,n,r){var i=e[se];if(D||i!==t){var a=$r(t,r);(!D||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[se]=t}else r&&(Array.isArray(r)?(ti(e,n?.[0],r[0]),ti(e,n?.[1],r[1],`important`)):ti(e,n,r));return r}function ri(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function ii(t,n){var r=t.__defaultValue,i=t.multiple,a=i?r??[]:null;if(!i||e(a)){var o=t.selectedIndex,s=n&&i?new Set(t.selectedOptions):null;for(var c of t.options){var l=ci(c);ri(c,i?a.includes(l):Jt(l,r))}if(n){if(s!==null)for(c of t.options){var u=s.has(c);c.selected!==u&&(c.selected=u)}else t.selectedIndex!==o&&(t.selectedIndex=o)}}}function ai(t,n,r=!1){if(t.multiple){if(n==null)return;if(!e(n))return ve();for(var i of t.options)i.selected=n.includes(ci(i));return}for(i of t.options)if(Jt(ci(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(t.selectedIndex=-1)}function oi(e){var t=new MutationObserver(t=>{t.every(li)||(`__defaultValue`in e&&ii(e,!1),`__value`in e&&ai(e,e.__value))});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),mn(()=>{t.disconnect()})}function si(e,t,n=t){var r=new WeakSet,i=!0;rt(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),ci);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&ci(o)}n(a),e.__value=a,M!==null&&r.add(M)}),vn(()=>{var a=t();if(e===document.activeElement){var o=M;if(r.has(o))return}if(ai(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=ci(s),n(a))}e.__value=a,i=!1})}function ci(e){return`__value`in e?e.__value:e.value}function li(e){if(e.target.closest(`selectedcontent`)!==null)return!0;if(e.type===`childList`){var t=[...e.addedNodes,...e.removedNodes];return t.length>0&&t.every(e=>e.nodeName===`SELECTEDCONTENT`)}return!1}var ui=Symbol(`is custom element`),di=Symbol(`is html`),fi=de?`link`:`LINK`,pi=de?`progress`:`PROGRESS`;function Y(e){if(D){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;X(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;X(e,`checked`,null),e.checked=r}}};e[le]=n,qe(n),tt()}}function mi(e,t){var n=hi(e);n.value!==(n.value=t??void 0)&&(e.value!==t||t===0&&e.nodeName===pi)&&(e.value=t??``)}function X(e,t,n,r){var i=hi(e);D&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===fi)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ie]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&_i(e).has(t)?e[t]=n:e.setAttribute(t,n))}function hi(e){return e[ae]??={[ui]:e.nodeName.includes(`-`),[di]:e.namespaceURI===pe}}var gi=new Map;function _i(e){var t=e.getAttribute(`is`)||e.nodeName,n=gi.get(t);if(n)return n;gi.set(t,n=new Set);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.add(s);i=l(i)}return n}function Z(e,t,n=t){var r=new WeakSet;rt(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=yi(e)?bi(a):a,n(a),M!==null&&r.add(M),await ir(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(D&&e.defaultValue!==e.value||sr(t)==null&&e.value)&&(n(yi(e)?bi(e.value):e.value),M!==null&&r.add(M)),bn(()=>{var n=t();if(e===document.activeElement){var i=M;if(r.has(i))return}yi(e)&&n===bi(e.value)||(e.type!==`date`||n||e.value)&&n!==e.value&&(e.value=n??``)})}function vi(e,t,n=t){rt(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(D&&e.defaultChecked!==e.checked||sr(t)==null)&&n(e.checked),bn(()=>{e.checked=!!t()})}function yi(e){var t=e.type;return t===`number`||t===`range`}function bi(e){return e===``?null:+e}function xi(e,t){return e===t||e?.[T]===t}function Si(e=Ue(),t,n,r){var i=ze.r,a=V;return vn(()=>{var o,s;return bn(()=>{o=s,s=r?.()||[],sr(()=>{xi(n(...s),e)||(t(e,...s),o&&xi(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&xi(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function Ci(e){ze===null&&Oe(`onMount`),hn(()=>{let t=sr(e);if(typeof t==`function`)return t})}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);function wi(){return{messages:[],streaming:null,tools:{},queue:{steering:[],followUp:[]},running:!1,turn:Ti(),total:Ti()}}function Ti(){return{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:0}}function Ei(e){let t=e,n=typeof t.role==`string`?t.role:`unknown`,r=[];if(n===`toolResult`)r.push({kind:`tool-result`,id:typeof t.toolCallId==`string`?t.toolCallId:``,name:typeof t.toolName==`string`?t.toolName:``,output:ji(t.content),isError:t.isError===!0});else{let e=t.content;if(typeof e==`string`)e&&r.push({kind:`text`,text:e});else if(Array.isArray(e))for(let t of e)r.push(...Di(t))}let i={role:n,blocks:r},a=Oi(t.usage);return a&&(i.usage=a),i}function Di(e){if(!e||typeof e!=`object`)return[];let t=e;switch(t.type){case`text`:return typeof t.text==`string`&&t.text?[{kind:`text`,text:t.text}]:[];case`image`:return typeof t.data==`string`&&typeof t.mimeType==`string`?[{kind:`image`,data:t.data,mimeType:t.mimeType}]:[];case`thinking`:return typeof t.thinking==`string`&&t.thinking?[{kind:`thinking`,text:t.thinking}]:[];case`toolCall`:return[{kind:`tool-call`,id:typeof t.id==`string`?t.id:``,name:typeof t.name==`string`?t.name:``,args:t.arguments}];default:return[]}}function Oi(e){if(!e||typeof e!=`object`)return;let t=e;return{input:ki(t.input),output:ki(t.output),cacheRead:ki(t.cacheRead),cacheWrite:ki(t.cacheWrite),totalTokens:ki(t.totalTokens),cost:Ai(t.cost)}}function ki(e){return typeof e==`number`&&Number.isFinite(e)?e:0}function Ai(e){return typeof e==`number`?e:e&&typeof e==`object`?ki(e.total):0}function ji(e){if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(ji).filter(Boolean).join(`
|
|
3
|
-
`);if(e&&typeof e==`object`){let t=e;return`content`in t?ji(t.content):`text`in t&&typeof t.text==`string`?t.text:JSON.stringify(e,null,2)}return``}function Mi(e,t){return{input:e.input+t.input,output:e.output+t.output,cacheRead:e.cacheRead+t.cacheRead,cacheWrite:e.cacheWrite+t.cacheWrite,totalTokens:e.totalTokens+t.totalTokens,cost:e.cost+t.cost}}function Ni(e,t,n=Date.now,r){switch(t.type){case`agent_start`:return{...e,running:!0,turn:Ti()};case`agent_settled`:return{...e,running:!1,streaming:null,queue:{steering:[],followUp:[]}};case`message_start`:return Pi(t.message)?{...e,streaming:Ei(t.message)}:e;case`message_update`:{let n=t.assistantMessageEvent;return n?.partial?{...e,streaming:Ei(n.partial)}:e}case`message_end`:{let n=Ei(t.message);if(n.role===`system`||n.role===`custom`)return e;if(n.role===`toolResult`){let t=n.blocks[0],r=e.tools[t.id];if(r)return{...e,tools:{...e.tools,[t.id]:{...r,output:t.output,state:t.isError?`error`:`done`}}}}r!==void 0&&(n.seq=r);let i=n.usage?Mi(e.turn,n.usage):e.turn,a={...e.tools};for(let e of n.blocks)e.kind===`tool-call`&&!a[e.id]&&(a[e.id]={id:e.id,name:e.name,args:e.args,output:``,state:`pending`});return{...e,messages:[...e.messages,n],streaming:null,tools:a,turn:i,total:n.usage?Mi(e.total,n.usage):e.total}}case`tool_execution_start`:{let r=t,i=e.tools[r.toolCallId];return{...e,tools:{...e.tools,[r.toolCallId]:{id:r.toolCallId,name:r.toolName,args:r.args,output:i?.output??``,state:`running`,startedAt:i?.startedAt??n()}}}}case`tool_execution_update`:{let n=t,r=e.tools[n.toolCallId];return r?{...e,tools:{...e.tools,[n.toolCallId]:{...r,output:ji(n.partialResult)}}}:e}case`tool_execution_end`:{let r=t,i=e.tools[r.toolCallId],a={id:r.toolCallId,name:r.toolName,args:i?.args,output:ji(r.result),state:r.isError?`error`:`done`,startedAt:i?.startedAt??n(),endedAt:n()};return{...e,tools:{...e.tools,[r.toolCallId]:a}}}case`queue_update`:{let n=t;return{...e,queue:{steering:[...n.steering],followUp:[...n.followUp]}}}default:return e}}function Pi(e){return e?.role===`assistant`}function Fi(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function Ii(e){return`${`${Fi(e.input)} in / ${Fi(e.output)} out`}${e.cacheRead?` / ${Fi(e.cacheRead)} cached`:``} · $${e.cost.toFixed(4)}`}function Li(e){return e.input+e.cacheRead+e.cacheWrite}function Ri(e){let t=Li(e);return t?`${Fi(e.cacheRead)} read / ${Fi(e.cacheWrite)} write · ${Math.round(e.cacheRead/t*100)}% of the prompt from cache`:`the provider reported no usage`}var zi=new Set([`text_start`,`text_delta`,`thinking_start`,`thinking_delta`,`toolcall_start`,`toolcall_delta`]),Bi={promptTokens:0,outputTokens:0,prefillMs:0,decodeMs:0};function Vi(e){return e!==null&&(e.promptTokens>0||e.outputTokens>0)}function Hi(){return{live:null,last:null,run:{...Bi}}}function Ui(e,t,n=Date.now){switch(t.type){case`agent_start`:return{...e,pendingStart:void 0,live:null,run:{...Bi}};case`turn_start`:return{...e,pendingStart:n()};case`message_start`:return Pi(t.message)?{...e,pendingStart:void 0,live:{requestStart:e.pendingStart??n(),firstTokenAt:null,promptTokens:0,outputTokens:0}}:e;case`message_update`:{if(!e.live)return e;let r=t.assistantMessageEvent,i=Oi(r?.partial?.usage);return{...e,live:{...e.live,firstTokenAt:e.live.firstTokenAt??(zi.has(r?.type??``)?n():null),promptTokens:i?Li(i):e.live.promptTokens,outputTokens:i&&i.output>0?i.output:e.live.outputTokens}}}case`message_end`:{let r=t.message;if(!Pi(r)||!e.live)return e;let i=Oi(r.usage),a=e.live.firstTokenAt,o=i?Li(i):0,s=i?.output??0,c={promptTokens:o,outputTokens:s,prefillMs:a===null?0:Ki(o,a-e.live.requestStart),decodeMs:a===null?0:Ki(s,n()-a)};return{...e,pendingStart:void 0,live:null,last:Vi(c)?c:e.last,run:a===null?e.run:Gi(e.run,c)}}case`agent_settled`:return{...e,pendingStart:void 0,live:null};default:return e}}function Wi(e,t){let n=e.live,r=n?.firstTokenAt==null?e.run:Gi(e.run,{promptTokens:n.promptTokens,outputTokens:n.outputTokens,prefillMs:Ki(n.promptTokens,n.firstTokenAt-n.requestStart),decodeMs:Ki(n.outputTokens,t-n.firstTokenAt)});if(r.promptTokens===0&&r.outputTokens===0){let t=e.last;return t?{prefill:qi(t.promptTokens,t.prefillMs),decode:qi(t.outputTokens,t.decodeMs)}:{prefill:null,decode:null}}return{prefill:qi(r.promptTokens,r.prefillMs),decode:qi(r.outputTokens,r.decodeMs)}}function Gi(e,t){return{promptTokens:e.promptTokens+t.promptTokens,outputTokens:e.outputTokens+t.outputTokens,prefillMs:e.prefillMs+t.prefillMs,decodeMs:e.decodeMs+t.decodeMs}}function Ki(e,t){return e>0?t:0}function qi(e,t){return t>0&&e>0?e*1e3/t:null}function Ji(e){return e>=100?String(Math.round(e)):e.toFixed(1)}var Yi=`flypi.lastAnswers`;function Xi(e){return e.model?`${e.model.provider}/${e.model.modelId}`:null}function Zi(e){return ta()[e]??null}function Qi(e,t){let n=ta();n[e]=t,ea(n)}function $i(e){let t=ta();e in t&&(delete t[e],ea(t))}function ea(e){try{localStorage.setItem(Yi,JSON.stringify(e))}catch{}}function ta(){let e;try{e=JSON.parse(localStorage.getItem(Yi)??``)}catch{return{}}if(!e||typeof e!=`object`)return{};let t={};for(let[n,r]of Object.entries(e)){let e=na(r);e&&(t[n]=e)}return t}function na(e){let t=e;if(!t||typeof t!=`object`)return null;let{promptTokens:n,outputTokens:r,prefillMs:i,decodeMs:a}=t;return ra(n)&&ra(r)&&ra(i)&&ra(a)?{promptTokens:n,outputTokens:r,prefillMs:i,decodeMs:a,model:typeof t.model==`string`?t.model:null}:null}function ra(e){return Number.isFinite(e)}var ia=class{#e=N(Kt(wi()));get transcript(){return H(this.#e)}set transcript(e){P(this.#e,e,!0)}#t=N(Kt(Hi()));get metrics(){return H(this.#t)}set metrics(e){P(this.#t,e,!0)}#n=N(null);get measuredOn(){return H(this.#n)}set measuredOn(e){P(this.#n,e,!0)}#r=N(void 0);get conversationId(){return H(this.#r)}set conversationId(e){P(this.#r,e,!0)}#i=N(void 0);get sessionPath(){return H(this.#i)}set sessionPath(e){P(this.#i,e,!0)}#a=N(Kt([]));get sessions(){return H(this.#a)}set sessions(e){P(this.#a,e,!0)}#o=N(void 0);get debug(){return H(this.#o)}set debug(e){P(this.#o,e,!0)}#s=N(void 0);get scheduler(){return H(this.#s)}set scheduler(e){P(this.#s,e,!0)}#c=N(void 0);get interruptedAt(){return H(this.#c)}set interruptedAt(e){P(this.#c,e,!0)}#l=N(void 0);get config(){return H(this.#l)}set config(e){P(this.#l,e,!0)}#u=N(`chat`);get view(){return H(this.#u)}set view(e){P(this.#u,e,!0)}#d=N(!1);get connected(){return H(this.#d)}set connected(e){P(this.#d,e,!0)}#f=N(void 0);get lastError(){return H(this.#f)}set lastError(e){P(this.#f,e,!0)}#p=N(void 0);get configError(){return H(this.#p)}set configError(e){P(this.#p,e,!0)}#m=N(void 0);get mcpStatus(){return H(this.#m)}set mcpStatus(e){P(this.#m,e,!0)}#h=N(!1);get mcpChecking(){return H(this.#h)}set mcpChecking(e){P(this.#h,e,!0)}#g=N(void 0);get mcpSignIn(){return H(this.#g)}set mcpSignIn(e){P(this.#g,e,!0)}#_=N(!1);get mcpSigningIn(){return H(this.#_)}set mcpSigningIn(e){P(this.#_,e,!0)}#v=N(void 0);get packages(){return H(this.#v)}set packages(e){P(this.#v,e,!0)}#y=N(!1);get packagesBusy(){return H(this.#y)}set packagesBusy(e){P(this.#y,e,!0)}#b=N(void 0);get schedulerError(){return H(this.#b)}set schedulerError(e){P(this.#b,e,!0)}#x=N(!1);get updateInstalling(){return H(this.#x)}set updateInstalling(e){P(this.#x,e,!0)}#S=N(void 0);get updateError(){return H(this.#S)}set updateError(e){P(this.#S,e,!0)}#C=N(void 0);get secrets(){return H(this.#C)}set secrets(e){P(this.#C,e,!0)}#w=N(void 0);get secretsError(){return H(this.#w)}set secretsError(e){P(this.#w,e,!0)}#T=N(void 0);get revealed(){return H(this.#T)}set revealed(e){P(this.#T,e,!0)}#E=N(void 0);get memories(){return H(this.#E)}set memories(e){P(this.#E,e,!0)}#D=N(void 0);get memoryError(){return H(this.#D)}set memoryError(e){P(this.#D,e,!0)}#O=N(Kt([]));get extensionNotes(){return H(this.#O)}set extensionNotes(e){P(this.#O,e,!0)}#k=N(void 0);get extensionDialog(){return H(this.#k)}set extensionDialog(e){P(this.#k,e,!0)}#A=N(void 0);get protocolMismatch(){return H(this.#A)}set protocolMismatch(e){P(this.#A,e,!0)}#j;#M=0;#N=!1;#P=null;#F;#I=new Map;#L=new Set;constructor(e){this.#j=e}watch(){return this.#j.on(e=>{if(e.type===`connected`){this.connected=!0,this.conversationId?this.send({type:`resume`,conversationId:this.conversationId,afterSeq:this.#M}):this.newSession(),this.view===`chat`&&this.showConfig();return}if(e.type===`disconnected`){this.connected=!1;return}this.handleFrame(e)})}send(e){this.#j.send(e)}async request(e){return new Promise(t=>{this.#I.set(e.requestId,t),this.send(e)})}newSession(){this.request({type:`newSession`,requestId:oa()})}prompt(e,t=`steer`,n=[]){this.conversationId&&this.send({type:`prompt`,conversationId:this.conversationId,text:e,...n.length?{attachments:n}:{},mode:t})}abort(){this.conversationId&&this.send({type:`abort`,conversationId:this.conversationId})}fork(e){this.conversationId&&this.request({type:`fork`,conversationId:this.conversationId,messageSeq:e,requestId:oa()})}listSessions(){this.request({type:`listSessions`,requestId:oa()})}openSession(e){this.conversationId&&this.request({type:`switchSession`,conversationId:this.conversationId,sessionPath:e,requestId:oa()})}rename(e){this.conversationId&&this.send({type:`renameSession`,conversationId:this.conversationId,name:e})}deleteSession(e){let t=e===this.sessionPath;$i(e),this.request({type:`deleteSession`,sessionPath:e,requestId:oa()}).then(()=>{t&&this.newSession()})}setModel(e,t){this.conversationId&&(this.send({type:`setModel`,conversationId:this.conversationId,provider:e,modelId:t}),this.#R(`${e}/${t}`))}#R(e){if(!e||(this.#P=e,!this.sessionPath||this.measuredOn===e))return;if(!this.measuredOn&&(Vi(this.metrics.run)||Vi(this.metrics.last))){this.measuredOn=e,Vi(this.metrics.run)&&Qi(this.sessionPath,{...this.metrics.run,model:e});return}let t=Zi(this.sessionPath),n=t&&t.model===e?t:null;this.metrics={...Hi(),last:n},this.measuredOn=n?e:null}setThinkingLevel(e){this.conversationId&&this.send({type:`setThinkingLevel`,conversationId:this.conversationId,level:e})}answerExtension(e,t){this.conversationId&&(this.send({type:`extensionReply`,conversationId:this.conversationId,dialogId:e,value:t}),this.extensionDialog=void 0)}showDebug(){this.conversationId&&this.request({type:`debug`,conversationId:this.conversationId,requestId:oa()})}loadScheduler(){let e=oa();this.#H.add(e),this.request({type:`scheduler`,requestId:e})}installUpdate(){let e=oa();this.#L.add(e),this.updateError=void 0,this.updateInstalling=!0,this.request({type:`installUpdate`,requestId:e})}openChat(){this.revealed=void 0,this.view=`chat`,this.config||this.showConfig()}openSettings(){this.revealed=void 0,this.view=`settings`}openSecrets(){this.view=`secrets`}openMemory(){this.revealed=void 0,this.view=`memory`}toggleSettings(){this.view===`settings`?this.openChat():this.openSettings()}toggleSecrets(){this.view===`secrets`?this.openChat():this.openSecrets()}toggleMemory(){this.view===`memory`?this.openChat():this.openMemory()}showConfig(){this.request({type:`getConfig`,requestId:this.#U()})}saveConfig(e){this.request({type:`saveConfig`,...e,requestId:this.#U()})}showPackages(){this.request({type:`packages`,requestId:this.#U()})}savePackages(e){this.packagesBusy=!0,this.request({type:`savePackages`,...e,requestId:this.#U()})}checkMcp(){this.mcpChecking=!0,this.request({type:`mcpStatus`,requestId:this.#U()})}signInMcp(e){this.mcpSigningIn=!0,this.request({type:`mcpSignIn`,name:e,requestId:this.#U()})}submitMcpRedirect(e,t){this.send({type:`mcpRedirect`,name:e,url:t})}showSecrets(){this.request({type:`secrets`,requestId:this.#W()})}saveSecrets(e){this.request({type:`saveSecrets`,secrets:e,requestId:this.#W()})}revealSecret(e){this.request({type:`revealSecret`,name:e,requestId:this.#W()})}showMemories(){this.request({type:`memory`,requestId:this.#G()})}saveMemories(e){this.request({type:`saveMemory`,memories:e,requestId:this.#G()})}hideSecret(){this.revealed=void 0}#z=new Set;#B=new Set;#V=new Set;#H=new Set;#U(){let e=oa();return this.#z.add(e),e}#W(){let e=oa();return this.#B.add(e),e}#G(){let e=oa();return this.#V.add(e),e}handleFrame(e){switch(e.type){case`hello`:e.protocolVersion!==1&&(this.protocolMismatch=`server speaks protocol v${e.protocolVersion}, this UI speaks v1`);return;case`event`:{this.#M=Math.max(this.#M,e.seq);let t=e.event;if(this.transcript=Ni(this.transcript,t,()=>Date.now(),e.seq),this.metrics=Ui(this.metrics,t,()=>Date.now()),t.type===`message_end`&&Vi(this.metrics.run)&&this.sessionPath){let e=this.#P;e&&(this.measuredOn=e),Qi(this.sessionPath,{...this.metrics.run,model:e})}t.type===`agent_settled`&&this.showDebug(),!this.#N&&this.transcript.messages.some(e=>e.role===`user`)&&(this.#N=!0,this.listSessions());return}case`extensionUi`:if(e.kind===`notify`){this.extensionNotes=[...this.extensionNotes.slice(-49),{message:e.message,level:e.level??`info`}];return}this.extensionDialog=e;return;case`mcpAuth`:this.mcpSignIn={name:e.name,url:e.url};return;case`result`:if(e.sessionPath){this.transcript=wi();let t=Zi(e.sessionPath);if(this.metrics={...Hi(),last:t},this.measuredOn=t?.model??null,this.#P=null,this.#M=0,this.conversationId=e.conversationId,this.sessionPath=e.sessionPath,this.extensionNotes=[],this.extensionDialog=void 0,this.interruptedAt=e.interrupted?.at,this.#N=this.sessions.some(t=>t.path===e.sessionPath),e.conversationId&&this.send({type:`resume`,conversationId:e.conversationId,afterSeq:0}),this.showDebug(),this.listSessions(),this.#F&&e.conversationId&&this.#F!==e.sessionPath){let t=this.#F;this.#F=void 0,this.request({type:`switchSession`,conversationId:e.conversationId,sessionPath:t,requestId:oa()})}}e.sessions&&(this.sessions=e.sessions),e.config&&(e.requestId&&this.#z.delete(e.requestId),this.config=e.config,this.configError=void 0,this.mcpStatus=void 0),e.debug&&(this.debug=e.debug,this.#R(Xi(e.debug))),e.scheduler&&(this.scheduler=e.scheduler),e.secrets&&(e.requestId&&this.#B.delete(e.requestId),this.secrets=e.secrets,this.secretsError=void 0),e.revealed&&(e.requestId&&this.#B.delete(e.requestId),this.revealed=e.revealed),e.memory&&(e.requestId&&this.#V.delete(e.requestId),this.memories=e.memory,this.memoryError=void 0),e.mcpStatus&&(e.requestId&&this.#z.delete(e.requestId),this.mcpStatus=e.mcpStatus,this.mcpChecking=!1,this.mcpSignIn=void 0,this.mcpSigningIn=!1),e.packages&&(e.requestId&&this.#z.delete(e.requestId),this.packages=e.packages,this.packagesBusy=!1,this.configError=void 0),this.#I.get(e.requestId)?.(e),this.#I.delete(e.requestId);return;case`error`:if(e.requestId&&this.#L.delete(e.requestId)){this.updateError=e.message,this.updateInstalling=!1;return}if(e.requestId&&this.#H.delete(e.requestId)){this.schedulerError=e.message;return}if(this.lastError=e.message,e.requestId&&this.#z.delete(e.requestId)){this.configError=e.message,this.mcpChecking=!1,this.mcpSignIn=void 0,this.mcpSigningIn=!1,this.packagesBusy=!1;return}e.requestId&&this.#B.delete(e.requestId)&&(this.secretsError=e.message,this.revealed=void 0),e.requestId&&this.#V.delete(e.requestId)&&(this.memoryError=e.message),this.conversationId&&e.conversationId===this.conversationId&&/^unknown conversation /.test(e.message)&&(this.#F=this.sessionPath,this.newSession());return}}},aa=0;function oa(){return`ui-${++aa}`}var sa=`flypi.theme`;function ca(){let e=document.documentElement.dataset.theme;return e===`light`||e===`dark`?e:null}function la(e){document.documentElement.dataset.theme=e;try{localStorage.setItem(sa,e)}catch{}}function ua(){let e=localStorage.getItem(sa);la(e===`light`||e===`dark`?e:matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`)}var da=W(`<span class="port">· new</span>`),fa=Er(`<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2m0 16v2M2 12h2m16 0h2M4.9 4.9l1.4 1.4m11.4 11.4 1.4 1.4m0-14.2-1.4 1.4M6.3 17.7l-1.4 1.4" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg>`),pa=Er(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M21 13.1A8.5 8.5 0 1 1 10.9 3a7.5 7.5 0 0 0 10.1 10.1Z" fill="currentColor"></path></svg>`),ma=W(`<p class="update error" data-role="update-error"> </p>`),ha=W(`<p class="update" data-role="update"> <button type="button" class="icon" data-role="install-update"> </button></p> <!>`,1),ga=W(`<input class="name current" placeholder="New session" aria-label="Session name"/>`),_a=W(`<button type="button" class="session"> </button>`),va=W(`<li><!> <button type="button" class="icon remove" title="Delete this session"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 7h16M9 7V4.5h6V7M6.5 7l.8 12.5h9.4L17.5 7M10.2 10.5v6m3.6-6v6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></li>`),ya=W(`<aside class="sidebar"><header class="panel-head"><img class="logo" alt=""/> <h1>flypi<!></h1></header> <div class="panel-actions"><button type="button" class="icon" aria-label="New session" title="New session"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5v14M5 12h14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg></button> <button type="button" class="icon"><!></button> <button type="button" class="icon" data-role="memory" aria-label="Memory" title="Memory — what is remembered, and why"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4.5 6.2h6.2c1 0 1.8.8 1.8 1.8v9.6c0-1 .8-1.8 1.8-1.8h5.2V6.2H4.5Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path><path d="M12.5 17.6c0-1 .8-1.8 1.8-1.8h5.2" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path></svg></button> <button type="button" class="icon" data-role="secrets" aria-label="Secrets" title="Secrets — the encrypted vault"><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="7.8" cy="7.8" r="3.6" fill="none" stroke="currentColor" stroke-width="1.8"></circle><path d="M10.4 10.4 19.5 19.5M15.4 15.4l2.4-2.4M12.9 12.9l2-2" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path></svg></button> <button type="button" class="icon" data-role="settings" aria-label="Model endpoints and MCP servers" title="Model endpoints and MCP servers"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 7h16M4 12h16M4 17h16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path><circle cx="9" cy="7" r="2" fill="currentColor"></circle><circle cx="15" cy="12" r="2" fill="currentColor"></circle><circle cx="11" cy="17" r="2" fill="currentColor"></circle></svg></button></div> <!> <ul class="sessions"></ul></aside>`);function ba(e,t){Ve(t,!0);let n=N(Kt(ca()??`light`));function r(){P(n,H(n)===`dark`?`light`:`dark`,!0),la(H(n))}function i(e){return e.name||e.firstMessage}function a(e){return i(e)||e.path}function o(e,n){let r=n.currentTarget.value.trim();r&&r!==e.trim()&&t.app.rename(r)}function s(e){t.app.deleteSession(e.path)}var c=ya(),l=F(c),u=F(l),d=R(u,2),f=R(F(d)),p=e=>{G(e,da())};q(f,e=>{t.app.sessionPath||e(p)}),A(d),A(l);var m=R(l,2),h=F(m),g=R(h,2),_=F(g),v=e=>{G(e,fa())},y=e=>{G(e,pa())};q(_,e=>{H(n)===`dark`?e(v):e(y,-1)}),A(g);var b=R(g,2),x=R(b,2),S=R(x,2);A(m);var ee=R(m,2),te=e=>{var n=ha(),r=I(n),i=F(r),a=R(i),o=L(a,!0);A(r);var s=R(r,2),c=e=>{var n=ma(),r=L(n,!0);z(()=>K(r,t.app.updateError)),G(e,n)};q(s,e=>{t.app.updateError&&e(c)}),z(()=>{K(i,`flypi ${t.update.version??``} ${t.update.ready?`is downloaded — it installs when nothing is running`:`is available`} `),a.disabled=t.app.updateInstalling,X(a,`title`,`Install ${t.update.version??``} now — the daemon restarts to run it`),K(o,t.app.updateInstalling?`installing…`:`install now`)}),U(`click`,a,()=>t.app.installUpdate()),G(e,n)};q(ee,e=>{t.update&&e(te)});var C=R(ee,2);J(C,21,()=>t.app.sessions,e=>e.path,(e,n)=>{var r=va(),c=F(r),l=e=>{var t=ga();Y(t),z(e=>mi(t,e),[()=>i(H(n))]),gr(`blur`,t,e=>o(i(H(n)),e)),U(`keydown`,t,e=>{e.key===`Enter`?o(i(H(n)),e):e.key===`Escape`&&(e.currentTarget.value=i(H(n)))}),G(e,t)},u=e=>{var r=_a(),i=L(r,!0);z(e=>K(i,e),[()=>a(H(n))]),U(`click`,r,()=>{t.app.openChat(),t.app.openSession(H(n).path)}),G(e,r)};q(c,e=>{H(n).path===t.app.sessionPath?e(l):e(u,-1)});var d=R(c,2);A(r),z(e=>X(d,`aria-label`,`Delete ${e??``}`),[()=>a(H(n))]),U(`click`,d,()=>s(H(n))),G(e,r)}),A(C),A(c),z(()=>{X(u,`src`,H(n)===`dark`?`/flypi-logo-dark.jpeg`:`/flypi-logo-light.jpeg`),X(g,`aria-label`,`Switch to ${H(n)===`dark`?`light`:`dark`} theme`),X(g,`title`,`Switch to ${H(n)===`dark`?`light`:`dark`} theme`),X(b,`aria-pressed`,t.app.view===`memory`),X(x,`aria-pressed`,t.app.view===`secrets`),X(S,`aria-pressed`,t.app.view===`settings`)}),U(`click`,h,()=>{t.app.openChat(),t.app.newSession()}),U(`click`,g,r),U(`click`,b,()=>t.app.toggleMemory()),U(`click`,x,()=>t.app.toggleSecrets()),U(`click`,S,()=>t.app.toggleSettings()),G(e,c),He()}_r([`click`,`keydown`]);var xa=4194304;function Sa(e){return e.mimeType.startsWith(`image/`)}function Ca(e){let t=new Uint8Array(e),n=``;for(let e=0;e<t.length;e+=32768)n+=String.fromCharCode(...t.subarray(e,e+32768));return btoa(n)}function wa(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Ta=wa();function Ea(e){Ta=e}var Da={exec:()=>null};function Oa(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),i=t[r];return i||(i=e(r),t[r]=i),i}}function Q(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(Aa.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var ka=((e=``)=>{try{return!!RegExp(`(?<=1)(?<!1)`+e)}catch{return!1}})(),Aa={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Oa(e=>RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Oa(e=>RegExp(`^ {0,${e}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:Oa(e=>RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:Oa(e=>RegExp(`^ {0,${e}}#`)),htmlBeginRegex:Oa(e=>RegExp(`^ {0,${e}}<(?:[a-z].*>|!--)`,`i`)),blockquoteBeginRegex:Oa(e=>RegExp(`^ {0,${e}}>`))},ja=/^(?:[ \t]*(?:\n|$))+/,Ma=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Na=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Pa=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Fa=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Ia=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,La=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Ra=Q(La).replace(/bull/g,Ia).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),za=Q(La).replace(/bull/g,Ia).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Ba=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,Va=/^[^\n]+/,Ha=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Ua=Q(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,Ha).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Wa=Q(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,Ia).getRegex(),Ga=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,Ka=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,qa=Q(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,Ka).replace(`tag`,Ga).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ja=e=>Q(Ba).replace(`hr`,Pa).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,e).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Ga).getRegex(),Ya=Ja(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),Xa=Ja(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),Za={blockquote:Q(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,Xa).getRegex(),code:Ma,def:Ua,fences:Na,heading:Fa,hr:Pa,html:qa,lheading:Ra,list:Wa,newline:ja,paragraph:Ya,table:Da,text:Va},Qa=Q(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,Pa).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Ga).getRegex(),$a={...Za,lheading:za,table:Qa,paragraph:Q(Ba).replace(`hr`,Pa).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,Qa).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Ga).getRegex()},eo={...Za,html:Q(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,Ka).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Da,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Q(Ba).replace(`hr`,Pa).replace(`heading`,` *#{1,6} *[^
|
|
4
|
-
]`).replace(`lheading`,Ra).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},to=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,no=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,ro=/^( {2,}|\\)\n(?!\s*$)/,io=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,ao=/[\p{P}\p{S}]/u,oo=/[\s\p{P}\p{S}]/u,so=/[^\s\p{P}\p{S}]/u,co=Q(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,oo).getRegex(),lo=/[\p{Pi}\p{Ps}"']/u,uo=/(?!~)[\p{P}\p{S}]/u,fo=/(?!~)[\s\p{P}\p{S}]/u,po=/(?:[^\s\p{P}\p{S}]|~)/u,mo=Q(/link|precode-code|html/,`g`).replace(`link`,/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,ka?"(?<!`)()":"(^^|[^`])").replace(`code`,/(?<b>`+)[^`]+\k<b>(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),ho=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,go=Q(ho,`u`).replace(/punct/g,ao).getRegex(),_o=Q(ho,`u`).replace(/punct/g,uo).getRegex(),vo=Q(/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,`u`).replace(/openQuote/g,lo).replace(/punct/g,ao).getRegex(),yo=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,bo=Q(yo,`gu`).replace(/notPunctSpace/g,so).replace(/punctSpace/g,oo).replace(/punct/g,ao).getRegex(),xo=Q(yo,`gu`).replace(/notPunctSpace/g,po).replace(/punctSpace/g,fo).replace(/punct/g,uo).getRegex(),So=Q(`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,so).replace(/punctSpace/g,oo).replace(/punct/g,ao).getRegex(),Co=Q(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,so).replace(/punctSpace/g,oo).replace(/punct/g,ao).getRegex(),wo=Q(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,so).replace(/punctSpace/g,oo).replace(/punct/g,ao).getRegex(),To=Q(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,ao).getRegex(),Eo=Q(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,so).replace(/punctSpace/g,oo).replace(/punct/g,ao).getRegex(),Do=Q(/\\(punct)/,`gu`).replace(/punct/g,ao).getRegex(),Oo=Q(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),ko=Q(Ka).replace(`(?:-->|$)`,`-->`).getRegex(),Ao=Q(`^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>`).replace(`comment`,ko).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),jo=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Mo=Q(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,jo).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),No=Q(/^!?\[(label)\]\[(ref)\]/).replace(`label`,jo).replace(`ref`,Ha).getRegex(),Po=Q(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,Ha).getRegex(),Fo=Q(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,No).replace(`nolink`,Po).getRegex(),Io=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Lo={_backpedal:Da,anyPunctuation:Do,autolink:Oo,blockSkip:mo,br:ro,code:no,del:Da,delLDelim:Da,delRDelim:Da,emStrongLDelim:go,emStrongRDelimAst:bo,emStrongRDelimUnd:Co,escape:to,link:Mo,nolink:Po,punctuation:co,reflink:No,reflinkSearch:Fo,tag:Ao,text:io,url:Da},Ro={...Lo,emStrongLDelim:vo,emStrongRDelimAst:So,emStrongRDelimUnd:wo,link:Q(/^!?\[(label)\]\((.*?)\)/).replace(`label`,jo).getRegex(),reflink:Q(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,jo).getRegex()},zo={...Lo,emStrongRDelimAst:xo,emStrongLDelim:_o,delLDelim:To,delRDelim:Eo,url:Q(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,Io).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Q(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace(`protocol`,Io).getRegex()},Bo={...zo,br:Q(ro).replace(`{2,}`,`*`).getRegex(),text:Q(zo.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},Vo={normal:Za,gfm:$a,pedantic:eo},Ho={normal:Lo,gfm:zo,breaks:Bo,pedantic:Ro},Uo={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`},Wo=e=>Uo[e];function Go(e,t){if(t){if(Aa.escapeTest.test(e))return e.replace(Aa.escapeReplace,Wo)}else if(Aa.escapeTestNoEncode.test(e))return e.replace(Aa.escapeReplaceNoEncode,Wo);return e}function Ko(e){try{e=encodeURI(e).replace(Aa.percentDecode,`%`)}catch{return null}return e}function qo(e,t){let n=e.replace(Aa.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(Aa.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t){if(n.length>t)n.splice(t);else for(;n.length<t;)n.push(``)}for(;r<n.length;r++)n[r]=n[r].trim().replace(Aa.slashPipe,`|`);return n}function Jo(e,t,n){let r=e.length;if(r===0)return``;let i=0;for(;i<r;){let a=e.charAt(r-i-1);if(a===t&&!n)i++;else if(a!==t&&n)i++;else break}return e.slice(0,r-i)}function Yo(e){let t=e.split(`
|
|
5
|
-
`),n=t.length-1;for(;n>=0&&Aa.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(`
|
|
6
|
-
`)}function Xo(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]===`\\`)r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function Zo(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function Qo(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`),c=e[0].charAt(0)===`!`;r.state.inLink=!0;let l=r.state.linkEmitted,u=r.state.inRawBlock;r.state.linkEmitted=!1;let d=r.inlineTokens(s),f=r.state.linkEmitted;if(r.state.linkEmitted=l,r.state.inLink=!1,!c){if(f){r.state.inRawBlock=u;return}r.state.linkEmitted=!0}return{type:c?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:d}}function $o(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(`
|
|
7
|
-
`).map(e=>{let t=e.match(n.other.beginningSpace);if(t===null)return e;let[r]=t;return r.length>=i.length?e.slice(i.length):e}).join(`
|
|
8
|
-
`)}var es=class{options;rules;lexer;constructor(e){this.options=e||Ta}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:`space`,raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=this.options.pedantic?t[0]:Yo(t[0]);return{type:`code`,raw:e,codeBlockStyle:`indented`,text:e.replace(this.rules.other.codeRemoveIndent,``)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=$o(e,t[3]||``,this.rules);return{type:`code`,raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,`$1`):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=Jo(e,`#`);(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:`heading`,raw:Jo(t[0],`
|
|
9
|
-
`),depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:`hr`,raw:Jo(t[0],`
|
|
10
|
-
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=Jo(t[0],`
|
|
11
|
-
`).split(`
|
|
12
|
-
`),n=``,r=``,i=[];for(;e.length>0;){let t=!1,a=[],o=0;for(;o<e.length;o++)if(this.rules.other.blockquoteStart.test(e[o]))a.push(e[o]),t=!0;else if(!t)a.push(e[o]);else break;e=e.slice(o);let s=a.join(`
|
|
13
|
-
`),c=s.replace(this.rules.other.blockquoteSetextReplace,`
|
|
14
|
-
$1`).replace(this.rules.other.blockquoteSetextReplace2,``);n=n?`${n}
|
|
15
|
-
${s}`:s,r=r?`${r}
|
|
16
|
-
${c}`:c;let l=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,i,!0),this.lexer.state.top=l,e.length===0)break;let u=i.at(-1);if(u?.type===`code`)break;if(u?.type===`blockquote`){let t=u,a=e.join(`
|
|
17
|
-
`),o=t.raw+`
|
|
18
|
-
`+a.replace(this.rules.other.blockquoteSetextReplace2,``),s=this.blockquote(o);i[i.length-1]=s,n=`${n}
|
|
19
|
-
${a}`,r=r.substring(0,r.length-t.text.length)+s.text;break}if(u?.type===`list`){let t=u,a=t.raw+`
|
|
20
|
-
`+e.join(`
|
|
21
|
-
`),o=this.list(a);i[i.length-1]=o,n=n.substring(0,n.length-u.raw.length)+o.raw,r=r.substring(0,r.length-t.raw.length)+o.raw,e=a.substring(i.at(-1).raw.length).split(`
|
|
22
|
-
`);continue}}return{type:`blockquote`,raw:n,tokens:i,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:`list`,raw:``,ordered:r,start:r?+n.slice(0,-1):``,loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:`[*+-]`);let a=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r=``,s=``;if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=Zo(t[2].split(`
|
|
23
|
-
`,1)[0],t[1].length),l=e.split(`
|
|
24
|
-
`,1)[0],u=!c.trim(),d=0;if(this.options.pedantic?(d=2,s=c.trimStart()):u?d=t[1].length+1:(d=c.search(this.rules.other.nonSpaceChar),d=d>4?1:d,s=c.slice(d),d+=t[1].length),u&&this.rules.other.blankLine.test(l)&&(r+=l+`
|
|
25
|
-
`,e=e.substring(l.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(d),n=this.rules.other.hrRegex(d),i=this.rules.other.fencesBeginRegex(d),a=this.rules.other.headingBeginRegex(d),o=this.rules.other.htmlBeginRegex(d),f=this.rules.other.blockquoteBeginRegex(d);for(;e;){let p=e.split(`
|
|
26
|
-
`,1)[0],m;if(l=p,this.options.pedantic?(l=l.replace(this.rules.other.listReplaceNesting,` `),m=l):m=l.replace(this.rules.other.tabCharGlobal,` `),i.test(l)||a.test(l)||o.test(l)||f.test(l)||t.test(l)||n.test(l))break;if(m.search(this.rules.other.nonSpaceChar)>=d||!l.trim())s+=`
|
|
27
|
-
`+m.slice(d);else{if(u||c.replace(this.rules.other.tabCharGlobal,` `).search(this.rules.other.nonSpaceChar)>=4||i.test(c)||a.test(c)||n.test(c))break;s+=`
|
|
28
|
-
`+l}u=!l.trim(),r+=p+`
|
|
29
|
-
`,e=e.substring(p.length+1),c=m.slice(d)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0)),i.items.push({type:`list_item`,raw:r,task:!!this.options.gfm&&this.rules.other.listIsTask.test(s),loose:!1,text:s,tokens:[]}),i.raw+=r}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let e of i.items)if(this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]),!i.loose){let t=e.tokens.filter(e=>e.type===`space`);i.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}for(let e of i.items){let t=e.tokens[0];if(e.task&&(t?.type===`text`||t?.type===`paragraph`)){e.text=e.text.replace(this.rules.other.listReplaceTask,``),t.raw=t.raw.replace(this.rules.other.listReplaceTask,``),t.text=t.text.replace(this.rules.other.listReplaceTask,``);for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,``);break}let n=this.rules.other.listTaskCheckbox.exec(e.raw);if(n){let t={type:`checkbox`,raw:n[0]+` `,checked:n[0]!==`[ ]`};e.checked=t.checked,i.loose?e.tokens[0]&&[`paragraph`,`text`].includes(e.tokens[0].type)&&`tokens`in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=t.raw+e.tokens[0].raw,e.tokens[0].text=t.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(t)):e.tokens.unshift({type:`paragraph`,raw:t.raw,text:t.raw,tokens:[t]}):e.tokens.unshift(t)}}else e.task&&=!1}if(i.loose)for(let e of i.items){e.loose=!0;for(let t of e.tokens)t.type===`text`&&(t.type=`paragraph`)}return i}}html(e){let t=this.rules.block.html.exec(e);if(t){let e=Yo(t[0]);return{type:`html`,block:!0,raw:e,pre:t[1]===`pre`||t[1]===`script`||t[1]===`style`,text:e}}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,` `),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,`$1`).replace(this.rules.inline.anyPunctuation,`$1`):``,r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,`$1`):t[3];return{type:`def`,tag:e,raw:Jo(t[0],`
|
|
30
|
-
`),href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=qo(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,``).split(`|`),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,``).split(`
|
|
31
|
-
`):[],a={type:`table`,raw:Jo(t[0],`
|
|
32
|
-
`),header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?a.align.push(`right`):this.rules.other.tableAlignCenter.test(e)?a.align.push(`center`):this.rules.other.tableAlignLeft.test(e)?a.align.push(`left`):a.align.push(null);for(let e=0;e<n.length;e++)a.header.push({text:n[e],tokens:this.lexer.inline(n[e]),header:!0,align:a.align[e]});for(let e of i)a.rows.push(qo(e,a.header.length).map((e,t)=>({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[t]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let e=t[1].trim();return{type:`heading`,raw:Jo(t[0],`
|
|
33
|
-
`),depth:t[2].charAt(0)===`=`?1:2,text:e,tokens:this.lexer.inline(e)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e=t[1].charAt(t[1].length-1)===`
|
|
34
|
-
`?t[1].slice(0,-1):t[1];return{type:`paragraph`,raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:`text`,raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:`escape`,raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:`html`,raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=Jo(e.slice(0,-1),`\\`);if((e.length-t.length)%2==0)return}else{let e=Xo(t[2],`()`);if(e===-2)return;if(e>-1){let n=(t[0].indexOf(`!`)===0?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=``}}let n=t[2],r=``;if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):``;return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),Qo(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,`$1`),title:r&&r.replace(this.rules.inline.anyPunctuation,`$1`)},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,` `).toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:`text`,raw:e,text:e}}return Qo(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=``){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let i=[...r[0]].length-1,a,o,s=i,c=0,l=r[0][0],u=n===l,d=l===`*`?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(d.lastIndex=0,t=t.slice(-1*e.length+i);(r=d.exec(t))!==null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){s+=o;continue}if(r[5]||r[6]){if(i%3&&!((i+o)%3)){c+=o;continue}if(u)break}if(s-=o,s>0)continue;o=Math.min(o,o+s+c);let t=[...r[0]][0].length,n=e.slice(0,i+r.index+t+o);if(Math.min(i,o)%2){let e=n.slice(1,-1);return{type:`em`,raw:n,text:e,tokens:this.lexer.inlineTokens(e)}}let l=n.slice(2,-2);return{type:`strong`,raw:n,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal,` `),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:`codespan`,raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:`br`,raw:t[0]}}del(e,t,n=``){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=this.rules.inline.delRDelim;for(s.lastIndex=0,t=t.slice(-1*e.length+n);(r=s.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(a=[...i].length,a!==n))continue;if(r[3]||r[4]){o+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o);let t=[...r[0]][0].length,s=e.slice(0,n+r.index+t+a),c=s.slice(n,-n);return{type:`del`,raw:s,text:c,tokens:this.lexer.inlineTokens(c)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return t[2]===`@`?(e=t[1],n=`mailto:`+e):(e=t[1],n=e),{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if(t[2]===`@`)e=t[0],n=`mailto:`+e;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??``;while(r!==t[0]);e=t[0],n=t[1]===`www.`?`http://`+t[0]:t[0]}return{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:`text`,raw:t[0],text:t[0],escaped:e}}}},ts=class e{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Ta,this.options.tokenizer=this.options.tokenizer||new es,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:Aa,block:Vo.normal,inline:Ho.normal};this.options.pedantic?(t.block=Vo.pedantic,t.inline=Ho.pedantic):this.options.gfm&&(t.block=Vo.gfm,t.inline=this.options.breaks?Ho.breaks:Ho.gfm),this.tokenizer.rules=t}static get rules(){return{block:Vo,inline:Ho}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(Aa.carriageReturn,`
|
|
35
|
-
`),this.blockTokens(e,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let t=this.inlineQueue[e];this.inlineTokens(t.src,t.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(Aa.tabCharGlobal,` `).replace(Aa.spaceLine,``));let r=1/0;for(;e;){if(e.length<r)r=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let i;if(this.options.extensions?.block?.some(n=>(i=n.call({lexer:this},e,t))?(e=e.substring(i.raw.length),t.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let n=t.at(-1);i.raw.length===1&&n!==void 0?n.raw+=`
|
|
36
|
-
`:t.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(`
|
|
37
|
-
`)?``:`
|
|
38
|
-
`)+i.raw,n.text+=`
|
|
39
|
-
`+i.text,this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(`
|
|
40
|
-
`)?``:`
|
|
41
|
-
`)+i.raw,n.text+=`
|
|
42
|
-
`+i.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},t.push(i));continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),t.push(i);continue}let a=e;if(this.options.extensions?.startBlock){let t=1/0,n=e.slice(1),r;this.options.extensions.startBlock.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(a=e.substring(0,t+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let r=t.at(-1);n&&r?.type===`paragraph`?(r.raw+=(r.raw.endsWith(`
|
|
43
|
-
`)?``:`
|
|
44
|
-
`)+i.raw,r.text+=`
|
|
45
|
-
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):t.push(i),n=a.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`text`?(n.raw+=(n.raw.endsWith(`
|
|
46
|
-
`)?``:`
|
|
47
|
-
`)+i.raw,n.text+=`
|
|
48
|
-
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes(`[`))return!1;let t=this.tokenizer.rules.inline.link;for(let n of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(n[0])&&e.charAt(n.index-1)!==`!`)return!0;for(let t of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let e=t[0],n=e.lastIndexOf(`[`);if(e.charAt(0)!==`!`&&Object.hasOwn(this.tokens.links,e.slice(n+1,-1))&&!(n>1&&this.linkInText(e.slice(1,n-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e;if(this.tokens.links&&e.includes(`[`)){let e=this.tokenizer.rules.inline.reflinkSearch,t=n=>{let r=n.lastIndexOf(`[`);if(!Object.hasOwn(this.tokens.links,n.slice(r+1,-1)))return n;if(r>1&&n.charAt(0)!==`!`){let i=n.slice(1,r-1);if(this.linkInText(i))return`[`+i.replace(e,t)+`][`+`a`.repeat(n.length-r-2)+`]`}return`[`+`a`.repeat(n.length-2)+`]`};n=n.replace(e,t)}n=n.replace(this.tokenizer.rules.inline.anyPunctuation,e=>`+`.repeat(e.length)),n=n.replace(this.tokenizer.rules.inline.blockSkip,(e,t,n)=>{let r=n?n.length:0;return e.slice(0,r)+`[`+`a`.repeat(e.length-r-2)+`]`}),n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let r=!1,i=``,a=1/0;for(;e;){if(e.length<a)a=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}r||(i=``),r=!1;let o;if(this.options.extensions?.inline?.some(n=>(o=n.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let n=t.at(-1);o.type===`text`&&n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,i)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e,n,i)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let s=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(s=e.substring(0,t+1))}if(o=this.tokenizer.inlineText(s)){e=e.substring(o.raw.length),o.raw.slice(-1)!==`_`&&(i=o.raw.slice(-1)),r=!0;let n=t.at(-1);n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t=`Infinite loop on byte: `+e;if(this.options.silent)console.error(t);else throw Error(t)}},ns=class{options;parser;constructor(e){this.options=e||Ta}space(e){return``}code({text:e,lang:t,escaped:n}){let r=(t||``).match(Aa.notSpaceStart)?.[0],i=e.replace(Aa.endingNewline,``)+`
|
|
49
|
-
`;return r?`<pre><code class="language-`+Go(r)+`">`+(n?i:Go(i,!0))+`</code></pre>
|
|
50
|
-
`:`<pre><code>`+(n?i:Go(i,!0))+`</code></pre>
|
|
51
|
-
`}blockquote({tokens:e}){return`<blockquote>
|
|
52
|
-
${this.parser.parse(e)}</blockquote>
|
|
53
|
-
`}html({text:e}){return e}def(e){return``}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
|
|
54
|
-
`}hr(e){return`<hr>
|
|
55
|
-
`}list(e){let t=e.ordered,n=e.start,r=``;for(let t=0;t<e.items.length;t++){let n=e.items[t];r+=this.listitem(n)}let i=t?`ol`:`ul`,a=t&&n!==1?` start="`+n+`"`:``;return`<`+i+a+`>
|
|
56
|
-
`+r+`</`+i+`>
|
|
57
|
-
`}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>
|
|
58
|
-
`}checkbox({checked:e}){return`<input `+(e?`checked="" `:``)+`disabled="" type="checkbox"> `}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>
|
|
59
|
-
`}table(e){let t=``,n=``;for(let t=0;t<e.header.length;t++)n+=this.tablecell(e.header[t]);t+=this.tablerow({text:n});let r=``;for(let t=0;t<e.rows.length;t++){let i=e.rows[t];n=``;for(let e=0;e<i.length;e++)n+=this.tablecell(i[e]);r+=this.tablerow({text:n})}return r&&=`<tbody>${r}</tbody>`,`<table>
|
|
60
|
-
<thead>
|
|
61
|
-
`+t+`</thead>
|
|
62
|
-
`+r+`</table>
|
|
63
|
-
`}tablerow({text:e}){return`<tr>
|
|
64
|
-
${e}</tr>
|
|
65
|
-
`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
|
|
66
|
-
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Go(e,!0)}</code>`}br(e){return`<br>`}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=Ko(e);if(i===null)return r;e=i;let a=`<a href="`+e+`"`;return t&&(a+=` title="`+Go(t)+`"`),a+=`>`+r+`</a>`,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=Ko(e);if(i===null)return Go(n);e=i;let a=`<img src="${e}" alt="${Go(n)}"`;return t&&(a+=` title="${Go(t)}"`),a+=`>`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:Go(e.text)}},rs=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},is=class e{options;renderer;textRenderer;constructor(e){this.options=e||Ta,this.options.renderer=this.options.renderer||new ns,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new rs}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let e=r,n=this.options.extensions.renderers[e.type].call({parser:this},e);if(n!==!1||![`space`,`hr`,`heading`,`code`,`table`,`blockquote`,`list`,`checkbox`,`html`,`def`,`paragraph`,`text`].includes(e.type)){t+=n||``;continue}}let i=r;switch(i.type){case`space`:t+=this.renderer.space(i);break;case`hr`:t+=this.renderer.hr(i);break;case`heading`:t+=this.renderer.heading(i);break;case`code`:t+=this.renderer.code(i);break;case`table`:t+=this.renderer.table(i);break;case`blockquote`:t+=this.renderer.blockquote(i);break;case`list`:t+=this.renderer.list(i);break;case`checkbox`:t+=this.renderer.checkbox(i);break;case`html`:t+=this.renderer.html(i);break;case`def`:t+=this.renderer.def(i);break;case`paragraph`:t+=this.renderer.paragraph(i);break;case`text`:t+=this.renderer.text(i);break;default:{let e=`Token with "`+i.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let e=this.options.extensions.renderers[i.type].call({parser:this},i);if(e!==!1||![`escape`,`html`,`link`,`image`,`checkbox`,`strong`,`em`,`codespan`,`br`,`del`,`text`].includes(i.type)){n+=e||``;continue}}let a=i;switch(a.type){case`escape`:n+=t.text(a);break;case`html`:n+=t.html(a);break;case`link`:n+=t.link(a);break;case`image`:n+=t.image(a);break;case`checkbox`:n+=t.checkbox(a);break;case`strong`:n+=t.strong(a);break;case`em`:n+=t.em(a);break;case`codespan`:n+=t.codespan(a);break;case`br`:n+=t.br(a);break;case`del`:n+=t.del(a);break;case`text`:n+=t.text(a);break;default:{let e=`Token with "`+a.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return n}},as=class{options;block;constructor(e){this.options=e||Ta}static passThroughHooks=new Set([`preprocess`,`postprocess`,`processAllTokens`,`emStrongMask`]);static passThroughHooksRespectAsync=new Set([`preprocess`,`postprocess`,`processAllTokens`]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?ts.lex:ts.lexInline}provideParser(e=this.block){return e?is.parse:is.parseInline}},os=new class{defaults=wa();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=is;Renderer=ns;TextRenderer=rs;Lexer=ts;Tokenizer=es;Hooks=as;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case`table`:{let e=r;for(let r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case`list`:{let e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(r=>{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new ns(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new es(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new as;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];t[r]=as.passThroughHooks.has(n)?e=>{if(this.defaults.async&&as.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return ts.lex(e,t??this.defaults)}parser(e,t){return is.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?ts.lex:ts.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?is.parse:is.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?ts.lex:ts.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?is.parse:is.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=`
|
|
67
|
-
Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+Go(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function $(e,t){return os.parse(e,t)}$.options=$.setOptions=function(e){return os.setOptions(e),$.defaults=os.defaults,Ea($.defaults),$},$.getDefaults=wa,$.defaults=Ta;function ss(...e){return os.use(...e),$.defaults=os.defaults,Ea($.defaults),$}$.use=ss,$.walkTokens=function(e,t){return os.walkTokens(e,t)},$.parseInline=os.parseInline,$.Parser=is,$.parser=is.parse,$.Renderer=ns,$.TextRenderer=rs,$.Lexer=ts,$.lexer=ts.lex,$.Tokenizer=es,$.Hooks=as,$.parse=$,$.options,$.setOptions,$.walkTokens,$.parseInline,is.parse,ts.lex,$.setOptions({gfm:!0,breaks:!1});function cs(e){return $.parse(e.replace(/</g,`<`),{async:!1}).replace(/href=["']\s*(?:javascript|data|vbscript):/gi,`href="#blocked:`)}var ls=(e,t=d)=>{var n=Or();J(I(n),17,t,Rr,(e,t)=>{var n=Or(),r=I(n),i=e=>{var n=us();qr(n,()=>cs(H(t).text),!0),A(n),G(e,n)},a=e=>{var n=ds();z(()=>X(n,`src`,`data:${H(t).mimeType};base64,${H(t).data}`)),G(e,n)};q(r,e=>{H(t).kind===`text`?e(i):H(t).kind===`image`&&e(a,1)}),G(e,n)}),G(e,n)},us=W(`<div class="markdown"></div>`),ds=W(`<img class="attachment-image" alt="attachment" loading="lazy"/>`),fs=W(`<p class="error" role="alert" data-role="protocol"> </p>`),ps=W(`<p class="error" role="alert"> </p>`),ms=W(`<p class="notice" role="status" data-role="interrupted"> </p>`),hs=W(`<span class="usage" data-role="usage"> </span>`),gs=W(`<button type="button" class="icon fork" aria-label="Fork from this answer" title="Fork this session from this answer"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 3v12m0 6a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm12-18a3 3 0 1 0 0 6 3 3 0 0 0 0-6Zm0 6a9 9 0 0 1-9 9" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg></button>`),_s=W(`<li class="msg"><span class="role"> </span> <!> <!> <!></li>`),vs=W(`<li class="msg streaming"><span class="role"> </span> <!></li>`),ys=W(`<li class="queued"> </li>`),bs=W(`<ul class="queue" aria-label="Queued messages"></ul>`),xs=W(`<li class="extension-note"> </li>`),Ss=W(`<ul class="extension-output" aria-label="Extension output" data-role="extension-output"></ul>`),Cs=W(`<button type="button" class="choice" data-role="extension-choice"> </button>`),ws=W(`<button type="button" class="choice" data-role="extension-yes">Yes</button>`),Ts=W(`<form class="answer-input"><input aria-label="Answer"/> <button type="submit" data-role="extension-submit">Answer</button></form>`),Es=W(`<div class="extension-dialog" role="group" data-role="extension-dialog"><p class="ask"> </p> <div class="answers"><!> <!> <!> <button type="button" class="cancel" data-role="extension-cancel">Cancel</button></div></div>`),Ds=W(`<option selected=""> </option>`),Os=W(`<option> </option>`),ks=W(`<img class="thumb" alt=""/>`),As=W(`<li class="attachment"><!> <span class="name"> </span> <button type="button" class="remove">✕</button></li>`),js=W(`<ul class="attachments" aria-label="Attached files"></ul>`),Ms=W(`<p class="error" role="alert" data-role="attachment"> </p>`),Ns=W(`<span class="desc"> </span>`),Ps=W(`<li><button type="button" class="command" data-role="command"> <!></button></li>`),Fs=W(`<ul class="commands" aria-label="Slash commands" data-role="commands"></ul>`),Is=W(`<label class="followup"><input type="checkbox"/> follow up</label> <button type="button" class="stop">Stop</button>`,1),Ls=W(`<span class="offline">reconnecting…</span>`),Rs=W(`<dialog class="cfg-modal" data-role="no-endpoint" aria-label="No model endpoint configured"><h3>No model endpoint configured</h3> <p class="cfg-note">flypi has no built-in default model, so a new conversation cannot start yet.</p> <div class="cfg-actions"><a href="/settings" data-role="no-endpoint-settings">Open the settings page</a> <button type="button" data-role="no-endpoint-dismiss">Not now</button></div></dialog>`),zs=W(`<section class="chat" aria-label="Chat"><!> <!> <!> <ol class="messages"><!> <!></ol> <!> <!> <!> <div class="picker"><label class="field">Model <select class="model"><!><!></select></label> <label class="field">Thinking <select class="thinking-level"></select></label></div> <form class="composer"><!> <!> <textarea rows="3" aria-label="Prompt"></textarea> <!> <div class="controls"><button type="submit">Send</button> <!> <!> <div class="metrics" role="group" aria-label="Live model metrics"><div class="gauge" role="meter" aria-label="Context window used"><svg viewBox="0 0 20 20" aria-hidden="true"><circle class="track" cx="10" cy="10" r="7" pathLength="100"></circle><circle class="fill" cx="10" cy="10" r="7" pathLength="100"></circle></svg></div> <span class="metric" data-role="context"> </span> <span class="metric" data-role="decode">decode <b> </b></span> <span class="metric" data-role="prefill">prefill <b> </b></span></div></div></form> <!></section>`);function Bs(e,t){Ve(t,!0);let n=N(``),r=N(!1),i=j(()=>[...t.app.transcript.queue.steering,...t.app.transcript.queue.followUp]),a=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`];function o(e){let[n=``,...r]=e.currentTarget.value.split(`/`);t.app.setModel(n,r.join(`/`))}function s(e){return e.blocks.filter(e=>e.kind===`text`||e.kind===`image`)}function c(){let e=H(n).trim();(e||H(l).length)&&(t.app.prompt(e,t.app.transcript.running&&H(r)?`followUp`:`steer`,H(l)),P(n,``),P(l,[],!0))}let l=N(Kt([])),u=N(``),d=j(()=>t.app.debug?.model?.input.includes(`image`)??!0);async function f(e){P(u,``);for(let n of e){if(H(l).length>=8){P(u,`at most 8 attachments`);return}if(n.size>4194304){P(u,`${n.name} is over ${Math.floor(xa/1024/1024)} MB`);continue}if(!H(d)&&Sa({mimeType:n.type})){P(u,`${n.name}: ${t.app.debug?.model?.modelId??`this model`} has no image input`);continue}H(l).push({name:n.name||`pasted`,mimeType:n.type||`application/octet-stream`,data:Ca(await n.arrayBuffer())})}}function p(e){let t=[...e.clipboardData?.files??[]];t.length&&(e.preventDefault(),f(t))}function m(e){e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),c())}let h=N(void 0),g=N(!0),_=j(()=>H(n).startsWith(`/`)?(t.app.debug?.commands??[]).filter(e=>e.name.startsWith(H(n).slice(1).split(/\s/)[0])).slice(0,8):[]),v=N(``);function y(){H(h)&&P(g,H(h).scrollHeight-H(h).scrollTop-H(h).clientHeight<40)}hn(()=>{t.app.transcript,H(h)&&H(g)&&(H(h).scrollTop=H(h).scrollHeight)});let b=N(0);hn(()=>{if(!t.app.metrics.live)return;P(b,Date.now(),!0);let e=setInterval(()=>P(b,Date.now(),!0),500);return()=>clearInterval(e)});let x=j(()=>Wi(t.app.metrics,H(b))),S=j(()=>t.app.debug?.context),ee=j(()=>H(S)?.percent??null),te=j(()=>!H(S)||H(S).tokens===null?`context unknown`:`${Fi(H(S).tokens)} / ${Fi(H(S).contextWindow)} in context · ${Math.round(H(S).percent??0)}%`);function C(e){return e===null?`—`:`${Ji(e)} tok/s`}let ne=j(()=>t.app.measuredOn?`measured on ${t.app.measuredOn} in this chat`:`measured in this chat`),w=j(()=>!!t.app.config&&t.app.config.endpoints.length===0&&!t.app.config.defaults.provider),T=N(!1);function re(e){return e.showModal(),{destroy:()=>e.close()}}var ie=zs(),ae=F(ie),oe=e=>{var n=fs(),r=L(n,!0);z(()=>K(r,t.app.protocolMismatch)),G(e,n)};q(ae,e=>{t.app.protocolMismatch&&e(oe)});var se=R(ae,2),ce=e=>{var n=ps(),r=L(n,!0);z(()=>K(r,t.app.lastError)),G(e,n)};q(se,e=>{t.app.lastError&&e(ce)});var le=R(se,2),ue=e=>{var n=ms(),r=L(n);z(()=>K(r,`The turn in this chat was interrupted when flypi stopped (${t.app.interruptedAt??``}). It is not re-run: its
|
|
68
|
-
tools may already have written to the world.`)),G(e,n)};q(le,e=>{t.app.interruptedAt&&e(ue)});var de=R(le,2),fe=F(de);J(fe,17,()=>t.app.transcript.messages,Rr,(e,n)=>{var r=Or(),i=I(r),a=e=>{var r=_s(),i=F(r),a=L(i,!0),o=R(i,2),c=e=>{var t=hs(),r=L(t,!0);z(e=>K(r,e),[()=>Ii(H(n).usage)]),G(e,t)};q(o,e=>{H(n).usage&&e(c)});var l=R(o,2);{let e=j(()=>s(H(n)));ls(l,()=>H(e))}var u=R(l,2),d=e=>{var r=gs();U(`click`,r,()=>t.app.fork(H(n).seq)),G(e,r)};q(u,e=>{H(n).role===`assistant`&&H(n).seq&&e(d)}),A(r),z(()=>{X(r,`data-role`,H(n).role),K(a,H(n).role)}),G(e,r)},o=j(()=>s(H(n)).length);q(i,e=>{H(o)&&e(a)}),G(e,r)});var E=R(fe,2),pe=e=>{var n=vs(),r=F(n),i=L(r,!0),a=R(r,2);{let e=j(()=>s(t.app.transcript.streaming));ls(a,()=>H(e))}A(n),z(()=>{X(n,`data-role`,t.app.transcript.streaming.role),K(i,t.app.transcript.streaming.role)}),G(e,n)},me=j(()=>t.app.transcript.streaming&&s(t.app.transcript.streaming).length);q(E,e=>{H(me)&&e(pe)}),A(de),Si(de,e=>P(h,e),()=>H(h));var he=R(de,2),ge=e=>{var t=bs();J(t,21,()=>H(i),Rr,(e,t)=>{var n=ys(),r=L(n,!0);z(()=>K(r,H(t))),G(e,n)}),A(t),G(e,t)};q(he,e=>{H(i).length&&e(ge)});var _e=R(he,2),ve=e=>{var n=Ss();J(n,21,()=>t.app.extensionNotes,Rr,(e,t)=>{var n=xs(),r=L(n,!0);z(()=>{X(n,`data-level`,H(t).level),K(r,H(t).message)}),G(e,n)}),A(n),G(e,n)};q(_e,e=>{t.app.extensionNotes.length&&e(ve)});var ye=R(_e,2),D=e=>{let n=j(()=>t.app.extensionDialog);var r=Es(),i=F(r),a=L(i,!0),o=R(i,2),s=F(o);J(s,17,()=>H(n).options??[],Rr,(e,r)=>{var i=Cs(),a=L(i,!0);z(()=>K(a,H(r))),U(`click`,i,()=>t.app.answerExtension(H(n).dialogId,H(r))),G(e,i)});var c=R(s,2),l=e=>{var r=ws();U(`click`,r,()=>t.app.answerExtension(H(n).dialogId,`yes`)),G(e,r)};q(c,e=>{H(n).kind===`confirm`&&e(l)});var u=R(c,2),d=e=>{var r=Ts(),i=F(r);Y(i),Se(2),A(r),z(()=>X(i,`placeholder`,H(n).message)),gr(`submit`,r,e=>{e.preventDefault(),t.app.answerExtension(H(n).dialogId,H(v)),P(v,``)}),Z(i,()=>H(v),e=>P(v,e)),G(e,r)};q(u,e=>{H(n).kind===`input`&&e(d)});var f=R(u,2);A(o),A(r),z(e=>{X(r,`aria-label`,H(n).title||`Extension question`),K(a,e)},[()=>[H(n).title,H(n).message].filter(Boolean).join(` — `)]),U(`click`,f,()=>t.app.answerExtension(H(n).dialogId,null)),G(e,r)};q(ye,e=>{t.app.extensionDialog&&e(D)});var be=R(ye,2),O=F(be),k=R(F(O)),xe=F(k),Ce=e=>{var n=Ds(),r=L(n),i={};z(()=>{K(r,`${t.app.debug.model.modelId??``} (current)`),i!==(i=`${t.app.debug.model.provider}/${t.app.debug.model.modelId}`)&&(n.value=n.__value=i)}),G(e,n)};q(xe,e=>{t.app.debug?.model&&e(Ce)}),J(R(xe),17,()=>t.app.debug?.models??[],Rr,(e,t)=>{var n=Os(),r=L(n),i={};z(()=>{K(r,`${H(t).provider??``}/${H(t).modelId??``}`),i!==(i=`${H(t).provider}/${H(t).modelId}`)&&(n.value=n.__value=i)}),G(e,n)}),A(k),A(O);var we=R(O,2),Te=R(F(we));J(Te,21,()=>a,Rr,(e,n)=>{var r=Os(),i=L(r,!0),a={};z(()=>{ri(r,t.app.debug?.thinkingLevel===H(n)),K(i,H(n)),a!==(a=H(n))&&(r.value=(r.__value=a)??``)}),G(e,r)}),A(Te),A(we),A(be);var Ee=R(be,2),De=F(Ee),Oe=e=>{var t=js();J(t,21,()=>H(l),Rr,(e,t,n)=>{var r=As(),i=F(r),a=e=>{var n=ks();z(()=>X(n,`src`,`data:${H(t).mimeType};base64,${H(t).data}`)),G(e,n)},o=j(()=>Sa(H(t)));q(i,e=>{H(o)&&e(a)});var s=R(i,2),c=L(s,!0),u=R(s,2);A(r),z(()=>{K(c,H(t).name),X(u,`aria-label`,`Remove ${H(t).name}`)}),U(`click`,u,()=>H(l).splice(n,1)),G(e,r)}),A(t),G(e,t)};q(De,e=>{H(l).length&&e(Oe)});var ke=R(De,2),Ae=e=>{var t=Ms(),n=L(t,!0);z(()=>K(n,H(u))),G(e,t)};q(ke,e=>{H(u)&&e(Ae)});var je=R(ke,2);$e(je);var Me=R(je,2),Ne=e=>{var t=Fs();J(t,21,()=>H(_),Rr,(e,t)=>{var r=Ps(),i=F(r),a=F(i),o=R(a),s=e=>{var n=Ns(),r=L(n,!0);z(()=>K(r,H(t).description)),G(e,n)};q(o,e=>{H(t).description&&e(s)}),A(i),A(r),z(()=>{X(i,`title`,H(t).source),K(a,`/${H(t).name??``} `)}),U(`click`,i,()=>P(n,`/${H(t).name} `)),G(e,r)}),A(t),G(e,t)};q(Me,e=>{H(_).length&&e(Ne)});var Pe=R(Me,2),Fe=R(F(Pe),2),Ie=e=>{var n=Is(),i=I(n),a=F(i);Y(a),Se(),A(i);var o=R(i,2);vi(a,()=>H(r),e=>P(r,e)),U(`click`,o,()=>t.app.abort()),G(e,n)};q(Fe,e=>{t.app.transcript.running&&e(Ie)});var Le=R(Fe,2),Re=e=>{G(e,Ls())};q(Le,e=>{t.app.connected||e(Re)});var ze=R(Le,2),Be=F(ze);X(Be,`aria-valuemin`,0),X(Be,`aria-valuemax`,100);var Ue=F(Be),We=R(F(Ue));A(Ue),A(Be);var Ge=R(Be,2),Ke=L(Ge,!0),qe=R(Ge,2),Je=L(R(F(qe)),!0);A(qe);var Ye=R(qe,2),Xe=L(R(F(Ye)),!0);A(Ye),A(ze),A(Pe),A(Ee);var Ze=R(Ee,2),Qe=e=>{var n=Rs(),r=R(F(n),4),i=F(r),a=R(i,2);A(r),A(n),Jr(n,e=>re?.(e)),gr(`close`,n,()=>P(T,!0)),U(`click`,i,e=>{e.preventDefault(),t.app.openSettings()}),U(`click`,a,()=>P(T,!0)),G(e,n)};q(Ze,e=>{H(w)&&!H(T)&&e(Qe)}),A(ie),z((e,n,r,i)=>{X(je,`placeholder`,t.app.transcript.running?`steer the running turn…`:`what should flypi do?`),X(Be,`aria-valuenow`,e),X(Be,`aria-valuetext`,H(te)),X(Be,`title`,H(te)),ni(We,`stroke-dasharray: ${n??``} 100`),K(Ke,H(te)),X(qe,`title`,H(ne)),K(Je,r),X(Ye,`title`,H(ne)),K(Xe,i)},[()=>Math.round(H(ee)??0),()=>Math.max(0,Math.min(100,H(ee)??0)),()=>C(H(x).decode),()=>C(H(x).prefill)]),gr(`scroll`,de,y),U(`change`,k,o),U(`change`,Te,e=>t.app.setThinkingLevel(e.currentTarget.value)),gr(`submit`,Ee,e=>{e.preventDefault(),c()}),U(`keydown`,je,m),gr(`paste`,je,p),Z(je,()=>H(n),e=>P(n,e)),G(e,ie),He()}_r([`click`,`change`,`keydown`]);var Vs=W(`<p class="activity-empty">nothing yet — thinking and tool output land here</p>`),Hs=W(`<details class="thinking" open=""><summary>thinking</summary><pre> </pre></details>`),Us=W(`<code class="tool-args" data-role="args"> </code>`),Ws=W(`<pre class="tool-output" data-role="output"> </pre>`),Gs=W(`<article class="tool-card"><header><span class="tool-name"> </span> <!> <span class="tool-state"> </span></header> <!></article>`),Ks=W(`<pre class="orphan-result"> </pre>`),qs=W(`<li><!></li>`),Js=W(`<li> </li>`),Ys=W(`<h2>System prompt</h2> <pre class="system-prompt"> </pre> <h2>Active tools</h2> <ul class="active-tools"></ul> <h2>Injected memory</h2> <pre class="memory-block"> </pre>`,1),Xs=W(`<p class="debug-empty">no debug info yet</p>`),Zs=W(`<p class="scheduler-empty" data-role="scheduler-error"> </p>`),Qs=W(`<p class="scheduler-empty">no scheduler info yet</p>`),$s=W(`<li class="muted">nothing queued</li>`),ec=W(`<li> <!></li>`),tc=W(`<li class="muted">no job has run yet</li>`),nc=W(`<ul class="scheduler-jobs" data-role="scheduler-jobs"></ul> <ul class="scheduler-runs" data-role="scheduler-runs"></ul>`,1),rc=W(`<h2>Prompt cache</h2> <pre class="cache-usage" data-role="cache"> </pre> <h2>Scheduler</h2> <!>`,1),ic=W(`<aside class="activity-panel" aria-label="Thinking and tool activity"><h2>Activity <span class="count" data-role="count"> </span></h2> <!> <ol class="activity"></ol> <footer><button type="button" class="debug-toggle"> </button> <!> <!></footer></aside>`);function ac(e,t){Ve(t,!0);let n=j(()=>{let e=[],n=t.app.transcript.streaming?[...t.app.transcript.messages,t.app.transcript.streaming]:t.app.transcript.messages;for(let r of n)for(let n of r.blocks)if(n.kind===`thinking`)e.push({kind:`thinking`,text:n.text});else if(n.kind===`tool-call`){let r=t.app.transcript.tools[n.id];r&&e.push({kind:`tool`,card:r})}else n.kind===`tool-result`&&e.push({kind:`orphan`,text:n.output,isError:n.isError});return e}),r=N(!1),i=N(void 0),a=N(!0);function o(){H(i)&&P(a,H(i).scrollHeight-H(i).scrollTop-H(i).clientHeight<40)}hn(()=>{H(n),H(i)&&H(a)&&(H(i).scrollTop=H(i).scrollHeight)});function s(){P(r,!H(r)),H(r)&&(t.app.showDebug(),t.app.loadScheduler())}function c(e){return e.startedAt===void 0||e.endedAt===void 0?``:` · ${((e.endedAt-e.startedAt)/1e3).toFixed(1)}s`}var l=ic(),u=F(l),d=L(R(F(u)),!0);A(u);var f=R(u,2),p=e=>{G(e,Vs())};q(f,e=>{H(n).length||e(p)});var m=R(f,2);J(m,21,()=>H(n),Rr,(e,t)=>{var n=qs(),r=F(n),i=e=>{var n=Hs(),r=L(R(F(n)),!0);A(n),z(()=>K(r,H(t).text)),G(e,n)},a=e=>{var n=Gs(),r=F(n),i=F(r),a=L(i,!0),o=R(i,2),s=e=>{var n=Us(),r=L(n,!0);z(e=>K(r,e),[()=>JSON.stringify(H(t).card.args)]),G(e,n)};q(o,e=>{H(t).card.args&&e(s)});var l=L(R(o,2));A(r);var u=R(r,2),d=e=>{var n=Ws(),r=L(n,!0);z(()=>K(r,H(t).card.output)),G(e,n)};q(u,e=>{H(t).card.output&&e(d)}),A(n),z(e=>{X(n,`data-tool`,H(t).card.name),X(n,`data-state`,H(t).card.state),K(a,H(t).card.name),K(l,`${H(t).card.state??``}${e??``}`)},[()=>c(H(t).card)]),G(e,n)},o=e=>{var n=Ks(),r=L(n,!0);z(e=>{X(n,`data-error`,e),K(r,H(t).text)},[()=>String(H(t).isError)]),G(e,n)};q(r,e=>{H(t).kind===`thinking`?e(i):H(t).kind===`tool`?e(a,1):e(o,-1)}),A(n),G(e,n)}),A(m),Si(m,e=>P(i,e),()=>H(i));var h=R(m,2),g=F(h),_=L(g,!0),v=R(g,2),y=e=>{var n=Ys(),r=R(I(n),2),i=L(r,!0),a=R(r,4);J(a,21,()=>t.app.debug.activeTools,Rr,(e,t)=>{var n=Js(),r=L(n,!0);z(()=>K(r,H(t))),G(e,n)}),A(a);var o=L(R(a,4),!0);z(()=>{K(i,t.app.debug.systemPrompt),K(o,t.app.debug.memoryBlock??`no memory block injected`)}),G(e,n)},b=e=>{G(e,Xs())};q(v,e=>{H(r)&&t.app.debug?e(y):H(r)&&e(b,1)});var x=R(v,2),S=e=>{var n=rc(),r=R(I(n),2),i=L(r),a=R(r,4),o=e=>{var n=Zs(),r=L(n,!0);z(()=>K(r,t.app.schedulerError)),G(e,n)},s=e=>{G(e,Qs())},c=e=>{var n=nc(),r=I(n);J(r,21,()=>t.app.scheduler.jobs,Rr,(e,t)=>{var n=Js(),r=L(n);z(()=>{X(n,`data-kind`,H(t).kind),K(r,`${H(t).kind??``} — ${H(t).running?`running`:`due ${H(t).nextRunAt}`}`)}),G(e,n)},e=>{G(e,$s())}),A(r);var i=R(r,2);J(i,21,()=>t.app.scheduler.jobRuns,Rr,(e,t)=>{var n=ec(),r=F(n),i=R(r),a=e=>{var n=Dr();z(()=>K(n,`— ${H(t).detail??``}`)),G(e,n)};q(i,e=>{H(t).detail&&e(a)}),A(n),z(()=>{X(n,`data-kind`,H(t).kind),X(n,`data-status`,H(t).status),K(r,`${H(t).kind??``} ${H(t).status??``}`)}),G(e,n)},e=>{G(e,tc())}),A(i),G(e,n)};q(a,e=>{t.app.schedulerError?e(o):t.app.scheduler?e(c,-1):e(s,1)}),z((e,n)=>K(i,`${t.app.transcript.running?`this turn`:`last turn`}: ${e??``}
|
|
69
|
-
this conversation: ${n??``}`),[()=>Ri(t.app.transcript.turn),()=>Ri(t.app.transcript.total)]),G(e,n)};q(x,e=>{H(r)&&e(S)}),A(h),A(l),z(()=>{K(d,H(n).length),K(_,H(r)?`Hide debug`:`Debug`)}),gr(`scroll`,m,o),U(`click`,g,s),G(e,l),He()}_r([`click`]);var oc=e=>{G(e,lc())},sc=e=>{G(e,uc())},cc=e=>{G(e,dc())},lc=Er(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 20h4L20 8l-4-4L4 16v4Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path><path d="M14.2 5.8 18.2 9.8" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg>`),uc=Er(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 7h16M9 7V4.5h6V7M6.5 7l.8 12.5h9.4L17.5 7M10.2 10.5v6m3.6-6v6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),dc=Er(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 4.4l2.3 4.8 5.2.6-3.9 3.6 1 5.1-4.6-2.6-4.6 2.6 1-5.1L4.5 9.8l5.2-.6Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path></svg>`),fc=W(`<li class="error"> </li>`),pc=W(`<ul class="cfg-errors" role="alert" data-role="config-error"></ul>`),mc=W(`<ul class="cfg-errors" role="alert" data-role="save-error"><li class="error"> </li></ul>`),hc=W(`<option> </option>`),gc=W(`<label class="cfg-default">default <select data-role="default-model"></select></label>`),_c=W(`<button type="button" class="icon" data-role="endpoint-default"><!></button>`),vc=W(`<li data-role="endpoint"><button type="button" class="cfg-name"> </button> <code> </code> <!> <button type="button" class="icon" data-role="endpoint-edit" title="Edit this endpoint"><!></button> <button type="button" class="icon remove" data-role="endpoint-remove" title="Delete this endpoint"><!></button></li>`),yc=W(`<li class="cfg-none">none configured</li>`),bc=W(`<code> </code> <!>`,1),xc=W(`<b>nothing set</b> — pick one below.`,1),Sc=W(`<span class="cfg-off">disabled</span>`),Cc=W(`<code class="cfg-state-error" data-role="mcp-error"> </code>`),wc=W(`<span data-role="mcp-state"> </span> <!>`,1),Tc=W(`<button type="button" data-role="mcp-signin"> </button>`),Ec=W(`<div class="cfg-signin" data-role="mcp-signin-box"><p class="cfg-note">If the browser cannot reach this machine, paste the redirect URL.</p> <p><a target="_blank" rel="noreferrer" data-role="mcp-auth-url"> </a></p> <form class="cfg-signin-form"><label class="field">Redirect URL <input name="redirect" placeholder="http://127.0.0.1:port/callback?code=…"/></label> <button type="submit" data-role="mcp-redirect">Finish sign-in</button> <button type="button" data-role="mcp-signin-cancel">Cancel</button></form></div>`),Dc=W(`<li data-role="mcp"><button type="button" class="cfg-name"> </button> <code> </code> <!> <!> <button type="button" class="icon" data-role="mcp-edit" title="Edit this server"><!></button> <button type="button" class="icon remove" data-role="mcp-remove" title="Delete this server"><!></button> <!></li>`),Oc=W(`<pre class="cfg-log" data-role="mcp-log"> </pre>`),kc=W(`<p class="cfg-note" data-role="mcp-log">nothing logged in <code>.flypi/agent/mcp.log</code></p>`),Ac=W(`<ul class="cfg-errors" role="alert" data-role="package-errors"></ul>`),jc=W(`<span class="cfg-state" data-role="package-update">update available</span> <button type="button" data-role="package-update-now">Update</button>`,1),Mc=W(`<li data-role="package"><code> </code> <span data-role="package-state"> </span> <!> <button type="button" class="icon remove" data-role="package-remove" title="Remove this package"><!></button></li>`),Nc=W(`<li class="cfg-none">none installed</li>`),Pc=W(`<label class="field"> <textarea class="cfg-raw" rows="14" spellcheck="false"></textarea></label> <button type="button"> </button>`,1),Fc=W(`<form class="cfg-form" data-role="endpoint-form"><label class="field">Name <input name="name" placeholder="chatgml" required=""/></label> <label class="field">Base URL<input name="baseUrl" placeholder="https://chatgml.dev/v1" required=""/></label> <label class="field">API<input name="api" list="flypi-api-kinds" required=""/></label> <label class="field">Key<input name="apiKey"/></label> <label class="field">Add model ids<input name="models" placeholder="comma-separated; the models already there are kept"/></label> <p class="cfg-note"> </p> <div class="cfg-actions"><button type="submit">Save endpoint</button></div></form>`),Ic=W(`<p class="error" role="alert" data-role="form-error"> </p>`),Lc=W(`<form class="cfg-form" data-role="mcp-form"><div class="cfg-section"><span></span> <button type="button" class="linklike" data-role="memory-mcp">use flypi's memory MCP</button></div> <label class="field">Name<input name="name" placeholder="flypi-memory" required=""/></label> <label class="field">URL<input name="url" placeholder="http://127.0.0.1:8790/mcp"/></label> <label class="field">Command<input name="command" placeholder="npx (for a stdio server)"/></label> <label class="field">Arguments<input name="args" placeholder="-y @modelcontextprotocol/server-filesystem ."/></label> <label class="field">Authorization header<input name="authorization"/></label> <label class="field">Description<input name="description" placeholder="what this server offers"/></label> <div class="cfg-inline"><label class="field">Exposure<select name="exposure"></select></label> <label class="field cfg-enabled"><input type="checkbox" name="enabled"/> enabled</label></div> <details class="cfg-extra" data-role="mcp-extra"><summary>Environment, working directory, tool exceptions, OAuth</summary> <p class="cfg-note">One <code>name=value</code> per line; <code>NAME=</code> removes a key.</p> <label class="field">Working directory<input name="cwd" placeholder="relative to the session's working directory (stdio)"/></label> <label class="field">Environment<textarea name="env" rows="3" data-role="mcp-env"></textarea></label> <label class="field">Tool exceptions<textarea name="toolExposure" rows="3" data-role="mcp-tool-exposure" placeholder="memory_cite=hidden, or read_*=direct for a pattern"></textarea></label> <label class="field">OAuth client id<input name="oauthClientId" placeholder="for a server that does not register clients itself"/></label> <label class="field">OAuth client secret<input name="oauthClientSecret"/></label> <label class="field">OAuth redirect URI<input name="oauthCallbackUrl" placeholder="http://localhost:8080/oauth/callback"/></label> <label class="field">OAuth scopes<input name="oauthScope" placeholder="space-separated, as the server advertises them"/></label></details> <!> <div class="cfg-actions"><button type="submit">Save server</button></div></form>`),Rc=W(`<dialog class="cfg-modal" data-role="config-modal"><div class="cfg-section"><h3> </h3> <button type="button" class="linklike">Cancel</button></div> <!></dialog>`),zc=W(`<option></option>`),Bc=W(`<section class="settings-view" aria-label="Settings" data-role="settings-view"><header class="panel-head"><h2>Settings</h2> <button type="button" data-role="back-to-chat">Back to chat</button></header> <!> <!> <div class="cfg-stack"><section><div class="cfg-section"><h3>Model endpoints</h3> <button type="button" data-role="endpoint-add">Add endpoint</button></div> <p class="cfg-note"><code>.flypi/agent/models.json</code> <code>!command</code>; a model's <code>input</code>, <code>contextWindow</code> and cost are edits to the file.</p> <ul class="cfg-list" data-role="endpoints"></ul> <p class="cfg-note" data-role="default-line">default for new conversations: <!></p></section> <section><div class="cfg-section"><h3>MCP servers</h3> <button type="button" data-role="mcp-check"> </button> <button type="button" data-role="mcp-add">Add server</button></div> <p class="cfg-note"><code>.flypi/agent/mcp.json</code> — a URL or a command, not both. An open conversation keeps its
|
|
70
|
-
connections.</p> <ul class="cfg-list" data-role="mcp-servers"></ul> <!></section> <section><div class="cfg-section"><h3>Extensions</h3></div> <p class="cfg-note"><code>packages</code> in <code>.flypi/agent/settings.json</code> — <code>npm:…</code>, a git URL or a
|
|
71
|
-
path. An extension runs as flypi runs, with your files and your keys: install what you have read.
|
|
72
|
-
The daemon checks for newer releases daily and installs them when it is idle; a source that names a
|
|
73
|
-
version stays on that version.</p> <form class="cfg-install"><label class="field">Source <input name="source" placeholder="npm:pi-web-access" data-role="package-source"/></label> <button type="submit" data-role="package-install"> </button></form> <!> <ul class="cfg-list" data-role="packages"></ul> <p class="cfg-note" data-role="package-checked"> </p></section> <section data-role="raw-files"><div class="cfg-section"><h3>The files as text</h3></div> <p class="cfg-note">Saving replaces the file. It must parse as JSON.</p> <!></section></div> <!> <datalist id="flypi-api-kinds"></datalist></section>`);function Vc(e,t){Ve(t,!0),Ci(()=>{t.app.showConfig(),t.app.checkMcp(),t.app.showPackages()});let n=j(()=>t.app.config?.endpoints??[]),r=j(()=>t.app.config?.mcpServers??[]),i=j(()=>t.app.packages?.packages??[]),a=N(``),o=e=>t.app.mcpStatus?.servers.find(t=>t.name===e),s={connected:`connected`,disabled:`off — disabled in the file`,failed:`not reachable`,"needs-auth":`needs authorisation`},c=e=>e.enabled&&!!e.url&&!e.authorization,l=Kt({}),u=[`openai-completions`,`openai-responses`,`azure-openai-responses`,`anthropic-messages`,`google-generative-ai`,`mistral-conversations`],d=[`direct`,`deferred`,`codemode`,`hidden`],f=N(null),p=N(``),m=()=>(P(p,``),{kind:`endpoint`,name:null,values:{name:``,baseUrl:``,api:`openai-completions`,apiKey:``,models:``}}),h=()=>(P(p,``),{kind:`mcp`,name:null,values:{name:``,url:``,command:``,args:``,authorization:``,env:``,cwd:``,description:``,exposure:`codemode`,toolExposure:``,oauthClientId:``,oauthClientSecret:``,oauthCallbackUrl:``,oauthScope:``,enabled:!0}});function g(e){P(p,``),P(f,{kind:`endpoint`,name:e.name,values:{name:e.name,baseUrl:e.baseUrl,api:e.api,apiKey:e.apiKey,models:``}},!0)}function _(e){P(p,``),P(f,{kind:`mcp`,name:e.name,values:{name:e.name,url:e.url,command:e.command,args:e.args.join(` `),authorization:e.authorization,env:b(e.env),cwd:e.cwd,description:e.description,exposure:e.exposure,toolExposure:b(e.toolExposure),oauthClientId:e.oauth.clientId,oauthClientSecret:e.oauth.clientSecret,oauthCallbackUrl:e.oauth.callbackUrl,oauthScope:e.oauth.scope,enabled:e.enabled}},!0)}function v(){H(f)?.kind===`mcp`&&(H(f).values={...H(f).values,name:`flypi-memory`,url:`http://127.0.0.1:8790/mcp`,authorization:"Bearer ${FLYPI_MEMORY_TOKEN}",description:`flypi memory store: memory_search, memory_write, memory_read, memory_supersede, memory_forget, memory_media, memory_index_status`,exposure:`direct`,toolExposure:b({memory_cite:`hidden`,memory_capture:`hidden`,memory_turn:`hidden`})})}let y=e=>e.split(/[\s,]+/).filter(Boolean),b=e=>Object.entries(e).map(([e,t])=>`${e}=${t}`).join(`
|
|
74
|
-
`),x=e=>{let t=Object.keys(e.toolExposure).length;return t?` · ${t} tool exception${t===1?``:`s`}`:``};function S(e,t){let n={};for(let r of e.split(`
|
|
75
|
-
`)){if(!r.trim())continue;let e=r.indexOf(`=`),i=r.slice(0,e).trim(),a=r.slice(e+1).trim();if(e<0||!i)throw Error(`“${r.trim()}” is not a name=value line`);if(t&&a&&!d.includes(a))throw Error(`“${a}” is not an exposure: ${d.join(`, `)}`);n[i]=a}return n}function ee(e){if(e.preventDefault(),!H(f))return;let n=H(f).name??H(f).values.name;if(H(f).kind===`endpoint`){let{baseUrl:e,api:r,apiKey:i,models:a}=H(f).values,o={name:n,baseUrl:e,api:r,apiKey:i,models:y(a)};t.app.saveConfig({endpoints:[o]})}else{let e=H(f).values,r;try{r={name:n,url:e.url,command:e.command,args:y(e.args),authorization:e.authorization,env:S(e.env,!1),cwd:e.cwd,description:e.description,exposure:e.exposure,toolExposure:S(e.toolExposure,!0),oauth:{clientId:e.oauthClientId,clientSecret:e.oauthClientSecret,callbackUrl:e.oauthCallbackUrl,scope:e.oauthScope},enabled:e.enabled}}catch(e){P(p,e.message,!0);return}t.app.saveConfig({mcpServers:[r]})}P(p,``),P(f,null)}function te(e,n){t.app.saveConfig(e===`endpoints`?{endpoints:[{name:n,remove:!0}]}:{mcpServers:[{name:n,remove:!0}]})}let C=j(()=>t.app.config?.defaults??{provider:``,model:``});function ne(e,n){e&&n&&t.app.saveConfig({defaults:{provider:e,model:n}})}let w=Kt({}),T=Kt({}),re=j(()=>t.app.config?.files??[]);hn(()=>{for(let e of H(re)){let t=w[e.name];(t===void 0||t===T[e.name]||t===e.text)&&(w[e.name]=e.text,T[e.name]=e.text)}});function ie(e){t.app.saveConfig({files:[{name:e,text:w[e]??``,base:T[e]}]})}function ae(e){return e.showModal(),{destroy:()=>e.close()}}var oe=Bc(),se=F(oe),ce=R(F(se),2);A(se);var le=R(se,2),ue=e=>{var n=pc();J(n,21,()=>t.app.config.errors,Rr,(e,t)=>{var n=fc(),r=L(n,!0);z(()=>K(r,H(t))),G(e,n)}),A(n),G(e,n)};q(le,e=>{t.app.config?.errors.length&&e(ue)});var de=R(le,2),fe=e=>{var n=mc(),r=L(F(n),!0);A(n),z(()=>K(r,t.app.configError)),G(e,n)};q(de,e=>{t.app.configError&&e(fe)});var E=R(de,2),pe=F(E),me=F(pe),he=R(F(me),2);A(me);var ge=R(me,2),_e=R(F(ge));_e.nodeValue=" — a key may be ${NAME} or ",Se(6),A(ge);var ve=R(ge,2);J(ve,21,()=>H(n),e=>e.name,(e,t)=>{var n=vc(),r=F(n),i=L(r,!0),a=R(r,2),o=L(a,!0),s=R(a,2),c=e=>{var n=gc(),r=R(F(n));J(r,21,()=>[H(C).model,...H(t).models.filter(e=>e!==H(C).model)],Rr,(e,t)=>{var n=hc(),r=L(n,!0),i={};z(()=>{K(r,H(t)),i!==(i=H(t))&&(n.value=(n.__value=i)??``)}),G(e,n)}),A(r),A(n),z(()=>X(r,`aria-label`,`Default model for ${H(t).name??``}`)),U(`change`,r,e=>ne(H(t).name,e.currentTarget.value)),G(e,n)},l=e=>{var n=_c();cc(F(n)),A(n),z(()=>{X(n,`aria-label`,`Set ${H(t).name??``} as default`),X(n,`title`,H(t).models.length?`Start new conversations on this endpoint`:`This endpoint defines no model id to start on`),n.disabled=!H(t).models.length}),U(`click`,n,()=>ne(H(t).name,H(t).models[0])),G(e,n)};q(s,e=>{H(t).name===H(C).provider?e(c):e(l,-1)});var u=R(s,2);oc(F(u)),A(u);var d=R(u,2);sc(F(d)),A(d),A(n),z(e=>{K(i,H(t).name),K(o,e),X(u,`aria-label`,`Edit ${H(t).name??``}`),X(d,`aria-label`,`Delete ${H(t).name??``}`)},[()=>`${H(t).baseUrl||`no base URL`} · ${H(t).models.length?H(t).models.join(`, `):`no models`}`]),U(`click`,r,()=>g(H(t))),U(`click`,u,()=>g(H(t))),U(`click`,d,()=>te(`endpoints`,H(t).name)),G(e,n)},e=>{G(e,yc())}),A(ve);var ye=R(ve,2),D=R(F(ye)),be=e=>{var t=bc(),r=I(t),i=L(r,!0),a=R(r,2),o=e=>{G(e,Dr(`— not one of these endpoints.`))},s=j(()=>!H(n).some(e=>e.name===H(C).provider));q(a,e=>{H(s)&&e(o)}),z(()=>K(i,`${H(C).provider}/${H(C).model}`)),G(e,t)},O=e=>{var t=xc();Se(),G(e,t)};q(D,e=>{H(C).provider?e(be):e(O,-1)}),A(ye),A(pe);var k=R(pe,2),xe=F(k),Ce=R(F(xe),2),we=L(Ce,!0),Te=R(Ce,2);A(xe);var Ee=R(xe,4);J(Ee,21,()=>H(r),e=>e.name,(e,n)=>{var r=Dc(),i=F(r),a=L(i,!0),u=R(i,2),d=L(u,!0),f=R(u,2),p=e=>{G(e,Sc())},m=e=>{let t=j(()=>o(H(n).name));var r=wc(),i=I(r),a=L(i),c=R(i,2),l=e=>{var n=Cc(),r=L(n,!0);z(()=>K(r,H(t).error)),G(e,n)};q(c,e=>{H(t)?.error&&e(l)}),z(()=>{ei(i,1,`cfg-state ${H(t)?.state??`unchecked`??``}`),K(a,`${(H(t)?s[H(t).state]:`not checked`)??``}${H(t)?.state===`connected`?` · ${H(t).tools.length} tools`:``}`)}),G(e,r)};q(f,e=>{H(n).enabled?e(m,-1):e(p)});var h=R(f,2),g=e=>{var r=Tc(),i=L(r,!0);z(()=>{r.disabled=t.app.mcpSigningIn,K(i,t.app.mcpSignIn?.name===H(n).name?`Sign-in waiting…`:`Sign in`)}),U(`click`,r,()=>t.app.signInMcp(H(n).name)),G(e,r)},v=j(()=>c(H(n)));q(h,e=>{H(v)&&e(g)});var y=R(h,2);oc(F(y)),A(y);var b=R(y,2);sc(F(b)),A(b);var S=R(b,2),ee=e=>{var r=Ec(),i=R(F(r),2),a=F(i),o=L(a,!0);A(i);var s=R(i,2),c=F(s),u=R(F(c));Y(u),A(c);var d=R(c,4);A(s),A(r),z(()=>{X(a,`href`,t.app.mcpSignIn.url),K(o,t.app.mcpSignIn.url)}),gr(`submit`,s,e=>{e.preventDefault(),t.app.submitMcpRedirect(H(n).name,l[H(n).name]??``)}),Z(u,()=>l[H(n).name],e=>l[H(n).name]=e),U(`click`,d,()=>t.app.submitMcpRedirect(H(n).name,``)),G(e,r)};q(S,e=>{t.app.mcpSignIn?.name===H(n).name&&e(ee)}),A(r),z(e=>{K(a,H(n).name),K(d,e),X(y,`aria-label`,`Edit ${H(n).name??``}`),X(b,`aria-label`,`Delete ${H(n).name??``}`)},[()=>`${H(n).url||`${H(n).command} ${H(n).args.join(` `)}`} · ${H(n).exposure}${x(H(n))}`]),U(`click`,i,()=>_(H(n))),U(`click`,y,()=>_(H(n))),U(`click`,b,()=>te(`mcpServers`,H(n).name)),G(e,r)},e=>{G(e,yc())}),A(Ee);var De=R(Ee,2),Oe=e=>{var n=Or(),r=I(n),i=e=>{var n=Oc(),r=L(n,!0);z(()=>K(r,t.app.mcpStatus.log)),G(e,n)},a=e=>{G(e,kc())};q(r,e=>{t.app.mcpStatus.log?e(i):e(a,-1)}),G(e,n)};q(De,e=>{t.app.mcpStatus&&e(Oe)}),A(k);var ke=R(k,2),Ae=R(F(ke),4),je=F(Ae),Me=R(F(je));Y(Me),A(je);var Ne=R(je,2),Pe=L(Ne,!0);A(Ae);var Fe=R(Ae,2),Ie=e=>{var n=Ac();J(n,21,()=>t.app.packages.errors,Rr,(e,t)=>{var n=fc(),r=L(n,!0);z(()=>K(r,H(t))),G(e,n)}),A(n),G(e,n)};q(Fe,e=>{t.app.packages?.errors.length&&e(Ie)});var Le=R(Fe,2);J(Le,21,()=>H(i),e=>e.source,(e,n)=>{var r=Mc(),i=F(r),a=L(i,!0),o=R(i,2),s=L(o,!0),c=R(o,2),l=e=>{var r=jc(),i=R(I(r),2);z(()=>{X(i,`aria-label`,`Update ${H(n).source??``}`),i.disabled=t.app.packagesBusy}),U(`click`,i,()=>t.app.savePackages({update:[H(n).source]})),G(e,r)};q(c,e=>{H(n).update&&e(l)});var u=R(c,2);sc(F(u)),A(u),A(r),z(()=>{K(a,H(n).source),ei(o,1,`cfg-state ${H(n).installed?`connected`:`failed`}`),K(s,H(n).installed?`installed`:`not installed`),X(u,`aria-label`,`Remove ${H(n).source??``}`)}),U(`click`,u,()=>t.app.savePackages({remove:[H(n).source]})),G(e,r)},e=>{G(e,Nc())}),A(Le);var Re=L(R(Le,2));A(ke);var ze=R(ke,2);J(R(F(ze),4),17,()=>H(re),e=>e.name,(e,t)=>{var n=Pc(),r=I(n),i=F(r),a=R(i);$e(a),A(r);var o=R(r,2),s=L(o);z(()=>{K(i,`${H(t).name??``}.json${H(t).text===``?` (not created yet)`:``} `),X(a,`data-role`,`raw-${H(t).name}`),X(o,`data-role`,`raw-save-${H(t).name}`),K(s,`Save ${H(t).name??``}.json`)}),Z(a,()=>w[H(t).name],e=>w[H(t).name]=e),U(`click`,o,()=>ie(H(t).name)),G(e,n)}),A(ze),A(E);var Be=R(E,2),Ue=e=>{var t=Rc(),r=F(t),i=F(r),a=L(i,!0),o=R(i,2);A(r);var s=R(r,2),c=e=>{var t=Fc(),r=F(t),i=R(F(r));Y(i),A(r);var a=R(r,2),o=R(F(a));Y(o),A(a);var s=R(a,2),c=R(F(s));Y(c),A(s);var l=R(s,2),u=R(F(l));Y(u),X(u,`placeholder`,"${chatgml_API_KEY}"),A(l);var d=R(l,2),p=R(F(d));Y(p),A(d);var m=L(R(d,2),!0);Se(2),A(t),z(e=>{i.disabled=H(f).name!==null,K(m,e)},[()=>H(f).name===null?``:`Already defines: ${H(n).find(e=>e.name===H(f)?.name)?.models.join(`, `)||`nothing`}`]),gr(`submit`,t,ee),Z(i,()=>H(f).values.name,e=>H(f).values.name=e),Z(o,()=>H(f).values.baseUrl,e=>H(f).values.baseUrl=e),Z(c,()=>H(f).values.api,e=>H(f).values.api=e),Z(u,()=>H(f).values.apiKey,e=>H(f).values.apiKey=e),Z(p,()=>H(f).values.models,e=>H(f).values.models=e),G(e,t)},l=e=>{var t=Lc(),n=F(t),r=R(F(n),2);A(n);var i=R(n,2),a=R(F(i));Y(a),A(i);var o=R(i,2),s=R(F(o));Y(s),A(o);var c=R(o,2),l=R(F(c));Y(l),A(c);var u=R(c,2),m=R(F(u));Y(m),A(u);var h=R(u,2),g=R(F(h));Y(g),X(g,`placeholder`,"Bearer ${FLYPI_MEMORY_TOKEN}"),A(h);var _=R(h,2),y=R(F(_));Y(y),A(_);var b=R(_,2),x=F(b),S=R(F(x));J(S,21,()=>d,Rr,(e,t)=>{var n=hc(),r=L(n,!0),i={};z(()=>{K(r,H(t)),i!==(i=H(t))&&(n.value=(n.__value=i)??``)}),G(e,n)}),A(S),oi(S),A(x);var te=R(x,2),C=F(te);Y(C),Se(),A(te),A(b);var ne=R(b,2),w=R(F(ne),4),T=R(F(w));Y(T),A(w);var re=R(w,2),ie=R(F(re));$e(ie),X(ie,`placeholder`,"API_KEY=${OPENROUTER_API_KEY}"),A(re);var ae=R(re,2),oe=R(F(ae));$e(oe),A(ae);var se=R(ae,2),ce=R(F(se));Y(ce),A(se);var le=R(se,2),ue=R(F(le));Y(ue),X(ue,`placeholder`,"${NAME} or !command, not a typed secret"),A(le);var de=R(le,2),fe=R(F(de));Y(fe),A(de);var E=R(de,2),pe=R(F(E));Y(pe),A(E),A(ne);var me=R(ne,2),he=e=>{var t=Ic(),n=L(t,!0);z(()=>K(n,H(p))),G(e,t)};q(me,e=>{H(p)&&e(he)}),Se(2),A(t),z(()=>a.disabled=H(f).name!==null),gr(`submit`,t,ee),U(`click`,r,v),Z(a,()=>H(f).values.name,e=>H(f).values.name=e),Z(s,()=>H(f).values.url,e=>H(f).values.url=e),Z(l,()=>H(f).values.command,e=>H(f).values.command=e),Z(m,()=>H(f).values.args,e=>H(f).values.args=e),Z(g,()=>H(f).values.authorization,e=>H(f).values.authorization=e),Z(y,()=>H(f).values.description,e=>H(f).values.description=e),si(S,()=>H(f).values.exposure,e=>H(f).values.exposure=e),vi(C,()=>H(f).values.enabled,e=>H(f).values.enabled=e),Z(T,()=>H(f).values.cwd,e=>H(f).values.cwd=e),Z(ie,()=>H(f).values.env,e=>H(f).values.env=e),Z(oe,()=>H(f).values.toolExposure,e=>H(f).values.toolExposure=e),Z(ce,()=>H(f).values.oauthClientId,e=>H(f).values.oauthClientId=e),Z(ue,()=>H(f).values.oauthClientSecret,e=>H(f).values.oauthClientSecret=e),Z(fe,()=>H(f).values.oauthCallbackUrl,e=>H(f).values.oauthCallbackUrl=e),Z(pe,()=>H(f).values.oauthScope,e=>H(f).values.oauthScope=e),G(e,t)};q(s,e=>{H(f).kind===`endpoint`?e(c):e(l,-1)}),A(t),Jr(t,e=>ae?.(e)),z(()=>{X(t,`aria-label`,H(f).kind===`endpoint`?`Model endpoint`:`MCP server`),K(a,H(f).name===null?H(f).kind===`endpoint`?`Add an endpoint`:`Add a server`:`Edit ${H(f).name}`)}),gr(`close`,t,()=>P(f,null)),U(`click`,o,()=>P(f,null)),G(e,t)};q(Be,e=>{H(f)&&e(Ue)});var We=R(Be,2);J(We,21,()=>u,Rr,(e,t)=>{var n=zc(),r={};z(()=>{r!==(r=H(t))&&(n.value=(n.__value=r)??``)}),G(e,n)}),A(We),A(oe),z(e=>{Ce.disabled=t.app.mcpChecking,K(we,t.app.mcpChecking?`Checking…`:`Check connections`),Ne.disabled=e,K(Pe,t.app.packagesBusy?`Working…`:`Install`),K(Re,`${t.app.packages?.checkedAt?`last checked ${t.app.packages.checkedAt}`:`not checked for updates yet`}
|
|
76
|
-
— an open conversation picks up what is installed now; one that is mid-turn keeps what it started with.`)},[()=>t.app.packagesBusy||!H(a).trim()]),U(`click`,ce,()=>t.app.openChat()),U(`click`,he,()=>P(f,m(),!0)),U(`click`,Ce,()=>t.app.checkMcp()),U(`click`,Te,()=>P(f,h(),!0)),gr(`submit`,Ae,e=>{e.preventDefault(),H(a).trim()&&(t.app.savePackages({install:[H(a).trim()]}),P(a,``))}),Z(Me,()=>H(a),e=>P(a,e)),G(e,oe),He()}_r([`click`,`change`]);var Hc=e=>{G(e,Gc())},Uc=e=>{G(e,Kc())},Wc=e=>{G(e,qc())},Gc=Er(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 20h4L20 8l-4-4L4 16v4Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path><path d="M14.2 5.8 18.2 9.8" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg>`),Kc=Er(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M2.5 12S6 6.5 12 6.5 21.5 12 21.5 12 18 17.5 12 17.5 2.5 12 2.5 12Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path><circle cx="12" cy="12" r="2.6" fill="none" stroke="currentColor" stroke-width="1.8"></circle></svg>`),qc=Er(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 7h16M9 7V4.5h6V7M6.5 7l.8 12.5h9.4L17.5 7M10.2 10.5v6m3.6-6v6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),Jc=W(`<ul class="cfg-errors" role="alert" data-role="save-error"><li class="error"> </li></ul>`),Yc=W(`(<code>.flypi/secret.key</code>, mode 0600)`,1),Xc=W(`<b> </b> `,1),Zc=W(`<code class="revealed svelte-19l53a6" data-role="revealed-value"> </code> <button type="button" data-role="secret-copy">Copy</button> <button type="button" data-role="secret-hide">Hide</button>`,1),Qc=W(`<code> </code> <button type="button" class="icon" data-role="secret-reveal" title="Show this value here for a few seconds; the vault records that it was revealed"><!></button>`,1),$c=W(`<span class="cfg-state failed" data-role="key-drift"> </span>`),el=W(`<span class="cfg-state" data-role="secret-meta"> </span>`),tl=W(`<li data-role="secret"><button type="button" class="cfg-name" data-role="secret-name"> </button> <!> <span class="cfg-state"> </span> <span class="cfg-state"> </span> <!> <!> <button type="button" class="icon" data-role="secret-edit" title="Store a new value under this name"><!></button> <button type="button" class="icon remove" data-role="secret-remove" title="Delete this secret"><!></button></li>`),nl=W(`<li class="cfg-none" data-role="no-secrets"> </li>`),rl=W(`<p class="cfg-note" data-role="short-warning"> </p>`),il=W(`<li data-role="deleted-secret"><span class="cfg-name"> </span> <code> </code> <span class="cfg-state"> </span> <button type="button" data-role="secret-restore">Restore</button></li>`),al=W(`<div class="cfg-section"><h3>Deleted</h3></div> <ul class="cfg-list" data-role="deleted-secrets"></ul>`,1),ol=W(`<li data-role="reference"><code> </code> <span class="cfg-state">→</span> <span class="cfg-name"> </span></li>`),sl=W(`<li class="cfg-none">no <code>auth.json</code> or <code>mcp.json</code> entry names a secret</li>`),cl=W(`<option> </option>`),ll=W(`<textarea name="value" rows="10" data-role="form-value" spellcheck="false"></textarea>`),ul=W(`<input name="value" type="password" data-role="form-value" autocomplete="new-password"/>`),dl=W(`<p class="error" role="alert" data-role="form-error"> </p>`),fl=W(`<dialog class="cfg-modal"><form class="secret-form" data-role="secret-form"><div class="cfg-section"><h3> </h3> <button type="button">Cancel</button></div> <div class="cfg-inline"><label class="field">Name <input name="name" data-role="form-name" placeholder="lowercase, dots, dashes — the handle config files will name" autocomplete="off"/></label> <label class="field">Kind <select name="kind" data-role="form-kind"></select></label></div> <label class="field">Value <!></label> <label class="field">Notes<textarea name="meta" rows="3" data-role="form-meta"></textarea></label> <p class="cfg-note">Non-secret notes only — host, port, username, the path of an SSH key. The same <code></code> the CLI takes. Notes written here are stored with the row; changing
|
|
77
|
-
them on an existing secret means storing its value again, because this page cannot read it back.</p> <!> <div class="cfg-actions"><button type="submit"> </button></div></form></dialog>`),pl=W(`<section class="settings-view" aria-label="Secrets" data-role="secrets-view"><header class="panel-head"><h2>Secrets</h2> <button type="button" data-role="back-to-chat">Back to chat</button></header> <!> <div class="cfg-stack"><section><div class="cfg-section"><h3>The vault</h3> <button type="button" data-role="secret-add">Add secret</button></div> <p class="cfg-note" data-role="key-state"> <!> <!></p> <p class="cfg-note">Values are stored sealed (AES-256-GCM per row) and are never shown here unless asked for. The agent
|
|
78
|
-
uses them through <code>secret_env</code> / <code>secret_file</code> and never sees them in its
|
|
79
|
-
environment; anything it prints comes back with <code>[secret:NAME]</code> in place of the value
|
|
80
|
-
(docs/secrets.md). Only the process holding the vault's write lock — <code>flypi start</code> — takes a
|
|
81
|
-
new value: a second one (a <code>serve</code> or the dev server) reads and redacts, and says so here if
|
|
82
|
-
a write is refused.</p> <ul class="cfg-list" data-role="secrets"></ul> <!> <p class="cfg-note" data-role="stream-caveat">The live answer is redacted as it streams, which means a value is masked once its last piece has
|
|
83
|
-
arrived: the part of it still on its way can be on screen for a moment. That is the one place a
|
|
84
|
-
secret may briefly appear — the session file, the transcript table and any memory of the turn hold <code>[secret:NAME]</code>.</p> <!></section> <section><div class="cfg-section"><h3>Used by</h3></div> <p class="cfg-note"><code>auth.json</code> and <code>mcp.json</code> point at a name with <code></code>; pi runs that command once per process, so a rotated value
|
|
85
|
-
takes effect after <code>flypi restart</code>. A secret listed here as used N× says how often it was
|
|
86
|
-
read, not by which conversation — the vault keeps the audit rows, this page does not list them.</p> <ul class="cfg-list" data-role="references"></ul></section></div> <!></section>`);function ml(e,t){Ve(t,!0),Ci(()=>t.app.showSecrets());let n=j(()=>t.app.secrets?.secrets??[]),r=j(()=>H(n).filter(e=>e.status===`active`)),i=j(()=>H(n).filter(e=>e.status===`deleted`)),a=j(()=>t.app.secrets?.references??[]),o=j(()=>t.app.secrets?.key),s=j(()=>t.app.secrets?.tooShortToRedact??[]),c=j(()=>(H(o)?.stale??0)>0),l=[`password`,`ssh_private_key`,`ssh_public_key`,`yaml`,`generic`],u=[`ssh_private_key`,`ssh_public_key`,`yaml`],d={password:`api key, token or password — whatever the service gave you`,ssh_private_key:`the whole key, header and footer included`,ssh_public_key:`the one line from the .pub file — type and key together`,yaml:`the whole document — it is stored as one value, and read back as one file`,generic:`anything else, stored exactly as written`},f;hn(()=>{let e=t.app.revealed;clearTimeout(f),e&&(f=setTimeout(()=>t.app.hideSecret(),3e4))}),Ci(()=>()=>clearTimeout(f));let p=N(null),m=j(()=>H(p)!==null&&u.includes(H(p).values.kind)),h=N(``),g=()=>(P(h,``),{name:null,values:{name:``,kind:`password`,value:``,meta:``}}),_=e=>Object.entries(e).map(([e,t])=>`${e}=${t}`).join(`
|
|
87
|
-
`);function v(e){P(h,``),P(p,{name:e.name,values:{name:e.name,kind:e.kind,value:``,meta:_(e.meta)}},!0)}function y(e){let t={};for(let n of e.split(`
|
|
88
|
-
`)){if(!n.trim())continue;let e=n.indexOf(`=`);if(e<1)throw Error(`"${n}" is not a name=value pair`);t[n.slice(0,e).trim()]=n.slice(e+1).trim()}return t}function b(){if(!H(p))return;let e=H(p).values.name.trim(),n=H(p).values.value;if(!e||!n){P(h,`a name and a value are both needed — a secret with no value is only a note`);return}let r;try{r=y(H(p).values.meta)}catch(e){P(h,e.message,!0);return}t.app.saveSecrets([{name:e,kind:H(p).values.kind,value:n,meta:r}]),P(h,``),P(p,null)}let x=e=>t.app.saveSecrets([{name:e.name,remove:!0}]),S=e=>t.app.saveSecrets([{name:e.name,restore:!0}]);function ee(){let e=t.app.revealed;e&&navigator.clipboard?.writeText(e.value)}function te(e){return e.showModal(),{destroy:()=>e.close()}}let C=e=>e.useCount===0?`never used`:`used ${e.useCount}×${e.lastUsedAt?`, last ${e.lastUsedAt.slice(0,10)}`:``}`;var ne=pl(),w=F(ne),T=R(F(w),2);A(w);var re=R(w,2),ie=e=>{var n=Jc(),r=L(F(n),!0);A(n),z(()=>K(r,t.app.secretsError)),G(e,n)};q(re,e=>{t.app.secretsError&&e(ie)});var ae=R(re,2),oe=F(ae),se=F(oe),ce=R(F(se),2);A(se);var le=R(se,2),ue=F(le),de=R(ue),fe=e=>{var t=Yc();Se(2),G(e,t)};q(de,e=>{H(o)?.provider===`keyfile`&&e(fe)});var E=R(de),pe=R(E),me=e=>{var t=Xc(),n=I(t),r=L(n),i=R(n);z(()=>{K(r,`${H(o)?.stale??``} ${H(o)?.stale===1?`row is`:`rows are`}`),K(i,` still sealed under an older key —
|
|
89
|
-
${H(o)?.reencryptQueued?`a re-encrypt is queued`:`they are re-sealed the next time each is used`}.`)}),G(e,t)};q(pe,e=>{H(c)&&e(me)}),A(le);var he=R(le,4);J(he,21,()=>H(r),e=>e.id,(e,n)=>{var r=tl(),i=F(r),a=L(i,!0),s=R(i,2),c=e=>{var n=Zc(),r=I(n),i=L(r,!0),a=R(r,2),o=R(a,2);z(()=>K(i,t.app.revealed.value)),U(`click`,a,()=>ee()),U(`click`,o,()=>t.app.hideSecret()),G(e,n)},l=e=>{var r=Qc(),i=I(r),a=L(i,!0),o=R(i,2);Uc(F(o)),A(o),z(()=>{K(a,H(n).mask),X(o,`aria-label`,`Reveal ${H(n).name??``}`)}),U(`click`,o,()=>t.app.revealSecret(H(n).name)),G(e,r)};q(s,e=>{t.app.revealed?.name===H(n).name?e(c):e(l,-1)});var u=R(s,2),d=L(u,!0),f=R(u,2),p=L(f,!0),m=R(f,2),h=e=>{var t=$c(),r=L(t);z(()=>K(r,`sealed under key v${H(n).keyVersion??``}`)),G(e,t)};q(m,e=>{H(o)&&H(n).keyVersion!==H(o).currentVersion&&e(h)});var g=R(m,2),y=e=>{var t=el(),r=L(t,!0);z(e=>K(r,e),[()=>_(H(n).meta).replace(/\n/g,` `)]),G(e,t)},b=j(()=>Object.keys(H(n).meta).length);q(g,e=>{H(b)&&e(y)});var S=R(g,2);Hc(F(S)),A(S);var te=R(S,2);Wc(F(te)),A(te),A(r),z((e,t)=>{X(r,`title`,e),K(a,H(n).name),K(d,H(n).kind),K(p,t),X(S,`aria-label`,`Rotate ${H(n).name??``}`),X(te,`aria-label`,`Delete ${H(n).name??``}`)},[()=>`stored ${H(n).createdAt.slice(0,10)} · fingerprint ${H(n).fingerprint.slice(0,12)}`,()=>C(H(n))]),U(`click`,i,()=>v(H(n))),U(`click`,S,()=>v(H(n))),U(`click`,te,()=>x(H(n))),G(e,r)},e=>{var n=nl(),r=L(n,!0);z(()=>K(r,t.app.secrets?`none stored`:`the vault has not answered yet`)),G(e,n)}),A(he);var ge=R(he,2),_e=e=>{var t=rl(),n=L(t);z(e=>K(n,`${e??``} ${H(s).length===1?`is`:`are`} shorter than the redaction floor, so a
|
|
90
|
-
transcript or a memory that repeats ${H(s).length===1?`it`:`them`} will not be rewritten.`),[()=>H(s).join(`, `)]),G(e,t)};q(ge,e=>{H(s).length&&e(_e)});var ve=R(ge,4),ye=e=>{var t=al(),n=R(I(t),2);J(n,21,()=>H(i),e=>e.id,(e,t)=>{var n=il(),r=F(n),i=L(r,!0),a=R(r,2),o=L(a,!0),s=R(a,2),c=L(s),l=R(s,2);A(n),z(e=>{K(i,H(t).name),K(o,H(t).mask),K(c,`deleted ${e??``}`)},[()=>H(t).createdAt.slice(0,10)]),U(`click`,l,()=>S(H(t))),G(e,n)}),A(n),G(e,t)};q(ve,e=>{H(i).length&&e(ye)}),A(oe);var D=R(oe,2),be=R(F(D),2),O=R(F(be),4);O.textContent=`!flypi secret print NAME`,Se(3),A(be);var k=R(be,2);J(k,21,()=>H(a),e=>`${e.file}${e.path}`,(e,t)=>{var n=ol(),r=F(n),i=L(r),a=L(R(r,4),!0);A(n),z(()=>{K(i,`${H(t).file??``} · ${H(t).path??``}`),K(a,H(t).name)}),G(e,n)},e=>{G(e,sl())}),A(k),A(D),A(ae);var xe=R(ae,2),Ce=e=>{var t=fl(),n=F(t),r=F(n),i=F(r),a=L(i,!0),o=R(i,2);A(r);var s=R(r,2),c=F(s),u=R(F(c));Y(u),A(c);var f=R(c,2),g=R(F(f));J(g,21,()=>l,Rr,(e,t)=>{var n=cl(),r=L(n,!0),i={};z(()=>{K(r,H(t)),i!==(i=H(t))&&(n.value=(n.__value=i)??``)}),G(e,n)}),A(g),oi(g),A(f),A(s);var _=R(s,2),v=R(F(_)),y=e=>{var t=ll();$e(t),z(()=>X(t,`placeholder`,d[H(p).values.kind])),Z(t,()=>H(p).values.value,e=>H(p).values.value=e),G(e,t)},x=e=>{var t=ul();Y(t),z(()=>X(t,`placeholder`,d[H(p).values.kind])),Z(t,()=>H(p).values.value,e=>H(p).values.value=e),G(e,t)};q(v,e=>{H(m)?e(y):e(x,-1)}),A(_);var S=R(_,2),ee=R(F(S));$e(ee),X(ee,`placeholder`,`host=192.168.1.1
|
|
91
|
-
username=admin`),A(S);var C=R(S,2),ne=R(F(C));ne.textContent=`--meta k=v`,Se(),A(C);var w=R(C,2),T=e=>{var t=dl(),n=L(t,!0);z(()=>K(n,H(h))),G(e,t)};q(w,e=>{H(h)&&e(T)});var re=R(w,2),ie=L(F(re),!0);A(re),A(n),A(t),Jr(t,e=>te?.(e)),z(()=>{K(a,H(p).name===null?`Add a secret`:`Rotate ${H(p).name}`),u.disabled=H(p).name!==null,K(ie,H(p).name===null?`Store secret`:`Rotate secret`)}),gr(`submit`,n,e=>{e.preventDefault(),b()}),U(`click`,o,()=>P(p,null)),Z(u,()=>H(p).values.name,e=>H(p).values.name=e),si(g,()=>H(p).values.kind,e=>H(p).values.kind=e),Z(ee,()=>H(p).values.meta,e=>H(p).values.meta=e),G(e,t)};q(xe,e=>{H(p)&&e(Ce)}),A(ne),z(()=>{K(ue,`sealed with ${H(o)?.provider===`keyfile`?`a keyring file`:`the ${H(o)?.provider??`unknown`} key provider`} `),K(E,`,
|
|
92
|
-
key v${H(o)?.currentVersion??`?`??``} · ${H(o)?.rows??0??``} rows. `)}),U(`click`,T,()=>t.app.openChat()),U(`click`,ce,()=>P(p,g(),!0)),G(e,ne),He()}_r([`click`]);var hl=e=>{G(e,_l())},gl=e=>{G(e,vl())},_l=Er(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 20h4L20 8l-4-4L4 16v4Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path><path d="M14.2 5.8 18.2 9.8" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg>`),vl=Er(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 7h16M9 7V4.5h6V7M6.5 7l.8 12.5h9.4L17.5 7M10.2 10.5v6m3.6-6v6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),yl=W(`<ul class="cfg-errors" role="alert" data-role="save-error"><li class="error"> </li></ul>`),bl=W(` <b> </b> <!>.`,1),xl=W(`<span class="cfg-state" data-role="merged-from"> </span>`),Sl=W(`<li data-role="memory-use" class="svelte-3w3u32"><q> </q> <span class="cfg-state"> </span> <span class="cfg-state"> </span> <span> </span></li>`),Cl=W(`<ul class="memory-uses svelte-3w3u32" data-role="memory-uses"></ul>`),wl=W(`<p class="cfg-note" data-role="memory-unused">No recorded turn fetched it — it has never been injected in the turns this
|
|
93
|
-
store still holds.</p>`),Tl=W(`<span class="cfg-state"> </span>`),El=W(`<button type="button" data-role="memory-undo">Undo</button>`),Dl=W(`<li data-role="audit-entry" class="svelte-3w3u32"><span class="cfg-state"> </span> <span class="cfg-state"> </span> <!> <details class="preimage svelte-3w3u32"><summary class="svelte-3w3u32">pre-image</summary> <pre class="memory-block svelte-3w3u32" data-role="pre-image"> </pre></details> <!></li>`),Ol=W(`<div class="memory-why svelte-3w3u32" data-role="memory-why-panel"><!> <ul class="memory-history svelte-3w3u32" data-role="memory-history"></ul></div>`),kl=W(`<li class="memory-row svelte-3w3u32" data-role="memory-entry"><code class="memory-body svelte-3w3u32" data-role="memory-body"> </code> <span class="cfg-state"> </span> <span class="cfg-state"> </span> <span class="cfg-state" title="How often recall fetched it, how often an answer cited it, and its rank weight"> </span> <!> <button type="button" data-role="memory-why"> </button> <button type="button" class="icon" data-role="memory-edit" title="Edit this memory"><!></button> <button type="button" class="icon remove" data-role="memory-remove" title="Delete this memory (undoable)"><!></button> <!></li>`),Al=W(`<li class="cfg-none" data-role="no-memories"> </li>`),jl=W(`<button type="button" data-role="memory-restore">Undo</button>`),Ml=W(`<li data-role="superseded-memory"><code class="memory-body svelte-3w3u32"> </code> <span class="cfg-state"> </span> <span class="cfg-state"> <!></span> <!></li>`),Nl=W(`<div class="cfg-section"><h3>Superseded</h3></div> <p class="cfg-note">A merge or a correction retires a row; it never removes it. These are the copies the sweep
|
|
94
|
-
folded away, each with the pre-image it had when it went and an undo that puts it back.</p> <ul class="cfg-list" data-role="superseded-list"></ul>`,1),Pl=W(`<button type="button" data-role="memory-restore">Restore</button>`),Fl=W(`<li data-role="deleted-memory"><code class="memory-body svelte-3w3u32"> </code> <span class="cfg-state"> </span> <!></li>`),Il=W(`<div class="cfg-section"><h3>Deleted</h3></div> <ul class="cfg-list" data-role="deleted-list"></ul>`,1),Ll=W(`<li data-role="turn-cost"><code class="memory-body svelte-3w3u32"> </code> <span class="cfg-state"> </span> <span class="cfg-state"> </span> <span class="cfg-state"> </span> <span class="cfg-state"> </span></li>`),Rl=W(`<li class="cfg-none">no turns recorded yet</li>`),zl=W(`<div class="wiki-page svelte-3w3u32" data-role="wiki-page"><h4 class="svelte-3w3u32"> </h4> <p class="cfg-note"> </p> <pre class="memory-block" data-role="wiki-body"> </pre></div>`),Bl=W(`<p class="cfg-note" data-role="no-wiki">Nothing rendered yet — the wiki is rebuilt after a consolidation sweep, which runs when the
|
|
95
|
-
daemon is idle.</p>`),Vl=W(`<p class="error" role="alert" data-role="form-error"> </p>`),Hl=W(`<dialog class="cfg-modal"><form class="memory-form" data-role="memory-form"><div class="cfg-section"><h3> </h3> <button type="button">Cancel</button></div> <label class="field">Text <textarea name="body" rows="5" data-role="form-body" spellcheck="false"></textarea></label> <div class="cfg-inline"><label class="field">Kind <input name="kind" data-role="form-kind"/></label> <label class="field">Tags <input name="tags" data-role="form-tags" placeholder="comma, separated"/></label></div> <p class="cfg-note">What the row says, and how it is filed. Where the fact came from — the user's own words or the
|
|
96
|
-
agent's — is set by the code that wrote it and is not editable here, because a body claiming
|
|
97
|
-
"the user said so" carries no authority (docs/memory.md).</p> <!> <div class="cfg-actions"><button type="submit">Save memory</button></div></form></dialog>`),Ul=W(`<section class="settings-view" aria-label="Memory" data-role="memory-view"><header class="panel-head"><h2>Memory</h2> <button type="button" data-role="back-to-chat">Back to chat</button></header> <!> <div class="cfg-stack"><section><div class="cfg-section"><h3>The store</h3> <input class="search svelte-3w3u32" data-role="memory-search" placeholder="filter by text, kind, tag or #id" aria-label="Filter memories"/></div> <p class="cfg-note" data-role="memory-stats"> <!></p> <p class="cfg-note">Nothing here is deleted automatically: a consolidation sweep may merge and supersede, and <code>deleted</code> takes a click on this page. Every change carries its pre-image, so each row of
|
|
98
|
-
the history below can be undone on its own.</p> <ul class="cfg-list" data-role="memory-list"></ul> <!> <!></section> <section><div class="cfg-section"><h3>What recall injected, per turn</h3></div> <p class="cfg-note">The question, how many rows it fetched, how many the answer cited, and what those rows would have
|
|
99
|
-
cost in prompt tokens — the same estimate the injection budget works against, so a turn that was
|
|
100
|
-
shown too much is visible as a number.</p> <ul class="cfg-list" data-role="turn-costs"></ul></section> <section><div class="cfg-section"><h3>The wiki</h3></div> <p class="cfg-note">A render of the active rows — one page per kind, sections by tag, every claim cited as <code>#id</code>. It is a view, not a second memory: nothing is injected from it, nothing here is
|
|
101
|
-
editable, and it is rebuilt whole after a consolidation sweep.</p> <!></section></div> <!></section>`);function Wl(e,t){Ve(t,!0),Ci(()=>t.app.showMemories());let n=j(()=>t.app.memories?.memories??[]),r=j(()=>t.app.memories?.turns??[]),i=j(()=>t.app.memories?.wiki??[]),a=j(()=>t.app.memories?.stats),o=j(()=>H(n).filter(e=>e.status===`active`)),s=j(()=>H(n).filter(e=>e.status===`superseded`)),c=j(()=>H(n).filter(e=>e.status===`deleted`)),l=N(``),u=e=>{let t=H(l).trim().toLowerCase();return!t||`${e.body} ${e.kind} ${e.tags.join(` `)} #${e.id}`.toLowerCase().includes(t)},d=j(()=>H(o).filter(u)),f=j(()=>H(s).filter(u)),p=j(()=>H(c).filter(u)),m=j(()=>new Map(H(n).map(e=>[e.id,e]))),h=e=>H(r).filter(t=>t.retrieved.includes(e)),g=N(Kt(new Set));function _(e){let t=new Set(H(g));t.has(e)?t.delete(e):t.add(e),P(g,t,!0)}let v=N(null),y=N(``);function b(e){P(y,``),P(v,{id:e.id,values:{body:e.body,kind:e.kind,tags:e.tags.join(`, `)}},!0)}function x(){if(!H(v))return;let e=H(v).values.body.trim(),n=H(v).values.kind.trim();if(!e||!n){P(y,`a memory needs its text and its kind — an empty row is a fact nobody can retrieve`);return}t.app.saveMemories([{id:H(v).id,body:e,kind:n,tags:H(v).values.tags.split(`,`).map(e=>e.trim()).filter(Boolean)}]),P(y,``),P(v,null)}let S=e=>t.app.saveMemories([{id:e.id,remove:!0}]),ee=e=>e.history.filter(e=>e.action===`forget`).at(-1),te=e=>{let n=ee(e);n&&t.app.saveMemories([{id:e.id,undoAudit:n.id}])},C=(e,n)=>t.app.saveMemories([{id:e.id,undoAudit:n}]);function ne(e){return e.showModal(),{destroy:()=>e.close()}}let w=e=>e.slice(0,10),T=e=>`#${e.id} ${e.body}`,re=e=>e.tags.length?`${e.kind} · ${e.tags.join(`, `)}`:e.kind,ie=e=>`fetched ${e.useCount}× · cited ${e.citedCount}× · strength ${e.strength.toFixed(2)}`;var ae=Ul(),oe=F(ae),se=R(F(oe),2);A(oe);var ce=R(oe,2),le=e=>{var n=yl(),r=L(F(n),!0);A(n),z(()=>K(r,t.app.memoryError)),G(e,n)};q(ce,e=>{t.app.memoryError&&e(le)});var ue=R(ce,2),de=F(ue),fe=F(de),E=R(F(fe),2);Y(E),A(fe);var pe=R(fe,2),me=F(pe),he=R(me),ge=e=>{var t=bl(),n=I(t),r=R(n),i=L(r),o=R(r),s=R(o),c=e=>{var t=Dr();z(()=>K(t,`, ${H(a).indexStale??``} from another model`)),G(e,t)};q(s,e=>{H(a).indexStale&&e(c)}),Se(),z(e=>{K(n,`Recall was shown a memory in ${H(a).turnsShownMemories??``} of ${H(a).turns??``} turns, and the answer
|
|
102
|
-
cited one in ${H(a).turnsCiting??``} — `),K(i,`${e??``}%`),K(o,` of the turns that were
|
|
103
|
-
shown something used it.
|
|
104
|
-
${H(a).indexRows??``} rows have a vector${H(a).embedModel?` (${H(a).embedModel})`:` — none: search is keyword-only here`}`)},[()=>Math.round(H(a).rate*100)]),G(e,t)};q(he,e=>{H(a)&&e(ge)}),A(pe);var _e=R(pe,4);J(_e,21,()=>H(d),e=>e.id,(e,t)=>{var n=kl(),r=F(n),i=L(r,!0),a=R(r,2),o=L(a,!0),s=R(a,2),c=L(s,!0),l=R(s,2),u=L(l,!0),d=R(l,2),f=e=>{var n=xl(),r=L(n);z(e=>K(r,`merged ${e??``}`),[()=>H(t).mergedFrom.map(e=>`#${e}`).join(` `)]),G(e,n)};q(d,e=>{H(t).mergedFrom.length&&e(f)});var p=R(d,2),m=L(p,!0),v=R(p,2);hl(F(v)),A(v);var y=R(v,2);gl(F(y)),A(y);var x=R(y,2),ee=e=>{var n=Ol(),r=F(n),i=e=>{var n=Cl();J(n,21,()=>h(H(t).id),e=>e.id,(e,n)=>{var r=Sl(),i=F(r),a=L(i,!0),o=R(i,2),s=L(o,!0),c=R(o,2),l=L(c),u=R(c,2),d=L(u,!0);A(r),z((e,t,r)=>{K(a,H(n).userText),K(s,e),K(l,`${H(n).injectedTokens??``} tokens injected`),ei(u,1,`cfg-state ${t??``}`),K(d,r)},[()=>w(H(n).createdAt),()=>H(n).cited.includes(H(t).id)?`connected`:``,()=>H(n).cited.includes(H(t).id)?`cited`:`not cited`]),G(e,r)}),A(n),G(e,n)},a=j(()=>h(H(t).id).length),o=e=>{G(e,wl())};q(r,e=>{H(a)?e(i):e(o,-1)});var s=R(r,2);J(s,21,()=>H(t).history,e=>e.id,(e,n)=>{var r=Dl(),i=F(r),a=L(i),o=R(i,2),s=L(o,!0),c=R(o,2),l=e=>{var t=Tl(),r=L(t,!0);z(()=>K(r,H(n).reason)),G(e,t)};q(c,e=>{H(n).reason&&e(l)});var u=R(c,2),d=L(R(F(u),2),!0);A(u);var f=R(u,2),p=e=>{var r=El();U(`click`,r,()=>C(H(t),H(n).id)),G(e,r)};q(f,e=>{H(n).action!==`create`&&e(p)}),A(r),z(e=>{K(a,`${H(n).action??``} by ${H(n).actor??``}`),K(s,e),K(d,H(n).preImage)},[()=>w(H(n).createdAt)]),G(e,r)}),A(s),A(n),G(e,n)},te=j(()=>H(g).has(H(t).id));q(x,e=>{H(te)&&e(ee)}),A(n),z((e,n,r,a)=>{K(i,e),K(o,n),K(c,H(t).originClass),K(u,r),K(m,a),X(v,`aria-label`,`Edit memory ${H(t).id??``}`),X(y,`aria-label`,`Delete memory ${H(t).id??``}`)},[()=>T(H(t)),()=>re(H(t)),()=>ie(H(t)),()=>H(g).has(H(t).id)?`Hide why`:`Why was this injected?`]),U(`click`,p,()=>_(H(t).id)),U(`click`,v,()=>b(H(t))),U(`click`,y,()=>S(H(t))),G(e,n)},e=>{var n=Al(),r=L(n,!0);z(()=>K(r,t.app.memories?`nothing remembered`:`the store has not answered yet`)),G(e,n)}),A(_e);var ve=R(_e,2),ye=e=>{var t=Nl(),n=R(I(t),4);J(n,21,()=>H(f),e=>e.id,(e,t)=>{var n=Ml(),r=F(n),i=L(r,!0),a=R(r,2),o=L(a,!0),s=R(a,2),c=F(s),l=R(c),u=e=>{G(e,Dr(`(that row is superseded too)`))},d=j(()=>H(t).supersededBy&&H(m).get(H(t).supersededBy)?.status===`superseded`);q(l,e=>{H(d)&&e(u)}),A(s),J(R(s,2),17,()=>H(t).history.filter(e=>e.action===`supersede`),e=>e.id,(e,n)=>{var r=jl();U(`click`,r,()=>C(H(t),H(n).id)),G(e,r)}),A(n),z(e=>{K(i,e),K(o,H(t).kind),K(c,`→ ${H(t).supersededBy?`#${H(t).supersededBy}`:`nothing`} `)},[()=>T(H(t))]),G(e,n)}),A(n),G(e,t)};q(ve,e=>{H(f).length&&e(ye)});var D=R(ve,2),be=e=>{var t=Il(),n=R(I(t),2);J(n,21,()=>H(p),e=>e.id,(e,t)=>{var n=Fl(),r=F(n),i=L(r,!0),a=R(r,2),o=L(a),s=R(a,2),c=e=>{var n=Pl();U(`click`,n,()=>te(H(t))),G(e,n)},l=j(()=>ee(H(t)));q(s,e=>{H(l)&&e(c)}),A(n),z((e,t)=>{K(i,e),K(o,`deleted ${t??``}`)},[()=>T(H(t)),()=>w(H(t).createdAt)]),G(e,n)}),A(n),G(e,t)};q(D,e=>{H(p).length&&e(be)}),A(de);var O=R(de,2),k=R(F(O),4);J(k,21,()=>H(r),e=>e.id,(e,t)=>{var n=Ll(),r=F(n),i=L(r,!0),a=R(r,2),o=L(a,!0),s=R(a,2),c=L(s),l=R(s,2),u=L(l),d=L(R(l,2));A(n),z(e=>{K(i,H(t).userText),K(o,e),K(c,`fetched ${H(t).retrieved.length??``}`),K(u,`cited ${H(t).cited.length??``}`),K(d,`${H(t).injectedTokens??``} tokens`)},[()=>w(H(t).createdAt)]),G(e,n)},e=>{G(e,Rl())}),A(k),A(O);var xe=R(O,2);J(R(F(xe),4),17,()=>H(i),e=>e.slug,(e,t)=>{var n=zl(),r=F(n),i=L(r,!0),a=R(r,2),o=L(a),s=L(R(a,2),!0);A(n),z(e=>{K(i,H(t).title),K(o,`${H(t).sections.length??``} section${H(t).sections.length===1?``:`s`} · ${H(t).claimIds.length??``}
|
|
105
|
-
claim${H(t).claimIds.length===1?``:`s`} · rendered ${e??``}`),K(s,H(t).body)},[()=>w(H(t).generatedAt)]),G(e,n)},e=>{G(e,Bl())}),A(xe),A(ue);var Ce=R(ue,2),we=e=>{var t=Hl(),n=F(t),r=F(n),i=F(r),a=L(i),o=R(i,2);A(r);var s=R(r,2),c=R(F(s));$e(c),A(s);var l=R(s,2),u=F(l),d=R(F(u));Y(d),A(u);var f=R(u,2),p=R(F(f));Y(p),A(f),A(l);var m=R(l,4),h=e=>{var t=Vl(),n=L(t,!0);z(()=>K(n,H(y))),G(e,t)};q(m,e=>{H(y)&&e(h)}),Se(2),A(n),A(t),Jr(t,e=>ne?.(e)),z(()=>K(a,`Edit #${H(v).id??``}`)),gr(`submit`,n,e=>{e.preventDefault(),x()}),U(`click`,o,()=>P(v,null)),Z(c,()=>H(v).values.body,e=>H(v).values.body=e),Z(d,()=>H(v).values.kind,e=>H(v).values.kind=e),Z(p,()=>H(v).values.tags,e=>H(v).values.tags=e),G(e,t)};q(Ce,e=>{H(v)&&e(we)}),A(ae),z(()=>K(me,`${H(n).length??``} rows · ${H(o).length??``} active. `)),U(`click`,se,()=>t.app.openChat()),Z(E,()=>H(l),e=>P(l,e)),G(e,ae),He()}_r([`click`]);var Gl={sidebar:{min:11,max:34,fallback:15},activity:{min:14,max:40,fallback:22}};function Kl(e){return Gl[e]}function ql(e){let t=localStorage.getItem(`flypi.${e}Width`),n=t===null?NaN:Number(t);return Number.isFinite(n)?Jl(e,n):Gl[e].fallback}function Jl(e,t){let{min:n,max:r}=Gl[e];return Math.min(r,Math.max(n,Math.round(t*4)/4))}function Yl(e,t){try{localStorage.setItem(`flypi.${e}Width`,String(Jl(e,t)))}catch{}}var Xl=[`settings`,`secrets`,`memory`],Zl=`sessions`;function Ql(e){let t=e.split(`/`).filter(Boolean),n=t.lastIndexOf(Zl),r=n>=0?t[n-1]??``:t.at(-1)??``;return{view:Xl.includes(r)?r:`chat`,session:n>=0?t[n+1]??null:null}}function $l(e){return e.split(`/`).pop()??e}function eu(){return Ql(location.pathname)}function tu(e,t){let n=e===`chat`?t?`/${Zl}/${$l(t)}`:`/`:`/${e}`;n!==location.pathname&&history.replaceState(null,``,`${n}${location.hash}`)}var nu=W(`<section class="updating" data-role="updating" role="status" aria-live="polite"><h2>Updating flypi</h2> <p>The daemon is installing the new version and restarting to run it.</p> <p>This page goes back on its own once the new one answers.</p></section>`),ru=W(`<div class="gutter" role="slider" aria-orientation="vertical" tabindex="0"></div>`),iu=W(`<!> <!> <!>`,1),au=W(`<div class="layout"><!> <!> <!></div>`);function ou(e,t){Ve(t,!0);let n=new ia(t.transport);n.watch();let r=Kt({sidebar:ql(`sidebar`),activity:ql(`activity`)});function i(){return parseFloat(getComputedStyle(document.documentElement).fontSize)||16}function a(e,t){e.preventDefault();let n=e.clientX,a=r[t],o=e=>{r[t]=Jl(t,a+(e.clientX-n)*s(t)/i())},c=()=>{window.removeEventListener(`pointermove`,o),window.removeEventListener(`pointerup`,c),window.removeEventListener(`pointercancel`,c),Yl(t,r[t])};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,c),window.addEventListener(`pointercancel`,c)}function o(e,t){let n={ArrowLeft:-1,ArrowRight:1}[e.key];n!==void 0&&(e.preventDefault(),r[t]=Jl(t,r[t]+s(t)*n),Yl(t,r[t]))}function s(e){return e===`sidebar`?1:-1}let c=eu(),l=c.session;c.view===`settings`&&n.openSettings(),c.view===`secrets`&&n.openSecrets(),c.view===`memory`&&n.openMemory(),hn(()=>tu(n.view,n.sessionPath??null)),hn(()=>{if(!l||!n.conversationId)return;let e=l;l=null,e!==$l(n.sessionPath??``)&&n.openSession(e)});let u=Kt({available:null,ready:null}),f=j(()=>u.ready?{version:u.ready,ready:!0}:u.available?{version:u.available,ready:!1}:null),p={version:null,startedAt:null};async function m(){try{let e=await(await fetch(`/healthz`)).json();u.available=e.updateAvailable??null,u.ready=e.updateReady??null,p={version:e.version??null,startedAt:e.startedAt??null}}catch{}}hn(()=>{m();let e=setInterval(()=>void m(),6e4);return()=>clearInterval(e)}),hn(()=>{if(!n.updateInstalling)return;let e=p,t=Date.now(),r=setInterval(()=>{m().then(()=>{if(p.version===e.version&&p.startedAt===e.startedAt){Date.now()-t>=12e4&&(n.updateError=`the daemon never restarted — the install may have failed`,n.updateInstalling=!1);return}e.version&&p.version!==e.version?location.reload():n.updateInstalling=!1})},1e3);return()=>clearInterval(r)});var h=Or(),g=I(h),_=e=>{G(e,nu())},v=e=>{var t=au();{let e=(e,t=d)=>{var n=ru();z((e,i)=>{X(n,`aria-label`,`Resize the ${t()===`sidebar`?`sidebar`:`activity panel`}`),X(n,`aria-valuenow`,r[t()]),X(n,`aria-valuetext`,`${r[t()]} rem`),X(n,`aria-valuemin`,e),X(n,`aria-valuemax`,i)},[()=>Kl(t()).min,()=>Kl(t()).max]),U(`pointerdown`,n,e=>a(e,t())),U(`keydown`,n,e=>o(e,t())),G(e,n)};var i=F(t);ba(i,{get app(){return n},get update(){return H(f)}});var s=R(i,2);e(s,()=>`sidebar`);var c=R(s,2),l=e=>{Vc(e,{get app(){return n}})},u=e=>{ml(e,{get app(){return n}})},p=e=>{Wl(e,{get app(){return n}})},m=t=>{var r=iu(),i=I(r);Bs(i,{get app(){return n}});var a=R(i,2);e(a,()=>`activity`),ac(R(a,2),{get app(){return n}}),G(t,r)};q(c,e=>{n.view===`settings`?e(l):n.view===`secrets`?e(u,1):n.view===`memory`?e(p,2):e(m,-1)}),A(t)}z(()=>ni(t,`--sidebar-w: ${r.sidebar??``}rem; --activity-w: ${r.activity??``}rem`)),G(e,t)};q(g,e=>{n.updateInstalling?e(_):e(v,-1)}),G(e,h),He()}_r([`pointerdown`,`keydown`]);async function su(){let e=await fetch(`/__flypi.json`);if(!e.ok)throw Error(`flypi: /__flypi.json returned ${e.status} — is the agent server running?`);return await e.json()}var cu=class{#e;#t;#n=new Set;#r=[];#i=!1;constructor(e){this.#e=e}on(e){return this.#n.add(e),()=>this.#n.delete(e)}send(e){let t=JSON.stringify(e);this.#t?.readyState===WebSocket.OPEN?this.#t.send(t):this.#r.push(t)}connect(){let e=`${location.protocol===`https:`?`wss`:`ws`}://${location.host}${this.#e.wsPath}?token=${encodeURIComponent(this.#e.token)}`,t=new WebSocket(e);this.#t=t,t.addEventListener(`open`,()=>{for(let e of this.#r.splice(0))t.send(e);for(let e of this.#n)e({type:`connected`})}),t.addEventListener(`message`,e=>{let t;try{t=JSON.parse(String(e.data))}catch{return}if(t&&typeof t==`object`&&`type`in t)for(let e of this.#n)e(t)}),t.addEventListener(`close`,()=>{for(let e of this.#n)e({type:`disconnected`});this.#i||setTimeout(()=>{su().then(e=>this.#e=e).catch(()=>{}).finally(()=>this.connect())},500)})}close(){this.#i=!0,this.#t?.close()}},lu=document.getElementById(`app`);if(!lu)throw Error(`flypi: #app is missing from index.html`);ua();var uu=await su();if(uu.protocolVersion!==1)lu.textContent=`flypi UI speaks protocol v1, the server speaks v${uu.protocolVersion}`;else{let e=new cu(uu);Nr(ou,{target:lu,props:{transport:e}}),e.connect()}
|