@staff0rd/assist 0.143.0 → 0.144.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/backlog/web/bundle.js +1 -1
- package/dist/index.js +42 -26
- package/package.json +1 -1
|
@@ -62,7 +62,7 @@ ${t}</tr>
|
|
|
62
62
|
`}tablecell(t){let e=this.parser.parseInline(t.tokens),n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`</${n}>
|
|
63
63
|
`}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${Le(t,!0)}</code>`}br(t){return"<br>"}del({tokens:t}){return`<del>${this.parser.parseInline(t)}</del>`}link({href:t,title:e,tokens:n}){let l=this.parser.parseInline(n),a=H0(t);if(a===null)return l;t=a;let i='<a href="'+t+'"';return e&&(i+=' title="'+Le(e)+'"'),i+=">"+l+"</a>",i}image({href:t,title:e,text:n,tokens:l}){l&&(n=this.parser.parseInline(l,this.parser.textRenderer));let a=H0(t);if(a===null)return Le(n);t=a;let i=`<img src="${t}" alt="${n}"`;return e&&(i+=` title="${Le(e)}"`),i+=">",i}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:Le(t.text)}},yf=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}},cn=class rf{constructor(e){w(this,"options");w(this,"renderer");w(this,"textRenderer");this.options=e||yl,this.options.renderer=this.options.renderer||new Xc,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new yf}static parse(e,n){return new rf(n).parse(e)}static parseInline(e,n){return new rf(n).parseInline(e)}parse(e,n=!0){let l="";for(let a=0;a<e.length;a++){let i=e[a];if(this.options.extensions?.renderers?.[i.type]){let c=i,o=this.options.extensions.renderers[c.type].call({parser:this},c);if(o!==!1||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(c.type)){l+=o||"";continue}}let u=i;switch(u.type){case"space":{l+=this.renderer.space(u);continue}case"hr":{l+=this.renderer.hr(u);continue}case"heading":{l+=this.renderer.heading(u);continue}case"code":{l+=this.renderer.code(u);continue}case"table":{l+=this.renderer.table(u);continue}case"blockquote":{l+=this.renderer.blockquote(u);continue}case"list":{l+=this.renderer.list(u);continue}case"html":{l+=this.renderer.html(u);continue}case"paragraph":{l+=this.renderer.paragraph(u);continue}case"text":{let c=u,o=this.renderer.text(c);for(;a+1<e.length&&e[a+1].type==="text";)c=e[++a],o+=`
|
|
64
64
|
`+this.renderer.text(c);n?l+=this.renderer.paragraph({type:"paragraph",raw:o,text:o,tokens:[{type:"text",raw:o,text:o,escaped:!0}]}):l+=o;continue}default:{let c='Token with "'+u.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return l}parseInline(e,n=this.renderer){let l="";for(let a=0;a<e.length;a++){let i=e[a];if(this.options.extensions?.renderers?.[i.type]){let c=this.options.extensions.renderers[i.type].call({parser:this},i);if(c!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(i.type)){l+=c||"";continue}}let u=i;switch(u.type){case"escape":{l+=n.text(u);break}case"html":{l+=n.html(u);break}case"link":{l+=n.link(u);break}case"image":{l+=n.image(u);break}case"strong":{l+=n.strong(u);break}case"em":{l+=n.em(u);break}case"codespan":{l+=n.codespan(u);break}case"br":{l+=n.br(u);break}case"del":{l+=n.del(u);break}case"text":{l+=n.text(u);break}default:{let c='Token with "'+u.type+'" type was not found.';if(this.options.silent)return console.error(c),"";throw new Error(c)}}}return l}},uf,Gc=(uf=class{constructor(t){w(this,"options");w(this,"block");this.options=t||yl}preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}provideLexer(){return this.block?un.lex:un.lexInline}provideParser(){return this.block?cn.parse:cn.parseInline}},w(uf,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens"])),uf),D2=class{constructor(...t){w(this,"defaults",sf());w(this,"options",this.setOptions);w(this,"parse",this.parseMarkdown(!0));w(this,"parseInline",this.parseMarkdown(!1));w(this,"Parser",cn);w(this,"Renderer",Xc);w(this,"TextRenderer",yf);w(this,"Lexer",un);w(this,"Tokenizer",Qc);w(this,"Hooks",Gc);this.use(...t)}walkTokens(t,e){let n=[];for(let l of t)switch(n=n.concat(e.call(this,l)),l.type){case"table":{let a=l;for(let i of a.header)n=n.concat(this.walkTokens(i.tokens,e));for(let i of a.rows)for(let u of i)n=n.concat(this.walkTokens(u.tokens,e));break}case"list":{let a=l;n=n.concat(this.walkTokens(a.items,e));break}default:{let a=l;this.defaults.extensions?.childTokens?.[a.type]?this.defaults.extensions.childTokens[a.type].forEach(i=>{let u=a[i].flat(1/0);n=n.concat(this.walkTokens(u,e))}):a.tokens&&(n=n.concat(this.walkTokens(a.tokens,e)))}}return n}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(n=>{let l={...n};if(l.async=this.defaults.async||l.async||!1,n.extensions&&(n.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){let i=e.renderers[a.name];i?e.renderers[a.name]=function(...u){let c=a.renderer.apply(this,u);return c===!1&&(c=i.apply(this,u)),c}:e.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let i=e[a.level];i?i.unshift(a.tokenizer):e[a.level]=[a.tokenizer],a.start&&(a.level==="block"?e.startBlock?e.startBlock.push(a.start):e.startBlock=[a.start]:a.level==="inline"&&(e.startInline?e.startInline.push(a.start):e.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(e.childTokens[a.name]=a.childTokens)}),l.extensions=e),n.renderer){let a=this.defaults.renderer||new Xc(this.defaults);for(let i in n.renderer){if(!(i in a))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let u=i,c=n.renderer[u],o=a[u];a[u]=(...r)=>{let f=c.apply(a,r);return f===!1&&(f=o.apply(a,r)),f||""}}l.renderer=a}if(n.tokenizer){let a=this.defaults.tokenizer||new Qc(this.defaults);for(let i in n.tokenizer){if(!(i in a))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let u=i,c=n.tokenizer[u],o=a[u];a[u]=(...r)=>{let f=c.apply(a,r);return f===!1&&(f=o.apply(a,r)),f}}l.tokenizer=a}if(n.hooks){let a=this.defaults.hooks||new Gc;for(let i in n.hooks){if(!(i in a))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let u=i,c=n.hooks[u],o=a[u];Gc.passThroughHooks.has(i)?a[u]=r=>{if(this.defaults.async)return Promise.resolve(c.call(a,r)).then(d=>o.call(a,d));let f=c.call(a,r);return o.call(a,f)}:a[u]=(...r)=>{let f=c.apply(a,r);return f===!1&&(f=o.apply(a,r)),f}}l.hooks=a}if(n.walkTokens){let a=this.defaults.walkTokens,i=n.walkTokens;l.walkTokens=function(u){let c=[];return c.push(i.call(this,u)),a&&(c=c.concat(a.call(this,u))),c}}this.defaults={...this.defaults,...l}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return un.lex(t,e??this.defaults)}parser(t,e){return cn.parse(t,e??this.defaults)}parseMarkdown(t){return(n,l)=>{let a={...l},i={...this.defaults,...a},u=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&a.async===!1)return u(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof n>"u"||n===null)return u(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return u(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));i.hooks&&(i.hooks.options=i,i.hooks.block=t);let c=i.hooks?i.hooks.provideLexer():t?un.lex:un.lexInline,o=i.hooks?i.hooks.provideParser():t?cn.parse:cn.parseInline;if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(n):n).then(r=>c(r,i)).then(r=>i.hooks?i.hooks.processAllTokens(r):r).then(r=>i.walkTokens?Promise.all(this.walkTokens(r,i.walkTokens)).then(()=>r):r).then(r=>o(r,i)).then(r=>i.hooks?i.hooks.postprocess(r):r).catch(u);try{i.hooks&&(n=i.hooks.preprocess(n));let r=c(n,i);i.hooks&&(r=i.hooks.processAllTokens(r)),i.walkTokens&&this.walkTokens(r,i.walkTokens);let f=o(r,i);return i.hooks&&(f=i.hooks.postprocess(f)),f}catch(r){return u(r)}}}onError(t,e){return n=>{if(n.message+=`
|
|
65
|
-
Please report this to https://github.com/markedjs/marked.`,t){let l="<p>An error occurred:</p><pre>"+Le(n.message+"",!0)+"</pre>";return e?Promise.resolve(l):l}if(e)return Promise.reject(n);throw n}}},vl=new D2;function q(t,e){return vl.parse(t,e)}q.options=q.setOptions=function(t){return vl.setOptions(t),q.defaults=vl.defaults,Y0(q.defaults),q};q.getDefaults=sf;q.defaults=yl;q.use=function(...t){return vl.use(...t),q.defaults=vl.defaults,Y0(q.defaults),q};q.walkTokens=function(t,e){return vl.walkTokens(t,e)};q.parseInline=vl.parseInline;q.Parser=cn;q.parser=cn.parse;q.Renderer=Xc;q.TextRenderer=yf;q.Lexer=un;q.lexer=un.lex;q.Tokenizer=Qc;q.Hooks=Gc;q.parse=q;var S3=q.options,E3=q.setOptions,x3=q.use,A3=q.walkTokens,T3=q.parseInline;var R3=cn.parse,_3=un.lex;var W0=A(B(),1),on=A(z(),1);function N2({text:t}){return(0,on.jsx)("div",{className:"border border-gray-200 rounded-md p-3 mt-2 min-h-[60px] bg-gray-50",dangerouslySetInnerHTML:{__html:q.parse(t||"")}})}function P0({value:t,onChange:e}){let[n,l]=(0,W0.useState)(!1);return(0,on.jsxs)(Ut.Root,{className:"mb-4",children:[(0,on.jsxs)(Ut.Label,{className:"block font-medium mb-1 text-sm",children:["Description"," ",(0,on.jsx)("button",{type:"button",className:"text-xs text-blue-600 cursor-pointer ml-2 bg-transparent border-none p-0",onClick:()=>l(!n),children:"(preview)"})]}),(0,on.jsx)(Ut.Control,{className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm font-[inherit] min-h-[120px] resize-y",render:(0,on.jsx)("textarea",{}),placeholder:"Markdown supported",value:t,onChange:a=>e(a.target.value)}),n&&(0,on.jsx)(N2,{text:t})]})}var Ui=A(z(),1);function tv({submitLabel:t,onCancel:e}){return(0,Ui.jsxs)("div",{className:"flex gap-2 mt-4",children:[(0,Ui.jsx)("button",{type:"submit",className:"bg-blue-600 hover:bg-blue-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",children:t}),(0,Ui.jsx)("button",{type:"button",className:"bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:e,children:"Cancel"})]})}async function ev(t,e,n,l,a){let i=e.trim();if(!i)return;let u={type:t,name:i,description:n.trim()||void 0,acceptanceCriteria:l.map(o=>o.trim()).filter(Boolean)};return a?(await Tg(a.id,u),a.id):(await xg(u)).id}function nv(t){return{type:t?.type??"story",name:t?.name??"",description:t?.description??"",ac:t?.acceptanceCriteria??[],title:t?"Edit Item":"Add Item",submitLabel:t?"Save":"Add"}}async function lv(t,e,n,l,a,i,u){t.preventDefault();let c=await ev(e,n,l,a,i);c!==void 0&&u(c)}var ya=A(z(),1);function av({value:t,onChange:e}){return(0,ya.jsxs)(Ut.Root,{className:"mb-4",children:[(0,ya.jsx)(Ut.Label,{className:"block font-medium mb-1 text-sm",children:"Name"}),(0,ya.jsx)(Ut.Control,{className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm font-[inherit]",required:!0,placeholder:"Item name",value:t,onChange:n=>e(n.target.value)}),(0,ya.jsx)(Ut.Error,{className:"text-red-500 text-xs mt-1",match:"valueMissing",children:"Name is required."})]})}var Vn=A(z(),1);function iv({value:t,onChange:e}){return(0,Vn.jsxs)("fieldset",{className:"mb-4",children:[(0,Vn.jsx)("legend",{className:"block text-sm font-medium text-gray-700 mb-1",children:"Type"}),(0,Vn.jsx)("div",{className:"flex gap-4",children:["story","bug"].map(n=>(0,Vn.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,Vn.jsx)("input",{type:"radio",name:"type",value:n,checked:t===n,onChange:()=>e(n)}),(0,Vn.jsx)("span",{className:"text-sm capitalize",children:n})]},n))})]})}var re=A(z(),1);function Jc({item:t,onSaved:e,onCancel:n}){let l=nv(t),[a,i]=(0,ba.useState)(l.type),[u,c]=(0,ba.useState)(l.name),[o,r]=(0,ba.useState)(l.description),f=(0,ba.useRef)(l.ac);return(0,re.jsxs)(re.Fragment,{children:[(0,re.jsx)(qc,{onClick:n}),(0,re.jsxs)(Fs,{className:"bg-white rounded-lg p-6 border border-gray-200",onSubmit:d=>lv(d,a,u,o,f.current,t,e),children:[(0,re.jsx)("h2",{className:"mb-4",children:l.title}),(0,re.jsx)(iv,{value:a,onChange:i}),(0,re.jsx)(av,{value:u,onChange:c}),(0,re.jsx)(P0,{value:o,onChange:r}),(0,re.jsx)(w0,{initial:l.ac,onChange:d=>{f.current=d}}),(0,re.jsx)(tv,{submitLabel:l.submitLabel,onCancel:n})]})]})}var vt={};function cv(t){return"init"in t}function bf(t){return!!t.write}function uv(t){return"v"in t||"e"in t}function Fc(t){if("e"in t)throw t.e;if((vt.env?vt.env.MODE:void 0)!=="production"&&!("v"in t))throw new Error("[Bug] atom state is not initialized");return t.v}function Ic(t){return typeof t?.then=="function"}function ov(t,e,n){if(!n.p.has(t)){n.p.add(t);let l=()=>n.p.delete(t);e.then(l,l)}}function rv(t,e,n){var l;let a=new Set;for(let i of((l=n.get(t))==null?void 0:l.t)||[])a.add(i);for(let i of e.p)a.add(i);return a}var M2=(t,e,...n)=>e.read(...n),k2=(t,e,...n)=>e.write(...n),w2=(t,e)=>{var n;return(n=e.INTERNAL_onInit)==null?void 0:n.call(e,t)},B2=(t,e,n)=>{var l;return(l=e.onMount)==null?void 0:l.call(e,n)},U2=(t,e)=>{var n;let l=Et(t),a=l[0],i=l[6],u=l[9];if((vt.env?vt.env.MODE:void 0)!=="production"&&!e)throw new Error("Atom is undefined or null");let c=a.get(e);return c||(c={d:new Map,p:new Set,n:0},a.set(e,c),(n=i.i)==null||n.call(i,e),u?.(t,e)),c},L2=t=>{let e=Et(t),n=e[1],l=e[3],a=e[4],i=e[5],u=e[6],c=e[13],o=[],r=f=>{try{f()}catch(d){o.push(d)}};do{u.f&&r(u.f);let f=new Set,d=f.add.bind(f);l.forEach(s=>{var p;return(p=n.get(s))==null?void 0:p.l.forEach(d)}),l.clear(),i.forEach(d),i.clear(),a.forEach(d),a.clear(),f.forEach(r),l.size&&c(t)}while(l.size||i.size||a.size);if(o.length)throw new AggregateError(o)},H2=t=>{let e=Et(t),n=e[1],l=e[2],a=e[3],i=e[11],u=e[14],c=e[17],o=[],r=new WeakSet,f=new WeakSet,d=Array.from(a);for(;d.length;){let s=d[d.length-1],p=i(t,s);if(f.has(s)){d.pop();continue}if(r.has(s)){if(l.get(s)===p.n)o.push([s,p]);else if((vt.env?vt.env.MODE:void 0)!=="production"&&l.has(s))throw new Error("[Bug] invalidated atom exists");f.add(s),d.pop();continue}r.add(s);for(let v of rv(s,p,n))r.has(v)||d.push(v)}for(let s=o.length-1;s>=0;--s){let[p,v]=o[s],S=!1;for(let T of v.d.keys())if(T!==p&&a.has(T)){S=!0;break}S&&(u(t,p),c(t,p)),l.delete(p)}},Sf=new WeakSet,V2=(t,e)=>{var n,l;let a=Et(t),i=a[1],u=a[2],c=a[3],o=a[6],r=a[7],f=a[11],d=a[12],s=a[13],p=a[14],v=a[16],S=a[17],T=a[20],h=a[26],m=f(t,e);if(uv(m)){if(i.has(e)&&u.get(e)!==m.n)return m;let N=!1;for(let[Y,I]of m.d)if(p(t,Y).n!==I){N=!0;break}if(!N)return m}let g=!0,y=new Set(m.d.keys()),E=new Map,R=()=>{for(let N of y)E.has(N)||m.d.delete(N)},x=()=>{if(i.has(e)){let N=!c.size;S(t,e),N&&(s(t),d(t))}},_=N=>{var Y;if(N===e){let nt=f(t,N);if(!uv(nt))if(cv(N))T(t,N,N.init);else throw new Error("no atom init");return Fc(nt)}let I=p(t,N);try{return Fc(I)}finally{E.set(N,I.n),m.d.set(N,I.n),Ic(m.v)&&ov(e,m.v,I),i.has(e)&&((Y=i.get(N))==null||Y.t.add(e)),g||x()}},C,O,ut={get signal(){return C||(C=new AbortController),C.signal},get setSelf(){return(vt.env?vt.env.MODE:void 0)!=="production"&&console.warn("[DEPRECATED] setSelf is deprecated and will be removed in v3."),(vt.env?vt.env.MODE:void 0)!=="production"&&!bf(e)&&console.warn("setSelf function cannot be used with read-only atom"),!O&&bf(e)&&(O=(...N)=>{if((vt.env?vt.env.MODE:void 0)!=="production"&&g&&console.warn("setSelf function cannot be called in sync"),!g)try{return v(t,e,...N)}finally{s(t),d(t)}}),O}},st=m.n;try{(vt.env?vt.env.MODE:void 0)!=="production"&&Sf.delete(t);let N=r(t,e,_,ut);if((vt.env?vt.env.MODE:void 0)!=="production"&&Sf.has(t)&&console.warn("Detected store mutation during atom read. This is not supported."),T(t,e,N),Ic(N)){h(t,N,()=>C?.abort());let Y=()=>{R(),x()};N.then(Y,Y)}else R();return(n=o.r)==null||n.call(o,e),m}catch(N){return delete m.v,m.e=N,++m.n,m}finally{g=!1,st!==m.n&&u.get(e)===st&&(u.set(e,m.n),c.add(e),(l=o.c)==null||l.call(o,e))}},q2=(t,e)=>{let n=Et(t),l=n[1],a=n[2],i=n[11],u=[e];for(;u.length;){let c=u.pop(),o=i(t,c);for(let r of rv(c,o,l)){let f=i(t,r);a.get(r)!==f.n&&(a.set(r,f.n),u.push(r))}}},Y2=(t,e,...n)=>{let l=Et(t),a=l[3],i=l[6],u=l[8],c=l[11],o=l[12],r=l[13],f=l[14],d=l[15],s=l[16],p=l[17],v=l[20],S=!0,T=m=>Fc(f(t,m)),h=(m,...g)=>{var y;let E=c(t,m);try{if(m===e){if(!cv(m))throw new Error("atom not writable");(vt.env?vt.env.MODE:void 0)!=="production"&&Sf.add(t);let R=E.n,x=g[0];v(t,m,x),p(t,m),R!==E.n&&(a.add(m),d(t,m),(y=i.c)==null||y.call(i,m));return}else return s(t,m,...g)}finally{S||(r(t),o(t))}};try{return u(t,e,T,h,...n)}finally{S=!1}},G2=(t,e)=>{var n;let l=Et(t),a=l[1],i=l[3],u=l[6],c=l[11],o=l[15],r=l[18],f=l[19],d=c(t,e),s=a.get(e);if(s){for(let[p,v]of d.d)if(!s.d.has(p)){let S=c(t,p);r(t,p).t.add(e),s.d.add(p),v!==S.n&&(i.add(p),o(t,p),(n=u.c)==null||n.call(u,p))}for(let p of s.d)if(!d.d.has(p)){s.d.delete(p);let v=f(t,p);v?.t.delete(e)}}},j2=(t,e)=>{var n;let l=Et(t),a=l[1],i=l[4],u=l[6],c=l[10],o=l[11],r=l[12],f=l[13],d=l[14],s=l[16],p=l[18],v=o(t,e),S=a.get(e);if(!S){d(t,e);for(let T of v.d.keys())p(t,T).t.add(e);if(S={l:new Set,d:new Set(v.d.keys()),t:new Set},a.set(e,S),bf(e)){let T=()=>{let h=!0,m=(...g)=>{try{return s(t,e,...g)}finally{h||(f(t),r(t))}};try{let g=c(t,e,m);g&&(S.u=()=>{h=!0;try{g()}finally{h=!1}})}finally{h=!1}};i.add(T)}(n=u.m)==null||n.call(u,e)}return S},Q2=(t,e)=>{var n,l;let a=Et(t),i=a[1],u=a[5],c=a[6],o=a[11],r=a[19],f=o(t,e),d=i.get(e);if(!d||d.l.size)return d;let s=!1;for(let p of d.t)if((n=i.get(p))!=null&&n.d.has(e)){s=!0;break}if(!s){d.u&&u.add(d.u),d=void 0,i.delete(e);for(let p of f.d.keys()){let v=r(t,p);v?.t.delete(e)}(l=c.u)==null||l.call(c,e);return}return d},X2=(t,e,n)=>{let l=Et(t),a=l[11],i=l[27],u=a(t,e),c="v"in u,o=u.v;if(Ic(n))for(let r of u.d.keys())ov(e,n,a(t,r));u.v=n,delete u.e,(!c||!Object.is(o,u.v))&&(++u.n,Ic(o)&&i(t,o))},Z2=(t,e)=>{let n=Et(t)[14];return Fc(n(t,e))},K2=(t,e,...n)=>{let l=Et(t),a=l[12],i=l[13],u=l[16];try{return u(t,e,...n)}finally{i(t),a(t)}},J2=(t,e,n)=>{let l=Et(t),a=l[12],i=l[18],u=l[19],o=i(t,e).l;return o.add(n),a(t),()=>{o.delete(n),u(t,e),a(t)}},F2=(t,e,n)=>{let a=Et(t)[25],i=a.get(e);if(!i){i=new Set,a.set(e,i);let u=()=>a.delete(e);e.then(u,u)}i.add(n)},I2=(t,e)=>{let a=Et(t)[25].get(e);a?.forEach(i=>i())},sv=new WeakMap,Et=t=>{let e=sv.get(t);if((vt.env?vt.env.MODE:void 0)!=="production"&&!e)throw new Error("Store must be created by buildStore to read its building blocks");return e};function fv(t){let e=Et(t),n=e[24];return n?n(e):e}function dv(...t){let e={get(l){let a=Et(e)[21];return a(e,l)},set(l,...a){let i=Et(e)[22];return i(e,l,...a)},sub(l,a){let i=Et(e)[23];return i(e,l,a)}},n=[new WeakMap,new WeakMap,new WeakMap,new Set,new Set,new Set,{},M2,k2,w2,B2,U2,L2,H2,V2,q2,Y2,G2,j2,Q2,X2,Z2,K2,J2,void 0,new WeakMap,F2,I2].map((l,a)=>t[a]||l);return sv.set(e,Object.freeze(n)),e}var $c={},$2=0;function Ef(t,e){let n=`atom${++$2}`,l={toString(){return($c.env?$c.env.MODE:void 0)!=="production"&&this.debugLabel?n+":"+this.debugLabel:n}};return typeof t=="function"?l.read=t:(l.init=t,l.read=W2,l.write=P2),e&&(l.write=e),l}function W2(t){return t(this)}function P2(t,e,n){return e(this,typeof n=="function"?n(t(this)):n)}var mv;function pv(){return mv?mv():dv()}var Li;function hv(){return Li||(Li=pv(),($c.env?$c.env.MODE:void 0)!=="production"&&(globalThis.__JOTAI_DEFAULT_STORE__||(globalThis.__JOTAI_DEFAULT_STORE__=Li),globalThis.__JOTAI_DEFAULT_STORE__!==Li&&console.warn("Detected multiple Jotai instances. It may cause unexpected behavior with the default store. https://github.com/pmndrs/jotai/discussions/2044"))),Li}var kt=A(B(),1);var vv={},tE=(0,kt.createContext)(void 0);function yv(t){let e=(0,kt.useContext)(tE);return t?.store||e||hv()}var Af=t=>typeof t?.then=="function",Tf=t=>{t.status||(t.status="pending",t.then(e=>{t.status="fulfilled",t.value=e},e=>{t.status="rejected",t.reason=e}))},eE=kt.default.use||(t=>{if(t.status==="pending")throw t;if(t.status==="fulfilled")return t.value;throw t.status==="rejected"?t.reason:(Tf(t),t)}),xf=new WeakMap,gv=(t,e,n)=>{let a=fv(t)[26],i=xf.get(e);return i||(i=new Promise((u,c)=>{let o=e,r=s=>p=>{o===s&&u(p)},f=s=>p=>{o===s&&c(p)},d=()=>{try{let s=n();Af(s)?(xf.set(s,i),o=s,s.then(r(s),f(s)),a(t,s,d)):u(s)}catch(s){c(s)}};e.then(r(e),f(e)),a(t,e,d)}),xf.set(e,i)),i};function Rf(t,e){let{delay:n,unstable_promiseStatus:l=!kt.default.use}=e||{},a=yv(e),[[i,u,c],o]=(0,kt.useReducer)(f=>{let d=a.get(t);return Object.is(f[0],d)&&f[1]===a&&f[2]===t?f:[d,a,t]},void 0,()=>[a.get(t),a,t]),r=i;if((u!==a||c!==t)&&(o(),r=a.get(t)),(0,kt.useEffect)(()=>{let f=a.sub(t,()=>{if(l)try{let d=a.get(t);Af(d)&&Tf(gv(a,d,()=>a.get(t)))}catch{}if(typeof n=="number"){setTimeout(o,n);return}o()});return o(),f},[a,t,n,l]),(0,kt.useDebugValue)(r),Af(r)){let f=gv(a,r,()=>a.get(t));return l&&Tf(f),eE(f)}return r}function nE(t,e){let n=yv(e);return(0,kt.useCallback)((...a)=>{if((vv.env?vv.env.MODE:void 0)!=="production"&&!("write"in t))throw new Error("not writable atom");return n.set(t,...a)},[n,t])}function bv(t,e){return[Rf(t,e),nE(t,e)]}var Sa={},lE=Symbol((Sa.env?Sa.env.MODE:void 0)!=="production"?"RESET":"");var Sv=t=>typeof t?.then=="function";function aE(t=()=>{try{return window.localStorage}catch(n){(Sa.env?Sa.env.MODE:void 0)!=="production"&&typeof window<"u"&&console.warn(n);return}},e){var n;let l,a,i={getItem:(o,r)=>{var f,d;let s=v=>{if(v=v||"",l!==v){try{a=JSON.parse(v,e?.reviver)}catch{return r}l=v}return a},p=(d=(f=t())==null?void 0:f.getItem(o))!=null?d:null;return Sv(p)?p.then(s):s(p)},setItem:(o,r)=>{var f;return(f=t())==null?void 0:f.setItem(o,JSON.stringify(r,e?.replacer))},removeItem:o=>{var r;return(r=t())==null?void 0:r.removeItem(o)}},u=o=>(r,f,d)=>o(r,s=>{let p;try{p=JSON.parse(s||"")}catch{p=d}f(p)}),c;try{c=(n=t())==null?void 0:n.subscribe}catch{}return!c&&typeof window<"u"&&typeof window.addEventListener=="function"&&window.Storage&&(c=(o,r)=>{if(!(t()instanceof window.Storage))return()=>{};let f=d=>{d.storageArea===t()&&d.key===o&&r(d.newValue)};return window.addEventListener("storage",f),()=>{window.removeEventListener("storage",f)}}),c&&(i.subscribe=u(c)),i}var iE=aE();function Ev(t,e,n=iE,l){let a=l?.getOnInit,i=Ef(a?n.getItem(t,e):e);return(Sa.env?Sa.env.MODE:void 0)!=="production"&&(i.debugPrivate=!0),i.onMount=c=>{c(n.getItem(t,e));let o;return n.subscribe&&(o=n.subscribe(t,c,e)),o},Ef(c=>c(i),(c,o,r)=>{let f=typeof r=="function"?r(c(i)):r;return f===lE?(o(i,e),n.removeItem(t)):Sv(f)?f.then(d=>(o(i,d),n.setItem(t,d))):(o(i,f),n.setItem(t,f))})}var Wc=Ev("backlog-show-completed",!1);var Hi=A(z(),1);function xv(){let[t,e]=bv(Wc);return(0,Hi.jsxs)("label",{className:"flex items-center gap-2 text-sm text-gray-600 cursor-pointer select-none",children:[(0,Hi.jsx)("button",{type:"button",role:"switch","aria-checked":t,onClick:()=>e(!t),className:`relative inline-flex h-5 w-9 items-center rounded-full transition-colors ${t?"bg-blue-600":"bg-gray-300"}`,children:(0,Hi.jsx)("span",{className:`inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform ${t?"translate-x-[18px]":"translate-x-[3px]"}`})}),"Show completed"]})}var bl=A(z(),1),uE={todo:"\u25CB","in-progress":"\u25D4",done:"\u25CF"},cE={todo:"text-gray-400","in-progress":"text-amber-500",done:"text-green-500"},oE={story:"bg-blue-100 text-blue-700",bug:"bg-red-100 text-red-700"};function Av({item:t,onSelect:e}){return(0,bl.jsxs)("button",{type:"button",className:"bg-white rounded-lg p-4 mb-2 cursor-pointer border border-gray-200 hover:shadow-md transition-shadow flex items-center gap-3 text-left w-full font-[inherit]",onClick:e,children:[(0,bl.jsx)("span",{className:`text-lg shrink-0 ${cE[t.status]}`,children:uE[t.status]}),(0,bl.jsx)("span",{className:`text-xs font-medium rounded-full px-2 shrink-0 ${oE[t.type]}`,children:t.type}),(0,bl.jsxs)("span",{className:"text-gray-400 text-sm shrink-0",children:["#",t.id]}),(0,bl.jsx)("span",{className:"font-medium",children:t.name})]})}var Ae=A(z(),1);function Tv({items:t,onSelect:e,onAdd:n}){let a=Rf(Wc)?t:t.filter(i=>i.status!=="done");return(0,Ae.jsxs)(Ae.Fragment,{children:[(0,Ae.jsxs)("header",{className:"flex justify-between items-center mb-6",children:[(0,Ae.jsx)("h1",{className:"text-2xl font-semibold",children:"Backlog"}),(0,Ae.jsxs)("div",{className:"flex items-center gap-4",children:[(0,Ae.jsx)(xv,{}),(0,Ae.jsx)("button",{type:"button",className:"bg-blue-600 hover:bg-blue-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:n,children:"+ Add Item"})]})]}),a.length===0?(0,Ae.jsx)("div",{className:"text-center text-gray-400 py-12 px-4",children:"No items in the backlog."}):a.map(i=>(0,Ae.jsx)(Av,{item:i,onSelect:()=>e(i.id)},i.id))]})}var wv=A(B(),1);var qn=A(z(),1);function Rv({onConfirm:t,onCancel:e}){return(0,qn.jsx)("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",children:(0,qn.jsxs)("div",{className:"bg-white rounded-lg p-6 max-w-sm mx-4",children:[(0,qn.jsx)("p",{className:"text-gray-800 mb-4",children:"Are you sure you want to delete this item?"}),(0,qn.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,qn.jsx)("button",{type:"button",className:"bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:e,children:"Cancel"}),(0,qn.jsx)("button",{type:"button",className:"bg-red-600 hover:bg-red-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:t,children:"Delete"})]})]})})}var Sl=A(z(),1);function _v({criteria:t}){return t.length===0?null:(0,Sl.jsxs)("div",{className:"mb-4",children:[(0,Sl.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Acceptance Criteria"}),(0,Sl.jsx)("ul",{className:"list-none",children:t.map(e=>(0,Sl.jsxs)("li",{className:"py-1",children:[(0,Sl.jsx)("span",{className:"text-gray-500 mr-2",children:"\u2022"}),e]},e))})]})}var El=A(z(),1);function Cv({checks:t}){return(0,El.jsxs)("div",{className:"mt-2 pt-2 border-t border-gray-200",children:[(0,El.jsx)("span",{className:"text-xs uppercase text-gray-400 tracking-wide",children:"Manual Checks"}),(0,El.jsx)("ul",{className:"list-none ml-1 mt-1",children:t.map(e=>(0,El.jsxs)("li",{className:"py-0.5 text-sm text-gray-600",children:[(0,El.jsx)("span",{className:"mr-2",children:"\u2610"}),e]},e))})]})}var Ea=A(z(),1);function zv({tasks:t,marker:e}){return(0,Ea.jsx)("ul",{className:"list-none ml-1 space-y-1",children:t.map(n=>(0,Ea.jsxs)("li",{className:"py-0.5",children:[(0,Ea.jsx)("span",{className:"text-gray-500 mr-2",children:e}),n.task,n.verify&&(0,Ea.jsxs)("span",{className:"ml-2 text-xs text-gray-400",children:["verify: ",n.verify]})]},n.task))})}var Yn=A(z(),1),rE={done:"border-green-300 bg-green-50",current:"border-blue-400 bg-blue-50 ring-2 ring-blue-200",upcoming:"border-gray-200 bg-white"},sE={done:{label:"Done",style:"bg-green-100 text-green-700"},current:{label:"In Progress",style:"bg-blue-100 text-blue-700"},upcoming:{label:"Upcoming",style:"bg-gray-100 text-gray-500"}};function Ov({phase:t,index:e,status:n}){let l=sE[n],a=n==="done"?"\u2713":"\u2022",i=t.manualChecks??[];return(0,Yn.jsxs)("div",{className:`rounded-lg border p-4 ${rE[n]}`,children:[(0,Yn.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,Yn.jsxs)("span",{className:"font-medium",children:["Phase ",e+1,": ",t.name]}),(0,Yn.jsx)("span",{className:`inline-block rounded-full px-2 text-xs font-medium ${l.style}`,children:l.label})]}),(0,Yn.jsx)(zv,{tasks:t.tasks,marker:a}),i.length>0&&(0,Yn.jsx)(Cv,{checks:i})]})}var xa=A(z(),1);function fE(t,e){return e===void 0?"upcoming":t<e?"done":t===e?"current":"upcoming"}function Dv({phases:t,currentPhase:e}){return t.length===0?null:(0,xa.jsxs)("div",{className:"mb-4",children:[(0,xa.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Plan"}),(0,xa.jsx)("div",{className:"space-y-3",children:t.map((n,l)=>(0,xa.jsx)(Ov,{phase:n,index:l,status:fE(l,e)},n.name))})]})}var Pc=A(z(),1),Nv={todo:"bg-gray-100 text-gray-500","in-progress":"bg-amber-100 text-amber-800",done:"bg-green-100 text-green-800"},dE=["todo","in-progress","done"];function Mv({current:t,onStatusChange:e}){return e?(0,Pc.jsx)("select",{value:t,onChange:n=>e(n.target.value),className:`rounded-full px-2.5 text-xs font-medium cursor-pointer ${Nv[t]}`,children:dE.map(n=>(0,Pc.jsx)("option",{value:n,children:n},n))}):(0,Pc.jsx)("span",{className:`inline-block rounded-full px-2.5 text-xs font-medium ${Nv[t]}`,children:t})}var se=A(z(),1),mE={story:"bg-blue-100 text-blue-700",bug:"bg-red-100 text-red-700"};function pE({content:t}){return(0,se.jsx)("div",{className:"markdown leading-relaxed",dangerouslySetInnerHTML:{__html:q.parse(t)}})}function kv({item:t,onStatusChange:e}){return(0,se.jsxs)("div",{className:"bg-white rounded-lg p-6 border border-gray-200",children:[(0,se.jsx)("h2",{children:t.name}),(0,se.jsxs)("div",{className:"text-gray-400 text-sm mb-4 flex items-center gap-2",children:["#",t.id,(0,se.jsx)("span",{className:`inline-block rounded-full px-2.5 text-xs font-medium ${mE[t.type]}`,children:t.type}),(0,se.jsx)(Mv,{current:t.status,onStatusChange:e})]}),t.description&&(0,se.jsxs)("div",{className:"mb-4",children:[(0,se.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Description"}),(0,se.jsx)(pE,{content:t.description})]}),(0,se.jsx)(_v,{criteria:t.acceptanceCriteria}),t.plan&&(0,se.jsx)(Dv,{phases:t.plan,currentPhase:t.currentPhase})]})}var Lt=A(z(),1);function hE({itemId:t,onDeleted:e}){let[n,l]=(0,wv.useState)(!1);return(0,Lt.jsxs)(Lt.Fragment,{children:[n&&(0,Lt.jsx)(Rv,{onConfirm:async()=>{await Ag(t),e()},onCancel:()=>l(!1)}),(0,Lt.jsx)("button",{type:"button",className:"bg-red-600 hover:bg-red-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:()=>l(!0),children:"Delete"})]})}function gE({itemId:t,onBack:e,onEdit:n,onDeleted:l}){return(0,Lt.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,Lt.jsx)(qc,{onClick:e}),(0,Lt.jsxs)("div",{className:"flex gap-2",children:[(0,Lt.jsx)("button",{type:"button",className:"bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:n,children:"Edit"}),(0,Lt.jsx)(hE,{itemId:t,onDeleted:l})]})]})}function Bv({item:t,onBack:e,onEdit:n,onDeleted:l,onStatusChanged:a}){return(0,Lt.jsxs)(Lt.Fragment,{children:[(0,Lt.jsx)(gE,{itemId:t.id,onBack:e,onEdit:n,onDeleted:l}),(0,Lt.jsx)(kv,{item:t,onStatusChange:async i=>{await Rg(t.id,i),a()}})]})}var _f=A(z(),1);function Uv({item:t,view:e,onNavigate:n,onReloadAndNavigate:l}){return e.kind==="edit"?(0,_f.jsx)(Jc,{item:t,onSaved:a=>l({kind:"detail",id:a}),onCancel:()=>n({kind:"detail",id:e.id})}):(0,_f.jsx)(Bv,{item:t,onBack:()=>n({kind:"list"}),onEdit:()=>n({kind:"edit",id:e.id}),onDeleted:()=>l({kind:"list"}),onStatusChanged:()=>l({kind:"detail",id:e.id})})}var to=A(z(),1);function Lv({view:t,items:e,onNavigate:n,onReloadAndNavigate:l}){if(t.kind==="detail"||t.kind==="edit"){let a=e.find(i=>i.id===t.id);return a?(0,to.jsx)(Uv,{item:a,view:t,onNavigate:n,onReloadAndNavigate:l}):null}return t.kind==="add"?(0,to.jsx)(Jc,{onSaved:()=>l({kind:"list"}),onCancel:()=>n({kind:"list"})}):(0,to.jsx)(Tv,{items:e,onSelect:a=>n({kind:"detail",id:a}),onAdd:()=>n({kind:"add"})})}var Cf=A(z(),1);function vE(){let[t,e]=(0,Gn.useState)([]),[n,l]=(0,Gn.useState)({kind:"list"}),a=(0,Gn.useCallback)(async()=>{e(await Eg())},[]);(0,Gn.useEffect)(()=>{a()},[a]);let i=(0,Gn.useCallback)(async u=>{await a(),l(u)},[a]);return(0,Cf.jsx)(Lv,{view:n,items:t,onNavigate:l,onReloadAndNavigate:i})}var Hv=document.getElementById("app");Hv&&(0,Vv.createRoot)(Hv).render((0,Cf.jsx)(vE,{}));})();
|
|
65
|
+
Please report this to https://github.com/markedjs/marked.`,t){let l="<p>An error occurred:</p><pre>"+Le(n.message+"",!0)+"</pre>";return e?Promise.resolve(l):l}if(e)return Promise.reject(n);throw n}}},vl=new D2;function q(t,e){return vl.parse(t,e)}q.options=q.setOptions=function(t){return vl.setOptions(t),q.defaults=vl.defaults,Y0(q.defaults),q};q.getDefaults=sf;q.defaults=yl;q.use=function(...t){return vl.use(...t),q.defaults=vl.defaults,Y0(q.defaults),q};q.walkTokens=function(t,e){return vl.walkTokens(t,e)};q.parseInline=vl.parseInline;q.Parser=cn;q.parser=cn.parse;q.Renderer=Xc;q.TextRenderer=yf;q.Lexer=un;q.lexer=un.lex;q.Tokenizer=Qc;q.Hooks=Gc;q.parse=q;var S3=q.options,E3=q.setOptions,x3=q.use,A3=q.walkTokens,T3=q.parseInline;var R3=cn.parse,_3=un.lex;var W0=A(B(),1),on=A(z(),1);function N2({text:t}){return(0,on.jsx)("div",{className:"border border-gray-200 rounded-md p-3 mt-2 min-h-[60px] bg-gray-50",dangerouslySetInnerHTML:{__html:q.parse(t||"")}})}function P0({value:t,onChange:e}){let[n,l]=(0,W0.useState)(!1);return(0,on.jsxs)(Ut.Root,{className:"mb-4",children:[(0,on.jsxs)(Ut.Label,{className:"block font-medium mb-1 text-sm",children:["Description"," ",(0,on.jsx)("button",{type:"button",className:"text-xs text-blue-600 cursor-pointer ml-2 bg-transparent border-none p-0",onClick:()=>l(!n),children:"(preview)"})]}),(0,on.jsx)(Ut.Control,{className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm font-[inherit] min-h-[120px] resize-y",render:(0,on.jsx)("textarea",{}),placeholder:"Markdown supported",value:t,onChange:a=>e(a.target.value)}),n&&(0,on.jsx)(N2,{text:t})]})}var Ui=A(z(),1);function tv({submitLabel:t,onCancel:e}){return(0,Ui.jsxs)("div",{className:"flex gap-2 mt-4",children:[(0,Ui.jsx)("button",{type:"submit",className:"bg-blue-600 hover:bg-blue-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",children:t}),(0,Ui.jsx)("button",{type:"button",className:"bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:e,children:"Cancel"})]})}async function ev(t,e,n,l,a){let i=e.trim();if(!i)return;let u={type:t,name:i,description:n.trim()||void 0,acceptanceCriteria:l.map(o=>o.trim()).filter(Boolean)};return a?(await Tg(a.id,u),a.id):(await xg(u)).id}function nv(t){return{type:t?.type??"story",name:t?.name??"",description:t?.description??"",ac:t?.acceptanceCriteria??[],title:t?"Edit Item":"Add Item",submitLabel:t?"Save":"Add"}}async function lv(t,e,n,l,a,i,u){t.preventDefault();let c=await ev(e,n,l,a,i);c!==void 0&&u(c)}var ya=A(z(),1);function av({value:t,onChange:e}){return(0,ya.jsxs)(Ut.Root,{className:"mb-4",children:[(0,ya.jsx)(Ut.Label,{className:"block font-medium mb-1 text-sm",children:"Name"}),(0,ya.jsx)(Ut.Control,{className:"w-full px-3 py-2 border border-gray-300 rounded-md text-sm font-[inherit]",required:!0,placeholder:"Item name",value:t,onChange:n=>e(n.target.value)}),(0,ya.jsx)(Ut.Error,{className:"text-red-500 text-xs mt-1",match:"valueMissing",children:"Name is required."})]})}var Vn=A(z(),1);function iv({value:t,onChange:e}){return(0,Vn.jsxs)("fieldset",{className:"mb-4",children:[(0,Vn.jsx)("legend",{className:"block text-sm font-medium text-gray-700 mb-1",children:"Type"}),(0,Vn.jsx)("div",{className:"flex gap-4",children:["story","bug"].map(n=>(0,Vn.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer",children:[(0,Vn.jsx)("input",{type:"radio",name:"type",value:n,checked:t===n,onChange:()=>e(n)}),(0,Vn.jsx)("span",{className:"text-sm capitalize",children:n})]},n))})]})}var re=A(z(),1);function Jc({item:t,onSaved:e,onCancel:n}){let l=nv(t),[a,i]=(0,ba.useState)(l.type),[u,c]=(0,ba.useState)(l.name),[o,r]=(0,ba.useState)(l.description),f=(0,ba.useRef)(l.ac);return(0,re.jsxs)(re.Fragment,{children:[(0,re.jsx)(qc,{onClick:n}),(0,re.jsxs)(Fs,{className:"bg-white rounded-lg p-6 border border-gray-200",onSubmit:d=>lv(d,a,u,o,f.current,t,e),children:[(0,re.jsx)("h2",{className:"mb-4",children:l.title}),(0,re.jsx)(iv,{value:a,onChange:i}),(0,re.jsx)(av,{value:u,onChange:c}),(0,re.jsx)(P0,{value:o,onChange:r}),(0,re.jsx)(w0,{initial:l.ac,onChange:d=>{f.current=d}}),(0,re.jsx)(tv,{submitLabel:l.submitLabel,onCancel:n})]})]})}var vt={};function cv(t){return"init"in t}function bf(t){return!!t.write}function uv(t){return"v"in t||"e"in t}function Fc(t){if("e"in t)throw t.e;if((vt.env?vt.env.MODE:void 0)!=="production"&&!("v"in t))throw new Error("[Bug] atom state is not initialized");return t.v}function Ic(t){return typeof t?.then=="function"}function ov(t,e,n){if(!n.p.has(t)){n.p.add(t);let l=()=>n.p.delete(t);e.then(l,l)}}function rv(t,e,n){var l;let a=new Set;for(let i of((l=n.get(t))==null?void 0:l.t)||[])a.add(i);for(let i of e.p)a.add(i);return a}var M2=(t,e,...n)=>e.read(...n),k2=(t,e,...n)=>e.write(...n),w2=(t,e)=>{var n;return(n=e.INTERNAL_onInit)==null?void 0:n.call(e,t)},B2=(t,e,n)=>{var l;return(l=e.onMount)==null?void 0:l.call(e,n)},U2=(t,e)=>{var n;let l=Et(t),a=l[0],i=l[6],u=l[9];if((vt.env?vt.env.MODE:void 0)!=="production"&&!e)throw new Error("Atom is undefined or null");let c=a.get(e);return c||(c={d:new Map,p:new Set,n:0},a.set(e,c),(n=i.i)==null||n.call(i,e),u?.(t,e)),c},L2=t=>{let e=Et(t),n=e[1],l=e[3],a=e[4],i=e[5],u=e[6],c=e[13],o=[],r=f=>{try{f()}catch(d){o.push(d)}};do{u.f&&r(u.f);let f=new Set,d=f.add.bind(f);l.forEach(s=>{var p;return(p=n.get(s))==null?void 0:p.l.forEach(d)}),l.clear(),i.forEach(d),i.clear(),a.forEach(d),a.clear(),f.forEach(r),l.size&&c(t)}while(l.size||i.size||a.size);if(o.length)throw new AggregateError(o)},H2=t=>{let e=Et(t),n=e[1],l=e[2],a=e[3],i=e[11],u=e[14],c=e[17],o=[],r=new WeakSet,f=new WeakSet,d=Array.from(a);for(;d.length;){let s=d[d.length-1],p=i(t,s);if(f.has(s)){d.pop();continue}if(r.has(s)){if(l.get(s)===p.n)o.push([s,p]);else if((vt.env?vt.env.MODE:void 0)!=="production"&&l.has(s))throw new Error("[Bug] invalidated atom exists");f.add(s),d.pop();continue}r.add(s);for(let v of rv(s,p,n))r.has(v)||d.push(v)}for(let s=o.length-1;s>=0;--s){let[p,v]=o[s],S=!1;for(let T of v.d.keys())if(T!==p&&a.has(T)){S=!0;break}S&&(u(t,p),c(t,p)),l.delete(p)}},Sf=new WeakSet,V2=(t,e)=>{var n,l;let a=Et(t),i=a[1],u=a[2],c=a[3],o=a[6],r=a[7],f=a[11],d=a[12],s=a[13],p=a[14],v=a[16],S=a[17],T=a[20],h=a[26],m=f(t,e);if(uv(m)){if(i.has(e)&&u.get(e)!==m.n)return m;let N=!1;for(let[Y,I]of m.d)if(p(t,Y).n!==I){N=!0;break}if(!N)return m}let g=!0,y=new Set(m.d.keys()),E=new Map,R=()=>{for(let N of y)E.has(N)||m.d.delete(N)},x=()=>{if(i.has(e)){let N=!c.size;S(t,e),N&&(s(t),d(t))}},_=N=>{var Y;if(N===e){let nt=f(t,N);if(!uv(nt))if(cv(N))T(t,N,N.init);else throw new Error("no atom init");return Fc(nt)}let I=p(t,N);try{return Fc(I)}finally{E.set(N,I.n),m.d.set(N,I.n),Ic(m.v)&&ov(e,m.v,I),i.has(e)&&((Y=i.get(N))==null||Y.t.add(e)),g||x()}},C,O,ut={get signal(){return C||(C=new AbortController),C.signal},get setSelf(){return(vt.env?vt.env.MODE:void 0)!=="production"&&console.warn("[DEPRECATED] setSelf is deprecated and will be removed in v3."),(vt.env?vt.env.MODE:void 0)!=="production"&&!bf(e)&&console.warn("setSelf function cannot be used with read-only atom"),!O&&bf(e)&&(O=(...N)=>{if((vt.env?vt.env.MODE:void 0)!=="production"&&g&&console.warn("setSelf function cannot be called in sync"),!g)try{return v(t,e,...N)}finally{s(t),d(t)}}),O}},st=m.n;try{(vt.env?vt.env.MODE:void 0)!=="production"&&Sf.delete(t);let N=r(t,e,_,ut);if((vt.env?vt.env.MODE:void 0)!=="production"&&Sf.has(t)&&console.warn("Detected store mutation during atom read. This is not supported."),T(t,e,N),Ic(N)){h(t,N,()=>C?.abort());let Y=()=>{R(),x()};N.then(Y,Y)}else R();return(n=o.r)==null||n.call(o,e),m}catch(N){return delete m.v,m.e=N,++m.n,m}finally{g=!1,st!==m.n&&u.get(e)===st&&(u.set(e,m.n),c.add(e),(l=o.c)==null||l.call(o,e))}},q2=(t,e)=>{let n=Et(t),l=n[1],a=n[2],i=n[11],u=[e];for(;u.length;){let c=u.pop(),o=i(t,c);for(let r of rv(c,o,l)){let f=i(t,r);a.get(r)!==f.n&&(a.set(r,f.n),u.push(r))}}},Y2=(t,e,...n)=>{let l=Et(t),a=l[3],i=l[6],u=l[8],c=l[11],o=l[12],r=l[13],f=l[14],d=l[15],s=l[16],p=l[17],v=l[20],S=!0,T=m=>Fc(f(t,m)),h=(m,...g)=>{var y;let E=c(t,m);try{if(m===e){if(!cv(m))throw new Error("atom not writable");(vt.env?vt.env.MODE:void 0)!=="production"&&Sf.add(t);let R=E.n,x=g[0];v(t,m,x),p(t,m),R!==E.n&&(a.add(m),d(t,m),(y=i.c)==null||y.call(i,m));return}else return s(t,m,...g)}finally{S||(r(t),o(t))}};try{return u(t,e,T,h,...n)}finally{S=!1}},G2=(t,e)=>{var n;let l=Et(t),a=l[1],i=l[3],u=l[6],c=l[11],o=l[15],r=l[18],f=l[19],d=c(t,e),s=a.get(e);if(s){for(let[p,v]of d.d)if(!s.d.has(p)){let S=c(t,p);r(t,p).t.add(e),s.d.add(p),v!==S.n&&(i.add(p),o(t,p),(n=u.c)==null||n.call(u,p))}for(let p of s.d)if(!d.d.has(p)){s.d.delete(p);let v=f(t,p);v?.t.delete(e)}}},j2=(t,e)=>{var n;let l=Et(t),a=l[1],i=l[4],u=l[6],c=l[10],o=l[11],r=l[12],f=l[13],d=l[14],s=l[16],p=l[18],v=o(t,e),S=a.get(e);if(!S){d(t,e);for(let T of v.d.keys())p(t,T).t.add(e);if(S={l:new Set,d:new Set(v.d.keys()),t:new Set},a.set(e,S),bf(e)){let T=()=>{let h=!0,m=(...g)=>{try{return s(t,e,...g)}finally{h||(f(t),r(t))}};try{let g=c(t,e,m);g&&(S.u=()=>{h=!0;try{g()}finally{h=!1}})}finally{h=!1}};i.add(T)}(n=u.m)==null||n.call(u,e)}return S},Q2=(t,e)=>{var n,l;let a=Et(t),i=a[1],u=a[5],c=a[6],o=a[11],r=a[19],f=o(t,e),d=i.get(e);if(!d||d.l.size)return d;let s=!1;for(let p of d.t)if((n=i.get(p))!=null&&n.d.has(e)){s=!0;break}if(!s){d.u&&u.add(d.u),d=void 0,i.delete(e);for(let p of f.d.keys()){let v=r(t,p);v?.t.delete(e)}(l=c.u)==null||l.call(c,e);return}return d},X2=(t,e,n)=>{let l=Et(t),a=l[11],i=l[27],u=a(t,e),c="v"in u,o=u.v;if(Ic(n))for(let r of u.d.keys())ov(e,n,a(t,r));u.v=n,delete u.e,(!c||!Object.is(o,u.v))&&(++u.n,Ic(o)&&i(t,o))},Z2=(t,e)=>{let n=Et(t)[14];return Fc(n(t,e))},K2=(t,e,...n)=>{let l=Et(t),a=l[12],i=l[13],u=l[16];try{return u(t,e,...n)}finally{i(t),a(t)}},J2=(t,e,n)=>{let l=Et(t),a=l[12],i=l[18],u=l[19],o=i(t,e).l;return o.add(n),a(t),()=>{o.delete(n),u(t,e),a(t)}},F2=(t,e,n)=>{let a=Et(t)[25],i=a.get(e);if(!i){i=new Set,a.set(e,i);let u=()=>a.delete(e);e.then(u,u)}i.add(n)},I2=(t,e)=>{let a=Et(t)[25].get(e);a?.forEach(i=>i())},sv=new WeakMap,Et=t=>{let e=sv.get(t);if((vt.env?vt.env.MODE:void 0)!=="production"&&!e)throw new Error("Store must be created by buildStore to read its building blocks");return e};function fv(t){let e=Et(t),n=e[24];return n?n(e):e}function dv(...t){let e={get(l){let a=Et(e)[21];return a(e,l)},set(l,...a){let i=Et(e)[22];return i(e,l,...a)},sub(l,a){let i=Et(e)[23];return i(e,l,a)}},n=[new WeakMap,new WeakMap,new WeakMap,new Set,new Set,new Set,{},M2,k2,w2,B2,U2,L2,H2,V2,q2,Y2,G2,j2,Q2,X2,Z2,K2,J2,void 0,new WeakMap,F2,I2].map((l,a)=>t[a]||l);return sv.set(e,Object.freeze(n)),e}var $c={},$2=0;function Ef(t,e){let n=`atom${++$2}`,l={toString(){return($c.env?$c.env.MODE:void 0)!=="production"&&this.debugLabel?n+":"+this.debugLabel:n}};return typeof t=="function"?l.read=t:(l.init=t,l.read=W2,l.write=P2),e&&(l.write=e),l}function W2(t){return t(this)}function P2(t,e,n){return e(this,typeof n=="function"?n(t(this)):n)}var mv;function pv(){return mv?mv():dv()}var Li;function hv(){return Li||(Li=pv(),($c.env?$c.env.MODE:void 0)!=="production"&&(globalThis.__JOTAI_DEFAULT_STORE__||(globalThis.__JOTAI_DEFAULT_STORE__=Li),globalThis.__JOTAI_DEFAULT_STORE__!==Li&&console.warn("Detected multiple Jotai instances. It may cause unexpected behavior with the default store. https://github.com/pmndrs/jotai/discussions/2044"))),Li}var kt=A(B(),1);var vv={},tE=(0,kt.createContext)(void 0);function yv(t){let e=(0,kt.useContext)(tE);return t?.store||e||hv()}var Af=t=>typeof t?.then=="function",Tf=t=>{t.status||(t.status="pending",t.then(e=>{t.status="fulfilled",t.value=e},e=>{t.status="rejected",t.reason=e}))},eE=kt.default.use||(t=>{if(t.status==="pending")throw t;if(t.status==="fulfilled")return t.value;throw t.status==="rejected"?t.reason:(Tf(t),t)}),xf=new WeakMap,gv=(t,e,n)=>{let a=fv(t)[26],i=xf.get(e);return i||(i=new Promise((u,c)=>{let o=e,r=s=>p=>{o===s&&u(p)},f=s=>p=>{o===s&&c(p)},d=()=>{try{let s=n();Af(s)?(xf.set(s,i),o=s,s.then(r(s),f(s)),a(t,s,d)):u(s)}catch(s){c(s)}};e.then(r(e),f(e)),a(t,e,d)}),xf.set(e,i)),i};function Rf(t,e){let{delay:n,unstable_promiseStatus:l=!kt.default.use}=e||{},a=yv(e),[[i,u,c],o]=(0,kt.useReducer)(f=>{let d=a.get(t);return Object.is(f[0],d)&&f[1]===a&&f[2]===t?f:[d,a,t]},void 0,()=>[a.get(t),a,t]),r=i;if((u!==a||c!==t)&&(o(),r=a.get(t)),(0,kt.useEffect)(()=>{let f=a.sub(t,()=>{if(l)try{let d=a.get(t);Af(d)&&Tf(gv(a,d,()=>a.get(t)))}catch{}if(typeof n=="number"){setTimeout(o,n);return}o()});return o(),f},[a,t,n,l]),(0,kt.useDebugValue)(r),Af(r)){let f=gv(a,r,()=>a.get(t));return l&&Tf(f),eE(f)}return r}function nE(t,e){let n=yv(e);return(0,kt.useCallback)((...a)=>{if((vv.env?vv.env.MODE:void 0)!=="production"&&!("write"in t))throw new Error("not writable atom");return n.set(t,...a)},[n,t])}function bv(t,e){return[Rf(t,e),nE(t,e)]}var Sa={},lE=Symbol((Sa.env?Sa.env.MODE:void 0)!=="production"?"RESET":"");var Sv=t=>typeof t?.then=="function";function aE(t=()=>{try{return window.localStorage}catch(n){(Sa.env?Sa.env.MODE:void 0)!=="production"&&typeof window<"u"&&console.warn(n);return}},e){var n;let l,a,i={getItem:(o,r)=>{var f,d;let s=v=>{if(v=v||"",l!==v){try{a=JSON.parse(v,e?.reviver)}catch{return r}l=v}return a},p=(d=(f=t())==null?void 0:f.getItem(o))!=null?d:null;return Sv(p)?p.then(s):s(p)},setItem:(o,r)=>{var f;return(f=t())==null?void 0:f.setItem(o,JSON.stringify(r,e?.replacer))},removeItem:o=>{var r;return(r=t())==null?void 0:r.removeItem(o)}},u=o=>(r,f,d)=>o(r,s=>{let p;try{p=JSON.parse(s||"")}catch{p=d}f(p)}),c;try{c=(n=t())==null?void 0:n.subscribe}catch{}return!c&&typeof window<"u"&&typeof window.addEventListener=="function"&&window.Storage&&(c=(o,r)=>{if(!(t()instanceof window.Storage))return()=>{};let f=d=>{d.storageArea===t()&&d.key===o&&r(d.newValue)};return window.addEventListener("storage",f),()=>{window.removeEventListener("storage",f)}}),c&&(i.subscribe=u(c)),i}var iE=aE();function Ev(t,e,n=iE,l){let a=l?.getOnInit,i=Ef(a?n.getItem(t,e):e);return(Sa.env?Sa.env.MODE:void 0)!=="production"&&(i.debugPrivate=!0),i.onMount=c=>{c(n.getItem(t,e));let o;return n.subscribe&&(o=n.subscribe(t,c,e)),o},Ef(c=>c(i),(c,o,r)=>{let f=typeof r=="function"?r(c(i)):r;return f===lE?(o(i,e),n.removeItem(t)):Sv(f)?f.then(d=>(o(i,d),n.setItem(t,d))):(o(i,f),n.setItem(t,f))})}var Wc=Ev("backlog-show-completed",!1);var Hi=A(z(),1);function xv(){let[t,e]=bv(Wc);return(0,Hi.jsxs)("label",{className:"flex items-center gap-2 text-sm text-gray-600 cursor-pointer select-none",children:[(0,Hi.jsx)("button",{type:"button",role:"switch","aria-checked":t,onClick:()=>e(!t),className:`relative inline-flex h-5 w-9 items-center rounded-full transition-colors ${t?"bg-blue-600":"bg-gray-300"}`,children:(0,Hi.jsx)("span",{className:`inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform ${t?"translate-x-[18px]":"translate-x-[3px]"}`})}),"Show completed"]})}var bl=A(z(),1),uE={todo:"\u25CB","in-progress":"\u25D4",done:"\u25CF"},cE={todo:"text-gray-400","in-progress":"text-amber-500",done:"text-green-500"},oE={story:"bg-blue-100 text-blue-700",bug:"bg-red-100 text-red-700"};function Av({item:t,onSelect:e}){return(0,bl.jsxs)("button",{type:"button",className:"bg-white rounded-lg p-4 mb-2 cursor-pointer border border-gray-200 hover:shadow-md transition-shadow flex items-center gap-3 text-left w-full font-[inherit]",onClick:e,children:[(0,bl.jsx)("span",{className:`text-lg shrink-0 ${cE[t.status]}`,children:uE[t.status]}),(0,bl.jsx)("span",{className:`text-xs font-medium rounded-full px-2 shrink-0 ${oE[t.type]}`,children:t.type}),(0,bl.jsxs)("span",{className:"text-gray-400 text-sm shrink-0",children:["#",t.id]}),(0,bl.jsx)("span",{className:"font-medium",children:t.name})]})}var Ae=A(z(),1);function Tv({items:t,onSelect:e,onAdd:n}){let a=Rf(Wc)?t:t.filter(i=>i.status!=="done");return(0,Ae.jsxs)(Ae.Fragment,{children:[(0,Ae.jsxs)("header",{className:"flex justify-between items-center mb-6",children:[(0,Ae.jsx)("h1",{className:"text-2xl font-semibold",children:"Backlog"}),(0,Ae.jsxs)("div",{className:"flex items-center gap-4",children:[(0,Ae.jsx)(xv,{}),(0,Ae.jsx)("button",{type:"button",className:"bg-blue-600 hover:bg-blue-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:n,children:"+ Add Item"})]})]}),a.length===0?(0,Ae.jsx)("div",{className:"text-center text-gray-400 py-12 px-4",children:"No items in the backlog."}):a.map(i=>(0,Ae.jsx)(Av,{item:i,onSelect:()=>e(i.id)},i.id))]})}var wv=A(B(),1);var qn=A(z(),1);function Rv({onConfirm:t,onCancel:e}){return(0,qn.jsx)("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",children:(0,qn.jsxs)("div",{className:"bg-white rounded-lg p-6 max-w-sm mx-4",children:[(0,qn.jsx)("p",{className:"text-gray-800 mb-4",children:"Are you sure you want to delete this item?"}),(0,qn.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,qn.jsx)("button",{type:"button",className:"bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:e,children:"Cancel"}),(0,qn.jsx)("button",{type:"button",className:"bg-red-600 hover:bg-red-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:t,children:"Delete"})]})]})})}var Sl=A(z(),1);function _v({criteria:t}){return t.length===0?null:(0,Sl.jsxs)("div",{className:"mb-4",children:[(0,Sl.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Acceptance Criteria"}),(0,Sl.jsx)("ol",{className:"list-none",children:t.map((e,n)=>(0,Sl.jsxs)("li",{className:"py-1",children:[(0,Sl.jsxs)("span",{className:"text-gray-500 mr-2",children:[n+1,"."]}),e]},e))})]})}var El=A(z(),1);function Cv({checks:t}){return(0,El.jsxs)("div",{className:"mt-2 pt-2 border-t border-gray-200",children:[(0,El.jsx)("span",{className:"text-xs uppercase text-gray-400 tracking-wide",children:"Manual Checks"}),(0,El.jsx)("ul",{className:"list-none ml-1 mt-1",children:t.map(e=>(0,El.jsxs)("li",{className:"py-0.5 text-sm text-gray-600",children:[(0,El.jsx)("span",{className:"mr-2",children:"\u2610"}),e]},e))})]})}var Ea=A(z(),1);function zv({tasks:t,marker:e}){return(0,Ea.jsx)("ul",{className:"list-none ml-1 space-y-1",children:t.map(n=>(0,Ea.jsxs)("li",{className:"py-0.5",children:[(0,Ea.jsx)("span",{className:"text-gray-500 mr-2",children:e}),n.task,n.verify&&(0,Ea.jsxs)("span",{className:"ml-2 text-xs text-gray-400",children:["verify: ",n.verify]})]},n.task))})}var Yn=A(z(),1),rE={done:"border-green-300 bg-green-50",current:"border-blue-400 bg-blue-50 ring-2 ring-blue-200",upcoming:"border-gray-200 bg-white"},sE={done:{label:"Done",style:"bg-green-100 text-green-700"},current:{label:"In Progress",style:"bg-blue-100 text-blue-700"},upcoming:{label:"Upcoming",style:"bg-gray-100 text-gray-500"}};function Ov({phase:t,index:e,status:n}){let l=sE[n],a=n==="done"?"\u2713":"\u2022",i=t.manualChecks??[];return(0,Yn.jsxs)("div",{className:`rounded-lg border p-4 ${rE[n]}`,children:[(0,Yn.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,Yn.jsxs)("span",{className:"font-medium",children:["Phase ",e+1,": ",t.name]}),(0,Yn.jsx)("span",{className:`inline-block rounded-full px-2 text-xs font-medium ${l.style}`,children:l.label})]}),(0,Yn.jsx)(zv,{tasks:t.tasks,marker:a}),i.length>0&&(0,Yn.jsx)(Cv,{checks:i})]})}var xa=A(z(),1);function fE(t,e){return e===void 0?"upcoming":t<e?"done":t===e?"current":"upcoming"}function Dv({phases:t,currentPhase:e}){return t.length===0?null:(0,xa.jsxs)("div",{className:"mb-4",children:[(0,xa.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Plan"}),(0,xa.jsx)("div",{className:"space-y-3",children:t.map((n,l)=>(0,xa.jsx)(Ov,{phase:n,index:l,status:fE(l,e)},n.name))})]})}var Pc=A(z(),1),Nv={todo:"bg-gray-100 text-gray-500","in-progress":"bg-amber-100 text-amber-800",done:"bg-green-100 text-green-800"},dE=["todo","in-progress","done"];function Mv({current:t,onStatusChange:e}){return e?(0,Pc.jsx)("select",{value:t,onChange:n=>e(n.target.value),className:`rounded-full px-2.5 text-xs font-medium cursor-pointer ${Nv[t]}`,children:dE.map(n=>(0,Pc.jsx)("option",{value:n,children:n},n))}):(0,Pc.jsx)("span",{className:`inline-block rounded-full px-2.5 text-xs font-medium ${Nv[t]}`,children:t})}var se=A(z(),1),mE={story:"bg-blue-100 text-blue-700",bug:"bg-red-100 text-red-700"};function pE({content:t}){return(0,se.jsx)("div",{className:"markdown leading-relaxed",dangerouslySetInnerHTML:{__html:q.parse(t)}})}function kv({item:t,onStatusChange:e}){return(0,se.jsxs)("div",{className:"bg-white rounded-lg p-6 border border-gray-200",children:[(0,se.jsx)("h2",{children:t.name}),(0,se.jsxs)("div",{className:"text-gray-400 text-sm mb-4 flex items-center gap-2",children:["#",t.id,(0,se.jsx)("span",{className:`inline-block rounded-full px-2.5 text-xs font-medium ${mE[t.type]}`,children:t.type}),(0,se.jsx)(Mv,{current:t.status,onStatusChange:e})]}),t.description&&(0,se.jsxs)("div",{className:"mb-4",children:[(0,se.jsx)("h3",{className:"text-xs uppercase text-gray-500 mb-2 tracking-wide",children:"Description"}),(0,se.jsx)(pE,{content:t.description})]}),(0,se.jsx)(_v,{criteria:t.acceptanceCriteria}),t.plan&&(0,se.jsx)(Dv,{phases:t.plan,currentPhase:t.currentPhase})]})}var Lt=A(z(),1);function hE({itemId:t,onDeleted:e}){let[n,l]=(0,wv.useState)(!1);return(0,Lt.jsxs)(Lt.Fragment,{children:[n&&(0,Lt.jsx)(Rv,{onConfirm:async()=>{await Ag(t),e()},onCancel:()=>l(!1)}),(0,Lt.jsx)("button",{type:"button",className:"bg-red-600 hover:bg-red-700 text-white rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:()=>l(!0),children:"Delete"})]})}function gE({itemId:t,onBack:e,onEdit:n,onDeleted:l}){return(0,Lt.jsxs)("div",{className:"flex justify-between items-center mb-4",children:[(0,Lt.jsx)(qc,{onClick:e}),(0,Lt.jsxs)("div",{className:"flex gap-2",children:[(0,Lt.jsx)("button",{type:"button",className:"bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-md px-4 py-2 text-sm font-medium cursor-pointer",onClick:n,children:"Edit"}),(0,Lt.jsx)(hE,{itemId:t,onDeleted:l})]})]})}function Bv({item:t,onBack:e,onEdit:n,onDeleted:l,onStatusChanged:a}){return(0,Lt.jsxs)(Lt.Fragment,{children:[(0,Lt.jsx)(gE,{itemId:t.id,onBack:e,onEdit:n,onDeleted:l}),(0,Lt.jsx)(kv,{item:t,onStatusChange:async i=>{await Rg(t.id,i),a()}})]})}var _f=A(z(),1);function Uv({item:t,view:e,onNavigate:n,onReloadAndNavigate:l}){return e.kind==="edit"?(0,_f.jsx)(Jc,{item:t,onSaved:a=>l({kind:"detail",id:a}),onCancel:()=>n({kind:"detail",id:e.id})}):(0,_f.jsx)(Bv,{item:t,onBack:()=>n({kind:"list"}),onEdit:()=>n({kind:"edit",id:e.id}),onDeleted:()=>l({kind:"list"}),onStatusChanged:()=>l({kind:"detail",id:e.id})})}var to=A(z(),1);function Lv({view:t,items:e,onNavigate:n,onReloadAndNavigate:l}){if(t.kind==="detail"||t.kind==="edit"){let a=e.find(i=>i.id===t.id);return a?(0,to.jsx)(Uv,{item:a,view:t,onNavigate:n,onReloadAndNavigate:l}):null}return t.kind==="add"?(0,to.jsx)(Jc,{onSaved:()=>l({kind:"list"}),onCancel:()=>n({kind:"list"})}):(0,to.jsx)(Tv,{items:e,onSelect:a=>n({kind:"detail",id:a}),onAdd:()=>n({kind:"add"})})}var Cf=A(z(),1);function vE(){let[t,e]=(0,Gn.useState)([]),[n,l]=(0,Gn.useState)({kind:"list"}),a=(0,Gn.useCallback)(async()=>{e(await Eg())},[]);(0,Gn.useEffect)(()=>{a()},[a]);let i=(0,Gn.useCallback)(async u=>{await a(),l(u)},[a]);return(0,Cf.jsx)(Lv,{view:n,items:t,onNavigate:l,onReloadAndNavigate:i})}var Hv=document.getElementById("app");Hv&&(0,Vv.createRoot)(Hv).render((0,Cf.jsx)(vE,{}));})();
|
|
66
66
|
/*! Bundled license information:
|
|
67
67
|
|
|
68
68
|
react/cjs/react.production.js:
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { Command } from "commander";
|
|
|
6
6
|
// package.json
|
|
7
7
|
var package_default = {
|
|
8
8
|
name: "@staff0rd/assist",
|
|
9
|
-
version: "0.
|
|
9
|
+
version: "0.144.1",
|
|
10
10
|
type: "module",
|
|
11
11
|
main: "dist/index.js",
|
|
12
12
|
bin: {
|
|
@@ -2565,8 +2565,8 @@ function printVerboseDetails(item) {
|
|
|
2565
2565
|
}
|
|
2566
2566
|
if (item.acceptanceCriteria.length > 0) {
|
|
2567
2567
|
console.log(` ${chalk30.dim("Acceptance criteria:")}`);
|
|
2568
|
-
for (const criterion of item.acceptanceCriteria) {
|
|
2569
|
-
console.log(`
|
|
2568
|
+
for (const [i, criterion] of item.acceptanceCriteria.entries()) {
|
|
2569
|
+
console.log(` ${i + 1}. ${criterion}`);
|
|
2570
2570
|
}
|
|
2571
2571
|
}
|
|
2572
2572
|
console.log();
|
|
@@ -2625,7 +2625,7 @@ function buildAuthoredPhasePrompt(item, phaseIndex, phase) {
|
|
|
2625
2625
|
].filter((line) => line !== void 0).join("\n");
|
|
2626
2626
|
}
|
|
2627
2627
|
function buildContextLines(item, phaseIndex, phase) {
|
|
2628
|
-
const ac = item.acceptanceCriteria.map((c) =>
|
|
2628
|
+
const ac = item.acceptanceCriteria.map((c, i) => `${i + 1}. ${c}`).join("\n");
|
|
2629
2629
|
return [
|
|
2630
2630
|
`You are implementing phase ${phaseIndex + 1} of backlog item #${item.id}: ${item.name}`,
|
|
2631
2631
|
"",
|
|
@@ -2738,6 +2738,19 @@ function phaseDone(id, phase) {
|
|
|
2738
2738
|
console.log(chalk32.green(`Phase ${phase} of item #${id} marked as complete.`));
|
|
2739
2739
|
}
|
|
2740
2740
|
|
|
2741
|
+
// src/commands/backlog/spawnClaude.ts
|
|
2742
|
+
import { spawn as spawn3 } from "child_process";
|
|
2743
|
+
function spawnClaude(prompt) {
|
|
2744
|
+
const child = spawn3("claude", [prompt], {
|
|
2745
|
+
stdio: "inherit"
|
|
2746
|
+
});
|
|
2747
|
+
const done2 = new Promise((resolve7, reject) => {
|
|
2748
|
+
child.on("close", (code) => resolve7(code ?? 0));
|
|
2749
|
+
child.on("error", reject);
|
|
2750
|
+
});
|
|
2751
|
+
return { child, done: done2 };
|
|
2752
|
+
}
|
|
2753
|
+
|
|
2741
2754
|
// src/commands/backlog/resolvePhaseResult.ts
|
|
2742
2755
|
function cleanupMarker() {
|
|
2743
2756
|
const statusPath = getPhaseStatusPath();
|
|
@@ -2762,13 +2775,26 @@ Phase ${phaseIndex + 1} completed. Running verify...`)
|
|
|
2762
2775
|
console.log(chalk33.green("Verification passed."));
|
|
2763
2776
|
return true;
|
|
2764
2777
|
}
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2778
|
+
while (true) {
|
|
2779
|
+
const { action } = await enquirer5.prompt({
|
|
2780
|
+
type: "select",
|
|
2781
|
+
name: "action",
|
|
2782
|
+
message: "Verification failed. What would you like to do?",
|
|
2783
|
+
choices: ["Fix", "Continue to next phase", "Abort"]
|
|
2784
|
+
});
|
|
2785
|
+
if (action === "Fix") {
|
|
2786
|
+
const { done: done2 } = spawnClaude(
|
|
2787
|
+
"Run /verify and fix all failures. Do not move on until every check passes."
|
|
2788
|
+
);
|
|
2789
|
+
await done2;
|
|
2790
|
+
if (runVerify()) {
|
|
2791
|
+
console.log(chalk33.green("Verification passed."));
|
|
2792
|
+
return true;
|
|
2793
|
+
}
|
|
2794
|
+
continue;
|
|
2795
|
+
}
|
|
2796
|
+
return action === "Continue to next phase";
|
|
2797
|
+
}
|
|
2772
2798
|
}
|
|
2773
2799
|
async function handleIncompletePhase() {
|
|
2774
2800
|
const { action } = await enquirer5.prompt({
|
|
@@ -2791,19 +2817,6 @@ async function resolvePhaseResult(phaseIndex) {
|
|
|
2791
2817
|
return action === "skip" ? 1 : 0;
|
|
2792
2818
|
}
|
|
2793
2819
|
|
|
2794
|
-
// src/commands/backlog/spawnClaude.ts
|
|
2795
|
-
import { spawn as spawn3 } from "child_process";
|
|
2796
|
-
function spawnClaude(prompt) {
|
|
2797
|
-
const child = spawn3("claude", [prompt], {
|
|
2798
|
-
stdio: "inherit"
|
|
2799
|
-
});
|
|
2800
|
-
const done2 = new Promise((resolve7, reject) => {
|
|
2801
|
-
child.on("close", (code) => resolve7(code ?? 0));
|
|
2802
|
-
child.on("error", reject);
|
|
2803
|
-
});
|
|
2804
|
-
return { child, done: done2 };
|
|
2805
|
-
}
|
|
2806
|
-
|
|
2807
2820
|
// src/commands/backlog/watchForMarker.ts
|
|
2808
2821
|
import { existsSync as existsSync17, unwatchFile, watchFile } from "fs";
|
|
2809
2822
|
function watchForMarker(child) {
|
|
@@ -2839,7 +2852,7 @@ async function executePhase(item, phaseIndex, phases) {
|
|
|
2839
2852
|
return delta < 0 ? -1 : phaseIndex + delta;
|
|
2840
2853
|
}
|
|
2841
2854
|
|
|
2842
|
-
// src/commands/backlog/
|
|
2855
|
+
// src/commands/backlog/resolvePlan.ts
|
|
2843
2856
|
function resolvePlan(item) {
|
|
2844
2857
|
if (item.plan && item.plan.length > 0) {
|
|
2845
2858
|
return item.plan;
|
|
@@ -2851,6 +2864,8 @@ function resolvePlan(item) {
|
|
|
2851
2864
|
}
|
|
2852
2865
|
];
|
|
2853
2866
|
}
|
|
2867
|
+
|
|
2868
|
+
// src/commands/backlog/run.ts
|
|
2854
2869
|
async function run2(id) {
|
|
2855
2870
|
const result = loadAndFindItem(id);
|
|
2856
2871
|
if (!result) return;
|
|
@@ -2885,7 +2900,7 @@ async function run2(id) {
|
|
|
2885
2900
|
const reviewIndex = plan2.length;
|
|
2886
2901
|
const reviewResult = await executePhase(item, reviewIndex, allPhases);
|
|
2887
2902
|
if (reviewResult < 0) return;
|
|
2888
|
-
setStatus(id, "done");
|
|
2903
|
+
if (item.status !== "done") setStatus(id, "done");
|
|
2889
2904
|
console.log(chalk35.green(`
|
|
2890
2905
|
All phases complete for #${id}: ${item.name}`));
|
|
2891
2906
|
}
|
|
@@ -7189,6 +7204,7 @@ import { SyntaxKind as SyntaxKind2 } from "ts-morph";
|
|
|
7189
7204
|
function collectReferencedNames(sourceFile) {
|
|
7190
7205
|
const names = /* @__PURE__ */ new Set();
|
|
7191
7206
|
for (const id of sourceFile.getDescendantsOfKind(SyntaxKind2.Identifier)) {
|
|
7207
|
+
if (id.getFirstAncestorByKind(SyntaxKind2.ImportDeclaration)) continue;
|
|
7192
7208
|
names.add(id.getText());
|
|
7193
7209
|
}
|
|
7194
7210
|
return names;
|