speccoder-web 0.15.0

speccoder's web interface: a loopback host serving the embedded UI and an API over speccoder's own payloads
Documentation
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["mermaid.core.js","src.js","chunk-Y2CYZVJY.js","chunk-VPRB5NB3.js","chunk-3YJQHVM4.js","dist.js","chunk-HJ2JQQFS.js","chunk-E2ZNV5FY.js","chunk-DUW6YSOI.js","chunk-4EA7E6EY.js","chunk-XC4XBNZT.js","chunk-J5ZVWO5B.js","rough.esm.js","chunk-DBDB3WZW.js","chunk-2BW5OAIV.js","line.js","path.js","array.js","chunk-NTY3LDVX.js"])))=>i.map(i=>d[i]);
(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){return e()}function p(e){for(var t=0;t<e.length;t++)e[t]()}function m(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function h(e,t,n=!1){return e===void 0?n?t():t:e}function g(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}var _=1<<24,v=1024,y=2048,b=4096,x=8192,S=16384,C=32768,w=1<<25,T=65536,E=1<<19,ee=1<<20,D=1<<25,O=1<<21,k=1<<22,te=1<<23,ne=Symbol(`$state`),re=Symbol(`component`),ie=Symbol(`legacy props`),ae=Symbol(``),oe=Symbol(`attributes`),se=Symbol(`class`),ce=Symbol(`style`),le=Symbol(`text`),ue=Symbol(`form reset`),de=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},fe=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`),pe={},me=Symbol(`uninitialized`),he=`http://www.w3.org/1999/xhtml`,ge=`http://www.w3.org/2000/svg`,_e=`http://www.w3.org/1998/Math/MathML`;function ve(){console.warn(`https://svelte.dev/e/derived_inert`)}function ye(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function be(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function xe(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var Se=!1;function Ce(e){Se=e}var we;function Te(e){if(e===null)throw ye(),pe;return we=e}function Ee(){return Te(mn(we))}function A(e){if(Se){if(mn(we)!==null)throw ye(),pe;we=e}}function j(e=1){if(Se){for(var t=e,n=we;t--;)n=mn(n);we=n}}function De(e=!0){for(var t=0,n=we;;){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=mn(n);e&&n.remove(),n=i}}function Oe(e){if(!e||e.nodeType!==8)throw ye(),pe;return e.data}function ke(e){return e===this.v}function Ae(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function je(e){return!Ae(e,this.v)}function Me(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function Ne(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function Pe(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function Fe(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Ie(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function Le(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Re(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function ze(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Be(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Ve(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function He(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var Ue=!1;function We(){Ue=!0}var Ge=[];function Ke(e,t=!1,n=!1){return qe(e,new Map,``,Ge,null,n)}function qe(t,n,r,i,a=null,o=!1){if(typeof t==`object`&&t){var c=n.get(t);if(c!==void 0)return c;if(t instanceof Map)return new Map(t);if(t instanceof Set)return new Set(t);if(e(t)){var u=Array(t.length);n.set(t,u),a!==null&&n.set(a,u);for(var d=0;d<t.length;d+=1){var f=t[d];d in t&&(u[d]=qe(f,n,r,i,null,o))}return u}if(l(t)===s){u={},n.set(t,u),a!==null&&n.set(a,u);for(var p of Object.keys(t))u[p]=qe(t[p],n,r,i,null,o);return u}if(t instanceof Date)return t.getTime(),structuredClone(t);if(typeof t.toJSON==`function`&&!o)return qe(t.toJSON(),n,r,i,t)}if(t instanceof EventTarget)return t;try{return structuredClone(t)}catch{return t}}var Je=null;function Ye(e){Je=e}function Xe(e,t=!1,n){Je={p:Je,i:!1,c:null,e:null,s:e,x:null,r:$n,l:Ue&&!t?{s:null,u:null,$:[]}:null}}function Ze(e){var t=Je,n=t.e;if(n!==null){t.e=null;for(var r of n)En(r)}return e!==void 0&&(t.x=e),t.i=!0,Je=t.p,Qe(e)}function Qe(e={}){return i(e,re,{value:!0}),e}function $e(){return!Ue||Je!==null&&Je.l===null}var et=[];function tt(){var e=et;et=[],p(e)}function nt(e){if(et.length===0&&!Mt){var t=et;queueMicrotask(()=>{t===et&&tt()})}et.push(e)}function rt(){for(;et.length>0;)tt()}var it=~(y|b|v);function at(e,t){e.f=e.f&it|t}function ot(e){e.f&512||e.deps===null?at(e,v):at(e,b)}function st(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),at(e,v)}function ct(e,t){if(t){let t=document.body;e.autofocus=!0,nt(()=>{document.activeElement===t&&e.focus()})}}function lt(e){Se&&pn(e)!==null&&hn(e)}var ut=!1;function dt(){ut||(ut=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[ue]?.()})},{capture:!0}))}function ft(e){var t=Xn,n=$n;Qn(null),er(null);try{return e()}finally{Qn(t),er(n)}}function pt(e,t,n,r=n){e.addEventListener(t,()=>ft(n));let i=e[ue];e[ue]=i?()=>{i(),r(!0)}:()=>r(!0),dt()}function mt(e,t,n,r){let i=$e()?vt:xt;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=$n,c=ht(),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){bn(e,s)}gt()}}var d=_t();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>bt(e))).then(u).catch(e=>bn(e,s)).finally(d)}l?l.then(()=>{c(),f(),gt()}):f()}function ht(){var e=$n,t=Xn,n=Je,r=Ot;return function(i=!0){er(e),Qn(t),Ye(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function gt(e=!0){er(null),Qn(null),Ye(null),e&&Ot?.deactivate()}function _t(){var e=$n,t=e.b,n=Ot,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 vt(e){var t=2|y;return $n!==null&&($n.f|=E),{ctx:Je,deps:null,effects:null,equals:ke,f:t,fn:e,reactions:null,rv:0,v:me,wv:0,parent:$n,ac:null}}var yt=Symbol(`obsolete`);function bt(e,t,n){let r=$n;r===null&&Me();var i=void 0,a=Yt(me),o=!Xn,s=new Set;return An(()=>{var t=$n,n=m();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==de&&n.reject(e)}).finally(gt)}catch(e){n.reject(e),gt()}var c=Ot;if(o){if(t.f&32768)var l=_t();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(yt);else for(let e of s.values())e.reject(yt);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==yt&&(c.activate(),t?(a.f|=te,$t(a,t)):(a.f&8388608&&(a.f^=te),$t(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),Tn(()=>{for(let e of s)e.reject(yt)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function M(e){let t=vt(e);return nr(t),t}function xt(e){let t=vt(e);return t.equals=je,t}function St(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)Rn(t[n])}}function Ct(e){var t,n=$n,r=e.parent;if(!Jn&&r!==null&&e.v!==me&&r.f&24576)return ve(),e.v;er(r);try{St(e),t=mr(e)}finally{er(n)}return t}function wt(e){var t=Ct(e);!e.equals(t)&&(e.wv=dr(),(!Ot?.is_fork||e.deps===null)&&(Ot===null?e.v=t:(Ot.capture(e,t,!0),kt?.capture(e,t,!0)),e.deps===null))?at(e,v):Jn||(At===null?ot(e):(wn()||Ot?.is_fork)&&At.set(e,t))}function Tt(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac!==null&&ft(()=>{t.ac.abort(de),t.ac=null}),t.fn!==null&&(t.teardown=d),_r(t,0),In(t))}function Et(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&vr(t)}var Dt=null,Ot=null,kt=null,At=null,jt=null,Mt=!1,Nt=!1,Pt=null,Ft=null,It=0,Lt=1,Rt=class e{id=Lt++;#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(){Dt===null?Dt=this:(Dt.#n=this,this.#t=Dt),Dt=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)at(r,y),t(r);for(r of n.m)at(r,b),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^=v}}n||e.push(t)}return this.#c=[],e}#_(){this.#e=!0;for(let e of this.#u)this.#d.delete(e),at(e,y),this.schedule(e);for(let e of this.#d)at(e,b),this.schedule(e);this.apply();for(var t=Pt=[],n=[],r=Ft=[];this.#c.length>0;){It++>1e3&&(this.#S(),Bt());for(let e of this.#g())try{this.#v(e,t,n)}catch(t){throw Gt(e),this.#h()||this.discard(),t}}if(Ot=null,r.length>0){var i=e.ensure();for(let e of r)i.schedule(e)}if(Pt=null,Ft=null,this.#h()){this.#x(n),this.#x(t);for(let[e,t]of this.#f)Wt(e,t);r.length>0&&Ot.#_();return}let a=this.#y();if(a)this.#x(n),this.#x(t),a.#b(this);else{this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),kt=this,Ht(n),Ht(t),kt=null,this.#s?.resolve();var o=Ot;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&&(qt.clear(),o.#_())}}#v(e,t,n){e.f^=v;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^=v:i&4?t.push(r):fr(r)&&(i&16&&this.#d.add(r),vr(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),at(i,y),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#S(),Ot=this,this.#_()}#x(e){for(var t=0;t<e.length;t+=1)st(e[t],this.#u,this.#d)}capture(e,t,n=!1){e.v!==me&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),At?.set(e,t)),this.is_fork||(e.v=t)}activate(){Ot=this}deactivate(){Ot=null,At=null}flush(){try{Nt=!0,Ot=this,this.#_()}finally{It=0,jt=null,Pt=null,Ft=null,Nt=!1,Ot=null,At=null,qt.clear()}}discard(){for(let e of this.#i)e(this);this.#i.clear();for(let e of this.async_deriveds.values())e.reject(yt);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,nt(()=>{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??=m()).promise}static ensure(){if(Ot===null){let t=Ot=new e;!Nt&&!Mt&&nt(()=>{t.#e||t.flush()})}return Ot}apply(){At=null}schedule(e){jt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)?e.b.defer_effect(e):this.#c.push(e)}#S(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?Dt=e:t.#t=e,this.linked=!1}}};function zt(e){var t=Mt;Mt=!0;try{var n;for(e&&(Ot!==null&&!Ot.is_fork&&Ot.flush(),n=e());;){if(rt(),Ot===null)return n;Ot.flush()}}finally{Mt=t}}function Bt(){try{Le()}catch(e){bn(e,jt)}}var Vt=null;function Ht(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&fr(r)&&(Vt=new Set,vr(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&Bn(r),Vt?.size>0)){qt.clear();for(let e of Vt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Vt.has(n)&&(Vt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||vr(n)}}Vt.clear()}}Vt=null}}function Ut(e){Ot.schedule(e)}function Wt(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),at(e,v);for(var n=e.first;n!==null;)Wt(n,t),n=n.next}}function Gt(e){at(e,v);for(var t=e.first;t!==null;)Gt(t),t=t.next}var Kt=new Set,qt=new Map,Jt=!1;function Yt(e,t){return{f:0,v:e,reactions:null,equals:ke,rv:0,wv:0}}function N(e,t){let n=Yt(e,t);return nr(n),n}function Xt(e,t=!1,n=!0){let r=Yt(e);return t||(r.equals=je),Ue&&n&&Je!==null&&Je.l!==null&&(Je.l.s??=[]).push(r),r}function P(e,t,n=!1){return Xn!==null&&(!Zn||Xn.f&131072)&&$e()&&Xn.f&4325394&&(tr===null||!tr.has(e))&&Ve(),$t(e,n?F(t):t,Ft)}var Zt=null,Qt=0;function $t(e,t,n=null){if(!e.equals(t)){Jn?qt.set(e,t):qt.has(e)||qt.set(e,e.v);var r=Rt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&Ct(t),At===null&&ot(t)}e.wv=dr(),Zt=null,Qt=0,nn(e,y,n),Zt=null,$e()&&$n!==null&&$n.f&1024&&!($n.f&96)&&(ar===null?or([e]):ar.push(e)),!r.is_fork&&Kt.size>0&&!Jt&&en()}return t}function en(){Jt=!1;for(let e of Kt){e.f&1024&&at(e,b);let t;try{t=fr(e)}catch{t=!0}t&&vr(e)}Kt.clear()}function tn(e){P(e,e.v+1)}function nn(e,t,n){var r=e.reactions;if(r!==null){var i=$e(),a=r.length;if(Qt+=a,Qt>1e5&&Zt===null&&(Zt=new Set),Zt!==null){if(Zt.has(e))return;Zt.add(e)}for(var o=0;o<a;o++){var s=r[o],c=s.f;if(i||s!==$n){var l=(c&y)===0;if(l&&at(s,t),c&131072)Kt.add(s);else if(c&2){var u=s;At?.delete(u),nn(u,b,n)}else if(l){var d=s;c&16&&Vt!==null&&Vt.add(d),n===null?Ut(d):n.push(d)}}}}}function F(t){if(typeof t!=`object`||!t||ne 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=lr,f=e=>{if(lr===d)return e();var t=Xn,n=lr;Qn(null),ur(d);var r=e();return Qn(t),ur(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||ze();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(me,u));r.set(t,e),tn(o)}}else P(n,me),tn(o);return!0},get(e,n,i){if(n===ne)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>N(F(s?e[n]:me),u)),r.set(n,o)),o!==void 0){var c=H(o);return c===me?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===me)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===ne)return!0;var n=r.get(t),i=n!==void 0&&n.v!==me||Reflect.has(e,t);return(n!==void 0||$n!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>N(i?F(e[t]):me,u)),r.set(t,n)),H(n)===me)?!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(me,u)),r.set(d+``,p)):P(p,me)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>N(void 0,u)),P(c,F(n)),r.set(t,c));else{l=c.v!==me;var m=f(()=>F(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)}tn(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!==me});for(var[n,i]of r)i.v!==me&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Be()}})}function rn(e){try{if(typeof e==`object`&&e&&ne in e)return e[ne]}catch{}return e}function an(e,t){return Object.is(rn(e),rn(t))}var on,sn,cn,ln,un;function dn(){if(on===void 0){on=window,sn=document,cn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;ln=a(t,`firstChild`).get,un=a(t,`nextSibling`).get,u(e)&&(e[se]=void 0,e[oe]=null,e[ce]=void 0,e.__e=void 0),u(n)&&(n[le]=void 0)}}function fn(e=``){return document.createTextNode(e)}function pn(e){return ln.call(e)}function mn(e){return un.call(e)}function I(e,t){if(!Se)return pn(e);var n=pn(we);if(n===null)n=we.appendChild(fn());else if(t&&n.nodeType!==3){var r=fn();return n?.before(r),Te(r),r}return t&&vn(n),Te(n),n}function L(e,t=!1){if(!Se){var n=pn(e);return n instanceof Comment&&n.data===``?mn(n):n}if(t){if(we?.nodeType!==3){var r=fn();return we?.before(r),Te(r),r}vn(we)}return we}function R(e,t=!1){if(!Se)return pn(e);var n=I(e,t);return A(e),n}function z(e,t=1,n=!1){let r=Se?we:e;for(var i;t--;)i=r,r=mn(r);if(!Se)return r;if(n){if(r?.nodeType!==3){var a=fn();return r===null?i?.after(a):r.before(a),Te(a),a}vn(r)}return Te(r),r}function hn(e){e.textContent=``}function gn(){return!1}function _n(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 vn(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 yn(e){var t=$n;if(t===null)return Xn.f|=te,e;if(!(t.f&32768)&&!(t.f&4))throw e;bn(e,t)}function bn(e,t){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 xn(e){$n===null&&(Xn===null&&Ie(e),Fe()),Jn&&Pe(e)}function Sn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function Cn(e,t){var n=$n;n!==null&&n.f&8192&&(e|=x);var r={ctx:Je,deps:null,nodes:null,f:e|y|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};Ot?.register_created_effect(r);var i=r;if(e&4)Pt===null?Rt.ensure().schedule(r):Pt.push(r);else if(t!==null){try{vr(r)}catch(e){throw Rn(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|=T))}if(i!==null&&(i.parent=n,n!==null&&Sn(i,n),Xn!==null&&Xn.f&2&&!(e&64))){var a=Xn;(a.effects??=[]).push(i)}return r}function wn(){return Xn!==null&&!Zn}function Tn(e){let t=Cn(8,null);return at(t,v),t.teardown=e,t}function B(e){xn(`$effect`);var t=$n.f;if(!Xn&&t&32&&Je!==null&&!Je.i){var n=Je;(n.e??=[]).push(e)}else return En(e)}function En(e){return Cn(4|ee,e)}function Dn(e){return xn(`$effect.pre`),Cn(8|ee,e)}function On(e){Rt.ensure();let t=Cn(64|E,e);return(e={})=>new Promise(n=>{e.outro?Vn(t,()=>{Rn(t),n(void 0)}):(Rn(t),n(void 0))})}function kn(e){return Cn(4,e)}function An(e){return Cn(k|E,e)}function jn(e,t=0){return Cn(8|t,e)}function V(e,t=[],n=[],r=[]){mt(r,t,n,t=>{Cn(8,()=>{e(...t.map(H))})})}function Mn(e,t=0){return Cn(16|t,e)}function Nn(e,t=0){return Cn(_|t,e)}function Pn(e){return Cn(32|E,e)}function Fn(e){var t=e.teardown;if(t!==null){let n=Jn,r=Xn;Yn(!0),Qn(null);try{t.call(null)}catch(t){bn(t,e.parent)}finally{Yn(n),Qn(r)}}}function In(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&ft(()=>{e.abort(de)});var r=n.next;n.f&64?n.parent=null:Rn(n,t),n=r}}function Ln(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Rn(t),t=n}}function Rn(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(zn(e.nodes.start,e.nodes.end),n=!0),e.f|=w,In(e,t&&!n),_r(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Fn(e),e.f^=w,e.f|=S;var i=e.parent;i!==null&&i.first!==null&&Bn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function zn(e,t){for(;e!==null;){var n=e===t?null:mn(e);e.remove(),e=n}}function Bn(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 Vn(e,t,n=!0){var r=[];e.f|=256,Hn(e,r,!0);var i=()=>{n&&Rn(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Hn(e,t,n){if(!(e.f&8192)){e.f^=x;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);Hn(i,t,o?n:!1)}i=a}}}function Un(e){e.f&=-257,Wn(e,!0)}function Wn(e,t){if(!(e.f&256)&&e.f&8192){e.f^=x,e.f&1024||(at(e,y),Rt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=!!(n.f&65536)||!!(n.f&32);Wn(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 Gn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:mn(n);t.append(n),n=i}}var Kn=null,qn=!1,Jn=!1;function Yn(e){Jn=e}var Xn=null,Zn=!1;function Qn(e){Xn=e}var $n=null;function er(e){$n=e}var tr=null;function nr(e){Xn!==null&&(Xn.f&2097152||Xn.f&2)&&(tr??=new Set).add(e)}var rr=null,ir=0,ar=null;function or(e){ar=e}var sr=1,cr=0,lr=cr;function ur(e){lr=e}function dr(){return++sr}function fr(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(fr(a)&&wt(a),a.wv>e.wv)return!0}t&512&&At===null&&at(e,v)}return!1}function pr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(tr!==null&&tr.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?pr(a,t,!1):t===a&&(n?at(a,y):a.f&1024&&at(a,b),Ut(a))}}function mr(e){var t=rr,n=ir,r=ar,i=Xn,a=tr,o=Je,s=Zn,c=lr,l=e.f;rr=null,ir=0,ar=null,Xn=l&96?null:e,tr=null,Ye(e.ctx),Zn=!1,lr=++cr,e.ac!==null&&(ft(()=>{e.ac.abort(de)}),e.ac=null);try{e.f|=O;var u=e.fn,d=u();e.f|=C;var f=hr(e);if($e()&&ar!==null&&!Zn&&f!==null&&!(e.f&6146))for(var p=0;p<ar.length;p++)pr(ar[p],e);if(i!==null&&i!==e){if(cr++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=cr;if(t!==null)for(let e of t)e.rv=cr;ar!==null&&(r===null?r=ar:r.push(...ar))}return e.f&8388608&&(e.f^=te),d}catch(t){return hr(e),yn(t)}finally{e.f^=O,rr=t,ir=n,ar=r,Xn=i,tr=a,Ye(o),Zn=s,lr=c}}function hr(e){var t=e.deps,n=Ot?.is_fork;if(rr!==null){var r;if(n||_r(e,ir),t!==null&&ir>0)for(t.length=ir+rr.length,r=0;r<rr.length;r++)t[ir+r]=rr[r];else e.deps=t=rr;if(wn()&&e.f&512)for(r=ir;r<t.length;r++)(t[r].reactions??=[]).push(e)}else!n&&t!==null&&ir<t.length&&(_r(e,ir),t.length=ir);return t}function gr(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&&(rr===null||!n.call(rr,r))){var s=r;s.f&512&&(s.f^=512),s.v!==me&&ot(s),s.ac!==null&&ft(()=>{s.ac.abort(de),s.ac=null,at(s,y)}),Tt(s),_r(s,0)}}function _r(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)gr(e,n[r])}function vr(e){var t=e.f;if(!(t&16384)){at(e,v);var n=$n,r=qn;$n=e,qn=!(t&96);try{t&16777232?Ln(e):In(e),Fn(e);var i=mr(e);e.teardown=typeof i==`function`?i:null,e.wv=sr}finally{qn=r,$n=n}}}async function yr(){await Promise.resolve(),zt()}function H(e){var t=!!(e.f&2);if(Kn?.add(e),Xn!==null&&!Zn&&!($n!==null&&$n.f&16384)&&(tr===null||!tr.has(e))){var r=Xn.deps;if(Xn.f&2097152)e.rv<cr&&(e.rv=cr,rr===null&&r!==null&&r[ir]===e?ir++:rr===null?rr=[e]:rr.push(e));else{Xn.deps??=[],n.call(Xn.deps,e)||Xn.deps.push(e);var i=e.reactions;i===null?e.reactions=[Xn]:n.call(i,Xn)||i.push(Xn)}}if(Jn&&qt.has(e))return qt.get(e);if(t){var a=e;if(Jn){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||xr(a))&&(o=Ct(a)),qt.set(a,o),o}var s=!(a.f&512)&&!Zn&&Xn!==null&&(qn||!!(Xn.f&512)),c=(a.f&C)===0;fr(a)&&(s&&(a.f|=512),wt(a)),s&&!c&&(Et(a),br(a))}if(At?.has(e))return At.get(e);if(e.f&8388608)throw e.v;return e.v}function br(e){if(e.f|=512,e.deps!==null)for(let t of e.deps)(t.reactions??=[]).push(e),t.f&2&&!(t.f&512)&&(Et(t),br(t))}function xr(e){if(e.v===me)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(qt.has(t)||t.f&2&&xr(t))return!0;return!1}function Sr(e){var t=Zn;try{return Zn=!0,e()}finally{Zn=t}}function Cr(e){if(!(typeof e!=`object`||!e||e instanceof EventTarget)){if(ne in e)wr(e);else if(!Array.isArray(e))for(let t in e){let n=e[t];typeof n==`object`&&n&&ne in n&&wr(n)}}}function wr(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{wr(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{}}}}}function Tr(e){return e.endsWith(`capture`)&&e!==`gotpointercapture`&&e!==`lostpointercapture`}var Er=[`beforeinput`,`click`,`change`,`dblclick`,`contextmenu`,`focusin`,`focusout`,`input`,`keydown`,`keyup`,`mousedown`,`mousemove`,`mouseout`,`mouseover`,`mouseup`,`pointerdown`,`pointermove`,`pointerout`,`pointerover`,`pointerup`,`touchend`,`touchmove`,`touchstart`];function Dr(e){return Er.includes(e)}var Or=`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(`.`),kr={formnovalidate:`formNoValidate`,ismap:`isMap`,nomodule:`noModule`,playsinline:`playsInline`,readonly:`readOnly`,defaultvalue:`defaultValue`,defaultchecked:`defaultChecked`,srcobject:`srcObject`,novalidate:`noValidate`,allowfullscreen:`allowFullscreen`,disablepictureinpicture:`disablePictureInPicture`,disableremoteplayback:`disableRemotePlayback`};function Ar(e){return e=e.toLowerCase(),kr[e]??e}[...Or];var jr=[`touchstart`,`touchmove`];function Mr(e){return jr.includes(e)}var Nr=Symbol(`events`),Pr=new Set,Fr=new Set;function Ir(e,t,n,r={}){function i(e){if(r.capture||Vr.call(t,e),!e.cancelBubble)return ft(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?(i.__removed=!1,nt(()=>{i.__removed||t.addEventListener(e,i,r)})):t.addEventListener(e,i,r),i}function Lr(e,t,n,r,i){var a={capture:r,passive:i},o=Ir(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Tn(()=>{o.__removed=!0,t.removeEventListener(e,o,a)})}function U(e,t,n){(t[Nr]??={})[e]=n}function Rr(e){for(var t=0;t<e.length;t++)Pr.add(e[t]);for(var n of Fr)n(e)}var zr=null,Br=!1;function Vr(e){var t=this,n=t.ownerDocument,r=e.type,a=e.composedPath?.()||[],o=a[0]||e.target;zr=e,Br||(Br=!0,setTimeout(()=>{Br=!1,zr=null}));var s=0,c=zr===e&&e[Nr];if(c){var l=a.indexOf(c);if(l!==-1&&(t===document||t===window)){e[Nr]=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=Xn,f=$n;Qn(null),er(null);try{for(var p,m=[];o!==null&&o!==t;){try{var h=o[Nr]?.[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[Nr]=t,delete e.currentTarget,Qn(d),er(f)}}}var Hr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Ur(e){return Hr?.createHTML(e)??e}function Wr(e){var t=_n(`template`);return t.innerHTML=Ur(e.replaceAll(`<!>`,`<!---->`)),t.content}function Gr(e,t){var n=$n;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(Se)return Gr(we,null),we;i===void 0&&(i=Wr(a?e:`<!>`+e),n||(i=pn(i)));var t=r||cn?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=pn(t),s=t.lastChild;Gr(o,s)}else Gr(t,t);return t}}function Kr(e,t,n=`svg`){var r=!e.startsWith(`<!>`),i=!!(t&1),a=`<${n}>${r?e:`<!>`+e}</${n}>`,o;return()=>{if(Se)return Gr(we,null),we;if(!o){var e=pn(Wr(a));if(i)for(o=document.createDocumentFragment();pn(e);)o.appendChild(pn(e));else o=pn(e)}var t=o.cloneNode(!0);if(i){var n=pn(t),r=t.lastChild;Gr(n,r)}else Gr(t,t);return t}}function qr(e,t){return Kr(e,t,`svg`)}function Jr(e=``){if(!Se){var t=fn(e+``);return Gr(t,t),t}var n=we;return n.nodeType===3?vn(n):(n.before(n=fn()),Te(n)),Gr(n,n),n}function Yr(){if(Se)return Gr(we,null),we;var e=document.createDocumentFragment(),t=document.createComment(``),n=fn();return e.append(t,n),Gr(t,n),e}function G(e,t){if(Se){var n=$n;n.f&32768&&n.nodes.end!==null||(n.nodes.end=we),Ee()}else e!==null&&e.before(t)}function Xr(e){let t=0,n=Yt(0),r;return()=>{wn()&&(H(n),jn(()=>(t===0&&(r=Sr(()=>e(()=>tn(n)))),t+=1,()=>{nt(()=>{--t,t===0&&(r?.(),r=void 0,tn(n))})})))}}var Zr=T|E;function Qr(e,t,n,r){new $r(e,t,n,r)}var $r=class{parent;is_pending=!1;transform_error;#e;#t=Se?we: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=Xr(()=>(this.#m=Yt(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=$n;t.b=this,t.f|=128,n(e)},this.parent=$n.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Mn(()=>{if(Se){let e=this.#t;Ee();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#y():this.#g()}else this.#b()},Zr),Se&&(this.#e=we)}#g(){try{this.#a=Pn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed,{reset:n,invoke_onerror:r}=this.#v(e);nt(r),t&&(this.#s=Pn(()=>{t(this.#e,()=>e,()=>n)}))}#v(e){var t=!1,n=!1;let r=()=>{t?xe():(t=!0,n&&He(),this.#s!==null&&Vn(this.#s,()=>{this.#s=null}),this.#S(()=>{this.#b()}))};return{reset:r,invoke_onerror:()=>{try{n=!0,this.#n.onerror?.(e,r),n=!1}catch(e){bn(e,this.#i&&this.#i.parent)}}}}#y(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=Pn(()=>e(this.#e)),nt(()=>{var e=this.#c=document.createDocumentFragment(),t=fn(),n=!1;e.append(t),this.#a=this.#S(()=>{try{return Pn(()=>this.#r(t))}catch(e){try{this.error(e),n=!0}catch(e){bn(e,this.#i.parent)}return null}}),this.#a===null?(this.#c=null,n&&this.#x(Ot)):this.#u===0&&(this.#e.before(e),this.#c=null,Vn(this.#o,()=>{this.#o=null}),this.#x(Ot))}))}#b(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=Pn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Gn(this.#a,e);let t=this.#n.pending;this.#o=Pn(()=>t(this.#e))}else this.#x(Ot)}catch(e){this.error(e)}}#x(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){st(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#S(e){var t=$n,n=Xn,r=Je;er(this.#i),Qn(this.#i),Ye(this.#i.ctx);try{return Rt.ensure(),e()}finally{er(t),Qn(n),Ye(r)}}#C(e,t){this.has_pending_snippet()?(this.#u+=e,this.#u===0&&(this.#x(t),this.#o&&Vn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))):this.parent&&this.parent.#C(e,t)}update_pending_count(e,t){this.#C(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,nt(()=>{this.#d=!1,this.#m&&$t(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),H(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;Ot?.is_fork?(this.#a&&Ot.skip_effect(this.#a),this.#o&&Ot.skip_effect(this.#o),this.#s&&Ot.skip_effect(this.#s),Ot.oncommit(()=>{this.#w(e)})):this.#w(e)}#w(e){this.#a&&=(Rn(this.#a),null),this.#o&&=(Rn(this.#o),null),this.#s&&=(Rn(this.#s),null),Se&&(Te(this.#t),j(),Te(De()));let t=this.#n.failed,n=e=>{let{reset:n,invoke_onerror:r}=this.#v(e);r(),t&&(this.#s=this.#S(()=>{try{return Pn(()=>{var r=$n;r.b=this,r.f|=128,t(this.#e,()=>e,()=>n)})}catch(e){return bn(e,this.#i.parent),null}}))};nt(()=>{var t;try{t=this.transform_error(e)}catch(e){bn(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(n,e=>bn(e,this.#i&&this.#i.parent)):n(t)})}};function K(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[le]??=e.nodeValue)&&(e[le]=n,e.nodeValue=`${n}`)}function ei(e,t){return ni(e,t)}var ti=new Map;function ni(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){dn();var l=void 0,u=On(()=>{var s=n??t.appendChild(fn());Qr(s,{pending:()=>{}},t=>{Xe({});var n=Je;if(o&&(n.c=o),a&&(i.$$events=a),Se&&Gr(t,null),l=e(t,i)||Qe(),Se&&($n.nodes.end=we,we===null||we.nodeType!==8||we.data!==`]`))throw ye(),pe;Ze()},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=Mr(r);for(let e of[t,document]){var a=ti.get(e);a===void 0&&(a=new Map,ti.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,Vr,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return d(r(Pr)),Fr.add(d),()=>{for(var e of u)for(let n of[t,document]){var r=ti.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Vr),r.delete(e),r.size===0&&ti.delete(n)):r.set(e,i)}Fr.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return ri.set(l,u),l}var ri=new WeakMap,ii=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)Un(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Un(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&&(Rn(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();Gn(r,t),t.append(fn()),this.#n.set(e,{effect:r,fragment:t})}else Rn(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Vn(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)||(Rn(n.effect),this.#n.delete(e))};ensure(e,t){var n=Ot,r=gn();if(t&&!this.#t.has(e)&&!this.#n.has(e)){if(r){var i=document.createDocumentFragment(),a=fn();i.append(a),this.#n.set(e,{effect:Pn(()=>t(a)),fragment:i})}else this.#t.set(e,Pn(()=>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 Se&&(this.anchor=we),this.#a(n)}};function q(e,t,n=!1){var r;Se&&(r=we,Ee());var i=new ii(e),a=n?T:0;function o(e,t){if(Se){var n=Oe(r);if(e!==parseInt(n.substring(1))){var a=De();Te(a),i.anchor=a,Ce(!1),i.ensure(e,t),Ce(!0);return}}i.ensure(e,t)}Mn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}var ai=Symbol(`NaN`);function oi(e,t,n){Se&&Ee();var r=new ii(e),i=!$e();Mn(()=>{var e=t();e!==e&&(e=ai),i&&typeof e==`object`&&e&&(e={}),r.ensure(e,n)})}function si(e,t){return t}function ci(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c<a;c++){let n=t[c];Vn(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;li(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;hn(d),d.append(u),e.items.clear()}li(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function li(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|=D,Gn(a,document.createDocumentFragment())):Rn(t[i],n)}}var ui;function J(t,n,i,a,o,s=null){var c=t,l=new Map;if(n&4){var u=t;c=Se?Te(pn(u)):u.appendChild(fn())}Se&&Ee();var d=null,f=xt(()=>{var t=i();return e(t)?t:t==null?[]:r(t)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,fi(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=D,mi(d,null,c)):Un(d):Vn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:Mn(()=>{p=H(f);var e=p.length;let t=!1;Se&&Oe(c)===`[!`!=(e===0)&&(c=De(),Te(c),Ce(!1),t=!0);for(var r=new Set,u=Ot,v=gn(),y=0;y<e;y+=1){Se&&we.nodeType===8&&we.data===`]`&&(c=we,t=!0,Ce(!1));var b=p[y],x=a(b,y),S=h?null:l.get(x);S?(S.v&&$t(S.v,b),S.i&&$t(S.i,y),v&&u.unskip_effect(S.e)):(S=pi(l,h?c:ui??=fn(),b,x,y,o,n,i),h||(S.e.f|=D),l.set(x,S)),r.add(x)}if(e===0&&s&&!d&&(h?d=Pn(()=>s(c)):(d=Pn(()=>s(ui??=fn())),d.f|=D)),e>r.size&&Ne(``,``,``),Se&&e>0&&Te(De()),!h){if(m.set(u,r),v){for(let[e,t]of l)r.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u)}t&&Ce(!0),H(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,Se&&(c=we)}function di(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function fi(e,t,n,i,a){var o=!!(i&8),s=t.length,c=e.items,l=di(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&&(Un(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432){if(_.f^=D,_===l)mi(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),hi(e,d,_),hi(e,_,y),mi(_,y,n),d=_,p=[],m=[],l=di(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],C=p[p.length-1];for(x=0;x<p.length;x+=1)mi(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);hi(e,S.prev,C.next),hi(e,d,S),hi(e,C,b),l=b,d=C,--v,p=[],m=[]}else u.delete(_),mi(_,l,n),hi(e,_.prev,_.next),hi(e,_,d===null?e.effect.first:d.next),hi(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=di(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=di(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(li(e,r(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var w=[];if(u!==void 0)for(_ of u)_.f&8192||w.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&w.push(l),l=di(l.next);var T=w.length;if(T>0){var E=i&4&&s===0?n:null;if(o){for(v=0;v<T;v+=1)w[v].nodes?.a?.measure();for(v=0;v<T;v+=1)w[v].nodes?.a?.fix()}ci(e,w,E)}}o&&nt(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function pi(e,t,n,r,i,a,o,s){var c=o&1?o&16?Yt(n):Xt(n,!1,!1):null,l=o&2?Yt(i):null;return{v:c,i:l,e:Pn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function mi(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=mn(r);if(a.before(r),r===i)return;r=o}}function hi(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function gi(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;Se&&(o=Te(pn(c)))}V(()=>{var e=$n;if(s===(s=t()??``))Se&&Ee();else if(n&&!Se)e.nodes=null,c.innerHTML=s,s!==``&&Gr(pn(c),c.lastChild);else if(e.nodes!==null&&(zn(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(Se){for(var a=we.data,l=Ee(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=mn(l);if(l===null)throw ye(),pe;Gr(we,u),o=Te(l)}else{var d=_n(r?`svg`:i?`math`:`template`,r?ge:i?_e:void 0);d.innerHTML=s;var f=r||i?d:d.content;if(Gr(pn(f),f.lastChild),r||i)for(;pn(f);)o.before(pn(f));else o.before(f)}}})}function _i(e,t,n){kn(()=>{var r=Sr(()=>t(e,n?.())||{});if(n&&r?.update){var i=!1,a={};jn(()=>{var e=n();Cr(e),i&&Ae(a,e)&&(a=e,r.update(e))}),i=!0}if(r?.destroy)return()=>r.destroy()})}function vi(e,t){var n=void 0,r;Nn(()=>{n!==(n=t())&&(r&&=(Rn(r),null),n&&(r=Pn(()=>{kn(()=>n(e))})))})}function yi(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=yi(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n)}return r}function bi(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=yi(e))&&(r&&(r+=` `),r+=t);return r}function xi(e){return typeof e==`object`?bi(e):e??``}var Si=[...` 	
\r\f\xA0\v`];function Ci(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||Si.includes(r[o-1]))&&(s===r.length||Si.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function wi(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 Ti(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Ei(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(Ti)),i&&c.push(...Object.keys(i).map(Ti));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=Ti(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+=wi(r)),i&&(n+=wi(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function Y(e,t,n,r,i,a){var o=e[se];if(Se||o!==n||o===void 0){var s=Ci(n,r,a);Se&&s===e.getAttribute(`class`)||(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[se]=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 Di(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 Oi(e,t,n,r){var i=e[ce];if(Se||i!==t){var a=Ei(t,r);Se&&a===e.getAttribute(`style`)||(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[ce]=t}else r&&(Array.isArray(r)?(Di(e,n?.[0],r[0]),Di(e,n?.[1],r[1],`important`)):Di(e,n,r));return r}function ki(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function Ai(e,t){var n=!(`__defaultValue`in e);(n||e.__defaultValue!==t)&&(e.__defaultValue=t,ji(e,!n||`__value`in e))}function ji(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=Pi(c);ki(c,i?a.includes(l):an(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 Mi(t,n,r=!1){if(t.multiple){if(n==null)return;if(!e(n))return be();for(var i of t.options)i.selected=n.includes(Pi(i))}else{for(i of t.options)if(an(Pi(i),n)){i.selected=!0;return}r&&n===void 0||(t.selectedIndex=-1)}}function Ni(e){var t=new MutationObserver(t=>{t.every(Fi)||(`__defaultValue`in e&&ji(e,!1),`__value`in e&&Mi(e,e.__value))});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),Tn(()=>{t.disconnect()})}function Pi(e){return`__value`in e?e.__value:e.value}function Fi(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 Ii=Symbol(`class`),Li=Symbol(`style`),Ri=Symbol(`is custom element`),zi=Symbol(`is html`),Bi=fe?`link`:`LINK`,Vi=fe?`input`:`INPUT`,Hi=fe?`option`:`OPTION`,Ui=fe?`select`:`SELECT`,Wi=fe?`progress`:`PROGRESS`;function Gi(e){if(Se){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[ue]=n,nt(n),dt()}}function Ki(e,t){var n=Xi(e);n.value!==(n.value=t??void 0)&&(e.value!==t||t===0&&e.nodeName===Wi)&&(e.value=t??``)}function qi(e,t){var n=Xi(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function X(e,t,n,r){var i=Xi(e);Se&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===Bi)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[ae]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&Qi(e).has(t)?e[t]=n:e.setAttribute(t,n))}function Ji(e,t,n,r,i=!1,a=!1){Se&&i&&e.nodeName===Vi&&(`defaultValue`in n||`defaultChecked`in n||Gi(e));var o=Xi(e),s=o[Ri],c=!o[zi];let l=Se&&s;l&&Ce(!1);var u=t||{},d=e.nodeName===Hi,f=e.nodeName===Ui;for(var p in t)!(p in n)&&p[0]+p[1]!==`$$`&&(n[p]=null);n.class?n.class=xi(n.class):(r||n[Ii])&&(n.class=null),n[Li]&&(n.style??=null);var m=Qi(e);if(e.nodeName===Vi&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==u.type||h===void 0&&e.hasAttribute(`type`))&&(u.type=h,X(e,`type`,h,a))}for(let i in n){let l=n[i];if(d&&i===`value`&&l==null)e.value=e.__value=``,u[i]=l;else if(i===`class`)Y(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,l,r,t?.[Ii],n[Ii]),u[i]=l,u[Ii]=n[Ii];else if(i===`style`)Oi(e,l,t?.[Li],n[Li]),u[i]=l,u[Li]=n[Li];else{var g=u[i];if(l!==g||l===void 0&&e.hasAttribute(i)){u[i]=l;var _=i[0]+i[1];if(_!==`$$`){if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=Dr(r);if(Tr(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(l!=null)continue;e.removeEventListener(r,u[n],t),u[n]=null}if(v)U(r,e,l),Rr([r]);else if(l!=null){function a(e){u[i].call(this,e)}u[n]=Ir(r,e,a,t)}}else if(i===`style`)X(e,i,l);else if(i===`autofocus`)ct(e,!!l);else if(!s&&(i===`__value`||i===`value`&&l!=null))e.value=e.__value=l;else if(i===`selected`&&d)ki(e,l);else{var y=i;c||(y=Ar(y));var b=y===`defaultValue`||y===`defaultChecked`;if(f&&y===`defaultValue`)continue;if(l==null&&!s&&!b){if(o[i]=null,y===`value`||y===`checked`){let n=e,r=t===void 0;if(y===`value`){let e=n.defaultValue;n.removeAttribute(y),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(y),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i)}else b||(s||typeof l!=`string`)&&m.has(y)?(e[y]=l,y in o&&(o[y]=me)):typeof l!=`function`&&X(e,y,l,a)}}}}}return l&&Ce(!0),u}function Yi(e,t,n=[],r=[],i=[],a,o=!1,s=!1){mt(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===Ui,l=!1;if(Nn(()=>{var u=t(...n.map(H)),d=Ji(e,r,u,a,o,s);if(l&&c){var f=e;`defaultValue`in u&&Ai(f,u.defaultValue),`value`in u&&Mi(f,u.value)}for(let e of Object.getOwnPropertySymbols(i))u[e]||Rn(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var p=u[t];t.description!==`@attach`||r&&p===r[t]||(i[t]&&Rn(i[t]),i[t]=Pn(()=>vi(e,()=>p))),d[t]=p}r=d}),c){var u=e;kn(()=>{var e=r;`defaultValue`in e&&Ai(u,e.defaultValue),Mi(u,e.value,!0),Ni(u)})}l=!0})}function Xi(e){return e[oe]??={[Ri]:e.nodeName.includes(`-`),[zi]:e.namespaceURI===he}}var Zi=new Map;function Qi(e){var t=e.getAttribute(`is`)||e.nodeName,n=Zi.get(t);if(n)return n;Zi.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 $i(e,t,n=t){var r=new WeakSet;pt(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=ia(e)?aa(a):a,n(a),Ot!==null&&r.add(Ot),await yr(),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))}}}),(Se&&e.defaultValue!==e.value||Sr(t)==null&&e.value)&&(n(ia(e)?aa(e.value):e.value),Ot!==null&&r.add(Ot)),jn(()=>{var n=t();if(e===document.activeElement){var i=Ot;if(r.has(i))return}ia(e)&&n===aa(e.value)||(e.type!==`date`||n||e.value)&&n!==e.value&&(e.value=n??``)})}var ea=new Set;function ta(e,t,n,r,i=r){var a=n.getAttribute(`type`)===`checkbox`,o=e;let s=!1;if(t!==null)for(var c of t)o=o[c]??=[];o.push(n),pt(n,`change`,()=>{var e=n.__value;a&&(e=ra(o,e,n.checked)),i(e)},()=>i(a?[]:null)),jn(()=>{var e=r();Se&&n.defaultChecked!==n.checked?s=!0:a?(e||=[],n.checked=e.includes(n.__value)):n.checked=an(n.__value,e)}),Tn(()=>{var e=o.indexOf(n);e!==-1&&o.splice(e,1)}),ea.has(o)||(ea.add(o),nt(()=>{o.sort((e,t)=>e.compareDocumentPosition(t)===4?-1:1),ea.delete(o)})),nt(()=>{if(s){var e=a?ra(o,e,n.checked):o.find(e=>e.checked)?.__value;i(e)}})}function na(e,t,n=t){pt(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(Se&&e.defaultChecked!==e.checked||Sr(t)==null)&&n(e.checked),jn(()=>{e.checked=!!t()})}function ra(e,t,n){for(var r=new Set,i=0;i<e.length;i+=1)e[i].checked&&r.add(e[i].__value);return n||r.delete(t),Array.from(r)}function ia(e){var t=e.type;return t===`number`||t===`range`}function aa(e){return e===``?null:+e}function oa(e,t){return e===t||e?.[ne]===t}function sa(e=Qe(),t,n,r){var i=Je.r,a=$n;return kn(()=>{var o,s;return jn(()=>{o=s,s=r?.()||[],Sr(()=>{oa(n(...s),e)||(t(e,...s),o&&oa(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&&oa(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function ca(e,t,n,r,i){var a=()=>{r(n[e])};n.addEventListener(t,a),i?jn(()=>{n[e]=i()}):a(),(n===document.body||n===window||n===document)&&Tn(()=>{n.removeEventListener(t,a)})}function la(e=!1){let t=Je,n=t.l.u;if(!n)return;let r=()=>Cr(t.s);if(e){let e=0,n={},i=vt(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>H(i)}n.b.length&&Dn(()=>{ua(t,r),p(n.b)}),B(()=>{let e=Sr(()=>n.m.map(f));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&B(()=>{ua(t,r),p(n.a)})}function ua(e,t){if(e.l.s)for(let t of e.l.s)H(t);t()}function da(e){var t=Yt(0);return function(){return arguments.length===1?(P(t,H(t)+1),arguments[0]):(H(t),e())}}var fa=!1;function pa(e){var t=fa;try{return fa=!1,[e(),fa]}finally{fa=t}}function ma(e,t,n,r){var i=!Ue||!!(n&2),o=!!(n&8),s=!!(n&16),c=r,l=!0,u=void 0,d=()=>s&&i?(u??=vt(r),H(u)):(l&&(l=!1,c=s?Sr(r):r),c);let f;if(o){var p=ne in e||ie in e;f=a(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;o?[m,h]=pa(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&Re(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?vt:xt)(()=>(v=!1,g()));o&&H(y);var b=$n;return(function(e,t){if(arguments.length>0){let n=t?H(y):i&&o?F(e):e;return P(y,n),v=!0,c!==void 0&&(c=n),e}return Jn&&v||b.f&16384?y.v:H(y)})}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var ha=`speccoder-token`;function ga(){let e=location.hash.match(/token=([0-9a-f]{64})/);return e?.[1]?(sessionStorage.setItem(ha,e[1]),history.replaceState(null,``,location.pathname+location.search),e[1]):sessionStorage.getItem(ha)??``}var _a=ga(),va=class extends Error{status;constructor(e,t){super(t),this.status=e}};async function ya(e,t,n){let r=await fetch(t,{method:e,headers:{Authorization:`Bearer ${_a}`,...n===void 0?{}:{"Content-Type":`application/json`}},body:n===void 0?void 0:JSON.stringify(n)}),i=await r.text(),a=i?JSON.parse(i):null;if(!r.ok)throw new va(r.status,a?.error??r.statusText);return a}var ba=e=>ya(`GET`,e),xa=(e,t)=>ya(`POST`,e,t);function Sa(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))r&&t.set(n,r);let n=t.toString();return n?`?${n}`:``}function Ca(e,t){let n=!1,r=null;return(async()=>{for(;!n;){r=new AbortController;try{let n=await fetch(`/api/events`,{headers:{Authorization:`Bearer ${_a}`},signal:r.signal});if(!n.ok||!n.body)throw Error(String(n.status));t(!0);let i=n.body.getReader(),a=new TextDecoder,o=``;for(;;){let{value:t,done:n}=await i.read();if(n)break;o+=a.decode(t,{stream:!0});let r;for(;(r=o.indexOf(`

`))>=0;){let t=o.slice(0,r);o=o.slice(r+2);let n=t.split(`
`).filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trimStart()).join(`
`);if(n)try{e(JSON.parse(n))}catch{}}}}catch{}t(!1),n||await new Promise(e=>setTimeout(e,1500))}})(),()=>{n=!0,r?.abort()}}function wa(){let e=0;return(t,n,r)=>{let i=++e;t.then(t=>i===e&&n(t),t=>i===e&&r?.(t))}}var Ta={skill:{verb:`Run`,icon:`sparkle`,holdsWorktree:!0},run_task:{verb:`Run`,icon:`play`,holdsWorktree:!0},run_feature:{verb:`Run`,icon:`play`,holdsWorktree:!0},converge:{verb:`Re-check`,icon:`loop`,holdsWorktree:!0},commit:{verb:`Commit`,icon:`check`,holdsWorktree:!1},approve:{verb:`Approve`,icon:`check`,holdsWorktree:!1},reject:{verb:`Reject`,icon:`xmark`,holdsWorktree:!1},accept:{verb:`Accept`,icon:`check`,holdsWorktree:!1},skip:{verb:`Skip`,icon:`skip`,holdsWorktree:!1},nudge:{verb:`Nudge`,icon:`sparkle`,holdsWorktree:!1},done:{verb:`I Did It`,icon:`check`,holdsWorktree:!1},hint:{verb:`Hint & Retry`,icon:`sparkle`,holdsWorktree:!0},rule:{verb:`Rule`,icon:`shield`,holdsWorktree:!1},review:{verb:`Review`,icon:`doc`,holdsWorktree:!1},issue_comment:{verb:`Comment`,icon:`branch`,holdsWorktree:!1},quick_change:{verb:`Run`,icon:`sparkle`,holdsWorktree:!0},hook_trust:{verb:`Trust…`,icon:`shield`,holdsWorktree:!1},hook_test:{verb:`Test`,icon:`play`,holdsWorktree:!1},extension_trust:{verb:`Trust…`,icon:`shield`,holdsWorktree:!1},view_run:{verb:`Run Again`,icon:`loop`,holdsWorktree:!1},keep_set_aside:{verb:`Keep`,icon:`check`,holdsWorktree:!0},drop_set_aside:{verb:`Discard`,icon:`xmark`,holdsWorktree:!1},fix_setup:{verb:`Fix`,icon:`check`,holdsWorktree:!0},feature:{verb:`Switch`,icon:`list`,holdsWorktree:!1},pull_request:{verb:`Open`,icon:`branch`,holdsWorktree:!1},allow_always:{verb:`Always Allow`,icon:`lock`,holdsWorktree:!1},widen_policy:{verb:`Allow prefix`,icon:`lock`,holdsWorktree:!1},decide_batch:{verb:`Decide waiting calls`,icon:`hand`,holdsWorktree:!1},bug_fix:{verb:`Record`,icon:`exclaim`,holdsWorktree:!0},bug_confirm:{verb:`Confirm`,icon:`check`,holdsWorktree:!0},bug_run:{verb:`Reproduce`,icon:`play`,holdsWorktree:!0},bug_keep:{verb:`Keep`,icon:`check`,holdsWorktree:!0},oracle_tests:{verb:`Write Tests`,icon:`shield`,holdsWorktree:!1},approve_and_run:{verb:`Approve and Run`,icon:`play`,holdsWorktree:!0},comment:{verb:`Comment`,icon:`doc`,holdsWorktree:!1},comments_send:{verb:`Send Comments`,icon:`sparkle`,holdsWorktree:!1},revision_undo:{verb:`Undo Revision`,icon:`undo`,holdsWorktree:!1},code_nudge:{verb:`Send as a Nudge`,icon:`sparkle`,holdsWorktree:!1},acceptance_at:{verb:`Write Acceptance Here`,icon:`shield`,holdsWorktree:!1},rule_scenario:{verb:`Tests Are Wrong…`,icon:`exclaim`,holdsWorktree:!1},check_story:{verb:`Check This Story`,icon:`shield`,holdsWorktree:!0},accept_untestable:{verb:`Accept as Untestable…`,icon:`check`,holdsWorktree:!1},preset_add:{verb:`Add the Preset`,icon:`doc`,holdsWorktree:!1},plan_through:{verb:`Start`,icon:`sparkle`,holdsWorktree:!1},new_project:{verb:`Create`,icon:`plus`,holdsWorktree:!1},undo_new_project:{verb:`Undo`,icon:`undo`,holdsWorktree:!1},clone_repository:{verb:`Clone`,icon:`branch`,holdsWorktree:!1},open_sample:{verb:`Try the Sample`,icon:`play`,holdsWorktree:!1},sample_checks:{verb:`Run the checks`,icon:`check`,holdsWorktree:!1},decline_promotion:{verb:`Not now`,icon:`minus`,holdsWorktree:!1},explore:{verb:`Explore`,icon:`sparkle`,holdsWorktree:!0},explore_choose:{verb:`Choose`,icon:`check`,holdsWorktree:!1},command:{verb:`Copy`,icon:`terminal`,holdsWorktree:!1}};function Ea(e){return e.kind===`run`?e.task?`run_task`:`run_feature`:e.kind}function Da(e){return e.id?`${e.group}:${e.id.kind}:${e.id.subject??``}`:`${e.group}:${e.command}`}function Oa(e,t,n){return e.filter(e=>e.id.kind===t&&(n===void 0||e.id.subject===n))}function ka(e,t){return e.filter(e=>e.role===t)}function Aa(e,t){return e.filter(e=>(e.group===`task`||e.group===`work`)&&e.id.subject===t)}function ja(e,t){return{...t,run:e,blocked:null,input:t.input??null,confirm:t.confirm??null}}function Ma(e,t){let n=new Set([t]);for(let t=!0;t;){t=!1;for(let r of e)!n.has(r.id)&&r.blocked_by.some(e=>n.has(e))&&(n.add(r.id),t=!0)}return e.filter(e=>e.id!==t&&n.has(e.id)).map(e=>e.id)}function Na(e,t=[],n=null){let r=Ma(t,e),i=r.length?`runs pass it by; ${r.join(`, `)} ${r.length===1?`stays`:`stay`} blocked`:`runs pass it by; what depends on it stays blocked`;return[ja({kind:`done`,task:e},{group:`task`,label:`I did it: ${e}`,why:`tick it on your word (attested, never shown as verified)`,command:`speccoder task done ${e}`}),{...ja({kind:`hint`,task:e},{group:`task`,label:`hint & retry ${e}`,why:`a note the agent reads, then a new attempt now`,command:`speccoder task hint ${e} "…"`,input:`The hint`}),blocked:n},ja({kind:`skip`,task:e},{group:`task`,label:`skip ${e}`,why:i,command:`speccoder task skip ${e} --reason "…"`,input:`Why it is skipped`})]}function Pa(e){return e.lane===`yours`?e.last_attempt?e.last_attempt.outcome===`blocked`?{claim:e.last_attempt.reason}:null:{claim:null}:null}function Fa(e){switch(e.how){case`perform`:return e.input?`Run…`:`Run`;case`view`:return`Open`;case`command`:return e.interactive?`Open in Terminal`:`Run…`;case`shell`:case`words`:return`Copy`}}function Ia(e){return e.replace(/^→\s*/,``).replace(/\s+\(.*\)$/,``)}function La(e){return/^→/.test(e)}function Ra(e){return e.replace(/^speccoder /,``)}function za(e){let t=e=>e!==``&&/^[A-Za-z0-9_.\/:=,@+-]+$/.test(e)?e:`'${e.replaceAll(`'`,`'\\''`)}'`;return e.map(e=>e.map(t).join(` `)).join(` && `)}function Ba(e){return e.length===1&&e[0]?.[0]===`speccoder`}function Va(e,t={},n=`error`){let r=[e.code?`${n}[${e.code}]: ${e.message}`:e.message];for(let t of e.fix??[])r.push(`fix: ${t.replace(/^→\s*/,``)}`);let i=e.docs??(e.code?`https://hupe1980.github.io/speccoder/docs/codes/#${e.code.toLowerCase()}`:null);i&&r.push(`docs: ${i}`);let a=t.run??e.data?.run_id,o=[`speccoder ${t.version??`?`}`,t.os,a?`run ${a}`:null].filter(Boolean);return r.push(o.join(` · `)),r.join(`
`)+`
`}function Ha(e){let t=[],n=/(https?:\/\/[^\s"'<>)]+)|\b([A-Z0-9]{4}-[A-Z0-9]{4})\b/g,r=0;for(let i of e.matchAll(n)){let n=i.index??0;n>r&&t.push({text:e.slice(r,n),kind:`text`}),t.push({text:i[0],kind:i[1]?`url`:`code`}),r=n+i[0].length}return(r<e.length||!t.length)&&t.push({text:e.slice(r),kind:`text`}),t}var Ua=e=>{try{return localStorage.getItem(e)}catch{return null}},Wa=(e,t)=>{try{localStorage.setItem(e,t)}catch{}};function Ga(e,t,n,r){return{"data-ask":JSON.stringify({kind:e,reference:t,label:n,text:r})}}var Ka=e=>{let t=e?.closest(`[data-ask]`)?.getAttribute(`data-ask`);try{return t?JSON.parse(t):null}catch{return null}};function qa(){let e=typeof window>`u`?null:window.getSelection(),t=e?.toString().trim()??``;if(!e||!t||e.isCollapsed||!e.rangeCount)return null;let n=e.anchorNode,r=n instanceof Element?n:n?.parentElement;if(!r||r.closest(`.ask, textarea, input, [contenteditable]`))return null;let i=e.getRangeAt(0);return{text:t.slice(0,4e3),from:Ka(r),rect:typeof i.getBoundingClientRect==`function`?i.getBoundingClientRect():null}}function Ja(){let e=qa();if(e){let t=e.text.length>36?`${e.text.slice(0,34).trimEnd()}…`:e.text;return{kind:`selection`,reference:e.from?{from:e.from.label??e.from.kind}:{},label:`“${t}”`,text:e.from?`${e.text}\n\n(selected in ${e.from.label??e.from.kind})`:e.text}}return Ka(typeof document>`u`?null:document.activeElement)}function Ya(e){return`${{read_file:`Read`,list_files:`Listed`,search_code:`Searched for`,git_status:`Looked at the working tree`,git_diff:`Diffed`,git_log:`History of`,git_show:`Showed`,journal_account:`Read the account of`,task_evidence:`Evidence of`,report:`Report of`,inbox:`Looked at Needs You`,explain:`Looked up`,propose:`Proposed`}[e.tool]??e.tool} ${e.target}`.trim()}var Z=new class{#e=N(Ua(`speccoder-ask-open`)===`1`);get open(){return H(this.#e)}set open(e){P(this.#e,e,!0)}#t=N(F(Math.min(640,Math.max(320,Number(Ua(`speccoder-ask-width`))||400))));get width(){return H(this.#t)}set width(e){P(this.#t,e,!0)}#n=N(null);get conversation(){return H(this.#n)}set conversation(e){P(this.#n,e,!0)}#r=N(F([]));get turns(){return H(this.#r)}set turns(e){P(this.#r,e,!0)}#i=N(F([]));get chips(){return H(this.#i)}set chips(e){P(this.#i,e,!0)}#a=N(!1);get viewDropped(){return H(this.#a)}set viewDropped(e){P(this.#a,e,!0)}#o=N(null);get pending(){return H(this.#o)}set pending(e){P(this.#o,e,!0)}#s=N(null);get queued(){return H(this.#s)}set queued(e){P(this.#s,e,!0)}starting=null;#c=N(null);get failed(){return H(this.#c)}set failed(e){P(this.#c,e,!0)}#l=N(null);get list(){return H(this.#l)}set list(e){P(this.#l,e,!0)}#u=N(F([]));get results(){return H(this.#u)}set results(e){P(this.#u,e,!0)}#d=N(F({}));get confirmed(){return H(this.#d)}set confirmed(e){P(this.#d,e,!0)}#f=N(F([]));get recent(){return H(this.#f)}set recent(e){P(this.#f,e,!0)}#p=N(null);get peek(){return H(this.#p)}set peek(e){P(this.#p,e,!0)}#m=N(null);get sheet(){return H(this.#m)}set sheet(e){P(this.#m,e,!0)}#h=N(0);get focus(){return H(this.#h)}set focus(e){P(this.#h,e,!0)}toggle(e=!this.open){this.open=e,Wa(`speccoder-ask-open`,e?`1`:`0`),e&&this.focus++}resize(e){this.width=Math.min(640,Math.max(320,Math.round(e))),Wa(`speccoder-ask-width`,String(this.width))}get viewChip(){if(this.viewDropped)return null;let e=Q.report?.data?.feature??null;if(Q.selected){let t=Q.report?.data?.tasks.find(e=>e.id===Q.selected);return{kind:`task`,reference:{task:Q.selected,feature:e},label:t?`${t.id} ${t.title}`:Q.selected,from_view:!0}}return e?{kind:`feature`,reference:{feature:e},label:e,from_view:!0}:null}get tasks(){return[this.viewChip,...this.chips].filter(e=>e?.kind===`task`).map(e=>({feature:e.reference.feature,task:e.reference.task}))}get offer(){return(Q.inbox?.data?.items??[]).find(e=>e.kind===`promote`&&this.tasks.some(t=>t.task===e.task&&(!t.feature||t.feature===e.feature)))??null}async refresh(){if(this.conversation)try{let e=await ba(`/api/ask/conversation${Sa({id:this.conversation})}`);this.results=e.data?.results??this.results}catch{}}async loadRecent(){try{let e=await ba(`/api/ask/conversations`);this.recent=(e.data?.conversations??[]).slice(0,3)}catch{this.recent=[]}}async peekAccount(e,t=null){this.peek={run:e,turns:null,marked:t};let n=await ba(`/api/account${Sa({run:e})}`).catch(e=>({turns:void 0,error:String(e)}));this.peek?.run===e&&(this.peek={run:e,turns:n.turns??[],error:n.error,marked:t})}get suggestions(){let e=Q.report?.data,t=Q.selected?e?.tasks.find(e=>e.id===Q.selected):null;return t?[`Why is ${t.id} ${t.state.replace(/_/g,` `)}?`,`What would ${t.id} change in the code?`,`What does the evidence of ${t.id} show?`]:Q.view===`inbox`?[`What needs me first, and why?`,`Which of these is riskiest to accept?`]:e?[e.tasks.filter(e=>![`verified`,`attested`,`skipped`].includes(e.state)).length?`What is left in ${e.feature}?`:`How was ${e.feature} verified?`,`What changed most recently, and why?`,`Where is the main entry point of the code?`,`Which requirement has the weakest evidence?`]:[`What does this project do?`,`How is the code organised?`]}add(e){this.chips.some(t=>t.kind===e.kind&&JSON.stringify(t.reference)===JSON.stringify(e.reference))||(this.chips=[...this.chips,e].slice(-8)),this.toggle(!0)}remove(e){e===`view`?this.viewDropped=!0:this.chips=this.chips.filter((t,n)=>n!==e)}fresh(){this.conversation=null,this.turns=[],this.results=[],this.confirmed={},this.failed=null,this.list=null,this.viewDropped=!1,this.focus++}async send(e){let t=e.trim();if(!t||this.pending)return;let n=[...this.viewChip?[this.viewChip]:[],...this.chips];this.failed=null,this.list=null,this.pending={question:t,steps:[],words:``},this.conversation||(this.starting=`c-${Date.now().toString(16)}${Math.floor(Math.random()*65536).toString(16).padStart(4,`0`)}`);try{let e=await xa(`/api/ask`,{conversation:this.conversation,id:this.conversation?null:this.starting,text:t,chips:n,feature:Q.report?.data?.feature??null});e.data?(this.conversation=e.data.conversation,this.turns=[...this.turns,e.data],this.chips=[]):this.failed={question:t,message:e.message}}catch(e){this.failed={question:t,message:String(e.message??e)}}finally{this.pending=null;let e=this.queued;this.queued=null,e&&this.send(e)}}async stop(){let e=this.pending;if(e&&!e.stopping){this.pending={...e,stopping:!0};try{await xa(`/api/ask/stop`,{conversation:this.conversation??this.starting})}catch{}}}event(e){let t=this.pending;t&&(e.event===`ask_step`&&(this.pending={...t,steps:[...t.steps,{tool:e.tool??``,target:e.target??``,refused:!!e.refused}]}),e.event===`ask_text`&&!t.stopping&&(this.pending={...t,words:t.words+(e.delta??``)}))}async showList(){try{let e=await ba(`/api/ask/conversations`);this.list=e.data?.conversations??[]}catch{this.list=[]}}async resume(e){try{let t=await ba(`/api/ask/conversation${Sa({id:e})}`);if(!t.data)return;this.conversation=t.data.conversation.id,this.turns=t.data.turns,this.results=t.data.results??[],this.confirmed={},this.list=null,this.focus++}catch{}}},Q=new class{#e=N(null);get project(){return H(this.#e)}set project(e){P(this.#e,e,!0)}#t=N(null);get feature(){return H(this.#t)}set feature(e){P(this.#t,e,!0)}#n=N(null);get report(){return H(this.#n)}set report(e){P(this.#n,e,!0)}#r=N(F([]));get actions(){return H(this.#r)}set actions(e){P(this.#r,e,!0)}#i=N(F([]));get approvals(){return H(this.#i)}set approvals(e){P(this.#i,e,!0)}#a=N(`spec`);get doc(){return H(this.#a)}set doc(e){P(this.#a,e,!0)}#o=N(null);get section(){return H(this.#o)}set section(e){P(this.#o,e,!0)}#s=N(null);get inbox(){return H(this.#s)}set inbox(e){P(this.#s,e,!0)}#c=N(F([]));get documents(){return H(this.#c)}set documents(e){P(this.#c,e,!0)}#l=N(F([]));get preflight(){return H(this.#l)}set preflight(e){P(this.#l,e,!0)}#u=N(F([]));get doctor(){return H(this.#u)}set doctor(e){P(this.#u,e,!0)}#d=N(null);get personStep(){return H(this.#d)}set personStep(e){P(this.#d,e,!0)}#f=N(null);get fixRun(){return H(this.#f)}set fixRun(e){P(this.#f,e,!0)}#p=N(null);get help(){return H(this.#p)}set help(e){P(this.#p,e,!0)}#m=N(!1);get quick(){return H(this.#m)}set quick(e){P(this.#m,e,!0)}#h=N(null);get shape(){return H(this.#h)}set shape(e){P(this.#h,e,!0)}#g=N(``);get quickDraft(){return H(this.#g)}set quickDraft(e){P(this.#g,e,!0)}#_=N(null);get bugSheet(){return H(this.#_)}set bugSheet(e){P(this.#_,e,!0)}#v=N(null);get composer(){return H(this.#v)}set composer(e){P(this.#v,e,!0)}#y=N(null);get newFeature(){return H(this.#y)}set newFeature(e){P(this.#y,e,!0)}#b=N(null);get explore(){return H(this.#b)}set explore(e){P(this.#b,e,!0)}#x=N(null);get newProject(){return H(this.#x)}set newProject(e){P(this.#x,e,!0)}#S=N(!1);get clone(){return H(this.#S)}set clone(e){P(this.#S,e,!0)}#C=N(!1);get keys(){return H(this.#C)}set keys(e){P(this.#C,e,!0)}#w=N(null);get welcome(){return H(this.#w)}set welcome(e){P(this.#w,e,!0)}#T=N(null);get chain(){return H(this.#T)}set chain(e){P(this.#T,e,!0)}#E=N(!1);get following(){return H(this.#E)}set following(e){P(this.#E,e,!0)}#D=N(F([]));get steps(){return H(this.#D)}set steps(e){P(this.#D,e,!0)}#O=N(null);get stepRunning(){return H(this.#O)}set stepRunning(e){P(this.#O,e,!0)}#k=N(null);get context(){return H(this.#k)}set context(e){P(this.#k,e,!0)}#A=N(!0);get sidebar(){return H(this.#A)}set sidebar(e){P(this.#A,e,!0)}#j=N(!0);get statusbar(){return H(this.#j)}set statusbar(e){P(this.#j,e,!0)}#M=N(!1);get connected(){return H(this.#M)}set connected(e){P(this.#M,e,!0)}#N=N(!0);get loading(){return H(this.#N)}set loading(e){P(this.#N,e,!0)}#P=N(null);get job(){return H(this.#P)}set job(e){P(this.#P,e,!0)}#F=N(null);get task(){return H(this.#F)}set task(e){P(this.#F,e,!0)}#I=N(F([]));get stages(){return H(this.#I)}set stages(e){P(this.#I,e,!0)}#L=N(F([]));get calls(){return H(this.#L)}set calls(e){P(this.#L,e,!0)}#R=N(null);get said(){return H(this.#R)}set said(e){P(this.#R,e,!0)}#z=N(null);get agent(){return H(this.#z)}set agent(e){P(this.#z,e,!0)}#B=N(null);get agents(){return H(this.#B)}set agents(e){P(this.#B,e,!0)}#V=N(null);get runWith(){return H(this.#V)}set runWith(e){P(this.#V,e,!0)}#H=N(null);get settingsPick(){return H(this.#H)}set settingsPick(e){P(this.#H,e,!0)}#U=N(null);get live(){return H(this.#U)}set live(e){P(this.#U,e,!0)}get elsewhere(){return!!(this.live?.running&&!this.live.own&&this.live.live)}get interrupted(){return!!(this.live?.interrupted&&this.live.live&&!this.job?.running)}#W=N(null);get thinking(){return H(this.#W)}set thinking(e){P(this.#W,e,!0)}#G=N(F({in:0,out:0,usd:null}));get usage(){return H(this.#G)}set usage(e){P(this.#G,e,!0)}#K=N(null);get oracleStage(){return H(this.#K)}set oracleStage(e){P(this.#K,e,!0)}#q=N(null);get waiting(){return H(this.#q)}set waiting(e){P(this.#q,e,!0)}#J=N(F([]));get toasts(){return H(this.#J)}set toasts(e){P(this.#J,e,!0)}#Y=N(null);get selected(){return H(this.#Y)}set selected(e){P(this.#Y,e,!0)}#X=N(`changes`);get codeMode(){return H(this.#X)}set codeMode(e){P(this.#X,e,!0)}#Z=N(null);get codeFile(){return H(this.#Z)}set codeFile(e){P(this.#Z,e,!0)}#Q=N(null);get codeLine(){return H(this.#Q)}set codeLine(e){P(this.#Q,e,!0)}#$=N(null);get codeCited(){return H(this.#$)}set codeCited(e){P(this.#$,e,!0)}#ee=N(null);get input(){return H(this.#ee)}set input(e){P(this.#ee,e,!0)}#te=N(!1);get palette(){return H(this.#te)}set palette(e){P(this.#te,e,!0)}#ne=N(`inbox`);get view(){return H(this.#ne)}set view(e){P(this.#ne,e,!0)}#re=N(null);get settingsSection(){return H(this.#re)}set settingsSection(e){P(this.#re,e,!0)}#ie=1;get primary(){return this.actions.find(e=>e.group===`next`&&e.run&&!e.blocked)}get blockers(){return this.preflight.filter(e=>e.level===`fail`)}toast(e){let t=this.#ie++;this.toasts=[...this.toasts,{...e,id:t}],setTimeout(()=>this.toasts=this.toasts.filter(e=>e.id!==t),7e3)}async refresh(){try{if(this.welcome||!this.project)try{await ba(`/api/project`),this.welcome=null}catch(e){if(e.status===409){this.welcome=await ba(`/api/welcome`);return}throw e}let e=this.feature??void 0,[t,n,r,i,a]=await Promise.all([ba(`/api/project`),ba(`/api/report${Sa({feature:e})}`),ba(`/api/actions${Sa({feature:e,task:this.selected})}`),ba(`/api/approvals${Sa({feature:e})}`),ba(`/api/documents${Sa({feature:e})}`)]);ba(`/api/inbox`).then(e=>{this.inbox=e,this.#he(e.data?.items??[])}).catch(()=>{}),ba(`/api/doctor${Sa({feature:e})}`).then(e=>{this.doctor=e.data?.checks??[],this.preflight=this.doctor.filter(e=>e.level===`warn`||e.level===`fail`||e.check===`lanes`)}).catch(()=>{}),this.project=t,this.#oe(),this.report=n,this.actions=r,this.approvals=i.data?.pending??[],this.documents=a,!this.feature&&t.features?.current&&(this.feature=t.features.current),this.following&&t.features?.current&&t.features.current!==this.feature&&(this.feature=t.features.current,this.view=`documents`,this.doc=`spec`,this.refresh())}catch(e){this.toast({tone:`error`,text:`The host did not answer`,detail:String(e)})}finally{this.loading=!1}}async loadAgents(e){if(this.agents?.probed||!e&&this.agents)return this.agents?.cards??[];let t=await ba(`/api/agents${Sa({probe:String(e)})}`);return this.agents={cards:t.data?.agents??[],probed:e},this.agents.cards}#ae(){return`speccoder.runWith.${this.project?.root??``}`}#oe(){try{this.runWith=localStorage.getItem(this.#ae())}catch{this.runWith=null}}chooseRunWith(e){this.runWith=e;try{e?localStorage.setItem(this.#ae(),e):localStorage.removeItem(this.#ae())}catch{}}withAgent(e){if(!this.runWith||e.run?.kind!==`run`||e.run.agent)return e;let t=this.agents?.cards.find(e=>e.id===this.runWith)?.name??this.runWith;return{...e,run:{...e.run,agent:this.runWith},command:`${e.command} --agent ${this.runWith}`,label:`${e.label} with ${t}`}}async selectFeature(e){this.feature=e,this.selected=null,await this.refresh()}async selectTask(e){this.selected=e;let t=this.feature??void 0;this.actions=await ba(`/api/actions${Sa({feature:t,task:e})}`)}#se=N(null);get confirming(){return H(this.#se)}set confirming(e){P(this.#se,e,!0)}#ce=N(null);get remedy(){return H(this.#ce)}set remedy(e){P(this.#ce,e,!0)}#le=null;#ue=void 0;async applyRemedy(){let e=this.remedy;if(e){this.remedy=null,this.#ue=e.then;try{await xa(`/api/run`,{run:e.remedy.run,input:null,feature:this.feature,command:e.remedy.command})}catch(e){this.#ue=void 0,this.toast({tone:`error`,text:String(e.message??e)})}}}async perform(e,t,n=!1){if(!e.run){if(e.step)return this.take({command:e.command,...e.step});await this.copy(e.command,`Copied`,e.command);return}if(e.blocked){this.toast({tone:`warn`,text:e.blocked});return}let r=e.run;if(!n&&r.kind===`plan_through`&&r.from.kind===`create`&&r.from.source.kind===`promotion`)this.newFeature={text:r.from.description,source:{kind:`promotion`,task:r.from.source.task,conversations:r.from.source.conversations??[],why:e.why},through:r.through};else if(this.elsewhere&&Ta[Ea(e.run)].holdsWorktree){let e=this.live.live;this.toast({tone:`warn`,text:`${e.task} is running in another speccoder (pid ${e.pid})`,detail:`It holds this project; wait for it, or stop it there.`})}else if(e.confirm&&!n)this.palette=!1,this.confirming={action:e};else if(this.confirming=null,e.input&&t===void 0)this.input={action:e};else{this.input=null,this.palette=!1,this.#le=e,this.remedy=null;try{await xa(`/api/run`,{run:e.run,input:t??null,feature:this.feature,command:e.command})}catch(e){this.toast({tone:`error`,text:String(e.message??e)})}}}async take(e){switch(e.how){case`perform`:{e.feature&&e.feature!==this.feature&&await this.selectFeature(e.feature);let t=ja(e.run,{group:`fix`,label:Ra(e.command),why:``,command:e.command,confirm:e.confirm,input:e.input});return this.perform(t,e.text??void 0)}case`view`:return this.open(e.view,e.subject);case`command`:case`shell`:this.fixRun=null,this.personStep={command:e.command,how:e};return;case`words`:return this.copy(Ia(e.command),`Copied`,e.why??void 0)}}async open(e,t){switch(this.palette=!1,e){case`doctor`:this.help={kind:`doctor`};return;case`bug_report`:return this.copyBugReport();case`explain`:this.help=t?{kind:`explain`,code:t}:{kind:`doctor`};return;case`report`:this.view=`report`;return;case`live`:this.view=`board`;return;case`approvals`:this.view=`inbox`;return;case`review`:this.doc=`review`,this.view=`documents`;return;case`settings`:this.view=`settings`,this.settingsSection=t??null;return;case`setup`:this.view=`setup`;return;case`bug`:this.bugSheet={};return;case`quick_change`:this.quick=!0;return;case`ask`:return Z.toggle(!0);case`new_feature`:this.newFeature={};return;case`explore`:this.explore={id:t??null};return;case`new_project`:this.newProject={};return;case`github`:this.view=`overview`,requestAnimationFrame(()=>document.getElementById(`github`)?.scrollIntoView({behavior:`smooth`,block:`start`}));return;case`task`:this.view=`board`,t&&this.selectTask(t);return}}async runFix(){let e=this.personStep;if(e&&e.how.how===`command`&&!e.how.interactive){this.#fe=[];try{let{id:t}=await xa(`/api/fix/run`,{argvs:e.how.argvs,token:e.how.token??``});this.fixRun={id:t,lines:[],result:null};let n=this.#fe.filter(e=>e.id===t);this.#fe=null;for(let e of n)this.#pe(e)}catch(e){this.#fe=null,this.toast({tone:`error`,text:String(e.message??e)})}}}async openTerminal(){let e=this.personStep;if(!e||e.how.how!==`command`)return;let t=za(e.how.argvs);if(await navigator.clipboard?.writeText(t).catch(()=>{}),!this.project?.window)return this.toast({tone:`ok`,text:`Copied — paste it in a terminal at the project`,detail:t});try{await xa(`/api/terminal`,{argvs:e.how.argvs,token:e.how.token??``}),this.toast({tone:`ok`,text:`A terminal is open at the project — paste the command there`,detail:t})}catch(e){this.toast({tone:`error`,text:String(e.message??e),detail:`The command is on the clipboard.`})}}async copy(e,t=`Copied`,n){await navigator.clipboard?.writeText(e).catch(()=>{}),this.toast({tone:`ok`,text:t,detail:n})}copyError(e,t=`error`){return this.copy(this.block(e,t),`Copied what went wrong`,`Paste it into an issue or a chat.`)}block(e,t=`error`){return Va(e,{version:this.project?.version,os:this.project?.os},t)}async copyBugReport(){try{let{text:e}=await ba(`/api/bug-report`);await this.copy(e,`Copied the bug report`,`The setup in Markdown, secrets taken out.`)}catch(e){this.toast({tone:`error`,text:String(e.message??e)})}}#de=new Map;#fe=null;async run(e,t,n){if(!e.run)return null;try{let{id:r}=await xa(`/api/run`,{run:e.run,input:t??null,feature:this.feature,command:e.command,root:n??null});return await new Promise(e=>this.#de.set(r,e))}catch(e){return this.toast({tone:`error`,text:String(e.message??e)}),null}}async answer(e){if(!this.waiting)return;let t=this.waiting.id;try{await xa(`/api/answer`,{id:t,...e}),this.waiting=null}catch(e){this.toast({tone:`error`,text:String(e.message??e)})}}async stop(){await xa(`/api/stop`,{})}#pe(e){if(this.#fe&&(e.type===`output`||e.type===`done`))this.#fe.push(e),e.type===`done`&&(this.job={id:e.id,command:this.job?.command??``,running:!1,result:e.result});else switch(e.type){case`started`:this.job={id:e.id,command:e.command,running:!0,result:null},this.stages=[],this.calls=[],this.steps=[],this.stepRunning=null,this.said=null,this.thinking=null,this.usage={in:0,out:0,usd:null},this.oracleStage=null;break;case`progress`:this.#_e(e.event);break;case`ask`:case`question`:this.waiting=e,this.#ge(e.type===`ask`?`${e.presentation?.request?.task??`A task`} needs you`:`A question for you`,e.presentation?.title??e.question??``);break;case`answered`:this.waiting?.id===e.id&&(this.waiting=null);break;case`bound`:location.reload();break;case`output`:if(this.fixRun&&this.fixRun.id===e.id){let t=this.fixRun;this.fixRun={...t,lines:[...t.lines.slice(-1999),{stream:String(e.stream),line:String(e.line)}]}}break;case`done`:{let t=e.result;if(this.fixRun&&this.fixRun.id===e.id){this.job={id:e.id,command:this.job?.command??``,running:!1,result:t},this.fixRun={...this.fixRun,result:t},this.refresh();break}this.job={id:e.id,command:this.job?.command??``,running:!1,result:t},this.waiting=null,this.oracleStage=null,t?.payload===`planning_chain`&&t.data&&(this.chain=t.data);let n=this.#de.get(e.id);if(n){this.#de.delete(e.id),n(t),this.refresh();break}if(this.#ue!==void 0){let e=this.#ue;this.#ue=void 0,this.toast({tone:t?.status===`ok`?`ok`:`error`,text:t?.message??`done`}),this.refresh().then(()=>{t?.status===`ok`&&e&&this.perform(e)});break}if(t?.remedy){this.remedy={remedy:t.remedy,message:t.message,code:t.code??void 0,then:this.#le},this.refresh();break}this.toast({tone:t?.status===`ok`?`ok`:t?.status===`needs_human`?`warn`:`error`,text:t?.message??`done`,detail:t?.code?`${t.code}${t.fix?.length?` · `+t.fix[0]:``}`:void 0,copy:t&&t.status!==`ok`?this.block(t,t.status===`needs_human`?`stopped`:`error`):void 0}),this.refresh();break}}}get blocked(){return(this.inbox?.data?.items??[]).filter(e=>e.group!==`ready_to_review`).length}#me=null;#he(e){let t=e=>`${e.kind}/${e.feature}/${e.task??``}`,n=e.filter(e=>e.group!==`ready_to_review`);if(this.#me){let e=n.filter(e=>!this.#me.has(t(e))&&!(this.waiting&&e.task===this.task?.id)),r=e[0];r&&this.#ge(e.length===1?r.title:`${e.length} things need you`,e.length===1?r.detail:e.map(e=>e.title).join(` · `))}this.#me=new Set(n.map(t))}#ge(e,t){if(document.hidden)try{if(`Notification`in window&&Notification.permission===`granted`){let n=new Notification(e,{body:t,tag:`speccoder-ask`,icon:`/icon.svg`});n.onclick=()=>{window.focus(),n.close()}}}catch{}}async allowNotifications(){`Notification`in window&&Notification.permission==="default"&&await Notification.requestPermission()}#_e(e){if(String(e.event).startsWith(`ask_`))return Z.event(e);switch(e.event){case`task_started`:this.task={id:e.task,title:e.title},this.stages=[],this.agent=null;break;case`agent_started`:this.agent={name:e.agent,mode:e.mode,decides_alone:!!e.decides_alone,known:!!e.known,unasked:0,plan:[],asked:0,allowed:0,waited:0,refused:0},this.calls=[...this.calls.slice(-199),`${e.agent}: ${e.mode}`];break;case`agent_unasked`:this.agent&&={...this.agent,decides_alone:!0,unasked:e.calls??0};break;case`agent_plan`:this.agent&&={...this.agent,plan:e.entries??[]};break;case`approval_requested`:this.agent&&={...this.agent,waited:this.agent.waited+1};break;case`stage`:{let t={stage:e.stage,state:e.state,detail:e.detail??null,elapsed_ms:e.elapsed_ms??null},n=this.stages.findIndex(t=>t.stage===e.stage);this.stages=n>=0?this.stages.map((e,r)=>r===n?t:e):[...this.stages,t];break}case`said`:{let t=String(e.text??``).split(`
`).find(e=>e.trim())??``;t&&(this.said=t.trim(),this.calls=[...this.calls.slice(-199),`“${t.trim()}”`]);break}case`reasoning`:{let t=String(e.text??``).split(`
`).filter(e=>e.trim()).at(-1)??``;t&&(this.thinking=t.trim(),this.calls=[...this.calls.slice(-199),`∴ ${t.trim()}`]);break}case`tool_call`:if(this.agent&&e.decision!==`reported`){let t=this.agent;this.agent={...t,asked:t.asked+1,allowed:t.allowed+ +(e.decision===`allow`),refused:t.refused+ +(e.decision===`deny`)}}this.calls=[...this.calls.slice(-199),`turn ${e.turn}  ${e.tool} ${e.target}  ${e.decision}${e.ok===!1?`  failed`:``}`],this.following&&/write|edit/.test(String(e.tool))&&this.#ye();break;case`planning_stopped`:this.following=!1,this.refresh();break;case`usage`:this.usage={in:e.input_tokens,out:e.output_tokens,usd:e.usd??null};break;case`task_finished`:this.calls=[...this.calls,`${e.task}: ${e.outcome}`],this.refresh();break;case`notice`:this.calls=[...this.calls,e.text];break;case`project`:{let t=e.step??{};t.event===`scaffold_started`&&(this.stepRunning=t.step),t.event===`scaffold_finished`&&(this.stepRunning=null,this.steps=[...this.steps.filter(e=>e.id!==t.step),{id:t.step,state:t.state,exit:t.exit??null,duration_ms:t.duration_ms??0,output_tail:[]}]);break}case`oracle`:e.step?.kind===`stage`&&(this.oracleStage={requirement:e.step.requirement,stage:e.step.stage,n:e.step.n,of:e.step.of})}}#ve=null;#ye(){this.#ve||=setTimeout(()=>{this.#ve=null,this.refresh()},900)}titleOf(e){return this.project?.features?.features.find(t=>t.name===e)?.title??e.replace(/^\d+-/,``).replaceAll(`-`,` `)}get location(){let e=new URLSearchParams;this.feature&&e.set(`feature`,this.feature),this.view!==`inbox`&&e.set(`view`,this.view),this.selected&&e.set(`task`,this.selected),this.view===`code`&&this.codeMode===`files`&&e.set(`mode`,`files`),this.view===`code`&&this.codeFile&&e.set(`file`,this.codeFile),this.view===`code`&&this.codeFile&&this.codeLine&&e.set(`line`,String(this.codeLine)),this.view===`documents`&&this.doc!==`spec`&&e.set(`doc`,this.doc),this.view===`documents`&&this.section&&e.set(`section`,this.section);let t=e.toString();return location.pathname+(t?`?${t}`:``)}#be(){let e=new URLSearchParams(location.search),t=e.get(`view`);(t===`inbox`||t===`overview`||t===`board`||t===`code`||t===`documents`||t===`report`||t===`settings`||t===`setup`)&&(this.view=t),this.feature=e.get(`feature`)??this.feature,this.selected=e.get(`task`),this.codeFile=e.get(`file`);let n=Number(e.get(`line`));this.codeLine=Number.isInteger(n)&&n>0?n:null,this.codeMode=e.get(`mode`)===`files`||this.codeFile?`files`:`changes`,this.palette=e.has(`palette`),this.doc=e.get(`doc`)??`spec`,this.section=e.get(`section`)}async pollLive(){try{this.live=await ba(`/api/live`)}catch{}}async#xe(){if(!this.welcome&&this.project)try{let e=await xa(`/api/new/first-feature`,{});if(!e.idea)return;e.name&&this.toast({tone:`ok`,text:`${e.name} is ready${e.commit?` — committed ${e.commit.slice(0,7)}`:``}`,detail:`Write the first feature: it is prefilled with your idea`}),this.newFeature={text:e.idea,through:`tasks`}}catch{}}start(){this.#be(),this.pollLive(),setInterval(()=>{document.hidden||this.pollLive()},3e3),addEventListener(`popstate`,()=>{this.#be(),this.refresh()}),this.refresh().then(()=>this.#xe()),addEventListener(`speccoder:toast`,e=>this.toast({tone:`ok`,text:String(e.detail??``)})),ba(`/api/job`).then(e=>{e.job&&(this.job=e.job),e.waiting&&(this.waiting=e.waiting)}),Ca(e=>this.#pe(e),e=>this.connected=e)}},Xa=W(`<p class="none svelte-181dlmc"> <button class="link svelte-181dlmc">Write the first one</button>.</p>`),Za=qr(`<circle cx="10" cy="10" r="8" fill="none" stroke-width="3" stroke-linecap="round" transform="rotate(-90 10 10)" class="svelte-181dlmc"></circle>`),Qa=W(`<span class="cur svelte-181dlmc">●</span>`),$a=W(`<li class="svelte-181dlmc"><button><svg class="mini svelte-181dlmc" width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="8" fill="none" stroke="var(--fill-2)" stroke-width="3" class="svelte-181dlmc"></circle><!></svg> <span class="text svelte-181dlmc"><span class="name svelte-181dlmc"> </span> <span class="meta svelte-181dlmc"><span class="mono svelte-181dlmc"> </span> <!></span></span> <!></button></li>`),eo=W(`<footer class="svelte-181dlmc"><span> </span> <span class="mono"> </span></footer>`),to=W(`<aside class="glass svelte-181dlmc"><h2 class="section-title svelte-181dlmc"><span> <span class="count svelte-181dlmc"> </span></span> <button class="add svelte-181dlmc">+</button></h2> <!> <ul class="svelte-181dlmc"></ul> <!></aside>`);function no(e,t){Xe(t,!0);let n=M(()=>Q.project?.features?.features??[]),r=M(()=>Q.project?.unit??`feature`),i=e=>e.charAt(0).toUpperCase()+e.slice(1),a=2*Math.PI*8,o=(e,t)=>t?e/t*a:0;var s=to(),c=I(s),l=I(c),u=I(l),d=R(z(u),!0);A(l);var f=z(l,2);A(c);var p=z(c,2),m=e=>{var t=Xa(),n=I(t),i=z(n);j(),A(t),V(()=>K(n,`No ${H(r)??``}s yet. `)),U(`click`,i,()=>Q.newFeature={}),G(e,t)};q(p,e=>{H(n).length===0&&e(m)});var h=z(p,2);J(h,21,()=>H(n),e=>e.name,(e,t)=>{let n=M(()=>H(t).tasks);var i=$a(),a=I(i);let s;var c=I(a),l=z(I(c)),u=e=>{var r=Za();V(e=>{X(r,`stroke`,H(t).done===H(n)?`var(--verified-fill)`:`var(--accent)`),X(r,`stroke-dasharray`,`${e??``} 50.26548245743669`)},[()=>o(H(t).done,H(n))]),G(e,r)};q(l,e=>{H(n)&&H(t).done>0&&e(u)}),A(c);var d=z(c,2),f=I(d),p=R(f,!0),m=z(f,2),h=I(m),g=R(h,!0),_=z(h,2),v=e=>{var r=Jr();V(()=>K(r,`· ${H(t).done??``} of ${H(n)??``}`)),G(e,r)},y=e=>{var n=Jr();V(e=>K(n,`· ${e??``}`),[()=>H(t).artifacts.join(`, `)]),G(e,n)},b=e=>{G(e,Jr(`· empty`))};q(_,e=>{H(n)?e(v):H(t).artifacts.length?e(y,1):e(b,-1)}),A(m),A(d);var x=z(d,2),S=e=>{var t=Qa();V(()=>X(t,`title`,`The current ${H(r)??``}`)),G(e,t)};q(x,e=>{H(t).current&&e(S)}),A(a),A(i),V((e,n)=>{X(a,`aria-current`,Q.feature===H(t).name?`page`:void 0),s=Y(a,1,`svelte-181dlmc`,null,s,{on:Q.feature===H(t).name}),K(p,e),K(g,n)},[()=>Q.titleOf(H(t).name),()=>String(H(t).number).padStart(3,`0`)]),U(`click`,a,()=>Q.selectFeature(H(t).name)),G(e,i)}),A(h);var g=z(h,2),_=e=>{var t=eo(),n=I(t),r=R(n,!0),i=R(z(n,2));A(t),V(()=>{K(r,Q.project.format),K(i,`v${Q.project.version??``}`)}),G(e,t)};q(g,e=>{Q.project&&e(_)}),A(s),V((e,t)=>{X(s,`aria-label`,`${e??``}s`),K(u,`${t??``}s `),K(d,H(n).length),X(f,`aria-label`,`New ${H(r)??``}`),X(f,`title`,`New ${H(r)??``}`)},[()=>i(H(r)),()=>i(H(r))]),U(`click`,f,()=>Q.newFeature={}),G(e,s),Ze()}Rr([`click`]);var ro={check:`M5 12.5l4.2 4.2L19 7`,seal:`M12 2.8l2.3 1.7 2.8-.2.9 2.7 2.4 1.5-.7 2.8.7 2.8-2.4 1.5-.9 2.7-2.8-.2L12 21.2l-2.3-1.7-2.8.2-.9-2.7-2.4-1.5.7-2.8-.7-2.8 2.4-1.5.9-2.7 2.8.2z M8.6 12.2l2.3 2.3 4.6-4.8`,loop:`M4.5 12a7.5 7.5 0 0 1 12.9-5.2L20 9.3 M20 4.5v4.8h-4.8 M19.5 12a7.5 7.5 0 0 1-12.9 5.2L4 14.7 M4 19.5v-4.8h4.8`,signature:`M3.5 17.5c2.5-1 4.5-5 5.5-8.5.6-2.2-1.6-2.4-2.1-.3-.8 3.2.3 7.6 2.6 7.8 1.7.1 2.2-2.6 3.5-2.6 1.1 0 .9 2.2 2.2 2.2 1 0 1.7-1.2 2.6-1.2 M3.5 20.5h17`,exclaim:`M12 3.5a8.5 8.5 0 1 1 0 17 8.5 8.5 0 0 1 0-17z M12 7.8v5 M12 16.2v.1`,skip:`M5 6.5l7 5.5-7 5.5z M12.5 6.5l7 5.5-7 5.5z`,circle:`M12 4.5a7.5 7.5 0 1 1 0 15 7.5 7.5 0 0 1 0-15z`,hourglass:`M7 3.5h10 M7 20.5h10 M8 3.5c0 4.5 4 5.2 4 8.5s-4 4-4 8.5 M16 3.5c0 4.5-4 5.2-4 8.5s4 4 4 8.5`,hand:`M8.5 12.5V5.8a1.4 1.4 0 0 1 2.8 0v5.7 M11.3 11V4.6a1.4 1.4 0 0 1 2.8 0V11 M14.1 11V5.8a1.4 1.4 0 0 1 2.8 0v7.4 M8.5 12.5 7.2 11a1.5 1.5 0 0 0-2.3 1.9l3.3 4.8a6 6 0 0 0 5 2.8h.4a4.6 4.6 0 0 0 4.6-4.6v-3.2`,xmark:`M6.5 6.5l11 11 M17.5 6.5l-11 11`,xoctagon:`M8.4 3.5h7.2l4.9 4.9v7.2l-4.9 4.9H8.4l-4.9-4.9V8.4z M9.2 9.2l5.6 5.6 M14.8 9.2l-5.6 5.6`,play:`M7.5 5.2v13.6a.8.8 0 0 0 1.2.7l10.7-6.8a.8.8 0 0 0 0-1.4L8.7 4.5a.8.8 0 0 0-1.2.7z`,stop:`M7 6.5h10a.5.5 0 0 1 .5.5v10a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5z`,grid:`M4.5 4.5h6v6h-6z M13.5 4.5h6v6h-6z M4.5 13.5h6v6h-6z M13.5 13.5h6v6h-6z`,doc:`M7 3.5h6.5l4.5 4.5v12.5H7z M13.5 3.5V8H18 M9.5 12h6 M9.5 15h6 M9.5 18h4`,chart:`M5 19.5V13 M10 19.5V8 M15 19.5v-9 M20 19.5V5 M3.5 19.5h18`,bell:`M6 16.5V11a6 6 0 0 1 12 0v5.5l1.5 2h-15z M10 20.5a2 2 0 0 0 4 0`,search:`M10.5 4a6.5 6.5 0 1 1 0 13 6.5 6.5 0 0 1 0-13z M15.3 15.3 20 20`,command:`M9 9V6.5A2.5 2.5 0 1 0 6.5 9H9zm0 0v6m0-6h6m-6 6v2.5A2.5 2.5 0 1 1 6.5 15H9zm0 0h6m0-6V6.5A2.5 2.5 0 1 1 17.5 9H15zm0 0v6m0 0v2.5a2.5 2.5 0 1 0 2.5-2.5H15z`,sun:`M12 8a4 4 0 1 1 0 8 4 4 0 0 1 0-8z M12 2.5v2 M12 19.5v2 M2.5 12h2 M19.5 12h2 M5.3 5.3l1.4 1.4 M17.3 17.3l1.4 1.4 M5.3 18.7l1.4-1.4 M17.3 6.7l1.4-1.4`,moon:`M19.5 14.5A8 8 0 0 1 9.5 4.5a8 8 0 1 0 10 10z`,halfcircle:`M12 3.5a8.5 8.5 0 1 1 0 17 8.5 8.5 0 0 1 0-17z M12 3.5v17`,copy:`M8.5 8.5h10v11h-10z M15.5 8.5V4.5h-10v11h3`,chevron:`M9.5 6l6 6-6 6`,down:`M6 9.5l6 6 6-6`,key:`M8.5 10a4 4 0 1 1 3.9 3.1L20 13v3h-2.5v2.5H15V16l-1.6-1.6 M7.5 10.5v.1`,tray:`M4 13.5 6.5 5h11l2.5 8.5v5H4z M4 13.5h4.5a3.5 3.5 0 0 0 7 0H20`,terminal:`M4 5h16v14H4z M7.5 9.5l3 2.5-3 2.5 M12.5 15h4`,sparkle:`M12 3.5c.6 4.2 2.8 6.4 7 7-4.2.6-6.4 2.8-7 7-.6-4.2-2.8-6.4-7-7 4.2-.6 6.4-2.8 7-7z`,branch:`M7 4.5v15 M7 4.5a2 2 0 1 1 0 .1 M7 19.5a2 2 0 1 1 0 .1 M17 8.5a2 2 0 1 1 0 .1 M17 10.5c0 4-10 3-10 7`,shield:`M12 3.5 19 6v5.5c0 4.4-3 7.7-7 9-4-1.3-7-4.6-7-9V6z M9 12l2.2 2.2L15.5 10`,wifi:`M12 18.5v.1 M8.6 15.2a5 5 0 0 1 6.8 0 M5.6 12.2a9.2 9.2 0 0 1 12.8 0`,list:`M9 6.5h11 M9 12h11 M9 17.5h11 M4.5 6.5v.1 M4.5 12v.1 M4.5 17.5v.1`,arrowup:`M12 19.5v-15 M6 10.5l6-6 6 6`,gear:`M12 9a3 3 0 1 1 0 6 3 3 0 0 1 0-6z M12 2.8l1.6 2.1 2.6-.5.8 2.5 2.4 1.2-.6 2.6 1.6 2.1-2.1 1.6.5 2.6-2.5.8-1.2 2.4-2.6-.6-2.1 1.6-1.6-2.1-2.6.5-.8-2.5-2.4-1.2.6-2.6-1.6-2.1 2.1-1.6-.5-2.6 2.5-.8 1.2-2.4 2.6.6z`,cpu:`M7 7h10v10H7z M10 10h4v4h-4z M9.5 3.5v3.5 M14.5 3.5v3.5 M9.5 17v3.5 M14.5 17v3.5 M3.5 9.5H7 M3.5 14.5H7 M17 9.5h3.5 M17 14.5h3.5`,gauge:`M4.5 16.5a8 8 0 1 1 15 0 M12 13.5l3.5-4.5 M12 13.5v.1`,lock:`M7 11h10v9H7z M9 11V8a3 3 0 0 1 6 0v3`,plus:`M12 5v14 M5 12h14`,minus:`M5 12h14`,undo:`M9 7 4.5 11.5 9 16 M5 11.5h9a5 5 0 0 1 0 10h-2`,dollar:`M12 3.5v17 M16 7.5c-.6-1.5-2.2-2.3-4-2.3-2.4 0-4 1.2-4 3s1.6 2.6 4 3.2 4 1.4 4 3.3-1.6 3.1-4 3.1c-1.9 0-3.5-.9-4.1-2.5`,info:`M12 3.5a8.5 8.5 0 1 1 0 17 8.5 8.5 0 0 1 0-17z M12 11v5.5 M12 7.8v.1`,bubble:`M5.5 4.5h13a2 2 0 0 1 2 2v8.5a2 2 0 0 1-2 2H11l-4.5 3.5v-3.5h-1a2 2 0 0 1-2-2V6.5a2 2 0 0 1 2-2z M8.5 9.5h7 M8.5 12.5h4.5`},io=new Set([`play`,`stop`]),ao=qr(`<svg class="icon svelte-13so817" viewBox="0 0 24 24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path></path></svg>`);function $(e,t){Xe(t,!0);let n=ma(t,`size`,3,16),r=ma(t,`weight`,3,1.8);var i=ao(),a=R(i);V((e,r)=>{X(i,`width`,n()),X(i,`height`,n()),X(i,`fill`,e),X(i,`stroke-width`,r),X(i,`role`,t.label?`img`:void 0),X(i,`aria-label`,t.label),X(i,`aria-hidden`,t.label?void 0:`true`),X(a,`d`,ro[t.name]??ro.circle)},[()=>io.has(t.name)?`currentColor`:`none`,()=>io.has(t.name)?0:r()]),G(e,i),Ze()}var oo=W(`<code class="svelte-5tbw3"> </code>`);function so(e,t){Xe(t,!0);let n=M(()=>t.text.split(/(`[^`]+`)/g).filter(Boolean));var r=Yr();J(L(r),17,()=>H(n),si,(e,t)=>{var n=Yr(),r=L(n),i=e=>{var n=oo(),r=R(n,!0);V(e=>K(r,e),[()=>H(t).slice(1,-1)]),G(e,n)},a=M(()=>H(t).startsWith("`")&&H(t).endsWith("`")),o=e=>{var n=Jr();V(()=>K(n,H(t))),G(e,n)};q(r,e=>{H(a)?e(i):e(o,-1)}),G(e,n)}),G(e,r),Ze()}var co=W(`<span class="hint svelte-8lhbl6"> </span>`),lo=W(`<button><span class="mono svelte-8lhbl6"> </span> <span class="i svelte-8lhbl6" aria-hidden="true"><!></span> <span class="sr-only"> </span></button>`),uo=W(`<span class="steps svelte-8lhbl6"></span>`);function fo(e,t){Xe(t,!0);let n=ma(t,`limit`,3,3),r={perform:`play`,view:`chevron`,command:`terminal`,shell:`copy`,words:`copy`},i=e=>e.how===`words`&&!e.why&&La(e.command);var a=uo();J(a,23,()=>t.steps.slice(0,n()),(e,t)=>t+e.command,(e,t)=>{var n=Yr(),a=L(n),o=e=>{var n=co(),r=R(n,!0);V(e=>K(r,e),[()=>Ia(H(t).command)]),G(e,n)},s=M(()=>i(H(t))),c=e=>{var n=lo(),i=I(n),a=R(i,!0),o=z(i,2);$(I(o),{get name(){return r[H(t).how]},size:12}),A(o);var s=R(z(o,2),!0);A(n),V((e,r,i)=>{Y(n,1,`step ${H(t).how??``}`,`svelte-8lhbl6`),X(n,`title`,`${e??``}: ${H(t).command??``}${(H(t).how===`words`||H(t).how===`shell`)&&H(t).why?`\n${H(t).why}`:``}`),n.disabled=H(t).how===`perform`&&!!Q.job?.running,K(a,r),K(s,i)},[()=>Fa(H(t)),()=>Ia(H(t).command),()=>Fa(H(t))]),U(`click`,n,()=>Q.take(H(t))),G(e,n)};q(a,e=>{H(s)?e(o):e(c,-1)}),G(e,n)}),A(a),G(e,a),Ze()}Rr([`click`]);var po=W(`<button class="chip mono svelte-1299juv"> </button>`),mo=W(`<span class="chips svelte-1299juv"></span>`),ho=W(`<button class="btn small tinted"><!> </button>`),go=W(`<button class="btn icon small ghost" title="Copy what went wrong"><!></button>`),_o=W(`<li><span class="badge svelte-1299juv" aria-hidden="true"><!></span> <span class="what svelte-1299juv"><strong class="svelte-1299juv"> <span class="sr-only"> </span></strong> <span class="d svelte-1299juv"><!></span> <!></span> <span class="fixes svelte-1299juv"><!> <!></span></li>`),vo=W(`<section class="pre svelte-1299juv" aria-label="Before you run"><h3 class="section-title"> </h3> <ul class="grouped svelte-1299juv"></ul></section>`);function yo(e,t){Xe(t,!0);let n=M(()=>Q.preflight.filter(e=>!(Q.project?.sample&&e.check===`model key`))),r=M(()=>[...H(n)].sort((e,t)=>(e.level===`fail`?0:1)-(t.level===`fail`?0:1))),i=M(()=>H(n).some(e=>e.level===`fail`)),a={"model key":`key`,untracked:`tray`,signing:`signature`,sandbox:`shield`,git:`branch`,"spec tool":`terminal`,config:`doc`,tests:`list`,plan:`list`,feature:`doc`,project:`doc`,state:`tray`,instructions:`doc`,lanes:`hand`},o={"PLAN-TESTS-UNCOLLECTED":`The plan puts tests where the runner won't collect them`,"PLAN-BEHAVIOUR-EARLY":`A story's behaviour is planned before the story`,"PLAN-TEST-ONLY-TASKS":`Tasks that only write tests`,"PLAN-SCENARIO-UNKNOWN":`A task names a scenario its story does not have`,"PLAN-STORY-UNJUDGED":`No task of a story is judged by its scenarios`,"PLAN-OTHER-STACK":`Tasks build in another stack than the project's`},s=e=>e.check===`lanes`?`Who does what`:(e.code&&o[e.code])??e.check.charAt(0).toUpperCase()+e.check.slice(1);function c(e){Q.view=`board`,Q.selectTask(e)}var l=Yr(),u=L(l),d=e=>{var t=vo(),n=I(t),o=R(n,!0),l=z(n,2);J(l,21,()=>H(r),e=>e.check+(e.code??``)+(e.tasks??[]).join(`,`),(e,t)=>{var n=_o(),r=I(n),i=I(r);{let e=M(()=>a[H(t).check]??`exclaim`);$(i,{get name(){return H(e)},size:15,weight:2})}A(r);var o=z(r,2),l=I(o),u=I(l,!0),d=R(z(u));A(l);var f=z(l,2);so(I(f),{get text(){return H(t).detail}}),A(f);var p=z(f,2),m=e=>{var n=mo();J(n,20,()=>H(t).tasks,e=>e,(e,t)=>{var n=po(),r=R(n,!0);V(()=>{X(n,`aria-label`,`Open ${t??``}`),K(r,t)}),U(`click`,n,()=>c(t)),G(e,n)}),A(n),G(e,n)};q(p,e=>{H(t).tasks?.length&&e(m)}),A(o);var h=z(o,2),g=I(h),_=e=>{let n=M(()=>H(t).remedy);var r=ho(),i=I(r);$(i,{name:`check`,size:11,weight:2.4});var a=z(i);A(r),V(()=>{X(r,`title`,`${H(n).effect??``} — $ ${H(n).command??``}`),r.disabled=!!Q.job?.running,K(a,` ${H(n).label??``}`)}),U(`click`,r,()=>Q.perform(ja(H(n).run,{group:`work`,label:H(n).label,why:H(n).effect,command:H(n).command}))),G(e,r)},v=e=>{{let n=M(()=>H(t).fix_steps??[]);fo(e,{get steps(){return H(n)},limit:2})}};q(g,e=>{H(t).remedy?e(_):e(v,-1)});var y=z(g,2),b=e=>{var n=go();$(I(n),{name:`copy`,size:12}),A(n),V(e=>X(n,`aria-label`,`Copy what went wrong: ${e??``}`),[()=>s(H(t))]),U(`click`,n,()=>Q.copyError({message:H(t).detail,code:H(t).code,fix:H(t).fix})),G(e,n)};q(y,e=>{H(t).level!==`pass`&&e(b)}),A(h),A(n),V(e=>{Y(n,1,xi(H(t).level),`svelte-1299juv`),K(u,e),K(d,`: ${H(t).level??``}`)},[()=>s(H(t))]),G(e,n)}),A(l),A(t),V(()=>K(o,H(i)?`Fix before running`:`Worth a look`)),G(e,t)};q(u,e=>{H(r).length&&e(d)}),G(e,l),Ze()}Rr([`click`]);var bo={verified:[`✓`,`verified`,`seal`],regression_only:[`~`,`regression only`,`loop`],attested:[`A`,`attested`,`signature`],ticked_without_evidence:[`!`,`no evidence`,`exclaim`],evidence_without_tick:[`?`,`tick missing`,`exclaim`],skipped:[`–`,`skipped`,`skip`],ready:[`·`,`ready`,`circle`],blocked:[`⧗`,`blocked`,`hourglass`],running:[`◐`,`running`,`sparkle`],needs_approval:[`△`,`needs you`,`hand`],failed:[`✗`,`failed`,`xoctagon`]},xo=e=>bo[e]?.[1]??e.replaceAll(`_`,` `),So=e=>bo[e]?.[2]??`circle`,Co=[`verified`,`regression_only`,`attested`,`ticked_without_evidence`,`skipped`,`ready`,`blocked`],wo=e=>{let t=e.match(/User Story (\d+)\s*[-–—:]\s*(.*?)\s*(?:\(Priority[^)]*\))?\s*(?:🎯\s*MVP)?\s*$/);return t?`US${t[1]} · ${t[2]}`:e.replace(/^Phase \d+:\s*/,``)},To=qr(`<circle fill="none" stroke="var(--fill-c)"></circle>`),Eo=W(`<div class="centre svelte-dup2ra"><span class="n svelte-dup2ra"> </span><span class="of svelte-dup2ra"> </span></div>`),Do=W(`<div class="ring svelte-dup2ra" role="img"><svg aria-hidden="true"><circle fill="none" stroke="var(--fill)"></circle><g></g></svg> <!></div>`);function Oo(e,t){Xe(t,!0);let n=ma(t,`size`,3,96),r=ma(t,`width`,3,10),i=ma(t,`label`,3,!0),a=M(()=>Co.map(e=>({k:e,n:t.totals[e]??0})).filter(e=>e.n>0)),o=M(()=>H(a).reduce((e,t)=>e+t.n,0)),s=M(()=>(t.totals.verified??0)+(t.totals.regression_only??0)+(t.totals.attested??0)+(t.totals.skipped??0)),c=M(()=>(n()-r())/2),l=M(()=>2*Math.PI*H(c)),u=M(()=>H(a).length>1?Math.min(r()*.9,H(l)*.02):0),d=M(()=>{let e=0;return H(a).map(t=>{let n=t.n/Math.max(H(o),1)*H(l),r={k:t.k,n:t.n,dash:Math.max(n-H(u),.01),offset:-e};return e+=n,r})});var f=Do(),p=I(f),m=I(p),h=z(m);J(h,21,()=>H(d),e=>e.k,(e,t)=>{var i=To();V(()=>{Y(i,0,`seg s-${H(t).k??``}`,`svelte-dup2ra`),X(i,`cx`,n()/2),X(i,`cy`,n()/2),X(i,`r`,H(c)),X(i,`stroke-width`,r()),X(i,`stroke-linecap`,H(a).length>1?`butt`:`round`),X(i,`stroke-dasharray`,`${H(t).dash??``} ${H(l)??``}`),X(i,`stroke-dashoffset`,H(t).offset)}),G(e,i)}),A(h),A(p);var g=z(p,2),_=e=>{var t=Eo(),n=I(t),r=R(n,!0),i=R(z(n));A(t),V(()=>{K(r,H(s)),K(i,`of ${H(o)??``}`)}),G(e,t)};q(g,e=>{i()&&H(o)&&e(_)}),A(f),V(e=>{Oi(f,`width:${n()??``}px;height:${n()??``}px`),X(f,`aria-label`,`${H(s)??``} of ${H(o)??``} finished: ${e??``}`),X(p,`width`,n()),X(p,`height`,n()),X(p,`viewBox`,`0 0 ${n()??``} ${n()??``}`),X(m,`cx`,n()/2),X(m,`cy`,n()/2),X(m,`r`,H(c)),X(m,`stroke-width`,r()),X(h,`transform`,`rotate(-90 ${n()/2} ${n()/2})`)},[()=>H(a).map(e=>`${e.n} ${xo(e.k)}`).join(`, `)]),G(e,f),Ze()}var ko=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(+(e<1e4))}k`:String(e),Ao=e=>e==null?`—`:e<.01?`$${e.toFixed(4)}`:`$${e.toFixed(2)}`;function jo(e){let t=e?.estimate,n=e?.cap?`capped at ${e.cap}`:``;if(!t)return n?{text:Mo(n),basis:`No task is ticked here yet: no estimate.`}:null;let r=t.total.input_tokens+t.total.output_tokens,i=t.per_task.input_tokens+t.per_task.output_tokens,a=t.total.usd==null?``:` · ${Ao(t.total.usd)}`;return{text:`≈ ${ko(r)} tokens${a} for ${t.tasks} ${t.tasks===1?`task`:`tasks`}${n?` · ${n}`:``}`,basis:`${ko(i)} a task: the average of ${t.ticks} ticked ${t.ticks===1?`task`:`tasks`} in this project.`}}var Mo=e=>e.charAt(0).toUpperCase()+e.slice(1),No=W(`<!><span class="mono svelte-juboms"> </span>`,1),Po=W(`<p class="eyebrow svelte-juboms"><span class="mono svelte-juboms"> </span><!></p> <h1 class="svelte-juboms"> </h1>`,1),Fo=W(`<h1 class="svelte-juboms"> </h1>`),Io=W(`<li><!><span class="n svelte-juboms"> </span><span class="w svelte-juboms"> </span></li>`),Lo=W(`<div class="stats svelte-juboms"><ul class="legend svelte-juboms" aria-hidden="true"></ul> <!></div>`),Ro=W(`<li><span class="dot svelte-juboms" aria-hidden="true"><!></span> <span class="name svelte-juboms"> </span> <span class="sr-only svelte-juboms"> </span></li>`),zo=W(`<ol class="journey svelte-juboms" aria-label="Journey"></ol> <!>`,1),Bo=W(`<p class="why thought svelte-juboms"> </p>`),Vo=W(`<div class="next elsewhere svelte-juboms"><div class="text svelte-juboms"><span class="kicker svelte-juboms"><span class="ring svelte-juboms" aria-hidden="true"></span> Running in a terminal</span> <h2 class="svelte-juboms"><span class="mono svelte-juboms"> </span> </h2> <p class="why svelte-juboms"> <!><!> </p> <!></div></div>`),Ho=W(`<p class="why svelte-juboms"><!></p>`),Uo=W(`<p class="spend svelte-juboms"><!> <span class="sr-only svelte-juboms"> </span></p>`),Wo=W(`<li class="mono svelte-juboms"><span class="plus svelte-juboms">+</span> </li>`),Go=W(`<ul class="files svelte-juboms"></ul> <p class="why small svelte-juboms">Only these are committed — nothing else you have staged.</p>`,1),Ko=W(`<!> <!> <!>`,1),qo=W(`<button class="link svelte-juboms">How to fix it</button>`),Jo=W(`<p class="stop svelte-juboms"><!> <!></p>`),Yo=W(`<button class="cmd svelte-juboms" title="Copy the command"><!><span class="mono svelte-juboms"> </span> <span class="c svelte-juboms"><!></span></button>`),Xo=W(`<span class="spin svelte-juboms" aria-hidden="true"></span>`),Zo=W(`<button role="menuitem"> </button>`),Qo=W(`<span class="menu svelte-juboms" role="menu"><button role="menuitem">As configured</button> <!></span>`),$o=W(`<button aria-label="Run with …">▾</button> <!>`,1),es=W(`<button class="btn small ghost svelte-juboms"> </button>`),ts=W(`<div><div class="text svelte-juboms"><span class="kicker svelte-juboms"><!> Up next</span> <h2 class="svelte-juboms"><!></h2> <!> <!> <!></div> <div class="go svelte-juboms"><span class="split svelte-juboms"><button><!> <!><kbd class="svelte-juboms">N</kbd></button> <!></span> <!></div></div>`),ns=W(`<p class="fixes svelte-juboms"><!></p>`),rs=W(`<p class="mono small svelte-juboms"> </p>`),is=W(`<div class="next problem svelte-juboms"><div class="text svelte-juboms"><span class="kicker svelte-juboms"><!> </span> <h2 class="svelte-juboms"> </h2> <!></div> <div class="go svelte-juboms"><button class="btn small ghost svelte-juboms" title="Copy what went wrong"><!> Copy</button></div></div>`),as=W(`<section><div class="top svelte-juboms"><div class="heading svelte-juboms"><!></div> <!></div> <!> <!></section>`);function os(e,t){Xe(t,!0);let n=ma(t,`compact`,3,!1),r=M(()=>Q.report?.data??null),i=M(()=>H(r)?.journey??[`spec`,`plan`,`tasks`,`commit`,`run`,`review`].map((e,t)=>({name:e,state:t===0?`now`:`todo`}))),a=M(()=>Q.primary),o=M(()=>Q.actions.filter(e=>e.group===`next`&&e!==H(a))),s=M(()=>!!Q.job?.running),c=M(()=>H(a)?.run?.kind===`run`?Q.blockers:[]),l=M(()=>H(a)?.run?.kind===`commit`?H(a).run.paths:[]),u={spec:`Spec`,plan:`Plan`,tasks:`Tasks`,commit:`Commit`,run:`Run`,review:`Review`},d=e=>e.charAt(0).toUpperCase()+e.slice(1),f=M(()=>H(r)?.totals??{}),p=M(()=>Co.map(e=>({k:e,n:H(f)[e]??0})).filter(e=>e.n>0&&(!H(r)?.bug||e.k!==`ready`&&e.k!==`blocked`))),m=M(()=>H(a)?H(a).run?.kind===`skill`?d(H(a).why):d(H(a).label):``),h=M(()=>H(s)?`Working…`:H(a)?.run?.kind===`commit`?`Commit`:H(a)?.input?`Start…`:H(c).length?`Run Anyway`:`Run`),g=N(!1);function _(){H(a)&&(navigator.clipboard?.writeText(H(a).command),P(g,!0),setTimeout(()=>P(g,!1),1600))}let v=M(()=>H(r)?Q.titleOf(H(r).feature):``),y=M(()=>H(a)?.run?.kind===`run`);B(()=>{H(y)&&Q.loadAgents(!1).catch(()=>{})});let b=M(()=>(Q.agents?.cards??[]).filter(e=>e.installed.state===`yes`)),x=M(()=>Q.runWith?H(b).find(e=>e.id===Q.runWith)?.name??Q.runWith:null),S=N(!1),C=N(null),w=wa();B(()=>{Q.report,H(y)&&w(ba(`/api/cost${Sa({feature:Q.feature??void 0})}`),e=>P(C,e.data??null,!0),()=>P(C,null))});let T=M(()=>H(y)?jo(H(C)):null),E=M(()=>H(r)?.feature.match(/^\d+/)?.[0]);var ee=as();let D;var O=I(ee),k=I(O),te=I(k),ne=e=>{var t=Po(),n=L(t),i=I(n),a=R(i,!0),o=z(i),s=e=>{var t=No(),n=L(t);$(n,{name:`branch`,size:13});var i=R(z(n),!0);V(()=>K(i,H(r).branch)),G(e,t)};q(o,e=>{H(r).branch&&e(s)}),A(n);var c=R(z(n,2),!0);V(()=>{K(a,H(E)??``),K(c,H(v))}),G(e,t)},re=e=>{var t=Fo(),n=R(t,!0);V(()=>K(n,Q.report?.message??`speccoder`)),G(e,t)};q(te,e=>{H(r)?e(ne):e(re,-1)}),A(k);var ie=z(k,2),ae=e=>{var t=Lo(),n=I(t);J(n,21,()=>H(p),e=>e.k,(e,t)=>{var n=Io(),r=I(n);{let e=M(()=>So(H(t).k));$(r,{get name(){return H(e)},size:13,weight:2})}var i=z(r),a=R(i,!0),o=R(z(i),!0);A(n),V(e=>{Y(n,1,`s-${H(t).k??``}`,`svelte-juboms`),K(a,H(t).n),K(o,e)},[()=>xo(H(t).k)]),G(e,n)}),A(n),Oo(z(n,2),{get totals(){return H(f)},size:88,width:9}),A(t),G(e,t)},oe=e=>{Oo(e,{get totals(){return H(f)},size:40,width:5,label:!1})};q(ie,e=>{H(p).length&&!n()?e(ae):H(p).length&&e(oe,1)}),A(O);var se=z(O,2),ce=e=>{var t=zo(),n=L(t);J(n,23,()=>H(i),e=>e.name,(e,t,n)=>{var r=Ro(),i=I(r),a=I(i),o=e=>{$(e,{name:`check`,size:13,weight:2.6})},s=e=>{G(e,Jr(`–`))},c=e=>{var t=Jr();V(()=>K(t,H(n)+1)),G(e,t)};q(a,e=>{H(t).state===`done`?e(o):H(t).state===`skipped`?e(s,1):e(c,-1)}),A(i);var l=z(i,2),d=R(l,!0),f=R(z(l,2),!0);A(r),V(()=>{Y(r,1,xi(H(t).state),`svelte-juboms`),X(r,`aria-current`,H(t).state===`now`?`step`:void 0),K(d,u[H(t).name]??H(t).name),K(f,H(t).state===`done`?`done`:H(t).state===`now`?`next`:H(t).state===`skipped`?`skipped`:`to do`)}),G(e,r)}),A(n),yo(z(n,2),{}),G(e,t)};q(se,e=>{n()||e(ce)});var le=z(se,2),ue=e=>{let t=M(()=>Q.live.live);var n=Vo(),i=I(n),a=z(I(i),2),o=I(a),s=R(o,!0),c=z(o);A(a);var l=z(a,2),u=I(l,!0),d=z(u),f=e=>{var n=Jr();V(()=>K(n,` ${H(t).stage_detail??``}`)),G(e,n)};q(d,e=>{H(t).stage_detail&&e(f)});var p=z(d),m=e=>{var n=Jr();V(()=>K(n,` · in ${H(t).feature??``}`)),G(e,n)};q(p,e=>{H(t).feature!==H(r)?.feature&&e(m)});var h=z(p);A(l);var g=z(l,2),_=e=>{var n=Bo(),r=R(n);V(()=>K(r,`∴ ${H(t).thinking??``}`)),G(e,n)};q(g,e=>{H(t).thinking&&e(_)}),A(i),A(n),V(()=>{K(s,H(t).task),K(c,` ${H(t).title??``}`),K(u,H(t).stage??`starting`),K(h,` — another speccoder (pid ${H(t).pid??``}) holds this project; its progress shows here as it goes.`)}),G(e,n)},de=e=>{var t=ts();let r;var i=I(t),u=I(i);$(I(u),{name:`sparkle`,size:13,weight:2}),j(),A(u);var f=z(u,2);so(I(f),{get text(){return H(m)}}),A(f);var p=z(f,2),v=e=>{var t=Ko(),n=L(t),r=e=>{var t=Ho(),n=I(t);{let e=M(()=>d(H(a).why));so(n,{get text(){return H(e)}})}A(t),G(e,t)};q(n,e=>{H(a).run?.kind!==`skill`&&e(r)});var i=z(n,2),o=e=>{var t=Uo(),n=I(t);$(n,{name:`dollar`,size:12,weight:2});var r=z(n),i=R(z(r));A(t),V(()=>{X(t,`title`,H(T).basis),K(r,` ${H(T).text??``}`),K(i,`— ${H(T).basis??``}`)}),G(e,t)};q(i,e=>{H(T)&&e(o)});var s=z(i,2),c=e=>{var t=Go(),n=L(t);J(n,21,()=>H(l),si,(e,t)=>{var n=Wo(),r=z(I(n),1,!0);A(n),V(()=>K(r,H(t))),G(e,n)}),A(n),j(2),G(e,t)};q(s,e=>{H(l).length&&e(c)}),G(e,t)};q(p,e=>{n()||e(v)});var C=z(p,2),w=e=>{var t=Jo(),r=I(t);$(r,{name:`exclaim`,size:14,weight:2});var i=z(r),a=z(i),o=e=>{var t=qo();U(`click`,t,()=>Q.view=`board`),G(e,t)};q(a,e=>{n()&&e(o)}),A(t),V(e=>K(i,` This run would stop: ${e??``}. `),[()=>H(c).map(e=>e.check).join(`, `)]),G(e,t)};q(C,e=>{H(c).length&&e(w)});var E=z(C,2),ee=e=>{var t=Yo(),n=I(t);$(n,{name:`terminal`,size:13});var r=z(n),i=R(r,!0),o=z(r,2),s=I(o),c=e=>{$(e,{name:`check`,size:13})},l=e=>{$(e,{name:`copy`,size:13})};q(s,e=>{H(g)?e(c):e(l,-1)}),A(o),A(t),V(()=>K(i,H(a).command)),U(`click`,t,_),G(e,t)};q(E,e=>{n()||e(ee)}),A(i);var D=z(i,2),O=I(D),k=I(O);let te;var ne=I(k),re=e=>{G(e,Xo())},ie=e=>{$(e,{name:`play`,size:13})};q(ne,e=>{H(s)?e(re):H(a).run?.kind!==`commit`&&e(ie,1)});var ae=z(ne),oe=z(ae),se=e=>{var t=Jr();V(()=>K(t,` with ${H(x)??``}`)),G(e,t)};q(oe,e=>{H(y)&&H(x)&&!H(s)&&e(se)}),j(),A(k);var ce=z(k,2),le=e=>{var t=$o(),n=L(t);let r;var i=z(n,2),a=e=>{var t=Qo(),n=I(t);let r;J(z(n,2),17,()=>H(b),e=>e.id,(e,t)=>{var n=Zo();let r;var i=R(n);V(()=>{r=Y(n,1,`svelte-juboms`,null,r,{on:Q.runWith===H(t).id}),K(i,`Run with ${H(t).name??``}`)}),U(`click`,n,()=>{P(S,!1),Q.chooseRunWith(H(t).id)}),G(e,n)}),A(t),V(()=>r=Y(n,1,`svelte-juboms`,null,r,{on:!Q.runWith})),U(`click`,n,()=>{P(S,!1),Q.chooseRunWith(null)}),G(e,t)};q(i,e=>{H(S)&&e(a)}),V(()=>{r=Y(n,1,`btn large more svelte-juboms`,null,r,{primary:!H(c).length}),n.disabled=H(s),X(n,`aria-expanded`,H(S))}),U(`click`,n,()=>P(S,!H(S))),G(e,t)};q(ce,e=>{H(y)&&H(b).length&&e(le)}),A(O);var ue=z(O,2),de=e=>{var t=Yr();J(L(t),17,()=>H(o).slice(0,2),e=>Da(e),(e,t)=>{var n=es(),r=R(n,!0);V(e=>{n.disabled=H(s)||!!H(t).blocked,X(n,`title`,H(t).blocked??H(t).why),K(r,e)},[()=>d(H(t).label)]),U(`click`,n,()=>Q.perform(H(t))),G(e,n)}),G(e,t)};q(ue,e=>{n()||e(de)}),A(D),A(t),V(()=>{r=Y(t,1,`next svelte-juboms`,null,r,{busy:H(s),warned:H(c).length>0}),te=Y(k,1,`btn large svelte-juboms`,null,te,{primary:!H(c).length}),k.disabled=H(s),K(ae,` ${H(h)??``}`)}),U(`click`,k,()=>Q.perform(Q.withAgent(H(a)))),G(e,t)},fe=e=>{var t=is(),n=I(t),r=I(n),i=I(r);$(i,{name:`exclaim`,size:13,weight:2});var a=z(i);A(r);var o=z(r,2),s=R(o,!0),c=z(o,2),l=e=>{var t=ns();fo(I(t),{get steps(){return Q.report.fix_steps}}),A(t),G(e,t)},u=e=>{var t=Yr();J(L(t),17,()=>Q.report.fix??[],si,(e,t)=>{var n=rs(),r=R(n,!0);V(()=>K(r,H(t))),G(e,n)}),G(e,t)};q(c,e=>{Q.report.fix_steps?.length?e(l):e(u,-1)}),A(n);var d=z(n,2),f=I(d);$(I(f),{name:`copy`,size:11}),j(),A(f),A(d),A(t),V(()=>{K(a,` ${Q.report.code??`Needs you`??``}`),K(s,Q.report.message)}),U(`click`,f,()=>Q.report&&Q.copyError(Q.report)),G(e,t)};q(le,e=>{Q.elsewhere&&Q.live?.live?e(ue):H(a)?e(de,1):Q.report&&Q.report.status!==`ok`&&e(fe,2)}),A(ee),V(()=>{D=Y(ee,1,`hero svelte-juboms`,null,D,{compact:n()}),X(ee,`aria-label`,`Where the ${Q.project?.unit??`feature`??``} is`)}),G(e,ee),Ze()}Rr([`click`]);function ss(e){return e.state===`regression_only`?`Regression only: ${e.regression?.text??`why was not recorded`}`:null}function cs(e){return e.last_attempt?.reason.match(/^tests not collected: `([^`]+)`/)?.[1]??null}function ls(e){switch(e.kind){case`progress`:return`the scenarios it turns green on its story's oracle`;case`linked`:return`its scenarios ${e.scenarios.join(`, `)} — green after it`;case`checkpoint`:return`its story's checkpoint — every scenario green after it`}}function us(e){if(!e)return null;switch(e.kind){case`linked`:return e.scenarios.join(` `);case`checkpoint`:return`closes the story`;default:return null}}function ds(e){let t=e.scenarios.filter(e=>e.state===`green`).length,n=e.scenarios.length,r=new Map;for(let t of e.scenarios)t.turned_by&&r.set(t.turned_by,[...r.get(t.turned_by)??[],t.id]);let i=[...r].map(([e,t])=>` · ${e} turned ${t.join(`, `)}`).join(``);return e.before_oracle?`ticked before its oracle: ${n} scenario(s) never run`:e.oracle?t===n?`${n} of ${n} green${i}`:`${t} of ${n} green${i} · ${e.checkpoint?`${e.checkpoint} closes it`:`no task closes it`}`:`${t} of ${n} green · its oracle is written at its first code task`}var fs=[{stage:`record`,label:`Record`},{stage:`reproduce`,label:`Reproduce`},{stage:`confirm`,label:`Confirm`},{stage:`unchanged`,label:`Unchanged`},{stage:`fix`,label:`Fix`},{stage:`ship`,label:`Ship`}];function ps(e){if(!e)return 0;if(e.stage===`done`)return e.outcome===`fixed`?fs.length:fs.findIndex(e=>e.stage===`reproduce`);let t=fs.findIndex(t=>t.stage===e.stage);return t<0?0:t}function ms(e,t,n){if(!e.trim())return`Say what happens`;let r=t.map(e=>e.trim()).filter(Boolean);if(!r.length)return`Say what should happen instead — the reproduction asserts it`;let i=n.map(e=>e.trim()).filter(Boolean);return i.length&&i.length!==r.length?`One test per expected behaviour, in order`:null}var hs=e=>`"${e.replaceAll(`"`,`\\"`)}"`;function gs(e){let t=[`speccoder bug ${hs(e.symptom.trim())}`];for(let n of e.expected.filter(e=>e.trim()))t.push(`--expected ${hs(n.trim())}`);for(let n of e.unchanged.filter(e=>e.trim()))t.push(`--unchanged ${hs(n.trim())}`);e.issue&&t.push(`--issue ${e.issue}`);for(let n of e.tests.filter(e=>e.trim()))t.push(`--test ${n.trim()}`);return e.candidate.trim()&&t.push(`--candidate ${e.candidate.trim()}`),e.run||t.push(`--no-run`),t.join(` `)}function _s(e){switch(e.outcome){case`recorded`:return e.confirmation?`Confirmed — the fix runs next`:`Recorded — not reproduced yet`;case`awaiting_confirmation`:return`The reproductions fail on the untouched code: do they show the bug?`;case`cannot_reproduce`:return`Could not be reproduced — nothing was fixed`;case`already_satisfied`:return`Already fixed — every reproduction passes`;case`unchanged_not_holding`:return`An Unchanged statement does not hold today`;case`fixed`:return e.verdict?.verdict===`verified`?`Fixed and verified`:`Fixed`;case`failed`:return`The fix did not pass`}}function vs(e){return e.outcome===`awaiting_confirmation`?`confirm`:e.outcome===`fixed`&&e.verdict?.verdict===`verified`?null:`run`}function ys(e){switch(e.outcome){case null:return`Not run yet`;case`recorded`:return`Recorded — not reproduced yet`;case`fixed`:return e.verdict?.verdict===`verified`?`Fixed and verified`:`Fixed — not verified; open it for the verdict`;default:return _s({outcome:e.outcome,verdict:e.verdict,confirmation:null})}}var bs=W(`<li> </li>`),xs=W(`<button class="btn tinted"><!>Confirm the Reproductions</button>`),Ss=W(`<button class="btn tinted"><!> </button>`),Cs=W(`<div class="act svelte-1upxd1g"><!></div>`),ws=W(`<li><span class="box svelte-1upxd1g" aria-hidden="true"><!></span><span class="id mono svelte-1upxd1g"> </span><span class="t svelte-1upxd1g"><!></span><span class="sr svelte-1upxd1g"> </span></li>`),Ts=W(`<section class="tasks svelte-1upxd1g" aria-label="The spec's tasks"><p class="note svelte-1upxd1g">Ticked together when the fix is verified</p> <ul class="svelte-1upxd1g"></ul></section>`),Es=W(`<article class="bug svelte-1upxd1g" aria-labelledby="bug-card-title"><button class="head svelte-1upxd1g" title="Open the bug: its reproductions, confirmation and verdict"><span class="chip svelte-1upxd1g"><!>Bug</span> <h3 id="bug-card-title" class="svelte-1upxd1g"> </h3> <span class="words svelte-1upxd1g"> </span></button> <ol class="strip svelte-1upxd1g" aria-label="Stages"></ol> <!> <!></article>`);function Ds(e,t){Xe(t,!0);let n=M(()=>vs(t.bug)),r=M(()=>ps(t.bug)),i=e=>e.state!==`ready`&&e.state!==`blocked`,a=()=>Q.bugSheet={key:t.bug.key},o=M(()=>`speccoder run${Q.feature?` --feature ${Q.feature}`:``}`);function s(){Q.perform(Q.withAgent(ja({kind:`run`,task:null},{group:`work`,label:`run the bug`,why:`reproduced, confirmed by you once, fixed — verified only when the revert is rejected`,command:H(o)})))}var c=Es(),l=I(c),u=I(l);$(I(u),{name:`exclaim`,size:11,weight:2.2}),j(),A(u);var d=z(u,2),f=R(d,!0),p=R(z(d,2),!0);A(l);var m=z(l,2);J(m,23,()=>fs,e=>e.stage,(e,t,n)=>{var i=bs();let a;var o=R(i,!0);V(()=>{X(i,`aria-current`,H(n)===H(r)?`step`:void 0),a=Y(i,1,`svelte-1upxd1g`,null,a,{done:H(n)<H(r),now:H(n)===H(r)}),K(o,H(t).label)}),G(e,i)}),A(m);var h=z(m,2),g=e=>{var r=Cs(),i=I(r),c=e=>{var t=xs();$(I(t),{name:`check`,size:12}),j(),A(t),U(`click`,t,a),G(e,t)},l=e=>{var n=Ss(),r=I(n);$(r,{name:`play`,size:11});var i=z(r,1,!0);A(n),V(()=>{n.disabled=!!Q.job?.running,X(n,`title`,`$ ${H(o)??``}`),K(i,t.bug.outcome===null?`Run the Bug`:`Run the Bug Again`)}),U(`click`,n,s),G(e,n)};q(i,e=>{H(n)===`confirm`?e(c):e(l,-1)}),A(r),G(e,r)};q(h,e=>{H(n)&&e(g)});var _=z(h,2),v=e=>{var n=Ts(),r=z(I(n),2);J(r,21,()=>t.tasks,e=>e.id,(e,t)=>{var n=ws();let r;var a=I(n),o=I(a),s=e=>{$(e,{name:`check`,size:10,weight:2.4})},c=M(()=>i(H(t)));q(o,e=>{H(c)&&e(s)}),A(a);var l=z(a),u=R(l,!0),d=z(l);so(I(d),{get text(){return H(t).title}}),A(d);var f=R(z(d),!0);A(n),V((e,i)=>{r=Y(n,1,`svelte-1upxd1g`,null,r,{closed:e}),K(u,H(t).id),K(f,i)},[()=>i(H(t)),()=>i(H(t))?`done`:`open`]),G(e,n)}),A(r),A(n),G(e,n)};q(_,e=>{t.tasks.length&&e(v)}),A(c),V(e=>{K(f,t.bug.title),K(p,e)},[()=>ys(t.bug)]),U(`click`,l,a),G(e,c),Ze()}Rr([`click`]);var Os=`modulepreload`,ks=function(e){return`/`+e},As={},js=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=ks(t,n),t=s(t),t in As)return;As[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:Os,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Ms=null,Ns=0;function Ps(){let e=document.documentElement.getAttribute(`data-theme`);return e?e===`dark`:matchMedia(`(prefers-color-scheme: dark)`).matches}async function Fs(){Ms??=js(()=>import(`./mermaid.core.js`).then(e=>e.default),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]));let e=await Ms;return e.initialize({startOnLoad:!1,securityLevel:`strict`,theme:Ps()?`dark`:`neutral`,fontFamily:`-apple-system, BlinkMacSystemFont, 'SF Pro Text', system-ui, sans-serif`}),e}async function Is(e){let t=[...e.querySelectorAll(`pre > code.language-mermaid`)];if(!t.length)return;let n=await Fs();for(let e of t){let t=e.parentElement,r=e.textContent??``,i=document.createElement(`figure`);i.className=`diagram`;try{let{svg:e}=await n.render(`mmd-${++Ns}`,r);i.innerHTML=e,i.title=`Mermaid diagram`}catch(e){let n=document.createElement(`p`);n.className=`diagram-error`,n.textContent=`This diagram does not parse: ${String(e.message??e).split(`
`)[0]}`,i.append(t.cloneNode(!0),n)}t.replaceWith(i)}}function Ls(e,t){return Is(e),{update(t){Is(e)}}}var Rs=W(`<p class="none svelte-f1muti"><!> No findings</p>`),zs=W(`<button class="at mono svelte-f1muti"> </button>`),Bs=W(`<li><span class="lv svelte-f1muti" role="img"><!></span> <span class="msg svelte-f1muti"> </span> <span class="rule mono svelte-f1muti"> </span> <!></li>`),Vs=W(`<button class="btn small ghost more svelte-f1muti"> </button>`),Hs=W(`<ul class="findings svelte-f1muti" aria-label="Findings"></ul> <!>`,1);function Us(e,t){Xe(t,!0);let n=N(!1),r=M(()=>H(n)?t.findings:t.findings.slice(0,10)),i={icon:`circle`,label:`Finding`},a={error:{icon:`xoctagon`,label:`Error`},warning:{icon:`exclaim`,label:`Warning`},note:{icon:`info`,label:`Note`}};function o(e){e.file&&(Q.codeMode=`files`,Q.codeFile=e.file,Q.codeLine=e.line??1,Q.view=`code`)}var s=Yr(),c=L(s),l=e=>{var t=Rs();$(I(t),{name:`check`,size:12,weight:2.4}),j(),A(t),G(e,t)},u=e=>{var s=Hs(),c=L(s);J(c,21,()=>H(r),si,(e,t)=>{let n=M(()=>a[H(t).level]??i);var r=Bs(),s=I(r);$(I(s),{get name(){return H(n).icon},size:13,weight:2.2}),A(s);var c=z(s,2),l=R(c,!0),u=z(c,2),d=R(u,!0),f=z(u,2),p=e=>{var n=zs(),r=R(n);V(()=>{X(n,`title`,`Open ${H(t).file??``}${H(t).line?` at line ${H(t).line}`:``}`),K(r,`${H(t).file??``}${H(t).line?`:${H(t).line}`:``}`)}),U(`click`,n,()=>o(H(t))),G(e,n)};q(f,e=>{H(t).file&&e(p)}),A(r),V(()=>{Y(r,1,xi(H(t).level),`svelte-f1muti`),X(s,`title`,H(n).label),X(s,`aria-label`,H(n).label),K(l,H(t).message),K(d,H(t).rule)}),G(e,r)}),A(c);var l=z(c,2),u=e=>{var r=Vs(),i=R(r,!0);V(()=>K(i,H(n)?`Show fewer`:`Show all ${t.findings.length}`)),U(`click`,r,()=>P(n,!H(n))),G(e,r)};q(l,e=>{t.findings.length>10&&e(u)}),G(e,s)};q(c,e=>{t.findings.length===0?e(l):e(u,-1)}),G(e,s),Ze()}Rr([`click`]);var Ws=W(`<p class="wait svelte-xgd5cj"><!> <button class="link svelte-xgd5cj"> </button></p>`),Gs=W(`<span class="when svelte-xgd5cj"> </span>`),Ks=W(`<button class="icon-btn svelte-xgd5cj" title="Run again"><!></button>`),qs=W(`<div class="center svelte-xgd5cj"><span class="spinner svelte-xgd5cj" aria-label="Loading"></span></div>`),Js=W(`<p class="bad svelte-xgd5cj"><!> </p>`),Ys=W(`<div class="svelte-xgd5cj"><dt class="svelte-xgd5cj"> </dt><dd class="svelte-xgd5cj"> </dd></div>`),Xs=W(`<dl class="metrics svelte-xgd5cj"></dl>`),Zs=W(`<th scope="col" class="svelte-xgd5cj"> </th>`),Qs=W(`<td class="svelte-xgd5cj"> </td>`),$s=W(`<tr></tr>`),ec=W(`<div class="scroll svelte-xgd5cj"><table class="svelte-xgd5cj"><thead><tr></tr></thead><tbody></tbody></table></div>`),tc=W(`<div class="prose svelte-xgd5cj"></div>`),nc=W(`<article><header class="svelte-xgd5cj"><strong class="svelte-xgd5cj"> </strong> <span class="from svelte-xgd5cj"> </span> <!> <!></header> <!></article>`),rc=W(`<span class="sr svelte-xgd5cj">Loading the extensions' views</span>`),ic=W(`<section class="views svelte-xgd5cj" aria-label="Extensions"><h3 class="svelte-xgd5cj"><!> Extensions</h3> <!> <div class="grid svelte-xgd5cj"></div> <!></section>`);function ac(e,t){Xe(t,!0);let n=ma(t,`feature`,3,null),r=N(null),i=N(!1);B(()=>{Q.job?.running,P(i,!0),ba(`/api/extensions/views${Sa({feature:n()??void 0})}`).then(e=>P(r,e,!0)).catch(()=>{}).finally(()=>P(i,!1))});let a=M(()=>H(r)?.data?.views??[]),o=M(()=>H(a).filter(e=>!e.waits_for_trust)),s=M(()=>[...new Set(H(a).filter(e=>e.waits_for_trust).map(e=>e.extension))]),c=e=>H(a).filter(t=>t.extension===e).length;function l(e){let t=Math.max(0,(Date.now()-Date.parse(e))/1e3);return t<60?`just now`:t<3600?`${Math.round(t/60)} min ago`:t<86400?`${Math.round(t/3600)} h ago`:new Date(e).toLocaleDateString()}let u=e=>Q.perform(ja({kind:`view_run`,extension:e.extension,view:e.view.name,feature:n()??void 0},{group:`extensions`,label:`run ${e.view.title} again`,why:``,command:``})),d=()=>{Q.view=`settings`,Q.settingsSection=`extensions`};var f=Yr(),p=L(f),m=e=>{var t=ic(),n=I(t);$(I(n),{name:`grid`,size:14,weight:2}),j(),A(n);var a=z(n,2);J(a,16,()=>H(s),e=>e,(e,t)=>{var n=Ws(),r=I(n);$(r,{name:`hand`,size:13,weight:2.2});var i=z(r),a=z(i),o=R(a);A(n),V((e,n)=>{K(i,` ${e??``} of ${t??``} ${n??``} for your trust. `),K(o,`Review ${t??``}…`)},[()=>c(t)===1?`A view`:`${c(t)} views`,()=>c(t)===1?`waits`:`wait`]),U(`click`,a,d),G(e,n)});var f=z(a,2);J(f,21,()=>H(o),e=>e.extension+e.view.name,(e,t)=>{let n=M(()=>H(t).result);var r=nc();let i;var a=I(r),o=I(a),s=R(o,!0),c=z(o,2),d=R(c,!0),f=z(c,2),p=e=>{var t=Gs(),r=R(t,!0);V(e=>{X(t,`title`,H(n).ran_at),K(r,e)},[()=>l(H(n).ran_at)]),G(e,t)};q(f,e=>{H(n)&&e(p)});var m=z(f,2),h=e=>{var n=Ks();$(I(n),{name:`loop`,size:13,weight:2.2}),A(n),V(()=>{X(n,`aria-label`,`Run ${H(t).view.title??``} again`),n.disabled=!!Q.job?.running}),U(`click`,n,()=>u(H(t))),G(e,n)};q(m,e=>{`run`in H(t).view.source&&e(h)}),A(a);var _=z(a,2),v=e=>{G(e,qs())},y=e=>{var t=Js(),r=I(t);$(r,{name:`exclaim`,size:13});var i=z(r);A(t),V(()=>K(i,` ${H(n).error??``}`)),G(e,t)},b=e=>{Us(e,{get findings(){return H(n).data.findings}})},x=e=>{var t=Xs();J(t,21,()=>H(n).data.metrics,([e,t])=>e,(e,t)=>{var n=M(()=>g(H(t),2));let r=()=>H(n)[0],i=()=>H(n)[1];var a=Ys(),o=I(a),s=R(o,!0),c=R(z(o),!0);A(a),V(e=>{K(s,e),K(c,i())},[()=>r().replaceAll(`_`,` `)]),G(e,a)}),A(t),G(e,t)},S=e=>{var t=ec(),r=I(t),i=I(r),a=I(i);J(a,20,()=>H(n).data.columns,e=>e,(e,t)=>{var n=Zs(),r=R(n,!0);V(()=>K(r,t)),G(e,n)}),A(a),A(i);var o=z(i);J(o,21,()=>H(n).data.rows,si,(e,t)=>{var n=$s();J(n,21,()=>H(t),si,(e,t)=>{var n=Qs(),r=R(n,!0);V(()=>K(r,H(t))),G(e,n)}),A(n),G(e,n)}),A(o),A(r),A(t),G(e,t)},C=e=>{var t=tc();gi(t,()=>H(n).data.html,!0),A(t),_i(t,(e,t)=>Ls?.(e,t),()=>H(n).data.html),G(e,t)};q(_,e=>{H(n)?H(n).error?e(y,1):H(n).data?.widget===`findings`?e(b,2):H(n).data?.widget===`metrics`?e(x,3):H(n).data?.widget===`table`?e(S,4):H(n).data?.widget===`markdown`&&e(C,5):e(v)}),A(r),V(()=>{i=Y(r,1,`card svelte-xgd5cj`,null,i,{wide:H(t).view.widget===`markdown`||H(t).view.widget===`table`}),K(s,H(t).view.title),K(d,H(t).extension)}),G(e,r)}),A(f);var p=z(f,2),m=e=>{G(e,rc())};q(p,e=>{H(i)&&!H(r)&&e(m)}),A(t),G(e,t)};q(p,e=>{H(a).length&&e(m)}),G(e,f),Ze()}Rr([`click`]);var oc=W(`<div class="empty svelte-nkg03k"><!> <p class="svelte-nkg03k"><strong class="svelte-nkg03k">No tasks yet</strong></p> <p class="muted svelte-nkg03k">The next step above writes the task list.</p></div>`),sc=W(`<span></span>`),cc=W(`<li class="svelte-nkg03k"><button class="story svelte-nkg03k"><strong class="svelte-nkg03k"> </strong> <span class="marks svelte-nkg03k" aria-hidden="true"></span> <span class="sl svelte-nkg03k"> </span></button></li>`),lc=W(`<ul class="stories svelte-nkg03k" aria-label="Stories"></ul>`),uc=W(`<span class="who planning svelte-nkg03k" title="Planning work: design documents in the feature's folder, judged by the checks">📐 Planning</span>`),dc=W(`<span class="who yours svelte-nkg03k" title="A step only you can take: open it to say you did it, give a hint, or skip it">🙋 Yours</span>`),fc=W(`<span class="phase svelte-nkg03k"> </span>`),pc=W(`<span class="foot changed svelte-nkg03k" title="The spec changed since this tick: its evidence is for the earlier wording"><!> </span>`),mc=W(`<span class="foot share svelte-nkg03k"><!> </span>`),hc=W(`<span class="foot aside svelte-nkg03k" title="Changes found in the worktree when its run started — keep or discard them in the inspector"><!>Changes set aside</span>`),gc=W(`<span class="stage svelte-nkg03k" aria-live="polite"><span class="pulse svelte-nkg03k" aria-hidden="true"></span> </span>`),_c=W(`<span class="foot svelte-nkg03k"><span class="meter svelte-nkg03k"><span></span></span><span class="sv mono svelte-nkg03k"> </span></span>`),vc=W(`<span class="foot muted svelte-nkg03k"><!> </span>`),yc=W(`<span class="foot fail svelte-nkg03k"><!>Tests never ran: <code class="svelte-nkg03k"> </code></span>`),bc=W(`<span class="foot fail svelte-nkg03k"><!> </span>`),xc=W(`<div class="act svelte-nkg03k"><button class="btn small tinted svelte-nkg03k"><!>Run</button></div>`),Sc=W(`<article><button class="open svelte-nkg03k"><span class="row svelte-nkg03k"><span class="id mono svelte-nkg03k"> </span><!><!></span> <span class="t svelte-nkg03k"><!></span> <!> <!> <!> <!></button> <!></article>`),Cc=W(`<button class="more svelte-nkg03k"><!> </button>`),wc=W(`<section class="lane svelte-nkg03k"><h3><!><span class="title svelte-nkg03k"> </span><span class="count svelte-nkg03k"> </span></h3> <!> <!></section>`),Tc=W(`<!> <div class="board svelte-nkg03k" data-tour="board"></div> <!>`,1);function Ec(e,t){Xe(t,!0);let n=N(F({})),r=M(()=>Q.report?.data?.tasks??[]),i=M(()=>Q.report?.data?.bug??null),a=M(()=>(Q.report?.data?.stories??[]).filter(e=>!e.proven&&!e.before_oracle)),o=M(()=>new Set(Q.approvals.map(e=>e.task))),s=M(()=>Q.job?.running?Q.task?.id:Q.elsewhere&&Q.live?.live?.feature===Q.feature?Q.live.live.task:void 0),c=[{key:`needs_approval`,title:`Waiting for You`},{key:`running`,title:`Running`},{key:`ready`,title:`Ready`},{key:`blocked`,title:`Blocked`},{key:`verified`,title:`Verified`},{key:`regression_only`,title:`Regression Only`},{key:`attested`,title:`Attested`},{key:`ticked_without_evidence`,title:`No Evidence`},{key:`skipped`,title:`Skipped`}],l=e=>H(o).has(e.id)?`needs_approval`:H(s)===e.id?`running`:e.state===`evidence_without_tick`?`ticked_without_evidence`:e.state,u=M(()=>c.map(e=>({...e,tasks:H(r).filter(t=>l(t)===e.key)})).filter(e=>e.tasks.length)),d=e=>{let t=e?.match(/^(\d\.\d\d)/);return t?Number(t[1]):null},f=M(()=>Q.job?.running?[...Q.stages].reverse().find(e=>e.state===`started`)?.stage??`starting`:(Q.live?.live?.stage??`starting`)+` · in a terminal`);async function p(e,t){t.preventDefault();let n=t.clientX,r=t.clientY,i=Aa(await ba(`/api/actions${Sa({feature:Q.feature??void 0,task:e.id})}`).catch(()=>[]),e.id),a=(e,t)=>()=>{navigator.clipboard?.writeText(e),Q.toast({tone:`ok`,text:`Copied ${t}`,detail:e})};Q.context={x:n,y:r,title:`${e.id} · ${xo(l(e))}`,items:[{label:`Show Evidence`,icon:`shield`,act:()=>void Q.selectTask(e.id)},{label:`Add to Ask`,icon:`bubble`,hint:`⌘⇧L`,act:()=>Z.add({kind:`task`,reference:{task:e.id,feature:Q.feature},label:`${e.id} ${e.title}`})},...i.map(e=>({label:Ta[e.id.kind].verb+(e.input?`…`:``),icon:Ta[e.id.kind].icon,disabled:e.blocked??(Q.job?.running?`a job is running`:null),hint:`$ ${e.command}`,act:()=>void Q.perform(e)})),{label:`Copy Task ID`,icon:`copy`,act:a(e.id,`the task ID`)},{label:`Copy the Run Command`,icon:`terminal`,act:a(`speccoder run --task ${e.id}`,`the command`)}]}}function m(e,t){t.stopPropagation(),Q.perform(Q.withAgent(ja({kind:`run`,task:e.id},{group:`work`,label:`run ${e.id}`,why:e.title,command:`speccoder run --task ${e.id}`})))}var h=Yr(),g=L(h),_=e=>{Ds(e,{get bug(){return H(i)},get tasks(){return H(r)}})},v=e=>{var t=oc();$(I(t),{name:`list`,size:28}),j(4),A(t),G(e,t)},y=e=>{var t=Tc(),r=L(t),i=e=>{var t=lc();J(t,21,()=>H(a),e=>e.story,(e,t)=>{var n=cc(),r=I(n),i=I(r),a=R(i,!0),o=z(i,2);J(o,21,()=>H(t).scenarios,e=>e.id,(e,t)=>{var n=sc();let r;V(()=>{r=Y(n,1,`mk svelte-nkg03k`,null,r,{on:H(t).state===`green`,untested:H(t).state===`untested`}),X(n,`title`,`${H(t).id??``}: ${H(t).state===`green`?H(t).turned_by?`turned green by ${H(t).turned_by}`:`green from the start`:H(t).state===`untested`?`no test checks it`:`red — ${H(t).contract??`not built yet`}`}`)}),G(e,n)}),A(o);var s=R(z(o,2),!0);A(r),A(n),V((e,n)=>{r.disabled=!H(t).checkpoint,X(r,`aria-label`,`${H(t).story??``}: ${e??``}`),X(r,`title`,H(t).checkpoint?`Open ${H(t).checkpoint}, the task that closes the story`:`No open code task closes this story: see doctor`),K(a,H(t).story),K(s,n)},[()=>ds(H(t)),()=>ds(H(t))]),U(`click`,r,()=>H(t).checkpoint&&Q.selectTask(H(t).checkpoint)),G(e,n)}),A(t),G(e,t)};q(r,e=>{H(a).length&&e(i)});var o=z(r,2);J(o,21,()=>H(u),e=>e.key,(e,t)=>{var r=wc(),i=I(r),a=I(i);{let e=M(()=>So(H(t).key));$(a,{get name(){return H(e)},size:14,weight:2})}var o=z(a),c=R(o,!0),u=R(z(o),!0);A(i);var h=z(i,2);J(h,17,()=>H(n)[H(t).key]?H(t).tasks:H(t).tasks.slice(0,5),e=>e.id,(e,n)=>{let r=M(()=>d(H(n).strength)),i=M(()=>H(s)===H(n).id),a=M(()=>ss(H(n))),o=M(()=>cs(H(n)));var c=Sc(),u=e=>p(H(n),e);Yi(c,e=>({class:`card`,oncontextmenu:u,...e,[Ii]:{on:Q.selected===H(n).id,live:H(i)}}),[()=>Ga(`task`,{task:H(n).id,feature:Q.feature},`${H(n).id} ${H(n).title}`)],void 0,void 0,`svelte-nkg03k`);var h=I(c),g=I(h),_=I(g),v=R(_,!0),y=z(_),b=e=>{G(e,uc())},x=e=>{G(e,dc())};q(y,e=>{H(n).lane===`planning`?e(b):H(n).lane===`yours`&&e(x,1)});var S=z(y),C=e=>{var t=fc(),r=R(t,!0);V(e=>{X(t,`title`,H(n).phase),K(r,e)},[()=>wo(H(n).phase)]),G(e,t)};q(S,e=>{H(n).phase&&e(C)}),A(g);var w=z(g,2);so(I(w),{get text(){return H(n).title}}),A(w);var T=z(w,2),E=e=>{var t=pc(),r=I(t);$(r,{name:`exclaim`,size:12,weight:2.2});var i=z(r);A(t),V(e=>K(i,`Spec changed: ${e??``}`),[()=>H(n).drift.requirements.map(e=>e.id).join(`, `)]),G(e,t)};q(T,e=>{H(n).drift?.requirements.length&&e(E)});var ee=z(T,2),D=e=>{var t=mc(),r=I(t);$(r,{name:`seal`,size:12});var i=z(r,1,!0);A(t),V((e,n)=>{X(t,`title`,`Judged by ${e??``}`),K(i,n)},[()=>H(n).judged?ls(H(n).judged):``,()=>us(H(n).judged)]),G(e,t)},O=M(()=>us(H(n).judged));q(ee,e=>{H(O)&&e(D)});var k=z(ee,2),te=e=>{var t=hc();$(I(t),{name:`tray`,size:12}),j(),A(t),G(e,t)};q(k,e=>{H(n).set_aside&&e(te)});var ne=z(k,2),re=e=>{var t=gc(),n=z(I(t));A(t),V(()=>K(n,`${H(f)??``}…`)),G(e,t)},ie=e=>{var t=_c(),i=I(t),a=I(i);let o;A(i);var s=R(z(i),!0);A(t),V(e=>{X(i,`title`,`Acceptance strength ${H(n).strength??``}`),Oi(a,`width:${H(r)*100}%`),o=Y(a,1,`svelte-nkg03k`,null,o,{low:H(r)<.8}),K(s,e)},[()=>H(r).toFixed(2)]),G(e,t)},ae=e=>{var t=vc(),r=I(t);$(r,{name:`hourglass`,size:12});var i=z(r);A(t),V(e=>K(i,`Waits for ${e??``}`),[()=>H(n).blocked_by.join(`, `)]),G(e,t)},oe=e=>{var t=yc(),r=I(t);$(r,{name:`xoctagon`,size:12});var i=R(z(r,2),!0);A(t),V(()=>{X(t,`title`,H(n).last_attempt.reason),K(i,H(o))}),G(e,t)},se=e=>{var t=bc(),r=I(t);$(r,{name:`xoctagon`,size:12});var i=z(r);A(t),V(e=>{X(t,`title`,H(n).last_attempt.reason),K(i,`Last attempt ${e??``}`)},[()=>H(n).last_attempt.outcome.replaceAll(`_`,` `)]),G(e,t)};q(ne,e=>{H(i)?e(re):H(r)===null?H(n).blocked_by.length?e(ae,2):H(o)&&H(n).last_attempt?e(oe,3):H(n).last_attempt&&e(se,4):e(ie,1)}),A(h);var ce=z(h,2),le=e=>{var t=xc(),r=I(t);$(I(r),{name:`play`,size:11}),j(),A(r),A(t),V(()=>r.disabled=!!Q.job?.running),U(`click`,r,e=>m(H(n),e)),G(e,t)};q(ce,e=>{H(t).key===`ready`&&H(n).lane!==`yours`&&e(le)}),A(c),V(e=>{X(h,`aria-label`,`${H(n).id??``} ${H(n).title??``}, ${e??``}`),X(h,`title`,H(a)??void 0),K(v,H(n).id)},[()=>H(a)??xo(l(H(n)))]),U(`click`,h,()=>Q.selectTask(H(n).id)),G(e,c)});var g=z(h,2),_=e=>{var r=Cc(),i=I(r);{let e=M(()=>H(n)[H(t).key]?`arrowup`:`down`);$(i,{get name(){return H(e)},size:13})}var a=z(i);A(r),V(()=>K(a,` ${H(n)[H(t).key]?`Show Less`:`${H(t).tasks.length-5} More`}`)),U(`click`,r,()=>P(n,{...H(n),[H(t).key]:!H(n)[H(t).key]},!0)),G(e,r)};q(g,e=>{H(t).tasks.length>5&&e(_)}),A(r),V(()=>{X(r,`aria-label`,H(t).title),Y(i,1,`s-${H(t).key??``}`,`svelte-nkg03k`),K(c,H(t).title),K(u,H(t).tasks.length)}),G(e,r)}),A(o);var c=z(o,2),h=e=>{ac(e,{get feature(){return Q.feature}})};q(c,e=>{Q.feature&&e(h)}),G(e,t)};q(g,e=>{H(i)?e(_):H(r).length===0?e(v,1):e(y,-1)}),G(e,h),Ze()}Rr([`click`]);var Dc=e=>e.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,`-`).replace(/^-+|-+$/g,``).slice(0,60)||`section`;function Oc(e){if(typeof DOMParser>`u`||!e)return{html:e,sections:[]};let t=new DOMParser().parseFromString(`<div>${e}</div>`,`text/html`).body.firstElementChild;if(!t)return{html:e,sections:[]};let n=[],r=new Map,i=null;for(let e of Array.from(t.children))if(e.tagName===`H2`||e.tagName===`H3`){let t=(e.textContent??``).trim(),a=`s-${Dc(t)}`,o=r.get(a)??0;r.set(a,o+1);let s=o?`${a}-${o+1}`:a;e.id=s,i={id:s,level:e.tagName===`H2`?2:3,text:t,reqs:[]},n.push(i)}else if(i)for(let t of(e.textContent??``).matchAll(/\b(?:FR|SC|NFR)-\d{2,4}\b/g))i.reqs.includes(t[0])||i.reqs.push(t[0]);return{html:t.innerHTML,sections:n}}var kc=e=>(e??``).replace(/^\s*-\s*\*\*[A-Z]+-\d+\*\*:?\s*/,``).trim();function Ac(e,t){let n=e.split(/(\s+)/).filter(Boolean),r=t.split(/(\s+)/).filter(Boolean),i=r.length+1,a=new Uint16Array((n.length+1)*i),o=(e,t)=>a[e*i+t]??0;for(let e=n.length-1;e>=0;e--)for(let t=r.length-1;t>=0;t--)a[e*i+t]=n[e]===r[t]?o(e+1,t+1)+1:Math.max(o(e+1,t),o(e,t+1));let s=[],c=(e,t)=>{if(e===void 0)return;let n=s[s.length-1];n?.kind===t?n.text+=e:s.push({text:e,kind:t})},l=0,u=0;for(;l<n.length&&u<r.length;)n[l]===r[u]?(c(n[l],`same`),l++,u++):o(l+1,u)>=o(l,u+1)?c(n[l++],`gone`):c(r[u++],`new`);for(;l<n.length;)c(n[l++],`gone`);for(;u<r.length;)c(r[u++],`new`);return s}var jc=/\[NEEDS CLARIFICATION:?\s*([^\]]*)\]/g;function Mc(e){let t=[],n=0;for(let r of e.matchAll(jc))(r.index??0)>n&&t.push({text:e.slice(n,r.index),question:!1}),t.push({text:(r[1]??``).trim(),question:!0}),n=(r.index??0)+r[0].length;return n<e.length&&t.push({text:e.slice(n),question:!1}),t}var Nc=e=>e.replace(jc,`⟨question⟩`),Pc=W(`<b class="svelte-1o81dvf"> </b>:`,1),Fc=W(`<span class="hint svelte-1o81dvf"><!> </span>`),Ic=W(`<span class="hint more svelte-1o81dvf"> </span>`),Lc=W(`<div class="help svelte-1o81dvf"><span class="hints svelte-1o81dvf" aria-live="polite"><!> <!></span> <button type="button" class="shape-btn svelte-1o81dvf"><!> Shape</button></div>`);function Rc(e,t){Xe(t,!0);let n=N(F([])),r,i=0;B(()=>{let e=t.text;clearTimeout(r);let a=++i;if(!e.trim())P(n,[],!0);else return r=setTimeout(()=>{xa(`/api/shape/check`,{field:t.field,text:e}).then(e=>{a===i&&P(n,e.findings,!0)}).catch(()=>{})},450),()=>clearTimeout(r)});let a=M(()=>!/[\p{L}\p{N}]/u.test(t.text));var o=Lc(),s=I(o),c=I(s);J(c,17,()=>H(n).slice(0,3),e=>e.rule+e.words,(e,t)=>{var n=Fc(),r=I(n),i=e=>{var n=Pc(),r=R(L(n),!0);j(),V(()=>K(r,H(t).words)),G(e,n)};q(r,e=>{H(t).words&&e(i)});var a=z(r,1,!0);A(n),V(()=>{X(n,`title`,`${H(t).reason??``} — ${H(t).fix??``}`),K(a,H(t).fix)}),G(e,n)});var l=z(c,2),u=e=>{var t=Ic(),r=R(t);V(()=>K(r,`+${H(n).length-3}`)),G(e,t)};q(l,e=>{H(n).length>3&&e(u)}),A(s);var d=z(s,2);$(I(d),{name:`sparkle`,size:11,weight:2.2}),j(),A(d),A(o),V(()=>{d.disabled=H(a),X(d,`title`,H(a)?`Write a few words first — any words`:`Make it clear and testable; every change is shown, nothing is used until you decide`)}),U(`click`,d,()=>Q.shape={field:t.field,text:t.text,accept:t.onshaped}),G(e,o),Ze()}Rr([`click`]);function zc(e){let t=e.tests.filter(e=>e.red).length,n=e.ambiguities.find(e=>!e.resolution);if(n)return`blocked: two readings of ${n.scenario}`;if(e.state===`frozen`)return`${t} ${t===1?`test`:`tests`} frozen`;if(t===0)return`tests written at run time`;let r=[`${t} ${t===1?`test`:`tests`}`];return e.held_out.state===`kept`&&r.push(`${e.held_out.count} held out`),e.strength_target!=null&&r.push(`target ${e.strength_target}%`),r.join(` · `)}var Bc=e=>e.ambiguities.some(e=>!e.resolution);function Vc(e){let t=e.scenarios.length;return`Covers ${t-Math.min(t,e.uncovered.length)} of ${t} ${t===1?`scenario`:`scenarios`}`}function Hc(e){return e.calls===1?`1 author call · ambiguity check off`:`${e.calls} author calls`}function Uc(e,t,n){let r={writing:`Writing`,comparing:`Comparing`,checking_red:`Checking red`,held_out:`Held out`}[e]??e.replaceAll(`_`,` `);return e===`writing`&&n>1?`${r} (${t}/${n})`:r}function Wc(e,t,n,r){switch(t){case`write`:return`speccoder review tests ${e} --write`;case`reject`:return`speccoder review tests ${e} --reject ${n??`PATH`} --reason "…"`;case`again`:return`speccoder review tests ${e} --again ${n??`PATH`} --comment "…"`;case`edit`:return`speccoder review tests ${e} --edit ${n??`PATH`} --from FILE`;case`reading`:return`speccoder review tests ${e} --reading ${n??`A`} ${r??`SCENARIO`}`}}function Gc(e,t,n){if(t===`refine`)return[];let r=[...e?.blocked??[]];return!e?.sha256&&!r.length&&r.push(`the sheet cannot say what it would freeze: open it again`),n&&!r.some(e=>e.includes(`run is active`))&&r.push(`a run is active`),t===`autopilot`&&e?.autopilot_blocked&&r.push(e.autopilot_blocked),r}function Kc(e,t){return e===`refine`?`speccoder review comments`:`speccoder review approve --run ${e}${t.map(e=>` --grant ${e}`).join(``)}`}function qc(e){switch(e.kind){case`passage`:return e.start_line===e.end_line?`${e.path}:${e.start_line}`:`${e.path}:${e.start_line}-${e.end_line}`;case`diff_line`:return`${e.path}:${e.line} (${e.side})`;case`test_line`:return`${e.req} ${e.path}:${e.line}`;case`finding`:return`${e.source} ${e.id}`}}var Jc=e=>e.kind===`finding`?e.text:e.quote;function Yc(e){switch(e.kind){case`passage`:return e.section||e.path.split(`/`).pop()||e.path;case`diff_line`:return`Since the last commit`;case`test_line`:return`Tests of ${e.req}`;case`finding`:return`Findings`}}function Xc(e){let t=[];for(let n of e){let e=Yc(n.anchor),r=t.find(t=>t.section===e);r?r.drafts.push(n):t.push({section:e,drafts:[n]})}return t}function Zc(e){let t=e=>e.kind===`passage`?`${e.path}: ${e.section||`(before the first heading)`}`:e.kind===`diff_line`?`${e.path}:${e.line}`:``;return[...new Set(e.filter(e=>e.anchor.kind===`passage`||e.anchor.kind===`diff_line`).map(e=>t(e.anchor)))]}function Qc(e){return e.now!=null&&e.now_line!=null?{kind:`diff_line`,path:e.path,side:`new`,line:e.now_line,quote:e.now}:e.then!=null&&e.then_line!=null?{kind:`diff_line`,path:e.path,side:`old`,line:e.then_line,quote:e.then}:null}function $c(e,t){let n=new Map;if(!e||e.outcome!==`pending`)return n;for(let r of e.diffs){if(r.path!==t||!r.heading)continue;let e=r.heading.split(` › `).pop()??r.heading;n.set(e,(n.get(e)??!1)||r.outside)}return n}function el(e){let t=[...e.quote.trim()].slice(0,80).join(``);return`${e.path}:${e.line} "${t}" — ${e.text.trim()}`}function tl(e){return e.replace(/^\s{0,3}(#{1,6}\s+|[-*+]\s+(\[[ xX]\]\s+)?|\d+[.)]\s+|>\s?)/,``).replace(/[*_`~]/g,``).replace(/\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/\s+/g,` `).trim()}function nl(e,t){let n=tl(t.replace(/\n+/g,` `));if(!n)return null;let r=e.split(`
`),i=r.map(tl);for(let e=0;e<r.length;e++){let t=``;for(let a=e;a<Math.min(r.length,e+60);a++)if(t=t&&i[a]?`${t} ${i[a]}`:t||i[a],t.includes(n)){let t=e;for(;t<a&&rl(i,t+1,a).includes(n);)t++;return{start:t+1,end:a+1,quote:r.slice(t,a+1).join(`
`)}}}return null}function rl(e,t,n){return e.slice(t,n+1).filter(Boolean).join(` `)}function il(e,t,n){let r=nl(t,n);return r?{kind:`passage`,path:e,start_line:r.start,end_line:r.end,quote:r.quote,quote_sha256:``,section:``}:null}function al(e){return new Set(e.filter(e=>e.state===`frozen`).flatMap(e=>e.tests.map(e=>e.path)))}function ol(e,t){return{cites_no_scenario:`cites no scenario of ${t}`,not_a_new_test_file:`not a new test file`,exists:`the file exists already`,command_not_allowed:`its command is not allowed`,command_shared:`its command also runs another test`,red_without_it:`its command fails without it`,invalid_escape:`a string holds an invalid escape`,crlf_as_text:`it asserts \\r\\n in text output`,limit:`more than four tests`}[e]??e.replaceAll(`_`,` `)}var sl=new class{#e=N(null);get view(){return H(this.#e)}set view(e){P(this.#e,e,!0)}#t=N(!1);get open(){return H(this.#t)}set open(e){P(this.#t,e,!0)}#n=N(null);get error(){return H(this.#n)}set error(e){P(this.#n,e,!0)}async load(){try{let e=await ba(`/api/review/comments${Sa({feature:Q.feature??void 0})}`);this.view=e.data??null,this.error=e.data||e.status===`ok`||e.status===`selection_needed`?null:e.message??null}catch(e){this.view=null,this.error=e instanceof Error?e.message:String(e)}}get count(){return this.view?.drafts.length??0}add(e,t){return Q.perform(ja({kind:`comment`,op:`add`,anchor:e,id:null},{group:`review`,label:`comment on ${qc(e)}`,why:`kept in the tray until you send it`,command:`speccoder review comments add … "…"`}),t)}drop(e){return Q.perform(ja({kind:`comment`,op:`delete`,anchor:null,id:e},{group:`review`,label:`delete ${e}`,why:`it leaves the tray`,command:`speccoder review comments delete ${e}`}))}keep(e){return Q.perform(ja({kind:`comment`,op:`keep`,anchor:null,id:e},{group:`review`,label:`keep ${e}`,why:`kept as it is`,command:`speccoder review comments keep ${e}`}))}send(){let e=(this.view?.drafts??[]).filter(e=>e.state===`draft`).map(e=>e.id);return Q.perform(ja({kind:`comments_send`,ids:e},{group:`review`,label:`send ${e.length} comment(s)`,why:`one revision, limited to the sections they touch`,command:`speccoder review comments send`}))}undo(){let e=this.view?.turn?.id??null;return Q.perform(ja({kind:`revision_undo`,turn:e},{group:`review`,label:`undo the revision`,why:`the documents as they were, byte for byte`,command:`speccoder review comments undo`}))}},cl=e=>new Set(e.split(` `)),ll={rust:{line:[`//`],kw:cl(`as async await break const continue crate dyn else enum extern false fn for if impl in let loop match mod move mut pub ref return self Self static struct super trait true type unsafe use where while`)},ts:{line:[`//`],kw:cl(`as async await break case catch class const continue default delete do else enum export extends false finally for from function if import in instanceof interface let new null of return static super switch this throw true try type typeof undefined var void while yield`)},py:{line:[`#`],kw:cl(`and as assert async await break class continue def del elif else except False finally for from global if import in is lambda None nonlocal not or pass raise return self True try while with yield`)},go:{line:[`//`],kw:cl(`break case chan const continue default defer else fallthrough for func go goto if import interface map nil package range return select struct switch true false type var`)},sh:{line:[`#`],kw:cl(`case do done elif else esac export fi for function if in local return set then until while`)},toml:{line:[`#`],kw:cl(`true false`)},yaml:{line:[`#`],kw:cl(`true false null yes no`)},plain:{line:[],kw:new Set}},ul={rs:`rust`,ts:`ts`,tsx:`ts`,js:`ts`,jsx:`ts`,mjs:`ts`,svelte:`ts`,java:`ts`,kt:`ts`,swift:`ts`,c:`ts`,h:`ts`,cpp:`ts`,cs:`ts`,py:`py`,go:`go`,sh:`sh`,bash:`sh`,zsh:`sh`,toml:`toml`,yml:`yaml`,yaml:`yaml`,json:`ts`},dl=e=>ul[e.split(`.`).pop()?.toLowerCase()??``]??`plain`,fl=/^[A-Za-z_][A-Za-z0-9_]*/,pl=/^(0x[0-9a-fA-F_]+|\d[\d_]*(\.\d+)?([eE][+-]?\d+)?)/;function ml(e,t){let n=ll[t]??ll.plain;if(t===`plain`)return[{t:e,c:``}];let r=[],i=0,a=(e,t)=>{let n=r[r.length-1];n&&n.c===t?n.t+=e:r.push({t:e,c:t})};for(;i<e.length;){let r=e.slice(i);if(n.line.find(e=>r.startsWith(e))??(r.startsWith(`/*`)&&t!==`py`&&t!==`sh`?`/*`:null)){a(r,`c`);break}let o=r[0];if(o===`"`||o===`'`||o==="`"){if(o===`'`&&t===`rust`&&/^'[a-z_]+\b(?!')/.test(r)){let e=r.match(/^'[a-z_]+/);a(e[0],`y`),i+=e[0].length;continue}let e=1;for(;e<r.length&&r[e]!==o;)e+=r[e]===`\\`?2:1;a(r.slice(0,e+1),`s`),i+=e+1;continue}let s=r.match(pl);if(s&&!/[A-Za-z_]/.test(e[i-1]??``)){a(s[0],`n`),i+=s[0].length;continue}let c=r.match(fl);if(c){let o=c[0],s=r.slice(o.length).trimStart()[0];t===`toml`&&/^\s*$/.test(e.slice(0,i))&&s===`=`?a(o,`f`):n.kw.has(o)?a(o,`k`):/^[A-Z][a-z0-9]+[A-Za-z0-9]*$/.test(o)?a(o,`y`):s===`(`||t===`rust`&&s===`!`?a(o,`f`):a(o,``),i+=o.length}else a(e[i],/[{}()[\];,.:<>=+\-*/&|!?@#%^~]/.test(e[i])?`p`:``),i+=1}return r}var hl=W(`<span> </span>`);function gl(e,t){Xe(t,!0);let n=M(()=>ml(t.line,t.lang));var r=Yr();J(L(r),17,()=>H(n),si,(e,t)=>{var n=Yr(),r=L(n),i=e=>{var n=hl(),r=R(n,!0);V(()=>{Y(n,1,`h${H(t).c??``}`,`svelte-qqi6zz`),K(r,H(t).t)}),G(e,n)},a=e=>{var n=Jr();V(()=>K(n,H(t).t)),G(e,n)};q(r,e=>{H(t).c?e(i):e(a,-1)}),G(e,n)}),G(e,r),Ze()}var _l=W(`<span class="chip s-ready svelte-ivvjoj"><!> </span>`),vl=W(`<span class="chip s-needs_approval svelte-ivvjoj"><!> Lapsed</span>`),yl=W(`<span class="chip s-neutral svelte-ivvjoj">Frozen on another machine</span>`),bl=W(`<li><span class="mono sid svelte-ivvjoj"> </span> <span class="muted"> </span></li>`),xl=W(`<span class="was mono svelte-ivvjoj"> </span>`),Sl=W(`<p class="note svelte-ivvjoj">Frozen on the earlier wording — the run writes tests anew unless you write and approve them again.<!></p>`),Cl=W(`<p class="note muted svelte-ivvjoj">Frozen on another machine: the run will write tests anew here.</p>`),wl=W(`<p class="note muted svelte-ivvjoj">Frozen with the approval: these are the tests the run uses, as they were frozen. Reword the requirement to lapse the freeze and write them again.</p>`),Tl=W(`<p class="svelte-ivvjoj"><!> <strong> </strong> A: given <code class="svelte-ivvjoj"> </code>, expects <code class="svelte-ivvjoj"> </code> · B: given <code class="svelte-ivvjoj"> </code>, expects <code class="svelte-ivvjoj"> </code>.</p> <div class="acts svelte-ivvjoj"><button class="btn small svelte-ivvjoj">A Is Meant</button> <button class="btn small svelte-ivvjoj">B Is Meant</button> <button class="btn small ghost svelte-ivvjoj">Reword…</button></div>`,1),El=W(`<div class="ambiguous svelte-ivvjoj" role="group" aria-label="Two readings"></div>`),Dl=W(`<p class="stage svelte-ivvjoj" aria-live="polite"><span class="spinner svelte-ivvjoj" aria-hidden="true"></span> </p>`),Ol=W(`<p class="bad svelte-ivvjoj"><!> </p>`),kl=W(`<p class="before svelte-ivvjoj">No tests yet. Write the tests the run would use, check they fail now, and freeze them when you approve.</p> <!> <div class="acts svelte-ivvjoj"><button class="btn small primary svelte-ivvjoj"><!> Write Tests</button> <span class="muted small svelte-ivvjoj"> </span></div>`,1),Al=W(` <!>`,1),jl=W(`<p class="muted small svelte-ivvjoj">Not covered: <!></p>`),Ml=W(`<span class="sc mono svelte-ivvjoj"> </span>`),Nl=W(`<span class="edited svelte-ivvjoj"> </span>`),Pl=W(`<textarea class="editor mono svelte-ivvjoj" rows="10"></textarea> <div class="acts svelte-ivvjoj"><button class="btn small primary svelte-ivvjoj">Save and Check</button> <button class="btn small ghost svelte-ivvjoj">Cancel</button></div>`,1),Fl=W(`<button class="add svelte-ivvjoj">+</button>`),Il=W(`<tr><td colspan="3" class="svelte-ivvjoj"><form class="popover svelte-ivvjoj"><textarea rows="2" class="svelte-ivvjoj"></textarea> <div class="acts svelte-ivvjoj"><button class="btn small primary svelte-ivvjoj" type="submit">Add Comment <kbd>⌘↵</kbd></button><button class="btn small ghost svelte-ivvjoj" type="button">Cancel</button></div></form></td></tr>`),Ll=W(`<tr class="svelte-ivvjoj"><td class="ln svelte-ivvjoj"></td><td class="plus svelte-ivvjoj"><!></td><td class="src svelte-ivvjoj"><!></td></tr> <!>`,1),Rl=W(`<div class="acts svelte-ivvjoj"><button class="btn small svelte-ivvjoj"><!> Reject…</button> <button class="btn small svelte-ivvjoj"><!> Ask Again…</button> <button class="btn small ghost svelte-ivvjoj"><!> Edit</button></div>`),zl=W(`<table class="code svelte-ivvjoj"><tbody></tbody></table> <!>`,1),Bl=W(`<section class="test svelte-ivvjoj"><button class="thead svelte-ivvjoj"><!> <span class="mono path svelte-ivvjoj"> </span> <!> <span> </span> <!></button> <!></section>`),Vl=W(`<li><span class="mono"> </span> </li>`),Hl=W(`<details class="discarded svelte-ivvjoj"><summary> </summary> <ul class="svelte-ivvjoj"></ul></details>`),Ul=W(`<div class="acts svelte-ivvjoj"><button class="btn small ghost svelte-ivvjoj"><!> Write Again</button> <span class="muted small svelte-ivvjoj"> </span></div>`),Wl=W(`<p class="summary svelte-ivvjoj"><span title="Kept from you and the implementer; shown per task after the tick"><!> </span> <span> </span> <span> </span></p> <!> <!> <!> <!> <!> <!>`,1),Gl=W(`<article class="card svelte-ivvjoj"><header class="svelte-ivvjoj"><span class="id mono svelte-ivvjoj"> </span> <span class="title svelte-ivvjoj"> </span> <span class="count svelte-ivvjoj"> </span> <!></header> <ol class="scenarios svelte-ivvjoj"></ol> <!> <!> <!> <!></article>`);function Kl(e,t){Xe(t,!0);let n=M(()=>!!Q.job?.running),r=M(()=>Q.oracleStage?.requirement===t.v.req?Q.oracleStage:null),i=e=>t.v.scenarios.find(t=>t.id===e)?.text??e,a=e=>e?new Date(e*1e3).toLocaleDateString(void 0,{month:`short`,day:`numeric`}):``,o=(e,t)=>e?`red: ${t.replaceAll(`_`,` `)}`:t===`passed`?`already passes`:t.replaceAll(`_`,` `);function s(e,n,r,i,a=null){return ja({kind:`oracle_tests`,req:t.v.req,op:e,path:null,scenario:null,reading:null,...n},{group:`review`,label:r,why:`red-checked on the current code; nothing is frozen until you approve`,command:i,input:a})}let c=()=>Q.perform(s(`write`,{},`write tests for ${t.v.req}`,Wc(t.v.req,`write`))),l=e=>Q.perform(s(`reject`,{path:e},`reject ${e}`,Wc(t.v.req,`reject`,e),`Why is this test wrong?`)),u=e=>Q.perform(s(`again`,{path:e},`ask again for ${e}`,Wc(t.v.req,`again`,e),`What should it check instead?`)),d=(e,n)=>Q.perform(s(`reading`,{scenario:e,reading:n},`reading ${n} of ${e}`,Wc(t.v.req,`reading`,n,e)));function f(){Q.doc=`spec`,Q.view=`documents`,Q.toast({tone:`ok`,text:`Reword the scenario in the spec, then Write Tests for ${t.v.req} again`})}let p=N(F({})),m=N(null),h=N(``);async function g(e){H(h).trim()&&(await Q.perform(s(`edit`,{path:e},`edit ${e}`,Wc(t.v.req,`edit`,e)),H(h)),P(m,null))}let _=N(null),v=N(``);async function y(){H(_)&&H(v).trim()&&(await sl.add({kind:`test_line`,req:t.v.req,path:H(_).path,line:H(_).line,quote:H(_).quote},H(v).trim()),P(_,null),P(v,``))}let b=M(()=>t.v.ambiguities.filter(e=>!e.resolution)),x=M(()=>t.v.state===`frozen`);var S=Gl(),C=I(S),w=I(C),T=R(w,!0),E=z(w,2),ee=R(E,!0),D=z(E,2),O=R(D,!0),k=z(D,2),te=e=>{var n=_l(),r=I(n);$(r,{name:`lock`,size:10,weight:2.2});var i=z(r);A(n),V(e=>K(i,` ${e??``}`),[()=>`Frozen${t.v.frozen_by?` by ${t.v.frozen_by}`:``}${t.v.frozen_at?` · ${a(t.v.frozen_at)}`:``}`]),G(e,n)},ne=e=>{var t=vl();$(I(t),{name:`exclaim`,size:10,weight:2.2}),j(),A(t),G(e,t)},re=e=>{G(e,yl())};q(k,e=>{t.v.state===`frozen`?e(te):t.v.state===`lapsed`?e(ne,1):t.v.state===`frozen_elsewhere`&&e(re,2)}),A(C);var ie=z(C,2);J(ie,21,()=>t.v.scenarios,e=>e.id,(e,t)=>{var n=bl(),r=I(n),i=R(r,!0),a=R(z(r,2),!0);A(n),V(e=>{K(i,H(t).id),K(a,e)},[()=>H(t).text.replace(/\*\*/g,``)]),G(e,n)}),A(ie);var ae=z(ie,2),oe=e=>{var n=Sl(),r=z(I(n)),i=e=>{var n=xl(),r=R(n,!0);V(()=>K(r,t.v.frozen_on)),G(e,n)};q(r,e=>{t.v.frozen_on&&e(i)}),A(n),G(e,n)},se=e=>{G(e,Cl())},ce=e=>{G(e,wl())};q(ae,e=>{t.v.state===`lapsed`?e(oe):t.v.state===`frozen_elsewhere`?e(se,1):H(x)&&e(ce,2)});var le=z(ae,2),ue=e=>{var r=El();J(r,21,()=>H(b),e=>e.scenario,(e,r)=>{var i=Tl(),a=L(i),o=I(a);$(o,{name:`exclaim`,size:13,weight:2.2});var s=z(o,2),c=R(s),l=z(s,2),u=R(l,!0),p=z(l,2),m=R(p,!0),h=z(p,2),g=R(h,!0),_=R(z(h,2),!0);j(),A(a);var v=z(a,2),y=I(v),b=z(y,2),x=z(b,2);A(v),V((e,t)=>{K(c,`Two readings of ${H(r).scenario??``}.`),K(u,H(r).a.given||`—`),K(m,H(r).a.expect),K(g,H(r).b.given||`—`),K(_,H(r).b.expect),y.disabled=H(n),X(y,`title`,e),b.disabled=H(n),X(b,`title`,t)},[()=>Wc(t.v.req,`reading`,`A`,H(r).scenario),()=>Wc(t.v.req,`reading`,`B`,H(r).scenario)]),U(`click`,y,()=>d(H(r).scenario,`A`)),U(`click`,b,()=>d(H(r).scenario,`B`)),U(`click`,x,f),G(e,i)}),A(r),G(e,r)};q(le,e=>{H(b).length&&e(ue)});var de=z(le,2),fe=e=>{var t=Dl(),n=z(I(t));A(t),V(e=>K(n,` ${e??``}`),[()=>Uc(H(r).stage,H(r).n,H(r).of)]),G(e,t)};q(de,e=>{H(r)&&e(fe)});var pe=z(de,2),me=e=>{var r=kl(),i=z(L(r),2),a=e=>{var n=Ol(),r=I(n);$(r,{name:`exclaim`,size:12});var i=z(r);A(n),V(()=>K(i,` ${t.v.error??``}`)),G(e,n)};q(i,e=>{t.v.error&&e(a)});var o=z(i,2),s=I(o);$(I(s),{name:`sparkle`,size:11,weight:2.2}),j(),A(s);var l=R(z(s,2),!0);A(o),V((e,t)=>{s.disabled=H(n),X(s,`title`,e),K(l,t)},[()=>Wc(t.v.req,`write`),()=>Hc(t.v)]),U(`click`,s,c),G(e,r)},he=e=>{var r=Wl(),a=L(r),s=I(a),d=I(s);$(d,{name:`lock`,size:11,weight:2.2});var f=z(d);A(s);var b=z(s,2),S=R(b),C=R(z(b,2));A(a);var w=z(a,2),T=e=>{var n=jl();J(z(I(n)),18,()=>t.v.uncovered,e=>e,(e,n,r)=>{let i=M(()=>t.v.untestable.find(e=>e.scenario===n));j();var a=Al(),o=L(a),s=z(o),c=e=>{var t=Jr();V(()=>K(t,`(${H(i).why??``})`)),G(e,t)};q(s,e=>{H(i)&&e(c)}),V(()=>K(o,`${H(r)?`, `:``}${n??``}`)),G(e,a)}),A(n),G(e,n)};q(w,e=>{t.v.uncovered.length&&e(T)});var E=z(w,2),ee=e=>{var n=Ol(),r=I(n);$(r,{name:`exclaim`,size:12});var i=z(r);A(n),V(()=>K(i,` ${t.v.error??``}`)),G(e,n)};q(E,e=>{t.v.error&&e(ee)});var D=z(E,2);J(D,17,()=>t.v.tests,e=>e.path,(e,r)=>{var a=Bl(),s=I(a),c=I(s);{let e=M(()=>H(p)[H(r).path]?`down`:`chevron`);$(c,{get name(){return H(e)},size:11,weight:2.2})}var d=z(c,2),f=R(d,!0),b=z(d,2);J(b,16,()=>H(r).scenarios,e=>e,(e,t)=>{var n=Ml(),r=R(n,!0);V(e=>{X(n,`title`,e),K(r,t)},[()=>i(t)]),G(e,n)});var S=z(b,2);let C;var w=R(S),T=z(S,2),E=e=>{var t=Nl(),n=R(t);V(()=>K(n,`edited by ${H(r).edited_by??``}`)),G(e,t)};q(T,e=>{H(r).edited_by&&e(E)}),A(s);var ee=z(s,2),D=e=>{var i=Yr(),a=L(i),o=e=>{var i=Pl(),a=L(i);lt(a),ct(a,!0);var o=z(a,2),s=I(o),c=z(s,2);A(o),V((e,t)=>{X(a,`aria-label`,`${H(r).path??``} content`),s.disabled=e,X(s,`title`,t)},[()=>H(n)||!H(h).trim(),()=>Wc(t.v.req,`edit`,H(r).path)]),U(`keydown`,a,e=>{e.key===`Escape`&&P(m,null),e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),g(H(r).path))}),$i(a,()=>H(h),e=>P(h,e)),U(`click`,s,()=>g(H(r).path)),U(`click`,c,()=>P(m,null)),G(e,i)},s=e=>{var i=zl(),a=L(i),o=I(a);J(o,21,()=>H(r).content.replace(/\n$/,``).split(`
`),si,(e,t,n)=>{var i=Ll(),a=L(i),o=I(a);o.textContent=n+1;var s=z(o),c=I(s),l=e=>{var i=Fl();V(()=>X(i,`aria-label`,`Comment on line ${n+1} of ${H(r).path??``}`)),U(`click`,i,()=>{P(_,{path:H(r).path,line:n+1,quote:H(t)},!0),P(v,``)}),G(e,i)};q(c,e=>{H(x)||e(l)}),A(s);var u=z(s),d=I(u);{let e=M(()=>dl(H(r).path));gl(d,{get line(){return H(t)},get lang(){return H(e)}})}A(u),A(a);var f=z(a,2),p=e=>{var t=Il(),r=I(t),i=I(r),a=I(i);lt(a),ct(a,!0),X(a,`aria-label`,`Comment on line ${n+1}`);var o=z(a,2),s=I(o),c=z(s);A(o),A(i),A(r),A(t),V(e=>s.disabled=e,[()=>!H(v).trim()]),Lr(`submit`,i,e=>{e.preventDefault(),y()}),U(`keydown`,a,e=>{e.key===`Escape`&&P(_,null),e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),y())}),$i(a,()=>H(v),e=>P(v,e)),U(`click`,c,()=>P(_,null)),G(e,t)};q(f,e=>{H(_)?.path===H(r).path&&H(_).line===n+1&&e(p)}),G(e,i)}),A(o),A(a);var s=z(a,2),c=e=>{var i=Rl(),a=I(i);$(I(a),{name:`xmark`,size:10,weight:2.4}),j(),A(a);var o=z(a,2);$(I(o),{name:`sparkle`,size:10,weight:2.2}),j(),A(o);var s=z(o,2);$(I(s),{name:`doc`,size:10,weight:2}),j(),A(s),A(i),V((e,t)=>{a.disabled=H(n),X(a,`title`,e),o.disabled=H(n),X(o,`title`,t),s.disabled=H(n)},[()=>Wc(t.v.req,`reject`,H(r).path),()=>Wc(t.v.req,`again`,H(r).path)]),U(`click`,a,()=>l(H(r).path)),U(`click`,o,()=>u(H(r).path)),U(`click`,s,()=>{P(m,H(r).path,!0),P(h,H(r).content,!0)}),G(e,i)};q(s,e=>{H(x)||e(c)}),G(e,i)};q(a,e=>{H(m)===H(r).path?e(o):e(s,-1)}),G(e,i)};q(ee,e=>{H(p)[H(r).path]&&e(D)}),A(a),V(e=>{X(s,`aria-expanded`,!!H(p)[H(r).path]),K(f,H(r).path),C=Y(S,1,`pill svelte-ivvjoj`,null,C,{ev:H(r).red,no:!H(r).red}),K(w,`${e??``} — ${H(r).red?`evidence`:`no evidence`}`)},[()=>o(H(r).red,H(r).red_class)]),U(`click`,s,()=>P(p,{...H(p),[H(r).path]:!H(p)[H(r).path]},!0)),G(e,a)});var O=z(D,2),k=e=>{var n=Hl(),r=I(n),i=R(r),a=z(r,2);J(a,21,()=>t.v.discarded,e=>e.path,(e,n)=>{var r=Vl(),i=I(r),a=R(i,!0),o=z(i);A(r),V(e=>{K(a,H(n).path),K(o,` — ${e??``}`)},[()=>ol(H(n).why,t.v.req)]),G(e,r)}),A(a),A(n),V(()=>K(i,`${t.v.discarded.length??``} discarded`)),G(e,n)};q(O,e=>{t.v.discarded.length&&e(k)});var te=z(O,2),ne=e=>{var n=Hl(),r=I(n),i=R(r),a=z(r,2);J(a,21,()=>t.v.rejected,e=>e.path+e.at,(e,t)=>{var n=Vl(),r=I(n),i=R(r,!0),a=z(r);A(n),V(()=>{K(i,H(t).path),K(a,` — “${H(t).reason??``}” · ${H(t).by??``}`)}),G(e,n)}),A(a),A(n),V(()=>K(i,`${t.v.rejected.length??``} rejected by you`)),G(e,n)};q(te,e=>{t.v.rejected.length&&e(ne)});var re=z(te,2),ie=e=>{var r=Ul(),i=I(r);$(I(i),{name:`loop`,size:10,weight:2.2}),j(),A(i);var a=R(z(i,2),!0);A(r),V((e,t)=>{i.disabled=H(n),X(i,`title`,e),K(a,t)},[()=>Wc(t.v.req,`write`),()=>Hc(t.v)]),U(`click`,i,c),G(e,r)};q(re,e=>{H(x)||e(ie)}),V(e=>{K(f,` Held out: ${(t.v.held_out.state===`off`?`off`:t.v.held_out.count)??``}`),K(S,`· Strength target: ${t.v.strength_target==null?`none set`:`${t.v.strength_target}%`}`),K(C,`· ${e??``}`)},[()=>Vc(t.v)]),G(e,r)};q(pe,e=>{t.v.tests.length===0?e(me):e(he,-1)}),A(S),V(e=>{X(S,`aria-labelledby`,`t-${t.v.req??``}`),X(w,`id`,`t-${t.v.req??``}`),K(T,t.v.req),K(ee,t.v.title),X(D,`title`,`${e??``} red tests`),K(O,t.v.tests.length||`—`)},[()=>t.v.tests.filter(e=>e.red).length]),G(e,S),Ze()}Rr([`click`,`keydown`]);var ql=W(`<pre class="mono svelte-1pn9kep"> </pre>`),Jl=W(`<p class="bad svelte-1pn9kep"><!> The confirmed copy is missing or changed: run the bug again.</p>`),Yl=W(`<details class="repro svelte-1pn9kep"><summary class="svelte-1pn9kep"><span class="sc mono svelte-1pn9kep"> </span> <span class="mono path"> </span> <span class="muted mono"> </span> <span class="pill svelte-1pn9kep"> </span></summary> <!></details>`),Xl=W(`<article class="bug svelte-1pn9kep"><header class="svelte-1pn9kep"><span class="id mono svelte-1pn9kep"> </span> <span class="title svelte-1pn9kep"> </span> <span class="chip svelte-1pn9kep"><!> </span></header> <!> <p class="muted small svelte-1pn9kep">Read only: <code> </code> decided them.</p></article>`);function Zl(e,t){Xe(t,!0);let n=e=>new Date(e*1e3).toLocaleDateString(void 0,{month:`short`,day:`numeric`}),r=e=>e===`assertion`?`red: assertion`:e===`passed`?`passes (guards what stays)`:e.replaceAll(`_`,` `);var i=Yr();J(L(i),17,()=>t.bugs,e=>e.task,(e,t)=>{var i=Xl(),a=I(i),o=I(a),s=R(o,!0),c=z(o,2),l=R(c,!0),u=z(c,2),d=I(u);$(d,{name:`lock`,size:10,weight:2.2});var f=z(d);A(u),A(a);var p=z(a,2);J(p,17,()=>H(t).reproductions,e=>e.file,(e,t)=>{var n=Yl(),i=I(n),a=I(i),o=R(a,!0),s=z(a,2),c=R(s,!0),l=z(s,2),u=R(l,!0),d=R(z(l,2),!0);A(i);var f=z(i,2),p=e=>{var n=ql(),r=R(n,!0);V(()=>{X(n,`aria-label`,`${H(t).file??``} as confirmed`),K(r,H(t).content)}),G(e,n)},m=e=>{var t=Jl();$(I(t),{name:`exclaim`,size:11}),j(),A(t),G(e,t)};q(f,e=>{H(t).content==null?e(m,-1):e(p)}),A(n),V(e=>{K(o,H(t).statement),K(c,H(t).file),K(u,H(t).test),K(d,e)},[()=>r(H(t).red_class)]),G(e,n)});var m=z(p,2),h=R(z(I(m)));j(),A(m),A(i),V(e=>{X(i,`aria-label`,`${H(t).task??``} reproductions`),K(s,H(t).task),K(l,H(t).title),K(f,` ${e??``}`),K(h,`speccoder bug confirm ${H(t).task??``}`)},[()=>`Confirmed by ${H(t).confirmation.by} · ${n(H(t).confirmation.at)}`]),G(e,i)}),G(e,i),Ze()}var Ql=W(`<tr><td class="svelte-qjfq3c"><span class="mono"> </span> </td><td class="svelte-qjfq3c"><!> </td></tr>`),$l=W(`<table class="freeze svelte-qjfq3c"><thead><tr><th class="svelte-qjfq3c">Requirement</th><th class="svelte-qjfq3c">Freezes</th></tr></thead><tbody></tbody></table>`),eu=W(`<span class="bad svelte-qjfq3c"><!> </span>`),tu=W(`<label class="grant svelte-qjfq3c"><input type="checkbox"/> <span class="mono"> </span> <span class="muted mono id svelte-qjfq3c"> </span></label>`),nu=W(`<p class="muted svelte-qjfq3c">Also allow for this run:</p> <!>`,1),ru=W(`<p class="muted svelte-qjfq3c">No grants were decided for this feature: the run holds none.</p>`),iu=W(`<p class="muted svelte-qjfq3c"><!> </p>`),au=W(`<div class="grants svelte-qjfq3c"><!> <!></div>`),ou=W(`<li><!> </li>`),su=W(`<ul class="blocked svelte-qjfq3c" aria-live="polite"></ul>`),cu=W(`<p class="note muted svelte-qjfq3c"> </p>`),lu=W(`<div class="scrim svelte-qjfq3c" role="presentation"><div class="sheet glass svelte-qjfq3c" role="dialog" aria-modal="true" aria-labelledby="as-title" tabindex="-1"><header class="svelte-qjfq3c"><span class="badge svelte-qjfq3c" aria-hidden="true"><!></span> <div><h2 id="as-title" class="svelte-qjfq3c">Approve the spec and run</h2> <p class="svelte-qjfq3c"> </p></div></header> <!> <fieldset class="choices svelte-qjfq3c"><legend class="sr svelte-qjfq3c">How the run asks</legend> <label><input type="radio" name="mode" class="svelte-qjfq3c"/> <span><strong>Ask on Risky Calls</strong> <kbd class="svelte-qjfq3c">1</kbd><br/><span class="muted">You approve commands and protected writes as they come.</span></span></label> <label><input type="radio" name="mode" class="svelte-qjfq3c"/> <span><strong>Autopilot</strong> <kbd class="svelte-qjfq3c">2</kbd><br/><span class="muted">Nothing asks you. A call that would ask is refused and listed for you afterwards. Runs in the sandbox.</span> <!></span></label> <!> <label><input type="radio" name="mode" class="svelte-qjfq3c"/> <span><strong>Keep Refining</strong> <kbd class="svelte-qjfq3c">3</kbd><br/><span class="muted">Nothing is recorded. Add comments and send them as one revision.</span></span></label></fieldset> <!> <!> <p class="cli mono svelte-qjfq3c"> </p> <div class="row svelte-qjfq3c"><button class="btn">Cancel</button> <button class="btn primary"> </button></div></div></div>`);function uu(e,t){Xe(t,!0);let n=[],r=N(`ask`),i=N(F([])),a=M(()=>t.review.sheet),o=M(()=>Gc(H(a),H(r),!!Q.job?.running)),s=M(()=>H(a)?.autopilot_blocked??null),c=M(()=>H(r)===`autopilot`?H(i):[]),l=M(()=>Kc(H(r),H(c))),u=M(()=>H(a)?.approves.length??0),d=M(()=>t.review.oracle.filter(e=>e.tests.some(e=>e.red)&&!Bc(e)).length),f=N(void 0);B(()=>{H(f)?.querySelector(`input[type=radio]:checked`)?.focus()});function p(e){if(e.stopPropagation(),e.key===`Escape`)return t.onclose();if(!e.target?.closest(`textarea, input[type=text]`)&&[`1`,`2`,`3`].includes(e.key)){let t=[`ask`,`autopilot`,`refine`][Number(e.key)-1];t===`autopilot`&&H(s)||P(r,t,!0),e.preventDefault()}if(e.key===`Tab`&&H(f)){let t=[...H(f).querySelectorAll(`button:not([disabled]), input:not([disabled])`)],n=t[0],r=t[t.length-1];if(!n||!r)return;e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())}}async function m(){if(H(r)===`refine`){t.onclose(),t.onrefine?.();return}if(H(o).length)return;let e=H(r);t.onclose(),await Q.perform(ja({kind:`approve_and_run`,mode:e,grants:H(c),sheet:H(a)?.sha256??null},{group:`review`,label:e===`autopilot`?`approve and run on autopilot`:`approve and run`,why:`approves ${H(u)} decision lines and freezes the written tests`,command:H(l)})),Q.view=`board`}let h=e=>P(i,H(i).includes(e)?H(i).filter(t=>t!==e):[...H(i),e],!0);var g=lu(),_=I(g),v=I(_),y=I(v);$(I(y),{name:`check`,size:20,weight:2.4}),A(y);var b=z(y,2),x=R(z(I(b),2));A(b),A(v);var S=z(v,2),C=e=>{var n=$l(),r=z(I(n));J(r,21,()=>t.review.oracle,e=>e.req,(e,t)=>{var n=Ql();let r;var i=I(n),a=I(i),o=R(a,!0),s=z(a);A(i);var c=z(i),l=I(c),u=e=>{$(e,{name:`exclaim`,size:11})},d=M(()=>Bc(H(t)));q(l,e=>{H(d)&&e(u)});var f=z(l,1,!0);A(c),A(n),V((e,i)=>{r=Y(n,1,`svelte-qjfq3c`,null,r,{blockedrow:e}),K(o,H(t).req),K(s,` ${H(t).title??``}`),K(f,i)},[()=>Bc(H(t)),()=>zc(H(t))]),G(e,n)}),A(r),A(n),G(e,n)};q(S,e=>{t.review.oracle.length&&e(C)});var w=z(S,2),T=z(I(w),2);let E;var ee=I(T);Gi(ee),ee.value=ee.__value=`ask`,j(2),A(T);var D=z(T,2);let O;var k=I(D);Gi(k),k.value=k.__value=`autopilot`;var te=z(k,2),ne=z(I(te),6),re=e=>{var t=eu(),n=I(t);$(n,{name:`exclaim`,size:11});var r=z(n);A(t),V(()=>K(r,` ${H(s)??``}`)),G(e,t)};q(ne,e=>{H(s)&&e(re)}),A(te),A(D);var ie=z(D,2),ae=e=>{var t=au(),n=I(t),r=e=>{var t=nu();J(z(L(t),2),17,()=>H(a).grants,e=>e.id,(e,t)=>{var n=tu(),r=I(n);Gi(r);var a=z(r,2),o=R(a,!0),s=R(z(a,2),!0);A(n),V(e=>{qi(r,e),K(o,H(t).object),K(s,H(t).id)},[()=>H(i).includes(H(t).id)]),U(`change`,r,()=>h(H(t).id)),G(e,n)}),G(e,t)},o=e=>{G(e,ru())};q(n,e=>{H(a)?.grants.length?e(r):e(o,-1)});var s=z(n,2),c=e=>{var t=iu(),n=I(t);$(n,{name:`shield`,size:11});var r=z(n);A(t),V(()=>K(r,` ${H(a).sandbox??``}`)),G(e,t)};q(s,e=>{H(a)?.sandbox&&e(c)}),A(t),G(e,t)};q(ie,e=>{H(r)===`autopilot`&&e(ae)});var oe=z(ie,2);let se;var ce=I(oe);Gi(ce),ce.value=ce.__value=`refine`,j(2),A(oe),A(w);var le=z(w,2),ue=e=>{var t=su();J(t,20,()=>H(o),e=>e,(e,t)=>{var n=ou(),r=I(n);$(r,{name:`exclaim`,size:11});var i=z(r);A(n),V(()=>K(i,` ${t??``}`)),G(e,n)}),A(t),G(e,t)};q(le,e=>{H(o).length&&e(ue)});var de=z(le,2),fe=e=>{var t=cu(),n=R(t);V(()=>K(n,`Approved, it froze tests for ${H(d)??``} ${H(d)===1?`requirement`:`requirements`}; review.json is committed with it.`)),G(e,t)};q(de,e=>{H(r)!==`refine`&&e(fe)});var pe=z(de,2),me=R(pe),he=z(pe,2),ge=I(he),_e=z(ge,2),ve=R(_e,!0);A(he),A(_),sa(_,e=>P(f,e),()=>H(f)),A(g),V(()=>{K(x,`Approves ${H(u)??``} decision ${H(u)===1?`line`:`lines`}.`),E=Y(T,1,`choice svelte-qjfq3c`,null,E,{on:H(r)===`ask`}),O=Y(D,1,`choice svelte-qjfq3c`,null,O,{on:H(r)===`autopilot`,off:!!H(s)}),k.disabled=!!H(s),se=Y(oe,1,`choice svelte-qjfq3c`,null,se,{on:H(r)===`refine`}),K(me,`$ ${H(l)??``}`),_e.disabled=H(r)!==`refine`&&H(o).length>0,K(ve,H(r)===`refine`?`Keep Refining`:`Approve and Run`)}),U(`click`,g,e=>e.target===e.currentTarget&&t.onclose()),U(`keydown`,_,p),ta(n,[],ee,()=>H(r),e=>P(r,e)),ta(n,[],k,()=>H(r),e=>P(r,e)),ta(n,[],ce,()=>H(r),e=>P(r,e)),U(`click`,ge,function(...e){t.onclose?.apply(this,e)}),U(`click`,_e,m),G(e,g),Ze()}Rr([`click`,`keydown`,`change`]);var du=W(`<div class="center svelte-1ag3epb"><span class="spinner svelte-1ag3epb"></span></div>`),fu=W(`<div class="none muted svelte-1ag3epb"> </div>`),pu=W(`<button role="menuitem" class="svelte-1ag3epb"> </button>`),mu=W(`<span class="menu svelte-1ag3epb" role="menu"><!> <button role="menuitem" class="svelte-1ag3epb">Approve and Run…</button></span>`),hu=W(`<span class="amb svelte-1ag3epb"><!> </span>`),gu=W(`<button class="btn small tinted svelte-1ag3epb"><!> </button>`),_u=W(`<button class="btn small ghost svelte-1ag3epb"><!> </button>`),vu=W(`<form class="qform svelte-1ag3epb"><input class="svelte-1ag3epb"/> <button class="btn small primary svelte-1ag3epb" type="submit">Add Comment</button></form>`),yu=W(`<div><div class="qtop svelte-1ag3epb"><span class="id mono svelte-1ag3epb"> </span><span class="where muted svelte-1ag3epb"> </span></div> <p class="qtext svelte-1ag3epb"> </p> <button class="btn small ghost addc svelte-1ag3epb">Add to Comments</button> <!> <form class="qform svelte-1ag3epb"><input placeholder="Your answer — it takes the question's place" class="svelte-1ag3epb"/> <button class="btn small primary svelte-1ag3epb" type="submit">Write In</button></form></div>`),bu=W(`<section class="questions svelte-1ag3epb" aria-label="Open questions"><h3 class="svelte-1ag3epb"><!> <span class="muted svelte-1ag3epb"> </span> <!></h3> <!></section>`),xu=W(`<span> </span>`),Su=W(`<p class="preview svelte-1ag3epb"></p>`),Cu=W(`<form class="edit svelte-1ag3epb"><textarea rows="2" class="svelte-1ag3epb"></textarea> <!> <!> <div class="acts svelte-1ag3epb"><button class="btn small primary svelte-1ag3epb" type="button" title="⌘↩">Save and Approve</button> <button class="btn small svelte-1ag3epb" type="submit">Save</button> <button class="btn small ghost svelte-1ag3epb" type="button">Cancel</button></div></form>`),wu=W(`<span class="ask svelte-1ag3epb" title="An open question — answer it above"> </span>`),Tu=W(`<p class="text svelte-1ag3epb"><!></p>`),Eu=W(`<span class="comment svelte-1ag3epb"> </span>`),Du=W(`<p class="who muted svelte-1ag3epb"> <!><!></p>`),Ou=W(`<button class="btn small primary svelte-1ag3epb"><!> Approve</button>`),ku=W(`<button class="btn small ghost svelte-1ag3epb">Clear</button>`),Au=W(`<li><div class="top svelte-1ag3epb"><span class="id mono svelte-1ag3epb"> </span> <span> </span></div> <!> <!> <div class="acts svelte-1ag3epb"><!> <button class="btn small svelte-1ag3epb"><!> Edit</button> <button class="btn small svelte-1ag3epb"><!> Request Changes</button> <!></div></li>`),ju=W(`<section class="tests svelte-1ag3epb" aria-label="Tests"><h3 class="svelte-1ag3epb"><!> Tests</h3> <p class="muted svelte-1ag3epb"> </p> <!></section>`),Mu=W(`<section class="tests svelte-1ag3epb" aria-label="Tests"><h3 class="svelte-1ag3epb"><!> Tests <span class="muted svelte-1ag3epb">— what the run would use, written now and frozen when you approve</span></h3> <!></section>`),Nu=W(`<button class="btn small primary svelte-1ag3epb">Commit</button>`),Pu=W(`<button class="add svelte-1ag3epb" title="Comment on this line">+</button>`),Fu=W(`<form class="qform driftc svelte-1ag3epb"><input class="svelte-1ag3epb"/> <button class="btn small primary svelte-1ag3epb" type="submit">Add Comment</button> <button class="btn small ghost svelte-1ag3epb" type="button">Cancel</button></form>`),Iu=W(`<div class="change svelte-1ag3epb"><span class="id mono svelte-1ag3epb"><!> </span><span class="how svelte-1ag3epb"> </span> <p class="text small svelte-1ag3epb"></p></div> <!>`,1),Lu=W(`<section class="since svelte-1ag3epb" aria-label="Since the last commit"><h3 class="svelte-1ag3epb"><!> Since the last commit <span class="muted svelte-1ag3epb">— what a commit of the spec would record</span> <!></h3> <!></section>`),Ru=W(`<span class="add svelte-1ag3epb"> </span>`),zu=W(`<span class="re svelte-1ag3epb"> </span>`),Bu=W(`<span class="rm svelte-1ag3epb"> </span>`),Vu=W(`<li class="svelte-1ag3epb"><span class="dot svelte-1ag3epb" aria-hidden="true"></span> <span class="when muted mono svelte-1ag3epb"> </span> <span class="subj svelte-1ag3epb"> </span> <span class="what svelte-1ag3epb"><!> <!> <!></span> <span class="by muted svelte-1ag3epb"> <code> </code></span></li>`),Hu=W(`<section class="history svelte-1ag3epb" aria-label="How the spec evolved"><h3 class="svelte-1ag3epb"><!> How the spec evolved</h3> <ol class="svelte-1ag3epb"></ol></section>`),Uu=W(`<section class="review svelte-1ag3epb" aria-label="Review the spec"><header class="svelte-1ag3epb"><div><h2 class="svelte-1ag3epb">Review the Spec</h2> <p class="sub svelte-1ag3epb">The result will be judged against these words. Approve each one, or say what it should say.</p></div> <div class="progress svelte-1ag3epb" role="img"><span class="bar svelte-1ag3epb"><span class="svelte-1ag3epb"></span></span> <span class="mono"> </span></div></header> <div class="bulk svelte-1ag3epb"><span class="split svelte-1ag3epb"><button class="btn small primary svelte-1ag3epb"><!> Approve and Run</button> <button class="btn small primary more svelte-1ag3epb" aria-label="More ways to approve">▾</button> <!></span> <!> <!> <span class="file muted svelte-1ag3epb">Recorded in <code> </code> — commit it with the spec.</span></div> <!> <ol class="cards svelte-1ag3epb"></ol> <!> <!> <!></section> <!>`,1);function Wu(e,t){Xe(t,!0);let n=N(null),r=wa();B(()=>{Q.report,Q.job?.running,r(ba(`/api/review${Sa({feature:Q.feature??void 0})}`),e=>P(n,e,!0),()=>P(n,null))});let i=M(()=>H(n)?.data??null),a=M(()=>H(i)?.requirements.length??0),o=M(()=>(H(i)?.requirements??[]).filter(e=>e.state!==`approved`&&!Mc(e.text).some(e=>e.question))),s={open:`To Review`,approved:`Approved`,changes_requested:`Changes Requested`,lapsed:`Changed Since Decided`},c={open:`ready`,approved:`verified`,changes_requested:`needs_approval`,lapsed:`needs_approval`},l=(e,t,n)=>ja({kind:`review`,ids:e,verdict:t},{group:`plan`,label:n,why:t===`request`?`the comment says what the requirement should say`:`recorded with your name, bound to this wording`,command:`speccoder review ${t}${e.length?` `+e.join(` `):``}${t===`request`?` --comment "…"`:``}`,input:t===`request`?`What should ${e[0]} say?`:null}),u=()=>{H(i)?.revise_with&&H(i).revision&&Q.perform(ja({kind:`skill`,name:H(i).revise_with,arguments:H(i).revision},{group:`plan`,label:`revise the spec (${H(i).revise_with})`,why:`the format's skill rewrites what you asked; you review the result`,command:`speccoder spec ${H(i).revise_with} "…"`}))},d=N(F({})),f=N(null),p=N(``),m=(e,t,n,r)=>ja({kind:`review`,ids:[e],verdict:t},{group:`plan`,label:n,why:t===`answer`?`your words replace the question where it stands`:`the line keeps its identifier`,command:r});async function h(e){let t=(H(d)[e]??``).trim();t&&(await Q.perform(m(e,`answer`,`answer ${e}`,`speccoder review answer ${e} "…"`),t),P(d,{...H(d),[e]:``},!0))}async function g(e,t){let n=H(p).trim();n&&(await Q.perform(m(e,t?`edit-approve`:`edit`,`reword ${e}`,`speccoder review edit ${e} "…"${t?` --approve`:``}`),n),P(f,null))}let _=()=>{H(i)?.revise_with&&Q.perform(ja({kind:`skill`,name:H(i).revise_with,arguments:``},{group:`plan`,label:`clarify with ${H(i).revise_with}`,why:`the format's skill asks you the questions and writes the answers in`,command:`speccoder spec ${H(i).revise_with}`}))},v=M(()=>Oa(Q.actions,`commit`)[0]),y=(e,t)=>e?t?`Reworded`:`Removed`:`Added`,b=e=>(e??``).replace(/^\s*-\s*\*\*[A-Z]+-\d+\*\*:?\s*/,``),x=N(!1),S=N(!1),C=M(()=>H(i)?.sheet?.blocked??[]);function w(){sl.open=!0,requestAnimationFrame(()=>document.getElementById(`comment-tray`)?.focus())}let T=N(null),E=N(``);async function ee(){H(T)&&H(E).trim()&&(await sl.add({kind:`finding`,source:`review`,id:H(T).id,text:H(T).text},H(E).trim()),P(T,null),P(E,``))}let D=N(null),O=N(``);async function k(e){let t=Qc(e);t&&H(O).trim()&&(await sl.add(t,H(O).trim()),P(D,null),P(O,``))}B(()=>{let e=e=>{if(e.detail!==`review.tests`)return;let t=H(i)?.oracle.find(e=>e.tests.length===0);if(!t)return Q.toast({tone:`warn`,text:`Every requirement has its tests`});Q.perform(ja({kind:`oracle_tests`,req:t.req,op:`write`,path:null,scenario:null,reading:null},{group:`review`,label:`write tests for ${t.req}`,why:`red-checked on the current code`,command:Wc(t.req,`write`)}))};return window.addEventListener(`speccoder:review`,e),()=>window.removeEventListener(`speccoder:review`,e)});let te=e=>e?new Date(e*1e3).toLocaleDateString(void 0,{month:`short`,day:`numeric`}):``;var ne=Yr(),re=L(ne),ie=e=>{G(e,du())},ae=e=>{var t=fu(),r=R(t,!0);V(()=>K(r,H(n).message)),G(e,t)},oe=e=>{var t=Uu(),n=L(t),r=I(n),m=z(I(r),2),ne=I(m),re=R(ne),ie=R(z(ne,2));A(m),A(r);var ae=z(r,2),oe=I(ae),se=I(oe);$(I(se),{name:`check`,size:11,weight:2.4}),j(),A(se);var ce=z(se,2),le=z(ce,2),ue=e=>{var t=mu(),n=I(t),r=e=>{var t=pu(),n=R(t);V(()=>K(n,`Approve ${H(o).length===H(a)?`All Lines`:`${H(o).length} More Lines`} Only`)),U(`click`,t,()=>{P(S,!1),Q.perform(l([],`approve`,`approve ${H(o).length} requirement(s)`))}),G(e,t)};q(n,e=>{H(o).length&&e(r)});var i=z(n,2);A(t),U(`click`,i,()=>{P(S,!1),P(x,!0)}),G(e,t)};q(le,e=>{H(S)&&e(ue)}),A(oe);var de=z(oe,2),fe=e=>{var t=hu(),n=I(t);$(n,{name:`exclaim`,size:11});var r=z(n);A(t),V(()=>K(r,` ${H(i).totals.ambiguous??``} read two ways`)),G(e,t)};q(de,e=>{H(i).totals.ambiguous&&e(fe)});var pe=z(de,2),me=e=>{var t=gu(),n=I(t);$(n,{name:`sparkle`,size:11,weight:2.2});var r=z(n);A(t),V(()=>{t.disabled=!!Q.job?.running,K(r,` Revise the Spec (${H(i).totals.changes_requested??``} ${H(i).totals.changes_requested===1?`request`:`requests`})`)}),U(`click`,t,u),G(e,t)};q(pe,e=>{H(i).totals.changes_requested&&H(i).revise_with&&e(me)});var he=z(pe,2),ge=R(z(I(he)),!0);j(),A(he),A(ae);var _e=z(ae,2),ve=e=>{var t=bu(),n=I(t),r=I(n);$(r,{name:`exclaim`,size:14,weight:2.2});var a=z(r),o=z(a),s=R(o),c=z(o,2),l=e=>{var t=_u(),n=I(t);$(n,{name:`sparkle`,size:10,weight:2.2});var r=z(n);A(t),V(()=>{t.disabled=!!Q.job?.running,K(r,` Ask Me with ${H(i).revise_with??``}`)}),U(`click`,t,_),G(e,t)};q(c,e=>{H(i).revise_with&&e(l)}),A(n),J(z(n,2),17,()=>H(i).questions,e=>e.id,(e,t,n,r)=>{var i=yu();Yi(i,e=>({class:`q`,...e}),[()=>Ga(`open_question`,{id:H(t).id,file:H(t).file,line:H(t).line},`${H(t).id} (open question)`,`${H(t).id} at ${H(t).file}:${H(t).line}: ${H(t).text}`)],void 0,void 0,`svelte-1ag3epb`);var a=I(i),o=I(a),s=R(o,!0),c=R(z(o));A(a);var l=z(a,2),u=R(l,!0),f=z(l,2),p=z(f,2),m=e=>{var n=vu(),r=I(n);Gi(r);var i=z(r,2);A(n),V(e=>{X(r,`placeholder`,`Your comment on ${H(t).id??``}`),X(r,`aria-label`,`Comment on ${H(t).id??``}`),i.disabled=e},[()=>!H(E).trim()]),Lr(`submit`,n,e=>{e.preventDefault(),ee()}),$i(r,()=>H(E),e=>P(E,e)),G(e,n)};q(p,e=>{H(T)?.id===H(t).id&&e(m)});var g=z(p,2),_=I(g);Gi(_);var v=z(_,2);A(g),A(i),V((e,n)=>{K(s,H(t).id),K(c,`${H(t).near??``??``} · ${e??``}:${H(t).line??``}`),K(u,H(t).text),X(_,`aria-label`,`Answer to ${H(t).id??``}`),v.disabled=n},[()=>H(t).file.split(`/`).pop(),()=>!!Q.job?.running||!(H(d)[H(t).id]??``).trim()]),U(`click`,f,()=>{P(T,{id:H(t).id,text:H(t).text},!0),P(E,``)}),Lr(`submit`,g,e=>{e.preventDefault(),h(H(t).id)}),$i(_,()=>H(d)[H(t).id],e=>H(d)[H(t).id]=e),G(e,i)}),A(t),V(()=>{K(a,` ${H(i).questions.length===1?`One question is open`:`${H(i).questions.length} questions are open`} `),K(s,`— answer ${H(i).questions.length===1?`it`:`them`} before the spec is built on`)}),G(e,t)};q(_e,e=>{H(i).questions.length&&e(ve)});var ye=z(_e,2);J(ye,21,()=>H(i).requirements,e=>e.id,(e,t)=>{var n=Au();Yi(n,e=>({class:`card s-${c[H(t).state]??``}-edge`,...e}),[()=>Ga(`requirement`,{id:H(t).id},H(t).id,`${H(t).id} (${s[H(t).state]}): ${H(t).text}`)],void 0,void 0,`svelte-1ag3epb`);var r=I(n),i=I(r),a=R(i,!0),o=z(i,2),u=R(o,!0);A(r);var d=z(r,2),m=e=>{var n=Cu(),r=I(n);lt(r),ct(r,!0);var i=z(r,2);Rc(i,{field:`requirement`,get text(){return H(p)},onshaped:e=>P(p,e,!0)});var a=z(i,2),o=e=>{var n=Su();J(n,21,()=>Ac(H(t).text,H(p).trim()),si,(e,t)=>{var n=xu(),r=R(n,!0);V(()=>{Y(n,1,xi(H(t).kind),`svelte-1ag3epb`),K(r,H(t).text)}),G(e,n)}),A(n),G(e,n)},s=M(()=>H(p).trim()&&H(p).trim()!==H(t).text);q(a,e=>{H(s)&&e(o)});var c=z(a,2),l=I(c),u=z(l,2),d=z(u,2);A(c),A(n),V((e,n)=>{X(r,`aria-label`,`${H(t).id??``} wording`),l.disabled=e,u.disabled=n},[()=>!H(p).trim()||!!Q.job?.running,()=>!H(p).trim()||!!Q.job?.running]),Lr(`submit`,n,e=>{e.preventDefault(),g(H(t).id,!1)}),U(`keydown`,r,e=>{e.key===`Escape`&&P(f,null),e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),g(H(t).id,!0))}),$i(r,()=>H(p),e=>P(p,e)),U(`click`,l,()=>g(H(t).id,!0)),U(`click`,d,()=>P(f,null)),G(e,n)},h=e=>{var n=Tu(),r=I(n),i=e=>{var n=Yr();J(L(n),17,()=>Ac(Nc(H(t).decided_on),Nc(H(t).text)),si,(e,t)=>{var n=xu(),r=R(n,!0);V(()=>{Y(n,1,xi(H(t).kind),`svelte-1ag3epb`),K(r,H(t).text)}),G(e,n)}),G(e,n)},a=e=>{var n=Yr();J(L(n),17,()=>Mc(H(t).text),si,(e,t)=>{var n=Yr(),r=L(n),i=e=>{var n=wu(),r=R(n);V(()=>K(r,`? ${H(t).text??``}`)),G(e,n)},a=e=>{so(e,{get text(){return H(t).text}})};q(r,e=>{H(t).question?e(i):e(a,-1)}),G(e,n)}),G(e,n)};q(r,e=>{H(t).state===`lapsed`&&H(t).decided_on?e(i):e(a,-1)}),A(n),G(e,n)};q(d,e=>{H(f)===H(t).id?e(m):e(h,-1)});var _=z(d,2),v=e=>{var n=Du(),r=I(n),i=z(r),a=e=>{var n=Jr();V(e=>K(n,` · ${e??``}`),[()=>te(H(t).at)]),G(e,n)};q(i,e=>{H(t).at&&e(a)});var o=z(i),s=e=>{var n=Eu(),r=R(n);V(()=>K(r,`“${H(t).comment??``}”`)),G(e,n)};q(o,e=>{H(t).comment&&e(s)}),A(n),V(()=>K(r,`${H(t).state===`lapsed`?`Decided on the earlier wording by`:H(t).state===`approved`?`Approved by`:`Requested by`} ${H(t).by??``}`)),G(e,n)};q(_,e=>{H(t).by&&e(v)});var y=z(_,2),b=I(y),x=e=>{let n=M(()=>Mc(H(t).text).some(e=>e.question));var r=Ou();$(I(r),{name:`check`,size:11,weight:2.4}),j(),A(r),V(()=>{r.disabled=!!Q.job?.running||H(n),X(r,`title`,H(n)?`It still asks a question: answer it, or reword it`:``)}),U(`click`,r,()=>Q.perform(l([H(t).id],`approve`,`approve ${H(t).id}`))),G(e,r)};q(b,e=>{H(t).state!==`approved`&&e(x)});var S=z(b,2);$(I(S),{name:`doc`,size:11,weight:2}),j(),A(S);var C=z(S,2);$(I(C),{name:`sparkle`,size:11,weight:2.2}),j(),A(C);var w=z(C,2),T=e=>{var n=ku();V(()=>n.disabled=!!Q.job?.running),U(`click`,n,()=>Q.perform(l([H(t).id],`clear`,`clear ${H(t).id}`))),G(e,n)};q(w,e=>{H(t).state!==`open`&&e(T)}),A(y),A(n),V(()=>{K(a,H(t).id),Y(o,1,`chip s-${c[H(t).state]??``}`,`svelte-1ag3epb`),K(u,s[H(t).state]),S.disabled=!!Q.job?.running||H(f)===H(t).id,C.disabled=!!Q.job?.running}),U(`click`,S,()=>{P(f,H(t).id,!0),P(p,H(t).text,!0)}),U(`click`,C,()=>Q.perform(l([H(t).id],`request`,`request changes to ${H(t).id}`))),G(e,n)}),A(ye);var be=z(ye,2),xe=e=>{var t=ju(),n=I(t);$(I(n),{name:`shield`,size:13,weight:2}),j(),A(n);var r=z(n,2),a=R(r,!0),o=z(r,2),s=e=>{Zl(e,{get bugs(){return H(i).bug_tests}})};q(o,e=>{H(i).bug_tests?.length&&e(s)}),A(t),V(()=>K(a,H(i).tests_notice)),G(e,t)},Se=e=>{var t=Mu(),n=I(t);$(I(n),{name:`shield`,size:13,weight:2}),j(2),A(n),J(z(n,2),17,()=>H(i).oracle,e=>e.req,(e,t)=>{Kl(e,{get v(){return H(t)}})}),A(t),G(e,t)};q(be,e=>{H(i).tests_notice?e(xe):H(i).oracle.length&&e(Se,1)});var Ce=z(be,2),we=e=>{var t=Lu(),n=I(t),r=I(n);$(r,{name:`branch`,size:13,weight:2});var a=z(r,4),o=e=>{var t=Nu();V(()=>{t.disabled=!!H(v).blocked||!!Q.job?.running,X(t,`title`,`$ ${H(v).command}`)}),U(`click`,t,()=>H(v)&&Q.perform(H(v))),G(e,t)};q(a,e=>{H(v)&&e(o)}),A(n),J(z(n,2),17,()=>H(i).changes,e=>e.id,(e,t)=>{var n=Iu(),r=L(n),i=I(r),a=I(i),o=e=>{var n=Pu();V(()=>X(n,`aria-label`,`Comment on ${H(t).id??``} as changed`)),U(`click`,n,()=>{P(D,H(t).id,!0),P(O,``)}),G(e,n)},s=M(()=>Qc(H(t)));q(a,e=>{H(s)&&e(o)});var c=z(a,1,!0);A(i);var l=z(i),u=R(l,!0),d=z(l,2);J(d,21,()=>Ac(Nc(b(H(t).then)),Nc(b(H(t).now))),si,(e,t)=>{var n=xu(),r=R(n,!0);V(()=>{Y(n,1,xi(H(t).kind),`svelte-1ag3epb`),K(r,H(t).text)}),G(e,n)}),A(d),A(r);var f=z(r,2),p=e=>{var n=Fu(),r=I(n);Gi(r),ct(r,!0);var i=z(r,2),a=z(i,2);A(n),V(e=>{X(r,`placeholder`,`Your comment on ${H(t).id??``} as it reads now`),X(r,`aria-label`,`Comment on the change to ${H(t).id??``}`),i.disabled=e},[()=>!H(O).trim()]),Lr(`submit`,n,e=>{e.preventDefault(),k(H(t))}),U(`keydown`,r,e=>{e.key===`Escape`&&P(D,null)}),$i(r,()=>H(O),e=>P(O,e)),U(`click`,a,()=>P(D,null)),G(e,n)};q(f,e=>{H(D)===H(t).id&&e(p)}),V(e=>{K(c,H(t).id),K(u,e)},[()=>y(H(t).then,H(t).now)]),G(e,n)}),A(t),G(e,t)};q(Ce,e=>{H(i).changes.length&&e(we)});var Te=z(Ce,2),Ee=e=>{var t=Hu(),n=I(t);$(I(n),{name:`hourglass`,size:13,weight:2}),j(),A(n);var r=z(n,2);J(r,21,()=>H(i).history,e=>e.commit,(e,t)=>{var n=Vu(),r=z(I(n),2),i=R(r,!0),a=z(r,2),o=R(a,!0),s=z(a,2),c=I(s),l=e=>{var n=Ru(),r=R(n);V(e=>{X(n,`title`,e),K(r,`+${H(t).added.length??``}`)},[()=>H(t).added.join(`, `)]),G(e,n)};q(c,e=>{H(t).added.length&&e(l)});var u=z(c,2),d=e=>{var n=zu(),r=R(n);V(e=>{X(n,`title`,e),K(r,`~${H(t).reworded.length??``}`)},[()=>H(t).reworded.join(`, `)]),G(e,n)};q(u,e=>{H(t).reworded.length&&e(d)});var f=z(u,2),p=e=>{var n=Bu(),r=R(n);V(e=>{X(n,`title`,e),K(r,`−${H(t).removed.length??``}`)},[()=>H(t).removed.join(`, `)]),G(e,n)};q(f,e=>{H(t).removed.length&&e(p)}),A(s);var m=z(s,2),h=I(m),g=R(z(h),!0);A(m),A(n),V(e=>{K(i,H(t).date),K(o,H(t).subject),K(h,`${H(t).author??``} · `),K(g,e)},[()=>H(t).commit.slice(0,7)]),G(e,n)}),A(r),A(t),G(e,t)};q(Te,e=>{H(i).history.length&&e(Ee)}),A(n);var De=z(n,2),Oe=e=>{uu(e,{get review(){return H(i)},onclose:()=>P(x,!1),onrefine:w})};q(De,e=>{H(x)&&H(i)&&e(Oe)}),V(e=>{X(m,`aria-label`,`${H(i).totals.approved??``} of ${H(a)??``} approved`),Oi(re,`width:${H(i).totals.approved/H(a)*100}%`),K(ie,`${H(i).totals.approved??``}/${H(a)??``}`),se.disabled=!!Q.job?.running,X(se,`title`,e),X(ce,`aria-expanded`,H(S)),ce.disabled=!!Q.job?.running,K(ge,H(i).file)},[()=>H(C).length?H(C).join(`; `):`speccoder review approve --run ask`]),U(`click`,se,()=>P(x,!0)),U(`click`,ce,()=>P(S,!H(S))),G(e,t)};q(re,e=>{H(n)?!H(i)||!H(a)?e(ae,1):e(oe,-1):e(ie)}),G(e,ne),Ze()}Rr([`click`,`keydown`]);var Gu=[{rung:`bug`,label:`Bug fix`,ceremony:`a reproduction must fail first, then the fix is judged`,keys:`⌃⏎`},{rung:`quick`,label:`Quick change`,ceremony:`one requirement, judged like a task`,keys:`⌥⏎`},{rung:`feature`,label:`Feature`,ceremony:`the spec tool writes a spec; you review it`,keys:`⇧⏎`},{rung:`explore`,label:`Explore`,ceremony:`approaches to choose from, then a brief that starts the spec`,keys:``},{rung:`ask`,label:`Just ask`,ceremony:`a read-only answer, nothing changes`,keys:`⌘⏎`}],Ku=e=>e!==`none`;function qu(e){return e.key===`Enter`?e.altKey?`quick`:e.shiftKey?`feature`:e.ctrlKey?`bug`:e.metaKey?`ask`:`selected`:null}function Ju(e,t){let n=Gu.map(e=>e.rung).filter(Ku),r=e?n.indexOf(e):-1;return r<0?t===1?n[0]:n[n.length-1]:n[(r+t+n.length)%n.length]}function Yu(e){return`"${e.split(/\s+/).filter(Boolean).join(` `).replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`)}"`}function Xu(e){return(e??``).replace(/^(speckit|openspec)-/,``)}function Zu(e,t,n){let r=t.trim()?Yu(t):`"…"`;switch(e){case`bug`:return`speccoder bug ${r}`;case`quick`:return`speccoder do ${r}`;case`feature`:return n?`speccoder spec ${Xu(n)} ${r}`:null;case`ask`:return`speccoder ask ${r}`;case`explore`:return`speccoder spec explore ${r}`;default:return null}}function Qu(e,t,n,r){let i=[];return e&&i.push(`speccoder spec ${Xu(e)} ${t.trim()?Yu(t):`"…"`} --through ${n}`),r&&i.push(`speccoder issue start ${r} --through ${n}`),i}function $u(e,t){if(!e?.creates)return[];let n=[Xu(e.creates)];if(t===`spec`)return n;let r=e.toward.map(Xu);return r.length&&n.push(`(your review)`),n.push(...t===`plan`?r.slice(0,Math.max(1,r.length-1)):r),t===`analyze`&&e.checks&&n.push(Xu(e.checks)),n}function ed(e){let t=[{through:`spec`,label:`spec only`},{through:`tasks`,label:`spec → plan → tasks`}];return e&&t.push({through:`analyze`,label:`… → analyze`}),t}var td=(e,t,n=`${t}s`)=>`${e} ${e===1?t:n}`;function nd(e){let t=[];return e.identifiers&&t.push({key:`requirements`,text:td(e.requirements,`requirement`),attention:!1}),t.push({key:`scenarios`,text:td(e.scenarios,`scenario`),attention:!1}),t.push({key:`questions`,text:td(e.open_questions,`open question`),attention:e.open_questions>0}),e.untestable.length&&t.push({key:`untestable`,text:`${td(e.untestable.length,`requirement`)} without a scenario (${e.untestable.join(`, `)} — can't be tested)`,attention:!0}),t}function rd(e,t){if(!t||!e)return null;let n=[],r=(e,t,r)=>{e>t&&n.push(`${td(e-t,r)} added`),e<t&&n.push(`${td(t-e,r)} fewer`)};return r(t.requirements,e.requirements,`requirement`),r(t.scenarios,e.scenarios,`scenario`),r(t.open_questions,e.open_questions,`open question`),r(t.untestable.length,e.untestable.length,`untestable requirement`),n.length?n.join(`, `):null}function id(e,t){switch(e.kind){case`questions`:return{tone:`attention`,title:`Answer ${td(e.questions.length,`question`)}, then review the spec`,primary:`Approve and plan`,disabled:`Answer the ${td(e.questions.length,`open question`)} first`};case`review`:return{tone:`attention`,title:e.requirements.length?`Review the spec — ${td(e.requirements.length,`requirement`)}. Approve them to plan.`:`Review the spec, then plan it.`,primary:`Approve and plan`,disabled:null};case`failed`:return{tone:`danger`,title:`${Xu(e.skill)} failed: ${e.message}`,primary:`Retry this step`,disabled:null};case`done`:return{tone:`ok`,title:t?`Planned in ${t}${e.plan_checks.length?` — ${td(e.plan_checks.length,`plan check`)} to look at`:``}`:`Planned`,primary:`Commit the planning files`,disabled:null}}}function ad(e,t){let n=new Map(t.map(e=>[e.id,e.text]));return e.every(e=>n.get(e.id)===e.text)}function od(e){switch(e){case`running`:return{glyph:`◐`,word:`running`};case`done`:return{glyph:`✓`,word:`done`};case`skipped`:return{glyph:`=`,word:`skipped`};case`failed`:return{glyph:`✗`,word:`failed`};default:return{glyph:`·`,word:`waiting`}}}function sd(e){let t=e.steps.filter(e=>e.access===`network`);return{steps:t,hosts:[...new Set(t.flatMap(e=>e.hosts??[]))]}}function cd(e){return e.map(e=>e===``||/[\s"']/.test(e)?Yu(e):e).join(` `)}function ld(e,t,n){return e.steps.map(e=>{let r=t.find(t=>t.id===e.id)??null;return{step:e,state:r?r.state:n===e.id?`running`:`waiting`,result:r}})}function ud(e){let t=new Set(`a.an.the.that.which.who.to.of.for.and.or.in.on.with.my.our.your.into.from.by.at.as.is.it.its.this.i.we.want.build.make.write.create.app.tool.simple.small.little`.split(`.`)),n=e.normalize(`NFKD`).replace(/[^\x00-\x7f]/g,``).toLowerCase().split(/[^a-z0-9]+/).filter(e=>e&&!t.has(e)).slice(0,5),r=``;for(let e of n){let t=r?`${r}-${e}`:e;if(t.length>40){r||=e.slice(0,40);break}r=t}return r||`project`}function dd(e,t){let n=null,r=(...r)=>{n&&clearTimeout(n),n=setTimeout(()=>{n=null,e(...r)},t)};return r.cancel=()=>{n&&clearTimeout(n),n=null},r}function fd(e){return!!e?.closest?.(`input, textarea, select, [contenteditable='true']`)}var pd=W(`<span class="sep svelte-75ft4c" aria-hidden="true">·</span>`),md=W(`<span aria-hidden="true"></span>`),hd=W(`<!> <button><!> </button>`,1),gd=W(`<div class="strip svelte-75ft4c" aria-label="Readiness"></div> <div class="sr-only" role="status" aria-live="polite" data-testid="readiness-live"> </div>`,1);function _d(e,t){Xe(t,!0);let n=ma(t,`readiness`,3,void 0),r=N(null),i=M(()=>n()??H(r)),a=wa();B(()=>{n()===void 0&&(Q.report,Q.documents,a(ba(`/api/review${Sa({feature:Q.feature??void 0})}`),e=>P(r,e.data?.readiness??null,!0),()=>P(r,null)))});let o=N(``),s=null,c=0,l=null,u=null;B(()=>{let e=H(i),t=rd(s,e??null);if(s=e??null,!t)return;let n=c-Date.now();n<=0?(P(o,t,!0),c=Date.now()+5e3):(l=t,u||=setTimeout(()=>{u=null,l&&P(o,l,!0),l=null,c=Date.now()+5e3},n))}),B(()=>()=>{u&&clearTimeout(u)});function d(e){e===`questions`||e===`requirements`?Q.doc=`review`:(Q.doc=`spec`,e===`untestable`&&H(i)?.untestable[0]&&(Q.section=null))}var f=Yr(),p=L(f),m=e=>{var t=gd(),n=L(t);J(n,23,()=>nd(H(i)),e=>e.key,(e,t,n)=>{var r=hd(),i=L(r),a=e=>{G(e,pd())};q(i,e=>{H(n)>0&&e(a)});var o=z(i,2);let s;var c=I(o),l=e=>{var t=md();t.textContent=`⚠ `,G(e,t)};q(c,e=>{H(t).attention&&e(l)});var u=z(c,1,!0);A(o),V(()=>{s=Y(o,1,`part svelte-75ft4c`,null,s,{attention:H(t).attention}),K(u,H(t).text)}),U(`click`,o,()=>d(H(t).key)),G(e,r)}),A(n);var r=R(z(n,2),!0);V(()=>K(r,H(o))),G(e,t)};q(p,e=>{H(i)&&e(m)}),G(e,f),Ze()}Rr([`click`]);var vd=W(`<li><span class="mono"> </span> </li>`),yd=W(`<ul class="checks svelte-1tjau8p"></ul>`),bd=W(`<span class="why svelte-1tjau8p"> </span>`),xd=W(`<button class="btn">Open the review</button> <button class="btn ghost">Keep refining</button> <button class="btn primary svelte-1tjau8p">Approve and plan <kbd>⌘⏎</kbd></button> <!>`,1),Sd=W(`<button class="btn primary svelte-1tjau8p">Retry this step</button> <button class="btn">Show the log</button>`,1),Cd=W(`<button class="btn primary svelte-1tjau8p">Commit the planning files</button> <button class="btn">Review the tests</button> <span class="why svelte-1tjau8p"> </span>`,1),wd=W(`<section aria-labelledby="stop-title"><h3 id="stop-title" class="svelte-1tjau8p"><span aria-hidden="true"> </span> Next</h3> <p class="title svelte-1tjau8p"> </p> <!> <div class="row svelte-1tjau8p"><!></div></section>`);function Td(e,t){Xe(t,!0);let n=M(()=>id(t.chain.stop,t.chain.unit??null)),r=M(()=>t.chain.unit??Q.feature??``),i=N(F([])),a=N(!1),o=N(!1);B(()=>{(t.chain.stop.kind===`review`||t.chain.stop.kind===`questions`)&&ba(`/api/review${Sa({feature:H(r)})}`).then(e=>{P(i,(e.data?.requirements??[]).map(e=>({id:e.id,text:e.text})),!0)})});let s=M(()=>t.chain.stop.kind===`questions`?t.chain.stop.questions.length:0);function c(e){return ja({kind:`plan_through`,from:{kind:`continue`},through:t.chain.through},{group:`plan`,label:`plan on`,why:`the next skills of the chain`,command:e})}async function l(){if(!(H(o)||H(s))){P(o,!0);try{let e=((await ba(`/api/review${Sa({feature:H(r)})}`)).data?.requirements??[]).map(e=>({id:e.id,text:e.text}));if(!ad(H(i),e)){P(a,!0),P(i,e,!0);return}P(a,!1);let n=t.chain.stop.kind===`review`?t.chain.stop.requirements:[];if((await Q.run(ja({kind:`review`,ids:n,verdict:`approve`},{group:`review`,label:`approve the requirements`,why:`your review, recorded`,command:`speccoder review approve --feature ${H(r)}`})))?.status!==`ok`)return;Q.following=!0,await Q.perform(c(`speccoder spec ${Xu(t.chain.next_skill)} --through ${t.chain.through} --feature ${H(r)}`))}finally{P(o,!1)}}}function u(){Q.following=!0,Q.perform(c(`speccoder spec ${Xu(t.chain.next_skill)} --through ${t.chain.through} --feature ${H(r)}`))}function d(){let e=Oa(Q.actions,`commit`)[0];e?Q.perform(e):Q.toast({tone:`ok`,text:`Nothing to commit: the planning files are committed`})}function f(e){e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&t.chain.stop.kind===`review`&&!e.target?.closest(`textarea, input`)&&(e.preventDefault(),l())}var p=wd();Lr(`keydown`,on,f);let m;var h=I(p),g=R(I(h),!0);j(),A(h);var _=z(h,2),v=R(_,!0),y=z(_,2),b=e=>{var n=yd();J(n,21,()=>t.chain.stop.plan_checks,e=>e.code+e.tasks.join(),(e,t)=>{var n=vd(),r=I(n),i=R(r,!0),a=z(r);A(n),V(()=>{K(i,H(t).code),K(a,` ${H(t).detail??``}`)}),G(e,n)}),A(n),G(e,n)};q(y,e=>{t.chain.stop.kind===`done`&&t.chain.stop.plan_checks.length&&e(b)});var x=z(y,2),S=I(x),C=e=>{var t=xd(),r=L(t),i=z(r,2),a=z(i,2),c=z(a,2),u=e=>{var t=bd(),r=R(t,!0);V(()=>K(r,H(n).disabled)),G(e,t)};q(c,e=>{H(s)&&e(u)}),V(()=>{a.disabled=!!H(s)||H(o),X(a,`title`,H(s)?H(n).disabled??``:`Approve the requirements shown, then plan (⌘⏎)`)}),U(`click`,r,()=>Q.doc=`review`),U(`click`,i,()=>{Q.chain=null,Q.doc=`spec`}),U(`click`,a,l),G(e,t)},w=e=>{var t=Sd(),n=L(t),r=z(n,2);U(`click`,n,u),U(`click`,r,()=>window.dispatchEvent(new CustomEvent(`speccoder:menu`,{detail:`view.report`}))),G(e,t)},T=e=>{var n=Cd(),r=L(n),i=z(r,2),a=R(z(i,2));V(e=>K(a,`${e??``} ran · nothing is committed until you commit`),[()=>td(t.chain.ran.length,`skill`)]),U(`click`,r,d),U(`click`,i,()=>Q.doc=`review`),G(e,n)};q(S,e=>{t.chain.stop.kind===`review`||t.chain.stop.kind===`questions`?e(C):t.chain.stop.kind===`failed`?e(w,1):e(T,-1)}),A(x),A(p),V(()=>{m=Y(p,1,`stop svelte-1tjau8p`,null,m,{attention:H(n).tone===`attention`,danger:H(n).tone===`danger`}),K(g,H(n).tone===`danger`?`✗`:H(n).tone===`ok`?`✓`:`△`),X(_,`role`,H(n).tone===`danger`?`alert`:void 0),K(v,H(a)?`The spec changed — review again`:H(n).title)}),G(e,p),Ze()}Rr([`click`]);var Ed=W(`<aside class="tray glass svelte-1q7tlad" role="alert" aria-label="Comments"><p class="warn small svelte-1q7tlad"><!> </p></aside>`),Dd=W(`<span class="dot svelte-1q7tlad" aria-label="a revision to keep or undo"></span>`),Od=W(`<button class="chip svelte-1q7tlad" aria-expanded="false"><!> <!></button>`),kd=W(`<span class="badge svelte-1q7tlad">outdated</span> <button class="btn small svelte-1q7tlad">Keep</button>`,1),Ad=W(`<div><p class="quote svelte-1q7tlad"> </p> <p class="text svelte-1q7tlad"> </p> <div class="acts svelte-1q7tlad"><span class="muted mono small svelte-1q7tlad"> </span> <!> <button class="btn small ghost svelte-1q7tlad">Delete</button></div></div>`),jd=W(`<section><h4 class="svelte-1q7tlad"> </h4> <!></section>`),Md=W(`<div class="send svelte-1q7tlad"><button class="btn primary" title="speccoder review comments send"> </button> <span class="muted small svelte-1q7tlad">one revision<!> </span></div>`),Nd=W(`· <span class="warn svelte-1q7tlad"> </span>`,1),Pd=W(`<li><!> </li>`),Fd=W(`<ul class="outside svelte-1q7tlad"></ul>`),Id=W(`<p class="muted small svelte-1q7tlad"> </p>`),Ld=W(`<p class="warn small svelte-1q7tlad"><!> </p>`),Rd=W(`<span class="badge svelte-1q7tlad">outside your comments</span>`),zd=W(`<span> </span>`),Bd=W(`<section><h4 class="svelte-1q7tlad"> <!></h4> <p class="words svelte-1q7tlad"></p></section>`),Vd=W(`<div class="acts svelte-1q7tlad"><button class="btn small svelte-1q7tlad">Keep</button> <button class="btn small svelte-1q7tlad" title="⌘Z · speccoder review comments undo"><!> Undo Revision</button></div>`),Hd=W(`<div class="result svelte-1q7tlad" aria-live="polite"><p class="svelte-1q7tlad"><strong> </strong><!> <span class="muted"> </span></p> <!> <!> <!> <!> <!></div>`),Ud=W(`<header class="svelte-1q7tlad"><strong> </strong> <button class="btn small ghost svelte-1q7tlad" aria-label="Close the tray"><!></button></header> <!> <!> <!>`,1),Wd=W(`<aside class="tray glass svelte-1q7tlad" id="comment-tray" tabindex="-1" aria-label="Comments"><!></aside>`);function Gd(e,t){Xe(t,!0),B(()=>{Q.feature,Q.job?.running,Q.report,sl.load()});let n=M(()=>sl.view),r=M(()=>H(n)?.drafts??[]),i=M(()=>H(r).filter(e=>e.state===`draft`)),a=M(()=>H(n)?.turn??null),o=M(()=>Zc(H(i))),s=M(()=>!!Q.job?.running),c=M(()=>H(a)&&H(a).outcome===`pending`?H(a):null);function l(e){(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`z`&&H(c)&&(e.preventDefault(),sl.undo()),e.key===`Escape`&&(sl.open=!1)}B(()=>{let e=e=>{let t=e.detail;t===`review.send`&&(H(i).length?sl.send():Q.toast({tone:`warn`,text:`No comments to send`})),t===`review.undo`&&(H(c)?sl.undo():Q.toast({tone:`warn`,text:`No revision to undo`}))};return window.addEventListener(`speccoder:review`,e),()=>window.removeEventListener(`speccoder:review`,e)});var u=Yr(),d=L(u),f=e=>{var t=Ed(),n=I(t),r=I(n);$(r,{name:`exclaim`,size:11});var i=z(r);A(n),A(t),V(()=>K(i,` The comment tray cannot be read: ${sl.error??``}`)),G(e,t)},p=e=>{var t=Wd(),u=I(t),d=e=>{var t=Od(),n=I(t);$(n,{name:`doc`,size:12,weight:2.2});var i=z(n),a=z(i),o=e=>{G(e,Dd())};q(a,e=>{H(c)&&e(o)}),A(t),V(()=>K(i,` ${H(r).length??``} ${H(r).length===1?`comment`:`comments`} `)),U(`click`,t,()=>sl.open=!0),G(e,t)},f=e=>{var t=Ud(),l=L(t),u=I(l),d=R(u),f=z(u,2);$(I(f),{name:`down`,size:11}),A(f),A(l);var p=z(l,2);J(p,17,()=>Xc(H(r)),e=>e.section,(e,t)=>{var n=jd(),r=I(n),i=R(r,!0);J(z(r,2),17,()=>H(t).drafts,e=>e.id,(e,t)=>{var n=Ad();let r;var i=I(n),a=R(i),o=z(i,2),c=R(o,!0),l=z(o,2),u=I(l),d=R(u),f=z(u,2),p=e=>{var n=kd(),r=z(L(n),2);V(()=>r.disabled=H(s)),U(`click`,r,()=>sl.keep(H(t).id)),G(e,n)};q(f,e=>{H(t).state===`outdated`&&e(p)});var m=z(f,2);A(l),A(n),V((e,o,l)=>{r=Y(n,1,`draft svelte-1q7tlad`,null,r,{outdated:H(t).state===`outdated`}),X(i,`title`,e),K(a,`“${o??``}”`),K(c,H(t).text),K(d,`${H(t).id??``} · ${l??``}`),m.disabled=H(s),X(m,`aria-label`,`Delete ${H(t).id??``}`)},[()=>qc(H(t).anchor),()=>Jc(H(t).anchor),()=>qc(H(t).anchor)]),U(`click`,m,()=>sl.drop(H(t).id)),G(e,n)}),A(n),V(()=>K(i,H(t).section)),G(e,n)});var m=z(p,2),h=e=>{var t=Md(),r=I(t),a=R(r),c=z(r,2),l=z(I(c)),u=e=>{var t=Jr();V(()=>K(t,`by ${H(n).revise_with??``}`)),G(e,t)};q(l,e=>{H(n)?.revise_with&&e(u)});var d=z(l);A(c),A(t),V(()=>{r.disabled=H(s),K(a,`Send ${H(i).length??``} ${H(i).length===1?`Comment`:`Comments`}`),K(d,`, limited to ${H(o).length??``} ${H(o).length===1?`section`:`sections`}`)}),U(`click`,r,()=>sl.send()),G(e,t)};q(m,e=>{H(i).length&&e(h)});var g=z(m,2),_=e=>{var t=Hd(),n=I(t),r=I(n),i=R(r),o=z(r),l=e=>{var t=Nd(),n=R(z(L(t)));V(()=>K(n,`${H(a).outside.length??``} outside your comments`)),G(e,t)};q(o,e=>{H(a).outside.length&&e(l)});var u=R(z(o,2));A(n);var d=z(n,2),f=e=>{var t=Fd();J(t,20,()=>H(a).outside,e=>e,(e,t)=>{var n=Pd(),r=I(n);$(r,{name:`exclaim`,size:10});var i=z(r);A(n),V(()=>K(i,` ${t??``}`)),G(e,n)}),A(t),G(e,t)};q(d,e=>{H(a).outside.length&&e(f)});var p=z(d,2),m=e=>{var t=Id(),n=R(t);V(e=>K(n,`Tests asked again: ${e??``}`),[()=>H(a).asked_again.join(`, `)]),G(e,t)};q(p,e=>{H(a).asked_again.length&&e(m)});var h=z(p,2),g=e=>{var t=Ld(),n=I(t);$(n,{name:`exclaim`,size:10});var r=z(n);A(t),V(e=>K(r,` Changed beside the revision while it ran (Undo will not overwrite it): ${e??``}`),[()=>H(a).beside.join(`, `)]),G(e,t)};q(h,e=>{H(a).beside.length&&e(g)});var _=z(h,2),v=e=>{var t=Yr();J(L(t),17,()=>H(a).diffs,si,(e,t)=>{var n=Bd();let r;var i=I(n),a=I(i,!0),o=z(a),s=e=>{G(e,Rd())};q(o,e=>{H(t).outside&&e(s)}),A(i);var c=z(i,2);J(c,21,()=>Ac(H(t).before,H(t).after),si,(e,t)=>{var n=zd(),r=R(n,!0);V(()=>{Y(n,1,xi(H(t).kind),`svelte-1q7tlad`),K(r,H(t).text)}),G(e,n)}),A(c),A(n),V(e=>{r=Y(n,1,`sdiff svelte-1q7tlad`,null,r,{out:H(t).outside}),X(n,`aria-label`,`${(H(t).heading||H(t).path)??``}${H(t).outside?`, outside your comments`:``}`),K(a,e)},[()=>H(t).heading||H(t).path.split(`/`).pop()]),G(e,n)}),G(e,t)};q(_,e=>{H(c)&&H(a).diffs.length&&e(v)});var y=z(_,2),b=e=>{var t=Vd(),n=I(t),r=z(n,2);$(I(r),{name:`undo`,size:11}),j(),A(r),A(t),V(()=>{n.disabled=H(s),r.disabled=H(s)}),U(`click`,n,()=>sl.keep(H(a).id)),U(`click`,r,()=>sl.undo()),G(e,t)};q(y,e=>{H(c)&&e(b)}),A(t),V(()=>{K(i,`Revised ${H(a).changed.length??``} ${H(a).changed.length===1?`section`:`sections`}`),K(u,`(${H(a).outcome??``})`)}),G(e,t)};q(g,e=>{H(a)&&e(_)}),V(()=>K(d,`${H(r).length??``} ${H(r).length===1?`comment`:`comments`}`)),U(`click`,f,()=>sl.open=!1),G(e,t)};q(u,e=>{sl.open?e(f,-1):e(d)}),A(t),U(`keydown`,t,l),G(e,t)};q(d,e=>{sl.error?e(f):(H(r).length||H(a))&&e(p,1)}),G(e,u),Ze()}Rr([`keydown`,`click`]);var Kd=/^User Story (\d+)\s*[-–—:]\s*.+?\((Priority:\s*(P\d+))\)/,qd=/^Requirement (\d+)\b/,Jd=/\b(MUST NOT|MUST|SHALL NOT|SHALL|SHOULD NOT|SHOULD|MAY)\b/g,Yd=e=>e.replace(/[&<>"]/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`})[e]??e);function Xd(e,t,n=!1){if(n)return{state:`before`,text:`not run`,title:`The story was ticked before it had an oracle: this scenario was never run`};if(!t||!e)return{state:`pending`,text:`no test yet`,title:`Its test is written before the story's first task`};let r=e.contract?`Holds: ${e.contract}`:``;return e.state===`green`?{state:`green`,text:e.turned_by?`✓ ${e.turned_by}`:`✓ green`,title:[e.turned_by?`Turned green by ${e.turned_by}`:`Green from the start`,r].filter(Boolean).join(`
`)}:e.state===`untested`?{state:`untested`,text:`untested`,title:`Its author could not test it`}:{state:`red`,text:`open`,title:[`Its test fails: a task of the story is to make it pass`,r].filter(Boolean).join(`
`)}}function Zd(e){if(!e)return``;let t=e.scenarios.filter(e=>e.state===`green`).length,n=e.before_oracle?``:e.scenarios.map(t=>`<i class="d ${e.oracle?t.state:`pending`}"></i>`).join(``),r=t===e.scenarios.length,i=e.before_oracle?`ticked before its oracle`:e.proven?`proven`:e.finished&&r?`holds — never seen red`:e.oracle?`${t} of ${e.scenarios.length} green`:`oracle not yet written`;return`<span class="strip" title="${Yd(i)}">${n}<span class="n">${Yd(i)}</span></span>`}function Qd(e){let t=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),n=[];for(let e=t.nextNode();e;e=t.nextNode()){let t=e;t.parentElement?.closest(`code, pre`)||(Jd.lastIndex=0,Jd.test(t.data)&&n.push(t))}for(let e of n){let t=document.createElement(`span`);t.innerHTML=Yd(e.data).replace(Jd,`<span class="kw">$1</span>`),e.replaceWith(...t.childNodes)}}function $d(e){let t=e.innerHTML.trim();return/^<strong>Given<\/strong>/.test(t)?(e.innerHTML=`<span class="steps">${t.split(/(?=<strong>(?:Given|When|Then|And|But)<\/strong>)/).map(e=>`<span class="step">${e.replace(/^<strong>(\w+)<\/strong>/,`<b class="k">$1</b>`)}</span>`).join(``)}</span>`,!0):!1}function ef(e,t){let n=document.createElement(`template`);n.innerHTML=e;let r=n.content,i=new Map(t.map(e=>[e.story,e]));for(let e of Array.from(r.querySelectorAll(`h3`))){let t=e.textContent?.trim()??``,n=Kd.exec(t),r=n?null:qd.exec(t);if(!n&&!r)continue;let a=n?`US${n[1]}`:t,o=i.get(a);n&&(e.innerHTML=e.innerHTML.replace(`(${n[2]})`,`<span class="pri" data-p="${n[3]}">(${n[2]})</span>`));let s=document.createElement(`section`);s.className=`story${o?.proven?` proven`:``}`,s.setAttribute(`aria-label`,n?`User Story ${n[1]}`:t);let c=document.createElement(`div`);c.className=`story-head`,e.before(s);let l=e.nextSibling;for(c.append(e),c.insertAdjacentHTML(`beforeend`,Zd(o)),o?.before_oracle&&c.insertAdjacentHTML(`beforeend`,`<button class="btn small check" type="button" data-check-story="${Yd(a)}" title="speccoder story check ${Yd(a)}">Check This Story</button>`),s.append(c);l&&!(l instanceof HTMLElement&&/^H[1-3]$/.test(l.tagName));){let e=l.nextSibling;s.append(l),l=e}for(let e of Array.from(s.querySelectorAll(`:scope > p`))){let t=e.querySelector(`:scope > strong:first-child`)?.textContent?.trim();if(t===`Independent Test`)e.classList.add(`itest`);else if(t===`Why this priority`)e.classList.add(`why`);else if(t===`Acceptance Scenarios`){e.classList.add(`label`);let t=e.nextElementSibling;if(t?.tagName!==`OL`)continue;t.classList.add(`scenarios`),Array.from(t.children).forEach((e,t)=>{let n=`${a}-${t+1}`,r=Xd(o?.scenarios.find(e=>e.id===n),!!o?.oracle,!!o?.before_oracle);e.classList.add(`scenario`,r.state),$d(e),e.insertAdjacentHTML(`afterbegin`,`<span class="sid">${n}</span>`),e.insertAdjacentHTML(`beforeend`,`<span class="sb" title="${Yd(r.title)}">${Yd(r.text)}</span>`)})}}let u=(r&&Array.from(s.querySelectorAll(`:scope > h4`)).find(e=>/acceptance criteria/i.test(e.textContent??``)))?.nextElementSibling;r&&u?.tagName===`OL`&&(u.classList.add(`scenarios`),Array.from(u.children).forEach((e,t)=>{let n=`${r[1]}.${t+1}`,i=Xd(o?.scenarios.find(e=>e.id===n),!!o?.oracle,!!o?.before_oracle);e.classList.add(`scenario`,i.state),e.innerHTML=`<span class="steps"><span class="step">${e.innerHTML.trim()}</span></span>`,e.insertAdjacentHTML(`afterbegin`,`<span class="sid">${n}</span>`),e.insertAdjacentHTML(`beforeend`,`<span class="sb" title="${Yd(i.title)}">${Yd(i.text)}</span>`)}))}Qd(r);let a=document.createElement(`div`);return a.append(r),a.innerHTML}var tf=W(`<div class="writing svelte-19mjbrq" role="status" aria-live="polite"><span class="spin svelte-19mjbrq" aria-hidden="true"></span> <!> <span class="muted">— questions it asks appear here; closing this view never stops it</span></div>`),nf=W(`<div class="empty muted svelte-19mjbrq">Nothing written yet.</div>`),rf=W(`<span class="count svelte-19mjbrq"> </span>`),af=W(`<button>Review<!></button>`),of=W(`<span> </span>`),sf=W(`<span></span>`),cf=W(`<span class="more svelte-19mjbrq"> </span>`),lf=W(`<span class="reqs svelte-19mjbrq"><!><!></span>`),uf=W(`<li><button class="svelte-19mjbrq"><span class="t svelte-19mjbrq"> </span> <!></button> <!></li>`),df=W(`<ol class="outline svelte-19mjbrq"></ol>`),ff=W(`<button> </button> <!>`,1),pf=W(`<p class="keys svelte-19mjbrq"><kbd class="svelte-19mjbrq">[</kbd> <kbd class="svelte-19mjbrq">]</kbd> previous, next section</p>`),mf=W(`<button class="cbtn svelte-19mjbrq" title="Comment on the selection (c)">Comment <kbd class="svelte-19mjbrq">c</kbd></button>`),hf=W(`<form class="cpop svelte-19mjbrq"><p class="cq muted svelte-19mjbrq"> </p> <textarea rows="3" aria-label="Your comment" class="svelte-19mjbrq"></textarea> <div class="crow svelte-19mjbrq"><button class="btn small primary" type="submit">Add Comment <kbd class="svelte-19mjbrq">⌘↵</kbd></button><button class="btn small ghost" type="button">Cancel</button></div></form>`),gf=W(`<article class="prose svelte-19mjbrq"><!> <div class="bar svelte-19mjbrq" aria-hidden="true"><span class="svelte-19mjbrq"></span></div> <p class="path mono muted svelte-19mjbrq"> </p> <!></article>`),_f=W(`<div class="docs svelte-19mjbrq"><nav aria-label="Documents" class="svelte-19mjbrq"><!> <!> <!></nav> <!></div> <!>`,1),vf=W(`<!> <!> <!> <!>`,1);function yf(e,t){Xe(t,!0);let n=M(()=>Q.documents),r=M(()=>!!Q.report?.data?.review),i=M(()=>H(r)&&Q.doc===`review`),a=M(()=>H(n).find(e=>e.name===Q.doc)??H(n)[0]),o=M(()=>{let e=Q.report?.data?.review;return e?e.open+e.lapsed+e.changes_requested:0}),s={spec:`Spec`,bugfix:`Bugfix`,plan:`Plan`,tasks:`Tasks`,research:`Research`,"data-model":`Data model`,quickstart:`Quickstart`},c=M(()=>new Map((Q.report?.data?.trace??[]).map(e=>[e.requirement,e.task]))),l=M(()=>Oc(H(a)?.html??``)),u=M(()=>H(l).html.replace(/\b((?:FR|SC|NFR)-\d{2,4})\b/g,e=>{let t=H(c).get(e);return`<span class="req ${t?`cited`:`uncited`}" title="${t?`cited by ${t}`:`no task cites it`}">${e}</span>`})),d=M(()=>H(a)?.name===`spec`?ef(H(u),Q.report?.data?.stories??[]):H(u)),f=M(()=>H(l).sections),p=M(()=>{let e=new Map;for(let t of Q.report?.data?.tasks??[]){let n=e.get(t.phase)??{done:0,total:0};n.total++,[`verified`,`regression_only`,`attested`,`ticked_without_evidence`,`skipped`].includes(t.state)&&n.done++,e.set(t.phase,n)}return e}),m=e=>H(a)?.name===`tasks`?H(p).get(e.text):void 0,h=N(void 0),g=N(null),_=N(0);B(()=>{H(d);let e=H(h)?.closest(`main`);if(!e||!H(h))return;let t=Array.from(H(h).querySelectorAll(`h2[id], h3[id]`)),n=()=>{let n=e.getBoundingClientRect().top+90,r=t[0]?.id??null;for(let e of t)e.getBoundingClientRect().top<=n&&(r=e.id);P(g,r,!0);let i=e.scrollHeight-e.clientHeight;P(_,i>0?Math.min(1,e.scrollTop/i):1,!0)};return n(),e.addEventListener(`scroll`,n,{passive:!0}),()=>e.removeEventListener(`scroll`,n)});let v=``;B(()=>{let e=Q.section,t=`${H(a)?.name}#${e}`;e&&H(d)&&t!==v&&H(h)?.querySelector(`#${CSS.escape(e)}`)&&(v=t,requestAnimationFrame(()=>H(h)?.querySelector(`#${CSS.escape(e)}`)?.scrollIntoView({block:`start`})))});function y(e){Q.section=e,v=`${H(a)?.name}#${e}`;let t=!matchMedia(`(prefers-reduced-motion: reduce)`).matches;H(h)?.querySelector(`#${CSS.escape(e)}`)?.scrollIntoView({block:`start`,behavior:t?`smooth`:`auto`})}function b(e){Q.doc=e,Q.section=null,H(h)?.closest(`main`)?.scrollTo({top:0})}let x=N(null),S=N(!1),C=N(``);function w(){let e=window.getSelection(),t=e?.toString().trim()??``;if(!e||!t||!H(h)||!e.rangeCount||!H(h).contains(e.anchorNode)){H(S)||P(x,null);return}let n=e.getRangeAt(0).getBoundingClientRect(),r=H(h).getBoundingClientRect();P(x,{text:t,x:n.right-r.left,y:n.bottom-r.top+6},!0)}async function T(){if(!H(x)||!H(C).trim()||!H(a))return;let e=await ba(`/api/file${Sa({feature:Q.feature??void 0,path:H(a).path})}`).catch(()=>({error:`unreadable`})),t=e.text?il(H(a).path,e.text,H(x).text):null;t?(await sl.add(t,H(C).trim()),P(S,!1),P(x,null),P(C,``),window.getSelection()?.removeAllRanges()):Q.toast({tone:`warn`,text:`That selection is not one passage of the document`,detail:e.error})}B(()=>{H(d);let e=(sl.view?.drafts??[]).filter(e=>e.anchor.kind===`passage`&&e.anchor.path===H(a)?.path);if(H(h)){for(let e of H(h).querySelectorAll(`mark.cmark`))e.replaceWith(...e.childNodes);for(let t of e){if(t.anchor.kind!==`passage`)continue;let e=tl(t.anchor.quote.split(`
`)[0]??``).slice(0,60);if(e.length<4)continue;let n=document.createTreeWalker(H(h),NodeFilter.SHOW_TEXT);for(let r=n.nextNode();r;r=n.nextNode()){let n=r,i=n.data.indexOf(e.slice(0,Math.min(e.length,n.data.length)));if(i<0||!n.data.trim()||e.slice(0,12)!==n.data.slice(i,i+12))continue;let a=document.createRange();a.setStart(n,i),a.setEnd(n,Math.min(n.data.length,i+e.length));let o=document.createElement(`mark`);o.className=`cmark`,o.title=`${t.id}: ${t.text}`,a.surroundContents(o);break}}}}),B(()=>{H(d);let e=$c(sl.view?.turn,H(a)?.path??``);if(H(h))for(let t of H(h).querySelectorAll(`h1, h2, h3, h4`)){let n=e.get(t.textContent?.trim()??``);t.classList.toggle(`rev-in`,n===!1),t.classList.toggle(`rev-out`,n===!0),n===void 0?t.removeAttribute(`title`):t.title=n?`Revised outside your comments`:`Revised from your comments`}});function E(e){let t=(e.target?.closest(`button[data-check-story]`))?.dataset.checkStory;t&&!Q.job?.running&&Q.perform(ja({kind:`check_story`,story:t},{group:`work`,label:`check ${t}`,why:`its acceptance tests written and run on the feature's branch`,command:`speccoder story check ${t}`}))}function ee(e){if(e.key===`c`&&!e.metaKey&&!e.ctrlKey&&H(x)&&!H(S)&&!e.target?.closest(`input, textarea, select`)){e.preventDefault(),P(S,!0);return}if(e.target?.closest(`input, textarea, select`)||H(i)||!H(f).length||e.key!==`[`&&e.key!==`]`)return;e.preventDefault();let t=H(f).findIndex(e=>e.id===H(g)),n=H(f)[Math.max(0,Math.min(H(f).length-1,t+(e.key===`]`?1:-1)))];n&&y(n.id)}var D=vf();Lr(`keydown`,on,ee);var O=L(D),k=e=>{var t=tf(),n=z(I(t)),r=z(n),i=e=>{var t=Jr();V(e=>K(t,`· ${e??``}`),[()=>Q.stages.at(-1)?.stage]),G(e,t)};q(r,e=>{Q.stages.length&&e(i)}),j(2),A(t),V(()=>K(n,` writing… ${Q.task?.id??`the spec`??``}`)),G(e,t)};q(O,e=>{Q.job?.running&&Q.following&&e(k)});var te=z(O,2),ne=e=>{Td(e,{get chain(){return Q.chain}})};q(te,e=>{!Q.chain||Q.job?.running||Q.chain.unit&&Q.chain.unit!==Q.feature||e(ne)});var re=z(te,2),ie=e=>{_d(e,{})};q(re,e=>{H(n).length>0&&e(ie)});var ae=z(re,2),oe=e=>{G(e,nf())},se=e=>{var t=_f(),l=L(t),u=I(l),p=I(u),v=e=>{var t=af();let n;var r=z(I(t)),a=e=>{var t=rf(),n=R(t,!0);V(()=>K(n,H(o))),G(e,t)};q(r,e=>{H(o)&&e(a)}),A(t),V(()=>n=Y(t,1,`doc svelte-19mjbrq`,null,n,{on:H(i)})),U(`click`,t,()=>Q.doc=`review`),G(e,t)};q(p,e=>{H(r)&&e(v)});var ee=z(p,2);J(ee,17,()=>H(n),e=>e.name,(e,t)=>{let n=M(()=>!H(i)&&H(a)?.name===H(t).name);var r=ff(),o=L(r);let l;var u=R(o,!0),d=z(o,2),p=e=>{var n=df();J(n,21,()=>H(f),e=>e.id,(e,t)=>{let n=M(()=>m(H(t)));var r=uf();let i;var a=I(r),o=I(a),s=R(o,!0),l=z(o,2),u=e=>{var t=of();let r;var i=R(t);V(()=>{r=Y(t,1,`phase svelte-19mjbrq`,null,r,{done:H(n).done===H(n).total}),K(i,`${H(n).done??``}/${H(n).total??``}`)}),G(e,t)};q(l,e=>{H(n)&&e(u)}),A(a);var d=z(a,2),f=e=>{var n=lf(),r=I(n);J(r,16,()=>H(t).reqs.slice(0,8),e=>e,(e,t)=>{var n=sf();let r;V((e,i)=>{r=Y(n,1,`dot svelte-19mjbrq`,null,r,{cited:e}),X(n,`title`,`${t??``} — ${i??``}`)},[()=>H(c).get(t),()=>H(c).get(t)?`cited by ${H(c).get(t)}`:`no task cites it`]),G(e,n)});var i=z(r),a=e=>{var n=cf(),r=R(n);V(()=>K(r,`+${H(t).reqs.length-8}`)),G(e,n)};q(i,e=>{H(t).reqs.length>8&&e(a)}),A(n),G(e,n)};q(d,e=>{H(t).reqs.length&&e(f)}),A(r),V(e=>{i=Y(r,1,`l${H(t).level??``}`,`svelte-19mjbrq`,i,{at:H(g)===H(t).id}),X(a,`title`,H(t).text),K(s,e)},[()=>H(t).text.replace(/^Phase \d+:\s*/,``)]),U(`click`,a,()=>y(H(t).id)),G(e,r)}),A(n),V(()=>X(n,`aria-label`,`${s[H(t).name]??H(t).name??``} outline`)),G(e,n)};q(d,e=>{H(n)&&H(f).length&&e(p)}),V(()=>{l=Y(o,1,`doc svelte-19mjbrq`,null,l,{on:H(n)}),X(o,`aria-current`,H(n)?`page`:void 0),K(u,s[H(t).name]??H(t).name)}),U(`click`,o,()=>b(H(t).name)),G(e,r)});var D=z(ee,2),O=e=>{G(e,pf())};q(D,e=>{!H(i)&&H(f).length>1&&e(O)}),A(u);var k=z(u,2),te=e=>{Wu(e,{})},ne=e=>{var t=gf(),n=I(t),r=e=>{var t=mf();V(()=>Oi(t,`left:${H(x).x??``}px;top:${H(x).y??``}px`)),U(`click`,t,()=>P(S,!0)),G(e,t)},i=e=>{var t=hf(),n=I(t),r=R(n),i=z(n,2);lt(i),ct(i,!0);var a=z(i,2),o=I(a),s=z(o);A(a),A(t),V((e,n,i)=>{Oi(t,`left:${e??``}px;top:${H(x).y??``}px`),K(r,`“${n??``}${H(x).text.length>120?`…`:``}”`),o.disabled=i},[()=>Math.max(0,H(x).x-260),()=>H(x).text.slice(0,120),()=>!H(C).trim()]),Lr(`submit`,t,e=>{e.preventDefault(),T()}),U(`keydown`,i,e=>{e.key===`Escape`&&(P(S,!1),P(x,null)),e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),T())}),$i(i,()=>H(C),e=>P(C,e)),U(`click`,s,()=>{P(S,!1),P(x,null)}),G(e,t)};q(n,e=>{H(x)&&!H(S)?e(r):H(x)&&H(S)&&e(i,1)});var o=z(n,2),s=R(o),c=z(o,2),l=R(c,!0);gi(z(c,2),()=>H(d)),A(t),sa(t,e=>P(h,e),()=>H(h)),_i(t,(e,t)=>Ls?.(e,t),()=>H(d)),V(()=>{Oi(s,`width:${H(_)*100}%`),K(l,H(a)?.path)}),U(`mouseup`,t,w),U(`keyup`,t,w),U(`click`,t,E),G(e,t)};q(k,e=>{H(i)?e(te):e(ne,-1)}),A(l),Gd(z(l,2),{}),G(e,t)};q(ae,e=>{H(n).length===0?e(oe):e(se,-1)}),G(e,D),Ze()}Rr([`click`,`mouseup`,`keyup`,`keydown`]);var bf=W(`<span class="muted svelte-1dvsnek"> </span>`),xf=W(`<p class="muted">Nothing spent yet: no attempt has called the model.</p>`),Sf=W(`<div class="lost svelte-1dvsnek" title="Saved attempts that never ticked: part of the total"><span class="big svelte-1dvsnek"> </span><span class="lab svelte-1dvsnek"> </span></div>`),Cf=W(`<li class="svelte-1dvsnek"><button class="task mono svelte-1dvsnek"> </button> <span class="bar svelte-1dvsnek" aria-hidden="true"><span class="svelte-1dvsnek"></span></span> <span class="num svelte-1dvsnek"> </span> <span class="num money svelte-1dvsnek"> </span> <span class="att svelte-1dvsnek"> </span></li>`),wf=W(`<p class="ask muted svelte-1dvsnek"><!> <span class="svelte-1dvsnek">— its own budget, not in the total</span></p>`),Tf=W(`<p class="hint muted svelte-1dvsnek">Set prices in <button class="link svelte-1dvsnek">Settings › Model</button> to see money, not only tokens.</p>`),Ef=W(`<div class="totals svelte-1dvsnek"><div class="svelte-1dvsnek"><span class="big svelte-1dvsnek"> </span><span class="lab svelte-1dvsnek"> </span></div> <div class="svelte-1dvsnek"><span class="big svelte-1dvsnek"> </span><span class="lab svelte-1dvsnek">in</span></div> <div class="svelte-1dvsnek"><span class="big svelte-1dvsnek"> </span><span class="lab svelte-1dvsnek">out</span></div> <div class="svelte-1dvsnek"><span class="big svelte-1dvsnek"> </span><span class="lab svelte-1dvsnek">of input from the cache</span></div> <div class="svelte-1dvsnek"><span class="big svelte-1dvsnek"> </span><span class="lab svelte-1dvsnek">attempts</span></div> <!></div> <ul class="rows svelte-1dvsnek"></ul> <!> <!>`,1),Df=W(`<section class="card wide spend svelte-1dvsnek"><h3 class="svelte-1dvsnek"><!> Spend <!></h3> <!></section>`);function Of(e,t){Xe(t,!0);let n=N(null),r=wa();B(()=>{Q.report;let e=Q.feature??void 0;r(ba(`/api/cost${Sa({feature:e})}`),e=>P(n,e.data??null,!0),()=>P(n,null))});let i=M(()=>H(n)?.total.usd!=null),a=e=>H(i)?e.usd??0:e.input_tokens+e.output_tokens,o=M(()=>[...H(n)?.tasks??[]].filter(e=>e.usage.input_tokens||e.usage.output_tokens).sort((e,t)=>a(t.usage)-a(e.usage))),s=M(()=>Math.max(1e-9,...H(o).map(e=>a(e.usage)))),c=M(()=>H(n)?a(H(n).not_kept):0),l=M(()=>H(n)&&H(n).total.input_tokens?Math.round(H(n).total.cache_read_tokens/H(n).total.input_tokens*100):0);var u=Df(),d=I(u),f=I(d);$(f,{name:`dollar`,size:15,weight:2});var p=z(f,2),m=e=>{var t=bf(),r=R(t);V(()=>K(r,`priced as ${H(n).priced_model??``}`)),G(e,t)};q(p,e=>{H(n)?.priced_model&&e(m)}),A(d);var h=z(d,2),g=e=>{G(e,xf())},_=e=>{var t=Ef(),r=L(t),u=I(r),d=I(u),f=R(d,!0),p=R(z(d),!0);A(u);var m=z(u,2),h=R(I(m),!0);j(),A(m);var g=z(m,2),_=R(I(g),!0);j(),A(g);var v=z(g,2),y=R(I(v));j(),A(v);var b=z(v,2),x=R(I(b),!0);j(),A(b);var S=z(b,2),C=e=>{var t=Sf(),r=I(t),o=R(r,!0),s=R(z(r));A(t),V((e,t)=>{K(o,e),K(s,`on attempts not kept · ${t??``}%`)},[()=>H(i)?Ao(H(n).not_kept.usd):ko(H(n).not_kept.input_tokens+H(n).not_kept.output_tokens),()=>Math.round(H(c)/Math.max(1e-9,a(H(n).total))*100)]),G(e,t)};q(S,e=>{H(c)>0&&H(n)&&e(C)}),A(r);var w=z(r,2);J(w,21,()=>H(o),e=>e.task,(e,t)=>{var n=Cf(),r=I(n),o=R(r,!0),c=z(r,2),l=R(c),u=z(c,2),d=R(u),f=z(u,2),p=R(f,!0),m=R(z(f,2));A(n),V((e,n,r,i)=>{K(o,H(t).task),Oi(l,`width:${e??``}%`),K(d,`${n??``} in · ${r??``} out`),K(p,i),K(m,`${H(t).attempts??``} ${H(t).attempts===1?`attempt`:`attempts`}`)},[()=>a(H(t).usage)/H(s)*100,()=>ko(H(t).usage.input_tokens),()=>ko(H(t).usage.output_tokens),()=>H(i)?Ao(H(t).usage.usd):``]),U(`click`,r,()=>{Q.view=`board`,Q.selectTask(H(t).task)}),G(e,n)}),A(w);var T=z(w,2),E=e=>{var t=wf(),r=I(t);$(r,{name:`bubble`,size:12});var a=z(r);j(),A(t),V((e,t,n)=>K(a,` Ask · ${e??``} in · ${t??``} out${n??``} `),[()=>ko(H(n).ask.input_tokens),()=>ko(H(n).ask.output_tokens),()=>H(i)?` · ${Ao(H(n).ask.usd)}`:``]),G(e,t)};q(T,e=>{(H(n).ask.input_tokens||H(n).ask.output_tokens)&&e(E)});var ee=z(T,2),D=e=>{var t=Tf(),n=z(I(t));j(),A(t),U(`click`,n,()=>Q.view=`settings`),G(e,t)};q(ee,e=>{H(i)||e(D)}),V((e,t,n,r)=>{K(f,e),K(p,H(i)?`total`:`tokens`),K(h,t),K(_,n),K(y,`${H(l)??``}%`),K(x,r)},[()=>H(i)?Ao(H(n).total.usd):ko(H(n).total.input_tokens+H(n).total.output_tokens),()=>ko(H(n).total.input_tokens),()=>ko(H(n).total.output_tokens),()=>H(o).reduce((e,t)=>e+t.attempts,0)]),G(e,t)};q(h,e=>{!H(n)||!H(n).total.input_tokens&&!H(n).total.output_tokens?e(g):e(_,-1)}),A(u),G(e,u),Ze()}Rr([`click`]);var kf=W(`<button class="choice primary-choice svelte-1y498ni"><span class="ci svelte-1y498ni"><!></span> <span class="cw svelte-1y498ni"><strong>Continue with GitHub</strong><span class="svelte-1y498ni">Approve speccoder on GitHub with a short code — only the permissions it needs, on the repositories you choose.</span></span> <!></button> <button class="choice svelte-1y498ni"><span class="ci svelte-1y498ni"><!></span> <span class="cw svelte-1y498ni"><strong>Use a Token</strong><span class="svelte-1y498ni">Paste a fine-grained personal access token you created.</span></span> <!></button> <p class="cli mono svelte-1y498ni">$ speccoder auth login</p>`,1),Af=W(`<div class="code-box svelte-1y498ni"><span class="label svelte-1y498ni">Your code</span> <span class="code mono svelte-1y498ni" aria-live="polite"> </span> <button class="btn small ghost"><!> </button></div> <a class="btn primary go svelte-1y498ni" target="_blank" rel="noopener noreferrer">Open GitHub and Enter the Code</a> <p class="wait svelte-1y498ni"><span class="spin svelte-1y498ni" aria-hidden="true"></span> Waiting for you to approve speccoder on GitHub…</p>`,1),jf=W(`<p class="wait svelte-1y498ni"><span class="spin svelte-1y498ni" aria-hidden="true"></span> Asking GitHub for a code…</p>`),Mf=W(`<p class="bad svelte-1y498ni"><!> </p>`),Nf=W(`<!> <!> <div class="row svelte-1y498ni"><button class="btn">Back</button></div>`,1),Pf=W(`<form class="inner svelte-1y498ni"><ol class="steps svelte-1y498ni"><li><a target="_blank" rel="noopener noreferrer" class="svelte-1y498ni"> </a> for this repository: <strong>Issues</strong> and <strong>Pull requests: read and write</strong>; <strong>Contents</strong>, <strong>Metadata</strong>, <strong>Checks</strong>, <strong>Commit statuses: read</strong>.</li> <li>Paste it here.</li></ol> <input type="password" autocomplete="off" spellcheck="false" placeholder="github_pat_…" aria-label="Token" class="svelte-1y498ni"/> <!> <p class="cli mono svelte-1y498ni">$ speccoder auth login --with-token &lt; token.txt</p> <div class="row svelte-1y498ni"><button type="button" class="btn">Back</button> <button type="submit" class="btn primary"> </button></div></form>`),Ff=W(`<div class="scrim svelte-1y498ni" role="presentation"><div class="sheet glass svelte-1y498ni" role="dialog" aria-modal="true" aria-labelledby="si-title"><header class="svelte-1y498ni"><span class="badge svelte-1y498ni" aria-hidden="true"><svg width="22" height="22" viewBox="0 0 16 16"><path fill="currentColor" d="M8 0a8 8 0 0 0-2.5 15.6c.4 0 .5-.2.5-.4v-1.5c-2.2.5-2.7-1-2.7-1-.4-.9-.9-1.2-.9-1.2-.7-.5.1-.5.1-.5.8.1 1.2.8 1.2.8.7 1.3 1.9.9 2.4.7 0-.5.3-.9.5-1.1-1.8-.2-3.6-.9-3.6-4 0-.9.3-1.6.8-2.1-.1-.2-.4-1 .1-2.1 0 0 .7-.2 2.2.8a7.5 7.5 0 0 1 4 0c1.5-1 2.2-.8 2.2-.8.4 1.1.2 1.9.1 2.1.5.6.8 1.3.8 2.1 0 3.1-1.9 3.7-3.6 3.9.3.3.6.8.6 1.5v2.2c0 .2.1.5.6.4A8 8 0 0 0 8 0z"></path></svg></span> <div><h2 id="si-title" class="svelte-1y498ni">Sign In to GitHub</h2> <p class="svelte-1y498ni">speccoder reads issues and opens draft pull requests as you. Your token goes to the system keychain — never into a file.</p></div></header> <!></div></div>`);function If(e,t){Xe(t,!0);let n=N(`choose`),r=N(null),i=N(``),a=N(!1),o=N(null),s=N(!1),c=M(()=>`https://${t.host}/settings/personal-access-tokens/new`);function l(e){e.status===`ok`?(Q.toast({tone:e.message.includes(`install the`)?`warn`:`ok`,text:`Signed in to ${t.host}`,detail:e.message}),t.onclose(),Q.refresh()):P(o,e.message,!0)}async function u(){P(n,`code`),P(o,null),P(a,!0);try{let e=await xa(`/api/github/device`,{});if(e.error||!e.user_code||!e.verification_uri){P(o,e.error??`GitHub did not start the sign-in`,!0);return}P(r,{user_code:e.user_code,verification_uri:e.verification_uri},!0),P(s,await navigator.clipboard?.writeText(e.user_code).then(()=>!0,()=>!1)??!1,!0),l(await xa(`/api/github/device/wait`,{}))}catch(e){P(o,String(e.message??e),!0)}finally{P(a,!1)}}async function d(e){e.preventDefault(),P(a,!0),P(o,null);try{let e=await xa(`/api/github/login`,{token:H(i)});P(i,``),l(e)}catch(e){P(o,String(e.message??e),!0)}finally{P(a,!1)}}let f=async()=>{H(r)&&P(s,await navigator.clipboard?.writeText(H(r).user_code).then(()=>!0,()=>!1)??!1,!0)};var p=Ff();Lr(`keydown`,on,e=>e.key===`Escape`&&t.onclose());var m=I(p),h=z(I(m),2),g=e=>{var t=kf(),r=L(t),i=I(r);$(I(i),{name:`key`,size:16,weight:2.2}),A(i),$(z(i,4),{name:`chevron`,size:11,weight:2.6}),A(r);var a=z(r,2),o=I(a);$(I(o),{name:`lock`,size:16,weight:2}),A(o),$(z(o,4),{name:`chevron`,size:11,weight:2.6}),A(a),j(2),U(`click`,r,u),U(`click`,a,()=>P(n,`token`)),G(e,t)},_=e=>{var t=Nf(),i=L(t),c=e=>{var t=Af(),n=L(t),i=z(I(n),2),a=R(i,!0),o=z(i,2),c=I(o);{let e=M(()=>H(s)?`check`:`copy`);$(c,{get name(){return H(e)},size:11,weight:2.4})}var l=z(c);A(o),A(n);var u=z(n,2);j(2),V(()=>{K(a,H(r).user_code),K(l,` ${H(s)?`Copied`:`Copy`}`),X(u,`href`,H(r).verification_uri)}),U(`click`,o,f),G(e,t)},l=e=>{G(e,jf())};q(i,e=>{H(r)?e(c):H(a)&&e(l,1)});var u=z(i,2),d=e=>{var t=Mf(),n=I(t);$(n,{name:`exclaim`,size:13});var r=z(n);A(t),V(()=>K(r,` ${H(o)??``}`)),G(e,t)};q(u,e=>{H(o)&&e(d)}),U(`click`,R(z(u,2)),()=>{P(n,`choose`),P(o,null)}),G(e,t)},v=e=>{var r=Pf(),s=I(r),l=I(s),u=I(l),f=R(u);j(13),A(l),j(2),A(s);var p=z(s,2);Gi(p),ct(p,!0);var m=z(p,2),h=e=>{var t=Mf(),n=I(t);$(n,{name:`exclaim`,size:13});var r=z(n);A(t),V(()=>K(r,` ${H(o)??``}`)),G(e,t)};q(m,e=>{H(o)&&e(h)});var g=z(m,4),_=I(g),v=z(_,2),y=R(v,!0);A(g),A(r),V(e=>{X(u,`href`,H(c)),K(f,`Create a fine-grained token on ${t.host??``}`),v.disabled=e,K(y,H(a)?`Checking…`:`Sign In`)},[()=>H(a)||!H(i).trim()]),Lr(`submit`,r,d),$i(p,()=>H(i),e=>P(i,e)),U(`click`,_,()=>{P(n,`choose`),P(o,null)}),G(e,r)};q(h,e=>{H(n)===`choose`?e(g):H(n)===`code`?e(_,1):e(v,-1)}),A(m),A(p),U(`click`,p,e=>e.target===e.currentTarget&&t.onclose()),G(e,p),Ze()}Rr([`click`]);var Lf=e=>ba(`/api/github${Sa({feature:e??void 0})}`),Rf=W(`<a class="repo svelte-1j3e26h" target="_blank" rel="noopener noreferrer"> </a>`),zf=W(`<span class="as svelte-1j3e26h"> </span>`),Bf=W(`<div class="grouped empty svelte-1j3e26h"><span class="spinner svelte-1j3e26h"></span></div>`),Vf=W(`<button class="btn small primary"><!> Sign In</button>`),Hf=W(`<button class="fix mono svelte-1j3e26h"> </button>`),Uf=W(`<div class="grouped off svelte-1j3e26h"><span class="w svelte-1j3e26h"><strong> </strong><span class="d svelte-1j3e26h"><!></span></span> <!></div> <!>`,1),Wf=W(`<div class="grouped off svelte-1j3e26h"><span class="w svelte-1j3e26h"><strong>Issues could not be read</strong><span class="d svelte-1j3e26h"> </span></span></div>`),Gf=W(`<div class="grouped off svelte-1j3e26h"><span class="w svelte-1j3e26h"><strong>No open issues</strong><span class="d svelte-1j3e26h">Start a feature from an idea instead — the next step writes its spec.</span></span></div>`),Kf=W(`<span class="mine svelte-1j3e26h">assigned to you</span>`),qf=W(`<span class="label svelte-1j3e26h"> </span>`),Jf=W(`<span class="acts svelte-1j3e26h"><button class="btn small ghost"><!> Comment</button> <button class="btn small"><!> </button></span>`),Yf=W(`<button class="btn small"><!> Fix as Bug</button>`),Xf=W(`<span class="spin svelte-1j3e26h"></span>`),Zf=W(`<!> <button class="btn small tinted"><!> Start Feature</button>`,1),Qf=W(`<li class="svelte-1j3e26h"><span class="num mono svelte-1j3e26h"> </span> <span class="w svelte-1j3e26h"><a class="t svelte-1j3e26h" target="_blank" rel="noopener noreferrer"> </a> <span class="meta svelte-1j3e26h"><!> <!> <span class="d svelte-1j3e26h"> </span></span></span> <!></li>`),$f=W(`<ul class="grouped svelte-1j3e26h"></ul>`),ep=W(`<section class="gh svelte-1j3e26h" id="github" tabindex="-1" aria-label="GitHub issues"><h2 class="section-title svelte-1j3e26h"><svg width="14" height="14" viewBox="0 0 16 16" aria-hidden="true"><path fill="currentColor" d="M8 0a8 8 0 0 0-2.5 15.6c.4 0 .5-.2.5-.4v-1.5c-2.2.5-2.7-1-2.7-1-.4-.9-.9-1.2-.9-1.2-.7-.5.1-.5.1-.5.8.1 1.2.8 1.2.8.7 1.3 1.9.9 2.4.7 0-.5.3-.9.5-1.1-1.8-.2-3.6-.9-3.6-4 0-.9.3-1.6.8-2.1-.1-.2-.4-1 .1-2.1 0 0 .7-.2 2.2.8a7.5 7.5 0 0 1 4 0c1.5-1 2.2-.8 2.2-.8.4 1.1.2 1.9.1 2.1.5.6.8 1.3.8 2.1 0 3.1-1.9 3.7-3.6 3.9.3.3.6.8.6 1.5v2.2c0 .2.1.5.6.4A8 8 0 0 0 8 0z"></path></svg> GitHub <!><!></h2> <!></section>`);function tp(e,t){Xe(t,!0);let n=N(!1),r=N(null),i=N(null),a=wa();B(()=>{Q.report,a(Lf(Q.feature),e=>P(r,e,!0),()=>P(r,null))});async function o(e){P(i,e,!0);try{let t=await ba(`/api/github/issue${Sa({number:String(e)})}`);if(t.error||!t.description||!t.skill){Q.toast({tone:`error`,text:`Issue #${e} could not be read`,detail:t.error??`no skill creates a feature here`});return}let n=H(r)?.issues?.issues.find(t=>t.number===e)?.title??`#${e}`;Q.newFeature={text:t.description,source:{kind:`issue`,number:e,title:n},through:`tasks`}}finally{P(i,null)}}async function s(e,t){Q.feature!==t&&await Q.selectFeature(t);let n=ja({kind:`issue_comment`,issue:e,assign:!1},{group:`plan`,label:`comment on #${e}`,why:`the issue shows it is being specified; once per feature`,command:`speccoder issue comment ${e} --feature ${t}`,confirm:`Comment on #${e}, as you, that it is being specified as ${t} — with the spec's path and its branch. Said once: a second time changes nothing.`});await Q.perform(n)}let c=e=>{navigator.clipboard?.writeText(e),Q.toast({tone:`ok`,text:`Copied`,detail:e})},l=e=>{if(!e)return``;let t=Math.round((Date.now()-new Date(e).getTime())/864e5);return t<=0?`today`:t===1?`yesterday`:`${t} days ago`};var u=ep(),d=I(u),f=z(I(d),2),p=e=>{var t=Rf(),n=R(t,!0);V(()=>{X(t,`href`,H(r).status.url),K(n,H(r).status.repo)}),G(e,t)};q(f,e=>{H(r)?.status.repo&&e(p)});var m=z(f),h=e=>{var t=zf(),n=R(t);V(()=>K(n,`as ${H(r).status.login??``}`)),G(e,t)};q(m,e=>{H(r)?.status.login&&e(h)}),A(d);var g=z(d,2),_=e=>{G(e,Bf())},v=e=>{var t=Uf(),i=L(t),a=I(i),o=I(a),s=R(o,!0),l=z(o),u=I(l);{let e=M(()=>H(r).status.reason??``);so(u,{get text(){return H(e)}})}A(l),A(a);var d=z(a,2),f=e=>{var t=Vf();$(I(t),{name:`key`,size:11,weight:2.2}),j(),A(t),U(`click`,t,()=>P(n,!0)),G(e,t)},p=M(()=>H(r).status.fix?.startsWith(`speccoder auth`)&&H(r).status.host),m=e=>{var t=Hf(),n=R(t,!0);V(()=>K(n,H(r).status.fix)),U(`click`,t,()=>c(H(r)?.status.fix??``)),G(e,t)};q(d,e=>{H(p)?e(f):H(r).status.fix&&e(m,1)}),A(i);var h=z(i,2),g=e=>{If(e,{get host(){return H(r).status.host},onclose:()=>P(n,!1)})};q(h,e=>{H(n)&&H(r).status.host&&e(g)}),V(e=>K(s,e),[()=>H(r).status.host?H(r).status.fix?.startsWith(`speccoder auth`)?`Not signed in to ${H(r).status.host}`:`${H(r).status.host} is not reachable`:`No GitHub remote`]),G(e,t)},y=e=>{var t=Wf(),n=I(t),i=R(z(I(n)),!0);A(n),A(t),V(()=>K(i,H(r).issues_error)),G(e,t)},b=e=>{G(e,Gf())},x=e=>{var t=$f();J(t,21,()=>H(r).issues.issues.slice(0,12),e=>e.number,(e,t)=>{var n=Qf(),r=I(n),a=R(r),c=z(r,2),u=I(c),d=R(u,!0),f=z(u,2),p=I(f),m=e=>{G(e,Kf())};q(p,e=>{H(t).mine&&e(m)});var h=z(p,2);J(h,17,()=>H(t).labels.slice(0,3),si,(e,t)=>{var n=qf(),r=R(n,!0);V(()=>K(r,H(t))),G(e,n)});var g=R(z(h,2),!0);A(f),A(c);var _=z(c,2),v=e=>{var n=Jf(),r=I(n);$(I(r),{name:`sparkle`,size:10,weight:2.2}),j(),A(r);var i=z(r,2),a=I(i);$(a,{name:`chevron`,size:10,weight:2.6});var o=z(a);A(i),A(n),V(e=>{r.disabled=!!Q.job?.running,X(r,`title`,`Tell #${H(t).number??``} it is being specified as ${H(t).feature??``} (asked first; once per feature)`),K(o,` ${e??``}`)},[()=>H(t).feature.replace(/^\d+-/,``)]),U(`click`,r,()=>s(H(t).number,H(t).feature)),U(`click`,i,()=>{Q.selectFeature(H(t).feature),Q.view=`board`}),G(e,n)},y=e=>{var n=Zf(),r=L(n),a=e=>{var n=Yf();$(I(n),{name:`exclaim`,size:10,weight:2.2}),j(),A(n),V(()=>{n.disabled=!!Q.job?.running,X(n,`title`,`Reproduce and fix it as a bug ($ speccoder bug … --issue ${H(t).number??``}); the issue is context, your words are the triad`)}),U(`click`,n,()=>Q.bugSheet={symptom:H(t).title,issue:H(t).number}),G(e,n)},s=M(()=>H(t).labels.includes(`bug`));q(r,e=>{H(s)&&e(a)});var c=z(r,2),l=I(c),u=e=>{G(e,Xf())},d=e=>{$(e,{name:`sparkle`,size:11,weight:2.2})};q(l,e=>{H(i)===H(t).number?e(u):e(d,-1)}),j(),A(c),V(()=>{c.disabled=!!Q.job?.running||H(i)!==null,X(c,`title`,`Spec Kit's specify, with the issue as the description ($ speccoder issue start ${H(t).number??``})`)}),U(`click`,c,()=>o(H(t).number)),G(e,n)};q(_,e=>{H(t).feature?e(v):e(y,-1)}),A(n),V(e=>{K(a,`#${H(t).number??``}`),X(u,`href`,H(t).url),K(d,H(t).title),K(g,e)},[()=>l(H(t).updated)]),G(e,n)}),A(t),G(e,t)};q(g,e=>{H(r)?H(r).status.ready?H(r).issues_error?e(y,2):H(r).issues?.issues.length?e(x,-1):e(b,3):e(v,1):e(_)}),A(u),G(e,u),Ze()}Rr([`click`]);var np=W(`<p class="muted">Asking GitHub…</p>`),rp=W(`<p class="muted"> <code>speccoder pr --dry-run</code> still shows what would be opened.</p>`),ip=W(`<span> </span>`),ap=W(`<span class="no svelte-108wngb"><!> </span>`),op=W(`<span class="run svelte-108wngb"> </span>`),sp=W(`<span class="checks svelte-108wngb" title="GitHub's checks: passed, failed, running"><span class="ok svelte-108wngb"><!> </span> <!> <!></span>`),cp=W(`<button class="btn small svelte-108wngb" title="Push new ticks to the pull request"><!> Update</button>`),lp=W(`<div class="pr svelte-108wngb"><span> </span> <a class="title svelte-108wngb" target="_blank" rel="noopener noreferrer"> </a> <span class="facts svelte-108wngb"><!> <!></span> <!></div>`),up=W(`<button class="btn small primary svelte-108wngb"><!> Open Draft PR</button>`),dp=W(`<div class="none svelte-108wngb"><p class="muted svelte-108wngb">No pull request for <code> </code> yet.<!></p> <!></div>`),fp=W(`<!><a target="_blank" rel="noopener noreferrer" class="svelte-108wngb"> </a>`,1),pp=W(`<p class="muted small svelte-108wngb">Closes <!></p>`),mp=W(`<section class="card wide pull svelte-108wngb"><h3 class="svelte-108wngb"><!> Pull Request</h3> <!> <!></section>`);function hp(e,t){Xe(t,!0);let n=N(null),r=wa();B(()=>{Q.report,Q.job?.running,r(Lf(Q.feature),e=>P(n,e,!0),()=>P(n,null))});let i=M(()=>Q.actions.find(e=>e.run?.kind===`pull_request`)),a=M(()=>H(n)?.pull??null),o=M(()=>Q.report?.data?.issues??[]),s=M(()=>H(a)?H(a).state===`MERGED`?`Merged`:H(a).state===`CLOSED`?`Closed`:H(a).draft?`Draft`:`Open`:``),c={APPROVED:`Approved`,CHANGES_REQUESTED:`Changes requested`,REVIEW_REQUIRED:`Review required`};var l=mp(),u=I(l);$(I(u),{name:`branch`,size:15,weight:2}),j(),A(u);var d=z(u,2),f=e=>{G(e,np())},p=e=>{var t=rp(),r=I(t);j(2),A(t),V(()=>K(r,`${H(n).status.reason??`GitHub is not reachable`??``} — `)),G(e,t)},m=e=>{var t=lp(),n=I(t),r=R(n,!0),o=z(n,2),l=R(o),u=z(o,2),d=I(u),f=e=>{var t=ip(),n=R(t,!0);V(e=>{Y(t,1,`rv rv-${e??``}`,`svelte-108wngb`),K(n,c[H(a).review]??H(a).review)},[()=>H(a).review.toLowerCase()]),G(e,t)};q(d,e=>{H(a).review&&e(f)});var p=z(d,2),m=e=>{var t=sp(),n=I(t),r=I(n);$(r,{name:`check`,size:11,weight:2.6});var i=z(r);A(n);var o=z(n,2),s=e=>{var t=ap(),n=I(t);$(n,{name:`xmark`,size:10,weight:2.6});var r=z(n);A(t),V(()=>K(r,` ${H(a).checks[1]??``}`)),G(e,t)};q(o,e=>{H(a).checks[1]&&e(s)});var c=z(o,2),l=e=>{var t=op(),n=R(t);V(()=>K(n,`● ${H(a).checks[2]??``}`)),G(e,t)};q(c,e=>{H(a).checks[2]&&e(l)}),A(t),V(()=>K(i,` ${H(a).checks[0]??``}`)),G(e,t)};q(p,e=>{H(a).checks[0]+H(a).checks[1]+H(a).checks[2]&&e(m)}),A(u);var h=z(u,2),g=e=>{var t=cp();$(I(t),{name:`arrowup`,size:11,weight:2.2}),j(),A(t),V(()=>t.disabled=!!Q.job?.running),U(`click`,t,()=>Q.perform(H(i))),G(e,t)};q(h,e=>{H(i)&&H(a).state===`OPEN`&&e(g)}),A(t),V(e=>{Y(n,1,`st st-${e??``}`,`svelte-108wngb`),K(r,H(s)),X(o,`href`,H(a).url),K(l,`#${H(a).number??``} ${H(a).title??``}`)},[()=>H(s).toLowerCase()]),G(e,t)},h=e=>{var t=dp(),r=I(t),a=z(I(r)),s=R(a,!0),c=z(a,2),l=e=>{var t=Jr();V(e=>K(t,`It will close ${e??``}.`),[()=>H(o).map(e=>`#`+e.split(`/`).pop()).join(`, `)]),G(e,t)};q(c,e=>{H(o).length&&e(l)}),A(r);var u=z(r,2),d=e=>{var t=up();$(I(t),{name:`arrowup`,size:11,weight:2.2}),j(),A(t),V(()=>t.disabled=!!Q.job?.running),U(`click`,t,()=>Q.perform(H(i))),G(e,t)};q(u,e=>{H(i)&&H(n).branch&&e(d)}),A(t),V(()=>K(s,H(n).branch??`this feature`)),G(e,t)};q(d,e=>{H(n)?H(n).status.ready?H(a)?e(m,2):e(h,-1):e(p,1):e(f)});var g=z(d,2),_=e=>{var t=pp();J(z(I(t)),17,()=>H(o),si,(e,t,n)=>{var r=fp(),i=L(r),a=e=>{G(e,Jr(`,`))};q(i,e=>{n&&e(a)});var o=z(i),s=R(o);V(e=>{X(o,`href`,H(t)),K(s,`#${e??``}`)},[()=>H(t).split(`/`).pop()]),G(e,r)}),A(t),G(e,t)};q(g,e=>{H(o).length&&H(a)&&e(_)}),A(l),G(e,l),Ze()}Rr([`click`]);var gp=W(`<span></span>`),_p=W(`<li class="svelte-1j9nc65"><span><!> </span> </li>`),vp=W(`<button class="btn small primary svelte-1j9nc65"><!> Re-check Against the Spec</button>`),yp=W(`<section class="card wide stale svelte-1j9nc65"><div><h3 class="svelte-1j9nc65"><!> </h3> <p class="svelte-1j9nc65"> </p></div> <!></section>`),bp=W(`<button class="btn small primary svelte-1j9nc65">Approve</button>`),xp=W(`<button class="btn small svelte-1j9nc65">Reject…</button>`),Sp=W(`<div class="pending svelte-1j9nc65"><p class="svelte-1j9nc65"><span class="chip s-needs_approval"><!> </span> <strong> </strong> <!></p> <p class="muted small svelte-1j9nc65"> </p> <div class="acts svelte-1j9nc65"><!> <!></div></div>`),Cp=W(`<p class="muted">Nothing.</p>`),wp=W(`<span class="chip s-regression_only"> </span>`),Tp=W(`<p></p>`),Ep=W(`<p class="muted">Every requirement is cited.</p>`),Dp=W(`<section class="card svelte-1j9nc65"><h3 class="svelte-1j9nc65">Requirements no task cites <span class="muted"> </span></h3> <!></section>`),Op=W(`<p class="muted">The spec names no requirement IDs (FR-001, SC-001, …), so there is nothing to trace.</p>`),kp=W(`<button class="btn small svelte-1j9nc65"> </button>`),Ap=W(`<div class="empty svelte-1j9nc65"><p class="svelte-1j9nc65"><strong>No task names a requirement yet.</strong> </p> <!></div>`),jp=W(`<span class="was svelte-1j9nc65"> </span>`),Mp=W(`<span class="was svelte-1j9nc65">earlier wording</span>`),Np=W(`<button><!> <!></button>`),Pp=W(`<span class="muted small svelte-1j9nc65">no task cites it</span>`),Fp=W(`<li><span class="req mono svelte-1j9nc65"> </span> <span class="tasks svelte-1j9nc65"></span></li>`),Ip=W(`<ul class="matrix svelte-1j9nc65"></ul>`),Lp=W(`<p><strong> </strong> <code> </code> </p>`),Rp=W(`<section class="card wide svelte-1j9nc65"><h3 class="svelte-1j9nc65">Convergence</h3> <!></section>`),zp=W(`<div class="grid svelte-1j9nc65" data-tour="report"><section class="card wide svelte-1j9nc65"><h3 class="svelte-1j9nc65">Verdicts</h3> <div class="bar svelte-1j9nc65" role="img"></div> <ul class="legend svelte-1j9nc65"></ul> <p class="muted small svelte-1j9nc65"> <code> </code><!></p></section> <!> <section><h3 class="svelte-1j9nc65">Waiting for you <span class="muted"> </span></h3> <!></section> <!> <section class="card wide svelte-1j9nc65"><h3 class="svelte-1j9nc65">Requirements <span class="muted"> </span></h3> <!></section> <!> <!> <!></div>`);function Bp(e,t){Xe(t,!0);let n=M(()=>Q.report?.data),r=Co,i=M(()=>r.map(e=>({k:e,n:H(n)?.totals?.[e]??0})).filter(e=>e.n>0)),a=M(()=>H(i).reduce((e,t)=>e+t.n,0)),o=M(()=>(H(n)?.trace??[]).filter(e=>!e.task)),s=M(()=>{let e=new Map;for(let t of H(n)?.trace??[]){let n=e.get(t.requirement)??[];t.task&&n.push({task:t.inherited?t.inherited.task:t.task,verdict:t.verdict,test:t.test,changed:!!t.changed,from:t.inherited?.unit??null}),e.set(t.requirement,n)}return[...e].map(([e,t])=>({requirement:e,tasks:t}))}),c=M(()=>H(s).filter(e=>e.tasks.some(e=>!e.changed&&(e.verdict===`verified`||e.verdict===`regression_only`))).length),l=M(()=>(H(n)?.tasks??[]).filter(e=>e.drift?.requirements.length)),u=M(()=>Oa(Q.actions,`converge`)[0]),d=M(()=>ka(Q.actions,`check`)[0]);var f=Yr(),p=L(f),m=e=>{var t=zp(),r=I(t),f=z(I(r),2);J(f,21,()=>H(i),e=>e.k,(e,t)=>{var n=gp();V(e=>{Y(n,1,`s-${H(t).k??``}`,`svelte-1j9nc65`),Oi(n,`flex:${H(t).n??``}`),X(n,`title`,`${H(t).n??``} ${e??``}`)},[()=>xo(H(t).k)]),G(e,n)}),A(f);var p=z(f,2);J(p,21,()=>H(i),e=>e.k,(e,t)=>{var n=_p(),r=I(n),i=I(r);{let e=M(()=>So(H(t).k));$(i,{get name(){return H(e)},size:11,weight:2.4})}var a=z(i);A(r);var o=z(r);A(n),V(e=>{Y(r,1,`chip s-${H(t).k??``}`,`svelte-1j9nc65`),K(a,` ${H(t).n??``}`),K(o,` ${e??``}`)},[()=>xo(H(t).k)]),G(e,n)}),A(p);var m=z(p,2),h=I(m),g=z(h),_=R(g,!0),v=z(g),y=e=>{var t=Jr();V(()=>K(t,` · ${H(n).unmerged_commits??``} ${H(n).unmerged_commits===1?`commit`:`commits`} not merged`)),G(e,t)};q(v,e=>{H(n).unmerged_commits&&e(y)}),A(m),A(r);var b=z(r,2),x=e=>{var t=yp(),n=I(t),r=I(n),i=I(r);$(i,{name:`exclaim`,size:15,weight:2.2});var a=z(i);A(r);var o=R(z(r,2));A(n);var s=z(n,2),c=e=>{var t=vp();$(I(t),{name:`sparkle`,size:11,weight:2.2}),j(),A(t),V(()=>{t.disabled=!!H(u).blocked||!!Q.job?.running,X(t,`title`,`${H(u).blocked??H(u).why}\n$ ${H(u).command}`)}),U(`click`,t,()=>Q.perform(H(u))),G(e,t)};q(s,e=>{H(u)&&e(c)}),A(t),V(e=>{K(a,` The spec changed under ${H(l).length??``} ${H(l).length===1?`tick`:`ticks`}`),K(o,`${e??``} — proven against an earlier wording.`)},[()=>H(l).map(e=>`${e.id} (${e.drift.requirements.map(e=>e.id).join(`, `)})`).join(` · `)]),G(e,t)};q(b,e=>{H(l).length&&e(x)});var S=z(b,2);let C;var w=I(S),T=R(z(I(w)),!0);A(w),J(z(w,2),17,()=>Q.approvals,e=>e.task+e.covers,(e,t)=>{let n=M(()=>Oa(Q.actions,`approve`,H(t).task)[0]),r=M(()=>Oa(Q.actions,`reject`,H(t).task)[0]);var i=Sp(),a=I(i),o=I(a),s=I(o);$(s,{name:`hand`,size:11,weight:2.2});var c=z(s);A(o);var l=z(o,2),u=R(l,!0);so(z(l,2),{get text(){return H(t).covers}}),A(a);var d=z(a,2),f=R(d,!0),p=z(d,2),m=I(p),h=e=>{var t=bp();V(()=>{t.disabled=!!Q.job?.running,X(t,`title`,H(n).command)}),U(`click`,t,()=>Q.perform(H(n))),G(e,t)};q(m,e=>{H(n)&&e(h)});var g=z(m,2),_=e=>{var t=xp();V(()=>{t.disabled=!!Q.job?.running,X(t,`title`,H(r).command)}),U(`click`,t,()=>Q.perform(H(r))),G(e,t)};q(g,e=>{H(r)&&e(_)}),A(p),A(i),V(()=>{K(c,` ${H(t).task??``}`),K(u,H(t).presentation?.title??H(t).tool),K(f,H(t).reason)}),G(e,i)},e=>{G(e,Cp())}),A(S);var E=z(S,2),ee=e=>{var t=Dp(),n=I(t),r=R(z(I(n)),!0);A(n);var i=z(n,2),a=e=>{var t=Tp();J(t,21,()=>H(o),si,(e,t)=>{var n=wp(),r=R(n,!0);V(()=>K(r,H(t).requirement)),G(e,n)}),A(t),G(e,t)},s=e=>{G(e,Ep())};q(i,e=>{H(o).length?e(a):e(s,-1)}),A(t),V(()=>K(r,H(o).length)),G(e,t)};q(E,e=>{H(s).length&&e(ee)});var D=z(E,2),O=I(D),k=R(z(I(O)));A(O);var te=z(O,2),ne=e=>{G(e,Op())},re=e=>{var t=Ap(),n=I(t),r=z(I(n));A(n);var i=z(n,2),a=e=>{var t=kp(),n=R(t);V(()=>{t.disabled=!!Q.job?.running,K(n,`Find the gaps: ${H(d).label??``}`)}),U(`click`,t,()=>Q.perform(H(d))),G(e,t)};q(i,e=>{H(d)&&e(a)}),A(t),V(()=>K(r,` The spec has ${H(s).length??``} requirements, but tasks.md cites none of them, so no evidence can be traced back to what was asked for.`)),G(e,t)},ie=e=>{var t=Ip();J(t,21,()=>H(s),e=>e.requirement,(e,t)=>{var n=Fp();Yi(n,e=>({...e,[Ii]:{open:!H(t).tasks.length}}),[()=>Ga(`trace_row`,{requirement:H(t).requirement},`${H(t).requirement} in the trace`,`${H(t).requirement}: ${H(t).tasks.length?H(t).tasks.map(e=>`${e.task} ${e.verdict??`open`}${e.changed?` (against an earlier wording)`:``}`).join(`, `):`no task cites it`}`)],void 0,void 0,`svelte-1j9nc65`);var r=I(n),i=R(r,!0),a=z(r,2);J(a,21,()=>H(t).tasks,e=>e.task,(e,t)=>{var n=Np(),r=I(n);{let e=M(()=>H(t).changed?`exclaim`:So(H(t).verdict??`blocked`));$(r,{get name(){return H(e)},size:11,weight:2.4})}var i=z(r),a=z(i),o=e=>{var n=jp(),r=R(n);V(e=>K(r,`inherited from ${e??``} · earlier wording`),[()=>H(t).from.replace(/^\d+-/,``)]),G(e,n)},s=e=>{G(e,Mp())};q(a,e=>{H(t).from?e(o):H(t).changed&&e(s,1)}),A(n),V(e=>{Y(n,1,`chip s-${(H(t).changed?`needs_approval`:H(t).verdict??`blocked`)??``}`,`svelte-1j9nc65`),X(n,`title`,`${e??``}${H(t).test?` · ${H(t).test}`:``}`),K(i,` ${H(t).task??``}`)},[()=>H(t).changed?`${xo(H(t).verdict??`blocked`)} against an earlier wording — the requirement changed since`:xo(H(t).verdict??`blocked`)]),U(`click`,n,async()=>{H(t).from&&await Q.selectFeature(H(t).from),Q.view=`board`,Q.selectTask(H(t).task)}),G(e,n)},e=>{G(e,Pp())}),A(a),A(n),V(()=>K(i,H(t).requirement)),G(e,n)}),A(t),G(e,t)};q(te,e=>{H(s).length?H(o).length===H(s).length?e(re,1):e(ie,-1):e(ne)}),A(D);var ae=z(D,2);hp(ae,{});var oe=z(ae,2);Of(oe,{});var se=z(oe,2),ce=e=>{var t=Rp();J(z(I(t),2),17,()=>H(n).convergence,e=>e.round,(e,t)=>{var n=Lp(),r=I(n),i=R(r),a=z(r,2),o=R(a,!0),s=z(a);A(n),V((e,n)=>{K(i,`Round ${H(t).round??``}`),K(o,e),K(s,` — ${n??``}`)},[()=>H(t).commit.slice(0,10),()=>H(t).tasks.join(`; `)]),G(e,n)}),A(t),G(e,t)};q(se,e=>{H(n).convergence.length&&e(ce)}),A(t),V(e=>{X(f,`aria-label`,e),K(h,`${H(a)??``} tasks · branch `),K(_,H(n).branch??`—`),C=Y(S,1,`card svelte-1j9nc65`,null,C,{wide:!H(s).length}),K(T,Q.approvals.length),K(k,`${H(c)??``} of ${H(s).length??``} proven by evidence`)},[()=>H(i).map(e=>`${e.n} ${xo(e.k)}`).join(`, `)]),G(e,t)};q(p,e=>{H(n)&&e(m)}),G(e,f),Ze()}Rr([`click`]);var Vp=W(`<p class="svelte-bhncdn"> </p>`),Hp=W(`<button class="more svelte-bhncdn"> </button>`),Up=W(`<div><span class="kicker svelte-bhncdn"><span class="therefore svelte-bhncdn" aria-hidden="true">∴</span> Thinking</span> <!> <!></div>`),Wp=W(`<blockquote class="said svelte-bhncdn"> </blockquote>`),Gp=W(`<div class="answer svelte-bhncdn"><span class="kicker svelte-bhncdn">How it ended</span> <blockquote class="svelte-bhncdn"> </blockquote></div>`),Kp=W(`<li><span class="node mono svelte-bhncdn"> </span> <div class="turn svelte-bhncdn"><!> <!> <!></div></li>`),qp=W(`<ol class="timeline svelte-bhncdn"></ol>`);function Jp(e,t){Xe(t,!0);let n=ma(t,`marked`,3,null),r=N(void 0),i=e=>!!n()&&e>=n()[0]&&e<=n()[1];B(()=>{n()&&t.turns.length&&yr().then(()=>H(r)?.querySelector(`.marked`)?.scrollIntoView({block:`start`}))});let a=N(F({})),o=e=>e.split(/\n\s*\n|\n/).map(e=>e.trim()).filter(Boolean),s=e=>o(e).at(-1)??e,c=e=>o(e).length>1||e.length>280;var l=qp();J(l,21,()=>t.turns,e=>e.turn,(e,t)=>{var n=Kp();let r;var l=I(n),u=R(l,!0),d=z(l,2),f=I(d),p=e=>{var n=Up();let r;var i=z(I(n),2),l=e=>{var n=Yr();J(L(n),17,()=>o(H(t).reasoning),si,(e,t)=>{var n=Vp(),r=R(n,!0);V(()=>K(r,H(t))),G(e,n)}),G(e,n)},u=M(()=>H(a)[H(t).turn]||!c(H(t).reasoning)),d=e=>{var n=Vp(),r=R(n,!0);V(e=>K(r,e),[()=>s(H(t).reasoning)]),G(e,n)};q(i,e=>{H(u)?e(l):e(d,-1)});var f=z(i,2),p=e=>{var n=Hp(),r=R(n,!0);V(()=>{X(n,`aria-expanded`,!!H(a)[H(t).turn]),K(r,H(a)[H(t).turn]?`Show the conclusion`:`Show all of it`)}),U(`click`,n,()=>P(a,{...H(a),[H(t).turn]:!H(a)[H(t).turn]},!0)),G(e,n)},m=M(()=>c(H(t).reasoning));q(f,e=>{H(m)&&e(p)}),A(n),V(()=>r=Y(n,1,`thought svelte-bhncdn`,null,r,{open:H(a)[H(t).turn]})),G(e,n)};q(f,e=>{H(t).reasoning&&e(p)});var m=z(f,2),h=e=>{var n=Wp(),r=R(n,!0);V(()=>K(r,H(t).said)),G(e,n)};q(m,e=>{H(t).said&&e(h)});var g=z(m,2),_=e=>{var n=Gp(),r=R(z(I(n),2),!0);A(n),V(()=>K(r,H(t).answer)),G(e,n)};q(g,e=>{H(t).answer&&e(_)}),A(d),A(n),V(e=>{r=Y(n,1,`svelte-bhncdn`,null,r,{marked:e}),X(l,`aria-label`,`Turn ${H(t).turn??``}`),K(u,H(t).turn)},[()=>i(H(t).turn)]),G(e,n)}),A(l),sa(l,e=>P(r,e),()=>H(r)),G(e,l),Ze()}Rr([`click`]);var Yp={"cargo.toml":{label:`RS`,color:`#dea584`,name:`Cargo manifest`},"cargo.lock":{label:`LK`,color:`#8e8e93`,name:`Lockfile`},"package.json":{label:`{}`,color:`#cb3837`,name:`npm package`},"package-lock.json":{label:`LK`,color:`#8e8e93`,name:`Lockfile`},"pnpm-lock.yaml":{label:`LK`,color:`#8e8e93`,name:`Lockfile`},"yarn.lock":{label:`LK`,color:`#8e8e93`,name:`Lockfile`},dockerfile:{label:`DK`,color:`#2496ed`,name:`Dockerfile`},makefile:{label:`MK`,color:`#6d8086`,name:`Makefile`},justfile:{label:`JF`,color:`#6d8086`,name:`justfile`},license:{label:`§`,color:`#8e8e93`,name:`Licence`},".gitignore":{label:`GI`,color:`#f05032`,name:`Git ignore`},"speccoder.toml":{label:`✓`,color:`#4f46e5`,name:`speccoder configuration`}},Xp={rs:{label:`RS`,color:`#e57a44`,name:`Rust`},ts:{label:`TS`,color:`#3178c6`,name:`TypeScript`},tsx:{label:`TX`,color:`#3178c6`,name:`TypeScript JSX`},js:{label:`JS`,color:`#e5b800`,name:`JavaScript`},mjs:{label:`JS`,color:`#e5b800`,name:`JavaScript`},jsx:{label:`JX`,color:`#e5b800`,name:`JavaScript JSX`},svelte:{label:`SV`,color:`#ff3e00`,name:`Svelte`},vue:{label:`VU`,color:`#41b883`,name:`Vue`},py:{label:`PY`,color:`#3572a5`,name:`Python`},go:{label:`GO`,color:`#00add8`,name:`Go`},java:{label:`JV`,color:`#b07219`,name:`Java`},kt:{label:`KT`,color:`#a97bff`,name:`Kotlin`},swift:{label:`SW`,color:`#f05138`,name:`Swift`},rb:{label:`RB`,color:`#cc342d`,name:`Ruby`},c:{label:`C`,color:`#555fbf`,name:`C`},h:{label:`H`,color:`#555fbf`,name:`C header`},cpp:{label:`C+`,color:`#f34b7d`,name:`C++`},cs:{label:`C#`,color:`#178600`,name:`C#`},php:{label:`PH`,color:`#777bb4`,name:`PHP`},sh:{label:`$`,color:`#4eaa25`,name:`Shell`},bash:{label:`$`,color:`#4eaa25`,name:`Shell`},zsh:{label:`$`,color:`#4eaa25`,name:`Shell`},sql:{label:`SQ`,color:`#e38c00`,name:`SQL`},md:{label:`M↓`,color:`#6e7681`,name:`Markdown`},mdx:{label:`M↓`,color:`#6e7681`,name:`MDX`},txt:{label:`TX`,color:`#8e8e93`,name:`Text`},json:{label:`{}`,color:`#cbb33b`,name:`JSON`},toml:{label:`TM`,color:`#9c6b4e`,name:`TOML`},yml:{label:`YM`,color:`#cb171e`,name:`YAML`},yaml:{label:`YM`,color:`#cb171e`,name:`YAML`},xml:{label:`<>`,color:`#e37933`,name:`XML`},html:{label:`<>`,color:`#e34c26`,name:`HTML`},css:{label:`#`,color:`#663399`,name:`CSS`},scss:{label:`#`,color:`#c6538c`,name:`SCSS`},svg:{label:`SV`,color:`#ffb13b`,name:`SVG`},png:{label:`IMG`,color:`#a259ff`,name:`Image`},jpg:{label:`IMG`,color:`#a259ff`,name:`Image`},jpeg:{label:`IMG`,color:`#a259ff`,name:`Image`},gif:{label:`IMG`,color:`#a259ff`,name:`Image`},webp:{label:`IMG`,color:`#a259ff`,name:`Image`},pdf:{label:`PDF`,color:`#e5252a`,name:`PDF`},lock:{label:`LK`,color:`#8e8e93`,name:`Lockfile`},env:{label:`ENV`,color:`#ecd53f`,name:`Environment`},proto:{label:`PB`,color:`#4285f4`,name:`Protocol Buffers`},graphql:{label:`GQ`,color:`#e10098`,name:`GraphQL`},tf:{label:`TF`,color:`#7b42bc`,name:`Terraform`},dart:{label:`DT`,color:`#00b4ab`,name:`Dart`},zig:{label:`ZG`,color:`#ec915c`,name:`Zig`},ex:{label:`EX`,color:`#6e4a7e`,name:`Elixir`},hs:{label:`HS`,color:`#5e5086`,name:`Haskell`},lua:{label:`LU`,color:`#000080`,name:`Lua`}},Zp={label:``,color:`#8e8e93`,name:`File`};function Qp(e){let t=e.split(`/`).pop()?.toLowerCase()??``;if(Yp[t])return Yp[t];if(t.startsWith(`readme`))return Xp.md;if(t.startsWith(`.env`))return Xp.env;let n=t.lastIndexOf(`.`);return n>0&&Xp[t.slice(n+1)]||Zp}var $p=qr(`<rect x="0.5" y="0.5" width="15" height="15" rx="3.6" class="tile svelte-jch8e9"></rect><text x="8" y="8.4" text-anchor="middle" dominant-baseline="middle" class="svelte-jch8e9"> </text>`,1),em=qr(`<path class="page svelte-jch8e9" d="M3.5 1.5h6l3 3V14a.5.5 0 0 1-.5.5h-8.5a.5.5 0 0 1-.5-.5V2a.5.5 0 0 1 .5-.5z"></path><path class="page svelte-jch8e9" d="M9.5 1.5v3h3"></path>`,1),tm=qr(`<svg class="fi svelte-jch8e9" viewBox="0 0 16 16" aria-hidden="true"><title> </title><!></svg>`);function nm(e,t){Xe(t,!0);let n=ma(t,`size`,3,16),r=M(()=>Qp(t.path)),i=M(()=>H(r).label.length>=3?6.2:H(r).label.length===2?7.6:9.5),a=M(()=>{let[e,t,n]=[1,3,5].map(e=>parseInt(H(r).color.slice(e,e+2),16)/255);return .2126*e+.7152*t+.0722*n>.62?`#1d1d1f`:`#fff`});var o=tm(),s=I(o),c=R(s,!0),l=z(s),u=e=>{var t=$p(),n=z(L(t)),o=R(n,!0);V(()=>{Oi(n,`font-size:${H(i)??``}px; fill:${H(a)??``}`),K(o,H(r).label)}),G(e,t)},d=e=>{var t=em();j(),G(e,t)};q(l,e=>{H(r).label?e(u):e(d,-1)}),A(o),V(()=>{X(o,`width`,n()),X(o,`height`,n()),Oi(o,`--c:${H(r).color??``}`),K(c,H(r).name)}),G(e,o),Ze()}var rm=W(`<div class="state svelte-1bbn6cp"><span class="spinner svelte-1bbn6cp"></span></div>`),im=W(`<div class="state muted svelte-1bbn6cp"><!><span>No change to show.</span></div>`),am=W(`<dt class="svelte-1bbn6cp"> </dt><dd class="mono svelte-1bbn6cp"> </dd>`,1),om=W(`<dl class="svelte-1bbn6cp"></dl>`),sm=W(`<header class="commit svelte-1bbn6cp"><span class="hash mono svelte-1bbn6cp"> </span> <strong class="svelte-1bbn6cp"> </strong> <!></header>`),cm=W(`<span> </span>`),lm=W(`<i></i>`),um=W(`<tr class="hunk svelte-1bbn6cp"><td colspan="3" class="svelte-1bbn6cp"><span> </span></td></tr>`),dm=W(`<tr class="note svelte-1bbn6cp"><td colspan="3" class="svelte-1bbn6cp"> </td></tr>`),fm=W(`<button class="plus svelte-1bbn6cp">+</button>`),pm=W(`<tr><td class="ln svelte-1bbn6cp"> </td><td class="ln svelte-1bbn6cp"><!> </td><td class="src svelte-1bbn6cp"><span class="sign svelte-1bbn6cp"> </span><!></td></tr>`),mm=W(`<div><table class="svelte-1bbn6cp"><tbody></tbody></table></div>`),hm=W(`<section><button class="fhead svelte-1bbn6cp"><!> <!> <span class="fname mono svelte-1bbn6cp"> </span> <!> <span class="stat svelte-1bbn6cp"><span class="a svelte-1bbn6cp"> </span><span class="d svelte-1bbn6cp"> </span> <span class="blocks svelte-1bbn6cp" aria-hidden="true"></span></span></button> <!></section>`),gm=W(`<div class="change svelte-1bbn6cp"><!> <div class="summary svelte-1bbn6cp"><span> </span> <span class="a svelte-1bbn6cp"> </span><span class="d svelte-1bbn6cp"> </span> <label class="wrap svelte-1bbn6cp"><input type="checkbox"/> Wrap lines</label></div> <!></div>`);function _m(e,t){Xe(t,!0);let n=ma(t,`loading`,3,!1),r=ma(t,`only`,3,null),i=ma(t,`header`,3,!0),a=ma(t,`comment`,3,null),o=ma(t,`frozen`,19,()=>new Set),s=N(!1),c=N(F({})),l=M(()=>{let e=[],n=[],r=null,i=0,a=0;for(let o of t.patch.split(`
`))if(o.startsWith(`diff --git `))r={name:o.split(` b/`).pop()??o,status:`modified`,lines:[],add:0,del:0},e.push(r);else if(!r)n.push(o);else if(o.startsWith(`new file`))r.status=`added`;else if(o.startsWith(`deleted file`))r.status=`deleted`;else if(o.startsWith(`rename to `))r.status=`renamed`,r.name=o.slice(10);else if(o.startsWith(`index `)||o.startsWith(`--- `)||o.startsWith(`+++ `)||o.startsWith(`similarity`)||o.startsWith(`rename from`)||/^(old|new) mode/.test(o))continue;else if(o.startsWith(`@@`)){let e=o.match(/@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@(.*)/);i=e?Number(e[1]):0,a=e?Number(e[2]):0,r.lines.push({kind:`hunk`,text:e?.[3]?.trim()??``,old:null,new:null})}else o.startsWith(`+`)?(r.lines.push({kind:`add`,text:o.slice(1),old:null,new:a++}),r.add++):o.startsWith(`-`)?(r.lines.push({kind:`del`,text:o.slice(1),old:i++,new:null}),r.del++):o.startsWith(`\\`)?r.lines.push({kind:`note`,text:o.slice(2),old:null,new:null}):(o.length||r.lines.length)&&r.lines.push({kind:`ctx`,text:o.slice(1),old:i++,new:a++});let[o=``,,...s]=n,c=o.split(` `)[0]??``;return{files:e,hash:c,subject:o.slice(c.length+1),trailers:s.filter(e=>/^[A-Z][\w-]+: /.test(e))}}),u=M(()=>H(l).files.reduce((e,t)=>({add:e.add+t.add,del:e.del+t.del}),{add:0,del:0})),d=e=>Math.min(5,Math.round(5*e.add/Math.max(e.add+e.del,1)));var f=Yr(),p=L(f),m=e=>{G(e,rm())},h=e=>{var t=im();$(I(t),{name:`doc`,size:22}),j(),A(t),G(e,t)},g=e=>{var t=gm(),n=I(t),f=e=>{var t=sm(),n=I(t),r=R(n,!0),i=z(n,2),a=R(i,!0),o=z(i,2),s=e=>{var t=om();J(t,21,()=>H(l).trailers,si,(e,t)=>{let n=M(()=>{let[e,...n]=H(t).split(`: `);return{k:e,v:n}});var r=am(),i=L(r),a=R(i,!0),o=R(z(i),!0);V(e=>{K(a,H(n).k),K(o,e)},[()=>H(n).v.join(`: `)]),G(e,r)}),A(t),G(e,t)};q(o,e=>{H(l).trailers.length&&e(s)}),A(t),V(()=>{K(r,H(l).hash),K(a,H(l).subject)}),G(e,t)};q(n,e=>{H(l).subject&&i()&&e(f)});var p=z(n,2),m=I(p),h=R(m),g=z(m,2),_=R(g),v=z(g),y=R(v),b=z(v,2),x=I(b);Gi(x),j(),A(b),A(p),J(z(p,2),17,()=>r()?H(l).files.filter(e=>e.name===r()):H(l).files,e=>e.name,(e,t)=>{var n=hm();Yi(n,e=>({class:`file`,...e}),[()=>Ga(`file_range`,{path:H(t).name},H(t).name)],void 0,void 0,`svelte-1bbn6cp`);var r=I(n),i=I(r);{let e=M(()=>H(c)[H(t).name]?`chevron`:`down`);$(i,{get name(){return H(e)},size:12,weight:2.2})}var l=z(i,2);nm(l,{get path(){return H(t).name},size:15});var u=z(l,2),f=R(u,!0),p=z(u,2),m=e=>{var n=cm(),r=R(n,!0);V(()=>{Y(n,1,`badge ${H(t).status??``}`,`svelte-1bbn6cp`),K(r,H(t).status)}),G(e,n)};q(p,e=>{H(t).status!==`modified`&&e(m)});var h=z(p,2),g=I(h),_=R(g),v=z(g),y=R(v),b=z(v,2);J(b,20,()=>[,,,,,],si,(e,n,r)=>{var i=lm();let a;V((e,t)=>a=Y(i,1,`svelte-1bbn6cp`,null,a,{ga:e,gd:t}),[()=>r<d(H(t)),()=>r>=d(H(t))&&r<(H(t).del?5:d(H(t)))]),G(e,i)}),A(b),A(h),A(r);var x=z(r,2),S=e=>{var n=mm();let r;var i=I(n),c=I(i);J(c,21,()=>H(t).lines,si,(e,n)=>{var r=Yr(),i=L(r),s=e=>{var t=um(),r=I(t),i=I(r);let a;var o=R(i,!0);A(r),A(t),V(()=>{a=Y(i,1,`svelte-1bbn6cp`,null,a,{named:!!H(n).text}),K(o,H(n).text)}),G(e,t)},c=e=>{var t=dm(),r=R(I(t),!0);A(t),V(()=>K(r,H(n).text)),G(e,t)},l=e=>{var r=pm(),i=I(r),s=R(i,!0),c=z(i),l=I(c),u=e=>{var r=fm();V((e,t)=>{X(r,`aria-label`,e),X(r,`title`,t)},[()=>o().has(H(t).name)?`${H(t).name} is a frozen test`:`Comment on line ${H(n).new} of ${H(t).name}`,()=>o().has(H(t).name)?`This is a frozen test. Comment on it in Review › Tests`:`Comment on this line`]),U(`click`,r,()=>a()?.({path:H(t).name,line:H(n).new??0,quote:H(n).text})),G(e,r)};q(l,e=>{a()&&H(n).new!=null&&e(u)});var d=z(l,1,!0);A(c);var f=z(c),p=I(f),m=R(p,!0),h=z(p);{let e=M(()=>dl(H(t).name));gl(h,{get line(){return H(n).text},get lang(){return H(e)}})}A(f),A(r),V(()=>{Y(r,1,xi(H(n).kind),`svelte-1bbn6cp`),K(s,H(n).old??``),K(d,H(n).new??``),K(m,H(n).kind===`add`?`+`:H(n).kind===`del`?`−`:` `)}),G(e,r)};q(i,e=>{H(n).kind===`hunk`?e(s):H(n).kind===`note`?e(c,1):e(l,-1)}),G(e,r)}),A(c),A(i),A(n),V(()=>r=Y(n,1,`code svelte-1bbn6cp`,null,r,{wrap:H(s)})),G(e,n)};q(x,e=>{H(c)[H(t).name]||e(S)}),A(n),V(()=>{X(r,`aria-expanded`,!H(c)[H(t).name]),X(u,`title`,H(t).name),K(f,H(t).name),K(_,`+${H(t).add??``}`),K(y,`−${H(t).del??``}`)}),U(`click`,r,()=>P(c,{...H(c),[H(t).name]:!H(c)[H(t).name]},!0)),G(e,n)}),A(t),V(()=>{K(h,`${H(l).files.length??``} ${H(l).files.length===1?`file`:`files`}`),K(_,`+${H(u).add??``}`),K(y,`−${H(u).del??``}`)}),na(x,()=>H(s),e=>P(s,e)),G(e,t)};q(p,e=>{n()?e(m):H(l).files.length===0?e(h,1):e(g,-1)}),G(e,f),Ze()}Rr([`click`]);var vm=W(`<span> </span>`),ym=W(`<div class="req svelte-1sulva3"><span class="id mono svelte-1sulva3"> <span class="how svelte-1sulva3"> </span></span> <p class="words svelte-1sulva3"></p></div>`),bm=W(`<div class="go svelte-1sulva3"><button class="btn small primary"><!> Re-check Against the Spec</button> <span class="cli mono svelte-1sulva3"> </span></div>`),xm=W(`<section class="drift svelte-1sulva3" aria-label="The spec changed since this tick"><header class="svelte-1sulva3"><span class="badge svelte-1sulva3" aria-hidden="true"><!></span> <div><strong class="svelte-1sulva3">The spec changed since this tick</strong> <span class="sub svelte-1sulva3">Its evidence is for the earlier wording — it does not prove what the spec asks now.</span></div></header> <!> <!></section>`),Sm=W(`<p class="soft svelte-1sulva3"><!> </p>`);function Cm(e,t){Xe(t,!0);let n=M(()=>Oa(Q.actions,`converge`)[0]),r=(e,t)=>e?t?`Reworded`:`Removed`:`Added`;var i=Yr(),a=L(i),o=e=>{var i=xm(),a=I(i),o=I(a);$(I(o),{name:`exclaim`,size:15,weight:2.2}),A(o),j(2),A(a);var s=z(a,2);J(s,17,()=>t.drift.requirements,e=>e.id,(e,t)=>{var n=ym(),i=I(n),a=I(i),o=R(z(a),!0);A(i);var s=z(i,2);J(s,21,()=>Ac(kc(H(t).then),kc(H(t).now)),si,(e,t)=>{var n=vm(),r=R(n,!0);V(()=>{Y(n,1,xi(H(t).kind),`svelte-1sulva3`),K(r,H(t).text)}),G(e,n)}),A(s),A(n),V(e=>{K(a,`${H(t).id??``} `),K(o,e)},[()=>r(H(t).then,H(t).now)]),G(e,n)});var c=z(s,2),l=e=>{var t=bm(),r=I(t);$(I(r),{name:`sparkle`,size:11,weight:2.2}),j(),A(r);var i=R(z(r,2));A(t),V(()=>{r.disabled=!!H(n).blocked||!!Q.job?.running,X(r,`title`,`${H(n).blocked??H(n).why}\n$ ${H(n).command}`),K(i,`$ ${H(n).command??``}`)}),U(`click`,r,()=>Q.perform(H(n))),G(e,t)};q(c,e=>{H(n)&&e(l)}),A(i),G(e,i)},s=e=>{var n=Sm(),r=I(n);$(r,{name:`info`,size:13});var i=z(r);A(n),V(e=>K(i,` The ${e??``} changed since this tick — not in what it cites.`),[()=>t.drift.files.length?t.drift.files.map(e=>e.split(`/`).pop()).join(`, `):`spec, plan or constitution`]),G(e,n)};q(a,e=>{t.drift.requirements.length?e(o):e(s,-1)}),G(e,i),Ze()}Rr([`click`]);var wm=W(`<p class="muted small svelte-14u0zbq"> </p>`),Tm=W(`<p class="muted small svelte-14u0zbq">Reading the evidence…</p>`),Em=W(`<pre class="mono svelte-14u0zbq"> </pre>`),Dm=W(`<li><div class="head svelte-14u0zbq"><strong class="svelte-14u0zbq"> </strong> <span class="src svelte-14u0zbq" title="Where this step comes from"> </span></div> <p class="svelte-14u0zbq"><!></p> <!></li>`),Om=W(`<p class="unverifiable svelte-14u0zbq"> </p>`),km=W(`<ol class="tour svelte-14u0zbq"></ol> <!> <p class="note svelte-14u0zbq">Read as recorded: <code>speccoder attest verify --branch</code> checks the signatures.</p>`,1);function Am(e,t){Xe(t,!0);let n=wa(),r=N(null),i=N(null);B(()=>{P(r,null),P(i,null),n(ba(`/api/tour${Sa({feature:t.feature,task:t.task})}`),e=>{e.data?P(r,e.data,!0):P(i,e.error??e.message??`no tour`,!0)},e=>P(i,String(e),!0))});let a={signed:`signed`,recorded:`recorded`,committed:`committed`,not_recorded:`not recorded`},o=e=>{let[t,...n]=e.split(`
`),r=n.filter(e=>!e.startsWith("```")).map(e=>e.replace(/^> ?/,``)).join(`
`).trim();return{first:t??``,block:r}};var s=Yr(),c=L(s),l=e=>{var t=wm(),n=R(t,!0);V(()=>K(n,H(i))),G(e,t)},u=e=>{G(e,Tm())},d=e=>{var t=km(),n=L(t);J(n,21,()=>H(r).steps,e=>e.kind,(e,t)=>{let n=M(()=>o(H(t).body_markdown));var r=Dm(),i=I(r),s=I(i),c=R(s,!0),l=R(z(s,2),!0);A(i);var u=z(i,2);so(I(u),{get text(){return H(n).first}}),A(u);var d=z(u,2),f=e=>{var t=Em(),r=R(t,!0);V(()=>K(r,H(n).block)),G(e,t)};q(d,e=>{H(n).block&&e(f)}),A(r),V(()=>{Y(r,1,`step src-${H(t).source??``}`,`svelte-14u0zbq`),K(c,H(t).title),K(l,a[H(t).source])}),G(e,r)}),A(n);var i=z(n,2),s=e=>{var t=Om(),n=R(t);V(()=>K(n,`Unverifiable: ${H(r).unverifiable??``}. The steps after the requirement are not shown: nothing verifiable backs them.`)),G(e,t)};q(i,e=>{H(r).unverifiable&&e(s)}),j(2),V(()=>X(n,`aria-label`,`Evidence tour of ${H(r).task??``}`)),G(e,t)};q(c,e=>{H(i)?e(l):H(r)?e(d,-1):e(u,1)}),G(e,s),Ze()}var jm=W(`<p class="claim svelte-t5toca"> <span class="muted svelte-t5toca">— a claim, not evidence</span></p>`),Mm=W(`<p class="svelte-t5toca">Marked <code>[YOU]</code>: a step only a person can take. The run does not attempt it.</p>`),Nm=W(`<button class="btn small primary svelte-t5toca"><!> I Did It</button>`),Pm=W(`<button class="btn small tinted svelte-t5toca"><!> Hint &amp; Retry</button>`),Fm=W(`<button class="btn small ghost svelte-t5toca">Skip…</button>`),Im=W(`<form class="hint svelte-t5toca"><input placeholder="What the agent is missing" class="svelte-t5toca"/> <button class="btn small primary svelte-t5toca" type="submit">Retry</button></form>`),Lm=W(`<p class="muted small svelte-t5toca"> </p>`),Rm=W(`<section class="stop svelte-t5toca"><span class="glyph svelte-t5toca" aria-hidden="true">🙋</span> <div class="what svelte-t5toca"><strong> </strong> <!> <div class="row svelte-t5toca"><!> <!> <!> <button class="btn icon small ghost svelte-t5toca" title="Copy what went wrong"><!></button></div> <!> <!></div></section>`);function zm(e,t){Xe(t,!0);let n=e=>t.actions.find(t=>t.run?.kind===e)??null,r=M(()=>n(`done`)),i=M(()=>n(`hint`)),a=M(()=>n(`skip`)),o=N(!1),s=N(``);async function c(e){e.preventDefault();let t=H(s).trim();H(i)&&t&&(await Q.perform(H(i),t),P(o,!1),P(s,``))}var l=Rm(),u=z(I(l),2),d=I(u),f=R(d),p=z(d,2),m=e=>{var n=jm(),r=I(n);j(),A(n),V(()=>K(r,`The agent says “${t.claim??``}” `)),G(e,n)},h=e=>{G(e,Mm())};q(p,e=>{t.claim?e(m):e(h,-1)});var g=z(p,2),_=I(g),v=e=>{var t=Nm();$(I(t),{name:`check`,size:11,weight:2.4}),j(),A(t),V(()=>{t.disabled=!!Q.job?.running,X(t,`title`,`${H(r).why}\n$ ${H(r).command}`)}),U(`click`,t,()=>H(r)&&Q.perform(H(r))),G(e,t)};q(_,e=>{H(r)&&e(v)});var y=z(_,2),b=e=>{var t=Pm();$(I(t),{name:`sparkle`,size:11,weight:2.2}),j(),A(t),V(()=>{X(t,`aria-expanded`,H(o)),t.disabled=!!H(i).blocked||!!Q.job?.running,X(t,`title`,`${H(i).blocked??H(i).why}\n$ ${H(i).command}`)}),U(`click`,t,()=>P(o,!H(o))),G(e,t)};q(y,e=>{H(i)&&e(b)});var x=z(y,2),S=e=>{var t=Fm();V(()=>{t.disabled=!!Q.job?.running,X(t,`title`,`${H(a).why}\n$ ${H(a).command}`)}),U(`click`,t,()=>H(a)&&Q.perform(H(a))),G(e,t)};q(x,e=>{H(a)&&e(S)});var C=z(x,2);$(I(C),{name:`copy`,size:11}),A(C),A(g);var w=z(g,2),T=e=>{var n=Im(),r=I(n);Gi(r),ct(r,!0);var i=z(r,2);A(n),V(e=>{X(r,`aria-label`,`Hint for ${t.task??``}`),i.disabled=e},[()=>!H(s).trim()||!!Q.job?.running]),Lr(`submit`,n,c),$i(r,()=>H(s),e=>P(s,e)),G(e,n)};q(w,e=>{H(o)&&e(T)});var E=z(w,2),ee=e=>{var t=Lm(),n=R(t);V(()=>K(n,`Skip: ${H(a).why??``}`)),G(e,t)};q(E,e=>{H(a)?.why&&e(ee)}),A(u),A(l),V(()=>{X(l,`aria-label`,`${t.task??``} needs you`),K(f,`${t.task??``} needs you`),X(C,`aria-label`,`Copy why ${t.task??``} stopped`)}),U(`click`,C,()=>Q.copyError({message:t.claim?`${t.task} needs you — the agent says: ${t.claim}`:`${t.task} needs you: marked [YOU]`},`stopped`)),G(e,l),Ze()}Rr([`click`]);var Bm=W(`<button type="button" class="later svelte-bakid2">Not now</button>`),Vm=W(`<section><span class="glyph svelte-bakid2" aria-hidden="true"><!></span> <div class="ow svelte-bakid2"><strong class="svelte-bakid2"> </strong> <span class="svelte-bakid2"> </span></div> <div class="oa svelte-bakid2"><button type="button" class="btn small">Start a spec</button> <!></div></section>`);function Hm(e,t){Xe(t,!0);let n=ma(t,`compact`,3,!1),r=M(()=>t.item.title.replace(/^\S+\s+/,``));var i=Vm();let a;var o=I(i),s=I(o);{let e=M(()=>n()?13:15);$(s,{name:`sparkle`,get size(){return H(e)},weight:2})}A(o);var c=z(o,2),l=I(c),u=R(l),d=z(l,2),f=R(d,!0);A(c);var p=z(c,2),m=I(p),h=z(m,2),g=e=>{var n=Bm();U(`click`,n,()=>void Q.perform(t.item.actions[1])),G(e,n)};q(h,e=>{t.item.actions[1]&&e(g)}),A(p),A(i),V(()=>{a=Y(i,1,`offer svelte-bakid2`,null,a,{compact:n()}),X(i,`aria-label`,`${t.item.task??``} ${H(r)??``}`),K(u,`${t.item.task??``} ${H(r)??``}`),X(d,`title`,t.item.detail),K(f,t.item.detail)}),U(`click`,m,()=>t.onstart?t.onstart():t.item.actions[0]&&void Q.perform(t.item.actions[0])),G(e,i),Ze()}Rr([`click`]);var Um=W(`<span class="words svelte-ledzjv"> </span>`),Wm=W(`<li class="svelte-ledzjv"> </li>`),Gm=W(`<li class="more svelte-ledzjv"> </li>`),Km=W(`<section class="aside-card svelte-ledzjv" aria-label="Changes set aside"><span class="glyph svelte-ledzjv"><!></span> <div class="what svelte-ledzjv"><strong>Changes set aside</strong> <p class="svelte-ledzjv"> </p> <ul class="files mono svelte-ledzjv"><!><!></ul> <div class="row svelte-ledzjv"><button class="btn small svelte-ledzjv"><!> Show Changes</button> <button class="btn small tinted svelte-ledzjv"><!> Keep on the Branch</button> <button class="btn small ghost danger svelte-ledzjv">Discard…</button></div></div></section>`),qm=W(`<span><strong>Judged by</strong> </span>`),Jm=W(`<span><strong>Its own test failed</strong></span>`),Ym=W(`<button class="btn small svelte-ledzjv"> </button>`),Xm=W(`<p class="muted svelte-ledzjv"> </p> <span class="rulings svelte-ledzjv"></span>`,1),Zm=W(`<div><!> <!> <!></div>`),Qm=W(`<li class="mono svelte-ledzjv"> </li>`),$m=W(`<li class="svelte-ledzjv"><button class="more svelte-ledzjv"> </button></li>`),eh=W(`<dd class="sandboxed svelte-ledzjv"><span class="seal svelte-ledzjv"><!> </span> <ul class="cmds svelte-ledzjv" aria-label="Commands that ran without asking"><!> <!></ul></dd>`),th=W(`<dd class="svelte-ledzjv"><!></dd>`),nh=W(`<div><dt class="svelte-ledzjv"><span><!></span> </dt> <!></div>`),rh=W(`<p class="note svelte-ledzjv"><!><span>Every row comes from the commit's attestation — <code class="svelte-ledzjv">speccoder attest verify</code> checks it.</span></p>`),ih=W(`<!> <dl class="grouped svelte-ledzjv"></dl> <!>`,1),ah=W(`<p class="note svelte-ledzjv"><!> What the worktree held when the run started, set aside: not on the branch until you keep it.</p>`),oh=W(`<p class="note svelte-ledzjv"><!> The attempt did not pass; its code is kept for you to read, never merged.</p>`),sh=W(`<!> <!> <!>`,1),ch=W(`<p class="muted small svelte-ledzjv"> </p>`),lh=W(`<p class="muted small svelte-ledzjv">Reading the journal…</p>`),uh=W(`<p class="muted small svelte-ledzjv">The model neither reasoned aloud nor said anything in this attempt.</p>`),dh=W(`<details class="account svelte-ledzjv"><summary class="svelte-ledzjv"><!> The Model's Account <span class="muted svelte-ledzjv">— its reasoning and its words; a claim, not evidence</span></summary> <!></details>`),fh=W(`<button><!> </button>`),ph=W(`<div class="acts svelte-ledzjv"></div>`),mh=W(`<div><span class="sym svelte-ledzjv"><!></span> <span><strong class="svelte-ledzjv"> </strong><!></span></div> <!> <!> <!> <!> <div class="tabs svelte-ledzjv" role="tablist"><button role="tab">Evidence</button> <button role="tab" data-tour="tab-tour">Tour</button> <button role="tab"> </button></div> <!> <!> <!>`,1),hh=W(`<div class="loading svelte-ledzjv"><span class="spinner svelte-ledzjv"></span></div>`),gh=W(`<aside class="inspector glass svelte-ledzjv"><header class="svelte-ledzjv"><div class="title"><span class="id mono svelte-ledzjv"> <!></span> <h2 class="svelte-ledzjv"><!></h2></div> <button class="close svelte-ledzjv" aria-label="Close" title="Close (Esc)"><!></button></header> <!></aside>`);function _h(e,t){Xe(t,!0);let n=wa(),r=wa(),i=N(`evidence`),a=N(null),o=N(F(new Set)),s=N(``),c=N(!1),l=N(!1),u=M(()=>H(a)?.task.set_aside??null),d=M(()=>H(l)&&H(u)?{q:{ref:H(u).reference},label:`Set Aside`}:H(a)?.task.commit?{q:{commit:H(a).task.commit},label:`Changes`}:H(a)?.task.last_attempt?.reference?.startsWith(`refs/`)?{q:{ref:H(a).task.last_attempt.reference},label:`Last Attempt`}:null);B(()=>{let e=Q.selected,t=Q.feature??void 0;P(l,!1),Q.report,P(a,null),P(s,``),e&&n(ba(`/api/evidence${Sa({feature:t,task:e})}`),e=>P(a,e,!0))}),B(()=>{let e=H(d);H(i)===`diff`&&e&&!H(s)&&(P(c,!0),r(ba(`/api/diff${Sa(e.q)}`),e=>{P(s,e.patch,!0),P(c,!1)},()=>{P(s,``),P(c,!1)}))});let f=M(()=>(Q.report?.data?.tasks??[]).find(e=>e.id===Q.selected)?.judged??null),p=M(()=>(Q.inbox?.data?.items??[]).filter(e=>e.task===Q.selected&&e.feature===Q.feature).flatMap(e=>e.actions).filter(e=>e.id.kind===`rule_scenario`)),m=M(()=>Q.selected?Aa(Q.actions,Q.selected):[]),h=M(()=>(Q.inbox?.data?.items??[]).find(e=>e.kind===`promote`&&e.task===Q.selected&&e.feature===Q.feature)??null),g=M(()=>H(a)?xo(H(a).banner.mark).replace(/^./,e=>e.toUpperCase()):``),_=M(()=>{let e=H(a)?.banner.words??``;return e.toLowerCase()===H(g).toLowerCase()?``:e.charAt(0)+e.slice(1).toLowerCase()}),v=M(()=>Q.report?.data?.tasks.find(e=>e.id===Q.selected)?.drift??null),y=M(()=>H(a)?.task.run_id??H(a)?.task.last_attempt?.run_id??null),b=N(null),x=N(null),S=N(null);async function C(){if(!H(y)||H(x)===H(y))return;P(x,H(y),!0),P(b,null),P(S,null);let e=await ba(`/api/account${Sa({run:H(y)})}`).catch(e=>({turns:void 0,error:String(e)}));P(S,e.error??null,!0),H(S)&&P(x,null),P(b,e.turns??[],!0)}let w=N(F((()=>{try{return localStorage.getItem(`speccoder-account`)!==`closed`}catch{return!0}})()));function T(e){P(w,e.currentTarget.open,!0);try{localStorage.setItem(`speccoder-account`,H(w)?`open`:`closed`)}catch{}H(w)&&C()}B(()=>{H(w)&&H(y)&&C()});var E=gh(),ee=I(E),D=I(ee),O=I(D),k=I(O,!0),te=z(k),ne=e=>{var t=Jr();V(e=>K(t,` · ${e??``}`),[()=>wo(H(a).task.phase)]),G(e,t)};q(te,e=>{H(a)?.task.phase&&e(ne)}),A(O);var re=z(O,2),ie=I(re);{let e=M(()=>H(a)?.task.title??``);so(ie,{get text(){return H(e)}})}A(re),A(D);var ae=z(D,2);$(I(ae),{name:`xmark`,size:12,weight:2.6}),A(ae),A(ee);var oe=z(ee,2),se=e=>{var t=mh(),n=L(t),r=I(n),x=I(r);{let e=M(()=>So(H(a).banner.mark));$(x,{get name(){return H(e)},size:20,weight:2})}A(r);var C=z(r,2),E=I(C),ee=R(E,!0),D=z(E),O=e=>{var t=Um(),n=R(t,!0);V(()=>K(n,H(_))),G(e,t)};q(D,e=>{H(_)&&e(O)}),A(C),A(n);var k=z(n,2),te=e=>{Cm(e,{get drift(){return H(v)}})};q(k,e=>{H(v)&&e(te)});var ne=z(k,2),re=e=>{Hm(e,{get item(){return H(h)}})};q(ne,e=>{H(h)&&e(re)});var ie=z(ne,2),ae=e=>{{let t=M(()=>Pa(H(a).task)?.claim??null),n=M(()=>Na(Q.selected,Q.report?.data?.tasks??[],Q.report?.data?.uncommitted?.length?`commit the planning files first`:Q.approvals[0]?`${Q.approvals[0].task} waits for your decision and holds the worktree: decide it first`:null));zm(e,{get task(){return Q.selected},get claim(){return H(t)},get actions(){return H(n)}})}},oe=M(()=>Pa(H(a).task)&&Q.selected);q(ie,e=>{H(oe)&&e(ae)});var se=z(ie,2),ce=e=>{let t=M(()=>Q.selected);var n=Km(),r=I(n);$(I(r),{name:`tray`,size:16,weight:2}),A(r);var a=z(r,2),o=z(I(a),2),s=R(o),c=z(o,2),d=I(c);J(d,16,()=>H(u).files.slice(0,5),e=>e,(e,t)=>{var n=Wm(),r=R(n,!0);V(()=>K(r,t)),G(e,n)});var f=z(d),p=e=>{var t=Gm(),n=R(t);V(()=>K(n,`+${H(u).files.length-5} more`)),G(e,t)};q(f,e=>{H(u).files.length>5&&e(p)}),A(c);var m=z(c,2),h=I(m);$(I(h),{name:`doc`,size:12}),j(),A(h);var g=z(h,2);$(I(g),{name:`check`,size:12,weight:2.4}),j(),A(g);var _=z(g,2);A(m),A(a),A(n),V(()=>{K(s,`${H(u).files.length??``} ${H(u).files.length===1?`file was`:`files were`} changed in the worktree when this task's run started — your edits, or an interrupted run's. They are not on the branch yet.`),g.disabled=!!Q.job?.running,_.disabled=!!Q.job?.running}),U(`click`,h,()=>{P(l,!0),P(i,`diff`)}),U(`click`,g,()=>Q.perform(ja({kind:`keep_set_aside`,task:H(t)},{group:`task`,label:`keep the changes set aside before ${H(t)}`,why:`committed onto the feature's branch as yours`,command:`speccoder task restore ${H(t)}`}))),U(`click`,_,()=>Q.perform(ja({kind:`drop_set_aside`,task:H(t)},{group:`task`,label:`discard the changes set aside before ${H(t)}`,why:`deleted; the branch stays as it is`,command:`speccoder task drop ${H(t)}`,confirm:`Discard the ${H(u).files.length} changed file(s) set aside before ${H(t)}? They are deleted, not kept anywhere.`}))),G(e,n)};q(se,e=>{H(u)&&Q.selected&&e(ce)});var le=z(se,2),ue=I(le);let de;var fe=z(ue,2);let pe;var me=z(fe,2);let he;var ge=R(me,!0);A(le);var _e=z(le,2),ve=e=>{var t=ih(),n=L(t),r=e=>{let t=M(()=>H(p).some(e=>e.run&&`scenario`in e.run&&!e.run.scenario));var n=Zm();let r;var i=I(n);$(i,{name:`seal`,size:13});var a=z(i,2),o=e=>{var t=qm(),n=z(I(t));A(t),V(e=>K(n,` ${e??``}`),[()=>ls(H(f))]),G(e,t)},s=e=>{G(e,Jm())};q(a,e=>{H(f)?e(o):e(s,-1)});var c=z(a,2),l=e=>{var n=Xm(),r=L(n),i=R(r,!0),a=z(r,2);J(a,21,()=>H(p),e=>e.command,(e,t)=>{var n=Ym(),r=R(n,!0);V(()=>{n.disabled=!!Q.job?.running,X(n,`title`,`$ ${H(t).command}`),K(r,H(t).run&&`scenario`in H(t).run&&H(t).run.scenario?`${H(t).run.scenario}'s Tests Are Wrong…`:`These Tests Are Wrong…`)}),U(`click`,n,()=>Q.perform(H(t))),G(e,n)}),A(a),V(()=>K(i,H(t)?`When its test asserts what the spec does not say, rule it wrong: the next run writes it again, your reason told to its author.`:`The story is still open. When a scenario's tests assert what the spec does not say, rule them wrong: the next run writes them again, and nothing else.`)),G(e,n)};q(c,e=>{H(p).length&&e(l)}),A(n),V(()=>r=Y(n,1,`judged svelte-ledzjv`,null,r,{offer:H(p).length>0})),G(e,n)};q(n,e=>{(H(f)||H(p).length)&&e(r)});var i=z(n,2);J(i,21,()=>H(a).rows,e=>e.label+e.text,(e,t)=>{var n=nh();Yi(n,e=>({class:`row`,"data-tour-row":H(t).label,...e,[Ii]:{claim:H(t).label===`Model says`}}),[()=>Ga(`evidence_row`,{task:Q.selected,label:H(t).label},`${Q.selected} · ${H(t).label}`,`Evidence of ${Q.selected}, ${H(t).label}: ${H(t).text}`)],void 0,void 0,`svelte-ledzjv`);var r=I(n),i=I(r),a=I(i);{let e=M(()=>So(H(t).mark));$(a,{get name(){return H(e)},size:11,weight:2.4})}A(i);var s=z(i,1,!0);A(r);var c=z(r,2),l=e=>{var n=eh(),r=I(n),i=I(r);$(i,{name:`shield`,size:12,weight:2.2});var a=z(i);A(r);var s=z(r,2),c=I(s);J(c,17,()=>H(o).has(H(t).label)?H(t).items:H(t).items.slice(0,4),si,(e,t)=>{var n=Qm(),r=R(n,!0);V(()=>{X(n,`title`,H(t)),K(r,H(t))}),G(e,n)});var l=z(c,2),u=e=>{var n=$m(),r=I(n),i=R(r);A(n),V(()=>K(i,`+${H(t).items.length-4} more`)),U(`click`,r,()=>P(o,new Set([...H(o),H(t).label]),!0)),G(e,n)},d=M(()=>H(t).items.length>4&&!H(o).has(H(t).label));q(l,e=>{H(d)&&e(u)}),A(s),A(n),V(()=>K(a,` ${H(t).items.length??``} ran in the sandbox — nobody had to be asked`)),G(e,n)},u=e=>{var n=th();so(I(n),{get text(){return H(t).text}}),A(n),G(e,n)};q(c,e=>{H(t).items?.length?e(l):e(u,-1)}),A(n),V(()=>{Y(i,1,`dot s-${H(t).mark??``}`,`svelte-ledzjv`),K(s,H(t).label)}),G(e,n)}),A(i);var s=z(i,2),c=e=>{var t=rh();$(I(t),{name:`shield`,size:13}),j(),A(t),G(e,t)};q(s,e=>{H(a).task.commit&&e(c)}),G(e,t)},ye=e=>{{let t=M(()=>Q.feature??void 0);Am(e,{get feature(){return H(t)},get task(){return Q.selected}})}},be=e=>{var t=sh(),n=L(t),r=e=>{var t=ah();$(I(t),{name:`info`,size:13}),j(),A(t),G(e,t)};q(n,e=>{H(d)?.label===`Set Aside`&&e(r)});var i=z(n,2),a=e=>{var t=oh();$(I(t),{name:`info`,size:13}),j(),A(t),G(e,t)};q(i,e=>{H(d)?.label===`Last Attempt`&&e(a)}),_m(z(i,2),{get patch(){return H(s)},get loading(){return H(c)}}),G(e,t)};q(_e,e=>{H(i)===`evidence`?e(ve):H(i)===`tour`&&Q.selected?e(ye,1):e(be,-1)});var xe=z(_e,2),Se=e=>{var t=dh(),n=I(t);$(I(n),{name:`sparkle`,size:12,weight:2.2}),j(2),A(n);var r=z(n,2),i=e=>{var t=ch(),n=R(t);V(()=>K(n,`The journal could not be read: ${H(S)??``}`)),G(e,t)},a=e=>{G(e,lh())},o=e=>{G(e,uh())},s=e=>{Jp(e,{get turns(){return H(b)}})};q(r,e=>{H(S)?e(i):H(b)===null?e(a,1):H(b).length?e(s,-1):e(o,2)}),A(t),V(()=>t.open=H(w)),Lr(`toggle`,t,T),G(e,t)};q(xe,e=>{H(y)&&e(Se)});var Ce=z(xe,2),we=e=>{var t=ph();J(t,21,()=>H(m),e=>Da(e),(e,t)=>{let n=M(()=>Ta[H(t).id.kind]);var r=fh();let i;var a=I(r),o=e=>{$(e,{get name(){return H(n).icon},size:11,weight:2.2})};q(a,e=>{H(n).icon&&e(o)});var s=z(a);A(r),V(()=>{i=Y(r,1,`btn small svelte-ledzjv`,null,i,{primary:H(t).group===`work`}),r.disabled=!!H(t).blocked||!!Q.job?.running,X(r,`title`,`${H(t).blocked??H(t).why}\n$ ${H(t).command}`),K(s,`${H(n).verb??``}${H(t).input?`…`:``}`)}),U(`click`,r,()=>Q.perform(H(t))),G(e,r)}),A(t),G(e,t)};q(Ce,e=>{H(m).length&&e(we)}),V(()=>{Y(n,1,`verdict s-${H(a).banner.mark??``}`,`svelte-ledzjv`),K(ee,H(g)),X(ue,`aria-selected`,H(i)===`evidence`),de=Y(ue,1,`svelte-ledzjv`,null,de,{on:H(i)===`evidence`}),X(fe,`aria-selected`,H(i)===`tour`),fe.disabled=!H(a).task.commit,X(fe,`title`,H(a).task.commit?`The evidence, step by step`:`No commit carries this task's evidence`),pe=Y(fe,1,`svelte-ledzjv`,null,pe,{on:H(i)===`tour`}),X(me,`aria-selected`,H(i)===`diff`),me.disabled=!H(d),X(me,`title`,H(d)?``:`No code yet: the task has no commit and no attempt`),he=Y(me,1,`svelte-ledzjv`,null,he,{on:H(i)===`diff`}),K(ge,H(d)?.label??`Changes`)}),U(`click`,ue,()=>P(i,`evidence`)),U(`click`,fe,()=>P(i,`tour`)),U(`click`,me,()=>P(i,`diff`)),G(e,t)},ce=e=>{G(e,hh())};q(oe,e=>{H(a)?e(se):e(ce,-1)}),A(E),V(()=>{X(E,`aria-label`,`Task ${Q.selected??``}`),K(k,Q.selected)}),U(`click`,ae,()=>Q.selectTask(null)),G(e,E),Ze()}Rr([`click`]);var vh=W(`<span class="alone svelte-xomvbj"><!> decides alone</span>`),yh=W(`<span class="unknown svelte-xomvbj">not known whether it asks</span>`),bh=W(`<span class="asks svelte-xomvbj">asks before acting</span>`),xh=W(` <button class="link svelte-xomvbj">Make it ask first</button>`,1),Sh=W(`<p class="mode svelte-xomvbj"> <!></p>`),Ch=W(`<span aria-hidden="true"></span>`),wh=W(`<button> </button>`),Th=W(`<span> </span>`),Eh=W(`<!> <!>`,1),Dh=W(`<span class="dot svelte-xomvbj"></span>`),Oh=W(`<li><span class="g svelte-xomvbj" aria-hidden="true"><!></span> <span class="svelte-xomvbj"> </span></li>`),kh=W(`<ol class="plan svelte-xomvbj"></ol>`),Ah=W(`<div><p class="who svelte-xomvbj"><!> <strong> </strong> <!></p> <!> <p class="tally mono svelte-xomvbj" title="What speccoder decided of the calls the agent asked about, its files and commands"></p> <!></div>`);function jh(e,t){Xe(t,!0);let n=ma(t,`dark`,3,!1),r=ma(t,`filter`,3,null),i=ma(t,`onfilter`,3,null),a=ma(t,`onfix`,3,null),o=M(()=>[[t.agent.asked,`asked`,null],[t.agent.allowed,`allowed`,`allow`],[t.agent.waited,`waited for you`,`approval`],[t.agent.refused,`refused`,`deny`]].filter(([e,,t])=>t===null||t===`allow`||e>0));var s=Ah();let c;var l=I(s),u=I(l);$(u,{name:`sparkle`,size:12});var d=z(u,2),f=R(d,!0),p=z(d,2),m=e=>{var n=vh();$(I(n),{name:`exclaim`,size:11,weight:2.4}),j(),A(n),V(()=>X(n,`title`,t.agent.mode??``)),G(e,n)},h=e=>{var n=yh();V(()=>X(n,`title`,t.agent.mode??``)),G(e,n)},_=e=>{var n=bh();V(()=>X(n,`title`,t.agent.mode??``)),G(e,n)};q(p,e=>{t.agent.decides_alone?e(m):t.agent.known===!1?e(h,1):e(_,-1)}),A(l);var v=z(l,2),y=e=>{var n=Sh(),r=I(n),i=z(r),o=e=>{var t=xh(),n=L(t,!0);n.nodeValue=` `,U(`click`,z(n),function(...e){a()?.apply(this,e)}),G(e,t)};q(i,e=>{a()&&e(o)}),A(n),V(()=>K(r,`${t.agent.unasked?`It changed ${t.agent.unasked===1?`something`:`${t.agent.unasked} things`} without asking — `:t.agent.mode?`${t.agent.mode} — `:``}what it does without asking never reaches speccoder.`)),G(e,n)};q(v,e=>{t.agent.decides_alone&&e(y)});var b=z(v,2);J(b,23,()=>H(o),([e,t,n])=>t,(e,t,n)=>{var a=M(()=>g(H(t),3));let o=()=>H(a)[0],s=()=>H(a)[1],c=()=>H(a)[2];var l=Eh(),u=L(l),d=e=>{var t=Ch();t.textContent=` · `,G(e,t)};q(u,e=>{H(n)&&e(d)});var f=z(u,2),p=e=>{var t=wh();let n;var a=R(t);V(()=>{n=Y(t,1,`count svelte-xomvbj`,null,n,{on:r()===c()&&c()!==null}),K(a,`${o()??``} ${s()??``}`)}),U(`click`,t,()=>i()?.(r()===c()?null:c())),G(e,t)},m=e=>{var t=Th(),n=R(t);V(()=>K(n,`${o()??``} ${s()??``}`)),G(e,t)};q(f,e=>{i()?e(p):e(m,-1)}),G(e,l)}),A(b);var x=z(b,2),S=e=>{var n=kh();J(n,21,()=>t.agent.plan,si,(e,t)=>{var n=Oh(),r=I(n),i=I(r),a=e=>{$(e,{name:`check`,size:10,weight:3})},o=e=>{G(e,Dh())};q(i,e=>{H(t).status===`completed`?e(a):H(t).status===`in_progress`&&e(o,1)}),A(r);var s=R(z(r,2),!0);A(n),V(()=>{Y(n,1,xi(H(t).status),`svelte-xomvbj`),K(s,H(t).content)}),G(e,n)}),A(n),V(()=>X(n,`aria-label`,`${t.agent.name??``}'s plan (its own words)`)),G(e,n)};q(x,e=>{t.agent.plan.length&&e(S)}),A(s),V(()=>{c=Y(s,1,`agent svelte-xomvbj`,null,c,{dark:n()}),K(f,t.agent.name)}),G(e,s),Ze()}Rr([`click`]);var Mh=W(`<span class="spinner svelte-k6l9sr"></span>`),Nh=W(`<strong class="svelte-k6l9sr">Needs you</strong>`),Ph=W(`<span class="dim svelte-k6l9sr"> </span>`),Fh=W(`<span> </span>`),Ih=W(`<strong class="svelte-k6l9sr"> </strong><!><!>`,1),Lh=W(`<strong class="svelte-k6l9sr"> </strong><span class="dim svelte-k6l9sr"> </span>`,1),Rh=W(`<span class="progress svelte-k6l9sr" aria-hidden="true"><span class="svelte-k6l9sr"></span></span> <span class="time mono svelte-k6l9sr"> </span>`,1),zh=W(`<span class="task svelte-k6l9sr"> </span>`),Bh=W(`<p title="Where the model's reasoning landed — its account, not evidence"><span class="therefore svelte-k6l9sr" aria-hidden="true">∴</span> </p>`),Vh=W(`<p class="now svelte-k6l9sr" title="What the model says it is doing — its account, not evidence"> </p>`),Hh=W(`<span class="mini-spin svelte-k6l9sr"></span>`),Uh=W(`<li><span class="g svelte-k6l9sr" aria-hidden="true"><!></span> <span class="n svelte-k6l9sr"> </span> <span class="t mono svelte-k6l9sr"> </span></li>`),Wh=W(`<div> </div>`),Gh=W(`<div class="dim svelte-k6l9sr">No tool calls yet.</div>`),Kh=W(`<span class="usage mono svelte-k6l9sr"> <!></span>`),qh=W(`<button class="btn small danger svelte-k6l9sr" title="Stops before the next task; the attempt stays resumable"><!>Stop</button>`),Jh=W(`<button class="btn small svelte-k6l9sr"> </button>`),Yh=W(`<!> <button class="btn small svelte-k6l9sr">Dismiss</button>`,1),Xh=W(`<div class="body svelte-k6l9sr"><div class="meta svelte-k6l9sr"><code class="svelte-k6l9sr"> </code> <!></div> <!> <!> <!> <ol class="pipeline svelte-k6l9sr" aria-label="Pipeline"></ol> <div class="log mono svelte-k6l9sr" aria-live="polite"></div> <div class="foot svelte-k6l9sr"><!> <!></div></div>`),Zh=W(`<div role="region" aria-label="The job"><button class="bar svelte-k6l9sr"><span class="state svelte-k6l9sr" aria-hidden="true"><!></span> <span class="what svelte-k6l9sr"><!></span> <!> <!></button> <!></div>`);function Qh(e,t){Xe(t,!0);let n=N(!1),r=N(null),i=M(()=>H(r)?Q.calls.filter(e=>e.includes(`  ${H(r)}`)):Q.calls);function a(){Q.settingsPick=`executor`,Q.view=`settings`}let o=M(()=>{let e=Q.job?.result?.data;return Q.job?.running||Q.job?.result?.status===`ok`||!e?.task||!e.agent?null:{task:e.task,preset:e.agent.preset}});B(()=>{H(o)&&Q.loadAgents(!1).catch(()=>{})});let s=M(()=>{if(!H(o))return null;let e=(Q.agents?.cards??[]).filter(e=>e.installed.state===`yes`),t=e.findIndex(e=>e.id===H(o).preset);return[...e.slice(t+1),...e.slice(0,Math.max(t,0))].find(e=>e.id!==H(o).preset)??null});function c(){if(!H(o)||!H(s))return;let{task:e}=H(o);Q.perform(ja({kind:`run`,task:e,agent:H(s).id},{group:`work`,label:`try ${e} with ${H(s).name}`,why:`the same task, another agent: one attempt, judged the same way`,command:`speccoder run --task ${e} --agent ${H(s).id}`}))}let l=N(null),u=N(F(Date.now())),d=N(null);B(()=>{if(Q.job?.running){P(l,null),P(d,H(d)??Date.now(),!0);let e=setInterval(()=>P(u,Date.now(),!0),1e3);return()=>clearInterval(e)}P(d,null)});let f=M(()=>!!Q.job&&H(l)!==Q.job.id),p=M(()=>!!Q.job?.running),m=M(()=>Q.job?.result?.status===`ok`),h=M(()=>!!Q.waiting),g=M(()=>new Map(Q.stages.map(e=>[e.stage,e]))),_=M(()=>[...H(g).has(`prepare`)?[`prepare`]:[],`baseline`,`red`,`attempt`,`verify`,`audit`,`mutation`,`strength`,`monitor`,`commit`]),v=M(()=>[...Q.stages].reverse().find(e=>e.state===`started`)?.stage),y=M(()=>Q.stages.filter(e=>e.state===`passed`||e.state===`skipped`).length),b=M(()=>H(d)?Math.max(0,Math.floor((H(u)-H(d))/1e3)):0),x=e=>`${Math.floor(e/60)}:${String(e%60).padStart(2,`0`)}`,S=e=>e==null?``:e<1e4?`${(e/1e3).toFixed(1)}s`:`${Math.round(e/1e3)}s`,C=N(void 0);B(()=>{Q.calls.length,H(C)&&(H(C).scrollTop=H(C).scrollHeight)});var w=Yr(),T=L(w),E=e=>{var t=Zh();let u;var d=I(t),f=I(d),w=I(f),T=e=>{$(e,{name:`hand`,size:15,weight:2})},E=e=>{G(e,Mh())},ee=e=>{$(e,{name:`check`,size:15,weight:2.4})},D=e=>{$(e,{name:`xmark`,size:14,weight:2.4})};q(w,e=>{H(h)?e(T):H(p)?e(E,1):H(m)?e(ee,2):e(D,-1)}),A(f);var O=z(f,2),k=I(O),te=e=>{G(e,Nh())},ne=e=>{var t=Ih(),n=L(t),r=R(n,!0),i=z(n),a=e=>{var t=Ph(),n=R(t,!0);V(()=>K(n,H(v))),G(e,t)};q(i,e=>{H(v)&&e(a)});var o=z(i),s=e=>{var t=Fh();let n;var r=R(t);V(()=>{n=Y(t,1,`dim svelte-k6l9sr`,null,n,{alone:Q.agent.decides_alone}),X(t,`title`,Q.agent.mode),K(r,`· ${Q.agent.name??``}${Q.agent.decides_alone?` (decides alone)`:``}`)}),G(e,t)};q(o,e=>{Q.agent&&e(s)}),V(()=>K(r,Q.task?.id??`Working`)),G(e,t)},re=e=>{var t=Lh(),n=L(t),r=R(n,!0),i=R(z(n),!0);V(()=>{K(r,H(m)?`Done`:`Ended`),K(i,Q.job.result?.message??``)}),G(e,t)};q(k,e=>{H(h)?e(te):H(p)?e(ne,1):e(re,-1)}),A(O);var ie=z(O,2),ae=e=>{var t=Rh(),n=L(t),r=R(n),i=R(z(n,2),!0);V(e=>{Oi(r,`width:${H(y)/H(_).length*100}%`),K(i,e)},[()=>x(H(b))]),G(e,t)};q(ie,e=>{H(p)&&e(ae)});var oe=z(ie,2);{let e=M(()=>H(n)?`down`:`arrowup`);$(oe,{get name(){return H(e)},size:13})}A(d);var se=z(d,2),ce=e=>{var t=Xh(),u=I(t),d=I(u),f=R(d,!0),m=z(d,2),h=e=>{var t=zh(),n=R(t,!0);V(()=>K(n,Q.task.title)),G(e,t)};q(m,e=>{Q.task&&e(h)}),A(u);var v=z(u,2),y=e=>{jh(e,{get agent(){return Q.agent},dark:!0,get filter(){return H(r)},onfilter:e=>P(r,e,!0),onfix:a})};q(v,e=>{Q.agent&&e(y)});var b=z(v,2),x=e=>{var t=Bh();let n;var r=z(I(t));A(t),V(()=>{n=Y(t,1,`thinking svelte-k6l9sr`,null,n,{live:Q.job?.running}),K(r,` ${Q.thinking??``}`)}),G(e,t)};q(b,e=>{Q.thinking&&e(x)});var w=z(b,2),T=e=>{var t=Vh(),n=R(t);V(()=>K(n,`“${Q.said??``}”`)),G(e,t)};q(w,e=>{Q.said&&e(T)});var E=z(w,2);J(E,21,()=>H(_),si,(e,t)=>{let n=M(()=>H(g).get(H(t)));var r=Uh(),i=I(r),a=I(i),o=e=>{$(e,{name:`check`,size:11,weight:3})},s=e=>{$(e,{name:`xmark`,size:10,weight:3})},c=e=>{G(e,Hh())};q(a,e=>{H(n)?.state===`passed`?e(o):H(n)?.state===`failed`?e(s,1):H(n)?.state===`started`&&e(c,2)}),A(i);var l=z(i,2),u=R(l,!0),d=R(z(l,2),!0);A(r),V(e=>{Y(r,1,`st-${H(n)?.state??`todo`??``}`,`svelte-k6l9sr`),X(r,`title`,H(n)?.detail??``),K(u,H(t)),K(d,e)},[()=>H(n)?.state===`started`?``:S(H(n)?.elapsed_ms??null)]),G(e,r)}),A(E);var ee=z(E,2);J(ee,21,()=>H(i),si,(e,t)=>{var n=Wh();let r;var i=R(n,!0);V((e,a,o,s)=>{r=Y(n,1,`svelte-k6l9sr`,null,r,{said:e,thought:a,deny:o,ask:s}),K(i,H(t))},[()=>H(t).startsWith(`“`),()=>H(t).startsWith(`∴`),()=>H(t).includes(` deny`),()=>H(t).includes(` approval`)||H(t).endsWith(` challenged`)]),G(e,n)},e=>{G(e,Gh())}),A(ee),sa(ee,e=>P(C,e),()=>H(C));var D=z(ee,2),O=I(D),k=e=>{var t=Kh(),n=I(t),r=z(n),i=e=>{var t=Jr();V(e=>K(t,` · $${e??``}`),[()=>Q.usage.usd.toFixed(4)]),G(e,t)};q(r,e=>{Q.usage.usd!=null&&e(i)}),A(t),V((e,t)=>K(n,`${e??``} in · ${t??``} out`),[()=>Q.usage.in.toLocaleString(),()=>Q.usage.out.toLocaleString()]),G(e,t)};q(O,e=>{(Q.usage.in||Q.usage.out)&&e(k)});var te=z(O,2),ne=e=>{var t=qh();$(I(t),{name:`stop`,size:10}),j(),A(t),U(`click`,t,()=>Q.stop()),G(e,t)},re=e=>{var t=Yh(),r=L(t),i=e=>{var t=Jh(),n=R(t);V(()=>{X(t,`title`,`speccoder run --task ${H(o)?.task??``} --agent ${H(s).id??``}`),K(n,`Try with ${H(s).name??``}`)}),U(`click`,t,c),G(e,t)};q(r,e=>{H(s)&&e(i)}),U(`click`,z(r,2),()=>{P(l,Q.job?.id??null,!0),P(n,!1)}),G(e,t)};q(te,e=>{H(p)?e(ne):e(re,-1)}),A(D),A(t),V(()=>K(f,Q.job.command)),G(e,t)};q(se,e=>{H(n)&&e(ce)}),A(t),V(()=>{u=Y(t,1,`island glass svelte-k6l9sr`,null,u,{open:H(n),waiting:H(h),ok:!H(p)&&H(m),bad:!H(p)&&!H(m)}),X(d,`aria-expanded`,H(n))}),U(`click`,d,()=>P(n,!H(n))),G(e,t)};q(T,e=>{H(f)&&Q.job&&e(E)}),G(e,w),Ze()}Rr([`click`]);var $h=W(` <!>`,1),eg=W(`<span> </span>`),tg=W(`<button class="btn small ghost more svelte-h1uq4c"> <kbd>V</kbd></button>`),ng=W(`<pre class="object svelte-h1uq4c" aria-label="What a decision covers"> </pre>`),rg=W(`<div><!></div>`),ig=W(`<div class="sources svelte-h1uq4c" role="note"><!> <div><!> <div class="muted">Copied from content the model read: only “Allow Once” can be given.</div></div></div>`),ag=W(`<p class="notice muted svelte-h1uq4c"> </p>`),og=W(`<div class="svelte-h1uq4c"><dt class="svelte-h1uq4c">The model says</dt><dd class="claim svelte-h1uq4c"> <span class="muted">— a claim, not evidence</span></dd></div>`),sg=W(`<div class="reject svelte-h1uq4c"><input placeholder="Why not? The model is told." class="svelte-h1uq4c"/> <button class="btn danger">Don't Allow</button> <button class="btn">Cancel</button></div>`),cg=W(`<div class="always svelte-h1uq4c"><!> <span class="svelte-h1uq4c"> <code> </code> to <code> </code> — nothing after it runs because of this. Commit speccoder.toml in Settings to put it in force.</span> <button class="btn small">Cancel</button> <button class="btn small primary">Allow and Add</button></div>`),lg=W(`<button class="btn svelte-h1uq4c" title="Add exactly this command to the project's policy">Always Allow… <kbd>A</kbd></button>`),ug=W(`<header class="svelte-h1uq4c"><span class="badge svelte-h1uq4c" aria-hidden="true"><!></span> <div class="heads svelte-h1uq4c"><span class="eyebrow svelte-h1uq4c"> <!></span> <h2 id="ask-title" class="svelte-h1uq4c"> <span class="mono subject svelte-h1uq4c"> </span></h2></div> <span> </span></header> <pre class="body svelte-h1uq4c"></pre> <!> <!> <!> <!> <dl class="grouped svelte-h1uq4c"><div class="svelte-h1uq4c"><dt class="svelte-h1uq4c">Why it stopped</dt><dd class="svelte-h1uq4c"><!></dd></div> <div class="svelte-h1uq4c"><dt class="svelte-h1uq4c">Sandbox</dt><dd class="svelte-h1uq4c"> </dd></div> <!> <div class="svelte-h1uq4c"><dt class="svelte-h1uq4c">“For this task” covers</dt><dd class="svelte-h1uq4c"><!></dd></div></dl> <input class="note svelte-h1uq4c" placeholder="Add a note for the model with your yes (optional)"/> <!> <!> <div class="choices svelte-h1uq4c"><button class="btn plain svelte-h1uq4c" title="The call keeps waiting; decide later with speccoder task approve">Stop Task <kbd>S</kbd></button> <span class="spacer svelte-h1uq4c"></span> <button class="btn danger svelte-h1uq4c">Don't Allow… <kbd>N</kbd></button> <!> <button class="btn svelte-h1uq4c">Allow for Run <kbd>R</kbd></button> <button class="btn svelte-h1uq4c">Allow for Task <kbd>T</kbd></button> <button class="btn primary svelte-h1uq4c">Allow Once <kbd>Y</kbd></button></div>`,1),dg=W(`<header class="svelte-h1uq4c"><span class="badge q svelte-h1uq4c" aria-hidden="true"><!></span> <div class="heads svelte-h1uq4c"><span class="eyebrow svelte-h1uq4c">A question from the planning skill</span> <h2 id="ask-title" class="svelte-h1uq4c"> </h2></div></header> <textarea rows="4" placeholder="Your answer" class="svelte-h1uq4c"></textarea> <div class="choices svelte-h1uq4c"><span class="spacer svelte-h1uq4c"></span> <button class="btn svelte-h1uq4c">Skip</button> <button class="btn primary svelte-h1uq4c">Answer</button></div>`,1),fg=W(`<div class="scrim svelte-h1uq4c"><div class="sheet glass svelte-h1uq4c" role="dialog" aria-modal="true" aria-labelledby="ask-title"><!></div></div>`);function pg(e,t){Xe(t,!0);let n=M(()=>Q.waiting),r=M(()=>H(n).presentation),i=N(!1),a=N(``),o=N(``),s=N(!1),c=N(``),l=M(()=>new Set(H(r)?.request.options??[])),u=M(()=>(H(i)?H(r)?.full:H(r)?.body)??[]),d=e=>e.trimStart().startsWith(`+`)&&!e.includes(`+++`)?`add`:e.trimStart().startsWith(`-`)&&!e.includes(`---`)?`del`:``,f=e=>Q.answer({answer:{decision:`approve`,scope:e,note:H(a).trim()||null,reason:null,by:null}}),p=()=>Q.answer({answer:{decision:`approve`,scope:`once`,note:null,reason:null,by:null,always:!0}}),m=()=>{H(o).trim()&&Q.answer({answer:{decision:`reject`,scope:`once`,note:null,reason:H(o).trim(),by:null}})},h=M(()=>{let e=H(r)?.request.arguments?.argv;return Array.isArray(e)&&e.every(e=>typeof e==`string`)?e:null}),g=M(()=>H(r)?.request.kind===`network`?`[sandbox] network_allow`:`[commands] allow`),_=N(!1),v=()=>Q.answer({answer:{decision:`stop`,scope:`once`,note:null,reason:null,by:null}});function y(e){if(e.target.closest(`input, textarea`)||!H(r))return;let t=e.key.toLowerCase();if(t===`y`||t===`1`)f(`once`);else if((t===`t`||t===`2`)&&H(l).has(`task`))f(`task`);else if((t===`r`||t===`3`)&&H(l).has(`run`))f(`run`);else if((t===`a`||t===`4`)&&H(l).has(`always`))P(_,!0);else if(t===`n`||t===`5`)P(s,!0);else if(t===`s`||t===`6`)v();else if(t===`v`)P(i,!H(i));else return;e.preventDefault()}var b=fg();Lr(`keydown`,on,y);var x=I(b),S=I(x),C=e=>{var t=ug(),n=L(t),c=I(n);$(I(c),{name:`hand`,size:22,weight:2}),A(c);var y=z(c,2),b=I(y),x=I(b),S=z(x),C=e=>{var t=$h(),n=L(t,!0);n.nodeValue=` · `,so(z(n),{get text(){return H(r).request.task_title}}),G(e,t)};q(S,e=>{H(r).request.task_title&&e(C)}),A(b);var w=z(b,2),T=I(w),E=R(z(T),!0);A(w),A(y);var ee=z(y,2),D=R(ee);A(n);var O=z(n,2);J(O,21,()=>H(u),si,(e,t)=>{var n=eg(),r=R(n);V(e=>{Y(n,1,e,`svelte-h1uq4c`),K(r,`${H(t)??``}
`)},[()=>xi(d(H(t)))]),G(e,n)}),A(O);var k=z(O,2),te=e=>{var t=tg(),n=I(t);j(),A(t),V(()=>K(n,`${H(i)?`Show Less`:`Show All ${H(r).full.length} Lines`} `)),U(`click`,t,()=>P(i,!H(i))),G(e,t)};q(k,e=>{H(r).full.length>H(r).body.length&&e(te)});var ne=z(k,2),re=e=>{var t=ng(),n=R(t,!0);V(e=>K(n,e),[()=>H(r).object.join(`
`)]),G(e,t)};q(ne,e=>{H(r).object?.length&&e(re)});var ie=z(ne,2),ae=e=>{var t=ig(),n=I(t);$(n,{name:`exclaim`,size:14,weight:2});var i=z(n,2);J(I(i),17,()=>H(r).sources,si,(e,t)=>{var n=rg();so(I(n),{get text(){return H(t)}}),A(n),G(e,n)}),j(2),A(i),A(t),G(e,t)};q(ie,e=>{H(r).sources?.length&&e(ae)});var oe=z(ie,2),se=e=>{var t=ag(),n=R(t,!0);V(()=>K(n,H(r).notice)),G(e,t)};q(oe,e=>{H(r).notice&&e(se)});var ce=z(oe,2),le=I(ce),ue=z(I(le));so(I(ue),{get text(){return H(r).request.reason}}),A(ue),A(le);var de=z(le,2),fe=R(z(I(de)),!0);A(de);var pe=z(de,2),me=e=>{var t=og(),n=z(I(t)),i=I(n);j(),A(n),A(t),V(()=>K(i,`“${H(r).request.claim??``}” `)),G(e,t)};q(pe,e=>{H(r).request.claim&&e(me)});var he=z(pe,2),ge=z(I(he));so(I(ge),{get text(){return H(r).scope}}),A(ge),A(he),A(ce);var _e=z(ce,2);Gi(_e);var ve=z(_e,2),ye=e=>{var t=sg(),n=I(t);Gi(n),ct(n,!0);var r=z(n,2),i=z(r,2);A(t),V(e=>r.disabled=e,[()=>!H(o).trim()]),U(`keydown`,n,e=>e.key===`Enter`&&m()),$i(n,()=>H(o),e=>P(o,e)),U(`click`,r,m),U(`click`,i,()=>P(s,!1)),G(e,t)};q(ve,e=>{H(s)&&e(ye)});var be=z(ve,2),xe=e=>{var t=cg(),n=I(t);$(n,{name:`lock`,size:14,weight:2});var r=z(n,2),i=I(r);i.nodeValue=`Adds exactly this command `;var a=z(i),o=R(a,!0),s=R(z(a,2),!0);j(),A(r);var c=z(r,2),l=z(c,2);A(t),V(e=>{K(o,e),K(s,H(g))},[()=>JSON.stringify(H(h))]),U(`click`,c,()=>P(_,!1)),U(`click`,l,p),G(e,t)},Se=M(()=>H(_)&&H(l).has(`always`));q(be,e=>{H(Se)&&e(xe)});var Ce=z(be,2),we=I(Ce),Te=z(we,4),Ee=z(Te,2),De=e=>{var t=lg();U(`click`,t,()=>P(_,!0)),G(e,t)},Oe=M(()=>H(l).has(`always`));q(Ee,e=>{H(Oe)&&e(De)});var ke=z(Ee,2),Ae=z(ke,2),je=z(Ae,2);ct(je,!0),A(Ce),V((e,t,n,i)=>{K(x,`${H(r).request.task??``}${H(r).request.turn?` · turn ${H(r).request.turn}`:``}`),K(T,`${H(r).title??``} `),K(E,H(r).subject),Y(ee,1,`risk r-${H(r).request.risk??``}`,`svelte-h1uq4c`),K(D,`${H(r).request.risk??``} risk`),K(fe,H(r).sandbox),ke.disabled=e,X(ke,`title`,t),Ae.disabled=n,X(Ae,`title`,i)},[()=>!H(l).has(`run`),()=>H(l).has(`run`)?`This exact object, in every task of this run`:`Not offered: high risk, or copied from content the model read`,()=>!H(l).has(`task`),()=>H(l).has(`task`)?`This exact object, for the rest of the task in this run`:`Not offered: copied from content the model read`]),$i(_e,()=>H(a),e=>P(a,e)),U(`click`,we,v),U(`click`,Te,()=>P(s,!0)),U(`click`,ke,()=>f(`run`)),U(`click`,Ae,()=>f(`task`)),U(`click`,je,()=>f(`once`)),G(e,t)},w=e=>{var t=dg(),r=L(t),i=I(r);$(I(i),{name:`info`,size:22,weight:2}),A(i);var a=z(i,2),o=R(z(I(a),2),!0);A(a),A(r);var s=z(r,2);lt(s),ct(s,!0);var l=z(s,2),u=z(I(l),2),d=z(u,2);A(l),V(()=>K(o,H(n).question)),$i(s,()=>H(c),e=>P(c,e)),U(`click`,u,()=>Q.answer({text:``})),U(`click`,d,()=>Q.answer({text:H(c)})),G(e,t)};q(S,e=>{H(r)?e(C):e(w,-1)}),A(x),A(b),G(e,b),Ze()}Rr([`click`,`keydown`]);var mg=W(`<div class="scrim svelte-xz6ut1" role="presentation"><div class="sheet glass svelte-xz6ut1" role="dialog" aria-modal="true" aria-labelledby="in-title"><span class="eyebrow svelte-xz6ut1"> </span> <h2 id="in-title" class="svelte-xz6ut1"> </h2> <textarea rows="5" class="svelte-xz6ut1"></textarea> <!> <p class="cmd mono svelte-xz6ut1"> </p> <div class="row svelte-xz6ut1"><button class="btn">Cancel</button> <button class="btn primary">Start <kbd>⌘↵</kbd></button></div></div></div>`);function hg(e,t){Xe(t,!0);let n=M(()=>Q.input.action),r=M(()=>({hint:`note`,nudge:`note`,code_nudge:`note`,approve:`answer`})[H(n).id?.kind??``]??null),i=N(``),a=()=>H(i).trim()&&Q.perform(H(n),H(i).trim());var o=mg(),s=I(o),c=I(s),l=R(c,!0),u=z(c,2),d=R(u,!0),f=z(u,2);lt(f),ct(f,!0);var p=z(f,2),m=e=>{Rc(e,{get field(){return H(r)},get text(){return H(i)},onshaped:e=>P(i,e,!0)})};q(p,e=>{H(r)&&e(m)});var h=z(p,2),g=R(h,!0),_=z(h,2),v=I(_),y=z(v,2);A(_),A(s),A(o),V((e,t,r)=>{K(l,e),K(d,H(n).input),K(g,t),y.disabled=r},[()=>H(n).label.charAt(0).toUpperCase()+H(n).label.slice(1),()=>H(n).command.replace(`"…"`,JSON.stringify(H(i)||`…`)),()=>!H(i).trim()]),U(`click`,o,e=>e.target===e.currentTarget&&(Q.input=null)),U(`keydown`,f,e=>(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&a()),$i(f,()=>H(i),e=>P(i,e)),U(`click`,v,()=>Q.input=null),U(`click`,y,a),G(e,o),Ze()}Rr([`click`,`keydown`]);var gg=W(`<li class="group svelte-130wuz3" role="presentation"> </li>`),_g=W(`<!> <li role="option"><button tabindex="-1"><span class="ic svelte-130wuz3"><!></span> <span class="label svelte-130wuz3"> <!></span> <span class="why svelte-130wuz3"> </span> <span class="tag svelte-130wuz3"> </span></button></li>`,1),vg=W(`<li class="none svelte-130wuz3"> </li>`),yg=W(`<div class="scrim svelte-130wuz3" role="presentation"><div class="spotlight glass svelte-130wuz3" role="dialog" aria-modal="true" aria-label="Actions"><label class="field svelte-130wuz3"><!> <input placeholder="What would you like to do?" aria-controls="pal-list" class="svelte-130wuz3"/></label> <ul id="pal-list" role="listbox" class="svelte-130wuz3"></ul> <footer class="svelte-130wuz3"><span class="mono cmd svelte-130wuz3"><!> </span> <span class="keys svelte-130wuz3"><kbd>↑</kbd><kbd>↓</kbd> move <kbd>↵</kbd> run <kbd>esc</kbd> close</span></footer></div></div>`);function bg(e,t){Xe(t,!0);let n=N(``),r=N(0),i={page:`View`,next:`Up Next`,plan:`Plan`,work:`Work`,task:`Tasks`,feature:`Features`,review:`Review`},a={next:`sparkle`,plan:`doc`,work:`play`,task:`list`,feature:`grid`,review:`chart`},o=[[`theme.light`,`appearance: light`],[`theme.dark`,`appearance: dark`],[`theme.auto`,`appearance: automatic`,`follow the system`],[`view.sidebar`,`toggle the sidebar`],[`view.statusbar`,`toggle the status bar`],[`view.ask`,`open Ask`,`a read-only conversation about the project (⌘L)`],[`view.askNew`,`new Ask conversation`,`a fresh conversation; the earlier ones stay in the list (⌥⌘N in Ask)`],[`edit.addToAsk`,`add the selected task to Ask`,`as context for the next question (⌘⇧L)`],[`file.bug`,`report a bug`,`reproduced, confirmed by you once, fixed on evidence`],[`file.new_feature`,`new feature`,`the spec tool writes the spec; you review it, then it is planned`],[`file.explore`,`explore an idea`,`approaches to choose from, then a brief that starts the spec — read-only`],[`file.new_project`,`new project`,`the stack's and the spec format's own tools, then one commit`],[`help.doctor`,`check the setup`,`git, the project, the config, the model key, the sandbox`],[`help.bug_report`,`copy a bug report`,`the setup in Markdown, secrets taken out`]].map(([e,t,n])=>({...ja(null,{group:`page`,label:t,why:n??``,command:``}),menu:e})),s=e=>!!e?.menu,c=M(()=>[...Q.actions,...o].filter(e=>{let t=H(n).toLowerCase().trim();return s(e)?t.length>=2&&e.label.includes(t):!t||e.label.toLowerCase().includes(t)||e.command.toLowerCase().includes(t)||e.why.toLowerCase().includes(t)})),l=e=>e.charAt(0).toUpperCase()+e.slice(1),u=M(()=>{let e=H(n).trim();return e.length<6?null:ja(null,{group:`work`,label:`quick change: "${e}"`,why:`recorded as a story, a requirement and a task; judged on evidence`,command:`speccoder do "${e.replaceAll(`"`,`\\"`)}"`})}),d=M(()=>{let e=H(n).trim();return e.length<6||!(e.endsWith(`?`)||/^(what|why|how|where|which|when|who|is|are|does|do|can|should)\b/i.test(e))?null:ja(null,{group:`page`,label:`ask: "${e}"`,why:`a read-only answer whose sources are checked; changes nothing`,command:`speccoder ask "${e.replaceAll(`"`,`\\"`)}"`})}),f=M(()=>[...H(d)?[H(d)]:[],...H(c),...H(u)?[H(u)]:[]]),p=e=>{e&&!e.blocked&&(s(e)?(Q.palette=!1,window.dispatchEvent(new CustomEvent(`speccoder:menu`,{detail:e.menu}))):`role`in e&&e.role===`create`?(Q.palette=!1,Q.newFeature={text:H(n).trim().length>=6?H(n).trim():``}):e===H(d)?(Q.palette=!1,Z.toggle(!0),Z.send(H(n).trim())):e===H(u)?(Q.quickDraft=H(n).trim(),Q.palette=!1,Q.quick=!0):Q.perform(e))},m=N(void 0);function h(e){e.key===`ArrowDown`?(P(r,Math.min(H(r)+1,H(f).length-1),!0),e.preventDefault()):e.key===`ArrowUp`?(P(r,Math.max(H(r)-1,0),!0),e.preventDefault()):e.key===`Enter`?(p(H(f)[H(r)]),e.preventDefault()):e.key===`Escape`&&(Q.palette=!1)}B(()=>{H(n),P(r,0)}),B(()=>{H(m)?.querySelector(`[data-i="${H(r)}"]`)?.scrollIntoView({block:`nearest`})});var g=yg(),_=I(g),v=I(_),y=I(v);$(y,{name:`search`,size:20});var b=z(y,2);Gi(b),ct(b,!0),A(v);var x=z(v,2);J(x,23,()=>H(f),e=>Da(e)+(e.menu??``),(e,t,n)=>{var o=_g(),c=L(o),u=e=>{var n=gg(),r=R(n,!0);V(e=>K(r,e),[()=>i[H(t).group]??l(H(t).group)]),G(e,n)};q(c,e=>{(H(n)===0||H(f)[H(n)-1]?.group!==H(t).group)&&e(u)});var d=z(c,2),m=I(d);let h;var g=I(m),_=I(g);{let e=M(()=>s(H(t))?`halfcircle`:H(t).run?a[H(t).group]??`play`:`terminal`);$(_,{get name(){return H(e)},size:14,weight:2})}A(g);var v=z(g,2),y=I(v,!0),b=z(y),x=e=>{G(e,Jr(`…`))};q(b,e=>{H(t).input&&e(x)}),A(v);var S=z(v,2),C=R(S,!0),w=R(z(S,2),!0);A(m),A(d),V((e,i)=>{X(d,`id`,`pal-${H(n)??``}`),X(d,`aria-selected`,H(n)===H(r)),X(d,`aria-disabled`,!!H(t).blocked),X(d,`data-i`,H(n)),m.disabled=!!H(t).blocked,h=Y(m,1,`svelte-130wuz3`,null,h,{on:H(n)===H(r)}),K(y,e),K(C,H(t).blocked??H(t).why),K(w,i)},[()=>l(H(t).label),()=>s(H(t))?`Apply`:H(t).run?H(t).blocked?`Blocked`:`Run`:`Copy`]),Lr(`mouseenter`,m,()=>P(r,H(n),!0)),U(`click`,m,()=>p(H(t))),G(e,o)},e=>{var t=vg(),r=R(t);V(()=>K(r,`No action matches “${H(n)??``}”.`)),G(e,t)}),A(x),sa(x,e=>P(m,e),()=>H(m));var S=z(x,2),C=I(S),w=I(C);$(w,{name:`terminal`,size:12});var T=z(w,1,!0);A(C),j(2),A(S),A(_),A(g),V(e=>{X(b,`aria-activedescendant`,`pal-${H(r)??``}`),K(T,e)},[()=>s(H(f)[H(r)])?``:H(f)[H(r)]?.command??``]),U(`click`,g,e=>e.target===e.currentTarget&&(Q.palette=!1)),U(`keydown`,b,h),$i(b,()=>H(n),e=>P(n,e)),G(e,g),Ze()}Rr([`click`,`keydown`]),We();var xg=da(()=>Q),Sg=W(`<span class="mono detail svelte-1q7l584"> </span>`),Cg=W(`<button class="x c svelte-1q7l584" title="Copy what went wrong" aria-label="Copy what went wrong"><!></button>`),wg=W(`<div role="status"><span class="sym svelte-1q7l584"><!></span> <span class="text svelte-1q7l584"><strong class="svelte-1q7l584"> </strong> <!></span> <!> <button class="x svelte-1q7l584" aria-label="Dismiss"><!></button></div>`),Tg=W(`<div class="toasts svelte-1q7l584" aria-live="polite"></div>`);function Eg(e,t){Xe(t,!1);let n={ok:`check`,warn:`exclaim`,error:`xoctagon`};la();var r=Tg();J(r,5,()=>xg().toasts,e=>e.id,(e,t)=>{var r=wg(),i=I(r);$(I(i),{get name(){return n[H(t).tone]},size:14,weight:2.4}),A(i);var a=z(i,2),o=I(a),s=R(o,!0),c=z(o,2),l=e=>{var n=Sg(),r=R(n,!0);V(()=>K(r,H(t).detail)),G(e,n)};q(c,e=>{H(t).detail&&e(l)}),A(a);var u=z(a,2),d=e=>{var n=Cg();$(I(n),{name:`copy`,size:11}),A(n),U(`click`,n,()=>H(t).copy&&xg().copy(H(t).copy,`Copied what went wrong`,`Paste it into an issue or a chat.`)),G(e,n)};q(u,e=>{H(t).copy&&e(d)});var f=z(u,2);$(I(f),{name:`xmark`,size:10,weight:2.6}),A(f),A(r),V(()=>{Y(r,1,`toast glass ${H(t).tone??``}`,`svelte-1q7l584`),K(s,H(t).text)}),U(`click`,f,()=>xg(xg().toasts=xg().toasts.filter(e=>e.id!==H(t).id))),G(e,r)}),A(r),G(e,r),Ze()}Rr([`click`]);var Dg=W(`<div class="empty svelte-op2jfd"><!> <p class="svelte-op2jfd"><strong class="svelte-op2jfd"> </strong></p> <div class="first svelte-op2jfd"><button class="btn primary"><!> </button> <button class="btn">Explore an idea first</button></div> <p class="muted svelte-op2jfd">The spec tool's own skill writes the spec from your description; you review it before anything is planned. Not sure yet? Explore weighs approaches with you first — read-only.</p></div>`),Og=W(`<span class="blank svelte-op2jfd"><!></span>`),kg=W(`<span><b class="svelte-op2jfd"> </b> </span>`),Ag=W(`<b class="svelte-op2jfd"> </b> spent`,1),jg=W(`<b class="svelte-op2jfd"> </b> tokens`,1),Mg=W(`<span><!></span>`),Ng=W(`<span class="attn svelte-op2jfd"><!> </span>`),Pg=W(`<span> </span>`),Fg=W(`<button><div class="ring svelte-op2jfd"><!></div> <div class="body svelte-op2jfd"><span class="num mono svelte-op2jfd"> <!></span> <strong class="name svelte-op2jfd"> </strong> <span class="stage svelte-op2jfd"><!> </span> <span class="facts svelte-op2jfd"><!> <!> <!> <!> <!></span></div> <span class="go svelte-op2jfd"><!></span></button>`),Ig=W(`<div class="cards svelte-op2jfd"></div>`),Lg=W(`<section class="overview svelte-op2jfd"><header><div><p class="eyebrow svelte-op2jfd"> </p> <h1 class="svelte-op2jfd">Overview</h1> <p class="sub svelte-op2jfd"> </p></div></header> <!> <!> <!></section>`);function Rg(e,t){Xe(t,!0);let n=M(()=>Q.project?.features?.features??[]),r=N(F({})),i=N(F({}));B(()=>{Q.report;for(let e of H(n))ba(`/api/report${Sa({feature:e.name})}`).then(t=>P(r,{...H(r),[e.name]:t.data??null},!0)).catch(()=>P(r,{...H(r),[e.name]:null},!0)),ba(`/api/cost${Sa({feature:e.name})}`).then(t=>P(i,{...H(i),[e.name]:t.data??null},!0)).catch(()=>P(i,{...H(i),[e.name]:null},!0))});let a={spec:`Specify`,plan:`Plan`,tasks:`Break into tasks`,commit:`Commit the plan`,run:`Run`,review:`Review`};function o(e){let t=e?.journey?.find(e=>e.state===`now`);return t?a[t.name]??t.name:e?`Done`:`…`}function s(e){let t=new Map;for(let n of e?.trace??[]){let e=n.verdict===`verified`||n.verdict===`regression_only`;t.set(n.requirement,(t.get(n.requirement)??!1)||e)}return{all:t.size,ok:[...t.values()].filter(Boolean).length}}let c=M(()=>H(n).reduce((e,t)=>({done:e.done+t.done,tasks:e.tasks+t.tasks}),{done:0,tasks:0}));function l(e){Q.selectFeature(e),Q.view=`board`}let u=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e);var d=Lg(),f=I(d),p=I(f),m=I(p),h=R(m),g=R(z(m,4));A(p),A(f);var _=z(f,2),v=e=>{var t=Dg(),n=I(t);$(n,{name:`doc`,size:28});var r=z(n,2),i=R(I(r));A(r);var a=z(r,2),o=I(a),s=I(o);$(s,{name:`sparkle`,size:13});var c=z(s);A(o);var l=z(o,2);A(a),j(2),A(t),V(()=>{K(i,`No ${Q.project?.unit??`feature`??``}s yet`),K(c,` New ${Q.project?.unit??`feature`??``}`)}),U(`click`,o,()=>Q.newFeature={}),U(`click`,l,()=>Q.explore={}),G(e,t)},y=e=>{var t=Ig();J(t,21,()=>H(n),e=>e.name,(e,t)=>{let n=M(()=>H(r)[H(t).name]),a=M(()=>s(H(n))),c=M(()=>Q.approvals.filter(e=>H(n)&&e.task&&H(n).tasks.some(t=>t.id===e.task)).length);var d=Fg();let f;var p=I(d),m=I(p),h=e=>{Oo(e,{get totals(){return H(n).totals},size:64,width:7})},g=e=>{var t=Og();$(I(t),{name:`doc`,size:22}),A(t),G(e,t)};q(m,e=>{H(n)&&H(t).tasks?e(h):e(g,-1)}),A(p);var _=z(p,2),v=I(_),y=I(v,!0),b=z(y),x=e=>{var t=Jr();t.nodeValue=` · current`,G(e,t)};q(b,e=>{H(t).current&&e(x)}),A(v);var S=z(v,2),C=R(S,!0),w=z(S,2),T=I(w);$(T,{name:`sparkle`,size:12,weight:2});var E=z(T,1,!0);A(w);var ee=z(w,2),D=I(ee),O=e=>{var n=kg(),r=I(n),i=R(r,!0),a=z(r);A(n),V(()=>{K(i,H(t).done),K(a,`/${H(t).tasks??``} tasks`)}),G(e,n)};q(D,e=>{H(t).tasks&&e(O)});var k=z(D,2),te=e=>{var t=kg();let n;var r=I(t),i=R(r,!0),o=z(r);A(t),V(()=>{n=Y(t,1,`svelte-op2jfd`,null,n,{good:H(a).ok===H(a).all}),K(i,H(a).ok),K(o,`/${H(a).all??``} requirements proven`)}),G(e,t)};q(k,e=>{H(a).all&&e(te)});var ne=z(k,2),re=e=>{let n=M(()=>H(i)[H(t).name].total);var r=Mg(),a=I(r),o=e=>{var t=Ag(),r=R(L(t));j(),V(e=>K(r,`$${e??``}`),[()=>H(n).usd.toFixed(2)]),G(e,t)},s=e=>{var t=jg(),r=R(L(t),!0);j(),V(e=>K(r,e),[()=>u(H(n).input_tokens+H(n).output_tokens)]),G(e,t)};q(a,e=>{H(n).usd==null?e(s,-1):e(o)}),A(r),V((e,t)=>X(r,`title`,`${e??``} in · ${t??``} out`),[()=>H(n).input_tokens.toLocaleString(),()=>H(n).output_tokens.toLocaleString()]),G(e,r)};q(ne,e=>{H(i)[H(t).name]?.total&&(H(i)[H(t).name].total.input_tokens||H(i)[H(t).name].total.output_tokens)&&e(re)});var ie=z(ne,2),ae=e=>{var t=Ng(),n=I(t);$(n,{name:`hand`,size:11,weight:2.2});var r=z(n);A(t),V(()=>K(r,`${H(c)??``} waiting`)),G(e,t)};q(ie,e=>{H(c)&&e(ae)});var oe=z(ie,2),se=e=>{var n=Pg(),r=R(n,!0);V(e=>K(r,e),[()=>H(t).artifacts.join(` · `)||`empty`]),G(e,n)};q(oe,e=>{H(t).tasks||e(se)}),A(ee),A(_);var ce=z(_,2);$(I(ce),{name:`chevron`,size:14,weight:2.2}),A(ce),A(d),V((e,n,r)=>{f=Y(d,1,`card svelte-op2jfd`,null,f,{current:H(t).current}),K(y,e),K(C,n),K(E,r)},[()=>String(H(t).number).padStart(3,`0`),()=>Q.titleOf(H(t).name),()=>o(H(n))]),U(`click`,d,()=>l(H(t).name)),G(e,d)}),A(t),G(e,t)};q(_,e=>{H(n).length===0?e(v):e(y,-1)});var b=z(_,2);ac(b,{}),tp(z(b,2),{}),A(d),V(()=>{K(h,`${Q.project?.name??``??``} · ${Q.project?.format??``??``}`),K(g,`${H(n).length??``} ${Q.project?.unit??`feature`??``}${H(n).length===1?``:`s`} · ${H(c).done??``} of ${H(c).tasks??``} tasks finished`)}),G(e,d),Ze()}Rr([`click`]);var zg=W(`<strong class="lead svelte-1ur2k8g"> </strong>`),Bg=W(`<!><!><!>`,1),Vg=W(`<span class="mono task svelte-1ur2k8g"> </span>`),Hg=W(`<li><span class="pulse svelte-1ur2k8g" aria-hidden="true"></span> <span class="feat svelte-1ur2k8g"> </span> <!> <span class="muted svelte-1ur2k8g"> </span> <button class="btn small ghost svelte-1ur2k8g">Watch <!></button></li>`),Ug=W(`<ul class="strip svelte-1ur2k8g" aria-label="Working"></ul>`),Wg=W(`<div class="center svelte-1ur2k8g"><span class="spinner svelte-1ur2k8g"></span></div>`),Gg=W(`<button class="btn primary svelte-1ur2k8g"> </button>`),Kg=W(`<div class="clear svelte-1ur2k8g"><span class="ok svelte-1ur2k8g" aria-hidden="true"><!></span> <strong class="svelte-1ur2k8g">Nothing needs you</strong> <span class="muted svelte-1ur2k8g">The agents can work. <!></span> <!></div>`),qg=W(`<span class="feat svelte-1ur2k8g"> </span>`),Jg=W(`<li class="yours svelte-1ur2k8g"><span class="where svelte-1ur2k8g"><span><!> </span><!></span> <!></li>`),Yg=W(`<input type="checkbox" class="pick svelte-1ur2k8g"/>`),Xg=W(`<span class="age svelte-1ur2k8g"> </span>`),Zg=W(`<span class="risk svelte-1ur2k8g"> </span>`),Qg=W(`<span class="risk more svelte-1ur2k8g"> </span>`),$g=W(`<span class="risk verified svelte-1ur2k8g"><!> verified</span>`),e_=W(`<span class="risks svelte-1ur2k8g"><!> <!> <!></span>`),t_=W(`<button class="chip mono svelte-1ur2k8g"> </button>`),n_=W(`<li class="svelte-1ur2k8g"><span class="svelte-1ur2k8g"> </span><!></li>`),r_=W(`<ul class="reasons svelte-1ur2k8g"></ul>`),i_=W(`<span class="detail svelte-1ur2k8g"><!></span>`),a_=W(`<div class="found svelte-1ur2k8g"><!></div>`),o_=W(`<button> </button>`),s_=W(`<li><!> <div class="what svelte-1ur2k8g"><span class="where svelte-1ur2k8g"><span><!> </span> <!> <!> <!></span> <strong class="svelte-1ur2k8g"> </strong> <!> <!> <!></div> <div class="acts svelte-1ur2k8g"><!> <button class="btn small ghost svelte-1ur2k8g" title="Show it with its evidence"><!> Open</button></div></li>`),c_=W(`<span class="muted svelte-1ur2k8g"> </span>`),l_=W(`<input class="reason svelte-1ur2k8g" placeholder="Why (each model is told)"/> <button class="btn small danger svelte-1ur2k8g"> </button> <button class="btn small ghost svelte-1ur2k8g">Back</button>`,1),u_=W(`<span class="svelte-1ur2k8g"><strong class="svelte-1ur2k8g"> </strong> <span class="mono svelte-1ur2k8g"> </span> </span> <button class="btn small primary svelte-1ur2k8g"> </button> <button class="btn small svelte-1ur2k8g"> </button> <button class="btn small ghost svelte-1ur2k8g">Clear</button>`,1),d_=W(`<div class="batch svelte-1ur2k8g" role="toolbar" aria-label="Decide the selected approvals"><!></div>`),f_=W(`<section><h2 class="svelte-1ur2k8g"><span class="gtitle svelte-1ur2k8g"> </span><span class="count svelte-1ur2k8g"> </span><span class="why svelte-1ur2k8g"> </span></h2> <ul class="grouped svelte-1ur2k8g"></ul> <!></section>`),p_=W(`<button class="chip svelte-1ur2k8g"> </button>`),m_=W(`<p class="idle svelte-1ur2k8g"><span class="muted svelte-1ur2k8g">Idle:</span><!></p>`),h_=W(`<section class="inbox svelte-1ur2k8g" aria-labelledby="inbox-title"><header class="svelte-1ur2k8g"><div class="titlebar svelte-1ur2k8g"><h1 id="inbox-title" class="svelte-1ur2k8g">Needs You</h1><button class="btn small tinted svelte-1ur2k8g" title="A small change, judged like any other (q)"><!> Quick Change</button></div> <p class="sub svelte-1ur2k8g"><!></p></header> <!> <!> <!></section>`);function g_(e,t){Xe(t,!0);let n={unknown:{title:`Could Not Be Read`,icon:`exclaim`,tone:`needs_approval`,why:`Another speccoder holds the journal — calls may be waiting for you that cannot be listed now.`},approval:{title:`Waiting for Approval`,icon:`hand`,tone:`needs_approval`,why:`A run is paused until you decide.`},bug_confirm:{title:`Confirm a Bug's Reproduction`,icon:`exclaim`,tone:`needs_approval`,why:`It fails on the untouched code by an assertion — does it show the bug? Nothing is fixed before you say so.`},bug_cannot_reproduce:{title:`Could Not Reproduce`,icon:`xoctagon`,tone:`failed`,why:`No test of every expected behaviour failed on an assertion; nothing was fixed. Bring a test, reword, or try again.`},bug_unchanged_not_holding:{title:`Unchanged Does Not Hold`,icon:`exclaim`,tone:`failed`,why:`A statement of what must keep working is not true today.`},bug_repro_weak:{title:`Reproduction Too Weak`,icon:`shield`,tone:`needs_approval`,why:`A fix that only recognises the reproduction's input passes it.`},bug_already_satisfied:{title:`Already Fixed`,icon:`check`,tone:`verified`,why:`Every reproduction passes: keep one as a regression test, or drop it.`},approval_batch:{title:`Calls Waiting Together`,icon:`hand`,tone:`needs_approval`,why:`The run used its approval budget: further calls wait here, decided together — each once.`},ruling:{title:`Rule on the Tests`,icon:`shield`,tone:`needs_approval`,why:`The tests reject an alternative the spec may allow.`},gaming:{title:`Suspected Shortcuts`,icon:`exclaim`,tone:`failed`,why:`The monitor saw what looks like gaming the tests.`},unverified:{title:`Little Was Verified`,icon:`loop`,tone:`regression_only`,why:`Most ticks rest on the regression checks alone — why, by reason, and what changes it.`},stale:{title:`The Spec Changed`,icon:`exclaim`,tone:`needs_approval`,why:`Evidence proves an earlier wording.`},ambiguous:{title:`Read Two Ways`,icon:`exclaim`,tone:`needs_approval`,why:`Two test authors read a requirement differently — say which reading is meant, or reword it. Approve and Run waits.`},question:{title:`Open Questions`,icon:`exclaim`,tone:`needs_approval`,why:`The spec leaves these undecided — answer before it is built on.`},review:{title:`Review the Spec`,icon:`doc`,tone:`ready`,why:`The result will be judged against these words.`},revise:{title:`Change Requests`,icon:`sparkle`,tone:`needs_approval`,why:`Revise the spec as you asked, then review it again.`},yours:{title:`Yours to Do`,icon:`hand`,tone:`needs_approval`,why:`A step only you can take — do it, give the agent a hint, or skip it.`},autopilot_denied:{title:`Refused on Autopilot`,icon:`shield`,tone:`ready`,why:`Calls the autopilot run would have asked you about were refused, not asked: look at each, and allow one when you run again.`},gate_blocked:{title:`Blocked by a Gate`,icon:`shield`,tone:`failed`,why:`Your gate did not let the tick through — its own words say why. Fix that, then run again.`},hook_untrusted:{title:`Gates to Trust`,icon:`shield`,tone:`needs_approval`,why:`A gate runs only after you trusted exactly what it runs; until then it blocks every tick.`},extension_untrusted:{title:`Extensions to Trust`,icon:`shield`,tone:`needs_approval`,why:`Nothing of an extension runs before you trusted one digest over every file it holds.`},stuck:{title:`Did Not Pass`,icon:`xoctagon`,tone:`failed`,why:`Decide: run again, leave a note, skip or accept.`},aside:{title:`Changes Set Aside`,icon:`tray`,tone:`needs_approval`,why:`Found in the worktree when a run started — keep them on the branch, or let them go.`},commit:{title:`Plans to Commit`,icon:`doc`,tone:`ready`,why:`A run reads committed files only.`},promote:{title:`Worth a Spec`,icon:`sparkle`,tone:`ready`,why:`Measured, not guessed: it touched more than one requirement's worth. Start a spec from it — its tick is inherited, not verified — or not now.`},handoff:{title:`Ready to Hand Off`,icon:`arrowup`,tone:`verified`,why:`Every task is done — review the branch.`}},r=e=>n[e.kind]??{title:e.kind.replace(/_/g,` `),icon:`info`,tone:`needs_approval`,why:``},i={blocked_on_you:`Nothing moves until you decide — the oldest first.`,ready_to_review:`Done or held — the riskiest evidence first.`},a=M(()=>Q.inbox?.data?.items??[]),o=M(()=>[`blocked_on_you`,`ready_to_review`].map(e=>({g:e,title:Q.inbox?.data?.groups?.find(t=>t.group===e)?.title??(e===`blocked_on_you`?`Blocked on you`:`Ready to review`),items:H(a).filter(t=>(t.group===`ready_to_review`?`ready_to_review`:`blocked_on_you`)===e)})).filter(e=>e.items.length)),s=M(()=>Q.inbox?.data?.working??[]),c=M(()=>Q.inbox?.data?.idle??[]),l=M(()=>H(a).filter(e=>e.group!==`ready_to_review`).length),u=M(()=>H(a).length-H(l)),d=M(()=>new Set(H(a).map(e=>e.feature)).size),f=e=>`${e.feature}/${e.task??``}`,p=N(F([])),m=N(``),h=N(!1),g=M(()=>H(a).filter(e=>e.kind===`approval`&&e.tool&&H(p).includes(f(e)))),_=M(()=>new Set(H(g).map(e=>e.tool))),v=e=>P(p,H(p).includes(f(e))?H(p).filter(t=>t!==f(e)):[...H(p),f(e)],!0),y=N(!1);async function b(e){P(y,!0);let t=[];for(let n of H(g).slice()){let r=n.actions.find(t=>t.id.kind===(e?`approve`:`reject`));if(!r)continue;Q.feature!==n.feature&&await Q.selectFeature(n.feature);let i=await Q.run(r,e?void 0:H(m).trim());i?.status===`ok`?P(p,H(p).filter(e=>e!==f(n)),!0):t.push(`${n.task}: ${i?.message??`not decided`}`)}P(y,!1),t.length?Q.toast({tone:`error`,text:`${t.length} not decided`,detail:t.join(`
`)}):(P(m,``),P(h,!1)),Q.refresh()}let x=e=>{if(!e)return``;let t=Math.round((Date.now()/1e3-e)/60);return t<1?`just now`:t<60?`${t} min`:t<1440?`${Math.round(t/60)} h`:`${Math.round(t/1440)} d`},S=(e,t)=>t.id.kind===`approve`&&t.input?`Answer`:e.task&&t.id.subject===e.task?Ta[t.id.kind].verb+(t.id.kind===`run_task`?` Again`:``):t.label.charAt(0).toUpperCase()+t.label.slice(1);async function C(e,t){Q.feature!==e.feature&&await Q.selectFeature(e.feature),await Q.perform(t)}async function w(e,t){Q.feature!==e.feature&&await Q.selectFeature(e.feature),Q.view=`board`,Q.selectTask(t)}async function T(e,t){Q.feature!==e&&await Q.selectFeature(e),Q.view=t}async function E(e){e.kind===`extension_untrusted`?(Q.view=`settings`,Q.settingsSection=`extensions`):e.kind.startsWith(`bug_`)&&e.task?Q.bugSheet={key:`${e.feature}/${e.task}`}:(Q.feature!==e.feature&&await Q.selectFeature(e.feature),e.kind===`review`||e.kind===`revise`||e.kind===`question`||e.kind===`ambiguous`?(Q.doc=`review`,Q.view=`documents`):(Q.view=e.kind===`handoff`||e.kind===`stale`||e.kind===`unverified`?`report`:`board`,e.task&&Q.selectTask(e.task)))}var ee=h_(),D=I(ee),O=I(D),k=z(I(O));$(I(k),{name:`sparkle`,size:11,weight:2.2}),j(),A(k),A(O);var te=z(O,2),ne=I(te),re=e=>{var t=Bg(),n=L(t),r=e=>{var t=zg(),n=R(t);V(()=>K(n,`${H(l)??``} blocked on you`)),G(e,t)},i=e=>{G(e,Jr(`Nothing is blocked on you`))};q(n,e=>{H(l)?e(r):e(i,-1)});var a=z(n),o=e=>{var t=Jr();V(()=>K(t,` · ${H(u)??``} ready to review`)),G(e,t)};q(a,e=>{H(u)&&e(o)});var c=z(a),d=e=>{var t=Jr();V(()=>K(t,` · ${H(s).length??``} working`)),G(e,t)};q(c,e=>{H(s).length&&e(d)}),G(e,t)},ie=e=>{G(e,Jr(`Every decision the agents wait on lands here.`))};q(ne,e=>{H(a).length?e(re):e(ie,-1)}),A(te),A(D);var ae=z(D,2),oe=e=>{var t=Ug();J(t,21,()=>H(s),e=>e.feature+e.pid,(e,t)=>{var n=Hg();let r;var i=z(I(n),2),a=R(i,!0),o=z(i,2),s=e=>{var n=Vg(),r=R(n,!0);V(()=>K(r,H(t).task)),G(e,n)};q(o,e=>{H(t).task&&e(s)});var c=z(o,2),l=R(c,!0),u=z(c,2);$(z(I(u)),{name:`chevron`,size:10,weight:2.6}),A(u),A(n),V((e,i)=>{r=Y(n,1,`run svelte-1ur2k8g`,null,r,{unknown:H(t).state!==`running`}),K(a,e),K(l,i)},[()=>H(t).feature.replace(/^\d+-/,``),()=>H(t).state===`running`?`working · ${x(H(t).started)}`:`state unknown — it stopped without finishing`]),U(`click`,u,()=>T(H(t).feature,`board`)),G(e,n)}),A(t),G(e,t)};q(ae,e=>{H(s).length&&e(oe)});var se=z(ae,2),ce=e=>{G(e,Wg())},le=e=>{var t=Kg(),n=I(t);$(I(n),{name:`check`,size:30,weight:2.4}),A(n);var r=z(n,4),i=z(I(r)),a=e=>{var t=Jr();V(()=>K(t,`Next: ${Q.primary.label??``}.`)),G(e,t)};q(i,e=>{Q.primary&&e(a)}),A(r);var o=z(r,2),s=e=>{var t=Gg(),n=R(t,!0);V(e=>{t.disabled=!!Q.job?.running,K(n,e)},[()=>Q.primary.label.charAt(0).toUpperCase()+Q.primary.label.slice(1)]),U(`click`,t,()=>Q.primary&&Q.perform(Q.primary)),G(e,t)};q(o,e=>{Q.primary&&e(s)}),A(t),G(e,t)},ue=e=>{var t=Yr();J(L(t),17,()=>H(o),e=>e.g,(e,t)=>{var n=f_(),a=I(n),o=I(a),s=R(o,!0),c=z(o),l=R(c,!0),u=R(z(c),!0);A(a);var T=z(a,2);J(T,21,()=>H(t).items,e=>e.feature+(e.task??``)+e.kind+e.title,(e,t)=>{let n=M(()=>r(H(t)));var i=Yr(),a=L(i),o=e=>{var r=Jg(),i=I(r),a=I(i),o=I(a);$(o,{get name(){return H(n).icon},size:10,weight:2.4});var s=z(o,1,!0);A(a);var c=z(a),l=e=>{var n=qg(),r=R(n,!0);V(e=>K(r,e),[()=>H(t).feature.replace(/^\d+-/,``)]),G(e,n)};q(c,e=>{H(d)>1&&H(t).feature&&e(l)}),A(i);var u=z(i,2);{let e=M(()=>H(t).detail||null);zm(u,{get task(){return H(t).task},get claim(){return H(e)},get actions(){return H(t).actions}})}A(r),V(()=>{Y(a,1,`kind s-${H(n).tone??``}`,`svelte-1ur2k8g`),K(s,H(n).title)}),G(e,r)},s=e=>{var r=s_();Yi(r,(e,t)=>({...e,[Ii]:{picked:t}}),[()=>Ga(`inbox_item`,{feature:H(t).feature,task:H(t).task??null,kind:H(t).kind},`${H(n).title}${H(t).task?` ${H(t).task}`:``}`,`${H(n).title}: ${H(t).title}${H(t).detail?`\n${H(t).detail}`:``}${H(t).task?`\ntask ${H(t).task}`:``} (${H(t).feature})`),()=>H(p).includes(f(H(t)))],void 0,void 0,`svelte-1ur2k8g`);var i=I(r),a=e=>{var n=Yg();Gi(n),V(e=>{X(n,`aria-label`,`Select ${H(t).task??``}`),qi(n,e)},[()=>H(p).includes(f(H(t)))]),U(`change`,n,()=>v(H(t))),G(e,n)};q(i,e=>{H(t).kind===`approval`&&H(t).tool&&e(a)});var o=z(i,2),s=I(o),c=I(s),l=I(c);$(l,{get name(){return H(n).icon},size:10,weight:2.4});var u=z(l,1,!0);A(c);var m=z(c,2),h=e=>{var n=qg(),r=R(n,!0);V(e=>K(r,e),[()=>H(t).feature.replace(/^\d+-/,``)]),G(e,n)};q(m,e=>{H(d)>1&&H(t).feature&&e(h)});var g=z(m,2),_=e=>{var n=Vg(),r=R(n,!0);V(()=>K(r,H(t).task)),G(e,n)};q(g,e=>{H(t).task&&e(_)});var y=z(g,2),b=e=>{var n=Xg(),r=R(n,!0);V(e=>K(r,e),[()=>x(H(t).since)]),G(e,n)};q(y,e=>{H(t).since&&e(b)}),A(s);var T=z(s,2),ee=R(T,!0),D=z(T,2),O=e=>{var n=e_(),r=I(n);J(r,17,()=>(H(t).risk??[]).slice(0,3),e=>e.reason,(e,t)=>{var n=Zg(),r=R(n,!0);V(()=>K(r,H(t).text)),G(e,n)});var i=z(r,2),a=e=>{var n=Qg(),r=R(n);V(()=>K(r,`+${(H(t).risk?.length??0)-3}`)),G(e,n)};q(i,e=>{(H(t).risk?.length??0)>3&&e(a)});var o=z(i,2),s=e=>{var t=$g();$(I(t),{name:`check`,size:9,weight:2.8}),j(),A(t),G(e,t)};q(o,e=>{H(t).risk?.length||e(s)}),A(n),G(e,n)};q(D,e=>{H(t).group===`ready_to_review`&&(H(t).risk?.length||H(t).kind===`handoff`)&&e(O)});var k=z(D,2),te=e=>{var n=r_();J(n,21,()=>H(t).unverified.counts,e=>e.reason,(e,n)=>{var r=n_(),i=I(r),a=R(i,!0);J(z(i),16,()=>H(n).tasks,e=>e,(e,n)=>{var r=t_(),i=R(r,!0);V(()=>{X(r,`aria-label`,`Open ${n??``}`),K(i,n)}),U(`click`,r,()=>w(H(t),n)),G(e,r)}),A(r),V(()=>K(a,H(n).text)),G(e,r)}),A(n),G(e,n)},ne=e=>{var n=i_();so(I(n),{get text(){return H(t).detail}}),A(n),G(e,n)};q(k,e=>{H(t).unverified?e(te):H(t).detail&&e(ne,1)});var re=z(k,2),ie=e=>{var n=a_();Us(I(n),{get findings(){return H(t).findings}}),A(n),G(e,n)};q(re,e=>{H(t).findings?.length&&e(ie)}),A(o);var ae=z(o,2),oe=I(ae);J(oe,19,()=>H(t).actions,e=>Da(e),(e,n,r)=>{var i=o_();let a;var o=R(i,!0);V(e=>{a=Y(i,1,`btn small svelte-1ur2k8g`,null,a,{primary:H(r)===0,ghost:H(r)>1}),i.disabled=!!H(n).blocked||!!Q.job?.running,X(i,`title`,`${H(n).blocked??H(n).why}\n$ ${H(n).command}`),K(o,e)},[()=>S(H(t),H(n))]),U(`click`,i,()=>C(H(t),H(n))),G(e,i)});var se=z(oe,2);$(I(se),{name:`chevron`,size:10,weight:2.6}),j(),A(se),A(ae),A(r),V(()=>{Y(c,1,`kind s-${H(n).tone??``}`,`svelte-1ur2k8g`),X(c,`title`,H(n).why),K(u,H(n).title),K(ee,H(t).title)}),U(`click`,se,()=>E(H(t))),G(e,r)};q(a,e=>{H(t).kind===`yours`&&H(t).task?e(o):e(s,-1)}),G(e,i)}),A(T);var ee=z(T,2),D=e=>{var t=d_(),n=I(t),r=e=>{var t=c_(),n=R(t);V(e=>K(n,`One kind of call at a time: the selection mixes ${e??``}.`),[()=>[...H(_)].join(` and `)]),G(e,t)},i=e=>{var t=l_(),n=L(t);Gi(n);var r=z(n,2),i=R(r),a=z(r,2);V(e=>{r.disabled=e,K(i,`Reject ${H(g).length??``}`)},[()=>!H(m).trim()||H(y)||!!Q.job?.running]),U(`keydown`,n,e=>e.key===`Enter`&&H(m).trim()&&b(!1)),$i(n,()=>H(m),e=>P(m,e)),U(`click`,r,()=>b(!1)),U(`click`,a,()=>P(h,!1)),G(e,t)},a=e=>{var t=u_(),n=L(t),r=I(n),i=R(r,!0),a=z(r,2),o=R(a,!0),s=z(a);A(n);var c=z(n,2),l=R(c,!0),u=z(c,2),d=R(u),f=z(u,2);V(e=>{K(i,H(g).length),K(o,e),K(s,` ${H(g).length===1?`call`:`calls`} — each decided on its own object`),c.disabled=H(y)||!!Q.job?.running,K(l,H(y)?`Deciding…`:`Approve ${H(g).length}`),K(d,`Reject ${H(g).length??``}…`)},[()=>[...H(_)][0]]),U(`click`,c,()=>b(!0)),U(`click`,u,()=>P(h,!0)),U(`click`,f,()=>P(p,[],!0)),G(e,t)};q(n,e=>{H(_).size>1?e(r):H(h)?e(i,1):e(a,-1)}),A(t),G(e,t)};q(ee,e=>{H(t).g===`blocked_on_you`&&H(g).length&&e(D)}),A(n),V(()=>{Y(n,1,`group ${H(t).g??``}`,`svelte-1ur2k8g`),X(n,`aria-label`,H(t).title),K(s,H(t).title),K(l,H(t).items.length),K(u,i[H(t).g])}),G(e,n)}),G(e,t)};q(se,e=>{Q.inbox?H(a).length?e(ue,-1):e(le,1):e(ce)});var de=z(se,2),fe=e=>{var t=m_();J(z(I(t)),16,()=>H(c),e=>e,(e,t)=>{var n=p_(),r=R(n,!0);V(e=>K(r,e),[()=>t.replace(/^\d+-/,``)]),U(`click`,n,()=>T(t,`overview`)),G(e,n)}),A(t),G(e,t)};q(de,e=>{H(c).length&&e(fe)}),A(ee),U(`click`,k,()=>Q.quick=!0),G(e,ee),Ze()}Rr([`click`,`change`,`keydown`]);var __=W(`<p class="row svelte-1ojuot4"><!><span class="mono svelte-1ojuot4"> </span></p>`),v_=W(`<p class="row thought svelte-1ojuot4"><span class="therefore svelte-1ojuot4" aria-hidden="true">∴</span><span> </span></p>`),y_=W(`<p class="row said svelte-1ojuot4"> </p>`),b_=W(` <span title="Commands the sandbox confined ran without asking"> </span>`,1),x_=W(`<button class="btn small tinted"><!> Resume</button>`),S_=W(`<span class="hint muted small svelte-1ojuot4">It holds this project: another run here is refused until it finishes.</span>`),C_=W(`<div role="dialog" tabindex="-1" aria-label="The project's run"><header class="svelte-1ojuot4"><span class="orb svelte-1ojuot4" aria-hidden="true"></span> <div><p class="kicker svelte-1ojuot4"> <span class="mono"> </span></p> <h3 class="svelte-1ojuot4"><span class="mono"> </span> </h3> <p class="meta svelte-1ojuot4"> <!> </p></div></header> <!> <!> <!> <!> <p class="row tokens muted svelte-1ojuot4"> <!><!></p> <footer class="svelte-1ojuot4"><button class="btn small"><!> Show on Board</button> <!></footer></div>`),w_=W(`<div class="scrim svelte-1ojuot4" role="presentation"></div> <!>`,1);function T_(e,t){Xe(t,!0);let n=M(()=>Q.live?.live??null),r=M(()=>Q.interrupted),i=N(F(Date.now()));B(()=>{let e=setInterval(()=>P(i,Date.now(),!0),1e3);return()=>clearInterval(e)});let a=M(()=>(Q.live?.now??Math.floor(Date.now()/1e3))-Math.floor(Date.now()/1e3)),o=e=>{let t=Math.max(0,Math.floor(H(i)/1e3)+H(a)-e);return t<60?`${t}s`:t<3600?`${Math.floor(t/60)}m ${t%60}s`:`${Math.floor(t/3600)}h ${Math.floor(t%3600/60)}m`},s=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e);function c(){H(n)&&(Q.selectFeature(H(n).feature).then(()=>{Q.view=`board`,Q.selectTask(H(n).task)}),t.onclose())}function l(){H(n)&&(Q.selectFeature(H(n).feature).then(()=>Q.perform(ja({kind:`run`,task:H(n).task},{group:`work`,label:`run ${H(n).task}`,why:`resumes the interrupted attempt from its journal`,command:`speccoder run --task ${H(n).task}`}))),t.onclose())}var u=w_();Lr(`keydown`,on,e=>e.key===`Escape`&&t.onclose());var d=L(u),f=z(d,2),p=e=>{var t=C_();let i;var a=I(t),u=z(I(a),2),d=I(u),f=I(d),p=R(z(f));A(d);var m=z(d,2),h=I(m),g=R(h,!0),_=z(h);A(m);var v=z(m,2),y=I(v),b=z(y),x=e=>{var t=Jr();V(()=>K(t,` ${H(n).stage_detail??``}`)),G(e,t)};q(b,e=>{H(n).stage_detail&&e(x)});var S=z(b);A(v),A(u),A(a);var C=z(a,2),w=e=>{jh(e,{get agent(){return H(n).agent}})};q(C,e=>{H(n).agent&&e(w)});var T=z(C,2),E=e=>{var t=__(),r=I(t);$(r,{name:`terminal`,size:12});var i=R(z(r),!0);A(t),V(()=>K(i,H(n).last_call)),G(e,t)};q(T,e=>{H(n).last_call&&e(E)});var ee=z(T,2),D=e=>{var t=v_(),r=R(z(I(t)),!0);A(t),V(()=>K(r,H(n).thinking)),G(e,t)};q(ee,e=>{H(n).thinking&&e(D)});var O=z(ee,2),k=e=>{var t=y_(),r=R(t);V(()=>K(r,`“${H(n).said??``}”`)),G(e,t)};q(O,e=>{H(n).said&&e(k)});var te=z(O,2),ne=I(te),re=z(ne),ie=e=>{var t=Jr();V(e=>K(t,` · $${e??``}`),[()=>H(n).usd.toFixed(4)]),G(e,t)};q(re,e=>{H(n).usd!=null&&e(ie)});var ae=z(re),oe=e=>{var t=b_(),r=L(t,!0);r.nodeValue=` · `;var i=R(z(r));V(()=>K(i,`${H(n).contained??``} contained`)),G(e,t)};q(ae,e=>{H(n).contained&&e(oe)}),A(te);var se=z(te,2),ce=I(se);$(I(ce),{name:`grid`,size:12}),j(),A(ce);var le=z(ce,2),ue=e=>{var t=x_();$(I(t),{name:`play`,size:11}),j(),A(t),U(`click`,t,l),G(e,t)},de=e=>{G(e,S_())};q(le,e=>{H(r)?e(ue):e(de,-1)}),A(se),A(t),V((e,a,o)=>{i=Y(t,1,`card glass svelte-1ojuot4`,null,i,{interrupted:H(r)}),K(f,`${H(r)?`Interrupted`:`Running in another speccoder`} · `),K(p,`pid ${H(n).pid??``}`),K(g,H(n).task),K(_,` ${H(n).title??``}`),K(y,`${H(n).feature??``} · ${H(n).stage??`starting`??``}`),K(S,` · ${e??``}`),K(ne,`${a??``} in · ${o??``} out`)},[()=>H(r)?`stopped ${o(H(n).updated_at)} ago`:o(H(n).started_at),()=>s(H(n).input_tokens),()=>s(H(n).output_tokens)]),U(`click`,ce,c),G(e,t)};q(f,e=>{H(n)&&e(p)}),U(`click`,d,function(...e){t.onclose?.apply(this,e)}),G(e,u),Ze()}Rr([`click`]);var E_=W(`<span class="dim svelte-161y12f"> </span>`),D_=W(`<button class="svelte-161y12f"><!> <!></button>`),O_=W(`<span class="r svelte-161y12f"> </span>`),k_=W(`<span class="dim svelte-161y12f"> </span><!>`,1),A_=W(`<button title="Requirements approved on their current wording"><!> </button>`),j_=W(`<button class="warn svelte-161y12f" title="Ticks proven against an earlier wording of what they cite"><!> </button>`),M_=W(`<button title="The current feature — switch in the palette (⌘K)" class="svelte-161y12f"><!> </button> <!> <button title="Verified · regression only · ready · blocked" class="svelte-161y12f"><span class="v svelte-161y12f"> </span><!><!></button> <!> <!>`,1),N_=W(`<span class="ring svelte-161y12f" aria-hidden="true"></span>`),P_=W(`<button><!> <span class="dim svelte-161y12f"> </span></button>`),F_=W(`<button class="live svelte-161y12f" title="What runs now"><span class="pulse svelte-161y12f" aria-hidden="true"></span> <!></button>`),I_=W(`<button title="What the feature cost so far" class="svelte-161y12f"><!> </button>`),L_=W(`<button title="The model (Settings › Model)" class="svelte-161y12f"><!> </button>`),R_=W(`<button><!> </button>`),z_=W(`<footer class="status svelte-161y12f" aria-label="Status"><div class="side svelte-161y12f"><!></div> <div class="side right svelte-161y12f"><!> <!> <!> <!> <!> <button title="Blocked on you"><!> </button> <span role="status"><span class="dot svelte-161y12f"></span> </span></div></footer> <!>`,1);function B_(e,t){Xe(t,!0);let n=M(()=>Q.report?.data??null),r=M(()=>H(n)?.totals??{}),i=M(()=>H(r).stale??0),a=M(()=>H(n)?.review??null),o=M(()=>H(a)?H(a).approved+H(a).open+H(a).changes_requested+H(a).lapsed:0),s=M(()=>Q.blocked),c=e=>Q.doctor.find(t=>t.check===e),l=M(()=>c(`model`)?.detail.split(` `)[0]??null),u=M(()=>c(`sandbox`)),d=M(()=>Q.job?.running?Q.job:null),f=M(()=>!H(d)&&(Q.elsewhere||Q.interrupted)?Q.live?.live??null:null),p=N(!1),m=M(()=>[...Q.stages].reverse().find(e=>e.state===`started`)?.stage??null),h=N(null),g=wa();B(()=>{Q.report,g(ba(`/api/cost${Sa({feature:Q.feature??void 0})}`),e=>P(h,e.data??null,!0),()=>P(h,null))});let _=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${Math.round(e/1e3)}k`:String(e),v=M(()=>{if(!H(h))return null;let e=H(h).total.input_tokens+H(h).total.output_tokens;return e?H(h).total.usd==null?`${_(e)} tokens`:`$${H(h).total.usd.toFixed(2)} · ${_(e)}`:null}),y=(e,t)=>{t&&(Q.doc=t),Q.view=e};var b=z_(),x=L(b),S=I(x),C=I(S),w=e=>{var t=M_(),s=L(t),c=I(s);$(c,{name:`list`,size:12});var l=z(c,1,!0);A(s);var u=z(s,2),d=e=>{var t=D_(),r=I(t);$(r,{name:`branch`,size:12});var i=z(r,1,!0),a=z(i),o=e=>{var t=E_(),r=R(t);V(()=>K(r,`↑${H(n).unmerged_commits??``}`)),G(e,t)};q(a,e=>{H(n).unmerged_commits&&e(o)}),A(t),V(e=>{X(t,`title`,`The feature's branch${H(n).unmerged_commits?`: ${H(n).unmerged_commits} ${H(n).unmerged_commits===1?`commit`:`commits`} not merged`:``}`),K(i,e)},[()=>H(n).branch.replace(/^speccoder\//,``)]),U(`click`,t,()=>y(`code`)),G(e,t)};q(u,e=>{H(n).branch&&e(d)});var f=z(u,2),p=I(f),m=R(p),h=z(p),g=e=>{var t=O_(),n=R(t);V(()=>K(n,`~ ${H(r).regression_only??``}`)),G(e,t)};q(h,e=>{H(r).regression_only&&e(g)});var _=z(h),v=e=>{var t=E_(),r=R(t);V(e=>K(r,`· bug: ${e??``}`),[()=>ys(H(n).bug).toLowerCase()]),G(e,t)},b=e=>{var t=k_(),n=L(t),i=R(n),a=z(n),o=e=>{var t=E_(),n=R(t);V(()=>K(n,`· ${H(r).blocked??``} blocked`)),G(e,t)};q(a,e=>{H(r).blocked&&e(o)}),V(()=>K(i,`· ${H(r).ready??0??``} ready`)),G(e,t)};q(_,e=>{H(n).bug?e(v):e(b,-1)}),A(f);var x=z(f,2),S=e=>{var t=A_();let n;var r=I(t);$(r,{name:`doc`,size:12});var i=z(r);A(t),V(()=>{n=Y(t,1,`svelte-161y12f`,null,n,{warn:H(a).changes_requested+H(a).lapsed>0}),K(i,`${H(a).approved??``}/${H(o)??``} approved`)}),U(`click`,t,()=>y(`documents`,`review`)),G(e,t)};q(x,e=>{H(a)&&H(o)&&e(S)});var C=z(x,2),w=e=>{var t=j_(),n=I(t);$(n,{name:`exclaim`,size:12});var r=z(n);A(t),V(()=>K(r,`${H(i)??``} stale`)),U(`click`,t,()=>y(`report`)),G(e,t)};q(C,e=>{H(i)&&e(w)}),V(()=>{K(l,H(n).feature),K(m,`✓ ${H(r).verified??0??``}`)}),U(`click`,s,()=>Q.palette=!0),U(`click`,f,()=>y(`board`)),G(e,t)};q(C,e=>{H(n)&&e(w)}),A(S);var T=z(S,2),E=I(T),ee=e=>{var t=P_();let n;var r=I(t),i=e=>{$(e,{name:`exclaim`,size:12,weight:2.4})},a=e=>{G(e,N_())};q(r,e=>{Q.interrupted?e(i):e(a,-1)});var o=z(r),s=R(z(o));A(t),V(()=>{n=Y(t,1,`live other svelte-161y12f`,null,n,{stopped:Q.interrupted}),X(t,`aria-expanded`,H(p)),X(t,`title`,Q.interrupted?`A run stopped before it finished: resume it`:`A run in another speccoder (a terminal): see it`),K(o,` ${H(f).task??``}`),K(s,`· ${(Q.interrupted?`interrupted`:H(f).stage??`starting`)??``}${Q.interrupted?``:` · in a terminal`}`)}),U(`click`,t,()=>P(p,!H(p))),G(e,t)};q(E,e=>{H(f)&&e(ee)});var D=z(E,2),O=e=>{var t=F_(),n=z(I(t),1,!0),r=z(n),i=e=>{var t=E_(),n=R(t);V(()=>K(n,`· ${H(m)??``}`)),G(e,t)};q(r,e=>{H(m)&&e(i)}),A(t),V(()=>K(n,Q.task?.id??H(d).command)),U(`click`,t,()=>Q.view=`board`),G(e,t)};q(D,e=>{H(d)&&e(O)});var k=z(D,2),te=e=>{var t=I_(),n=I(t);$(n,{name:`dollar`,size:12});var r=z(n,1,!0);A(t),V(()=>K(r,H(v))),U(`click`,t,()=>y(`report`)),G(e,t)};q(k,e=>{H(v)&&e(te)});var ne=z(k,2),re=e=>{var t=L_(),n=I(t);$(n,{name:`cpu`,size:12});var r=z(n,1,!0);A(t),V(()=>K(r,H(l))),U(`click`,t,()=>Q.view=`settings`),G(e,t)};q(ne,e=>{H(l)&&e(re)});var ie=z(ne,2),ae=e=>{var t=R_();let n;var r=I(t);{let e=M(()=>H(u).level===`pass`?`lock`:`exclaim`);$(r,{get name(){return H(e)},size:12})}var i=z(r,1,!0);A(t),V(()=>{X(t,`title`,`The OS sandbox commands run in: ${H(u).detail??``}`),n=Y(t,1,`svelte-161y12f`,null,n,{warn:H(u).level!==`pass`}),K(i,H(u).level===`pass`?H(u).detail:`no sandbox`)}),U(`click`,t,()=>Q.view=`settings`),G(e,t)};q(ie,e=>{H(u)&&e(ae)});var oe=z(ie,2);let se;var ce=I(oe);$(ce,{name:`bell`,size:12});var le=z(ce,1,!0);A(oe);var ue=z(oe,2);let de;var fe=z(I(ue),1,!0);A(ue),A(T),A(x);var pe=z(x,2),me=e=>{T_(e,{onclose:()=>P(p,!1)})};q(pe,e=>{H(p)&&H(f)&&e(me)}),V(()=>{se=Y(oe,1,`svelte-161y12f`,null,se,{attn:H(s)>0}),K(le,H(s)),de=Y(ue,1,`conn svelte-161y12f`,null,de,{off:!Q.connected}),X(ue,`title`,Q.connected?`Connected to the host`:`Reconnecting to the host…`),K(fe,Q.connected?``:`Reconnecting`)}),U(`click`,oe,()=>Q.view=`inbox`),G(e,b),Ze()}Rr([`click`]);var V_=W(`<button role="menuitem"><span class="ic svelte-l8h85k"><!></span> </button>`),H_=W(`<div class="veil svelte-l8h85k" role="presentation"></div> <div class="menu glass svelte-l8h85k" role="menu" tabindex="-1"><div class="title svelte-l8h85k"> </div> <!></div>`,1);function U_(e,t){Xe(t,!0);let n=M(()=>Q.context),r=N(void 0),i=N(0),a=M(()=>{let e=H(r)?.offsetWidth??240,t=H(r)?.offsetHeight??200;return{x:Math.min(H(n).x,innerWidth-e-8),y:Math.min(H(n).y,innerHeight-t-8)}}),o=M(()=>H(n).items.map((e,t)=>e.disabled?-1:t).filter(e=>e>=0));B(()=>{P(i,H(o)[0]??0,!0),H(r)?.focus()});function s(e){let t=H(n).items[e];t&&!t.disabled&&(Q.context=null,t.act())}function c(e){if(e.key===`Escape`)Q.context=null;else if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=H(o).indexOf(H(i));P(i,H(o)[(t+(e.key===`ArrowDown`?1:H(o).length-1))%H(o).length]??H(i),!0)}else e.key===`Enter`&&(e.preventDefault(),s(H(i)))}var l=H_();Lr(`blur`,on,()=>Q.context=null),Lr(`resize`,on,()=>Q.context=null);var u=L(l),d=z(u,2),f=I(d),p=R(f,!0);J(z(f,2),19,()=>H(n).items,e=>e.label,(e,t,n)=>{var r=V_();let a;var o=I(r),c=I(o),l=e=>{$(e,{get name(){return H(t).icon},size:13,weight:2})};q(c,e=>{H(t).icon&&e(l)}),A(o);var u=z(o,1,!0);A(r),V(()=>{r.disabled=!!H(t).disabled,X(r,`title`,H(t).disabled??H(t).hint??``),a=Y(r,1,`svelte-l8h85k`,null,a,{on:H(n)===H(i)}),K(u,H(t).label)}),Lr(`mouseenter`,r,()=>!H(t).disabled&&P(i,H(n),!0)),U(`click`,r,()=>s(H(n))),G(e,r)}),A(d),sa(d,e=>P(r,e),()=>H(r)),V(()=>{X(d,`aria-label`,H(n).title),Oi(d,`left:${H(a).x??``}px; top:${H(a).y??``}px`),K(p,H(n).title)}),U(`click`,u,()=>Q.context=null),U(`contextmenu`,u,e=>{e.preventDefault(),Q.context=null}),U(`keydown`,d,c),G(e,l),Ze()}Rr([`click`,`contextmenu`,`keydown`]);var W_=W(`<button class="x svelte-1sajpr2" aria-label="Remove"><!></button>`),G_=W(`<div class="check svelte-1sajpr2"><span class="n mono svelte-1sajpr2"></span> <input class="svelte-1sajpr2"/> <!></div>`),K_=W(`<div class="scrim svelte-1sajpr2" role="presentation"><div class="sheet glass svelte-1sajpr2" role="dialog" aria-modal="true" aria-labelledby="qc-title"><header class="svelte-1sajpr2"><span class="badge svelte-1sajpr2" aria-hidden="true"><!></span> <div><h2 id="qc-title" class="svelte-1sajpr2">Quick Change</h2> <p class="svelte-1sajpr2">Something small — a fix, a tweak, a follow-up. It becomes a story, a requirement and a task, and is judged like everything else: tests that fail first, checks that must hold.</p></div></header> <label class="field svelte-1sajpr2"><span class="svelte-1sajpr2">What should change?</span> <textarea rows="3" placeholder="Show the version number in the footer" class="svelte-1sajpr2"></textarea></label> <!> <div class="field svelte-1sajpr2"><span class="svelte-1sajpr2">Done when <em class="svelte-1sajpr2">— optional; the tests are written from these</em></span> <!> <button class="add svelte-1sajpr2"><!> Add a condition</button></div> <div class="row svelte-1sajpr2"><span class="hint muted svelte-1sajpr2">⌘↩ records and runs</span> <button class="btn">Cancel</button> <button class="btn">Record</button> <button class="btn primary">Record and Run</button></div></div></div>`);function q_(e,t){Xe(t,!0);let n=N(F(Q.quickDraft));Q.quickDraft=``;let r=N(F([``])),i=M(()=>H(n).trim().length>0&&!Q.job?.running);async function a(e){if(!H(i))return;let t=H(r).map(e=>e.trim()).filter(Boolean),a=H(n).trim().replaceAll(`"`,`\\"`);Q.quick=!1,await Q.perform(ja({kind:`quick_change`,request:H(n).trim(),checks:t,run:e},{group:`work`,label:e?`make the change`:`record the change`,why:`a story, a requirement and a task — judged on evidence`,command:`speccoder do "${a}"${t.map(e=>` --check "${e.replaceAll(`"`,`\\"`)}"`).join(``)}${e?``:` --no-run`}`}))}function o(e){e.key===`Escape`&&(Q.quick=!1),e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),a(!0))}var s=K_();Lr(`keydown`,on,o);var c=I(s),l=I(c),u=I(l);$(I(u),{name:`sparkle`,size:20,weight:2.2}),A(u),j(2),A(l);var d=z(l,2),f=z(I(d),2);lt(f),ct(f,!0),A(d);var p=z(d,2);Rc(p,{field:`quick`,get text(){return H(n)},onshaped:e=>P(n,e,!0)});var m=z(p,2),h=z(I(m),2);J(h,17,()=>H(r),si,(e,t,n)=>{var i=G_(),a=I(i);a.textContent=`${n+1}.`;var o=z(a,2);Gi(o),X(o,`placeholder`,n===0?`the footer of every page shows the version`:`and…`),X(o,`aria-label`,`Done when, ${n+1}`);var s=z(o,2),c=e=>{var t=W_();$(I(t),{name:`xmark`,size:10,weight:2.6}),A(t),U(`click`,t,()=>P(r,H(r).filter((e,t)=>t!==n),!0)),G(e,t)};q(s,e=>{H(r).length>1&&e(c)}),A(i),U(`keydown`,o,e=>{e.key===`Enter`&&!(e.metaKey||e.ctrlKey)&&(e.preventDefault(),H(r)[n]?.trim()&&P(r,[...H(r),``],!0))}),$i(o,()=>H(r)[n],e=>H(r)[n]=e),G(e,i)});var g=z(h,2);$(I(g),{name:`plus`,size:10,weight:2.6}),j(),A(g),A(m);var _=z(m,2),v=z(I(_),2),y=z(v,2),b=z(y,2);A(_),A(c),A(s),V(()=>{y.disabled=!H(i),b.disabled=!H(i)}),U(`click`,s,e=>e.target===e.currentTarget&&(Q.quick=!1)),$i(f,()=>H(n),e=>P(n,e)),U(`click`,g,()=>P(r,[...H(r),``],!0)),U(`click`,v,()=>Q.quick=!1),U(`click`,y,()=>a(!1)),U(`click`,b,()=>a(!0)),G(e,s),Ze()}Rr([`click`,`keydown`]);var J_=`a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])`;function Y_(e){return[...e.querySelectorAll(J_)].filter(e=>!e.hasAttribute(`inert`)&&e.getAttribute(`aria-hidden`)!==`true`)}function X_(e,t){let n=document.activeElement;queueMicrotask(()=>{(t&&e.querySelector(t)||e.querySelector(`[data-first]`)||Y_(e)[0])?.focus()});let r=t=>{if(t.key!==`Tab`)return;let n=Y_(e);if(!n.length)return;let r=n.indexOf(document.activeElement);t.shiftKey&&r<=0?(t.preventDefault(),n[n.length-1].focus()):!t.shiftKey&&r===n.length-1&&(t.preventDefault(),n[0].focus())};return e.addEventListener(`keydown`,r),{destroy(){e.removeEventListener(`keydown`,r),n&&document.contains(n)&&n.focus()}}}var Z_=W(`<div class="d-warn" role="alert"> </div> <div class="foot svelte-mzbdvw"><span></span><button class="btn">Close</button></div>`,1),Q_=W(`<div class="thinking svelte-mzbdvw" aria-live="polite"><span class="spinner svelte-mzbdvw"></span> Reading your words…</div>`),$_=W(`<span> </span>`),ev=W(`<span class="legend svelte-mzbdvw"><s>struck</s> = not in the proposal</span>`),tv=W(`<button class="link svelte-mzbdvw">Back to the proposal</button>`),nv=W(`<textarea rows="5" aria-label="The proposal" class="svelte-mzbdvw"></textarea>`),rv=W(`<p class="ink plain svelte-mzbdvw"> </p> <h3 class="back svelte-mzbdvw"> </h3> <p class="ink svelte-mzbdvw"></p>`,1),iv=W(`<mark class="svelte-mzbdvw"> </mark>`),av=W(`<span></span>`),ov=W(`<p class="ink svelte-mzbdvw"></p>`),sv=W(`<span class="legend svelte-mzbdvw"><span class="added svelte-mzbdvw">tinted</span> = added by the assistant</span>`),cv=W(`<p class="editing svelte-mzbdvw">You edited the proposal: your text is used as you wrote it, and these no longer apply.</p>`),lv=W(`<span class="count svelte-mzbdvw"> </span>`),uv=W(`<span class="done svelte-mzbdvw"><!> all decided</span>`),dv=W(`<span class="muted"> </span>`),fv=W(`<span class="q svelte-mzbdvw"> </span>`),pv=W(`<li><span class="what svelte-mzbdvw"><span class="tag svelte-mzbdvw">Assumed</span> <q class="svelte-mzbdvw"> </q><!></span> <span class="seg svelte-mzbdvw" role="radiogroup"><button role="radio">Keep</button> <button role="radio">Ask instead</button> <button role="radio">Remove</button></span> <!></li>`),mv=W(`<li><span class="what svelte-mzbdvw"><span class="tag svelte-mzbdvw">Added without saying why</span> <q class="svelte-mzbdvw"> </q></span> <span class="seg svelte-mzbdvw" role="radiogroup"><button role="radio">Keep</button> <button role="radio">Ask instead</button> <button role="radio">Remove</button></span></li>`),hv=W(`<li><span class="what svelte-mzbdvw"><span class="tag svelte-mzbdvw">Not carried over</span> </span> <span class="seg svelte-mzbdvw" role="radiogroup" aria-label="Your sentence"><button role="radio">Add it back</button> <button role="radio">Drop it</button></span></li>`),gv=W(`<section aria-label="To decide"><!> <h3 class="svelte-mzbdvw">To decide <!></h3> <ul class="svelte-mzbdvw"><!> <!> <!></ul></section>`),_v=W(`<li class="svelte-mzbdvw"> </li>`),vv=W(`<section class="open svelte-mzbdvw" aria-label="Left open"><h3 class="svelte-mzbdvw">Left open — the spec review will ask</h3> <ul class="svelte-mzbdvw"></ul></section>`),yv=W(`<q class="svelte-mzbdvw"> </q> `,1),bv=W(`<li class="svelte-mzbdvw"><!> <span class="fix svelte-mzbdvw"> </span></li>`),xv=W(`<section class="check svelte-mzbdvw" aria-label="Writing check"><h3 class="svelte-mzbdvw">Writing check</h3> <ul class="svelte-mzbdvw"></ul></section>`),Sv=W(`<button class="btn">Keep All Assumptions</button>`),Cv=W(`<div class="cols svelte-mzbdvw"><section class="col mine svelte-mzbdvw" aria-label="Your words"><h3 class="svelte-mzbdvw">Your words</h3> <p class="ink svelte-mzbdvw"></p> <!></section> <section class="col proposed svelte-mzbdvw" aria-label="Proposed"><h3 class="svelte-mzbdvw">Proposed <!><button class="link svelte-mzbdvw"> </button></h3> <!> <!></section></div> <!> <!> <!> <div class="foot svelte-mzbdvw"><span class="muted svelte-mzbdvw"><!>Nothing is saved until you save the field.</span> <button class="btn ghost">Keep Mine</button> <!> <button class="btn primary"> </button></div>`,1),wv=W(`<div class="d-scrim shape-scrim svelte-mzbdvw" role="presentation"><div class="d-sheet shape svelte-mzbdvw" role="dialog" aria-modal="true" aria-labelledby="sh-title" aria-describedby="sh-lead"><header class="d-head"><span class="d-badge violet" aria-hidden="true"><!></span> <div><h2 id="sh-title"> </h2> <p id="sh-lead">The assistant proposes. Code marks every word it added — you decide each change before it is used.</p></div></header> <!></div></div>`);function Tv(e,t){Xe(t,!0);let n=Q.shape,r={requirement:`a requirement`,feature:`a feature description`,quick:`a quick change`,bug_symptom:`what goes wrong`,bug_expected:`what should happen`,bug_unchanged:`what must keep working`,answer:`an answer`,note:`a note for the next attempt`},i=N(null),a=N(null),o=N(F([])),s=N(F([])),c=N(!1),l=N(!1),u=N(``),d=N(null),f=N(F([])),p=N(F([])),m=N(F([])),h=N(F([])),g=e=>`[NEEDS CLARIFICATION: ${e.replace(/\]/g,`)`)}]`,_=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),v=(e,t=``)=>RegExp(`${t}(?<![\\p{L}\\p{N}])${_(e)}(?![\\p{L}\\p{N}])`,`iu`),y=(e,t,n)=>e.replace(v(t),()=>n),b=(e,t)=>e.replace(v(t,`(?:(?<![\\p{L}\\p{N}])(?:within|in|after|under|over|below|above|up to|at most|at least|for|of|by)\\s+)?`),()=>``),x=M(()=>{if(!H(i))return``;if(H(l))return H(u);let e=H(i).proposal;H(i).assumptions.forEach((t,n)=>{H(f)[n]===`ask`&&(e=y(e,t.words,g(t.question))),H(f)[n]===`remove`&&(e=b(e,t.words))}),H(i).unexplained.forEach((t,n)=>{H(p)[n]===`ask`&&(e=y(e,t,g(`What should "${t}" be?`))),H(p)[n]===`remove`&&(e=b(e,t))});let t=H(h).filter((e,t)=>H(m)[t]===`add`);return t.length&&(e=`${e.trim()}\n${t.join(`
`)}`),e.replace(/[ \t]{2,}/g,` `).replace(/ ([.,;:])/g,`$1`).trim()}),S=M(()=>H(l)?0:H(f).filter(e=>!e).length+H(p).filter(e=>!e).length+H(m).filter(e=>!e).length);async function C(){try{let e=await xa(`/api/shape`,{field:n.field,text:n.text});if(e.status!==`ok`||!e.data){P(a,e.message,!0);return}P(i,e.data,!0),P(u,e.data.proposal,!0),P(o,e.data.diff.proposal,!0),P(s,e.data.findings,!0),P(f,e.data.assumptions.map(()=>null),!0),P(p,e.data.unexplained.map(()=>null),!0),P(h,e.data.coverage.filter(e=>e.dropped).map(e=>e.sentence),!0),P(m,H(h).map(()=>null),!0)}catch(e){P(a,e instanceof Error?e.message:String(e),!0)}}C();let w=0;B(()=>{let e=H(x);if(!H(i))return;let t=++w,r=H(i).assumptions.filter((e,t)=>H(f)[t]!==`remove`),a=!!H(i).back_translation,c=H(i).original,l=setTimeout(()=>{xa(`/api/shape/judge`,{field:n.field,original:c,proposal:e,assumptions:r}).then(e=>{t===w&&(a||P(o,e.diff.proposal,!0),P(s,e.findings,!0))}).catch(()=>{})},300);return()=>clearTimeout(l)});let T=()=>{P(f,H(f).map(e=>e??`keep`),!0),P(p,H(p).map(e=>e??`keep`),!0)},E=()=>Q.shape=null;function ee(){H(S)||(n.accept(H(x)),E())}function D(e){e.key===`Escape`?(e.preventDefault(),e.stopPropagation(),E()):e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),ee())}let O=e=>{if(!H(d)||!e.includes(H(d)))return[{text:e,lit:!1}];let t=e.indexOf(H(d));return[{text:e.slice(0,t),lit:!1},{text:H(d),lit:!0},{text:e.slice(t+H(d).length),lit:!1}]};var k=wv(),te=I(k),ne=I(te),re=I(ne);$(I(re),{name:`sparkle`,size:20,weight:2.2}),A(re);var ie=z(re,2),ae=R(I(ie));j(2),A(ie),A(ne);var oe=z(ne,2),se=e=>{var t=Z_(),n=L(t),r=R(n,!0),i=z(n,2),o=z(I(i));A(i),V(()=>K(r,H(a))),U(`click`,o,E),G(e,t)},ce=e=>{G(e,Q_())},le=e=>{var t=Cv(),n=L(t),r=I(n),a=z(I(r),2);J(a,21,()=>H(i).diff.original,si,(e,t)=>{var n=$_(),r=R(n,!0);V(()=>{Y(n,1,xi(H(t).origin),`svelte-mzbdvw`),K(r,H(t).text)}),G(e,n)}),A(a);var g=z(a,2),_=e=>{G(e,ev())},v=M(()=>H(i).diff.original.some(e=>e.origin===`dropped`));q(g,e=>{H(v)&&e(_)}),A(r);var y=z(r,2),b=I(y),C=z(I(b)),w=e=>{var t=tv();U(`click`,t,()=>P(l,!1)),G(e,t)};q(C,e=>{H(l)&&!H(c)&&e(w)});var D=z(C),k=R(D,!0);A(b);var te=z(b,2),ne=e=>{var t=nv();lt(t),ct(t,!0),$i(t,()=>H(u),e=>P(u,e)),G(e,t)},re=e=>{var t=rv(),n=L(t),r=R(n,!0),a=z(n,2),s=R(a),c=z(a,2);J(c,21,()=>H(o),si,(e,t)=>{var n=$_(),r=R(n,!0);V(()=>{Y(n,1,xi(H(t).origin),`svelte-mzbdvw`),K(r,H(t).text)}),G(e,n)}),A(c),V(()=>{K(r,H(x)),K(s,`In your words (${H(i).language??``})`)}),G(e,t)},ie=e=>{var t=ov();J(t,21,()=>H(o),si,(e,t)=>{var n=av();J(n,21,()=>O(H(t).text),si,(e,t)=>{var n=Yr(),r=L(n),i=e=>{var n=iv(),r=R(n,!0);V(()=>K(r,H(t).text)),G(e,n)},a=e=>{var n=Jr();V(()=>K(n,H(t).text)),G(e,n)};q(r,e=>{H(t).lit?e(i):e(a,-1)}),G(e,n)}),A(n),V(()=>Y(n,1,xi(H(t).origin),`svelte-mzbdvw`)),G(e,n)}),A(t),G(e,t)};q(te,e=>{H(c)?e(ne):H(i).back_translation?e(re,1):e(ie,-1)});var ae=z(te,2),oe=e=>{G(e,sv())},se=M(()=>H(o).some(e=>e.origin===`added`));q(ae,e=>{H(se)&&e(oe)}),A(y),A(n);var ce=z(n,2),le=e=>{var t=gv();let n;var r=I(t),a=e=>{G(e,cv())};q(r,e=>{H(l)&&e(a)});var o=z(r,2),s=z(I(o)),c=e=>{var t=lv(),n=R(t,!0);V(()=>K(n,H(S))),G(e,t)},u=e=>{var t=uv();$(I(t),{name:`check`,size:10,weight:2.8}),j(),A(t),G(e,t)};q(s,e=>{H(S)?e(c):e(u,-1)}),A(o);var g=z(o,2),_=I(g);J(_,17,()=>H(i).assumptions,si,(e,t,n)=>{var r=pv();let i;var a=I(r),o=z(I(a),2),s=R(o,!0),c=z(o),l=e=>{var n=dv(),r=R(n);V(()=>K(r,`from “${H(t).from??``}”`)),G(e,n)};q(c,e=>{H(t).from&&e(l)}),A(a);var u=z(a,2),p=I(u);let m;var h=z(p,2);let g;var _=z(h,2);let v;A(u);var y=z(u,2),b=e=>{var n=fv(),r=R(n);V(()=>K(r,`The spec will ask: ${H(t).question??``}`)),G(e,n)};q(y,e=>{H(f)[n]===`ask`&&e(b)}),A(r),V(()=>{i=Y(r,1,`pill svelte-mzbdvw`,null,i,{decided:H(f)[n]}),K(s,H(t).words),X(u,`aria-label`,`Assumed ${H(t).words??``}`),X(p,`aria-checked`,H(f)[n]===`keep`),m=Y(p,1,`svelte-mzbdvw`,null,m,{on:H(f)[n]===`keep`}),X(h,`aria-checked`,H(f)[n]===`ask`),X(h,`title`,H(t).question),g=Y(h,1,`svelte-mzbdvw`,null,g,{on:H(f)[n]===`ask`}),X(_,`aria-checked`,H(f)[n]===`remove`),v=Y(_,1,`svelte-mzbdvw`,null,v,{on:H(f)[n]===`remove`})}),Lr(`mouseenter`,r,()=>P(d,H(t).words,!0)),Lr(`mouseleave`,r,()=>P(d,null)),U(`click`,p,()=>H(f)[n]=`keep`),U(`click`,h,()=>H(f)[n]=`ask`),U(`click`,_,()=>H(f)[n]=`remove`),G(e,r)});var v=z(_,2);J(v,18,()=>H(i).unexplained,e=>e,(e,t,n)=>{var r=mv();let i;var a=I(r),o=R(z(I(a),2),!0);A(a);var s=z(a,2),c=I(s);let l;var u=z(c,2);let f;var m=z(u,2);let h;A(s),A(r),V(()=>{i=Y(r,1,`pill warn svelte-mzbdvw`,null,i,{decided:H(p)[H(n)]}),K(o,t),X(s,`aria-label`,`Added ${t??``}`),X(c,`aria-checked`,H(p)[H(n)]===`keep`),l=Y(c,1,`svelte-mzbdvw`,null,l,{on:H(p)[H(n)]===`keep`}),X(u,`aria-checked`,H(p)[H(n)]===`ask`),f=Y(u,1,`svelte-mzbdvw`,null,f,{on:H(p)[H(n)]===`ask`}),X(m,`aria-checked`,H(p)[H(n)]===`remove`),h=Y(m,1,`svelte-mzbdvw`,null,h,{on:H(p)[H(n)]===`remove`})}),Lr(`mouseenter`,r,()=>P(d,t,!0)),Lr(`mouseleave`,r,()=>P(d,null)),U(`click`,c,()=>H(p)[H(n)]=`keep`),U(`click`,u,()=>H(p)[H(n)]=`ask`),U(`click`,m,()=>H(p)[H(n)]=`remove`),G(e,r)}),J(z(v,2),17,()=>H(h),si,(e,t,n)=>{var r=hv();let i;var a=I(r),o=z(I(a));A(a);var s=z(a,2),c=I(s);let l;var u=z(c,2);let d;A(s),A(r),V(()=>{i=Y(r,1,`pill warn svelte-mzbdvw`,null,i,{decided:H(m)[n]}),K(o,` “${H(t)??``}”`),X(c,`aria-checked`,H(m)[n]===`add`),l=Y(c,1,`svelte-mzbdvw`,null,l,{on:H(m)[n]===`add`}),X(u,`aria-checked`,H(m)[n]===`drop`),d=Y(u,1,`svelte-mzbdvw`,null,d,{on:H(m)[n]===`drop`})}),U(`click`,c,()=>H(m)[n]=`add`),U(`click`,u,()=>H(m)[n]=`drop`),G(e,r)}),A(g),A(t),V(()=>{n=Y(t,1,`decide svelte-mzbdvw`,null,n,{off:H(l)}),t.inert=H(l)}),G(e,t)};q(ce,e=>{(H(i).assumptions.length||H(i).unexplained.length||H(h).length)&&e(le)});var ue=z(ce,2),de=e=>{var t=vv(),n=z(I(t),2);J(n,21,()=>H(i).questions,si,(e,t)=>{var n=_v(),r=R(n,!0);V(()=>K(r,H(t))),G(e,n)}),A(n),A(t),G(e,t)};q(ue,e=>{H(i).questions.length&&e(de)});var fe=z(ue,2),pe=e=>{var t=xv(),n=z(I(t),2);J(n,21,()=>H(s),e=>e.rule+e.words,(e,t)=>{var n=bv(),r=I(n),i=e=>{var n=yv(),r=L(n),i=R(r,!0),a=z(r,1,!0);a.nodeValue=` `,V(()=>K(i,H(t).words)),G(e,n)};q(r,e=>{H(t).words&&e(i)});var a=z(r),o=R(z(a),!0);A(n),V(()=>{K(a,`${H(t).reason??``} — `),K(o,H(t).fix)}),G(e,n)}),A(n),A(t),G(e,t)};q(fe,e=>{H(s).length&&e(pe)});var me=z(fe,2),he=I(me),ge=I(he),_e=e=>{G(e,Jr(`Your words were cut at 20 000 characters.`))};q(ge,e=>{H(i).cut&&e(_e)}),j(),A(he);var ve=z(he,2),ye=z(ve,2),be=e=>{var t=Sv();U(`click`,t,T),G(e,t)},xe=M(()=>H(f).some(e=>!e)||H(p).some(e=>!e));q(ye,e=>{H(xe)&&e(be)});var Se=z(ye,2),Ce=R(Se,!0);A(me),V(()=>{K(k,H(c)?`Done`:`Edit`),Se.disabled=H(S)>0,X(Se,`title`,H(S)?`${H(S)} still to decide`:`Put it in the field (⌘⏎)`),K(Ce,H(S)?`${H(S)} to Decide`:`Use It`)}),U(`click`,D,()=>{!H(c)&&!H(l)&&(P(u,H(x),!0),P(l,!0)),P(c,!H(c))}),U(`click`,ve,E),U(`click`,Se,ee),G(e,t)};q(oe,e=>{H(a)?e(se):H(i)?e(le,-1):e(ce,1)}),A(te),_i(te,e=>X_?.(e)),A(k),V(()=>K(ae,`Shape ${r[n.field]??`your words`??``}`)),U(`click`,k,e=>e.target===e.currentTarget&&E()),U(`keydown`,k,D),G(e,k),Ze()}Rr([`click`,`keydown`]);var Ev=W(`<li> </li>`),Dv=W(`<p class="warn svelte-rmx2or"> </p>`),Ov=W(`<li class="svelte-rmx2or"><span class="st mono svelte-rmx2or"> </span> <span class="w svelte-rmx2or"><strong> </strong><span class="d mono svelte-rmx2or"> </span><span class="d mono svelte-rmx2or" title="the exact command you confirm"> </span></span> <span class="cls mono svelte-rmx2or"> </span></li>`),kv=W(`<ul class="repros svelte-rmx2or"></ul>`),Av=W(`<p class="muted"> </p>`),jv=W(`<span class="hint muted mono svelte-rmx2or"> </span> <button class="btn">Later</button> <button class="btn">Reject with Reason</button> <button class="btn primary">Confirm and Fix</button>`,1),Mv=W(`<button class="btn primary">Close</button>`),Nv=W(`<!> <!> <!> <div class="row svelte-rmx2or"><!></div>`,1),Pv=W(`<button class="x svelte-rmx2or" aria-label="Remove"><!></button>`),Fv=W(`<div class="item svelte-rmx2or"><input placeholder="An empty title is refused with a message" class="svelte-rmx2or"/><!></div>`),Iv=W(`<div class="item svelte-rmx2or"><input placeholder="A title is saved as typed" class="svelte-rmx2or"/><button class="x svelte-rmx2or" aria-label="Remove"><!></button></div>`),Lv=W(`<div class="item svelte-rmx2or"><input class="mono svelte-rmx2or" placeholder="tests/title.rs::empty_title_is_refused"/><button class="x svelte-rmx2or" aria-label="Remove"><!></button></div>`),Rv=W(`<label class="field svelte-rmx2or"><span class="svelte-rmx2or">What happens?</span> <textarea rows="2" placeholder="Saving an empty title crashes" class="svelte-rmx2or"></textarea></label> <!> <div class="field svelte-rmx2or"><span class="svelte-rmx2or">What should happen instead <em class="svelte-rmx2or">— one per behaviour; each gets its own reproduction</em></span> <!> <button class="add svelte-rmx2or"><!> Another expected behaviour</button> <!></div> <div class="field svelte-rmx2or"><span class="svelte-rmx2or">What must keep working <em class="svelte-rmx2or">— optional</em></span> <!> <button class="add svelte-rmx2or"><!> Something that must not change</button> <!></div> <details class="svelte-rmx2or"><summary class="svelte-rmx2or">Issue, your own test, someone else's fix</summary> <label class="field svelte-rmx2or"><span class="svelte-rmx2or">Issue number <em class="svelte-rmx2or">— context for the author, never the triad</em></span><input type="number" min="1" class="svelte-rmx2or"/></label> <div class="field svelte-rmx2or"><span class="svelte-rmx2or">Your failing test <em class="svelte-rmx2or">— PATH::NAME, one per expected behaviour; naming it confirms it</em></span> <!> <button class="add svelte-rmx2or"><!> A test</button></div> <label class="field svelte-rmx2or"><span class="svelte-rmx2or">A fix to judge <em class="svelte-rmx2or">— a patch file or pr:N; judged, never retried</em></span><input class="mono svelte-rmx2or" placeholder="pr:123"/></label></details> <div class="row svelte-rmx2or"><span class="hint muted svelte-rmx2or"> </span> <button class="btn">Cancel</button> <button class="btn">Record</button> <button class="btn primary">Record and Reproduce</button></div>`,1),zv=W(`<div class="scrim svelte-rmx2or" role="presentation"><div class="sheet glass svelte-rmx2or" role="dialog" aria-modal="true" aria-labelledby="bug-title"><header class="svelte-rmx2or"><span class="badge svelte-rmx2or" aria-hidden="true"><!></span> <div><h2 id="bug-title" class="svelte-rmx2or"> </h2> <p class="svelte-rmx2or"> </p></div></header> <ol class="strip svelte-rmx2or" aria-label="Stages"></ol> <!> <!></div></div>`);function Bv(e,t){Xe(t,!0);let n=e=>e.split(`
`).map(e=>e.replace(/^\s*[-*•]\s*/,``).trim()).filter(Boolean),r=Q.bugSheet??{},i=N(F(r.symptom??``)),a=N(F([``])),o=N(F([])),s=N(F(r.issue??null)),c=N(F([])),l=N(``),u=N(null),d=N(F(r.key??null)),f=N(null),p=M(()=>ms(H(i),H(a),H(c))),m=M(()=>!H(p)&&!Q.job?.running);async function h(){if(H(d))try{let e=await ba(`/api/bug${Sa({task:H(d)})}`);P(u,e.data??null,!0),P(f,e.data?null:e.message,!0)}catch(e){P(f,String(e.message??e),!0)}}B(()=>{h()}),B(()=>{let e=Q.job?.result;if(e?.payload===`bug`&&e.data){let t=e.data;P(u,t,!0),P(d,`${t.unit}/${t.task}`)}});async function g(e){if(!H(m))return;let t={symptom:H(i),expected:H(a),unchanged:H(o),issue:H(s),tests:H(c),candidate:H(l),run:e};await Q.perform(ja({kind:`bug_fix`,symptom:H(i).trim(),expected:H(a).map(e=>e.trim()).filter(Boolean),unchanged:H(o).map(e=>e.trim()).filter(Boolean),issue:H(s),tests:H(c).map(e=>e.trim()).filter(Boolean),candidate:H(l).trim()||null,slug:null,run:e},{group:`work`,label:e?`record and reproduce the bug`:`record the bug`,why:`your words become the triad; nothing is fixed before you confirm a failing reproduction`,command:gs(t)}))}async function _(e){H(u)?.confirm_digest&&H(d)&&await Q.perform(ja({kind:`bug_confirm`,task:H(d),digest:H(u).confirm_digest,reject:e},{group:`next`,label:e?`reject the reproductions`:`confirm the reproductions`,why:e?`the author tries again, told your reason`:`they are frozen and the fix runs`,command:e?`speccoder bug confirm ${H(d)} --reject --reason "…"`:`speccoder bug confirm ${H(d)} --digest ${H(u).confirm_digest}`,input:e?`Why they do not show the bug`:null}))}let v=()=>Q.bugSheet=null;function y(e){e.key===`Escape`&&v(),e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&!H(u)&&(e.preventDefault(),g(!0))}let b=(e,t,n)=>e.map((e,r)=>r===t?n:e);var x=zv();Lr(`keydown`,on,y);var S=I(x),C=I(S),w=I(C);$(I(w),{name:`exclaim`,size:20,weight:2.2}),A(w);var T=z(w,2),E=I(T),ee=R(E,!0),D=R(z(E,2),!0);A(T),A(C);var O=z(C,2);J(O,23,()=>fs,e=>e.stage,(e,t,n)=>{var r=Ev();let i;var a=R(r,!0);V((e,n)=>{i=Y(r,1,`svelte-rmx2or`,null,i,{done:e,now:n}),K(a,H(t).label)},[()=>H(n)<ps(H(u)),()=>H(n)===ps(H(u))]),G(e,r)}),A(O);var k=z(O,2),te=e=>{var t=Dv(),n=R(t,!0);V(()=>K(n,H(f))),G(e,t)};q(k,e=>{H(f)&&e(te)});var ne=z(k,2),re=e=>{var t=Nv(),n=L(t),r=e=>{var t=kv();J(t,21,()=>H(u).reproductions,e=>e.file,(e,t)=>{var n=Ov(),r=I(n),i=R(r,!0),a=z(r,2),o=I(a),s=R(o,!0),c=z(o),l=R(c),d=R(z(c));A(a);var f=R(z(a,2));A(n),V((e,n,r)=>{K(i,H(t).statement),K(s,e),K(l,`${H(t).file??``} :: ${H(t).test??``}`),K(d,`$ ${n??``}`),K(f,`${r??``}${H(t).final===`not_run`?``:` → ${H(t).final}`}${H(t).revert===`not_run`?``:` · revert ${H(t).revert}`}`)},[()=>H(u).triad.expected.find(e=>e.id===H(t).statement)?.text??H(u).triad.unchanged.find(e=>e.id===H(t).statement)?.text,()=>H(t).argv.join(` `),()=>H(t).baseline.join(` · `)]),G(e,n)}),A(t),G(e,t)};q(n,e=>{H(u).reproductions.length&&e(r)});var i=z(n,2),a=e=>{var t=Dv(),n=R(t);V(()=>K(n,`No held-out variant could be kept (${H(u).held_out_reason??``}): the fix cannot be verified until one is.`)),G(e,t)};q(i,e=>{H(u).held_out_reason&&e(a)});var o=z(i,2),s=e=>{var t=Av(),n=R(t);V((e,t,r)=>K(n,`${H(u).handoff.tries.length??``} tries · reproduced: ${e??``} · not: ${t??``} · already passing: ${r??``}`),[()=>H(u).handoff.statements.reproduced.join(`, `)||`none`,()=>H(u).handoff.statements.not_reproduced.join(`, `)||`none`,()=>H(u).handoff.statements.satisfied.join(`, `)||`none`]),G(e,t)};q(o,e=>{H(u).handoff&&e(s)});var c=z(o,2),l=I(c),d=e=>{var t=jv(),n=L(t),r=R(n),i=z(n,2),a=z(i,2),o=z(a,2);V(e=>{K(r,`digest ${e??``}…`),a.disabled=!!Q.job?.running,o.disabled=!!Q.job?.running},[()=>H(u).confirm_digest?.slice(0,19)]),U(`click`,i,v),U(`click`,a,()=>_(!0)),U(`click`,o,()=>_(!1)),G(e,t)},f=e=>{var t=Mv();U(`click`,t,v),G(e,t)};q(l,e=>{H(u).outcome===`awaiting_confirmation`?e(d):e(f,-1)}),A(c),G(e,t)},ie=e=>{var t=Rv(),r=L(t),u=z(I(r),2);lt(u),ct(u,!0),A(r);var d=z(r,2);Rc(d,{field:`bug_symptom`,get text(){return H(i)},onshaped:e=>P(i,e,!0)});var f=z(d,2),h=z(I(f),2);J(h,17,()=>H(a),si,(e,t,n)=>{var r=Fv(),i=I(r);Gi(i),X(i,`aria-label`,`Expected, ${n+1}`);var o=z(i),s=e=>{var t=Pv();$(I(t),{name:`xmark`,size:10,weight:2.6}),A(t),U(`click`,t,()=>P(a,H(a).filter((e,t)=>t!==n),!0)),G(e,t)};q(o,e=>{H(a).length>1&&e(s)}),A(r),V(()=>Ki(i,H(t))),U(`input`,i,e=>P(a,b(H(a),n,e.currentTarget.value),!0)),G(e,r)});var _=z(h,2);$(I(_),{name:`plus`,size:10,weight:2.6}),j(),A(_);var y=z(_,2);{let e=M(()=>H(a).join(`
`));Rc(y,{field:`bug_expected`,get text(){return H(e)},onshaped:e=>P(a,n(e),!0)})}A(f);var x=z(f,2),S=z(I(x),2);J(S,17,()=>H(o),si,(e,t,n)=>{var r=Iv(),i=I(r);Gi(i),X(i,`aria-label`,`Unchanged, ${n+1}`);var a=z(i);$(I(a),{name:`xmark`,size:10,weight:2.6}),A(a),A(r),V(()=>Ki(i,H(t))),U(`input`,i,e=>P(o,b(H(o),n,e.currentTarget.value),!0)),U(`click`,a,()=>P(o,H(o).filter((e,t)=>t!==n),!0)),G(e,r)});var C=z(S,2);$(I(C),{name:`plus`,size:10,weight:2.6}),j(),A(C);var w=z(C,2),T=e=>{{let t=M(()=>H(o).join(`
`));Rc(e,{field:`bug_unchanged`,get text(){return H(t)},onshaped:e=>P(o,n(e),!0)})}},E=M(()=>H(o).some(e=>e.trim()));q(w,e=>{H(E)&&e(T)}),A(x);var ee=z(x,2),D=z(I(ee),2),O=z(I(D));Gi(O),A(D);var k=z(D,2),te=z(I(k),2);J(te,17,()=>H(c),si,(e,t,n)=>{var r=Lv(),i=I(r);Gi(i),X(i,`aria-label`,`Test, ${n+1}`);var a=z(i);$(I(a),{name:`xmark`,size:10,weight:2.6}),A(a),A(r),V(()=>Ki(i,H(t))),U(`input`,i,e=>P(c,b(H(c),n,e.currentTarget.value),!0)),U(`click`,a,()=>P(c,H(c).filter((e,t)=>t!==n),!0)),G(e,r)});var ne=z(te,2);$(I(ne),{name:`plus`,size:10,weight:2.6}),j(),A(ne),A(k);var re=z(k,2),ie=z(I(re));Gi(ie),A(re),A(ee);var ae=z(ee,2),oe=I(ae),se=R(oe,!0),ce=z(oe,2),le=z(ce,2),ue=z(le,2);A(ae),V(()=>{Ki(O,H(s)??``),K(se,H(p)??`⌘↩ records and reproduces`),le.disabled=!H(m),X(le,`title`,H(p)??``),ue.disabled=!H(m),X(ue,`title`,H(p)??``)}),$i(u,()=>H(i),e=>P(i,e)),U(`click`,_,()=>P(a,[...H(a),``],!0)),U(`click`,C,()=>P(o,[...H(o),``],!0)),U(`input`,O,e=>P(s,e.currentTarget.value?Number(e.currentTarget.value):null,!0)),U(`click`,ne,()=>P(c,[...H(c),``],!0)),$i(ie,()=>H(l),e=>P(l,e)),U(`click`,ce,v),U(`click`,le,()=>g(!1)),U(`click`,ue,()=>g(!0)),G(e,t)};q(ne,e=>{H(u)?e(re):e(ie,-1)}),A(S),A(x),V(e=>{K(ee,H(u)?H(u).title:`Report a Bug`),K(D,e)},[()=>H(u)?_s(H(u)):`Say what happens and what should. A test-blind author writes one reproduction per expected behaviour; it must fail on the untouched code by an assertion before anything is fixed, and you confirm it once.`]),U(`click`,x,e=>e.target===e.currentTarget&&v()),G(e,x),Ze()}Rr([`click`,`input`]);var Vv=W(`<p class="muted small"> </p>`),Hv=W(`<span class="badge svelte-lhkinu">In use</span>`),Uv=W(`<button class="btn small tinted"> </button>`),Wv=W(`<span class="spin svelte-lhkinu"></span>`),Gv=W(`<span class="fix svelte-lhkinu"><!></span>`),Kv=W(`<div><span class="g svelte-lhkinu" aria-hidden="true"><!></span> <span class="what svelte-lhkinu"> <span class="sr-only"> </span></span> <span class="d svelte-lhkinu"> </span> <!></div>`),qv=W(`<li><header class="svelte-lhkinu"><strong class="svelte-lhkinu"> </strong> <!> <!></header> <!></li>`),Jv=W(`<li class="muted small svelte-lhkinu">Looking for agents…</li>`),Yv=W(`<p class="muted small note svelte-lhkinu"><!> speccoder decides every call an agent asks about, and the files and commands it runs through speccoder. Everything the agent does itself asks you — it runs outside the sandbox; you can allow plain reads for the task. What it does without asking — an allow rule in its own settings — stays outside, and the run says so when it sees it.</p>`),Xv=W(`<section aria-label="Agents"><!> <ul class="svelte-lhkinu"></ul> <!></section>`);function Zv(e,t){Xe(t,!0);let n=ma(t,`use`,3,null),r=ma(t,`compact`,3,!1),i=N(!0),a=N(null);B(()=>{Q.loadAgents(!1).then(()=>Q.loadAgents(!0)).catch(e=>P(a,String(e.message??e),!0)).finally(()=>P(i,!1))});let o=M(()=>Q.agents?.cards??[]),s=e=>[[`Installed`,e.installed],[`Signed in`,e.signed_in],[`Asks first`,e.asks_first]],c=e=>e.installed.state===`yes`&&e.signed_in.state!==`no`&&e.asks_first.state!==`no`;var l=Xv();let u;var d=I(l),f=e=>{var t=Vv(),n=R(t);V(()=>K(n,`The agents could not be listed: ${H(a)??``}`)),G(e,t)};q(d,e=>{H(a)&&e(f)});var p=z(d,2);J(p,21,()=>H(o),e=>e.id,(e,t)=>{var r=qv();let a;var o=I(r),l=I(o),u=R(l,!0),d=z(l,2),f=e=>{G(e,Hv())};q(d,e=>{H(t).chosen&&e(f)});var p=z(d,2),m=e=>{var r=Uv(),i=R(r);V(()=>K(i,`Use ${H(t).name??``}`)),U(`click`,r,()=>n()?.(H(t).id)),G(e,r)};q(p,e=>{n()&&!H(t).chosen&&H(t).installed.state===`yes`&&e(m)}),A(o),J(z(o,2),17,()=>s(H(t)),([e,t])=>e,(e,t)=>{var n=M(()=>g(H(t),2));let r=()=>H(n)[0],a=()=>H(n)[1];var o=Kv(),s=I(o),c=I(s),l=e=>{$(e,{name:`check`,size:11,weight:3})},u=e=>{$(e,{name:`xmark`,size:10,weight:3})},d=e=>{G(e,Wv())},f=e=>{G(e,Jr(`·`))};q(c,e=>{a().state===`yes`?e(l):a().state===`no`?e(u,1):H(i)&&r()===`Signed in`?e(d,2):e(f,-1)}),A(s);var p=z(s,2),m=I(p,!0),h=R(z(m));A(p);var _=z(p,2),v=R(_,!0),y=z(_,2),b=e=>{var t=Gv();fo(I(t),{get steps(){return a().fix_steps},limit:1}),A(t),G(e,t)};q(y,e=>{a().state!==`yes`&&a().fix_steps.length&&e(b)}),A(o),V(()=>{Y(o,1,`tick ${a().state??``}`,`svelte-lhkinu`),K(m,r()),K(h,`: ${a().state??``}`),K(v,a().detail)}),G(e,o)}),A(r),V(e=>{a=Y(r,1,`svelte-lhkinu`,null,a,{chosen:H(t).chosen,ready:e}),K(u,H(t).name)},[()=>c(H(t))]),G(e,r)},e=>{var t=Yr(),n=L(t),r=e=>{G(e,Jv())};q(n,e=>{H(i)&&e(r)}),G(e,t)}),A(p);var m=z(p,2),h=e=>{var t=Yv();$(I(t),{name:`shield`,size:11}),j(),A(t),G(e,t)};q(m,e=>{r()||e(h)}),A(l),V(()=>u=Y(l,1,`agents svelte-lhkinu`,null,u,{compact:r()})),G(e,l),Ze()}Rr([`click`]);var Qv=W(`<p class="bad svelte-ibcrig"><!> </p>`),$v=W(`<li class="svelte-ibcrig"><header class="svelte-ibcrig"><strong> </strong><button class="btn small tinted"><!> Copy</button></header> <pre class="mono svelte-ibcrig"> </pre></li>`),ey=W(`<p class="muted small">No hooks yet. Copy one into speccoder.toml, commit it, then trust it here.</p> <ul class="starters svelte-ibcrig"></ul>`,1),ty=W(`<p class="bad small svelte-ibcrig"><!> </p>`),ny=W(`<span></span>`),ry=W(`<span class="last small svelte-ibcrig"> </span>`),iy=W(`<span class="marks svelte-ibcrig" aria-label="Last runs"></span> <!>`,1),ay=W(`<span class="muted small">Not run yet</span>`),oy=W(`<button class="btn small primary">Trust…</button>`),sy=W(`<button class="btn small"><!> Test</button>`),cy=W(`<li><header class="svelte-ibcrig"><span class="glyph svelte-ibcrig" aria-hidden="true"><!></span> <strong class="mono"> </strong> <span class="chip svelte-ibcrig"> </span> <span><!> </span></header> <p class="runs mono svelte-ibcrig"> </p> <!> <footer class="svelte-ibcrig"><!> <span class="digest mono small svelte-ibcrig"> </span> <!></footer></li>`),ly=W(`<ul class="cards svelte-ibcrig"></ul>`),uy=W(`<section class="hooks svelte-ibcrig" aria-label="Hooks"><!></section>`);function dy(e,t){Xe(t,!0);let n=N(null),r=()=>ba(`/api/hooks`).then(e=>P(n,e,!0)).catch(()=>{});B(()=>{Q.job?.running,r()});let i=M(()=>H(n)?.data?.hooks??[]),a=[{title:`A gate the tick waits for`,text:`[hooks.licence]
at = "tick"
argv = ["cargo", "deny", "check", "licenses"]
network = true`},{title:`An observer for your team chat`,text:`[hooks.team-chat]
on = ["task.ticked", "task.stopped"]
url = "https://hooks.example.com/speccoder"
secret_env = "SPECCODER_HOOK_SECRET"`}],o={trusted:{label:`Trusted`,tone:`verified`,icon:`check`},untrusted:{label:`Waits for your trust`,tone:`needs_approval`,icon:`hand`},changed:{label:`Changed — trust it again`,tone:`needs_approval`,icon:`exclaim`}},s=e=>e.replace(`sha256:`,``).slice(0,12),c=e=>e===`passed`||e===`delivered`?`ok`:e===`not_run`||e===`skipped_untrusted`?`skip`:`bad`,l=e=>Q.perform(ja({kind:`hook_trust`,name:e.name,digest:e.digest},{group:`hooks`,label:`trust ${e.name}`,why:``,command:`speccoder hooks trust ${e.name}`,confirm:e.role===`gate`?`It stands ${e.listens} from now on; only exit 0 lets the point through.`:`It ${e.listens} from now on.`})),u=e=>Q.perform(ja({kind:`hook_test`,name:e.name},{group:`hooks`,label:`test ${e.name}`,why:``,command:`speccoder hooks test ${e.name}`}));var d=uy(),f=I(d),p=e=>{var t=Qv(),r=I(t);$(r,{name:`exclaim`,size:14});var i=z(r);A(t),V(()=>K(i,` ${H(n).data.problem??``}`)),G(e,t)},m=e=>{var t=ey(),n=z(L(t),2);J(n,21,()=>a,e=>e.title,(e,t)=>{var n=$v(),r=I(n),i=I(r),a=R(i,!0),o=z(i);$(I(o),{name:`copy`,size:11}),j(),A(o),A(r);var s=R(z(r,2),!0);A(n),V(()=>{K(a,H(t).title),K(s,H(t).text)}),U(`click`,o,()=>Q.copy(H(t).text,`Copied`,`Paste it into speccoder.toml`)),G(e,n)}),A(n),G(e,t)},h=e=>{var t=ly();J(t,21,()=>H(i),e=>e.name,(e,t)=>{let n=M(()=>o[H(t).state]);var r=cy();let i;var a=I(r),d=I(a),f=I(d);{let e=M(()=>H(t).role===`gate`?`shield`:`bubble`);$(f,{get name(){return H(e)},size:14,weight:2.2})}A(d);var p=z(d,2),m=R(p,!0),h=z(p,2),g=R(h,!0),_=z(h,2),v=I(_);$(v,{get name(){return H(n).icon},size:11,weight:2.4});var y=z(v);A(_),A(a);var b=z(a,2),x=R(b,!0),S=z(b,2),C=e=>{var n=ty(),r=I(n);$(r,{name:`exclaim`,size:12});var i=z(r);A(n),V(()=>K(i,` ${H(t).problem??``}`)),G(e,n)};q(S,e=>{H(t).problem&&e(C)});var w=z(S,2),T=I(w),E=e=>{let n=M(()=>H(t).recent.at(-1));var r=iy(),i=L(r);J(i,21,()=>H(t).recent.slice(-10),e=>e.at+e.what,(e,t)=>{var n=ny();V(e=>{Y(n,1,`m ${e??``}`,`svelte-ibcrig`),X(n,`title`,`${H(t).what??``}: ${H(t).outcome??``}${H(t).error?` — ${H(t).error}`:``}`)},[()=>c(H(t).outcome)]),G(e,n)}),A(i);var a=z(i,2),o=e=>{var t=ry(),r=R(t);V(()=>K(r,`${H(n).outcome??``} — ${H(n).error??``}`)),G(e,t)};q(a,e=>{H(n)?.error&&e(o)}),G(e,r)},ee=e=>{G(e,ay())};q(T,e=>{H(t).recent.length?e(E):e(ee,-1)});var D=z(T,2),O=R(D,!0),k=z(D,2),te=e=>{var n=oy();V(()=>n.disabled=!!Q.job?.running),U(`click`,n,()=>l(H(t))),G(e,n)},ne=e=>{var n=sy();$(I(n),{name:`play`,size:10}),j(),A(n),V(()=>n.disabled=!!Q.job?.running),U(`click`,n,()=>u(H(t))),G(e,n)};q(k,e=>{H(t).state===`trusted`?e(ne,-1):e(te)}),A(w),A(r),V((e,a)=>{i=Y(r,1,`svelte-ibcrig`,null,i,{waiting:H(t).state!==`trusted`}),K(m,H(t).name),K(g,e),Y(_,1,`state ${H(n).tone??``}`,`svelte-ibcrig`),K(y,` ${H(n).label??``}`),K(x,H(t).runs),X(D,`title`,H(t).digest),K(O,a)},[()=>H(t).role===`gate`?`Guards the ${H(t).at===`pr`?`pull request`:`tick`}`:H(t).listens.replace(`hears`,`Hears`),()=>s(H(t).digest)]),G(e,r)}),A(t),G(e,t)};q(f,e=>{H(n)?.data?.problem?e(p):H(n)&&!H(i).length?e(m,1):e(h,-1)}),A(d),G(e,d),Ze()}Rr([`click`]);var fy=W(`<li class="svelte-4alkby"><span class="muted small svelte-4alkby"> </span> <code class="mono svelte-4alkby"> </code> <button class="btn small tinted"><!> Copy</button></li>`),py=W(`<div class="empty svelte-4alkby"><p class="svelte-4alkby"><strong>No extensions yet.</strong> An extension is a folder — gates, views, skills and MCP servers — that runs only after you trusted one digest over every file in it. Agent Plugins folders made for other agents work as they are; Spec Kit extensions show here too.</p> <ul class="add svelte-4alkby"></ul></div>`),my=W(`<span class="ver svelte-4alkby"> </span>`),hy=W(`<span class="desc svelte-4alkby"> </span>`),gy=W(`<p class="bad small svelte-4alkby"><!> </p>`),_y=W(`<p class="wide svelte-4alkby"><!> </p>`),vy=W(`<p class="gone svelte-4alkby"> </p>`),yy=W(`<p class="files mono svelte-4alkby"> </p>`),by=W(`<div class="changed svelte-4alkby" role="group" aria-label="What changed"><!> <!> <!></div>`),xy=W(`<li class="svelte-4alkby"><span class="k svelte-4alkby"><!></span><span> </span></li>`),Sy=W(`<button class="btn small primary">Trust…</button>`),Cy=W(`<li><header class="svelte-4alkby"><span class="mono-gram svelte-4alkby" aria-hidden="true"> </span> <div class="who svelte-4alkby"><strong class="svelte-4alkby"> <!></strong> <!></div> <span class="chip svelte-4alkby"> </span> <span><!> </span></header> <!> <!> <ul class="gives svelte-4alkby" aria-label="What it contributes"></ul> <footer class="svelte-4alkby"><span class="where mono small svelte-4alkby"><!> </span> <!></footer></li>`),wy=W(`<ul class="cards svelte-4alkby"></ul>`),Ty=W(`<section class="exts svelte-4alkby" aria-label="Extensions"><!></section>`);function Ey(e,t){Xe(t,!0);let n=N(null),r=()=>ba(`/api/extensions`).then(e=>P(n,e,!0)).catch(()=>{});B(()=>{Q.job?.running,r()});let i=M(()=>H(n)?.data?.extensions??[]),a={gate:`shield`,observer:`bubble`,view:`chart`,skill:`sparkle`,mcp_server:`grid`,command:`terminal`,hook_offer:`list`},o={trusted:{label:`Trusted`,tone:`verified`,icon:`check`},untrusted:{label:`Waits for your trust`,tone:`attention`,icon:`hand`},changed:{label:`Changed — trust it again`,tone:`attention`,icon:`exclaim`}},s=e=>e.replace(`sha256:`,``).slice(0,12),c=e=>[...e].reduce((e,t)=>(e*31+t.charCodeAt(0))%360,7),l=[{title:`From a folder`,text:`speccoder extensions add ./path/to/extension`},{title:`From a repository, at a commit`,text:`speccoder extensions add https://github.com/you/extension@<40-character commit>`}],u=e=>Q.perform(ja({kind:`extension_trust`,name:e.name,digest:e.digest},{group:`extensions`,label:`trust ${e.name}`,why:``,command:`speccoder extensions trust ${e.name}`,confirm:`Every gate, view, skill and server of ${e.name} runs from now on, as shown.`}));var d=Ty(),f=I(d),p=e=>{var t=py(),n=z(I(t),2);J(n,21,()=>l,e=>e.title,(e,t)=>{var n=fy(),r=I(n),i=R(r,!0),a=z(r,2),o=R(a,!0),s=z(a,2);$(I(s),{name:`copy`,size:11}),j(),A(s),A(n),V(()=>{K(i,H(t).title),K(o,H(t).text)}),U(`click`,s,()=>Q.copy(H(t).text,`Copied`,`Run it in the project`)),G(e,n)}),A(n),A(t),G(e,t)},m=e=>{var t=wy();J(t,21,()=>H(i),e=>e.name,(e,t)=>{let n=M(()=>H(t).problems?.length?{label:`Cannot be loaded`,tone:`danger`,icon:`xoctagon`}:o[H(t).trust]);var r=Cy();let i;var l=I(r),d=I(l),f=R(d,!0),p=z(d,2),m=I(p),h=I(m,!0),g=z(h),_=e=>{var n=my(),r=R(n,!0);V(()=>K(r,H(t).version)),G(e,n)};q(g,e=>{H(t).version&&e(_)}),A(m);var v=z(m,2),y=e=>{var n=hy(),r=R(n,!0);V(()=>K(r,H(t).description)),G(e,n)};q(v,e=>{H(t).description&&e(y)}),A(p);var b=z(p,2),x=R(b,!0),S=z(b,2),C=I(S);$(C,{get name(){return H(n).icon},size:11,weight:2.4});var w=z(C);A(S),A(l);var T=z(l,2);J(T,16,()=>H(t).problems??[],e=>e,(e,t)=>{var n=gy(),r=I(n);$(r,{name:`exclaim`,size:12});var i=z(r);A(n),V(()=>K(i,` ${t??``}`)),G(e,n)});var E=z(T,2),ee=e=>{var n=by(),r=I(n);J(r,16,()=>H(t).changes.widened,e=>e,(e,t)=>{var n=_y(),r=I(n);$(r,{name:`arrowup`,size:11,weight:2.4});var i=z(r);A(n),V(()=>K(i,` ${t??``}`)),G(e,n)});var i=z(r,2);J(i,16,()=>H(t).changes.gone??[],e=>e,(e,t)=>{var n=vy(),r=R(n);V(()=>K(r,`gone — ${t??``}`)),G(e,n)});var a=z(i,2),o=e=>{var n=yy(),r=R(n,!0);V(e=>K(r,e),[()=>H(t).changes.files.join(` · `)]),G(e,n)};q(a,e=>{H(t).changes.files.length&&e(o)}),A(n),G(e,n)};q(E,e=>{H(t).changes&&e(ee)});var D=z(E,2);J(D,21,()=>H(t).contributions,e=>e.kind+e.name,(e,t)=>{var n=xy(),r=I(n),i=I(r);{let e=M(()=>a[H(t).kind]??`gear`);$(i,{get name(){return H(e)},size:12,weight:2.2})}A(r);var o=R(z(r),!0);A(n),V(e=>{X(r,`title`,e),K(o,H(t).line)},[()=>H(t).kind.replace(`_`,` `)]),G(e,n)}),A(D);var O=z(D,2),k=I(O),te=I(k),ne=e=>{var n=Jr();V((e,t)=>K(n,`${e??``}${t??``}`),[()=>H(t).origin.url.replace(/^https?:\/\//,``),()=>H(t).origin.commit?` @ ${H(t).origin.commit.slice(0,8)}`:``]),G(e,n)},re=e=>{var n=Jr();V(()=>K(n,H(t).folder)),G(e,n)};q(te,e=>{H(t).origin?e(ne):e(re,-1)});var ie=z(te);A(k);var ae=z(k,2),oe=e=>{var n=Sy();V(()=>n.disabled=!!Q.job?.running),U(`click`,n,()=>u(H(t))),G(e,n)};q(ae,e=>{!H(t).problems?.length&&H(t).trust!==`trusted`&&e(oe)}),A(O),A(r),V((e,a,o)=>{i=Y(r,1,`svelte-4alkby`,null,i,{waiting:H(t).trust!==`trusted`||!!H(t).problems?.length}),Oi(d,`--h:${e??``}`),K(f,a),K(h,H(t).name),K(x,H(t).source===`spec_kit`?`Spec Kit`:`Agent Plugins`),Y(S,1,`state ${H(n).tone??``}`,`svelte-4alkby`),K(w,` ${H(n).label??``}`),X(k,`title`,H(t).digest),K(ie,` · ${H(t).files.length??``} files · ${o??``}`)},[()=>c(H(t).name),()=>H(t).name.charAt(0).toUpperCase(),()=>s(H(t).digest)]),G(e,r)}),A(t),G(e,t)};q(f,e=>{H(n)&&!H(i).length?e(p):e(m,-1)}),A(d),G(e,d),Ze()}Rr([`click`]);var Dy=W(`<label class="switch svelte-1u3w06f"><input type="checkbox" class="svelte-1u3w06f"/> <span class="track svelte-1u3w06f"><span class="knob svelte-1u3w06f"></span></span></label>`),Oy=W(`<button role="radio"> </button>`),ky=W(`<div class="seg svelte-1u3w06f" role="radiogroup"></div>`),Ay=W(`<option>—</option>`),jy=W(`<option> </option>`),My=W(`<select class="svelte-1u3w06f"><!><!></select>`),Ny=W(`<div class="stepper svelte-1u3w06f"><button aria-label="Less" class="svelte-1u3w06f"><!></button> <input type="number" placeholder="—" class="svelte-1u3w06f"/> <button aria-label="More" class="svelte-1u3w06f"><!></button></div>`),Py=W(`<input class="field mono svelte-1u3w06f"/>`),Fy=W(`<div class="item svelte-1u3w06f"><span class="field mono ro svelte-1u3w06f"> </span> <button class="btn small ghost svelte-1u3w06f">Coverage</button> <button class="x svelte-1u3w06f" aria-label="Remove"><!></button></div> <!>`,1),Iy=W(`<div class="list svelte-1u3w06f"><!> <div class="item svelte-1u3w06f"><input class="field mono svelte-1u3w06f" placeholder="npm run" aria-label="New prefix"/> <button class="btn small svelte-1u3w06f">Preview…</button></div> <!></div>`),Ly=W(`<div class="item svelte-1u3w06f"><input class="field mono svelte-1u3w06f"/> <button class="x svelte-1u3w06f" aria-label="Remove"><!></button></div>`),Ry=W(`<div class="list svelte-1u3w06f"><!> <button class="btn small ghost add svelte-1u3w06f"><!> Add</button></div>`),zy=W(`<input class="field svelte-1u3w06f"/>`),By=W(`<p class="err svelte-1u3w06f"> </p>`),Vy=W(`<span class="chip"> </span>`),Hy=W(`<div class="mono"> <span class="muted"> </span><!></div>`),Uy=W(`<button class="btn small primary svelte-1u3w06f">Save Prefix</button>`),Wy=W(`<div class="coverage svelte-1u3w06f"><p class="muted svelte-1u3w06f"> </p> <!> <!> <!></div>`),Gy=W(`<span class="req svelte-1u3w06f">required</span>`),Ky=W(`<span class="inapt svelte-1u3w06f"> </span>`),qy=W(`<button class="reset svelte-1u3w06f"><!></button>`),Jy=W(`<div><div class="what svelte-1u3w06f"><span class="name svelte-1u3w06f"> <!></span> <span class="about svelte-1u3w06f"> </span> <!> <span class="meta mono svelte-1u3w06f"> <!></span></div> <div class="ctl svelte-1u3w06f"><!> <!></div></div>`),Yy=W(`<span class="dot svelte-1u3w06f"> </span>`),Xy=W(`<button><span class="badge svelte-1u3w06f"><!></span> <span class="t svelte-1u3w06f"> </span> <!></button>`),Zy=W(`<div class="commit svelte-1u3w06f"><div class="ctext svelte-1u3w06f"><strong>Not in force yet</strong> <span class="svelte-1u3w06f">speccoder reads committed configuration only. Commit <code>speccoder.toml</code> — alone, nothing else you have staged.</span></div> <button class="btn primary">Commit</button></div> <!>`,1),Qy=W(`<p class="bad svelte-1u3w06f"><!> </p>`),$y=W(`<header class="svelte-1u3w06f"><span class="badge big svelte-1u3w06f" style="--c:#5e5ce6"><!></span> <div><h2 class="svelte-1u3w06f">Extensions</h2><p class="svelte-1u3w06f">Folders of gates, views, skills and MCP servers; nothing of one runs before you trusted it.</p></div></header> <!>`,1),eb=W(`<!> <h3 class="sub svelte-1u3w06f">Definitions</h3>`,1),tb=W(`<h3 class="section-title svelte-1u3w06f"><span class="mono"> </span> <button class="btn small ghost svelte-1u3w06f">Remove</button></h3> <div class="grouped"></div>`,1),nb=W(`<h3 class="section-title svelte-1u3w06f"><span class="mono"> </span> <span class="new svelte-1u3w06f">new</span></h3> <div class="grouped"></div>`,1),rb=W(`<!> <!> <div class="addtable svelte-1u3w06f"><input class="field mono svelte-1u3w06f" placeholder="name, e.g. lint"/> <button class="btn small tinted svelte-1u3w06f"><!> </button></div>`,1),ib=W(`<p class="muted small source svelte-1u3w06f"><!> </p>`),ab=W(`<!> <h3 class="sub svelte-1u3w06f">Settings</h3>`,1),ob=W(`<button class="btn small ghost svelte-1u3w06f">Coverage</button>`),sb=W(`<div class="row svelte-1u3w06f"><div class="what svelte-1u3w06f"><span class="name svelte-1u3w06f"> </span><span class="meta mono svelte-1u3w06f"> </span></div> <div class="ctl svelte-1u3w06f"><!></div></div> <!>`,1),cb=W(`<h3 class="sub svelte-1u3w06f">From checks</h3> <p class="muted small svelte-1u3w06f">Each configured check allows its program and subcommands, up to its first option; a check that starts with an option allows exactly itself. Change them in Checks.</p> <div class="grouped"></div>`,1),lb=W(`<!> <!> <div class="grouped"></div> <!>`,1),ub=W(`<header class="svelte-1u3w06f"><span class="badge big svelte-1u3w06f"><!></span> <div><h2 class="svelte-1u3w06f"> </h2><p class="svelte-1u3w06f"> </p></div></header> <!> <!>`,1),db=W(`<span class="err svelte-1u3w06f"><!> </span>`),fb=W(`<span class="cmd mono svelte-1u3w06f"> </span>`),pb=W(`<div class="savebar glass svelte-1u3w06f" role="region" aria-label="Unsaved changes"><span class="n svelte-1u3w06f"> </span> <!> <button class="btn">Revert</button> <button class="btn primary">Save</button></div>`),mb=W(`<section class="settings svelte-1u3w06f"><nav aria-label="Sections" class="svelte-1u3w06f"><h1 class="svelte-1u3w06f">Settings</h1> <p class="file mono svelte-1u3w06f"> </p> <!> <button><span class="badge svelte-1u3w06f" style="--c:#5e5ce6"><!></span> <span class="t svelte-1u3w06f">Extensions</span></button></nav> <div class="pane svelte-1u3w06f"><!> <!> <!> <!></div></section> <!>`,1);function hb(e,t){Xe(t,!0);let n=(e,t=d,n=d)=>{let i=M(()=>re(t(),n()));var a=Yr(),o=L(a),s=e=>{var r=Dy(),a=I(r);Gi(a),j(2),A(r),V(e=>{qi(a,H(i)===!0),X(a,`aria-label`,e)},[()=>te(n().key)]),U(`change`,a,e=>ie(t(),n(),e.target.checked)),G(e,r)},c=e=>{var r=ky();J(r,21,()=>n().choices,si,(e,r)=>{var a=Oy();let o;var s=R(a,!0);V(()=>{X(a,`aria-checked`,H(i)===H(r)),o=Y(a,1,`svelte-1u3w06f`,null,o,{on:H(i)===H(r)}),K(s,H(r))}),U(`click`,a,()=>ie(t(),n(),H(r))),G(e,a)}),A(r),V(e=>X(r,`aria-label`,e),[()=>te(n().key)]),G(e,r)},l=e=>{var r=My(),a=I(r),o=e=>{var t=Ay();t.value=t.__value=``,G(e,t)};q(a,e=>{!n().required&&n().default===null&&e(o)}),J(z(a),17,()=>n().choices,si,(e,t)=>{var n=jy(),r=R(n,!0),i={};V(()=>{K(r,H(t)),i!==(i=H(t))&&(n.value=(n.__value=i)??``)}),G(e,n)}),A(r);var s;Ni(r),V(e=>{X(r,`aria-label`,e),s!==(s=H(i)??``)&&(r.value=(r.__value=s)??``,Mi(r,s))},[()=>te(n().key)]),U(`change`,r,e=>ie(t(),n(),e.target.value||void 0)),G(e,r)},u=e=>{var r=Ny(),a=I(r);$(I(a),{name:`minus`,size:12,weight:2.2}),A(a);var o=z(a,2);Gi(o);var s=z(o,2);$(I(s),{name:`plus`,size:12,weight:2.2}),A(s),A(r),V(e=>{Ki(o,H(i)??``),X(o,`min`,n().min),X(o,`max`,n().max),X(o,`step`,n().kind===`integer`?1:`any`),X(o,`aria-label`,e)},[()=>te(n().key)]),U(`click`,a,()=>ie(t(),n(),Math.max(n().min??-1/0,Number(H(i)??n().min??0)-(n().kind===`integer`?1:.05)))),U(`change`,o,e=>{let r=e.target.value;ie(t(),n(),r===``?void 0:Number(r))}),U(`click`,s,()=>ie(t(),n(),Math.min(n().max??1/0,Number(H(i)??n().min??0)+(n().kind===`integer`?1:.05)))),G(e,r)},f=e=>{var r=Py();Gi(r),V((e,t)=>{Ki(r,e),X(r,`placeholder`,n().required?`program and arguments`:`—`),X(r,`aria-label`,t)},[()=>se(H(i)),()=>te(n().key)]),U(`change`,r,e=>{let r=e.target.value.trim();ie(t(),n(),r?ce(r):void 0)}),G(e,r)},p=e=>{let a=M(()=>Array.isArray(H(i))?H(i):[]);var o=Iy(),s=I(o);J(s,17,()=>H(a),si,(e,i,o)=>{let s=M(()=>`${t()}:${JSON.stringify(H(i))}`);var c=Fy(),l=L(c),u=I(l),d=R(u,!0),f=z(u,2),p=z(f,2);$(I(p),{name:`minus`,size:11,weight:2.4}),A(p),A(l);var m=z(l,2);r(m,t,()=>H(ue)[H(s)],()=>!1),V(e=>K(d,e),[()=>se(H(i))]),U(`click`,f,()=>fe(t(),H(i))),U(`click`,p,()=>ie(t(),n(),H(a).filter((e,t)=>t!==o))),G(e,c)});var c=z(s,2),l=I(c);Gi(l);var u=z(l,2);A(c);var d=z(c,2),f=e=>{{let n=M(()=>H(ue)[`${t()}:${JSON.stringify(ce((H(de)[t()]??``).trim()))}`]);r(e,t,()=>H(n),()=>!0)}},p=M(()=>(H(de)[t()]??``).trim());q(d,e=>{H(p)&&e(f)}),A(o),V(e=>{Ki(l,H(de)[t()]??``),u.disabled=e},[()=>ce((H(de)[t()]??``).trim()).length<2]),U(`input`,l,e=>P(de,{...H(de),[t()]:e.target.value},!0)),U(`click`,u,()=>fe(t(),ce((H(de)[t()]??``).trim()))),G(e,o)},m=M(()=>le.includes(t())),h=e=>{let r=M(()=>Array.isArray(H(i))?H(i):[]);var a=Ry(),o=I(a);J(o,17,()=>H(r),si,(e,i,a)=>{var o=Ly(),s=I(o);Gi(s);var c=z(s,2);$(I(c),{name:`minus`,size:11,weight:2.4}),A(c),A(o),V(e=>Ki(s,e),[()=>n().kind===`argv_list`?se(H(i)):String(H(i))]),U(`change`,s,e=>{let i=e.target.value.trim(),o=[...H(r)];o[a]=n().kind===`argv_list`?ce(i):i,ie(t(),n(),o.filter(e=>Array.isArray(e)?e.length:e))}),U(`click`,c,()=>ie(t(),n(),H(r).filter((e,t)=>t!==a))),G(e,o)});var s=z(o,2);$(I(s),{name:`plus`,size:11,weight:2.4}),j(),A(s),A(a),U(`click`,s,()=>ie(t(),n(),[...H(r),n().kind===`argv_list`?[`program`]:`value`])),G(e,a)},g=e=>{var r=zy();Gi(r),V(e=>{Ki(r,H(i)??``),X(r,`placeholder`,n().kind===`duration`?`7d`:`—`),X(r,`aria-label`,e)},[()=>te(n().key)]),U(`change`,r,e=>{let r=e.target.value.trim();ie(t(),n(),r||void 0)}),G(e,r)};q(o,e=>{n().kind===`bool`?e(s):n().kind===`choice`&&n().choices.length<=3?e(c,1):n().kind===`choice`?e(l,2):n().kind===`integer`||n().kind===`number`?e(u,3):n().kind===`argv`?e(f,4):H(m)?e(p,5):n().kind===`argv_list`||n().kind===`string_list`?e(h,6):e(g,-1)}),G(e,a)},r=(e,t=d,n=d,r=d)=>{var i=Yr(),a=L(i),o=e=>{var t=By(),r=R(t,!0);V(()=>K(r,n())),G(e,t)},s=e=>{var i=Wy(),a=I(i),o=R(a),s=z(a,2);J(s,17,()=>n().rows,si,(e,t)=>{var n=Hy(),r=I(n),i=z(r),a=R(i),o=z(i),s=e=>{var n=Vy(),r=R(n,!0);V(()=>K(r,H(t).still_asks)),G(e,n)};q(o,e=>{H(t).still_asks&&e(s)}),A(n),V((e,n)=>{K(r,`${e??``} `),K(a,`×${H(t).count??``} · ${n??``}`)},[()=>H(t).argv.join(` `),()=>H(t).decided.map(e=>`${e.decision} ×${e.count}`).join(`, `)]),G(e,n)});var c=z(s,2),l=e=>{var t=By(),r=R(t);V(e=>K(r,`The preview is incomplete — ${e??``}. Saving waits until the journal can be read.`),[()=>n().unreadable.join(`; `)]),G(e,t)};q(c,e=>{n().complete||e(l)});var u=z(c,2),d=e=>{var r=Uy();V(()=>r.disabled=!n().complete),U(`click`,r,()=>me(t(),n())),G(e,r)};q(u,e=>{r()&&e(d)}),A(i),V(e=>K(o,`${e??``} command(s) from the journal would run without asking:`),[()=>n().rows.filter(e=>!e.still_asks).length]),G(e,i)};q(a,e=>{typeof n()==`string`?e(o):n()&&e(s,1)}),G(e,i)},i=(e,t=d,r=d)=>{let i=M(()=>t()in H(s)),a=M(()=>ne(t(),r())!==void 0);var o=Jy();let c;var l=I(o),u=I(l),f=I(u,!0),p=z(f),m=e=>{G(e,Gy())},h=M(()=>T(t(),r()));q(p,e=>{H(h)&&e(m)}),A(u);var g=z(u,2),_=R(g,!0),v=z(g,2),x=e=>{var t=Ky(),n=R(t);V(()=>K(n,`does not apply to ${H(y)??``}: remove it`)),G(e,t)},S=M(()=>b(t(),r())&&H(a));q(v,e=>{H(S)&&e(x)});var C=z(v,2),w=I(C,!0),E=z(w),ee=e=>{var t=Jr();V(e=>K(t,` · default ${e??``}`),[()=>JSON.stringify(r().default)]),G(e,t)};q(E,e=>{r().default!==null&&r().default!==void 0&&e(ee)}),A(C),A(l);var D=z(l,2),O=I(D);n(O,t,r);var k=z(O,2),re=e=>{let n=M(()=>b(t(),r()));var i=qy(),a=I(i);{let e=M(()=>H(n)?`minus`:`undo`);$(a,{get name(){return H(e)},size:12,weight:2})}A(i),V(e=>{X(i,`title`,H(n)?`Remove it`:`Use the default`),X(i,`aria-label`,`${H(n)?`Remove`:`Reset`} ${e??``}`)},[()=>te(r().key)]),U(`click`,i,()=>oe(t(),r())),G(e,i)},ie=M(()=>H(a)&&!T(t(),r()));q(k,e=>{H(ie)&&e(re)}),A(D),A(o),V(e=>{c=Y(o,1,`row svelte-1u3w06f`,null,c,{changed:H(i)}),K(f,e),K(_,r().about),K(w,t())},[()=>te(r().key)]),G(e,o)},a=N(null),o=N(`model`);B(()=>{Q.settingsSection&&=(P(o,Q.settingsSection,!0),null)}),B(()=>{Q.settingsPick&&=(P(o,Q.settingsPick,!0),null)});let s=N(F({})),c=N(!1),l=N(null),u=N(``);async function f(){let e=await ba(`/api/config`);P(a,e.data??null,!0)}B(()=>{f()});let p={model:[`cpu`,`#5e5ce6`],checks:[`check`,`#34c759`],budget:[`gauge`,`#ff9500`],commands:[`terminal`,`#8e8e93`],approvals:[`hand`,`#ff9f0a`],tests:[`list`,`#30b0c7`],spec:[`doc`,`#007aff`],context:[`doc`,`#64d2ff`],acceptance:[`seal`,`#34c759`],converge:[`loop`,`#5856d6`],monitor:[`shield`,`#ff2d55`],git:[`branch`,`#ff3b30`],format:[`sparkle`,`#af52de`],sandbox:[`lock`,`#636366`],attest:[`signature`,`#bf5af2`],mutation:[`exclaim`,`#ff9500`],executor:[`play`,`#0a84ff`],mcp:[`grid`,`#30b0c7`],worktree:[`copy`,`#5ac8fa`],ask:[`bubble`,`#bf5af2`],hooks:[`shield`,`#ff9f0a`]},m=M(()=>H(a)?.sections.find(e=>e.name===H(o))??null),h=M(()=>Object.keys(H(s)).length),g=M(()=>H(a)?.sections.find(e=>e.name===`model`)?.keys.find(e=>e.key===`provider`)),_=M(()=>!!H(g)&&re(`model.provider`,H(g))===`bedrock`),v=[`base_url`,`api_key_env`,`structured`],y=M(()=>H(g)?String(re(`model.provider`,H(g))??``):``),b=(e,t)=>e===`model.${t.key}`&&(H(_)?v.includes(t.key):t.key===`region`),x=[`at`,`network`],S=[`on`,`url`,`secret_env`],C=(e,t,n)=>{if(e.name!==`hooks`)return n;let r=e=>ne(`hooks.${t}.${e}`,n.find(t=>t.key===e))!==void 0,i=r(`at`);return i===r(`on`)?n:n.filter(e=>!(i?S:x).includes(e.key))},w=e=>e.name===`model`?e.keys.filter(e=>!b(`model.${e.key}`,e)||ne(`model.${e.key}`,e)!==void 0):e.keys,T=(e,t)=>(t.required||H(_)&&e===`model.region`)&&!b(e,t),E=M(()=>Q.doctor.find(e=>e.check===`model key`)),ee=M(()=>!!H(E)&&(H(E).detail.startsWith(`bedrock `)||H(E).detail.startsWith(`AWS_BEARER_TOKEN_BEDROCK`))),D=N(void 0);B(()=>{H(_)&&!H(ee)&&H(D)===void 0&&(P(D,null),ba(`/api/setup`).then(e=>P(D,e.preview?.bedrock?.source??null,!0)).catch(()=>{}))});let O=M(()=>H(_)?H(E)&&H(ee)?H(E).level===`fail`?H(E).detail:H(E).detail.split(` · `).pop()??H(E).detail:H(D)??null:null),k={price_input_per_mtok:`Input price`,price_output_per_mtok:`Output price`,price_cache_read_per_mtok:`Cache read price`,price_cache_write_per_mtok:`Cache write price (5 min)`,price_cache_write_1h_per_mtok:`Cache write price (1 h)`,max_output_tokens:`Output tokens per turn`,max_run_tokens:`Tokens per attempt`,cache_ttl:`Cache lifetime`,base_url:`Server URL`,api_key_env:`API key variable`,max_tool_calls:`Tool calls per attempt`,max_turns:`Turns per attempt`,max_attempts:`Attempts per task`,best_of:`Samples per task`,held_out:`Held-out tests`,min_strength:`Minimum strength`,near_miss:`Near-miss variants`,strength_timeout_secs:`Strength time budget (s)`,timeout_secs:`Timeout (s)`,max_rounds:`Rounds`,network_allow:`Commands with network`,when_exists:`Only when this exists`,junit:`JUnit report`,cwd:`Working directory`,argv:`Command`,acceptance_argv:`Acceptance command`,sign_at:`Sign at`,allow:`Allowed`},te=e=>{let t=e.split(`.`).pop();if(k[t])return k[t];let n=t.replaceAll(`_`,` `);return n.charAt(0).toUpperCase()+n.slice(1)};function ne(e,t){let n=H(s)[e];return n?n.value===void 0?void 0:n.value:t.value??void 0}function re(e,t){let n=ne(e,t);return n===void 0?t.default:n}function ie(e,t,n){let r=JSON.stringify(n)===JSON.stringify(t.value??void 0),i={...H(s)};r?delete i[e]:i[e]={key:e,value:n},P(s,i,!0)}function ae(e){let t=H(m)?.keys??[],n=e=>t.find(t=>t.key===e),r=n(`agent`);r&&ie(`executor.agent`,r,e);for(let e of[`kind`,`argv`]){let t=n(e);t&&t.value!==void 0&&t.value!==null&&oe(`executor.${e}`,t)}}function oe(e,t){let n={...H(s)};t.value===void 0||t.value===null?delete n[e]:n[e]={key:e},P(s,n,!0)}let se=e=>Array.isArray(e)?e.map(e=>/\s/.test(String(e))?JSON.stringify(e):String(e)).join(` `):``,ce=e=>[...e.matchAll(/"([^"]*)"|'([^']*)'|(\S+)/g)].map(e=>e[1]??e[2]??e[3]??``),le=[`commands.allow_prefix`,`sandbox.network_allow_prefix`],ue=N(F({})),de=N(F({}));async function fe(e,t){let n=`${e}:${JSON.stringify(t)}`,r=await ba(`/api/policy/coverage?key=${encodeURIComponent(e)}&prefix=${encodeURIComponent(JSON.stringify(t))}`);P(ue,{...H(ue),[n]:r.data??r.message},!0)}let pe=M(()=>(H(a)?.sections.find(e=>e.name===`checks`)?.tables??[]).flatMap(e=>{let t=e.keys.find(e=>e.key===`argv`)?.value;if(!Array.isArray(t)||!t.length)return[];let n=t.map(String),r=n.slice(0,n.findIndex(e=>e.startsWith(`-`))===-1?n.length:n.findIndex(e=>e.startsWith(`-`))),i=r.length<=1;return[{name:e.name,prefix:i?n:r,exact:i}]}));async function me(e,t){let n=e===`commands.allow_prefix`?`commands_prefix`:`network_prefix`;await Q.perform(ja({kind:`widen_policy`,key:n,prefix:t.entry.prefix,digest:t.digest},{group:`settings`,label:`allow prefix ${t.entry.prefix.join(` `)}`,why:`saved from its coverage preview`,command:`speccoder config set ${e} '${JSON.stringify(t.entry.prefix)}' --yes`})),P(de,{...H(de),[e]:``},!0),await f()}async function he(){P(c,!0),P(l,null);try{let e=await xa(`/api/config`,{changes:Object.values(H(s))});e.status===`ok`?(P(a,e.data??H(a),!0),P(s,{},!0),Q.toast({tone:`ok`,text:`Saved speccoder.toml`,detail:`Commit it to put it in force`})):P(l,e.message,!0)}catch(e){P(l,String(e.message??e),!0)}finally{P(c,!1)}}async function ge(){P(c,!0);try{let e=await xa(`/api/config/commit`,{});e.status===`ok`?(Q.toast({tone:`ok`,text:e.message}),await f(),Q.refresh()):P(l,e.message,!0)}finally{P(c,!1)}}function _e(e){let t=H(u).trim().toLowerCase();if(!/^[a-z0-9_-]+$/.test(t))return;if(e.tables.some(e=>e.name===t)||Object.keys(H(s)).some(n=>n.startsWith(`${e.name}.${t}.`))){P(l,`[${e.name}.${t}] exists already — edit it above`);return}let n=e.keys.find(e=>e.required);n&&P(s,{...H(s),[`${e.name}.${t}.${n.key}`]:{key:`${e.name}.${t}.${n.key}`,value:[]}},!0),P(l,null),P(u,``)}function ve(e,t){let n=e.tables.find(e=>e.name===t),r={...H(s)};for(let i of n?.keys??[])i.value!==null&&i.value!==void 0&&(r[`${e.name}.${t}.${i.key}`]={key:`${e.name}.${t}.${i.key}`});P(s,r,!0)}let ye=M(()=>Object.values(H(s)).map(e=>e.value===void 0?`speccoder config unset ${e.key}`:`speccoder config set ${e.key} '${JSON.stringify(e.value)}'`).join(` && `));var be=mb(),xe=L(be),Se=I(xe),Ce=z(I(Se),2),we=R(Ce,!0),Te=z(Ce,2);J(Te,17,()=>H(a)?.sections??[],e=>e.name,(e,t)=>{let n=M(()=>{let[e,n]=p[H(t).name]??[`gear`,`#8e8e93`];return{icon:e,color:n}}),r=M(()=>Object.keys(H(s)).filter(e=>e.startsWith(H(t).name+`.`)).length);var i=Xy();let a;var c=I(i);$(I(c),{get name(){return H(n).icon},size:13,weight:2.2}),A(c);var l=z(c,2),u=R(l,!0),d=z(l,2),f=e=>{var t=Yy(),n=R(t,!0);V(()=>{X(t,`title`,`${H(r)??``} unsaved`),K(n,H(r))}),G(e,t)};q(d,e=>{H(r)&&e(f)}),A(i),V(()=>{a=Y(i,1,`svelte-1u3w06f`,null,a,{on:H(o)===H(t).name}),Oi(c,`--c:${H(n).color??``}`),K(u,H(t).title)}),U(`click`,i,()=>P(o,H(t).name,!0)),G(e,i)});var Ee=z(Te,2);let De;var Oe=I(Ee);$(I(Oe),{name:`grid`,size:13,weight:2.2}),A(Oe),j(2),A(Ee),A(Se);var ke=z(Se,2),Ae=I(ke),je=e=>{var t=Zy(),n=L(t),r=z(I(n),2);A(n);var i=z(n,2),o=e=>{_m(e,{get patch(){return H(a).diff}})};q(i,e=>{H(a).diff&&e(o)}),V(()=>r.disabled=H(c)||!H(a).valid||!!Q.job?.running),U(`click`,r,ge),G(e,t)};q(Ae,e=>{H(a)&&!H(a).committed&&H(a).exists&&!H(h)&&e(je)});var Me=z(Ae,2),Ne=e=>{var t=Qy(),n=I(t);$(n,{name:`exclaim`,size:14,weight:2});var r=z(n);A(t),V(()=>K(r,` ${H(a).error??``}`)),G(e,t)};q(Me,e=>{H(a)?.error&&e(Ne)});var Pe=z(Me,2),Fe=e=>{var t=$y(),n=L(t),r=I(n);$(I(r),{name:`grid`,size:20,weight:2}),A(r),j(2),A(n),Ey(z(n,2),{}),G(e,t)};q(Pe,e=>{H(o)===`extensions`&&e(Fe)});var Ie=z(Pe,2),Le=e=>{var t=ub(),n=L(t),a=I(n),o=I(a);{let e=M(()=>p[H(m).name]?.[0]??`gear`);$(o,{get name(){return H(e)},size:20,weight:2})}A(a);var c=z(a,2),l=I(c),d=R(l,!0),f=R(z(l),!0);A(c),A(n);var h=z(n,2),g=e=>{var t=eb();dy(L(t),{}),j(2),G(e,t)};q(h,e=>{H(m).name===`hooks`&&e(g)});var _=z(h,2),v=e=>{var t=rb(),n=L(t);J(n,17,()=>H(m).tables,e=>e.name,(e,t)=>{var n=tb(),r=L(n),a=I(r),o=R(a),s=z(a,2);A(r);var c=z(r,2);J(c,21,()=>C(H(m),H(t).name,H(t).keys),e=>e.key,(e,n)=>{i(e,()=>`${H(m).name}.${H(t).name}.${H(n).key}`,()=>H(n))}),A(c),V(()=>K(o,`[${H(m).name??``}.${H(t).name??``}]`)),U(`click`,s,()=>ve(H(m),H(t).name)),G(e,n)});var r=z(n,2);J(r,16,()=>Object.keys(H(s)).filter(e=>e.startsWith(H(m).name+`.`)&&!H(m).tables.some(t=>e.startsWith(`${H(m).name}.${t.name}.`))).map(e=>e.split(`.`)[1]).filter((e,t,n)=>n.indexOf(e)===t),e=>e,(e,t)=>{var n=nb(),r=L(n),a=R(I(r));j(2),A(r);var o=z(r,2);J(o,21,()=>H(m).keys,e=>e.key,(e,n)=>{i(e,()=>`${H(m).name}.${t}.${H(n).key}`,()=>H(n))}),A(o),V(()=>K(a,`[${H(m).name??``}.${t??``}]`)),G(e,n)});var a=z(r,2),o=I(a);Gi(o);var c=z(o,2),l=I(c);$(l,{name:`plus`,size:11,weight:2.4});var d=z(l);A(c),A(a),V(e=>{c.disabled=e,K(d,` Add ${H(m).name===`checks`?`check`:`server`}`)},[()=>!/^[a-z0-9_-]+$/.test(H(u).trim())]),U(`keydown`,o,e=>e.key===`Enter`&&_e(H(m))),$i(o,()=>H(u),e=>P(u,e)),U(`click`,c,()=>_e(H(m))),G(e,t)},y=e=>{var t=lb(),n=L(t),a=e=>{var t=ib(),n=I(t);$(n,{name:`key`,size:12});var r=z(n);A(t),V(()=>K(r,` Credentials: ${H(O)??``}`)),G(e,t)};q(n,e=>{H(m).name===`model`&&H(O)&&e(a)});var o=z(n,2),s=e=>{var t=ab();Zv(L(t),{use:ae}),j(2),G(e,t)};q(o,e=>{H(m).name===`executor`&&e(s)});var c=z(o,2);J(c,21,()=>w(H(m)),e=>e.key,(e,t)=>{i(e,()=>`${H(m).name}.${H(t).key}`,()=>H(t))}),A(c);var l=z(c,2),u=e=>{var t=cb(),n=z(L(t),4);J(n,21,()=>H(pe),e=>e.name,(e,t)=>{let n=M(()=>`commands.allow_prefix:${JSON.stringify(H(t).prefix)}`);var i=sb(),a=L(i),o=I(a),s=I(o),c=R(s,!0),l=R(z(s));A(o);var u=z(o,2),d=I(u),f=e=>{var n=ob();U(`click`,n,()=>fe(`commands.allow_prefix`,H(t).prefix)),G(e,n)};q(d,e=>{H(t).exact||e(f)}),A(u),A(a);var p=z(a,2),m=e=>{r(e,()=>`commands.allow_prefix`,()=>H(ue)[H(n)],()=>!1)};q(p,e=>{H(t).exact||e(m)}),V(e=>{K(c,H(t).name),K(l,`${e??``}${H(t).exact?` — exactly this command`:` …`}`)},[()=>se(H(t).prefix)]),G(e,i)}),A(n),G(e,t)};q(l,e=>{H(m).name===`commands`&&H(pe).length&&e(u)}),G(e,t)};q(_,e=>{H(m).named?e(v):e(y,-1)}),V(()=>{Oi(a,`--c:${p[H(m).name]?.[1]??`#8e8e93`??``}`),K(d,H(m).title),K(f,H(m).about)}),G(e,t)};q(Ie,e=>{H(m)&&e(Le)}),A(ke),A(xe);var Re=z(xe,2),ze=e=>{var t=pb(),n=I(t),r=R(n),i=z(n,2),a=e=>{var t=db(),n=I(t);$(n,{name:`exclaim`,size:13,weight:2});var r=z(n);A(t),V(()=>{X(t,`title`,H(l)),K(r,` ${H(l)??``}`)}),G(e,t)},o=e=>{var t=fb(),n=R(t,!0);V(()=>{X(t,`title`,H(ye)),K(n,H(ye))}),G(e,t)};q(i,e=>{H(l)?e(a):e(o,-1)});var u=z(i,2),d=z(u,2);A(t),V(()=>{K(r,`${H(h)??``} ${H(h)===1?`change`:`changes`}`),d.disabled=H(c)||!!Q.job?.running}),U(`click`,u,()=>{P(s,{},!0),P(l,null)}),U(`click`,d,he),G(e,t)};q(Re,e=>{H(h)&&e(ze)}),V(()=>{K(we,H(a)?.file??`speccoder.toml`),De=Y(Ee,1,`svelte-1u3w06f`,null,De,{on:H(o)===`extensions`})}),U(`click`,Ee,()=>P(o,`extensions`)),G(e,be),Ze()}Rr([`change`,`click`,`input`,`keydown`]);function gb(e){let t={name:``,path:``,dirs:[],files:[]};for(let n of e){let e=n.split(`/`),r=t;for(let t=0;t<e.length-1;t++){let n=e.slice(0,t+1).join(`/`),i=r.dirs.find(e=>e.path===n);i||(i={name:e[t],path:n,dirs:[],files:[]},r.dirs.push(i)),r=i}r.files.push({name:e[e.length-1],path:n})}let n=e=>{if(e.dirs=e.dirs.map(n).sort((e,t)=>e.name.localeCompare(t.name)),e.files.sort((e,t)=>e.name.localeCompare(t.name)),e.path&&e.files.length===0&&e.dirs.length===1){let t=e.dirs[0];return{...t,name:`${e.name}/${t.name}`}}return e};return n(t)}var _b=W(`<span class="dot svelte-1ms350m" title="Holds changes"></span>`),vb=W(`<span aria-hidden="true"><!></span> <svg class="folder svelte-1ms350m" width="16" height="14" viewBox="0 0 16 14" aria-hidden="true"><path d="M1 3.2C1 2 1.9 1 3 1h3.1c.5 0 .9.2 1.2.6L8.2 3H13c1.1 0 2 .9 2 2v6c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2z" fill="currentColor"></path></svg> <span class="name svelte-1ms350m"> </span> <!>`,1),yb=qr(`<svg class="folder ghost svelte-1ms350m" width="16" height="14" viewBox="0 0 16 14" aria-hidden="true"><path d="M1 3.2C1 2 1.9 1 3 1h3.1c.5 0 .9.2 1.2.6L8.2 3H13c1.1 0 2 .9 2 2v6c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2z" fill="none" stroke="currentColor" stroke-dasharray="2 1.6"></path></svg>`),bb=W(`<span class="mark u svelte-1ms350m" title="Untracked: in the worktree, not in git">U</span>`),xb=W(`<span class="mark m svelte-1ms350m" title="Modified in the worktree, not committed">M</span>`),Sb=W(`<span class="pill svelte-1ms350m" title="Git-ignored: never committed, never judged">ignored</span>`),Cb=W(`<span class="n d svelte-1ms350m"> </span>`),wb=W(`<span class="n a svelte-1ms350m"> </span><!>`,1),Tb=W(`<span class="dot svelte-1ms350m" title="Changed by this feature"></span>`),Eb=W(`<span class="chev svelte-1ms350m" aria-hidden="true"></span> <!> <span> </span> <!> <!>`,1),Db=W(`<li role="treeitem"><!></li>`),Ob=W(`<ul class="tree svelte-1ms350m" role="tree"></ul>`);function kb(e,t){Xe(t,!0);let n=ma(t,`selected`,3,null),r=ma(t,`changed`,19,()=>new Set),i=ma(t,`counts`,19,()=>({})),a=ma(t,`label`,3,`Files`),o=ma(t,`marks`,19,()=>({})),s=M(()=>gb(t.paths)),c=N(F({})),l=M(()=>{let e=new Set;for(let t of r()){let n=t.split(`/`);for(let t=1;t<n.length;t++)e.add(n.slice(0,t).join(`/`))}return e}),u=e=>H(c)[e]??(t.paths.length<=40||H(l).has(e)),d=M(()=>{let e=[],t=(n,i,a)=>{for(let o of n.dirs){let n=u(o.path);e.push({key:`d:`+o.path,kind:`dir`,name:o.name,path:o.path,depth:i,parent:a,expanded:n,holds:[...r()].some(e=>e.startsWith(o.path+`/`))}),n&&t(o,i+1,`d:`+o.path)}for(let t of n.files)e.push({key:`f:`+t.path,kind:`file`,name:t.name,path:t.path,depth:i,parent:a})};return t(H(s),0,null),e}),f=N(null),p=M(()=>H(d).find(e=>e.key===H(f))?.key??(n()?`f:`+n():null)??H(d)[0]?.key??null),m=N(void 0);async function h(e){e&&(P(f,e,!0),await yr(),H(m)?.querySelector(`[data-key="${CSS.escape(e)}"]`)?.focus())}function g(e,t){P(c,{...H(c),[e.path]:t??!e.expanded},!0)}let _=``,v=0;function y(e,n){let r=H(d).findIndex(e=>e.key===n.key);switch(e.key){case`ArrowDown`:h(H(d)[r+1]?.key);break;case`ArrowUp`:h(H(d)[r-1]?.key);break;case`Home`:h(H(d)[0]?.key);break;case`End`:h(H(d)[H(d).length-1]?.key);break;case`ArrowRight`:n.kind===`dir`&&!n.expanded?g(n,!0):n.kind===`dir`&&h(H(d)[r+1]?.key);break;case`ArrowLeft`:n.kind===`dir`&&n.expanded?g(n,!1):n.parent&&h(n.parent);break;case`Enter`:case` `:n.kind===`dir`?g(n):t.onpick(n.path);break;default:if(e.key.length===1&&!e.metaKey&&!e.ctrlKey&&!e.altKey){let t=Date.now();_=t-v<700?_+e.key.toLowerCase():e.key.toLowerCase(),v=t,h([...H(d).slice(r+1),...H(d).slice(0,r+1)].find(e=>e.name.toLowerCase().startsWith(_))?.key);break}return}e.preventDefault()}var b=Ob();J(b,21,()=>H(d),e=>e.key,(e,a)=>{let s=M(()=>i()[H(a).path]);var c=Db();let l;var u=I(c),d=e=>{var t=vb(),n=L(t);let r;$(I(n),{name:`chevron`,size:10,weight:2.6}),A(n);var i=z(n,4),o=R(i,!0),s=z(i,2),c=e=>{G(e,_b())};q(s,e=>{H(a).holds&&e(c)}),V(()=>{r=Y(n,1,`chev svelte-1ms350m`,null,r,{o:H(a).expanded}),K(o,H(a).name)}),G(e,t)},m=e=>{var t=Eb(),n=z(L(t),2),i=e=>{G(e,yb())},c=e=>{nm(e,{get path(){return H(a).name},size:16})};q(n,e=>{o()[H(a).path]===`ignored-dir`?e(i):e(c,-1)});var l=z(n,2);let u;var d=R(l,!0),f=z(l,2),p=e=>{G(e,bb())},m=e=>{G(e,xb())},h=e=>{G(e,Sb())},g=M(()=>o()[H(a).path]?.startsWith(`ignored`));q(f,e=>{o()[H(a).path]===`untracked`?e(p):o()[H(a).path]===`modified`?e(m,1):H(g)&&e(h,2)});var _=z(f,2),v=e=>{var t=wb(),n=L(t),r=R(n,!0),i=z(n),a=e=>{var t=Cb(),n=R(t);V(()=>K(n,`−${H(s).del??``}`)),G(e,t)};q(i,e=>{H(s).del&&e(a)}),V(()=>K(r,H(s).add==null?`bin`:`+${H(s).add}`)),G(e,t)},y=e=>{G(e,Tb())},b=M(()=>r().has(H(a).path));q(_,e=>{H(s)?e(v):H(b)&&e(y,1)}),V(e=>{u=Y(l,1,`name mono svelte-1ms350m`,null,u,{ghosted:e}),K(d,H(a).name)},[()=>o()[H(a).path]?.startsWith(`ignored`)]),G(e,t)};q(u,e=>{H(a).kind===`dir`?e(d):e(m,-1)}),A(c),V(()=>{l=Y(c,1,`row ${H(a).kind??``}`,`svelte-1ms350m`,l,{on:H(a).kind===`file`&&n()===H(a).path}),Oi(c,`--d:${H(a).depth??``}`),X(c,`data-key`,H(a).key),X(c,`tabindex`,H(p)===H(a).key?0:-1),X(c,`aria-level`,H(a).depth+1),X(c,`aria-expanded`,H(a).kind===`dir`?H(a).expanded:void 0),X(c,`aria-selected`,H(a).kind===`file`?n()===H(a).path:void 0),X(c,`title`,H(a).path)}),U(`click`,c,()=>{P(f,H(a).key,!0),H(a).kind===`dir`?g(H(a)):t.onpick(H(a).path)}),U(`keydown`,c,e=>y(e,H(a))),G(e,c)}),A(b),sa(b,e=>P(m,e),()=>H(m)),V(()=>X(b,`aria-label`,a())),G(e,b),Ze()}Rr([`click`,`keydown`]);var Ab=W(`<b class="svelte-d2tu77"> </b>`),jb=W(`<span class="dot svelte-d2tu77" title="Changed by this feature"></span>`),Mb=W(`<li role="option"><button tabindex="-1"><span class="name svelte-d2tu77"></span> <span class="dir svelte-d2tu77"> </span> <!></button></li>`),Nb=W(`<li class="none svelte-d2tu77"> </li>`),Pb=W(`<div class="scrim svelte-d2tu77" role="presentation"><div class="box glass svelte-d2tu77" role="dialog" aria-modal="true" aria-label="Go to file"><label class="field svelte-d2tu77"><!> <input placeholder="Go to file…" role="combobox" aria-expanded="true" aria-controls="qo-list" class="svelte-d2tu77"/></label> <ul id="qo-list" role="listbox" class="svelte-d2tu77"></ul></div></div>`);function Fb(e,t){Xe(t,!0);let n=ma(t,`changed`,19,()=>new Set),r=N(``),i=N(0);function a(e,t){if(!t)return{s:0,marks:[]};let n=e.toLowerCase(),r=n.lastIndexOf(`/`)+1,i=0,a=0,o=-2,s=[];for(let e of t.toLowerCase()){let t=n.indexOf(e,i);if(t<0)return null;a+=t===o+1?6:1,t>=r&&(a+=3),(t===0||`/-_.`.includes(n[t-1]))&&(a+=4),s.push(t),o=t,i=t+1}return{s:a-e.length*.01,marks:s}}let o=M(()=>t.files.map(e=>({f:e,m:a(e,H(r).trim())})).filter(e=>e.m!==null).sort((e,t)=>t.m.s-e.m.s).slice(0,50));B(()=>{H(r),P(i,0)});function s(e){e.key===`ArrowDown`?(P(i,Math.min(H(i)+1,H(o).length-1),!0),e.preventDefault()):e.key===`ArrowUp`?(P(i,Math.max(H(i)-1,0),!0),e.preventDefault()):e.key===`Enter`&&H(o)[H(i)]?(t.onpick(H(o)[H(i)].f),e.preventDefault()):e.key===`Escape`&&t.onclose()}let c=(e,t)=>[...e].map((e,n)=>({c:e,m:t.includes(n)}));var l=Pb(),u=I(l),d=I(u),f=I(d);$(f,{name:`search`,size:18});var p=z(f,2);Gi(p),ct(p,!0),A(d);var m=z(d,2);J(m,23,()=>H(o),e=>e.f,(e,r,a)=>{var o=Mb(),s=I(o);let l;var u=I(s);J(u,21,()=>c(H(r).f.split(`/`).pop()??H(r).f,H(r).m.marks.map(e=>e-(H(r).f.length-(H(r).f.split(`/`).pop()??H(r).f).length))),si,(e,t)=>{var n=Yr(),r=L(n),i=e=>{var n=Ab(),r=R(n,!0);V(()=>K(r,H(t).c)),G(e,n)},a=e=>{var n=Jr();V(()=>K(n,H(t).c)),G(e,n)};q(r,e=>{H(t).m?e(i):e(a,-1)}),G(e,n)}),A(u);var d=z(u,2),f=R(d,!0),p=z(d,2),m=e=>{G(e,jb())},h=M(()=>n().has(H(r).f));q(p,e=>{H(h)&&e(m)}),A(s),A(o),V(e=>{X(o,`id`,`qo-${H(a)??``}`),X(o,`aria-selected`,H(a)===H(i)),l=Y(s,1,`svelte-d2tu77`,null,l,{on:H(a)===H(i)}),K(f,e)},[()=>H(r).f.includes(`/`)?H(r).f.slice(0,H(r).f.lastIndexOf(`/`)):``]),Lr(`mouseenter`,s,()=>P(i,H(a),!0)),U(`click`,s,()=>t.onpick(H(r).f)),G(e,o)},e=>{var t=Nb(),n=R(t);V(()=>K(n,`No file matches “${H(r)??``}”.`)),G(e,t)}),A(m),A(u),A(l),V(()=>X(p,`aria-activedescendant`,`qo-${H(i)??``}`)),U(`click`,l,e=>e.target===e.currentTarget&&t.onclose()),U(`keydown`,p,s),$i(p,()=>H(r),e=>P(r,e)),G(e,l),Ze()}Rr([`click`,`keydown`]);var Ib=W(`<span class="muted">from <span class="mono"> </span></span>`),Lb=W(`<span class="ref svelte-ldknnw"><!><span class="mono"> </span><!></span> <span class="stat svelte-ldknnw"><span class="a svelte-ldknnw"> </span><span class="d svelte-ldknnw"> </span> </span>`,1),Rb=W(`<span class="muted">The project at <span class="mono">HEAD</span> — pick a feature for its branch.</span>`),zb=W(`<span class="muted">speccoder has not worked on this feature yet — no branch to show.</span>`),Bb=W(`<div class="state svelte-ldknnw"><span class="spinner svelte-ldknnw"></span></div>`),Vb=W(`<span><!></span>`),Hb=W(`<span class="mono task svelte-ldknnw"> </span>`),Ub=W(`<li><button><span class="row1 svelte-ldknnw"><!> <!> <span class="when svelte-ldknnw"> </span></span> <span class="subj svelte-ldknnw"><!></span></button></li>`),Wb=W(`<button class="clear svelte-ldknnw">Show all</button>`),Gb=W(`<h3 class="section-title svelte-ldknnw">Files <!></h3> <!>`,1),Kb=W(`<p class="muted small svelte-ldknnw">The change is large; it is shown up to 2 MB. Pick a commit or a file.</p>`),qb=W(`<form class="note-form svelte-ldknnw"><p class="muted small mono svelte-ldknnw"> </p> <textarea rows="2" class="svelte-ldknnw"></textarea> <div class="note-acts svelte-ldknnw"><button class="btn small primary svelte-ldknnw" type="submit">Add Comment <kbd>⌘↵</kbd></button><button class="btn small ghost svelte-ldknnw" type="button">Cancel</button></div></form>`),Jb=W(`<li class="mono small svelte-ldknnw"> <button class="btn small ghost svelte-ldknnw" aria-label="Delete this comment">×</button></li>`),Yb=W(`<div class="code-tray glass svelte-ldknnw" aria-live="polite"><strong> </strong> <ul class="svelte-ldknnw"></ul> <button class="btn small primary svelte-ldknnw"> </button></div>`),Xb=W(`<!> <!> <!>`,1),Zb=W(`<div class="split svelte-ldknnw"><aside class="side svelte-ldknnw"><h3 class="section-title svelte-ldknnw">Commits</h3> <ul class="commits svelte-ldknnw"><li><button><span class="all svelte-ldknnw">All changes</span><span class="muted small svelte-ldknnw"> </span></button></li> <!></ul> <!></aside> <div class="main svelte-ldknnw"><!> <!></div></div>`),Qb=W(`<div class="state svelte-ldknnw"><!><p class="svelte-ldknnw"><strong class="svelte-ldknnw">No changes yet</strong></p><p class="muted svelte-ldknnw">Run a task: its code appears here, commit by commit.</p></div>`),$b=W(`<button title="Show the worktree as it is on disk: what git does not track or ignores"><span class="sw svelte-ldknnw" aria-hidden="true"><i class="svelte-ldknnw"></i></span> <span>Worktree on disk</span> <span class="muted small svelte-ldknnw"> </span></button>`),ex=W(`<button class="btn small ghost svelte-ldknnw"><!> Copy the Command</button>`),tx=W(`<div class="blocker svelte-ldknnw" role="note"><!> <div><strong class="svelte-ldknnw"> </strong> <p class="svelte-ldknnw"> </p> <div class="row svelte-ldknnw"><button class="btn small tinted svelte-ldknnw"><!> </button> <!></div></div></div>`),nx=W(`<p class="muted small svelte-ldknnw"> </p>`),rx=W(` <span class="mono"> </span>`,1),ix=W(`<div class="state svelte-ldknnw"><!><p class="muted svelte-ldknnw">Pick a file to read it<!>.</p></div>`),ax=W(`<div class="state svelte-ldknnw"><p class="muted svelte-ldknnw"> </p></div>`),ox=W(`<div class="seg small svelte-ldknnw" role="tablist" aria-label="Show"><button role="tab">Preview</button> <button role="tab">Source</button></div>`),sx=W(`<span><!> <button aria-label="Unmark the cited lines" class="svelte-ldknnw"><!></button></span>`),cx=W(`<span class="muted"> </span>`),lx=W(`<button class="btn small icon svelte-ldknnw" title="Find (⌘F)" aria-label="Find in file"><!></button>`),ux=W(`<div class="find svelte-ldknnw"><!> <input aria-label="Find" class="svelte-ldknnw"/> <span class="count svelte-ldknnw"> </span> <button class="btn small icon svelte-ldknnw" aria-label="Previous"><!></button> <button class="btn small icon svelte-ldknnw" aria-label="Next"><!></button> <button class="btn small icon svelte-ldknnw" aria-label="Close find"><!></button></div>`),dx=W(`<article class="md svelte-ldknnw"></article>`),fx=W(`<tr><td class="ln svelte-ldknnw"><button tabindex="-1" class="svelte-ldknnw"> </button></td><td class="src svelte-ldknnw"><!></td></tr>`),px=W(`<div class="vbody svelte-ldknnw"><table class="svelte-ldknnw"><tbody></tbody></table></div>`),mx=W(`<div class="viewer svelte-ldknnw"><div class="vhead svelte-ldknnw"><button class="path mono svelte-ldknnw" title="Copy the path"> <!></button> <!> <!> <!> <button class="ask-this svelte-ldknnw"><!> Ask</button> <!></div> <!> <!></div>`),hx=W(`<div class="split svelte-ldknnw"><aside class="side svelte-ldknnw"><div class="tools svelte-ldknnw"><input class="search svelte-ldknnw" placeholder="Filter files" aria-label="Filter files"/> <button class="btn small svelte-ldknnw" title="Go to file (⌘P)"><!> Go to <kbd>⌘P</kbd></button></div> <!> <!> <!> <!></aside> <div class="main svelte-ldknnw"><!></div></div>`),gx=W(`<!> <section class="code svelte-ldknnw"><header class="svelte-ldknnw"><div class="seg svelte-ldknnw" role="tablist" aria-label="Code"><button role="tab">Changes</button> <button role="tab">Files</button></div> <!></header> <!></section>`,1);function _x(e,t){Xe(t,!0);let n=M(()=>Q.codeMode),r=N(F(new Set));B(()=>{Q.feature,ba(`/api/review${Sa({feature:Q.feature??void 0})}`).then(e=>P(r,al(e.data?.oracle??[]),!0)).catch(()=>P(r,new Set,!0))});let i=N(F([])),a=N(null),o=N(``);function s(e){H(r).has(e.path)?Q.toast({tone:`warn`,text:`This is a frozen test. Comment on it in Review › Tests`}):(P(a,e,!0),P(o,``))}function c(){H(a)&&H(o).trim()&&(P(i,[...H(i),{...H(a),text:H(o).trim()}],!0),P(a,null))}async function l(e){let t=H(i);await Q.perform(ja({kind:`code_nudge`,task:e,comments:t},{group:`task`,label:`nudge ${e}`,why:`the next attempt reads it`,command:`speccoder task nudge ${e} "${t.map(el).join(`; `).replaceAll(`"`,`'`)}"`})),P(i,[],!0)}let u=N(null),d=N(null),f=N(``),p=N(null),m=N(null),h=N(F((()=>{try{return localStorage.getItem(`speccoder-worktree`)===`on`}catch{return!1}})()));function g(){P(h,!H(h));try{localStorage.setItem(`speccoder-worktree`,H(h)?`on`:`off`)}catch{}}let _=M(()=>H(m)?.worktree??null),v=M(()=>H(h)||!!H(_)?.blocking.length),y=M(()=>H(v)&&H(_)?H(_).entries.filter(e=>e.state!==`modified`):[]),b=M(()=>{let e={};if(!H(v)||!H(_))return e;for(let t of H(_).entries){let n=t.path.endsWith(`/`);e[n?t.path.slice(0,-1):t.path]=t.state===`ignored`&&n?`ignored-dir`:t.state}return e}),x=M(()=>({untracked:H(_)?.entries.filter(e=>e.state===`untracked`).length??0,ignored:H(_)?.entries.filter(e=>e.state===`ignored`).length??0})),S=N(``),C=M(()=>Q.codeFile),w=N(null),T=N(!0),E=M(()=>Q.codeCited?.path===H(C)?Q.codeCited:null);B(()=>{H(E)&&P(T,!1)});let ee=N(!1),D=wa(),O=wa(),k=wa(),te=wa(),ne=null;B(()=>{let e=Q.feature;ne!==null&&e!==ne&&(P(d,null),P(p,null),P(m,null)),ne=e}),B(()=>{Q.report;let e=Q.feature??void 0;P(ee,!0),D(ba(`/api/changes${Sa({feature:e})}`),e=>{P(u,e,!0),P(ee,!1)},()=>P(ee,!1))}),B(()=>{Q.report;let e=Q.feature??void 0;H(n)===`files`&&O(ba(`/api/tree${Sa({feature:e})}`),e=>P(m,e,!0))}),B(()=>{let e=H(d);P(f,``),e&&k(ba(`/api/diff${Sa({commit:e})}`),e=>P(f,e.patch,!0))}),B(()=>{let e=H(C);Q.report;let t=Q.feature??void 0;P(w,null),e&&te(ba(`/api/file${Sa({feature:t,path:e})}`),e=>P(w,e,!0),e=>P(w,{error:String(e)},!0))});let re=M(()=>(H(u)?.files??[]).reduce((e,t)=>({add:e.add+(t.add??0),del:e.del+(t.del??0)}),{add:0,del:0})),ie=M(()=>[...H(m)?.files??[],...H(y).map(e=>e.path.endsWith(`/`)?e.path.slice(0,-1):e.path)]),ae=M(()=>H(ie).filter(e=>!H(S)||e.toLowerCase().includes(H(S).toLowerCase()))),oe=M(()=>H(ae).length),se=M(()=>H(S)?H(ae).slice(0,400):H(ae)),ce=M(()=>new Set((H(u)?.files??[]).map(e=>e.path))),le=e=>e?.split(`/`).pop()??null,ue=M(()=>H(w)?.text?.split(`
`)??[]),de=N(void 0);B(()=>{let e=Q.codeLine;H(ue).length,e&&H(de)&&yr().then(()=>H(de)?.querySelector(`[data-line="${e}"]`)?.scrollIntoView({block:`center`}))});function fe(e){Q.codeLine=Q.codeLine===e?null:e}let pe=N(!1),me=N(``),he=N(0),ge=N(void 0),_e=M(()=>{let e=H(me).toLowerCase();return e?H(ue).flatMap((t,n)=>t.toLowerCase().includes(e)?[n+1]:[]):[]});B(()=>{H(me),P(he,0)});function ve(e){H(_e).length&&(P(he,(H(he)+e+H(_e).length)%H(_e).length),H(de)?.querySelector(`[data-line="${H(_e)[H(he)]}"]`)?.scrollIntoView({block:`center`}))}let ye=N(!1);function be(e){let t=e.metaKey||e.ctrlKey;t&&e.key.toLowerCase()===`p`?(e.preventDefault(),Q.codeMode=`files`,P(ye,!0)):t&&e.key.toLowerCase()===`f`&&H(C)&&!(H(w)?.html!==void 0&&H(T))&&(e.preventDefault(),P(pe,!0),yr().then(()=>H(ge)?.select()))}function xe(e){let t=e.target.closest(`a`),n=t?.getAttribute(`href`);if(!t||!n)return;if(e.preventDefault(),/^https?:\/\//.test(n)){window.open(n,`_blank`,`noopener,noreferrer`);return}if(n.startsWith(`#`))return;let r=(H(C)??``).split(`/`).slice(0,-1);for(let e of n.split(`#`)[0].split(`/`))e===`..`?r.pop():e&&e!==`.`&&r.push(decodeURIComponent(e));let i=r.join(`/`);H(m)?.files.includes(i)?Q.codeFile=i:Q.toast({tone:`warn`,text:`Not in this branch`,detail:i})}function Se(){navigator.clipboard?.writeText(H(C)??``),Q.toast({tone:`ok`,text:`Copied the path`,detail:H(C)??``})}let Ce=e=>new Date(e).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`});var we=gx();Lr(`keydown`,on,be);var Te=L(we),Ee=e=>{Fb(e,{get files(){return H(m).files},get changed(){return H(ce)},onpick:e=>{Q.codeFile=e,Q.codeLine=null,P(ye,!1)},onclose:()=>P(ye,!1)})};q(Te,e=>{H(ye)&&H(m)&&e(Ee)});var De=z(Te,2),Oe=I(De),ke=I(Oe),Ae=I(ke);let je;var Me=z(Ae,2);let Ne;A(ke);var Pe=z(ke,2),Fe=e=>{var t=Lb(),n=L(t),r=I(n);$(r,{name:`branch`,size:13});var i=z(r),a=R(i,!0),o=z(i),s=e=>{var t=Ib(),n=R(z(I(t)),!0);A(t),V(e=>K(n,e),[()=>H(u).base.slice(0,8)]),G(e,t)};q(o,e=>{H(u).base&&e(s)}),A(n);var c=z(n,2),l=I(c),d=R(l),f=z(l),p=R(f),m=z(f);A(c),V(()=>{K(a,H(u).branch),K(d,`+${H(re).add??``}`),K(p,`−${H(re).del??``}`),K(m,` in ${H(u).files.length??``} ${H(u).files.length===1?`file`:`files`}`)}),G(e,t)},Ie=e=>{G(e,Rb())},Le=e=>{G(e,zb())};q(Pe,e=>{H(u)?.branch?e(Fe):H(u)&&!Q.feature?e(Ie,1):H(u)&&e(Le,2)}),A(Oe);var Re=z(Oe,2),ze=e=>{var t=Yr(),n=L(t),m=e=>{G(e,Bb())},h=e=>{var t=Zb(),n=I(t),m=z(I(n),2),h=I(m),g=I(h);let _;var v=R(z(I(g)));A(g),A(h),J(z(h,2),17,()=>H(u).commits,e=>e.id,(e,t)=>{var n=Ub(),r=I(n);let i;var a=I(r),o=I(a),s=e=>{var n=Vb(),r=I(n);{let e=M(()=>So(H(t).verdict));$(r,{get name(){return H(e)},size:10,weight:2.6})}A(n),V(e=>{Y(n,1,`v s-${H(t).verdict??``}`,`svelte-ldknnw`),X(n,`title`,e)},[()=>xo(H(t).verdict)]),G(e,n)};q(o,e=>{H(t).verdict&&e(s)});var c=z(o,2),l=e=>{var n=Hb(),r=R(n,!0);V(e=>K(r,e),[()=>le(H(t).task)]),G(e,n)},u=M(()=>le(H(t).task));q(c,e=>{H(u)&&e(l)});var f=R(z(c,2),!0);A(a);var m=z(a,2),h=I(m);{let e=M(()=>H(t).subject.replace(/^speccoder: T\d+ /,``));so(h,{get text(){return H(e)}})}A(m),A(r),A(n),V(e=>{i=Y(r,1,`svelte-ldknnw`,null,i,{on:H(d)===H(t).id}),K(f,e)},[()=>Ce(H(t).date)]),U(`click`,r,()=>{P(d,H(t).id,!0),P(p,null)}),G(e,n)}),A(m);var y=z(m,2),b=e=>{var t=Gb(),n=L(t),r=z(I(n)),i=e=>{var t=Wb();U(`click`,t,()=>P(p,null)),G(e,t)};q(r,e=>{H(p)&&e(i)}),A(n);var a=z(n,2);{let e=M(()=>H(u).files.map(e=>e.path)),t=M(()=>Object.fromEntries(H(u).files.map(e=>[e.path,{add:e.add,del:e.del}])));kb(a,{get paths(){return H(e)},get selected(){return H(p)},get counts(){return H(t)},onpick:e=>P(p,H(p)===e?null:e,!0)})}G(e,t)};q(y,e=>{H(d)||e(b)}),A(n);var x=z(n,2),S=I(x),C=e=>{G(e,Kb())};q(S,e=>{H(u).cut&&!H(d)&&e(C)});var w=z(S,2),T=e=>{let t=M(()=>le(H(u).commits.find(e=>e.id===H(d))?.task??null));var n=Xb(),p=L(n);{let e=M(()=>!H(f)),n=M(()=>H(t)?s:null);_m(p,{get patch(){return H(f)},get loading(){return H(e)},get comment(){return H(n)},get frozen(){return H(r)}})}var m=z(p,2),h=e=>{var t=qb(),n=I(t),r=R(n),i=z(n,2);lt(i),ct(i,!0);var s=z(i,2),l=I(s),u=z(l);A(s),A(t),V((e,t)=>{K(r,`${H(a).path??``}:${H(a).line??``} “${e??``}”`),X(i,`aria-label`,`Comment on ${H(a).path??``}:${H(a).line??``}`),l.disabled=t},[()=>H(a).quote.trim().slice(0,80),()=>!H(o).trim()]),Lr(`submit`,t,e=>{e.preventDefault(),c()}),U(`keydown`,i,e=>{e.key===`Escape`&&P(a,null),e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),c())}),$i(i,()=>H(o),e=>P(o,e)),U(`click`,u,()=>P(a,null)),G(e,t)};q(m,e=>{H(a)&&H(t)&&e(h)});var g=z(m,2),_=e=>{var n=Yb(),r=I(n),a=R(r),o=z(r,2);J(o,21,()=>H(i),si,(e,t,n)=>{var r=Jb(),a=I(r),o=z(a);A(r),V(e=>K(a,`${e??``} `),[()=>el(H(t))]),U(`click`,o,()=>P(i,H(i).filter((e,t)=>t!==n),!0)),G(e,r)}),A(o);var s=z(o,2),c=R(s);A(n),V(()=>{K(a,`${H(i).length??``} ${H(i).length===1?`comment`:`comments`} on ${H(t)??``}`),s.disabled=!!Q.job?.running,X(s,`title`,`speccoder task nudge ${H(t)} "…"`),K(c,`Send ${H(i).length??``} ${H(i).length===1?`Comment`:`Comments`} as a Nudge`)}),U(`click`,s,()=>l(H(t))),G(e,n)};q(g,e=>{H(i).length&&H(t)&&e(_)}),G(e,n)},E=e=>{_m(e,{get patch(){return H(u).patch},get only(){return H(p)},header:!1})};q(w,e=>{H(d)?e(T):e(E,-1)}),A(x),A(t),V(()=>{_=Y(g,1,`svelte-ldknnw`,null,_,{on:!H(d)}),K(v,`${H(u).commits.length??``} commits`)}),U(`click`,g,()=>{P(d,null),P(p,null)}),G(e,t)},g=e=>{var t=Qb();$(I(t),{name:`doc`,size:24}),j(2),A(t),G(e,t)};q(n,e=>{H(ee)&&!H(u)?e(m):H(u)?.branch&&H(u).files.length?e(h,1):H(u)&&e(g,2)}),G(e,t)},Be=e=>{var t=hx(),n=I(t),r=I(n),i=I(r);Gi(i);var a=z(i,2);$(I(a),{name:`search`,size:12}),j(2),A(a),A(r);var o=z(r,2),s=e=>{var t=$b();let n;var r=R(z(I(t),4));A(t),V(()=>{n=Y(t,1,`disk svelte-ldknnw`,null,n,{on:H(v)}),X(t,`aria-pressed`,H(v)),K(r,`${H(x).untracked??``} untracked · ${H(x).ignored??``} ignored`)}),U(`click`,t,g),G(e,t)};q(o,e=>{H(_)?.path&&e(s)});var c=z(o,2),l=e=>{var t=tx(),n=I(t);$(n,{name:`exclaim`,size:14,weight:2.2});var r=z(n,2),i=I(r),a=R(i),o=z(i,2),s=R(o),c=z(o,2),l=I(c),u=I(l);$(u,{name:`check`,size:11,weight:2.4});var d=z(u);A(l);var f=z(l,2),p=e=>{var t=ex();$(I(t),{name:`copy`,size:11}),j(),A(t),U(`click`,t,()=>{navigator.clipboard?.writeText(H(_).fix??``),Q.toast({tone:`ok`,text:`Copied the command`,detail:`Run it in your checkout.`})}),G(e,t)};q(f,e=>{H(_).fix&&e(p)}),A(c),A(r),A(t),V((e,t)=>{K(a,`${e??``} ${H(_).blocking.length===1?`is`:`are`} in the worktree, not in git`),K(s,`The checks write ${H(_).blocking.length===1?`it`:`them`} on every run, so a run stops until ${H(_).blocking.length===1?`it is`:`they are`} part of your checkout's setup.`),l.disabled=!!Q.job?.running,K(d,` ${t??``}`)},[()=>H(_).blocking.join(`, `),()=>H(_).blocking.some(e=>e.endsWith(`/`))?`Fix the Setup`:`Commit ${H(_).blocking.join(`, `)}`]),U(`click`,l,()=>Q.perform(ja({kind:`fix_setup`},{group:`work`,label:`commit the setup: ${H(_).blocking.join(`, `)}`,why:`copied into your checkout and committed; the next run takes it`,command:H(_).fix??``}))),G(e,t)};q(c,e=>{H(_)?.blocking.length&&e(l)});var u=z(c,2);oi(u,()=>H(S),e=>{kb(e,{get paths(){return H(se)},get selected(){return H(C)},get changed(){return H(ce)},get marks(){return H(b)},onpick:e=>Q.codeFile=e})});var d=z(u,2),f=e=>{var t=nx(),n=R(t);V(()=>K(n,`${H(oe)-H(se).length} more match — type more to narrow.`)),G(e,t)};q(d,e=>{H(m)&&H(S)&&H(oe)>H(se).length&&e(f)}),A(n);var p=z(n,2),h=I(p),y=e=>{var t=ix(),n=I(t);$(n,{name:`doc`,size:24});var r=z(n),i=z(I(r)),a=e=>{var t=rx(),n=L(t,!0);n.nodeValue=` at `;var r=R(z(n),!0);V(()=>K(r,H(m).rev)),G(e,t)};q(i,e=>{H(m)&&e(a)}),j(),A(r),A(t),G(e,t)},ee=e=>{G(e,Bb())},D=e=>{var t=ax(),n=R(I(t),!0);A(t),V(()=>K(n,H(w).error)),G(e,t)},O=e=>{var t=mx(),n=I(t),r=I(n),i=I(r,!0);$(z(i),{name:`copy`,size:11}),A(r);var a=z(r,2),o=e=>{var t=ox(),n=I(t);let r;var i=z(n,2);let a;A(t),V(()=>{X(n,`aria-selected`,H(T)),r=Y(n,1,`svelte-ldknnw`,null,r,{on:H(T)}),X(i,`aria-selected`,!H(T)),a=Y(i,1,`svelte-ldknnw`,null,a,{on:!H(T)})}),U(`click`,n,()=>P(T,!0)),U(`click`,i,()=>P(T,!1)),G(e,t)};q(a,e=>{H(w).html!==void 0&&e(o)});var s=z(a,2),c=e=>{var t=sx();let n;var r=I(t);{let e=M(()=>H(E).changed?`exclaim`:`bubble`);$(r,{get name(){return H(e)},size:11})}var i=z(r),a=z(i);$(I(a),{name:`xmark`,size:9,weight:2.4}),A(a),A(t),V(()=>{n=Y(t,1,`cite-pill svelte-ldknnw`,null,n,{changed:H(E).changed}),X(t,`title`,H(E).changed?`Ask read lines ${H(E).from}–${H(E).to} as they were then; the file says something else now`:`The lines an answer in Ask cites`),K(i,` ${H(E).changed?`Changed since Ask read it`:`Ask read ${H(E).from===H(E).to?`line ${H(E).from}`:`lines ${H(E).from}–${H(E).to}`}`} `)}),U(`click`,a,()=>Q.codeCited=null),G(e,t)};q(s,e=>{H(E)&&e(c)});var l=z(s,2),u=e=>{var t=cx(),n=R(t);V(()=>K(n,`${H(ue).length??``} lines`)),G(e,t)};q(l,e=>{H(E)||e(u)});var d=z(l,2);$(I(d),{name:`bubble`,size:12}),j(),A(d);var f=z(d,2),p=e=>{var t=lx();$(I(t),{name:`search`,size:12}),A(t),U(`click`,t,()=>{P(pe,!0),yr().then(()=>H(ge)?.focus())}),G(e,t)};q(f,e=>{H(w).html!==void 0&&H(T)||e(p)}),A(n);var m=z(n,2),h=e=>{var t=ux(),n=I(t);$(n,{name:`search`,size:12});var r=z(n,2);Gi(r),sa(r,e=>P(ge,e),()=>H(ge));var i=z(r,2),a=R(i,!0),o=z(i,2);$(I(o),{name:`arrowup`,size:11}),A(o);var s=z(o,2);$(I(s),{name:`down`,size:11}),A(s);var c=z(s,2);$(I(c),{name:`xmark`,size:10,weight:2.4}),A(c),A(t),V(e=>{X(r,`placeholder`,`Find in ${e??``}`),K(a,H(_e).length?`${H(he)+1} of ${H(_e).length}`:H(me)?`no match`:``),o.disabled=!H(_e).length,s.disabled=!H(_e).length},[()=>H(C).split(`/`).pop()]),U(`keydown`,r,e=>{e.key===`Enter`?(e.preventDefault(),ve(e.shiftKey?-1:1)):e.key===`Escape`&&(P(pe,!1),P(me,``))}),$i(r,()=>H(me),e=>P(me,e)),U(`click`,o,()=>ve(-1)),U(`click`,s,()=>ve(1)),U(`click`,c,()=>{P(pe,!1),P(me,``)}),G(e,t)};q(m,e=>{H(pe)&&!(H(w).html!==void 0&&H(T))&&e(h)});var g=z(m,2),_=e=>{var t=dx();gi(t,()=>H(w).html,!0),A(t),_i(t,(e,t)=>Ls?.(e,t),()=>H(w).html),U(`click`,t,xe),G(e,t)},v=e=>{var t=px(),n=I(t),r=I(n);J(r,21,()=>H(ue),si,(e,t,n)=>{let r=M(()=>n+1);var i=fx();let a;var o=I(i),s=I(o),c=R(s,!0);A(o);var l=z(o),u=I(l);{let e=M(()=>dl(H(C)));gl(u,{get line(){return H(t)},get lang(){return H(e)}})}A(l),A(i),V(e=>{X(i,`data-line`,H(r)),a=Y(i,1,`svelte-ldknnw`,null,a,{sel:Q.codeLine===H(r),cited:!!H(E)&&H(r)>=H(E).from&&H(r)<=H(E).to,stale:!!H(E)?.changed,hit:e,cur:H(_e)[H(he)]===H(r)}),X(s,`title`,`Link to line ${H(r)??``}`),K(c,H(r))},[()=>H(_e).includes(H(r))]),U(`click`,s,()=>fe(H(r))),G(e,i)}),A(r),A(n),A(t),sa(t,e=>P(de,e),()=>H(de)),G(e,t)};q(g,e=>{H(w).html!==void 0&&H(T)?e(_):e(v,-1)}),A(t),V(()=>{K(i,H(C)),X(d,`title`,`Add ${Q.codeLine?`lines around ${Q.codeLine}`:`this file`} to Ask (⌘⇧L)`)}),U(`click`,r,Se),U(`click`,d,()=>{let e=Q.codeLine,[t,n]=e?[Math.max(1,e-20),Math.min(H(ue).length,e+20)]:[1,H(ue).length];Z.add({kind:`file_range`,reference:{path:H(C),start:t,end:n},label:e?`${H(C)} ${t}–${n}`:String(H(C))})}),G(e,t)};q(h,e=>{H(C)?H(w)?H(w).error?e(D,2):e(O,-1):e(ee,1):e(y)}),A(p),A(t),$i(i,()=>H(S),e=>P(S,e)),U(`click`,a,()=>P(ye,!0)),G(e,t)};q(Re,e=>{H(n)===`changes`?e(ze):e(Be,-1)}),A(De),V(()=>{X(Ae,`aria-selected`,H(n)===`changes`),je=Y(Ae,1,`svelte-ldknnw`,null,je,{on:H(n)===`changes`}),X(Me,`aria-selected`,H(n)===`files`),Ne=Y(Me,1,`svelte-ldknnw`,null,Ne,{on:H(n)===`files`})}),U(`click`,Ae,()=>Q.codeMode=`changes`),U(`click`,Me,()=>Q.codeMode=`files`),G(e,we),Ze()}Rr([`click`,`keydown`]);var vx=W(`<li><span class="sr-only"> </span></li>`),yx=W(`<div class="center svelte-1tgm7f5"><span class="spinner svelte-1tgm7f5"></span></div>`),bx=W(`<li><span class="ic svelte-1tgm7f5"><!></span> <span class="w svelte-1tgm7f5"><strong> </strong><span class="d svelte-1tgm7f5"> </span></span> <!></li>`),xx=W(`<div class="make svelte-1tgm7f5"><button class="btn primary"><!> Make it a project</button> <span class="muted small svelte-1tgm7f5">The spec format's own init, then speccoder's setup and one commit — every command shown first.</span></div> <p class="note svelte-1tgm7f5"><!> Or run the command above in your terminal, then come back — this page updates.</p>`,1),Sx=W(`<div class="hero-icon svelte-1tgm7f5"><svg viewBox="0 0 64 64" width="72" height="72" aria-hidden="true"><defs><linearGradient id="sg" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#3b9bff"></stop><stop offset="1" stop-color="#0060df"></stop></linearGradient></defs><rect width="64" height="64" rx="15" fill="url(#sg)"></rect><path d="M19 33.5 28.5 43 46 22" fill="none" stroke="#fff" stroke-width="6.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></div> <h1 class="svelte-1tgm7f5">Welcome to speccoder</h1> <p class="lead svelte-1tgm7f5">Let's set up <strong> </strong>: a model to work with, the checks that decide whether nothing regressed, and your first feature.</p> <ul class="grouped found svelte-1tgm7f5"></ul> <!>`,1),Cx=W(`<!> `,1),wx=W(`<!> AWS credentials not found`,1),Tx=W(`<span><!></span>`),Ex=W(`<button role="radio"><span class="pname svelte-1tgm7f5"> </span><span class="psub svelte-1tgm7f5"> </span> <!></button>`),Dx=W(`<p class="note svelte-1tgm7f5"><!> Set AWS_BEARER_TOKEN_BEDROCK or run aws login where you start speccoder. You can finish setting up first.</p>`),Ox=W(`<label class="field-row svelte-1tgm7f5"><span class="svelte-1tgm7f5">Region</span><input class="field svelte-1tgm7f5" placeholder="e.g. eu-central-1 (required)"/></label> <!>`,1),kx=W(`<p class="note svelte-1tgm7f5"><!> Set the key where you start speccoder: <button class="fix mono svelte-1tgm7f5"> </button> You can finish setting up first.</p>`),Ax=W(`<h1 class="svelte-1tgm7f5">Choose a model</h1> <p class="lead svelte-1tgm7f5">It makes the attempts; speccoder judges them on evidence. The key comes from your environment, never from a file.</p> <div class="providers svelte-1tgm7f5" role="radiogroup" aria-label="Provider"></div> <label class="field-row svelte-1tgm7f5"><span class="svelte-1tgm7f5">Model</span><input class="field svelte-1tgm7f5"/></label> <!> <p class="muted small svelte-1tgm7f5">Local models (Ollama, vLLM, LM Studio) are set in Settings › Model after setup.</p> <details class="agents-step svelte-1tgm7f5"><summary class="svelte-1tgm7f5">Or let an agent you already use make the attempts — Copilot, OpenCode, Claude Code, Codex, Gemini</summary> <p class="muted small svelte-1tgm7f5">speccoder decides each call it asks about and judges every attempt the same way; the model above still writes the acceptance tests. Choose one in Settings › Executor once this project is set up.</p> <!></details>`,1),jx=W(`<li class="svelte-1tgm7f5"><span class="badge svelte-1tgm7f5"><!></span> <span class="w svelte-1tgm7f5"><strong> </strong> <span class="tier svelte-1tgm7f5"> </span><span class="mono argv svelte-1tgm7f5"> </span><span class="d svelte-1tgm7f5"> </span></span></li>`),Mx=W(`<ul class="grouped proposed svelte-1tgm7f5"></ul>`),Nx=W(`<p class="note svelte-1tgm7f5"><!> No test runner found. Add one in Settings › Checks after setup, or speccoder can only judge by acceptance tests.</p>`),Px=W(`<p class="muted small svelte-1tgm7f5"> </p>`),Fx=W(`<p class="muted small svelte-1tgm7f5">Formatter after each attempt: <span class="mono"> </span></p>`),Ix=W(`<h1 class="svelte-1tgm7f5">Checks</h1> <p class="lead svelte-1tgm7f5">They decide whether a change broke anything. speccoder found these for your project and will run them on the untouched code first.</p> <!> <!> <!>`,1),Lx=W(`<p class="lead svelte-1tgm7f5">This project already has a <span class="mono">speccoder.toml</span>. Change it in Settings, or continue.</p>`),Rx=W(`<p class="lead svelte-1tgm7f5">speccoder writes <span class="mono">speccoder.toml</span>, then runs its checks on the untouched code. Nothing is committed until you say so.</p> <button class="cmd mono svelte-1tgm7f5"><!> </button>`,1),zx=W(`<li><span class="ic svelte-1tgm7f5"><!></span> <span class="w svelte-1tgm7f5"><strong> </strong><span class="d svelte-1tgm7f5"> </span></span></li>`),Bx=W(`<p class="note bad svelte-1tgm7f5"><!> A check that fails before any change makes every task's baseline red. Fix the code or the check (Settings › Checks), then set up again — or commit and fix it later.</p>`),Vx=W(`<p class="note ok svelte-1tgm7f5"><!> </p>`),Hx=W(`<ul class="grouped ran svelte-1tgm7f5"></ul> <!> <!>`,1),Ux=W(`<p class="note bad svelte-1tgm7f5"><!> </p>`),Wx=W(`<h1 class="svelte-1tgm7f5">Set up</h1> <!> <!>`,1),Gx=W(`<p class="muted small svelte-1tgm7f5">The planning skills are not installed here; the board shows how to write the spec.</p>`),Kx=W(`<h1 class="svelte-1tgm7f5">Your first feature</h1> <p class="lead svelte-1tgm7f5">Describe what it should do, in your words. Spec Kit's own skill writes the spec; you review it before anything is planned.</p> <textarea rows="5" placeholder="A function greet(name) that returns a greeting, rejecting empty names…" class="svelte-1tgm7f5"></textarea> <!>`,1),qx=W(`<button class="btn">Back</button>`),Jx=W(`<button class="btn primary large">Continue</button>`),Yx=W(`<span class="spin svelte-1tgm7f5"></span> Running the checks…`,1),Xx=W(`<button class="btn primary large"><!></button>`),Zx=W(`<button class="btn primary large"> </button>`),Qx=W(`<button class="btn">Later</button> <button class="btn primary large">Write the Spec</button>`,1),$x=W(`<section class="assistant svelte-1tgm7f5"><div class="card glass svelte-1tgm7f5"><ol class="dots svelte-1tgm7f5" aria-label="Steps"></ol> <!> <footer class="svelte-1tgm7f5"><!> <span class="spacer svelte-1tgm7f5"></span> <!></footer></div></section>`);function eS(e,t){Xe(t,!0);let n=N(null),r=N(0),i=N(`anthropic`),a=N(``),o=N(``),s=N(!1),c=N(null),l=N(null),u=N(``),d=N(null),f=N(!1);Q.view!==`setup`&&(Q.view=`setup`),B(()=>{ba(`/api/setup`).then(e=>{P(n,e,!0);let t=new Map(e.preview.keys);!t.get(`ANTHROPIC_API_KEY`)&&t.get(`OPENAI_API_KEY`)?P(i,`openai`):!t.get(`ANTHROPIC_API_KEY`)&&e.preview.bedrock.source&&P(i,`bedrock`),P(o,e.preview.bedrock.region??``,!0)})});let p=M(()=>H(n)?.doctor.data?.checks??[]),m=e=>H(p).find(t=>t.check===e),h=M(()=>m(`project`)),_=M(()=>new Map(H(n)?.preview.keys??[])),v=M(()=>H(i)===`openai`?`OPENAI_API_KEY`:`ANTHROPIC_API_KEY`),y=[[`anthropic`,`Anthropic`,`Claude models`,`ANTHROPIC_API_KEY`],[`openai`,`OpenAI`,`GPT models`,`OPENAI_API_KEY`],[`bedrock`,`Amazon Bedrock`,`Claude and other models through AWS`,``]],b=M(()=>H(n)?.preview.bedrock.source??null),x=M(()=>H(i)===`openai`?`OpenAI`:H(i)===`bedrock`?`Amazon Bedrock`:`Anthropic`),S=[`Welcome`,`Model`,`Checks`,`Set Up`,`First Feature`],C=M(()=>ka(Q.actions,`create`).find(e=>e.input)),w=e=>e.map(e=>/\s/.test(e)?JSON.stringify(e):e).join(` `),T=M(()=>`speccoder init --provider ${H(i)}${H(i)===`bedrock`&&H(o).trim()?` --region ${H(o).trim()}`:``}${H(a).trim()?` --model ${H(a).trim()}`:``}`);async function E(){P(s,!0),P(d,null);try{P(c,await xa(`/api/setup`,{provider:H(i),model:H(a).trim()||null,region:H(i)===`bedrock`&&H(o).trim()||null}),!0),H(c)?.status!==`ok`&&P(d,H(c)?.message??`init refused`,!0)}catch(e){P(d,String(e.message??e),!0)}finally{P(s,!1)}}async function ee(){P(s,!0);try{let e=await xa(`/api/setup/commit`,{paths:H(c)?.to_commit??[]});e.status===`ok`?(P(l,e.message,!0),P(r,4),Q.refresh()):P(d,e.message,!0)}finally{P(s,!1)}}function D(e){navigator.clipboard?.writeText(e),Q.toast({tone:`ok`,text:`Copied`,detail:e})}function O(){H(C)&&H(u).trim()&&(Q.newFeature={text:H(u).trim(),through:`tasks`})}let k=e=>e?.level??`pass`;var te=$x(),ne=I(te),re=I(ne);J(re,21,()=>S,si,(e,t,n)=>{var i=vx();let a;var o=R(I(i),!0);A(i),V(()=>{X(i,`aria-current`,n===H(r)?`step`:void 0),a=Y(i,1,`svelte-1tgm7f5`,null,a,{on:n===H(r),done:n<H(r)}),K(o,H(t))}),G(e,i)}),A(re);var ie=z(re,2),ae=e=>{G(e,yx())},oe=e=>{var t=Sx(),n=z(L(t),4),r=R(z(I(n)),!0);j(),A(n);var i=z(n,2);J(i,20,()=>[`git`,`repository`,`project`,`spec tool`,`sandbox`],si,(e,t)=>{let n=M(()=>m(t));var r=Yr(),i=L(r),a=e=>{var r=bx(),i=I(r),a=I(i);{let e=M(()=>H(n).level===`pass`?`check`:H(n).level===`fail`?`xmark`:`exclaim`);$(a,{get name(){return H(e)},size:12,weight:2.6})}A(i);var o=z(i,2),s=I(o),c=R(s,!0),l=R(z(s),!0);A(o);var u=z(o,2),d=e=>{fo(e,{get steps(){return H(n).fix_steps},limit:1})};q(u,e=>{H(n).level!==`pass`&&H(n).fix_steps?.length&&e(d)}),A(r),V((e,t)=>{Y(r,1,e,`svelte-1tgm7f5`),K(c,t),K(l,H(n).detail)},[()=>xi(k(H(n))),()=>t.charAt(0).toUpperCase()+t.slice(1)]),G(e,r)};q(i,e=>{H(n)&&e(a)}),G(e,r)}),A(i);var a=z(i,2),o=e=>{var t=xx(),n=L(t),r=I(n);$(I(r),{name:`plus`,size:13}),j(),A(r),j(2),A(n);var i=z(n,2);$(I(i),{name:`info`,size:14}),j(),A(i),U(`click`,r,()=>Q.newProject={path:Q.project?.root??``,existing:!0}),G(e,t)},s=M(()=>k(H(h))===`fail`);q(a,e=>{H(s)&&e(o)}),V(()=>K(r,Q.project?.name??`this project`)),G(e,t)},se=e=>{var t=Ax(),n=z(L(t),4);J(n,21,()=>y,([e,t,n,r])=>e,(e,t)=>{var n=M(()=>g(H(t),4));let r=()=>H(n)[0],a=()=>H(n)[1],o=()=>H(n)[2],s=()=>H(n)[3];var c=Ex();let l;var u=I(c),d=R(u,!0),f=z(u),p=R(f,!0),m=z(f,2),h=e=>{var t=Tx();let n;var r=I(t),i=e=>{var t=Cx(),n=L(t);$(n,{name:`check`,size:11,weight:2.6});var r=z(n);V(()=>K(r,` ${H(b)??``}`)),G(e,t)},a=e=>{var t=wx();$(L(t),{name:`key`,size:11}),j(),G(e,t)};q(r,e=>{H(b)?e(i):e(a,-1)}),A(t),V(()=>n=Y(t,1,`key svelte-1tgm7f5`,null,n,{ok:H(b)})),G(e,t)},v=e=>{var t=Tx();let n;var r=I(t),i=e=>{var t=Cx(),n=L(t);$(n,{name:`check`,size:11,weight:2.6});var r=z(n);V(()=>K(r,` ${s()??``} is set`)),G(e,t)},a=M(()=>H(_).get(s())),o=e=>{var t=Cx(),n=L(t);$(n,{name:`key`,size:11});var r=z(n);V(()=>K(r,` ${s()??``} not set`)),G(e,t)};q(r,e=>{H(a)?e(i):e(o,-1)}),A(t),V(e=>n=Y(t,1,`key svelte-1tgm7f5`,null,n,{ok:e}),[()=>H(_).get(s())]),G(e,t)};q(m,e=>{r()===`bedrock`?e(h):e(v,-1)}),A(c),V(()=>{X(c,`aria-checked`,H(i)===r()),l=Y(c,1,`svelte-1tgm7f5`,null,l,{on:H(i)===r()}),K(d,a()),K(p,o())}),U(`click`,c,()=>P(i,r(),!0)),G(e,c)}),A(n);var r=z(n,2),s=z(I(r));Gi(s),A(r);var c=z(r,2),l=e=>{var t=Ox(),n=L(t),r=z(I(n));Gi(r),A(n);var i=z(n,2),a=e=>{var t=Dx();$(I(t),{name:`key`,size:14}),j(),A(t),G(e,t)};q(i,e=>{H(b)||e(a)}),$i(r,()=>H(o),e=>P(o,e)),G(e,t)},u=e=>{var t=kx(),n=I(t);$(n,{name:`key`,size:14});var r=z(n,2),i=R(r);j(),A(t),V(()=>K(i,`export ${H(v)??``}=…`)),U(`click`,r,()=>D(`export ${H(v)}=…`)),G(e,t)},d=M(()=>!H(_).get(H(v)));q(c,e=>{H(i)===`bedrock`?e(l):H(d)&&e(u,1)});var p=z(c,4),m=z(I(p),4),h=e=>{Zv(e,{compact:!0})};q(m,e=>{H(f)&&e(h)}),A(p),V(()=>X(s,`placeholder`,`speccoder's default for ${H(x)??``}`)),$i(s,()=>H(a),e=>P(a,e)),ca(`open`,`toggle`,p,e=>P(f,e),()=>H(f)),G(e,t)},ce=e=>{var t=Ix(),r=z(L(t),4),i=e=>{var t=Mx();J(t,21,()=>H(n).preview.checks,e=>e.name,(e,t)=>{var n=jx(),r=I(n);$(I(r),{name:`check`,size:13,weight:2.4}),A(r);var i=z(r,2),a=I(i),o=R(a,!0),s=z(a,2),c=R(s,!0),l=z(s),u=R(l,!0),d=R(z(l),!0);A(i),A(n),V(e=>{K(o,H(t).name),K(c,H(t).tier),K(u,e),K(d,H(t).why)},[()=>w(H(t).argv)]),G(e,n)}),A(t),G(e,t)},a=e=>{var t=Nx();$(I(t),{name:`exclaim`,size:14}),j(),A(t),G(e,t)};q(r,e=>{H(n).preview.checks.length?e(i):e(a,-1)});var o=z(r,2),s=e=>{var t=Px(),r=R(t);V(e=>K(r,`The model may also run without asking: ${e??``}`),[()=>H(n).preview.allow.map(w).join(` · `)]),G(e,t)};q(o,e=>{H(n).preview.allow.length&&e(s)});var c=z(o,2),l=e=>{var t=Fx(),r=R(z(I(t)),!0);A(t),V(e=>K(r,e),[()=>w(H(n).preview.formatter)]),G(e,t)};q(c,e=>{H(n).preview.formatter&&e(l)}),G(e,t)},le=e=>{var t=Wx(),r=z(L(t),2),i=e=>{G(e,Lx())},a=e=>{var t=Rx(),n=z(L(t),2),r=I(n);$(r,{name:`terminal`,size:12});var i=z(r);A(n),V(()=>K(i,` ${H(T)??``}`)),U(`click`,n,()=>D(H(T))),G(e,t)},o=e=>{var t=Hx(),n=L(t);J(n,21,()=>H(c).data?.ran??[],e=>e.name,(e,t)=>{var n=zx(),r=I(n),i=I(r);{let e=M(()=>H(t).passed?`check`:`xmark`);$(i,{get name(){return H(e)},size:12,weight:2.6})}A(r);var a=z(r,2),o=I(a),s=R(o,!0),c=R(z(o));A(a),A(n),V(e=>{Y(n,1,xi(H(t).passed?`pass`:`fail`),`svelte-1tgm7f5`),K(s,H(t).name),K(c,`${H(t).passed?`passes`:`fails`} on the untouched code · ${e??``}s`)},[()=>(H(t).duration_ms/1e3).toFixed(1)]),G(e,n)}),A(n);var r=z(n,2),i=e=>{var t=Bx();$(I(t),{name:`exclaim`,size:14}),j(),A(t),G(e,t)};q(r,e=>{H(c).failed?.length&&e(i)});var a=z(r,2),o=e=>{var t=Vx(),n=I(t);$(n,{name:`check`,size:14});var r=z(n);A(t),V(()=>K(r,` ${H(l)??``}`)),G(e,t)};q(a,e=>{H(l)&&e(o)}),G(e,t)};q(r,e=>{H(n).preview.configured&&!H(c)?e(i):H(c)?e(o,-1):e(a,1)});var s=z(r,2),u=e=>{var t=Ux(),n=I(t);$(n,{name:`exclaim`,size:14});var r=z(n);A(t),V(()=>K(r,` ${H(d)??``}`)),G(e,t)};q(s,e=>{H(d)&&e(u)}),G(e,t)},ue=e=>{var t=Kx(),n=z(L(t),4);lt(n),ct(n,!0);var r=z(n,2),i=e=>{G(e,Gx())};q(r,e=>{H(C)||e(i)}),$i(n,()=>H(u),e=>P(u,e)),G(e,t)};q(ie,e=>{H(n)?H(r)===0?e(oe,1):H(r)===1?e(se,2):H(r)===2?e(ce,3):H(r)===3?e(le,4):e(ue,-1):e(ae)});var de=z(ie,2),fe=I(de),pe=e=>{var t=qx();V(()=>t.disabled=H(s)),U(`click`,t,()=>P(r,H(r)-1)),G(e,t)};q(fe,e=>{H(r)>0&&e(pe)});var me=z(fe,4),he=e=>{var t=Jx();V(e=>t.disabled=e,[()=>k(H(h))===`fail`]),U(`click`,t,()=>P(r,H(n)?.preview.configured?3:1,!0)),G(e,t)},ge=e=>{var t=Jx();U(`click`,t,()=>P(r,H(r)+1)),G(e,t)},_e=e=>{var t=Yr(),i=L(t),a=e=>{var t=Jx();U(`click`,t,()=>P(r,4)),G(e,t)},o=e=>{var t=Xx(),n=I(t),r=e=>{var t=Yx();j(),G(e,t)},i=e=>{G(e,Jr(`Set Up`))};q(n,e=>{H(s)?e(r):e(i,-1)}),A(t),V(()=>t.disabled=H(s)),U(`click`,t,E),G(e,t)},u=e=>{var t=Zx(),n=R(t);V(e=>{t.disabled=H(s),K(n,`Commit ${e??``}`)},[()=>H(c).to_commit.join(` and `)]),U(`click`,t,ee),G(e,t)},d=e=>{var t=Jx();U(`click`,t,()=>P(r,4)),G(e,t)};q(i,e=>{H(n)?.preview.configured&&!H(c)?e(a):!H(c)||H(c).status!==`ok`?e(o,1):!H(l)&&H(c).to_commit?.length?e(u,2):e(d,-1)}),G(e,t)},ve=e=>{var t=Qx(),n=L(t),r=z(n,2);V(e=>r.disabled=e,[()=>!H(u).trim()||!H(C)]),U(`click`,n,()=>Q.view=`overview`),U(`click`,r,O),G(e,t)};q(me,e=>{H(r)===0?e(he):H(r)===1||H(r)===2?e(ge,1):H(r)===3?e(_e,2):e(ve,-1)}),A(de),A(ne),A(te),G(e,te),Ze()}Rr([`click`]);var tS=W(`<div class="center svelte-1kit1qx"><span class="spinner svelte-1kit1qx"></span></div>`),nS=W(`<p class="bad svelte-1kit1qx"><!> </p>`),rS=W(`<li> </li>`),iS=W(`<pre class="body svelte-1kit1qx"> </pre>`),aS=W(`<dl class="grouped svelte-1kit1qx"><div class="svelte-1kit1qx"><dt class="svelte-1kit1qx">Branch</dt><dd class="mono svelte-1kit1qx"> </dd></div> <div class="svelte-1kit1qx"><dt class="svelte-1kit1qx">Into</dt><dd class="mono svelte-1kit1qx"> </dd></div> <div class="svelte-1kit1qx"><dt class="svelte-1kit1qx">Title</dt><dd class="svelte-1kit1qx"> </dd></div></dl> <ol class="cmds mono svelte-1kit1qx"></ol> <button class="btn small ghost"> </button> <!>`,1),oS=W(`<p class="bad svelte-1kit1qx"><!> The hook is no longer in speccoder.toml.</p>`),sS=W(`<p class="small">It changed. Trusted before:</p> <pre class="body was svelte-1kit1qx"> </pre> <p class="small">Now:</p>`,1),cS=W(`<li> <span class="muted"> </span></li>`),lS=W(`<li> <span class="muted">(outside the repository: not digested)</span></li>`),uS=W(`<ul class="cmds mono svelte-1kit1qx"><!> <!></ul>`),dS=W(`<p class="bad svelte-1kit1qx"><!> It changed since this was offered: what you see above is what would be trusted — open it again.</p>`),fS=W(`<!> <pre class="body svelte-1kit1qx"> </pre> <!> <!>`,1),pS=W(`<p class="bad svelte-1kit1qx"><!> The extension is no longer in the project.</p>`),mS=W(`<p class="wide svelte-1kit1qx"><!> </p>`),hS=W(`<p class="gone svelte-1kit1qx"> </p>`),gS=W(`<p class="small mono svelte-1kit1qx"> </p>`),_S=W(`<div class="changed svelte-1kit1qx"><p class="small svelte-1kit1qx"><strong>It changed since you trusted it.</strong></p> <!> <!> <!></div>`),vS=W(`<!> <ul class="cmds svelte-1kit1qx"></ul> <p class="small muted mono"><!> </p> <!>`,1),yS=W(`<div class="scrim svelte-1kit1qx" role="presentation"><div class="sheet glass svelte-1kit1qx" role="alertdialog" aria-modal="true" aria-labelledby="c-title" aria-describedby="c-what"><header class="svelte-1kit1qx"><span class="badge svelte-1kit1qx" aria-hidden="true"><!></span> <div><h2 id="c-title" class="svelte-1kit1qx"> </h2> <p id="c-what" class="svelte-1kit1qx"> </p></div></header> <!> <!> <!> <p class="cli mono svelte-1kit1qx"> </p> <div class="row svelte-1kit1qx"><button class="btn">Cancel</button> <button class="btn primary"> </button></div></div></div>`);function bS(e,t){Xe(t,!0);let n=M(()=>Q.confirming.action),r=N(null),i=N(!1);B(()=>{H(n).run?.kind===`pull_request`&&ba(`/api/pr/preview${Sa({feature:Q.feature??void 0})}`).then(e=>P(r,e,!0))});let a=N(void 0);B(()=>{let e=H(n).run;e?.kind===`hook_trust`&&ba(`/api/hooks`).then(t=>P(a,t.data?.hooks.find(t=>t.name===e.name)??null,!0))});let o=N(void 0);B(()=>{let e=H(n).run;e?.kind===`extension_trust`&&ba(`/api/extensions`).then(t=>P(o,t.data?.extensions.find(t=>t.name===e.name)??null,!0))});let s=M(()=>H(n).run?.kind===`hook_trust`||H(n).run?.kind===`extension_trust`),c=M(()=>H(n).run?.kind===`hook_trust`&&H(a)&&H(a).digest!==H(n).run.digest||H(n).run?.kind===`extension_trust`&&H(o)&&H(o).digest!==H(n).run.digest),l=M(()=>H(r)&&H(r).status!==`ok`?H(r).message:null),u=()=>Q.perform(H(n),void 0,!0);function d(e){e.key===`Escape`&&(Q.confirming=null)}var f=yS();Lr(`keydown`,on,d);var p=I(f),m=I(p),h=I(m),g=I(h);{let e=M(()=>H(s)?`shield`:`arrowup`);$(g,{get name(){return H(e)},size:20,weight:2.2})}A(h);var _=z(h,2),v=I(_),y=R(v),b=R(z(v,2),!0);A(_),A(m);var x=z(m,2),S=e=>{var t=Yr(),n=L(t),a=e=>{G(e,tS())},o=e=>{var t=nS(),n=I(t);$(n,{name:`exclaim`,size:14});var r=z(n);A(t),V(()=>K(r,` ${H(l)??``}`)),G(e,t)},s=e=>{var t=aS(),n=L(t),a=I(n),o=R(z(I(a)));A(a);var s=z(a,2),c=R(z(I(s)),!0);A(s);var l=z(s,2),u=R(z(I(l)),!0);A(l),A(n);var d=z(n,2);J(d,21,()=>H(r).data.commands,si,(e,t)=>{var n=rS(),r=R(n,!0);V(()=>K(r,H(t))),G(e,n)}),A(d);var f=z(d,2),p=R(f),m=z(f,2),h=e=>{var t=iS(),n=R(t,!0);V(()=>K(n,H(r).data.body)),G(e,t)};q(m,e=>{H(i)&&e(h)}),V(()=>{K(o,`${H(r).data.branch??``} → ${H(r).data.remote??``}`),K(c,H(r).data.base),K(u,H(r).data.title),K(p,`${H(i)?`Hide`:`Show`} the description`)}),U(`click`,f,()=>P(i,!H(i))),G(e,t)};q(n,e=>{H(r)?H(l)?e(o,1):H(r).data&&e(s,2):e(a)}),G(e,t)};q(x,e=>{H(n).run?.kind===`pull_request`&&e(S)});var C=z(x,2),w=e=>{var t=Yr(),n=L(t),r=e=>{G(e,tS())},i=e=>{var t=oS();$(I(t),{name:`exclaim`,size:14}),j(),A(t),G(e,t)},o=e=>{var t=fS(),n=L(t),r=e=>{var t=sS(),n=R(z(L(t),2),!0);j(2),V(()=>K(n,H(a).trusted_definition)),G(e,t)};q(n,e=>{H(a).trusted_definition&&e(r)});var i=z(n,2),o=R(i,!0),s=z(i,2),l=e=>{var t=uS(),n=I(t);J(n,17,()=>H(a).files,e=>e.path,(e,t)=>{var n=cS(),r=I(n),i=R(z(r));A(n),V(e=>{K(r,`runs ${H(t).path??``} `),K(i,`${e??``}…`)},[()=>H(t).digest.slice(0,19)]),G(e,n)}),J(z(n,2),16,()=>H(a).outside??[],e=>e,(e,t)=>{var n=lS(),r=I(n);j(),A(n),V(()=>K(r,`runs ${t??``} `)),G(e,n)}),A(t),G(e,t)};q(s,e=>{(H(a).files.length||H(a).outside?.length)&&e(l)});var u=z(s,2),d=e=>{var t=dS();$(I(t),{name:`exclaim`,size:14}),j(),A(t),G(e,t)};q(u,e=>{H(c)&&e(d)}),V(()=>K(o,H(a).definition)),G(e,t)};q(n,e=>{H(a)===void 0?e(r):H(a)?e(o,-1):e(i,1)}),G(e,t)};q(C,e=>{H(n).run?.kind===`hook_trust`&&e(w)});var T=z(C,2),E=e=>{var t=Yr(),n=L(t),r=e=>{G(e,tS())},i=e=>{var t=pS();$(I(t),{name:`exclaim`,size:14}),j(),A(t),G(e,t)},a=e=>{var t=vS(),n=L(t),r=e=>{var t=_S(),n=z(I(t),2);J(n,16,()=>H(o).changes.widened,e=>e,(e,t)=>{var n=mS(),r=I(n);$(r,{name:`arrowup`,size:11,weight:2.4});var i=z(r);A(n),V(()=>K(i,` ${t??``}`)),G(e,n)});var r=z(n,2);J(r,16,()=>H(o).changes.gone??[],e=>e,(e,t)=>{var n=hS(),r=R(n);V(()=>K(r,`gone — ${t??``}`)),G(e,n)});var i=z(r,2),a=e=>{var t=gS(),n=R(t,!0);V(e=>K(n,e),[()=>H(o).changes.files.join(` · `)]),G(e,t)};q(i,e=>{H(o).changes.files.length&&e(a)}),A(t),G(e,t)};q(n,e=>{H(o).changes&&e(r)});var i=z(n,2);J(i,21,()=>H(o).contributions,e=>e.kind+e.name,(e,t)=>{var n=rS(),r=R(n,!0);V(()=>K(r,H(t).line)),G(e,n)}),A(i);var a=z(i,2),s=I(a),l=e=>{var t=Jr();V(()=>K(t,`says it came from ${H(o).origin.url??``}${H(o).origin.commit?` at ${H(o).origin.commit}`:``} ·`)),G(e,t)};q(s,e=>{H(o).origin&&e(l)});var u=z(s);A(a);var d=z(a,2),f=e=>{var t=dS();$(I(t),{name:`exclaim`,size:14}),j(),A(t),G(e,t)};q(d,e=>{H(c)&&e(f)}),V(e=>K(u,`${H(o).files.length??``} files in ${H(o).folder??``} · ${e??``}…`),[()=>H(o).digest.slice(0,19)]),G(e,t)};q(n,e=>{H(o)===void 0?e(r):H(o)?e(a,-1):e(i,1)}),G(e,t)};q(T,e=>{H(n).run?.kind===`extension_trust`&&e(E)});var ee=z(T,2),D=R(ee),O=z(ee,2),k=I(O),te=z(k,2);ct(te,!0);var ne=R(te,!0);A(O),A(p),A(f),V(e=>{K(y,`${e??``}?`),K(b,H(n).confirm),K(D,`$ ${H(n).command??``}`),te.disabled=H(n).run?.kind===`pull_request`&&(!H(r)||!!H(l))||H(n).run?.kind===`hook_trust`&&(!H(a)||!!H(c))||H(n).run?.kind===`extension_trust`&&(!H(o)||!!H(c))||!!Q.job?.running,K(ne,H(n).run?.kind===`pull_request`?`Push and Open Draft`:H(s)?`Trust`:`Continue`)},[()=>H(n).label.charAt(0).toUpperCase()+H(n).label.slice(1)]),U(`click`,f,e=>e.target===e.currentTarget&&(Q.confirming=null)),U(`click`,k,()=>Q.confirming=null),U(`click`,te,u),G(e,f),Ze()}Rr([`click`]);var xS=W(` <span class="mono"> </span>`,1),SS=W(`<p class="detail svelte-1m8amhi"> </p>`),CS=W(`<p class="undo muted svelte-1m8amhi"><!> Undo afterwards: <span class="mono"> </span></p>`),wS=W(`<div class="cmd svelte-1m8amhi"><code class="mono svelte-1m8amhi"> </code> <button class="btn small ghost"><!> </button></div> <!>`,1),TS=W(`<div class="card glass svelte-1m8amhi" role="alertdialog" aria-labelledby="r-title" aria-describedby="r-why"><header class="svelte-1m8amhi"><span class="badge svelte-1m8amhi" aria-hidden="true"><!></span> <div class="text svelte-1m8amhi"><p class="kicker svelte-1m8amhi">Stopped before any model call<!></p> <h3 id="r-title" class="svelte-1m8amhi"> </h3> <!> <p id="r-why" class="effect svelte-1m8amhi"><strong> </strong> </p></div> <button class="close svelte-1m8amhi" aria-label="Not now"><!></button></header> <button class="disclose svelte-1m8amhi"><span><!></span> </button> <!> <footer class="svelte-1m8amhi"><button class="btn small ghost" title="Copy what went wrong"><!> Copy</button> <button class="btn small">Not Now</button> <button class="btn small primary"><!> </button></footer></div>`);function ES(e,t){Xe(t,!0);let n=M(()=>Q.remedy),r=N(!1),i=N(!1),a=M(()=>!!H(n).then),o=M(()=>{let e=H(n).message.indexOf(` — `);return e<0?[H(n).message,null]:[H(n).message.slice(0,e),H(n).message.slice(e+3)]}),s=M(()=>g(H(o),2)),c=M(()=>H(s)[0]),l=M(()=>H(s)[1]);async function u(){await navigator.clipboard?.writeText(H(n).remedy.command).catch(()=>{}),P(i,!0),setTimeout(()=>P(i,!1),1600)}function d(e){e.key===`Escape`&&(Q.remedy=null)}var f=TS();Lr(`keydown`,on,d);var p=I(f),m=I(p);$(I(m),{name:`key`,size:16,weight:2.2}),A(m);var h=z(m,2),_=I(h),v=z(I(_)),y=e=>{var t=xS(),r=L(t,!0);r.nodeValue=` · `;var i=R(z(r),!0);V(()=>K(i,H(n).code)),G(e,t)};q(v,e=>{H(n).code&&e(y)}),A(_);var b=z(_,2),x=R(b,!0),S=z(b,2),C=e=>{var t=SS(),n=R(t,!0);V(()=>K(n,H(l))),G(e,t)};q(S,e=>{H(l)&&e(C)});var w=z(S,2),T=I(w),E=R(T,!0),ee=z(T);A(w),A(h);var D=z(h,2);$(I(D),{name:`xmark`,size:12}),A(D),A(p);var O=z(p,2),k=I(O);let te;$(I(k),{name:`chevron`,size:10}),A(k);var ne=z(k);A(O);var re=z(O,2),ie=e=>{var t=wS(),r=L(t),a=I(r),o=R(a),s=z(a,2),c=I(s);{let e=M(()=>H(i)?`check`:`copy`);$(c,{get name(){return H(e)},size:11})}var l=z(c);A(s),A(r);var d=z(r,2),f=e=>{var t=CS(),r=I(t);$(r,{name:`undo`,size:11});var i=R(z(r,2),!0);A(t),V(()=>K(i,H(n).remedy.undo)),G(e,t)};q(d,e=>{H(n).remedy.undo&&e(f)}),V(()=>{K(o,`$ ${H(n).remedy.command??``}`),K(l,` ${H(i)?`Copied`:`Copy`}`)}),U(`click`,s,u),G(e,t)};q(re,e=>{H(r)&&e(ie)});var ae=z(re,2),oe=I(ae);$(I(oe),{name:`copy`,size:11}),j(),A(oe);var se=z(oe,2),ce=z(se,2);ct(ce,!0);var le=I(ce);$(le,{name:`check`,size:11,weight:2.4});var ue=z(le);A(ce),A(ae),A(f),V(e=>{K(x,H(c)),K(E,H(n).remedy.label),K(ee,` ${H(n).remedy.effect??``}.`),X(O,`aria-expanded`,H(r)),te=Y(k,1,`chev svelte-1m8amhi`,null,te,{open:H(r)}),K(ne,` ${H(r)?`Hide`:`Show`} the command`),ce.disabled=!!Q.job?.running,K(ue,` ${e??``}`)},[()=>H(a)?`${H(n).remedy.label.split(` `)[0]} and Run Again`:H(n).remedy.label]),U(`click`,D,()=>Q.remedy=null),U(`click`,O,()=>P(r,!H(r))),U(`click`,oe,()=>Q.copyError({message:H(n).message,code:H(n).code,fix:[H(n).remedy.command]})),U(`click`,se,()=>Q.remedy=null),U(`click`,ce,()=>Q.applyRemedy()),G(e,f),Ze()}Rr([`click`]);var DS=W(`<span class="sr-only">(disabled)</span>`),OS=W(`<button type="button" role="radio"><span class="dot svelte-1n8df3y" aria-hidden="true"> </span> <span class="label svelte-1n8df3y"> </span> <span class="ceremony svelte-1n8df3y"> </span> <kbd> </kbd> <!></button>`),kS=W(`<code class="cli svelte-1n8df3y"> </code> <button class="btn icon ghost" aria-label="Copy the command" title="Copy the command"><!></button>`,1),AS=W(`<div class="d-scrim" role="presentation"><div class="d-sheet" role="dialog" aria-modal="true" aria-labelledby="cmp-title"><h2 id="cmp-title" class="sr-only">What do you want to change?</h2> <label class="d-field"><span class="d-label" aria-hidden="true">What do you want to change?</span> <textarea rows="2" placeholder="Describe a change, a bug, a feature, or a question" aria-describedby="cmp-reason" aria-label="Describe a change, a bug, a feature, or a question"></textarea></label> <div class="rungs svelte-1n8df3y" role="radiogroup" aria-label="Rung"></div> <p id="cmp-reason" aria-live="polite"> </p> <div class="foot svelte-1n8df3y"><span class="where muted svelte-1n8df3y"> </span> <!></div></div></div>`);function jS(e,t){Xe(t,!0);let n=N(F(Q.composer?.text??``)),r=N(null),i=N(null),a=N(!1),o=N(!1),s=M(()=>Q.project?.planning?.creates??null),c=M(()=>Q.project?.features?.current??Q.feature??null),l=dd(async e=>{if(!e.trim())P(r,null),H(a)||P(i,null);else try{let t=await ba(`/api/suggest${Sa({text:e})}`);P(r,t.data??null,!0),!H(a)&&H(r)&&P(i,H(r).available?H(r).rung:null,!0)}catch{P(r,null)}},300);B(()=>(l(H(n)),()=>l.cancel()));function u(){Q.composer=null}function d(e){let t=H(n).trim();t?e&&Ku(e)&&(Q.composer=null,e===`bug`?Q.bugSheet={symptom:t}:e===`quick`?(Q.quickDraft=t,Q.quick=!0):e===`feature`?Q.newFeature={text:t}:e===`explore`?Q.explore={idea:t}:e===`ask`&&(Z.toggle(!0),Z.send(t))):P(o,!0)}function f(e){if(e.key===`Escape`)return e.preventDefault(),u();if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault(),P(a,!0),P(i,Ju(H(i),e.key===`ArrowDown`?1:-1),!0);return}let t=qu(e);t&&(e.preventDefault(),d(t===`selected`?H(i):t))}let p=M(()=>H(o)&&!H(n).trim()?`Describe the change first`:H(r)?.reason??``),m=M(()=>Zu(H(i),H(n),H(s)));async function h(){H(m)&&(await navigator.clipboard?.writeText(H(m)).catch(()=>{}),Q.toast({tone:`ok`,text:`Copied`,detail:H(m)}))}var g=AS(),_=I(g),v=z(I(_),2),y=z(I(v),2);lt(y),A(v);var b=z(v,2);J(b,21,()=>Gu,e=>e.rung,(e,t)=>{let n=M(()=>H(i)===H(t).rung),o=M(()=>!Ku(H(t).rung));var s=OS();let c;var l=I(s),u=R(l,!0),p=z(l,2),m=R(p,!0),h=z(p,2),g=R(h,!0),_=z(h,2),v=R(_,!0),y=z(_,2),b=e=>{G(e,DS())};q(y,e=>{H(o)&&e(b)}),A(s),V(()=>{X(s,`aria-checked`,H(n)),X(s,`aria-disabled`,H(o)),X(s,`tabindex`,H(n)||!H(i)&&H(t).rung===`bug`?0:-1),X(s,`title`,H(o)?`${H(t).label} is not in this build`:`${H(t).label} (${H(t).keys})`),c=Y(s,1,`svelte-1n8df3y`,null,c,{on:H(n),off:H(o)}),K(u,H(n)?`●`:`○`),K(m,H(t).label),K(g,H(t).ceremony),K(v,H(r)?.rung===H(t).rung&&H(r).available?`⏎ ${H(t).keys}`:H(t).keys)}),U(`click`,s,()=>{H(o)||(P(a,!0),P(i,H(t).rung,!0),d(H(t).rung))}),U(`keydown`,s,f),G(e,s)}),A(b);var x=z(b,2);let S;var C=R(x,!0),w=z(x,2),T=I(w),E=R(T,!0),ee=z(T,2),D=e=>{var t=kS(),n=L(t),r=R(n,!0),i=z(n,2);$(I(i),{name:`copy`,size:14}),A(i),V(()=>K(r,H(m))),U(`click`,i,h),G(e,t)};q(ee,e=>{H(m)&&e(D)}),A(w),A(_),_i(_,(e,t)=>X_?.(e,t),()=>`textarea`),A(g),V(e=>{X(y,`aria-invalid`,H(o)),S=Y(x,1,`reason svelte-1n8df3y`,null,S,{invalid:e}),K(C,H(p)),K(E,H(c)?`In ${H(c)}`:``)},[()=>H(o)&&!H(n).trim()]),U(`click`,g,e=>e.target===e.currentTarget&&u()),U(`input`,y,()=>P(o,!1)),U(`keydown`,y,f),$i(y,()=>H(n),e=>P(n,e)),G(e,g),Ze()}Rr([`click`,`input`,`keydown`]);var MS=W(`<span id="nf-need" class="d-error">Describe what it should do</span>`),NS=W(`<div class="d-field explored svelte-fkmm5w" aria-label="From an exploration"><span class="d-label"> <code class="svelte-fkmm5w"> </code></span> <span class="d-note">The brief you chose, word for word — the spec records where it came from. To change it, choose again in the exploration.</span></div>`),PS=W(`<button type="button" class="link explore-first svelte-fkmm5w"><!> Not sure yet? Explore first</button>`),FS=W(`<div class="d-field" role="radiogroup" aria-label="Start from"><span class="d-label">Start from</span> <div class="d-radios"><label><input type="radio" name="nf-source"/> </label> <label><input type="radio" name="nf-source"/> this description</label></div></div>`),IS=W(` <span class="muted"> </span>`,1),LS=W(`<label class="carry svelte-fkmm5w"><input type="checkbox"/> <!> <!></label>`),RS=W(`<span class="d-note">A ticked conversation is given to the skill word for word.</span>`),zS=W(`<div class="d-field promoted svelte-fkmm5w" aria-label="Promoted from"><span class="d-label"> </span> <span class="d-note">Its requirement, word for word. Its tick comes along as <em>inherited, proven against an earlier wording</em> — never counted verified here until it is re-proven.</span> <!> <!></div>`),BS=W(`<div><span> <strong> </strong> <span class="muted"> </span></span> <span><button class="btn small tinted"> </button></span></div>`),VS=W(`<span class="d-note"> </span>`),HS=W(`<div class="similar svelte-fkmm5w" role="status" aria-live="polite"><!> <!></div>`),US=W(`<div class="sr-only" role="status" aria-live="polite"></div>`),WS=W(`<label><input type="radio" name="nf-through"/> </label>`),GS=W(`<span class="muted"> </span>`),KS=W(`— <button class="btn small ghost">Settings › Model</button>`,1),qS=W(`<p class="d-warn attention" role="note"> <!></p>`),JS=W(`Start <kbd>⌘⏎</kbd>`,1),YS=W(`<div class="d-scrim" role="presentation"><div class="d-sheet wide" role="dialog" aria-modal="true" aria-labelledby="nf-title" aria-describedby="nf-lead"><header class="d-head"><span class="d-badge" aria-hidden="true"><!></span> <div><h2 id="nf-title"> </h2> <p id="nf-lead"> </p></div></header> <label class="d-field"><span class="d-label">What should it do?</span> <textarea placeholder="Users can export a report as CSV, with the columns they chose"></textarea> <!></label> <!> <!> <!> <!> <!> <dl class="d-grid"><dt id="nf-plan">Plan it</dt> <dd><div class="d-radios" role="radiogroup" aria-labelledby="nf-plan"></div> <div class="d-note"> </div></dd> <dt>Runs</dt> <dd><!></dd> <dt>Writes</dt> <dd><code class="svelte-fkmm5w"> </code> · planning files are left for you to commit</dd> <dt>Cost</dt> <dd class="muted"> </dd></dl> <details class="svelte-fkmm5w"><summary class="svelte-fkmm5w">Show commands</summary> <div class="d-mono svelte-fkmm5w"> </div></details> <!> <div class="d-row"><span class="d-hint">⌘⏎ starts</span> <button class="btn">Cancel</button> <button class="btn primary"><!></button></div></div></div>`);function XS(e,t){Xe(t,!0);let n=[],r=[],i=Q.newFeature??{},a=N(F(i.text??``)),o=i.source?.kind===`issue`?i.source:null,s=i.source?.kind===`promotion`?i.source:null,c=i.source?.kind===`explore`?i.source:null,l=N(F(s?.conversations??[])),u=N(F({}));B(()=>{s?.conversations.length&&ba(`/api/ask/conversations`).then(e=>P(u,Object.fromEntries((e.data?.conversations??[]).map(e=>[e.id,e])),!0)).catch(()=>{})});let d=M(()=>s?`speccoder spec promote ${s.task}${H(l).length?H(l).map(e=>` --conversation ${e}`).join(``):s.conversations.length?` --no-conversation`:``}`:``),f=N(F(o?`issue`:`description`)),p=N(F(i.through??`tasks`)),m=N(!1),h=N(!1),g=N(!1),_=N(F([])),v=N(!1),y=N(null),b=M(()=>Q.project?.planning),x=M(()=>H(b)?.creates??null),S=M(()=>Q.project?.unit??`feature`),C=M(()=>Q.project?.format??`the spec tool`),w=M(()=>ed(!!H(b)?.checks)),T=M(()=>$u(H(b),H(p))),E=M(()=>H(f)===`issue`&&o?o.number:null),ee=M(()=>Q.doctor.find(e=>e.check===`model key`)),D=M(()=>H(ee)?.level===`fail`?H(ee).detail.split(` `)[0]??`a model key`:null),O=M(()=>Q.job?.running?Q.job.command:null),k=M(()=>{let e=Q.project?.features?.features??[];if(H(S)===`change`)return`openspec/changes/<id>/`;let t=Math.max(0,...e.map(e=>e.number))+1;return`specs/${String(t).padStart(3,`0`)}-…/`}),te=M(()=>H(x)?H(D)===`AWS_BEARER_TOKEN_BEDROCK`?`No model key: set AWS_BEARER_TOKEN_BEDROCK or run aws login where you start speccoder`:H(D)?`No model key: set ${H(D)} where you start speccoder`:H(O)?`A job is running — ${H(O)}`:null:`${H(C)} has no skill that creates a ${H(S)}`),ne=dd(async e=>{if(e.trim().length<8)return void P(_,[],!0);try{let t=await ba(`/api/similar${Sa({text:e})}`),n=s?.task.split(`/`)[0];P(_,(t.data?.matches??[]).filter(e=>e.unit!==n),!0),P(v,!!t.data?.limited)}catch{P(_,[],!0)}},300);B(()=>(ne(H(a)),()=>ne.cancel())),B(()=>{let e=[H(x),...H(p)===`spec`?[]:H(b)?.toward??[],...H(p)===`analyze`&&H(b)?.checks?[H(b).checks]:[]].filter(Boolean);e.length&&ba(`/api/skill-cost${Sa({skills:e.join(`,`)})}`).then(e=>P(y,e,!0)).catch(()=>P(y,null))});let re=M(()=>{let e=H(y)?.cost;if(!e)return`unknown until it runs${H(y)?.model?` — ${H(y).model}`:``}`;let t=e.tokens>=1e3?`${Math.round(e.tokens/1e3)}k tokens`:`${e.tokens} tokens`;return`${e.calls==null?`about `:`about ${td(e.calls,`model call`)} · `}${t}${e.usd==null?``:` · ~$${e.usd.toFixed(2)}`} (from your last ${td(e.runs,`run`)} of these skills)`});function ie(){P(h,!1),o&&H(f)===`issue`&&H(a)!==i.text&&P(f,`description`)}function ae(){Q.newFeature=null}async function oe(){if(H(te)||H(g))return;let e=H(f)===`issue`&&i.text?i.text:H(a);if(!e.trim()){P(h,!0);return}P(g,!0);let t=Qu(H(x),e,H(p),H(E))[+!!H(E)]??``;if(Q.following=!0,Q.view=`documents`,Q.doc=`spec`,ae(),c)return Q.perform(ja({kind:`plan_through`,from:{kind:`create`,description:i.text??``,source:{kind:`explore`,session:c.session,digest:c.digest}},through:H(p)},{group:`plan`,label:`new ${H(S)} from ${c.session}`,why:`the brief you chose, verbatim`,command:`speccoder spec explore start ${c.session}`}),void 0,!0);if(s)return Q.perform(ja({kind:`plan_through`,from:{kind:`create`,description:e,source:{kind:`promotion`,task:s.task,conversations:H(l)}},through:H(p)},{group:`plan`,label:`new ${H(S)} from ${s.task}`,why:s.why,command:H(d)}),void 0,!0);await Q.perform(ja({kind:`plan_through`,from:{kind:`create`,description:e,source:H(E)?{kind:`issue`,number:H(E)}:{kind:`description`}},through:H(p)},{group:`plan`,label:`new ${H(S)}`,why:`${H(C)}'s own skills write and plan it`,command:t}))}async function se(e){let t=H(a).trim();if(!H(b)?.revises||!e.at){await navigator.clipboard?.writeText(t).catch(()=>{}),ae(),await Q.selectFeature(e.unit),Q.view=`documents`,Q.doc=`review`,Q.toast({tone:`ok`,text:`${e.unit} is open; your description is on the clipboard`});return}if(ae(),(await Q.run(ja({kind:`feature`},{group:`feature`,label:`switch to ${e.unit}`,why:``,command:`speccoder feature ${e.unit}`}),e.unit))?.status!==`ok`)return;await Q.selectFeature(e.unit);let n=await Q.run(ja({kind:`comment`,op:`add`,anchor:{kind:`passage`,path:e.at.path,start_line:e.at.line,end_line:e.at.line,quote:e.at.quote,quote_sha256:``,section:``},id:null},{group:`review`,label:`comment on ${e.requirement}`,why:``,command:`speccoder review comments`}),t);Q.view=`documents`,Q.doc=`review`,n?.status===`ok`&&Q.toast({tone:`ok`,text:`A comment on ${e.unit} ${e.requirement} waits in its tray`,detail:`Send it to revise the spec with the format's own skill`})}function ce(e){e.key===`Escape`?(e.preventDefault(),ae()):e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),oe())}var le=YS(),ue=I(le),de=I(ue),fe=I(de);$(I(fe),{name:`sparkle`,size:20,weight:2.2}),A(fe);var pe=z(fe,2),me=I(pe),he=R(me),ge=R(z(me,2));A(pe),A(de);var _e=z(de,2),ve=z(I(_e),2);lt(ve);var ye=z(ve,2),be=e=>{G(e,MS())};q(ye,e=>{H(h)&&e(be)}),A(_e);var xe=z(_e,2),Se=e=>{Rc(e,{field:`feature`,get text(){return H(a)},onshaped:e=>P(a,e,!0)})};q(xe,e=>{H(x)&&!c&&e(Se)});var Ce=z(xe,2),we=e=>{var t=NS(),n=I(t),r=I(n),i=R(z(r),!0);A(n),j(2),A(t),V(e=>{K(r,`From exploration ${c.session??``} · brief `),K(i,e)},[()=>c.digest.slice(0,12)]),G(e,t)},Te=e=>{var t=PS();$(I(t),{name:`sparkle`,size:12}),j(),A(t),U(`click`,t,()=>{Q.explore={idea:H(a)},ae()}),G(e,t)};q(Ce,e=>{c?e(we):H(x)&&e(Te,1)});var Ee=z(Ce,2),De=e=>{var t=FS(),r=z(I(t),2),s=I(r),c=I(s);Gi(c),c.value=c.__value=`issue`;var l=z(c);A(s);var u=z(s,2),d=I(u);Gi(d),d.value=d.__value=`description`,j(),A(u),A(r),A(t),V(()=>K(l,` issue #${o.number??``} “${o.title??``}”`)),U(`change`,c,()=>P(a,i.text??H(a),!0)),ta(n,[],c,()=>H(f),e=>P(f,e)),ta(n,[],d,()=>H(f),e=>P(f,e)),G(e,t)};q(Ee,e=>{o&&e(De)});var Oe=z(Ee,2),ke=e=>{var t=zS(),n=I(t),r=R(n),i=z(n,4);J(i,16,()=>s.conversations,e=>e,(e,t)=>{var n=LS(),r=I(n);Gi(r);var i=z(r,2);$(i,{name:`bubble`,size:12});var a=z(i),o=z(a),s=e=>{var n=IS(),r=L(n,!0);r.nodeValue=` `;var i=R(z(r));V(()=>K(i,`· ${H(u)[t].turns??``} ${H(u)[t].turns===1?`turn`:`turns`}`)),G(e,n)};q(o,e=>{H(u)[t]&&e(s)}),A(n),V(e=>{qi(r,e),K(a,` ${H(u)[t]?.title??t??``}`)},[()=>H(l).includes(t)]),U(`change`,r,e=>P(l,e.target.checked?[...H(l),t]:H(l).filter(e=>e!==t),!0)),G(e,n)});var a=z(i,2),o=e=>{G(e,RS())};q(a,e=>{s.conversations.length&&e(o)}),A(t),V(()=>K(r,`Promoted from ${s.task??``}`)),G(e,t)};q(Oe,e=>{s&&e(ke)});var Ae=z(Oe,2),je=e=>{var t=HS(),n=I(t);J(n,17,()=>H(_),e=>e.unit+e.requirement,(e,t)=>{var n=BS();let r;var i=I(n),a=I(i),o=z(a),s=R(o),c=z(o),l=R(z(c));A(i);var u=z(i,2),d=I(u),f=R(d,!0);A(u),A(n),V((e,i)=>{r=Y(n,1,`d-warn svelte-fkmm5w`,null,r,{attention:H(t).level===`very_close`}),K(a,`⚠ ${H(t).level===`very_close`?`Very close`:`Close`} to `),K(s,`${H(t).unit??``} ${H(t).requirement??``}`),K(c,` “${H(t).text??``}” `),K(l,`— shares: ${e??``}`),K(f,i)},[()=>H(t).shared.join(`, `),()=>H(b)?.revises?`Extend ${H(t).unit.split(`-`)[0]} instead`:`Open ${H(t).unit.split(`-`)[0]}`]),U(`click`,d,()=>se(H(t))),G(e,n)});var r=z(n,2),i=e=>{var t=VS(),n=R(t);V(()=>K(n,`compared with the 2 000 most recently changed ${H(S)??``}s`)),G(e,t)};q(r,e=>{H(v)&&e(i)}),A(t),G(e,t)},Me=e=>{G(e,US())};q(Ae,e=>{H(_).length?e(je):e(Me,-1)});var Ne=z(Ae,2),Pe=z(I(Ne),2),Fe=I(Pe);J(Fe,21,()=>H(w),e=>e.through,(e,t)=>{var n=WS(),i=I(n);Gi(i);var a,o=z(i);A(n),V(()=>{a!==(a=H(t).through)&&(i.value=(i.__value=a)??``),K(o,` ${H(t).label??``}`)}),ta(r,[],i,()=>(H(t).through,H(p)),e=>P(p,e)),G(e,n)}),A(Fe);var Ie=R(z(Fe,2));A(Pe);var Le=z(Pe,4),Re=I(Le),ze=e=>{var t=Jr();V(e=>K(t,`${H(C)??``} ${e??``}`),[()=>H(T).join(` → `)]),G(e,t)},Be=e=>{var t=GS(),n=R(t);V(()=>K(n,`nothing: ${H(C)??``} has no creating skill`)),G(e,t)};q(Re,e=>{H(x)?e(ze):e(Be,-1)}),A(Le);var Ve=z(Le,4),He=R(I(Ve),!0);j(),A(Ve);var Ue=R(z(Ve,4),!0);A(Ne);var We=z(Ne,2),Ge=R(z(I(We),2),!0);A(We);var Ke=z(We,2),qe=e=>{var t=qS(),n=I(t,!0),r=z(n),i=e=>{var t=KS();U(`click`,z(L(t)),()=>{ae(),Q.view=`settings`}),G(e,t)};q(r,e=>{H(D)&&e(i)}),A(t),V(()=>K(n,H(te))),G(e,t)};q(Ke,e=>{H(te)&&e(qe)});var Je=z(Ke,2),Ye=z(I(Je),2),Qe=z(Ye,2),$e=I(Qe),et=e=>{G(e,Jr(`Starting…`))},tt=e=>{var t=JS();j(),G(e,t)};q($e,e=>{H(g)?e(et):e(tt,-1)}),A(Qe),A(Je),A(ue),_i(ue,(e,t)=>X_?.(e,t),()=>c?`button.primary`:`textarea`),A(le),V(e=>{K(he,`New ${H(S)??``}`),K(ge,`${H(C)??``}'s own skill writes the spec; you review it before anything is planned.`),X(ve,`rows`,c?9:3),X(ve,`aria-invalid`,H(h)),X(ve,`aria-describedby`,H(h)?`nf-need`:void 0),ve.readOnly=!H(x)||!!c,X(Fe,`title`,H(b)?.checks?void 0:`${H(C)} has no analyze step`),K(Ie,`stops for: questions (in place)${H(p)===`spec`?``:` · your review of the spec`}`),K(He,H(k)),K(Ue,H(re)),K(Ge,e),Qe.disabled=!!H(te)||H(g)},[()=>s?H(d):Qu(H(x),H(a),H(p),H(E)).join(`
`)||`speccoder spec`]),U(`click`,le,e=>e.target===e.currentTarget&&ae()),U(`keydown`,le,ce),U(`input`,ve,ie),$i(ve,()=>H(a),e=>P(a,e)),ca(`open`,`toggle`,We,e=>P(m,e),()=>H(m)),U(`click`,Ye,ae),U(`click`,Qe,oe),G(e,le),Ze()}Rr([`click`,`keydown`,`input`,`change`]);var ZS=W(`<div class="d-warn attention" role="group" aria-label="Undo"><span> </span> <div class="d-row"><button class="btn">Cancel</button><button class="btn danger"> </button></div></div>`),QS=W(`<button class="btn ghost"><!> Undo</button>`),$S=W(`<button class="btn">Copy <code>speccoder ui -C …</code></button> <button class="btn primary"> </button>`,1),eC=W(`<button class="btn primary">Write the first feature</button>`),tC=W(`<div class="done svelte-j5je89" role="status"><p class="big svelte-j5je89"><span aria-hidden="true" class="svelte-j5je89">✓</span> </p> <p class="muted"> </p> <div class="d-row"><!> <!></div></div>`),nC=W(`<option></option>`),rC=W(`<label><input type="radio" name="np-stack"/> </label>`),iC=W(`<div class="d-note"> </div>`),aC=W(`<label><input type="radio" name="np-format"/> </label>`),oC=W(`<input type="text" placeholder="a local path or a URL" class="svelte-j5je89"/>`),sC=W(`<dt>Spec Kit</dt> <dd><div class="d-radios"><label><input type="checkbox"/> the speccoder preset (tasks that plan for evidence)</label> <label><input type="checkbox"/> bug extension</label></div> <!> <button class="btn small ghost"><!> Add a local path or URL</button></dd>`,1),cC=W(`<div class="d-warn attention" role="alert"><strong> </strong> <span> </span></div>`),lC=W(`<span class="muted"> </span>`),uC=W(`<span class="sr-only"> </span>`),dC=W(`<details open=""><summary> </summary> <pre> </pre></details>`),fC=W(`<li><span class="n"> </span> <span> </span> <span><code> </code><!> <!> <!> <!></span> <span> </span> <!></li>`),pC=W(`<div class="d-field"><span class="d-label" id="np-plan">This will run, in <code> </code>:</span> <ol class="d-steps" aria-labelledby="np-plan"></ol> <p class="d-note"> </p></div>`),mC=W(`<p class="d-note" aria-busy="true">Making the plan…</p>`),hC=W(`<button class="btn ghost">Undo</button>`),gC=W(`<div class="sr-only" role="alert"> </div> <div class="d-row"><span class="d-hint d-error"> </span> <button class="btn">Copy command</button> <!> <button class="btn primary">Retry</button></div>`,1),_C=W(`<div class="d-warn attention" role="group" aria-label="These reach the network"><span> </span> <div class="d-row"><button class="btn">Cancel</button><button class="btn primary">Run</button></div></div>`),vC=W(`<button class="btn ghost">Show commands <!></button>`),yC=W(`<div class="d-row"><span class="d-hint"> </span> <!> <button class="btn">Cancel</button> <button class="btn primary"> <kbd>⌘⏎</kbd></button></div>`),bC=W(`<label class="d-field"><span class="d-label">What are you building?</span> <textarea rows="2" placeholder="a CLI that turns Markdown tables into CSV"></textarea></label> <dl class="d-grid"><dt><label for="np-where">Where</label></dt> <dd><input id="np-where" type="text" list="np-folders" spellcheck="false" class="svelte-j5je89"/> <datalist id="np-folders"></datalist></dd> <dt id="np-stack">Stack</dt> <dd><div class="d-radios" role="radiogroup" aria-labelledby="np-stack"></div> <!> <!></dd> <dt id="np-format">Specs</dt> <dd><div class="d-radios" role="radiogroup" aria-labelledby="np-format"></div></dd> <!></dl> <!> <div class="sr-only" role="status" aria-live="polite"> </div> <!> <!> <!>`,1),xC=W(`<div class="d-scrim" role="presentation"><div class="d-sheet wide" role="dialog" aria-modal="true" aria-labelledby="np-title"><header class="d-head"><span class="d-badge green" aria-hidden="true"><!></span> <div><h2 id="np-title">New project</h2> <p>The stack's and the spec format's own tools make it; speccoder sets up its checks and commits once, as you.</p></div></header> <!> <!></div></div>`);function SC(e,t){Xe(t,!0);let n=[],r=Q.newProject??{},i=N(F(r.idea??``)),a=F(Q.welcome?.parent_shown??`~/Workspaces`),o=N(F(r.path??``)),s=N(!!r.path),c=N(null),l=N(`speckit`),u=N(!1),d=N(F([])),f=N(!0),p=N(null),m=N(null),h=N(!1),g=N(!1),_=N(!1),v=N(null),y=N(F([])),b=N(null),x=M(()=>JSON.stringify({where:H(o),idea:H(i),stack:H(c),format:H(l),ext:[H(u)?`bug`:``,...H(d)].filter(e=>e.trim()).join(`
`),preset:H(f)})),S=N(null);B(()=>{H(s)||P(o,H(i).trim()?`${a.replace(/\/$/,``)}/${ud(H(i))}`:``,!0)});let C=dd(async e=>{if(!e.where.trim()){P(p,null);return}P(h,!0);let t=JSON.stringify({where:e.where,idea:e.idea,stack:e.stack,format:e.format,ext:e.ext,preset:e.preset});try{let n=await ba(`/api/new/plan${Sa({path:e.where,idea:e.idea,stack:e.stack,format:e.format,extensions:e.ext,no_preset:e.preset?null:`true`})}`);P(p,n.plan??null,!0),P(m,n.choices??null,!0),P(b,t,!0)}catch(e){P(p,null),Q.toast({tone:`error`,text:`The plan could not be made`,detail:String(e.message??e)})}finally{P(h,!1)}},300);B(()=>{let e=[H(u)?`bug`:``,...H(d)].filter(e=>e.trim()).join(`
`);return P(g,!1),C({where:H(o),idea:H(i),stack:H(c),format:H(l),ext:e,preset:H(f)}),()=>C.cancel()}),B(()=>{ba(`/api/folders${Sa({under:H(o).includes(`/`)?H(o).slice(0,H(o).lastIndexOf(`/`)+1):a})}`).then(e=>P(y,e.folders??[],!0)).catch(()=>P(y,[],!0))});let w=M(()=>H(p)?sd(H(p)):{steps:[],hosts:[]}),T=M(()=>H(p)?.refusal??null),E=M(()=>H(b)!==H(x)),ee=M(()=>!!H(p)&&!H(T)&&!H(h)&&!H(E)&&!Q.job?.running&&!H(_)),D=M(()=>H(p)?ld(H(p),H(v)?.data?.results?.length?H(v).data.results:Q.steps,Q.stepRunning):[]),O=M(()=>H(D).find(e=>e.state===`failed`)??null),k=M(()=>H(v)?.status===`ok`?H(v).data??null:null),te=M(()=>!!Q.project&&!Q.welcome&&Q.project.root!==H(p)?.target);function ne(){H(_)||(Q.newProject=null)}async function re(){if(!H(ee)||!H(p)||!H(m))return;if(H(w).steps.length&&!H(g)){P(g,!0);return}P(g,!1),P(_,!0),P(v,null);let e=await Q.run(ja({kind:`new_project`,target:H(p).target,choices:H(m),plan_digest:H(p).digest},{group:`work`,label:`create ${H(p).name}`,why:`the plan on screen, as shown`,command:`speccoder new ${cd([H(p).target])} --yes`}));P(_,!1),P(v,e,!0),e?.code===`NEW-PLAN-CHANGED`&&e.data&&P(p,e.data.plan,!0)}async function ie(){let e=H(v)?.data;if(!e?.commit||!H(p))return;if(!H(S)){P(S,e.undo?.kind===`trash`?`Move ${H(p).name} to the Trash? It holds only what speccoder created.`:`Revert ${e.commit} "new project: ${H(p).name}"?`,!0);return}P(S,null);let t=await Q.run(ja({kind:`undo_new_project`,commit:e.commit},{group:`work`,label:`undo`,why:``,command:`speccoder new --undo ${cd([H(p).target])} --yes`}),void 0,H(p).target);t?.status===`ok`&&(Q.newProject=null,Q.toast({tone:`ok`,text:t.message}))}async function ae(e){await navigator.clipboard?.writeText(e).catch(()=>{}),Q.toast({tone:`ok`,text:`Copied — run it yourself`,detail:e})}function oe(){Q.newProject=null,Q.refresh().then(()=>Q.newFeature={text:H(i),through:`tasks`})}function se(e){e.key===`Escape`?(e.preventDefault(),H(g)?P(g,!1):ne()):e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),re())}var ce=xC(),le=I(ce),ue=I(le),de=I(ue);$(I(de),{name:`plus`,size:20,weight:2.4}),A(de),j(2),A(ue);var fe=z(ue,2),pe=e=>{var t=ZS(),n=I(t),r=R(n,!0),i=z(n,2),a=I(i),o=z(a),s=R(o,!0);A(i),A(t),V(()=>{K(r,H(S)),K(s,H(v)?.data?.undo?.kind===`trash`?`Move to the Trash`:`Revert`)}),U(`click`,a,()=>P(S,null)),U(`click`,o,ie),G(e,t)};q(fe,e=>{H(S)&&e(pe)});var me=z(fe,2),he=e=>{var t=tC(),n=I(t),r=z(I(n));A(n);var i=z(n,2),a=R(i),o=z(i,2),s=I(o),c=e=>{var t=QS();$(I(t),{name:`undo`,size:12}),j(),A(t),U(`click`,t,ie),G(e,t)};q(s,e=>{H(k).undo?.available&&e(c)});var l=z(s,2),u=e=>{var t=$S(),n=L(t),r=z(n,2),i=R(r);V(()=>K(i,`Open ${H(p)?.name??``}`)),U(`click`,n,()=>ae(`speccoder ui -C ${H(p)?.target}`)),U(`click`,r,()=>ae(`speccoder ui -C ${H(p)?.target}`)),G(e,t)},d=e=>{var t=eC();U(`click`,t,oe),G(e,t)};q(l,e=>{H(te)?e(u):e(d,-1)}),A(o),A(t),V(e=>{K(r,` ${H(p)?.name??``} is ready — ${e??``}`),K(a,`committed ${H(k).commit??``}${H(p)?.identity?` as ${H(p).identity.name}`:``} · ${H(k).init?.key?.set?`model key found`:`no model key: set it before writing the first feature`}`)},[()=>H(k).init?.ran?.length?H(k).init.ran.map(e=>`${e.name} ${e.status===`no_tests`?`no tests yet`:e.passed?`passes`:`fails`}`).join(` · `):`no checks yet: add a test runner before the first run`]),G(e,t)},ge=e=>{var t=bC(),r=L(t),a=z(I(r),2);lt(a),A(r);var m=z(r,2),b=z(I(m),2),x=I(b);Gi(x);var S=z(x,2);J(S,20,()=>H(y),e=>e,(e,t)=>{var n=nC(),r={};V(()=>{r!==(r=t)&&(n.value=(n.__value=r)??``)}),G(e,n)}),A(S),A(b);var C=z(b,4),E=I(C);J(E,21,()=>H(p)?.stacks??[],e=>e.id,(e,t)=>{var n=rC();let r;var i=I(n);Gi(i);var a=z(i);A(n),V(()=>{X(n,`title`,H(t).disabled??(H(t).version?`${H(t).label} ${H(t).version}`:H(t).label)),r=Y(n,1,``,null,r,{off:!!H(t).disabled}),Ki(i,H(t).id),qi(i,(H(c)??H(p)?.stack.id)===H(t).id),i.disabled=!!H(t).disabled||H(_)||H(p)?.mode===`existing_repository`,K(a,` ${H(t).label??``}`)}),U(`change`,i,()=>P(c,H(t).id,!0)),G(e,n)}),A(E);var k=z(E,2),te=e=>{var t=iC(),n=R(t);V(()=>K(n,`${H(p).mode===`existing_repository`?`found`:H(c)===null?`suggested`:`chosen`}: ${H(p).stack.reason??``}`)),G(e,t)};q(k,e=>{H(p)&&e(te)}),J(z(k,2),17,()=>(H(p)?.stacks??[]).filter(e=>e.disabled),e=>e.id,(e,t)=>{var n=iC(),r=R(n,!0);V(()=>K(r,H(t).disabled)),G(e,n)}),A(C);var oe=z(C,4),se=I(oe);J(se,21,()=>H(p)?.formats??[],e=>e.id,(e,t)=>{var r=aC();let i;var a=I(r);Gi(a);var o,s=z(a);A(r),V(()=>{X(r,`title`,H(t).disabled??``),i=Y(r,1,``,null,i,{off:!!H(t).disabled}),a.disabled=!!H(t).disabled||H(_),o!==(o=H(t).id)&&(a.value=(a.__value=o)??``),K(s,` ${H(t).label??``}${H(t).version?` ${H(t).version}`:``}`)}),ta(n,[],a,()=>(H(t).id,H(l)),e=>P(l,e)),G(e,r)}),A(se),A(oe);var ce=z(oe,2),le=e=>{var t=sC(),n=z(L(t),2),r=I(n),i=I(r),a=I(i);Gi(a),j(),A(i);var o=z(i,2),s=I(o);Gi(s),j(),A(o),A(r);var c=z(r,2);J(c,17,()=>H(d),si,(e,t,n)=>{var r=oC();Gi(r),X(r,`aria-label`,`Extension ${n+1}`),$i(r,()=>H(d)[n],e=>H(d)[n]=e),G(e,r)});var l=z(c,2);$(I(l),{name:`plus`,size:10}),j(),A(l),A(n),V(()=>{a.disabled=H(_),s.disabled=H(_),l.disabled=H(_)}),na(a,()=>H(f),e=>P(f,e)),na(s,()=>H(u),e=>P(u,e)),U(`click`,l,()=>P(d,[...H(d),``],!0)),G(e,t)};q(ce,e=>{H(l)===`speckit`&&e(le)}),A(m);var ue=z(m,2),de=e=>{var t=cC(),n=I(t),r=R(n,!0),i=z(n),a=R(z(i),!0);A(t),V(e=>{K(r,H(T).code),K(i,` ${H(T).message??``} `),K(a,e)},[()=>H(T).fix.replace(/^→ /,``)]),G(e,t)},fe=e=>{var t=pC(),n=I(t),r=R(z(I(n)),!0);j(),A(n);var i=z(n,2);J(i,23,()=>H(D),e=>e.step.id,(e,t,n)=>{let r=M(()=>od(H(t).state));var i=fC(),a=I(i),o=R(a,!0),s=z(a,2),c=R(s,!0),l=z(s,2),u=I(l),d=R(u,!0),f=z(u),m=e=>{var t=lC(),n=R(t);V(()=>K(n,`as ${H(p).identity.name??``}`)),G(e,t)};q(f,e=>{H(t).step.id===`commit`&&H(p).identity&&e(m)});var h=z(f,2),g=e=>{var t=uC(),n=R(t,!0);V(()=>K(n,H(r).word)),G(e,t)};q(h,e=>{(H(_)||H(v))&&e(g)});var y=z(h,2),b=e=>{var n=iC(),r=R(n,!0);V(()=>K(r,H(t).step.note)),G(e,n)};q(y,e=>{H(t).step.note&&e(b)});var x=z(y,2),S=e=>{var n=lC(),r=R(n);V(e=>K(r,`· ${e??``}s`),[()=>(H(t).result.duration_ms/1e3).toFixed(1)]),G(e,n)};q(x,e=>{H(t).result&&H(t).result.duration_ms&&e(S)}),A(l);var C=z(l,2),w=R(C,!0),T=z(C,2),E=e=>{var n=dC(),r=I(n),i=R(r),a=R(z(r,2),!0);A(n),V(e=>{K(i,`exit ${H(t).result.exit??`—`??``}: the last lines`),K(a,e)},[()=>H(t).result.output_tail.join(`
`)]),G(e,n)};q(T,e=>{H(t).state===`failed`&&H(t).result&&e(E)}),A(i),V((e,i)=>{K(o,H(n)+1),Y(s,1,`st-${H(t).state}`,`svelte-j5je89`),X(s,`aria-hidden`,!H(_)&&!H(v)),K(c,H(_)||H(v)?H(r).glyph:``),K(d,e),Y(C,1,xi(H(t).step.access===`network`?`badge-net`:`badge-local`)),K(w,i)},[()=>cd(H(t).step.argv),()=>H(t).step.access===`network`?`⇅ full network (expected: ${(H(t).step.hosts??[]).join(`, `)})`:`local`]),G(e,i)}),A(i);var a=R(z(i,2));A(t),V(()=>{K(r,H(p).target),K(a,`${H(p).sandbox.backend?`Sandboxed (${H(p).sandbox.backend}): writes only in this folder and speccoder's cache.`:`These commands run without an OS sandbox on this system.`} Then: write the first feature → review its tests → run.`)}),G(e,t)},pe=e=>{G(e,mC())};q(ue,e=>{H(T)?e(de):H(p)?e(fe,1):H(h)&&e(pe,2)});var me=z(ue,2),he=R(me,!0),ge=z(me,2),_e=e=>{var t=gC(),n=L(t),r=R(n),i=z(n,2),a=I(i),o=R(a,!0),s=z(a,2),c=z(s,2),l=e=>{var t=hC();U(`click`,t,ie),G(e,t)};q(c,e=>{H(v)?.data?.undo?.available&&e(l)});var u=z(c,2);A(i),V(()=>{K(r,`${H(O).step.id??``} failed`),K(o,H(v)?.message)}),U(`click`,s,()=>ae(cd(H(O).step.argv))),U(`click`,u,re),G(e,t)};q(ge,e=>{H(O)&&e(_e)});var ve=z(ge,2),ye=e=>{var t=_C(),n=I(t),r=R(n),i=z(n,2),a=I(i),o=z(a);A(i),A(t),V((e,t)=>K(r,`${H(w).steps.length??``} command${H(w).steps.length===1?` gets`:`s get`} full network access: ${e??``}. ${H(w).steps.length===1?`It is`:`They are`} expected to reach ${t??``}; the sandbox does not limit the hosts.`),[()=>H(w).steps.map(e=>cd(e.argv)).join(` · `),()=>H(w).hosts.join(`, `)]),U(`click`,a,()=>P(g,!1)),U(`click`,o,re),G(e,t)};q(ve,e=>{H(g)&&e(ye)});var be=z(ve,2),xe=e=>{var t=yC(),n=I(t),r=R(n,!0),a=z(n,2),o=e=>{var t=vC();$(z(I(t)),{name:`copy`,size:11}),A(t),U(`click`,t,()=>ae(`speccoder new ${cd([H(p).target])}${H(i).trim()?` --idea ${cd([H(i).trim()])}`:``} --stack ${H(c)??H(p).stack.id} --format ${H(l)} --yes`)),G(e,t)};q(a,e=>{H(p)&&e(o)});var s=z(a,2),u=z(s,2),d=I(u);j(),A(u),A(t),V(e=>{K(r,e),s.disabled=H(_),u.disabled=!H(ee),K(d,`${H(_)?`Creating…`:`Create`} `)},[()=>H(p)?`plan ${H(p).digest.replace(`sha256:`,``).slice(0,12)}`:``]),U(`click`,s,ne),U(`click`,u,re),G(e,t)};q(be,e=>{H(O)||e(xe)}),V(e=>{a.disabled=H(_),x.disabled=H(_),K(he,e)},[()=>H(D).filter(e=>e.state===`done`).map(e=>`${e.step.id} done`).join(`, `)]),$i(a,()=>H(i),e=>P(i,e)),U(`input`,x,()=>P(s,!0)),$i(x,()=>H(o),e=>P(o,e)),G(e,t)};q(me,e=>{H(k)?e(he):e(ge,-1)}),A(le),_i(le,(e,t)=>X_?.(e,t),()=>`textarea`),A(ce),U(`click`,ce,e=>e.target===e.currentTarget&&ne()),U(`keydown`,ce,se),G(e,ce),Ze()}Rr([`click`,`keydown`,`input`,`change`]);var CC=W(`<button class="card svelte-1nkx84k"><span class="t svelte-1nkx84k"><!> Try the Sample</span> <span class="d svelte-1nkx84k">A recorded run, replayed — no key, offline, 2 minutes</span></button>`),wC=W(`<div class="panel svelte-1nkx84k" role="group" aria-label="The sample"><p class="svelte-1nkx84k">The sample was opened before.</p> <div class="row svelte-1nkx84k"><button class="btn">Open it as it is</button><button class="btn danger">Start over — your changes to the sample are discarded</button></div></div>`),TC=W(`<option></option>`),EC=W(`<span id="w-err" class="err svelte-1nkx84k"> </span>`),DC=W(`<form class="panel svelte-1nkx84k"><label for="w-path">Folder</label> <input id="w-path" role="combobox" aria-controls="w-folders" aria-autocomplete="list" list="w-folders" spellcheck="false" class="svelte-1nkx84k"/> <datalist id="w-folders"></datalist> <button class="btn primary" type="submit">Open</button> <!> <span class="hint muted svelte-1nkx84k">In the window, File ▸ Open Project… (⌘O) opens the system's folder picker.</span></form>`),OC=W(`<button class="link svelte-1nkx84k"><strong> </strong> <span class="mono muted"> </span></button>`),kC=W(`<span><strong> </strong> <span class="mono muted"> </span></span>`),AC=W(`<button class="btn small ghost"> </button>`),jC=W(`<button class="btn small ghost">Forget</button>`),MC=W(`<li><!> <span class="when muted svelte-1nkx84k"> </span> <!> <!></li>`),NC=W(`<h2 class="section-title">Recent</h2> <ul class="recents grouped svelte-1nkx84k"></ul>`,1),PC=W(`<section class="welcome svelte-1nkx84k" aria-labelledby="w-title"><header class="svelte-1nkx84k"><svg viewBox="0 0 64 64" width="44" height="44" aria-hidden="true"><rect width="64" height="64" rx="15" fill="#0a7cff"></rect><path d="M19 33.5 28.5 43 46 22" fill="none" stroke="#fff" stroke-width="6.5" stroke-linecap="round" stroke-linejoin="round"></path></svg> <h1 id="w-title" class="svelte-1nkx84k">Welcome to speccoder</h1> <p class="muted svelte-1nkx84k">Specs in, verified code out — every task proven on evidence.</p></header> <div class="cards svelte-1nkx84k"><button class="card svelte-1nkx84k"><span class="t svelte-1nkx84k"><!> New Project <kbd class="svelte-1nkx84k">⌘N</kbd></span> <span class="d svelte-1nkx84k">From one line of intent to a project speccoder can judge</span></button> <button class="card svelte-1nkx84k"><span class="t svelte-1nkx84k"><!> Open Project… <kbd class="svelte-1nkx84k">⌘O</kbd></span> <span class="d svelte-1nkx84k">A folder with code or a spec project</span></button> <button class="card svelte-1nkx84k"><span class="t svelte-1nkx84k"><!> Clone from GitHub…</span> <span class="d svelte-1nkx84k">A repository of yours, then set up</span></button> <!></div> <!> <!> <!></section>`);function FC(e,t){Xe(t,!0);let n=M(()=>Q.welcome),r=N(!1),i=N(F(Q.welcome?.start_shown??``)),a=N(null),o=N(F([])),s=N(!1),c=N(!1),l=dd(async e=>{try{let t=await ba(`/api/folders${Sa({under:e})}`);P(o,t.folders??[],!0)}catch{P(o,[],!0)}},200);B(()=>{H(r)&&l(H(i))});async function u(e=H(i)){P(a,null),P(s,!0);try{let t=await xa(`/api/open`,{path:e});t.ok?location.reload():P(a,t.error??`Not a folder`,!0)}catch(e){P(a,String(e.message??e),!0)}finally{P(s,!1)}}async function d(e){P(s,!0);let t=await Q.run(ja({kind:`open_sample`,fresh:e},{group:`work`,label:`try the sample`,why:`a recorded run, replayed strictly`,command:e?`speccoder sample --fresh --yes`:`speccoder sample`}));P(s,!1),P(c,!1),t&&t.status!==`ok`&&Q.toast({tone:`error`,text:t.message,detail:t.code??void 0})}async function f(e){await xa(`/api/recent/forget`,{path:e.path}),Q.welcome=await ba(`/api/welcome`)}async function p(e){if(!H(m)||H(m)!==e.path){P(m,e.path,!0);return}P(m,null);let t=await Q.run(ja({kind:`undo_new_project`,commit:``},{group:`work`,label:`undo ${e.name}`,why:``,command:`speccoder new --undo ${e.path} --yes`}),void 0,e.path);t&&Q.toast({tone:t.status===`ok`?`ok`:`error`,text:t.message}),Q.welcome=await ba(`/api/welcome`)}let m=N(null),h=e=>{let t=Math.floor((Date.now()/1e3-e)/86400);return t<=0?`today`:t===1?`yesterday`:`${t} days ago`};function g(e){(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`o`&&(e.preventDefault(),P(r,!0))}var _=PC();Lr(`keydown`,on,g);var v=z(I(_),2),y=I(v),b=I(y);$(I(b),{name:`plus`,size:16}),j(2),A(b),j(2),A(y);var x=z(y,2),S=I(x);$(I(S),{name:`doc`,size:16}),j(2),A(S),j(2),A(x);var C=z(x,2),w=I(C);$(I(w),{name:`branch`,size:16}),j(),A(w),j(2),A(C);var T=z(C,2),E=e=>{var t=CC(),r=I(t);$(I(r),{name:`play`,size:16}),j(),A(r),j(2),A(t),V(()=>t.disabled=H(s)),U(`click`,t,()=>H(n)?.sample_copy?P(c,!0):d(!1)),G(e,t)};q(T,e=>{H(n)?.sample&&e(E)}),A(v);var ee=z(v,2),D=e=>{var t=wC(),n=z(I(t),2),r=I(n),i=z(r);A(n),A(t),U(`click`,r,()=>d(!1)),U(`click`,i,()=>d(!0)),G(e,t)};q(ee,e=>{H(c)&&e(D)});var O=z(ee,2),k=e=>{var t=DC(),n=z(I(t),2);Gi(n),ct(n,!0);var r=z(n,2);J(r,20,()=>H(o),e=>e,(e,t)=>{var n=TC(),r={};V(()=>{r!==(r=t)&&(n.value=(n.__value=r)??``)}),G(e,n)}),A(r);var c=z(r,2),l=z(c,2),d=e=>{var t=EC(),n=R(t,!0);V(()=>K(n,H(a))),G(e,t)};q(l,e=>{H(a)&&e(d)}),j(2),A(t),V(e=>{X(n,`aria-expanded`,H(o).length>0),X(n,`aria-invalid`,!!H(a)),X(n,`aria-describedby`,H(a)?`w-err`:void 0),c.disabled=e},[()=>H(s)||!H(i).trim()]),Lr(`submit`,t,e=>{e.preventDefault(),u()}),$i(n,()=>H(i),e=>P(i,e)),G(e,t)};q(O,e=>{H(r)&&e(k)});var te=z(O,2),ne=e=>{var t=NC(),r=z(L(t),2);J(r,21,()=>H(n).recents,e=>e.path,(e,t)=>{var n=MC();let r;var i=I(n),a=e=>{var n=OC(),r=I(n),i=R(r,!0),a=R(z(r,2),!0);A(n),V(()=>{K(i,H(t).name),K(a,H(t).shown)}),U(`click`,n,()=>u(H(t).path)),G(e,n)},o=e=>{var n=kC(),r=I(n),i=R(r,!0),a=R(z(r,2),!0);A(n),V(()=>{K(i,H(t).name),K(a,H(t).shown)}),G(e,n)};q(i,e=>{H(t).exists?e(a):e(o,-1)});var s=z(i,2),c=R(s,!0),l=z(s,2),d=e=>{var n=AC(),r=R(n,!0);V(()=>K(r,H(m)===H(t).path?H(t).undo.kind===`trash`?`Move to the Trash?`:`Revert speccoder's commit?`:`Undo`)),U(`click`,n,()=>p(H(t))),G(e,n)};q(l,e=>{H(t).undo?.available&&e(d)});var g=z(l,2),_=e=>{var n=jC();U(`click`,n,()=>f(H(t))),G(e,n)};q(g,e=>{H(t).exists||e(_)}),A(n),V(e=>{r=Y(n,1,`svelte-1nkx84k`,null,r,{gone:!H(t).exists}),K(c,e)},[()=>H(t).exists?h(H(t).opened_at):`Folder not found`]),G(e,n)}),A(r),G(e,t)};q(te,e=>{H(n)?.recents.length&&e(ne)}),A(_),V(()=>X(x,`aria-expanded`,H(r))),U(`click`,y,()=>Q.newProject={}),U(`click`,x,()=>P(r,!H(r))),U(`click`,C,()=>Q.clone=!0),G(e,_),Ze()}Rr([`click`]);var IC=W(`<p class="d-warn">Your repositories are listed once you sign in: <code class="svelte-143oct1">speccoder auth login</code>. A public repository can be named below anyway.</p>`),LC=W(`<span class="muted">private</span>`),RC=W(`<span class="muted"> </span>`),zC=W(`<li><button><strong> </strong><!><!></button></li>`),BC=W(`<label class="d-field"><span class="d-label">Your repositories</span> <input type="text" placeholder="Filter" aria-controls="cl-list" class="svelte-143oct1"/></label> <ul id="cl-list" class="list svelte-143oct1" aria-label="Repositories"></ul>`,1),VC=W(`<div class="d-warn attention" role="group" aria-label="Confirm"><span> </span> <div class="d-row"><button class="btn">Cancel</button><button class="btn primary"> </button></div></div>`),HC=W(`<p class="d-error" role="alert"> </p>`),UC=W(`<div class="d-row"><button class="btn">Cancel</button> <button class="btn primary">Clone</button></div>`),WC=W(`<div class="d-scrim" role="presentation"><div class="d-sheet" role="dialog" aria-modal="true" aria-labelledby="cl-title"><header class="d-head"><span class="d-badge violet" aria-hidden="true"><!></span> <div><h2 id="cl-title">Clone from GitHub</h2> <p> </p></div></header> <!> <dl class="d-grid"><dt><label for="cl-repo">Repository</label></dt> <dd><input id="cl-repo" type="text" placeholder="owner/repo" spellcheck="false" class="svelte-143oct1"/></dd> <dt><label for="cl-dest">Into</label></dt> <dd><input id="cl-dest" type="text" spellcheck="false" class="svelte-143oct1"/></dd></dl> <!> <!> <!></div></div>`);function GC(e,t){Xe(t,!0);let n=N(null),r=N(F([])),i=N(null),a=N(``),o=N(``),s=F(Q.welcome?.parent_shown??`~/Workspaces`),c=N(``),l=N(!1),u=N(!1),d=N(!1),f=N(null);B(()=>{ba(`/api/github/repos`).then(e=>{e.error&&P(i,e.error,!0),P(n,e.login??null,!0),P(r,e.repos??[],!0)})}),B(()=>{H(l)||P(c,H(o).includes(`/`)?`${s.replace(/\/$/,``)}/${H(o).split(`/`)[1]}`:``,!0)});let p=M(()=>H(r).filter(e=>!H(a)||e.slug.toLowerCase().includes(H(a).toLowerCase())).slice(0,50)),m=M(()=>/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(H(o).trim())&&H(c).trim().length>0);function h(){H(d)||(Q.clone=!1)}async function g(){if(!H(m)||H(d))return;if(!H(u)){P(u,!0);return}P(d,!0),P(f,null);let e=(H(c).startsWith(`~`),H(c)),t=await Q.run(ja({kind:`clone_repository`,repo:H(o).trim(),target:e},{group:`work`,label:`clone ${H(o)}`,why:`this reaches github.com`,command:`git clone https://github.com/${H(o)}.git ${H(c)}`}));P(d,!1),P(u,!1),t&&t.status!==`ok`&&P(f,t.message,!0)}function _(e){e.key===`Escape`&&(e.preventDefault(),H(u)?P(u,!1):h())}var v=WC(),y=I(v),b=I(y),x=I(b);$(I(x),{name:`branch`,size:20,weight:2.2}),A(x);var S=z(x,2),C=R(z(I(S),2));A(S),A(b);var w=z(b,2),T=e=>{G(e,IC())},E=e=>{var t=BC(),n=L(t),r=z(I(n),2);Gi(r),A(n);var i=z(n,2);J(i,21,()=>H(p),e=>e.slug,(e,t)=>{var n=zC(),r=I(n);let i;var a=I(r),s=R(a,!0),c=z(a),l=e=>{G(e,LC())};q(c,e=>{H(t).private&&e(l)});var u=z(c),d=e=>{var n=RC(),r=R(n);V(()=>K(r,`— ${H(t).description??``}`)),G(e,n)};q(u,e=>{H(t).description&&e(d)}),A(r),A(n),V(()=>{X(r,`aria-pressed`,H(o)===H(t).slug),i=Y(r,1,`svelte-143oct1`,null,i,{on:H(o)===H(t).slug}),K(s,H(t).slug)}),U(`click`,r,()=>P(o,H(t).slug,!0)),G(e,n)}),A(i),$i(r,()=>H(a),e=>P(a,e)),G(e,t)};q(w,e=>{H(i)?e(T):H(r).length&&e(E,1)});var ee=z(w,2),D=z(I(ee),2),O=I(D);Gi(O),A(D);var k=z(D,4),te=I(k);Gi(te),A(k),A(ee);var ne=z(ee,2),re=e=>{var t=VC(),n=I(t),r=R(n),i=z(n,2),a=I(i),s=z(a),l=R(s,!0);A(i),A(t),V(()=>{K(r,`Clone ${H(o)??``} into ${H(c)??``} — this reaches github.com`),s.disabled=H(d),K(l,H(d)?`Cloning…`:`Clone`)}),U(`click`,a,()=>P(u,!1)),U(`click`,s,g),G(e,t)};q(ne,e=>{H(u)&&e(re)});var ie=z(ne,2),ae=e=>{var t=HC(),n=R(t,!0);V(()=>K(n,H(f))),G(e,t)};q(ie,e=>{H(f)&&e(ae)});var oe=z(ie,2),se=e=>{var t=UC(),n=I(t),r=z(n,2);A(t),V(()=>r.disabled=!H(m)||H(d)),U(`click`,n,h),U(`click`,r,g),G(e,t)};q(oe,e=>{H(u)||e(se)}),A(y),_i(y,(e,t)=>X_?.(e,t),()=>`input`),A(v),V(()=>K(C,`${H(n)?`As ${H(n)} on github.com.`:`A repository of yours.`} Cloned with your git, then speccoder's setup takes over.`)),U(`click`,v,e=>e.target===e.currentTarget&&h()),U(`keydown`,v,_),$i(O,()=>H(o),e=>P(o,e)),U(`input`,te,()=>P(l,!0)),$i(te,()=>H(c),e=>P(c,e)),G(e,v),Ze()}Rr([`click`,`keydown`,`input`]);var KC=W(`<div class="ring svelte-1ww9eg6" aria-hidden="true"></div>`),qC=W(`<!> <div class="caption glass svelte-1ww9eg6" role="dialog"><p class="kicker svelte-1ww9eg6"> </p> <h3 class="svelte-1ww9eg6"> </h3> <p class="text svelte-1ww9eg6" aria-live="polite"><!></p> <div class="ctl svelte-1ww9eg6"><button class="btn small ghost" aria-label="Previous stop" title="Previous (←)">←</button> <button class="btn small"> </button> <button class="btn small primary" aria-label="Next stop" title="Next (→)"> </button> <button class="btn small ghost end svelte-1ww9eg6" title="End the tour (Esc)">End tour</button></div></div>`,1);function JC(e,t){Xe(t,!0);let n=N(null);function r(){let e=document.querySelector(t.anchor);P(n,e?e.getBoundingClientRect():null,!0)}B(()=>{t.anchor,document.querySelector(t.anchor)?.scrollIntoView?.({block:`nearest`,inline:`nearest`}),r();let e=setInterval(r,250);return window.addEventListener(`resize`,r),window.addEventListener(`scroll`,r,!0),()=>{clearInterval(e),window.removeEventListener(`resize`,r),window.removeEventListener(`scroll`,r,!0)}});let i=()=>typeof window>`u`?800:window.innerHeight,a=M(()=>!!H(n)&&H(n).height>i()*.5),o=M(()=>!H(n)||H(n).bottom+190<i());var s=qC(),c=L(s),l=e=>{var t=KC();let r;V(()=>r=Oi(t,``,r,{left:`${H(n).left-6}px`,top:`${H(n).top-6}px`,width:`${H(n).width+12}px`,height:`${H(n).height+12}px`})),G(e,t)};q(c,e=>{H(n)&&e(l)});var u=z(c,2);let d;var f=I(u),p=R(f),m=z(f,2),h=R(m,!0),g=z(m,2);so(I(g),{get text(){return t.text}}),A(g);var _=z(g,2),v=I(_),y=z(v,2),b=R(y,!0),x=z(y,2),S=R(x,!0),C=z(x,2);A(_),A(u),V((e,r)=>{X(u,`aria-label`,`Tour, stop ${t.n??``} of ${t.of??``}`),d=Oi(u,``,d,{left:e,top:H(n)&&!H(a)&&H(o)?`${H(n).bottom+6+12}px`:void 0,bottom:r}),K(p,`Tour · ${t.n??``} of ${t.of??``}`),K(h,t.title),v.disabled=t.n<=1,X(y,`aria-label`,t.playing?`Pause the tour`:`Play the tour`),X(y,`title`,`${t.playing?`Pause`:`Play`} (Space)`),K(b,t.playing?`Pause`:`Play`),K(S,t.n<t.of?`Next →`:`Finish`)},[()=>H(n)?`${Math.max(12,Math.min(H(n).left,(typeof window>`u`?1200:window.innerWidth)-412))}px`:void 0,()=>H(n)&&!H(a)&&!H(o)?`${i()-H(n).top+6+12}px`:void 0]),U(`click`,v,function(...e){t.onprev?.apply(this,e)}),U(`click`,y,function(...e){t.ontoggle?.apply(this,e)}),U(`click`,x,function(...e){t.onnext?.apply(this,e)}),U(`click`,C,function(...e){t.onend?.apply(this,e)}),G(e,s),Ze()}Rr([`click`]);var YC=W(`<span><strong>✗ This build cannot reproduce the recorded run — please report it.</strong> </span>`),XC=W(`<button class="btn small">Pause <kbd>Space</kbd></button>`),ZC=W(`<button class="btn small primary"> <kbd>Space</kbd></button>`),QC=W(`<span>▶ A recorded run of <strong> </strong>, replayed strictly — no model was called.<!></span> <span class="ctl svelte-1us31q9"><!> <button class="btn small">Skip to the end <kbd>End</kbd></button></span>`,1),$C=W(`<div role="status"><!> <button class="btn small ghost">Close the sample</button></div>`),ew=W(`<span class="d-note"> </span>`),tw=W(`<aside aria-label="The tour ended"><p class="svelte-1us31q9"><strong>That was speccoder.</strong> Every tick above is a commit with its evidence.</p> <div class="row svelte-1us31q9"><button class="btn primary">Start your own</button> <button class="btn">Run the checks yourself</button> <!> <button class="btn ghost">Close the sample</button></div></aside>`),nw=W(`<!> <!> <!>`,1);function rw(e,t){Xe(t,!0);let n=M(()=>t.sample.runs.find(e=>e.result!==`reproduced`)??null),r=M(()=>t.sample.path.split(`/`).filter(Boolean).at(-1)??`the sample`),i=M(()=>(Q.report?.data?.tasks??[]).find(e=>e.state===`verified`)?.id??null),a=M(()=>[{view:`board`,task:null,anchor:`[data-tour="board"]`,title:`One feature, every task`,text:`The sample's spec became these tasks. A task is ticked only on evidence: ✓ verified means its tests went from red to green and nothing else broke.`},...H(i)?[{view:`board`,task:H(i),anchor:`[data-tour-row="Acceptance"]`,title:`Red first, then green`,text:`speccoder wrote ${H(i)}'s tests from the spec before any code existed. They failed; the model's change made them pass. That is the tick.`},{view:`board`,task:H(i),anchor:`[data-tour-row="Attestation"]`,title:`Recorded, and checkable by anyone`,text:"Every row comes from the attestation the tick left in git, signed when a key is configured. `speccoder attest verify`, or a pull request's evidence check, re-checks it without trusting the agent."},{view:`board`,task:H(i),tab:`tour`,anchor:`ol.tour`,title:`One task's whole story`,text:`Requirement, frozen tests, red, the change, green, strength: the evidence as six steps, each saying where it comes from.`}]:[],{view:`report`,task:null,anchor:`[data-tour="report"]`,title:`The report`,text:"Every task and the evidence behind its tick — the same as `speccoder report` in a terminal."}]),o=N(-1),s=N(!1),c=N(!1),l=N(!1),u=typeof matchMedia==`function`&&matchMedia(`(prefers-reduced-motion: reduce)`).matches,d=null;function f(){d&&clearTimeout(d),d=null}async function p(e){let t=H(a)[e];if(t){P(o,e,!0),P(l,!1),Q.view=t.view,await Q.selectTask(t.task);for(let e=0;t.tab&&e<40;e++){let e=document.querySelector(`[data-tour="tab-tour"]`);if(e&&!e.disabled){e.click();break}await new Promise(e=>setTimeout(e,50))}for(let e=0;e<60&&!document.querySelector(t.anchor);e++)await new Promise(e=>setTimeout(e,50))}}function m(){f(),P(s,!1),P(o,-1),P(l,!0),Q.selectTask(null),Q.view=`board`}function h(){H(o)>=H(a).length-1?m():p(H(o)+1)}function g(){H(o)>0&&p(H(o)-1)}function _(){f(),H(s)&&(d=setTimeout(async()=>{if(H(o)>=H(a).length-1)return m();await p(H(o)+1),_()},7e3))}async function v(){!H(n)&&H(a).length&&(P(s,!0),H(o)<0&&await p(0),_())}function y(){P(s,!1),f()}function b(){y(),P(o,-1)}function x(){y(),m()}B(()=>()=>f());function S(e){let t=e.target;if(typeof t?.closest==`function`&&t.closest(`input, textarea, select`)||H(c))return;let n=H(o)>=0;e.key===` `&&!t?.closest?.(`button`)?(e.preventDefault(),H(s)?y():v()):e.key===`ArrowRight`&&n?(e.preventDefault(),y(),h()):e.key===`ArrowLeft`&&n?(e.preventDefault(),y(),g()):e.key===`Escape`&&n?(e.preventDefault(),b()):e.key===`End`&&(e.preventDefault(),x())}function C(e){let t=e.target;H(s)&&!t?.closest?.(`.caption`)&&y()}var w=nw();Lr(`keydown`,on,S),Lr(`pointerdown`,on,C);var T=L(w),E=e=>{var i=$C();let l;var u=I(i),d=e=>{var t=YC(),r=z(I(t));A(t),V(()=>K(r,` ${H(n).finding??``??``} The board shows the sample's committed state only.`)),G(e,t)},f=e=>{var n=QC(),i=L(n),c=z(I(i)),l=R(c,!0),u=z(c,2),d=e=>{var n=Jr();V(()=>K(n,` Recorded ${t.sample.recorded.recorded_at} with ${t.sample.recorded.model}.`)),G(e,n)};q(u,e=>{t.sample.recorded&&e(d)}),A(i);var f=z(i,2),p=I(f),m=e=>{var t=XC();U(`click`,t,y),G(e,t)},h=e=>{var t=ZC(),n=I(t);j(),A(t),V(()=>{t.disabled=!H(a).length,K(n,`${H(o)>=0?`Resume`:`Take the tour`} ▶ `)}),U(`click`,t,v),G(e,t)};q(p,e=>{H(s)?e(m):e(h,-1)});var g=z(p,2);A(f),V(()=>{K(l,H(r)),g.disabled=!H(a).length}),U(`click`,g,x),G(e,n)};q(u,e=>{H(n)?e(d):e(f,-1)});var p=z(u,2);A(i),V(()=>l=Y(i,1,`banner svelte-1us31q9`,null,l,{danger:!!H(n)})),U(`click`,p,()=>P(c,!0)),G(e,i)};q(T,e=>{H(c)||e(E)});var ee=z(T,2),D=e=>{let t=M(()=>H(a)[H(o)]);{let n=M(()=>H(o)+1);JC(e,{get anchor(){return H(t).anchor},get title(){return H(t).title},get text(){return H(t).text},get n(){return H(n)},get of(){return H(a).length},get playing(){return H(s)},onprev:()=>{y(),g()},onnext:()=>{y(),h()},ontoggle:()=>H(s)?y():v(),onend:b})}};q(ee,e=>{H(o)>=0&&!H(c)&&H(a)[H(o)]&&e(D)});var O=z(ee,2),k=e=>{var n=tw();let r;var i=z(I(n),2),a=I(i),o=z(a,2),s=z(o,2),l=e=>{var n=ew(),r=R(n,!0);V(()=>K(r,t.sample.checks_missing)),G(e,n)};q(s,e=>{t.sample.checks_missing&&e(l)});var d=z(s,2);A(i),A(n),V(()=>{r=Y(n,1,`end glass svelte-1us31q9`,null,r,{still:u}),o.disabled=!!t.sample.checks_missing,X(o,`title`,t.sample.checks_missing??`the sample's own checks, here, offline`)}),U(`click`,a,()=>Q.newProject={}),U(`click`,o,()=>Q.perform(ja({kind:`sample_checks`},{group:`work`,label:`run the sample's checks`,why:`offline, in the sample's copy`,command:`speccoder verify -C ${t.sample.path}`}))),U(`click`,d,()=>P(c,!0)),G(e,n)};q(O,e=>{H(l)&&!H(c)&&!H(n)&&e(k)}),G(e,w),Ze()}Rr([`click`]);var iw=da(()=>Q),aw=W(`<tr><td class="muted svelte-13u8u1s"> </td><td class="svelte-13u8u1s"><kbd> </kbd></td><td class="svelte-13u8u1s"> </td></tr>`),ow=W(`<div class="d-scrim" role="presentation"><div class="d-sheet" role="dialog" aria-modal="true" aria-labelledby="keys-title"><header class="d-head"><div><h2 id="keys-title">Keys</h2><p>Every key has a button or a menu item too.</p></div></header> <table class="svelte-13u8u1s"><thead><tr><th scope="col" class="svelte-13u8u1s">Where</th><th scope="col" class="svelte-13u8u1s">Key</th><th scope="col" class="svelte-13u8u1s">Does</th></tr></thead><tbody></tbody></table> <div class="d-row"><button class="btn primary">Done</button></div></div></div>`);function sw(e,t){Xe(t,!1);let n=[[`Anywhere`,`N`,`the composer: a change, a bug, a feature (⌘N in the window)`],[`Anywhere`,`⌘K`,`every action`],[`Anywhere`,`q · ⇧B`,`quick change · report a bug`],[`Anywhere`,`1–6 · ,`,`the views · settings`],[`Anywhere`,`n`,`the next step`],[`Composer`,`⏎ · ↑ ↓`,`take the selected rung · move`],[`Composer`,`⌥⏎ ⇧⏎ ⌃⏎ ⌘⏎`,`quick change · feature · bug fix · ask`],[`Sheets`,`⌘⏎ · Esc`,`the primary button (Start, Create, Approve and plan) · cancel`],[`Welcome`,`N · ⌘O`,`New Project · Open Project`],[`Sample`,`Space · → · End`,`play or pause · one step · skip to the end`],[`Window`,`⌘⇧N · ⌘⇧B · ⌘.`,`quick change · bug · stop`]];function r(e){(e.key===`Escape`||e.key===`?`)&&(e.preventDefault(),iw(iw().keys=!1))}la();var i=ow(),a=I(i),o=z(I(a),2),s=z(I(o));J(s,5,()=>n,([e,t,n])=>e+t,(e,t)=>{var n=M(()=>g(H(t),3));let r=()=>H(n)[0],i=()=>H(n)[1],a=()=>H(n)[2];var o=aw(),s=I(o),c=R(s,!0),l=z(s),u=R(I(l),!0);A(l);var d=R(z(l),!0);A(o),V(()=>{K(c,r()),K(u,i()),K(d,a())}),G(e,o)}),A(s),A(o);var c=R(z(o,2));A(a),_i(a,(e,t)=>X_?.(e,t),()=>`button`),A(i),U(`click`,i,e=>e.target===e.currentTarget&&iw(iw().keys=!1)),U(`keydown`,i,r),U(`click`,c,()=>iw(iw().keys=!1)),G(e,i),Ze()}Rr([`click`,`keydown`]);var cw=W(`<h2 id="p-title" class="svelte-9zqzk5">This one is for your shell</h2> <p id="p-what" class="svelte-9zqzk5"> </p>`,1),lw=W(`<h2 id="p-title" class="svelte-9zqzk5">Run it in a terminal</h2> <p id="p-what" class="svelte-9zqzk5"> </p>`,1),uw=W(`<p id="p-what" class="svelte-9zqzk5">One of speccoder's own commands: it runs here as from your terminal, its run shown as any run is; Cancel asks it to stop.</p>`),dw=W(`<strong> </strong>`),fw=W(`<strong>It runs unsandboxed: no OS sandbox here.</strong>`),pw=W(`<p id="p-what" class="svelte-9zqzk5">speccoder printed it as a fix. It runs as you, in the project folder, with your environment (not your model keys). <!> Cancel stops it and everything it started.</p>`),mw=W(`<h2 id="p-title" class="svelte-9zqzk5"> </h2> <!>`,1),hw=W(`<a target="_blank" rel="noreferrer" class="svelte-9zqzk5"> </a>`),gw=W(`<button class="code svelte-9zqzk5" title="Copy the code"> </button>`),_w=W(`<span><!>
</span>`),vw=W(`<p><!> </p>`),yw=W(`<pre class="out mono svelte-9zqzk5" aria-live="polite" aria-label="Output"></pre> <!>`,1),bw=W(`<button class="btn"><!> Cancel</button>`),xw=W(`<button class="btn ghost"><!> Copy What Went Wrong</button>`),Sw=W(`<button class="btn"><!> Settings › Model</button>`),Cw=W(`<!> <button class="btn primary"><!> Copy</button>`,1),ww=W(`<button class="btn primary"><!> Open Terminal Here</button>`),Tw=W(`<button class="btn"><!> Copy</button> <!>`,1),Ew=W(`<button class="btn"><!> Copy</button> <button class="btn primary"><!> </button>`,1),Dw=W(`<!> <button class="btn"> </button> <!>`,1),Ow=W(`<div class="scrim svelte-9zqzk5" role="presentation"><div class="sheet glass svelte-9zqzk5" role="dialog" aria-modal="true" aria-labelledby="p-title" aria-describedby="p-what"><header class="svelte-9zqzk5"><span class="badge svelte-9zqzk5" aria-hidden="true"><!></span> <div><!></div></header> <dl class="grouped svelte-9zqzk5"><div class="svelte-9zqzk5"><dt class="svelte-9zqzk5">Command</dt><dd class="mono svelte-9zqzk5"> </dd></div> <div class="svelte-9zqzk5"><dt class="svelte-9zqzk5">Folder</dt><dd class="mono svelte-9zqzk5"> </dd></div></dl> <!> <div class="row svelte-9zqzk5"><!></div></div></div>`);function kw(e,t){Xe(t,!0);let n=M(()=>Q.personStep),r=M(()=>H(n).how.how===`command`?za(H(n).how.argvs):H(n).command),i=M(()=>H(n).how.how===`command`&&Ba(H(n).how.argvs)),a=M(()=>H(n).how.how===`command`?H(n).how.outside??null:null),o=M(()=>Q.fixRun),s=M(()=>!!H(o)&&!H(o).result),c=M(()=>H(o)?.result??null),l=N(void 0);B(()=>{H(o)?.lines.length,H(l)&&(H(l).scrollTop=H(l).scrollHeight)});function u(){H(s)||(Q.personStep=null,Q.fixRun=null)}function d(e){e.key===`Escape`&&u()}let f=()=>Q.copy(H(r),`Copied the command`,H(r));function p(){Q.personStep=null,Q.view=`settings`}var m=Ow();Lr(`keydown`,on,d);var h=I(m),g=I(h),_=I(g);$(I(_),{name:`terminal`,size:20,weight:2.2}),A(_);var v=z(_,2),y=I(v),b=e=>{var t=cw(),r=R(z(L(t),2));V(()=>K(r,`${H(n).how.why??``}.`)),G(e,t)},x=e=>{var t=lw(),n=R(z(L(t),2));V(()=>K(n,`It asks you questions as it runs (a sign-in), so it needs a terminal of your own${Q.project?.window?``:`: copy it and run it at the project`}.`)),G(e,t)},S=e=>{var t=mw(),n=L(t),r=R(n,!0),o=z(n,2),l=e=>{G(e,uw())},u=e=>{var t=pw(),n=z(I(t)),r=e=>{var t=dw(),n=R(t);V(()=>K(n,`It runs unsandboxed: it ${H(a)??``}.`)),G(e,t)},i=e=>{G(e,fw())},o=e=>{G(e,Jr(`It runs in the sandbox, with network: it writes only to the project and the package caches.`))};q(n,e=>{H(a)?e(r):Q.project?.sandbox?e(o,-1):e(i,1)}),j(),A(t),G(e,t)};q(o,e=>{H(i)?e(l):e(u,-1)}),V(()=>K(r,H(s)?`Running…`:H(c)?H(c).status===`ok`?`Done`:`It did not succeed`:`Run this command?`)),G(e,t)};q(y,e=>{H(n).how.how===`shell`?e(b):H(n).how.interactive?e(x,1):e(S,-1)}),A(v),A(g);var C=z(g,2),w=I(C),T=R(z(I(w)),!0);A(w);var E=z(w,2),ee=R(z(I(E)),!0);A(E),A(C);var D=z(C,2),O=e=>{var t=yw(),n=L(t);J(n,21,()=>H(o).lines,si,(e,t)=>{var n=_w();let r;J(I(n),17,()=>Ha(H(t).line),si,(e,t)=>{var n=Yr(),r=L(n),i=e=>{var n=hw(),r=R(n,!0);V(()=>{X(n,`href`,H(t).text),K(r,H(t).text)}),U(`click`,n,()=>Q.copy(H(t).text,`Copied the link`,H(t).text)),G(e,n)},a=e=>{var n=gw(),r=R(n,!0);V(()=>K(r,H(t).text)),U(`click`,n,()=>Q.copy(H(t).text,`Copied the code`,H(t).text)),G(e,n)},o=e=>{var n=Jr();V(()=>K(n,H(t).text)),G(e,n)};q(r,e=>{H(t).kind===`url`?e(i):H(t).kind===`code`?e(a,1):e(o,-1)}),G(e,n)}),j(),A(n),V(()=>r=Y(n,1,`svelte-9zqzk5`,null,r,{err:H(t).stream===`stderr`})),G(e,n)},e=>{j();var t=Jr();V(()=>K(t,H(s)?`…`:`(no output)`)),G(e,t)}),A(n),sa(n,e=>P(l,e),()=>H(l));var r=z(n,2),i=e=>{var t=vw();let n;var r=I(t);{let e=M(()=>H(c).status===`ok`?`check`:`exclaim`);$(r,{get name(){return H(e)},size:13})}var i=z(r);A(t),V(()=>{n=Y(t,1,`end svelte-9zqzk5`,null,n,{bad:H(c).status!==`ok`}),K(i,` ${H(c).message??``}`)}),G(e,t)};q(r,e=>{H(c)&&e(i)}),G(e,t)};q(D,e=>{H(o)&&e(O)});var k=z(D,2),te=I(k),ne=e=>{var t=bw();$(I(t),{name:`stop`,size:11}),j(),A(t),U(`click`,t,()=>Q.stop()),G(e,t)},re=e=>{var t=Dw(),r=L(t),i=e=>{var t=xw();$(I(t),{name:`copy`,size:11}),j(),A(t),U(`click`,t,()=>H(c)&&Q.copyError(H(c))),G(e,t)};q(r,e=>{H(c)&&H(c).status!==`ok`&&e(i)});var a=z(r,2),o=R(a,!0),s=z(a,2),l=e=>{var t=Cw(),r=L(t),i=e=>{var t=Sw();$(I(t),{name:`gear`,size:11}),j(),A(t),U(`click`,t,p),G(e,t)};q(r,e=>{H(n).how.setting===`model`&&e(i)});var a=z(r,2);ct(a,!0),$(I(a),{name:`copy`,size:11}),j(),A(a),U(`click`,a,f),G(e,t)},d=e=>{var t=Tw(),n=L(t);ct(n,!0),$(I(n),{name:`copy`,size:11}),j(),A(n);var r=z(n,2),i=e=>{var t=ww();$(I(t),{name:`terminal`,size:11}),j(),A(t),U(`click`,t,()=>Q.openTerminal()),G(e,t)};q(r,e=>{Q.project?.window&&e(i)}),U(`click`,n,f),G(e,t)},m=e=>{var t=Ew(),n=L(t);ct(n,!0),$(I(n),{name:`copy`,size:11}),j(),A(n);var r=z(n,2),i=I(r);$(i,{name:`play`,size:11});var a=z(i);A(r),V(()=>{r.disabled=!!Q.job?.running,K(a,` ${H(c)?`Run Again`:`Run`}`)}),U(`click`,n,f),U(`click`,r,()=>Q.runFix()),G(e,t)};q(s,e=>{H(n).how.how===`shell`?e(l):H(n).how.interactive?e(d,1):e(m,-1)}),V(()=>K(o,H(c)?`Close`:`Cancel`)),U(`click`,a,u),G(e,t)};q(te,e=>{H(s)?e(ne):e(re,-1)}),A(k),A(h),A(m),V(()=>{K(T,H(r)),K(ee,Q.project?.root??``)}),U(`click`,m,e=>e.target===e.currentTarget&&u()),G(e,m),Ze()}Rr([`click`]);var Aw=W(`<button class="btn icon small ghost" title="Copy what went wrong"><!></button>`),jw=W(`<li><span class="m svelte-1i6d7xa" aria-hidden="true"><!></span> <span class="what svelte-1i6d7xa"><strong> <span class="sr-only"> </span></strong> <span class="d svelte-1i6d7xa"> </span> <!></span> <!></li>`),Mw=W(`<li class="svelte-1i6d7xa"><span class="d svelte-1i6d7xa">Checking…</span></li>`),Nw=W(`<header class="svelte-1i6d7xa"><h2 id="h-title" class="svelte-1i6d7xa">Check the Setup</h2> <p class="muted svelte-1i6d7xa">git, the project, the configuration, the model key, the sandbox — what a run depends on.</p></header> <ul class="grouped checks svelte-1i6d7xa"></ul> <p class="cli mono svelte-1i6d7xa">$ speccoder doctor</p>`,1),Pw=W(`<p class="svelte-1i6d7xa"> </p>`),Fw=W(`<p class="muted svelte-1i6d7xa"> </p>`),Iw=W(`<p class="svelte-1i6d7xa"> </p> <p class="cli mono svelte-1i6d7xa"> </p>`,1),Lw=W(`<header class="svelte-1i6d7xa"><h2 id="h-title" class="mono svelte-1i6d7xa"> </h2> <!></header> <!>`,1),Rw=W(`<div class="scrim svelte-1i6d7xa" role="presentation"><div class="sheet glass svelte-1i6d7xa" role="dialog" aria-modal="true" aria-labelledby="h-title"><!> <div class="row svelte-1i6d7xa"><button class="btn ghost" title="speccoder doctor --bug-report: the setup in Markdown, secrets taken out"><!> Copy Bug Report</button> <button class="btn primary">Done</button></div></div></div>`);function zw(e,t){Xe(t,!0);let n=M(()=>Q.help),r=N(null);B(()=>{H(n).kind===`explain`&&ba(`/api/explain${Sa({code:H(n).code})}`).then(e=>P(r,e,!0))});let i=M(()=>H(r)?.data?.codes?.[0]??null),a={pass:`check`,info:`info`,warn:`exclaim`,fail:`xoctagon`};function o(e){e.key===`Escape`&&(Q.help=null)}var s=Rw();Lr(`keydown`,on,o);var c=I(s),l=I(c),u=e=>{var t=Nw(),n=z(L(t),2);J(n,21,()=>Q.doctor,e=>e.check+(e.code??``),(e,t)=>{var n=jw(),r=I(n),i=I(r);{let e=M(()=>a[H(t).level]??`info`);$(i,{get name(){return H(e)},size:13,weight:2.2})}A(r);var o=z(r,2),s=I(o),c=I(s,!0),l=R(z(c));A(s);var u=z(s,2),d=R(u,!0),f=z(u,2),p=e=>{fo(e,{get steps(){return H(t).fix_steps},limit:2})};q(f,e=>{H(t).level!==`pass`&&H(t).fix_steps?.length&&e(p)}),A(o);var m=z(o,2),h=e=>{var n=Aw();$(I(n),{name:`copy`,size:12}),A(n),V(()=>X(n,`aria-label`,`Copy what went wrong: ${H(t).check??``}`)),U(`click`,n,()=>Q.copyError({message:H(t).detail,code:H(t).code,fix:H(t).fix})),G(e,n)};q(m,e=>{(H(t).level===`warn`||H(t).level===`fail`)&&e(h)}),A(n),V(()=>{Y(n,1,xi(H(t).level),`svelte-1i6d7xa`),K(c,H(t).check),K(l,`: ${H(t).level??``}`),K(d,H(t).detail)}),G(e,n)},e=>{G(e,Mw())}),A(n),j(2),G(e,t)},d=e=>{var t=Lw(),a=L(t),o=I(a),s=R(o,!0),c=z(o,2),l=e=>{var t=Pw(),n=R(t,!0);V(()=>K(n,H(i).title)),G(e,t)},u=e=>{var t=Fw(),n=R(t,!0);V(()=>K(n,H(r).message)),G(e,t)};q(c,e=>{H(i)?e(l):H(r)&&e(u,1)}),A(a);var d=z(a,2),f=e=>{var t=Iw(),n=L(t),r=R(n,!0),a=R(z(n,2));V(()=>{K(r,H(i).explain),K(a,`$ speccoder explain ${H(i).code??``}`)}),G(e,t)};q(d,e=>{H(i)&&e(f)}),V(()=>K(s,H(n).code)),G(e,t)};q(l,e=>{H(n).kind===`doctor`?e(u):e(d,-1)});var f=z(l,2),p=I(f);$(I(p),{name:`copy`,size:11}),j(),A(p);var m=z(p,2);ct(m,!0),A(f),A(c),A(s),U(`click`,s,e=>e.target===e.currentTarget&&(Q.help=null)),U(`click`,p,()=>Q.copyBugReport()),U(`click`,m,()=>Q.help=null),G(e,s),Ze()}Rr([`click`]);var Bw=/\[(?:r|c)\d+(?::\d+(?:-\d+)?)?\]/g;function Vw(e,t,n=!1){let r=t.filter(e=>e.state===`read`),i=[],a=e.split(/(`[^`]+`|\*\*[^*]+\*\*)/);for(let e of a)if(e){if(e.startsWith("`")&&e.endsWith("`")&&e.length>1)i.push({t:`code`,text:e.slice(1,-1)});else if(e.startsWith(`**`)&&e.endsWith(`**`)&&e.length>3)i.push({t:`bold`,text:e.slice(2,-2)});else{let a=0;for(let o of e.matchAll(Bw)){o.index>a&&i.push({t:`text`,text:e.slice(a,o.index)});let s=t.find(e=>e.marker===o[0]);if(s){let e=r.findIndex(e=>e.marker===s.marker);i.push({t:`cite`,n:e>=0?e+1:null,citation:s})}else i.push(n?{t:`mark`}:{t:`text`,text:o[0]});a=o.index+o[0].length}a<e.length&&i.push({t:`text`,text:e.slice(a)})}}return i}function Hw(e,t,n=!1){let r=[],i=(n?e.replace(/\[(?:[rc]\d*(?::\d*(?:-\d*)?)?)?$/,``):e).replace(/\r/g,``).split(`
`),a=[],o=()=>{a.length&&r.push({kind:`p`,parts:Vw(a.join(` `),t,n)}),a=[]};for(let e=0;e<i.length;e++){let s=i[e]??``;if(s.trimStart().startsWith("```")){o();let t=[];for(e++;e<i.length&&!(i[e]??``).trimStart().startsWith("```");e++)t.push(i[e]??``);r.push({kind:`pre`,text:t.join(`
`)});continue}let c=s.match(/^\s*[-*•]\s+(.*)$/),l=s.match(/^\s*\d+[.)]\s+(.*)$/),u=s.match(/^#{1,4}\s+(.*)$/);c||l||u?(o(),r.push({kind:c?`li`:l?`ol`:`h`,parts:Vw((c??l??u)?.[1]??``,t,n)})):s.trim()?a.push(s.trim()):o()}return o(),r}var Uw=W(`<code class="svelte-1wg6krf"> </code>`),Ww=W(`<strong class="svelte-1wg6krf"> </strong>`),Gw=W(`<span class="cite live svelte-1wg6krf" aria-hidden="true"></span>`),Kw=W(`<button class="cite svelte-1wg6krf"> </button>`),qw=W(`<span class="cite unread svelte-1wg6krf" title="Not among what was read this turn" aria-label="A citation to something not read this turn">?</span>`),Jw=W(`<pre class="svelte-1wg6krf"> </pre>`),Yw=W(`<h4 class="svelte-1wg6krf"><!></h4>`),Xw=W(`<div><!></div>`),Zw=W(`<p class="svelte-1wg6krf"><!></p>`),Qw=W(`<button class="conv svelte-1wg6krf"><span class="ct svelte-1wg6krf"> </span> <span class="cm svelte-1wg6krf"> </span></button>`),$w=W(`<p class="quiet svelte-1wg6krf">No conversations yet. What you ask is kept here, for this project.</p>`),eT=W(`<div class="list svelte-1wg6krf"><h3 class="svelte-1wg6krf">Conversations</h3> <!></div>`),tT=W(`<button class="svelte-1wg6krf"> </button>`),nT=W(`<div class="sugg svelte-1wg6krf"></div>`),rT=W(`<button class="conv svelte-1wg6krf"><!> <span class="ct svelte-1wg6krf"> </span> <span class="cm svelte-1wg6krf"> </span></button>`),iT=W(`<div class="recent svelte-1wg6krf" aria-label="Pick up where you left off"><span class="rh svelte-1wg6krf">Pick up where you left off</span> <!></div>`),aT=W(`<div class="empty svelte-1wg6krf"><div class="orb svelte-1wg6krf" aria-hidden="true"><!></div> <h3 class="svelte-1wg6krf"> </h3> <p class="svelte-1wg6krf">Specs, code, runs and their evidence. Every source is checked against what was actually read — and Ask changes nothing.</p> <!> <!></div>`),oT=W(`<li class="svelte-1wg6krf"><span class="rid svelte-1wg6krf"> </span> </li>`),sT=W(`<ul class="steps svelte-1wg6krf"></ul>`),cT=W(`<button class="steps-t svelte-1wg6krf"><!> </button> <!>`,1),lT=W(`<button class="src svelte-1wg6krf"><span class="n svelte-1wg6krf"> </span><span class="sl svelte-1wg6krf"> </span></button>`),uT=W(`<div class="sources svelte-1wg6krf"></div>`),dT=W(`<p class="nosrc svelte-1wg6krf">No sources — the model's words only.</p>`),fT=W(`<p class="unread-note svelte-1wg6krf"><!> </p>`),pT=W(`<div class="said svelte-1wg6krf"><span class="who svelte-1wg6krf">The model says</span> <!></div> <!> <!>`,1),mT=W(`<p class="halted svelte-1wg6krf"><!> </p>`),hT=W(`<div><!> <span class="svelte-1wg6krf"> </span></div>`),gT=W(`<span class="why svelte-1wg6krf"> </span>`),_T=W(`<code class="cmd svelte-1wg6krf"> </code>`),vT=W(`<div><span class="glyph svelte-1wg6krf" aria-hidden="true"><!></span> <div class="cw svelte-1wg6krf"><span class="ck svelte-1wg6krf"> </span> <strong class="svelte-1wg6krf"> </strong> <!></div> <button class="btn small svelte-1wg6krf">Review…</button></div>`),yT=W(`<button class="made svelte-1wg6krf"><!><span class="svelte-1wg6krf"> </span> <span class="go svelte-1wg6krf">Open</span></button>`),bT=W(`<p class="made svelte-1wg6krf"><!><span class="svelte-1wg6krf"> </span></p>`),xT=W(`<div class="q svelte-1wg6krf"> </div> <article class="a svelte-1wg6krf"><!> <!> <!> <!> <!> <!> <span class="meta svelte-1wg6krf"> </span></article>`,1),ST=W(`<button class="made spec svelte-1wg6krf"><!><span class="svelte-1wg6krf"> </span> <span class="go svelte-1wg6krf">Open</span></button>`),CT=W(`<li><!> </li>`),wT=W(`<li class="thinking svelte-1wg6krf"><span class="dots svelte-1wg6krf" aria-hidden="true"><i class="svelte-1wg6krf"></i><i class="svelte-1wg6krf"></i><i class="svelte-1wg6krf"></i></span> </li>`),TT=W(`<div class="said svelte-1wg6krf"><!></div>`),ET=W(`<div class="q queued svelte-1wg6krf" title="Sent as soon as the stopped turn has ended"> </div>`),DT=W(`<div class="q svelte-1wg6krf"> </div> <article class="a live svelte-1wg6krf" aria-busy="true"><ul class="steps live svelte-1wg6krf"><!> <!></ul> <!> <!></article> <!>`,1),OT=W(`<div class="q svelte-1wg6krf"> </div> <div class="stopped svelte-1wg6krf"><!> <span class="svelte-1wg6krf"> </span> <button class="link svelte-1wg6krf">Retry</button></div>`,1),kT=W(`<!> <!> <!> <!>`,1),AT=W(`<span class="spinner svelte-1wg6krf"></span>`),jT=W(`<p class="quiet svelte-1wg6krf"> </p>`),MT=W(`<p class="quiet svelte-1wg6krf">This run kept no words of its own.</p>`),NT=W(`<div class="peek svelte-1wg6krf" role="dialog"><div class="ph svelte-1wg6krf"><div class="svelte-1wg6krf"><strong class="svelte-1wg6krf">The run's account</strong><span class="svelte-1wg6krf">the implementing model's words — a claim, never evidence</span></div> <button class="hbtn svelte-1wg6krf" aria-label="Close the account"><!></button></div> <div class="pb svelte-1wg6krf"><!></div></div>`),PT=W(`<span class="chip view svelte-1wg6krf" title="From the view: the subject on screen"><span class="dot svelte-1wg6krf" aria-hidden="true"></span> <button type="button" class="svelte-1wg6krf"><!></button></span>`),FT=W(`<span class="chip svelte-1wg6krf"> <button type="button" class="svelte-1wg6krf"><!></button></span>`),IT=W(`<div class="chips svelte-1wg6krf" aria-label="Context"><!> <!></div>`),LT=W(`<button class="send stop svelte-1wg6krf" type="button" aria-label="Stop" title="Stop (Esc)"><span class="ring svelte-1wg6krf" aria-hidden="true"></span><span class="sq svelte-1wg6krf" aria-hidden="true"></span></button>`),RT=W(`<button class="send svelte-1wg6krf" type="submit" aria-label="Send"><!></button>`),zT=W(`<aside class="ask glass svelte-1wg6krf" aria-label="Ask"><div class="grip svelte-1wg6krf" role="separator" aria-orientation="vertical" aria-label="Resize Ask" tabindex="0"></div> <header class="svelte-1wg6krf"><span class="mark svelte-1wg6krf" aria-hidden="true"><!></span> <div class="title svelte-1wg6krf"><strong class="svelte-1wg6krf">Ask</strong> <span class="scope svelte-1wg6krf" title="What the questions are about"> </span></div> <button class="hbtn svelte-1wg6krf" title="Conversations" aria-label="Conversations"><!></button> <button class="hbtn svelte-1wg6krf" title="New conversation (⌥⌘N)" aria-label="New conversation"><!></button> <button class="hbtn close svelte-1wg6krf" title="Close (⌘L)" aria-label="Close Ask"><!></button></header> <div class="log svelte-1wg6krf" role="log"><!> <!></div> <div class="sr svelte-1wg6krf" aria-live="polite"> </div> <!> <form class="composer svelte-1wg6krf"><!> <!> <div class="field svelte-1wg6krf"><textarea rows="1" aria-label="Your question" class="svelte-1wg6krf"></textarea> <!></div> <p class="hint svelte-1wg6krf"> </p></form></aside>`);function BT(e,t){Xe(t,!0);let n=(e,t=d,n=d)=>{var r=Yr();J(L(r),17,t,si,(e,t)=>{var r=Yr(),i=L(r),a=e=>{var n=Jr();V(()=>K(n,H(t).text)),G(e,n)},o=e=>{var n=Uw(),r=R(n,!0);V(()=>K(r,H(t).text)),G(e,n)},s=e=>{var n=Ww(),r=R(n,!0);V(()=>K(r,H(t).text)),G(e,n)},c=e=>{G(e,Gw())},l=e=>{var r=Kw(),i=R(r,!0);V(()=>{X(r,`title`,H(t).citation.label),X(r,`aria-label`,`Source ${H(t).n??``}: ${H(t).citation.label??``}`),K(i,H(t).n)}),U(`click`,r,()=>x(H(t).citation,n())),G(e,r)},u=e=>{G(e,qw())};q(i,e=>{H(t).t===`text`?e(a):H(t).t===`code`?e(o,1):H(t).t===`bold`?e(s,2):H(t).t===`mark`?e(c,3):H(t).n!==null&&n()?e(l,4):e(u,-1)}),G(e,r)}),G(e,r)},r=(e,t=d,r=d,i)=>{let a=xt(()=>h(i?.(),!1));var o=Yr();J(L(o),17,()=>Hw(t(),r()?.citations??[],H(a)),si,(e,t)=>{var i=Yr(),a=L(i),o=e=>{var n=Jw(),r=R(n,!0);V(()=>K(r,H(t).text)),G(e,n)},s=e=>{var i=Yw(),a=I(i);n(a,()=>H(t).parts,r),A(i),G(e,i)},c=e=>{var i=Xw();let a;var o=I(i);n(o,()=>H(t).parts,r),A(i),V(()=>a=Y(i,1,`li svelte-1wg6krf`,null,a,{ol:H(t).kind===`ol`})),G(e,i)},l=e=>{var i=Zw(),a=I(i);n(a,()=>H(t).parts,r),A(i),G(e,i)};q(a,e=>{H(t).kind===`pre`?e(o):H(t).kind===`h`?e(s,1):H(t).kind===`li`||H(t).kind===`ol`?e(c,2):e(l,-1)}),G(e,i)}),G(e,o)},i=N(``),a=N(void 0),o=N(void 0),s=N(``),c=F({}),l={quick_change:[`Quick change`,`sparkle`],bug_fix:[`Bug fix`,`exclaim`],nudge:[`Nudge`,`hand`],answer:[`Answer`,`check`],start_spec:[`Start a spec`,`doc`]};B(()=>{Z.focus,yr().then(()=>H(a)?.focus())});let u=!1;B(()=>{let e=!!Q.job?.running;u&&!e&&Z.refresh(),u=e}),B(()=>{!Z.turns.length&&!Z.list&&Z.loadRecent()});let f=N(void 0);B(()=>{Z.list?.length&&yr().then(()=>H(f)?.querySelector(`.conv`)?.focus())});function p(e){if(e.key!==`ArrowDown`&&e.key!==`ArrowUp`)return;let t=[...H(f)?.querySelectorAll(`.conv`)??[]],n=t.indexOf(document.activeElement),r=t[Math.min(t.length-1,Math.max(0,n+(e.key===`ArrowDown`?1:-1)))];r&&(e.preventDefault(),r.focus())}let m=e=>new Date(e*1e3).toLocaleDateString(void 0,{month:`short`,day:`numeric`});B(()=>{Z.turns.length,Z.pending?.steps.length,Z.pending?.words.length,yr().then(()=>H(o)?.scrollTo({top:H(o).scrollHeight,behavior:matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`}))}),B(()=>{let e=Z.turns.at(-1);if(!e)return;let t=e.citations.filter(e=>e.state===`read`).length;P(s,e.end===`answered`?`Answer ready, ${t} ${t===1?`source`:`sources`}`:e.end===`stopped`?`Stopped`:e.reason??`The turn stopped`,!0)});async function g(e=H(i)){e.trim()&&(Z.pending?.stopping?(Z.queued=e.trim(),P(i,``)):Z.pending||(P(i,``),await Z.send(e)))}function _(e){if(e.key===`Enter`&&!e.shiftKey&&!e.isComposing)e.preventDefault(),(!Z.pending||Z.pending.stopping)&&g();else if(e.key===`ArrowUp`&&!H(i)){let t=Z.turns.at(-1)?.question??Z.failed?.question;t&&(e.preventDefault(),P(i,t,!0))}else e.key===`Backspace`&&!H(i)&&H(a)?.selectionStart===0&&(Z.chips.length?Z.remove(Z.chips.length-1):Z.viewChip&&Z.remove(`view`))}function v(e){if(e.key===`Escape`){if(e.stopPropagation(),Z.sheet)return;if(Z.pending&&!Z.pending.stopping)return void Z.stop();e.target===H(a)?document.querySelector(`main`)?.focus():Z.toggle(!1)}else e.key===`n`&&e.altKey&&(e.metaKey||e.ctrlKey)?(e.preventDefault(),Z.fresh()):e.key===`/`&&!e.target.closest(`textarea, input`)&&(e.preventDefault(),H(a)?.focus())}function y(e){let t=e.clientX,n=Z.width,r=e=>Z.resize(n+(t-e.clientX)),i=()=>{window.removeEventListener(`pointermove`,r),window.removeEventListener(`pointerup`,i)};window.addEventListener(`pointermove`,r),window.addEventListener(`pointerup`,i)}function b(e){let t={ArrowLeft:24,ArrowRight:-24};if(e.key in t)Z.resize(Z.width+(t[e.key]??0));else if(e.key===`Home`)Z.resize(320);else if(e.key===`End`)Z.resize(640);else return;e.preventDefault()}function x(e,t){if(e.state!==`read`)return;let n=t.reads.find(t=>t.id===e.id),r=t.chips.find(t=>t.id===e.id),i=e.path??n?.path??null;if(i){let t=e.lines?.[0]??n?.start??1,r=e.lines?.[1]??n?.end??t;Q.codeMode=`files`,Q.codeFile=i,Q.codeLine=t,Q.codeCited={path:i,from:t,to:r,changed:null},Q.view=`code`,n?.content_sha256&&n.path&&ba(`/api/ask/changed${Sa({path:n.path,start:n.start?.toString(),end:n.end?.toString(),sha:n.content_sha256})}`).then(e=>{Q.codeCited?.path===i&&(Q.codeCited={...Q.codeCited,changed:e.changed})}).catch(()=>{});return}if(n?.tool===`task_evidence`&&n.subject)return void Q.selectTask(n.subject);if(n?.tool===`journal_account`&&n.subject){let t=e.lines?.[0]??n.start??null;Z.peekAccount(n.subject,t?[t,e.lines?.[1]??n.end??t]:null);return}let a=r?.reference?.task;a&&Q.selectTask(a)}function S(e){return e.label??String(e.reference.task??e.reference.path??e.kind)}function C(e,t){if(e.kind===`start_spec`){let t=Z.offer;if(t)return void E(t);Q.newFeature={text:e.fields.description??e.title,through:`tasks`}}else Z.sheet={proposal:e,turn:t}}async function w(e){await Q.selectFeature(e.unit),Q.view=`board`,e.task&&await Q.selectTask(e.task)}let T=e=>e.kind===`spec`?`Started ${e.unit}`:`Recorded ${e.task??e.requirement??`it`} in ${e.unit}`;function E(e){let t=e.actions[0],n=t?.run;if(!t||!n||n.kind!==`plan_through`||n.from.kind!==`create`||n.from.source.kind!==`promotion`)return void(t&&Q.perform(t));let r=n.from.source.conversations??[],i=Z.conversation&&!r.includes(Z.conversation)?[Z.conversation,...r]:r,a=`speccoder spec promote ${n.from.source.task}${i.map(e=>` --conversation ${e}`).join(``)}`;Q.perform(ja({...n,from:{...n.from,source:{...n.from.source,conversations:i}}},{group:`review`,label:t.label,why:e.detail,command:a}))}let ee=e=>e.citations.filter(e=>e.state===`read`),D=e=>e.citations.filter(e=>e.state!==`read`),O=M(()=>Q.report?.data?.feature??Q.project?.name??`this project`);var k=zT(),te=I(k);X(te,`aria-valuemin`,320),X(te,`aria-valuemax`,640);var ne=z(te,2),re=I(ne);$(I(re),{name:`bubble`,size:14,weight:2}),A(re);var ie=z(re,2),ae=R(z(I(ie),2));A(ie);var oe=z(ie,2);$(I(oe),{name:`list`,size:15}),A(oe);var se=z(oe,2);$(I(se),{name:`plus`,size:15}),A(se);var ce=z(se,2);$(I(ce),{name:`xmark`,size:11,weight:2.6}),A(ce),A(ne);var le=z(ne,2),ue=I(le),de=e=>{var t=eT();J(z(I(t),2),17,()=>Z.list,e=>e.id,(e,t)=>{var n=Qw(),r=I(n),i=R(r,!0),a=R(z(r,2));A(n),V(e=>{K(i,H(t).title),K(a,`${e??``} · ${H(t).turns??``} ${H(t).turns===1?`turn`:`turns`}`)},[()=>m(H(t).at)]),U(`click`,n,()=>void Z.resume(H(t).id)),G(e,n)},e=>{G(e,$w())}),A(t),sa(t,e=>P(f,e),()=>H(f)),U(`keydown`,t,p),G(e,t)},fe=e=>{var t=aT(),n=I(t);$(I(n),{name:`bubble`,size:26,weight:1.6}),A(n);var r=z(n,2),i=R(r),a=z(r,4),o=e=>{var t=nT();J(t,20,()=>Z.suggestions,e=>e,(e,t)=>{var n=tT(),r=R(n,!0);V(()=>K(r,t)),U(`click`,n,()=>void g(t)),G(e,n)}),A(t),G(e,t)};q(a,e=>{(Q.report||Q.project)&&e(o)});var s=z(a,2),c=e=>{var t=iT();J(z(I(t),2),17,()=>Z.recent,e=>e.id,(e,t)=>{var n=rT(),r=I(n);$(r,{name:`bubble`,size:12});var i=z(r,2),a=R(i,!0),o=R(z(i,2),!0);A(n),V(e=>{K(a,H(t).title),K(o,e)},[()=>m(H(t).at)]),U(`click`,n,()=>void Z.resume(H(t).id)),G(e,n)}),A(t),G(e,t)};q(s,e=>{Z.recent.length&&e(c)}),A(t),V(()=>K(i,`Ask about ${H(O)??``}`)),G(e,t)};q(ue,e=>{Z.list?e(de):Z.turns.length||Z.pending||Z.failed||e(fe,1)});var pe=z(ue,2),me=e=>{var t=kT(),n=L(t);J(n,17,()=>Z.turns,e=>e.turn,(e,t)=>{var n=xT(),i=L(n),a=R(i,!0),o=z(i,2),s=I(o),u=e=>{var n=cT(),r=L(n),i=I(r);$(i,{name:`chevron`,size:11});var a=z(i);A(r);var o=z(r,2),s=e=>{var n=sT();J(n,21,()=>H(t).reads,e=>e.id,(e,t)=>{var n=oT(),r=I(n),i=R(r,!0),a=z(r);A(n),V(e=>{K(i,H(t).id),K(a,` ${e??``}`)},[()=>Ya({tool:H(t).tool,target:H(t).target,refused:!1})]),G(e,n)}),A(n),G(e,n)};q(o,e=>{c[H(t).turn]&&e(s)}),V(e=>{X(r,`aria-expanded`,!!c[H(t).turn]),K(a,` ${e??``}`)},[()=>H(t).reads.length===1?Ya({tool:H(t).reads[0].tool,target:H(t).reads[0].target,refused:!1}):`Read ${H(t).reads.length} sources`]),U(`click`,r,()=>c[H(t).turn]=!c[H(t).turn]),G(e,n)};q(s,e=>{H(t).reads.length&&e(u)});var d=z(s,2),f=e=>{var n=pT(),i=L(n),a=z(I(i),2);r(a,()=>H(t).answer,()=>H(t)),A(i);var o=z(i,2),s=e=>{var n=uT();J(n,23,()=>ee(H(t)),e=>e.marker,(e,n,r)=>{var i=lT(),a=I(i),o=R(a,!0),s=R(z(a),!0);A(i),V(()=>{X(i,`title`,`Open ${H(n).label??``}`),K(o,H(r)+1),K(s,H(n).label)}),U(`click`,i,()=>x(H(n),H(t))),G(e,i)}),A(n),G(e,n)},c=M(()=>ee(H(t)).length),l=e=>{G(e,dT())};q(o,e=>{H(c)?e(s):H(t).end!==`stopped`&&e(l,1)});var u=z(o,2),d=e=>{var n=fT(),r=I(n);$(r,{name:`exclaim`,size:12});var i=z(r);A(n),V((e,t,n)=>K(i,` ${e??``} ${t??``} something not read this turn: ${n??``}`),[()=>D(H(t)).length,()=>D(H(t)).length===1?`citation names`:`citations name`,()=>D(H(t)).map(e=>e.marker).join(`, `)]),G(e,n)},f=M(()=>D(H(t)).length);q(u,e=>{H(f)&&e(d)}),G(e,n)};q(d,e=>{H(t).answer&&e(f)});var p=z(d,2),m=e=>{var n=mT(),r=I(n);$(r,{name:`stop`,size:11});var i=z(r);A(n),V(()=>K(i,` Stopped${H(t).answer?` — the words so far`:``}`)),G(e,n)},h=e=>{var n=hT();let r;var i=I(n);{let e=M(()=>H(t).end===`budget`?`gauge`:`xoctagon`);$(i,{get name(){return H(e)},size:14})}var a=R(z(i,2),!0);A(n),V(()=>{r=Y(n,1,`stopped svelte-1wg6krf`,null,r,{budget:H(t).end===`budget`}),K(a,H(t).reason??`The turn stopped`)}),G(e,n)};q(p,e=>{H(t).end===`stopped`?e(m):H(t).end!==`answered`&&e(h,1)});var g=z(p,2),_=e=>{let n=M(()=>H(t).proposal),r=M(()=>l[H(n).kind]??[H(n).kind,`sparkle`]);var i=vT();let a;var o=I(i);$(I(o),{get name(){return H(r)[1]},size:14,weight:2}),A(o);var s=z(o,2),c=I(s),u=R(c),d=z(c,2),f=R(d,!0),p=z(d,2),m=e=>{var t=gT(),r=R(t,!0);V(()=>K(r,H(n).blocked)),G(e,t)},h=e=>{var t=_T(),r=R(t,!0);V(()=>K(r,H(n).command)),G(e,t)};q(p,e=>{H(n).blocked?e(m):e(h,-1)}),A(s);var g=z(s,2);A(i),V(()=>{a=Y(i,1,`card svelte-1wg6krf`,null,a,{blocked:!!H(n).blocked}),K(u,`${H(r)[0]??``}${H(n).fields.target?` ${H(n).fields.target}`:``}`),K(f,H(n).title),g.disabled=!!H(n).blocked}),U(`click`,g,()=>C(H(n),H(t).turn)),G(e,i)};q(g,e=>{H(t).proposal&&e(_)});var v=z(g,2);J(v,17,()=>Z.results.filter(e=>e.turn===H(t).turn),si,(e,t)=>{var n=yT(),r=I(n);$(r,{name:`check`,size:11,weight:2.6});var i=z(r),a=R(i,!0),o=z(i,1,!0);o.nodeValue=` `,j(),A(n),V(e=>K(a,e),[()=>T(H(t))]),U(`click`,n,()=>void w(H(t))),G(e,n)});var y=z(v,2),b=e=>{var n=bT(),r=I(n);$(r,{name:`check`,size:11,weight:2.6});var i=R(z(r),!0);A(n),V(()=>K(i,Z.confirmed[H(t).turn])),G(e,n)};q(y,e=>{Z.confirmed[H(t).turn]&&e(b)});var S=R(z(y,2));A(o),V(()=>{K(a,H(t).question),X(o,`aria-label`,`Answer ${H(t).turn??``}`),K(S,`${H(t).usage.input+H(t).usage.output} tokens`)}),G(e,n)});var i=z(n,2);J(i,17,()=>Z.results.filter(e=>e.turn==null),si,(e,t)=>{var n=ST(),r=I(n);$(r,{name:`sparkle`,size:11,weight:2.2});var i=z(r),a=R(i),o=z(i,1,!0);o.nodeValue=` `,j(),A(n),V(e=>K(a,`${e??``} from this conversation`),[()=>T(H(t))]),U(`click`,n,()=>void w(H(t))),G(e,n)});var a=z(i,2),o=e=>{var t=DT(),n=L(t),i=R(n,!0),a=z(n,2),o=I(a),s=I(o);J(s,17,()=>Z.pending.steps,si,(e,t)=>{var n=CT();let r;var i=I(n);{let e=M(()=>H(t).refused?`xmark`:`check`);$(i,{get name(){return H(e)},size:11})}var a=z(i);A(n),V(e=>{r=Y(n,1,`svelte-1wg6krf`,null,r,{refused:H(t).refused}),K(a,` ${e??``}`)},[()=>Ya(H(t))]),G(e,n)});var c=z(s,2),l=e=>{},u=e=>{var t=wT(),n=z(I(t));A(t),V(()=>K(n,` ${Z.pending.steps.length?`Reading`:`Thinking`}`)),G(e,t)};q(c,e=>{Z.pending.stopping?e(l):Z.pending.words||e(u,1)}),A(o);var d=z(o,2),f=e=>{var t=TT(),n=I(t);r(n,()=>Z.pending.words,()=>null,()=>!Z.pending.stopping),A(t),G(e,t)};q(d,e=>{Z.pending.words&&e(f)});var p=z(d,2),m=e=>{var t=mT(),n=I(t);$(n,{name:`stop`,size:11});var r=z(n);A(t),V(()=>K(r,` Stopped${Z.pending.words?` — the words so far`:``}`)),G(e,t)};q(p,e=>{Z.pending.stopping&&e(m)}),A(a);var h=z(a,2),g=e=>{var t=ET(),n=R(t,!0);V(()=>K(n,Z.queued)),G(e,t)};q(h,e=>{Z.queued&&e(g)}),V(()=>K(i,Z.pending.question)),G(e,t)};q(a,e=>{Z.pending&&e(o)});var s=z(a,2),u=e=>{var t=OT(),n=L(t),r=R(n,!0),i=z(n,2),a=I(i);$(a,{name:`xoctagon`,size:14});var o=z(a,2),s=R(o,!0),c=z(o,2);A(i),V(()=>{K(r,Z.failed.question),K(s,Z.failed.message)}),U(`click`,c,()=>{let e=Z.failed;Z.failed=null,g(e.question)}),G(e,t)};q(s,e=>{Z.failed&&e(u)}),G(e,t)};q(pe,e=>{Z.list||e(me)}),A(le),sa(le,e=>P(o,e),()=>H(o));var he=z(le,2),ge=R(he,!0),_e=z(he,2),ve=e=>{var t=NT(),n=I(t),r=z(I(n),2);$(I(r),{name:`xmark`,size:12,weight:2.2}),A(r),A(n);var i=z(n,2),a=I(i),o=e=>{G(e,AT())},s=e=>{var t=jT(),n=R(t,!0);V(()=>K(n,Z.peek.error)),G(e,t)},c=e=>{G(e,MT())},l=e=>{{let t=M(()=>Z.peek.marked??null);Jp(e,{get turns(){return Z.peek.turns},get marked(){return H(t)}})}};q(a,e=>{Z.peek.turns?Z.peek.error?e(s,1):Z.peek.turns.length?e(l,-1):e(c,2):e(o)}),A(i),A(t),V(()=>X(t,`aria-label`,`Account of run ${Z.peek.run??``}`)),U(`click`,r,()=>Z.peek=null),G(e,t)};q(_e,e=>{Z.peek&&e(ve)});var ye=z(_e,2),be=I(ye),xe=e=>{let t=M(()=>Z.offer);Hm(e,{get item(){return H(t)},compact:!0,onstart:()=>E(H(t))})};q(be,e=>{Z.offer&&e(xe)});var Se=z(be,2),Ce=e=>{var t=IT(),n=I(t),r=e=>{var t=PT(),n=z(I(t)),r=z(n);$(I(r),{name:`xmark`,size:9,weight:2.4}),A(r),A(t),V((e,t)=>{K(n,`${e??``} `),X(r,`aria-label`,`Remove ${t??``} from context`)},[()=>S(Z.viewChip),()=>S(Z.viewChip)]),U(`click`,r,()=>Z.remove(`view`)),G(e,t)};q(n,e=>{Z.viewChip&&e(r)}),J(z(n,2),17,()=>Z.chips,si,(e,t,n)=>{var r=FT(),i=I(r,!0),a=z(i);$(I(a),{name:`xmark`,size:9,weight:2.4}),A(a),A(r),V((e,t)=>{K(i,e),X(a,`aria-label`,`Remove ${t??``} from context`)},[()=>S(H(t)),()=>S(H(t))]),U(`click`,a,()=>Z.remove(n)),G(e,r)}),A(t),G(e,t)};q(Se,e=>{(Z.viewChip||Z.chips.length)&&e(Ce)});var we=z(Se,2),Te=I(we);lt(Te),sa(Te,e=>P(a,e),()=>H(a));var Ee=z(Te,2),De=e=>{var t=LT();U(`click`,t,()=>void Z.stop()),G(e,t)},Oe=e=>{var t=RT();$(I(t),{name:`arrowup`,size:15,weight:2.4}),A(t),V(e=>t.disabled=e,[()=>!H(i).trim()||!!Z.queued]),G(e,t)};q(Ee,e=>{Z.pending&&!Z.pending.stopping?e(De):e(Oe,-1)}),A(we);var ke=R(z(we,2),!0);A(ye),A(k),V(()=>{Oi(k,`--w:${Z.width??``}px`),X(te,`aria-valuenow`,Z.width),K(ae,`about ${H(O)??``}`),X(oe,`aria-pressed`,Z.list!==null),K(ge,H(s)),X(Te,`placeholder`,Z.turns.length?`Ask a follow-up…`:`Ask about the specs, the code, a run…`),K(ke,Z.pending?.stopping?Z.queued?`Asked — it goes as soon as the stop lands`:`Stopped · Enter asks next`:Z.pending?`Esc to stop · keep typing, it waits for you`:`Enter to send · ⇧Enter for a new line · reads only, changes nothing`)}),U(`keydown`,k,v),U(`pointerdown`,te,y),U(`keydown`,te,b),U(`click`,oe,()=>Z.list?Z.list=null:void Z.showList()),U(`click`,se,()=>Z.fresh()),U(`click`,ce,()=>Z.toggle(!1)),Lr(`submit`,ye,e=>{e.preventDefault(),g()}),U(`keydown`,Te,_),$i(Te,()=>H(i),e=>P(i,e)),G(e,k),Ze()}Rr([`click`,`keydown`,`pointerdown`]);var VT=W(`<p class="d-warn attention" role="alert"><!> </p>`),HT=W(`<p class="working svelte-9vukoe" role="status"><span class="spinner" aria-hidden="true"></span> Reading the project and weighing approaches… questions show up for you to answer.</p>`),UT=W(`<li><button type="button" class="svelte-9vukoe"><span> </span><span class="si svelte-9vukoe"> </span><span class="muted"> </span></button></li>`),WT=W(`<div class="d-field"><span class="d-label">Pick up an exploration</span> <ul class="sessions svelte-9vukoe"></ul></div>`),GT=W(`<label class="d-field"><span class="d-label">What are you thinking about?</span> <textarea rows="3" placeholder="Reports people can take with them — CSV? a PDF? a link that stays fresh?"></textarea></label> <!> <!>`,1),KT=W(`<p class="working svelte-9vukoe" role="status"><span class="spinner" aria-hidden="true"></span> </p>`),qT=W(`<p class="d-warn" role="status"><!> </p>`),JT=W(`<span class="tag give svelte-9vukoe"><!> </span>`),YT=W(`<span class="tag risk svelte-9vukoe"><!> </span>`),XT=W(`<div role="radio"><span class="n svelte-9vukoe" aria-hidden="true"> </span> <strong class="svelte-9vukoe"> </strong> <p class="svelte-9vukoe"> </p> <!> <!></div>`),ZT=W(`<span class="src svelte-9vukoe"> </span>`),QT=W(`<li><span class="svelte-9vukoe"> </span> <!> <button type="button" class="svelte-9vukoe"><!></button></li>`),$T=W(`<div class="d-field"><span class="d-label"> </span> <ul class="items svelte-9vukoe"></ul> <input/></div>`),eE=W(`<span class="muted">· changed — choose again to make it anew</span>`),tE=W(`<div><div class="bh svelte-9vukoe"><!> <strong>The brief</strong> <code class="svelte-9vukoe"> </code><!></div> <pre class="svelte-9vukoe"> </pre></div>`),nE=W(`<div class="idea svelte-9vukoe"><!><div><p class="svelte-9vukoe"> </p><span class="muted svelte-9vukoe"> </span></div></div> <!> <!> <div class="d-field"><span class="d-label" id="ex-approaches">Approaches <span class="muted">— the model's; you choose</span></span> <div class="cards svelte-9vukoe" role="radiogroup" aria-labelledby="ex-approaches"></div></div> <div class="lists svelte-9vukoe"></div> <!> <details class="further svelte-9vukoe"><summary class="svelte-9vukoe">Explore further</summary> <div class="row svelte-9vukoe"><input aria-label="What should it also consider?" placeholder="What should it also consider?" class="svelte-9vukoe"/> <button type="button" class="btn small">Explore further</button></div></details>`,1),rE=W(`<button type="button" class="btn primary">Explore</button>`),iE=W(`<button type="button" class="btn primary">Explore again</button>`),aE=W(`<button type="button" class="btn primary">Start spec from this brief</button>`),oE=W(`<button type="button" class="btn primary"> </button>`),sE=W(`<div class="d-scrim" role="presentation"><div class="d-sheet wide explore svelte-9vukoe" role="dialog" aria-modal="true" aria-labelledby="ex-title" aria-describedby="ex-lead"><header class="d-head"><span class="d-badge violet" aria-hidden="true"><!></span> <div><h2 id="ex-title">Explore</h2> <p id="ex-lead">Think it through before a spec: approaches to choose from, then a brief. Nothing is written until you start the spec.</p></div></header> <!> <footer class="d-row"><span class="d-hint"> </span> <button type="button" class="btn">Close</button> <!></footer></div></div>`);function cE(e,t){Xe(t,!0);let n=Q.explore??{},r=N(F(n.idea??``)),i=N(null),a=N(F([])),o=N(0),s=N(F([])),c=N(F([])),l=F({constraint:``,question:``}),u=N(null),d=N(``),f=N(void 0),p=N(null),m=N(null),h=M(()=>H(i)?.session??null),_=M(()=>H(i)?.approaches??[]),v=M(()=>H(i)?.brief&&H(i).choice?{text:H(i).brief,digest:H(i).choice.digest}:null),y=M(()=>!!H(i)?.choice&&(H(i).choice.approach!==H(o)+1||JSON.stringify(H(i).choice.constraints.map(e=>e.text))!==JSON.stringify(H(s).map(e=>e.text))||JSON.stringify(H(i).choice.open_questions.map(e=>e.text))!==JSON.stringify(H(c).map(e=>e.text)))),b=M(()=>H(h)?H(h).selected_because===`format`?`${H(h).skill} — the format's own`:H(h).selected_because===`flag`?H(h).skill:`speccoder's explorer — the format has none of its own`:``);function x(e){P(i,e,!0);let t=e.choice;P(o,t?t.approach-1:0,!0),P(s,t?t.constraints:e.constraints,!0),P(c,t?t.open_questions:e.open_questions,!0)}async function S(e){let t=await ba(`/api/explore/session${Sa({id:e})}`).catch(()=>null);t?.data&&x(t.data)}B(()=>{n.id?S(n.id):ba(`/api/explore`).then(e=>P(a,e.data?.sessions??[],!0)).catch(()=>{})});function C(e){e?.data?.session&&x(e.data),P(p,e&&(e.status!==`ok`||!e.data?.approaches?.length)?e.message:null,!0),P(m,e?.status===`ok`&&e.code?e.message:null,!0),P(u,null)}let w=``;B(()=>{let e=`${H(h)?.id??``}:${H(i)?.session?.runs.length??0}`;H(_).length&&e!==w&&(w=e,yr().then(()=>H(f)?.querySelectorAll(`[role=radio]`)[H(o)]?.focus()))});function T(){Q.explore=null}async function E(e){let t=e?H(d).trim():H(r).trim();(e||t)&&(P(p,null),P(u,`explore`),C(await Q.run(ja({kind:`explore`,idea:t,skill:null,resume:e??null},{group:`plan`,label:e?`explore further`:`explore an idea`,why:`read-only: approaches to choose from`,command:e?`speccoder spec explore resume ${e} "${t}"`:`speccoder spec explore "${t.replaceAll(`"`,`\\"`)}"`}))),P(d,``))}async function ee(){H(h)&&(P(u,`choose`),C(await Q.run(ja({kind:`explore_choose`,session:H(h).id,approach:H(o)+1,constraints:H(s).map(e=>e.text),questions:H(c).map(e=>e.text),flag:!1},{group:`plan`,label:`choose approach ${H(o)+1}`,why:`makes the brief; no model call`,command:`speccoder spec explore choose ${H(o)+1} ${H(h).id}`}))))}function D(){H(v)&&H(h)&&!H(y)&&(Q.newFeature={text:H(v).text,source:{kind:`explore`,session:H(h).id,digest:H(v).digest},through:`tasks`},T())}function O(e){let t=l[e].trim();t&&(e===`constraint`?P(s,[...H(s),{text:t,source:`person`}],!0):P(c,[...H(c),{text:t,source:`person`}],!0),l[e]=``)}function k(e){if(e.key===`Escape`)return e.stopPropagation(),T();let t=e.target.closest(`textarea, input`);if(H(_).length&&!t&&/^[1-9]$/.test(e.key)&&Number(e.key)<=H(_).length)P(o,Number(e.key)-1),H(f)?.querySelectorAll(`[role=radio]`)[H(o)]?.focus();else if(H(_).length&&(e.key===`ArrowDown`||e.key===`ArrowUp`)&&e.target.getAttribute(`role`)===`radio`)e.preventDefault(),P(o,(H(o)+(e.key===`ArrowDown`?1:H(_).length-1))%H(_).length),H(f)?.querySelectorAll(`[role=radio]`)[H(o)]?.focus();else if(e.key===`Enter`&&(e.metaKey||e.ctrlKey)){if(e.preventDefault(),H(u)||Q.job?.running)return;H(h)?H(v)&&!H(y)?D():H(_).length&&ee():E()}}let te=e=>new Date(e*1e3).toLocaleDateString(void 0,{month:`short`,day:`numeric`});var ne=sE(),re=I(ne),ie=I(re),ae=I(ie);$(I(ae),{name:`sparkle`,size:20,weight:2.2}),A(ae),j(2),A(ie);var oe=z(ie,2),se=e=>{var t=GT(),n=L(t),i=z(I(n),2);lt(i),A(n);var o=z(n,2),s=e=>{var t=VT(),n=I(t);$(n,{name:`exclaim`,size:13});var r=z(n);A(t),V(()=>K(r,` ${H(p)??``}`)),G(e,t)};q(o,e=>{H(p)&&e(s)});var c=z(o,2),l=e=>{G(e,HT())},d=e=>{var t=WT(),n=z(I(t),2);J(n,21,()=>H(a).slice(0,5),e=>e.id,(e,t)=>{var n=UT(),r=I(n),i=I(r),a=R(i,!0),o=z(i),s=R(o,!0),c=R(z(o),!0);A(r),A(n),V(e=>{Y(i,1,`st ${H(t).state??``}`,`svelte-9vukoe`),K(a,H(t).state),K(s,H(t).idea),K(c,e)},[()=>te(H(t).updated_at)]),U(`click`,r,()=>void S(H(t).id)),G(e,n)}),A(n),A(t),G(e,t)};q(c,e=>{H(u)?e(l):H(a).length&&e(d,1)}),V(()=>i.disabled=!!H(u)),$i(i,()=>H(r),e=>P(r,e)),G(e,t)},ce=e=>{var t=nE(),n=L(t),r=I(n);$(r,{name:`bubble`,size:13});var i=z(r),a=I(i),x=R(a,!0),S=R(z(a),!0);A(i),A(n);var C=z(n,2),w=e=>{var t=KT(),n=z(I(t));A(t),V(()=>K(n,` ${H(u)===`choose`?`Making the brief…`:`Exploring further…`}`)),G(e,t)};q(C,e=>{H(u)&&e(w)});var T=z(C,2),ee=e=>{var t=VT(),n=I(t);$(n,{name:`exclaim`,size:13});var r=z(n);A(t),V(()=>K(r,` ${H(p)??``}`)),G(e,t)},D=e=>{var t=qT(),n=I(t);$(n,{name:`exclaim`,size:13});var r=z(n);A(t),V(()=>K(r,` ${H(m)??``}`)),G(e,t)};q(T,e=>{H(p)?e(ee):H(m)&&e(D,1)});var k=z(T,2),te=z(I(k),2);J(te,23,()=>H(_),(e,t)=>`${t}:${e.title}`,(e,t,n)=>{var r=XT();let i;var a=I(r),s=R(a,!0),c=z(a,2),l=R(c,!0),u=z(c,2),d=R(u,!0),f=z(u,2);J(f,17,()=>H(t).tradeoffs,si,(e,t)=>{var n=JT(),r=I(n);$(r,{name:`minus`,size:10});var i=z(r);A(n),V(()=>K(i,` ${H(t)??``}`)),G(e,n)}),J(z(f,2),17,()=>H(t).risks,si,(e,t)=>{var n=YT(),r=I(n);$(r,{name:`exclaim`,size:10});var i=z(r);A(n),V(()=>K(i,` ${H(t)??``}`)),G(e,n)}),A(r),V(()=>{i=Y(r,1,`card svelte-9vukoe`,null,i,{on:H(o)===H(n)}),X(r,`aria-checked`,H(o)===H(n)),X(r,`tabindex`,H(o)===H(n)?0:-1),K(s,H(n)+1),K(l,H(t).title),K(d,H(t).summary)}),U(`click`,r,()=>P(o,H(n),!0)),U(`keydown`,r,e=>(e.key===` `||e.key===`Enter`)&&!e.metaKey&&!e.ctrlKey&&(e.preventDefault(),P(o,H(n),!0))),G(e,r)}),A(te),sa(te,e=>P(f,e),()=>H(f)),A(k);var ne=z(k,2);J(ne,21,()=>[[`constraint`,`Constraints`,H(s)],[`question`,`Open questions`,H(c)]],([e,t,n])=>e,(e,t)=>{var n=M(()=>g(H(t),3));let r=()=>H(n)[0],i=()=>H(n)[1],a=()=>H(n)[2],o=M(r);var u=$T(),d=I(u),f=R(d,!0),p=z(d,2);J(p,23,a,(e,t)=>e.text+t,(e,t,n)=>{var r=QT(),i=I(r),a=R(i,!0),l=z(i,2),u=e=>{var n=ZT(),r=R(n,!0);V(()=>K(r,H(t).source===`person`?`you`:`unanswered`)),G(e,n)};q(l,e=>{H(t).source!==`model`&&e(u)});var d=z(l,2);$(I(d),{name:`xmark`,size:9,weight:2.4}),A(d),A(r),V(()=>{Y(r,1,xi(H(t).source),`svelte-9vukoe`),K(a,H(t).text),X(d,`aria-label`,`Drop “${H(t).text??``}”`)}),U(`click`,d,()=>H(o)===`constraint`?P(s,H(s).filter((e,t)=>t!==H(n)),!0):P(c,H(c).filter((e,t)=>t!==H(n)),!0)),G(e,r)}),A(p);var m=z(p,2);Gi(m),A(u),V(()=>{K(f,i()),X(m,`aria-label`,`Add a ${H(o)??``}`),X(m,`placeholder`,H(o)===`constraint`?`Add a constraint…`:`Add a question…`)}),U(`keydown`,m,e=>e.key===`Enter`&&!e.metaKey&&(e.preventDefault(),O(H(o)))),$i(m,()=>l[H(o)],e=>l[H(o)]=e),G(e,u)}),A(ne);var re=z(ne,2),ie=e=>{var t=tE();let n;var r=I(t),i=I(r);$(i,{name:`doc`,size:13});var a=z(i,4),o=R(a,!0),s=z(a),c=e=>{G(e,eE())};q(s,e=>{H(y)&&e(c)}),A(r);var l=R(z(r,2),!0);A(t),V((e,r)=>{n=Y(t,1,`brief svelte-9vukoe`,null,n,{stale:H(y)}),K(o,e),K(l,r)},[()=>H(v).digest.slice(0,12),()=>H(v).text.split(`
`).slice(1).join(`
`).trim()]),G(e,t)};q(re,e=>{H(v)&&e(ie)});var ae=z(re,2),oe=z(I(ae),2),se=I(oe);Gi(se);var ce=z(se,2);A(oe),A(ae),V(e=>{K(x,H(h).idea),K(S,H(b)),ce.disabled=e},[()=>!H(d).trim()||!!H(u)]),$i(se,()=>H(d),e=>P(d,e)),U(`click`,ce,()=>void E(H(h).id)),G(e,t)};q(oe,e=>{H(h)?e(ce,-1):e(se)});var le=z(oe,2),ue=I(le),de=R(ue,!0),fe=z(ue,2),pe=z(fe,2),me=e=>{var t=rE();V(e=>t.disabled=e,[()=>!H(r).trim()||!!H(u)||!!Q.job?.running]),U(`click`,t,()=>void E()),G(e,t)},he=e=>{var t=iE();V(()=>t.disabled=!!H(u)||!!Q.job?.running),U(`click`,t,()=>{P(d,H(h)?.idea??``,!0),E(H(h).id)}),G(e,t)},ge=e=>{var t=aE();U(`click`,t,D),G(e,t)},_e=e=>{var t=oE(),n=R(t,!0);V(()=>{t.disabled=!H(_).length||!!H(u)||!!Q.job?.running,K(n,H(i)?.choice?`Make the brief again`:`Make the brief`)}),U(`click`,t,()=>void ee()),G(e,t)};q(pe,e=>{H(h)?H(_).length?H(v)&&!H(y)?e(ge,2):e(_e,-1):e(he,1):e(me)}),A(le),A(re),_i(re,(e,t)=>X_?.(e,t),()=>`textarea`),A(ne),V(()=>K(de,H(h)?`1–9 choose · ⌘↩ `+(H(v)&&!H(y)?`start the spec`:`make the brief`):`⌘↩ explore · read-only`)),U(`click`,ne,e=>e.target===e.currentTarget&&T()),U(`keydown`,ne,k),U(`click`,fe,T),G(e,ne),Ze()}Rr([`click`,`keydown`]);var lE=W(`<label class="field svelte-doj0s5"><span class="svelte-doj0s5">What should change?</span> <textarea rows="3" class="svelte-doj0s5"></textarea></label> <!>`,1),uE=W(`<label class="field svelte-doj0s5"><span class="svelte-doj0s5">What goes wrong?</span> <textarea rows="2" class="svelte-doj0s5"></textarea></label> <!>`,1),dE=W(`<label class="field svelte-doj0s5"><span class="svelte-doj0s5">Your note for the next attempt</span> <textarea rows="3" class="svelte-doj0s5"></textarea></label> <!>`,1),fE=W(`<label class="field svelte-doj0s5"><span class="svelte-doj0s5">Your answer</span> <textarea rows="3" class="svelte-doj0s5"></textarea></label> <!>`,1),pE=W(`<button class="x svelte-doj0s5" aria-label="Remove"><!></button>`),mE=W(`<div class="check svelte-doj0s5"><span class="n mono svelte-doj0s5"></span> <input class="svelte-doj0s5"/> <!></div>`),hE=W(`<div class="field svelte-doj0s5"><span class="svelte-doj0s5"> </span> <!></div>`),gE=W(`<span class="blocked svelte-doj0s5"><!> </span>`),_E=W(`<code class="svelte-doj0s5"> </code>`),vE=W(`<div class="scrim svelte-doj0s5" role="presentation"><div class="sheet glass svelte-doj0s5" role="dialog" aria-modal="true" aria-labelledby="ps-title"><header class="svelte-doj0s5"><span class="badge svelte-doj0s5" aria-hidden="true"><!></span> <div><span class="from svelte-doj0s5"><!> Suggested in Ask</span> <h2 id="ps-title" class="svelte-doj0s5"> </h2> <p class="svelte-doj0s5"> </p></div></header> <!> <!> <div class="record svelte-doj0s5" aria-live="polite"><span class="rl svelte-doj0s5">What will be recorded</span> <!></div> <div class="row svelte-doj0s5"><span class="hint muted svelte-doj0s5">Nothing is recorded until you confirm · ⌘↩</span> <button class="btn">Cancel</button> <button class="btn primary"> </button></div></div></div>`);function yE(e,t){Xe(t,!0);let n=Z.sheet.proposal,r=F(structuredClone(Ke(n.fields))),i=N(F(n)),a=N(!1),o,[s,c,l]={quick_change:[`Quick change`,`sparkle`,`Recorded as a story, a requirement and a task, then run and judged like any other change.`],bug_fix:[`Bug fix`,`exclaim`,`Recorded as a bug: speccoder reproduces it first, then fixes it and proves the fix.`],nudge:[`Nudge`,`hand`,`A note the task's next attempt reads.`],answer:[`Answer an open question`,`check`,`Your answer replaces the question's marker in the spec.`]}[n.kind]??[n.kind,`sparkle`,``],u=0,d=N(F(JSON.stringify(Ke(n.fields)))),f=()=>Ke(r);async function p(e){let t=++u;P(a,!0);try{let r=await xa(`/api/ask/proposal`,{proposal:{...n,fields:e},feature:Q.report?.data?.feature??null});t===u&&(P(i,r.proposal,!0),P(d,JSON.stringify(e),!0))}finally{t===u&&P(a,!1)}}B(()=>{let e=f();if(JSON.stringify(e)!==H(d))return P(a,!0),clearTimeout(o),o=setTimeout(()=>void p(e),300),()=>clearTimeout(o)});let m=()=>Z.sheet=null;async function h(){if(Q.job?.running)return;let e=f();if(JSON.stringify(e)!==H(d)&&(clearTimeout(o),await p(e)),JSON.stringify(f())!==H(d)||!H(i).runnable||H(i).blocked)return;let t=H(i).runnable,n=Z.sheet.turn;m(),await Q.perform(ja(t,{group:`work`,label:s.toLowerCase(),why:`suggested in Ask, confirmed by you`,command:H(i).command}),H(i).input??void 0),H(i).kind===`nudge`?Z.confirmed={...Z.confirmed,[n]:`Nudged ${H(i).fields.target??`the task`}`}:H(i).kind===`answer`?Z.confirmed={...Z.confirmed,[n]:`Answered ${H(i).fields.target??`the question`}`}:await Z.refresh()}function _(e){e.key===`Escape`&&(e.stopPropagation(),m()),e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),h())}let v=M(()=>n.kind===`quick_change`?[[`checks`,`Done when`,`quick`]]:n.kind===`bug_fix`?[[`expected`,`What should happen instead`,`bug_expected`],[`unchanged`,`What must keep working`,`bug_unchanged`]]:[]);function y(e,t,n){let i=[...r[e]??[]];i[t]=n,r[e]=i}var b=vE();Lr(`keydown`,on,_);var x=I(b),S=I(x),C=I(S);$(I(C),{get name(){return c},size:20,weight:2.2}),A(C);var w=z(C,2),T=I(w);$(I(T),{name:`bubble`,size:11}),j(),A(T);var E=z(T,2),ee=R(E),D=R(z(E,2),!0);A(w),A(S);var O=z(S,2),k=e=>{var t=lE(),n=L(t),i=z(I(n),2);lt(i),ct(i,!0),A(n);var a=z(n,2);{let e=M(()=>r.request??``);Rc(a,{field:`quick`,get text(){return H(e)},onshaped:e=>r.request=e})}$i(i,()=>r.request,e=>r.request=e),G(e,t)},te=e=>{var t=uE(),n=L(t),i=z(I(n),2);lt(i),ct(i,!0),A(n);var a=z(n,2);{let e=M(()=>r.symptom??``);Rc(a,{field:`bug_symptom`,get text(){return H(e)},onshaped:e=>r.symptom=e})}$i(i,()=>r.symptom,e=>r.symptom=e),G(e,t)},ne=e=>{var t=dE(),n=L(t),i=z(I(n),2);lt(i),ct(i,!0),A(n);var a=z(n,2);{let e=M(()=>r.note??``);Rc(a,{field:`note`,get text(){return H(e)},onshaped:e=>r.note=e})}$i(i,()=>r.note,e=>r.note=e),G(e,t)},re=e=>{var t=fE(),n=L(t),i=z(I(n),2);lt(i),ct(i,!0),A(n);var a=z(n,2);{let e=M(()=>r.answer??``);Rc(a,{field:`answer`,get text(){return H(e)},onshaped:e=>r.answer=e})}$i(i,()=>r.answer,e=>r.answer=e),G(e,t)};q(O,e=>{n.kind===`quick_change`?e(k):n.kind===`bug_fix`?e(te,1):n.kind===`nudge`?e(ne,2):n.kind===`answer`&&e(re,3)});var ie=z(O,2);J(ie,17,()=>H(v),([e,t])=>e,(e,t)=>{var n=M(()=>g(H(t),2));let i=()=>H(n)[0],a=()=>H(n)[1],o=M(()=>r[i()]??[]);var s=hE(),c=I(s),l=R(c,!0);J(z(c,2),17,()=>[...H(o),``],si,(e,t,n)=>{var s=Yr(),c=L(s),l=e=>{var s=mE(),c=I(s);c.textContent=`${n+1}.`;var l=z(c,2);Gi(l),X(l,`placeholder`,n?`and…`:``);var u=z(l,2),d=e=>{var t=pE();$(I(t),{name:`xmark`,size:10,weight:2.6}),A(t),U(`click`,t,()=>r[i()]=H(o).filter((e,t)=>t!==n)),G(e,t)};q(u,e=>{n<H(o).length&&e(d)}),A(s),V(()=>{Ki(l,H(t)),X(l,`aria-label`,`${a()??``}, ${n+1}`)}),U(`input`,l,e=>y(i(),n,e.target.value)),G(e,s)},u=M(()=>n<H(o).length||n===0||H(o)[n-1]?.trim());q(c,e=>{H(u)&&e(l)}),G(e,s)}),A(s),V(()=>K(l,a())),G(e,s)});var ae=z(ie,2),oe=z(I(ae),2),se=e=>{var t=gE(),n=I(t);$(n,{name:`exclaim`,size:13});var r=z(n);A(t),V(()=>K(r,` ${H(i).blocked??``}`)),G(e,t)},ce=e=>{var t=_E(),n=R(t,!0);V(()=>K(n,H(i).command)),G(e,t)};q(oe,e=>{H(i).blocked?e(se):e(ce,-1)}),A(ae);var le=z(ae,2),ue=z(I(le),2),de=z(ue,2),fe=R(de,!0);A(le),A(x),_i(x,(e,t)=>X_?.(e,t),()=>`textarea, input`),A(b),V(()=>{K(ee,`${s??``}${r.target?` · ${r.target}`:``}`),K(D,l),de.disabled=!H(i).runnable||!!H(i).blocked||H(a)||!!Q.job?.running,K(fe,n.kind===`quick_change`||n.kind===`bug_fix`?`Record and Run`:`Confirm`)}),U(`click`,b,e=>e.target===e.currentTarget&&m()),U(`click`,ue,m),U(`click`,de,h),G(e,b),Ze()}Rr([`click`,`input`]);var bE=W(`<button class="pill svelte-r595i9" title="Add the selection to Ask (⌘⇧L)" aria-label="Ask about the selection"><!> Ask <kbd class="svelte-r595i9">⌘⇧L</kbd></button>`);function xE(e,t){Xe(t,!0);let n=N(null),r;function i(){clearTimeout(r),r=setTimeout(()=>{let e=qa();P(n,e?.rect&&e.rect.width?{x:Math.min(window.innerWidth-90,Math.max(8,e.rect.left+e.rect.width/2-36)),y:Math.max(8,e.rect.top-38)}:null,!0)},180)}function a(e){if(e.type===`click`&&e.detail!==0)return;e.preventDefault();let t=Ja();P(n,null),t&&(window.getSelection()?.removeAllRanges(),Z.add(t))}var o=Yr();Lr(`selectionchange`,sn,i),Lr(`scroll`,on,()=>P(n,null)),Lr(`resize`,on,()=>P(n,null));var s=L(o),c=e=>{var t=bE();$(I(t),{name:`bubble`,size:12,weight:2.2}),j(2),A(t),V(()=>Oi(t,`left:${H(n).x??``}px; top:${H(n).y??``}px`)),U(`mousedown`,t,a),U(`click`,t,a),G(e,t)};q(s,e=>{H(n)&&e(c)}),G(e,o),Ze()}Rr([`mousedown`,`click`]);var SE=W(`<span class="badge svelte-1n46o8q"> </span>`),CE=W(`<button role="tab"><!><span class="label svelte-1n46o8q"> </span><!></button>`),wE=W(`<button class="btn icon ghost svelte-1n46o8q" title="New… — a change, a bug, a feature (N)" aria-label="New…"><!></button>`),TE=W(`<button title="Ask about the project (⌘L)" aria-label="Ask"><!></button>`),EE=W(`<button class="btn icon ghost svelte-1n46o8q" title="Notify me when a run needs me while I look elsewhere" aria-label="Notify me"><!></button>`),DE=W(`<button role="radio"><!></button>`),OE=W(`<div class="loading svelte-1n46o8q" aria-busy="true"><span class="spinner svelte-1n46o8q"></span></div>`),kE=W(`<!> <!> <!> <!>`,1),AE=W(`<!> <!> <!>`,1),jE=W(`<div><header class="toolbar glass svelte-1n46o8q"><div class="brand svelte-1n46o8q"><svg viewBox="0 0 64 64" width="24" height="24" aria-hidden="true" class="svelte-1n46o8q"><defs class="svelte-1n46o8q"><linearGradient id="g" x1="0" y1="0" x2="0" y2="1" class="svelte-1n46o8q"><stop offset="0" stop-color="#3b9bff" class="svelte-1n46o8q"></stop><stop offset="1" stop-color="#0060df" class="svelte-1n46o8q"></stop></linearGradient></defs><rect width="64" height="64" rx="15" fill="url(#g)" class="svelte-1n46o8q"></rect><path d="M19 33.5 28.5 43 46 22" fill="none" stroke="#fff" stroke-width="6.5" stroke-linecap="round" stroke-linejoin="round" class="svelte-1n46o8q"></path></svg> <div class="names svelte-1n46o8q"><strong class="svelte-1n46o8q">speccoder</strong> <span class="project svelte-1n46o8q"> </span></div></div> <div role="tablist" aria-label="Views"><span class="thumb svelte-1n46o8q" aria-hidden="true"></span> <!></div> <div class="right svelte-1n46o8q"><!> <!> <button class="search svelte-1n46o8q" aria-label="Actions"><!><span class="svelte-1n46o8q">Actions</span><kbd class="svelte-1n46o8q">⌘K</kbd></button> <!> <button title="Settings (,)" aria-label="Settings"><!></button> <div class="themes svelte-1n46o8q" role="radiogroup" aria-label="Appearance"></div></div></header> <!> <main class="svelte-1n46o8q"><!></main> <!> <!></div> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!>`,1);function ME(e,t){Xe(t,!0);let n=N(F(localStorage.getItem(`speccoder-theme`)??`auto`));B(()=>{H(n)===`auto`?document.documentElement.removeAttribute(`data-theme`):document.documentElement.setAttribute(`data-theme`,H(n)),localStorage.setItem(`speccoder-theme`,H(n))});let r=[[`light`,`sun`,`Light`],[`auto`,`halfcircle`,`Automatic`],[`dark`,`moon`,`Dark`]],i=N(F(typeof Notification<`u`&&Notification.permission==="default")),a=[{v:`inbox`,label:`Needs You`,icon:`tray`,key:`1`},{v:`overview`,label:`Overview`,icon:`list`,key:`2`},{v:`board`,label:`Board`,icon:`grid`,key:`3`},{v:`code`,label:`Code`,icon:`terminal`,key:`4`},{v:`documents`,label:`Spec & Plan`,icon:`doc`,key:`5`},{v:`report`,label:`Report`,icon:`chart`,key:`6`}];function o(e){if(e===Q.view)return;let t=document;t.startViewTransition&&!matchMedia(`(prefers-reduced-motion: reduce)`).matches?t.startViewTransition(()=>zt(()=>Q.view=e)):Q.view=e}function s(e){let t=e.target?.closest(`input, textarea, select`);if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`){e.preventDefault(),Q.palette=!Q.palette;return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`l`&&!Q.waiting&&!Q.welcome)return e.preventDefault(),c(e.shiftKey?`edit.addToAsk`:`view.ask`);if((e.metaKey||e.ctrlKey)&&e.shiftKey&&(e.key.toLowerCase()===`t`||e.key===`Enter`))return e.preventDefault(),c(e.key===`Enter`?`review.send`:`review.tests`);let n=Q.shape||Q.composer||Q.newFeature||Q.newProject||Q.clone||Q.quick||Q.bugSheet||Q.confirming||Q.keys||Q.personStep||Q.help;if(t||fd(e.target)||Q.waiting||Q.input||Q.palette||n)return;if(e.key===`?`&&(Q.keys=!0),e.key===`N`&&e.shiftKey&&!e.metaKey&&!e.ctrlKey){e.preventDefault(),Q.welcome?Q.newProject={}:Q.composer={};return}if(Q.welcome)return;e.key===`,`&&o(`settings`),e.key===`q`&&(Q.quick=!0),e.key===`B`&&e.shiftKey&&(Q.bugSheet={});let r=a.find(t=>t.key===e.key);r&&o(r.v),e.key===`n`&&Q.primary&&Q.perform(Q.primary),e.key===`Escape`&&Q.selectTask(null)}function c(e){let t=e=>Q.actions.find(e),r=(e,t)=>e?void Q.perform(e):Q.toast({tone:`warn`,text:t}),i=a.find(t=>`view.${t.v}`===e);if(i)return o(i.v);switch(e){case`app.settings`:return o(`settings`);case`view.sidebar`:Q.sidebar=!Q.sidebar;return;case`view.statusbar`:Q.statusbar=!Q.statusbar;return;case`view.actions`:Q.palette=!0;return;case`view.ask`:return Z.toggle(!Z.open||!document.activeElement?.closest(`.ask`));case`view.askNew`:return Z.fresh(),Z.toggle(!0);case`file.explore`:Q.explore={};return;case`edit.addToAsk`:{let e=Ja();if(e)return window.getSelection()?.removeAllRanges(),Z.add(e);if(!Q.selected)return Q.toast({tone:`warn`,text:`Select words, a task or a row to add it to Ask`});let t=Q.report?.data?.tasks.find(e=>e.id===Q.selected);return Z.add({kind:`task`,reference:{task:Q.selected,feature:Q.report?.data?.feature??null},label:t?`${t.id} ${t.title}`:Q.selected})}case`theme.light`:case`theme.dark`:case`theme.auto`:P(n,e.slice(6),!0);return;case`file.new`:Q.welcome?Q.newProject={}:Q.composer={};return;case`file.new_feature`:if(Q.welcome)return void(Q.newProject={});Q.newFeature={};return;case`file.new_project`:Q.newProject={};return;case`file.sample`:return Q.welcome?.sample?void Q.run(ja({kind:`open_sample`,fresh:!1},{group:`work`,label:`try the sample`,why:``,command:`speccoder sample`})):Q.toast({tone:`warn`,text:Q.welcome?`This build has no sample`:`Try the Sample opens in a host started outside a project`,detail:Q.welcome?`SAMPLE-MISSING`:`speccoder sample, then speccoder ui -C <its path>`});case`file.issues`:o(`overview`),requestAnimationFrame(()=>{let e=document.getElementById(`github`);e?.scrollIntoView({behavior:`smooth`,block:`start`}),e?.focus({preventScroll:!0})});return;case`file.quick`:Q.quick=!0;return;case`file.bug`:Q.bugSheet={};return;case`file.commit`:return r(Oa(Q.actions,`commit`)[0],`Nothing to commit: the planning files are committed`);case`run.feature`:return r(Oa(Q.actions,`run_feature`)[0],`No task is ready to run`);case`run.task`:return r(Oa(Q.actions,`run_task`)[0],`Select a ready task first`);case`run.converge`:return r(Oa(Q.actions,`converge`)[0],`Nothing to re-check: no tick was proven against an earlier wording`);case`task.nudge`:case`task.skip`:case`task.accept`:{let t=e===`task.nudge`?`nudge`:e===`task.skip`?`skip`:`accept`;return Q.selected?r(Oa(Q.actions,t,Q.selected).find(e=>e.group===`task`),`${Q.selected} cannot be ${t===`accept`?`accepted`:t===`skip`?`skipped`:`nudged`} now`):Q.toast({tone:`warn`,text:`Select a task first (click its card on the board)`})}case`task.evidence`:if(!Q.selected)return Q.toast({tone:`warn`,text:`Select a task first (click its card on the board)`});o(`board`),Q.selectTask(Q.selected);return;case`run.stop`:return Q.job?.running?void Q.stop():Q.toast({tone:`warn`,text:`Nothing is running`});case`review.spec`:return Q.doc=`review`,o(`documents`);case`review.tests`:Q.doc=`review`,o(`documents`),requestAnimationFrame(()=>window.dispatchEvent(new CustomEvent(`speccoder:review`,{detail:e})));return;case`review.send`:case`review.undo`:window.dispatchEvent(new CustomEvent(`speccoder:review`,{detail:e}));return;case`review.inbox`:return o(`inbox`);case`review.pr`:return r(t(e=>e.run?.kind===`pull_request`),`No pull request can be opened from here`);case`review.report`:return o(`report`);case`help.doctor`:Q.help={kind:`doctor`};return;case`help.bug_report`:Q.copyBugReport();return}}B(()=>{let e=e=>c(e.detail);return window.addEventListener(`speccoder:menu`,e),()=>window.removeEventListener(`speccoder:menu`,e)}),B(()=>{if(Q.loading)return;let e=document.getElementById(`splash`);e&&(e.classList.add(`out`),setTimeout(()=>e.remove(),450))});let l=M(()=>Q.report?.data??null),u=M(()=>Q.view!==`settings`&&Q.view!==`overview`&&Q.view!==`inbox`&&(Q.report?.code===`NO-PROJECT`||Q.preflight.some(e=>e.code===`CONFIG-MISSING`))),d=M(()=>a.findIndex(e=>e.v===Q.view)),f=N(void 0),p=F([]),m=N(F({x:0,w:0})),h=()=>{let e=p[Math.max(H(d),0)];e&&P(m,{x:e.offsetLeft,w:e.offsetWidth},!0)};B(()=>{if(H(d),Q.inbox?.data?.items.length,h(),requestAnimationFrame(h),document.fonts?.ready.then(h),!H(f))return;let e=new ResizeObserver(h);e.observe(H(f));for(let t of p)t&&e.observe(t);return()=>e.disconnect()}),B(()=>{let e=Q.report?.data?.feature??Q.project?.name??`speccoder`,t=Q.inbox?.data?.items.length??0;document.title=Q.waiting?`● Needs you · ${e}`:t&&!Q.job?.running?`(${t}) ${e} · speccoder`:Q.job?.running?`▶ ${Q.task?.id??`Working`} · ${e}`:`${e} · speccoder`}),B(()=>{let e=Q.location;e!==location.pathname+location.search&&(location.search.includes(`feature=`)?history.pushState(null,``,e):history.replaceState(null,``,e))});var _=jE();Lr(`keydown`,on,s);var v=L(_);let y;var b=I(v),x=I(b),S=z(I(x),2),C=R(z(I(S),2),!0);A(S),A(x);var w=z(x,2);let T;J(z(I(w),2),19,()=>a,e=>e.v,(e,t,n)=>{var r=CE();let i;var a=I(r);$(a,{get name(){return H(t).icon},size:15});var s=z(a),c=R(s,!0),l=z(s),u=e=>{var t=SE(),n=R(t,!0);V(()=>{X(t,`aria-label`,`${Q.blocked??``} blocked on you`),K(n,Q.blocked)}),G(e,t)};q(l,e=>{H(t).v===`inbox`&&Q.blocked&&e(u)}),A(r),sa(r,(e,t)=>p[t]=e,e=>p?.[e],()=>[H(n)]),V(()=>{X(r,`aria-selected`,Q.view===H(t).v),X(r,`title`,`${H(t).label??``} (${H(t).key??``})`),X(r,`aria-label`,H(t).label),i=Y(r,1,`svelte-1n46o8q`,null,i,{on:Q.view===H(t).v}),K(c,H(t).label)}),U(`click`,r,()=>o(H(t).v)),G(e,r)}),A(w),sa(w,e=>P(f,e),()=>H(f));var E=z(w,2),ee=I(E),D=e=>{var t=wE();$(I(t),{name:`plus`,size:17}),A(t),U(`click`,t,()=>Q.composer={}),G(e,t)};q(ee,e=>{Q.welcome||e(D)});var O=z(ee,2),k=e=>{var t=TE();let n;$(I(t),{name:`bubble`,size:17}),A(t),V(()=>{n=Y(t,1,`btn icon ghost svelte-1n46o8q`,null,n,{onv:Z.open}),X(t,`aria-pressed`,Z.open)}),U(`click`,t,()=>Z.toggle()),G(e,t)};q(O,e=>{Q.welcome||e(k)});var te=z(O,2);$(I(te),{name:`search`,size:15}),j(2),A(te);var ne=z(te,2),re=e=>{var t=EE();$(I(t),{name:`bell`,size:17}),A(t),U(`click`,t,async()=>{await Q.allowNotifications(),P(i,!1)}),G(e,t)};q(ne,e=>{H(i)&&e(re)});var ie=z(ne,2);let ae;$(I(ie),{name:`gear`,size:17}),A(ie);var oe=z(ie,2);J(oe,21,()=>r,([e,t,n])=>e,(e,t)=>{var r=M(()=>g(H(t),3));let i=()=>H(r)[0],a=()=>H(r)[1],o=()=>H(r)[2];var s=DE();let c;$(I(s),{get name(){return a()},size:14}),A(s),V(()=>{X(s,`aria-checked`,H(n)===i()),X(s,`title`,o()),X(s,`aria-label`,o()),c=Y(s,1,`svelte-1n46o8q`,null,c,{on:H(n)===i()})}),U(`click`,s,()=>P(n,i(),!0)),G(e,s)}),A(oe),A(E),A(b);var se=z(b,2),ce=e=>{no(e,{})};q(se,e=>{Q.sidebar&&!Q.welcome&&e(ce)});var le=z(se,2),ue=I(le),de=e=>{G(e,OE())},fe=e=>{FC(e,{})},pe=e=>{var t=AE(),n=L(t),r=e=>{rw(e,{get sample(){return Q.project.sample}})};q(n,e=>{Q.project?.sample&&e(r)});var i=z(n,2),a=e=>{eS(e,{})},o=e=>{g_(e,{})},s=e=>{Rg(e,{})},c=e=>{hb(e,{})},d=e=>{_x(e,{})},f=e=>{{let t=M(()=>Q.view!==`board`);os(e,{get compact(){return H(t)}})}};q(i,e=>{Q.view===`setup`||H(u)?e(a):Q.view===`inbox`?e(o,1):Q.view===`overview`?e(s,2):Q.view===`settings`?e(c,3):Q.view===`code`&&!H(l)?e(d,4):e(f,-1)});var p=z(i,2),m=e=>{var t=kE(),n=L(t),r=e=>{Ec(e,{})};q(n,e=>{Q.view===`board`&&e(r)});var i=z(n,2),a=e=>{_x(e,{})};q(i,e=>{Q.view===`code`&&e(a)});var o=z(i,2),s=e=>{yf(e,{})};q(o,e=>{Q.view===`documents`&&e(s)});var c=z(o,2),l=e=>{Bp(e,{})};q(c,e=>{Q.view===`report`&&e(l)}),G(e,t)};q(p,e=>{H(l)&&!H(u)&&Q.view!==`setup`&&Q.view!==`overview`&&Q.view!==`inbox`&&Q.view!==`settings`&&e(m)}),G(e,t)};q(ue,e=>{Q.loading?e(de):Q.welcome?e(fe,1):e(pe,-1)}),A(le);var me=z(le,2),he=e=>{_h(e,{})};q(me,e=>{Q.selected&&e(he)});var ge=z(me,2),_e=e=>{B_(e,{})};q(ge,e=>{Q.statusbar&&!Q.welcome&&e(_e)}),A(v);var ve=z(v,2);Qh(ve,{});var ye=z(ve,2),be=e=>{pg(e,{})};q(ye,e=>{Q.waiting&&e(be)});var xe=z(ye,2),Se=e=>{hg(e,{})};q(xe,e=>{Q.input&&e(Se)});var Ce=z(xe,2),we=e=>{bS(e,{})};q(Ce,e=>{Q.confirming&&e(we)});var Te=z(Ce,2),Ee=e=>{ES(e,{})};q(Te,e=>{Q.remedy&&e(Ee)});var De=z(Te,2),Oe=e=>{bg(e,{})};q(De,e=>{Q.palette&&e(Oe)});var ke=z(De,2),Ae=e=>{U_(e,{})};q(ke,e=>{Q.context&&e(Ae)});var je=z(ke,2),Me=e=>{q_(e,{})};q(je,e=>{Q.quick&&e(Me)});var Ne=z(je,2),Pe=e=>{Bv(e,{})};q(Ne,e=>{Q.bugSheet&&e(Pe)});var Fe=z(Ne,2),Ie=e=>{jS(e,{})};q(Fe,e=>{Q.composer&&e(Ie)});var Le=z(Fe,2),Re=e=>{XS(e,{})};q(Le,e=>{Q.newFeature&&e(Re)});var ze=z(Le,2),Be=e=>{cE(e,{})};q(ze,e=>{Q.explore&&e(Be)});var Ve=z(ze,2),He=e=>{SC(e,{})};q(Ve,e=>{Q.newProject&&e(He)});var Ue=z(Ve,2),We=e=>{GC(e,{})};q(Ue,e=>{Q.clone&&e(We)});var Ge=z(Ue,2),Ke=e=>{sw(e,{})};q(Ge,e=>{Q.keys&&e(Ke)});var qe=z(Ge,2),Je=e=>{zw(e,{})};q(qe,e=>{Q.help&&e(Je)});var Ye=z(qe,2),Qe=e=>{BT(e,{})};q(Ye,e=>{Z.open&&!Q.welcome&&e(Qe)});var $e=z(Ye,2),et=e=>{yE(e,{})};q($e,e=>{Z.sheet&&e(et)});var tt=z($e,2),nt=e=>{xE(e,{})};q(tt,e=>{Q.welcome||e(nt)});var rt=z(tt,2),it=e=>{kw(e,{})};q(rt,e=>{Q.personStep&&e(it)});var at=z(rt,2),ot=e=>{Tv(e,{})};q(at,e=>{Q.shape&&e(ot)}),Eg(z(at,2),{}),V(()=>{y=Y(v,1,`shell svelte-1n46o8q`,null,y,{nosidebar:!Q.sidebar||!!Q.welcome,nostatus:!Q.statusbar||!!Q.welcome,asking:Z.open&&!Q.welcome}),Oi(v,`--ask-w:${Z.width??``}px`),K(C,Q.project?.name??``),T=Y(w,1,`segmented svelte-1n46o8q`,null,T,{none:H(d)<0,hide:!!Q.welcome}),Oi(w,`--x:${H(m).x??``}px; --w:${H(m).w??``}px`),ae=Y(ie,1,`btn icon ghost svelte-1n46o8q`,null,ae,{onv:Q.view===`settings`})}),U(`click`,te,()=>Q.palette=!0),U(`click`,ie,()=>o(`settings`)),G(e,_),Ze()}Rr([`click`]);try{let e=localStorage.getItem(`speccoder-theme`);(e===`light`||e===`dark`)&&document.getElementById(`splash`)?.classList.add(e)}catch{}Q.start(),ei(ME,{target:document.getElementById(`app`)});export{js as t};