@sma1lboy/kobe 0.7.31 → 0.7.32

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.
@@ -1 +1 @@
1
- import{S as e,c as t,y as n}from"./tabs-CmaDBSUQ.js";import{t as r}from"./useNavigate-CXvSccc8.js";import{g as i,r as a}from"./index-Bp9dfUdH.js";import{C as ee,S as o,d as s,h as c,w as l,x as u}from"./vendor-BOFoJ49C.js";import{a as d,c as f,d as p,f as m,h,i as g,l as _,n as v,o as y,p as te,r as ne,s as re,t as b,u as x}from"./IssuePeek-z77QfvyZ.js";var S=l(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),C=e(n(),1),w=i();function T(){let{tasks:e,hydrated:n}=a(),i=r(),[l,T]=(0,C.useState)([]);(0,C.useEffect)(()=>{let e=!1;return f().then(t=>{e||T(t)}).catch(e=>c(`load projects`,e)),()=>{e=!0}},[]);let E=(0,C.useMemo)(()=>p(e,l),[e,l]),[D,O]=(0,C.useState)(null);(0,C.useEffect)(()=>{if(E.length===0){D!==null&&O(null);return}(!D||!E.some(e=>e.repo===D))&&O(E[0]?.repo??null)},[E,D]);let{data:k,failed:A,pending:j}=g((0,C.useMemo)(()=>D?[D]:[],[D])),M=D?k[D]:void 0,[N,P]=(0,C.useState)(``),[F,I]=(0,C.useState)(!1),[L,R]=(0,C.useState)(null),[z,B]=(0,C.useState)(null),[V,H]=(0,C.useState)(!1),[U,W]=(0,C.useState)(!1),[G,K]=(0,C.useState)(!1),q=M?.issues??[],J=(0,C.useMemo)(()=>_(q,{query:N}),[q,N]),Y=(0,C.useMemo)(()=>x(J),[J]),X=J.length,Z=L==null?null:q.find(e=>e.id===L),Q=z==null?null:q.find(e=>e.id===z);(0,C.useEffect)(()=>{L!=null&&!q.some(e=>e.id===L)&&R(null),z!=null&&!q.some(e=>e.id===z)&&B(null)},[q,L,z]);let $=e=>{i({to:`/task/$taskId`,params:{taskId:e}})};return(0,w.jsxs)(`div`,{className:`flex h-screen flex-col overflow-hidden bg-bg text-fg`,children:[(0,w.jsxs)(`header`,{className:`flex h-10 shrink-0 items-center gap-3 border-b border-line bg-surface px-3`,children:[(0,w.jsxs)(`button`,{type:`button`,onClick:()=>i({to:`/`}),className:`flex items-center gap-1.5 text-muted transition-colors hover:text-fg`,title:`Back to workspace`,children:[(0,w.jsx)(S,{size:15,strokeWidth:1.8}),(0,w.jsx)(`span`,{className:`text-[12px]`,children:`Workspace`})]}),(0,w.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-fg`,children:`Issues`}),(0,w.jsxs)(`label`,{className:`flex h-7 items-center gap-1.5 border border-line bg-bg px-2 text-muted focus-within:border-line-active`,children:[(0,w.jsx)(o,{size:13,strokeWidth:1.8,className:`shrink-0 text-subtle`}),(0,w.jsx)(`input`,{value:N,onChange:e=>P(e.target.value),placeholder:`Filter issues ( #id, title, body )`,className:`w-52 bg-transparent text-[12px] text-fg placeholder:text-subtle focus:outline-none`}),N&&(0,w.jsx)(`button`,{type:`button`,onClick:()=>P(``),className:`shrink-0 text-subtle hover:text-fg`,"aria-label":`clear filter`,title:`Clear filter`,children:(0,w.jsx)(u,{size:13,strokeWidth:2})})]}),E.length>0&&(0,w.jsxs)(`label`,{className:`flex h-7 min-w-0 max-w-[24rem] items-center gap-1.5 border border-line bg-bg px-2 text-muted focus-within:border-line-active`,children:[(0,w.jsx)(`span`,{className:`shrink-0 text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:`Project`}),(0,w.jsx)(`select`,{value:D??``,onChange:e=>O(e.target.value),title:D??`Select project`,className:`min-w-0 flex-1 bg-transparent font-mono text-[11px] text-fg focus:outline-none`,children:E.map(e=>(0,w.jsxs)(`option`,{value:e.repo,title:e.repo,className:`bg-surface text-fg`,children:[e.label,` · `,e.count,` · `,e.repo]},e.repo))})]}),(0,w.jsxs)(`div`,{className:`ml-auto flex items-center gap-3 font-mono text-[11px] text-subtle`,children:[(0,w.jsxs)(`span`,{children:[X,` issue`,X===1?``:`s`]}),(0,w.jsxs)(`button`,{type:`button`,disabled:!D,onClick:()=>I(!0),className:`flex items-center gap-1.5 border border-primary bg-inset px-2 py-0.5 text-[11px] text-fg transition-colors hover:bg-primary/10 disabled:cursor-not-allowed disabled:opacity-40`,title:`Capture a new issue`,children:[(0,w.jsx)(ee,{size:13,strokeWidth:1.8}),`New issue`]})]})]}),(0,w.jsx)(`div`,{className:`min-h-0 flex-1 overflow-x-auto overflow-y-hidden p-4`,children:D?!n||j&&!M?(0,w.jsx)(`p`,{className:`text-[12px] text-subtle`,children:`Loading…`}):D&&A[D]?(0,w.jsx)(`p`,{className:`text-[12px] text-kobe-red`,children:A[D]}):X===0?(0,w.jsx)(`p`,{className:`text-[12px] text-subtle`,children:N?`No issues match your filter.`:`No issues yet. Capture one with New issue.`}):(0,w.jsx)(`div`,{className:`flex h-full min-h-0 gap-4`,children:d.map(e=>{let t=y[e],n=Y[e];return(0,w.jsxs)(`section`,{className:`flex h-full min-h-0 w-72 shrink-0 flex-col`,children:[(0,w.jsxs)(`div`,{className:`mb-2 flex shrink-0 items-center gap-2`,children:[(0,w.jsx)(`h2`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] ${t.accent}`,children:t.title}),(0,w.jsx)(`span`,{className:`font-mono text-[10px] text-subtle`,children:n.length})]}),(0,w.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto pr-0.5`,children:n.map(e=>(0,w.jsx)(ne,{issue:e,onOpen:()=>R(e.id),onDelete:()=>B(e.id)},e.id))})]},e)})}):(0,w.jsx)(`p`,{className:`text-[12px] text-subtle`,children:`No projects yet. Create a task from the workspace to track issues against its repo.`})}),D&&(0,w.jsx)(v,{repoRoot:D,open:F,onClose:()=>I(!1),onCreated:(e,t)=>{t&&e.taskId&&$(e.taskId)}}),D&&Z&&(0,w.jsx)(b,{issue:Z,repoRoot:D,busy:V,starting:U,onClose:()=>R(null),onSave:async e=>{if(!D||L==null)return!1;H(!0);try{return await h(D,L,{title:e.title.trim(),body:e.body}),!0}catch(e){return c(`save issue`,e),!1}finally{H(!1)}},onStart:e=>{!D||!Z||(W(!0),te(D,Z,e.vendor,e.effort).then(({taskId:t})=>{R(null),e.watch&&$(t)}).catch(e=>c(`start issue`,e)).finally(()=>W(!1)))},onOpenSession:Z.taskId?()=>{let e=Z.taskId;e&&(t(e),$(e))}:void 0,onPromptMerge:Z.taskId?()=>{let e=Z.taskId;e&&m(e,Z).catch(e=>c(`prompt issue merge`,e))}:void 0}),Q&&(0,w.jsx)(s,{title:`Delete issue`,body:`Delete issue #${Q.id} "${Q.title}"? This removes only the issue record — any linked task, branch, or worktree is left untouched.`,confirmLabel:`Delete`,danger:!0,busy:G,onConfirm:()=>{!D||z==null||(K(!0),re(D,z).then(()=>B(null)).catch(e=>c(`delete issue`,e)).finally(()=>K(!1)))},onCancel:()=>B(null)})]})}var E=T;export{E as component};
1
+ import{S as e,c as t,y as n}from"./tabs-CmaDBSUQ.js";import{t as r}from"./useNavigate-CXvSccc8.js";import{g as i,r as a}from"./index-BsVnxIKo.js";import{C as ee,S as o,d as s,h as c,w as l,x as u}from"./vendor-Bfrh7rZ5.js";import{a as d,c as f,d as p,f as m,h,i as g,l as _,n as v,o as y,p as te,r as ne,s as re,t as b,u as x}from"./IssuePeek-DS8gwn8L.js";var S=l(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),C=e(n(),1),w=i();function T(){let{tasks:e,hydrated:n}=a(),i=r(),[l,T]=(0,C.useState)([]);(0,C.useEffect)(()=>{let e=!1;return f().then(t=>{e||T(t)}).catch(e=>c(`load projects`,e)),()=>{e=!0}},[]);let E=(0,C.useMemo)(()=>p(e,l),[e,l]),[D,O]=(0,C.useState)(null);(0,C.useEffect)(()=>{if(E.length===0){D!==null&&O(null);return}(!D||!E.some(e=>e.repo===D))&&O(E[0]?.repo??null)},[E,D]);let{data:k,failed:A,pending:j}=g((0,C.useMemo)(()=>D?[D]:[],[D])),M=D?k[D]:void 0,[N,P]=(0,C.useState)(``),[F,I]=(0,C.useState)(!1),[L,R]=(0,C.useState)(null),[z,B]=(0,C.useState)(null),[V,H]=(0,C.useState)(!1),[U,W]=(0,C.useState)(!1),[G,K]=(0,C.useState)(!1),q=M?.issues??[],J=(0,C.useMemo)(()=>_(q,{query:N}),[q,N]),Y=(0,C.useMemo)(()=>x(J),[J]),X=J.length,Z=L==null?null:q.find(e=>e.id===L),Q=z==null?null:q.find(e=>e.id===z);(0,C.useEffect)(()=>{L!=null&&!q.some(e=>e.id===L)&&R(null),z!=null&&!q.some(e=>e.id===z)&&B(null)},[q,L,z]);let $=e=>{i({to:`/task/$taskId`,params:{taskId:e}})};return(0,w.jsxs)(`div`,{className:`flex h-screen flex-col overflow-hidden bg-bg text-fg`,children:[(0,w.jsxs)(`header`,{className:`flex h-10 shrink-0 items-center gap-3 border-b border-line bg-surface px-3`,children:[(0,w.jsxs)(`button`,{type:`button`,onClick:()=>i({to:`/`}),className:`flex items-center gap-1.5 text-muted transition-colors hover:text-fg`,title:`Back to workspace`,children:[(0,w.jsx)(S,{size:15,strokeWidth:1.8}),(0,w.jsx)(`span`,{className:`text-[12px]`,children:`Workspace`})]}),(0,w.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-fg`,children:`Issues`}),(0,w.jsxs)(`label`,{className:`flex h-7 items-center gap-1.5 border border-line bg-bg px-2 text-muted focus-within:border-line-active`,children:[(0,w.jsx)(o,{size:13,strokeWidth:1.8,className:`shrink-0 text-subtle`}),(0,w.jsx)(`input`,{value:N,onChange:e=>P(e.target.value),placeholder:`Filter issues ( #id, title, body )`,className:`w-52 bg-transparent text-[12px] text-fg placeholder:text-subtle focus:outline-none`}),N&&(0,w.jsx)(`button`,{type:`button`,onClick:()=>P(``),className:`shrink-0 text-subtle hover:text-fg`,"aria-label":`clear filter`,title:`Clear filter`,children:(0,w.jsx)(u,{size:13,strokeWidth:2})})]}),E.length>0&&(0,w.jsxs)(`label`,{className:`flex h-7 min-w-0 max-w-[24rem] items-center gap-1.5 border border-line bg-bg px-2 text-muted focus-within:border-line-active`,children:[(0,w.jsx)(`span`,{className:`shrink-0 text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:`Project`}),(0,w.jsx)(`select`,{value:D??``,onChange:e=>O(e.target.value),title:D??`Select project`,className:`min-w-0 flex-1 bg-transparent font-mono text-[11px] text-fg focus:outline-none`,children:E.map(e=>(0,w.jsxs)(`option`,{value:e.repo,title:e.repo,className:`bg-surface text-fg`,children:[e.label,` · `,e.count,` · `,e.repo]},e.repo))})]}),(0,w.jsxs)(`div`,{className:`ml-auto flex items-center gap-3 font-mono text-[11px] text-subtle`,children:[(0,w.jsxs)(`span`,{children:[X,` issue`,X===1?``:`s`]}),(0,w.jsxs)(`button`,{type:`button`,disabled:!D,onClick:()=>I(!0),className:`flex items-center gap-1.5 border border-primary bg-inset px-2 py-0.5 text-[11px] text-fg transition-colors hover:bg-primary/10 disabled:cursor-not-allowed disabled:opacity-40`,title:`Capture a new issue`,children:[(0,w.jsx)(ee,{size:13,strokeWidth:1.8}),`New issue`]})]})]}),(0,w.jsx)(`div`,{className:`min-h-0 flex-1 overflow-x-auto overflow-y-hidden p-4`,children:D?!n||j&&!M?(0,w.jsx)(`p`,{className:`text-[12px] text-subtle`,children:`Loading…`}):D&&A[D]?(0,w.jsx)(`p`,{className:`text-[12px] text-kobe-red`,children:A[D]}):X===0?(0,w.jsx)(`p`,{className:`text-[12px] text-subtle`,children:N?`No issues match your filter.`:`No issues yet. Capture one with New issue.`}):(0,w.jsx)(`div`,{className:`flex h-full min-h-0 gap-4`,children:d.map(e=>{let t=y[e],n=Y[e];return(0,w.jsxs)(`section`,{className:`flex h-full min-h-0 w-72 shrink-0 flex-col`,children:[(0,w.jsxs)(`div`,{className:`mb-2 flex shrink-0 items-center gap-2`,children:[(0,w.jsx)(`h2`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] ${t.accent}`,children:t.title}),(0,w.jsx)(`span`,{className:`font-mono text-[10px] text-subtle`,children:n.length})]}),(0,w.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto pr-0.5`,children:n.map(e=>(0,w.jsx)(ne,{issue:e,onOpen:()=>R(e.id),onDelete:()=>B(e.id)},e.id))})]},e)})}):(0,w.jsx)(`p`,{className:`text-[12px] text-subtle`,children:`No projects yet. Create a task from the workspace to track issues against its repo.`})}),D&&(0,w.jsx)(v,{repoRoot:D,open:F,onClose:()=>I(!1),onCreated:(e,t)=>{t&&e.taskId&&$(e.taskId)}}),D&&Z&&(0,w.jsx)(b,{issue:Z,repoRoot:D,busy:V,starting:U,onClose:()=>R(null),onSave:async e=>{if(!D||L==null)return!1;H(!0);try{return await h(D,L,{title:e.title.trim(),body:e.body}),!0}catch(e){return c(`save issue`,e),!1}finally{H(!1)}},onStart:e=>{!D||!Z||(W(!0),te(D,Z,e.vendor,e.effort).then(({taskId:t})=>{R(null),e.watch&&$(t)}).catch(e=>c(`start issue`,e)).finally(()=>W(!1)))},onOpenSession:Z.taskId?()=>{let e=Z.taskId;e&&(t(e),$(e))}:void 0,onPromptMerge:Z.taskId?()=>{let e=Z.taskId;e&&m(e,Z).catch(e=>c(`prompt issue merge`,e))}:void 0}),Q&&(0,w.jsx)(s,{title:`Delete issue`,body:`Delete issue #${Q.id} "${Q.title}"? This removes only the issue record — any linked task, branch, or worktree is left untouched.`,confirmLabel:`Delete`,danger:!0,busy:G,onConfirm:()=>{!D||z==null||(K(!0),re(D,z).then(()=>B(null)).catch(e=>c(`delete issue`,e)).finally(()=>K(!1)))},onCancel:()=>B(null)})]})}var E=T;export{E as component};
@@ -0,0 +1 @@
1
+ import{t as e}from"./AppShell-CT-Wueej.js";var t=e;export{t as component};
@@ -1 +1 @@
1
- import{S as e,_ as t,f as n,y as r}from"./tabs-CmaDBSUQ.js";import{g as i,n as a,t as o}from"./index-Bp9dfUdH.js";import{t as s}from"./AppShell-79UyF3Dn.js";var c=e(r()),l=i();function u(){let{taskId:e}=o.useParams(),{selectedTaskId:r}=t();return(0,c.useEffect)(()=>{!e||e===r||(n(e),a(`task.setActive`,{taskId:e}).catch(()=>{}))},[e,r]),(0,l.jsx)(s,{})}export{u as component};
1
+ import{S as e,_ as t,f as n,y as r}from"./tabs-CmaDBSUQ.js";import{g as i,n as a,t as o}from"./index-BsVnxIKo.js";import{t as s}from"./AppShell-CT-Wueej.js";var c=e(r()),l=i();function u(){let{taskId:e}=o.useParams(),{selectedTaskId:r}=t();return(0,c.useEffect)(()=>{!e||e===r||(n(e),a(`task.setActive`,{taskId:e}).catch(()=>{}))},[e,r]),(0,l.jsx)(s,{})}export{u as component};
@@ -1 +1 @@
1
- import{S as e,y as t}from"./tabs-CmaDBSUQ.js";import{g as n}from"./index-Bp9dfUdH.js";var r=e(t()),i=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),a=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),o=e=>{let t=a(e);return t.charAt(0).toUpperCase()+t.slice(1)},s=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),c=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0},l={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},u=(0,r.forwardRef)(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:i,className:a=``,children:o,iconNode:u,...d},f)=>(0,r.createElement)(`svg`,{ref:f,...l,width:t,height:t,stroke:e,strokeWidth:i?Number(n)*24/Number(t):n,className:s(`lucide`,a),...!o&&!c(d)&&{"aria-hidden":`true`},...d},[...u.map(([e,t])=>(0,r.createElement)(e,t)),...Array.isArray(o)?o:[o]])),d=(e,t)=>{let n=(0,r.forwardRef)(({className:n,...a},c)=>(0,r.createElement)(u,{ref:c,iconNode:t,className:s(`lucide-${i(o(e))}`,`lucide-${e}`,n),...a}));return n.displayName=o(e),n},f=d(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),p=d(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),m=d(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);function h(e,t){let n=t.trim().toLowerCase();return n?e.toLowerCase().includes(n):!0}async function g(e){let t=await e.json();if(!e.ok)throw Error(t.error??`request failed (${e.status})`);return t}async function _(){return g(await fetch(`/api/settings`))}async function v(){try{let e=await _();return typeof e.defaultEngine==`string`&&e.defaultEngine.trim()?e.defaultEngine.trim():null}catch{return null}}async function y(e){return g(await fetch(`/api/settings`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(e)}))}var b=5e3,x=[],S=0,C=new Set;function w(){for(let e of C)e()}function T(e,t){S+=1;let n={id:S,kind:e,message:t};x=[...x.slice(-3),n],w(),window.setTimeout(()=>E(n.id),b)}function E(e){x.some(t=>t.id===e)&&(x=x.filter(t=>t.id!==e),w())}function D(e,t){return`${e}: ${t instanceof Error?t.message:String(t)}`}function O(e,t){T(`error`,D(e,t))}function k(){return(0,r.useSyncExternalStore)(e=>(C.add(e),()=>C.delete(e)),()=>x,()=>x)}var A=[`a[href]`,`button:not([disabled])`,`textarea:not([disabled])`,`input:not([disabled])`,`select:not([disabled])`,`[tabindex]:not([tabindex="-1"])`].join(`,`);function j(e,t=!0){(0,r.useEffect)(()=>{if(!t)return;let n=e.current;if(!n)return;let r=document.activeElement,i=e=>{if(e.key!==`Tab`)return;let t=Array.from(n.querySelectorAll(A)).filter(e=>e.offsetParent!==null||e===document.activeElement);if(t.length===0)return;let r=t[0],i=t[t.length-1],a=document.activeElement;e.shiftKey?(a===r||!n.contains(a))&&(e.preventDefault(),i.focus()):(a===i||!n.contains(a))&&(e.preventDefault(),r.focus())};return n.addEventListener(`keydown`,i),()=>{n.removeEventListener(`keydown`,i),r?.focus?.()}},[e,t])}var M=n();function N({title:e,body:t,confirmLabel:n,danger:i=!1,busy:a=!1,onConfirm:o,onCancel:s}){let c=(0,r.useRef)(null),l=(0,r.useRef)(null);return j(l),(0,r.useEffect)(()=>{c.current?.focus();let e=e=>{e.key===`Escape`&&s()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[s]),(0,M.jsx)(`div`,{className:`fixed inset-0 z-40 flex items-center justify-center bg-black/60`,onClick:s,onKeyDown:()=>{},role:`presentation`,children:(0,M.jsxs)(`div`,{ref:l,role:`alertdialog`,"aria-modal":`true`,"aria-label":e,className:`w-96 border border-line bg-surface shadow-xl`,onClick:e=>e.stopPropagation(),onKeyDown:()=>{},children:[(0,M.jsx)(`div`,{className:`border-b border-line px-3 py-2 text-[10px] font-bold uppercase tracking-[0.12em] text-fg`,children:e}),(0,M.jsx)(`p`,{className:`px-3 py-3 text-[12px] leading-relaxed text-muted`,children:t}),(0,M.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-line px-3 py-2`,children:[(0,M.jsx)(`button`,{type:`button`,onClick:s,className:`border border-line bg-bg px-3 py-1 text-[11px] text-muted transition-colors hover:border-primary hover:text-fg`,children:`Cancel`}),(0,M.jsx)(`button`,{ref:c,type:`button`,onClick:o,disabled:a,className:`border px-3 py-1 text-[11px] transition-colors disabled:opacity-40 ${i?`border-kobe-red/50 bg-kobe-red/10 text-kobe-red hover:bg-kobe-red/20`:`border-primary bg-inset text-fg hover:bg-primary/10`}`,children:a?`Working…`:n})]})]})})}function P(e){let t=e?.lifecycle;if(!e||!t||t===`unknown`)return null;let n=e.checkState,r=t===`merged`?`text-kobe-violet`:t===`closed`||n===`failing`?`text-kobe-red`:n===`passing`?`text-kobe-green`:n===`pending`?`text-kobe-yellow`:`text-kobe-blue`;return{label:e.number?`PR #${e.number}`:`PR`,cls:r,title:`${t}${n&&n!==`none`?` · ${n}`:``}`}}var F=`after:pointer-events-none after:absolute after:right-0 after:bottom-full after:z-10 after:mb-1 after:hidden after:whitespace-nowrap after:border after:border-line after:bg-menu after:px-1.5 after:py-0.5 after:text-[10px] after:text-fg after:content-[attr(data-tip)] hover:after:block`;function I({counts:e}){return!e||e.added===0&&e.deleted===0?null:(0,M.jsxs)(`span`,{className:`shrink-0 font-mono text-[10px]`,children:[(0,M.jsxs)(`span`,{className:`text-kobe-green`,children:[`+`,e.added]}),` `,(0,M.jsxs)(`span`,{className:`text-kobe-red`,children:[`−`,e.deleted]})]})}function L({pr:e}){let t=P(e);return t?(0,M.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] ${t.cls}`,title:t.title,children:t.label}):null}function R({label:e}){return e?(0,M.jsx)(`span`,{className:`shrink-0 rounded-sm border border-line px-1 font-mono text-[9px] uppercase tracking-wide text-subtle`,title:`engine: ${e}`,children:e}):null}var z=[{id:`claude`,label:`Claude`},{id:`codex`,label:`Codex`}],B=!1,V=new Set;function H(){B||(B=!0,fetch(`/api/engines`).then(async e=>{if(!e.ok)return;let t=await e.json();if(!(!Array.isArray(t.engines)||t.engines.length===0)){z=t.engines.filter(e=>typeof e?.id==`string`&&typeof e?.label==`string`).map(e=>({id:e.id,label:e.label,...Array.isArray(e.effortLevels)&&e.effortLevels.every(e=>typeof e==`string`)?{effortLevels:e.effortLevels}:{}}));for(let e of V)e()}}).catch(()=>{}))}function U(){return H(),(0,r.useSyncExternalStore)(e=>(V.add(e),()=>V.delete(e)),()=>z,()=>z)}var W=`claude`;function G(e){return e||`claude`}function K(e,t){let n=G(t);return e.find(e=>e.id===n)?.label??n}function q(e){let t=new Set;for(let n of e)n.archived||n.kind===`main`||t.add(G(n.vendor));return[...t]}function J(e){return q(e).length>1}function Y(e,t,n){return n&&t.kind!==`main`?K(e,t.vendor):null}export{f as C,p as S,v as _,G as a,h as b,R as c,N as d,j as f,k as g,O as h,Y as i,L as l,T as m,K as n,U as o,E as p,J as r,I as s,W as t,F as u,_ as v,d as w,m as x,y};
1
+ import{S as e,y as t}from"./tabs-CmaDBSUQ.js";import{g as n}from"./index-BsVnxIKo.js";var r=e(t()),i=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),a=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),o=e=>{let t=a(e);return t.charAt(0).toUpperCase()+t.slice(1)},s=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),c=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0},l={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},u=(0,r.forwardRef)(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:i,className:a=``,children:o,iconNode:u,...d},f)=>(0,r.createElement)(`svg`,{ref:f,...l,width:t,height:t,stroke:e,strokeWidth:i?Number(n)*24/Number(t):n,className:s(`lucide`,a),...!o&&!c(d)&&{"aria-hidden":`true`},...d},[...u.map(([e,t])=>(0,r.createElement)(e,t)),...Array.isArray(o)?o:[o]])),d=(e,t)=>{let n=(0,r.forwardRef)(({className:n,...a},c)=>(0,r.createElement)(u,{ref:c,iconNode:t,className:s(`lucide-${i(o(e))}`,`lucide-${e}`,n),...a}));return n.displayName=o(e),n},f=d(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),p=d(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),m=d(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);function h(e,t){let n=t.trim().toLowerCase();return n?e.toLowerCase().includes(n):!0}async function g(e){let t=await e.json();if(!e.ok)throw Error(t.error??`request failed (${e.status})`);return t}async function _(){return g(await fetch(`/api/settings`))}async function v(){try{let e=await _();return typeof e.defaultEngine==`string`&&e.defaultEngine.trim()?e.defaultEngine.trim():null}catch{return null}}async function y(e){return g(await fetch(`/api/settings`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(e)}))}var b=5e3,x=[],S=0,C=new Set;function w(){for(let e of C)e()}function T(e,t){S+=1;let n={id:S,kind:e,message:t};x=[...x.slice(-3),n],w(),window.setTimeout(()=>E(n.id),b)}function E(e){x.some(t=>t.id===e)&&(x=x.filter(t=>t.id!==e),w())}function D(e,t){return`${e}: ${t instanceof Error?t.message:String(t)}`}function O(e,t){T(`error`,D(e,t))}function k(){return(0,r.useSyncExternalStore)(e=>(C.add(e),()=>C.delete(e)),()=>x,()=>x)}var A=[`a[href]`,`button:not([disabled])`,`textarea:not([disabled])`,`input:not([disabled])`,`select:not([disabled])`,`[tabindex]:not([tabindex="-1"])`].join(`,`);function j(e,t=!0){(0,r.useEffect)(()=>{if(!t)return;let n=e.current;if(!n)return;let r=document.activeElement,i=e=>{if(e.key!==`Tab`)return;let t=Array.from(n.querySelectorAll(A)).filter(e=>e.offsetParent!==null||e===document.activeElement);if(t.length===0)return;let r=t[0],i=t[t.length-1],a=document.activeElement;e.shiftKey?(a===r||!n.contains(a))&&(e.preventDefault(),i.focus()):(a===i||!n.contains(a))&&(e.preventDefault(),r.focus())};return n.addEventListener(`keydown`,i),()=>{n.removeEventListener(`keydown`,i),r?.focus?.()}},[e,t])}var M=n();function N({title:e,body:t,confirmLabel:n,danger:i=!1,busy:a=!1,onConfirm:o,onCancel:s}){let c=(0,r.useRef)(null),l=(0,r.useRef)(null);return j(l),(0,r.useEffect)(()=>{c.current?.focus();let e=e=>{e.key===`Escape`&&s()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[s]),(0,M.jsx)(`div`,{className:`fixed inset-0 z-40 flex items-center justify-center bg-black/60`,onClick:s,onKeyDown:()=>{},role:`presentation`,children:(0,M.jsxs)(`div`,{ref:l,role:`alertdialog`,"aria-modal":`true`,"aria-label":e,className:`w-96 border border-line bg-surface shadow-xl`,onClick:e=>e.stopPropagation(),onKeyDown:()=>{},children:[(0,M.jsx)(`div`,{className:`border-b border-line px-3 py-2 text-[10px] font-bold uppercase tracking-[0.12em] text-fg`,children:e}),(0,M.jsx)(`p`,{className:`px-3 py-3 text-[12px] leading-relaxed text-muted`,children:t}),(0,M.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-line px-3 py-2`,children:[(0,M.jsx)(`button`,{type:`button`,onClick:s,className:`border border-line bg-bg px-3 py-1 text-[11px] text-muted transition-colors hover:border-primary hover:text-fg`,children:`Cancel`}),(0,M.jsx)(`button`,{ref:c,type:`button`,onClick:o,disabled:a,className:`border px-3 py-1 text-[11px] transition-colors disabled:opacity-40 ${i?`border-kobe-red/50 bg-kobe-red/10 text-kobe-red hover:bg-kobe-red/20`:`border-primary bg-inset text-fg hover:bg-primary/10`}`,children:a?`Working…`:n})]})]})})}function P(e){let t=e?.lifecycle;if(!e||!t||t===`unknown`)return null;let n=e.checkState,r=t===`merged`?`text-kobe-violet`:t===`closed`||n===`failing`?`text-kobe-red`:n===`passing`?`text-kobe-green`:n===`pending`?`text-kobe-yellow`:`text-kobe-blue`;return{label:e.number?`PR #${e.number}`:`PR`,cls:r,title:`${t}${n&&n!==`none`?` · ${n}`:``}`}}var F=`after:pointer-events-none after:absolute after:right-0 after:bottom-full after:z-10 after:mb-1 after:hidden after:whitespace-nowrap after:border after:border-line after:bg-menu after:px-1.5 after:py-0.5 after:text-[10px] after:text-fg after:content-[attr(data-tip)] hover:after:block`;function I({counts:e}){return!e||e.added===0&&e.deleted===0?null:(0,M.jsxs)(`span`,{className:`shrink-0 font-mono text-[10px]`,children:[(0,M.jsxs)(`span`,{className:`text-kobe-green`,children:[`+`,e.added]}),` `,(0,M.jsxs)(`span`,{className:`text-kobe-red`,children:[`−`,e.deleted]})]})}function L({pr:e}){let t=P(e);return t?(0,M.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] ${t.cls}`,title:t.title,children:t.label}):null}function R({label:e}){return e?(0,M.jsx)(`span`,{className:`shrink-0 rounded-sm border border-line px-1 font-mono text-[9px] uppercase tracking-wide text-subtle`,title:`engine: ${e}`,children:e}):null}var z=[{id:`claude`,label:`Claude`},{id:`codex`,label:`Codex`}],B=!1,V=new Set;function H(){B||(B=!0,fetch(`/api/engines`).then(async e=>{if(!e.ok)return;let t=await e.json();if(!(!Array.isArray(t.engines)||t.engines.length===0)){z=t.engines.filter(e=>typeof e?.id==`string`&&typeof e?.label==`string`).map(e=>({id:e.id,label:e.label,...Array.isArray(e.effortLevels)&&e.effortLevels.every(e=>typeof e==`string`)?{effortLevels:e.effortLevels}:{}}));for(let e of V)e()}}).catch(()=>{}))}function U(){return H(),(0,r.useSyncExternalStore)(e=>(V.add(e),()=>V.delete(e)),()=>z,()=>z)}var W=`claude`;function G(e){return e||`claude`}function K(e,t){let n=G(t);return e.find(e=>e.id===n)?.label??n}function q(e){let t=new Set;for(let n of e)n.archived||n.kind===`main`||t.add(G(n.vendor));return[...t]}function J(e){return q(e).length>1}function Y(e,t,n){return n&&t.kind!==`main`?K(e,t.vendor):null}export{f as C,p as S,v as _,G as a,h as b,R as c,N as d,j as f,k as g,O as h,Y as i,L as l,T as m,K as n,U as o,E as p,J as r,I as s,W as t,F as u,_ as v,d as w,m as x,y};
@@ -5,7 +5,7 @@
5
5
  <meta charset="UTF-8" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>kobe-web</title>
8
- <script type="module" crossorigin src="/assets/index-Bp9dfUdH.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-BsVnxIKo.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/terminal-CapzGZr6.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/tabs-CmaDBSUQ.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/useNavigate-CXvSccc8.js">
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@sma1lboy/kobe",
4
- "version": "0.7.31",
4
+ "version": "0.7.32",
5
5
  "description": "TUI orchestrator for Claude Code (codename)",
6
6
  "type": "module",
7
7
  "packageManager": "bun@1.3.13",
@@ -1 +0,0 @@
1
- import{S as e,f as t,y as n}from"./tabs-CmaDBSUQ.js";import{t as r}from"./useNavigate-CXvSccc8.js";import{n as i,t as a}from"./ViewToggle-DAvvHlkd.js";import{g as o,n as s,r as c}from"./index-Bp9dfUdH.js";import{C as l,S as ee,d as te,h as u,m as d,x as f}from"./vendor-BOFoJ49C.js";import{_ as p,c as m,d as ne,f as h,g,h as _,i as v,m as re,n as y,p as b,r as x,s as S,t as ie,v as C}from"./IssuePeek-z77QfvyZ.js";var w=e(n(),1),T={query:``,repo:null},E=new Set;function D(e){T={...T,...e};for(let e of E)e()}function O(e){return E.add(e),()=>{E.delete(e)}}function k(){return T}function A(){return(0,w.useSyncExternalStore)(O,k,k)}function j(e){e!==T.query&&D({query:e})}function M(e){e!==T.repo&&D({repo:e})}var N=o();function P({repo:e,column:t,onNewIssue:n,onPeekIssue:r,onOpenTask:i,onDeleteIssue:a}){return(0,N.jsxs)(`section`,{"data-column":`${e}:${t.key}`,className:`flex h-full shrink-0 flex-col border border-transparent ${t.key===`backlog`?`w-96`:`w-72`}`,children:[(0,N.jsxs)(`div`,{className:`mb-2 flex items-baseline gap-2`,children:[(0,N.jsx)(`h2`,{className:`text-[11px] font-bold uppercase tracking-[0.12em] ${t.accent}`,children:t.title}),(0,N.jsx)(`span`,{className:`font-mono text-[10px] text-subtle`,children:t.cards.length+t.hiddenCount}),n&&(0,N.jsxs)(`button`,{type:`button`,onClick:n,className:`ml-auto flex items-center gap-0.5 text-[10px] text-subtle transition-colors hover:text-fg`,title:`New issue in this project`,children:[(0,N.jsx)(l,{size:11,strokeWidth:2}),(0,N.jsx)(`span`,{children:`New issue`})]})]}),(0,N.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto pb-2`,children:[t.cards.length===0?(0,N.jsx)(`div`,{className:`border border-dashed border-line-subtle p-3 text-center text-[11px] text-subtle`,children:`none`}):t.cards.map(e=>{let{issue:t}=e,n=p(t)?t.taskId:void 0;return(0,N.jsxs)(`div`,{className:`group/wrap relative`,children:[(0,N.jsx)(x,{issue:t,onOpen:()=>r(t),onDelete:()=>a(t)}),n&&(0,N.jsxs)(`button`,{type:`button`,onClick:()=>i(n),"aria-label":`Open task for issue #${t.id}`,title:`Started — open task`,className:`absolute bottom-2 right-2 flex items-center gap-1 border border-line bg-surface px-1.5 py-0.5 text-[10px] text-subtle opacity-0 transition-opacity hover:border-primary hover:text-fg focus-visible:opacity-100 group-hover/wrap:opacity-100`,children:[(0,N.jsx)(C,{size:10,strokeWidth:1.8}),(0,N.jsx)(`span`,{children:`open task`})]})]},`issue:${t.id}`)}),t.hiddenCount>0&&(0,N.jsxs)(`div`,{className:`p-2 text-center text-[10px] text-subtle`,children:[`+`,t.hiddenCount,` more — finish issues to thin this column`]})]})]})}function ae({board:e,onNewIssue:t,onPeekIssue:n,onOpenTask:r,onDeleteIssue:i}){return(0,N.jsx)(`div`,{className:`flex h-full min-w-max gap-4`,children:e.columns.map(a=>(0,N.jsx)(P,{repo:e.repo,column:a,onNewIssue:a.key===`backlog`?()=>t(e.repo):void 0,onPeekIssue:n,onOpenTask:r,onDeleteIssue:t=>i(e.repo,t)},a.key))})}function F(){let{tasks:e,hydrated:n,daemonConnected:o}=c(),{query:p,repo:x}=A(),C=r(),T=(0,w.useRef)(null),[E,D]=(0,w.useState)(null),[O,k]=(0,w.useState)(null),[P,F]=(0,w.useState)(!1),[I,L]=(0,w.useState)(null),[R,z]=(0,w.useState)(new Map),[B,V]=(0,w.useState)(null),[H,U]=(0,w.useState)([]);(0,w.useEffect)(()=>{let e=!1;return m().then(t=>{e||U(t)}).catch(e=>u(`load projects`,e)),()=>{e=!0}},[]);let W=(0,w.useMemo)(()=>ne(e,H),[e,H]),G=(0,w.useMemo)(()=>W.map(e=>e.repo),[W]),K=(0,w.useMemo)(()=>re(W,x),[W,x]),{data:q,pending:oe,refresh:J}=v(G),{allIssues:Y,repoChips:se,projectBoards:X,shownCount:Z,hasAnyCard:Q}=(0,w.useMemo)(()=>g({issueData:q,issueRepos:G,pendingLinks:R,query:p,repoFilter:K}),[q,G,R,p,K]);(0,w.useEffect)(()=>{z(e=>{if(e.size===0)return e;let t=new Map(e),n=!1;for(let e of G){let r=q[e];if(!(!r||!r.exists))for(let i of r.issues)i.taskId&&t.delete(`${e}:${i.id}`)&&(n=!0)}return n?t:e})},[G,q]),(0,w.useEffect)(()=>{E&&(Y.some(e=>e.repo===E.repo&&e.issue.id===E.id)||D(null))},[Y,E]),(0,w.useEffect)(()=>{let e=e=>{if(E||O||B||e.metaKey||e.ctrlKey||e.altKey)return;let t=e.target,n=!!t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.tagName===`SELECT`||t.isContentEditable);e.key===`/`&&!n?(e.preventDefault(),T.current?.focus()):e.key===`Escape`&&t===T.current&&p&&(e.preventDefault(),j(``))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[p,E,O,B]),(0,w.useEffect)(()=>{x!==K&&M(K)},[K,x]);let ce=!!p,$=e=>{t(e),s(`task.setActive`,{taskId:e}).catch(()=>{}),C({to:`/task/$taskId`,params:{taskId:e}})},le=async(e,t,n)=>{F(!0);try{return await _(e,t,n),J([e]),!0}catch(e){return u(`update issue`,e),!1}finally{F(!1)}},ue=async(e,t)=>{F(!0);try{await S(e,t.id),J([e]),V(null),E?.repo===e&&E.id===t.id&&D(null)}catch(e){u(`delete issue`,e)}finally{F(!1)}},de=async(e,t,n,r)=>{if(I===null){L(t.id);try{let{taskId:i}=await b(e,t,n,r);return z(n=>{let r=new Map(n);return r.set(`${e}:${t.id}`,{repo:e,issueId:t.id,taskId:i}),r}),i}catch(e){u(`quick start issue`,e);return}finally{L(null)}}};return(0,N.jsxs)(`div`,{className:`flex h-screen flex-col overflow-hidden bg-bg text-fg`,children:[(0,N.jsxs)(`header`,{className:`flex h-10 shrink-0 items-center gap-3 border-b border-line bg-surface px-3`,children:[(0,N.jsx)(`span`,{className:`font-mono text-[13px] font-bold text-primary`,children:`[kobe]`}),(0,N.jsx)(a,{}),(0,N.jsxs)(`label`,{className:`flex h-7 items-center gap-1.5 border border-line bg-bg px-2 text-muted focus-within:border-line-active`,children:[(0,N.jsx)(ee,{size:13,strokeWidth:1.8,className:`shrink-0 text-subtle`}),(0,N.jsx)(`input`,{ref:T,value:p,onChange:e=>j(e.target.value),placeholder:`Filter issues ( / )`,className:`w-44 bg-transparent text-[12px] text-fg placeholder:text-subtle focus:outline-none`}),p&&(0,N.jsx)(`button`,{type:`button`,onClick:()=>j(``),className:`shrink-0 text-subtle hover:text-fg`,"aria-label":`clear filter`,title:`Clear filter`,children:(0,N.jsx)(f,{size:13,strokeWidth:2})})]}),W.length>0&&(0,N.jsxs)(`label`,{className:`flex h-7 min-w-0 max-w-[24rem] items-center gap-1.5 border border-line bg-bg px-2 text-muted focus-within:border-line-active`,children:[(0,N.jsx)(`span`,{className:`shrink-0 text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:`Project`}),(0,N.jsx)(`select`,{value:K??``,onChange:e=>M(e.target.value),title:K??`Select project`,className:`min-w-0 flex-1 bg-transparent font-mono text-[11px] text-fg focus:outline-none`,children:W.map(e=>{let t=se.find(t=>t.repo===e.repo)?.count??0;return(0,N.jsxs)(`option`,{value:e.repo,title:e.repo,className:`bg-surface text-fg`,children:[e.label,` · `,t,` · `,e.repo]},e.repo)})})]}),(0,N.jsx)(`div`,{className:`ml-auto flex items-center gap-3 font-mono text-[11px] text-subtle`,children:(0,N.jsxs)(`span`,{children:[Z,` issue`,Z===1?``:`s`]})})]}),(0,N.jsx)(i,{}),(0,N.jsx)(`div`,{className:`min-h-0 flex-1 overflow-x-auto overflow-y-hidden p-4`,children:!n||oe&&!Q?(0,N.jsx)(`p`,{className:`text-[12px] text-subtle`,children:`Loading…`}):Z===0&&ce&&Q?(0,N.jsxs)(`div`,{className:`text-[12px] leading-relaxed text-subtle`,children:[(0,N.jsx)(`p`,{children:`No issues match.`}),(0,N.jsx)(`button`,{type:`button`,onClick:()=>{j(``)},className:`mt-3 border border-line bg-surface px-2 py-1 text-[11px] text-muted hover:border-primary hover:text-fg`,children:`Clear filters`})]}):Z===0&&!o?(0,N.jsx)(`p`,{className:`text-[12px] text-subtle`,children:`Can't reach the daemon — issue list may be incomplete.`}):Z===0?(0,N.jsxs)(`div`,{className:`text-[12px] leading-relaxed text-subtle`,children:[(0,N.jsx)(`p`,{children:K?`No issues yet for the selected project. Create one to start tracking work.`:`No projects yet. Create a task from the workspace to track issues against its repo.`}),(0,N.jsx)(`div`,{className:`mt-3 flex items-center gap-2`,children:(0,N.jsx)(`button`,{type:`button`,onClick:()=>C({to:`/`}),className:`border border-line bg-surface px-2 py-1 text-[11px] text-muted hover:border-primary hover:text-fg`,children:`Back to workspace`})})]}):X[0]?(0,N.jsx)(ae,{board:X[0],onNewIssue:k,onPeekIssue:e=>D({repo:X[0].repo,id:e.id}),onOpenTask:$,onDeleteIssue:(e,t)=>V({repo:e,issue:t})}):(0,N.jsx)(`p`,{className:`text-[12px] text-subtle`,children:`No issues match.`})}),(()=>{let e=K??X[0]?.repo??G[0];return e?(0,N.jsx)(`button`,{type:`button`,onClick:()=>k(e),title:`New issue`,"aria-label":`New issue`,className:`fixed bottom-6 right-6 z-20 flex h-12 w-12 items-center justify-center rounded-full border border-primary bg-primary text-bg shadow-lg transition-transform hover:scale-105`,children:(0,N.jsx)(l,{size:22,strokeWidth:2.2})}):null})(),O&&(0,N.jsx)(y,{repoRoot:O,open:!0,onClose:()=>k(null),onCreated:(e,t)=>{O&&J([O]),d(`success`,t?`Issue #${e.id} created — starting its task`:`Issue #${e.id} created`)}}),(()=>{if(!E)return null;let e=Y.find(e=>e.repo===E.repo&&e.issue.id===E.id);return e?(0,N.jsx)(ie,{issue:e.issue,repoRoot:e.repo,busy:P,starting:I===e.issue.id,onClose:()=>D(null),onSave:t=>le(e.repo,e.issue.id,t),onStart:async({vendor:t,effort:n,watch:r})=>{let i=await de(e.repo,e.issue,t,n);r&&i?(D(null),$(i)):D(null)},onOpenSession:e.issue.taskId?()=>{let t=e.issue.taskId;D(null),t&&$(t)}:void 0,onPromptMerge:e.issue.taskId?()=>{let t=e.issue.taskId;t&&h(t,e.issue).then(()=>d(`success`,`Prompt inserted for issue #${e.issue.id}`)).catch(e=>u(`prompt issue merge`,e))}:void 0},`${e.repo}:${e.issue.id}`):null})(),B&&(0,N.jsx)(te,{title:`Delete issue`,body:`Delete issue #${B.issue.id}: "${B.issue.title}"? This removes it from the daemon issue tracker only; it does not delete any task, branch, worktree, or engine session.`,confirmLabel:`Delete`,danger:!0,busy:P,onConfirm:()=>void ue(B.repo,B.issue),onCancel:()=>V(null)})]})}var I=F;export{I as component};
@@ -1 +0,0 @@
1
- import{t as e}from"./AppShell-79UyF3Dn.js";var t=e;export{t as component};