@sma1lboy/kobe 0.7.57 → 0.7.59
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 +223 -216
- package/dist/web-ui/assets/{AppShell-DatLbUH8.js → AppShell-DndsbGJA.js} +1 -1
- package/dist/web-ui/assets/{Board-eEGLQBF4.js → Board-BkldAXiI.js} +1 -1
- package/dist/web-ui/assets/{BoardPeek-BN0d-Zie.js → BoardPeek-BVASBGzn.js} +2 -2
- package/dist/web-ui/assets/{ChatTerminal-DtqC7Mxi.js → ChatTerminal-EpSnfEJZ.js} +1 -1
- package/dist/web-ui/assets/{ChatTranscript-CzQspNKE.js → ChatTranscript-JH30pnFy.js} +1 -1
- package/dist/web-ui/assets/{ConfirmDialog-BPIwmIjt.js → ConfirmDialog-DELlvuWi.js} +1 -1
- package/dist/web-ui/assets/{IssueIntakePanel-BF7ifkKK.js → IssueIntakePanel-DBUEg3tF.js} +1 -1
- package/dist/web-ui/assets/{IssuePeek-DTInqza8.js → IssuePeek-LBdq3maL.js} +1 -1
- package/dist/web-ui/assets/{IssuesPage-Bx7iHFBo.js → IssuesPage-_Ov-3CBH.js} +1 -1
- package/dist/web-ui/assets/{RichEditor-DvjbbcLw.js → RichEditor-DGpLNBUT.js} +1 -1
- package/dist/web-ui/assets/{SettingsPage-DZ25Tk5v.js → SettingsPage-BdA2cY4d.js} +1 -1
- package/dist/web-ui/assets/{SlideOver-D9BDfm6L.js → SlideOver-DpkL00Bv.js} +1 -1
- package/dist/web-ui/assets/{ViewToggle-DsJBr4VT.js → ViewToggle-BUVZKRCa.js} +1 -1
- package/dist/web-ui/assets/{WorkspaceTabs-C2pSVT1A.js → WorkspaceTabs-CCl6hl8g.js} +3 -3
- package/dist/web-ui/assets/board-DxmFo6ws.js +1 -0
- package/dist/web-ui/assets/createLucideIcon-Bil0PUgZ.js +1 -0
- package/dist/web-ui/assets/{external-link-C51-09OW.js → external-link-DcgSntwH.js} +1 -1
- package/dist/web-ui/assets/harness-BmJjUgLp.js +1 -0
- package/dist/web-ui/assets/index-BJpZUkR8.js +10 -0
- package/dist/web-ui/assets/issues-3eskwBZY.js +1 -0
- package/dist/web-ui/assets/{issues-YCoQHBtW.js → issues-Cy_qfrNn.js} +1 -1
- package/dist/web-ui/assets/{lazy-issue-panels-C8OnZML2.js → lazy-issue-panels-Bd-kqBwK.js} +3 -3
- package/dist/web-ui/assets/{rotate-cw-pZvvI6Ao.js → rotate-cw-C_GlCKHM.js} +1 -1
- package/dist/web-ui/assets/routes-CeuOo-QO.js +1 -0
- package/dist/web-ui/assets/{settings-B_VT_pPR.js → settings-DnpDLygw.js} +1 -1
- package/dist/web-ui/assets/{store-BXWXnGds.js → store-Dr4_yLwW.js} +2 -2
- package/dist/web-ui/assets/{tabs-Db1r1FTh.js → tabs-CRxsaB4E.js} +1 -1
- package/dist/web-ui/assets/task._taskId-C1IbFs2j.js +1 -0
- package/dist/web-ui/assets/terminal-Cqsy8MII.js +1 -0
- package/dist/web-ui/assets/terminal-DLTENDa9.js +1 -0
- package/dist/web-ui/assets/{toast-CfAxitbT.js → toast-CHhAlb5K.js} +1 -1
- package/dist/web-ui/index.html +7 -7
- package/dist/web-ui/pty-server.mjs +9 -0
- package/package.json +2 -1
- package/dist/web-ui/assets/board-rpuYw0Ze.js +0 -1
- package/dist/web-ui/assets/createLucideIcon-BoVlWivB.js +0 -1
- package/dist/web-ui/assets/index-BC9H3mAq.js +0 -10
- package/dist/web-ui/assets/issues-CvEDCZIa.js +0 -1
- package/dist/web-ui/assets/routes-BvOMdZDM.js +0 -1
- package/dist/web-ui/assets/task._taskId-DweEr9w7.js +0 -1
- package/dist/web-ui/assets/terminal-Ckm9XXat.js +0 -1
- package/dist/web-ui/assets/terminal-DV9S9xMa.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{IssuesPage as e}from"./IssuesPage-_Ov-3CBH.js";var t=e;export{t as component};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{c as e}from"./tabs-
|
|
1
|
+
import{c as e}from"./tabs-CRxsaB4E.js";import{t}from"./store-Dr4_yLwW.js";import{i as n,r}from"./terminal-Cqsy8MII.js";import{t as i}from"./settings-DnpDLygw.js";import{w as a}from"./index-BJpZUkR8.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};
|
|
@@ -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-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/IssueIntakePanel-DBUEg3tF.js","assets/tabs-CRxsaB4E.js","assets/terminal-Cqsy8MII.js","assets/RichEditor-DGpLNBUT.js","assets/index-BJpZUkR8.js","assets/store-Dr4_yLwW.js","assets/createLucideIcon-Bil0PUgZ.js","assets/toast-CHhAlb5K.js","assets/settings-DnpDLygw.js","assets/index-C7JcdWbk.css","assets/RichEditor-B4sEOPyN.css","assets/SlideOver-DpkL00Bv.js","assets/issues-Cy_qfrNn.js","assets/text-match-C3BRtNXy.js","assets/IssuePeek-LBdq3maL.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-Dr4_yLwW.js";import{o as s}from"./ConfirmDialog-DELlvuWi.js";import{o as c}from"./issues-Cy_qfrNn.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-DBUEg3tF.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-LBdq3maL.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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-
|
|
1
|
+
import{t as e}from"./createLucideIcon-Bil0PUgZ.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-DndsbGJA.js";var t=e;export{t as component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{S as e,y as t}from"./tabs-
|
|
1
|
+
import{S as e,y as t}from"./tabs-CRxsaB4E.js";import{i as n}from"./terminal-Cqsy8MII.js";var r=e(t(),1);function i(e){let t=e,n=new Set;function i(){for(let e of n)e()}let a={getSnapshot(){return t},subscribe(e){return n.add(e),()=>{n.delete(e)}},useSnapshot(){return(0,r.useSyncExternalStore)(a.subscribe,a.getSnapshot,a.getSnapshot)},replace(e){return t=e,i(),t},update(e){return t=e(t),i(),t}};return a}async function a(){return n.get(`/api/settings`,{label:`load settings`})}async function o(){try{let e=await a();return typeof e.defaultEngine==`string`&&e.defaultEngine.trim()?e.defaultEngine.trim():null}catch{return null}}async function s(e){return n.patch(`/api/settings`,e,{label:`save settings`})}export{i,a as n,s as r,o as t};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/tabs-
|
|
2
|
-
import{S as e,u as t,y as n}from"./tabs-
|
|
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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./terminal-Ckm9XXat.js";var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),c=(e,t)=>{let r={};for(var i in e)n(r,i,{get:e[i],enumerable:!0});return t||n(r,Symbol.toStringTag,{value:`Module`}),r},l=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},u=(e,r,i)=>(i=e==null?{}:t(a(e)),l(r||!e||!e.__esModule?n(i,`default`,{value:e,enumerable:!0}):i,e)),d=s((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.7`})),f=s(((e,t)=>{t.exports=d()})),p=u(f(),1),m={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:`derived`,label:`File`}};function h(e){return m[e].hasPty}function g(e,t){let n=m[e];if(n.titleMode===`count`){let r=t.filter(t=>t.kind===e).length+1;return`${n.label} ${r}`}return n.label}var _=c({addEmptyTab:()=>R,addTab:()=>I,clearSelectedTask:()=>F,clearSplitTab:()=>W,closeTab:()=>V,configureTab:()=>z,consumePendingPrompt:()=>M,ensureEngineTab:()=>L,migrateStoredTab:()=>S,openFilePreviewTab:()=>B,pruneMissingTasks:()=>P,resetLayout:()=>N,selectTask:()=>k,setActiveTab:()=>H,setPendingPrompt:()=>j,setSplitTab:()=>U,useTabsState:()=>G,withTaskTab:()=>x}),v=`kobe-web.tabs`,y={selectedTaskId:null,tabsByTask:{},activeByTask:{},splitByTask:{}};function b(){return{id:O(),kind:`empty`,title:g(`empty`,[])}}function x(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=b();return{...a,tabsByTask:{...e.tabsByTask,[t]:[o]},activeByTask:{...e.activeByTask,[t]:o.id}}}function S(e){let t=e,n=typeof e?.kind==`string`?e.kind:void 0;if(n===`notes`)return b();let r=n===`chat`?`vendor`:n??`vendor`,i=r in m?r:`vendor`;return i===`file`&&typeof t.path!=`string`?b():{...t,kind:i}}function C(){try{let e=localStorage.getItem(v);if(e){let t=JSON.parse(e),n=Object.fromEntries(Object.entries(t.tabsByTask??{}).map(([e,t])=>[e,t.map(S)])),r={selectedTaskId:t.selectedTaskId??null,tabsByTask:n,activeByTask:t.activeByTask??{},splitByTask:t.splitByTask??{}};return r.selectedTaskId?x(r,r.selectedTaskId):r}}catch{}return y}var w=typeof localStorage>`u`?y:C(),T=new Set;function E(e){w=e;try{localStorage.setItem(v,JSON.stringify(w))}catch{}for(let e of T)e()}var D=0;function O(){try{return crypto.randomUUID()}catch{return D+=1,`tab-${Date.now().toString(36)}-${D}`}}function k(e){E(x({...w,selectedTaskId:e},e))}var A=new Map;function j(e,t){A.set(e,t)}function M(e){let t=A.get(e);return t===void 0?null:(A.delete(e),t)}function N(){for(let t of Object.values(w.tabsByTask))for(let n of t)h(n.kind)&&e(n.id);E({...y})}function P(t){let n=Object.keys(w.tabsByTask).filter(e=>!t.has(e)),r=w.selectedTaskId!==null&&!t.has(w.selectedTaskId);if(n.length===0&&!r)return;for(let t of n)for(let n of w.tabsByTask[t]??[])h(n.kind)&&e(n.id);let i={...w.tabsByTask},a={...w.activeByTask},o={...w.splitByTask};for(let e of n)delete i[e],delete a[e],delete o[e];E({selectedTaskId:r?null:w.selectedTaskId,tabsByTask:i,activeByTask:a,splitByTask:o})}function F(){E({...w,selectedTaskId:null})}function I(e){let t=w.tabsByTask[e]??[],n=O(),r={id:n,kind:`vendor`,title:g(`vendor`,t)};return E({...w,tabsByTask:{...w.tabsByTask,[e]:[...t,r]},activeByTask:{...w.activeByTask,[e]:n},splitByTask:w.splitByTask}),n}function L(e){let t=w.tabsByTask[e]??[],n=t.find(e=>e.kind===`vendor`);if(n)return n.id;let r=O(),i={id:r,kind:`vendor`,title:g(`vendor`,t)};return E({...w,tabsByTask:{...w.tabsByTask,[e]:[...t,i]}}),r}function R(e){let t=w.tabsByTask[e]??[],n=b();return E({...w,tabsByTask:{...w.tabsByTask,[e]:[...t,n]},activeByTask:{...w.activeByTask,[e]:n.id},splitByTask:w.splitByTask}),n.id}function z(e,t,n){let r=w.tabsByTask[e]??[],i=r.map(e=>e.id===t?n===`vendor`?{id:t,kind:n,title:g(`vendor`,r)}:n===`transcript`?{id:t,kind:n,title:g(`transcript`,r)}:{id:t,kind:n,title:g(`terminal`,r)}:e);E({...w,tabsByTask:{...w.tabsByTask,[e]:i},activeByTask:{...w.activeByTask,[e]:t},splitByTask:w.splitByTask})}function B(e,t){let n=w.tabsByTask[e]??[],r=n.find(e=>e.kind===`file`&&e.path===t);if(r)return H(e,r.id),r.id;let i=O(),a={id:i,kind:`file`,title:t.split(`/`).at(-1)??t,path:t};return E({...w,tabsByTask:{...w.tabsByTask,[e]:[...n,a]},activeByTask:{...w.activeByTask,[e]:i},splitByTask:w.splitByTask}),i}function V(e,t){let n=w.tabsByTask[e]??[],r=n.findIndex(e=>e.id===t),i=n.filter(e=>e.id!==t);i.length===0&&(i=[b()]);let a=w.activeByTask[e]===t,o={...w.activeByTask},s={...w.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],E({...w,tabsByTask:{...w.tabsByTask,[e]:i},activeByTask:o,splitByTask:s})}function H(e,t){let n={...w.splitByTask},r={...w.activeByTask},i=r[e];n[e]===t&&i&&i!==t?n[e]=i:n[e]===t&&delete n[e],r[e]=t,E({...w,activeByTask:r,splitByTask:n})}function U(e,t){let n=w.tabsByTask[e]??[];if(!n.some(e=>e.id===t))return;let r=w.activeByTask[e],i={...w.activeByTask};if(r===t){let r=n.find(e=>e.id!==t);if(!r)return;i[e]=r.id}E({...w,activeByTask:i,splitByTask:{...w.splitByTask,[e]:t}})}function W(e){let{[e]:t,...n}=w.splitByTask;E({...w,splitByTask:n})}function G(){return(0,p.useSyncExternalStore)(e=>(T.add(e),()=>T.delete(e)),()=>w,()=>w)}export{u as S,G as _,V as a,s as b,L as c,N as d,k as f,_ as g,U as h,W as i,B as l,j as m,I as n,z as o,H as p,F as r,M as s,R as t,P as u,h as v,c as x,f as y};
|
|
1
|
+
import{t as e}from"./terminal-Cqsy8MII.js";var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),c=(e,t)=>{let r={};for(var i in e)n(r,i,{get:e[i],enumerable:!0});return t||n(r,Symbol.toStringTag,{value:`Module`}),r},l=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},u=(e,r,i)=>(i=e==null?{}:t(a(e)),l(r||!e||!e.__esModule?n(i,`default`,{value:e,enumerable:!0}):i,e)),d=s((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.7`})),f=s(((e,t)=>{t.exports=d()})),p=u(f(),1),m={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 h(e){return m[e].hasPty}function g(e,t){let n=m[e];if(n.titleMode===`count`){let r=t.filter(t=>t.kind===e).length+1;return`${n.label} ${r}`}return n.label}var _=c({addEmptyTab:()=>R,addTab:()=>I,clearSelectedTask:()=>F,clearSplitTab:()=>W,closeTab:()=>V,configureTab:()=>z,consumePendingPrompt:()=>M,ensureEngineTab:()=>L,migrateStoredTab:()=>S,openFilePreviewTab:()=>B,pruneMissingTasks:()=>P,resetLayout:()=>N,selectTask:()=>k,setActiveTab:()=>H,setPendingPrompt:()=>j,setSplitTab:()=>U,useTabsState:()=>G,withTaskTab:()=>x}),v=`kobe-web.tabs`,y={selectedTaskId:null,tabsByTask:{},activeByTask:{},splitByTask:{}};function b(){return{id:O(),kind:`empty`,title:g(`empty`,[])}}function x(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=b();return{...a,tabsByTask:{...e.tabsByTask,[t]:[o]},activeByTask:{...e.activeByTask,[t]:o.id}}}function S(e){let t=e,n=typeof e?.kind==`string`?e.kind:void 0;if(n===`notes`)return b();let r=n===`chat`?`vendor`:n??`vendor`,i=r in m?r:`vendor`;return i===`file`&&typeof t.path!=`string`?b():{...t,kind:i}}function C(){try{let e=localStorage.getItem(v);if(e){let t=JSON.parse(e),n=Object.fromEntries(Object.entries(t.tabsByTask??{}).map(([e,t])=>[e,t.map(S)])),r={selectedTaskId:t.selectedTaskId??null,tabsByTask:n,activeByTask:t.activeByTask??{},splitByTask:t.splitByTask??{}};return r.selectedTaskId?x(r,r.selectedTaskId):r}}catch{}return y}var w=typeof localStorage>`u`?y:C(),T=new Set;function E(e){w=e;try{localStorage.setItem(v,JSON.stringify(w))}catch{}for(let e of T)e()}var D=0;function O(){try{return crypto.randomUUID()}catch{return D+=1,`tab-${Date.now().toString(36)}-${D}`}}function k(e){E(x({...w,selectedTaskId:e},e))}var A=new Map;function j(e,t){A.set(e,t)}function M(e){let t=A.get(e);return t===void 0?null:(A.delete(e),t)}function N(){for(let t of Object.values(w.tabsByTask))for(let n of t)h(n.kind)&&e(n.id);E({...y})}function P(t){let n=Object.keys(w.tabsByTask).filter(e=>!t.has(e)),r=w.selectedTaskId!==null&&!t.has(w.selectedTaskId);if(n.length===0&&!r)return;for(let t of n)for(let n of w.tabsByTask[t]??[])h(n.kind)&&e(n.id);let i={...w.tabsByTask},a={...w.activeByTask},o={...w.splitByTask};for(let e of n)delete i[e],delete a[e],delete o[e];E({selectedTaskId:r?null:w.selectedTaskId,tabsByTask:i,activeByTask:a,splitByTask:o})}function F(){E({...w,selectedTaskId:null})}function I(e){let t=w.tabsByTask[e]??[],n=O(),r={id:n,kind:`vendor`,title:g(`vendor`,t)};return E({...w,tabsByTask:{...w.tabsByTask,[e]:[...t,r]},activeByTask:{...w.activeByTask,[e]:n},splitByTask:w.splitByTask}),n}function L(e){let t=w.tabsByTask[e]??[],n=t.find(e=>e.kind===`vendor`);if(n)return n.id;let r=O(),i={id:r,kind:`vendor`,title:g(`vendor`,t)};return E({...w,tabsByTask:{...w.tabsByTask,[e]:[...t,i]}}),r}function R(e){let t=w.tabsByTask[e]??[],n=b();return E({...w,tabsByTask:{...w.tabsByTask,[e]:[...t,n]},activeByTask:{...w.activeByTask,[e]:n.id},splitByTask:w.splitByTask}),n.id}function z(e,t,n){let r=w.tabsByTask[e]??[],i=r.map(e=>e.id===t?n===`vendor`?{id:t,kind:n,title:g(`vendor`,r)}:n===`transcript`?{id:t,kind:n,title:g(`transcript`,r)}:{id:t,kind:n,title:g(`terminal`,r)}:e);E({...w,tabsByTask:{...w.tabsByTask,[e]:i},activeByTask:{...w.activeByTask,[e]:t},splitByTask:w.splitByTask})}function B(e,t){let n=w.tabsByTask[e]??[],r=n.find(e=>e.kind===`file`&&e.path===t);if(r)return H(e,r.id),r.id;let i=O(),a={id:i,kind:`file`,title:t.split(`/`).at(-1)??t,path:t};return E({...w,tabsByTask:{...w.tabsByTask,[e]:[...n,a]},activeByTask:{...w.activeByTask,[e]:i},splitByTask:w.splitByTask}),i}function V(e,t){let n=w.tabsByTask[e]??[],r=n.findIndex(e=>e.id===t),i=n.filter(e=>e.id!==t);i.length===0&&(i=[b()]);let a=w.activeByTask[e]===t,o={...w.activeByTask},s={...w.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],E({...w,tabsByTask:{...w.tabsByTask,[e]:i},activeByTask:o,splitByTask:s})}function H(e,t){let n={...w.splitByTask},r={...w.activeByTask},i=r[e];n[e]===t&&i&&i!==t?n[e]=i:n[e]===t&&delete n[e],r[e]=t,E({...w,activeByTask:r,splitByTask:n})}function U(e,t){let n=w.tabsByTask[e]??[];if(!n.some(e=>e.id===t))return;let r=w.activeByTask[e],i={...w.activeByTask};if(r===t){let r=n.find(e=>e.id!==t);if(!r)return;i[e]=r.id}E({...w,activeByTask:i,splitByTask:{...w.splitByTask,[e]:t}})}function W(e){let{[e]:t,...n}=w.splitByTask;E({...w,splitByTask:n})}function G(){return(0,p.useSyncExternalStore)(e=>(T.add(e),()=>T.delete(e)),()=>w,()=>w)}export{u as S,G as _,V as a,s as b,L as c,N as d,k as f,_ as g,U as h,W as i,B as l,j as m,I as n,z as o,H as p,F as r,M as s,R as t,P as u,h as v,c as x,f as y};
|
|
@@ -0,0 +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-BJpZUkR8.js";import{AppShell as s}from"./AppShell-DndsbGJA.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=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 t(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 n(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 r(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 i(i,a,o={}){let s=t(i,o.query),c=await fetch(s,a),l=await n(c),u=l.json,d=u&&typeof u==`object`&&!Array.isArray(u)&&typeof u.error==`string`&&u.error.length>0;if(!c.ok||d){let{detail:t,name:n}=r(l);throw new e({url:s,status:c.status,label:o.label??s,detail:t,body:u,name:n})}return u??{}}function a(e,t){return{method:e,headers:{"content-type":`application/json`},...t===void 0?{}:{body:JSON.stringify(t)}}}var o={get(e,t){return i(e,{method:`GET`},t)},post(e,t,n){return i(e,a(`POST`,t),n)},put(e,t,n){return i(e,a(`PUT`,t),n)},patch(e,t,n){return i(e,a(`PATCH`,t),n)},form(e,t,n){return i(e,{method:`POST`,body:t},n)},async getOr(e,t,n){try{return await i(e,{method:`GET`},n)}catch{return t}}};function s(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 c(e,t,n,r,i){let a=new URLSearchParams({tab:e,taskId:t,mode:n,cols:String(r),rows:String(i)});return`${s(`ws`)}/pty?${a.toString()}`}async function l(e){try{await o.post(`${s(`http`)}/pty/close`,{tab:e},{label:`close PTY tab`})}catch{}}async function u(t,n,r){try{let e=await o.post(`${s(`http`)}/pty/send`,{tab:t,taskId:n,text:r},{label:`send PTY text`});if(!e.sent)throw Error(`send failed`);return{spawned:e.spawned===!0}}catch(t){throw t instanceof e&&t.status===404&&!t.detail?Error("the PTY server doesn't know /pty/send — restart `kobe web` (the sidecar doesn't hot-reload)"):t}}export{o as i,c as n,u as r,l as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,r as t,t as n}from"./terminal-Cqsy8MII.js";export{n as closePtyTab,e as ptyUrl,t as sendPtyText};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{S as e,y as t}from"./tabs-
|
|
1
|
+
import{S as e,y as t}from"./tabs-CRxsaB4E.js";import{i as n}from"./settings-DnpDLygw.js";var r=e(t(),1),i=r.use,a=typeof window<`u`?r.useLayoutEffect:r.useEffect;function o(e){let t=r.useRef({value:e,prev:null}),n=t.current.value;return e!==n&&(t.current={value:e,prev:n}),t.current.prev}function s(e,t,n={},i={}){r.useEffect(()=>{if(!e.current||i.disabled||typeof IntersectionObserver!=`function`)return;let r=new IntersectionObserver(([e])=>{t(e)},n);return r.observe(e.current),()=>{r.disconnect()}},[t,n,i.disabled,e])}function c(e){let t=r.useRef(null);return r.useImperativeHandle(e,()=>t.current,[]),t}var l=r.createContext(null);function u(e){return r.useContext(l)}function d(e){let t=u();return r.useCallback(n=>t.navigate({...n,from:n.from??e?.from}),[e?.from,t])}var f=5e3,p=n([]),m=0;function h(e,t){m+=1;let n={id:m,kind:e,message:t};p.update(e=>[...e.slice(-3),n]),window.setTimeout(()=>g(n.id),f)}function g(e){let t=p.getSnapshot();t.some(t=>t.id===e)&&p.replace(t.filter(t=>t.id!==e))}function _(e,t){return`${e}: ${t instanceof Error?t.message:String(t)}`}function v(e,t){h(`error`,_(e,t))}function y(){return p.useSnapshot()}export{d as a,i as c,a as d,o as f,y as i,c as l,h as n,u as o,v as r,l as s,g as t,s as u};
|
package/dist/web-ui/index.html
CHANGED
|
@@ -5,13 +5,13 @@
|
|
|
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-
|
|
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/store-
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/settings-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/toast-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-BJpZUkR8.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/terminal-Cqsy8MII.js">
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/tabs-CRxsaB4E.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/createLucideIcon-Bil0PUgZ.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/store-Dr4_yLwW.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/settings-DnpDLygw.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/toast-CHhAlb5K.js">
|
|
15
15
|
<link rel="stylesheet" crossorigin href="/assets/index-C7JcdWbk.css">
|
|
16
16
|
</head>
|
|
17
17
|
<body>
|
|
@@ -39,6 +39,15 @@ function ptyEnv() {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
async function fetchSpec(taskId, mode) {
|
|
42
|
+
// e2e/dev harness override: run an arbitrary TUI (dev:mock / dev:sandbox) in
|
|
43
|
+
// the PTY instead of resolving a task's engine via the daemon — so a Playwright
|
|
44
|
+
// test can drive the real TUI through the web terminal with no daemon or task.
|
|
45
|
+
if (process.env.KOBE_PTY_DEV_COMMAND) {
|
|
46
|
+
return {
|
|
47
|
+
cwd: process.env.KOBE_PTY_DEV_CWD ?? process.cwd(),
|
|
48
|
+
command: ["/bin/sh", "-lc", process.env.KOBE_PTY_DEV_COMMAND],
|
|
49
|
+
}
|
|
50
|
+
}
|
|
42
51
|
const path = mode === "shell" ? "/api/terminal-spec" : "/api/engine-spec"
|
|
43
52
|
const res = await fetch(`http://localhost:${DAEMON_WEB_PORT}${path}?taskId=${encodeURIComponent(taskId)}`)
|
|
44
53
|
const json = await res.json()
|
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.59",
|
|
5
5
|
"description": "TUI orchestrator for Claude Code (codename)",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"packageManager": "bun@1.3.13",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
27
27
|
"dev": "env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts",
|
|
28
|
+
"dev:mock": "env KOBE_DEV=1 bun --preload @opentui/solid/preload --conditions=browser ./src/tui/mock/host.tsx",
|
|
28
29
|
"dev:sandbox": "mkdir -p .dev-sandbox/home && env KOBE_DEV=1 KOBE_HOME_DIR=$PWD/.dev-sandbox/home KOBE_TMUX_SOCKET=kobe-sandbox bun --preload @opentui/solid/preload --conditions=browser ./src/cli/index.ts",
|
|
29
30
|
"dev:sandbox:reset": "env KOBE_TMUX_SOCKET=kobe-sandbox bun ./src/cli/index.ts kill-sessions",
|
|
30
31
|
"dev:version": "bash ../../scripts/dev-version.sh",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Board as e}from"./Board-eEGLQBF4.js";var t=e;export{t as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{S as e,b as t,y as n}from"./tabs-Db1r1FTh.js";var r=t((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})),i=t(((e,t)=>{t.exports=r()})),a=e(n(),1),o=`kobe-web.notify`,s={engine:`kobe-web.notify.engine`},c=null,l=f(),u={engine:p(`engine`)},d=new Set;function f(){try{return localStorage.getItem(o)===`1`}catch{return!1}}function p(e){try{return localStorage.getItem(s[e])!==`0`}catch{return!0}}function m(){for(let e of d)e()}function h(e){return e===`waiting_permission`||e===`error`}function g(e){return e.enabled&&e.permission===`granted`&&e.hidden&&e.categoryEnabled}function _(e){return g({enabled:e.enabled,permission:e.permission,hidden:e.hidden,categoryEnabled:e.engineEnabled})?!h(e.prev)&&h(e.next):!1}function v(e){c=e}function y(){return typeof Notification>`u`?`denied`:Notification.permission}function b(){return{supported:typeof Notification<`u`,permission:y(),enabled:l&&y()===`granted`,categories:u}}var x=b();function S(){let e=b();return(e.supported!==x.supported||e.permission!==x.permission||e.enabled!==x.enabled||e.categories!==x.categories)&&(x=e),x}async function C(e){if(e&&typeof Notification<`u`&&Notification.permission==="default")try{await Notification.requestPermission()}catch{}l=e;try{localStorage.setItem(o,e?`1`:`0`)}catch{}m()}function w(){return(0,a.useSyncExternalStore)(e=>(d.add(e),()=>d.delete(e)),S,S)}function T(e,t,n,r){let i=typeof document>`u`||document.visibilityState!==`visible`;_({prev:n,next:r,enabled:l,permission:y(),hidden:i,engineEnabled:u.engine})&&E(e,t,`Task ${r===`error`?`errored`:`needs your input`}.`,`kobe-task-${e}`)}function E(e,t,n,r){try{let i=new Notification(`kobe: ${t}`,{body:n,tag:r});i.onclick=()=>{window.focus(),c?.(e),i.close()}}catch{}}var D=`claude`,O=`kobe-web.theme`,k=null,A=null,j=F(),M=null,N=!1,P=new Set;function F(){try{return localStorage.getItem(O)}catch{return null}}function I(){for(let e of P)e()}function L(e,t,n=D){return e??t??n}function R(){return L(j,M)}function z(){N||typeof window>`u`||(N=!0,fetch(`/api/themes`).then(async e=>{if(!e.ok)return;let t=await e.json();t.themes&&(k=t.themes,B(),I())}).catch(()=>{}))}function B(){if(z(),!k)return;let e=R();if(A===e)return;let t=k[e]??k[D];if(!t)return;A=e;let n=document.documentElement;for(let[e,r]of Object.entries(t))n.style.setProperty(`--color-${e}`,r);I()}function V(e){M=e,B()}function H(e){j=e;try{localStorage.setItem(O,e)}catch{}B(),I()}function U(){j=null;try{localStorage.removeItem(O)}catch{}A=null,B(),I()}function W(){return{names:k?Object.keys(k):[],palettes:k??{},active:R(),overridden:j!==null}}var G=W();function K(){let e=W();return(e.active!==G.active||e.overridden!==G.overridden||e.names.join(`\0`)!==G.names.join(`\0`))&&(G=e),G}function q(){return z(),(0,a.useSyncExternalStore)(e=>(P.add(e),()=>P.delete(e)),K,K)}B();function J(){return k?k[R()]??null:null}function Y(){let e=J();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 X=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),Z=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),Q=e=>{let t=Z(e);return t.charAt(0).toUpperCase()+t.slice(1)},$=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),ee=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0},te={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`},ne=(0,a.forwardRef)(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i=``,children:o,iconNode:s,...c},l)=>(0,a.createElement)(`svg`,{ref:l,...te,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:$(`lucide`,i),...!o&&!ee(c)&&{"aria-hidden":`true`},...c},[...s.map(([e,t])=>(0,a.createElement)(e,t)),...Array.isArray(o)?o:[o]])),re=(e,t)=>{let n=(0,a.forwardRef)(({className:n,...r},i)=>(0,a.createElement)(ne,{ref:i,iconNode:t,className:$(`lucide-${X(Q(e))}`,`lucide-${e}`,n),...r}));return n.displayName=Q(e),n};export{q as a,C as c,i as d,H as i,v as l,V as n,Y as o,U as r,T as s,re as t,w as u};
|