agent-relay-server 0.114.0 → 0.115.0
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/docs/openapi.json +39 -1
- package/package.json +3 -3
- package/public/assets/MessageBubble-Dy37JuVw.js +4 -0
- package/public/assets/{MessageBubble-CxqPFLGP.js.map → MessageBubble-Dy37JuVw.js.map} +1 -1
- package/public/assets/PlanGraphPanel-C17_n4Ff.js +2 -0
- package/public/assets/PlanGraphPanel-C17_n4Ff.js.map +1 -0
- package/public/assets/{activity-Dw15HMdi.js → activity-G-s2N4eU.js} +2 -2
- package/public/assets/{activity-Dw15HMdi.js.map → activity-G-s2N4eU.js.map} +1 -1
- package/public/assets/{agent-profiles-DNtXbS77.js → agent-profiles-v4CcpJWT.js} +2 -2
- package/public/assets/{agent-profiles-DNtXbS77.js.map → agent-profiles-v4CcpJWT.js.map} +1 -1
- package/public/assets/agents-CuEoaCLs.js +2 -0
- package/public/assets/{agents-DOwnLE42.js.map → agents-CuEoaCLs.js.map} +1 -1
- package/public/assets/{analytics-CRwxJWuV.js → analytics-Dvg0J33b.js} +3 -3
- package/public/assets/{analytics-CRwxJWuV.js.map → analytics-Dvg0J33b.js.map} +1 -1
- package/public/assets/{automation-BQk8XQEj.js → automation-wXSbBEei.js} +2 -2
- package/public/assets/{automation-BQk8XQEj.js.map → automation-wXSbBEei.js.map} +1 -1
- package/public/assets/{badge-oaCc6hVH.js → badge-BhUZ1cAb.js} +2 -2
- package/public/assets/{badge-oaCc6hVH.js.map → badge-BhUZ1cAb.js.map} +1 -1
- package/public/assets/branch-state-badge-YzkNCHyZ.js +2 -0
- package/public/assets/{branch-state-badge-JDaHO2fG.js.map → branch-state-badge-YzkNCHyZ.js.map} +1 -1
- package/public/assets/{button-Cx0NiToX.js → button-C-V4oij1.js} +2 -2
- package/public/assets/{button-Cx0NiToX.js.map → button-C-V4oij1.js.map} +1 -1
- package/public/assets/{card-DkHdS68K.js → card-DAkf5Kzw.js} +2 -2
- package/public/assets/{card-DkHdS68K.js.map → card-DAkf5Kzw.js.map} +1 -1
- package/public/assets/{channels-wQha9YA6.js → channels-Vl9YHoGK.js} +2 -2
- package/public/assets/{channels-wQha9YA6.js.map → channels-Vl9YHoGK.js.map} +1 -1
- package/public/assets/chat-yiXwg4kh.js +2 -0
- package/public/assets/{chat-BTmgzO_g.js.map → chat-yiXwg4kh.js.map} +1 -1
- package/public/assets/{connectors-BF-XDm0s.js → connectors-C33KsouZ.js} +2 -2
- package/public/assets/{connectors-BF-XDm0s.js.map → connectors-C33KsouZ.js.map} +1 -1
- package/public/assets/{copy-button-CsCBPQzj.js → copy-button-BStzXgtd.js} +2 -2
- package/public/assets/{copy-button-CsCBPQzj.js.map → copy-button-BStzXgtd.js.map} +1 -1
- package/public/assets/{dist-BJnh7VkB.js → dist-CBMWGhWc.js} +2 -2
- package/public/assets/{dist-BJnh7VkB.js.map → dist-CBMWGhWc.js.map} +1 -1
- package/public/assets/{dist-Pak9TL_I.js → dist-CDZZxxJq.js} +2 -2
- package/public/assets/{dist-Pak9TL_I.js.map → dist-CDZZxxJq.js.map} +1 -1
- package/public/assets/{dist-AbnkNPcD.js → dist-CQ0Z-TDi.js} +2 -2
- package/public/assets/{dist-AbnkNPcD.js.map → dist-CQ0Z-TDi.js.map} +1 -1
- package/public/assets/{dist-REUlCFee.js → dist-ChDX_t12.js} +2 -2
- package/public/assets/{dist-REUlCFee.js.map → dist-ChDX_t12.js.map} +1 -1
- package/public/assets/{dist-DLOrqIs-.js → dist-CmFeEXMe.js} +2 -2
- package/public/assets/{dist-DLOrqIs-.js.map → dist-CmFeEXMe.js.map} +1 -1
- package/public/assets/{dist-DBti5--U.js → dist-Cs8X0P1d.js} +2 -2
- package/public/assets/{dist-DBti5--U.js.map → dist-Cs8X0P1d.js.map} +1 -1
- package/public/assets/dist-D2jvo5oA.js +2 -0
- package/public/assets/{dist-QY_EIkcd.js.map → dist-D2jvo5oA.js.map} +1 -1
- package/public/assets/{dist-1g1lCjVb.js → dist-DV83j9tm.js} +2 -2
- package/public/assets/{dist-1g1lCjVb.js.map → dist-DV83j9tm.js.map} +1 -1
- package/public/assets/{dist-DJpDTmGg.js → dist-DyNJNwpi.js} +2 -2
- package/public/assets/{dist-DJpDTmGg.js.map → dist-DyNJNwpi.js.map} +1 -1
- package/public/assets/dist-mm7c7nBt.js +2 -0
- package/public/assets/{dist-DjJMNrsj.js.map → dist-mm7c7nBt.js.map} +1 -1
- package/public/assets/dist-y03IwOrd.js +2 -0
- package/public/assets/{dist-C7VlX6hz.js.map → dist-y03IwOrd.js.map} +1 -1
- package/public/assets/{es2015-GhJvD7eR.js → es2015-VnZ2kVIz.js} +2 -2
- package/public/assets/{es2015-GhJvD7eR.js.map → es2015-VnZ2kVIz.js.map} +1 -1
- package/public/assets/{formatted-body-impl-2ZWd80_S.js → formatted-body-impl-CfnhWZAX.js} +2 -2
- package/public/assets/{formatted-body-impl-2ZWd80_S.js.map → formatted-body-impl-CfnhWZAX.js.map} +1 -1
- package/public/assets/index-4XRZ-n_A.js +23 -0
- package/public/assets/index-4XRZ-n_A.js.map +1 -0
- package/public/assets/{input-CPfrBmej.js → input-CtLT7WXi.js} +2 -2
- package/public/assets/{input-CPfrBmej.js.map → input-CtLT7WXi.js.map} +1 -1
- package/public/assets/{insights-DwS0svZy.js → insights-C5Ft13cw.js} +2 -2
- package/public/assets/{insights-DwS0svZy.js.map → insights-C5Ft13cw.js.map} +1 -1
- package/public/assets/{integrations-De1_UHQE.js → integrations-DR3pboEG.js} +2 -2
- package/public/assets/{integrations-De1_UHQE.js.map → integrations-DR3pboEG.js.map} +1 -1
- package/public/assets/{lib-Bi-xeh6t.js → lib-BLoevhQO.js} +3 -3
- package/public/assets/{lib-Bi-xeh6t.js.map → lib-BLoevhQO.js.map} +1 -1
- package/public/assets/lucide-react-Dc3ZwCBi.js +9 -0
- package/public/assets/{lucide-react-De5edQpl.js.map → lucide-react-Dc3ZwCBi.js.map} +1 -1
- package/public/assets/{maintenance-B5qrcsDt.js → maintenance-Ddl6-McO.js} +2 -2
- package/public/assets/{maintenance-B5qrcsDt.js.map → maintenance-Ddl6-McO.js.map} +1 -1
- package/public/assets/{managed-agents-BGMWAUfG.js → managed-agents-pLThsagU.js} +4 -4
- package/public/assets/{managed-agents-BGMWAUfG.js.map → managed-agents-pLThsagU.js.map} +1 -1
- package/public/assets/{markdown-preview-impl-DsZ4Ek80.js → markdown-preview-impl-CiENso5E.js} +2 -2
- package/public/assets/{markdown-preview-impl-DsZ4Ek80.js.map → markdown-preview-impl-CiENso5E.js.map} +1 -1
- package/public/assets/memory-CSzdP2o2.js +2 -0
- package/public/assets/{memory-CouN7Y4r.js.map → memory-CSzdP2o2.js.map} +1 -1
- package/public/assets/{messages-D9mYFxhU.js → messages-1ton_JT5.js} +2 -2
- package/public/assets/{messages-D9mYFxhU.js.map → messages-1ton_JT5.js.map} +1 -1
- package/public/assets/{orchestrators-B_SD_mhI.js → orchestrators-C2kC07Qm.js} +2 -2
- package/public/assets/{orchestrators-B_SD_mhI.js.map → orchestrators-C2kC07Qm.js.map} +1 -1
- package/public/assets/{overview-C8hVsCqz.js → overview-CXc2vQRQ.js} +2 -2
- package/public/assets/{overview-C8hVsCqz.js.map → overview-CXc2vQRQ.js.map} +1 -1
- package/public/assets/{pairs-B6vWKXnX.js → pairs-DLfFKNEf.js} +2 -2
- package/public/assets/{pairs-B6vWKXnX.js.map → pairs-DLfFKNEf.js.map} +1 -1
- package/public/assets/{projects-C2gHOdEY.js → projects-TM20JuNI.js} +2 -2
- package/public/assets/{projects-C2gHOdEY.js.map → projects-TM20JuNI.js.map} +1 -1
- package/public/assets/{prompt-settings-D4SXk0af.js → prompt-settings-DWYbD9TA.js} +2 -2
- package/public/assets/{prompt-settings-D4SXk0af.js.map → prompt-settings-DWYbD9TA.js.map} +1 -1
- package/public/assets/{react-dom-FNIdlE_z.js → react-dom-cLkVFBsS.js} +2 -2
- package/public/assets/{react-dom-FNIdlE_z.js.map → react-dom-cLkVFBsS.js.map} +1 -1
- package/public/assets/{registry-CMPhWcx3.js → registry-BWRVKBhU.js} +2 -2
- package/public/assets/{registry-CMPhWcx3.js.map → registry-BWRVKBhU.js.map} +1 -1
- package/public/assets/{security-C1fE4DVg.js → security-DcNNqoA4.js} +2 -2
- package/public/assets/{security-C1fE4DVg.js.map → security-DcNNqoA4.js.map} +1 -1
- package/public/assets/{select-D9j1MBVi.js → select-DkpcyiTY.js} +2 -2
- package/public/assets/{select-D9j1MBVi.js.map → select-DkpcyiTY.js.map} +1 -1
- package/public/assets/settings-C9-w25pF.js +6 -0
- package/public/assets/{settings-CduSwUr9.js.map → settings-C9-w25pF.js.map} +1 -1
- package/public/assets/{store-Bk6Lku_S.js → store-BZ2N51To.js} +5 -5
- package/public/assets/store-BZ2N51To.js.map +1 -0
- package/public/assets/{tasks-Bi456f7f.js → tasks-DuH_JQJM.js} +2 -2
- package/public/assets/{tasks-Bi456f7f.js.map → tasks-DuH_JQJM.js.map} +1 -1
- package/public/assets/{teams-ZEXvcAz_.js → teams-CQZ6a8A5.js} +2 -2
- package/public/assets/{teams-ZEXvcAz_.js.map → teams-CQZ6a8A5.js.map} +1 -1
- package/public/assets/{terminal-viewer-impl-tktfofs3.js → terminal-viewer-impl-B1A49Vs2.js} +3 -3
- package/public/assets/{terminal-viewer-impl-tktfofs3.js.map → terminal-viewer-impl-B1A49Vs2.js.map} +1 -1
- package/public/assets/types-DSwhOFcJ.js.map +1 -1
- package/public/assets/{use-keyboard-viewport-wzkGlTqU.js → use-keyboard-viewport-DucYmqmP.js} +2 -2
- package/public/assets/{use-keyboard-viewport-wzkGlTqU.js.map → use-keyboard-viewport-DucYmqmP.js.map} +1 -1
- package/public/assets/{user-avatar-_Dq16BWV.js → user-avatar-C3eL_il0.js} +2 -2
- package/public/assets/{user-avatar-_Dq16BWV.js.map → user-avatar-C3eL_il0.js.map} +1 -1
- package/public/assets/{work-queue-Bk8g7t9K.js → work-queue-IfxOcGe5.js} +2 -2
- package/public/assets/{work-queue-Bk8g7t9K.js.map → work-queue-IfxOcGe5.js.map} +1 -1
- package/public/assets/workspaces-gPEVu-L5.js +3 -0
- package/public/assets/{workspaces-D2bYW3zl.js.map → workspaces-gPEVu-L5.js.map} +1 -1
- package/public/index.html +20 -20
- package/runner/plugins/claude/.claude-plugin/plugin.json +1 -1
- package/scripts/orchestrator-spawn-smoke.ts +30 -13
- package/src/config-store.ts +15 -3
- package/src/db/migrations.ts +2 -2
- package/src/db/plans.ts +11 -0
- package/src/db/schema.ts +1 -1
- package/src/mcp/index.ts +1 -1
- package/src/mcp-plan-tools.ts +3 -0
- package/src/routes/index.ts +2 -1
- package/src/routes/plans.ts +12 -2
- package/src/services/plan-graph.ts +8 -1
- package/public/assets/MessageBubble-CxqPFLGP.js +0 -4
- package/public/assets/PlanGraphPanel-gQ_lb6zP.js +0 -2
- package/public/assets/PlanGraphPanel-gQ_lb6zP.js.map +0 -1
- package/public/assets/agents-DOwnLE42.js +0 -2
- package/public/assets/branch-state-badge-JDaHO2fG.js +0 -2
- package/public/assets/chat-BTmgzO_g.js +0 -2
- package/public/assets/dist-C7VlX6hz.js +0 -2
- package/public/assets/dist-DjJMNrsj.js +0 -2
- package/public/assets/dist-QY_EIkcd.js +0 -2
- package/public/assets/index-D4mb_LKw.js +0 -23
- package/public/assets/index-D4mb_LKw.js.map +0 -1
- package/public/assets/lucide-react-De5edQpl.js +0 -9
- package/public/assets/memory-CouN7Y4r.js +0 -2
- package/public/assets/settings-CduSwUr9.js +0 -6
- package/public/assets/store-Bk6Lku_S.js.map +0 -1
- package/public/assets/workspaces-D2bYW3zl.js +0 -3
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./chunk-CilyBKbf.js";import{Jn as t,Jt as n,Kt as r,L as i,Mt as a,Rt as o,Sn as s,Tn as c,Un as l,Vt as u,Wt as d,Z as f,a as p,cn as m,er as h,g,h as _,jt as v,kt as y,pr as b,tr as x,wn as ee}from"./lucide-react-De5edQpl.js";import{f as S,t as C}from"./store-Bk6Lku_S.js";import{l as w}from"./types-DSwhOFcJ.js";import{K as T,d as te}from"./display-_5kFrHJh.js";import{t as E}from"./badge-oaCc6hVH.js";import{t as D}from"./button-Cx0NiToX.js";import{t as O}from"./copy-button-CsCBPQzj.js";import{d as k}from"./index-D4mb_LKw.js";import{o as A,r as j,s as M,t as N}from"./card-DkHdS68K.js";var P=e(b(),1),F=h(),I=new Set([`active`,`ready`,`conflict`,`review_requested`,`merge_planned`,`cleanup_requested`]),L=new Set(w),R=`__all__`,z=`__unassigned__`;function B(e,t){let n=new Map;for(let t of e){let e=t.repoRoot||t.sourceCwd||`unknown repo`;n.set(e,[...n.get(e)||[],t])}return[...n.entries()].map(([e,n])=>({repoRoot:e,workspaces:n.sort(t)})).sort((e,t)=>e.repoRoot.localeCompare(t.repoRoot))}function V(e,t){let n=new Map;for(let t of e){let e=t.projectSlug||t.repoRoot||t.sourceCwd||`unassigned`;n.set(e,[...n.get(e)||[],t])}return[...n.entries()].map(([e,n])=>{let r=n[0],i=!r.projectId;return{key:e,title:i?r.repoRoot||r.sourceCwd||`unknown repo`:r.projectTitle||r.projectSlug||r.repoRoot,...r.projectId?{projectId:r.projectId}:{},...r.projectSlug?{projectSlug:r.projectSlug}:{},unassigned:i,repoGroups:B(n,t)}}).sort((e,t)=>{let n=e.repoGroups.some(e=>e.workspaces.some(e=>I.has(e.status)));return n===t.repoGroups.some(e=>e.workspaces.some(e=>I.has(e.status)))?e.title.localeCompare(t.title):n?-1:1})}function H(e,t,n){let r=t===`all`?e:t===`cleaned`?e.filter(e=>L.has(e.status)):e.filter(e=>!L.has(e.status));return n===`__all__`?r:n===`__unassigned__`?r.filter(e=>!e.projectId):r.filter(e=>e.projectId===n)}function U({group:e,renderWorkspaceRow:t}){let n=e.repoGroups.flatMap(e=>e.workspaces),r=n.filter(e=>I.has(e.status)).length,i=n.filter(e=>e.status===`ready`||e.status===`review_requested`||e.status===`merge_planned`).length,a=n.filter(e=>e.status===`conflict`).length,s=e.repoGroups.length>1;return(0,F.jsxs)(N,{children:[(0,F.jsx)(A,{className:`px-4 py-3`,children:(0,F.jsx)(`div`,{className:`flex min-w-0 items-start gap-3`,children:(0,F.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,F.jsx)(M,{className:`truncate text-sm font-medium`,title:e.title,children:e.title}),e.unassigned&&(0,F.jsx)(E,{variant:`outline`,className:`text-[10px]`,children:`Unassigned`})]}),(0,F.jsxs)(`div`,{className:`mt-1 flex flex-wrap gap-1.5`,children:[(0,F.jsxs)(E,{variant:`outline`,className:`text-[10px]`,children:[n.length,` total`]}),(0,F.jsxs)(E,{variant:`outline`,className:`text-[10px]`,children:[r,` live`]}),i>0&&(0,F.jsxs)(E,{variant:`outline`,className:`border-emerald-500/20 text-emerald-400 text-[10px]`,children:[i,` merge signal`]}),a>0&&(0,F.jsxs)(E,{variant:`outline`,className:`border-red-500/20 text-red-400 text-[10px]`,children:[a,` conflict`]})]})]})})}),(0,F.jsx)(j,{className:`p-0`,children:e.repoGroups.map(e=>(0,F.jsxs)(`div`,{className:`border-t border-border first:border-t-0`,children:[s&&(0,F.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-dashed border-border/80 px-3 py-2`,children:[(0,F.jsx)(o,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,F.jsx)(`span`,{className:`truncate font-mono text-[11px] text-muted-foreground`,title:e.repoRoot,children:e.repoRoot})]}),e.workspaces.map(e=>t(e))]},e.repoRoot))})]})}function W(e){let t=e.split(`/`).filter(Boolean);return t.length<=3?e||`-`:`/${t.slice(-3).join(`/`)}`}function G(){let e=C(e=>e.workspaceOrphans),t=C(e=>e.fetchWorkspaceOrphans),n=C(e=>e.reclaimWorkspaceOrphan);return(0,P.useEffect)(()=>{t()},[t]),e.length?(0,F.jsxs)(N,{className:`border-amber-500/30`,children:[(0,F.jsxs)(A,{className:`px-4 py-3`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(f,{className:`h-4 w-4 text-amber-400`}),(0,F.jsx)(M,{className:`text-sm font-medium`,children:`Orphaned worktrees`}),(0,F.jsx)(E,{variant:`outline`,className:`border-amber-500/30 text-amber-400 text-[10px]`,children:e.length}),(0,F.jsx)(D,{size:`icon-sm`,variant:`ghost`,className:`ml-auto h-6 w-6`,title:`Rescan`,onClick:()=>void t(),children:(0,F.jsx)(i,{className:`h-3.5 w-3.5`})})]}),(0,F.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:`Agent worktrees on disk with no live workspace. Reclaim removes them from the host.`})]}),(0,F.jsx)(j,{className:`p-0`,children:e.map(e=>(0,F.jsxs)(`div`,{className:`flex items-center gap-3 border-t border-border px-4 py-2 text-xs`,children:[(0,F.jsx)(o,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,F.jsx)(`span`,{className:`truncate font-medium`,title:e.branch,children:e.branch||`(detached)`}),(0,F.jsx)(`span`,{className:`truncate font-mono text-muted-foreground`,title:e.worktreePath,children:W(e.worktreePath)}),e.hadTerminalRow&&(0,F.jsx)(E,{variant:`outline`,className:`text-[10px]`,children:`cleanup failed`}),(0,F.jsxs)(D,{size:`sm`,variant:`outline`,className:`ml-auto h-7 text-xs`,onClick:()=>void n(e),children:[(0,F.jsx)(f,{className:`mr-1 h-3.5 w-3.5`}),`Reclaim`]})]},e.worktreePath))})]}):null}function K(e,t,n){if(n){let t=e.find(e=>e.branch&&e.branch===n);if(t)return t}if(!t)return null;let r=e.filter(e=>e.ownerAgentId===t);return r.length===0?null:r.length===1?r[0]:null}var q=new Set([`active`,`ready`,`conflict`,`review_requested`,`merge_planned`]),J=new Set([`active`,`ready`,`review_requested`,`merge_planned`,`conflict`]),Y={active:`bg-blue-500/10 text-blue-400 border-blue-500/20`,ready:`bg-emerald-500/10 text-emerald-400 border-emerald-500/20`,conflict:`bg-red-500/10 text-red-400 border-red-500/20`,review_requested:`bg-yellow-500/10 text-yellow-400 border-yellow-500/20`,merge_planned:`bg-indigo-500/10 text-indigo-400 border-indigo-500/20`,merged:`bg-violet-500/10 text-violet-400 border-violet-500/20`,abandoned:`bg-zinc-500/10 text-zinc-400 border-zinc-500/20`,cleanup_requested:`bg-orange-500/10 text-orange-400 border-orange-500/20`,cleaned:`bg-zinc-500/10 text-zinc-400 border-zinc-500/20`},X={active:`active`,ready:`ready`,conflict:`conflict`,review_requested:`review`,merge_planned:`merge planned`,merged:`merged`,abandoned:`abandoned`,cleanup_requested:`cleanup`,cleaned:`cleaned`},Z={conflict:0,ready:1,review_requested:2,merge_planned:3,active:4,cleanup_requested:5,merged:6,abandoned:7,cleaned:8};function Q(e,t){return e?te(e):t||`-`}function ne(e){let t=e.split(`/`).filter(Boolean);return t.length<=3?e||`-`:`/${t.slice(-3).join(`/`)}`}function re(e){return Y[e]||`bg-zinc-500/10 text-zinc-400 border-zinc-500/20`}function ie(e,t){let n=(Z[e.status]??99)-(Z[t.status]??99);return n===0?Number(t.updatedAt||0)-Number(e.updatedAt||0):n}function ae({workspace:e,expanded:t,onToggleDetails:r}){let i=C(e=>e.workspaceAction),a=C(e=>e.purgeWorkspace),l=C(e=>e.fetchWorkspaceMergePreview),d=C(e=>e.openFilesAt),f=e.status===`cleaned`||e.status===`merged`||e.status===`abandoned`,m=f||e.status===`cleanup_requested`,h=e.worktreePath||e.sourceCwd||e.repoRoot,_=C(t=>t.workspaceGitState[e.id]),v=!!_&&_.available!==!1&&_.landed===!0,b=e.mode===`isolated`&&!!e.worktreePath&&J.has(e.status)&&!v;async function x(){await l(e.id),await i(e.id,`merge`)}return(0,F.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-1.5`,children:[(0,F.jsx)(D,{size:`icon-sm`,variant:`ghost`,title:t?`Hide details`:`Show diff & timeline`,onClick:r,children:t?(0,F.jsx)(ee,{className:`h-3.5 w-3.5`}):(0,F.jsx)(s,{className:`h-3.5 w-3.5`})}),(0,F.jsx)(D,{size:`icon-sm`,variant:`ghost`,title:`Open workspace`,disabled:!h||e.status===`cleaned`,onClick:()=>void d({path:h}),children:(0,F.jsx)(o,{className:`h-3.5 w-3.5`})}),(0,F.jsx)(O,{value:h,label:`Copy path`,copiedLabel:`Copied path`,size:`icon-sm`,variant:`ghost`,disabled:!h}),(0,F.jsx)(D,{size:`icon-sm`,variant:`outline`,title:`Mark ready`,disabled:m||e.status===`ready`,onClick:()=>void i(e.id,`ready`),children:(0,F.jsx)(c,{className:`h-3.5 w-3.5`})}),(0,F.jsx)(D,{size:`icon-sm`,variant:`outline`,title:`Request review`,disabled:m||e.status===`review_requested`,onClick:()=>void i(e.id,`request-review`),children:(0,F.jsx)(n,{className:`h-3.5 w-3.5`})}),(0,F.jsx)(D,{size:`icon-sm`,variant:`outline`,title:`Mark merge planned`,disabled:m||e.status===`merge_planned`,onClick:()=>void i(e.id,`merge-plan`),children:(0,F.jsx)(u,{className:`h-3.5 w-3.5`})}),(0,F.jsx)(D,{size:`icon-sm`,variant:`default`,title:v?`Already merged into base — nothing to land`:`Merge & land work`,disabled:!b,onClick:()=>void x(),children:(0,F.jsx)(y,{className:`h-3.5 w-3.5`})}),(0,F.jsx)(D,{size:`icon-sm`,variant:`outline`,title:`Request cleanup (removes the worktree on the host)`,disabled:e.status===`cleaned`||e.status===`cleanup_requested`,onClick:()=>void i(e.id,`cleanup`),children:(0,F.jsx)(g,{className:`h-3.5 w-3.5`})}),f&&(0,F.jsx)(D,{size:`icon-sm`,variant:`ghost`,title:`Purge record (clears the row, does not touch disk)`,onClick:()=>void a(e.id),children:(0,F.jsx)(p,{className:`h-3.5 w-3.5`})})]})}function oe({workspace:e,unmerged:t}){let n=C(t=>t.workspaceMergePreview[e.id]),r=C(e=>e.fetchWorkspaceMergePreview),i=t>0&&J.has(e.status);return(0,P.useEffect)(()=>{i&&n===void 0&&r(e.id)},[i,n,e.id,r]),!i||n===void 0||n.available===!1?null:n.conflict?(0,F.jsxs)(`span`,{className:`flex items-center gap-0.5 text-amber-400`,title:`Merging into ${n.baseRef||`base`} would conflict — resolve before merging`,children:[(0,F.jsx)(_,{className:`h-3 w-3`}),`conflict`]}):n.conflict===!1?(0,F.jsxs)(`span`,{className:`flex items-center gap-0.5 text-emerald-400`,title:`Clean to merge via ${n.strategy===`pr`?`PR`:`rebase + fast-forward`} into ${n.baseRef||`base`}`,children:[(0,F.jsx)(c,{className:`h-3 w-3`}),n.strategy===`pr`?`PR ready`:`clean`]}):null}function se({workspace:e}){let n=S(),r=C(t=>t.workspaceGitState[e.id]),a=C(e=>e.fetchWorkspaceGitState),o=e.mode===`isolated`&&!!e.worktreePath&&q.has(e.status);if((0,P.useEffect)(()=>{o&&r===void 0&&a(e.id)},[o,r,e.id,a]),!o)return null;let s=(0,F.jsx)(D,{size:`icon-sm`,variant:`ghost`,className:`h-5 w-5`,title:`Refresh git state`,onClick:()=>void a(e.id),children:(0,F.jsx)(i,{className:`h-3 w-3`})});if(r===void 0)return(0,F.jsx)(`div`,{className:`flex items-center gap-1 text-[11px] text-muted-foreground`,children:`Loading git state…`});if(r.available===!1)return(0,F.jsxs)(`div`,{className:`flex items-center gap-1 text-[11px] text-muted-foreground`,title:r.reason,children:[(0,F.jsx)(`span`,{children:`git state unavailable`}),s]});if(r.missing)return(0,F.jsxs)(`div`,{className:`flex items-center gap-1 text-[11px] text-muted-foreground`,children:[`worktree gone `,s]});if(r.error)return(0,F.jsxs)(`div`,{className:`flex items-center gap-1 text-[11px] text-red-400`,title:r.error,children:[(0,F.jsx)(`span`,{children:`git error`}),s]});let u=r.ahead??0,f=r.landed===!0,p=f?0:r.unmergedAhead??u,m=r.behind??0,h=r.dirtyCount??0,g=p===0&&h===0&&!f,_=r.lastCommit;return(0,F.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-0.5 text-[11px]`,children:[g?(0,F.jsx)(`span`,{className:`text-muted-foreground`,children:`no unmerged work`}):(0,F.jsxs)(F.Fragment,{children:[f?(0,F.jsxs)(`span`,{className:`flex items-center gap-0.5 text-emerald-400`,title:`Work already landed in ${r.baseRef||`base`} via squash/cherry-pick — safe to clean up`,children:[(0,F.jsx)(c,{className:`h-3 w-3`}),`landed`]}):(0,F.jsxs)(`span`,{className:p>0?`flex items-center text-emerald-400`:`flex items-center text-muted-foreground`,title:u===p?`${p} commit(s) ahead of base`:`${p} unmerged commit(s) (${u} ahead of base)`,children:[(0,F.jsx)(l,{className:`h-3 w-3`}),p]}),(0,F.jsxs)(`span`,{className:m>0?`flex items-center text-amber-400`:`flex items-center text-muted-foreground`,title:`${m} commit(s) behind base`,children:[(0,F.jsx)(t,{className:`h-3 w-3`}),m]}),h>0&&(0,F.jsxs)(`span`,{className:`flex items-center text-orange-400`,title:`${h} uncommitted change(s)`,children:[(0,F.jsx)(d,{className:`h-3 w-3`}),h]}),!f&&(0,F.jsx)(oe,{workspace:e,unmerged:p})]}),s]}),_&&(0,F.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1 text-[11px] text-muted-foreground`,title:`${_.sha.slice(0,8)} — ${_.message}`,children:[(0,F.jsx)(v,{className:`h-3 w-3 shrink-0`}),(0,F.jsx)(`span`,{className:`truncate`,children:_.message||_.sha.slice(0,8)}),_.at?(0,F.jsxs)(`span`,{className:`shrink-0 opacity-70`,children:[`· `,T(n,_.at)]}):null]})]})}function ce({workspace:e}){let t=S(),n=typeof e.metadata?.mergedAt==`number`?e.metadata.mergedAt:void 0,r=[{label:`created`,at:e.createdAt},{label:`ready`,at:e.readyAt},{label:`merged`,at:n},{label:`cleaned`,at:e.cleanedAt}].filter(e=>typeof e.at==`number`&&e.at>0);return(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px] text-muted-foreground`,children:[(0,F.jsxs)(`span`,{className:`flex items-center gap-1 font-medium text-foreground`,children:[(0,F.jsx)(m,{className:`h-3 w-3`}),`Timeline`]}),r.map((e,n)=>(0,F.jsxs)(`span`,{className:`flex items-center gap-1`,children:[n>0&&(0,F.jsx)(`span`,{className:`opacity-40`,children:`→`}),(0,F.jsx)(`span`,{className:`text-foreground`,children:e.label}),(0,F.jsx)(`span`,{title:new Date(e.at).toLocaleString(),children:T(t,e.at)})]},e.label))]})}function le(e){return e.startsWith(`+`)&&!e.startsWith(`+++`)?`text-emerald-400`:e.startsWith(`-`)&&!e.startsWith(`---`)?`text-red-400`:e.startsWith(`@@`)?`text-cyan-400`:e.startsWith(`diff `)||e.startsWith(`index `)||e.startsWith(`+++`)||e.startsWith(`---`)?`text-muted-foreground`:``}function ue({workspace:e}){let t=C(t=>t.workspaceDiff[e.id]),n=C(e=>e.fetchWorkspaceDiff),a=e.mode===`isolated`&&!!e.worktreePath;if((0,P.useEffect)(()=>{a&&t===void 0&&n(e.id)},[a,t,e.id,n]),!a)return null;if(t===void 0)return(0,F.jsx)(`div`,{className:`text-[11px] text-muted-foreground`,children:`Loading diff…`});if(t.available===!1)return(0,F.jsxs)(`div`,{className:`text-[11px] text-muted-foreground`,children:[`Diff unavailable`,t.reason?`: ${t.reason}`:``]});if(t.missing)return(0,F.jsx)(`div`,{className:`text-[11px] text-muted-foreground`,children:`Worktree no longer on disk`});if(t.error)return(0,F.jsxs)(`div`,{className:`text-[11px] text-red-400`,children:[`Diff error: `,t.error]});if(!t.files.length)return(0,F.jsxs)(`div`,{className:`text-[11px] text-muted-foreground`,children:[`No committed changes against `,t.baseRef||`base`]});let o=(0,F.jsx)(D,{size:`icon-sm`,variant:`ghost`,className:`h-5 w-5`,title:`Refresh diff`,onClick:()=>void n(e.id),children:(0,F.jsx)(i,{className:`h-3 w-3`})});return(0,F.jsxs)(`div`,{className:`space-y-1`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] font-medium`,children:[(0,F.jsx)(r,{className:`h-3 w-3`}),(0,F.jsxs)(`span`,{children:[t.files.length,` file`,t.files.length===1?``:`s`,` vs `,t.baseRef||`base`]}),o]}),(0,F.jsx)(`ul`,{className:`space-y-0.5 text-[11px]`,children:t.files.map(e=>(0,F.jsxs)(`li`,{className:`flex items-center gap-2 font-mono`,children:[(0,F.jsx)(`span`,{className:`truncate`,title:e.path,children:e.path}),e.binary?(0,F.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:`binary`}):(0,F.jsxs)(`span`,{className:`shrink-0`,children:[(0,F.jsxs)(`span`,{className:`text-emerald-400`,children:[`+`,e.additions??0]}),` `,(0,F.jsxs)(`span`,{className:`text-red-400`,children:[`−`,e.deletions??0]})]})]},e.path))}),t.patch&&(0,F.jsxs)(`pre`,{className:`max-h-80 overflow-auto rounded border border-border bg-muted/30 p-2 text-[10.5px] leading-relaxed`,children:[t.patch.split(`
|
|
2
|
-
`).map((e,t)=>(0,F.jsx)(`div`,{className:le(e),children:e||` `},t)),t.truncated&&(0,F.jsx)(`div`,{className:`mt-1 text-muted-foreground`,children:`… patch truncated`})]})]})}function $({workspace:e}){return(0,F.jsxs)(`div`,{className:`space-y-3 border-t border-dashed border-border bg-muted/20 px-3 py-3`,children:[(0,F.jsx)(ce,{workspace:e}),(0,F.jsx)(ue,{workspace:e})]})}function de(e){let t=e.match(/\/pull\/(\d+)/);return t?`PR #${t[1]}`:`View PR`}function fe({workspace:e}){let t=e.metadata?.mergeResult,n=t?.prUrl,r=t?.error||e.metadata?.mergeError;return!n&&!r?null:(0,F.jsxs)(F.Fragment,{children:[n&&(0,F.jsxs)(`a`,{href:n,target:`_blank`,rel:`noreferrer`,title:n,className:`inline-flex items-center gap-0.5 rounded border border-violet-500/30 px-1.5 py-0 text-[10px] text-violet-400 hover:text-violet-300`,children:[(0,F.jsx)(y,{className:`h-2.5 w-2.5`}),de(n)]}),r&&(0,F.jsxs)(E,{variant:`outline`,className:`max-w-[16rem] border-amber-500/30 text-amber-400 text-[10px]`,title:r,children:[(0,F.jsx)(_,{className:`mr-0.5 h-2.5 w-2.5 shrink-0`}),(0,F.jsxs)(`span`,{className:`truncate`,children:[`merge: `,r]})]})]})}function pe({workspace:e}){let t=S(),[n,r]=(0,P.useState)(!1),i=C(e=>e.agentsById),o=C(t=>t.workspaceFocusId===e.id),s=C(e=>e.deliverableTasks),c=C(e=>e.openTaskDetail),l=e.ownerAgentId?i[e.ownerAgentId]:void 0,u=K(s,e.ownerAgentId,e.branch),d=C(t=>t.workspaceGitState[e.id]),f=!!d&&d.available!==!1&&d.landed===!0,p=u!=null&&(e.status===`merged`||e.status===`cleaned`||e.status===`abandoned`||f),m=e.stewardAgentId?i[e.stewardAgentId]:void 0,h=e.worktreePath||e.sourceCwd||e.repoRoot,g=(0,P.useRef)(null);return(0,P.useEffect)(()=>{o&&g.current?.scrollIntoView({behavior:`smooth`,block:`center`})},[o]),(0,F.jsxs)(`div`,{ref:g,className:`border-t border-border ${o?`bg-primary/5 ring-1 ring-inset ring-primary/40`:``}`,children:[(0,F.jsxs)(`div`,{className:`grid gap-3 px-3 py-3 text-sm lg:grid-cols-[minmax(180px,1.2fr)_minmax(220px,1.5fr)_minmax(160px,1fr)_minmax(170px,auto)]`,children:[(0,F.jsxs)(`div`,{className:`min-w-0 space-y-1`,children:[(0,F.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,F.jsx)(a,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,F.jsx)(`span`,{className:`truncate font-medium`,title:e.branch||e.id,children:e.branch||e.id})]}),(0,F.jsxs)(`div`,{className:`flex flex-wrap gap-1`,children:[(0,F.jsx)(E,{variant:`outline`,className:`text-[10px] ${e.mode===`isolated`?`border-sky-500/30 text-sky-400`:`border-zinc-500/30 text-zinc-400`}`,children:e.mode}),e.requestedMode&&e.requestedMode!==e.mode&&(0,F.jsxs)(E,{variant:`outline`,className:`text-[10px]`,children:[`requested `,e.requestedMode]}),(0,F.jsx)(E,{variant:`outline`,className:`text-[10px] ${re(e.status)}`,children:X[e.status]||e.status}),(0,F.jsx)(fe,{workspace:e}),p&&u&&(0,F.jsx)(k,{id:u.id,title:u.title,status:u.status,onClick:()=>c(u)})]})]}),(0,F.jsxs)(`div`,{className:`min-w-0 space-y-1`,children:[(0,F.jsx)(`div`,{className:`truncate font-mono text-xs`,title:h,children:ne(h)}),(0,F.jsx)(`div`,{className:`truncate text-xs text-muted-foreground`,title:e.sourceCwd,children:e.sourceCwd}),(0,F.jsx)(se,{workspace:e})]}),(0,F.jsxs)(`div`,{className:`grid grid-cols-[4.5rem_minmax(0,1fr)] gap-x-2 gap-y-1 text-xs`,children:[(0,F.jsx)(`span`,{className:`text-muted-foreground`,children:`Owner`}),(0,F.jsx)(`span`,{className:`truncate`,title:e.ownerAgentId,children:Q(l,e.ownerPolicyName||e.ownerAgentId)}),(0,F.jsx)(`span`,{className:`text-muted-foreground`,children:`Steward`}),(0,F.jsx)(`span`,{className:`truncate`,title:e.stewardAgentId,children:Q(m,e.stewardAgentId)}),(0,F.jsx)(`span`,{className:`text-muted-foreground`,children:`Updated`}),(0,F.jsx)(`span`,{children:T(t,e.updatedAt)}),e.baseRef&&(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(`span`,{className:`text-muted-foreground`,children:`Base`}),(0,F.jsx)(`span`,{className:`truncate`,title:e.baseSha,children:e.baseRef})]})]}),(0,F.jsx)(ae,{workspace:e,expanded:n,onToggleDetails:()=>r(e=>!e)})]}),n&&(0,F.jsx)($,{workspace:e})]})}function me(){let[e,t]=(0,P.useState)(`active`),[n,r]=(0,P.useState)(R),[i,a]=(0,P.useState)([]),o=C(e=>e.workspaces),s=C(e=>e.set),c=C(e=>e.workspaceFocusId);(0,P.useEffect)(()=>{c&&(t(`all`),r(R))},[c]),(0,P.useEffect)(()=>()=>{s({workspaceFocusId:null})},[s]),(0,P.useEffect)(()=>{let e=!1;return x(`GET`,`/projects`).then(t=>{e||a(t.projects??[])}).catch(()=>{e||a([])}),()=>{e=!0}},[]);let l=(0,P.useMemo)(()=>H(o,e,n),[o,e,n]),u=(0,P.useMemo)(()=>V(l,ie),[l]),d=o.filter(e=>I.has(e.status)).length,f=o.filter(e=>e.mode===`isolated`).length,p=o.filter(e=>e.status===`ready`||e.status===`review_requested`||e.status===`merge_planned`).length,m=o.filter(e=>e.status===`conflict`).length,h=o.filter(e=>e.status===`merged`||e.status===`abandoned`||e.status===`cleaned`).length,g=[{key:`active`,label:`Active`,count:o.length-h},{key:`cleaned`,label:`Done`,count:h},{key:`all`,label:`All`,count:o.length}],_=(0,P.useMemo)(()=>{let e=[{value:R,label:`All Projects`}];for(let t of i)e.push({value:t.id,label:t.title||t.slug});return e.push({value:z,label:`Unassigned`}),e},[i]);return(0,F.jsxs)(`div`,{className:`space-y-4`,children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`h1`,{className:`text-2xl font-semibold`,children:`Workspaces`}),(0,F.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Agent worktrees, ownership, and merge readiness.`})]}),(0,F.jsxs)(`div`,{className:`ml-auto flex flex-wrap gap-1.5`,children:[(0,F.jsxs)(E,{variant:`outline`,children:[f,` isolated`]}),(0,F.jsxs)(E,{variant:`outline`,children:[d,` live`]}),(0,F.jsxs)(E,{variant:`outline`,children:[p,` ready`]}),m>0&&(0,F.jsxs)(E,{variant:`outline`,className:`border-red-500/20 text-red-400`,children:[m,` conflict`]})]})]}),(0,F.jsx)(G,{}),(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,F.jsx)(`div`,{className:`flex rounded-md border border-border bg-card p-1`,children:g.map(n=>(0,F.jsxs)(D,{size:`sm`,variant:e===n.key?`secondary`:`ghost`,className:`h-7 text-xs`,onClick:()=>t(n.key),children:[n.label,(0,F.jsx)(`span`,{className:`ml-1 text-muted-foreground`,children:n.count})]},n.key))}),(0,F.jsx)(`select`,{className:`h-8 min-w-[12rem] rounded-md border border-border bg-card px-2.5 text-sm text-foreground`,value:n,onChange:e=>r(e.target.value),children:_.map(e=>(0,F.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),u.length===0?(0,F.jsxs)(`div`,{className:`rounded-md border border-border px-3 py-12 text-center text-sm text-muted-foreground`,children:[`No `,e===`all`?``:e,` workspaces`,n===`__all__`?``:` in this project filter`]}):(0,F.jsx)(`div`,{className:`space-y-3`,children:u.map(e=>(0,F.jsx)(U,{group:e,renderWorkspaceRow:e=>(0,F.jsx)(pe,{workspace:e},e.id)},e.key))})]})}export{me as WorkspacesView};
|
|
3
|
-
//# sourceMappingURL=workspaces-D2bYW3zl.js.map
|