@sma1lboy/kobe 0.9.58 → 0.9.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +299 -298
- package/dist/cli/kobe-run.js +299 -298
- package/dist/cli/rove-run.js +299 -298
- package/dist/web-ui/assets/{AppShell-DMNi3gC2.js → AppShell-yw6U34oG.js} +2 -2
- package/dist/web-ui/assets/{Board-B5Yk2rXp.js → Board-T6FmO0rK.js} +1 -1
- package/dist/web-ui/assets/{BoardPeek-CkYolN2X.js → BoardPeek-sse5IMDc.js} +2 -2
- package/dist/web-ui/assets/{ChatTerminal-ZDUqxF1_.js → ChatTerminal-CgZ1wFNc.js} +2 -2
- package/dist/web-ui/assets/{ChatTranscript-DGSq0zJv.js → ChatTranscript-CC27LYIz.js} +1 -1
- package/dist/web-ui/assets/{ConfirmDialog-DPGAVw_z.js → ConfirmDialog-BoRgFYmm.js} +1 -1
- package/dist/web-ui/assets/{IssueIntakePanel-B7wy40Hv.js → IssueIntakePanel-BXiAOz54.js} +1 -1
- package/dist/web-ui/assets/{IssuePeek-TqnrG0X-.js → IssuePeek-BiNiXL1w.js} +1 -1
- package/dist/web-ui/assets/{IssuesPage-BmXfEacH.js → IssuesPage-LsDhXeMU.js} +1 -1
- package/dist/web-ui/assets/{SettingsPage-D8Fq9PeG.js → SettingsPage-C_w_CfjA.js} +1 -1
- package/dist/web-ui/assets/{SlideOver-La0zyHop.js → SlideOver-Ck_3k9cE.js} +4 -4
- package/dist/web-ui/assets/{ViewToggle-YL5uvbnK.js → ViewToggle-oW-ha2yj.js} +1 -1
- package/dist/web-ui/assets/{WorkspaceTabs-DZe53Oi8.js → WorkspaceTabs-BOBiiYQ7.js} +3 -3
- package/dist/web-ui/assets/active-task-CXPUHK6n.js +1 -0
- package/dist/web-ui/assets/arrow-left-DtifqF07.js +1 -0
- package/dist/web-ui/assets/board-ZO95Kv-a.js +1 -0
- package/dist/web-ui/assets/{chips-B2ODRu8l.js → chips-CMEcGApG.js} +1 -1
- package/dist/web-ui/assets/createLucideIcon-DrxWh_Q-.js +1 -0
- package/dist/web-ui/assets/{external-link-D4N6NrPI.js → external-link-pnC-vBvQ.js} +1 -1
- package/dist/web-ui/assets/{external-store-Djn-EBMQ.js → external-store-BaYf2nY4.js} +1 -1
- package/dist/web-ui/assets/{harness-XNKRkKVz.js → harness-DlNPXgXi.js} +1 -1
- package/dist/web-ui/assets/{index-4ygpWkvC.js → index-qkgHbyG0.js} +3 -3
- package/dist/web-ui/assets/issues-ClRExtU6.js +1 -0
- package/dist/web-ui/assets/{issues-CNf9N3hy.js → issues-gnrw4BBE.js} +2 -2
- package/dist/web-ui/assets/{lazy-issue-panels-n3EK--_o.js → lazy-issue-panels-DHn_dNGx.js} +3 -3
- package/dist/web-ui/assets/{rotate-cw-CSI5S-rL.js → rotate-cw-DUqV1kpL.js} +1 -1
- package/dist/web-ui/assets/routes-CP-DbdVc.js +1 -0
- package/dist/web-ui/assets/store-Cc1XsUcM.js +2 -0
- package/dist/web-ui/assets/{tabs-C1KFppnz.js → tabs-BsXizNGF.js} +1 -1
- package/dist/web-ui/assets/task._taskId-Byjau1DX.js +1 -0
- package/dist/web-ui/assets/terminal-BKWB4JIn.js +1 -0
- package/dist/web-ui/assets/{toast-CTxQEYJU.js → toast-I1ewzF0H.js} +1 -1
- package/dist/web-ui/assets/{web-transport-BFmRPA6p.js → web-transport-CxvfY4-A.js} +1 -1
- package/dist/web-ui/assets/{worktrees-Y0g4Wgd2.js → worktrees-ByetFQxv.js} +1 -1
- package/dist/web-ui/index.html +8 -8
- package/package.json +1 -1
- package/dist/web-ui/assets/active-task-Dcgkjlku.js +0 -1
- package/dist/web-ui/assets/arrow-left-CkmFCPVu.js +0 -1
- package/dist/web-ui/assets/board-CBka7FZM.js +0 -1
- package/dist/web-ui/assets/createLucideIcon-C8T7_EGK.js +0 -1
- package/dist/web-ui/assets/issues-CPVJba3N.js +0 -1
- package/dist/web-ui/assets/routes-CfwH1GeG.js +0 -1
- package/dist/web-ui/assets/store-C3IHXPqa.js +0 -2
- package/dist/web-ui/assets/task._taskId-iq5eaYmv.js +0 -1
- package/dist/web-ui/assets/terminal-Nt-mXbb9.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{IssuesPage as e}from"./IssuesPage-LsDhXeMU.js";var t=e;export{t as component};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{l as e,o as t,r as n}from"./terminal-BKWB4JIn.js";import{c as r,n as i}from"./tabs-BsXizNGF.js";import{p as a}from"./createLucideIcon-DrxWh_Q-.js";import{t as o}from"./store-Cc1XsUcM.js";import{t as s}from"./active-task-CXPUHK6n.js";import{l as c}from"./index-qkgHbyG0.js";import{t as l}from"./text-match-DW3sD-Rt.js";var u=[{key:`backlog`,title:`Backlog`,accent:`text-subtle`,alwaysVisible:!0},{key:`in_progress`,title:`In progress`,accent:`text-kobe-orange`,alwaysVisible:!0},{key:`done`,title:`Done`,accent:`text-kobe-green`,alwaysVisible:!0}],d=new Set([`done`]);function f(e){return e.status===`done`?`done`:e.taskId!==void 0&&e.taskId!==``?`in_progress`:`backlog`}function p(e){return e.taskId!==void 0&&e.taskId!==``}function m(e,t){return e.issue.created===t.issue.created?t.issue.id-e.issue.id:e.issue.created<t.issue.created?1:-1}function h(e){let t=new Map,n=(e,n)=>{let r=t.get(e);r?r.push(n):t.set(e,[n])};for(let t of e)n(f(t.issue),t);for(let e of t.values())e.sort(m);let r=(e,t)=>!d.has(e)||t.length<=30?{cards:t,hiddenCount:0}:{cards:t.slice(0,30),hiddenCount:t.length-30};return u.map(e=>({...e,...r(e.key,t.get(e.key)??[])})).filter(e=>e.alwaysVisible||e.cards.length+e.hiddenCount>0)}function g(e){return e.reduce((e,t)=>e+t.cards.length,0)}function _(e){let t=new Map;for(let n of e){let e=n.repo,r=t.get(e);r?r.push(n):t.set(e,[n])}let n=[...t.keys()];return n.map(e=>({repo:e,label:y(e,n),columns:h(t.get(e)??[])})).sort((e,t)=>e.label.localeCompare(t.label))}function v(e){let t=e.replace(/\/+$/,``);return t.split(`/`).pop()||t}function y(e,t){let n=v(e);return t.some(t=>t!==e&&v(t)===n)?e.replace(/\/+$/,``).split(`/`).slice(-2).join(`/`):n}function b(e,t,n){let r=[];for(let i of t){let t=e[i];if(!(!t||!t.exists))for(let e of t.issues){let t=n.get(`${i}:${e.id}`);r.push(t&&!e.taskId?{repo:i,issue:{...e,taskId:t.taskId}}:{repo:i,issue:e})}}return r}function x(e){let t=new Map;for(let{repo:n}of e)t.set(n,(t.get(n)??0)+1);let n=[...t.keys()];return n.map(e=>({repo:e,label:y(e,n),count:t.get(e)??0})).sort((e,t)=>e.label.localeCompare(t.label))}function S(e,t,n){return e.filter(({repo:e,issue:r})=>n&&e!==n?!1:l(`#${r.id} ${r.title} ${r.body}`,t))}function C(e){let t=b(e.issueData,e.issueRepos,e.pendingLinks),n=x(t),r=_(S(t,e.query,e.repoFilter));return e.repoFilter&&r.length===0&&e.issueRepos.includes(e.repoFilter)&&r.push({repo:e.repoFilter,label:y(e.repoFilter,e.issueRepos),columns:h([])}),{allIssues:t,repoChips:n,projectBoards:r,shownCount:r.reduce((e,t)=>e+g(t.columns),0),hasAnyCard:t.length>0}}function w(e){let t=[`Work on user story #${e.id}: ${e.title}`,``],n=e.body.trim();return n&&t.push(n,``),t}function T(e,t,n){return[...w(e),`Treat this as the story's dedicated ${n} task session: work only in this task worktree, and preserve any repo init instructions already delivered to the session.`,`Before finishing, verify the acceptance criteria implied by the story and summarize what changed plus any verification still needed.`,`Then merge the task branch back into the current project's main branch after the worktree is clean and checks pass.`,`When the work lands, run: ${t} issue-set-status --repo . --id ${e.id} --status done`].join(`
|
|
2
2
|
`)}function E(e,t){return[...w(e),`You are working directly in the project checkout — no dedicated worktree or branch was created. Keep changes reviewable and do not switch branches unless asked.`,`Before finishing, verify the acceptance criteria implied by the story and summarize what changed plus any verification still needed.`,`When the work lands, run: ${t} issue-set-status --repo . --id ${e.id} --status done`].join(`
|
|
3
3
|
`)}function D(e,t){return[`Finish user story #${e.id}: ${e.title}`,``,`Verify the acceptance criteria implied by the story, then summarize what changed and any verification still needed.`,`Then merge this task branch back into the current project's main branch after the worktree is clean and checks pass. Resolve conflicts if needed.`,`When the work lands, run: ${t} issue-set-status --repo . --id ${e.id} --status done`].join(`
|
|
4
|
-
`)}var O=`${
|
|
4
|
+
`)}var O=`${e} api`;async function k(){let e=await t.getOr(`/api/cli-invocation`,{},{label:`load CLI invocation`});return typeof e.api==`string`&&e.api.trim().length>0?e.api:O}async function A(){let e=await t.get(`/api/projects`,{label:`load projects`});return Array.isArray(e.projects)?e.projects.filter(e=>typeof e==`string`):[]}async function j(e){return t.get(`/api/issues`,{query:{repoRoot:e},label:`load issues`})}async function M(e,n){return t.post(`/api/issues`,{repoRoot:e,op:n},{label:`update issues`})}async function N(e,t){return M(e,{type:`create`,...t})}async function P(e,t,n){return M(e,{type:`setStatus`,id:t,status:n})}async function F(e,t,n){return M(e,{type:`update`,id:t,...n})}async function I(e,t,n){return M(e,{type:`link`,id:t,taskId:n})}async function L(e,t){return M(e,{type:`delete`,id:t})}var R=[`open`,`doing`,`hold`,`done`],z={open:{title:`Backlog`,accent:`text-kobe-blue`},doing:{title:`In session`,accent:`text-kobe-orange`},hold:{title:`Blocked`,accent:`text-kobe-yellow`},done:{title:`Done`,accent:`text-kobe-green`}};function B(e){return e!==`done`}function V(e,t){let n=(t.query??``).trim().toLowerCase(),r=t.statuses&&t.statuses.length>0?t.statuses:null;return e.filter(e=>r&&!r.includes(e.status)?!1:!n||`#${e.id} ${e.title} ${e.body}`.toLowerCase().includes(n))}function H(e){let t={open:[],doing:[],hold:[],done:[]};for(let n of e)t[n.status]?.push(n);let n=(e,t)=>e.created===t.created?t.id-e.id:e.created<t.created?1:-1;return t.open.sort(n),t.doing.sort(n),t.hold.sort(n),t.done.sort((e,t)=>t.id-e.id),t}function U(e,t=[]){let n=new Map;for(let e of t)e.trim().length>0&&n.set(e,0);let r=new Set(e.filter(e=>e.kind===`main`&&e.repo).map(e=>e.repo));for(let e of r)n.set(e,n.get(e)??0);let i=new Set(n.keys());for(let t of e)t.repo&&(i.size>0&&!i.has(t.repo)||n.set(t.repo,(n.get(t.repo)??0)+1));let a=[...n.keys()];return a.map(e=>({repo:e,label:y(e,a),count:n.get(e)??0})).sort((e,t)=>e.label.localeCompare(t.label))}function W(e,t){return e.length===0?null:t&&e.some(e=>e.repo===t)?t:e[0]?.repo??null}async function G(e,t,i,o){let c=await K(e,t,i,o);s(c);let l=await k().catch(()=>O),u=r(c);return await n(u,c,T(t,l,a())),{taskId:c}}async function K(e,t,n,r){let i=n?.trim()||await c(),{taskId:a}=await o(`task.create`,{repo:e,title:`#${t.id} ${t.title}`,...i?{vendor:i}:{},...r?.trim()?{effort:r.trim()}:{}});return await I(e,t.id,a).catch(()=>{}),a}async function q(e,t,r={}){let c=r.placement??`task`;if(c===`task`){let{taskId:n}=await G(e,t,r.vendor,r.effort);return{taskId:n,workspaceTaskId:n}}let l=await k().catch(()=>O),{task:u}=await o(`task.ensureMain`,{repo:e}),d=u.id;if(c===`projectWorktree`){let o=await K(e,t,r.vendor,r.effort);s(d);let c=i(d,o);return await n(c,o,T(t,l,a())),{taskId:o,workspaceTaskId:d}}let f=r.vendor?.trim();f&&await o(`task.setVendor`,{taskId:d,vendor:f}),s(d),await P(e,t.id,`doing`).catch(()=>{});let p=i(d);return await n(p,d,E(t,l)),{taskId:d,workspaceTaskId:d}}async function J(e,t){let i=await k().catch(()=>O),a=r(e);await n(a,e,D(t,i))}export{p as _,L as a,V as c,J as d,G as f,C as g,F as h,N as i,H as l,q as m,z as n,j as o,W as p,B as r,A as s,R as t,U as u};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/IssueIntakePanel-
|
|
2
|
-
import{
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/IssueIntakePanel-BXiAOz54.js","assets/terminal-BKWB4JIn.js","assets/tabs-BsXizNGF.js","assets/createLucideIcon-DrxWh_Q-.js","assets/issues-gnrw4BBE.js","assets/store-Cc1XsUcM.js","assets/active-task-CXPUHK6n.js","assets/index-qkgHbyG0.js","assets/toast-I1ewzF0H.js","assets/external-store-BaYf2nY4.js","assets/index-BnjD9Q-3.css","assets/text-match-DW3sD-Rt.js","assets/SlideOver-Ck_3k9cE.js","assets/SlideOver-B4sEOPyN.css","assets/IssuePeek-BiNiXL1w.js","assets/external-link-pnC-vBvQ.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{f as e}from"./terminal-BKWB4JIn.js";import{y as t}from"./tabs-BsXizNGF.js";import{m as n,t as r}from"./createLucideIcon-DrxWh_Q-.js";import{i,n as a,r as o}from"./store-Cc1XsUcM.js";import{i as s}from"./chips-CMEcGApG.js";import{o as c}from"./issues-gnrw4BBE.js";var l=r(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),u=r(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),d=e(t(),1);function f(e){let{issueSnapshots:t}=a(),[n,r]=(0,d.useState)({}),[i,s]=(0,d.useState)({}),[l,u]=(0,d.useState)(!1),f=(0,d.useRef)(new Map),p=(0,d.useRef)(new Map),m=(0,d.useRef)(new Map),h=(0,d.useRef)(new Map),g=(0,d.useCallback)(e=>{let t=(f.current.get(e)??0)+1;return f.current.set(e,t),t},[]),_=(0,d.useCallback)((e,t,n=e.repoRoot)=>{t<(p.current.get(n)??0)||(p.current.set(n,t),e.repoRoot&&e.repoRoot!==n&&h.current.set(n,e.repoRoot),r(t=>({...t,[n]:{...e,repoRoot:n}})),s(e=>{if(!(n in e))return e;let{[n]:t,...r}=e;return r}))},[]),v=(0,d.useCallback)(e=>{e.length!==0&&(u(!0),Promise.all(e.map(async e=>{let t=g(e);try{_(await c(e),t,e)}catch(t){s(n=>({...n,[e]:t instanceof Error?t.message:String(t)}))}})).finally(()=>u(!1)))},[g,_]),y=(0,d.useMemo)(()=>[...e].join(`
|
|
3
3
|
`),[e]);return(0,d.useEffect)(()=>{v(y?y.split(`
|
|
4
4
|
`):[])},[y]),(0,d.useEffect)(()=>{let e=new Map(Object.values(t).map(e=>[o(e.repoRoot),e]));for(let t of y?y.split(`
|
|
5
5
|
`):[]){let n=h.current.get(t),r=e.get(o(t))??(n?e.get(o(n)):void 0);if(!r||m.current.get(t)===r)continue;m.current.set(t,r);let i=g(t);_(r,i,t)}},[t,y,g,_]),{data:n,failed:i,loading:l,pending:(0,d.useMemo)(()=>(y?y.split(`
|
|
6
|
-
`):[]).some(e=>!(e in n)&&!(e in i)),[y,n,i]),refresh:v}}var p=n();function m({issue:e,selected:t=!1,onOpen:n,onDelete:r}){return(0,p.jsxs)(`div`,{className:`group/card relative`,"data-issue-card":e.id,children:[(0,p.jsxs)(`button`,{type:`button`,onClick:n,className:`flex w-full cursor-pointer flex-col gap-1.5 border p-3 text-left transition-colors ${t?`border-primary bg-inset`:`border-line bg-surface hover:border-primary hover:bg-inset`}`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsxs)(`span`,{className:`shrink-0 font-mono text-[10px] text-subtle`,children:[`#`,e.id]}),(0,p.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[13px] text-fg`,children:e.title})]}),(0,p.jsx)(`div`,{className:`flex items-center gap-2 text-[11px] text-subtle`,children:(0,p.jsx)(`span`,{className:`font-mono`,children:e.created})})]}),(0,p.jsxs)(`div`,{className:`absolute right-2 top-2 flex gap-1 opacity-0 transition-opacity focus-within:opacity-100 group-hover/card:opacity-100`,children:[(0,p.jsx)(`button`,{type:`button`,onClick:n,"aria-label":`Open issue #${e.id}`,"data-tip":`Open issue detail`,className:`relative flex h-5 w-5 items-center justify-center border border-line bg-surface text-subtle hover:border-primary hover:text-fg ${s}`,children:(0,p.jsx)(l,{size:11,strokeWidth:1.8})}),(0,p.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`Delete issue #${e.id}`,"data-tip":`Delete issue`,className:`relative flex h-5 w-5 items-center justify-center border border-line bg-surface text-subtle hover:border-kobe-red/50 hover:text-kobe-red ${s}`,children:(0,p.jsx)(u,{size:11,strokeWidth:1.8})})]})]})}var h=(0,d.lazy)(()=>i(()=>import(`./IssueIntakePanel-
|
|
6
|
+
`):[]).some(e=>!(e in n)&&!(e in i)),[y,n,i]),refresh:v}}var p=n();function m({issue:e,selected:t=!1,onOpen:n,onDelete:r}){return(0,p.jsxs)(`div`,{className:`group/card relative`,"data-issue-card":e.id,children:[(0,p.jsxs)(`button`,{type:`button`,onClick:n,className:`flex w-full cursor-pointer flex-col gap-1.5 border p-3 text-left transition-colors ${t?`border-primary bg-inset`:`border-line bg-surface hover:border-primary hover:bg-inset`}`,children:[(0,p.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,p.jsxs)(`span`,{className:`shrink-0 font-mono text-[10px] text-subtle`,children:[`#`,e.id]}),(0,p.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[13px] text-fg`,children:e.title})]}),(0,p.jsx)(`div`,{className:`flex items-center gap-2 text-[11px] text-subtle`,children:(0,p.jsx)(`span`,{className:`font-mono`,children:e.created})})]}),(0,p.jsxs)(`div`,{className:`absolute right-2 top-2 flex gap-1 opacity-0 transition-opacity focus-within:opacity-100 group-hover/card:opacity-100`,children:[(0,p.jsx)(`button`,{type:`button`,onClick:n,"aria-label":`Open issue #${e.id}`,"data-tip":`Open issue detail`,className:`relative flex h-5 w-5 items-center justify-center border border-line bg-surface text-subtle hover:border-primary hover:text-fg ${s}`,children:(0,p.jsx)(l,{size:11,strokeWidth:1.8})}),(0,p.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`Delete issue #${e.id}`,"data-tip":`Delete issue`,className:`relative flex h-5 w-5 items-center justify-center border border-line bg-surface text-subtle hover:border-kobe-red/50 hover:text-kobe-red ${s}`,children:(0,p.jsx)(u,{size:11,strokeWidth:1.8})})]})]})}var h=(0,d.lazy)(()=>i(()=>import(`./IssueIntakePanel-BXiAOz54.js`).then(e=>({default:e.IssueIntakePanel})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]))),g=(0,d.lazy)(()=>i(()=>import(`./IssuePeek-BiNiXL1w.js`).then(e=>({default:e.IssuePeek})),__vite__mapDeps([14,1,2,3,15,4,5,6,7,8,9,10,11,12,13])));function _({children:e}){return(0,p.jsx)(d.Suspense,{fallback:(0,p.jsx)(`div`,{className:`fixed inset-0 z-40 flex justify-end`,children:(0,p.jsx)(`div`,{className:`relative flex h-full w-[640px] max-w-[92vw] items-center justify-center border-l border-line bg-bg text-[12px] text-subtle shadow-2xl`,children:`Loading…`})}),children:e})}export{f as a,m as i,h as n,g as r,_ as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-
|
|
1
|
+
import{t as e}from"./createLucideIcon-DrxWh_Q-.js";var t=e(`rotate-cw`,[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]);export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{AppShell as e}from"./AppShell-yw6U34oG.js";var t=e;export{t as component};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/tabs-BsXizNGF.js","assets/terminal-BKWB4JIn.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{c as e,f as t,o as n}from"./terminal-BKWB4JIn.js";import{u as r,y as i}from"./tabs-BsXizNGF.js";import{n as a,s as o}from"./createLucideIcon-DrxWh_Q-.js";var s=t(i(),1),c=`modulepreload`,l=function(e){return`/`+e},u={},d=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=l(t,n),t=s(t),t in u)return;u[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:c,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},f=`kobe.dispatch.deliveredAt.`;function p(e){try{let t=localStorage.getItem(f+e),n=t?Number.parseInt(t,10):0;return Number.isFinite(n)?n:0}catch{return 0}}function m(e,t){try{localStorage.setItem(f+e,String(t))}catch{}}function h(e,t){return e.at>t}async function g(e,t){if(!h(e,p(e.taskId)))return!1;m(e.taskId,e.at);let n=t?.ensureTab,r=t?.send;if(!n||!r){let e=await d(()=>import(`./tabs-BsXizNGF.js`).then(e=>e.g),__vite__mapDeps([0,1])),t=await d(()=>import(`./terminal-BKWB4JIn.js`).then(e=>e.i),[]);n??=e.ensureEngineTab,r??=t.sendPtyText}try{let t=e.tabId??n(e.taskId);return await r(t,e.taskId,e.text),!0}catch(t){return m(e.taskId,e.at-1),console.warn(`[dispatch-delivery] failed to deliver into session`,e.taskId,t),!1}}function _(e){return e.length>1?e.replace(/\/+$/,``):e}function v(e,t){let n=_(t),r=new Set([t]);for(let t of e){let e=_(t.repo),i=_(t.worktreePath);(e===n||i===n)&&(t.repo&&r.add(t.repo),t.worktreePath&&r.add(t.worktreePath))}return[...r]}function y(e,t){let n=new Set;for(let e of t)e.repo&&n.add(_(e.repo)),e.worktreePath&&n.add(_(e.worktreePath));let r=Object.entries(e).filter(([e])=>n.has(_(e)));return r.length===Object.keys(e).length?e:Object.fromEntries(r)}function b(e={}){let t=e.path??`/api/rpc`,r=e.post??n.post.bind(n);return{async request(e,n){return(await r(t,{name:e,payload:n},{label:`rpc ${e}`})).result}}}var x=b(),S={tasks:[],activeTaskId:null,engineStates:{},update:null,jobs:{},worktreeChanges:{},issueSnapshots:{},deliver:null,uiPrefs:null,hydrated:!1,daemonConnected:!1,streamConnected:!1},C=new Set;function w(e){S={...S,...e};for(let e of C)e()}function T(e,t){let n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)}function E(e,t){return!e&&t===`idle`}function D(e,t){if(t.phase===`running`)return{...e,[t.taskId]:t};let{[t.taskId]:n,...r}=e;return r}function O(e,t,n){let r={...e};for(let e of v(t,n.repoRoot))r[e]={...n,repoRoot:e};return r}function k(e){let t=new Set(e.map(e=>e.id));w({tasks:e,engineStates:T(S.engineStates,t),jobs:T(S.jobs,t),issueSnapshots:y(S.issueSnapshots,e)}),r(t)}function A(e){switch(e.channel){case`task.snapshot`:k(e.payload.tasks);break;case`active-task`:w({activeTaskId:e.payload.taskId});break;case`engine-state`:{let t=S.engineStates[e.payload.taskId]?.state,n=S.tasks.find(t=>t.id===e.payload.taskId);if(E(n,e.payload.state))break;o(e.payload.taskId,n?.title||n?.branch||e.payload.taskId,t,e.payload.state),w({engineStates:{...S.engineStates,[e.payload.taskId]:e.payload}});break}case`update`:w({update:e.payload.info});break;case`task.jobs`:w({jobs:D(S.jobs,e.payload)});break;case`worktree.changes`:w({worktreeChanges:e.payload.changes});break;case`issue.snapshot`:w({issueSnapshots:O(S.issueSnapshots,S.tasks,e.payload)});break;case`session.deliver`:w({deliver:e.payload}),g(e.payload);break;case`ui-prefs`:w({uiPrefs:e.payload}),a(e.payload.theme)}}function j(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function M(e){if(!j(e)||!Array.isArray(e.tasks)||typeof e.activeTaskId!=`string`&&e.activeTaskId!==null||!j(e.engineStates)||typeof e.connected!=`boolean`)return null;for(let t of[`jobs`,`worktreeChanges`,`issueSnapshots`])if(e[t]!==void 0&&!j(e[t]))return null;return e.uiPrefs!==void 0&&e.uiPrefs!==null&&!j(e.uiPrefs)?null:e}function N(e){return Math.min(1e4,500*2**Math.max(0,e))}var P=null,F=0,I=null;function L(e){return e!==null&&e.readyState!==EventSource.CLOSED}function R(e){if(F=0,w({tasks:e.tasks,activeTaskId:e.activeTaskId,engineStates:e.engineStates,update:e.update,jobs:e.jobs??{},worktreeChanges:e.worktreeChanges??{},issueSnapshots:e.issueSnapshots??{},deliver:e.deliver??null,uiPrefs:e.uiPrefs??null,hydrated:!0,daemonConnected:e.connected,streamConnected:!0}),e.uiPrefs&&a(e.uiPrefs.theme),e.connected&&e.deliver&&g(e.deliver),e.connected){let t=new Set(e.tasks.map(e=>e.id));r(t)}}function z(){if(I!==null)return;let e=N(F);F+=1,I=setTimeout(()=>{I=null,C.size>0&&B()},e)}function B(){L(P)||(P=new EventSource(e(`/events`)),P.addEventListener(`open`,()=>{F=0,w({streamConnected:!0})}),P.addEventListener(`snapshot`,e=>{let t;try{t=JSON.parse(e.data)}catch{console.warn(`[store] dropped unparseable snapshot frame`);return}let n=M(t);if(!n){console.warn(`[store] dropped malformed snapshot frame`);return}R(n)}),P.addEventListener(`channel`,e=>{let t;try{t=JSON.parse(e.data)}catch{console.warn(`[store] dropped unparseable channel frame`);return}if(!j(t)||typeof t.channel!=`string`){console.warn(`[store] dropped malformed channel frame`);return}A(t),S.daemonConnected||w({daemonConnected:!0})}),P.addEventListener(`error`,()=>{w({streamConnected:!1}),P&&P.readyState===EventSource.CLOSED&&(P.close(),P=null,z())}))}function V(e){return B(),C.add(e),()=>{C.delete(e)}}function H(){return S}function U(){return(0,s.useSyncExternalStore)(V,H,H)}async function W(e,t){return x.request(e,t)}export{d as i,U as n,_ as r,W as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,l as t,t as n,u as r}from"./terminal-Nt-mXbb9.js";var i=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function D(e,t){return E(e.type,t,e.props)}function O(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function k(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var A=/\/+/g;function j(e,t){return typeof e==`object`&&e&&e.key!=null?k(``+e.key):t.toString(36)}function M(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function N(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,N(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+j(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(A,`$&/`)+`/`),N(o,r,i,``,function(e){return e})):o!=null&&(O(o)&&(o=D(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(A,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u<e.length;u++)a=e[u],s=l+j(a,u),c+=N(a,r,i,s,o);else if(u=m(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+j(a,u++),c+=N(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return N(M(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function P(e,t,n){if(e==null)return e;var r=[],i=0;return N(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function F(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t)},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var I=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},L={map:P,forEach:function(e,t,n){P(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return P(e,function(){t++}),t},toArray:function(e){return P(e,function(e){return e})||[]},only:function(e){if(!O(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=L,e.Component=v,e.Fragment=r,e.Profiler=a,e.PureComponent=b,e.StrictMode=i,e.Suspense=l,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=w,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return w.H.useMemoCache(e)}},e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=g({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!T.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return E(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)T.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return E(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=O,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:F}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=function(e){var t=w.T,n={};w.T=n;try{var r=e(),i=w.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(C,I)}catch(e){I(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),w.T=t}},e.unstable_useCacheRefresh=function(){return w.H.useCacheRefresh()},e.use=function(e){return w.H.use(e)},e.useActionState=function(e,t,n){return w.H.useActionState(e,t,n)},e.useCallback=function(e,t){return w.H.useCallback(e,t)},e.useContext=function(e){return w.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return w.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return w.H.useEffect(e,t)},e.useEffectEvent=function(e){return w.H.useEffectEvent(e)},e.useId=function(){return w.H.useId()},e.useImperativeHandle=function(e,t,n){return w.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return w.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return w.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return w.H.useMemo(e,t)},e.useOptimistic=function(e,t){return w.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return w.H.useReducer(e,t,n)},e.useRef=function(e){return w.H.useRef(e)},e.useState=function(e){return w.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return w.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return w.H.useTransition()},e.version=`19.2.8`})),a=e(((e,t)=>{t.exports=i()})),o=r(a(),1),s={empty:{hasPty:!1,titleMode:`static`,label:`New tab`},vendor:{hasPty:!0,titleMode:`count`,label:`Vendor`},terminal:{hasPty:!0,titleMode:`count`,label:`Terminal`},transcript:{hasPty:!1,titleMode:`static`,label:`Chat`},file:{hasPty:!1,titleMode:`static`,label:`File`}};function c(e){return s[e].hasPty}function l(e,t){let n=s[e];if(n.titleMode===`count`){let r=t.filter(t=>t.kind===e).length+1;return`${n.label} ${r}`}return n.label}var u=t({addEmptyTab:()=>j,addTab:()=>k,clearSelectedTask:()=>O,clearSplitTab:()=>L,closeTab:()=>P,configureTab:()=>M,consumePendingPrompt:()=>T,ensureEngineTab:()=>A,migrateStoredTab:()=>h,openFilePreviewTab:()=>N,pruneMissingTasks:()=>D,resetLayout:()=>E,selectTask:()=>S,setActiveTab:()=>F,setPendingPrompt:()=>w,setSplitTab:()=>I,useTabsState:()=>R,withTaskTab:()=>m}),d=`kobe-web.tabs`,f={selectedTaskId:null,tabsByTask:{},activeByTask:{},splitByTask:{}};function p(){return{id:x(),kind:`empty`,title:l(`empty`,[])}}function m(e,t){let n=e.tabsByTask[t]??[],r=e.activeByTask[t],i=e.splitByTask[t],a=e;if(i&&(!n.some(e=>e.id===i)||i===r)){let{[t]:n,...r}=e.splitByTask;a={...e,splitByTask:r}}if(n.length>0)return r&&n.some(e=>e.id===r)?a:{...a,activeByTask:{...e.activeByTask,[t]:n[0].id}};let o=p();return{...a,tabsByTask:{...e.tabsByTask,[t]:[o]},activeByTask:{...e.activeByTask,[t]:o.id}}}function h(e){let t=e,n=typeof e?.kind==`string`?e.kind:void 0;if(n===`notes`)return p();let r=n===`chat`?`vendor`:n??`vendor`,i=r in s?r:`vendor`;return i===`file`&&typeof t.path!=`string`?p():{...t,kind:i}}function g(){try{let e=localStorage.getItem(d);if(e){let t=JSON.parse(e),n=Object.fromEntries(Object.entries(t.tabsByTask??{}).map(([e,t])=>[e,t.map(h)])),r={selectedTaskId:t.selectedTaskId??null,tabsByTask:n,activeByTask:t.activeByTask??{},splitByTask:t.splitByTask??{}};return r.selectedTaskId?m(r,r.selectedTaskId):r}}catch{}return f}var _=typeof localStorage>`u`?f:g(),v=new Set;function y(e){_=e;try{localStorage.setItem(d,JSON.stringify(_))}catch{}for(let e of v)e()}var b=0;function x(){try{return crypto.randomUUID()}catch{return b+=1,`tab-${Date.now().toString(36)}-${b}`}}function S(e){y(m({..._,selectedTaskId:e},e))}var C=new Map;function w(e,t){C.set(e,t)}function T(e){let t=C.get(e);return t===void 0?null:(C.delete(e),t)}function E(){for(let e of Object.values(_.tabsByTask))for(let t of e)c(t.kind)&&n(t.id);y({...f})}function D(e){let t=t=>t.kind===`vendor`&&!!t.taskId&&!e.has(t.taskId),r=Object.keys(_.tabsByTask).filter(t=>!e.has(t)),i=Object.entries(_.tabsByTask).filter(([n,r])=>e.has(n)&&r.some(t)),a=_.selectedTaskId!==null&&!e.has(_.selectedTaskId);if(r.length===0&&i.length===0&&!a)return;for(let e of r)for(let t of _.tabsByTask[e]??[])c(t.kind)&&n(t.id);let o={..._.tabsByTask},s={..._.activeByTask},l={..._.splitByTask};for(let e of r)delete o[e],delete s[e],delete l[e];for(let[e,r]of i){for(let e of r)t(e)&&n(e.id);o[e]=r.filter(e=>!t(e))}let u={selectedTaskId:a?null:_.selectedTaskId,tabsByTask:o,activeByTask:s,splitByTask:l};for(let[e]of i)u=m(u,e);y(u)}function O(){y({..._,selectedTaskId:null})}function k(e,t){let n=_.tabsByTask[e]??[],r=x(),i={id:r,kind:`vendor`,title:l(`vendor`,n),...t&&t!==e?{taskId:t}:{}};return y({..._,tabsByTask:{..._.tabsByTask,[e]:[...n,i]},activeByTask:{..._.activeByTask,[e]:r},splitByTask:_.splitByTask}),r}function A(e){let t=_.tabsByTask[e]??[],n=t.find(e=>e.kind===`vendor`&&!e.taskId);if(n)return n.id;let r=x(),i={id:r,kind:`vendor`,title:l(`vendor`,t)};return y({..._,tabsByTask:{..._.tabsByTask,[e]:[...t,i]}}),r}function j(e){let t=_.tabsByTask[e]??[],n=p();return y({..._,tabsByTask:{..._.tabsByTask,[e]:[...t,n]},activeByTask:{..._.activeByTask,[e]:n.id},splitByTask:_.splitByTask}),n.id}function M(e,t,n){let r=_.tabsByTask[e]??[],i=r.map(e=>e.id===t?n===`vendor`?{id:t,kind:n,title:l(`vendor`,r)}:n===`transcript`?{id:t,kind:n,title:l(`transcript`,r)}:{id:t,kind:n,title:l(`terminal`,r)}:e);y({..._,tabsByTask:{..._.tabsByTask,[e]:i},activeByTask:{..._.activeByTask,[e]:t},splitByTask:_.splitByTask})}function N(e,t){let n=_.tabsByTask[e]??[],r=n.find(e=>e.kind===`file`&&e.path===t);if(r)return F(e,r.id),r.id;let i=x(),a={id:i,kind:`file`,title:t.split(`/`).at(-1)??t,path:t};return y({..._,tabsByTask:{..._.tabsByTask,[e]:[...n,a]},activeByTask:{..._.activeByTask,[e]:i},splitByTask:_.splitByTask}),i}function P(e,t){let n=_.tabsByTask[e]??[],r=n.findIndex(e=>e.id===t),i=n.filter(e=>e.id!==t);i.length===0&&(i=[p()]);let a=_.activeByTask[e]===t,o={..._.activeByTask},s={..._.splitByTask};if(a){let t=Math.max(0,Math.min(r,i.length-1));o[e]=i[t].id}(s[e]===t||s[e]===o[e])&&delete s[e],y({..._,tabsByTask:{..._.tabsByTask,[e]:i},activeByTask:o,splitByTask:s})}function F(e,t){let n={..._.splitByTask},r={..._.activeByTask},i=r[e];n[e]===t&&i&&i!==t?n[e]=i:n[e]===t&&delete n[e],r[e]=t,y({..._,activeByTask:r,splitByTask:n})}function I(e,t){let n=_.tabsByTask[e]??[];if(!n.some(e=>e.id===t))return;let r=_.activeByTask[e],i={..._.activeByTask};if(r===t){let r=n.find(e=>e.id!==t);if(!r)return;i[e]=r.id}y({..._,activeByTask:i,splitByTask:{..._.splitByTask,[e]:t}})}function L(e){let{[e]:t,...n}=_.splitByTask;y({..._,splitByTask:n})}function R(){return(0,o.useSyncExternalStore)(e=>(v.add(e),()=>v.delete(e)),()=>_,()=>_)}export{R as _,P as a,A as c,E as d,S as f,u as g,I as h,L as i,N as l,w as m,k as n,M as o,F as p,O as r,T as s,j as t,D as u,c as v,a as y};
|
|
1
|
+
import{d as e,f as t,t as n,u as r}from"./terminal-BKWB4JIn.js";var i=r((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function D(e,t){return E(e.type,t,e.props)}function O(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function k(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var A=/\/+/g;function j(e,t){return typeof e==`object`&&e&&e.key!=null?k(``+e.key):t.toString(36)}function M(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function N(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,N(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+j(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(A,`$&/`)+`/`),N(o,r,i,``,function(e){return e})):o!=null&&(O(o)&&(o=D(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(A,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u<e.length;u++)a=e[u],s=l+j(a,u),c+=N(a,r,i,s,o);else if(u=m(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+j(a,u++),c+=N(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return N(M(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function P(e,t,n){if(e==null)return e;var r=[],i=0;return N(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function F(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t)},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var I=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)},L={map:P,forEach:function(e,t,n){P(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return P(e,function(){t++}),t},toArray:function(e){return P(e,function(e){return e})||[]},only:function(e){if(!O(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=L,e.Component=v,e.Fragment=r,e.Profiler=a,e.PureComponent=b,e.StrictMode=i,e.Suspense=l,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=w,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return w.H.useMemoCache(e)}},e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=g({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!T.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return E(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)T.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return E(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=O,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:F}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=function(e){var t=w.T,n={};w.T=n;try{var r=e(),i=w.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(C,I)}catch(e){I(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),w.T=t}},e.unstable_useCacheRefresh=function(){return w.H.useCacheRefresh()},e.use=function(e){return w.H.use(e)},e.useActionState=function(e,t,n){return w.H.useActionState(e,t,n)},e.useCallback=function(e,t){return w.H.useCallback(e,t)},e.useContext=function(e){return w.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return w.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return w.H.useEffect(e,t)},e.useEffectEvent=function(e){return w.H.useEffectEvent(e)},e.useId=function(){return w.H.useId()},e.useImperativeHandle=function(e,t,n){return w.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return w.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return w.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return w.H.useMemo(e,t)},e.useOptimistic=function(e,t){return w.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return w.H.useReducer(e,t,n)},e.useRef=function(e){return w.H.useRef(e)},e.useState=function(e){return w.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return w.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return w.H.useTransition()},e.version=`19.2.8`})),a=r(((e,t)=>{t.exports=i()})),o=t(a(),1),s={empty:{hasPty:!1,titleMode:`static`,label:`New tab`},vendor:{hasPty:!0,titleMode:`count`,label:`Vendor`},terminal:{hasPty:!0,titleMode:`count`,label:`Terminal`},transcript:{hasPty:!1,titleMode:`static`,label:`Chat`},file:{hasPty:!1,titleMode:`static`,label:`File`}};function c(e){return s[e].hasPty}function l(e,t){let n=s[e];if(n.titleMode===`count`){let r=t.filter(t=>t.kind===e).length+1;return`${n.label} ${r}`}return n.label}var u=e({addEmptyTab:()=>j,addTab:()=>k,clearSelectedTask:()=>O,clearSplitTab:()=>L,closeTab:()=>P,configureTab:()=>M,consumePendingPrompt:()=>T,ensureEngineTab:()=>A,migrateStoredTab:()=>h,openFilePreviewTab:()=>N,pruneMissingTasks:()=>D,resetLayout:()=>E,selectTask:()=>S,setActiveTab:()=>F,setPendingPrompt:()=>w,setSplitTab:()=>I,useTabsState:()=>R,withTaskTab:()=>m}),d=`kobe-web.tabs`,f={selectedTaskId:null,tabsByTask:{},activeByTask:{},splitByTask:{}};function p(){return{id:x(),kind:`empty`,title:l(`empty`,[])}}function m(e,t){let n=e.tabsByTask[t]??[],r=e.activeByTask[t],i=e.splitByTask[t],a=e;if(i&&(!n.some(e=>e.id===i)||i===r)){let{[t]:n,...r}=e.splitByTask;a={...e,splitByTask:r}}if(n.length>0)return r&&n.some(e=>e.id===r)?a:{...a,activeByTask:{...e.activeByTask,[t]:n[0].id}};let o=p();return{...a,tabsByTask:{...e.tabsByTask,[t]:[o]},activeByTask:{...e.activeByTask,[t]:o.id}}}function h(e){let t=e,n=typeof e?.kind==`string`?e.kind:void 0;if(n===`notes`)return p();let r=n===`chat`?`vendor`:n??`vendor`,i=r in s?r:`vendor`;return i===`file`&&typeof t.path!=`string`?p():{...t,kind:i}}function g(){try{let e=localStorage.getItem(d);if(e){let t=JSON.parse(e),n=Object.fromEntries(Object.entries(t.tabsByTask??{}).map(([e,t])=>[e,t.map(h)])),r={selectedTaskId:t.selectedTaskId??null,tabsByTask:n,activeByTask:t.activeByTask??{},splitByTask:t.splitByTask??{}};return r.selectedTaskId?m(r,r.selectedTaskId):r}}catch{}return f}var _=typeof localStorage>`u`?f:g(),v=new Set;function y(e){_=e;try{localStorage.setItem(d,JSON.stringify(_))}catch{}for(let e of v)e()}var b=0;function x(){try{return crypto.randomUUID()}catch{return b+=1,`tab-${Date.now().toString(36)}-${b}`}}function S(e){y(m({..._,selectedTaskId:e},e))}var C=new Map;function w(e,t){C.set(e,t)}function T(e){let t=C.get(e);return t===void 0?null:(C.delete(e),t)}function E(){for(let e of Object.values(_.tabsByTask))for(let t of e)c(t.kind)&&n(t.id);y({...f})}function D(e){let t=t=>t.kind===`vendor`&&!!t.taskId&&!e.has(t.taskId),r=Object.keys(_.tabsByTask).filter(t=>!e.has(t)),i=Object.entries(_.tabsByTask).filter(([n,r])=>e.has(n)&&r.some(t)),a=_.selectedTaskId!==null&&!e.has(_.selectedTaskId);if(r.length===0&&i.length===0&&!a)return;for(let e of r)for(let t of _.tabsByTask[e]??[])c(t.kind)&&n(t.id);let o={..._.tabsByTask},s={..._.activeByTask},l={..._.splitByTask};for(let e of r)delete o[e],delete s[e],delete l[e];for(let[e,r]of i){for(let e of r)t(e)&&n(e.id);o[e]=r.filter(e=>!t(e))}let u={selectedTaskId:a?null:_.selectedTaskId,tabsByTask:o,activeByTask:s,splitByTask:l};for(let[e]of i)u=m(u,e);y(u)}function O(){y({..._,selectedTaskId:null})}function k(e,t){let n=_.tabsByTask[e]??[],r=x(),i={id:r,kind:`vendor`,title:l(`vendor`,n),...t&&t!==e?{taskId:t}:{}};return y({..._,tabsByTask:{..._.tabsByTask,[e]:[...n,i]},activeByTask:{..._.activeByTask,[e]:r},splitByTask:_.splitByTask}),r}function A(e){let t=_.tabsByTask[e]??[],n=t.find(e=>e.kind===`vendor`&&!e.taskId);if(n)return n.id;let r=x(),i={id:r,kind:`vendor`,title:l(`vendor`,t)};return y({..._,tabsByTask:{..._.tabsByTask,[e]:[...t,i]}}),r}function j(e){let t=_.tabsByTask[e]??[],n=p();return y({..._,tabsByTask:{..._.tabsByTask,[e]:[...t,n]},activeByTask:{..._.activeByTask,[e]:n.id},splitByTask:_.splitByTask}),n.id}function M(e,t,n){let r=_.tabsByTask[e]??[],i=r.map(e=>e.id===t?n===`vendor`?{id:t,kind:n,title:l(`vendor`,r)}:n===`transcript`?{id:t,kind:n,title:l(`transcript`,r)}:{id:t,kind:n,title:l(`terminal`,r)}:e);y({..._,tabsByTask:{..._.tabsByTask,[e]:i},activeByTask:{..._.activeByTask,[e]:t},splitByTask:_.splitByTask})}function N(e,t){let n=_.tabsByTask[e]??[],r=n.find(e=>e.kind===`file`&&e.path===t);if(r)return F(e,r.id),r.id;let i=x(),a={id:i,kind:`file`,title:t.split(`/`).at(-1)??t,path:t};return y({..._,tabsByTask:{..._.tabsByTask,[e]:[...n,a]},activeByTask:{..._.activeByTask,[e]:i},splitByTask:_.splitByTask}),i}function P(e,t){let n=_.tabsByTask[e]??[],r=n.findIndex(e=>e.id===t),i=n.filter(e=>e.id!==t);i.length===0&&(i=[p()]);let a=_.activeByTask[e]===t,o={..._.activeByTask},s={..._.splitByTask};if(a){let t=Math.max(0,Math.min(r,i.length-1));o[e]=i[t].id}(s[e]===t||s[e]===o[e])&&delete s[e],y({..._,tabsByTask:{..._.tabsByTask,[e]:i},activeByTask:o,splitByTask:s})}function F(e,t){let n={..._.splitByTask},r={..._.activeByTask},i=r[e];n[e]===t&&i&&i!==t?n[e]=i:n[e]===t&&delete n[e],r[e]=t,y({..._,activeByTask:r,splitByTask:n})}function I(e,t){let n=_.tabsByTask[e]??[];if(!n.some(e=>e.id===t))return;let r=_.activeByTask[e],i={..._.activeByTask};if(r===t){let r=n.find(e=>e.id!==t);if(!r)return;i[e]=r.id}y({..._,activeByTask:i,splitByTask:{..._.splitByTask,[e]:t}})}function L(e){let{[e]:t,...n}=_.splitByTask;y({..._,splitByTask:n})}function R(){return(0,o.useSyncExternalStore)(e=>(v.add(e),()=>v.delete(e)),()=>_,()=>_)}export{R as _,P as a,A as c,E as d,S as f,u as g,I as h,L as i,N as l,w as m,k as n,M as o,F as p,O as r,T as s,j as t,D as u,c as v,a as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as e}from"./terminal-BKWB4JIn.js";import{_ as t,f as n,y as r}from"./tabs-BsXizNGF.js";import{m as i}from"./createLucideIcon-DrxWh_Q-.js";import{t as a}from"./active-task-CXPUHK6n.js";import{t as o}from"./index-qkgHbyG0.js";import{AppShell as s}from"./AppShell-yw6U34oG.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(e))},[e,r]),(0,l.jsx)(s,{})}export{u as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n)),u=`rove`;function d(){return(typeof document>`u`?void 0:document.querySelector(`meta[name="rove-web-token"]`)?.getAttribute(`content`)?.trim())||``}var f=null;function p(){return f===null&&(f=d()),f}function m(e){let t=p();return t?{...e,headers:{...e.headers,authorization:`Bearer ${t}`}}:e}function h(e){let t=p();return t?`${e}${e.includes(`?`)?`&`:`?`}token=${encodeURIComponent(t)}`:e}var g=class extends Error{status;url;detail;body;constructor(e){super(`${e.label} failed (${e.status})${e.detail?`: ${e.detail}`:``}`),this.name=e.name||`ApiError`,this.status=e.status,this.url=e.url,this.detail=e.detail??``,this.body=e.body}};function _(e,t){let n=[];for(let[e,r]of Object.entries(t??{})){let t=Array.isArray(r)?r:[r];for(let r of t)r!=null&&n.push(`${encodeURIComponent(e)}=${encodeURIComponent(String(r))}`)}return n.length===0?e:`${e}${e.includes(`?`)?`&`:`?`}${n.join(`&`)}`}async function v(e){let t=await e.text().catch(()=>``);if(!t)return{text:t};try{return{text:t,json:JSON.parse(t)}}catch{return{text:t}}}function y(e){let t=e.json;if(t&&typeof t==`object`&&!Array.isArray(t)){let e=t,n=typeof e.error==`string`?e.error:``,r=typeof e.name==`string`?e.name:void 0;if(n)return{detail:n,name:r}}return{detail:e.text.trim()}}async function b(e,t,n={}){let r=_(e,n.query),i=await fetch(r,m(t)),a=await v(i),o=a.json,s=o&&typeof o==`object`&&!Array.isArray(o)&&typeof o.error==`string`&&o.error.length>0;if(!i.ok||s){let{detail:e,name:t}=y(a);throw new g({url:r,status:i.status,label:n.label??r,detail:e,body:o,name:t})}return o??{}}function x(e,t){return{method:e,headers:{"content-type":`application/json`},...t===void 0?{}:{body:JSON.stringify(t)}}}var S={get(e,t){return b(e,{method:`GET`},t)},post(e,t,n){return b(e,x(`POST`,t),n)},put(e,t,n){return b(e,x(`PUT`,t),n)},patch(e,t,n){return b(e,x(`PATCH`,t),n)},delete(e,t,n){return b(e,x(`DELETE`,t),n)},form(e,t,n){return b(e,{method:`POST`,body:t},n)},async getOr(e,t,n){try{return await b(e,{method:`GET`},n)}catch{return t}}},C=s({closePtyTab:()=>E,ptyUrl:()=>T,sendPtyText:()=>D});function w(e){let t=location.protocol===`https:`,n=e===`ws`?t?`wss`:`ws`:t?`https`:`http`,r=location.hostname||`localhost`,i=Number.parseInt(location.port||`5173`,10);return`${n}://${r}:${Number.isFinite(i)?i+2:5175}`}function T(e,t,n,r,i){let a=new URLSearchParams({tab:e,taskId:t,mode:n,cols:String(r),rows:String(i)});return`${w(`ws`)}/pty?${a.toString()}`}async function E(e){try{await S.post(`${w(`http`)}/pty/close`,{tab:e},{label:`close PTY tab`})}catch{}}async function D(e,t,n){try{let r=await S.post(`${w(`http`)}/pty/send`,{tab:e,taskId:t,text:n},{label:`send PTY text`});if(!r.sent)throw Error(`send failed`);return{spawned:r.spawned===!0}}catch(e){throw e instanceof g&&e.status===404&&!e.detail?Error(`the PTY server doesn't know /pty/send — restart \`${u} web\` (the sidecar doesn't hot-reload)`):e}}export{g as a,h as c,s as d,l as f,C as i,u as l,T as n,S as o,D as r,m as s,E as t,o as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{f as e}from"./terminal-BKWB4JIn.js";import{y as t}from"./tabs-BsXizNGF.js";import{t as n}from"./external-store-BaYf2nY4.js";var r=e(t(),1),i=r.createContext(null);function a(e){return r.useContext(i)}function o(e){let t=a();return r.useCallback(n=>t.navigate({...n,from:n.from??e?.from}),[e?.from,t])}var s=5e3,c=n([]),l=0;function u(e,t){l+=1;let n={id:l,kind:e,message:t};c.update(e=>[...e.slice(-3),n]),window.setTimeout(()=>d(n.id),s)}function d(e){let t=c.getSnapshot();t.some(t=>t.id===e)&&c.replace(t.filter(t=>t.id!==e))}function f(e,t){if(t instanceof Error)return`${e}: ${t.message}`;let n=String(t);if(n!==`[object Object]`)return`${e}: ${n}`;try{return`${e}: ${JSON.stringify(t)??n}`}catch{return`${e}: ${n}`}}function p(e,t){u(`error`,f(e,t))}function m(){return c.useSnapshot()}export{o as a,m as i,u as n,a as o,p as r,i as s,d as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{l as e}from"./terminal-BKWB4JIn.js";function t({daemonConnected:e,streamConnected:t}){return t?e?`connected`:`daemon-offline`:`event-stream-disconnected`}function n(e){return t(e)===`connected`}function r(e){return!n(e)}function i(e){return!!e.hydrated&&t(e)===`daemon-offline`}function a(n){let r=t(n);return r===`connected`?{ok:!0,label:`daemon connected`}:r===`daemon-offline`?{ok:!1,label:`no daemon`,title:`Daemon offline — if it doesn't recover, run \`${e} doctor\` or \`${e} reset\` in a terminal.`}:{ok:!1,label:`connecting…`}}export{i as n,a as r,r as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,
|
|
1
|
+
import{a as e,f as t,o as n}from"./terminal-BKWB4JIn.js";import{y as r}from"./tabs-BsXizNGF.js";import{m as i,p as a,t as o}from"./createLucideIcon-DrxWh_Q-.js";import{a as s,r as c}from"./toast-I1ewzF0H.js";import{n as l}from"./store-Cc1XsUcM.js";import{t as u}from"./arrow-left-DtifqF07.js";import{n as d}from"./time-kviT26Tm.js";import{n as f,t as p}from"./ConfirmDialog-BoRgFYmm.js";var m=o(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),h=t(r(),1),g=class extends Error{};async function _(){let e=await n.get(`/api/worktrees`,{label:`load worktrees`});return Array.isArray(e.projects)?e.projects:[]}async function v(t,r){try{await n.delete(`/api/worktrees`,{path:t,force:r},{label:`delete worktree`})}catch(t){throw t instanceof e&&/refusing to remove dirty worktree/.test(t.detail)?new g(t.detail):t}}var y=i();function b(e){return e===!0?(0,y.jsx)(`span`,{className:`shrink-0 text-[10px] text-kobe-green`,children:`on remote`}):e===!1?(0,y.jsx)(`span`,{className:`shrink-0 text-[10px] text-kobe-yellow`,children:`not pushed`}):(0,y.jsx)(`span`,{className:`shrink-0 text-[10px] text-subtle`,children:`remote unknown`})}function x({row:e,linkedTaskTitle:t,onDelete:n}){return(0,y.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-line-subtle px-3 py-2 last:border-b-0`,children:[(0,y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,y.jsx)(`span`,{className:`truncate font-mono text-[12px] text-fg`,children:e.branch||`(detached)`}),e.kobeManaged&&(0,y.jsx)(`span`,{className:`shrink-0 text-[10px] text-subtle`,children:`rove`}),e.dirty&&(0,y.jsx)(`span`,{className:`shrink-0 text-[10px] text-kobe-yellow`,children:`dirty`}),b(e.branchOnRemote),t&&(0,y.jsxs)(`span`,{className:`shrink-0 truncate text-[10px] text-subtle`,children:[`task: `,t]})]}),(0,y.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-2 text-[10px] text-subtle`,children:[(0,y.jsx)(`span`,{className:`truncate font-mono`,children:e.path}),e.createdAtMs>0&&(0,y.jsxs)(`span`,{className:`ml-auto shrink-0`,children:[`created `,d(e.createdAtMs)]})]})]}),(0,y.jsx)(`button`,{type:`button`,onClick:n,className:`shrink-0 border border-line bg-bg px-2 py-1 text-[11px] text-muted transition-colors hover:border-kobe-red hover:text-kobe-red`,children:`Delete`})]})}function S(){let e=s(),{tasks:t}=l(),[n,r]=(0,h.useState)(null),[i,o]=(0,h.useState)(!1),[d,b]=(0,h.useState)(null),[S,C]=(0,h.useState)(null),[w,T]=(0,h.useState)([]),E=(0,h.useMemo)(()=>{let e=new Map;for(let n of t)n.worktreePath&&e.set(n.worktreePath,n.title||n.branch);return e},[t]),D=()=>{o(!0),_().then(r).catch(e=>c(`load worktrees`,e)).finally(()=>o(!1))};(0,h.useEffect)(D,[]);let O=(n??[]).map(e=>({...e,worktrees:e.worktrees.filter(e=>!w.includes(e.path))})),k=e=>{r(t=>t?.map(t=>({...t,worktrees:t.worktrees.filter(t=>t.path!==e)}))??t)},A=(e,t)=>{T(t=>[...t,e.path]),v(e.path,t).then(()=>{k(e.path),T(t=>t.filter(t=>t!==e.path))}).catch(n=>{T(t=>t.filter(t=>t!==e.path)),!t&&n instanceof g?C(e):c(t?`force delete worktree`:`delete worktree`,n)})};return(0,y.jsxs)(`div`,{className:`flex h-screen flex-col overflow-hidden bg-bg text-fg`,children:[(0,y.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,y.jsx)(f,{}),(0,y.jsxs)(`button`,{type:`button`,onClick:()=>e({to:`/`}),className:`flex items-center gap-1.5 text-muted transition-colors hover:text-fg`,title:`Back to workspace`,children:[(0,y.jsx)(u,{size:15,strokeWidth:1.8}),(0,y.jsx)(`span`,{className:`text-[12px]`,children:`Workspace`})]}),(0,y.jsx)(`span`,{className:`text-[10px] font-bold uppercase tracking-[0.12em] text-fg`,children:`Worktrees`}),(0,y.jsx)(`button`,{type:`button`,onClick:D,disabled:i,className:`ml-auto flex items-center gap-1.5 text-muted transition-colors hover:text-fg disabled:opacity-40`,title:`Refresh`,children:(0,y.jsx)(m,{size:13,strokeWidth:1.8,className:i?`animate-spin`:``})})]}),(0,y.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:n===null?(0,y.jsx)(`p`,{className:`px-3 py-6 text-center text-[12px] text-subtle`,children:`Loading worktrees…`}):O.length===0?(0,y.jsxs)(`p`,{className:`px-3 py-6 text-center text-[12px] text-subtle`,children:[`No local projects known to `,a(),` yet.`]}):O.map(e=>(0,y.jsxs)(`div`,{className:`border-b border-line`,children:[(0,y.jsx)(`div`,{className:`border-b border-line-subtle bg-surface px-3 py-1.5 font-mono text-[11px] text-subtle`,children:e.repo}),e.worktrees.length===0?(0,y.jsx)(`p`,{className:`px-3 py-3 text-[12px] text-subtle`,children:`No worktrees.`}):e.worktrees.map(e=>(0,y.jsx)(x,{row:e,linkedTaskTitle:E.get(e.path)??null,onDelete:()=>b(e)},e.path))]},e.repo))}),d&&(0,y.jsx)(p,{title:`Delete worktree`,body:`Delete the worktree for "${d.branch||d.path}"? This removes the working directory; the branch itself is kept.`,confirmLabel:`Delete`,danger:!0,onConfirm:()=>{if(!d)return;let e=d;b(null),A(e,!1)},onCancel:()=>b(null)}),S&&(0,y.jsx)(p,{title:`Force delete worktree`,body:`"${S.branch||S.path}" has uncommitted or untracked changes that will be PERMANENTLY LOST. Force delete anyway?`,confirmLabel:`Force delete`,danger:!0,onConfirm:()=>{if(!S)return;let e=S;C(null),A(e,!0)},onCancel:()=>C(null)})]})}var C=S;export{C as component};
|
package/dist/web-ui/index.html
CHANGED
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
<meta charset="UTF-8" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Rove</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="modulepreload" crossorigin href="/assets/terminal-
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/tabs-
|
|
11
|
-
<link rel="modulepreload" crossorigin href="/assets/createLucideIcon-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/external-store-
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/toast-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/store-
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/active-task-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-qkgHbyG0.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/terminal-BKWB4JIn.js">
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/tabs-BsXizNGF.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/createLucideIcon-DrxWh_Q-.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/external-store-BaYf2nY4.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/toast-I1ewzF0H.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/store-Cc1XsUcM.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/active-task-CXPUHK6n.js">
|
|
16
16
|
<link rel="stylesheet" crossorigin href="/assets/index-BnjD9Q-3.css">
|
|
17
17
|
</head>
|
|
18
18
|
<body>
|
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.9.
|
|
4
|
+
"version": "0.9.60",
|
|
5
5
|
"description": "Rove — the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"terminal",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./store-C3IHXPqa.js";function t(t){return e(`task.setActive`,{taskId:t})}function n(e,n){t(e).catch(e=>{n?.(e)})}export{n as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-C8T7_EGK.js";var t=e(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Board as e}from"./Board-B5Yk2rXp.js";var t=e;export{t as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e,s as t,u as n}from"./terminal-Nt-mXbb9.js";import{y as r}from"./tabs-C1KFppnz.js";var i=e((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),a=e(((e,t)=>{t.exports=i()})),o=n(r(),1),s=t;`${s}`;function c(e=s){return e.charAt(0).toUpperCase()+e.slice(1)}function l(e){return`${s} ${e}`}var u=`kobe-web.notify`,d=`kobe-web.notify.engine`,f=null,p=g(),m=_(),h=new Set;function g(){try{return localStorage.getItem(u)===`1`}catch{return!1}}function _(){try{return localStorage.getItem(d)!==`0`}catch{return!0}}function ee(){for(let e of h)e()}function v(e){return e===`waiting_permission`||e===`error`}function y(e){return e.enabled&&e.permission===`granted`&&e.hidden&&e.categoryEnabled}function b(e){return y({enabled:e.enabled,permission:e.permission,hidden:e.hidden,categoryEnabled:e.engineEnabled})?!v(e.prev)&&v(e.next):!1}function x(e){f=e}function S(){return typeof Notification>`u`?`denied`:Notification.permission}function C(){return{supported:typeof Notification<`u`,permission:S(),enabled:p&&S()===`granted`}}var w=C();function T(){let e=C();return(e.supported!==w.supported||e.permission!==w.permission||e.enabled!==w.enabled)&&(w=e),w}async function E(e){if(e&&typeof Notification<`u`&&Notification.permission==="default")try{await Notification.requestPermission()}catch{}p=e;try{localStorage.setItem(u,e?`1`:`0`)}catch{}ee()}function te(){return(0,o.useSyncExternalStore)(e=>(h.add(e),()=>h.delete(e)),T,T)}function D(e,t,n,r){let i=typeof document>`u`||document.visibilityState!==`visible`;b({prev:n,next:r,enabled:p,permission:S(),hidden:i,engineEnabled:m})&&O(e,t,`Task ${r===`error`?`errored`:`needs your input`}.`,`kobe-task-${e}`)}function O(e,t,n,r){try{let i=new Notification(`${c()}: ${t}`,{body:n,tag:r});i.onclick=()=>{window.focus(),f?.(e),i.close()}}catch{}}var k=`claude`,A=`kobe-web.theme`,j=null,M=null,N=L(),P=null,F=!1,I=new Set;function L(){try{return localStorage.getItem(A)}catch{return null}}function R(){for(let e of I)e()}function z(e,t,n=k){return e??t??n}function B(){return z(N,P)}function V(){F||typeof window>`u`||(F=!0,fetch(`/api/themes`).then(async e=>{if(!e.ok)return;let t=await e.json();t.themes&&(j=t.themes,H(),R())}).catch(()=>{}))}function H(){if(V(),!j)return;let e=B();if(M===e)return;let t=j[e]??j[k];if(!t)return;M=e;let n=document.documentElement;for(let[e,r]of Object.entries(t))n.style.setProperty(`--color-${e}`,r);R()}function U(e){P=e,H()}function W(e){N=e;try{localStorage.setItem(A,e)}catch{}H(),R()}function G(){N=null;try{localStorage.removeItem(A)}catch{}M=null,H(),R()}function K(){return{names:j?Object.keys(j):[],palettes:j??{},active:B(),overridden:N!==null}}var q=K();function J(){let e=K();return(e.active!==q.active||e.overridden!==q.overridden||e.names.join(`\0`)!==q.names.join(`\0`))&&(q=e),q}function Y(){return V(),(0,o.useSyncExternalStore)(e=>(I.add(e),()=>I.delete(e)),J,J)}H();function X(){return j?j[B()]??null:null}function Z(){let e=X();return e?{background:e.bg,foreground:e.fg,cursor:e.primary,cursorAccent:e.bg,selectionBackground:e.menu,black:e.bg,red:e[`kobe-red`],green:e[`kobe-green`],yellow:e[`kobe-yellow`],blue:e[`kobe-blue`],magenta:e[`kobe-violet`],cyan:e[`primary-hover`],white:e.muted,brightBlack:e.subtle,brightRed:e[`kobe-red`],brightGreen:e[`kobe-green`],brightYellow:e[`kobe-yellow`],brightBlue:e[`kobe-blue`],brightMagenta:e[`kobe-violet`],brightCyan:e[`primary-hover`],brightWhite:e.fg}:null}var ne=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),re=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),Q=e=>{let t=re(e);return t.charAt(0).toUpperCase()+t.slice(1)},$=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),ie=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0},ae={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`},oe=(0,o.forwardRef)(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:s,...c},l)=>(0,o.createElement)(`svg`,{ref:l,...ae,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:$(`lucide`,i),...!a&&!ie(c)&&{"aria-hidden":`true`},...c},[...s.map(([e,t])=>(0,o.createElement)(e,t)),...Array.isArray(a)?a:[a]])),se=(e,t)=>{let n=(0,o.forwardRef)(({className:n,...r},i)=>(0,o.createElement)(oe,{ref:i,iconNode:t,className:$(`lucide-${ne(Q(e))}`,`lucide-${e}`,n),...r}));return n.displayName=Q(e),n};export{Y as a,E as c,s as d,l as f,W as i,x as l,a as m,U as n,Z as o,c as p,G as r,D as s,se as t,te as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{IssuesPage as e}from"./IssuesPage-BmXfEacH.js";var t=e;export{t as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{AppShell as e}from"./AppShell-DMNi3gC2.js";var t=e;export{t as component};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/tabs-C1KFppnz.js","assets/terminal-Nt-mXbb9.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e,u as t}from"./terminal-Nt-mXbb9.js";import{u as n,y as r}from"./tabs-C1KFppnz.js";import{n as i,s as a}from"./createLucideIcon-C8T7_EGK.js";var o=t(r(),1),s=`modulepreload`,c=function(e){return`/`+e},l={},u=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=c(t,n),t=u(t),t in l)return;l[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:s,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},d=`kobe.dispatch.deliveredAt.`;function f(e){try{let t=localStorage.getItem(d+e),n=t?Number.parseInt(t,10):0;return Number.isFinite(n)?n:0}catch{return 0}}function p(e,t){try{localStorage.setItem(d+e,String(t))}catch{}}function m(e,t){return e.at>t}async function h(e,t){if(!m(e,f(e.taskId)))return!1;p(e.taskId,e.at);let n=t?.ensureTab,r=t?.send;if(!n||!r){let e=await u(()=>import(`./tabs-C1KFppnz.js`).then(e=>e.g),__vite__mapDeps([0,1])),t=await u(()=>import(`./terminal-Nt-mXbb9.js`).then(e=>e.i),[]);n??=e.ensureEngineTab,r??=t.sendPtyText}try{let t=e.tabId??n(e.taskId);return await r(t,e.taskId,e.text),!0}catch(t){return p(e.taskId,e.at-1),console.warn(`[dispatch-delivery] failed to deliver into session`,e.taskId,t),!1}}function g(e){return e.length>1?e.replace(/\/+$/,``):e}function _(e,t){let n=g(t),r=new Set([t]);for(let t of e){let e=g(t.repo),i=g(t.worktreePath);(e===n||i===n)&&(t.repo&&r.add(t.repo),t.worktreePath&&r.add(t.worktreePath))}return[...r]}function v(e,t){let n=new Set;for(let e of t)e.repo&&n.add(g(e.repo)),e.worktreePath&&n.add(g(e.worktreePath));let r=Object.entries(e).filter(([e])=>n.has(g(e)));return r.length===Object.keys(e).length?e:Object.fromEntries(r)}function y(t={}){let n=t.path??`/api/rpc`,r=t.post??e.post.bind(e);return{async request(e,t){return(await r(n,{name:e,payload:t},{label:`rpc ${e}`})).result}}}var b=y(),x={tasks:[],activeTaskId:null,engineStates:{},update:null,jobs:{},worktreeChanges:{},issueSnapshots:{},deliver:null,uiPrefs:null,hydrated:!1,daemonConnected:!1,streamConnected:!1},S=new Set;function C(e){x={...x,...e};for(let e of S)e()}function w(e,t){let n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)}function T(e,t){return!e&&t===`idle`}function E(e,t){if(t.phase===`running`)return{...e,[t.taskId]:t};let{[t.taskId]:n,...r}=e;return r}function D(e,t,n){let r={...e};for(let e of _(t,n.repoRoot))r[e]={...n,repoRoot:e};return r}function O(e){let t=new Set(e.map(e=>e.id));C({tasks:e,engineStates:w(x.engineStates,t),jobs:w(x.jobs,t),issueSnapshots:v(x.issueSnapshots,e)}),n(t)}function k(e){switch(e.channel){case`task.snapshot`:O(e.payload.tasks);break;case`active-task`:C({activeTaskId:e.payload.taskId});break;case`engine-state`:{let t=x.engineStates[e.payload.taskId]?.state,n=x.tasks.find(t=>t.id===e.payload.taskId);if(T(n,e.payload.state))break;a(e.payload.taskId,n?.title||n?.branch||e.payload.taskId,t,e.payload.state),C({engineStates:{...x.engineStates,[e.payload.taskId]:e.payload}});break}case`update`:C({update:e.payload.info});break;case`task.jobs`:C({jobs:E(x.jobs,e.payload)});break;case`worktree.changes`:C({worktreeChanges:e.payload.changes});break;case`issue.snapshot`:C({issueSnapshots:D(x.issueSnapshots,x.tasks,e.payload)});break;case`session.deliver`:C({deliver:e.payload}),h(e.payload);break;case`ui-prefs`:C({uiPrefs:e.payload}),i(e.payload.theme)}}function A(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function j(e){if(!A(e)||!Array.isArray(e.tasks)||typeof e.activeTaskId!=`string`&&e.activeTaskId!==null||!A(e.engineStates)||typeof e.connected!=`boolean`)return null;for(let t of[`jobs`,`worktreeChanges`,`issueSnapshots`])if(e[t]!==void 0&&!A(e[t]))return null;return e.uiPrefs!==void 0&&e.uiPrefs!==null&&!A(e.uiPrefs)?null:e}function M(e){return Math.min(1e4,500*2**Math.max(0,e))}var N=null,P=0,F=null;function I(e){return e!==null&&e.readyState!==EventSource.CLOSED}function L(e){if(P=0,C({tasks:e.tasks,activeTaskId:e.activeTaskId,engineStates:e.engineStates,update:e.update,jobs:e.jobs??{},worktreeChanges:e.worktreeChanges??{},issueSnapshots:e.issueSnapshots??{},deliver:e.deliver??null,uiPrefs:e.uiPrefs??null,hydrated:!0,daemonConnected:e.connected,streamConnected:!0}),e.uiPrefs&&i(e.uiPrefs.theme),e.connected&&e.deliver&&h(e.deliver),e.connected){let t=new Set(e.tasks.map(e=>e.id));n(t)}}function R(){if(F!==null)return;let e=M(P);P+=1,F=setTimeout(()=>{F=null,S.size>0&&z()},e)}function z(){I(N)||(N=new EventSource(`/events`),N.addEventListener(`open`,()=>{P=0,C({streamConnected:!0})}),N.addEventListener(`snapshot`,e=>{let t;try{t=JSON.parse(e.data)}catch{console.warn(`[store] dropped unparseable snapshot frame`);return}let n=j(t);if(!n){console.warn(`[store] dropped malformed snapshot frame`);return}L(n)}),N.addEventListener(`channel`,e=>{let t;try{t=JSON.parse(e.data)}catch{console.warn(`[store] dropped unparseable channel frame`);return}if(!A(t)||typeof t.channel!=`string`){console.warn(`[store] dropped malformed channel frame`);return}k(t),x.daemonConnected||C({daemonConnected:!0})}),N.addEventListener(`error`,()=>{C({streamConnected:!1}),N&&N.readyState===EventSource.CLOSED&&(N.close(),N=null,R())}))}function B(e){return z(),S.add(e),()=>{S.delete(e)}}function V(){return x}function H(){return(0,o.useSyncExternalStore)(B,V,V)}async function U(e,t){return b.request(e,t)}export{u as i,H as n,g as r,U as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u as e}from"./terminal-Nt-mXbb9.js";import{_ as t,f as n,y as r}from"./tabs-C1KFppnz.js";import{m as i}from"./createLucideIcon-C8T7_EGK.js";import{t as a}from"./active-task-Dcgkjlku.js";import{t as o}from"./index-4ygpWkvC.js";import{AppShell as s}from"./AppShell-DMNi3gC2.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(e))},[e,r]),(0,l.jsx)(s,{})}export{u as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n)),u=`rove`,d=class extends Error{status;url;detail;body;constructor(e){super(`${e.label} failed (${e.status})${e.detail?`: ${e.detail}`:``}`),this.name=e.name||`ApiError`,this.status=e.status,this.url=e.url,this.detail=e.detail??``,this.body=e.body}};function f(e,t){let n=[];for(let[e,r]of Object.entries(t??{})){let t=Array.isArray(r)?r:[r];for(let r of t)r!=null&&n.push(`${encodeURIComponent(e)}=${encodeURIComponent(String(r))}`)}return n.length===0?e:`${e}${e.includes(`?`)?`&`:`?`}${n.join(`&`)}`}async function p(e){let t=await e.text().catch(()=>``);if(!t)return{text:t};try{return{text:t,json:JSON.parse(t)}}catch{return{text:t}}}function m(e){let t=e.json;if(t&&typeof t==`object`&&!Array.isArray(t)){let e=t,n=typeof e.error==`string`?e.error:``,r=typeof e.name==`string`?e.name:void 0;if(n)return{detail:n,name:r}}return{detail:e.text.trim()}}async function h(e,t,n={}){let r=f(e,n.query),i=await fetch(r,t),a=await p(i),o=a.json,s=o&&typeof o==`object`&&!Array.isArray(o)&&typeof o.error==`string`&&o.error.length>0;if(!i.ok||s){let{detail:e,name:t}=m(a);throw new d({url:r,status:i.status,label:n.label??r,detail:e,body:o,name:t})}return o??{}}function g(e,t){return{method:e,headers:{"content-type":`application/json`},...t===void 0?{}:{body:JSON.stringify(t)}}}var _={get(e,t){return h(e,{method:`GET`},t)},post(e,t,n){return h(e,g(`POST`,t),n)},put(e,t,n){return h(e,g(`PUT`,t),n)},patch(e,t,n){return h(e,g(`PATCH`,t),n)},delete(e,t,n){return h(e,g(`DELETE`,t),n)},form(e,t,n){return h(e,{method:`POST`,body:t},n)},async getOr(e,t,n){try{return await h(e,{method:`GET`},n)}catch{return t}}},v=s({closePtyTab:()=>x,ptyUrl:()=>b,sendPtyText:()=>S});function y(e){let t=location.protocol===`https:`,n=e===`ws`?t?`wss`:`ws`:t?`https`:`http`,r=location.hostname||`localhost`,i=Number.parseInt(location.port||`5173`,10);return`${n}://${r}:${Number.isFinite(i)?i+2:5175}`}function b(e,t,n,r,i){let a=new URLSearchParams({tab:e,taskId:t,mode:n,cols:String(r),rows:String(i)});return`${y(`ws`)}/pty?${a.toString()}`}async function x(e){try{await _.post(`${y(`http`)}/pty/close`,{tab:e},{label:`close PTY tab`})}catch{}}async function S(e,t,n){try{let r=await _.post(`${y(`http`)}/pty/send`,{tab:e,taskId:t,text:n},{label:`send PTY text`});if(!r.sent)throw Error(`send failed`);return{spawned:r.spawned===!0}}catch(e){throw e instanceof d&&e.status===404&&!e.detail?Error(`the PTY server doesn't know /pty/send — restart \`${u} web\` (the sidecar doesn't hot-reload)`):e}}export{d as a,o as c,v as i,s as l,b as n,_ as o,S as r,u as s,x as t,l as u};
|