@adhdev/daemon-standalone 1.0.76-rc.4 → 1.0.76-rc.5

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 CHANGED
@@ -24619,10 +24619,10 @@ ${renderWorkerProtocolFooter(input)}`;
24619
24619
  }
24620
24620
  function getDaemonBuildInfo() {
24621
24621
  if (cached) return cached;
24622
- const commit2 = readInjected(true ? "241816d74007fc13f458d77c419750c76d8021e3" : void 0) ?? "unknown";
24623
- const commitShort = readInjected(true ? "241816d74" : void 0) ?? (commit2 !== "unknown" ? commit2.slice(0, 7) : "unknown");
24624
- const version = readInjected(true ? "1.0.76-rc.4" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
24625
- const builtAt = readInjected(true ? "2026-10-07T07:34:16.839Z" : void 0);
24622
+ const commit2 = readInjected(true ? "aa2d7bcc0b20c76d4420360096d825d18bd50d08" : void 0) ?? "unknown";
24623
+ const commitShort = readInjected(true ? "aa2d7bcc0" : void 0) ?? (commit2 !== "unknown" ? commit2.slice(0, 7) : "unknown");
24624
+ const version = readInjected(true ? "1.0.76-rc.5" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
24625
+ const builtAt = readInjected(true ? "2026-10-07T09:02:07.217Z" : void 0);
24626
24626
  cached = builtAt ? { commit: commit2, commitShort, version, builtAt } : { commit: commit2, commitShort, version };
24627
24627
  return cached;
24628
24628
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adhdev/daemon-standalone",
3
- "version": "1.0.76-rc.4",
3
+ "version": "1.0.76-rc.5",
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.76-rc.4",
41
+ "@adhdev/session-host-core": "1.0.76-rc.5",
42
42
  "@xterm/addon-serialize": "^0.14.0",
43
43
  "@xterm/xterm": "^6.0.0",
44
44
  "chalk": "^5.3.0",
@@ -1,4 +1,4 @@
1
- import{u as J,r as p,j as s}from"./vendor-CgFxQ3Rd.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-CI4uEMUa.js";import{av as uc,aw as hc,ax as pc}from"./index-CI4uEMUa.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-7mv6fb91.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-CgFxQ3Rd.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-BuGRmTOW.js";import{av as uc,aw as hc,ax as pc}from"./index-BuGRmTOW.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-7mv6fb91.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(`