@sma1lboy/kobe 0.9.2 → 0.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/cli/index.js +338 -338
  2. package/dist/cli/kobe-run.js +338 -338
  3. package/dist/cli/rove-run.js +338 -338
  4. package/dist/web-ui/assets/{AppShell-BfJe8WPM.js → AppShell-BvHb-c8o.js} +1 -1
  5. package/dist/web-ui/assets/{Board-CAB3dlkA.js → Board-CcUG5Zqa.js} +1 -1
  6. package/dist/web-ui/assets/{BoardPeek-B3wyNQw8.js → BoardPeek-C5c1gItm.js} +2 -2
  7. package/dist/web-ui/assets/ChatTerminal-B32Pfuys.js +144 -0
  8. package/dist/web-ui/assets/{ConfirmDialog-C9ItPG8O.js → ConfirmDialog-CQUf9GuM.js} +1 -1
  9. package/dist/web-ui/assets/{IssuesPage-C0HDfQQN.js → IssuesPage-BHj8y82L.js} +1 -1
  10. package/dist/web-ui/assets/{WorkspaceTabs-D_fqiti0.js → WorkspaceTabs-DrrZuT8m.js} +2 -2
  11. package/dist/web-ui/assets/board-rQqUWfL9.js +1 -0
  12. package/dist/web-ui/assets/{desktop-DCFDqiHs.js → desktop-B6tIfst1.js} +2 -2
  13. package/dist/web-ui/assets/harness-9M6rZZri.js +1 -0
  14. package/dist/web-ui/assets/{index-B61bJsyx.js → index-BNs9r4hG.js} +3 -3
  15. package/dist/web-ui/assets/issues-9Bx80Ra2.js +1 -0
  16. package/dist/web-ui/assets/routes-F18MCI2e.js +1 -0
  17. package/dist/web-ui/assets/{task._taskId-DvrD4lEo.js → task._taskId-B3nsG86I.js} +1 -1
  18. package/dist/web-ui/assets/{task._taskId-Du-8wD3q.js → task._taskId-rxSYKMea.js} +2 -2
  19. package/dist/web-ui/assets/{worktrees-CxcrnGzz.js → worktrees-Bu5ii1XY.js} +1 -1
  20. package/dist/web-ui/capture-wallpaper.svg +40 -0
  21. package/dist/web-ui/codefox-mark.svg +30 -0
  22. package/dist/web-ui/index.html +3 -3
  23. package/package.json +1 -1
  24. package/dist/web-ui/assets/ChatTerminal-BwJ_NAOT.js +0 -144
  25. package/dist/web-ui/assets/board-Cc5QCmKx.js +0 -1
  26. package/dist/web-ui/assets/harness-C5GkpbhE.js +0 -1
  27. package/dist/web-ui/assets/issues-BQTwPK2g.js +0 -1
  28. package/dist/web-ui/assets/routes-BCbBjdlo.js +0 -1
@@ -1 +1 @@
1
- import{u as e}from"./terminal-6BCvBu4_.js";import{y as t}from"./tabs-DHBP2ShA.js";import{m as n}from"./createLucideIcon-C6nfansM.js";import{r,t as i}from"./desktop-DCFDqiHs.js";import{t as a}from"./use-focus-trap-oPsw86zw.js";var o=n();function s({label:e,tone:t,onClick:n}){return(0,o.jsx)(`button`,{type:`button`,"aria-label":e,title:e,onClick:n,className:`h-3 w-3 rounded-full border border-black/20 ${t===`close`?`bg-[#ff5f57]`:t===`minimize`?`bg-[#febc2e]`:`bg-[#28c840]`}`})}function c(){if(!r())return null;let e=i();return(0,o.jsxs)(`fieldset`,{"data-kobe-window-controls":!0,className:`m-0 flex min-w-0 shrink-0 items-center gap-2 border-0 p-0`,children:[(0,o.jsx)(`legend`,{className:`sr-only`,children:`Window controls`}),(0,o.jsx)(s,{label:`Close window`,tone:`close`,onClick:()=>e?.close()}),(0,o.jsx)(s,{label:`Minimize window`,tone:`minimize`,onClick:()=>e?.minimize()}),(0,o.jsx)(s,{label:`Zoom window`,tone:`zoom`,onClick:()=>e?.toggleMaximize()})]})}var l=e(t(),1);function u({title:e,body:t,confirmLabel:n,danger:r=!1,busy:i=!1,onConfirm:s,onCancel:c}){let u=(0,l.useRef)(null),d=(0,l.useRef)(null);return a(d),(0,l.useEffect)(()=>{u.current?.focus();let e=e=>{e.key===`Escape`&&c()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[c]),(0,o.jsx)(`div`,{className:`fixed inset-0 z-40 flex items-center justify-center bg-black/60`,onClick:c,onKeyDown:()=>{},role:`presentation`,children:(0,o.jsxs)(`div`,{ref:d,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,o.jsx)(`div`,{className:`border-b border-line px-3 py-2 text-[10px] font-bold uppercase tracking-[0.12em] text-fg`,children:e}),(0,o.jsx)(`p`,{className:`px-3 py-3 text-[12px] leading-relaxed text-muted`,children:t}),(0,o.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-line px-3 py-2`,children:[(0,o.jsx)(`button`,{type:`button`,onClick:c,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,o.jsx)(`button`,{ref:u,type:`button`,onClick:s,disabled:i,className:`border px-3 py-1 text-[11px] transition-colors disabled:opacity-40 ${r?`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:i?`Working…`:n})]})]})})}export{c as n,u as t};
1
+ import{u as e}from"./terminal-6BCvBu4_.js";import{y as t}from"./tabs-DHBP2ShA.js";import{m as n}from"./createLucideIcon-C6nfansM.js";import{r,t as i}from"./desktop-B6tIfst1.js";import{t as a}from"./use-focus-trap-oPsw86zw.js";var o=n();function s({label:e,tone:t,onClick:n}){return(0,o.jsx)(`button`,{type:`button`,"aria-label":e,title:e,onClick:n,className:`h-3 w-3 rounded-full border border-black/20 ${t===`close`?`bg-[#ff5f57]`:t===`minimize`?`bg-[#febc2e]`:`bg-[#28c840]`}`})}function c(){if(!r())return null;let e=i();return(0,o.jsxs)(`fieldset`,{"data-kobe-window-controls":!0,className:`m-0 flex min-w-0 shrink-0 items-center gap-2 border-0 p-0`,children:[(0,o.jsx)(`legend`,{className:`sr-only`,children:`Window controls`}),(0,o.jsx)(s,{label:`Close window`,tone:`close`,onClick:()=>e?.close()}),(0,o.jsx)(s,{label:`Minimize window`,tone:`minimize`,onClick:()=>e?.minimize()}),(0,o.jsx)(s,{label:`Zoom window`,tone:`zoom`,onClick:()=>e?.toggleMaximize()})]})}var l=e(t(),1);function u({title:e,body:t,confirmLabel:n,danger:r=!1,busy:i=!1,onConfirm:s,onCancel:c}){let u=(0,l.useRef)(null),d=(0,l.useRef)(null);return a(d),(0,l.useEffect)(()=>{u.current?.focus();let e=e=>{e.key===`Escape`&&c()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[c]),(0,o.jsx)(`div`,{className:`fixed inset-0 z-40 flex items-center justify-center bg-black/60`,onClick:c,onKeyDown:()=>{},role:`presentation`,children:(0,o.jsxs)(`div`,{ref:d,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,o.jsx)(`div`,{className:`border-b border-line px-3 py-2 text-[10px] font-bold uppercase tracking-[0.12em] text-fg`,children:e}),(0,o.jsx)(`p`,{className:`px-3 py-3 text-[12px] leading-relaxed text-muted`,children:t}),(0,o.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-line px-3 py-2`,children:[(0,o.jsx)(`button`,{type:`button`,onClick:c,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,o.jsx)(`button`,{ref:u,type:`button`,onClick:s,disabled:i,className:`border px-3 py-1 text-[11px] transition-colors disabled:opacity-40 ${r?`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:i?`Working…`:n})]})]})})}export{c as n,u as t};
@@ -1 +1 @@
1
- import{u as e}from"./terminal-6BCvBu4_.js";import{c as t,y as n}from"./tabs-DHBP2ShA.js";import{m as r}from"./createLucideIcon-C6nfansM.js";import{a as i,r as a}from"./toast-2mA6GzBq.js";import{n as o}from"./store-BK5yanfN.js";import{t as ee}from"./arrow-left-wT_Oflhg.js";import{a as s,i as c,n as l,r as u,t as d}from"./lazy-issue-panels-GvnRdSfG.js";import{t as f}from"./plus-Bz25iNHX.js";import{t as p}from"./search-zs6lDYfz.js";import{t as m}from"./x-MtSojW5V.js";import{n as h,t as g}from"./ConfirmDialog-C9ItPG8O.js";import{a as _,c as v,d as y,h as b,l as te,m as ne,n as re,s as ie,t as x,u as ae}from"./issues-BjnSNgu-.js";var S=e(n(),1);function C(e,t,n){let r=e.find(e=>e.length>0)?.[0]??null;if(t==null)return r;let i=-1,a=-1;for(let[n,r]of e.entries()){let e=r.indexOf(t);if(e!==-1){i=n,a=e;break}}if(i===-1)return r;if(n===`up`||n===`down`){let r=e[i],o=n===`up`?a-1:a+1;return r[Math.max(0,Math.min(o,r.length-1))]??t}let o=n===`left`?-1:1;for(let n=i+o;n>=0&&n<e.length;n+=o){let r=e[n];if(r.length!==0)return r[Math.min(a,r.length-1)]??t}return t}var w=r();function T(){let{tasks:e,hydrated:n}=o(),r=i(),[T,oe]=(0,S.useState)([]);(0,S.useEffect)(()=>{let e=!1;return ie().then(t=>{e||oe(t)}).catch(e=>a(`load projects`,e)),()=>{e=!0}},[]);let E=(0,S.useMemo)(()=>ae(e,T),[e,T]),[D,O]=(0,S.useState)(null);(0,S.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:se}=s((0,S.useMemo)(()=>D?[D]:[],[D])),j=D?k[D]:void 0,[M,N]=(0,S.useState)(``),[P,F]=(0,S.useState)(!1),[I,L]=(0,S.useState)(null),[R,z]=(0,S.useState)(null),[B,V]=(0,S.useState)(null),[H,U]=(0,S.useState)(!1),[W,G]=(0,S.useState)(!1),[ce,K]=(0,S.useState)(!1),q=j?.issues??[],J=(0,S.useMemo)(()=>v(q,{query:M}),[q,M]),Y=(0,S.useMemo)(()=>te(J),[J]),X=J.length,Z=R==null?null:q.find(e=>e.id===R),Q=B==null?null:q.find(e=>e.id===B);(0,S.useEffect)(()=>{R!=null&&!q.some(e=>e.id===R)&&z(null),B!=null&&!q.some(e=>e.id===B)&&V(null)},[q,R,B]),(0,S.useEffect)(()=>L(null),[D]),(0,S.useEffect)(()=>{if(P||R!=null||B!=null)return;let e=e=>{let t=e.target;if(t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.tagName===`SELECT`||t.isContentEditable))return;let n=e.key===`ArrowUp`?`up`:e.key===`ArrowDown`?`down`:e.key===`ArrowLeft`?`left`:e.key===`ArrowRight`?`right`:null;if(n){e.preventDefault();let t=C(x.map(e=>Y[e].map(e=>e.id)),I,n);t!=null&&L(t);return}(e.key===`Enter`||e.key===` `)&&I!=null&&J.some(e=>e.id===I)&&(e.preventDefault(),z(I))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[Y,J,I,P,R,B]),(0,S.useEffect)(()=>{I!=null&&document.querySelector(`[data-issue-card="${I}"]`)?.scrollIntoView({block:`nearest`})},[I]);let $=e=>{r({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`,{"data-kobe-topbar":!0,className:`flex h-10 shrink-0 items-center gap-3 border-b border-line bg-surface px-3`,children:[(0,w.jsx)(h,{}),(0,w.jsxs)(`button`,{type:`button`,onClick:()=>r({to:`/`}),className:`flex items-center gap-1.5 text-muted transition-colors hover:text-fg`,title:`Back to workspace`,children:[(0,w.jsx)(ee,{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)(p,{size:13,strokeWidth:1.8,className:`shrink-0 text-subtle`}),(0,w.jsx)(`input`,{value:M,onChange:e=>N(e.target.value),placeholder:`Filter stories ( #id, title, body )`,className:`w-52 bg-transparent text-[12px] text-fg placeholder:text-subtle focus:outline-none`}),M&&(0,w.jsx)(`button`,{type:`button`,onClick:()=>N(``),className:`shrink-0 text-subtle hover:text-fg`,"aria-label":`clear filter`,title:`Clear filter`,children:(0,w.jsx)(m,{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,` stor`,X===1?`y`:`ies`]}),(0,w.jsxs)(`button`,{type:`button`,disabled:!D,onClick:()=>F(!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 story`,children:[(0,w.jsx)(f,{size:13,strokeWidth:1.8}),`New story`]})]})]}),(0,w.jsx)(`div`,{className:`min-h-0 flex-1 overflow-x-auto overflow-y-hidden p-4`,children:D?!n||se&&!j?(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:M?`No stories match your filter.`:`No stories yet. Capture one with New story.`}):(0,w.jsx)(`div`,{className:`flex h-full min-h-0 gap-4`,children:x.map(e=>{let t=re[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)(c,{issue:e,selected:e.id===I,onOpen:()=>{L(e.id),z(e.id)},onDelete:()=>V(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 stories against its repo.`})}),D&&P&&(0,w.jsx)(d,{children:(0,w.jsx)(l,{repoRoot:D,open:P,onClose:()=>F(!1),onCreated:(e,t)=>{t&&e.taskId&&$(e.taskId)}})}),D&&Z&&(0,w.jsx)(d,{children:(0,w.jsx)(u,{issue:Z,repoRoot:D,busy:H,starting:W,onClose:()=>z(null),onSave:async e=>{if(!D||R==null)return!1;U(!0);try{return await b(D,R,{title:e.title.trim(),body:e.body}),!0}catch(e){return a(`save issue`,e),!1}finally{U(!1)}},onStart:e=>{!D||!Z||(G(!0),ne(D,Z,e).then(({workspaceTaskId:t})=>{z(null),e.watch&&$(t)}).catch(e=>a(`start issue`,e)).finally(()=>G(!1)))},onOpenSession:Z.taskId?()=>{let e=Z.taskId;e&&(t(e),$(e))}:void 0,onPromptMerge:Z.taskId?()=>{let e=Z.taskId;e&&y(e,Z).catch(e=>a(`prompt issue merge`,e))}:void 0})}),Q&&(0,w.jsx)(g,{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:ce,onConfirm:()=>{!D||B==null||(K(!0),_(D,B).then(()=>V(null)).catch(e=>a(`delete issue`,e)).finally(()=>K(!1)))},onCancel:()=>V(null)})]})}export{T as IssuesPage};
1
+ import{u as e}from"./terminal-6BCvBu4_.js";import{c as t,y as n}from"./tabs-DHBP2ShA.js";import{m as r}from"./createLucideIcon-C6nfansM.js";import{a as i,r as a}from"./toast-2mA6GzBq.js";import{n as o}from"./store-BK5yanfN.js";import{t as ee}from"./arrow-left-wT_Oflhg.js";import{a as s,i as c,n as l,r as u,t as d}from"./lazy-issue-panels-GvnRdSfG.js";import{t as f}from"./plus-Bz25iNHX.js";import{t as p}from"./search-zs6lDYfz.js";import{t as m}from"./x-MtSojW5V.js";import{n as h,t as g}from"./ConfirmDialog-CQUf9GuM.js";import{a as _,c as v,d as y,h as b,l as te,m as ne,n as re,s as ie,t as x,u as ae}from"./issues-BjnSNgu-.js";var S=e(n(),1);function C(e,t,n){let r=e.find(e=>e.length>0)?.[0]??null;if(t==null)return r;let i=-1,a=-1;for(let[n,r]of e.entries()){let e=r.indexOf(t);if(e!==-1){i=n,a=e;break}}if(i===-1)return r;if(n===`up`||n===`down`){let r=e[i],o=n===`up`?a-1:a+1;return r[Math.max(0,Math.min(o,r.length-1))]??t}let o=n===`left`?-1:1;for(let n=i+o;n>=0&&n<e.length;n+=o){let r=e[n];if(r.length!==0)return r[Math.min(a,r.length-1)]??t}return t}var w=r();function T(){let{tasks:e,hydrated:n}=o(),r=i(),[T,oe]=(0,S.useState)([]);(0,S.useEffect)(()=>{let e=!1;return ie().then(t=>{e||oe(t)}).catch(e=>a(`load projects`,e)),()=>{e=!0}},[]);let E=(0,S.useMemo)(()=>ae(e,T),[e,T]),[D,O]=(0,S.useState)(null);(0,S.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:se}=s((0,S.useMemo)(()=>D?[D]:[],[D])),j=D?k[D]:void 0,[M,N]=(0,S.useState)(``),[P,F]=(0,S.useState)(!1),[I,L]=(0,S.useState)(null),[R,z]=(0,S.useState)(null),[B,V]=(0,S.useState)(null),[H,U]=(0,S.useState)(!1),[W,G]=(0,S.useState)(!1),[ce,K]=(0,S.useState)(!1),q=j?.issues??[],J=(0,S.useMemo)(()=>v(q,{query:M}),[q,M]),Y=(0,S.useMemo)(()=>te(J),[J]),X=J.length,Z=R==null?null:q.find(e=>e.id===R),Q=B==null?null:q.find(e=>e.id===B);(0,S.useEffect)(()=>{R!=null&&!q.some(e=>e.id===R)&&z(null),B!=null&&!q.some(e=>e.id===B)&&V(null)},[q,R,B]),(0,S.useEffect)(()=>L(null),[D]),(0,S.useEffect)(()=>{if(P||R!=null||B!=null)return;let e=e=>{let t=e.target;if(t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.tagName===`SELECT`||t.isContentEditable))return;let n=e.key===`ArrowUp`?`up`:e.key===`ArrowDown`?`down`:e.key===`ArrowLeft`?`left`:e.key===`ArrowRight`?`right`:null;if(n){e.preventDefault();let t=C(x.map(e=>Y[e].map(e=>e.id)),I,n);t!=null&&L(t);return}(e.key===`Enter`||e.key===` `)&&I!=null&&J.some(e=>e.id===I)&&(e.preventDefault(),z(I))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[Y,J,I,P,R,B]),(0,S.useEffect)(()=>{I!=null&&document.querySelector(`[data-issue-card="${I}"]`)?.scrollIntoView({block:`nearest`})},[I]);let $=e=>{r({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`,{"data-kobe-topbar":!0,className:`flex h-10 shrink-0 items-center gap-3 border-b border-line bg-surface px-3`,children:[(0,w.jsx)(h,{}),(0,w.jsxs)(`button`,{type:`button`,onClick:()=>r({to:`/`}),className:`flex items-center gap-1.5 text-muted transition-colors hover:text-fg`,title:`Back to workspace`,children:[(0,w.jsx)(ee,{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)(p,{size:13,strokeWidth:1.8,className:`shrink-0 text-subtle`}),(0,w.jsx)(`input`,{value:M,onChange:e=>N(e.target.value),placeholder:`Filter stories ( #id, title, body )`,className:`w-52 bg-transparent text-[12px] text-fg placeholder:text-subtle focus:outline-none`}),M&&(0,w.jsx)(`button`,{type:`button`,onClick:()=>N(``),className:`shrink-0 text-subtle hover:text-fg`,"aria-label":`clear filter`,title:`Clear filter`,children:(0,w.jsx)(m,{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,` stor`,X===1?`y`:`ies`]}),(0,w.jsxs)(`button`,{type:`button`,disabled:!D,onClick:()=>F(!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 story`,children:[(0,w.jsx)(f,{size:13,strokeWidth:1.8}),`New story`]})]})]}),(0,w.jsx)(`div`,{className:`min-h-0 flex-1 overflow-x-auto overflow-y-hidden p-4`,children:D?!n||se&&!j?(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:M?`No stories match your filter.`:`No stories yet. Capture one with New story.`}):(0,w.jsx)(`div`,{className:`flex h-full min-h-0 gap-4`,children:x.map(e=>{let t=re[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)(c,{issue:e,selected:e.id===I,onOpen:()=>{L(e.id),z(e.id)},onDelete:()=>V(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 stories against its repo.`})}),D&&P&&(0,w.jsx)(d,{children:(0,w.jsx)(l,{repoRoot:D,open:P,onClose:()=>F(!1),onCreated:(e,t)=>{t&&e.taskId&&$(e.taskId)}})}),D&&Z&&(0,w.jsx)(d,{children:(0,w.jsx)(u,{issue:Z,repoRoot:D,busy:H,starting:W,onClose:()=>z(null),onSave:async e=>{if(!D||R==null)return!1;U(!0);try{return await b(D,R,{title:e.title.trim(),body:e.body}),!0}catch(e){return a(`save issue`,e),!1}finally{U(!1)}},onStart:e=>{!D||!Z||(G(!0),ne(D,Z,e).then(({workspaceTaskId:t})=>{z(null),e.watch&&$(t)}).catch(e=>a(`start issue`,e)).finally(()=>G(!1)))},onOpenSession:Z.taskId?()=>{let e=Z.taskId;e&&(t(e),$(e))}:void 0,onPromptMerge:Z.taskId?()=>{let e=Z.taskId;e&&y(e,Z).catch(e=>a(`prompt issue merge`,e))}:void 0})}),Q&&(0,w.jsx)(g,{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:ce,onConfirm:()=>{!D||B==null||(K(!0),_(D,B).then(()=>V(null)).catch(e=>a(`delete issue`,e)).finally(()=>K(!1)))},onCancel:()=>V(null)})]})}export{T as IssuesPage};
@@ -1,3 +1,3 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ChatTerminal-BwJ_NAOT.js","assets/terminal-6BCvBu4_.js","assets/tabs-DHBP2ShA.js","assets/createLucideIcon-C6nfansM.js","assets/store-BK5yanfN.js","assets/rotate-cw-BsVaYno1.js","assets/web-transport-BFuf9jKF.js","assets/ChatTerminal-BrP-ENHg.css"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ChatTerminal-B32Pfuys.js","assets/terminal-6BCvBu4_.js","assets/tabs-DHBP2ShA.js","assets/createLucideIcon-C6nfansM.js","assets/store-BK5yanfN.js","assets/rotate-cw-BsVaYno1.js","assets/web-transport-BFuf9jKF.js","assets/ChatTerminal-BrP-ENHg.css"])))=>i.map(i=>d[i]);
2
2
  import{l as e,o as t,t as n,u as r}from"./terminal-6BCvBu4_.js";import{_ as i,a,h as o,i as s,o as c,p as l,t as u,v as d,y as f}from"./tabs-DHBP2ShA.js";import{d as p,m,p as h,t as g}from"./createLucideIcon-C6nfansM.js";import{i as _,n as v}from"./store-BK5yanfN.js";import{t as y}from"./ChatTranscript-Bw-ROsjY.js";import{t as b}from"./rotate-cw-BsVaYno1.js";import{a as x}from"./vendor-CdtpTJrf.js";import{t as S}from"./web-transport-BFuf9jKF.js";var C=g(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),w=g(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),T=g(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),E=r(f(),1);function D(e,t=36){let n=[...e];return n.length<=t?e:`…${n.slice(n.length-t+1).join(``)}`}async function O(e,n={}){return{files:(await t.get(`/api/diff`,{query:{worktreePath:e,path:n.path,namesOnly:n.namesOnly?`1`:void 0},label:`diff fetch`})).files??[]}}function k(e){switch(e){case`added`:return{label:`A`,cls:`text-kobe-green`};case`untracked`:return{label:`U`,cls:`text-kobe-green`};case`modified`:return{label:`M`,cls:`text-kobe-yellow`};case`deleted`:return{label:`D`,cls:`text-kobe-red`};case`renamed`:return{label:`R`,cls:`text-kobe-blue`};case`copied`:return{label:`C`,cls:`text-kobe-blue`};default:return{label:e.slice(0,1).toUpperCase()||`?`,cls:`text-muted`}}}function A(e){switch(e){case`hunk`:return`kobe-diff-hunk`;case`meta`:return`kobe-diff-meta`;case`add`:return`kobe-diff-add`;case`del`:return`kobe-diff-del`;default:return`kobe-diff-ctx`}}function j(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function M(e){let t=e.replace(/\*+/g,`*`).split(`*`).map(j).join(`.*`);return RegExp(`^${t}$`)}function N(e,t){let n=t.trim(),r=n.startsWith(`!`),i=(r?n.slice(1):n).trim().toLowerCase();if(!i)return!0;let a=e.toLowerCase(),o=i.includes(`*`)?M(i).test(a):a.includes(i);return r?!o:o}function P(e,t){let n=t.trim();return n?e.filter(e=>N(e.path,n)):e}var F=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/,I=[`diff --git`,`index `,`--- `,`+++ `,`new file`,`deleted file`,`rename `,`similarity `,`copy `,`\\ No newline`,`Binary files`];function L(e){return I.some(t=>e.startsWith(t))}function R(e){let t=0,n=0;for(let r of z(e))r.kind===`add`?t++:r.kind===`del`&&n++;return{added:t,deleted:n}}function z(e){let t=e.replace(/\n$/,``);if(t===``)return[];let n=t.split(`
3
- `),r=[],i=0,a=0,o=!1;for(let e of n){let t=F.exec(e);if(t){i=Number.parseInt(t[1],10),a=Number.parseInt(t[2],10),o=!0,r.push({kind:`hunk`,oldLn:null,newLn:null,text:e});continue}if(e.startsWith(`diff --git`)&&(o=!1),e===``||!o&&L(e)){r.push({kind:`meta`,oldLn:null,newLn:null,text:e});continue}let n=e[0];n===`+`?(r.push({kind:`add`,oldLn:null,newLn:a,text:e}),a++):n===`-`?(r.push({kind:`del`,oldLn:i,newLn:null,text:e}),i++):L(e)?r.push({kind:`meta`,oldLn:null,newLn:null,text:e}):(r.push({kind:`ctx`,oldLn:i,newLn:a,text:e}),i++,a++)}return r}var B=m();function V({added:e,deleted:t}){return e===0&&t===0?null:(0,B.jsxs)(`span`,{className:`shrink-0 font-mono text-[10px]`,children:[(0,B.jsxs)(`span`,{className:`text-kobe-green`,children:[`+`,e]}),` `,(0,B.jsxs)(`span`,{className:`text-kobe-red`,children:[`−`,t]})]})}function H(e){let{worktreeChanges:t}=v(),n=e?t[e]:void 0;return n?`${n.added}:${n.deleted}`:`none`}function U({onRetry:e}){let{daemonConnected:t,streamConnected:n}=v();return S({daemonConnected:t,streamConnected:n})?(0,B.jsxs)(`div`,{className:`px-3 py-4 text-[12px] leading-relaxed text-subtle`,children:[`The `,h(),` daemon is offline — changes will reappear once it reconnects.`]}):(0,B.jsxs)(`div`,{className:`flex flex-col items-start gap-2 px-3 py-4`,children:[(0,B.jsx)(`span`,{className:`text-[12px] text-kobe-red`,children:`Couldn't load changes.`}),(0,B.jsxs)(`button`,{type:`button`,onClick:e,className:`flex items-center gap-1.5 border border-line bg-bg px-2 py-1 text-[11px] text-muted transition-colors hover:border-primary hover:text-fg`,children:[(0,B.jsx)(b,{size:11,strokeWidth:2}),`Retry`]})]})}function W({patch:e,wrap:t}){let n=(0,E.useMemo)(()=>z(e),[e]);return e.trim()?(0,B.jsx)(`div`,{className:`kobe-diff min-h-0 flex-1 overflow-auto py-2 font-mono text-[12px] leading-[1.15rem] ${t?`kobe-diff-wrap`:``}`,children:n.map((e,t)=>(0,B.jsxs)(`div`,{className:`kobe-diff-row ${A(e.kind)}`,children:[(0,B.jsx)(`span`,{className:`kobe-diff-gutter`,children:e.oldLn??``}),(0,B.jsx)(`span`,{className:`kobe-diff-gutter`,children:e.newLn??``}),(0,B.jsx)(`span`,{className:`kobe-diff-text`,children:e.text===``?` `:e.text})]},t))}):(0,B.jsx)(`div`,{className:`flex h-full items-center justify-center text-[12px] text-subtle`,children:`No textual diff for this file.`})}function G({worktreePath:e,onOpenFile:t}){let[n,r]=(0,E.useState)(null),[i,a]=(0,E.useState)(!1),[o,s]=(0,E.useState)(null),c=H(e),{worktreeChanges:l}=v(),u=e?l[e]:void 0,d=(0,E.useRef)(0),f=(0,E.useCallback)(async()=>{if(!e){r(null),s(null);return}let t=++d.current;a(!0),s(null);try{let n=await O(e,{namesOnly:!0});t===d.current&&r(n)}catch(e){t===d.current&&(s(e instanceof Error?e.message:String(e)),r(null))}finally{t===d.current&&a(!1)}},[e]);(0,E.useEffect)(()=>{f()},[f,c]);let[p,m]=(0,E.useState)(``);(0,E.useEffect)(()=>{m(``)},[e]);let h=n?.files??[],g=(0,E.useMemo)(()=>P(h,p),[h,p]);return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[(0,B.jsxs)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:[`Changes`,h.length>0?` · ${h.length}`:``]}),u&&(0,B.jsx)(V,{added:u.added,deleted:u.deleted}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>void f(),disabled:!e||i,className:`ml-auto rounded border border-line px-1.5 py-0.5 text-[10px] text-muted transition-colors hover:bg-surface disabled:opacity-40`,children:i?`…`:`↻`})]}),e?o?(0,B.jsx)(U,{onRetry:()=>void f()}):h.length===0?(0,B.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-4 text-center`,children:(0,B.jsx)(`div`,{className:`text-[12px] text-subtle`,children:i?`Loading changes…`:`Worktree clean.`})}):(0,B.jsxs)(B.Fragment,{children:[h.length>1&&(0,B.jsx)(`input`,{value:p,onChange:e=>m(e.target.value),onKeyDown:e=>{e.key===`Escape`&&p&&(e.preventDefault(),m(``))},placeholder:`Filter ${h.length} files… (*.ts, !*.json)`,title:`Match a substring, a *.glob, or !exclude`,spellCheck:!1,className:`mx-3 mb-1 shrink-0 border border-line bg-bg px-2 py-1 font-mono text-[11px] text-fg placeholder:text-subtle focus:border-line-active focus:outline-none`}),g.length===0?(0,B.jsx)(`div`,{className:`px-3 py-3 text-center text-[11px] text-subtle`,children:`No files match.`}):(0,B.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:g.map(e=>{let n=k(e.status);return(0,B.jsxs)(`button`,{type:`button`,onClick:()=>t(e.path),title:e.path,className:`flex w-full items-center gap-2 border-l-2 border-transparent px-3 py-2 text-left transition-colors hover:border-primary hover:bg-inset`,children:[(0,B.jsx)(`span`,{className:`w-3 shrink-0 text-center font-mono text-[11px] font-bold ${n.cls}`,children:n.label}),(0,B.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[12px] text-fg/90`,children:D(e.path,34)}),e.staged&&(0,B.jsx)(`span`,{className:`shrink-0 text-[9px] uppercase text-subtle`,children:`staged`})]},e.path)})})]}):(0,B.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-4 text-center`,children:(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-[12px] font-semibold text-fg`,children:`No task selected`}),(0,B.jsx)(`div`,{className:`mt-1 max-w-48 text-[12px] leading-relaxed text-subtle`,children:`Select a task to watch its worktree changes.`})]})})]})}function K({worktreePath:e,path:t}){let[n,r]=(0,E.useState)(null),[i,a]=(0,E.useState)(!1),[o,s]=(0,E.useState)(!1),[c,l]=(0,E.useState)(null),u=H(e),d=(0,E.useRef)(0),f=(0,E.useCallback)(async()=>{if(!e){r(null),l(null);return}let n=++d.current;s(!0),l(null);try{let i=await O(e,{path:t});if(n!==d.current)return;r(i.files.find(e=>e.path===t)??null)}catch(e){n===d.current&&l(e instanceof Error?e.message:String(e))}finally{n===d.current&&s(!1)}},[e,t]);(0,E.useEffect)(()=>{f()},[f,u]);let p=n?R(n.patch):null;return(0,B.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col border border-line bg-bg`,children:[(0,B.jsxs)(`div`,{className:`flex h-9 shrink-0 items-center gap-2 border-b border-line px-3`,children:[(0,B.jsx)(`span`,{className:`truncate font-mono text-[12px] text-fg`,title:t,children:t}),p&&(0,B.jsx)(`span`,{className:`ml-auto shrink-0`,children:(0,B.jsx)(V,{added:p.added,deleted:p.deleted})}),n&&(0,B.jsx)(`span`,{className:`shrink-0 text-[10px] uppercase tracking-wide text-subtle ${p&&(p.added||p.deleted)?``:`ml-auto`}`,children:n.status}),n&&(0,B.jsx)(`button`,{type:`button`,onClick:()=>a(e=>!e),title:i?`Disable line wrap`:`Wrap long lines`,className:`shrink-0 border px-1.5 py-0.5 font-mono text-[10px] transition-colors ${i?`border-primary bg-inset text-fg`:`border-line bg-bg text-subtle hover:border-primary hover:text-fg`}`,children:`wrap`})]}),c?(0,B.jsx)(U,{onRetry:()=>void f()}):n?(0,B.jsx)(W,{patch:n.patch,wrap:i}):o?(0,B.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-[12px] text-subtle`,children:`Loading preview…`}):(0,B.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-[12px] text-subtle`,children:`No diff for this file.`})]})}var q=e({WorkspaceTabs:()=>$}),J=(0,E.lazy)(()=>_(()=>import(`./ChatTerminal-BwJ_NAOT.js`).then(e=>({default:e.ChatTerminal})),__vite__mapDeps([0,1,2,3,4,5,6,7])));function Y(){return(0,B.jsx)(`div`,{className:`flex h-full w-full items-center justify-center text-[12px] text-subtle`,children:`Loading terminal…`})}function X(e){return x(e)}function ee({taskId:e,tabId:t,vendor:n}){return(0,B.jsx)(`div`,{className:`flex h-full items-center justify-center px-6`,children:(0,B.jsx)(`div`,{className:`grid w-full max-w-2xl grid-cols-1 gap-3 md:grid-cols-3`,children:[{title:`Vendor`,detail:n,body:`Start an engine session for this task.`,icon:C,action:()=>c(e,t,`vendor`)},{title:`Chat`,detail:`transcript`,body:`Read the session as structured messages and tool calls.`,icon:w,action:()=>c(e,t,`transcript`)},{title:`Terminal`,detail:`shell / worktree`,body:`Open a command shell in this task worktree.`,icon:T,action:()=>c(e,t,`terminal`)}].map(e=>{let t=e.icon;return(0,B.jsxs)(`button`,{type:`button`,onClick:e.action,className:`group flex min-h-36 flex-col border border-line bg-surface p-4 text-left transition-colors hover:border-primary hover:bg-inset`,children:[(0,B.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,B.jsx)(`span`,{className:`flex h-9 w-9 shrink-0 items-center justify-center border border-line bg-bg text-muted group-hover:border-primary group-hover:text-primary`,children:(0,B.jsx)(t,{size:17,strokeWidth:1.8})}),(0,B.jsx)(`span`,{className:`truncate text-[10px] uppercase text-subtle`,children:e.detail})]}),(0,B.jsx)(`div`,{className:`mt-5 text-[12px] font-bold uppercase tracking-[0.12em] text-fg`,children:e.title}),(0,B.jsx)(`div`,{className:`mt-2 text-[12px] leading-relaxed text-subtle`,children:e.body})]},e.title)})})})}function Z({tab:e,taskId:t,taskWorktreePath:n,taskTitle:r,vendor:i}){return e?.kind===`empty`?(0,B.jsx)(ee,{taskId:t,tabId:e.id,vendor:i}):e?.kind===`vendor`?(0,B.jsx)(E.Suspense,{fallback:(0,B.jsx)(Y,{}),children:(0,B.jsx)(J,{tabId:e.id,taskId:e.taskId??t,mode:`engine`},e.id)}):e?.kind===`terminal`?(0,B.jsx)(E.Suspense,{fallback:(0,B.jsx)(Y,{}),children:(0,B.jsx)(J,{tabId:e.id,taskId:t,mode:`shell`},e.id)}):e?.kind===`transcript`?(0,B.jsx)(y,{worktreePath:n,vendor:i,title:r},e.id):e?.kind===`file`?(0,B.jsx)(K,{worktreePath:n,path:e.path},e.id):(0,B.jsx)(`div`,{className:`flex h-full items-center justify-center text-[12px] text-subtle`,children:`Opening a tab…`})}function Q({tab:e,side:t,children:n,onCloseSplit:r}){return(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[t===`right`&&(0,B.jsxs)(`div`,{className:`flex h-8 shrink-0 items-center justify-between border-b border-line bg-surface px-3`,children:[(0,B.jsx)(`span`,{className:`truncate text-[11px] text-muted`,children:e?.title??`Split`}),(0,B.jsx)(`button`,{type:`button`,onClick:r,className:`text-[11px] text-subtle hover:text-fg`,"aria-label":`close split`,title:`Close split`,children:`×`})]}),(0,B.jsx)(`div`,{className:`min-h-0 flex-1 p-2`,children:n})]})}function $(){let[e,t]=(0,E.useState)(null),[r,c]=(0,E.useState)(!1),{selectedTaskId:f,tabsByTask:m,activeByTask:h,splitByTask:g}=i(),{tasks:_,jobs:y}=v(),b=f?_.find(e=>e.id===f):null,x=f?m[f]??[]:[],S=f?h[f]:void 0,C=f?g[f]:void 0,w=e=>{if(!f)return;let t=x.find(t=>t.id===e);a(f,e),t&&d(t.kind)&&n(e)},T=x.find(e=>e.id===S)??x[0],D=C&&C!==T?.id?x.find(e=>e.id===C):void 0,O=X(b?.vendor),k=b?.title||b?.branch||`Session`,A=!!b&&((f?y[f]?.phase===`running`:!1)||b.worktreePath===null);return(0,B.jsxs)(`section`,{className:`flex min-w-0 flex-1 flex-col bg-bg`,children:[(0,B.jsx)(`div`,{className:`flex h-9 shrink-0 items-stretch border-b border-line bg-surface`,children:f?(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-stretch overflow-x-auto`,role:`tablist`,children:[x.map(e=>{let n=e.id===T?.id,r=e.id===D?.id;return(0,B.jsxs)(`div`,{role:`tab`,"aria-selected":n,tabIndex:0,draggable:!0,onDragStart:n=>{n.dataTransfer.effectAllowed=`move`,n.dataTransfer.setData(`text/plain`,e.id),t(e.id)},onDragEnd:()=>{t(null),c(!1)},className:`group flex h-9 select-none items-center gap-2 border-r border-b-2 border-r-line px-3 text-[12px] transition-colors ${n?`border-b-primary bg-bg text-fg`:r?`border-b-kobe-blue bg-inset text-fg`:`border-b-transparent text-muted hover:bg-inset/50`}`,children:[(0,B.jsx)(`button`,{type:`button`,onClick:()=>l(f,e.id),className:`max-w-40 cursor-grab truncate active:cursor-grabbing`,title:r?`${e.title} (split)`:e.title,children:e.title}),r&&(0,B.jsx)(`span`,{className:`text-[9px] font-bold uppercase text-kobe-blue`,children:`Split`}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>w(e.id),className:`text-subtle opacity-0 transition-opacity hover:text-fg group-hover:opacity-100`,"aria-label":`close tab`,title:`Close tab`,children:`×`})]},e.id)}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>u(f),className:`px-3 text-[13px] text-subtle hover:text-fg`,"aria-label":`new tab`,title:`New tab`,children:`+`})]}):(0,B.jsxs)(`div`,{className:`flex items-center gap-2 px-3 text-[11px] text-subtle`,children:[(0,B.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-subtle`}),`No task selected`]})}),(0,B.jsxs)(`section`,{className:`relative min-h-0 flex-1`,"aria-label":`Workspace`,onDragOver:t=>{if(!f||!e)return;t.preventDefault();let n=t.currentTarget.getBoundingClientRect();c(t.clientX>n.left+n.width/2)},onDragLeave:()=>c(!1),onDrop:n=>{if(!f||!e)return;n.preventDefault();let r=n.currentTarget.getBoundingClientRect();n.clientX>r.left+r.width/2?o(f,e):l(f,e),t(null),c(!1)},children:[f&&T?(0,B.jsxs)(`div`,{className:`flex h-full min-w-0`,children:[(0,B.jsx)(Q,{tab:T,side:`left`,children:(0,B.jsx)(Z,{tab:T,taskId:f,taskWorktreePath:b?.worktreePath??null,taskTitle:k,vendor:O})}),D&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`w-px shrink-0 bg-line`}),(0,B.jsx)(Q,{tab:D,side:`right`,onCloseSplit:()=>{f&&s(f)},children:(0,B.jsx)(Z,{tab:D,taskId:f,taskWorktreePath:b?.worktreePath??null,taskTitle:k,vendor:O})})]})]}):(0,B.jsx)(`div`,{className:`flex h-full items-center justify-center px-6 text-center`,children:(0,B.jsxs)(`div`,{className:`max-w-md`,children:[(0,B.jsxs)(`div`,{className:`font-mono text-[13px] font-bold text-primary`,children:[`[`,p,` web]`]}),(0,B.jsx)(`h1`,{className:`mt-4 text-[18px] font-semibold text-fg`,children:b?A?`Setting up this task's worktree…`:`Opening workspace…`:`Select a task to open its workspace.`}),(0,B.jsx)(`p`,{className:`mt-2 text-[12px] leading-relaxed text-subtle`,children:`Web workspaces keep their own browser tabs, split panes, notes, and file previews for each task.`})]})}),e&&(0,B.jsx)(`div`,{className:`pointer-events-none absolute inset-y-2 right-2 flex w-[calc(50%-0.5rem)] items-center justify-center border border-dashed ${r?`border-primary bg-primary/10`:`border-line bg-inset/40`}`,children:(0,B.jsx)(`span`,{className:`border border-line bg-bg px-2 py-1 text-[10px] font-bold uppercase tracking-[0.12em] text-muted`,children:`Drop to split right`})})]})]})}export{D as i,q as n,G as r,$ as t};
3
+ `),r=[],i=0,a=0,o=!1;for(let e of n){let t=F.exec(e);if(t){i=Number.parseInt(t[1],10),a=Number.parseInt(t[2],10),o=!0,r.push({kind:`hunk`,oldLn:null,newLn:null,text:e});continue}if(e.startsWith(`diff --git`)&&(o=!1),e===``||!o&&L(e)){r.push({kind:`meta`,oldLn:null,newLn:null,text:e});continue}let n=e[0];n===`+`?(r.push({kind:`add`,oldLn:null,newLn:a,text:e}),a++):n===`-`?(r.push({kind:`del`,oldLn:i,newLn:null,text:e}),i++):L(e)?r.push({kind:`meta`,oldLn:null,newLn:null,text:e}):(r.push({kind:`ctx`,oldLn:i,newLn:a,text:e}),i++,a++)}return r}var B=m();function V({added:e,deleted:t}){return e===0&&t===0?null:(0,B.jsxs)(`span`,{className:`shrink-0 font-mono text-[10px]`,children:[(0,B.jsxs)(`span`,{className:`text-kobe-green`,children:[`+`,e]}),` `,(0,B.jsxs)(`span`,{className:`text-kobe-red`,children:[`−`,t]})]})}function H(e){let{worktreeChanges:t}=v(),n=e?t[e]:void 0;return n?`${n.added}:${n.deleted}`:`none`}function U({onRetry:e}){let{daemonConnected:t,streamConnected:n}=v();return S({daemonConnected:t,streamConnected:n})?(0,B.jsxs)(`div`,{className:`px-3 py-4 text-[12px] leading-relaxed text-subtle`,children:[`The `,h(),` daemon is offline — changes will reappear once it reconnects.`]}):(0,B.jsxs)(`div`,{className:`flex flex-col items-start gap-2 px-3 py-4`,children:[(0,B.jsx)(`span`,{className:`text-[12px] text-kobe-red`,children:`Couldn't load changes.`}),(0,B.jsxs)(`button`,{type:`button`,onClick:e,className:`flex items-center gap-1.5 border border-line bg-bg px-2 py-1 text-[11px] text-muted transition-colors hover:border-primary hover:text-fg`,children:[(0,B.jsx)(b,{size:11,strokeWidth:2}),`Retry`]})]})}function W({patch:e,wrap:t}){let n=(0,E.useMemo)(()=>z(e),[e]);return e.trim()?(0,B.jsx)(`div`,{className:`kobe-diff min-h-0 flex-1 overflow-auto py-2 font-mono text-[12px] leading-[1.15rem] ${t?`kobe-diff-wrap`:``}`,children:n.map((e,t)=>(0,B.jsxs)(`div`,{className:`kobe-diff-row ${A(e.kind)}`,children:[(0,B.jsx)(`span`,{className:`kobe-diff-gutter`,children:e.oldLn??``}),(0,B.jsx)(`span`,{className:`kobe-diff-gutter`,children:e.newLn??``}),(0,B.jsx)(`span`,{className:`kobe-diff-text`,children:e.text===``?` `:e.text})]},t))}):(0,B.jsx)(`div`,{className:`flex h-full items-center justify-center text-[12px] text-subtle`,children:`No textual diff for this file.`})}function G({worktreePath:e,onOpenFile:t}){let[n,r]=(0,E.useState)(null),[i,a]=(0,E.useState)(!1),[o,s]=(0,E.useState)(null),c=H(e),{worktreeChanges:l}=v(),u=e?l[e]:void 0,d=(0,E.useRef)(0),f=(0,E.useCallback)(async()=>{if(!e){r(null),s(null);return}let t=++d.current;a(!0),s(null);try{let n=await O(e,{namesOnly:!0});t===d.current&&r(n)}catch(e){t===d.current&&(s(e instanceof Error?e.message:String(e)),r(null))}finally{t===d.current&&a(!1)}},[e]);(0,E.useEffect)(()=>{f()},[f,c]);let[p,m]=(0,E.useState)(``);(0,E.useEffect)(()=>{m(``)},[e]);let h=n?.files??[],g=(0,E.useMemo)(()=>P(h,p),[h,p]);return(0,B.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[(0,B.jsxs)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-subtle`,children:[`Changes`,h.length>0?` · ${h.length}`:``]}),u&&(0,B.jsx)(V,{added:u.added,deleted:u.deleted}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>void f(),disabled:!e||i,className:`ml-auto rounded border border-line px-1.5 py-0.5 text-[10px] text-muted transition-colors hover:bg-surface disabled:opacity-40`,children:i?`…`:`↻`})]}),e?o?(0,B.jsx)(U,{onRetry:()=>void f()}):h.length===0?(0,B.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-4 text-center`,children:(0,B.jsx)(`div`,{className:`text-[12px] text-subtle`,children:i?`Loading changes…`:`Worktree clean.`})}):(0,B.jsxs)(B.Fragment,{children:[h.length>1&&(0,B.jsx)(`input`,{value:p,onChange:e=>m(e.target.value),onKeyDown:e=>{e.key===`Escape`&&p&&(e.preventDefault(),m(``))},placeholder:`Filter ${h.length} files… (*.ts, !*.json)`,title:`Match a substring, a *.glob, or !exclude`,spellCheck:!1,className:`mx-3 mb-1 shrink-0 border border-line bg-bg px-2 py-1 font-mono text-[11px] text-fg placeholder:text-subtle focus:border-line-active focus:outline-none`}),g.length===0?(0,B.jsx)(`div`,{className:`px-3 py-3 text-center text-[11px] text-subtle`,children:`No files match.`}):(0,B.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:g.map(e=>{let n=k(e.status);return(0,B.jsxs)(`button`,{type:`button`,onClick:()=>t(e.path),title:e.path,className:`flex w-full items-center gap-2 border-l-2 border-transparent px-3 py-2 text-left transition-colors hover:border-primary hover:bg-inset`,children:[(0,B.jsx)(`span`,{className:`w-3 shrink-0 text-center font-mono text-[11px] font-bold ${n.cls}`,children:n.label}),(0,B.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[12px] text-fg/90`,children:D(e.path,34)}),e.staged&&(0,B.jsx)(`span`,{className:`shrink-0 text-[9px] uppercase text-subtle`,children:`staged`})]},e.path)})})]}):(0,B.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-4 text-center`,children:(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-[12px] font-semibold text-fg`,children:`No task selected`}),(0,B.jsx)(`div`,{className:`mt-1 max-w-48 text-[12px] leading-relaxed text-subtle`,children:`Select a task to watch its worktree changes.`})]})})]})}function K({worktreePath:e,path:t}){let[n,r]=(0,E.useState)(null),[i,a]=(0,E.useState)(!1),[o,s]=(0,E.useState)(!1),[c,l]=(0,E.useState)(null),u=H(e),d=(0,E.useRef)(0),f=(0,E.useCallback)(async()=>{if(!e){r(null),l(null);return}let n=++d.current;s(!0),l(null);try{let i=await O(e,{path:t});if(n!==d.current)return;r(i.files.find(e=>e.path===t)??null)}catch(e){n===d.current&&l(e instanceof Error?e.message:String(e))}finally{n===d.current&&s(!1)}},[e,t]);(0,E.useEffect)(()=>{f()},[f,u]);let p=n?R(n.patch):null;return(0,B.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col border border-line bg-bg`,children:[(0,B.jsxs)(`div`,{className:`flex h-9 shrink-0 items-center gap-2 border-b border-line px-3`,children:[(0,B.jsx)(`span`,{className:`truncate font-mono text-[12px] text-fg`,title:t,children:t}),p&&(0,B.jsx)(`span`,{className:`ml-auto shrink-0`,children:(0,B.jsx)(V,{added:p.added,deleted:p.deleted})}),n&&(0,B.jsx)(`span`,{className:`shrink-0 text-[10px] uppercase tracking-wide text-subtle ${p&&(p.added||p.deleted)?``:`ml-auto`}`,children:n.status}),n&&(0,B.jsx)(`button`,{type:`button`,onClick:()=>a(e=>!e),title:i?`Disable line wrap`:`Wrap long lines`,className:`shrink-0 border px-1.5 py-0.5 font-mono text-[10px] transition-colors ${i?`border-primary bg-inset text-fg`:`border-line bg-bg text-subtle hover:border-primary hover:text-fg`}`,children:`wrap`})]}),c?(0,B.jsx)(U,{onRetry:()=>void f()}):n?(0,B.jsx)(W,{patch:n.patch,wrap:i}):o?(0,B.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-[12px] text-subtle`,children:`Loading preview…`}):(0,B.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-[12px] text-subtle`,children:`No diff for this file.`})]})}var q=e({WorkspaceTabs:()=>$}),J=(0,E.lazy)(()=>_(()=>import(`./ChatTerminal-B32Pfuys.js`).then(e=>({default:e.ChatTerminal})),__vite__mapDeps([0,1,2,3,4,5,6,7])));function Y(){return(0,B.jsx)(`div`,{className:`flex h-full w-full items-center justify-center text-[12px] text-subtle`,children:`Loading terminal…`})}function X(e){return x(e)}function ee({taskId:e,tabId:t,vendor:n}){return(0,B.jsx)(`div`,{className:`flex h-full items-center justify-center px-6`,children:(0,B.jsx)(`div`,{className:`grid w-full max-w-2xl grid-cols-1 gap-3 md:grid-cols-3`,children:[{title:`Vendor`,detail:n,body:`Start an engine session for this task.`,icon:C,action:()=>c(e,t,`vendor`)},{title:`Chat`,detail:`transcript`,body:`Read the session as structured messages and tool calls.`,icon:w,action:()=>c(e,t,`transcript`)},{title:`Terminal`,detail:`shell / worktree`,body:`Open a command shell in this task worktree.`,icon:T,action:()=>c(e,t,`terminal`)}].map(e=>{let t=e.icon;return(0,B.jsxs)(`button`,{type:`button`,onClick:e.action,className:`group flex min-h-36 flex-col border border-line bg-surface p-4 text-left transition-colors hover:border-primary hover:bg-inset`,children:[(0,B.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,B.jsx)(`span`,{className:`flex h-9 w-9 shrink-0 items-center justify-center border border-line bg-bg text-muted group-hover:border-primary group-hover:text-primary`,children:(0,B.jsx)(t,{size:17,strokeWidth:1.8})}),(0,B.jsx)(`span`,{className:`truncate text-[10px] uppercase text-subtle`,children:e.detail})]}),(0,B.jsx)(`div`,{className:`mt-5 text-[12px] font-bold uppercase tracking-[0.12em] text-fg`,children:e.title}),(0,B.jsx)(`div`,{className:`mt-2 text-[12px] leading-relaxed text-subtle`,children:e.body})]},e.title)})})})}function Z({tab:e,taskId:t,taskWorktreePath:n,taskTitle:r,vendor:i}){return e?.kind===`empty`?(0,B.jsx)(ee,{taskId:t,tabId:e.id,vendor:i}):e?.kind===`vendor`?(0,B.jsx)(E.Suspense,{fallback:(0,B.jsx)(Y,{}),children:(0,B.jsx)(J,{tabId:e.id,taskId:e.taskId??t,mode:`engine`},e.id)}):e?.kind===`terminal`?(0,B.jsx)(E.Suspense,{fallback:(0,B.jsx)(Y,{}),children:(0,B.jsx)(J,{tabId:e.id,taskId:t,mode:`shell`},e.id)}):e?.kind===`transcript`?(0,B.jsx)(y,{worktreePath:n,vendor:i,title:r},e.id):e?.kind===`file`?(0,B.jsx)(K,{worktreePath:n,path:e.path},e.id):(0,B.jsx)(`div`,{className:`flex h-full items-center justify-center text-[12px] text-subtle`,children:`Opening a tab…`})}function Q({tab:e,side:t,children:n,onCloseSplit:r}){return(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[t===`right`&&(0,B.jsxs)(`div`,{className:`flex h-8 shrink-0 items-center justify-between border-b border-line bg-surface px-3`,children:[(0,B.jsx)(`span`,{className:`truncate text-[11px] text-muted`,children:e?.title??`Split`}),(0,B.jsx)(`button`,{type:`button`,onClick:r,className:`text-[11px] text-subtle hover:text-fg`,"aria-label":`close split`,title:`Close split`,children:`×`})]}),(0,B.jsx)(`div`,{className:`min-h-0 flex-1 p-2`,children:n})]})}function $(){let[e,t]=(0,E.useState)(null),[r,c]=(0,E.useState)(!1),{selectedTaskId:f,tabsByTask:m,activeByTask:h,splitByTask:g}=i(),{tasks:_,jobs:y}=v(),b=f?_.find(e=>e.id===f):null,x=f?m[f]??[]:[],S=f?h[f]:void 0,C=f?g[f]:void 0,w=e=>{if(!f)return;let t=x.find(t=>t.id===e);a(f,e),t&&d(t.kind)&&n(e)},T=x.find(e=>e.id===S)??x[0],D=C&&C!==T?.id?x.find(e=>e.id===C):void 0,O=X(b?.vendor),k=b?.title||b?.branch||`Session`,A=!!b&&((f?y[f]?.phase===`running`:!1)||b.worktreePath===null);return(0,B.jsxs)(`section`,{className:`flex min-w-0 flex-1 flex-col bg-bg`,children:[(0,B.jsx)(`div`,{className:`flex h-9 shrink-0 items-stretch border-b border-line bg-surface`,children:f?(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-stretch overflow-x-auto`,role:`tablist`,children:[x.map(e=>{let n=e.id===T?.id,r=e.id===D?.id;return(0,B.jsxs)(`div`,{role:`tab`,"aria-selected":n,tabIndex:0,draggable:!0,onDragStart:n=>{n.dataTransfer.effectAllowed=`move`,n.dataTransfer.setData(`text/plain`,e.id),t(e.id)},onDragEnd:()=>{t(null),c(!1)},className:`group flex h-9 select-none items-center gap-2 border-r border-b-2 border-r-line px-3 text-[12px] transition-colors ${n?`border-b-primary bg-bg text-fg`:r?`border-b-kobe-blue bg-inset text-fg`:`border-b-transparent text-muted hover:bg-inset/50`}`,children:[(0,B.jsx)(`button`,{type:`button`,onClick:()=>l(f,e.id),className:`max-w-40 cursor-grab truncate active:cursor-grabbing`,title:r?`${e.title} (split)`:e.title,children:e.title}),r&&(0,B.jsx)(`span`,{className:`text-[9px] font-bold uppercase text-kobe-blue`,children:`Split`}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>w(e.id),className:`text-subtle opacity-0 transition-opacity hover:text-fg group-hover:opacity-100`,"aria-label":`close tab`,title:`Close tab`,children:`×`})]},e.id)}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>u(f),className:`px-3 text-[13px] text-subtle hover:text-fg`,"aria-label":`new tab`,title:`New tab`,children:`+`})]}):(0,B.jsxs)(`div`,{className:`flex items-center gap-2 px-3 text-[11px] text-subtle`,children:[(0,B.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-subtle`}),`No task selected`]})}),(0,B.jsxs)(`section`,{className:`relative min-h-0 flex-1`,"aria-label":`Workspace`,onDragOver:t=>{if(!f||!e)return;t.preventDefault();let n=t.currentTarget.getBoundingClientRect();c(t.clientX>n.left+n.width/2)},onDragLeave:()=>c(!1),onDrop:n=>{if(!f||!e)return;n.preventDefault();let r=n.currentTarget.getBoundingClientRect();n.clientX>r.left+r.width/2?o(f,e):l(f,e),t(null),c(!1)},children:[f&&T?(0,B.jsxs)(`div`,{className:`flex h-full min-w-0`,children:[(0,B.jsx)(Q,{tab:T,side:`left`,children:(0,B.jsx)(Z,{tab:T,taskId:f,taskWorktreePath:b?.worktreePath??null,taskTitle:k,vendor:O})}),D&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`w-px shrink-0 bg-line`}),(0,B.jsx)(Q,{tab:D,side:`right`,onCloseSplit:()=>{f&&s(f)},children:(0,B.jsx)(Z,{tab:D,taskId:f,taskWorktreePath:b?.worktreePath??null,taskTitle:k,vendor:O})})]})]}):(0,B.jsx)(`div`,{className:`flex h-full items-center justify-center px-6 text-center`,children:(0,B.jsxs)(`div`,{className:`max-w-md`,children:[(0,B.jsxs)(`div`,{className:`font-mono text-[13px] font-bold text-primary`,children:[`[`,p,` web]`]}),(0,B.jsx)(`h1`,{className:`mt-4 text-[18px] font-semibold text-fg`,children:b?A?`Setting up this task's worktree…`:`Opening workspace…`:`Select a task to open its workspace.`}),(0,B.jsx)(`p`,{className:`mt-2 text-[12px] leading-relaxed text-subtle`,children:`Web workspaces keep their own browser tabs, split panes, notes, and file previews for each task.`})]})}),e&&(0,B.jsx)(`div`,{className:`pointer-events-none absolute inset-y-2 right-2 flex w-[calc(50%-0.5rem)] items-center justify-center border border-dashed ${r?`border-primary bg-primary/10`:`border-line bg-inset/40`}`,children:(0,B.jsx)(`span`,{className:`border border-line bg-bg px-2 py-1 text-[10px] font-bold uppercase tracking-[0.12em] text-muted`,children:`Drop to split right`})})]})]})}export{D as i,q as n,G as r,$ as t};
@@ -0,0 +1 @@
1
+ import{Board as e}from"./Board-CcUG5Zqa.js";var t=e;export{t as component};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AppShell-BfJe8WPM.js","assets/terminal-6BCvBu4_.js","assets/tabs-DHBP2ShA.js","assets/createLucideIcon-C6nfansM.js","assets/toast-2mA6GzBq.js","assets/external-store-CNyRxjsC.js","assets/ViewToggle-Bvvh1yLG.js","assets/columns-3-xX5P4LBE.js","assets/with-selector-D8BuTuR6.js","assets/store-BK5yanfN.js","assets/x-MtSojW5V.js","assets/web-transport-BFuf9jKF.js","assets/active-task-CCVuYWP9.js","assets/triage-DjBy6dI9.js","assets/use-focus-trap-oPsw86zw.js","assets/engines-CZCmPVm2.js","assets/settings-Cavhxdh3.js","assets/vendor-CdtpTJrf.js","assets/WorkspaceTabs-D_fqiti0.js","assets/ChatTranscript-Bw-ROsjY.js","assets/rotate-cw-BsVaYno1.js","assets/search-zs6lDYfz.js","assets/time-kviT26Tm.js","assets/WorkspaceTabs-DLzL-Tad.css","assets/SettingsPage-DovXUI00.js","assets/plus-Bz25iNHX.js","assets/activity-BjTd1D8q.js","assets/ConfirmDialog-C9ItPG8O.js","assets/text-match-DW3sD-Rt.js","assets/SlideOver-CI7vBtQJ.js","assets/chips-NdkDNqV7.js","assets/AppShell-HiyATJse.css","assets/Board-CAB3dlkA.js","assets/external-link-Cj-9rta8.js","assets/lazy-issue-panels-GvnRdSfG.js","assets/issues-BjnSNgu-.js","assets/IssuesPage-C0HDfQQN.js","assets/arrow-left-wT_Oflhg.js","assets/ChatTerminal-BwJ_NAOT.js","assets/ChatTerminal-BrP-ENHg.css","assets/BoardPeek-B3wyNQw8.js","assets/IssueIntakePanel-CBM21cyc.js","assets/RichEditor-CY2cypY2.js","assets/react-dom-Ccqy9Xi6.js","assets/RichEditor-B4sEOPyN.css","assets/IssuePeek-Ce8Qc6KY.js"])))=>i.map(i=>d[i]);
2
- import{i as e}from"./store-BK5yanfN.js";function t(e){return new URLSearchParams(e).get(`kobeDesktop`)===`1`}function n(e=window.location.search){let n=t(e);return n&&(document.documentElement.dataset.kobeDesktop=`true`),n}function r(){return document.documentElement.dataset.kobeDesktop===`true`}function i(){return window.kobeDesktopWindow}async function a(){await Promise.allSettled([e(()=>import(`./AppShell-BfJe8WPM.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31])),e(()=>import(`./Board-CAB3dlkA.js`),__vite__mapDeps([32,1,2,3,4,5,6,7,8,9,10,11,12,33,34,30,35,16,28,25,21,27,14])),e(()=>import(`./IssuesPage-C0HDfQQN.js`),__vite__mapDeps([36,1,2,3,4,5,9,37,34,30,35,12,16,28,25,21,10,27,14])),e(()=>import(`./WorkspaceTabs-D_fqiti0.js`).then(e=>e.n),__vite__mapDeps([18,1,2,3,9,19,20,21,10,11,22,17,23])),e(()=>import(`./ChatTerminal-BwJ_NAOT.js`),__vite__mapDeps([38,1,2,3,9,20,11,39])),e(()=>import(`./BoardPeek-B3wyNQw8.js`),__vite__mapDeps([40,1,2,3,9,19,20,21,10,11,22,33,26,14,17])),e(()=>import(`./IssueIntakePanel-CBM21cyc.js`),__vite__mapDeps([41,1,2,3,29,10,14,35,9,12,16,28,42,8,43,15,5,17,44])),e(()=>import(`./IssuePeek-Ce8Qc6KY.js`),__vite__mapDeps([45,1,2,3,33,29,10,14,35,9,12,16,28,42,8,43,15,5,17,44])),e(()=>import(`./SettingsPage-DovXUI00.js`).then(e=>e.n),__vite__mapDeps([24,1,2,3,4,5,16,17]))])}export{a as i,n,r,i as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AppShell-BvHb-c8o.js","assets/terminal-6BCvBu4_.js","assets/tabs-DHBP2ShA.js","assets/createLucideIcon-C6nfansM.js","assets/toast-2mA6GzBq.js","assets/external-store-CNyRxjsC.js","assets/ViewToggle-Bvvh1yLG.js","assets/columns-3-xX5P4LBE.js","assets/with-selector-D8BuTuR6.js","assets/store-BK5yanfN.js","assets/x-MtSojW5V.js","assets/web-transport-BFuf9jKF.js","assets/active-task-CCVuYWP9.js","assets/triage-DjBy6dI9.js","assets/use-focus-trap-oPsw86zw.js","assets/engines-CZCmPVm2.js","assets/settings-Cavhxdh3.js","assets/vendor-CdtpTJrf.js","assets/WorkspaceTabs-DrrZuT8m.js","assets/ChatTranscript-Bw-ROsjY.js","assets/rotate-cw-BsVaYno1.js","assets/search-zs6lDYfz.js","assets/time-kviT26Tm.js","assets/WorkspaceTabs-DLzL-Tad.css","assets/SettingsPage-DovXUI00.js","assets/plus-Bz25iNHX.js","assets/activity-BjTd1D8q.js","assets/ConfirmDialog-CQUf9GuM.js","assets/text-match-DW3sD-Rt.js","assets/SlideOver-CI7vBtQJ.js","assets/chips-NdkDNqV7.js","assets/AppShell-HiyATJse.css","assets/Board-CcUG5Zqa.js","assets/external-link-Cj-9rta8.js","assets/lazy-issue-panels-GvnRdSfG.js","assets/issues-BjnSNgu-.js","assets/IssuesPage-BHj8y82L.js","assets/arrow-left-wT_Oflhg.js","assets/ChatTerminal-B32Pfuys.js","assets/ChatTerminal-BrP-ENHg.css","assets/BoardPeek-C5c1gItm.js","assets/IssueIntakePanel-CBM21cyc.js","assets/RichEditor-CY2cypY2.js","assets/react-dom-Ccqy9Xi6.js","assets/RichEditor-B4sEOPyN.css","assets/IssuePeek-Ce8Qc6KY.js"])))=>i.map(i=>d[i]);
2
+ import{i as e}from"./store-BK5yanfN.js";function t(e){return new URLSearchParams(e).get(`kobeDesktop`)===`1`}function n(e=window.location.search){let n=t(e);return n&&(document.documentElement.dataset.kobeDesktop=`true`),n}function r(){return document.documentElement.dataset.kobeDesktop===`true`}function i(){return window.kobeDesktopWindow}async function a(){await Promise.allSettled([e(()=>import(`./AppShell-BvHb-c8o.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31])),e(()=>import(`./Board-CcUG5Zqa.js`),__vite__mapDeps([32,1,2,3,4,5,6,7,8,9,10,11,12,33,34,30,35,16,28,25,21,27,14])),e(()=>import(`./IssuesPage-BHj8y82L.js`),__vite__mapDeps([36,1,2,3,4,5,9,37,34,30,35,12,16,28,25,21,10,27,14])),e(()=>import(`./WorkspaceTabs-DrrZuT8m.js`).then(e=>e.n),__vite__mapDeps([18,1,2,3,9,19,20,21,10,11,22,17,23])),e(()=>import(`./ChatTerminal-B32Pfuys.js`),__vite__mapDeps([38,1,2,3,9,20,11,39])),e(()=>import(`./BoardPeek-C5c1gItm.js`),__vite__mapDeps([40,1,2,3,9,19,20,21,10,11,22,33,26,14,17])),e(()=>import(`./IssueIntakePanel-CBM21cyc.js`),__vite__mapDeps([41,1,2,3,29,10,14,35,9,12,16,28,42,8,43,15,5,17,44])),e(()=>import(`./IssuePeek-Ce8Qc6KY.js`),__vite__mapDeps([45,1,2,3,33,29,10,14,35,9,12,16,28,42,8,43,15,5,17,44])),e(()=>import(`./SettingsPage-DovXUI00.js`).then(e=>e.n),__vite__mapDeps([24,1,2,3,4,5,16,17]))])}export{a as i,n,r,i as t};
@@ -0,0 +1 @@
1
+ import{u as e}from"./terminal-6BCvBu4_.js";import{y as t}from"./tabs-DHBP2ShA.js";import{m as n}from"./createLucideIcon-C6nfansM.js";import{ChatTerminal as r}from"./ChatTerminal-B32Pfuys.js";var i=e(t()),a=n();function o(){let e=(new URLSearchParams(window.location.search).get(`run`)??`manual`).replace(/[^a-zA-Z0-9_-]/g,``).slice(0,48)||`manual`,t=new URLSearchParams(window.location.search).get(`webgl`)===`1`,n=new URLSearchParams(window.location.search).get(`wallpaper`),o=n?.startsWith(`/`)?n:null,s=`visual-${e}`,[c,l]=(0,i.useState)(`connecting`),[u,d]=(0,i.useState)(``);return(0,a.jsxs)(`div`,{"data-testid":`opentui-harness`,"data-pty-status":c,style:{position:`fixed`,inset:0,background:o?`#0F0E0D url("${o}") center/cover no-repeat`:`#141413`},children:[o?(0,a.jsx)(`style`,{children:`.xterm-viewport{background-color:transparent !important}`}):null,(0,a.jsx)(r,{tabId:s,taskId:s,mode:`shell`,testId:`opentui-terminal`,disableWebgl:!t,transparent:o!==null,onStatusChange:l,onBufferChange:d}),(0,a.jsx)(`pre`,{"data-testid":`opentui-buffer`,style:{display:`none`},children:u})]})}export{o as component};