@adhdev/daemon-standalone 1.0.78-rc.3 → 1.0.78-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +4 -4
- package/package.json +2 -2
- package/public/assets/{DashboardMeshGraphDialog-mSitrDG1.js → DashboardMeshGraphDialog-zWTE5pKo.js} +1 -1
- package/public/assets/{index-C4q1SmIe.js → index-Dsj3cO-f.js} +8 -8
- package/public/index.html +1 -1
- package/vendor/mcp-server/index.js +1 -1
package/dist/index.js
CHANGED
|
@@ -24623,10 +24623,10 @@ ${renderWorkerProtocolFooter(input)}`;
|
|
|
24623
24623
|
}
|
|
24624
24624
|
function getDaemonBuildInfo() {
|
|
24625
24625
|
if (cached) return cached;
|
|
24626
|
-
const commit2 = readInjected(true ? "
|
|
24627
|
-
const commitShort = readInjected(true ? "
|
|
24628
|
-
const version = readInjected(true ? "1.0.78-rc.
|
|
24629
|
-
const builtAt = readInjected(true ? "2026-10-
|
|
24626
|
+
const commit2 = readInjected(true ? "438247e8d7fbcd5b021ad0bf0a838faca23d10a4" : void 0) ?? "unknown";
|
|
24627
|
+
const commitShort = readInjected(true ? "438247e8d" : void 0) ?? (commit2 !== "unknown" ? commit2.slice(0, 7) : "unknown");
|
|
24628
|
+
const version = readInjected(true ? "1.0.78-rc.4" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
|
|
24629
|
+
const builtAt = readInjected(true ? "2026-10-08T18:39:24.525Z" : void 0);
|
|
24630
24630
|
cached = builtAt ? { commit: commit2, commitShort, version, builtAt } : { commit: commit2, commitShort, version };
|
|
24631
24631
|
return cached;
|
|
24632
24632
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adhdev/daemon-standalone",
|
|
3
|
-
"version": "1.0.78-rc.
|
|
3
|
+
"version": "1.0.78-rc.4",
|
|
4
4
|
"description": "ADHDev standalone daemon — embedded HTTP/WS server for local dashboard",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"license": "AGPL-3.0-or-later",
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@adhdev/ghostty-vt-node": "*",
|
|
41
|
-
"@adhdev/session-host-core": "1.0.78-rc.
|
|
41
|
+
"@adhdev/session-host-core": "1.0.78-rc.4",
|
|
42
42
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
43
43
|
"@xterm/addon-serialize": "^0.14.0",
|
|
44
44
|
"@xterm/xterm": "^6.0.0",
|
package/public/assets/{DashboardMeshGraphDialog-mSitrDG1.js → DashboardMeshGraphDialog-zWTE5pKo.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{u as J,r as p,j as s}from"./vendor-DYaHHPPA.js";import{I as ha,a as es,n as Ve,c as sn,i as pa,b as ma,r as fa,g as Je,d as xa,M as fe,m as ye,s as Oe,e as Ye,f as Ct,h as nt,j as ga,k as ba,l as ut,u as ht,o as va,p as ya,q as Xe,t as wa,B as Z,T as Fe,v as Mt,w as ja,x as Na,y as As,z as nn,A as ka,S as Sa,C as $t,D as It,E as Ca,F as Ma,G as $a,H as Ia,J as Re,K as Bt,L as La,N as an,O as Aa,P as _a,Q as Ea,R as at,U as rn,V as on,W as Ze,X as _s,Y as ts,Z as Ba,_ as ln,$ as Es,a0 as cn,a1 as dn,a2 as ls,a3 as Ra,a4 as Da,a5 as Pa,a6 as Oa,a7 as Fa,a8 as Ta,a9 as Ha,aa as Ga,ab as Ht,ac as Wa,ad as Ua,ae as Ka,af as za,ag as Va,ah as et,ai as Bs,aj as qa,ak as Ya,al as un,am as Qa,an as Ja,ao as Xa,ap as Za,aq as er,ar as tr,as as sr,at as nr,au as ar}from"./index-C4q1SmIe.js";import{av as uc,aw as hc,ax as pc}from"./index-C4q1SmIe.js";import{E as hn,H as Ie,P as xe,i as cs,C as pn,M as rr,B as or,a as ir,b as lr,c as cr,u as dr,d as mn,e as ds,g as Rs,f as ur,h as hr,j as fn}from"./mesh-graph-D5Tty0nT.js";function pr(e,t){if(e==null||!Number.isFinite(e))return null;const n=t-e;if(!Number.isFinite(n)||n<0)return null;const a=Math.floor(n/1e3);if(a<60)return`${a}s`;const r=Math.floor(a/60);return r<60?`${r}m`:`${Math.floor(r/60)}h ${String(r%60).padStart(2,"0")}m`}function mr(e){return`${e.state??""} ${e.chatStatus??""} ${e.lifecycle??""}`.toLowerCase()}function fr(e){if(!Array.isArray(e))return[];const t=[];for(const n of e){const a=n.activeSessionDetails;if(Array.isArray(a))for(const r of a)r!=null&&r.sessionId&&mr(r).includes("approval")&&t.push({nodeId:n.nodeId,sessionId:r.sessionId,providerType:r.providerType,machineLabel:Ve(n)||n.nodeId,detail:r.statusNote??r.title??null})}return t}function xr({approvals:e,nodes:t,onResolve:n,hideWhenEmpty:a=!0,nowMs:r}){const{t:o}=J(),l=r??Date.now(),i=p.useMemo(()=>e??fr(t),[e,t]),[d,u]=p.useState({});if(a&&i.length===0)return null;const h=(c,f)=>{d[c.sessionId]||(u(x=>({...x,[c.sessionId]:f})),Promise.resolve(n(c.nodeId,c.sessionId,f)).finally(()=>{u(x=>{const j={...x};return delete j[c.sessionId],j})}))};return s.jsxs("div",{className:"rounded-lg border p-3",style:{borderColor:"color-mix(in srgb, var(--status-warning) 40%, transparent)",background:"color-mix(in srgb, var(--status-warning) 8%, transparent)"},children:[s.jsxs("div",{className:"flex items-center gap-2 mb-2 font-black text-xs",style:{color:"var(--status-warning)"},children:[s.jsx(ha,{size:14}),o("mesh.approvals.title"),s.jsxs("span",{className:"opacity-70 font-semibold",children:["(",i.length,")"]})]}),i.length===0?s.jsx("div",{className:"text-2xs opacity-70",children:o("mesh.approvals.empty")}):s.jsx("ul",{className:"flex flex-col gap-2",children:i.map(c=>{const f=d[c.sessionId]??null,x=f!==null,j=pr(c.waitingSince,l);return s.jsxs("li",{className:"flex items-center justify-between gap-3 rounded-md px-2.5 py-2",style:{background:"color-mix(in srgb, var(--surface-primary) 82%, transparent)"},children:[s.jsxs("div",{className:"min-w-0",children:[s.jsxs("div",{className:"text-xs font-semibold truncate",children:[c.machineLabel||c.nodeId,c.providerType&&s.jsx("span",{className:"ml-2 opacity-60 font-normal",children:c.providerType}),j&&s.jsx("span",{className:"ml-2 font-bold text-3xs",style:{color:"var(--status-warning)"},title:o("mesh.approvals.waitingFor",{duration:j}),children:j})]}),s.jsx("div",{className:"text-3xs opacity-60 truncate",children:c.detail?c.detail.replace(/[\n\r]+/g," ").slice(0,120):o("mesh.approvals.sessionFallback",{id:c.sessionId})}),c.options&&c.options.length>0&&s.jsx("div",{className:"mt-1 flex flex-wrap gap-1",children:c.options.slice(0,4).map((g,b)=>s.jsx("span",{className:"text-4xs px-1.5 py-0.5 rounded opacity-70",style:{background:"color-mix(in srgb, var(--text-muted) 15%, transparent)"},children:g.replace(/[⌥⏎⇧⌫⌘⌃]/g,"").trim().slice(0,32)},`${g}-${b}`))})]}),s.jsxs("div",{className:"flex gap-2 shrink-0",children:[s.jsx("button",{onClick:()=>h(c,"approve"),disabled:x,className:`btn btn-sm border-none rounded-md text-xs px-3 py-1 font-extrabold ${x?"cursor-not-allowed opacity-60":"cursor-pointer"}`,style:{color:"var(--status-warning)",background:"var(--surface-primary)"},children:f==="approve"?s.jsx(es,{size:12}):o("mesh.approvals.approve")}),s.jsx("button",{onClick:()=>h(c,"reject"),disabled:x,className:`btn btn-sm border-none rounded-md text-xs px-3 py-1 font-semibold text-white bg-red-500/30 ${x?"cursor-not-allowed opacity-60":"cursor-pointer"}`,children:f==="reject"?s.jsx(es,{size:12}):o("mesh.approvals.reject")})]})]},`${c.nodeId}:${c.sessionId}`)})})]})}const gr=5*60*1e3;function xn(e){return typeof e.daemonId=="string"&&e.daemonId.trim()?e.daemonId.trim():null}function gn(e){return typeof e.machineId=="string"&&e.machineId.trim()?e.machineId.trim():null}function br(e){var t,n,a;return((t=e.connection)==null?void 0:t.state)==="self"||e.isLocalWorktree===!0?"local":((n=e.connection)==null?void 0:n.transport)==="direct"||((a=e.connection)==null?void 0:a.transport)==="relay"||xn(e)||gn(e)?"remote":"unknown"}function vr(e){const t=e.connection;if(!t)return{connectionTransport:null,connectionState:null,connectionReason:null,connectionReported:!1,connectionRttMs:null};const n=t.rttMs,a=typeof n=="number"&&Number.isFinite(n)&&n>=0?n:null;return{connectionTransport:t.transport??null,connectionState:t.state??null,connectionReason:typeof t.reason=="string"&&t.reason.trim()?t.reason.trim():null,connectionReported:t.reported===!0,connectionRttMs:a}}function bn(e){const t=e.connectionTransport;if(t==="direct"||t==="relay"||t==="local")return t;const n=e.connectionState;return n==="connecting"?"connecting":n==="disconnected"?"disconnected":n==="failed"?"failed":n==="closed"?"closed":null}function yr(e){if(e.connectionTransport==="local"||e.connectionState==="self")return null;const t=bn(e);return!t||t==="local"||typeof e.connectionRttMs!="number"||!Number.isFinite(e.connectionRttMs)?null:`${Math.round(e.connectionRttMs)}ms`}function wr(e){return fa(e)}function vn(e){var t;return wr(e)?!1:!!(e.gitProbePending||((t=e.connection)==null?void 0:t.state)==="connecting")}function yn(e){if(!e)return null;const t=Date.parse(e);return Number.isNaN(t)?null:t}function jr(e){var n;const t=new Map;for(const a of((n=e.queue)==null?void 0:n.tasks)??[])a.assignedSessionId&&a.difficulty&&t.set(a.assignedSessionId,a.difficulty);return t}function Nr(e,t){return(e.activeSessionDetails&&e.activeSessionDetails.length>0?e.activeSessionDetails:(e.activeSessions??[]).map(a=>({sessionId:a,workspace:e.workspace,isCached:!0}))).map(a=>{const r=t.get(a.sessionId);return r?{...a,difficulty:r}:a})}function wn(e){return e?e.staged+e.modified+e.untracked+e.deleted+e.renamed>0:!1}function jn(e){return((e==null?void 0:e.submodules)??[]).some(t=>t.dirty)}function us(e){return((e==null?void 0:e.submodules)??[]).some(t=>t.outOfSync||!!t.error)}function kr(e){return us(e)?"degraded":jn(e)?"dirty":"online"}function Sr(e){return e?e.staged+e.modified+e.untracked+e.deleted+e.renamed:0}function Ds(e){switch(e){case"online":return 0;case"dirty":return 1;case"degraded":return 2;case"wrong_branch":return 3;case"offline":return 4;case"unknown":default:return 5}}function Gt(e){return e.length===0?"unknown":e.reduce((t,n)=>Ds(n)>Ds(t)?n:t)}function Cr(e){var o,l,i,d,u;const t=new Map,n=new Map;for(const h of e){const c=(l=(o=h.git)==null?void 0:o.branch)==null?void 0:l.trim();c&&(n.set(c,(n.get(c)??0)+1),(i=h.git)!=null&&i.upstream&&t.set(c,(t.get(c)??0)+1))}const a=[...t.entries()].sort((h,c)=>{if(c[1]!==h[1])return c[1]-h[1];const f=["main","master","develop","dev"],x=f.indexOf(h[0]),j=f.indexOf(c[0]);return x!==-1||j!==-1?x===-1?1:j===-1?-1:x-j:h[0].localeCompare(c[0])});return(d=a[0])!=null&&d[0]?a[0][0]:((u=[...n.entries()].sort((h,c)=>c[1]-h[1])[0])==null?void 0:u[0])??null}function Mr(e,t){var l;const n=[],a=e.git;if(!a)return n.push({text:"No git status available",hint:{key:"mesh.hint.noGitStatus"}}),n;if(!a.isGitRepo)return n.push({text:"Not a git repository",hint:{key:"mesh.hint.notGitRepo"}}),n;!a.branch&&a.headCommit&&n.push({text:"Detached HEAD",hint:{key:"mesh.hint.detachedHead"}}),a.hasConflicts&&n.push({text:"Merge conflicts need resolution",hint:{key:"mesh.hint.mergeConflicts"}});const r=(l=e.branchConvergence)==null?void 0:l.status,o=e.isLocalWorktree===!0||!!e.worktreeBranch||!!e.clonedFromNodeId||r==="merged_to_main"||r==="cleanup_candidate";return a.branch&&t&&a.branch!==t&&!a.upstream&&!o&&n.push({text:`No upstream tracking for ${a.branch}`,hint:{key:"mesh.hint.noUpstream",params:{branch:a.branch}}}),a.upstream&&a.upstreamStatus&&a.upstreamStatus!=="fresh"&&n.push({text:`Upstream freshness unverified for ${a.branch??"workspace"}`,hint:{key:"mesh.hint.upstreamUnverified",params:{branch:a.branch??""}}}),e.error&&n.push({text:e.error,hint:{key:"mesh.hint.nodeError",detail:e.error}}),n}function Ps(e){switch(e){case"merged_to_main":return 0;case"pushed_feature_branch_needs_merge":return 1;case"cleanup_candidate":return 2;case"blocked_review":return 3;case"not_mergeable":default:return 4}}function $r(e){return e.reduce((t,n)=>Ps(n.status)>Ps(t.status)?n:t)}function Ir(e){const t=e.branchConvergenceSummary;if(Array.isArray(t==null?void 0:t.followUps))return t.followUps;const n=e.followUps;return Array.isArray(n)?n:(t==null?void 0:t.needsFollowUp)===!1||(t==null?void 0:t.unresolvedCount)===0?[]:null}function Lr(e){var r,o,l;const t=e.sourceOfTruth,n=[],a=(r=t==null?void 0:t.fallback)==null?void 0:r.warning;return typeof a=="string"&&a.trim()&&n.push(a.trim()),(t==null?void 0:t.currentStatus)==="bootstrap_inventory_fallback"&&((o=t.directPeerTruth)==null?void 0:o.required)===!0&&((l=t.directPeerTruth)==null?void 0:l.satisfied)!==!0&&!n.some(i=>i.includes("direct mesh truth"))&&n.push("Direct mesh truth is not confirmed yet; this graph is drawn from setup inventory only."),n}function Ar(e){const t=e.asyncRefineJobs;if(!Array.isArray(t))return[];const n=[];for(const a of t){if(!a||typeof a!="object")continue;const r=a,o=typeof r.jobId=="string"?r.jobId:null,l=r.status;o&&(l!=="accepted"&&l!=="running"&&l!=="completed"&&l!=="failed"||n.push({jobId:o,status:l,nodeId:typeof r.nodeId=="string"?r.nodeId:void 0,targetNodeId:typeof r.targetNodeId=="string"?r.targetNodeId:void 0,workspace:typeof r.workspace=="string"?r.workspace:void 0,branch:typeof r.branch=="string"?r.branch:void 0,into:typeof r.into=="string"?r.into:void 0,lastUpdatedAt:typeof r.lastUpdatedAt=="string"?r.lastUpdatedAt:void 0,startedAt:typeof r.startedAt=="string"?r.startedAt:void 0,completedAt:typeof r.completedAt=="string"?r.completedAt:void 0}))}return n}function Os(e){return e==="running"||e==="accepted"?0:1}function Fs(e){const t=e.lastUpdatedAt||e.completedAt||e.startedAt||"";return yn(t)??0}function _r(e){return e.length===0?null:e.reduce((t,n)=>{const a=Os(t.status),r=Os(n.status);return r!==a?r<a?n:t:Fs(n)>Fs(t)?n:t})}function Er(e){var n,a;const t=new Map;for(const r of e){const o=((n=r.nodeId)==null?void 0:n.trim())||((a=r.targetNodeId)==null?void 0:a.trim());if(!o)continue;const l=t.get(o)??[];l.push(r),t.set(o,l)}return t}function Br(e,t){return e.type!=="submoduleNode"&&e.branch===t&&e.ahead===0&&e.behind===0&&!e.dirty&&!e.hasConflicts&&(!e.upstreamStatus||e.upstreamStatus==="fresh")&&e.snapshotCompleteness==="complete"}function Rr(e,t){var n,a;return{status:"merged_to_main",needsConvergence:!1,reason:"clean_default_branch_aggregate",nextStep:null,branch:e,defaultBranch:e,upstream:((n=t.find(r=>r.upstream))==null?void 0:n.upstream)??null,upstreamStatus:((a=t.find(r=>r.upstreamStatus))==null?void 0:a.upstreamStatus)??null,ahead:0,behind:0,dirty:!1,hasConflicts:!1}}function Dr(e,t){if(vn(e))return null;const n=e.branchConvergence;if(!n||typeof n!="object")return null;const a=n.status;if(!a||!["merged_to_main","pushed_feature_branch_needs_merge","blocked_review","cleanup_candidate","not_mergeable"].includes(a))return null;const r=e.git;if(a==="blocked_review"&&(n.reason==="git_status_unavailable"&&(r==null?void 0:r.isGitRepo)!==!1||n.reason==="branch_unknown"&&!(r!=null&&r.headCommit)))return null;const o=wn(r)||jn(r),l=!!(r!=null&&r.hasConflicts)||us(r),i=(r==null?void 0:r.ahead)??0,d=(r==null?void 0:r.behind)??0,u=(r==null?void 0:r.branch)??null,h=(r==null?void 0:r.upstream)??null,c=(r==null?void 0:r.upstreamStatus)??null,f=n.defaultBranch??t??null;return{status:a,needsConvergence:n.needsConvergence??a!=="merged_to_main",reason:n.reason??"provided_by_coordinator",nextStep:n.nextStep??null,branch:n.branch??u,defaultBranch:f,upstream:n.upstream??h,upstreamStatus:n.upstreamStatus??c,ahead:n.ahead??i,behind:n.behind??d,dirty:n.dirty??o,hasConflicts:n.hasConflicts??l}}function Pr(e,t){const n=Dr(e,t);return n?{...n,defaultBranch:n.defaultBranch??t}:null}function Ts(e){const t=(e||"").trim().replace(/[\\/]+$/,"");if(!t)return null;const n=t.split(/[\\/]+/).filter(Boolean);return n[n.length-1]||null}function Or(e){return e.error||e.outOfSync?"degraded":e.dirty?"dirty":"online"}function Fr(e){var u,h;const{nodeStatus:t,expectedSubmodulePaths:n,refreshedAtMs:a}=e,r=[],o=[],l=t.machineLabel||t.nodeId,i=t.git;if(!i){if(vn(t))return r.push(`${l} is still waiting for a live peer git snapshot from the selected coordinator.`),o.push({key:"mesh.hint.waitingForGit"}),{snapshotCompleteness:"pending_git",snapshotWarnings:r,snapshotWarningHints:o};const c=t.health==="online"||t.machineStatus==="online"||((u=t.connection)==null?void 0:u.state)==="connected"||((h=t.connection)==null?void 0:h.state)==="self";return r.push(c?`${l} is online but no peer git snapshot is visible yet.`:`${l} has no peer git snapshot visible yet.`),o.push({key:c?"mesh.hint.noGitYetOnline":"mesh.hint.noGitYet"}),{snapshotCompleteness:"missing_git",snapshotWarnings:r,snapshotWarningHints:o}}const d=new Set((i.submodules??[]).map(c=>c.path));if(n.size>0){const c=[...n].filter(f=>!d.has(f));c.length>0&&(r.push(`${l} is missing submodule visibility for ${c.join(", ")} even though another peer reported it.`),o.push({key:"mesh.hint.missingSubmodule",params:{paths:c.join(", ")}}))}return t.connection&&t.connection.state!=="self"&&a!==null&&(typeof i.lastCheckedAt=="number"?a-i.lastCheckedAt>gr&&(r.push(`${l} is relying on a peer git snapshot older than 5m; re-probe before trusting convergence.`),o.push({key:"mesh.hint.staleGit"})):(r.push(`${l} peer git snapshot age was not measured because no check time was reported.`),o.push({key:"mesh.hint.gitAgeUnknown"}))),r.some(c=>c.includes("submodule visibility"))?{snapshotCompleteness:"missing_submodule_report",snapshotWarnings:r,snapshotWarningHints:o}:r.some(c=>c.includes("older than 5m"))?{snapshotCompleteness:"stale",snapshotWarnings:r,snapshotWarningHints:o}:{snapshotCompleteness:"complete",snapshotWarnings:r,snapshotWarningHints:o}}function Tr(e){var Y;const t=sn(e),a=(typeof t.defaultBranch=="string"&&t.defaultBranch.trim().length>0?t.defaultBranch.trim():null)??Cr(t.nodes),r=yn(t.refreshedAt),o=new Set(t.nodes.flatMap(N=>{var C;return(((C=N.git)==null?void 0:C.submodules)??[]).map(L=>L.path)})),l=[],i=[],d=Lr(t),u=new Map,h=Er(Ar(t)),c=jr(t);for(const N of t.nodes){const C=N.git,L=(C==null?void 0:C.branch)??null,V=kr(C),le=wn(C)||V==="dirty",he=Mr(N,a),A=he.map(K=>K.text),T=Pr(N,a),v=Fr({nodeStatus:N,expectedSubmodulePaths:o,refreshedAtMs:r}),H=typeof N.clonedFromNodeId=="string"?N.clonedFromNodeId:null,Q=Nr(N,c),U=_r(h.get(N.nodeId)??[]),ne=vr(N),oe=!!N.worktreeBranch||!!H,ie={id:N.nodeId,type:A.length>0?"orphanNode":"worktreeNode",label:oe?N.worktreeBranch?`⎇ ${N.worktreeBranch}`:Ts(N.workspace)||N.machineLabel||N.nodeId.slice(0,8):N.machineLabel||Ts(N.workspace)||N.nodeId.slice(0,8),workspace:N.workspace,branch:L,upstream:(C==null?void 0:C.upstream)??null,upstreamStatus:(C==null?void 0:C.upstreamStatus)??null,daemonId:xn(N),machineId:gn(N),machineLabel:N.machineLabel||null,locality:br(N),connectionTransport:ne.connectionTransport,connectionState:ne.connectionState,connectionReason:ne.connectionReason,connectionReported:ne.connectionReported,connectionRttMs:ne.connectionRttMs,health:Gt([N.health,V]),ahead:(C==null?void 0:C.ahead)??0,behind:(C==null?void 0:C.behind)??0,dirty:le,dirtyFiles:Sr(C),hasConflicts:(C==null?void 0:C.hasConflicts)??!1,inProgress:Q.some(K=>!K.isSelfCoordinator&&(pa(K.chatStatus??K.state)||ma(K.chatStatus??K.state))),activeSessionCount:Q.length,activeSessions:Q.map(K=>K.sessionId),sessionDetails:Q,providers:N.providers??[],isOrphan:A.length>0,orphanReasons:A,error:N.error,nextStepHint:v.snapshotWarnings[0]??A[0]??(T==null?void 0:T.nextStep)??void 0,nextStepHintI18n:v.snapshotWarningHints[0]??((Y=he[0])==null?void 0:Y.hint)??null,parentNodeId:null,clonedFromNodeId:H,worktreeBranch:N.worktreeBranch??null,submodulePath:null,submoduleCommit:(C==null?void 0:C.headCommit)??null,outOfSync:us(C),snapshotCompleteness:v.snapshotCompleteness,snapshotWarnings:v.snapshotWarnings,branchConvergence:T,refineJobStatus:(U==null?void 0:U.status)??null,refineJobId:(U==null?void 0:U.jobId)??null,refineJobBranch:(U==null?void 0:U.branch)??null,refineJobInto:(U==null?void 0:U.into)??null,gitObservation:N.gitObservation??null,source:N};if(l.push(ie),L){const K=u.get(L)??[];K.push(ie.id),u.set(L,K)}for(const K of(C==null?void 0:C.submodules)??[]){const He=`${ie.id}::submodule::${K.path}`,Ge=K.path.split("/").filter(Boolean).pop()||K.path;l.push({id:He,type:"submoduleNode",label:Ge,workspace:K.repoPath??K.path,branch:null,upstream:null,upstreamStatus:null,daemonId:ie.daemonId,machineId:ie.machineId,machineLabel:ie.machineLabel,locality:ie.locality,connectionTransport:ie.connectionTransport,connectionState:ie.connectionState,connectionReason:ie.connectionReason,connectionReported:ie.connectionReported,connectionRttMs:ie.connectionRttMs,health:Or(K),ahead:0,behind:0,dirty:K.dirty,dirtyFiles:K.dirty?1:0,hasConflicts:!1,inProgress:!1,activeSessionCount:0,activeSessions:[],sessionDetails:[],providers:[],isOrphan:!1,orphanReasons:[],error:K.error,nextStepHint:K.error||(K.outOfSync?`${K.path} is out of sync with the parent checkout`:K.dirty?`${K.path} has local changes`:`${K.path} is in sync with the parent checkout`),nextStepHintI18n:K.error?{key:"mesh.hint.nodeError",detail:K.error}:K.outOfSync?{key:"mesh.hint.submoduleOutOfSync",params:{path:K.path}}:K.dirty?{key:"mesh.hint.submoduleChanged",params:{path:K.path}}:{key:"mesh.hint.submoduleSynced",params:{path:K.path}},parentNodeId:ie.id,submodulePath:K.path,submoduleCommit:K.commit,outOfSync:K.outOfSync,snapshotCompleteness:"complete",snapshotWarnings:[],branchConvergence:null,gitObservation:ie.gitObservation??null,source:{kind:"synthetic-submodule",parentNodeId:ie.id,parentWorkspace:N.workspace,submodule:K}}),i.push({id:`${ie.id}--${He}`,source:ie.id,target:He,type:"submoduleLink",label:K.outOfSync?"submodule out of sync":void 0,direction:"directed"})}}const f=a?`__branch_${a}`:null;if(f&&a){const C=(u.get(a)??[]).map(v=>l.find(H=>H.id===v)).filter(Boolean),L=C.map(v=>v.branchConvergence).filter(Boolean),V=Ir(t),le=C.length>0&&C.every(v=>Br(v,a)),he=(V==null?void 0:V.length)===0&&le?Rr(a,C):L.length>0?$r(L):null,A=(V==null?void 0:V.length)===0&&le?0:L.filter(v=>v.needsConvergence).length,T={id:f,type:"defaultBranchNode",label:a,workspace:t.repoIdentity,branch:a,upstream:null,upstreamStatus:null,daemonId:null,machineId:null,machineLabel:"default branch",locality:"unknown",connectionTransport:null,connectionState:null,connectionReason:null,connectionReported:!1,connectionRttMs:null,health:Gt(C.map(v=>v.health)),ahead:0,behind:0,dirty:C.some(v=>v.dirty),dirtyFiles:C.reduce((v,H)=>v+H.dirtyFiles,0),hasConflicts:C.some(v=>v.hasConflicts),inProgress:C.some(v=>v.inProgress),activeSessionCount:C.reduce((v,H)=>v+H.activeSessionCount,0),activeSessions:C.flatMap(v=>v.activeSessions),sessionDetails:C.flatMap(v=>v.sessionDetails),providers:[...new Set(C.flatMap(v=>v.providers))],isOrphan:!1,orphanReasons:[],nextStepHint:A>0?`${A} workspace(s) on ${a} still need follow-up`:C.length>0?`${C.length} workspace(s) currently on ${a}`:"No workspaces currently checked out to the default branch",nextStepHintI18n:A>0?{key:"mesh.hint.anchorNeedsFollowUp",params:{count:A,branch:a??""}}:C.length>0?{key:"mesh.hint.anchorWorkspaces",params:{count:C.length,branch:a??""}}:{key:"mesh.hint.anchorEmpty"},error:void 0,parentNodeId:null,submodulePath:null,submoduleCommit:null,outOfSync:!1,snapshotCompleteness:"complete",snapshotWarnings:[],branchConvergence:he,source:{nodeId:f,machineLabel:a,workspace:t.repoIdentity,health:Gt(C.map(v=>v.health)),providers:[],activeSessions:[],activeSessionDetails:[]}};l.push(T);for(const v of l)if(!(v.id===f||v.type==="submoduleNode")){if(v.branch===a){i.push({id:`${f}--${v.id}`,source:f,target:v.id,type:"parentBranch",direction:"undirected"});continue}if(v.branch){i.push({id:`${f}--${v.id}`,source:f,target:v.id,type:v.isOrphan?"orphanLink":"parentBranch",label:v.branch,direction:"undirected"});continue}if(v.isOrphan){i.push({id:`${f}--${v.id}`,source:f,target:v.id,type:"orphanLink",label:"detached",direction:"undirected"});continue}i.push({id:`${f}--${v.id}`,source:f,target:v.id,type:"parentBranch",direction:"undirected"})}}const x=new Set(l.map(N=>N.id)),j=new Set;for(const N of l){if(!N.clonedFromNodeId||N.type==="submoduleNode"||!x.has(N.clonedFromNodeId))continue;const C=`clone_${N.clonedFromNodeId}--${N.id}`;j.has(C)||(j.add(C),i.push({id:C,source:N.clonedFromNodeId,target:N.id,type:"cloneLink",label:"cloned",direction:"directed"}))}const g=l.filter(N=>N.type!=="defaultBranchNode"),b=g.filter(N=>N.isOrphan).length,_=g.filter(N=>N.hasConflicts).length,w=g.filter(N=>N.health==="offline").length,m=g.filter(N=>N.type==="submoduleNode"&&N.outOfSync).length,S=g.filter(N=>{var C;return N.type!=="submoduleNode"&&!N.inProgress&&((C=N.branchConvergence)==null?void 0:C.needsConvergence)}).length,k=g.filter(N=>{var C;return!N.inProgress&&((C=N.branchConvergence)==null?void 0:C.status)==="blocked_review"}).length,R=g.filter(N=>{var C;return((C=N.branchConvergence)==null?void 0:C.status)==="pushed_feature_branch_needs_merge"}).length,E=g.filter(N=>{var C;return((C=N.branchConvergence)==null?void 0:C.status)==="cleanup_candidate"}).length,D=g.filter(N=>{var C;return((C=N.branchConvergence)==null?void 0:C.status)==="not_mergeable"}).length,M=g.filter(N=>N.snapshotCompleteness!=="complete").length,O=g.filter(N=>N.snapshotCompleteness==="pending_git").length,P=g.filter(N=>N.snapshotCompleteness==="missing_git").length,I=g.filter(N=>N.snapshotCompleteness==="missing_submodule_report").length,y=g.filter(N=>N.snapshotCompleteness==="stale").length,$=g.filter(N=>N.refineJobStatus==="running"||N.refineJobStatus==="accepted").length,W=g.filter(N=>N.refineJobStatus==="failed").length,te=[O>0?`${O} node(s) are still waiting for a live peer git snapshot`:null,P>0?`${P} node(s) have no visible peer git snapshot`:null,I>0?`${I} node(s) are missing peer submodule visibility reported elsewhere in the mesh`:null,y>0?`${y} node(s) rely on peer git snapshots older than 5m`:null].filter(Boolean);return S>0&&d.push(`${S} workspace(s) still need follow-up before the mesh is converged`),b>0&&d.push(`${b} workspace(s) need attention before safe coordination`),k>0&&d.push(`${k} workspace(s) are blocked on branch convergence or upstream sync`),R>0&&d.push(`${R} clean feature branch workspace(s) still need merge follow-up`),E>0&&d.push(`${E} worktree workspace(s) are ready for refine / cleanup`),D>0&&d.push(`${D} workspace(s) have local changes or conflicts blocking convergence`),_>0&&d.push(`${_} workspace(s) report merge conflicts`),w>0&&d.push(`${w} node(s) are currently offline`),m>0&&d.push(`${m} submodule(s) are out of sync with their parent checkout`),d.push(...te),a||d.push("Could not infer a default branch from live mesh status"),{meshId:t.meshId,meshName:t.meshName,repoIdentity:t.repoIdentity,refreshedAt:t.refreshedAt,nodes:l,edges:i,stats:{totalNodes:g.length,onlineNodes:g.filter(N=>N.health==="online").length,dirtyNodes:g.filter(N=>N.dirty).length,orphanNodes:b,errorNodes:g.filter(N=>!!N.error||N.outOfSync).length,offlineNodes:w,followUpNodes:S,blockedReviewNodes:k,mergeReadyNodes:R,cleanupCandidateNodes:E,notMergeableNodes:D,incompleteSnapshotNodes:M,pendingGitSnapshotNodes:O,missingGitSnapshotNodes:P,missingSubmoduleSnapshotNodes:I,staleGitSnapshotNodes:y,activeRefineNodes:$,failedRefineNodes:W,totalActiveSessions:g.reduce((N,C)=>N+C.activeSessionCount,0)},warnings:d,snapshotWarnings:te}}function jt(e){return[...new Set(e.filter(t=>!!t))]}function Hr(e){const t=e.nodes.find(l=>l.type==="defaultBranchNode")??null,n=(t==null?void 0:t.branch)??null,a=e.nodes.filter(l=>l.type!=="defaultBranchNode"&&l.type!=="submoduleNode"&&!l.isOrphan&&!!n&&l.branch===n),r=e.nodes.filter(l=>l.type!=="submoduleNode"&&!l.isOrphan),o=e.nodes.filter(l=>l.type!=="submoduleNode");return t||a.length>0?jt([t==null?void 0:t.id,...a.map(l=>l.id)]):r.length>0?jt(r.map(l=>l.id)):o.length>0?jt(o.map(l=>l.id)):jt(e.nodes.map(l=>l.id))}function Nn(e){const t=[...e.nodes].sort((a,r)=>a.id.localeCompare(r.id)).map(a=>[a.id,a.type,a.branch??"",a.parentNodeId??"",a.submodulePath??""].join(":")).join("|"),n=[...e.edges].sort((a,r)=>a.id.localeCompare(r.id)).map(a=>[a.id,a.source,a.target,a.type].join(":")).join("|");return`${e.meshId}::${t}::${n}`}function Gr(e,t,n){const a=Math.max(0,Math.round(t)),r=Math.max(0,Math.round(n));return`${Nn(e)}::${a}x${r}`}function Wr(e){return e.ahead<=0&&e.behind<=0?null:e.ahead>0&&e.behind>0?`ahead ${e.ahead} / behind ${e.behind}`:e.behind>0?`behind ${e.behind}`:`ahead ${e.ahead}`}function Lt(e){if(e.type==="submoduleNode")return e.outOfSync||e.error?{label:"submodule drift",tone:"danger"}:e.dirty?{label:"submodule dirty",tone:"warn"}:null;if(e.inProgress)return{label:"working",tone:"info"};const t=e.branchConvergence;if((t==null?void 0:t.status)==="not_mergeable")return{label:e.hasConflicts?"conflicts present":"dirty workspace",tone:"danger"};if((t==null?void 0:t.status)==="blocked_review"){if(t.reason==="upstream_unverified"||t.reason.endsWith("_upstream_unverified"))return{label:"upstream unverified",tone:"warn"};const n=Wr(e);return n?{label:n,tone:"danger"}:!e.upstream&&e.branch&&e.branch!==t.defaultBranch?{label:"push branch",tone:"warn"}:{label:"blocked review",tone:"danger"}}return e.refineJobStatus==="failed"?{label:"refine failed",tone:"danger"}:e.refineJobStatus==="running"||e.refineJobStatus==="accepted"?{label:"refining…",tone:"info"}:(t==null?void 0:t.status)==="pushed_feature_branch_needs_merge"?{label:"needs merge",tone:"warn"}:(t==null?void 0:t.status)==="cleanup_candidate"?{label:"refine worktree",tone:"info"}:e.isOrphan?{label:"needs follow-up",tone:"warn"}:e.health==="offline"?{label:"offline",tone:"danger"}:null}function hs(e){var t;return e.nextStepHint??((t=e.branchConvergence)==null?void 0:t.nextStep)??null}const Ur={blocked_review:"mesh.hint.daemon.blockedReview",pushed_feature_branch_needs_merge:"mesh.hint.daemon.needsMerge",cleanup_candidate:"mesh.hint.daemon.cleanup",not_mergeable:"mesh.hint.daemon.notMergeable",merged_to_main:"mesh.hint.daemon.merged"};function Hs(e,t){var l;if(e.inProgress)return null;const n=hs(e);if(!n)return null;const a=e.nextStepHintI18n;if(a)return{text:t(a.key,a.params),detail:a.detail??null};const r=(l=e.branchConvergence)==null?void 0:l.status,o=r&&Ur[r]||"mesh.hint.daemon.followUp";return{text:t(o),detail:n}}function kn(e){var t;return e.inProgress||!hs(e)||e.type==="defaultBranchNode"?!1:!!((t=e.branchConvergence)!=null&&t.needsConvergence||e.isOrphan||e.hasConflicts||e.outOfSync||e.error||e.health==="offline"||e.health==="degraded"||e.health==="wrong_branch"||e.dirty)}const Kr=6e4;function zr(e,t=Date.now()){const n=e.gitObservation;return!n||n.source==="self"||n.source==="local"?null:n.unreachableSince!==null&&n.unreachableSince!==void 0?{kind:"unreachable",observedAt:n.observedAt??null,unreachableSince:n.unreachableSince}:n.observedAt===null||n.observedAt===void 0?n.refreshing?{kind:"fetching"}:null:n.refreshing?{kind:"refreshing",observedAt:n.observedAt}:t-n.observedAt>=Kr?{kind:"aged",observedAt:n.observedAt}:null}const rt={worktreeCardWidth:256,submoduleCardWidth:180,anchorCardWidth:232,minWorktreeCardHeight:150,minSubmoduleCardHeight:56,minAnchorCardHeight:44,maxEstimatedCardHeight:360,layerGap:220,nodeGap:82,edgeLabelBuffer:180,placeholderTopOffset:0},pt={worktreeCardWidth:188,submoduleCardWidth:156,anchorCardWidth:196,minWorktreeCardHeight:88,minSubmoduleCardHeight:50,minAnchorCardHeight:40,maxEstimatedCardHeight:230,layerGap:160,nodeGap:52,edgeLabelBuffer:120},Vr={maxWidth:180};function qr(e){return e==="TB"?"DOWN":"RIGHT"}function ps(e,t){return{"elk.algorithm":"layered","elk.direction":qr(t),"elk.edgeRouting":"ORTHOGONAL","elk.spacing.nodeNode":String(e.nodeGap),"elk.layered.spacing.nodeNodeBetweenLayers":String(e.layerGap),"elk.layered.spacing.edgeNodeBetweenLayers":String(e.edgeLabelBuffer),"elk.layered.layering.strategy":"NETWORK_SIMPLEX","elk.layered.nodePlacement.strategy":"NETWORK_SIMPLEX","elk.layered.crossingMinimization.strategy":"LAYER_SWEEP","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES","elk.layered.cycleBreaking.strategy":"GREEDY","elk.layered.mergeEdges":"false","elk.randomSeed":"1"}}const Yr=ps(rt,"LR");ps(pt,"LR");const Qr=new hn;function Ke(e,t=!1){const n=t?pt:rt;return e.type==="submoduleNode"?n.submoduleCardWidth:e.type==="defaultBranchNode"?n.anchorCardWidth:n.worktreeCardWidth}function Me(e,t,n,a){return e?e(t,a):n}function Sn(e,t){return e.ahead<=0&&e.behind<=0?null:e.ahead>0&&e.behind>0?Me(t,"mesh.attention.aheadBehind",`ahead ${e.ahead} / behind ${e.behind}`,{ahead:e.ahead,behind:e.behind}):e.behind>0?Me(t,"mesh.attention.behind",`behind ${e.behind}`,{count:e.behind}):Me(t,"mesh.attention.ahead",`ahead ${e.ahead}`,{count:e.ahead})}function ss(e,t){var a;if(e.type==="defaultBranchNode")return t&&e.nextStepHintI18n?t(e.nextStepHintI18n.key,e.nextStepHintI18n.params):e.nextStepHint||Me(t,"mesh.summary.anchor","Default branch anchor");if(e.type==="submoduleNode"){const r=[e.machineLabel?Me(t,"mesh.summary.parent",`parent ${e.machineLabel}`,{label:e.machineLabel}):null];return e.outOfSync?r.push(Me(t,"mesh.panel.outOfSyncBadge","out of sync")):e.dirty?r.push(Me(t,"mesh.summary.localChanges","local changes")):r.push(Me(t,"mesh.panel.submoduleSynced","synced")),r.filter(Boolean).join(" · ")}const n=[];if(e.upstream&&n.push(e.upstream),e.upstream&&e.upstreamStatus!=="fresh")n.push(Me(t,"mesh.attention.upstreamUnverified","upstream unverified"));else{const r=Sn(e,t);r&&n.push(r)}return e.activeSessionCount>0&&n.push(Me(t,"mesh.summary.sessions",`${e.activeSessionCount} session${e.activeSessionCount===1?"":"s"}`,{count:e.activeSessionCount})),e.dirtyFiles>0&&n.push(Me(t,"mesh.drift.changed",`${e.dirtyFiles} changed`,{count:e.dirtyFiles})),e.hasConflicts&&n.push(Me(t,"mesh.summary.conflicts","conflicts")),n.length===0?(a=e.branchConvergence)!=null&&a.needsConvergence?Me(t,"mesh.attention.needsFollowUp","Needs follow-up"):Me(t,"mesh.summary.clean","Clean and even with upstream"):n.join(" · ")}const Jr=2;function ms(e,t=!1){var _;const n=t?pt:rt;if(e.type==="defaultBranchNode")return n.minAnchorCardHeight;if(e.type==="submoduleNode")return n.minSubmoduleCardHeight;const a=Ke(e,t),r=t?22:30,o=t?2:3,l=Math.ceil(Xr(e)/o),i=Nt(e.label,r,2),d=Nt(e.machineLabel||e.workspace,r,2),u=Nt(ss(e),r+(t?1:4),t?2:3),h=Lt(e),c=kn(e)?hs(e):null,f=t?0:Nt(c,Math.max(24,Math.floor(a/8)),4),x=((_=e.sessionDetails)==null?void 0:_.length)??0,j=Math.min(Jr,x),g=x>0?t?14+j*36+(x>j?14:0):46+j*48+(x>j?16:0):0,b=t?40+i*16+d*12+(h?22:0)+Math.max(0,l-1)*18+g:52+i*18+d*14+(h?30:0)+l*24+Math.max(22,u*18)+g+(f>0?22+f*16:0);return Math.min(n.maxEstimatedCardHeight,Math.max(n.minWorktreeCardHeight,Math.ceil(b)))}function Nt(e,t,n){const a=(e||"").trim();return a?Math.max(1,Math.min(n,Math.ceil(a.length/t))):0}function Xr(e){let t=e.health==="online"?0:1;return e.branch&&(t+=1),e.locality==="remote"&&(t+=1),(e.connectionTransport||e.connectionRttMs!=null)&&(t+=1),e.dirty&&(t+=1),e.outOfSync&&(t+=1),e.hasConflicts&&(t+=1),e.upstream&&e.upstreamStatus!=="fresh"&&(t+=1),e.isOrphan&&(t+=1),t}function Zr(e,t){return e.type==="defaultBranchNode"&&t.type!=="defaultBranchNode"?-1:t.type==="defaultBranchNode"&&e.type!=="defaultBranchNode"||e.type==="submoduleNode"&&t.type!=="submoduleNode"?1:t.type==="submoduleNode"&&e.type!=="submoduleNode"?-1:e.branch&&t.branch&&e.branch!==t.branch?e.branch.localeCompare(t.branch):e.branch&&!t.branch?-1:!e.branch&&t.branch?1:e.label.localeCompare(t.label)||e.id.localeCompare(t.id)}function eo(e,t){return e.source.localeCompare(t.source)||e.target.localeCompare(t.target)||e.id.localeCompare(t.id)}function to(e,t,n,a=!0){return{id:e.id,type:"meshNode",position:{x:t,y:n},graphNode:e,selected:!1,draggable:!1,selectable:a}}function so(e,t,n){return{id:e.id,x:t,y:n,width:Ke(e),height:ms(e)}}function no(e,t){return{id:`${e.id}__placeholder`,type:"worktreeNode",inProgress:!1,label:"No active worktrees",workspace:t.repoIdentity,branch:e.branch,upstream:null,upstreamStatus:null,daemonId:null,machineId:null,machineLabel:null,locality:"unknown",connectionTransport:null,connectionState:null,connectionReason:null,connectionReported:!1,connectionRttMs:null,health:"unknown",ahead:0,behind:0,dirty:!1,dirtyFiles:0,hasConflicts:!1,activeSessionCount:0,activeSessions:[],sessionDetails:[],providers:[],isOrphan:!1,orphanReasons:[],nextStepHint:"Waiting for worktree nodes to report live mesh status.",error:void 0,parentNodeId:null,submodulePath:null,submoduleCommit:null,outOfSync:!1,snapshotCompleteness:"complete",snapshotWarnings:[],branchConvergence:null,source:{nodeId:`${e.id}__placeholder`,machineLabel:"",workspace:t.repoIdentity,health:"unknown",providers:[],activeSessions:[]}}}function Cn(e){const t=[...e.nodes].sort(Zr),n=t.find(r=>r.type==="defaultBranchNode")??null,a=t.some(r=>r.id!==(n==null?void 0:n.id)&&r.type!=="submoduleNode");return!n||a?t:[...t,no(n,e)]}function ao(e,t=Yr,n=!1,a="LR"){const r=Cn(e),o=new Set(r.map(d=>d.id)),l=r.map(d=>({id:d.id,width:Ke(d,n),height:ms(d,n)})),i=e.edges.filter(d=>o.has(d.source)&&o.has(d.target)).sort(eo).map(d=>({id:d.id,sources:[d.source],targets:[d.target]}));return{id:`${e.meshId||"mesh"}__elk_root`,layoutOptions:{...t},children:l,edges:i}}function ro(e,t=!1){const n=[...new Set(e.map(r=>Math.round(r.x)))].sort((r,o)=>r-o),a=t?pt.layerGap:rt.layerGap;return n.length<2?a:Math.min(...n.slice(1).map((r,o)=>r-n[o]))}async function Mn(e,t=!1,n="LR",a){var j,g;const o=ps(t?pt:rt,n),l=Cn(e),i=new Map(l.map(b=>[b.id,b])),d=ao(e,o,t,n);if(a&&a.size>0)for(const b of d.children??[]){const _=a.get(b.id);_&&_>0&&(b.height=_)}const u=await Qr.layout(d),h=(u.children??[]).map(b=>{const _=i.get(b.id);return _?to(_,Math.round(b.x??0),Math.round(b.y??rt.placeholderTopOffset),!b.id.endsWith("__placeholder")):null}).filter(Boolean),c=new Map(l.map((b,_)=>[b.id,_]));h.sort((b,_)=>(c.get(b.id)??0)-(c.get(_.id)??0));const f=h.map(b=>so(b.graphNode,b.position.x,b.position.y)),x=new Map;for(const b of u.edges??[]){const _=b.sections;if(!_||_.length===0)continue;const w=_[0],m=(j=b.sources)==null?void 0:j[0],S=(g=b.targets)==null?void 0:g[0];if(!m||!S)continue;const k=[];k.push({x:Math.round(w.startPoint.x),y:Math.round(w.startPoint.y)});for(const R of w.bendPoints??[])k.push({x:Math.round(R.x),y:Math.round(R.y)});k.push({x:Math.round(w.endPoint.x),y:Math.round(w.endPoint.y)}),x.set(b.id,{id:b.id,source:m,target:S,points:k})}return{nodes:h,bounds:f,edgeRoutes:x,columnGap:ro(f,t),layoutOptions:{...o}}}function oo(e){var t,n,a,r,o,l;return[e.id,e.type,e.label,e.branch??"",e.upstream??"",e.upstreamStatus??"",e.daemonId??"",e.machineId??"",e.machineLabel??"",e.locality,e.health,e.ahead,e.behind,e.dirty?1:0,e.dirtyFiles,e.hasConflicts?1:0,e.activeSessionCount,e.sessionDetails.map(i=>[i.sessionId,i.providerType??"",i.state??"",i.chatStatus??"",i.lifecycle??"",i.role??"",i.isSelfCoordinator?1:0,i.statusNote??"",i.startedAt??"",i.createdAt??""].join("/")).join(","),e.isOrphan?1:0,e.outOfSync?1:0,e.snapshotCompleteness,((t=e.branchConvergence)==null?void 0:t.status)??"",(n=e.branchConvergence)!=null&&n.needsConvergence?1:0,e.nextStepHint??"",e.error??"",e.parentNodeId??"",e.submodulePath??"",e.submoduleCommit??"",((a=e.gitObservation)==null?void 0:a.source)??"",((r=e.gitObservation)==null?void 0:r.observedAt)??"",(o=e.gitObservation)!=null&&o.refreshing?1:0,((l=e.gitObservation)==null?void 0:l.unreachableSince)??""].join("|")}function $n(e){return[e.id,e.source,e.target,e.type,e.label??"",e.direction].join("|")}function io(e){return[e.meshId,e.refreshedAt,e.nodes.length,e.edges.length,...e.nodes.map(oo),...e.edges.map($n)].join("::")}function lo(e){return[e.meshId,e.nodes.length,e.edges.length,...e.nodes.map(t=>{var n,a;return[t.id,t.type,t.label,t.branch??"",t.machineLabel??"",t.locality,t.health,t.dirty?1:0,t.dirtyFiles,t.hasConflicts?1:0,t.activeSessionCount,t.isOrphan?1:0,t.outOfSync?1:0,t.snapshotCompleteness,((n=t.branchConvergence)==null?void 0:n.status)??"",(a=t.branchConvergence)!=null&&a.needsConvergence?1:0,t.nextStepHint??"",t.parentNodeId??"",t.submodulePath??"",t.submoduleCommit??""].join("|")}),...e.edges.map($n)].join("::")}function ns(e){return e.type==="orphanLink"?"var(--status-warning)":"var(--text-muted)"}function co(e){return In[e]}const uo=["parentBranch","cloneLink","worktreeLink","submoduleLink","sessionLink","orphanLink"],ho={parentBranch:"mesh.legendEdge.parentBranch",cloneLink:"mesh.legendEdge.cloneLink",worktreeLink:"mesh.legendEdge.worktreeLink",submoduleLink:"mesh.legendEdge.submoduleLink",sessionLink:"mesh.legendEdge.sessionLink",orphanLink:"mesh.legendEdge.orphanLink"},In={cloneLink:"6 3",worktreeLink:"2 3",submoduleLink:"8 3 2 3",sessionLink:"1 4",orphanLink:"5 4"};function po({edges:e}){const{t}=J("common"),n=p.useMemo(()=>{const a=new Set;for(const r of e)a.add(r.type);return uo.filter(r=>a.has(r))},[e]);return n.length===0?null:s.jsx("div",{className:"flex flex-col gap-1",children:n.map(a=>s.jsxs("span",{className:"flex items-center gap-2 text-2xs",children:[s.jsx("svg",{width:"18",height:"4","aria-hidden":!0,children:s.jsx("line",{x1:"0",y1:"2",x2:"18",y2:"2",style:{stroke:ns({type:a})},strokeWidth:"1.5",strokeDasharray:In[a]})}),t(ho[a])]},a))})}const tt=2,Ln=p.createContext(Je("dark")),An=p.createContext(!1),_n=p.createContext("LR"),En=p.createContext(!0),Bn={overflowWrap:"anywhere",wordBreak:"break-word"},mo={...Bn,display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:3,overflow:"hidden"},fo={...Bn,display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:4,overflow:"hidden"};function xo(e){return e.activeSessionCount>0}function go(e){return e.health==="offline"||e.snapshotCompleteness==="stale"&&e.activeSessionCount===0}function Wt(e,t){const n=go(e),a="bg-bg-card";if(t)return`${a} border-accent ring-1 ring-accent/50`;const r=Lt(e),o=n?" opacity-60":"";return(r==null?void 0:r.tone)==="danger"||e.health==="degraded"?`${a} border-status-error/40${o}`:(r==null?void 0:r.tone)==="warn"?`${a} border-status-warning/40${o}`:n?`${a} border-border-subtle opacity-60`:`${a} border-border-default`}function Ne(e){switch(e){case"refineDone":return ye("good");case"dirty":return ye("warn");case"conflict":return ye("danger");case"orphan":return ye("warn");case"health":case"submodule":case"meta":default:return ye("neutral")}}function Gs(e){switch(e){case"danger":return ye("danger");case"warn":return ye("warn");case"good":return ye("good");case"info":default:return ye("neutral")}}function Ut(e){switch(e){case"online":return"var(--status-online)";case"dirty":case"wrong_branch":return"var(--status-warning)";case"degraded":return"var(--status-error)";case"offline":return"var(--status-offline)";default:return"var(--text-muted)"}}function bo(e){return e.replace(/_/g," ")}const fs=ut;function vo(e){var t;return((t=e.sessionDetails)==null?void 0:t.some(n=>fs(n)==="generating"))??!1}function Ws(e){const t=fs(e);return t.includes("approval")?ye("warn"):t==="generating"?"border-accent/40 text-accent":t.includes("failed")||t.includes("stopped")||t.includes("interrupted")?ye("danger"):ye("neutral")}function yo(){return ye("neutral")}function kt(e,t){switch(e){case"easy":return t("mesh.difficulty.easy");case"medium":return t("mesh.difficulty.medium");case"difficult":return t("mesh.difficulty.difficult");case"freeform":return t("mesh.difficulty.freeform");default:return e}}function wo(e){if(!e)return null;const t=Date.parse(e);return Number.isFinite(t)?t:null}function Kt(e){const t=wo(e);return t===null?"":ga(Math.max(0,Date.now()-t))}function jo(e,t){if(e.sessionDetails.length===0)return null;const n=e.sessionDetails.filter(l=>fs(l)==="generating").length,a=e.sessionDetails.filter(l=>l.isSelfCoordinator).length,r=e.sessionDetails.length-a,o=[t("mesh.panel.chats",{count:e.sessionDetails.length})];return n>0&&o.push(t("mesh.panel.generatingCount",{count:n})),a>0&&o.push(a===1?t("mesh.panel.coordinatorAttached"):t("mesh.panel.coordinators",{count:a})),r>0&&o.push(t("mesh.panel.workers",{count:r})),n===0&&a>0&&o.push(t("mesh.panel.sampledStatus")),o.join(" · ")}const No={"submodule drift":"mesh.attention.submoduleDrift","submodule dirty":"mesh.attention.submoduleDirty","conflicts present":"mesh.attention.conflictsPresent","dirty workspace":"mesh.attention.dirtyWorkspace","upstream unverified":"mesh.attention.upstreamUnverified","push branch":"mesh.attention.pushBranch","blocked review":"mesh.attention.blockedReview","refine failed":"mesh.attention.refineFailed",working:"mesh.attention.working","refining…":"mesh.attention.refining","needs merge":"mesh.attention.needsMerge","refine worktree":"mesh.attention.refineWorktree","needs follow-up":"mesh.attention.needsFollowUp",offline:"mesh.attention.offline"};function ko(e,t){const n=a=>ba(a,{nowLabel:"<1m"});switch(e.kind){case"fetching":return t("mesh.graph.observationFetching");case"refreshing":return t("mesh.graph.observationRefreshing",{age:n(e.observedAt)});case"aged":return t("mesh.graph.observationAsOf",{age:n(e.observedAt)});case"unreachable":return e.observedAt===null?t("mesh.graph.observationUnreachableNoState"):t("mesh.graph.observationUnreachable",{age:n(e.observedAt)})}}function zt(e,t,n){const a=No[e];if(a)return n(a);const r=Sn(t,n);return r&&/^(ahead|behind) /.test(e)?r:e}function So(e){const t=(e||"").trim().replace(/[\\/]+$/,"");return t?t.split(/[\\/]+/).filter(Boolean).slice(-2).join("/"):""}function Co({data:e,selected:t}){var C;const{t:n}=J("common"),a=p.useContext(Ln),r=p.useContext(An),o=p.useContext(_n),l=p.useContext(En),i=e.graphNode,d=i.type==="defaultBranchNode",u=i.type==="submoduleNode",h=kn(i),c=[i.machineLabel,i.locality==="remote"?n("mesh.panel.remote"):null].filter(Boolean).join(" · "),f=So(i.workspace),x=l?c||f||i.workspace:f||c||i.workspace,j=i.submoduleCommit?i.submoduleCommit.slice(0,7):null,g=zr(i),b=g?ko(g,n):null,_=(g==null?void 0:g.kind)==="unreachable"?Ne("dirty"):Ne("meta"),w=!!b&&((g==null?void 0:g.kind)==="aged"||(g==null?void 0:g.kind)==="unreachable"),m=(g==null?void 0:g.kind)==="unreachable"?n("mesh.graph.observationUnreachableChip"):n("mesh.graph.observationStaleChip");if(d){const L=Lt(i);return s.jsxs("div",{className:`rounded-lg border bg-bg-card px-3 py-2 transition-colors ${t?"border-accent ring-1 ring-accent/50":"border-border-default"}`,style:{width:Ke(i,r)},title:[i.label,ss(i,n),L?zt(L.label,i,n):null].filter(Boolean).join(`
|
|
1
|
+
import{u as J,r as p,j as s}from"./vendor-DYaHHPPA.js";import{I as ha,a as es,n as Ve,c as sn,i as pa,b as ma,r as fa,g as Je,d as xa,M as fe,m as ye,s as Oe,e as Ye,f as Ct,h as nt,j as ga,k as ba,l as ut,u as ht,o as va,p as ya,q as Xe,t as wa,B as Z,T as Fe,v as Mt,w as ja,x as Na,y as As,z as nn,A as ka,S as Sa,C as $t,D as It,E as Ca,F as Ma,G as $a,H as Ia,J as Re,K as Bt,L as La,N as an,O as Aa,P as _a,Q as Ea,R as at,U as rn,V as on,W as Ze,X as _s,Y as ts,Z as Ba,_ as ln,$ as Es,a0 as cn,a1 as dn,a2 as ls,a3 as Ra,a4 as Da,a5 as Pa,a6 as Oa,a7 as Fa,a8 as Ta,a9 as Ha,aa as Ga,ab as Ht,ac as Wa,ad as Ua,ae as Ka,af as za,ag as Va,ah as et,ai as Bs,aj as qa,ak as Ya,al as un,am as Qa,an as Ja,ao as Xa,ap as Za,aq as er,ar as tr,as as sr,at as nr,au as ar}from"./index-Dsj3cO-f.js";import{av as uc,aw as hc,ax as pc}from"./index-Dsj3cO-f.js";import{E as hn,H as Ie,P as xe,i as cs,C as pn,M as rr,B as or,a as ir,b as lr,c as cr,u as dr,d as mn,e as ds,g as Rs,f as ur,h as hr,j as fn}from"./mesh-graph-D5Tty0nT.js";function pr(e,t){if(e==null||!Number.isFinite(e))return null;const n=t-e;if(!Number.isFinite(n)||n<0)return null;const a=Math.floor(n/1e3);if(a<60)return`${a}s`;const r=Math.floor(a/60);return r<60?`${r}m`:`${Math.floor(r/60)}h ${String(r%60).padStart(2,"0")}m`}function mr(e){return`${e.state??""} ${e.chatStatus??""} ${e.lifecycle??""}`.toLowerCase()}function fr(e){if(!Array.isArray(e))return[];const t=[];for(const n of e){const a=n.activeSessionDetails;if(Array.isArray(a))for(const r of a)r!=null&&r.sessionId&&mr(r).includes("approval")&&t.push({nodeId:n.nodeId,sessionId:r.sessionId,providerType:r.providerType,machineLabel:Ve(n)||n.nodeId,detail:r.statusNote??r.title??null})}return t}function xr({approvals:e,nodes:t,onResolve:n,hideWhenEmpty:a=!0,nowMs:r}){const{t:o}=J(),l=r??Date.now(),i=p.useMemo(()=>e??fr(t),[e,t]),[d,u]=p.useState({});if(a&&i.length===0)return null;const h=(c,f)=>{d[c.sessionId]||(u(x=>({...x,[c.sessionId]:f})),Promise.resolve(n(c.nodeId,c.sessionId,f)).finally(()=>{u(x=>{const j={...x};return delete j[c.sessionId],j})}))};return s.jsxs("div",{className:"rounded-lg border p-3",style:{borderColor:"color-mix(in srgb, var(--status-warning) 40%, transparent)",background:"color-mix(in srgb, var(--status-warning) 8%, transparent)"},children:[s.jsxs("div",{className:"flex items-center gap-2 mb-2 font-black text-xs",style:{color:"var(--status-warning)"},children:[s.jsx(ha,{size:14}),o("mesh.approvals.title"),s.jsxs("span",{className:"opacity-70 font-semibold",children:["(",i.length,")"]})]}),i.length===0?s.jsx("div",{className:"text-2xs opacity-70",children:o("mesh.approvals.empty")}):s.jsx("ul",{className:"flex flex-col gap-2",children:i.map(c=>{const f=d[c.sessionId]??null,x=f!==null,j=pr(c.waitingSince,l);return s.jsxs("li",{className:"flex items-center justify-between gap-3 rounded-md px-2.5 py-2",style:{background:"color-mix(in srgb, var(--surface-primary) 82%, transparent)"},children:[s.jsxs("div",{className:"min-w-0",children:[s.jsxs("div",{className:"text-xs font-semibold truncate",children:[c.machineLabel||c.nodeId,c.providerType&&s.jsx("span",{className:"ml-2 opacity-60 font-normal",children:c.providerType}),j&&s.jsx("span",{className:"ml-2 font-bold text-3xs",style:{color:"var(--status-warning)"},title:o("mesh.approvals.waitingFor",{duration:j}),children:j})]}),s.jsx("div",{className:"text-3xs opacity-60 truncate",children:c.detail?c.detail.replace(/[\n\r]+/g," ").slice(0,120):o("mesh.approvals.sessionFallback",{id:c.sessionId})}),c.options&&c.options.length>0&&s.jsx("div",{className:"mt-1 flex flex-wrap gap-1",children:c.options.slice(0,4).map((g,b)=>s.jsx("span",{className:"text-4xs px-1.5 py-0.5 rounded opacity-70",style:{background:"color-mix(in srgb, var(--text-muted) 15%, transparent)"},children:g.replace(/[⌥⏎⇧⌫⌘⌃]/g,"").trim().slice(0,32)},`${g}-${b}`))})]}),s.jsxs("div",{className:"flex gap-2 shrink-0",children:[s.jsx("button",{onClick:()=>h(c,"approve"),disabled:x,className:`btn btn-sm border-none rounded-md text-xs px-3 py-1 font-extrabold ${x?"cursor-not-allowed opacity-60":"cursor-pointer"}`,style:{color:"var(--status-warning)",background:"var(--surface-primary)"},children:f==="approve"?s.jsx(es,{size:12}):o("mesh.approvals.approve")}),s.jsx("button",{onClick:()=>h(c,"reject"),disabled:x,className:`btn btn-sm border-none rounded-md text-xs px-3 py-1 font-semibold text-white bg-red-500/30 ${x?"cursor-not-allowed opacity-60":"cursor-pointer"}`,children:f==="reject"?s.jsx(es,{size:12}):o("mesh.approvals.reject")})]})]},`${c.nodeId}:${c.sessionId}`)})})]})}const gr=5*60*1e3;function xn(e){return typeof e.daemonId=="string"&&e.daemonId.trim()?e.daemonId.trim():null}function gn(e){return typeof e.machineId=="string"&&e.machineId.trim()?e.machineId.trim():null}function br(e){var t,n,a;return((t=e.connection)==null?void 0:t.state)==="self"||e.isLocalWorktree===!0?"local":((n=e.connection)==null?void 0:n.transport)==="direct"||((a=e.connection)==null?void 0:a.transport)==="relay"||xn(e)||gn(e)?"remote":"unknown"}function vr(e){const t=e.connection;if(!t)return{connectionTransport:null,connectionState:null,connectionReason:null,connectionReported:!1,connectionRttMs:null};const n=t.rttMs,a=typeof n=="number"&&Number.isFinite(n)&&n>=0?n:null;return{connectionTransport:t.transport??null,connectionState:t.state??null,connectionReason:typeof t.reason=="string"&&t.reason.trim()?t.reason.trim():null,connectionReported:t.reported===!0,connectionRttMs:a}}function bn(e){const t=e.connectionTransport;if(t==="direct"||t==="relay"||t==="local")return t;const n=e.connectionState;return n==="connecting"?"connecting":n==="disconnected"?"disconnected":n==="failed"?"failed":n==="closed"?"closed":null}function yr(e){if(e.connectionTransport==="local"||e.connectionState==="self")return null;const t=bn(e);return!t||t==="local"||typeof e.connectionRttMs!="number"||!Number.isFinite(e.connectionRttMs)?null:`${Math.round(e.connectionRttMs)}ms`}function wr(e){return fa(e)}function vn(e){var t;return wr(e)?!1:!!(e.gitProbePending||((t=e.connection)==null?void 0:t.state)==="connecting")}function yn(e){if(!e)return null;const t=Date.parse(e);return Number.isNaN(t)?null:t}function jr(e){var n;const t=new Map;for(const a of((n=e.queue)==null?void 0:n.tasks)??[])a.assignedSessionId&&a.difficulty&&t.set(a.assignedSessionId,a.difficulty);return t}function Nr(e,t){return(e.activeSessionDetails&&e.activeSessionDetails.length>0?e.activeSessionDetails:(e.activeSessions??[]).map(a=>({sessionId:a,workspace:e.workspace,isCached:!0}))).map(a=>{const r=t.get(a.sessionId);return r?{...a,difficulty:r}:a})}function wn(e){return e?e.staged+e.modified+e.untracked+e.deleted+e.renamed>0:!1}function jn(e){return((e==null?void 0:e.submodules)??[]).some(t=>t.dirty)}function us(e){return((e==null?void 0:e.submodules)??[]).some(t=>t.outOfSync||!!t.error)}function kr(e){return us(e)?"degraded":jn(e)?"dirty":"online"}function Sr(e){return e?e.staged+e.modified+e.untracked+e.deleted+e.renamed:0}function Ds(e){switch(e){case"online":return 0;case"dirty":return 1;case"degraded":return 2;case"wrong_branch":return 3;case"offline":return 4;case"unknown":default:return 5}}function Gt(e){return e.length===0?"unknown":e.reduce((t,n)=>Ds(n)>Ds(t)?n:t)}function Cr(e){var o,l,i,d,u;const t=new Map,n=new Map;for(const h of e){const c=(l=(o=h.git)==null?void 0:o.branch)==null?void 0:l.trim();c&&(n.set(c,(n.get(c)??0)+1),(i=h.git)!=null&&i.upstream&&t.set(c,(t.get(c)??0)+1))}const a=[...t.entries()].sort((h,c)=>{if(c[1]!==h[1])return c[1]-h[1];const f=["main","master","develop","dev"],x=f.indexOf(h[0]),j=f.indexOf(c[0]);return x!==-1||j!==-1?x===-1?1:j===-1?-1:x-j:h[0].localeCompare(c[0])});return(d=a[0])!=null&&d[0]?a[0][0]:((u=[...n.entries()].sort((h,c)=>c[1]-h[1])[0])==null?void 0:u[0])??null}function Mr(e,t){var l;const n=[],a=e.git;if(!a)return n.push({text:"No git status available",hint:{key:"mesh.hint.noGitStatus"}}),n;if(!a.isGitRepo)return n.push({text:"Not a git repository",hint:{key:"mesh.hint.notGitRepo"}}),n;!a.branch&&a.headCommit&&n.push({text:"Detached HEAD",hint:{key:"mesh.hint.detachedHead"}}),a.hasConflicts&&n.push({text:"Merge conflicts need resolution",hint:{key:"mesh.hint.mergeConflicts"}});const r=(l=e.branchConvergence)==null?void 0:l.status,o=e.isLocalWorktree===!0||!!e.worktreeBranch||!!e.clonedFromNodeId||r==="merged_to_main"||r==="cleanup_candidate";return a.branch&&t&&a.branch!==t&&!a.upstream&&!o&&n.push({text:`No upstream tracking for ${a.branch}`,hint:{key:"mesh.hint.noUpstream",params:{branch:a.branch}}}),a.upstream&&a.upstreamStatus&&a.upstreamStatus!=="fresh"&&n.push({text:`Upstream freshness unverified for ${a.branch??"workspace"}`,hint:{key:"mesh.hint.upstreamUnverified",params:{branch:a.branch??""}}}),e.error&&n.push({text:e.error,hint:{key:"mesh.hint.nodeError",detail:e.error}}),n}function Ps(e){switch(e){case"merged_to_main":return 0;case"pushed_feature_branch_needs_merge":return 1;case"cleanup_candidate":return 2;case"blocked_review":return 3;case"not_mergeable":default:return 4}}function $r(e){return e.reduce((t,n)=>Ps(n.status)>Ps(t.status)?n:t)}function Ir(e){const t=e.branchConvergenceSummary;if(Array.isArray(t==null?void 0:t.followUps))return t.followUps;const n=e.followUps;return Array.isArray(n)?n:(t==null?void 0:t.needsFollowUp)===!1||(t==null?void 0:t.unresolvedCount)===0?[]:null}function Lr(e){var r,o,l;const t=e.sourceOfTruth,n=[],a=(r=t==null?void 0:t.fallback)==null?void 0:r.warning;return typeof a=="string"&&a.trim()&&n.push(a.trim()),(t==null?void 0:t.currentStatus)==="bootstrap_inventory_fallback"&&((o=t.directPeerTruth)==null?void 0:o.required)===!0&&((l=t.directPeerTruth)==null?void 0:l.satisfied)!==!0&&!n.some(i=>i.includes("direct mesh truth"))&&n.push("Direct mesh truth is not confirmed yet; this graph is drawn from setup inventory only."),n}function Ar(e){const t=e.asyncRefineJobs;if(!Array.isArray(t))return[];const n=[];for(const a of t){if(!a||typeof a!="object")continue;const r=a,o=typeof r.jobId=="string"?r.jobId:null,l=r.status;o&&(l!=="accepted"&&l!=="running"&&l!=="completed"&&l!=="failed"||n.push({jobId:o,status:l,nodeId:typeof r.nodeId=="string"?r.nodeId:void 0,targetNodeId:typeof r.targetNodeId=="string"?r.targetNodeId:void 0,workspace:typeof r.workspace=="string"?r.workspace:void 0,branch:typeof r.branch=="string"?r.branch:void 0,into:typeof r.into=="string"?r.into:void 0,lastUpdatedAt:typeof r.lastUpdatedAt=="string"?r.lastUpdatedAt:void 0,startedAt:typeof r.startedAt=="string"?r.startedAt:void 0,completedAt:typeof r.completedAt=="string"?r.completedAt:void 0}))}return n}function Os(e){return e==="running"||e==="accepted"?0:1}function Fs(e){const t=e.lastUpdatedAt||e.completedAt||e.startedAt||"";return yn(t)??0}function _r(e){return e.length===0?null:e.reduce((t,n)=>{const a=Os(t.status),r=Os(n.status);return r!==a?r<a?n:t:Fs(n)>Fs(t)?n:t})}function Er(e){var n,a;const t=new Map;for(const r of e){const o=((n=r.nodeId)==null?void 0:n.trim())||((a=r.targetNodeId)==null?void 0:a.trim());if(!o)continue;const l=t.get(o)??[];l.push(r),t.set(o,l)}return t}function Br(e,t){return e.type!=="submoduleNode"&&e.branch===t&&e.ahead===0&&e.behind===0&&!e.dirty&&!e.hasConflicts&&(!e.upstreamStatus||e.upstreamStatus==="fresh")&&e.snapshotCompleteness==="complete"}function Rr(e,t){var n,a;return{status:"merged_to_main",needsConvergence:!1,reason:"clean_default_branch_aggregate",nextStep:null,branch:e,defaultBranch:e,upstream:((n=t.find(r=>r.upstream))==null?void 0:n.upstream)??null,upstreamStatus:((a=t.find(r=>r.upstreamStatus))==null?void 0:a.upstreamStatus)??null,ahead:0,behind:0,dirty:!1,hasConflicts:!1}}function Dr(e,t){if(vn(e))return null;const n=e.branchConvergence;if(!n||typeof n!="object")return null;const a=n.status;if(!a||!["merged_to_main","pushed_feature_branch_needs_merge","blocked_review","cleanup_candidate","not_mergeable"].includes(a))return null;const r=e.git;if(a==="blocked_review"&&(n.reason==="git_status_unavailable"&&(r==null?void 0:r.isGitRepo)!==!1||n.reason==="branch_unknown"&&!(r!=null&&r.headCommit)))return null;const o=wn(r)||jn(r),l=!!(r!=null&&r.hasConflicts)||us(r),i=(r==null?void 0:r.ahead)??0,d=(r==null?void 0:r.behind)??0,u=(r==null?void 0:r.branch)??null,h=(r==null?void 0:r.upstream)??null,c=(r==null?void 0:r.upstreamStatus)??null,f=n.defaultBranch??t??null;return{status:a,needsConvergence:n.needsConvergence??a!=="merged_to_main",reason:n.reason??"provided_by_coordinator",nextStep:n.nextStep??null,branch:n.branch??u,defaultBranch:f,upstream:n.upstream??h,upstreamStatus:n.upstreamStatus??c,ahead:n.ahead??i,behind:n.behind??d,dirty:n.dirty??o,hasConflicts:n.hasConflicts??l}}function Pr(e,t){const n=Dr(e,t);return n?{...n,defaultBranch:n.defaultBranch??t}:null}function Ts(e){const t=(e||"").trim().replace(/[\\/]+$/,"");if(!t)return null;const n=t.split(/[\\/]+/).filter(Boolean);return n[n.length-1]||null}function Or(e){return e.error||e.outOfSync?"degraded":e.dirty?"dirty":"online"}function Fr(e){var u,h;const{nodeStatus:t,expectedSubmodulePaths:n,refreshedAtMs:a}=e,r=[],o=[],l=t.machineLabel||t.nodeId,i=t.git;if(!i){if(vn(t))return r.push(`${l} is still waiting for a live peer git snapshot from the selected coordinator.`),o.push({key:"mesh.hint.waitingForGit"}),{snapshotCompleteness:"pending_git",snapshotWarnings:r,snapshotWarningHints:o};const c=t.health==="online"||t.machineStatus==="online"||((u=t.connection)==null?void 0:u.state)==="connected"||((h=t.connection)==null?void 0:h.state)==="self";return r.push(c?`${l} is online but no peer git snapshot is visible yet.`:`${l} has no peer git snapshot visible yet.`),o.push({key:c?"mesh.hint.noGitYetOnline":"mesh.hint.noGitYet"}),{snapshotCompleteness:"missing_git",snapshotWarnings:r,snapshotWarningHints:o}}const d=new Set((i.submodules??[]).map(c=>c.path));if(n.size>0){const c=[...n].filter(f=>!d.has(f));c.length>0&&(r.push(`${l} is missing submodule visibility for ${c.join(", ")} even though another peer reported it.`),o.push({key:"mesh.hint.missingSubmodule",params:{paths:c.join(", ")}}))}return t.connection&&t.connection.state!=="self"&&a!==null&&(typeof i.lastCheckedAt=="number"?a-i.lastCheckedAt>gr&&(r.push(`${l} is relying on a peer git snapshot older than 5m; re-probe before trusting convergence.`),o.push({key:"mesh.hint.staleGit"})):(r.push(`${l} peer git snapshot age was not measured because no check time was reported.`),o.push({key:"mesh.hint.gitAgeUnknown"}))),r.some(c=>c.includes("submodule visibility"))?{snapshotCompleteness:"missing_submodule_report",snapshotWarnings:r,snapshotWarningHints:o}:r.some(c=>c.includes("older than 5m"))?{snapshotCompleteness:"stale",snapshotWarnings:r,snapshotWarningHints:o}:{snapshotCompleteness:"complete",snapshotWarnings:r,snapshotWarningHints:o}}function Tr(e){var Y;const t=sn(e),a=(typeof t.defaultBranch=="string"&&t.defaultBranch.trim().length>0?t.defaultBranch.trim():null)??Cr(t.nodes),r=yn(t.refreshedAt),o=new Set(t.nodes.flatMap(N=>{var C;return(((C=N.git)==null?void 0:C.submodules)??[]).map(L=>L.path)})),l=[],i=[],d=Lr(t),u=new Map,h=Er(Ar(t)),c=jr(t);for(const N of t.nodes){const C=N.git,L=(C==null?void 0:C.branch)??null,V=kr(C),le=wn(C)||V==="dirty",he=Mr(N,a),A=he.map(K=>K.text),T=Pr(N,a),v=Fr({nodeStatus:N,expectedSubmodulePaths:o,refreshedAtMs:r}),H=typeof N.clonedFromNodeId=="string"?N.clonedFromNodeId:null,Q=Nr(N,c),U=_r(h.get(N.nodeId)??[]),ne=vr(N),oe=!!N.worktreeBranch||!!H,ie={id:N.nodeId,type:A.length>0?"orphanNode":"worktreeNode",label:oe?N.worktreeBranch?`⎇ ${N.worktreeBranch}`:Ts(N.workspace)||N.machineLabel||N.nodeId.slice(0,8):N.machineLabel||Ts(N.workspace)||N.nodeId.slice(0,8),workspace:N.workspace,branch:L,upstream:(C==null?void 0:C.upstream)??null,upstreamStatus:(C==null?void 0:C.upstreamStatus)??null,daemonId:xn(N),machineId:gn(N),machineLabel:N.machineLabel||null,locality:br(N),connectionTransport:ne.connectionTransport,connectionState:ne.connectionState,connectionReason:ne.connectionReason,connectionReported:ne.connectionReported,connectionRttMs:ne.connectionRttMs,health:Gt([N.health,V]),ahead:(C==null?void 0:C.ahead)??0,behind:(C==null?void 0:C.behind)??0,dirty:le,dirtyFiles:Sr(C),hasConflicts:(C==null?void 0:C.hasConflicts)??!1,inProgress:Q.some(K=>!K.isSelfCoordinator&&(pa(K.chatStatus??K.state)||ma(K.chatStatus??K.state))),activeSessionCount:Q.length,activeSessions:Q.map(K=>K.sessionId),sessionDetails:Q,providers:N.providers??[],isOrphan:A.length>0,orphanReasons:A,error:N.error,nextStepHint:v.snapshotWarnings[0]??A[0]??(T==null?void 0:T.nextStep)??void 0,nextStepHintI18n:v.snapshotWarningHints[0]??((Y=he[0])==null?void 0:Y.hint)??null,parentNodeId:null,clonedFromNodeId:H,worktreeBranch:N.worktreeBranch??null,submodulePath:null,submoduleCommit:(C==null?void 0:C.headCommit)??null,outOfSync:us(C),snapshotCompleteness:v.snapshotCompleteness,snapshotWarnings:v.snapshotWarnings,branchConvergence:T,refineJobStatus:(U==null?void 0:U.status)??null,refineJobId:(U==null?void 0:U.jobId)??null,refineJobBranch:(U==null?void 0:U.branch)??null,refineJobInto:(U==null?void 0:U.into)??null,gitObservation:N.gitObservation??null,source:N};if(l.push(ie),L){const K=u.get(L)??[];K.push(ie.id),u.set(L,K)}for(const K of(C==null?void 0:C.submodules)??[]){const He=`${ie.id}::submodule::${K.path}`,Ge=K.path.split("/").filter(Boolean).pop()||K.path;l.push({id:He,type:"submoduleNode",label:Ge,workspace:K.repoPath??K.path,branch:null,upstream:null,upstreamStatus:null,daemonId:ie.daemonId,machineId:ie.machineId,machineLabel:ie.machineLabel,locality:ie.locality,connectionTransport:ie.connectionTransport,connectionState:ie.connectionState,connectionReason:ie.connectionReason,connectionReported:ie.connectionReported,connectionRttMs:ie.connectionRttMs,health:Or(K),ahead:0,behind:0,dirty:K.dirty,dirtyFiles:K.dirty?1:0,hasConflicts:!1,inProgress:!1,activeSessionCount:0,activeSessions:[],sessionDetails:[],providers:[],isOrphan:!1,orphanReasons:[],error:K.error,nextStepHint:K.error||(K.outOfSync?`${K.path} is out of sync with the parent checkout`:K.dirty?`${K.path} has local changes`:`${K.path} is in sync with the parent checkout`),nextStepHintI18n:K.error?{key:"mesh.hint.nodeError",detail:K.error}:K.outOfSync?{key:"mesh.hint.submoduleOutOfSync",params:{path:K.path}}:K.dirty?{key:"mesh.hint.submoduleChanged",params:{path:K.path}}:{key:"mesh.hint.submoduleSynced",params:{path:K.path}},parentNodeId:ie.id,submodulePath:K.path,submoduleCommit:K.commit,outOfSync:K.outOfSync,snapshotCompleteness:"complete",snapshotWarnings:[],branchConvergence:null,gitObservation:ie.gitObservation??null,source:{kind:"synthetic-submodule",parentNodeId:ie.id,parentWorkspace:N.workspace,submodule:K}}),i.push({id:`${ie.id}--${He}`,source:ie.id,target:He,type:"submoduleLink",label:K.outOfSync?"submodule out of sync":void 0,direction:"directed"})}}const f=a?`__branch_${a}`:null;if(f&&a){const C=(u.get(a)??[]).map(v=>l.find(H=>H.id===v)).filter(Boolean),L=C.map(v=>v.branchConvergence).filter(Boolean),V=Ir(t),le=C.length>0&&C.every(v=>Br(v,a)),he=(V==null?void 0:V.length)===0&&le?Rr(a,C):L.length>0?$r(L):null,A=(V==null?void 0:V.length)===0&&le?0:L.filter(v=>v.needsConvergence).length,T={id:f,type:"defaultBranchNode",label:a,workspace:t.repoIdentity,branch:a,upstream:null,upstreamStatus:null,daemonId:null,machineId:null,machineLabel:"default branch",locality:"unknown",connectionTransport:null,connectionState:null,connectionReason:null,connectionReported:!1,connectionRttMs:null,health:Gt(C.map(v=>v.health)),ahead:0,behind:0,dirty:C.some(v=>v.dirty),dirtyFiles:C.reduce((v,H)=>v+H.dirtyFiles,0),hasConflicts:C.some(v=>v.hasConflicts),inProgress:C.some(v=>v.inProgress),activeSessionCount:C.reduce((v,H)=>v+H.activeSessionCount,0),activeSessions:C.flatMap(v=>v.activeSessions),sessionDetails:C.flatMap(v=>v.sessionDetails),providers:[...new Set(C.flatMap(v=>v.providers))],isOrphan:!1,orphanReasons:[],nextStepHint:A>0?`${A} workspace(s) on ${a} still need follow-up`:C.length>0?`${C.length} workspace(s) currently on ${a}`:"No workspaces currently checked out to the default branch",nextStepHintI18n:A>0?{key:"mesh.hint.anchorNeedsFollowUp",params:{count:A,branch:a??""}}:C.length>0?{key:"mesh.hint.anchorWorkspaces",params:{count:C.length,branch:a??""}}:{key:"mesh.hint.anchorEmpty"},error:void 0,parentNodeId:null,submodulePath:null,submoduleCommit:null,outOfSync:!1,snapshotCompleteness:"complete",snapshotWarnings:[],branchConvergence:he,source:{nodeId:f,machineLabel:a,workspace:t.repoIdentity,health:Gt(C.map(v=>v.health)),providers:[],activeSessions:[],activeSessionDetails:[]}};l.push(T);for(const v of l)if(!(v.id===f||v.type==="submoduleNode")){if(v.branch===a){i.push({id:`${f}--${v.id}`,source:f,target:v.id,type:"parentBranch",direction:"undirected"});continue}if(v.branch){i.push({id:`${f}--${v.id}`,source:f,target:v.id,type:v.isOrphan?"orphanLink":"parentBranch",label:v.branch,direction:"undirected"});continue}if(v.isOrphan){i.push({id:`${f}--${v.id}`,source:f,target:v.id,type:"orphanLink",label:"detached",direction:"undirected"});continue}i.push({id:`${f}--${v.id}`,source:f,target:v.id,type:"parentBranch",direction:"undirected"})}}const x=new Set(l.map(N=>N.id)),j=new Set;for(const N of l){if(!N.clonedFromNodeId||N.type==="submoduleNode"||!x.has(N.clonedFromNodeId))continue;const C=`clone_${N.clonedFromNodeId}--${N.id}`;j.has(C)||(j.add(C),i.push({id:C,source:N.clonedFromNodeId,target:N.id,type:"cloneLink",label:"cloned",direction:"directed"}))}const g=l.filter(N=>N.type!=="defaultBranchNode"),b=g.filter(N=>N.isOrphan).length,_=g.filter(N=>N.hasConflicts).length,w=g.filter(N=>N.health==="offline").length,m=g.filter(N=>N.type==="submoduleNode"&&N.outOfSync).length,S=g.filter(N=>{var C;return N.type!=="submoduleNode"&&!N.inProgress&&((C=N.branchConvergence)==null?void 0:C.needsConvergence)}).length,k=g.filter(N=>{var C;return!N.inProgress&&((C=N.branchConvergence)==null?void 0:C.status)==="blocked_review"}).length,R=g.filter(N=>{var C;return((C=N.branchConvergence)==null?void 0:C.status)==="pushed_feature_branch_needs_merge"}).length,E=g.filter(N=>{var C;return((C=N.branchConvergence)==null?void 0:C.status)==="cleanup_candidate"}).length,D=g.filter(N=>{var C;return((C=N.branchConvergence)==null?void 0:C.status)==="not_mergeable"}).length,M=g.filter(N=>N.snapshotCompleteness!=="complete").length,O=g.filter(N=>N.snapshotCompleteness==="pending_git").length,P=g.filter(N=>N.snapshotCompleteness==="missing_git").length,I=g.filter(N=>N.snapshotCompleteness==="missing_submodule_report").length,y=g.filter(N=>N.snapshotCompleteness==="stale").length,$=g.filter(N=>N.refineJobStatus==="running"||N.refineJobStatus==="accepted").length,W=g.filter(N=>N.refineJobStatus==="failed").length,te=[O>0?`${O} node(s) are still waiting for a live peer git snapshot`:null,P>0?`${P} node(s) have no visible peer git snapshot`:null,I>0?`${I} node(s) are missing peer submodule visibility reported elsewhere in the mesh`:null,y>0?`${y} node(s) rely on peer git snapshots older than 5m`:null].filter(Boolean);return S>0&&d.push(`${S} workspace(s) still need follow-up before the mesh is converged`),b>0&&d.push(`${b} workspace(s) need attention before safe coordination`),k>0&&d.push(`${k} workspace(s) are blocked on branch convergence or upstream sync`),R>0&&d.push(`${R} clean feature branch workspace(s) still need merge follow-up`),E>0&&d.push(`${E} worktree workspace(s) are ready for refine / cleanup`),D>0&&d.push(`${D} workspace(s) have local changes or conflicts blocking convergence`),_>0&&d.push(`${_} workspace(s) report merge conflicts`),w>0&&d.push(`${w} node(s) are currently offline`),m>0&&d.push(`${m} submodule(s) are out of sync with their parent checkout`),d.push(...te),a||d.push("Could not infer a default branch from live mesh status"),{meshId:t.meshId,meshName:t.meshName,repoIdentity:t.repoIdentity,refreshedAt:t.refreshedAt,nodes:l,edges:i,stats:{totalNodes:g.length,onlineNodes:g.filter(N=>N.health==="online").length,dirtyNodes:g.filter(N=>N.dirty).length,orphanNodes:b,errorNodes:g.filter(N=>!!N.error||N.outOfSync).length,offlineNodes:w,followUpNodes:S,blockedReviewNodes:k,mergeReadyNodes:R,cleanupCandidateNodes:E,notMergeableNodes:D,incompleteSnapshotNodes:M,pendingGitSnapshotNodes:O,missingGitSnapshotNodes:P,missingSubmoduleSnapshotNodes:I,staleGitSnapshotNodes:y,activeRefineNodes:$,failedRefineNodes:W,totalActiveSessions:g.reduce((N,C)=>N+C.activeSessionCount,0)},warnings:d,snapshotWarnings:te}}function jt(e){return[...new Set(e.filter(t=>!!t))]}function Hr(e){const t=e.nodes.find(l=>l.type==="defaultBranchNode")??null,n=(t==null?void 0:t.branch)??null,a=e.nodes.filter(l=>l.type!=="defaultBranchNode"&&l.type!=="submoduleNode"&&!l.isOrphan&&!!n&&l.branch===n),r=e.nodes.filter(l=>l.type!=="submoduleNode"&&!l.isOrphan),o=e.nodes.filter(l=>l.type!=="submoduleNode");return t||a.length>0?jt([t==null?void 0:t.id,...a.map(l=>l.id)]):r.length>0?jt(r.map(l=>l.id)):o.length>0?jt(o.map(l=>l.id)):jt(e.nodes.map(l=>l.id))}function Nn(e){const t=[...e.nodes].sort((a,r)=>a.id.localeCompare(r.id)).map(a=>[a.id,a.type,a.branch??"",a.parentNodeId??"",a.submodulePath??""].join(":")).join("|"),n=[...e.edges].sort((a,r)=>a.id.localeCompare(r.id)).map(a=>[a.id,a.source,a.target,a.type].join(":")).join("|");return`${e.meshId}::${t}::${n}`}function Gr(e,t,n){const a=Math.max(0,Math.round(t)),r=Math.max(0,Math.round(n));return`${Nn(e)}::${a}x${r}`}function Wr(e){return e.ahead<=0&&e.behind<=0?null:e.ahead>0&&e.behind>0?`ahead ${e.ahead} / behind ${e.behind}`:e.behind>0?`behind ${e.behind}`:`ahead ${e.ahead}`}function Lt(e){if(e.type==="submoduleNode")return e.outOfSync||e.error?{label:"submodule drift",tone:"danger"}:e.dirty?{label:"submodule dirty",tone:"warn"}:null;if(e.inProgress)return{label:"working",tone:"info"};const t=e.branchConvergence;if((t==null?void 0:t.status)==="not_mergeable")return{label:e.hasConflicts?"conflicts present":"dirty workspace",tone:"danger"};if((t==null?void 0:t.status)==="blocked_review"){if(t.reason==="upstream_unverified"||t.reason.endsWith("_upstream_unverified"))return{label:"upstream unverified",tone:"warn"};const n=Wr(e);return n?{label:n,tone:"danger"}:!e.upstream&&e.branch&&e.branch!==t.defaultBranch?{label:"push branch",tone:"warn"}:{label:"blocked review",tone:"danger"}}return e.refineJobStatus==="failed"?{label:"refine failed",tone:"danger"}:e.refineJobStatus==="running"||e.refineJobStatus==="accepted"?{label:"refining…",tone:"info"}:(t==null?void 0:t.status)==="pushed_feature_branch_needs_merge"?{label:"needs merge",tone:"warn"}:(t==null?void 0:t.status)==="cleanup_candidate"?{label:"refine worktree",tone:"info"}:e.isOrphan?{label:"needs follow-up",tone:"warn"}:e.health==="offline"?{label:"offline",tone:"danger"}:null}function hs(e){var t;return e.nextStepHint??((t=e.branchConvergence)==null?void 0:t.nextStep)??null}const Ur={blocked_review:"mesh.hint.daemon.blockedReview",pushed_feature_branch_needs_merge:"mesh.hint.daemon.needsMerge",cleanup_candidate:"mesh.hint.daemon.cleanup",not_mergeable:"mesh.hint.daemon.notMergeable",merged_to_main:"mesh.hint.daemon.merged"};function Hs(e,t){var l;if(e.inProgress)return null;const n=hs(e);if(!n)return null;const a=e.nextStepHintI18n;if(a)return{text:t(a.key,a.params),detail:a.detail??null};const r=(l=e.branchConvergence)==null?void 0:l.status,o=r&&Ur[r]||"mesh.hint.daemon.followUp";return{text:t(o),detail:n}}function kn(e){var t;return e.inProgress||!hs(e)||e.type==="defaultBranchNode"?!1:!!((t=e.branchConvergence)!=null&&t.needsConvergence||e.isOrphan||e.hasConflicts||e.outOfSync||e.error||e.health==="offline"||e.health==="degraded"||e.health==="wrong_branch"||e.dirty)}const Kr=6e4;function zr(e,t=Date.now()){const n=e.gitObservation;return!n||n.source==="self"||n.source==="local"?null:n.unreachableSince!==null&&n.unreachableSince!==void 0?{kind:"unreachable",observedAt:n.observedAt??null,unreachableSince:n.unreachableSince}:n.observedAt===null||n.observedAt===void 0?n.refreshing?{kind:"fetching"}:null:n.refreshing?{kind:"refreshing",observedAt:n.observedAt}:t-n.observedAt>=Kr?{kind:"aged",observedAt:n.observedAt}:null}const rt={worktreeCardWidth:256,submoduleCardWidth:180,anchorCardWidth:232,minWorktreeCardHeight:150,minSubmoduleCardHeight:56,minAnchorCardHeight:44,maxEstimatedCardHeight:360,layerGap:220,nodeGap:82,edgeLabelBuffer:180,placeholderTopOffset:0},pt={worktreeCardWidth:188,submoduleCardWidth:156,anchorCardWidth:196,minWorktreeCardHeight:88,minSubmoduleCardHeight:50,minAnchorCardHeight:40,maxEstimatedCardHeight:230,layerGap:160,nodeGap:52,edgeLabelBuffer:120},Vr={maxWidth:180};function qr(e){return e==="TB"?"DOWN":"RIGHT"}function ps(e,t){return{"elk.algorithm":"layered","elk.direction":qr(t),"elk.edgeRouting":"ORTHOGONAL","elk.spacing.nodeNode":String(e.nodeGap),"elk.layered.spacing.nodeNodeBetweenLayers":String(e.layerGap),"elk.layered.spacing.edgeNodeBetweenLayers":String(e.edgeLabelBuffer),"elk.layered.layering.strategy":"NETWORK_SIMPLEX","elk.layered.nodePlacement.strategy":"NETWORK_SIMPLEX","elk.layered.crossingMinimization.strategy":"LAYER_SWEEP","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES","elk.layered.cycleBreaking.strategy":"GREEDY","elk.layered.mergeEdges":"false","elk.randomSeed":"1"}}const Yr=ps(rt,"LR");ps(pt,"LR");const Qr=new hn;function Ke(e,t=!1){const n=t?pt:rt;return e.type==="submoduleNode"?n.submoduleCardWidth:e.type==="defaultBranchNode"?n.anchorCardWidth:n.worktreeCardWidth}function Me(e,t,n,a){return e?e(t,a):n}function Sn(e,t){return e.ahead<=0&&e.behind<=0?null:e.ahead>0&&e.behind>0?Me(t,"mesh.attention.aheadBehind",`ahead ${e.ahead} / behind ${e.behind}`,{ahead:e.ahead,behind:e.behind}):e.behind>0?Me(t,"mesh.attention.behind",`behind ${e.behind}`,{count:e.behind}):Me(t,"mesh.attention.ahead",`ahead ${e.ahead}`,{count:e.ahead})}function ss(e,t){var a;if(e.type==="defaultBranchNode")return t&&e.nextStepHintI18n?t(e.nextStepHintI18n.key,e.nextStepHintI18n.params):e.nextStepHint||Me(t,"mesh.summary.anchor","Default branch anchor");if(e.type==="submoduleNode"){const r=[e.machineLabel?Me(t,"mesh.summary.parent",`parent ${e.machineLabel}`,{label:e.machineLabel}):null];return e.outOfSync?r.push(Me(t,"mesh.panel.outOfSyncBadge","out of sync")):e.dirty?r.push(Me(t,"mesh.summary.localChanges","local changes")):r.push(Me(t,"mesh.panel.submoduleSynced","synced")),r.filter(Boolean).join(" · ")}const n=[];if(e.upstream&&n.push(e.upstream),e.upstream&&e.upstreamStatus!=="fresh")n.push(Me(t,"mesh.attention.upstreamUnverified","upstream unverified"));else{const r=Sn(e,t);r&&n.push(r)}return e.activeSessionCount>0&&n.push(Me(t,"mesh.summary.sessions",`${e.activeSessionCount} session${e.activeSessionCount===1?"":"s"}`,{count:e.activeSessionCount})),e.dirtyFiles>0&&n.push(Me(t,"mesh.drift.changed",`${e.dirtyFiles} changed`,{count:e.dirtyFiles})),e.hasConflicts&&n.push(Me(t,"mesh.summary.conflicts","conflicts")),n.length===0?(a=e.branchConvergence)!=null&&a.needsConvergence?Me(t,"mesh.attention.needsFollowUp","Needs follow-up"):Me(t,"mesh.summary.clean","Clean and even with upstream"):n.join(" · ")}const Jr=2;function ms(e,t=!1){var _;const n=t?pt:rt;if(e.type==="defaultBranchNode")return n.minAnchorCardHeight;if(e.type==="submoduleNode")return n.minSubmoduleCardHeight;const a=Ke(e,t),r=t?22:30,o=t?2:3,l=Math.ceil(Xr(e)/o),i=Nt(e.label,r,2),d=Nt(e.machineLabel||e.workspace,r,2),u=Nt(ss(e),r+(t?1:4),t?2:3),h=Lt(e),c=kn(e)?hs(e):null,f=t?0:Nt(c,Math.max(24,Math.floor(a/8)),4),x=((_=e.sessionDetails)==null?void 0:_.length)??0,j=Math.min(Jr,x),g=x>0?t?14+j*36+(x>j?14:0):46+j*48+(x>j?16:0):0,b=t?40+i*16+d*12+(h?22:0)+Math.max(0,l-1)*18+g:52+i*18+d*14+(h?30:0)+l*24+Math.max(22,u*18)+g+(f>0?22+f*16:0);return Math.min(n.maxEstimatedCardHeight,Math.max(n.minWorktreeCardHeight,Math.ceil(b)))}function Nt(e,t,n){const a=(e||"").trim();return a?Math.max(1,Math.min(n,Math.ceil(a.length/t))):0}function Xr(e){let t=e.health==="online"?0:1;return e.branch&&(t+=1),e.locality==="remote"&&(t+=1),(e.connectionTransport||e.connectionRttMs!=null)&&(t+=1),e.dirty&&(t+=1),e.outOfSync&&(t+=1),e.hasConflicts&&(t+=1),e.upstream&&e.upstreamStatus!=="fresh"&&(t+=1),e.isOrphan&&(t+=1),t}function Zr(e,t){return e.type==="defaultBranchNode"&&t.type!=="defaultBranchNode"?-1:t.type==="defaultBranchNode"&&e.type!=="defaultBranchNode"||e.type==="submoduleNode"&&t.type!=="submoduleNode"?1:t.type==="submoduleNode"&&e.type!=="submoduleNode"?-1:e.branch&&t.branch&&e.branch!==t.branch?e.branch.localeCompare(t.branch):e.branch&&!t.branch?-1:!e.branch&&t.branch?1:e.label.localeCompare(t.label)||e.id.localeCompare(t.id)}function eo(e,t){return e.source.localeCompare(t.source)||e.target.localeCompare(t.target)||e.id.localeCompare(t.id)}function to(e,t,n,a=!0){return{id:e.id,type:"meshNode",position:{x:t,y:n},graphNode:e,selected:!1,draggable:!1,selectable:a}}function so(e,t,n){return{id:e.id,x:t,y:n,width:Ke(e),height:ms(e)}}function no(e,t){return{id:`${e.id}__placeholder`,type:"worktreeNode",inProgress:!1,label:"No active worktrees",workspace:t.repoIdentity,branch:e.branch,upstream:null,upstreamStatus:null,daemonId:null,machineId:null,machineLabel:null,locality:"unknown",connectionTransport:null,connectionState:null,connectionReason:null,connectionReported:!1,connectionRttMs:null,health:"unknown",ahead:0,behind:0,dirty:!1,dirtyFiles:0,hasConflicts:!1,activeSessionCount:0,activeSessions:[],sessionDetails:[],providers:[],isOrphan:!1,orphanReasons:[],nextStepHint:"Waiting for worktree nodes to report live mesh status.",error:void 0,parentNodeId:null,submodulePath:null,submoduleCommit:null,outOfSync:!1,snapshotCompleteness:"complete",snapshotWarnings:[],branchConvergence:null,source:{nodeId:`${e.id}__placeholder`,machineLabel:"",workspace:t.repoIdentity,health:"unknown",providers:[],activeSessions:[]}}}function Cn(e){const t=[...e.nodes].sort(Zr),n=t.find(r=>r.type==="defaultBranchNode")??null,a=t.some(r=>r.id!==(n==null?void 0:n.id)&&r.type!=="submoduleNode");return!n||a?t:[...t,no(n,e)]}function ao(e,t=Yr,n=!1,a="LR"){const r=Cn(e),o=new Set(r.map(d=>d.id)),l=r.map(d=>({id:d.id,width:Ke(d,n),height:ms(d,n)})),i=e.edges.filter(d=>o.has(d.source)&&o.has(d.target)).sort(eo).map(d=>({id:d.id,sources:[d.source],targets:[d.target]}));return{id:`${e.meshId||"mesh"}__elk_root`,layoutOptions:{...t},children:l,edges:i}}function ro(e,t=!1){const n=[...new Set(e.map(r=>Math.round(r.x)))].sort((r,o)=>r-o),a=t?pt.layerGap:rt.layerGap;return n.length<2?a:Math.min(...n.slice(1).map((r,o)=>r-n[o]))}async function Mn(e,t=!1,n="LR",a){var j,g;const o=ps(t?pt:rt,n),l=Cn(e),i=new Map(l.map(b=>[b.id,b])),d=ao(e,o,t,n);if(a&&a.size>0)for(const b of d.children??[]){const _=a.get(b.id);_&&_>0&&(b.height=_)}const u=await Qr.layout(d),h=(u.children??[]).map(b=>{const _=i.get(b.id);return _?to(_,Math.round(b.x??0),Math.round(b.y??rt.placeholderTopOffset),!b.id.endsWith("__placeholder")):null}).filter(Boolean),c=new Map(l.map((b,_)=>[b.id,_]));h.sort((b,_)=>(c.get(b.id)??0)-(c.get(_.id)??0));const f=h.map(b=>so(b.graphNode,b.position.x,b.position.y)),x=new Map;for(const b of u.edges??[]){const _=b.sections;if(!_||_.length===0)continue;const w=_[0],m=(j=b.sources)==null?void 0:j[0],S=(g=b.targets)==null?void 0:g[0];if(!m||!S)continue;const k=[];k.push({x:Math.round(w.startPoint.x),y:Math.round(w.startPoint.y)});for(const R of w.bendPoints??[])k.push({x:Math.round(R.x),y:Math.round(R.y)});k.push({x:Math.round(w.endPoint.x),y:Math.round(w.endPoint.y)}),x.set(b.id,{id:b.id,source:m,target:S,points:k})}return{nodes:h,bounds:f,edgeRoutes:x,columnGap:ro(f,t),layoutOptions:{...o}}}function oo(e){var t,n,a,r,o,l;return[e.id,e.type,e.label,e.branch??"",e.upstream??"",e.upstreamStatus??"",e.daemonId??"",e.machineId??"",e.machineLabel??"",e.locality,e.health,e.ahead,e.behind,e.dirty?1:0,e.dirtyFiles,e.hasConflicts?1:0,e.activeSessionCount,e.sessionDetails.map(i=>[i.sessionId,i.providerType??"",i.state??"",i.chatStatus??"",i.lifecycle??"",i.role??"",i.isSelfCoordinator?1:0,i.statusNote??"",i.startedAt??"",i.createdAt??""].join("/")).join(","),e.isOrphan?1:0,e.outOfSync?1:0,e.snapshotCompleteness,((t=e.branchConvergence)==null?void 0:t.status)??"",(n=e.branchConvergence)!=null&&n.needsConvergence?1:0,e.nextStepHint??"",e.error??"",e.parentNodeId??"",e.submodulePath??"",e.submoduleCommit??"",((a=e.gitObservation)==null?void 0:a.source)??"",((r=e.gitObservation)==null?void 0:r.observedAt)??"",(o=e.gitObservation)!=null&&o.refreshing?1:0,((l=e.gitObservation)==null?void 0:l.unreachableSince)??""].join("|")}function $n(e){return[e.id,e.source,e.target,e.type,e.label??"",e.direction].join("|")}function io(e){return[e.meshId,e.refreshedAt,e.nodes.length,e.edges.length,...e.nodes.map(oo),...e.edges.map($n)].join("::")}function lo(e){return[e.meshId,e.nodes.length,e.edges.length,...e.nodes.map(t=>{var n,a;return[t.id,t.type,t.label,t.branch??"",t.machineLabel??"",t.locality,t.health,t.dirty?1:0,t.dirtyFiles,t.hasConflicts?1:0,t.activeSessionCount,t.isOrphan?1:0,t.outOfSync?1:0,t.snapshotCompleteness,((n=t.branchConvergence)==null?void 0:n.status)??"",(a=t.branchConvergence)!=null&&a.needsConvergence?1:0,t.nextStepHint??"",t.parentNodeId??"",t.submodulePath??"",t.submoduleCommit??""].join("|")}),...e.edges.map($n)].join("::")}function ns(e){return e.type==="orphanLink"?"var(--status-warning)":"var(--text-muted)"}function co(e){return In[e]}const uo=["parentBranch","cloneLink","worktreeLink","submoduleLink","sessionLink","orphanLink"],ho={parentBranch:"mesh.legendEdge.parentBranch",cloneLink:"mesh.legendEdge.cloneLink",worktreeLink:"mesh.legendEdge.worktreeLink",submoduleLink:"mesh.legendEdge.submoduleLink",sessionLink:"mesh.legendEdge.sessionLink",orphanLink:"mesh.legendEdge.orphanLink"},In={cloneLink:"6 3",worktreeLink:"2 3",submoduleLink:"8 3 2 3",sessionLink:"1 4",orphanLink:"5 4"};function po({edges:e}){const{t}=J("common"),n=p.useMemo(()=>{const a=new Set;for(const r of e)a.add(r.type);return uo.filter(r=>a.has(r))},[e]);return n.length===0?null:s.jsx("div",{className:"flex flex-col gap-1",children:n.map(a=>s.jsxs("span",{className:"flex items-center gap-2 text-2xs",children:[s.jsx("svg",{width:"18",height:"4","aria-hidden":!0,children:s.jsx("line",{x1:"0",y1:"2",x2:"18",y2:"2",style:{stroke:ns({type:a})},strokeWidth:"1.5",strokeDasharray:In[a]})}),t(ho[a])]},a))})}const tt=2,Ln=p.createContext(Je("dark")),An=p.createContext(!1),_n=p.createContext("LR"),En=p.createContext(!0),Bn={overflowWrap:"anywhere",wordBreak:"break-word"},mo={...Bn,display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:3,overflow:"hidden"},fo={...Bn,display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:4,overflow:"hidden"};function xo(e){return e.activeSessionCount>0}function go(e){return e.health==="offline"||e.snapshotCompleteness==="stale"&&e.activeSessionCount===0}function Wt(e,t){const n=go(e),a="bg-bg-card";if(t)return`${a} border-accent ring-1 ring-accent/50`;const r=Lt(e),o=n?" opacity-60":"";return(r==null?void 0:r.tone)==="danger"||e.health==="degraded"?`${a} border-status-error/40${o}`:(r==null?void 0:r.tone)==="warn"?`${a} border-status-warning/40${o}`:n?`${a} border-border-subtle opacity-60`:`${a} border-border-default`}function Ne(e){switch(e){case"refineDone":return ye("good");case"dirty":return ye("warn");case"conflict":return ye("danger");case"orphan":return ye("warn");case"health":case"submodule":case"meta":default:return ye("neutral")}}function Gs(e){switch(e){case"danger":return ye("danger");case"warn":return ye("warn");case"good":return ye("good");case"info":default:return ye("neutral")}}function Ut(e){switch(e){case"online":return"var(--status-online)";case"dirty":case"wrong_branch":return"var(--status-warning)";case"degraded":return"var(--status-error)";case"offline":return"var(--status-offline)";default:return"var(--text-muted)"}}function bo(e){return e.replace(/_/g," ")}const fs=ut;function vo(e){var t;return((t=e.sessionDetails)==null?void 0:t.some(n=>fs(n)==="generating"))??!1}function Ws(e){const t=fs(e);return t.includes("approval")?ye("warn"):t==="generating"?"border-accent/40 text-accent":t.includes("failed")||t.includes("stopped")||t.includes("interrupted")?ye("danger"):ye("neutral")}function yo(){return ye("neutral")}function kt(e,t){switch(e){case"easy":return t("mesh.difficulty.easy");case"medium":return t("mesh.difficulty.medium");case"difficult":return t("mesh.difficulty.difficult");case"freeform":return t("mesh.difficulty.freeform");default:return e}}function wo(e){if(!e)return null;const t=Date.parse(e);return Number.isFinite(t)?t:null}function Kt(e){const t=wo(e);return t===null?"":ga(Math.max(0,Date.now()-t))}function jo(e,t){if(e.sessionDetails.length===0)return null;const n=e.sessionDetails.filter(l=>fs(l)==="generating").length,a=e.sessionDetails.filter(l=>l.isSelfCoordinator).length,r=e.sessionDetails.length-a,o=[t("mesh.panel.chats",{count:e.sessionDetails.length})];return n>0&&o.push(t("mesh.panel.generatingCount",{count:n})),a>0&&o.push(a===1?t("mesh.panel.coordinatorAttached"):t("mesh.panel.coordinators",{count:a})),r>0&&o.push(t("mesh.panel.workers",{count:r})),n===0&&a>0&&o.push(t("mesh.panel.sampledStatus")),o.join(" · ")}const No={"submodule drift":"mesh.attention.submoduleDrift","submodule dirty":"mesh.attention.submoduleDirty","conflicts present":"mesh.attention.conflictsPresent","dirty workspace":"mesh.attention.dirtyWorkspace","upstream unverified":"mesh.attention.upstreamUnverified","push branch":"mesh.attention.pushBranch","blocked review":"mesh.attention.blockedReview","refine failed":"mesh.attention.refineFailed",working:"mesh.attention.working","refining…":"mesh.attention.refining","needs merge":"mesh.attention.needsMerge","refine worktree":"mesh.attention.refineWorktree","needs follow-up":"mesh.attention.needsFollowUp",offline:"mesh.attention.offline"};function ko(e,t){const n=a=>ba(a,{nowLabel:"<1m"});switch(e.kind){case"fetching":return t("mesh.graph.observationFetching");case"refreshing":return t("mesh.graph.observationRefreshing",{age:n(e.observedAt)});case"aged":return t("mesh.graph.observationAsOf",{age:n(e.observedAt)});case"unreachable":return e.observedAt===null?t("mesh.graph.observationUnreachableNoState"):t("mesh.graph.observationUnreachable",{age:n(e.observedAt)})}}function zt(e,t,n){const a=No[e];if(a)return n(a);const r=Sn(t,n);return r&&/^(ahead|behind) /.test(e)?r:e}function So(e){const t=(e||"").trim().replace(/[\\/]+$/,"");return t?t.split(/[\\/]+/).filter(Boolean).slice(-2).join("/"):""}function Co({data:e,selected:t}){var C;const{t:n}=J("common"),a=p.useContext(Ln),r=p.useContext(An),o=p.useContext(_n),l=p.useContext(En),i=e.graphNode,d=i.type==="defaultBranchNode",u=i.type==="submoduleNode",h=kn(i),c=[i.machineLabel,i.locality==="remote"?n("mesh.panel.remote"):null].filter(Boolean).join(" · "),f=So(i.workspace),x=l?c||f||i.workspace:f||c||i.workspace,j=i.submoduleCommit?i.submoduleCommit.slice(0,7):null,g=zr(i),b=g?ko(g,n):null,_=(g==null?void 0:g.kind)==="unreachable"?Ne("dirty"):Ne("meta"),w=!!b&&((g==null?void 0:g.kind)==="aged"||(g==null?void 0:g.kind)==="unreachable"),m=(g==null?void 0:g.kind)==="unreachable"?n("mesh.graph.observationUnreachableChip"):n("mesh.graph.observationStaleChip");if(d){const L=Lt(i);return s.jsxs("div",{className:`rounded-lg border bg-bg-card px-3 py-2 transition-colors ${t?"border-accent ring-1 ring-accent/50":"border-border-default"}`,style:{width:Ke(i,r)},title:[i.label,ss(i,n),L?zt(L.label,i,n):null].filter(Boolean).join(`
|
|
2
2
|
`),children:[s.jsx(Ie,{type:"target",position:o==="TB"?xe.Top:xe.Left,isConnectable:!1,style:{opacity:0,pointerEvents:"none"}}),s.jsxs("div",{className:"flex min-w-0 items-center justify-center gap-2",children:[s.jsx("span",{className:`flex shrink-0 items-center ${a.textMuted}`,"aria-hidden":!0,children:s.jsx(xa,{size:13})}),s.jsx("span",{className:`truncate text-sm font-semibold leading-5 ${a.textPrimary}`,children:i.label}),s.jsx("span",{className:`${fe} ${ye("neutral")}`,children:n("mesh.panel.defaultBranch")}),L&&s.jsx("span",{className:`shrink-0 h-2 w-2 rounded-full ${L.tone==="danger"?"bg-status-error":L.tone==="warn"?"bg-status-warning":"bg-text-muted"}`,title:zt(L.label,i,n),"aria-hidden":!0})]}),s.jsx(Ie,{type:"source",position:o==="TB"?xe.Bottom:xe.Right,isConnectable:!1,style:{opacity:0,pointerEvents:"none"}})]})}if(u){const L=i.outOfSync?n("mesh.panel.outOfSyncBadge"):i.dirty?n("mesh.panel.tooltipLocalChanges"):n("mesh.panel.submoduleSynced"),V=i.outOfSync?Ne("conflict"):i.dirty?Ne("dirty"):Ne("submodule");return s.jsxs("div",{className:`rounded-lg border px-3 py-2 transition-colors ${Wt(i,t)}`,style:{width:Ke(i,r)},title:[i.label,i.submodulePath&&i.submodulePath!==i.label?i.submodulePath:null,((C=Hs(i,n))==null?void 0:C.text)||null,j?`@ ${j}`:null,b].filter(Boolean).join(`
|
|
3
3
|
`),children:[s.jsx(Ie,{type:"target",position:o==="TB"?xe.Top:xe.Left,isConnectable:!1,style:{opacity:0,pointerEvents:"none"}}),s.jsxs("div",{className:"flex min-w-0 items-center justify-between gap-2",children:[s.jsxs("span",{className:"flex min-w-0 items-center gap-1.5",children:[s.jsx("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full",style:{backgroundColor:Ut(i.health)},"aria-hidden":!0}),s.jsx("span",{className:`truncate text-xs font-semibold ${a.textPrimary}`,children:i.label})]}),j&&s.jsx("span",{className:`shrink-0 font-mono text-4xs ${a.textMuted}`,children:j})]}),s.jsxs("div",{className:"mt-1.5 flex min-w-0 items-center gap-1.5",children:[s.jsx("span",{className:`${fe} ${V}`,children:L}),i.submodulePath&&i.submodulePath!==i.label&&s.jsx("span",{className:`min-w-0 truncate text-4xs ${a.textMuted}`,children:i.submodulePath})]}),s.jsx(Ie,{type:"source",position:o==="TB"?xe.Bottom:xe.Right,isConnectable:!1,style:{opacity:0,pointerEvents:"none"}})]})}const S=!u&&!d&&i.connectionState!=="self",k=S?bn(i):null,R=k==="local"?null:k,E=S?yr(i):null,D=Lt(i),M=Hs(i,n),O=(M==null?void 0:M.text)??null,P=xo(i),I=i.sessionDetails,y=i.sessionDetails,$=jo(i,n),W=D?zt(D.label,i,n):null,te=ss(i,n),Y=i.sessionDetails.map(L=>{const V=Oe(L,n),le=L.providerType||n("mesh.panel.providerUnknown"),he=Ye(L,n),A=L.startedAt||L.createdAt||null,T=L.difficulty?kt(L.difficulty,n):null;return[le,V,he,T,Kt(A)||null,L.statusNote||null].filter(Boolean).join(" · ")});if(r)return s.jsxs("div",{className:`rounded-lg border px-3 py-2.5 transition-colors ${Wt(i,t)}`,style:{width:Ke(i,!0)},title:[i.label,i.branch?`${n("mesh.panel.tooltipPrefixBranch")} ${i.branch}`:null,i.machineLabel?`Machine: ${i.machineLabel}`:null,i.workspace?`Workspace: ${i.workspace}`:null,D?`${n("mesh.panel.tooltipPrefixStatus")} ${W}`:null,te,...Y].filter(Boolean).join(`
|
|
4
4
|
`),children:[s.jsx(Ie,{type:"target",position:o==="TB"?xe.Top:xe.Left,isConnectable:!1,style:{opacity:0,pointerEvents:"none"}}),s.jsxs("div",{className:"flex items-center justify-between gap-2",children:[s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsx("div",{className:`truncate text-xs font-semibold leading-4 ${a.textPrimary}`,title:i.label,children:i.label}),!d&&s.jsx("div",{className:`truncate text-3xs leading-3.5 ${a.textMuted}`,title:x,children:x})]}),s.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[P&&s.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-status-online animate-pulse","aria-label":n("mesh.graph.activeSessionAria")}),s.jsx("span",{className:"h-2 w-2 shrink-0 rounded-full",style:{backgroundColor:Ut(i.health)},"aria-hidden":!0})]})]}),i.health==="unknown"&&!D||D||w||!D&&i.branch&&!u&&i.health!=="unknown"?s.jsxs("div",{className:"mt-1.5 flex min-w-0 flex-wrap items-center gap-1",children:[i.health==="unknown"&&!D&&s.jsx("span",{className:`${fe} italic ${Ne("health")}`,children:s.jsx("span",{className:"truncate",children:n("mesh.obs.connecting")})}),D&&s.jsx("span",{className:`${fe} ${Gs(D.tone)}`,title:W??void 0,children:s.jsx("span",{className:"truncate",children:W})}),w&&s.jsx("span",{className:`${fe} ${_}`,title:b??void 0,children:s.jsx("span",{className:"truncate",children:m})}),!D&&i.branch&&!u&&i.health!=="unknown"&&s.jsx("span",{className:`${fe} ${Ne("meta")}`,title:i.branch,children:s.jsx("span",{className:"truncate",children:i.branch})})]}):null,$&&s.jsx("div",{className:`mt-1 min-w-0 max-w-full truncate text-4xs ${a.textSecondary}`,title:Y.join(`
|