@sma1lboy/kobe 0.7.61 → 0.7.63
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 +252 -250
- package/dist/web-ui/assets/{AppShell-DndsbGJA.js → AppShell-BJWnIZ2n.js} +1 -1
- package/dist/web-ui/assets/{Board-BkldAXiI.js → Board-DY28iE1n.js} +1 -1
- package/dist/web-ui/assets/{BoardPeek-BVASBGzn.js → BoardPeek-q7WDjTVj.js} +2 -2
- package/dist/web-ui/assets/{ChatTerminal-EpSnfEJZ.js → ChatTerminal-CYhDduOa.js} +1 -1
- package/dist/web-ui/assets/{ChatTranscript-JH30pnFy.js → ChatTranscript-BmOoR16r.js} +1 -1
- package/dist/web-ui/assets/{ConfirmDialog-DELlvuWi.js → ConfirmDialog-DWjDo0WB.js} +1 -1
- package/dist/web-ui/assets/{IssueIntakePanel-DBUEg3tF.js → IssueIntakePanel-CGafCVz5.js} +1 -1
- package/dist/web-ui/assets/{IssuePeek-LBdq3maL.js → IssuePeek-CPvOVskA.js} +1 -1
- package/dist/web-ui/assets/{IssuesPage-_Ov-3CBH.js → IssuesPage-DUlHFjk-.js} +1 -1
- package/dist/web-ui/assets/{RichEditor-DGpLNBUT.js → RichEditor-CnNTlQpa.js} +1 -1
- package/dist/web-ui/assets/{SettingsPage-BdA2cY4d.js → SettingsPage-BtnEKNBk.js} +1 -1
- package/dist/web-ui/assets/{SlideOver-DpkL00Bv.js → SlideOver-Bh8_sIQM.js} +1 -1
- package/dist/web-ui/assets/{ViewToggle-BUVZKRCa.js → ViewToggle-intE-c2J.js} +1 -1
- package/dist/web-ui/assets/{WorkspaceTabs-CCl6hl8g.js → WorkspaceTabs-CCVLs4VG.js} +3 -3
- package/dist/web-ui/assets/board-BZawoWdd.js +1 -0
- package/dist/web-ui/assets/{harness-BmJjUgLp.js → harness-RXzjyKw1.js} +1 -1
- package/dist/web-ui/assets/{index-BJpZUkR8.js → index-BXZOglLY.js} +3 -3
- package/dist/web-ui/assets/{issues-Cy_qfrNn.js → issues-C3aXpYKt.js} +1 -1
- package/dist/web-ui/assets/issues-DoKRndd6.js +1 -0
- package/dist/web-ui/assets/{lazy-issue-panels-Bd-kqBwK.js → lazy-issue-panels-huIP1uIl.js} +3 -3
- package/dist/web-ui/assets/routes-CBHSZQIw.js +1 -0
- package/dist/web-ui/assets/store-BQARX7BI.js +2 -0
- package/dist/web-ui/assets/{task._taskId-C1IbFs2j.js → task._taskId-DiMC08by.js} +1 -1
- package/dist/web-ui/index.html +2 -2
- package/package.json +5 -2
- package/dist/web-ui/assets/board-DxmFo6ws.js +0 -1
- package/dist/web-ui/assets/issues-3eskwBZY.js +0 -1
- package/dist/web-ui/assets/routes-CeuOo-QO.js +0 -1
- package/dist/web-ui/assets/store-Dr4_yLwW.js +0 -2
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{c as e}from"./tabs-CRxsaB4E.js";import{t}from"./store-
|
|
1
|
+
import{c as e}from"./tabs-CRxsaB4E.js";import{t}from"./store-BQARX7BI.js";import{i as n,r}from"./terminal-Cqsy8MII.js";import{t as i}from"./settings-DnpDLygw.js";import{w as a}from"./index-BXZOglLY.js";import{t as o}from"./text-match-C3BRtNXy.js";var s=[{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}],c=new Set([`done`]);function l(e){return e.status===`done`?`done`:e.taskId!==void 0&&e.taskId!==``?`in_progress`:`backlog`}function u(e){return e.taskId!==void 0&&e.taskId!==``}function d(e,t){return e.issue.created===t.issue.created?t.issue.id-e.issue.id:e.issue.created<t.issue.created?1:-1}function f(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(l(t.issue),t);for(let e of t.values())e.sort(d);let r=(e,t)=>!c.has(e)||t.length<=30?{cards:t,hiddenCount:0}:{cards:t.slice(0,30),hiddenCount:t.length-30};return s.map(e=>({...e,...r(e.key,t.get(e.key)??[])})).filter(e=>e.alwaysVisible||e.cards.length+e.hiddenCount>0)}function p(e){return e.reduce((e,t)=>e+t.cards.length,0)}function m(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:g(e,n),columns:f(t.get(e)??[])})).sort((e,t)=>e.label.localeCompare(t.label))}function h(e){let t=e.replace(/\/+$/,``);return t.split(`/`).pop()||t}function g(e,t){let n=h(e);return t.some(t=>t!==e&&h(t)===n)?e.replace(/\/+$/,``).split(`/`).slice(-2).join(`/`):n}function _(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 v(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:g(e,n),count:t.get(e)??0})).sort((e,t)=>e.label.localeCompare(t.label))}function y(e,t,n){return e.filter(({repo:e,issue:r})=>n&&e!==n?!1:o(`#${r.id} ${r.title} ${r.body}`,t))}function b(e){let t=_(e.issueData,e.issueRepos,e.pendingLinks),n=v(t),r=m(y(t,e.query,e.repoFilter));return e.repoFilter&&r.length===0&&e.issueRepos.includes(e.repoFilter)&&r.push({repo:e.repoFilter,label:g(e.repoFilter,e.issueRepos),columns:f([])}),{allIssues:t,repoChips:n,projectBoards:r,shownCount:r.reduce((e,t)=>e+p(t.columns),0),hasAnyCard:t.length>0}}async function x(){let e=await n.get(`/api/projects`,{label:`load projects`});return Array.isArray(e.projects)?e.projects.filter(e=>typeof e==`string`):[]}async function S(e){return n.get(`/api/issues`,{query:{repoRoot:e},label:`load issues`})}async function C(e,t){return n.post(`/api/issues`,{repoRoot:e,op:t},{label:`update issues`})}async function w(e,t){return C(e,{type:`create`,...t})}async function T(e,t,n){return C(e,{type:`update`,id:t,...n})}async function E(e,t,n){return C(e,{type:`link`,id:t,taskId:n})}async function D(e,t){return C(e,{type:`delete`,id:t})}async function O(){let e=await n.getOr(`/api/cli-invocation`,{},{label:`load CLI invocation`});return typeof e.api==`string`&&e.api.trim().length>0?e.api:`kobe api`}var k=[`open`,`doing`,`hold`,`done`],A={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 j(e){return e!==`done`}function M(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):!0)}function N(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 P(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.archived&&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.archived||!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:g(e,a),count:n.get(e)??0})).sort((e,t)=>e.label.localeCompare(t.label))}function F(e,t){return e.length===0?null:t&&e.some(e=>e.repo===t)?t:e[0]?.repo??null}function I(e,t=`kobe api`){let n=[`Work on user story #${e.id}: ${e.title}`,``],r=e.body.trim();return r&&n.push(r,``),n.push(`Treat this as the story's dedicated kobe 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`),n.join(`
|
|
2
2
|
`)}function L(e,t=`kobe api`){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(`
|
|
3
3
|
`)}async function R(n,o,s,c){let l=s?.trim()||await i(),{taskId:u}=await t(`task.create`,{repo:n,title:`#${o.id} ${o.title}`,...l?{vendor:l}:{},...c?.trim()?{effort:c.trim()}:{}});a(u),await E(n,o.id,u).catch(()=>{});let d=await O().catch(()=>`kobe api`);return await r(e(u),u,I(o,d)),{taskId:u}}async function z(t,n){let i=await O().catch(()=>`kobe api`);await r(e(t),t,L(n,i))}export{D as a,M as c,z as d,R as f,u as g,b as h,w as i,N as l,T as m,A as n,S as o,F as p,j as r,x as s,k as t,P as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{IssuesPage as e}from"./IssuesPage-DUlHFjk-.js";var t=e;export{t as component};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/IssueIntakePanel-
|
|
2
|
-
import{S as e,y as t}from"./tabs-CRxsaB4E.js";import{d as n,t as r}from"./createLucideIcon-Bil0PUgZ.js";import{i,n as a,r as o}from"./store-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/IssueIntakePanel-CGafCVz5.js","assets/tabs-CRxsaB4E.js","assets/terminal-Cqsy8MII.js","assets/RichEditor-CnNTlQpa.js","assets/index-BXZOglLY.js","assets/store-BQARX7BI.js","assets/createLucideIcon-Bil0PUgZ.js","assets/toast-CHhAlb5K.js","assets/settings-DnpDLygw.js","assets/index-C7JcdWbk.css","assets/RichEditor-B4sEOPyN.css","assets/SlideOver-Bh8_sIQM.js","assets/issues-C3aXpYKt.js","assets/text-match-C3BRtNXy.js","assets/IssuePeek-CPvOVskA.js","assets/external-link-DcgSntwH.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{S as e,y as t}from"./tabs-CRxsaB4E.js";import{d as n,t as r}from"./createLucideIcon-Bil0PUgZ.js";import{i,n as a,r as o}from"./store-BQARX7BI.js";import{o as s}from"./ConfirmDialog-DWjDo0WB.js";import{o as c}from"./issues-C3aXpYKt.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);r&&m.current.get(t)!==r&&(m.current.set(t,r),_(r,g(t),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,onOpen:t,onDelete:n}){return(0,p.jsxs)(`div`,{className:`group/card relative`,children:[(0,p.jsxs)(`button`,{type:`button`,onClick:t,className:`flex w-full cursor-pointer flex-col gap-1.5 border border-line bg-surface p-3 text-left transition-colors 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:t,"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:n,"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,onOpen:t,onDelete:n}){return(0,p.jsxs)(`div`,{className:`group/card relative`,children:[(0,p.jsxs)(`button`,{type:`button`,onClick:t,className:`flex w-full cursor-pointer flex-col gap-1.5 border border-line bg-surface p-3 text-left transition-colors 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:t,"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:n,"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-CGafCVz5.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-CPvOVskA.js`).then(e=>({default:e.IssuePeek})),__vite__mapDeps([14,1,2,3,4,5,6,7,8,9,10,15,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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{AppShell as e}from"./AppShell-BJWnIZ2n.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-CRxsaB4E.js","assets/terminal-Cqsy8MII.js","assets/terminal-DLTENDa9.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{S as e,u as t,y as n}from"./tabs-CRxsaB4E.js";import{n as r,s as i}from"./createLucideIcon-Bil0PUgZ.js";import{i as a}from"./terminal-Cqsy8MII.js";var o=e(n(),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}))))}r=o(t.map(t=>{if(t=c(t,n),t in l)return;l[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:s,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.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-CRxsaB4E.js`).then(e=>e.g),__vite__mapDeps([0,1])),t=await u(()=>import(`./terminal-DLTENDa9.js`),__vite__mapDeps([2,1]));n??=e.ensureEngineTab,r??=t.sendPtyText}try{let t=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(e={}){let t=e.path??`/api/rpc`,n=e.post??a.post.bind(a);return{async request(e,r){return(await n(t,{name:e,payload:r},{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 n=new Set(e.map(e=>e.id));C({tasks:e,engineStates:w(x.engineStates,n),jobs:w(x.jobs,n),issueSnapshots:v(x.issueSnapshots,e)}),t(n)}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;i(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}),r(e.payload.theme);break}}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){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&&r(e.uiPrefs.theme),e.connected&&e.deliver&&h(e.deliver),e.connected&&t(new Set(e.tasks.map(e=>e.id)))}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 +1 @@
|
|
|
1
|
-
import{S as e,_ as t,f as n,y as r}from"./tabs-CRxsaB4E.js";import{d as i}from"./createLucideIcon-Bil0PUgZ.js";import{t as a,w as o}from"./index-
|
|
1
|
+
import{S as e,_ as t,f as n,y as r}from"./tabs-CRxsaB4E.js";import{d as i}from"./createLucideIcon-Bil0PUgZ.js";import{t as a,w as o}from"./index-BXZOglLY.js";import{AppShell as s}from"./AppShell-BJWnIZ2n.js";var c=e(r()),l=i();function u(){let{taskId:e}=a.useParams(),{selectedTaskId:r}=t();return(0,c.useEffect)(()=>{!e||e===r||(n(e),o(e))},[e,r]),(0,l.jsx)(s,{})}export{u as component};
|
package/dist/web-ui/index.html
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
<meta charset="UTF-8" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>kobe-web</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-BXZOglLY.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/terminal-Cqsy8MII.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/tabs-CRxsaB4E.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/createLucideIcon-Bil0PUgZ.js">
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/store-
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/store-BQARX7BI.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/settings-DnpDLygw.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/assets/toast-CHhAlb5K.js">
|
|
15
15
|
<link rel="stylesheet" crossorigin href="/assets/index-C7JcdWbk.css">
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@sma1lboy/kobe",
|
|
4
|
-
"version": "0.7.
|
|
4
|
+
"version": "0.7.63",
|
|
5
5
|
"description": "TUI orchestrator for Claude Code (codename)",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"packageManager": "bun@1.3.13",
|
|
@@ -37,7 +37,9 @@
|
|
|
37
37
|
"test": "bun run test:fast && bun run test:socket",
|
|
38
38
|
"test:fast": "vitest run --passWithNoTests",
|
|
39
39
|
"test:socket": "KOBE_INCLUDE_SOCKET=1 vitest run test/daemon --pool forks --minWorkers=1 --maxWorkers=1 --passWithNoTests",
|
|
40
|
-
"test:behavior": "KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --passWithNoTests",
|
|
40
|
+
"test:behavior": "KOBE_INCLUDE_BEHAVIOR=1 vitest run test/behavior --pool forks --minWorkers=1 --maxWorkers=1 --passWithNoTests",
|
|
41
|
+
"test:render": "bun test test/render --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage-render",
|
|
42
|
+
"coverage": "vitest run --coverage --passWithNoTests",
|
|
41
43
|
"bench": "vitest bench --run",
|
|
42
44
|
"lint": "biome check .",
|
|
43
45
|
"knip": "knip-bun",
|
|
@@ -59,6 +61,7 @@
|
|
|
59
61
|
"@tsconfig/bun": "1.0.10",
|
|
60
62
|
"@types/bun": "1.3.14",
|
|
61
63
|
"@types/node": "25.6.2",
|
|
64
|
+
"@vitest/coverage-v8": "2.1.9",
|
|
62
65
|
"knip": "^6.14.2",
|
|
63
66
|
"kobe-web": "workspace:*",
|
|
64
67
|
"typescript": "5.8.2",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Board as e}from"./Board-BkldAXiI.js";var t=e;export{t as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{IssuesPage as e}from"./IssuesPage-_Ov-3CBH.js";var t=e;export{t as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{AppShell as e}from"./AppShell-DndsbGJA.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-CRxsaB4E.js","assets/terminal-Cqsy8MII.js","assets/terminal-DLTENDa9.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{S as e,u as t,y as n}from"./tabs-CRxsaB4E.js";import{n as r,s as i}from"./createLucideIcon-Bil0PUgZ.js";import{i as a}from"./terminal-Cqsy8MII.js";var o=e(n(),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}))))}r=o(t.map(t=>{if(t=c(t,n),t in l)return;l[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:s,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.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-CRxsaB4E.js`).then(e=>e.g),__vite__mapDeps([0,1])),t=await u(()=>import(`./terminal-DLTENDa9.js`),__vite__mapDeps([2,1]));n??=e.ensureEngineTab,r??=t.sendPtyText}try{let t=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={}){let t=e.path??`/api/rpc`,n=e.post??a.post.bind(a);return{async request(e,r){return(await n(t,{name:e,payload:r},{label:`rpc ${e}`})).result}}}var y=v(),b={tasks:[],activeTaskId:null,engineStates:{},update:null,jobs:{},worktreeChanges:{},issueSnapshots:{},deliver:null,uiPrefs:null,hydrated:!1,daemonConnected:!1,streamConnected:!1},x=new Set;function S(e){b={...b,...e};for(let e of x)e()}function C(e,t){let n=Object.entries(e).filter(([e])=>t.has(e));return n.length===Object.keys(e).length?e:Object.fromEntries(n)}function w(e,t){return!e&&t===`idle`}function T(e,t){if(t.phase===`running`)return{...e,[t.taskId]:t};let{[t.taskId]:n,...r}=e;return r}function E(e,t,n){let r={...e};for(let e of _(t,n.repoRoot))r[e]={...n,repoRoot:e};return r}function D(e){let n=new Set(e.map(e=>e.id));S({tasks:e,engineStates:C(b.engineStates,n),jobs:C(b.jobs,n)}),t(n)}function O(e){switch(e.channel){case`task.snapshot`:D(e.payload.tasks);break;case`active-task`:S({activeTaskId:e.payload.taskId});break;case`engine-state`:{let t=b.engineStates[e.payload.taskId]?.state,n=b.tasks.find(t=>t.id===e.payload.taskId);if(w(n,e.payload.state))break;i(e.payload.taskId,n?.title||n?.branch||e.payload.taskId,t,e.payload.state),S({engineStates:{...b.engineStates,[e.payload.taskId]:e.payload}});break}case`update`:S({update:e.payload.info});break;case`task.jobs`:S({jobs:T(b.jobs,e.payload)});break;case`worktree.changes`:S({worktreeChanges:e.payload.changes});break;case`issue.snapshot`:S({issueSnapshots:E(b.issueSnapshots,b.tasks,e.payload)});break;case`session.deliver`:S({deliver:e.payload}),h(e.payload);break;case`ui-prefs`:S({uiPrefs:e.payload}),r(e.payload.theme);break}}function k(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function A(e){if(!k(e)||!Array.isArray(e.tasks)||typeof e.activeTaskId!=`string`&&e.activeTaskId!==null||!k(e.engineStates)||typeof e.connected!=`boolean`)return null;for(let t of[`jobs`,`worktreeChanges`,`issueSnapshots`])if(e[t]!==void 0&&!k(e[t]))return null;return e.uiPrefs!==void 0&&e.uiPrefs!==null&&!k(e.uiPrefs)?null:e}function j(e){return Math.min(1e4,500*2**Math.max(0,e))}var M=null,N=0,P=null;function F(e){return e!==null&&e.readyState!==EventSource.CLOSED}function I(e){N=0,S({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&&r(e.uiPrefs.theme),e.connected&&e.deliver&&h(e.deliver),e.connected&&t(new Set(e.tasks.map(e=>e.id)))}function L(){if(P!==null)return;let e=j(N);N+=1,P=setTimeout(()=>{P=null,x.size>0&&R()},e)}function R(){F(M)||(M=new EventSource(`/events`),M.addEventListener(`open`,()=>{N=0,S({streamConnected:!0})}),M.addEventListener(`snapshot`,e=>{let t;try{t=JSON.parse(e.data)}catch{console.warn(`[store] dropped unparseable snapshot frame`);return}let n=A(t);if(!n){console.warn(`[store] dropped malformed snapshot frame`);return}I(n)}),M.addEventListener(`channel`,e=>{let t;try{t=JSON.parse(e.data)}catch{console.warn(`[store] dropped unparseable channel frame`);return}if(!k(t)||typeof t.channel!=`string`){console.warn(`[store] dropped malformed channel frame`);return}O(t),b.daemonConnected||S({daemonConnected:!0})}),M.addEventListener(`error`,()=>{S({streamConnected:!1}),M&&M.readyState===EventSource.CLOSED&&(M.close(),M=null,L())}))}function z(e){return R(),x.add(e),()=>{x.delete(e)}}function B(){return b}function V(){return(0,o.useSyncExternalStore)(z,B,B)}async function H(e,t){return y.request(e,t)}export{u as i,V as n,g as r,H as t};
|