@shepai/cli 1.111.0 → 1.112.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/dist/packages/core/src/infrastructure/persistence/sqlite/legacy-migrations.d.ts +27 -0
  2. package/dist/packages/core/src/infrastructure/persistence/sqlite/legacy-migrations.d.ts.map +1 -0
  3. package/dist/packages/core/src/infrastructure/persistence/sqlite/legacy-migrations.js +540 -0
  4. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts +13 -7
  5. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
  6. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.js +94 -545
  7. package/dist/packages/core/src/infrastructure/persistence/sqlite/sqlite-migration-storage.d.ts +59 -0
  8. package/dist/packages/core/src/infrastructure/persistence/sqlite/sqlite-migration-storage.d.ts.map +1 -0
  9. package/dist/packages/core/src/infrastructure/persistence/sqlite/sqlite-migration-storage.js +98 -0
  10. package/dist/tsconfig.build.tsbuildinfo +1 -1
  11. package/package.json +2 -2
  12. package/web/.next/BUILD_ID +1 -1
  13. package/web/.next/build-manifest.json +2 -2
  14. package/web/.next/fallback-build-manifest.json +2 -2
  15. package/web/.next/prerender-manifest.json +3 -3
  16. package/web/.next/required-server-files.js +2 -2
  17. package/web/.next/required-server-files.json +2 -2
  18. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +20 -20
  19. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  20. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  21. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +26 -26
  22. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  23. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  24. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +26 -26
  25. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  26. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  27. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
  28. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  29. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  30. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +20 -20
  31. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  32. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  33. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +26 -26
  34. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  35. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  36. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +26 -26
  37. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  38. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  39. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +18 -18
  40. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  41. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  42. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
  43. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  44. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  45. package/web/.next/server/app/_global-error.html +2 -2
  46. package/web/.next/server/app/_global-error.rsc +1 -1
  47. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  48. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  49. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  50. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  51. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  52. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  53. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  54. package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
  55. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  56. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  57. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  58. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  59. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  60. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  61. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  62. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  63. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  64. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  65. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  66. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_a1104008.js +1 -1
  67. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_a1104008.js.map +1 -1
  68. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_92642200.js +1 -1
  69. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_92642200.js.map +1 -1
  70. package/web/.next/server/chunks/ssr/[root-of-the-server]__039967e3._.js +1 -1
  71. package/web/.next/server/chunks/ssr/[root-of-the-server]__039967e3._.js.map +1 -1
  72. package/web/.next/server/chunks/ssr/[root-of-the-server]__07a39ff2._.js +1 -1
  73. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
  74. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
  75. package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js +2 -2
  76. package/web/.next/server/chunks/ssr/[root-of-the-server]__2773312c._.js +1 -1
  77. package/web/.next/server/chunks/ssr/[root-of-the-server]__2773312c._.js.map +1 -1
  78. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
  79. package/web/.next/server/chunks/ssr/[root-of-the-server]__845a9d2a._.js +1 -1
  80. package/web/.next/server/chunks/ssr/[root-of-the-server]__845a9d2a._.js.map +1 -1
  81. package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js +2 -2
  82. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  83. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  84. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbd8062c._.js +1 -1
  85. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbd8062c._.js.map +1 -1
  86. package/web/.next/server/chunks/ssr/[root-of-the-server]__e70c5627._.js +1 -1
  87. package/web/.next/server/chunks/ssr/[root-of-the-server]__e70c5627._.js.map +1 -1
  88. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
  89. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
  90. package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
  91. package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
  92. package/web/.next/server/chunks/ssr/{_2649c1af._.js → _5214cc6d._.js} +2 -2
  93. package/web/.next/server/chunks/ssr/{_2649c1af._.js.map → _5214cc6d._.js.map} +1 -1
  94. package/web/.next/server/chunks/ssr/{_4474f9f3._.js → _688c410c._.js} +2 -2
  95. package/web/.next/server/chunks/ssr/{_4474f9f3._.js.map → _688c410c._.js.map} +1 -1
  96. package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
  97. package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
  98. package/web/.next/server/chunks/ssr/{_ba9c581b._.js → _8ef2db1a._.js} +2 -2
  99. package/web/.next/server/chunks/ssr/{_ba9c581b._.js.map → _8ef2db1a._.js.map} +1 -1
  100. package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
  101. package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
  102. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  103. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  104. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_888633e1.js +1 -1
  105. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_888633e1.js.map +1 -1
  106. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  107. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  108. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  109. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  110. package/web/.next/server/chunks/ssr/src_presentation_web_ce7cbc3c._.js +2 -2
  111. package/web/.next/server/chunks/ssr/src_presentation_web_ce7cbc3c._.js.map +1 -1
  112. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
  113. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
  114. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  115. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  116. package/web/.next/server/chunks/ssr/src_presentation_web_e2604413._.js +2 -2
  117. package/web/.next/server/chunks/ssr/src_presentation_web_e2604413._.js.map +1 -1
  118. package/web/.next/server/pages/500.html +2 -2
  119. package/web/.next/server/server-reference-manifest.js +1 -1
  120. package/web/.next/server/server-reference-manifest.json +31 -31
  121. package/web/.next/static/chunks/{b27c0bbd1de96d37.js → 2ceb08e50a58ff13.js} +1 -1
  122. package/web/.next/static/chunks/{cbfa943160cc5f90.js → 3a154a226e936a39.js} +1 -1
  123. package/web/.next/static/chunks/{279db4719a31b985.js → 691c8fb9987506c7.js} +1 -1
  124. package/web/.next/static/chunks/{185203c3444a4da7.js → 6a91f6e4059b8e65.js} +2 -2
  125. package/web/.next/static/chunks/{5f52d11e6182396e.js → 6e5ddc3f058e4c15.js} +1 -1
  126. package/web/.next/static/chunks/{487babfd13611736.js → 974a4718eae26449.js} +1 -1
  127. package/web/.next/static/chunks/{4e2530a36f28dec7.js → 979328ec65bd195c.js} +2 -2
  128. package/web/.next/static/chunks/{dd15e70af64f5dd0.js → a067d472cd7bab74.js} +1 -1
  129. package/web/.next/static/chunks/c2c5d4e54fb6693a.js +1 -0
  130. package/web/.next/static/chunks/cf78337357d8447e.js +1 -0
  131. package/web/.next/static/chunks/464557a2dc1fe286.js +0 -1
  132. package/web/.next/static/chunks/6d2a5b3e881c75a8.js +0 -1
  133. /package/web/.next/static/{4LIlcvj7VQahrcSQtqQlm → m4kJ9xcvKM_tYBQYtX8sa}/_buildManifest.js +0 -0
  134. /package/web/.next/static/{4LIlcvj7VQahrcSQtqQlm → m4kJ9xcvKM_tYBQYtX8sa}/_clientMiddlewareManifest.json +0 -0
  135. /package/web/.next/static/{4LIlcvj7VQahrcSQtqQlm → m4kJ9xcvKM_tYBQYtX8sa}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../node_modules/.pnpm/%40dagrejs%2Bdagre%402.0.4/node_modules/%40dagrejs/dagre/dist/dagre.esm.js","../../../../../../../src/presentation/web/components/features/control-center/use-control-center-state.ts","../../../../../../../src/presentation/web/app/actions/data%3Ac0d3e8%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A933ae0%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A58c87c%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Abbce40%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/hooks/use-graph-state.ts","../../../../../../../src/presentation/web/lib/layout-with-dagre.ts","../../../../../../../src/presentation/web/lib/derive-graph.ts","../../../../../../../src/presentation/web/components/features/control-center/control-center.tsx","../../../../../../../src/presentation/web/components/common/repository-node/repository-node.tsx","../../../../../../../src/presentation/web/components/common/repository-node/repository-drawer.tsx","../../../../../../../src/presentation/web/components/features/features-canvas/dependency-edge.tsx","../../../../../../../src/presentation/web/components/features/features-canvas/features-canvas.tsx","../../../../../../../src/presentation/web/hooks/use-selected-feature-id.ts","../../../../../../../src/presentation/web/hooks/use-viewport-persistence.ts","../../../../../../../src/presentation/web/app/actions/data%3Ab355bc%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Acd3233%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/features/control-center/welcome-agent-setup.tsx","../../../../../../../src/presentation/web/components/features/control-center/control-center-empty-state.tsx","../../../../../../../src/presentation/web/components/features/control-center/control-center-inner.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/github.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/square-terminal.ts"],"sourcesContent":["var v=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var y=v((Fi,ee)=>{var Vt=Object.defineProperty,At=(e,t,r)=>t in e?Vt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,E=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),k=(e,t,r)=>At(e,typeof t!=\"symbol\"?t+\"\":t,r),R=E((e,t)=>{\"use strict\";var r=\"\\0\",n=\"\\0\",i=\"\u0001\",o=class{constructor(d){k(this,\"_isDirected\",!0),k(this,\"_isMultigraph\",!1),k(this,\"_isCompound\",!1),k(this,\"_label\"),k(this,\"_defaultNodeLabelFn\",()=>{}),k(this,\"_defaultEdgeLabelFn\",()=>{}),k(this,\"_nodes\",{}),k(this,\"_in\",{}),k(this,\"_preds\",{}),k(this,\"_out\",{}),k(this,\"_sucs\",{}),k(this,\"_edgeObjs\",{}),k(this,\"_edgeLabels\",{}),k(this,\"_nodeCount\",0),k(this,\"_edgeCount\",0),k(this,\"_parent\"),k(this,\"_children\"),d&&(this._isDirected=Object.hasOwn(d,\"directed\")?d.directed:!0,this._isMultigraph=Object.hasOwn(d,\"multigraph\")?d.multigraph:!1,this._isCompound=Object.hasOwn(d,\"compound\")?d.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children[n]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(d){return this._label=d,this}graph(){return this._label}setDefaultNodeLabel(d){return this._defaultNodeLabelFn=d,typeof d!=\"function\"&&(this._defaultNodeLabelFn=()=>d),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var d=this;return this.nodes().filter(h=>Object.keys(d._in[h]).length===0)}sinks(){var d=this;return this.nodes().filter(h=>Object.keys(d._out[h]).length===0)}setNodes(d,h){var f=arguments,m=this;return d.forEach(function(p){f.length>1?m.setNode(p,h):m.setNode(p)}),this}setNode(d,h){return Object.hasOwn(this._nodes,d)?(arguments.length>1&&(this._nodes[d]=h),this):(this._nodes[d]=arguments.length>1?h:this._defaultNodeLabelFn(d),this._isCompound&&(this._parent[d]=n,this._children[d]={},this._children[n][d]=!0),this._in[d]={},this._preds[d]={},this._out[d]={},this._sucs[d]={},++this._nodeCount,this)}node(d){return this._nodes[d]}hasNode(d){return Object.hasOwn(this._nodes,d)}removeNode(d){var h=this;if(Object.hasOwn(this._nodes,d)){var f=m=>h.removeEdge(h._edgeObjs[m]);delete this._nodes[d],this._isCompound&&(this._removeFromParentsChildList(d),delete this._parent[d],this.children(d).forEach(function(m){h.setParent(m)}),delete this._children[d]),Object.keys(this._in[d]).forEach(f),delete this._in[d],delete this._preds[d],Object.keys(this._out[d]).forEach(f),delete this._out[d],delete this._sucs[d],--this._nodeCount}return this}setParent(d,h){if(!this._isCompound)throw new Error(\"Cannot set parent in a non-compound graph\");if(h===void 0)h=n;else{h+=\"\";for(var f=h;f!==void 0;f=this.parent(f))if(f===d)throw new Error(\"Setting \"+h+\" as parent of \"+d+\" would create a cycle\");this.setNode(h)}return this.setNode(d),this._removeFromParentsChildList(d),this._parent[d]=h,this._children[h][d]=!0,this}_removeFromParentsChildList(d){delete this._children[this._parent[d]][d]}parent(d){if(this._isCompound){var h=this._parent[d];if(h!==n)return h}}children(d=n){if(this._isCompound){var h=this._children[d];if(h)return Object.keys(h)}else{if(d===n)return this.nodes();if(this.hasNode(d))return[]}}predecessors(d){var h=this._preds[d];if(h)return Object.keys(h)}successors(d){var h=this._sucs[d];if(h)return Object.keys(h)}neighbors(d){var h=this.predecessors(d);if(h){let m=new Set(h);for(var f of this.successors(d))m.add(f);return Array.from(m.values())}}isLeaf(d){var h;return this.isDirected()?h=this.successors(d):h=this.neighbors(d),h.length===0}filterNodes(d){var h=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});h.setGraph(this.graph());var f=this;Object.entries(this._nodes).forEach(function([w,b]){d(w)&&h.setNode(w,b)}),Object.values(this._edgeObjs).forEach(function(w){h.hasNode(w.v)&&h.hasNode(w.w)&&h.setEdge(w,f.edge(w))});var m={};function p(w){var b=f.parent(w);return b===void 0||h.hasNode(b)?(m[w]=b,b):b in m?m[b]:p(b)}return this._isCompound&&h.nodes().forEach(w=>h.setParent(w,p(w))),h}setDefaultEdgeLabel(d){return this._defaultEdgeLabelFn=d,typeof d!=\"function\"&&(this._defaultEdgeLabelFn=()=>d),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(d,h){var f=this,m=arguments;return d.reduce(function(p,w){return m.length>1?f.setEdge(p,w,h):f.setEdge(p,w),w}),this}setEdge(){var d,h,f,m,p=!1,w=arguments[0];typeof w==\"object\"&&w!==null&&\"v\"in w?(d=w.v,h=w.w,f=w.name,arguments.length===2&&(m=arguments[1],p=!0)):(d=w,h=arguments[1],f=arguments[3],arguments.length>2&&(m=arguments[2],p=!0)),d=\"\"+d,h=\"\"+h,f!==void 0&&(f=\"\"+f);var b=l(this._isDirected,d,h,f);if(Object.hasOwn(this._edgeLabels,b))return p&&(this._edgeLabels[b]=m),this;if(f!==void 0&&!this._isMultigraph)throw new Error(\"Cannot set a named edge when isMultigraph = false\");this.setNode(d),this.setNode(h),this._edgeLabels[b]=p?m:this._defaultEdgeLabelFn(d,h,f);var g=u(this._isDirected,d,h,f);return d=g.v,h=g.w,Object.freeze(g),this._edgeObjs[b]=g,s(this._preds[h],d),s(this._sucs[d],h),this._in[h][b]=g,this._out[d][b]=g,this._edgeCount++,this}edge(d,h,f){var m=arguments.length===1?c(this._isDirected,arguments[0]):l(this._isDirected,d,h,f);return this._edgeLabels[m]}edgeAsObj(){let d=this.edge(...arguments);return typeof d!=\"object\"?{label:d}:d}hasEdge(d,h,f){var m=arguments.length===1?c(this._isDirected,arguments[0]):l(this._isDirected,d,h,f);return Object.hasOwn(this._edgeLabels,m)}removeEdge(d,h,f){var m=arguments.length===1?c(this._isDirected,arguments[0]):l(this._isDirected,d,h,f),p=this._edgeObjs[m];return p&&(d=p.v,h=p.w,delete this._edgeLabels[m],delete this._edgeObjs[m],a(this._preds[h],d),a(this._sucs[d],h),delete this._in[h][m],delete this._out[d][m],this._edgeCount--),this}inEdges(d,h){return this.isDirected()?this.filterEdges(this._in[d],d,h):this.nodeEdges(d,h)}outEdges(d,h){return this.isDirected()?this.filterEdges(this._out[d],d,h):this.nodeEdges(d,h)}nodeEdges(d,h){if(d in this._nodes)return this.filterEdges({...this._in[d],...this._out[d]},d,h)}filterEdges(d,h,f){if(d){var m=Object.values(d);return f?m.filter(function(p){return p.v===h&&p.w===f||p.v===f&&p.w===h}):m}}};function s(d,h){d[h]?d[h]++:d[h]=1}function a(d,h){--d[h]||delete d[h]}function l(d,h,f,m){var p=\"\"+h,w=\"\"+f;if(!d&&p>w){var b=p;p=w,w=b}return p+i+w+i+(m===void 0?r:m)}function u(d,h,f,m){var p=\"\"+h,w=\"\"+f;if(!d&&p>w){var b=p;p=w,w=b}var g={v:p,w};return m&&(g.name=m),g}function c(d,h){return l(d,h.v,h.w,h.name)}t.exports=o}),Yt=E((e,t)=>{t.exports=\"3.0.2\"}),Bt=E((e,t)=>{t.exports={Graph:R(),version:Yt()}}),Wt=E((e,t)=>{var r=R();t.exports={write:n,read:s};function n(a){var l={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:i(a),edges:o(a)};return a.graph()!==void 0&&(l.value=structuredClone(a.graph())),l}function i(a){return a.nodes().map(function(l){var u=a.node(l),c=a.parent(l),d={v:l};return u!==void 0&&(d.value=u),c!==void 0&&(d.parent=c),d})}function o(a){return a.edges().map(function(l){var u=a.edge(l),c={v:l.v,w:l.w};return l.name!==void 0&&(c.name=l.name),u!==void 0&&(c.value=u),c})}function s(a){var l=new r(a.options).setGraph(a.value);return a.nodes.forEach(function(u){l.setNode(u.v,u.value),u.parent&&l.setParent(u.v,u.parent)}),a.edges.forEach(function(u){l.setEdge({v:u.v,w:u.w,name:u.name},u.value)}),l}}),U=E((e,t)=>{t.exports=n;var r=()=>1;function n(o,s,a,l){return i(o,String(s),a||r,l||function(u){return o.outEdges(u)})}function i(o,s,a,l){var u={},c=!0,d=0,h=o.nodes(),f=function(b){var g=a(b);u[b.v].distance+g<u[b.w].distance&&(u[b.w]={distance:u[b.v].distance+g,predecessor:b.v},c=!0)},m=function(){h.forEach(function(b){l(b).forEach(function(g){var I=g.v===b?g.v:g.w,Gt=I===g.v?g.w:g.v;f({v:I,w:Gt})})})};h.forEach(function(b){var g=b===s?0:Number.POSITIVE_INFINITY;u[b]={distance:g}});for(var p=h.length,w=1;w<p&&(c=!1,d++,m(),!!c);w++);if(d===p-1&&(c=!1,m(),c))throw new Error(\"The graph contains a negative weight cycle\");return u}}),zt=E((e,t)=>{t.exports=r;function r(n){var i={},o=[],s;function a(l){Object.hasOwn(i,l)||(i[l]=!0,s.push(l),n.successors(l).forEach(a),n.predecessors(l).forEach(a))}return n.nodes().forEach(function(l){s=[],a(l),s.length&&o.push(s)}),o}}),K=E((e,t)=>{var r=class{constructor(){k(this,\"_arr\",[]),k(this,\"_keyIndices\",{})}size(){return this._arr.length}keys(){return this._arr.map(function(n){return n.key})}has(n){return Object.hasOwn(this._keyIndices,n)}priority(n){var i=this._keyIndices[n];if(i!==void 0)return this._arr[i].priority}min(){if(this.size()===0)throw new Error(\"Queue underflow\");return this._arr[0].key}add(n,i){var o=this._keyIndices;if(n=String(n),!Object.hasOwn(o,n)){var s=this._arr,a=s.length;return o[n]=a,s.push({key:n,priority:i}),this._decrease(a),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var n=this._arr.pop();return delete this._keyIndices[n.key],this._heapify(0),n.key}decrease(n,i){var o=this._keyIndices[n];if(i>this._arr[o].priority)throw new Error(\"New priority is greater than current priority. Key: \"+n+\" Old: \"+this._arr[o].priority+\" New: \"+i);this._arr[o].priority=i,this._decrease(o)}_heapify(n){var i=this._arr,o=2*n,s=o+1,a=n;o<i.length&&(a=i[o].priority<i[a].priority?o:a,s<i.length&&(a=i[s].priority<i[a].priority?s:a),a!==n&&(this._swap(n,a),this._heapify(a)))}_decrease(n){for(var i=this._arr,o=i[n].priority,s;n!==0&&(s=n>>1,!(i[s].priority<o));)this._swap(n,s),n=s}_swap(n,i){var o=this._arr,s=this._keyIndices,a=o[n],l=o[i];o[n]=l,o[i]=a,s[l.key]=n,s[a.key]=i}};t.exports=r}),T=E((e,t)=>{var r=K();t.exports=i;var n=()=>1;function i(s,a,l,u){var c=function(d){return s.outEdges(d)};return o(s,String(a),l||n,u||c)}function o(s,a,l,u){var c={},d=new r,h,f,m=function(p){var w=p.v!==h?p.v:p.w,b=c[w],g=l(p),I=f.distance+g;if(g<0)throw new Error(\"dijkstra does not allow negative edge weights. Bad edge: \"+p+\" Weight: \"+g);I<b.distance&&(b.distance=I,b.predecessor=h,d.decrease(w,I))};for(s.nodes().forEach(function(p){var w=p===a?0:Number.POSITIVE_INFINITY;c[p]={distance:w},d.add(p,w)});d.size()>0&&(h=d.removeMin(),f=c[h],f.distance!==Number.POSITIVE_INFINITY);)u(h).forEach(m);return c}}),Xt=E((e,t)=>{var r=T();t.exports=n;function n(i,o,s){return i.nodes().reduce(function(a,l){return a[l]=r(i,l,o,s),a},{})}}),Ht=E((e,t)=>{t.exports=r;function r(i,o,s){if(i[o].predecessor!==void 0)throw new Error(\"Invalid source vertex\");if(i[s].predecessor===void 0&&s!==o)throw new Error(\"Invalid destination vertex\");return{weight:i[s].distance,path:n(i,o,s)}}function n(i,o,s){for(var a=[],l=s;l!==o;)a.push(l),l=i[l].predecessor;return a.push(o),a.reverse()}}),Q=E((e,t)=>{t.exports=r;function r(n){var i=0,o=[],s={},a=[];function l(u){var c=s[u]={onStack:!0,lowlink:i,index:i++};if(o.push(u),n.successors(u).forEach(function(f){Object.hasOwn(s,f)?s[f].onStack&&(c.lowlink=Math.min(c.lowlink,s[f].index)):(l(f),c.lowlink=Math.min(c.lowlink,s[f].lowlink))}),c.lowlink===c.index){var d=[],h;do h=o.pop(),s[h].onStack=!1,d.push(h);while(u!==h);a.push(d)}}return n.nodes().forEach(function(u){Object.hasOwn(s,u)||l(u)}),a}}),Ut=E((e,t)=>{var r=Q();t.exports=n;function n(i){return r(i).filter(function(o){return o.length>1||o.length===1&&i.hasEdge(o[0],o[0])})}}),Kt=E((e,t)=>{t.exports=n;var r=()=>1;function n(o,s,a){return i(o,s||r,a||function(l){return o.outEdges(l)})}function i(o,s,a){var l={},u=o.nodes();return u.forEach(function(c){l[c]={},l[c][c]={distance:0},u.forEach(function(d){c!==d&&(l[c][d]={distance:Number.POSITIVE_INFINITY})}),a(c).forEach(function(d){var h=d.v===c?d.w:d.v,f=s(d);l[c][h]={distance:f,predecessor:c}})}),u.forEach(function(c){var d=l[c];u.forEach(function(h){var f=l[h];u.forEach(function(m){var p=f[c],w=d[m],b=f[m],g=p.distance+w.distance;g<b.distance&&(b.distance=g,b.predecessor=w.predecessor)})})}),l}}),J=E((e,t)=>{function r(i){var o={},s={},a=[];function l(u){if(Object.hasOwn(s,u))throw new n;Object.hasOwn(o,u)||(s[u]=!0,o[u]=!0,i.predecessors(u).forEach(l),delete s[u],a.push(u))}if(i.sinks().forEach(l),Object.keys(o).length!==i.nodeCount())throw new n;return a}var n=class extends Error{constructor(){super(...arguments)}};t.exports=r,r.CycleException=n}),Qt=E((e,t)=>{var r=J();t.exports=n;function n(i){try{r(i)}catch(o){if(o instanceof r.CycleException)return!1;throw o}return!0}}),Z=E((e,t)=>{t.exports=r;function r(i,o,s,a,l){Array.isArray(o)||(o=[o]);var u=(i.isDirected()?i.successors:i.neighbors).bind(i),c={};return o.forEach(function(d){if(!i.hasNode(d))throw new Error(\"Graph does not have node: \"+d);l=n(i,d,s===\"post\",c,u,a,l)}),l}function n(i,o,s,a,l,u,c){return Object.hasOwn(a,o)||(a[o]=!0,s||(c=u(c,o)),l(o).forEach(function(d){c=n(i,d,s,a,l,u,c)}),s&&(c=u(c,o))),c}}),$=E((e,t)=>{var r=Z();t.exports=n;function n(i,o,s){return r(i,o,s,function(a,l){return a.push(l),a},[])}}),Jt=E((e,t)=>{var r=$();t.exports=n;function n(i,o){return r(i,o,\"post\")}}),Zt=E((e,t)=>{var r=$();t.exports=n;function n(i,o){return r(i,o,\"pre\")}}),$t=E((e,t)=>{var r=R(),n=K();t.exports=i;function i(o,s){var a=new r,l={},u=new n,c;function d(f){var m=f.v===c?f.w:f.v,p=u.priority(m);if(p!==void 0){var w=s(f);w<p&&(l[m]=c,u.decrease(m,w))}}if(o.nodeCount()===0)return a;o.nodes().forEach(function(f){u.add(f,Number.POSITIVE_INFINITY),a.setNode(f)}),u.decrease(o.nodes()[0],0);for(var h=!1;u.size()>0;){if(c=u.removeMin(),Object.hasOwn(l,c))a.setEdge(c,l[c]);else{if(h)throw new Error(\"Input graph is not connected: \"+o);h=!0}o.nodeEdges(c).forEach(d)}return a}}),er=E((e,t)=>{var r=T(),n=U();t.exports=i;function i(s,a,l,u){return o(s,a,l,u||function(c){return s.outEdges(c)})}function o(s,a,l,u){if(l===void 0)return r(s,a,l,u);for(var c=!1,d=s.nodes(),h=0;h<d.length;h++){for(var f=u(d[h]),m=0;m<f.length;m++){var p=f[m],w=p.v===d[h]?p.v:p.w,b=w===p.v?p.w:p.v;l({v:w,w:b})<0&&(c=!0)}if(c)return n(s,a,l,u)}return r(s,a,l,u)}}),tr=E((e,t)=>{t.exports={bellmanFord:U(),components:zt(),dijkstra:T(),dijkstraAll:Xt(),extractPath:Ht(),findCycles:Ut(),floydWarshall:Kt(),isAcyclic:Qt(),postorder:Jt(),preorder:Zt(),prim:$t(),shortestPaths:er(),reduce:Z(),tarjan:Q(),topsort:J()}}),H=Bt();ee.exports={Graph:H.Graph,json:Wt(),alg:tr(),version:H.version}});var ne=v((Ai,re)=>{var S=class{constructor(){let t={};t._next=t._prev=t,this._sentinel=t}dequeue(){let t=this._sentinel,r=t._prev;if(r!==t)return te(r),r}enqueue(t){let r=this._sentinel;t._prev&&t._next&&te(t),t._next=r._next,r._next._prev=t,r._next=t,t._prev=r}toString(){let t=[],r=this._sentinel,n=r._prev;for(;n!==r;)t.push(JSON.stringify(n,rr)),n=n._prev;return\"[\"+t.join(\", \")+\"]\"}};function te(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function rr(e,t){if(e!==\"_next\"&&e!==\"_prev\")return t}re.exports=S});var oe=v((Yi,ie)=>{var nr=y().Graph,ir=ne();ie.exports=sr;var or=()=>1;function sr(e,t){if(e.nodeCount()<=1)return[];let r=dr(e,t||or);return ar(r.graph,r.buckets,r.zeroIdx).flatMap(i=>e.outEdges(i.v,i.w))}function ar(e,t,r){let n=[],i=t[t.length-1],o=t[0],s;for(;e.nodeCount();){for(;s=o.dequeue();)P(e,t,r,s);for(;s=i.dequeue();)P(e,t,r,s);if(e.nodeCount()){for(let a=t.length-2;a>0;--a)if(s=t[a].dequeue(),s){n=n.concat(P(e,t,r,s,!0));break}}}return n}function P(e,t,r,n,i){let o=i?[]:void 0;return e.inEdges(n.v).forEach(s=>{let a=e.edge(s),l=e.node(s.v);i&&o.push({v:s.v,w:s.w}),l.out-=a,F(t,r,l)}),e.outEdges(n.v).forEach(s=>{let a=e.edge(s),l=s.w,u=e.node(l);u.in-=a,F(t,r,u)}),e.removeNode(n.v),o}function dr(e,t){let r=new nr,n=0,i=0;e.nodes().forEach(a=>{r.setNode(a,{v:a,in:0,out:0})}),e.edges().forEach(a=>{let l=r.edge(a.v,a.w)||0,u=t(a),c=l+u;r.setEdge(a.v,a.w,c),i=Math.max(i,r.node(a.v).out+=u),n=Math.max(n,r.node(a.w).in+=u)});let o=lr(i+n+3).map(()=>new ir),s=n+1;return r.nodes().forEach(a=>{F(o,s,r.node(a))}),{graph:r,buckets:o,zeroIdx:s}}function F(e,t,r){r.out?r.in?e[r.out-r.in+t].enqueue(r):e[e.length-1].enqueue(r):e[0].enqueue(r)}function lr(e){let t=[];for(let r=0;r<e;r++)t.push(r);return t}});var _=v((Bi,ce)=>{\"use strict\";var se=y().Graph;ce.exports={addBorderNode:vr,addDummyNode:ae,applyWithChunking:C,asNonCompoundGraph:hr,buildLayerMatrix:mr,intersectRect:pr,mapValues:Or,maxRank:le,normalizeRanks:wr,notime:kr,partition:Er,pick:xr,predecessorWeights:fr,range:he,removeEmptyRanks:br,simplify:ur,successorWeights:cr,time:_r,uniqueId:ue,zipObject:D};function ae(e,t,r,n){for(var i=n;e.hasNode(i);)i=ue(n);return r.dummy=t,e.setNode(i,r),i}function ur(e){let t=new se().setGraph(e.graph());return e.nodes().forEach(r=>t.setNode(r,e.node(r))),e.edges().forEach(r=>{let n=t.edge(r.v,r.w)||{weight:0,minlen:1},i=e.edge(r);t.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})}),t}function hr(e){let t=new se({multigraph:e.isMultigraph()}).setGraph(e.graph());return e.nodes().forEach(r=>{e.children(r).length||t.setNode(r,e.node(r))}),e.edges().forEach(r=>{t.setEdge(r,e.edge(r))}),t}function cr(e){let t=e.nodes().map(r=>{let n={};return e.outEdges(r).forEach(i=>{n[i.w]=(n[i.w]||0)+e.edge(i).weight}),n});return D(e.nodes(),t)}function fr(e){let t=e.nodes().map(r=>{let n={};return e.inEdges(r).forEach(i=>{n[i.v]=(n[i.v]||0)+e.edge(i).weight}),n});return D(e.nodes(),t)}function pr(e,t){let r=e.x,n=e.y,i=t.x-r,o=t.y-n,s=e.width/2,a=e.height/2;if(!i&&!o)throw new Error(\"Not possible to find intersection inside of the rectangle\");let l,u;return Math.abs(o)*s>Math.abs(i)*a?(o<0&&(a=-a),l=a*i/o,u=a):(i<0&&(s=-s),l=s,u=s*o/i),{x:r+l,y:n+u}}function mr(e){let t=he(le(e)+1).map(()=>[]);return e.nodes().forEach(r=>{let n=e.node(r),i=n.rank;i!==void 0&&(t[i][n.order]=r)}),t}function wr(e){let t=e.nodes().map(n=>{let i=e.node(n).rank;return i===void 0?Number.MAX_VALUE:i}),r=C(Math.min,t);e.nodes().forEach(n=>{let i=e.node(n);Object.hasOwn(i,\"rank\")&&(i.rank-=r)})}function br(e){let t=e.nodes().map(s=>e.node(s).rank).filter(s=>s!==void 0),r=C(Math.min,t),n=[];e.nodes().forEach(s=>{let a=e.node(s).rank-r;n[a]||(n[a]=[]),n[a].push(s)});let i=0,o=e.graph().nodeRankFactor;Array.from(n).forEach((s,a)=>{s===void 0&&a%o!==0?--i:s!==void 0&&i&&s.forEach(l=>e.node(l).rank+=i)})}function vr(e,t,r,n){let i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=n),ae(e,\"border\",i,t)}function gr(e,t=de){let r=[];for(let n=0;n<e.length;n+=t){let i=e.slice(n,n+t);r.push(i)}return r}var de=65535;function C(e,t){if(t.length>de){let r=gr(t);return e.apply(null,r.map(n=>e.apply(null,n)))}else return e.apply(null,t)}function le(e){let r=e.nodes().map(n=>{let i=e.node(n).rank;return i===void 0?Number.MIN_VALUE:i});return C(Math.max,r)}function Er(e,t){let r={lhs:[],rhs:[]};return e.forEach(n=>{t(n)?r.lhs.push(n):r.rhs.push(n)}),r}function _r(e,t){let r=Date.now();try{return t()}finally{console.log(e+\" time: \"+(Date.now()-r)+\"ms\")}}function kr(e,t){return t()}var yr=0;function ue(e){var t=++yr;return e+(\"\"+t)}function he(e,t,r=1){t==null&&(t=e,e=0);let n=o=>o<t;r<0&&(n=o=>t<o);let i=[];for(let o=e;n(o);o+=r)i.push(o);return i}function xr(e,t){let r={};for(let n of t)e[n]!==void 0&&(r[n]=e[n]);return r}function Or(e,t){let r=t;return typeof t==\"string\"&&(r=n=>n[t]),Object.entries(e).reduce((n,[i,o])=>(n[i]=r(o,i),n),{})}function D(e,t){return e.reduce((r,n,i)=>(r[n]=t[i],r),{})}});var pe=v((Wi,fe)=>{\"use strict\";var Nr=oe(),Ir=_().uniqueId;fe.exports={run:jr,undo:Lr};function jr(e){(e.graph().acyclicer===\"greedy\"?Nr(e,r(e)):Cr(e)).forEach(n=>{let i=e.edge(n);e.removeEdge(n),i.forwardName=n.name,i.reversed=!0,e.setEdge(n.w,n.v,i,Ir(\"rev\"))});function r(n){return i=>n.edge(i).weight}}function Cr(e){let t=[],r={},n={};function i(o){Object.hasOwn(n,o)||(n[o]=!0,r[o]=!0,e.outEdges(o).forEach(s=>{Object.hasOwn(r,s.w)?t.push(s):i(s.w)}),delete r[o])}return e.nodes().forEach(i),t}function Lr(e){e.edges().forEach(t=>{let r=e.edge(t);if(r.reversed){e.removeEdge(t);let n=r.forwardName;delete r.reversed,delete r.forwardName,e.setEdge(t.w,t.v,r,n)}})}});var we=v((zi,me)=>{\"use strict\";var qr=_();me.exports={run:Mr,undo:Tr};function Mr(e){e.graph().dummyChains=[],e.edges().forEach(t=>Rr(e,t))}function Rr(e,t){let r=t.v,n=e.node(r).rank,i=t.w,o=e.node(i).rank,s=t.name,a=e.edge(t),l=a.labelRank;if(o===n+1)return;e.removeEdge(t);let u,c,d;for(d=0,++n;n<o;++d,++n)a.points=[],c={width:0,height:0,edgeLabel:a,edgeObj:t,rank:n},u=qr.addDummyNode(e,\"edge\",c,\"_d\"),n===l&&(c.width=a.width,c.height=a.height,c.dummy=\"edge-label\",c.labelpos=a.labelpos),e.setEdge(r,u,{weight:a.weight},s),d===0&&e.graph().dummyChains.push(u),r=u;e.setEdge(r,i,{weight:a.weight},s)}function Tr(e){e.graph().dummyChains.forEach(t=>{let r=e.node(t),n=r.edgeLabel,i;for(e.setEdge(r.edgeObj,n);r.dummy;)i=e.successors(t)[0],e.removeNode(t),n.points.push({x:r.x,y:r.y}),r.dummy===\"edge-label\"&&(n.x=r.x,n.y=r.y,n.width=r.width,n.height=r.height),t=i,r=e.node(t)})}});var j=v((Xi,be)=>{\"use strict\";var{applyWithChunking:Sr}=_();be.exports={longestPath:Pr,slack:Fr};function Pr(e){var t={};function r(n){var i=e.node(n);if(Object.hasOwn(t,n))return i.rank;t[n]=!0;let o=e.outEdges(n).map(a=>a==null?Number.POSITIVE_INFINITY:r(a.w)-e.edge(a).minlen);var s=Sr(Math.min,o);return s===Number.POSITIVE_INFINITY&&(s=0),i.rank=s}e.sources().forEach(r)}function Fr(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}});var G=v((Hi,ve)=>{\"use strict\";var Dr=y().Graph,L=j().slack;ve.exports=Gr;function Gr(e){var t=new Dr({directed:!1}),r=e.nodes()[0],n=e.nodeCount();t.setNode(r,{});for(var i,o;Vr(t,e)<n;)i=Ar(t,e),o=t.hasNode(i.v)?L(e,i):-L(e,i),Yr(t,e,o);return t}function Vr(e,t){function r(n){t.nodeEdges(n).forEach(i=>{var o=i.v,s=n===o?i.w:o;!e.hasNode(s)&&!L(t,i)&&(e.setNode(s,{}),e.setEdge(n,s,{}),r(s))})}return e.nodes().forEach(r),e.nodeCount()}function Ar(e,t){return t.edges().reduce((n,i)=>{let o=Number.POSITIVE_INFINITY;return e.hasNode(i.v)!==e.hasNode(i.w)&&(o=L(t,i)),o<n[0]?[o,i]:n},[Number.POSITIVE_INFINITY,null])[1]}function Yr(e,t,r){e.nodes().forEach(n=>t.node(n).rank+=r)}});var Ie=v((Ui,Ne)=>{\"use strict\";var Br=G(),ge=j().slack,Wr=j().longestPath,zr=y().alg.preorder,Xr=y().alg.postorder,Hr=_().simplify;Ne.exports=N;N.initLowLimValues=A;N.initCutValues=V;N.calcCutValue=_e;N.leaveEdge=ye;N.enterEdge=xe;N.exchangeEdges=Oe;function N(e){e=Hr(e),Wr(e);var t=Br(e);A(t),V(t,e);for(var r,n;r=ye(t);)n=xe(t,e,r),Oe(t,e,r,n)}function V(e,t){var r=Xr(e,e.nodes());r=r.slice(0,r.length-1),r.forEach(n=>Ur(e,t,n))}function Ur(e,t,r){var n=e.node(r),i=n.parent;e.edge(r,i).cutvalue=_e(e,t,r)}function _e(e,t,r){var n=e.node(r),i=n.parent,o=!0,s=t.edge(r,i),a=0;return s||(o=!1,s=t.edge(i,r)),a=s.weight,t.nodeEdges(r).forEach(l=>{var u=l.v===r,c=u?l.w:l.v;if(c!==i){var d=u===o,h=t.edge(l).weight;if(a+=d?h:-h,Qr(e,r,c)){var f=e.edge(r,c).cutvalue;a+=d?-f:f}}}),a}function A(e,t){arguments.length<2&&(t=e.nodes()[0]),ke(e,{},1,t)}function ke(e,t,r,n,i){var o=r,s=e.node(n);return t[n]=!0,e.neighbors(n).forEach(a=>{Object.hasOwn(t,a)||(r=ke(e,t,r,a,n))}),s.low=o,s.lim=r++,i?s.parent=i:delete s.parent,r}function ye(e){return e.edges().find(t=>e.edge(t).cutvalue<0)}function xe(e,t,r){var n=r.v,i=r.w;t.hasEdge(n,i)||(n=r.w,i=r.v);var o=e.node(n),s=e.node(i),a=o,l=!1;o.lim>s.lim&&(a=s,l=!0);var u=t.edges().filter(c=>l===Ee(e,e.node(c.v),a)&&l!==Ee(e,e.node(c.w),a));return u.reduce((c,d)=>ge(t,d)<ge(t,c)?d:c)}function Oe(e,t,r,n){var i=r.v,o=r.w;e.removeEdge(i,o),e.setEdge(n.v,n.w,{}),A(e),V(e,t),Kr(e,t)}function Kr(e,t){var r=e.nodes().find(i=>!t.node(i).parent),n=zr(e,r);n=n.slice(1),n.forEach(i=>{var o=e.node(i).parent,s=t.edge(i,o),a=!1;s||(s=t.edge(o,i),a=!0),t.node(i).rank=t.node(o).rank+(a?s.minlen:-s.minlen)})}function Qr(e,t,r){return e.hasEdge(t,r)}function Ee(e,t,r){return r.low<=t.lim&&t.lim<=r.lim}});var qe=v((Ki,Le)=>{\"use strict\";var Jr=j(),Ce=Jr.longestPath,Zr=G(),$r=Ie();Le.exports=en;function en(e){var t=e.graph().ranker;if(t instanceof Function)return t(e);switch(e.graph().ranker){case\"network-simplex\":je(e);break;case\"tight-tree\":rn(e);break;case\"longest-path\":tn(e);break;case\"none\":break;default:je(e)}}var tn=Ce;function rn(e){Ce(e),Zr(e)}function je(e){$r(e)}});var Re=v((Qi,Me)=>{Me.exports=nn;function nn(e){let t=sn(e);e.graph().dummyChains.forEach(r=>{let n=e.node(r),i=n.edgeObj,o=on(e,t,i.v,i.w),s=o.path,a=o.lca,l=0,u=s[l],c=!0;for(;r!==i.w;){if(n=e.node(r),c){for(;(u=s[l])!==a&&e.node(u).maxRank<n.rank;)l++;u===a&&(c=!1)}if(!c){for(;l<s.length-1&&e.node(u=s[l+1]).minRank<=n.rank;)l++;u=s[l]}e.setParent(r,u),r=e.successors(r)[0]}})}function on(e,t,r,n){let i=[],o=[],s=Math.min(t[r].low,t[n].low),a=Math.max(t[r].lim,t[n].lim),l,u;l=r;do l=e.parent(l),i.push(l);while(l&&(t[l].low>s||a>t[l].lim));for(u=l,l=n;(l=e.parent(l))!==u;)o.push(l);return{path:i.concat(o.reverse()),lca:u}}function sn(e){let t={},r=0;function n(i){let o=r;e.children(i).forEach(n),t[i]={low:o,lim:r++}}return e.children().forEach(n),t}});var Pe=v((Ji,Se)=>{var q=_();Se.exports={run:an,cleanup:un};function an(e){let t=q.addDummyNode(e,\"root\",{},\"_root\"),r=dn(e),n=Object.values(r),i=q.applyWithChunking(Math.max,n)-1,o=2*i+1;e.graph().nestingRoot=t,e.edges().forEach(a=>e.edge(a).minlen*=o);let s=ln(e)+1;e.children().forEach(a=>Te(e,t,o,s,i,r,a)),e.graph().nodeRankFactor=o}function Te(e,t,r,n,i,o,s){let a=e.children(s);if(!a.length){s!==t&&e.setEdge(t,s,{weight:0,minlen:r});return}let l=q.addBorderNode(e,\"_bt\"),u=q.addBorderNode(e,\"_bb\"),c=e.node(s);e.setParent(l,s),c.borderTop=l,e.setParent(u,s),c.borderBottom=u,a.forEach(d=>{Te(e,t,r,n,i,o,d);let h=e.node(d),f=h.borderTop?h.borderTop:d,m=h.borderBottom?h.borderBottom:d,p=h.borderTop?n:2*n,w=f!==m?1:i-o[s]+1;e.setEdge(l,f,{weight:p,minlen:w,nestingEdge:!0}),e.setEdge(m,u,{weight:p,minlen:w,nestingEdge:!0})}),e.parent(s)||e.setEdge(t,l,{weight:0,minlen:i+o[s]})}function dn(e){var t={};function r(n,i){var o=e.children(n);o&&o.length&&o.forEach(s=>r(s,i+1)),t[n]=i}return e.children().forEach(n=>r(n,1)),t}function ln(e){return e.edges().reduce((t,r)=>t+e.edge(r).weight,0)}function un(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,e.edges().forEach(r=>{var n=e.edge(r);n.nestingEdge&&e.removeEdge(r)})}});var Ge=v((Zi,De)=>{var hn=_();De.exports=cn;function cn(e){function t(r){let n=e.children(r),i=e.node(r);if(n.length&&n.forEach(t),Object.hasOwn(i,\"minRank\")){i.borderLeft=[],i.borderRight=[];for(let o=i.minRank,s=i.maxRank+1;o<s;++o)Fe(e,\"borderLeft\",\"_bl\",r,i,o),Fe(e,\"borderRight\",\"_br\",r,i,o)}}e.children().forEach(t)}function Fe(e,t,r,n,i,o){let s={width:0,height:0,rank:o,borderType:t},a=i[t][o-1],l=hn.addDummyNode(e,\"border\",s,r);i[t][o]=l,e.setParent(l,n),a&&e.setEdge(a,l,{weight:1})}});var Be=v(($i,Ye)=>{\"use strict\";Ye.exports={adjust:fn,undo:pn};function fn(e){let t=e.graph().rankdir.toLowerCase();(t===\"lr\"||t===\"rl\")&&Ae(e)}function pn(e){let t=e.graph().rankdir.toLowerCase();(t===\"bt\"||t===\"rl\")&&mn(e),(t===\"lr\"||t===\"rl\")&&(wn(e),Ae(e))}function Ae(e){e.nodes().forEach(t=>Ve(e.node(t))),e.edges().forEach(t=>Ve(e.edge(t)))}function Ve(e){let t=e.width;e.width=e.height,e.height=t}function mn(e){e.nodes().forEach(t=>Y(e.node(t))),e.edges().forEach(t=>{let r=e.edge(t);r.points.forEach(Y),Object.hasOwn(r,\"y\")&&Y(r)})}function Y(e){e.y=-e.y}function wn(e){e.nodes().forEach(t=>B(e.node(t))),e.edges().forEach(t=>{let r=e.edge(t);r.points.forEach(B),Object.hasOwn(r,\"x\")&&B(r)})}function B(e){let t=e.x;e.x=e.y,e.y=t}});var Xe=v((eo,ze)=>{\"use strict\";var We=_();ze.exports=bn;function bn(e){let t={},r=e.nodes().filter(l=>!e.children(l).length),n=r.map(l=>e.node(l).rank),i=We.applyWithChunking(Math.max,n),o=We.range(i+1).map(()=>[]);function s(l){if(t[l])return;t[l]=!0;let u=e.node(l);o[u.rank].push(l),e.successors(l).forEach(s)}return r.sort((l,u)=>e.node(l).rank-e.node(u).rank).forEach(s),o}});var Ue=v((to,He)=>{\"use strict\";var vn=_().zipObject;He.exports=gn;function gn(e,t){let r=0;for(let n=1;n<t.length;++n)r+=En(e,t[n-1],t[n]);return r}function En(e,t,r){let n=vn(r,r.map((u,c)=>c)),i=t.flatMap(u=>e.outEdges(u).map(c=>({pos:n[c.w],weight:e.edge(c).weight})).sort((c,d)=>c.pos-d.pos)),o=1;for(;o<r.length;)o<<=1;let s=2*o-1;o-=1;let a=new Array(s).fill(0),l=0;return i.forEach(u=>{let c=u.pos+o;a[c]+=u.weight;let d=0;for(;c>0;)c%2&&(d+=a[c+1]),c=c-1>>1,a[c]+=u.weight;l+=u.weight*d}),l}});var Qe=v((ro,Ke)=>{Ke.exports=_n;function _n(e,t=[]){return t.map(r=>{let n=e.inEdges(r);if(n.length){let i=n.reduce((o,s)=>{let a=e.edge(s),l=e.node(s.v);return{sum:o.sum+a.weight*l.order,weight:o.weight+a.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}});var Ze=v((no,Je)=>{\"use strict\";var kn=_();Je.exports=yn;function yn(e,t){let r={};e.forEach((i,o)=>{let s=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:o};i.barycenter!==void 0&&(s.barycenter=i.barycenter,s.weight=i.weight)}),t.edges().forEach(i=>{let o=r[i.v],s=r[i.w];o!==void 0&&s!==void 0&&(s.indegree++,o.out.push(r[i.w]))});let n=Object.values(r).filter(i=>!i.indegree);return xn(n)}function xn(e){let t=[];function r(i){return o=>{o.merged||(o.barycenter===void 0||i.barycenter===void 0||o.barycenter>=i.barycenter)&&On(i,o)}}function n(i){return o=>{o.in.push(i),--o.indegree===0&&e.push(o)}}for(;e.length;){let i=e.pop();t.push(i),i.in.reverse().forEach(r(i)),i.out.forEach(n(i))}return t.filter(i=>!i.merged).map(i=>kn.pick(i,[\"vs\",\"i\",\"barycenter\",\"weight\"]))}function On(e,t){let r=0,n=0;e.weight&&(r+=e.barycenter*e.weight,n+=e.weight),t.weight&&(r+=t.barycenter*t.weight,n+=t.weight),e.vs=t.vs.concat(e.vs),e.barycenter=r/n,e.weight=n,e.i=Math.min(t.i,e.i),t.merged=!0}});var tt=v((io,et)=>{var Nn=_();et.exports=In;function In(e,t){let r=Nn.partition(e,c=>Object.hasOwn(c,\"barycenter\")),n=r.lhs,i=r.rhs.sort((c,d)=>d.i-c.i),o=[],s=0,a=0,l=0;n.sort(jn(!!t)),l=$e(o,i,l),n.forEach(c=>{l+=c.vs.length,o.push(c.vs),s+=c.barycenter*c.weight,a+=c.weight,l=$e(o,i,l)});let u={vs:o.flat(!0)};return a&&(u.barycenter=s/a,u.weight=a),u}function $e(e,t,r){let n;for(;t.length&&(n=t[t.length-1]).i<=r;)t.pop(),e.push(n.vs),r++;return r}function jn(e){return(t,r)=>t.barycenter<r.barycenter?-1:t.barycenter>r.barycenter?1:e?r.i-t.i:t.i-r.i}});var it=v((oo,nt)=>{var Cn=Qe(),Ln=Ze(),qn=tt();nt.exports=rt;function rt(e,t,r,n){let i=e.children(t),o=e.node(t),s=o?o.borderLeft:void 0,a=o?o.borderRight:void 0,l={};s&&(i=i.filter(h=>h!==s&&h!==a));let u=Cn(e,i);u.forEach(h=>{if(e.children(h.v).length){let f=rt(e,h.v,r,n);l[h.v]=f,Object.hasOwn(f,\"barycenter\")&&Rn(h,f)}});let c=Ln(u,r);Mn(c,l);let d=qn(c,n);if(s&&(d.vs=[s,d.vs,a].flat(!0),e.predecessors(s).length)){let h=e.node(e.predecessors(s)[0]),f=e.node(e.predecessors(a)[0]);Object.hasOwn(d,\"barycenter\")||(d.barycenter=0,d.weight=0),d.barycenter=(d.barycenter*d.weight+h.order+f.order)/(d.weight+2),d.weight+=2}return d}function Mn(e,t){e.forEach(r=>{r.vs=r.vs.flatMap(n=>t[n]?t[n].vs:n)})}function Rn(e,t){e.barycenter!==void 0?(e.barycenter=(e.barycenter*e.weight+t.barycenter*t.weight)/(e.weight+t.weight),e.weight+=t.weight):(e.barycenter=t.barycenter,e.weight=t.weight)}});var st=v((so,ot)=>{var Tn=y().Graph,Sn=_();ot.exports=Pn;function Pn(e,t,r,n){n||(n=e.nodes());let i=Fn(e),o=new Tn({compound:!0}).setGraph({root:i}).setDefaultNodeLabel(s=>e.node(s));return n.forEach(s=>{let a=e.node(s),l=e.parent(s);(a.rank===t||a.minRank<=t&&t<=a.maxRank)&&(o.setNode(s),o.setParent(s,l||i),e[r](s).forEach(u=>{let c=u.v===s?u.w:u.v,d=o.edge(c,s),h=d!==void 0?d.weight:0;o.setEdge(c,s,{weight:e.edge(u).weight+h})}),Object.hasOwn(a,\"minRank\")&&o.setNode(s,{borderLeft:a.borderLeft[t],borderRight:a.borderRight[t]}))}),o}function Fn(e){for(var t;e.hasNode(t=Sn.uniqueId(\"_root\")););return t}});var dt=v((ao,at)=>{at.exports=Dn;function Dn(e,t,r){let n={},i;r.forEach(o=>{let s=e.parent(o),a,l;for(;s;){if(a=e.parent(s),a?(l=n[a],n[a]=s):(l=i,i=s),l&&l!==s){t.setEdge(l,s);return}s=a}})}});var ft=v((lo,ct)=>{\"use strict\";var Gn=Xe(),Vn=Ue(),An=it(),Yn=st(),Bn=dt(),Wn=y().Graph,M=_();ct.exports=ht;function ht(e,t={}){if(typeof t.customOrder==\"function\"){t.customOrder(e,ht);return}let r=M.maxRank(e),n=lt(e,M.range(1,r+1),\"inEdges\"),i=lt(e,M.range(r-1,-1,-1),\"outEdges\"),o=Gn(e);if(ut(e,o),t.disableOptimalOrderHeuristic)return;let s=Number.POSITIVE_INFINITY,a,l=t.constraints||[];for(let u=0,c=0;c<4;++u,++c){zn(u%2?n:i,u%4>=2,l),o=M.buildLayerMatrix(e);let d=Vn(e,o);d<s?(c=0,a=Object.assign({},o),s=d):d===s&&(a=structuredClone(o))}ut(e,a)}function lt(e,t,r){let n=new Map,i=(o,s)=>{n.has(o)||n.set(o,[]),n.get(o).push(s)};for(let o of e.nodes()){let s=e.node(o);if(typeof s.rank==\"number\"&&i(s.rank,o),typeof s.minRank==\"number\"&&typeof s.maxRank==\"number\")for(let a=s.minRank;a<=s.maxRank;a++)a!==s.rank&&i(a,o)}return t.map(function(o){return Yn(e,o,r,n.get(o)||[])})}function zn(e,t,r){let n=new Wn;e.forEach(function(i){r.forEach(a=>n.setEdge(a.left,a.right));let o=i.graph().root,s=An(i,o,n,t);s.vs.forEach((a,l)=>i.node(a).order=l),Bn(i,n,s.vs)})}function ut(e,t){Object.values(t).forEach(r=>r.forEach((n,i)=>e.node(n).order=i))}});var yt=v((uo,kt)=>{\"use strict\";var Xn=y().Graph,O=_();kt.exports={positionX:Kn,findType1Conflicts:pt,findType2Conflicts:mt,addConflict:W,hasConflict:wt,verticalAlignment:bt,horizontalCompaction:vt,alignCoordinates:Et,findSmallestWidthAlignment:gt,balance:_t};function pt(e,t){let r={};function n(i,o){let s=0,a=0,l=i.length,u=o[o.length-1];return o.forEach((c,d)=>{let h=Hn(e,c),f=h?e.node(h).order:l;(h||c===u)&&(o.slice(a,d+1).forEach(m=>{e.predecessors(m).forEach(p=>{let w=e.node(p),b=w.order;(b<s||f<b)&&!(w.dummy&&e.node(m).dummy)&&W(r,p,m)})}),a=d+1,s=f)}),o}return t.length&&t.reduce(n),r}function mt(e,t){let r={};function n(o,s,a,l,u){let c;O.range(s,a).forEach(d=>{c=o[d],e.node(c).dummy&&e.predecessors(c).forEach(h=>{let f=e.node(h);f.dummy&&(f.order<l||f.order>u)&&W(r,h,c)})})}function i(o,s){let a=-1,l,u=0;return s.forEach((c,d)=>{if(e.node(c).dummy===\"border\"){let h=e.predecessors(c);h.length&&(l=e.node(h[0]).order,n(s,u,d,a,l),u=d,a=l)}n(s,u,s.length,l,o.length)}),s}return t.length&&t.reduce(i),r}function Hn(e,t){if(e.node(t).dummy)return e.predecessors(t).find(r=>e.node(r).dummy)}function W(e,t,r){if(t>r){let i=t;t=r,r=i}let n=e[t];n||(e[t]=n={}),n[r]=!0}function wt(e,t,r){if(t>r){let n=t;t=r,r=n}return!!e[t]&&Object.hasOwn(e[t],r)}function bt(e,t,r,n){let i={},o={},s={};return t.forEach(a=>{a.forEach((l,u)=>{i[l]=l,o[l]=l,s[l]=u})}),t.forEach(a=>{let l=-1;a.forEach(u=>{let c=n(u);if(c.length){c=c.sort((h,f)=>s[h]-s[f]);let d=(c.length-1)/2;for(let h=Math.floor(d),f=Math.ceil(d);h<=f;++h){let m=c[h];o[u]===u&&l<s[m]&&!wt(r,u,m)&&(o[m]=u,o[u]=i[u]=i[m],l=s[m])}}})}),{root:i,align:o}}function vt(e,t,r,n,i){let o={},s=Un(e,t,r,i),a=i?\"borderLeft\":\"borderRight\";function l(d,h){let f=s.nodes().slice(),m={},p=f.pop();for(;p;){if(m[p])d(p);else{m[p]=!0,f.push(p);for(let w of h(p))f.push(w)}p=f.pop()}}function u(d){o[d]=s.inEdges(d).reduce((h,f)=>Math.max(h,o[f.v]+s.edge(f)),0)}function c(d){let h=s.outEdges(d).reduce((m,p)=>Math.min(m,o[p.w]-s.edge(p)),Number.POSITIVE_INFINITY),f=e.node(d);h!==Number.POSITIVE_INFINITY&&f.borderType!==a&&(o[d]=Math.max(o[d],h))}return l(u,s.predecessors.bind(s)),l(c,s.successors.bind(s)),Object.keys(n).forEach(d=>o[d]=o[r[d]]),o}function Un(e,t,r,n){let i=new Xn,o=e.graph(),s=Qn(o.nodesep,o.edgesep,n);return t.forEach(a=>{let l;a.forEach(u=>{let c=r[u];if(i.setNode(c),l){var d=r[l],h=i.edge(d,c);i.setEdge(d,c,Math.max(s(e,u,l),h||0))}l=u})}),i}function gt(e,t){return Object.values(t).reduce((r,n)=>{let i=Number.NEGATIVE_INFINITY,o=Number.POSITIVE_INFINITY;Object.entries(n).forEach(([a,l])=>{let u=Jn(e,a)/2;i=Math.max(l+u,i),o=Math.min(l-u,o)});let s=i-o;return s<r[0]&&(r=[s,n]),r},[Number.POSITIVE_INFINITY,null])[1]}function Et(e,t){let r=Object.values(t),n=O.applyWithChunking(Math.min,r),i=O.applyWithChunking(Math.max,r);[\"u\",\"d\"].forEach(o=>{[\"l\",\"r\"].forEach(s=>{let a=o+s,l=e[a];if(l===t)return;let u=Object.values(l),c=n-O.applyWithChunking(Math.min,u);s!==\"l\"&&(c=i-O.applyWithChunking(Math.max,u)),c&&(e[a]=O.mapValues(l,d=>d+c))})})}function _t(e,t){return O.mapValues(e.ul,(r,n)=>{if(t)return e[t.toLowerCase()][n];{let i=Object.values(e).map(o=>o[n]).sort((o,s)=>o-s);return(i[1]+i[2])/2}})}function Kn(e){let t=O.buildLayerMatrix(e),r=Object.assign(pt(e,t),mt(e,t)),n={},i;[\"u\",\"d\"].forEach(s=>{i=s===\"u\"?t:Object.values(t).reverse(),[\"l\",\"r\"].forEach(a=>{a===\"r\"&&(i=i.map(d=>Object.values(d).reverse()));let l=(s===\"u\"?e.predecessors:e.successors).bind(e),u=bt(e,i,r,l),c=vt(e,i,u.root,u.align,a===\"r\");a===\"r\"&&(c=O.mapValues(c,d=>-d)),n[s+a]=c})});let o=gt(e,n);return Et(n,o),_t(n,e.graph().align)}function Qn(e,t,r){return(n,i,o)=>{let s=n.node(i),a=n.node(o),l=0,u;if(l+=s.width/2,Object.hasOwn(s,\"labelpos\"))switch(s.labelpos.toLowerCase()){case\"l\":u=-s.width/2;break;case\"r\":u=s.width/2;break}if(u&&(l+=r?u:-u),u=0,l+=(s.dummy?t:e)/2,l+=(a.dummy?t:e)/2,l+=a.width/2,Object.hasOwn(a,\"labelpos\"))switch(a.labelpos.toLowerCase()){case\"l\":u=a.width/2;break;case\"r\":u=-a.width/2;break}return u&&(l+=r?u:-u),u=0,l}}function Jn(e,t){return e.node(t).width}});var Nt=v((ho,Ot)=>{\"use strict\";var xt=_(),Zn=yt().positionX;Ot.exports=$n;function $n(e){e=xt.asNonCompoundGraph(e),ei(e),Object.entries(Zn(e)).forEach(([t,r])=>e.node(t).x=r)}function ei(e){let t=xt.buildLayerMatrix(e),r=e.graph().ranksep,n=e.graph().rankalign,i=0;t.forEach(o=>{let s=o.reduce((a,l)=>{let u=e.node(l).height;return a>u?a:u},0);o.forEach(a=>{let l=e.node(a);n===\"top\"?l.y=i+l.height/2:n===\"bottom\"?l.y=i+s-l.height/2:l.y=i+s/2}),i+=s+r})}});var Rt=v((co,Mt)=>{\"use strict\";var It=pe(),jt=we(),ti=qe(),ri=_().normalizeRanks,ni=Re(),ii=_().removeEmptyRanks,Ct=Pe(),oi=Ge(),Lt=Be(),si=ft(),ai=Nt(),x=_(),di=y().Graph;Mt.exports=li;function li(e,t={}){let r=t.debugTiming?x.time:x.notime;return r(\"layout\",()=>{let n=r(\" buildLayoutGraph\",()=>gi(e));return r(\" runLayout\",()=>ui(n,r,t)),r(\" updateInputGraph\",()=>hi(e,n)),n})}function ui(e,t,r){t(\" makeSpaceForEdgeLabels\",()=>Ei(e)),t(\" removeSelfEdges\",()=>Ci(e)),t(\" acyclic\",()=>It.run(e)),t(\" nestingGraph.run\",()=>Ct.run(e)),t(\" rank\",()=>ti(x.asNonCompoundGraph(e))),t(\" injectEdgeLabelProxies\",()=>_i(e)),t(\" removeEmptyRanks\",()=>ii(e)),t(\" nestingGraph.cleanup\",()=>Ct.cleanup(e)),t(\" normalizeRanks\",()=>ri(e)),t(\" assignRankMinMax\",()=>ki(e)),t(\" removeEdgeLabelProxies\",()=>yi(e)),t(\" normalize.run\",()=>jt.run(e)),t(\" parentDummyChains\",()=>ni(e)),t(\" addBorderSegments\",()=>oi(e)),t(\" order\",()=>si(e,r)),t(\" insertSelfEdges\",()=>Li(e)),t(\" adjustCoordinateSystem\",()=>Lt.adjust(e)),t(\" position\",()=>ai(e)),t(\" positionSelfEdges\",()=>qi(e)),t(\" removeBorderNodes\",()=>ji(e)),t(\" normalize.undo\",()=>jt.undo(e)),t(\" fixupEdgeLabelCoords\",()=>Ni(e)),t(\" undoCoordinateSystem\",()=>Lt.undo(e)),t(\" translateGraph\",()=>xi(e)),t(\" assignNodeIntersects\",()=>Oi(e)),t(\" reversePoints\",()=>Ii(e)),t(\" acyclic.undo\",()=>It.undo(e))}function hi(e,t){e.nodes().forEach(r=>{let n=e.node(r),i=t.node(r);n&&(n.x=i.x,n.y=i.y,n.order=i.order,n.rank=i.rank,t.children(r).length&&(n.width=i.width,n.height=i.height))}),e.edges().forEach(r=>{let n=e.edge(r),i=t.edge(r);n.points=i.points,Object.hasOwn(i,\"x\")&&(n.x=i.x,n.y=i.y)}),e.graph().width=t.graph().width,e.graph().height=t.graph().height}var ci=[\"nodesep\",\"edgesep\",\"ranksep\",\"marginx\",\"marginy\"],fi={ranksep:50,edgesep:20,nodesep:50,rankdir:\"tb\",rankalign:\"center\"},pi=[\"acyclicer\",\"ranker\",\"rankdir\",\"align\",\"rankalign\"],mi=[\"width\",\"height\",\"rank\"],qt={width:0,height:0},wi=[\"minlen\",\"weight\",\"width\",\"height\",\"labeloffset\"],bi={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:\"r\"},vi=[\"labelpos\"];function gi(e){let t=new di({multigraph:!0,compound:!0}),r=X(e.graph());return t.setGraph(Object.assign({},fi,z(r,ci),x.pick(r,pi))),e.nodes().forEach(n=>{let i=X(e.node(n)),o=z(i,mi);Object.keys(qt).forEach(s=>{o[s]===void 0&&(o[s]=qt[s])}),t.setNode(n,o),t.setParent(n,e.parent(n))}),e.edges().forEach(n=>{let i=X(e.edge(n));t.setEdge(n,Object.assign({},bi,z(i,wi),x.pick(i,vi)))}),t}function Ei(e){let t=e.graph();t.ranksep/=2,e.edges().forEach(r=>{let n=e.edge(r);n.minlen*=2,n.labelpos.toLowerCase()!==\"c\"&&(t.rankdir===\"TB\"||t.rankdir===\"BT\"?n.width+=n.labeloffset:n.height+=n.labeloffset)})}function _i(e){e.edges().forEach(t=>{let r=e.edge(t);if(r.width&&r.height){let n=e.node(t.v),o={rank:(e.node(t.w).rank-n.rank)/2+n.rank,e:t};x.addDummyNode(e,\"edge-proxy\",o,\"_ep\")}})}function ki(e){let t=0;e.nodes().forEach(r=>{let n=e.node(r);n.borderTop&&(n.minRank=e.node(n.borderTop).rank,n.maxRank=e.node(n.borderBottom).rank,t=Math.max(t,n.maxRank))}),e.graph().maxRank=t}function yi(e){e.nodes().forEach(t=>{let r=e.node(t);r.dummy===\"edge-proxy\"&&(e.edge(r.e).labelRank=r.rank,e.removeNode(t))})}function xi(e){let t=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,o=e.graph(),s=o.marginx||0,a=o.marginy||0;function l(u){let c=u.x,d=u.y,h=u.width,f=u.height;t=Math.min(t,c-h/2),r=Math.max(r,c+h/2),n=Math.min(n,d-f/2),i=Math.max(i,d+f/2)}e.nodes().forEach(u=>l(e.node(u))),e.edges().forEach(u=>{let c=e.edge(u);Object.hasOwn(c,\"x\")&&l(c)}),t-=s,n-=a,e.nodes().forEach(u=>{let c=e.node(u);c.x-=t,c.y-=n}),e.edges().forEach(u=>{let c=e.edge(u);c.points.forEach(d=>{d.x-=t,d.y-=n}),Object.hasOwn(c,\"x\")&&(c.x-=t),Object.hasOwn(c,\"y\")&&(c.y-=n)}),o.width=r-t+s,o.height=i-n+a}function Oi(e){e.edges().forEach(t=>{let r=e.edge(t),n=e.node(t.v),i=e.node(t.w),o,s;r.points?(o=r.points[0],s=r.points[r.points.length-1]):(r.points=[],o=i,s=n),r.points.unshift(x.intersectRect(n,o)),r.points.push(x.intersectRect(i,s))})}function Ni(e){e.edges().forEach(t=>{let r=e.edge(t);if(Object.hasOwn(r,\"x\"))switch((r.labelpos===\"l\"||r.labelpos===\"r\")&&(r.width-=r.labeloffset),r.labelpos){case\"l\":r.x-=r.width/2+r.labeloffset;break;case\"r\":r.x+=r.width/2+r.labeloffset;break}})}function Ii(e){e.edges().forEach(t=>{let r=e.edge(t);r.reversed&&r.points.reverse()})}function ji(e){e.nodes().forEach(t=>{if(e.children(t).length){let r=e.node(t),n=e.node(r.borderTop),i=e.node(r.borderBottom),o=e.node(r.borderLeft[r.borderLeft.length-1]),s=e.node(r.borderRight[r.borderRight.length-1]);r.width=Math.abs(s.x-o.x),r.height=Math.abs(i.y-n.y),r.x=o.x+r.width/2,r.y=n.y+r.height/2}}),e.nodes().forEach(t=>{e.node(t).dummy===\"border\"&&e.removeNode(t)})}function Ci(e){e.edges().forEach(t=>{if(t.v===t.w){var r=e.node(t.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}})}function Li(e){var t=x.buildLayerMatrix(e);t.forEach(r=>{var n=0;r.forEach((i,o)=>{var s=e.node(i);s.order=o+n,(s.selfEdges||[]).forEach(a=>{x.addDummyNode(e,\"selfedge\",{width:a.label.width,height:a.label.height,rank:s.rank,order:o+ ++n,e:a.e,label:a.label},\"_se\")}),delete s.selfEdges})})}function qi(e){e.nodes().forEach(t=>{var r=e.node(t);if(r.dummy===\"selfedge\"){var n=e.node(r.e.v),i=n.x+n.width/2,o=n.y,s=r.x-i,a=n.height/2;e.setEdge(r.e,r.label),e.removeNode(t),r.label.points=[{x:i+2*s/3,y:o-a},{x:i+5*s/6,y:o-a},{x:i+s,y:o},{x:i+5*s/6,y:o+a},{x:i+2*s/3,y:o+a}],r.label.x=r.x,r.label.y=r.y}})}function z(e,t){return x.mapValues(x.pick(e,t),Number)}function X(e){var t={};return e&&Object.entries(e).forEach(([r,n])=>{typeof r==\"string\"&&(r=r.toLowerCase()),t[r]=n}),t}});var St=v((fo,Tt)=>{var Mi=_(),Ri=y().Graph;Tt.exports={debugOrdering:Ti};function Ti(e){let t=Mi.buildLayerMatrix(e),r=new Ri({compound:!0,multigraph:!0}).setGraph({});return e.nodes().forEach(n=>{r.setNode(n,{label:n}),r.setParent(n,\"layer\"+e.node(n).rank)}),e.edges().forEach(n=>r.setEdge(n.v,n.w,{},n.name)),t.forEach((n,i)=>{let o=\"layer\"+i;r.setNode(o,{rank:\"same\"}),n.reduce((s,a)=>(r.setEdge(s,a,{style:\"invis\"}),a))}),r}});var Ft=v((po,Pt)=>{Pt.exports=\"2.0.4\"});var Si=v((mo,Dt)=>{Dt.exports={graphlib:y(),layout:Rt(),debug:St(),util:{time:_().time,notime:_().notime},version:Ft()}});export default Si();\n/*! For license information please see dagre.esm.js.LEGAL.txt */\n//# sourceMappingURL=dagre.esm.js.map\n","'use client';\n\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useRouter } from 'next/navigation';\nimport { toast } from 'sonner';\nimport type { Connection, Edge, NodeChange } from '@xyflow/react';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\nimport type { RepositoryNodeData } from '@/components/common/repository-node';\nimport type { CanvasNodeType } from '@/components/features/features-canvas';\nimport {\n layoutWithDagre,\n CANVAS_LAYOUT_DEFAULTS,\n type LayoutDirection,\n} from '@/lib/layout-with-dagre';\nimport { deleteFeature } from '@/app/actions/delete-feature';\nimport { resumeFeature } from '@/app/actions/resume-feature';\nimport { addRepository } from '@/app/actions/add-repository';\nimport { deleteRepository } from '@/app/actions/delete-repository';\nimport { getFeatureMetadata } from '@/app/actions/get-feature-metadata';\nimport { useAgentEventsContext } from '@/hooks/agent-events-provider';\nimport { useSoundAction } from '@/hooks/use-sound-action';\nimport { createLogger } from '@/lib/logger';\n\nimport {\n mapEventTypeToState,\n resolveSseEventUpdates,\n} from '@/components/common/feature-node/derive-feature-state';\nimport { useGraphState, type GraphCallbacks } from '@/hooks/use-graph-state';\nimport type { FeatureEntry } from '@/lib/derive-graph';\n\nconst log = createLogger('[Polling]');\nconst POLL_INTERVAL_MS = 3_000;\n\nexport interface ControlCenterState {\n nodes: CanvasNodeType[];\n edges: Edge[];\n onNodesChange: (changes: NodeChange<CanvasNodeType>[]) => void;\n handleConnect: (connection: Connection) => void;\n handleAddRepository: (path: string) => { wasEmpty: boolean; repoPath: string };\n handleLayout: (direction: LayoutDirection) => void;\n handleDeleteFeature: (featureId: string, cleanup?: boolean, cascadeDelete?: boolean) => void;\n handleRetryFeature: (featureId: string) => void;\n handleDeleteRepository: (repositoryId: string) => Promise<void>;\n createFeatureNode: (\n sourceNodeId: string | null,\n dataOverride?: Partial<FeatureNodeData>,\n edgeType?: string\n ) => string;\n /** Stable lookup: repositoryPath for a feature node. */\n getFeatureRepositoryPath: (featureNodeId: string) => string | undefined;\n /** Stable lookup: repository data by nodeId. */\n getRepositoryData: (nodeId: string) => RepositoryNodeData | undefined;\n /** Sync callbacks into derived node data (does not trigger re-render). */\n setCallbacks: (callbacks: GraphCallbacks) => void;\n}\n\n/** Must match the message string emitted by the SSE route in agent-events/route.ts */\nconst METADATA_UPDATED_MESSAGE = 'Feature metadata updated';\n\nlet nextFeatureId = 0;\nlet nextRepoTempId = 0;\n\nexport function useControlCenterState(\n initialNodes: CanvasNodeType[],\n initialEdges: Edge[]\n): ControlCenterState {\n const router = useRouter();\n const deleteSound = useSoundAction('delete');\n const createSound = useSoundAction('create');\n\n const {\n nodes,\n edges,\n reconcile,\n updateFeature,\n addPendingFeature,\n removeFeature,\n restoreFeature,\n addRepository: addRepositoryToMap,\n removeRepository,\n replaceRepository,\n getFeatureRepositoryPath,\n getRepositoryData,\n getRepoMapSize,\n setCallbacks,\n beginMutation,\n endMutation,\n isMutating,\n } = useGraphState(initialNodes, initialEdges);\n\n // Refs for stable access to latest nodes/edges without callback recreation\n const nodesRef = useRef(nodes);\n const edgesRef = useRef(edges);\n useEffect(() => {\n nodesRef.current = nodes;\n edgesRef.current = edges;\n }, [nodes, edges]);\n\n // Sync server props into domain Maps when initialNodes/initialEdges change.\n // Keyed by a stable string so we don't re-reconcile on every render.\n const initialNodeKey = useMemo(\n () =>\n initialNodes\n .map((n) => n.id)\n .sort()\n .join(','),\n [initialNodes]\n );\n const initialDataKey = useMemo(\n () =>\n initialNodes\n .filter((n) => n.type === 'featureNode')\n .map((n) => {\n const d = n.data as FeatureNodeData;\n return `${n.id}:${d.state}:${d.lifecycle}`;\n })\n .sort()\n .join(','),\n [initialNodes]\n );\n\n const prevReconcileKey = useRef('');\n\n useEffect(() => {\n const key = `${initialNodeKey}|${initialDataKey}`;\n if (key !== prevReconcileKey.current) {\n prevReconcileKey.current = key;\n reconcile(initialNodes, initialEdges);\n }\n }, [initialNodeKey, initialDataKey, initialNodes, initialEdges, reconcile]);\n\n // Track previous feature states for fallback notifications\n const prevFeatureStatesRef = useRef<Map<string, FeatureNodeData['state']>>(new Map());\n\n const { events } = useAgentEventsContext();\n\n useEffect(() => {\n const prevStates = prevFeatureStatesRef.current;\n for (const node of initialNodes) {\n if (node.type !== 'featureNode') continue;\n const data = node.data as FeatureNodeData;\n const prev = prevStates.get(node.id);\n if (prev !== undefined && prev !== data.state) {\n const sseAlreadyCovered = events.some(\n (e) => e.featureId === data.featureId && mapEventTypeToState(e.eventType) === data.state\n );\n if (!sseAlreadyCovered) {\n if (data.state === 'done') {\n toast.success(data.name, { description: 'Feature completed!' });\n } else if (data.state === 'action-required') {\n toast.warning(data.name, {\n description: 'Waiting for your approval',\n action: {\n label: 'Review',\n onClick: () => router.push(`/feature/${data.featureId}`),\n },\n });\n } else if (data.state === 'error') {\n toast.error(data.name, { description: data.errorMessage ?? 'Agent failed' });\n }\n }\n }\n prevStates.set(node.id, data.state);\n }\n }, [initialDataKey, initialNodes, events, router]);\n\n // SSE effect: only state + lifecycle updates\n const processedEventCountRef = useRef(0);\n\n useEffect(() => {\n // Clamp cursor if events were pruned\n if (processedEventCountRef.current > events.length) {\n processedEventCountRef.current = 0;\n }\n if (events.length <= processedEventCountRef.current) return;\n const newEvents = events.slice(processedEventCountRef.current);\n processedEventCountRef.current = events.length;\n\n for (const { featureId, state, lifecycle } of resolveSseEventUpdates(newEvents)) {\n if (state !== undefined || lifecycle !== undefined) {\n const nodeId = `feat-${featureId}`;\n // Skip SSE updates for features in 'deleting' state — the optimistic\n // delete state must not be overwritten by stale SSE events (e.g. agent\n // cancellation emitting AgentFailed during the soft-delete window).\n const existingNode = nodesRef.current.find((n) => n.id === nodeId);\n if (existingNode && (existingNode.data as FeatureNodeData).state === 'deleting') continue;\n\n updateFeature(nodeId, {\n ...(state !== undefined && { state }),\n ...(lifecycle !== undefined && { lifecycle }),\n });\n }\n }\n }, [events, updateFeature]);\n\n // Listen for optimistic approval events from the drawer (fires before SSE arrives)\n useEffect(() => {\n const handler = (e: Event) => {\n const { featureId } = (e as CustomEvent<{ featureId: string }>).detail;\n updateFeature(`feat-${featureId}`, { state: 'running' });\n };\n window.addEventListener('shep:feature-approved', handler);\n return () => window.removeEventListener('shep:feature-approved', handler);\n }, [updateFeature]);\n\n // Separate effect: fetch metadata (name + description) when SSE reports it changed\n const metadataFetchedRef = useRef<Set<string>>(new Set());\n const processedMetadataCountRef = useRef(0);\n\n useEffect(() => {\n // Clamp cursor if events were pruned\n if (processedMetadataCountRef.current > events.length) {\n processedMetadataCountRef.current = 0;\n }\n if (events.length <= processedMetadataCountRef.current) return;\n const newEvents = events.slice(processedMetadataCountRef.current);\n processedMetadataCountRef.current = events.length;\n\n for (const event of newEvents) {\n if (event.message !== METADATA_UPDATED_MESSAGE) continue;\n if (metadataFetchedRef.current.has(event.featureId)) continue;\n metadataFetchedRef.current.add(event.featureId);\n\n const nodeId = `feat-${event.featureId}`;\n getFeatureMetadata(event.featureId)\n .then((meta) => {\n if (meta) {\n updateFeature(nodeId, { name: meta.name, description: meta.description });\n }\n })\n .catch(() => {\n // Silent: metadata fetch failure is non-critical\n });\n }\n }, [events, updateFeature]);\n\n // --- Polling fallback: catch any SSE events that were missed ---\n useEffect(() => {\n log.debug(`polling enabled (${POLL_INTERVAL_MS}ms interval)`);\n\n const timer = setInterval(async () => {\n // Skip fetch entirely while a mutation is in-flight — the response\n // would contain pre-mutation data that reconcile would discard anyway.\n if (isMutating()) return;\n\n try {\n // Use a plain fetch instead of a server action so the poll\n // doesn't trigger the Next.js \"Rendering…\" indicator.\n const res = await fetch('/api/graph-data');\n if (!res.ok) throw new Error(`status ${res.status}`);\n const { nodes: freshNodes, edges: freshEdges } = await res.json();\n reconcile(freshNodes, freshEdges);\n } catch {\n log.warn('poll fetch failed — will retry next interval');\n }\n }, POLL_INTERVAL_MS);\n\n return () => {\n log.debug('polling disabled');\n clearInterval(timer);\n };\n }, [reconcile, isMutating]);\n\n // onNodesChange is a no-op: nodes are derived from domain Maps.\n // Since nodesDraggable=false and elementsSelectable=false, only React Flow's\n // internal replace/dimensions changes come through — we ignore them all.\n const onNodesChange = useCallback((_changes: NodeChange<CanvasNodeType>[]) => {\n // Intentional no-op: domain Maps are the source of truth.\n }, []);\n\n const handleConnect = useCallback((_connection: Connection) => {\n // Connections are managed via domain operations, not direct edge manipulation.\n }, []);\n\n const createFeatureNode = useCallback(\n (\n sourceNodeId: string | null,\n dataOverride?: Partial<FeatureNodeData>,\n edgeType?: string\n ): string => {\n // Use real feature ID when available (from server), otherwise temp ID\n const id = dataOverride?.featureId\n ? `feat-${dataOverride.featureId}`\n : `feature-${Date.now()}-${nextFeatureId++}`;\n const newFeatureData: FeatureNodeData = {\n name: dataOverride?.name ?? 'New Feature',\n description: dataOverride?.description ?? 'Describe what this feature does',\n featureId: dataOverride?.featureId ?? `#${id.slice(-4)}`,\n lifecycle: 'requirements',\n state: dataOverride?.state ?? 'running',\n progress: 0,\n repositoryPath: dataOverride?.repositoryPath ?? '',\n branch: dataOverride?.branch ?? '',\n };\n\n const parentNodeId = edgeType === 'dependencyEdge' && sourceNodeId ? sourceNodeId : undefined;\n\n addPendingFeature(id, newFeatureData, parentNodeId);\n\n return id;\n },\n [addPendingFeature]\n );\n\n const handleRetryFeature = useCallback(\n (featureId: string) => {\n const nodeId = `feat-${featureId}`;\n // Optimistic: switch to running state\n beginMutation();\n updateFeature(nodeId, { state: 'running' });\n\n resumeFeature(featureId)\n .then((result) => {\n if (result.error) {\n updateFeature(nodeId, { state: 'error' });\n toast.error(result.error);\n } else {\n toast.success('Feature resumed');\n }\n })\n .catch(() => {\n updateFeature(nodeId, { state: 'error' });\n toast.error('Failed to resume feature');\n })\n .finally(() => endMutation());\n },\n [updateFeature, beginMutation, endMutation]\n );\n\n const handleDeleteFeature = useCallback(\n (featureId: string, cleanup?: boolean, cascadeDelete?: boolean) => {\n const nodeId = `feat-${featureId}`;\n const shouldCascade = cascadeDelete === true;\n\n // Collect all descendant feature node IDs (children, grandchildren, etc.)\n const descendants: string[] = [];\n if (shouldCascade) {\n const queue = [nodeId];\n while (queue.length > 0) {\n const current = queue.shift()!;\n for (const edge of edgesRef.current) {\n if (edge.type === 'dependencyEdge' && edge.source === current) {\n descendants.push(edge.target);\n queue.push(edge.target);\n }\n }\n }\n }\n\n // Snapshot current states for rollback (parent + descendants)\n const prevStates = new Map<string, FeatureNodeData['state']>();\n for (const nid of [nodeId, ...descendants]) {\n const node = nodesRef.current.find((n) => n.id === nid);\n if (node) {\n prevStates.set(nid, (node.data as FeatureNodeData).state);\n }\n }\n\n // Optimistic: show \"deleting\" state on parent (and descendants if cascading)\n beginMutation();\n updateFeature(nodeId, { state: 'deleting' });\n for (const childId of descendants) {\n updateFeature(childId, { state: 'deleting' });\n }\n deleteSound.play();\n router.push('/');\n\n deleteFeature(featureId, cleanup, cascadeDelete)\n .then((result) => {\n if (result.error) {\n // Rollback all to previous states\n for (const [nid, prevState] of prevStates) {\n if (prevState) updateFeature(nid, { state: prevState });\n }\n toast.error(result.error);\n } else {\n // Delete succeeded — remove features from the canvas. The polling\n // reconcile would eventually clean them up, but we remove them\n // explicitly so the user sees them disappear promptly.\n removeFeature(nodeId);\n for (const childId of descendants) {\n removeFeature(childId);\n }\n }\n })\n .catch(() => {\n for (const [nid, prevState] of prevStates) {\n if (prevState) updateFeature(nid, { state: prevState });\n }\n toast.error('Failed to delete feature');\n })\n .finally(() => endMutation());\n },\n [router, deleteSound, updateFeature, removeFeature, beginMutation, endMutation]\n );\n\n const handleDeleteRepository = useCallback(\n async (repositoryId: string) => {\n const repoNodeId = `repo-${repositoryId}`;\n\n // Find children of this repo via edges\n const childFeatureIds = new Set(\n edgesRef.current.filter((e) => e.source === repoNodeId).map((e) => e.target)\n );\n\n // Snapshot for rollback\n const prevRepoData = getRepositoryData(repoNodeId);\n const childSnapshots = new Map<string, FeatureEntry>();\n for (const childId of childFeatureIds) {\n const childNode = nodesRef.current.find((n) => n.id === childId);\n if (childNode) {\n childSnapshots.set(childId, { nodeId: childId, data: childNode.data as FeatureNodeData });\n }\n }\n\n const rollback = () => {\n if (prevRepoData) addRepositoryToMap(repoNodeId, prevRepoData);\n for (const [childId, entry] of childSnapshots) {\n restoreFeature(childId, entry);\n }\n };\n\n // Optimistic: remove repo + children\n beginMutation();\n removeRepository(repoNodeId);\n for (const childId of childFeatureIds) {\n removeFeature(childId);\n }\n\n try {\n const result = await deleteRepository(repositoryId);\n if (!result.success) {\n toast.error(result.error ?? 'Failed to remove repository');\n rollback();\n return;\n }\n deleteSound.play();\n } catch {\n toast.error('Failed to remove repository');\n rollback();\n } finally {\n endMutation();\n }\n },\n [\n deleteSound,\n removeRepository,\n removeFeature,\n addRepositoryToMap,\n restoreFeature,\n getRepositoryData,\n beginMutation,\n endMutation,\n ]\n );\n\n const handleLayout = useCallback(\n (direction: LayoutDirection) => {\n // Layout is applied via reconcile on next server prop update.\n // For immediate re-layout, we apply dagre and trigger a reconcile-like update.\n const result = layoutWithDagre(nodesRef.current, edgesRef.current, {\n ...CANVAS_LAYOUT_DEFAULTS,\n direction,\n });\n reconcile(result.nodes, result.edges);\n },\n [reconcile]\n );\n\n const handleAddRepository = useCallback(\n (path: string): { wasEmpty: boolean; repoPath: string } => {\n const wasEmpty = getRepoMapSize() === 0;\n const tempId = `repo-temp-${++nextRepoTempId}`;\n const repoName =\n path\n .replace(/[\\\\/]+$/, '')\n .split(/[\\\\/]/)\n .pop() ?? path;\n\n beginMutation();\n addRepositoryToMap(tempId, {\n name: repoName,\n repositoryPath: path,\n id: tempId,\n createdAt: Date.now(),\n });\n\n addRepository({ path, name: repoName })\n .then((result) => {\n if (result.error) {\n removeRepository(tempId);\n toast.error(result.error);\n return;\n }\n const repo = result.repository!;\n const realId = `repo-${repo.id}`;\n replaceRepository(tempId, realId, {\n name: repo.name,\n repositoryPath: repo.path,\n id: repo.id,\n createdAt:\n repo.createdAt instanceof Date ? repo.createdAt.getTime() : Number(repo.createdAt),\n });\n createSound.play();\n })\n .catch(() => {\n removeRepository(tempId);\n toast.error('Failed to add repository');\n })\n .finally(() => endMutation());\n\n return { wasEmpty, repoPath: path };\n },\n [\n addRepositoryToMap,\n removeRepository,\n replaceRepository,\n createSound,\n getRepoMapSize,\n beginMutation,\n endMutation,\n ]\n );\n\n return {\n nodes,\n edges,\n onNodesChange,\n handleConnect,\n handleAddRepository,\n handleLayout,\n handleDeleteFeature,\n handleRetryFeature,\n handleDeleteRepository,\n createFeatureNode,\n getFeatureRepositoryPath,\n getRepositoryData,\n setCallbacks,\n };\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"70099c9ae974aa597b7a549b6cd0b9cbbe16010aa4\":\"deleteFeature\"},\"src/presentation/web/app/actions/delete-feature.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"70099c9ae974aa597b7a549b6cd0b9cbbe16010aa4\",callServer,void 0,findSourceMapURL,\"deleteFeature\");export{$$RSC_SERVER_ACTION_0 as deleteFeature};","/* __next_internal_action_entry_do_not_use__ [{\"40a6b7ea71d7e951d86251b34edc87cb0176fc2a98\":\"addRepository\"},\"src/presentation/web/app/actions/add-repository.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40a6b7ea71d7e951d86251b34edc87cb0176fc2a98\",callServer,void 0,findSourceMapURL,\"addRepository\");export{$$RSC_SERVER_ACTION_0 as addRepository};","/* __next_internal_action_entry_do_not_use__ [{\"40a18eb8177b38a57c6b587b139edd68ca9ca998e1\":\"deleteRepository\"},\"src/presentation/web/app/actions/delete-repository.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40a18eb8177b38a57c6b587b139edd68ca9ca998e1\",callServer,void 0,findSourceMapURL,\"deleteRepository\");export{$$RSC_SERVER_ACTION_0 as deleteRepository};","/* __next_internal_action_entry_do_not_use__ [{\"405b5b4d688dbbdc3aff2df6b8e0ac4855d0c78c91\":\"getFeatureMetadata\"},\"src/presentation/web/app/actions/get-feature-metadata.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"405b5b4d688dbbdc3aff2df6b8e0ac4855d0c78c91\",callServer,void 0,findSourceMapURL,\"getFeatureMetadata\");export{$$RSC_SERVER_ACTION_0 as getFeatureMetadata};","'use client';\n\nimport { useState, useMemo, useCallback, useRef, useEffect } from 'react';\nimport type { Edge, Position } from '@xyflow/react';\nimport type { CanvasNodeType } from '@/components/features/features-canvas';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\nimport type { RepositoryNodeData } from '@/components/common/repository-node';\nimport {\n deriveGraph,\n type FeatureEntry,\n type RepoEntry,\n type GraphCallbacks,\n} from '@/lib/derive-graph';\nimport { layoutWithDagre, CANVAS_LAYOUT_DEFAULTS } from '@/lib/layout-with-dagre';\n\nexport type { GraphCallbacks } from '@/lib/derive-graph';\n\nexport interface UseGraphStateReturn {\n /** Derived React Flow nodes (from domain Maps). */\n nodes: CanvasNodeType[];\n /** Derived React Flow edges (from domain Maps). */\n edges: Edge[];\n /**\n * Reconcile domain Maps with fresh server data (new initialNodes/initialEdges).\n * Preserves pending (creating) nodes unless a matching real feature appears.\n * No-ops when a mutation is in-flight (see beginMutation/endMutation).\n */\n reconcile: (newNodes: CanvasNodeType[], newEdges: Edge[]) => void;\n /** Update a feature's state/lifecycle/name (e.g., from SSE events). */\n updateFeature: (featureNodeId: string, updates: FeatureDataUpdates) => void;\n /** Add a pending (optimistic) feature node (state='creating'). */\n addPendingFeature: (nodeId: string, data: FeatureNodeData, parentNodeId?: string) => void;\n /** Remove a pending feature node (e.g., on rollback). */\n removePendingFeature: (nodeId: string) => void;\n /** Remove a real feature node from the domain Map. */\n removeFeature: (nodeId: string) => void;\n /** Restore a previously removed feature (rollback). */\n restoreFeature: (nodeId: string, entry: FeatureEntry) => void;\n /** Add a repository node (may use a temp ID initially). */\n addRepository: (nodeId: string, data: RepositoryNodeData) => void;\n /** Remove a repository node. */\n removeRepository: (nodeId: string) => void;\n /** Replace a temp repo ID with the real one (atomic). */\n replaceRepository: (tempId: string, realId: string, data: RepositoryNodeData) => void;\n /** Stable lookup: get the repositoryPath for a feature node. */\n getFeatureRepositoryPath: (featureNodeId: string) => string | undefined;\n /** Stable lookup: get repository node data by nodeId. */\n getRepositoryData: (nodeId: string) => RepositoryNodeData | undefined;\n /** Stable lookup: get the current number of repositories in the domain Map. */\n getRepoMapSize: () => number;\n /** Update callbacks injected into node data (does NOT trigger re-render). */\n setCallbacks: (callbacks: GraphCallbacks) => void;\n /**\n * Signal that an optimistic mutation has started. While any mutation is\n * in-flight, `reconcile` becomes a no-op so stale poll data cannot\n * overwrite optimistic state. Calls are ref-counted — nest freely.\n */\n beginMutation: () => void;\n /**\n * Signal that an optimistic mutation has resolved. Adds a one-poll-interval\n * cooldown (default 3 s) so the next poll fetches post-mutation data.\n */\n endMutation: (cooldownMs?: number) => void;\n /** Whether a mutation is currently in-flight (for polling skip logic). */\n isMutating: () => boolean;\n}\n\n/** Parse initialNodes + initialEdges into domain Maps. */\nfunction parseMaps(\n initialNodes: CanvasNodeType[],\n initialEdges: Edge[]\n): {\n featureMap: Map<string, FeatureEntry>;\n repoMap: Map<string, RepoEntry>;\n} {\n // Build parentNodeId map from dependency edges\n const parentByChild = new Map<string, string>();\n for (const edge of initialEdges) {\n if (edge.type === 'dependencyEdge') {\n parentByChild.set(edge.target, edge.source);\n }\n }\n\n const featureMap = new Map<string, FeatureEntry>();\n const repoMap = new Map<string, RepoEntry>();\n\n for (const node of initialNodes) {\n if (node.type === 'featureNode') {\n featureMap.set(node.id, {\n nodeId: node.id,\n data: node.data as FeatureNodeData,\n parentNodeId: parentByChild.get(node.id),\n });\n } else if (node.type === 'repositoryNode') {\n repoMap.set(node.id, {\n nodeId: node.id,\n data: node.data as RepositoryNodeData,\n });\n }\n }\n\n return { featureMap, repoMap };\n}\n\ntype FeatureDataUpdates = Partial<\n Pick<FeatureNodeData, 'state' | 'lifecycle' | 'name' | 'description'>\n>;\n\nfunction isFeatureDataUnchanged(data: FeatureNodeData, updates: FeatureDataUpdates): boolean {\n return (\n (updates.state === undefined || updates.state === data.state) &&\n (updates.lifecycle === undefined || updates.lifecycle === data.lifecycle) &&\n (updates.name === undefined || updates.name === data.name) &&\n (updates.description === undefined || updates.description === data.description)\n );\n}\n\n/**\n * Shallow-compare two Maps by key set and entry data (JSON equality).\n * Returns true if they are structurally identical, avoiding unnecessary re-renders.\n */\nfunction mapsEqual<T extends { data: unknown; parentNodeId?: string }>(\n a: Map<string, T>,\n b: Map<string, T>\n): boolean {\n if (a.size !== b.size) return false;\n for (const [key, aEntry] of a) {\n const bEntry = b.get(key);\n if (!bEntry) return false;\n if (aEntry.parentNodeId !== bEntry.parentNodeId) return false;\n if (aEntry.data === bEntry.data) continue;\n if (JSON.stringify(aEntry.data) !== JSON.stringify(bEntry.data)) return false;\n }\n return true;\n}\n\nexport function useGraphState(\n initialNodes: CanvasNodeType[],\n initialEdges: Edge[]\n): UseGraphStateReturn {\n // eslint-disable-next-line react-hooks/exhaustive-deps -- intentional: parse only on mount (like useState initializer)\n const init = useMemo(() => parseMaps(initialNodes, initialEdges), []);\n\n const [featureMap, setFeatureMap] = useState<Map<string, FeatureEntry>>(init.featureMap);\n const [repoMap, setRepoMap] = useState<Map<string, RepoEntry>>(init.repoMap);\n const [pendingMap, setPendingMap] = useState<Map<string, FeatureEntry>>(\n new Map<string, FeatureEntry>()\n );\n\n // Buffer for SSE updates that arrive before their feature is in featureMap.\n // When reconcile adds new features, buffered updates are applied automatically.\n const pendingUpdatesRef = useRef<\n Map<string, Partial<Pick<FeatureNodeData, 'state' | 'lifecycle' | 'name' | 'description'>>>\n >(new Map());\n\n // Protect recently-added/replaced repos from stale-poll reconcile.\n // After addRepository or replaceRepository, the repo ID is marked as protected.\n // Once reconcile sees the repo in server data, the protection is cleared.\n // This prevents a stale poll (that fetched data before the server action completed)\n // from wiping a repo that the client has already added.\n const protectedRepoIdsRef = useRef<Set<string>>(new Set());\n\n // Mutation guard: ref-counted counter. While > 0, reconcile is a no-op\n // so stale poll data cannot overwrite optimistic state.\n const mutationCountRef = useRef(0);\n const mutationTimersRef = useRef<Set<ReturnType<typeof setTimeout>>>(new Set());\n\n // Track 'deleting' features that the server no longer returns.\n // Retained for one extra reconcile cycle so the user sees the deleting state\n // before the node disappears from the canvas.\n const deletingRetainedRef = useRef<Set<string>>(new Set());\n\n // Callbacks stored in a ref so changing them doesn't trigger re-render.\n // The stable wrapper object reads from the ref so node closures always use latest callbacks.\n const callbacksRef = useRef<GraphCallbacks>({});\n const stableCallbacks = useMemo<GraphCallbacks>(\n () => ({\n onNodeAction: (nodeId) => callbacksRef.current.onNodeAction?.(nodeId),\n onNodeSettings: (nodeId) => callbacksRef.current.onNodeSettings?.(nodeId),\n onFeatureDelete: (featureId) => callbacksRef.current.onFeatureDelete?.(featureId),\n onRepositoryAdd: (nodeId) => callbacksRef.current.onRepositoryAdd?.(nodeId),\n onRepositoryClick: (nodeId) => callbacksRef.current.onRepositoryClick?.(nodeId),\n onRepositoryDelete: (repositoryId) => callbacksRef.current.onRepositoryDelete?.(repositoryId),\n onRetryFeature: (featureId) => callbacksRef.current.onRetryFeature?.(featureId),\n }),\n []\n );\n\n // Stable refs for domain Maps (for use in callbacks without depending on state)\n const featureMapRef = useRef(featureMap);\n featureMapRef.current = featureMap;\n const repoMapRef = useRef(repoMap);\n repoMapRef.current = repoMap;\n\n // Derive graph from domain Maps (runs on every Map change, but dagre only on topology change)\n const derived = useMemo(\n () => deriveGraph(featureMap, repoMap, pendingMap, stableCallbacks),\n [featureMap, repoMap, pendingMap, stableCallbacks]\n );\n\n // Cache dagre layout positions — only re-run when node set or edge connections change\n const layoutCacheRef = useRef<{\n key: string;\n positions: Map<\n string,\n { position: { x: number; y: number }; targetPosition: Position; sourcePosition: Position }\n >;\n }>({ key: '', positions: new Map() });\n\n const { nodes, edges } = useMemo(() => {\n const nodeIds = derived.nodes\n .map((n) => n.id)\n .sort()\n .join(',');\n const edgeKeys = derived.edges\n .map((e) => `${e.source}-${e.target}`)\n .sort()\n .join(',');\n const topologyKey = `${nodeIds}|${edgeKeys}`;\n\n if (topologyKey !== layoutCacheRef.current.key) {\n // Topology changed — re-run dagre\n const result = layoutWithDagre(derived.nodes, derived.edges, CANVAS_LAYOUT_DEFAULTS);\n const positions = new Map<\n string,\n { position: { x: number; y: number }; targetPosition: Position; sourcePosition: Position }\n >();\n for (const node of result.nodes) {\n positions.set(node.id, {\n position: node.position,\n targetPosition: (node as Record<string, unknown>).targetPosition as Position,\n sourcePosition: (node as Record<string, unknown>).sourcePosition as Position,\n });\n }\n\n // Anchor new layout to previous positions so the graph doesn't drift.\n // Find the first surviving node (exists in both old and new layouts) and\n // shift the entire new layout by the delta between its old and new position.\n const prevPositions = layoutCacheRef.current.positions;\n if (prevPositions.size > 0) {\n let dx = 0;\n let dy = 0;\n for (const [id, newPos] of positions) {\n const oldPos = prevPositions.get(id);\n if (oldPos) {\n dx = oldPos.position.x - newPos.position.x;\n dy = oldPos.position.y - newPos.position.y;\n break;\n }\n }\n if (dx !== 0 || dy !== 0) {\n for (const pos of positions.values()) {\n pos.position = { x: pos.position.x + dx, y: pos.position.y + dy };\n }\n for (const node of result.nodes) {\n node.position = { x: node.position.x + dx, y: node.position.y + dy };\n }\n }\n }\n\n layoutCacheRef.current = { key: topologyKey, positions };\n return result;\n }\n\n // Data-only change — apply cached positions without re-running dagre\n const { positions } = layoutCacheRef.current;\n const nodes = derived.nodes.map((node) => {\n const cached = positions.get(node.id);\n return cached ? { ...node, ...cached } : node;\n });\n return { nodes, edges: derived.edges };\n }, [derived]);\n\n // --- Mutations ---\n\n const reconcile = useCallback((newNodes: CanvasNodeType[], newEdges: Edge[]) => {\n // Skip reconciliation while an optimistic mutation is in-flight.\n // Stale poll data fetched before the mutation completed would overwrite\n // the optimistic state, causing flicker (nodes disappearing/reappearing).\n if (mutationCountRef.current > 0) return;\n\n const { featureMap: newFeatureMap, repoMap: newRepoMap } = parseMaps(newNodes, newEdges);\n\n // Precompute match keys so we don't scan newFeatureMap.values() per pending entry\n const realFeatureKeys = new Set(\n [...newFeatureMap.values()].map((e) => `${e.data.name}\\0${e.data.repositoryPath}`)\n );\n\n setFeatureMap((currentFeatureMap) => {\n // Preserve pending (creating) nodes unless matched by name+repositoryPath from newFeatureMap\n const pendingEntries = [...currentFeatureMap.entries()].filter(\n ([, e]) => e.data.state === 'creating'\n );\n\n const merged = new Map(newFeatureMap);\n\n // Keep pending nodes that don't have a real counterpart in new data\n for (const [tempId, pendingEntry] of pendingEntries) {\n const key = `${pendingEntry.data.name}\\0${pendingEntry.data.repositoryPath}`;\n if (!realFeatureKeys.has(key)) {\n merged.set(tempId, pendingEntry);\n }\n }\n\n // Preserve 'deleting' state for features being deleted.\n // If the server still returns the feature, override its state to 'deleting'.\n // If the server no longer returns it (soft-deleted), retain it for one\n // extra reconcile cycle so the user sees the deleting animation.\n const nextRetained = new Set<string>();\n for (const [id, entry] of currentFeatureMap) {\n if (entry.data.state === 'deleting') {\n if (merged.has(id)) {\n // Server still has it — override state to keep showing 'deleting'\n merged.set(id, {\n ...merged.get(id)!,\n data: { ...merged.get(id)!.data, state: 'deleting' },\n });\n } else if (!deletingRetainedRef.current.has(id)) {\n // First reconcile after server removal — retain with deleting state\n merged.set(id, entry);\n nextRetained.add(id);\n }\n // else: already retained once — let it disappear\n }\n }\n deletingRetainedRef.current = nextRetained;\n\n // Apply any buffered SSE updates to features that now exist in the map\n for (const [nodeId, updates] of pendingUpdatesRef.current) {\n const entry = merged.get(nodeId);\n if (entry) {\n merged.set(nodeId, { ...entry, data: { ...entry.data, ...updates } });\n pendingUpdatesRef.current.delete(nodeId);\n }\n }\n\n // Avoid re-render when polling returns identical data\n if (mapsEqual(currentFeatureMap, merged)) return currentFeatureMap;\n return merged;\n });\n\n // Clean pendingMap entries that now have a real counterpart in server data\n setPendingMap((currentPendingMap) => {\n if (currentPendingMap.size === 0) return currentPendingMap;\n let changed = false;\n const next = new Map(currentPendingMap);\n for (const [tempId, pendingEntry] of currentPendingMap) {\n const key = `${pendingEntry.data.name}\\0${pendingEntry.data.repositoryPath}`;\n if (realFeatureKeys.has(key)) {\n next.delete(tempId);\n changed = true;\n }\n }\n return changed ? next : currentPendingMap;\n });\n\n // Merge repoMap: preserve optimistic (temp) repos AND recently-added/replaced\n // repos that the server doesn't know about yet. Without this, a polling\n // reconcile that fires before the server action returns (or uses stale data\n // from an in-flight fetch) would wipe the repo, causing a canvas→empty flicker.\n setRepoMap((currentRepoMap) => {\n // Start with everything the server returned\n const merged = new Map(newRepoMap);\n\n // Build a set of repositoryPaths present in server data for dedup\n const serverPaths = new Set([...newRepoMap.values()].map((e) => e.data.repositoryPath));\n\n for (const [id, entry] of currentRepoMap) {\n if (merged.has(id)) {\n // Server confirmed this repo — no longer needs protection\n protectedRepoIdsRef.current.delete(id);\n continue;\n }\n if (serverPaths.has(entry.data.repositoryPath)) {\n // Server has a repo with same path — clear protection\n protectedRepoIdsRef.current.delete(id);\n continue;\n }\n // Keep temp repos or protected (recently added/replaced) repos\n if (id.startsWith('repo-temp-') || protectedRepoIdsRef.current.has(id)) {\n merged.set(id, entry);\n }\n }\n\n // Avoid re-render when polling returns identical data\n if (mapsEqual(currentRepoMap, merged)) return currentRepoMap;\n return merged;\n });\n }, []);\n\n const updateFeature = useCallback((featureNodeId: string, updates: FeatureDataUpdates) => {\n setFeatureMap((prev) => {\n const entry = prev.get(featureNodeId);\n if (!entry) {\n // Feature not yet in map — buffer update for when reconcile adds it\n pendingUpdatesRef.current.set(featureNodeId, {\n ...pendingUpdatesRef.current.get(featureNodeId),\n ...updates,\n });\n return prev;\n }\n // Clear any buffered update for this feature since it's now in the map\n pendingUpdatesRef.current.delete(featureNodeId);\n if (isFeatureDataUnchanged(entry.data, updates)) return prev;\n const next = new Map(prev);\n next.set(featureNodeId, { ...entry, data: { ...entry.data, ...updates } });\n return next;\n });\n\n // Also check pendingMap\n setPendingMap((prev) => {\n const entry = prev.get(featureNodeId);\n if (!entry) return prev;\n if (isFeatureDataUnchanged(entry.data, updates)) return prev;\n const next = new Map(prev);\n next.set(featureNodeId, { ...entry, data: { ...entry.data, ...updates } });\n return next;\n });\n }, []);\n\n const addPendingFeature = useCallback(\n (nodeId: string, data: FeatureNodeData, parentNodeId?: string) => {\n setPendingMap((prev) => {\n const next = new Map(prev);\n next.set(nodeId, { nodeId, data, parentNodeId });\n return next;\n });\n },\n []\n );\n\n const removePendingFeature = useCallback((nodeId: string) => {\n setPendingMap((prev) => {\n if (!prev.has(nodeId)) return prev;\n const next = new Map(prev);\n next.delete(nodeId);\n return next;\n });\n }, []);\n\n const removeFeature = useCallback((nodeId: string) => {\n setFeatureMap((prev) => {\n if (!prev.has(nodeId)) return prev;\n const next = new Map(prev);\n next.delete(nodeId);\n return next;\n });\n }, []);\n\n const restoreFeature = useCallback((nodeId: string, entry: FeatureEntry) => {\n setFeatureMap((prev) => {\n const next = new Map(prev);\n next.set(nodeId, entry);\n return next;\n });\n }, []);\n\n const addRepository = useCallback((nodeId: string, data: RepositoryNodeData) => {\n protectedRepoIdsRef.current.add(nodeId);\n setRepoMap((prev) => {\n const next = new Map(prev);\n next.set(nodeId, { nodeId, data });\n return next;\n });\n }, []);\n\n const removeRepository = useCallback((nodeId: string) => {\n protectedRepoIdsRef.current.delete(nodeId);\n setRepoMap((prev) => {\n if (!prev.has(nodeId)) return prev;\n const next = new Map(prev);\n next.delete(nodeId);\n return next;\n });\n }, []);\n\n const replaceRepository = useCallback(\n (tempId: string, realId: string, data: RepositoryNodeData) => {\n protectedRepoIdsRef.current.delete(tempId);\n protectedRepoIdsRef.current.add(realId);\n setRepoMap((prev) => {\n if (!prev.has(tempId)) return prev;\n const next = new Map(prev);\n next.delete(tempId);\n next.set(realId, { nodeId: realId, data });\n return next;\n });\n },\n []\n );\n\n const getFeatureRepositoryPath = useCallback((featureNodeId: string): string | undefined => {\n return featureMapRef.current.get(featureNodeId)?.data.repositoryPath;\n }, []);\n\n const getRepositoryData = useCallback((nodeId: string): RepositoryNodeData | undefined => {\n return repoMapRef.current.get(nodeId)?.data;\n }, []);\n\n const getRepoMapSize = useCallback((): number => {\n return repoMapRef.current.size;\n }, []);\n\n const setCallbacks = useCallback((callbacks: GraphCallbacks) => {\n callbacksRef.current = callbacks;\n }, []);\n\n const beginMutation = useCallback(() => {\n mutationCountRef.current++;\n }, []);\n\n const endMutation = useCallback((cooldownMs = 3_000) => {\n // Delay decrement by one poll interval so the next fetch after the\n // mutation returns post-mutation data, not a stale in-flight response.\n const timer = setTimeout(() => {\n mutationCountRef.current = Math.max(0, mutationCountRef.current - 1);\n mutationTimersRef.current.delete(timer);\n }, cooldownMs);\n mutationTimersRef.current.add(timer);\n }, []);\n\n const isMutating = useCallback(() => mutationCountRef.current > 0, []);\n\n // Cleanup cooldown timers on unmount\n useEffect(() => {\n const timers = mutationTimersRef.current;\n return () => {\n for (const timer of timers) clearTimeout(timer);\n timers.clear();\n };\n }, []);\n\n return {\n nodes,\n edges,\n reconcile,\n updateFeature,\n addPendingFeature,\n removePendingFeature,\n removeFeature,\n restoreFeature,\n addRepository,\n removeRepository,\n replaceRepository,\n getFeatureRepositoryPath,\n getRepositoryData,\n getRepoMapSize,\n setCallbacks,\n beginMutation,\n endMutation,\n isMutating,\n };\n}\n","import dagre from '@dagrejs/dagre';\nimport type { Edge, Node } from '@xyflow/react';\n\nexport type LayoutDirection = 'TB' | 'LR' | 'BT' | 'RL';\n\nexport interface LayoutOptions {\n /** Graph direction: top-bottom, left-right, etc. Default \"TB\" */\n direction?: LayoutDirection;\n /** Default node size when per-node size is unavailable */\n nodeSize?: { width: number; height: number };\n /** Vertical separation between ranks (default 80) */\n ranksep?: number;\n /** Horizontal separation between nodes in the same rank (default 30) */\n nodesep?: number;\n}\n\n/** Canonical layout defaults for the control-center canvas. */\nexport const CANVAS_LAYOUT_DEFAULTS: LayoutOptions = {\n direction: 'LR',\n ranksep: 200,\n nodesep: 15,\n};\n\n/** Known node-type dimensions for the canvas node types */\nconst NODE_DIMENSIONS: Record<string, { width: number; height: number }> = {\n featureNode: { width: 288, height: 140 },\n repositoryNode: { width: 328, height: 50 },\n};\n\nfunction getNodeSize(\n node: Node,\n defaultSize: { width: number; height: number }\n): { width: number; height: number } {\n // Prefer per-node size from data, then type-based lookup, then default\n const data = node.data as Record<string, unknown> | undefined;\n if (data && typeof data.width === 'number' && typeof data.height === 'number') {\n return { width: data.width, height: data.height };\n }\n return NODE_DIMENSIONS[node.type ?? ''] ?? defaultSize;\n}\n\nfunction getHandlePositions(direction: LayoutDirection) {\n switch (direction) {\n case 'LR':\n return { targetPosition: 'left' as const, sourcePosition: 'right' as const };\n case 'RL':\n return { targetPosition: 'right' as const, sourcePosition: 'left' as const };\n case 'BT':\n return { targetPosition: 'bottom' as const, sourcePosition: 'top' as const };\n case 'TB':\n default:\n return { targetPosition: 'top' as const, sourcePosition: 'bottom' as const };\n }\n}\n\n/**\n * Compute an automatic hierarchical layout for React Flow nodes and edges\n * using Dagre. Returns new node/edge arrays — never mutates the originals.\n *\n * Disconnected nodes (no edges) are interleaved with connected root trees\n * in their original input order, preserving the caller's sort (e.g. createdAt).\n */\nexport function layoutWithDagre<N extends Node>(\n nodes: N[],\n edges: Edge[],\n opts: LayoutOptions = {}\n): { nodes: N[]; edges: Edge[] } {\n const {\n direction = 'TB',\n nodeSize = { width: 172, height: 36 },\n ranksep = 80,\n nodesep = 30,\n } = opts;\n\n if (nodes.length === 0) {\n return { nodes: [], edges: [] };\n }\n\n const g = new dagre.graphlib.Graph({ multigraph: true });\n g.setDefaultEdgeLabel(() => ({}));\n g.setGraph({ rankdir: direction, ranksep, nodesep });\n\n // Separate connected from disconnected nodes\n const connectedIds = new Set<string>();\n for (const edge of edges) {\n connectedIds.add(edge.source);\n connectedIds.add(edge.target);\n }\n\n const graphNodes = nodes.filter((n) => connectedIds.has(n.id));\n const disconnectedNodes = nodes.filter((n) => !connectedIds.has(n.id));\n\n // Add nodes to the dagre graph\n for (const node of graphNodes) {\n const size = getNodeSize(node, nodeSize);\n g.setNode(node.id, { width: size.width, height: size.height });\n }\n\n // Add edges — use edge.id as key to support multigraph (duplicate source→target)\n for (const edge of edges) {\n if (!g.hasNode(edge.source) || !g.hasNode(edge.target)) continue;\n g.setEdge(edge.source, edge.target, {}, edge.id);\n }\n\n dagre.layout(g);\n\n const { targetPosition, sourcePosition } = getHandlePositions(direction);\n const isHorizontal = direction === 'LR' || direction === 'RL';\n\n // Collect dagre center positions keyed by node id\n const centerMap = new Map<string, { cx: number; cy: number; w: number; h: number }>();\n for (const node of graphNodes) {\n const dagreNode = g.node(node.id);\n const size = getNodeSize(node, nodeSize);\n centerMap.set(node.id, { cx: dagreNode.x, cy: dagreNode.y, w: size.width, h: size.height });\n }\n\n // Add disconnected nodes to centerMap so they participate in root positioning.\n // Use the same primary-axis position as connected roots (rank 0) so they align\n // visually with repos that have features attached.\n let rootPrimaryAxis = 0;\n for (const c of centerMap.values()) {\n rootPrimaryAxis = isHorizontal ? c.cx : c.cy;\n break; // Use the first connected node's primary position\n }\n for (const node of disconnectedNodes) {\n const size = getNodeSize(node, nodeSize);\n centerMap.set(node.id, {\n cx: isHorizontal ? rootPrimaryAxis : 0,\n cy: isHorizontal ? 0 : rootPrimaryAxis,\n w: size.width,\n h: size.height,\n });\n }\n\n // ── Proper tree layout for the secondary axis ──\n // Dagre gives us correct primary-axis (rank/X) positions but its secondary-\n // axis (Y) positioning doesn't respect our tree structure well. Replace it\n // with a bottom-up tree layout:\n // 1. Compute subtree heights (leaves → roots)\n // 2. Position children centered on parent (roots → leaves)\n // This guarantees: no overlaps, parents centered on children, and straight\n // lines for 1-to-1 connections at every depth.\n\n // Build parent→children map from edges\n const childrenOf = new Map<string, string[]>();\n for (const edge of edges) {\n if (!centerMap.has(edge.source) || !centerMap.has(edge.target)) continue;\n if (!childrenOf.has(edge.source)) childrenOf.set(edge.source, []);\n childrenOf.get(edge.source)!.push(edge.target);\n }\n\n // Sort children by input order (preserves caller's ordering, e.g. createdAt)\n const inputIndex = new Map<string, number>();\n for (let i = 0; i < nodes.length; i++) {\n inputIndex.set(nodes[i].id, i);\n }\n for (const [, kids] of childrenOf) {\n kids.sort((a, b) => (inputIndex.get(a) ?? 0) - (inputIndex.get(b) ?? 0));\n }\n\n // Find tree roots: connected nodes that are not children of another node\n const childSet = new Set<string>();\n for (const ids of childrenOf.values()) {\n for (const id of ids) childSet.add(id);\n }\n const connectedRoots = [...connectedIds].filter((id) => centerMap.has(id) && !childSet.has(id));\n // Merge connected roots and disconnected nodes, sorted by input order\n // so repos maintain their original creation-time ordering regardless of\n // whether they have features attached.\n const allRoots = [...connectedRoots, ...disconnectedNodes.map((n) => n.id)];\n allRoots.sort((a, b) => (inputIndex.get(a) ?? 0) - (inputIndex.get(b) ?? 0));\n\n // Bottom-up: compute the total secondary-axis span each subtree needs\n const subtreeSpan = new Map<string, number>();\n function computeSpan(nodeId: string): number {\n if (subtreeSpan.has(nodeId)) return subtreeSpan.get(nodeId)!;\n const c = centerMap.get(nodeId)!;\n const nodeSpan = isHorizontal ? c.h : c.w;\n const kids = childrenOf.get(nodeId);\n if (!kids || kids.length === 0) {\n subtreeSpan.set(nodeId, nodeSpan);\n return nodeSpan;\n }\n let childrenTotalSpan = 0;\n for (const kid of kids) {\n childrenTotalSpan += computeSpan(kid);\n }\n childrenTotalSpan += (kids.length - 1) * nodesep;\n const span = Math.max(nodeSpan, childrenTotalSpan);\n subtreeSpan.set(nodeId, span);\n return span;\n }\n\n for (const root of allRoots) computeSpan(root);\n\n // Top-down: position each node on the secondary axis, centering parent\n // on its children block. For 1-to-1 edges the child gets the same\n // secondary-axis value as its parent (straight line).\n function positionTree(nodeId: string, centerPos: number): void {\n const c = centerMap.get(nodeId)!;\n if (isHorizontal) {\n c.cy = centerPos;\n } else {\n c.cx = centerPos;\n }\n const kids = childrenOf.get(nodeId);\n if (!kids || kids.length === 0) return;\n\n // Total span occupied by children\n let childrenTotalSpan = 0;\n for (const kid of kids) {\n childrenTotalSpan += subtreeSpan.get(kid) ?? 0;\n }\n childrenTotalSpan += (kids.length - 1) * nodesep;\n\n // Start from the top of the centered children block\n let cursor = centerPos - childrenTotalSpan / 2;\n for (const kid of kids) {\n const kidSpan = subtreeSpan.get(kid) ?? 0;\n positionTree(kid, cursor + kidSpan / 2);\n cursor += kidSpan + nodesep;\n }\n }\n\n // Position all root trees (connected and disconnected) in input order.\n let rootCursor = 0;\n for (const root of allRoots) {\n const span = subtreeSpan.get(root) ?? 0;\n positionTree(root, rootCursor + span / 2);\n rootCursor += span + nodesep;\n }\n\n // Build result array converting center-coords to React Flow top-left\n const result: N[] = [];\n for (const node of nodes) {\n const c = centerMap.get(node.id);\n if (!c) continue;\n result.push({\n ...node,\n targetPosition,\n sourcePosition,\n position: { x: c.cx - c.w / 2, y: c.cy - c.h / 2 },\n } as N);\n }\n\n return { nodes: result, edges: [...edges] };\n}\n","/**\n * derive-graph.ts\n *\n * Pure client-side derivation: domain Maps → React Flow nodes + edges.\n * All edges are derived from domain relationships (repositoryPath matching,\n * parentNodeId) — never stored independently.\n */\n\nimport type { Edge } from '@xyflow/react';\nimport type { CanvasNodeType } from '@/components/features/features-canvas';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\nimport type { RepositoryNodeData } from '@/components/common/repository-node';\n/** A feature node entry stored in the domain Map. */\nexport interface FeatureEntry {\n nodeId: string;\n data: FeatureNodeData;\n /** If set, this feature connects to a parent feature via a dependency edge (no repo→feature edge). */\n parentNodeId?: string;\n}\n\n/** A repository node entry stored in the domain Map. */\nexport interface RepoEntry {\n nodeId: string;\n data: RepositoryNodeData;\n}\n\n/** Stable callbacks passed by the consumer, injected into derived node data. */\nexport interface GraphCallbacks {\n /** Called when the user triggers an action on a feature node (e.g., adds a sub-feature). */\n onNodeAction?: (nodeId: string) => void;\n /** Called when the user opens settings/details on a feature node. */\n onNodeSettings?: (nodeId: string) => void;\n /** Called when the user deletes a feature. */\n onFeatureDelete?: (featureId: string, cleanup?: boolean, cascadeDelete?: boolean) => void;\n /** Called when the user clicks the \"+\" add-feature button on a repo node. */\n onRepositoryAdd?: (repoNodeId: string) => void;\n /** Called when the user clicks a repo node to navigate to its detail page. */\n onRepositoryClick?: (repoNodeId: string) => void;\n /** Called when the user deletes a repository. */\n onRepositoryDelete?: (repositoryId: string) => void;\n /** Called when the user retries a failed feature. */\n onRetryFeature?: (featureId: string) => void;\n}\n\n/**\n * Derives React Flow nodes and edges from domain Maps.\n *\n * - Feature nodes without a parentNodeId → repo→feature edge (matched by repositoryPath)\n * - Feature nodes without a parentNodeId but with no matching repo → virtual repo node\n * - Feature nodes with a parentNodeId → dependency edge (parentNodeId→nodeId)\n * - Pending feature nodes (creating state) from pendingMap → same rules, no action callbacks\n * - Callbacks are injected into node data via closures\n */\nexport function deriveGraph(\n featureMap: Map<string, FeatureEntry>,\n repoMap: Map<string, RepoEntry>,\n pendingMap: Map<string, FeatureEntry>,\n callbacks?: GraphCallbacks\n): { nodes: CanvasNodeType[]; edges: Edge[] } {\n const nodes: CanvasNodeType[] = [];\n const edges: Edge[] = [];\n\n // Normalize path separators so Windows backslash paths match forward-slash paths\n const normalizePath = (p: string) => p.replace(/\\\\/g, '/');\n\n // Build a lookup: repositoryPath → repoNodeId\n const repoByPath = new Map<string, string>();\n for (const [nodeId, entry] of repoMap) {\n if (entry.data.repositoryPath) {\n repoByPath.set(normalizePath(entry.data.repositoryPath), nodeId);\n }\n }\n\n // Virtual repo nodes created for orphaned features (not in repoMap)\n const virtualRepos = new Map<string, string>(); // path → virtualNodeId\n\n function getOrCreateVirtualRepo(repositoryPath: string): string {\n if (virtualRepos.has(repositoryPath)) {\n return virtualRepos.get(repositoryPath)!;\n }\n const virtualId = `virtual-repo-${repositoryPath}`;\n const repoName = repositoryPath.split('/').filter(Boolean).at(-1) ?? repositoryPath;\n nodes.push({\n id: virtualId,\n type: 'repositoryNode',\n position: { x: 0, y: 0 },\n data: { name: repoName, repositoryPath } satisfies RepositoryNodeData,\n } as CanvasNodeType);\n virtualRepos.set(repositoryPath, virtualId);\n return virtualId;\n }\n\n // Add repo nodes (real ones) — sorted by createdAt for stable vertical order.\n // The server-side layoutWithDagre may reorder the node array (connected vs\n // disconnected split), so we cannot rely on Map insertion order alone.\n const sortedRepoEntries = [...repoMap.entries()].sort((a, b) => {\n const aTime = (a[1].data.createdAt as number | undefined) ?? 0;\n const bTime = (b[1].data.createdAt as number | undefined) ?? 0;\n return aTime - bTime;\n });\n for (const [nodeId, entry] of sortedRepoEntries) {\n const data: RepositoryNodeData = {\n ...entry.data,\n ...(callbacks?.onRepositoryAdd && {\n onAdd: () => callbacks.onRepositoryAdd!(nodeId),\n }),\n ...(callbacks?.onRepositoryClick && {\n onClick: () => callbacks.onRepositoryClick!(nodeId),\n }),\n ...(callbacks?.onRepositoryDelete && {\n onDelete: callbacks.onRepositoryDelete,\n }),\n };\n nodes.push({\n id: nodeId,\n type: 'repositoryNode',\n position: { x: 0, y: 0 },\n data,\n } as CanvasNodeType);\n }\n\n // Process feature entries (both real and pending).\n // Skip pendingMap entries that already exist in featureMap (reconcile may not\n // have cleaned them up yet if the AI-generated name differs from the original).\n const allFeatureEntries: [string, FeatureEntry, boolean][] = [\n ...[...featureMap.entries()].map(\n ([id, e]) => [id, e, false] as [string, FeatureEntry, boolean]\n ),\n ...[...pendingMap.entries()]\n .filter(([id]) => !featureMap.has(id))\n .map(([id, e]) => [id, e, true] as [string, FeatureEntry, boolean]),\n ];\n\n for (const [nodeId, entry, isPending] of allFeatureEntries) {\n const isCreating = entry.data.state === 'creating' || isPending;\n\n const data: FeatureNodeData = {\n ...entry.data,\n // Callbacks only for non-creating nodes\n ...(!isCreating &&\n callbacks?.onNodeAction && {\n onAction: () => callbacks.onNodeAction!(nodeId),\n }),\n ...(!isCreating &&\n callbacks?.onNodeSettings && {\n onSettings: () => callbacks.onNodeSettings!(nodeId),\n }),\n ...(!isCreating &&\n callbacks?.onFeatureDelete && {\n onDelete: callbacks.onFeatureDelete,\n }),\n ...(!isCreating &&\n entry.data.state === 'error' &&\n callbacks?.onRetryFeature && {\n onRetry: callbacks.onRetryFeature,\n }),\n };\n\n nodes.push({\n id: nodeId,\n type: 'featureNode',\n position: { x: 0, y: 0 },\n data,\n } as CanvasNodeType);\n\n // Edge derivation\n if (entry.parentNodeId) {\n // Dependency edge (parent→child feature)\n edges.push({\n id: `dep-${entry.parentNodeId}-${nodeId}`,\n source: entry.parentNodeId,\n target: nodeId,\n type: 'dependencyEdge',\n });\n } else {\n // Repo→feature edge (matched by repositoryPath)\n const repositoryPath = normalizePath(entry.data.repositoryPath);\n const repoNodeId = repoByPath.get(repositoryPath) ?? getOrCreateVirtualRepo(repositoryPath);\n edges.push({\n id: `edge-${repoNodeId}-${nodeId}`,\n source: repoNodeId,\n target: nodeId,\n style: { strokeDasharray: '5 5' },\n });\n }\n }\n\n // Build set of feature node IDs that have children (are dependency edge sources)\n const parentNodeIds = new Set<string>();\n for (const edge of edges) {\n if (edge.type === 'dependencyEdge') {\n parentNodeIds.add(edge.source);\n }\n }\n\n // Inject showHandles and hasChildren based on edges\n const hasEdges = edges.length > 0;\n for (const node of nodes) {\n const data = node.data as Record<string, unknown>;\n data.showHandles = hasEdges;\n if (node.type === 'featureNode') {\n data.hasChildren = parentNodeIds.has(node.id);\n }\n }\n\n return { nodes, edges };\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { ReactFlowProvider } from '@xyflow/react';\nimport type { Edge } from '@xyflow/react';\nimport type { CanvasNodeType } from '@/components/features/features-canvas';\nimport { ControlCenterInner } from './control-center-inner';\n\nexport interface ControlCenterProps {\n initialNodes: CanvasNodeType[];\n initialEdges: Edge[];\n /** Drawer content rendered by the @drawer parallel route slot. */\n drawer?: ReactNode;\n}\n\nexport function ControlCenter({ initialNodes, initialEdges, drawer }: ControlCenterProps) {\n return (\n <div data-testid=\"control-center\" className=\"h-full w-full\">\n <ReactFlowProvider>\n <ControlCenterInner initialNodes={initialNodes} initialEdges={initialEdges} />\n </ReactFlowProvider>\n <div key=\"drawer\">{drawer}</div>\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport { Handle, Position } from '@xyflow/react';\nimport { Github, Plus, Code2, Terminal, FolderOpen, Trash2, Play, Square } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { ActionButton } from '@/components/common/action-button';\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog';\nimport { Button } from '@/components/ui/button';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\nimport { DeploymentStatusBadge } from '@/components/common/deployment-status-badge';\nimport { useDeployAction } from '@/hooks/use-deploy-action';\nimport { useFeatureFlags } from '@/hooks/feature-flags-context';\nimport type { RepositoryNodeData } from './repository-node-config';\nimport { useRepositoryActions } from './use-repository-actions';\n\nexport function RepositoryNode({ data }: { data: RepositoryNodeData; [key: string]: unknown }) {\n const featureFlags = useFeatureFlags();\n const [confirmOpen, setConfirmOpen] = useState(false);\n const actions = useRepositoryActions(\n data.repositoryPath ? { repositoryPath: data.repositoryPath } : null\n );\n const deployAction = useDeployAction(\n data.repositoryPath\n ? {\n targetId: data.repositoryPath,\n targetType: 'repository',\n repositoryPath: data.repositoryPath,\n }\n : null\n );\n const isDeploymentActive = deployAction.status === 'Booting' || deployAction.status === 'Ready';\n\n return (\n <div className={cn('group relative', data.onDelete && data.id && 'pl-10')}>\n {data.showHandles ? (\n <Handle\n type=\"target\"\n position={Position.Left}\n isConnectable={false}\n className=\"opacity-0!\"\n />\n ) : null}\n\n {/* Delete button — visible on hover, positioned to the left */}\n {data.onDelete && data.id ? (\n <>\n <div className=\"absolute top-1/2 left-0 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100\">\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n aria-label=\"Remove repository\"\n data-testid=\"repository-node-delete-button\"\n onClick={(e) => {\n e.stopPropagation();\n setConfirmOpen(true);\n }}\n className=\"bg-card text-muted-foreground hover:border-destructive hover:text-destructive flex h-7 w-7 cursor-pointer items-center justify-center rounded-full border shadow-sm transition-colors\"\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n </button>\n </TooltipTrigger>\n <TooltipContent>Remove repository</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </div>\n\n <Dialog open={confirmOpen} onOpenChange={setConfirmOpen}>\n <DialogContent className=\"max-w-xs\">\n <DialogHeader>\n <DialogTitle>Remove repository?</DialogTitle>\n <DialogDescription>\n This will remove <strong>{data.name}</strong> and all its features from your\n workspace. The repository files on disk won&apos;t be affected.\n </DialogDescription>\n </DialogHeader>\n <DialogFooter className=\"grid grid-cols-2 gap-2 sm:flex-none\">\n <DialogClose asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogClose>\n <Button\n variant=\"destructive\"\n onClick={() => {\n setConfirmOpen(false);\n data.onDelete?.(data.id!);\n }}\n >\n Remove\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </>\n ) : null}\n\n <div\n role=\"button\"\n tabIndex={0}\n data-testid=\"repository-node-card\"\n data-repo-name={data.name}\n onClick={(e) => {\n e.stopPropagation();\n data.onClick?.();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n data.onClick?.();\n }\n }}\n className=\"nodrag bg-card flex min-w-[18rem] cursor-pointer items-center gap-3 rounded-full border px-4 py-3 shadow-sm\"\n >\n <Github className=\"text-muted-foreground h-5 w-5 shrink-0\" />\n <span data-testid=\"repository-node-name\" className=\"min-w-0 truncate text-sm font-medium\">\n {data.name}\n </span>\n\n <div\n className={cn(\n 'flex shrink-0 items-center gap-2',\n (data.repositoryPath ?? data.onAdd) && 'ml-auto'\n )}\n onClick={(e) => e.stopPropagation()}\n >\n {data.repositoryPath ? (\n <>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"flex items-center\">\n <ActionButton\n label=\"Open in IDE\"\n onClick={actions.openInIde}\n loading={actions.ideLoading}\n error={!!actions.ideError}\n icon={Code2}\n iconOnly\n variant=\"ghost\"\n size=\"icon-xs\"\n />\n </span>\n </TooltipTrigger>\n <TooltipContent>Open in IDE</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"flex items-center\">\n <ActionButton\n label=\"Open in Shell\"\n onClick={actions.openInShell}\n loading={actions.shellLoading}\n error={!!actions.shellError}\n icon={Terminal}\n iconOnly\n variant=\"ghost\"\n size=\"icon-xs\"\n />\n </span>\n </TooltipTrigger>\n <TooltipContent>Open in Shell</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"flex items-center\">\n <ActionButton\n label=\"Open Folder\"\n onClick={actions.openFolder}\n loading={actions.folderLoading}\n error={!!actions.folderError}\n icon={FolderOpen}\n iconOnly\n variant=\"ghost\"\n size=\"icon-xs\"\n />\n </span>\n </TooltipTrigger>\n <TooltipContent>Open Folder</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n {featureFlags.envDeploy ? (\n <>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"flex items-center\">\n <ActionButton\n label={isDeploymentActive ? 'Stop Dev Server' : 'Start Dev Server'}\n onClick={isDeploymentActive ? deployAction.stop : deployAction.deploy}\n loading={deployAction.deployLoading || deployAction.stopLoading}\n error={!!deployAction.deployError}\n icon={isDeploymentActive ? Square : Play}\n iconOnly\n variant=\"ghost\"\n size=\"icon-xs\"\n />\n </span>\n </TooltipTrigger>\n <TooltipContent>\n {isDeploymentActive ? 'Stop Dev Server' : 'Start Dev Server'}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n {isDeploymentActive ? (\n <DeploymentStatusBadge\n status={deployAction.status}\n url={deployAction.url}\n targetId={data.repositoryPath}\n />\n ) : null}\n </>\n ) : null}\n </>\n ) : null}\n\n {data.onAdd ? (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n aria-label=\"Add feature\"\n data-testid=\"repository-node-add-button\"\n onClick={(e) => {\n e.stopPropagation();\n data.onAdd?.();\n }}\n className={cn(\n 'text-muted-foreground hover:bg-accent dark:hover:bg-accent/50 flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded-full transition-colors hover:text-blue-500',\n data.pulseAdd &&\n 'animate-pulse-cta bg-blue-100 text-blue-500 dark:bg-blue-900/40'\n )}\n >\n <Plus className=\"h-3.5 w-3.5\" />\n </button>\n </TooltipTrigger>\n <TooltipContent>Add feature</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n ) : null}\n </div>\n </div>\n\n {/* Source handle — invisible, for edge connections */}\n {data.onAdd || data.showHandles ? (\n <Handle\n type=\"source\"\n position={Position.Right}\n isConnectable={!data.showHandles}\n className=\"opacity-0!\"\n />\n ) : null}\n </div>\n );\n}\n","'use client';\n\nimport { useCallback } from 'react';\nimport { Code2, Terminal, FolderOpen } from 'lucide-react';\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';\nimport { Separator } from '@/components/ui/separator';\nimport { ActionButton } from '@/components/common/action-button';\nimport type { RepositoryNodeData } from './repository-node-config';\nimport { useRepositoryActions } from './use-repository-actions';\n\nexport interface RepositoryDrawerProps {\n data: RepositoryNodeData | null;\n onClose: () => void;\n}\n\nexport function RepositoryDrawer({ data, onClose }: RepositoryDrawerProps) {\n const handleClose = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const actions = useRepositoryActions(\n data?.repositoryPath ? { repositoryPath: data.repositoryPath } : null\n );\n\n return (\n <BaseDrawer\n open={data !== null}\n onClose={handleClose}\n size=\"md\"\n modal={false}\n data-testid=\"repository-drawer\"\n deployTarget={\n data?.repositoryPath\n ? {\n targetId: data.repositoryPath,\n targetType: 'repository',\n repositoryPath: data.repositoryPath,\n }\n : undefined\n }\n header={\n data ? (\n <div data-testid=\"repository-drawer-header\">\n <DrawerTitle>{data.name}</DrawerTitle>\n {data.repositoryPath ? (\n <DrawerDescription className=\"truncate font-mono text-xs\">\n {data.repositoryPath}\n </DrawerDescription>\n ) : null}\n </div>\n ) : undefined\n }\n >\n {data?.repositoryPath ? (\n <>\n <Separator />\n <div className=\"flex flex-col gap-3 p-4\">\n <div className=\"text-muted-foreground text-xs font-semibold tracking-wider\">\n OPEN WITH\n </div>\n <div className=\"flex flex-col gap-2\">\n <ActionButton\n label=\"Open in IDE\"\n onClick={actions.openInIde}\n loading={actions.ideLoading}\n error={!!actions.ideError}\n icon={Code2}\n variant=\"outline\"\n size=\"sm\"\n />\n <ActionButton\n label=\"Open in Shell\"\n onClick={actions.openInShell}\n loading={actions.shellLoading}\n error={!!actions.shellError}\n icon={Terminal}\n variant=\"outline\"\n size=\"sm\"\n />\n <ActionButton\n label=\"Open Folder\"\n onClick={actions.openFolder}\n loading={actions.folderLoading}\n error={!!actions.folderError}\n icon={FolderOpen}\n variant=\"outline\"\n size=\"sm\"\n />\n </div>\n </div>\n </>\n ) : null}\n </BaseDrawer>\n );\n}\n","'use client';\n\nimport { BaseEdge, getBezierPath } from '@xyflow/react';\nimport type { EdgeProps } from '@xyflow/react';\n\n/**\n * Custom React Flow edge for parent→child feature dependencies.\n * Uses bezier curves and dashed style matching repo→feature edges.\n */\nexport function DependencyEdge(props: EdgeProps) {\n const [edgePath] = getBezierPath({\n sourceX: props.sourceX,\n sourceY: props.sourceY,\n targetX: props.targetX,\n targetY: props.targetY,\n sourcePosition: props.sourcePosition,\n targetPosition: props.targetPosition,\n });\n\n return (\n <BaseEdge\n id={props.id}\n path={edgePath}\n style={{\n strokeDasharray: '5 5',\n }}\n />\n );\n}\n","'use client';\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n ReactFlow,\n Background,\n BackgroundVariant,\n Controls,\n ControlButton,\n useReactFlow,\n} from '@xyflow/react';\nimport type { Connection, Edge, NodeChange, OnMoveEnd, Viewport } from '@xyflow/react';\nimport { Plus, RotateCcw } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\nimport { EmptyState } from '@/components/common/empty-state';\nimport { FeatureNode } from '@/components/common/feature-node';\nimport type { FeatureNodeType, FeatureNodeData } from '@/components/common/feature-node';\nimport { RepositoryNode } from '@/components/common/repository-node';\nimport type { RepositoryNodeType } from '@/components/common/repository-node';\nimport { DependencyEdge } from './dependency-edge';\n\nexport type CanvasNodeType = FeatureNodeType | RepositoryNodeType;\n\nexport interface FeaturesCanvasProps {\n nodes: CanvasNodeType[];\n edges: Edge[];\n selectedFeatureId?: string | null;\n defaultViewport?: Viewport;\n onNodesChange?: (changes: NodeChange<CanvasNodeType>[]) => void;\n onAddFeature?: () => void;\n onNodeClick?: (event: React.MouseEvent, node: CanvasNodeType) => void;\n onPaneClick?: (event: React.MouseEvent) => void;\n onConnect?: (connection: Connection) => void;\n onCanvasDrag?: () => void;\n onMoveEnd?: OnMoveEnd;\n onResetViewport?: () => Viewport;\n toolbar?: React.ReactNode;\n emptyState?: React.ReactNode;\n}\n\nconst FALLBACK_VIEWPORT: Viewport = { x: 30, y: 30, zoom: 0.85 };\n\nfunction ResetButton({ onResetViewport }: { onResetViewport: () => Viewport }) {\n const { setViewport } = useReactFlow();\n\n const handleReset = useCallback(() => {\n const viewport = onResetViewport();\n setViewport(viewport, { duration: 400 });\n }, [onResetViewport, setViewport]);\n\n return (\n <ControlButton onClick={handleReset} title=\"Reset view\" aria-label=\"Reset view\">\n <RotateCcw style={{ fill: 'none' }} />\n </ControlButton>\n );\n}\n\nexport function FeaturesCanvas({\n nodes,\n edges,\n selectedFeatureId,\n defaultViewport,\n onNodesChange,\n onAddFeature,\n onConnect,\n onNodeClick,\n onPaneClick,\n onCanvasDrag,\n onMoveEnd,\n onResetViewport,\n toolbar,\n emptyState,\n}: FeaturesCanvasProps) {\n const nodeTypes = useMemo(\n () => ({\n featureNode: FeatureNode,\n repositoryNode: RepositoryNode,\n }),\n []\n );\n\n const edgeTypes = useMemo(\n () => ({\n dependencyEdge: DependencyEdge,\n }),\n []\n );\n\n // Callbacks and showHandles are already injected into node.data by deriveGraph.\n // Only selectedFeatureId highlighting needs to be applied here.\n const enrichedNodes = useMemo(\n () =>\n selectedFeatureId == null\n ? nodes\n : (nodes.map((node) =>\n node.type === 'featureNode' &&\n (node.data as FeatureNodeData).featureId === selectedFeatureId\n ? { ...node, selected: true }\n : node\n ) as CanvasNodeType[]),\n [nodes, selectedFeatureId]\n );\n\n const isEmpty = nodes.length === 0;\n\n // Track empty→populated transition for exit animation.\n // When isEmpty flips from true to false, keep the overlay mounted\n // and fade it out before removing it from the DOM.\n const [showOverlay, setShowOverlay] = useState(isEmpty);\n const [overlayExiting, setOverlayExiting] = useState(false);\n const prevEmptyRef = useRef(isEmpty);\n\n useEffect(() => {\n if (prevEmptyRef.current && !isEmpty) {\n // Was empty, now populated — start exit animation\n setOverlayExiting(true);\n const timer = setTimeout(() => {\n setShowOverlay(false);\n setOverlayExiting(false);\n }, 300);\n prevEmptyRef.current = isEmpty;\n return () => clearTimeout(timer);\n }\n if (!prevEmptyRef.current && isEmpty) {\n // Was populated, now empty — show overlay immediately\n setShowOverlay(true);\n }\n prevEmptyRef.current = isEmpty;\n }, [isEmpty]);\n\n const fallbackEmptyState =\n isEmpty && !emptyState ? (\n <EmptyState\n title=\"No features yet\"\n description=\"Get started by creating your first feature.\"\n action={\n <Button onClick={onAddFeature}>\n <Plus className=\"mr-2 h-4 w-4\" />\n New Feature\n </Button>\n }\n />\n ) : null;\n\n const overlayContent = emptyState ?? fallbackEmptyState;\n\n return (\n <div\n data-testid={isEmpty ? 'features-canvas-empty' : 'features-canvas'}\n data-no-drawer-close\n className=\"dark:bg-background pointer-events-auto relative h-full w-full bg-[#f6f7f8]\"\n >\n <ReactFlow\n nodes={enrichedNodes}\n edges={edges}\n nodeTypes={nodeTypes}\n edgeTypes={edgeTypes}\n onConnect={onConnect}\n onNodesChange={onNodesChange}\n onNodeClick={onNodeClick}\n onPaneClick={onPaneClick}\n onMoveStart={onCanvasDrag}\n onMoveEnd={onMoveEnd}\n defaultViewport={defaultViewport ?? FALLBACK_VIEWPORT}\n nodesDraggable={false}\n nodesConnectable={false}\n elementsSelectable={false}\n proOptions={{ hideAttribution: true }}\n >\n <Background\n variant={BackgroundVariant.Dots}\n gap={24}\n size={1}\n color=\"#b8bcc4\"\n className=\"dark:[&_circle]:!fill-white/[0.1]\"\n />\n {!isEmpty && (\n <Controls showInteractive={false}>\n {onResetViewport ? <ResetButton onResetViewport={onResetViewport} /> : null}\n </Controls>\n )}\n {toolbar}\n </ReactFlow>\n {showOverlay && overlayContent ? (\n <div\n className={cn(\n 'pointer-events-none absolute inset-0 z-10 flex items-center justify-center transition-opacity duration-300',\n overlayExiting ? 'opacity-0' : 'animate-in fade-in opacity-100 duration-200'\n )}\n >\n <div className=\"pointer-events-auto\">{overlayContent}</div>\n </div>\n ) : null}\n </div>\n );\n}\n","'use client';\n\nimport { usePathname } from 'next/navigation';\n\n/**\n * Extracts the selected feature ID from the current URL path.\n * Returns `null` when no feature drawer route is active.\n */\nexport function useSelectedFeatureId(): string | null {\n const pathname = usePathname();\n const match = pathname.match(/^\\/feature\\/([^/]+)/);\n return match?.[1] ?? null;\n}\n","'use client';\n\nimport { useCallback, useEffect, useRef } from 'react';\nimport type { Viewport } from '@xyflow/react';\n\nexport type { Viewport } from '@xyflow/react';\n\nexport const STORAGE_KEY = 'shep-canvas-viewport';\nexport const DEBOUNCE_MS = 500;\n\nexport const DEFAULT_VIEWPORT: Viewport = { x: 30, y: 30, zoom: 0.85 };\n\nexport interface UseViewportPersistenceResult {\n defaultViewport: Viewport;\n onMoveEnd: (viewport: Viewport) => void;\n resetViewport: () => Viewport;\n}\n\nfunction isValidViewport(value: unknown): value is Viewport {\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const v = value as Record<string, unknown>;\n return (\n typeof v.x === 'number' &&\n typeof v.y === 'number' &&\n typeof v.zoom === 'number' &&\n Number.isFinite(v.x) &&\n Number.isFinite(v.y) &&\n Number.isFinite(v.zoom) &&\n v.zoom > 0\n );\n}\n\nfunction readViewport(): Viewport {\n try {\n const raw = localStorage.getItem(STORAGE_KEY);\n if (raw == null) return DEFAULT_VIEWPORT;\n const parsed: unknown = JSON.parse(raw);\n return isValidViewport(parsed) ? parsed : DEFAULT_VIEWPORT;\n } catch {\n return DEFAULT_VIEWPORT;\n }\n}\n\nexport function useViewportPersistence(): UseViewportPersistenceResult {\n const defaultViewport = useRef<Viewport>(readViewport()).current;\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n return () => {\n if (timerRef.current != null) {\n clearTimeout(timerRef.current);\n }\n };\n }, []);\n\n const onMoveEnd = useCallback((viewport: Viewport) => {\n if (timerRef.current != null) {\n clearTimeout(timerRef.current);\n }\n timerRef.current = setTimeout(() => {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(viewport));\n } catch {\n // Silently ignore localStorage errors (quota exceeded, private browsing, etc.)\n }\n }, DEBOUNCE_MS);\n }, []);\n\n const resetViewport = useCallback((): Viewport => {\n try {\n localStorage.removeItem(STORAGE_KEY);\n } catch {\n // Silently ignore localStorage errors\n }\n return DEFAULT_VIEWPORT;\n }, []);\n\n return { defaultViewport, onMoveEnd, resetViewport };\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"0071dc7d34b32b95b3467a6c3f2b3896904293519a\":\"isAgentSetupComplete\"},\"src/presentation/web/app/actions/agent-setup-flag.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"0071dc7d34b32b95b3467a6c3f2b3896904293519a\",callServer,void 0,findSourceMapURL,\"isAgentSetupComplete\");export{$$RSC_SERVER_ACTION_0 as isAgentSetupComplete};","/* __next_internal_action_entry_do_not_use__ [{\"00dc254d1f19a522c2d3a151e3d89f6f21acfd4f6d\":\"checkAgentAuth\"},\"src/presentation/web/app/actions/check-agent-auth.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"00dc254d1f19a522c2d3a151e3d89f6f21acfd4f6d\",callServer,void 0,findSourceMapURL,\"checkAgentAuth\");export{$$RSC_SERVER_ACTION_0 as checkAgentAuth};","'use client';\n\nimport { useState, useEffect, useCallback, useRef } from 'react';\nimport { ChevronRight, ChevronLeft, Loader2, Bot } from 'lucide-react';\nimport { getAllAgentModels } from '@/app/actions/get-all-agent-models';\nimport type { AgentModelGroup } from '@/app/actions/get-all-agent-models';\nimport { updateAgentAndModel } from '@/app/actions/update-agent-and-model';\nimport { getAgentTypeIcon } from '@/components/common/feature-node/agent-type-icons';\nimport { getModelMeta } from '@/lib/model-metadata';\nimport { cn } from '@/lib/utils';\n\nexport interface WelcomeAgentSetupProps {\n onComplete: () => void;\n className?: string;\n}\n\ntype SetupStep = 'select-agent' | 'select-model';\n\nconst STEPS: SetupStep[] = ['select-agent', 'select-model'];\n\n/** Fixed width for the wizard content area to prevent layout jumps */\nconst WIZARD_WIDTH = 'w-72';\n\nexport function WelcomeAgentSetup({ onComplete, className }: WelcomeAgentSetupProps) {\n const [groups, setGroups] = useState<AgentModelGroup[]>([]);\n const [loading, setLoading] = useState(true);\n const [step, setStep] = useState<SetupStep>('select-agent');\n const [selectedAgent, setSelectedAgent] = useState<string | null>(null);\n const [saving, setSaving] = useState(false);\n const [transitioning, setTransitioning] = useState(false);\n const [visible, setVisible] = useState(true);\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n\n useEffect(() => {\n getAllAgentModels()\n .then(setGroups)\n .finally(() => setLoading(false));\n }, []);\n\n const activeGroup = selectedAgent ? groups.find((g) => g.agentType === selectedAgent) : null;\n\n /** Animate step transition: fade out → change step → fade in */\n const transitionTo = useCallback((nextStep: SetupStep, setup?: () => void) => {\n setTransitioning(true);\n setVisible(false);\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => {\n setup?.();\n setStep(nextStep);\n requestAnimationFrame(() => {\n setVisible(true);\n setTransitioning(false);\n });\n }, 150);\n }, []);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n };\n }, []);\n\n /** Save agent+model selection and complete the wizard */\n const saveAndComplete = useCallback(\n async (agentType: string, model: string | null) => {\n setSaving(true);\n try {\n await updateAgentAndModel(agentType, model);\n onComplete();\n } finally {\n setSaving(false);\n }\n },\n [onComplete]\n );\n\n const handleAgentSelect = useCallback(\n (agentType: string) => {\n const group = groups.find((g) => g.agentType === agentType);\n if (group && group.models.length > 0) {\n transitionTo('select-model', () => {\n setSelectedAgent(agentType);\n });\n } else {\n // No models — save immediately\n saveAndComplete(agentType, null);\n }\n },\n [groups, transitionTo, saveAndComplete]\n );\n\n const handleModelSelect = useCallback(\n (model: string) => {\n if (!selectedAgent) return;\n saveAndComplete(selectedAgent, model);\n },\n [selectedAgent, saveAndComplete]\n );\n\n const handleBack = useCallback(() => {\n if (step === 'select-model') {\n transitionTo('select-agent', () => {\n setSelectedAgent(null);\n });\n }\n }, [step, transitionTo]);\n\n if (loading) {\n return (\n <div\n data-testid=\"welcome-agent-setup\"\n className={cn('flex flex-col items-center justify-center gap-3', className)}\n >\n <Loader2 className=\"text-muted-foreground h-4 w-4 animate-spin\" />\n <p className=\"text-muted-foreground text-xs\">Loading agents…</p>\n </div>\n );\n }\n\n const stepIndex = STEPS.indexOf(step);\n\n return (\n <div\n data-testid=\"welcome-agent-setup\"\n className={cn('flex flex-col items-center gap-4', WIZARD_WIDTH, className)}\n >\n {/* Section header */}\n <div className=\"flex flex-col items-center gap-1\">\n <div className=\"text-muted-foreground flex items-center gap-2\">\n {step === 'select-agent' && (\n <>\n <Bot className=\"h-3.5 w-3.5\" />\n <span className=\"text-[10px] font-semibold tracking-widest uppercase\">\n Choose your agent\n </span>\n </>\n )}\n {step === 'select-model' && activeGroup\n ? (() => {\n const AgentIcon = getAgentTypeIcon(activeGroup.agentType);\n return (\n <>\n <AgentIcon className=\"h-3.5 w-3.5\" />\n <span className=\"text-[10px] font-semibold tracking-widest uppercase\">\n {activeGroup.label} — Pick a model\n </span>\n </>\n );\n })()\n : null}\n </div>\n </div>\n\n {/* Step indicator */}\n <div className=\"flex w-full items-center gap-1\">\n {STEPS.map((s, i) => (\n <div\n key={s}\n className={cn(\n 'h-0.5 flex-1 rounded-full transition-colors duration-300',\n i <= stepIndex ? 'bg-foreground/60' : 'bg-muted'\n )}\n />\n ))}\n </div>\n\n {/* Step content — fixed dimensions, fade transition */}\n <div\n className={cn(\n 'flex w-full flex-col items-center transition-opacity duration-150',\n visible && !transitioning ? 'opacity-100' : 'opacity-0'\n )}\n >\n {/* Step 1: Agent selection */}\n {step === 'select-agent' && (\n <div data-testid=\"agent-list\" className=\"flex w-full flex-col gap-1.5\">\n {groups.map((group) => {\n const GroupIcon = getAgentTypeIcon(group.agentType);\n return (\n <button\n key={group.agentType}\n type=\"button\"\n disabled={saving}\n data-testid={`agent-option-${group.agentType}`}\n className=\"border-border hover:border-foreground/40 flex w-full cursor-pointer items-center gap-2.5 rounded-md border border-dashed px-4 py-2.5 transition-colors disabled:opacity-50\"\n onClick={() => handleAgentSelect(group.agentType)}\n >\n <GroupIcon className=\"text-muted-foreground h-4 w-4 shrink-0\" />\n <span className=\"flex-1 text-left text-xs font-medium\">{group.label}</span>\n <ChevronRight className=\"text-muted-foreground h-3 w-3\" />\n </button>\n );\n })}\n </div>\n )}\n\n {/* Step 2: Model selection */}\n {step === 'select-model' && activeGroup ? (\n <div data-testid=\"model-list\" className=\"flex w-full flex-col gap-1.5\">\n <button\n type=\"button\"\n disabled={saving}\n className=\"text-muted-foreground hover:text-foreground mb-0.5 flex cursor-pointer items-center gap-1 self-start text-[10px] font-medium transition-colors\"\n onClick={handleBack}\n >\n <ChevronLeft className=\"h-3 w-3\" />\n Back\n </button>\n <div className=\"flex max-h-48 w-full flex-col gap-1.5 overflow-y-auto\">\n {activeGroup.models.map((m) => {\n const meta = getModelMeta(m.id);\n return (\n <button\n key={m.id}\n type=\"button\"\n disabled={saving}\n data-testid={`model-option-${m.id}`}\n className=\"border-border hover:border-foreground/40 flex w-full cursor-pointer items-center gap-2.5 rounded-md border border-dashed px-4 py-2.5 text-left transition-colors disabled:opacity-50\"\n onClick={() => handleModelSelect(m.id)}\n >\n <div className=\"flex min-w-0 flex-1 flex-col gap-0.5\">\n <span className=\"text-xs font-medium\">\n {meta.displayName || m.displayName}\n </span>\n <span className=\"text-muted-foreground text-[10px] leading-tight\">\n {meta.description || m.description}\n </span>\n </div>\n <ChevronRight className=\"text-muted-foreground h-3 w-3 shrink-0\" />\n </button>\n );\n })}\n </div>\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useState, useCallback, useEffect } from 'react';\nimport {\n Github,\n Plus,\n TerminalSquare,\n Copy,\n Check,\n Loader2,\n CheckCircle2,\n AlertCircle,\n Terminal,\n} from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { pickFolder } from '@/components/common/add-repository-button/pick-folder';\nimport { isAgentSetupComplete } from '@/app/actions/agent-setup-flag';\nimport { checkAgentAuth } from '@/app/actions/check-agent-auth';\nimport type { AgentAuthStatus } from '@/app/actions/check-agent-auth';\nimport { WelcomeAgentSetup } from './welcome-agent-setup';\n\nexport interface ControlCenterEmptyStateProps {\n onRepositorySelect?: (path: string) => void;\n className?: string;\n}\n\nconst commands = ['cd ~/my-repo', 'shep feat new \"sleek dashboard\"'];\n\nexport function ControlCenterEmptyState({\n onRepositorySelect,\n className,\n}: ControlCenterEmptyStateProps) {\n const [copied, setCopied] = useState(false);\n const [loading, setLoading] = useState(false);\n const [agentReady, setAgentReady] = useState<boolean | null>(null);\n const [authStatus, setAuthStatus] = useState<AgentAuthStatus | null>(null);\n\n useEffect(() => {\n isAgentSetupComplete().then((done) => {\n setAgentReady(done);\n });\n }, []);\n\n // Background auth check — runs after agent setup is complete\n useEffect(() => {\n if (!agentReady) return;\n checkAgentAuth().then(setAuthStatus);\n }, [agentReady]);\n\n async function handlePickerClick() {\n if (loading) return;\n setLoading(true);\n try {\n const path = await pickFolder();\n if (path) {\n onRepositorySelect?.(path);\n }\n } finally {\n setLoading(false);\n }\n }\n\n const handleCopy = useCallback(async () => {\n await navigator.clipboard.writeText(commands.join('\\n'));\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }, []);\n\n const handleAgentSetupComplete = useCallback(() => {\n setAgentReady(true);\n }, []);\n\n const handleRetryAuth = useCallback(() => {\n setAuthStatus(null);\n checkAgentAuth().then(setAuthStatus);\n }, []);\n\n if (agentReady === null) return null;\n\n return (\n <div\n data-testid=\"control-center-empty-state\"\n className={cn('flex flex-col items-center justify-center', className)}\n >\n {/* Glassy container */}\n <div className=\"animate-in fade-in slide-in-from-bottom-2 w-96 rounded-2xl border border-white/30 bg-white/50 px-8 py-8 shadow-lg backdrop-blur-xl duration-300 dark:border-white/10 dark:bg-white/5\">\n <div className=\"flex flex-col items-center gap-4\">\n {/* Page header — inside card */}\n <div className=\"mb-2 text-center\">\n <h1 className=\"text-xl font-bold tracking-tight\">Features</h1>\n <p className=\"text-muted-foreground text-sm font-light\">Control Center</p>\n </div>\n\n {!agentReady ? (\n /* Step 1: Agent setup */\n <WelcomeAgentSetup onComplete={handleAgentSetupComplete} className=\"w-full\" />\n ) : (\n /* Step 2: Add repository (shown immediately after agent is configured) */\n <>\n {/* Background auth status banner */}\n <AgentAuthBanner status={authStatus} onRetry={handleRetryAuth} />\n\n {/* Repositories label */}\n <div className=\"text-muted-foreground flex items-center gap-2\">\n <Github className=\"h-3.5 w-3.5\" />\n <span className=\"text-[10px] font-semibold tracking-widest uppercase\">\n Repositories\n </span>\n </div>\n\n {/* Add Repository button */}\n <button\n type=\"button\"\n data-testid=\"empty-state-add-repository\"\n onClick={handlePickerClick}\n disabled={loading}\n className=\"border-border hover:border-foreground/40 flex w-full cursor-pointer items-center gap-2.5 rounded-md border border-dashed px-4 py-2.5 transition-colors disabled:cursor-wait disabled:opacity-50\"\n >\n {loading ? (\n <Loader2 className=\"text-muted-foreground h-4 w-4 animate-spin\" />\n ) : (\n <Plus className=\"text-muted-foreground h-4 w-4\" />\n )}\n <span className=\"text-xs font-medium\">\n {loading ? 'Opening…' : 'Add Repository'}\n </span>\n </button>\n\n {/* CLI divider */}\n <div className=\"text-muted-foreground flex items-center gap-2\">\n <div className=\"bg-border h-px w-10\" />\n <div className=\"flex items-center gap-1\">\n <TerminalSquare className=\"h-3 w-3\" />\n <span className=\"text-[10px] font-semibold tracking-widest uppercase\">\n Or via CLI\n </span>\n </div>\n <div className=\"bg-border h-px w-10\" />\n </div>\n\n {/* Code block */}\n <div\n data-testid=\"cli-code-block\"\n className=\"relative w-full rounded-md bg-zinc-900 px-3 py-2 font-mono text-[11px] text-zinc-300\"\n >\n <button\n type=\"button\"\n data-testid=\"cli-code-block-copy\"\n onClick={handleCopy}\n className=\"absolute top-2 right-2 cursor-pointer rounded p-1 text-zinc-500 transition-colors hover:bg-zinc-800 hover:text-zinc-300\"\n aria-label=\"Copy commands\"\n >\n {copied ? <Check className=\"h-3 w-3\" /> : <Copy className=\"h-3 w-3\" />}\n </button>\n <div className=\"space-y-0.5\">\n {commands.map((cmd) => (\n <div key={cmd} className=\"whitespace-nowrap\">\n <span className=\"text-zinc-500 select-none\">$ </span>\n <span>{cmd}</span>\n </div>\n ))}\n </div>\n </div>\n\n {/* Hint */}\n <p className=\"text-muted-foreground text-[10px]\">\n Feature will appear on canvas once created\n </p>\n </>\n )}\n </div>\n </div>\n </div>\n );\n}\n\n/** Compact auth status banner — shows checking/success/error states */\nfunction AgentAuthBanner({\n status,\n onRetry,\n}: {\n status: AgentAuthStatus | null;\n onRetry: () => void;\n}) {\n // Still checking — show subtle spinner\n if (!status) {\n return (\n <div className=\"bg-muted/50 flex w-full items-center gap-2 rounded-md px-3 py-1.5\">\n <Loader2 className=\"text-muted-foreground h-3 w-3 animate-spin\" />\n <span className=\"text-muted-foreground text-[10px]\">Checking agent setup…</span>\n </div>\n );\n }\n\n // All good — compact success, auto-fades\n if (status.installed && status.authenticated) {\n return (\n <div className=\"animate-in fade-in flex w-full items-center gap-2 rounded-md bg-emerald-500/10 px-3 py-1.5\">\n <CheckCircle2 className=\"h-3 w-3 text-emerald-600 dark:text-emerald-400\" />\n <span className=\"text-[10px] text-emerald-700 dark:text-emerald-300\">\n {status.label} ready\n </span>\n </div>\n );\n }\n\n // Not installed\n if (!status.installed) {\n return (\n <div className=\"flex w-full flex-col gap-2 rounded-md bg-amber-500/10 px-3 py-2\">\n <div className=\"flex items-center gap-2\">\n <AlertCircle className=\"h-3 w-3 text-amber-600 dark:text-amber-400\" />\n <span className=\"text-[10px] font-medium text-amber-700 dark:text-amber-300\">\n {status.label} not installed\n </span>\n </div>\n {status.binaryName ? (\n <div className=\"rounded bg-zinc-900 px-2 py-1 font-mono text-[10px] text-zinc-300\">\n <span className=\"text-zinc-500 select-none\">$ </span>\n npm install -g {status.binaryName}\n </div>\n ) : null}\n <button\n type=\"button\"\n onClick={onRetry}\n className=\"self-start text-[10px] font-medium text-amber-700 underline underline-offset-2 hover:text-amber-900 dark:text-amber-300 dark:hover:text-amber-100\"\n >\n Re-check\n </button>\n </div>\n );\n }\n\n // Installed but not authenticated\n return (\n <div className=\"flex w-full flex-col gap-2 rounded-md bg-amber-500/10 px-3 py-2\">\n <div className=\"flex items-center gap-2\">\n <AlertCircle className=\"h-3 w-3 text-amber-600 dark:text-amber-400\" />\n <span className=\"text-[10px] font-medium text-amber-700 dark:text-amber-300\">\n {status.label} needs authentication\n </span>\n </div>\n {status.authCommand ? (\n <div className=\"rounded bg-zinc-900 px-2 py-1 font-mono text-[10px] text-zinc-300\">\n <span className=\"text-zinc-500 select-none\">$ </span>\n {status.authCommand}\n </div>\n ) : null}\n <div className=\"flex items-center gap-2\">\n {status.binaryName ? (\n <button\n type=\"button\"\n data-testid=\"auth-banner-open-terminal\"\n onClick={async () => {\n try {\n const toolId =\n status.agentType === 'claude-code' ? 'claude-code' : status.agentType;\n await fetch(`/api/tools/${toolId}/launch`, { method: 'POST' });\n } catch {\n // best effort\n }\n }}\n className=\"flex items-center gap-1 rounded border border-amber-600/30 px-2 py-0.5 text-[10px] font-medium text-amber-700 transition-colors hover:bg-amber-500/10 dark:text-amber-300\"\n >\n <Terminal className=\"h-2.5 w-2.5\" />\n Open {status.label}\n </button>\n ) : null}\n <button\n type=\"button\"\n onClick={onRetry}\n className=\"text-[10px] font-medium text-amber-700 underline underline-offset-2 hover:text-amber-900 dark:text-amber-300 dark:hover:text-amber-100\"\n >\n Re-check\n </button>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useRouter, usePathname } from 'next/navigation';\nimport type { Edge, Viewport } from '@xyflow/react';\nimport { useReactFlow } from '@xyflow/react';\nimport { FeaturesCanvas } from '@/components/features/features-canvas';\nimport type { CanvasNodeType } from '@/components/features/features-canvas';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\nimport type { RepositoryNodeData } from '@/components/common/repository-node';\nimport {\n useSidebarFeaturesContext,\n mapNodeStateToSidebarStatus,\n} from '@/hooks/sidebar-features-context';\nimport { useSelectedFeatureId } from '@/hooks/use-selected-feature-id';\nimport { useSoundAction } from '@/hooks/use-sound-action';\nimport { useDrawerCloseGuard } from '@/hooks/drawer-close-guard';\nimport { useViewportPersistence } from '@/hooks/use-viewport-persistence';\nimport { ControlCenterEmptyState } from './control-center-empty-state';\nimport { useControlCenterState } from './use-control-center-state';\n\nconst AUTO_FOCUS_OPTIONS = {\n maxZoom: 1.0,\n padding: 0.5,\n duration: 500,\n} as const;\n\nconst AUTO_FOCUS_DRAWER_DELAY_MS = 600;\n\ninterface ControlCenterInnerProps {\n initialNodes: CanvasNodeType[];\n initialEdges: Edge[];\n}\n\nexport function ControlCenterInner({ initialNodes, initialEdges }: ControlCenterInnerProps) {\n const router = useRouter();\n const pathname = usePathname();\n const selectedFeatureId = useSelectedFeatureId();\n const clickSound = useSoundAction('click');\n const { guardedNavigate } = useDrawerCloseGuard();\n const { fitView } = useReactFlow();\n const drawerTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const {\n defaultViewport,\n onMoveEnd: handleViewportChange,\n resetViewport,\n } = useViewportPersistence();\n\n const {\n nodes,\n edges,\n onNodesChange,\n handleConnect,\n handleAddRepository,\n handleDeleteFeature,\n handleRetryFeature,\n handleDeleteRepository,\n createFeatureNode,\n setCallbacks,\n } = useControlCenterState(initialNodes, initialEdges);\n\n // Publish sidebar features to context whenever feature node data changes\n const { setFeatures: setSidebarFeatures } = useSidebarFeaturesContext();\n\n const featureNodes = useMemo(() => nodes.filter((n) => n.type === 'featureNode'), [nodes]);\n\n const sidebarKey = useMemo(() => {\n return featureNodes\n .map((n) => {\n const d = n.data as FeatureNodeData;\n return `${d.featureId}:${d.state}:${d.name}`;\n })\n .sort()\n .join(',');\n }, [featureNodes]);\n\n useEffect(() => {\n const sidebarItems = featureNodes\n .map((n) => {\n const d = n.data as FeatureNodeData;\n const status = mapNodeStateToSidebarStatus(d.state);\n if (!status) return null;\n return {\n featureId: d.featureId,\n name: d.name,\n status,\n ...(d.startedAt != null && { startedAt: d.startedAt }),\n ...(d.runtime != null && { duration: d.runtime }),\n ...(d.agentType && { agentType: d.agentType }),\n ...(d.modelId && { modelId: d.modelId }),\n };\n })\n .filter(Boolean) as {\n featureId: string;\n name: string;\n status: 'action-needed' | 'in-progress' | 'done';\n startedAt?: number;\n duration?: string;\n agentType?: string;\n modelId?: string;\n }[];\n\n setSidebarFeatures(sidebarItems);\n }, [sidebarKey, featureNodes, setSidebarFeatures]);\n\n // ── URL-based navigation handlers ────────────────────────────────────\n\n const handleNodeClick = useCallback(\n (event: React.MouseEvent, node: CanvasNodeType) => {\n if (node.type === 'featureNode') {\n const data = node.data as FeatureNodeData;\n if (data.state === 'creating' || data.state === 'deleting') return;\n // Only navigate when the click lands on the card itself, not on\n // overlay buttons (delete, add) or pointer events leaking from dialogs.\n const target = event.target as HTMLElement;\n if (!target.closest('[data-testid=\"feature-node-card\"]')) return;\n guardedNavigate(() => {\n clickSound.play();\n router.push(`/feature/${data.featureId}`);\n });\n }\n },\n [router, clickSound, guardedNavigate]\n );\n\n const handleAddFeature = useCallback(() => {\n clickSound.play();\n router.push('/create');\n }, [router, clickSound]);\n\n const handleAddFeatureToRepo = useCallback(\n (repoNodeId: string) => {\n clickSound.play();\n const node = nodes.find((n) => n.id === repoNodeId);\n const repoPath = (node?.data as { repositoryPath?: string } | undefined)?.repositoryPath;\n if (repoPath) {\n router.push(`/create?repo=${encodeURIComponent(repoPath)}`);\n } else {\n router.push('/create');\n }\n },\n [nodes, router, clickSound]\n );\n\n const handleAddFeatureToFeature = useCallback(\n (featureNodeId: string) => {\n const featureId = featureNodeId.startsWith('feat-') ? featureNodeId.slice(5) : featureNodeId;\n // Find the repo node that owns this feature\n const repoEdge = edges.find((e) => e.target === featureNodeId);\n const repoNode = repoEdge ? nodes.find((n) => n.id === repoEdge.source) : null;\n const repoPath = (repoNode?.data as { repositoryPath?: string } | undefined)?.repositoryPath;\n\n clickSound.play();\n const params = new URLSearchParams();\n if (repoPath) params.set('repo', repoPath);\n params.set('parent', featureId);\n router.push(`/create?${params.toString()}`);\n },\n [nodes, edges, router, clickSound]\n );\n\n const handleRepositoryClick = useCallback(\n (nodeId: string) => {\n const node = nodes.find((n) => n.id === nodeId);\n if (node?.type === 'repositoryNode') {\n const data = node.data as RepositoryNodeData;\n if (data.id) {\n guardedNavigate(() => router.push(`/repository/${data.id}`));\n }\n }\n },\n [nodes, router, guardedNavigate]\n );\n\n // Close all drawers — navigate back to root\n const handleClearDrawers = useCallback(() => {\n if (pathname !== '/') {\n guardedNavigate(() => router.push('/'));\n }\n }, [router, pathname, guardedNavigate]);\n\n // Listen for global \"add repository\" events from the top bar button\n useEffect(() => {\n const handler = (e: Event) => {\n const path = (e as CustomEvent<{ path: string }>).detail.path;\n const { wasEmpty, repoPath } = handleAddRepository(path);\n\n if (wasEmpty) {\n // Wait for next render so the repo node exists in the DOM, then auto-focus\n setTimeout(() => {\n fitView(AUTO_FOCUS_OPTIONS);\n\n // Open the create-feature drawer after the fitView animation completes\n drawerTimerRef.current = setTimeout(() => {\n guardedNavigate(() => router.push(`/create?repo=${encodeURIComponent(repoPath)}`));\n }, AUTO_FOCUS_DRAWER_DELAY_MS);\n }, 0);\n }\n };\n window.addEventListener('shep:add-repository', handler);\n return () => {\n window.removeEventListener('shep:add-repository', handler);\n if (drawerTimerRef.current != null) {\n clearTimeout(drawerTimerRef.current);\n }\n };\n }, [handleAddRepository, fitView, guardedNavigate, router]);\n\n // Listen for create events from the create drawer (with real feature ID from server)\n useEffect(() => {\n const handler = (e: Event) => {\n const detail = (\n e as CustomEvent<{\n featureId: string;\n name: string;\n description?: string;\n repositoryPath: string;\n parentId?: string;\n }>\n ).detail;\n\n // When a parentId is provided, connect to the parent feature node\n // via a dependency edge instead of the repo node.\n if (detail.parentId) {\n const parentNodeId = `feat-${detail.parentId}`;\n createFeatureNode(\n parentNodeId,\n {\n state: 'creating',\n featureId: detail.featureId,\n name: detail.name,\n description: detail.description,\n repositoryPath: detail.repositoryPath,\n },\n 'dependencyEdge'\n );\n return;\n }\n\n // Find the repo node to connect to\n const repoNode = nodes.find(\n (n) =>\n n.type === 'repositoryNode' &&\n (n.data as { repositoryPath?: string }).repositoryPath === detail.repositoryPath\n );\n\n createFeatureNode(repoNode?.id ?? null, {\n state: 'running',\n featureId: detail.featureId,\n name: detail.name,\n description: detail.description,\n repositoryPath: detail.repositoryPath,\n });\n };\n window.addEventListener('shep:feature-created', handler);\n return () => window.removeEventListener('shep:feature-created', handler);\n }, [nodes, createFeatureNode]);\n\n // Listen for delete requests from the feature drawer (fires when the user\n // confirms delete inside the drawer). Delegates to handleDeleteFeature so\n // the canvas gets optimistic state, mutation guard, and node removal.\n useEffect(() => {\n const handler = (e: Event) => {\n const { featureId, cleanup, cascadeDelete } = (\n e as CustomEvent<{ featureId: string; cleanup?: boolean; cascadeDelete?: boolean }>\n ).detail;\n handleDeleteFeature(featureId, cleanup, cascadeDelete);\n };\n window.addEventListener('shep:feature-delete-requested', handler);\n return () => window.removeEventListener('shep:feature-delete-requested', handler);\n }, [handleDeleteFeature]);\n\n // Wire callbacks into derived node data (via ref — no re-render).\n useEffect(() => {\n setCallbacks({\n onNodeAction: handleAddFeatureToFeature,\n onFeatureDelete: handleDeleteFeature,\n onRetryFeature: handleRetryFeature,\n onRepositoryAdd: handleAddFeatureToRepo,\n onRepositoryClick: handleRepositoryClick,\n onRepositoryDelete: handleDeleteRepository,\n });\n }, [\n setCallbacks,\n handleAddFeatureToFeature,\n handleDeleteFeature,\n handleRetryFeature,\n handleAddFeatureToRepo,\n handleRepositoryClick,\n handleDeleteRepository,\n ]);\n\n const handleMoveEnd = useCallback(\n (_event: unknown, viewport: Viewport) => {\n handleViewportChange(viewport);\n },\n [handleViewportChange]\n );\n\n const hasRepositories = nodes.some((n) => n.type === 'repositoryNode');\n\n // Debounced latch: prevent empty-state flicker during brief reconcile gaps\n // (e.g. stale poll momentarily drops repos), but allow the empty state to\n // return after a real delete once repos stay gone past the debounce window.\n const [showCanvas, setShowCanvas] = useState(hasRepositories);\n const latchTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (hasRepositories) {\n // Repos exist — show canvas immediately, cancel any pending unlatch\n if (latchTimerRef.current) {\n clearTimeout(latchTimerRef.current);\n latchTimerRef.current = null;\n }\n setShowCanvas(true);\n } else if (showCanvas) {\n // Repos gone — wait before showing empty state (debounce stale polls)\n latchTimerRef.current = setTimeout(() => {\n setShowCanvas(false);\n latchTimerRef.current = null;\n }, 500);\n }\n return () => {\n if (latchTimerRef.current) clearTimeout(latchTimerRef.current);\n };\n }, [hasRepositories, showCanvas]);\n\n // Pulse the \"+\" button when there's a single repo with no features and the\n // create-feature drawer is not open — draws attention to the next action.\n const isCreateDrawerOpen = pathname.startsWith('/create');\n const displayNodes = useMemo(() => {\n const repoNodes = nodes.filter((n) => n.type === 'repositoryNode');\n const hasFeatures = nodes.some((n) => n.type === 'featureNode');\n const shouldPulse = repoNodes.length === 1 && !hasFeatures && !isCreateDrawerOpen;\n\n if (!shouldPulse) return nodes;\n\n return nodes.map((n) =>\n n.type === 'repositoryNode' ? { ...n, data: { ...n.data, pulseAdd: true } } : n\n );\n }, [nodes, isCreateDrawerOpen]);\n\n return (\n <FeaturesCanvas\n nodes={showCanvas ? displayNodes : []}\n edges={showCanvas ? edges : []}\n selectedFeatureId={selectedFeatureId}\n defaultViewport={defaultViewport}\n onNodesChange={onNodesChange}\n onConnect={handleConnect}\n onAddFeature={handleAddFeature}\n onNodeClick={handleNodeClick}\n onPaneClick={handleClearDrawers}\n onMoveEnd={handleMoveEnd}\n onResetViewport={resetViewport}\n emptyState={<ControlCenterEmptyState onRepositorySelect={handleAddRepository} />}\n />\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4',\n key: 'tonef',\n },\n ],\n ['path', { d: 'M9 18c-4.51 2-5-2-7-2', key: '9comsn' }],\n];\n\n/**\n * @component @name Github\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgMjJ2LTRhNC44IDQuOCAwIDAgMC0xLTMuNWMzIDAgNi0yIDYtNS41LjA4LTEuMjUtLjI3LTIuNDgtMS0zLjUuMjgtMS4xNS4yOC0yLjM1IDAtMy41IDAgMC0xIDAtMyAxLjUtMi42NC0uNS01LjM2LS41LTggMEM2IDIgNSAyIDUgMmMtLjMgMS4xNS0uMyAyLjM1IDAgMy41QTUuNDAzIDUuNDAzIDAgMCAwIDQgOWMwIDMuNSAzIDUuNSA2IDUuNS0uMzkuNDktLjY4IDEuMDUtLjg1IDEuNjUtLjE3LjYtLjIyIDEuMjMtLjE1IDEuODV2NCIgLz4KICA8cGF0aCBkPSJNOSAxOGMtNC41MSAyLTUtMi03LTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/github\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n * @deprecated Brand icons have been deprecated and are due to be removed, please refer to https://github.com/lucide-icons/lucide/issues/670. We recommend using https://simpleicons.org/?q=github instead. This icon will be removed in v1.0\n */\nconst Github = createLucideIcon('github', __iconNode);\n\nexport default Github;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm7 11 2-2-2-2', key: '1lz0vl' }],\n ['path', { d: 'M11 13h4', key: '1p7l4v' }],\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2', key: '1m3agn' }],\n];\n\n/**\n * @component @name SquareTerminal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNyAxMSAyLTItMi0yIiAvPgogIDxwYXRoIGQ9Ik0xMSAxM2g0IiAvPgogIDxyZWN0IHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgeD0iMyIgeT0iMyIgcng9IjIiIHJ5PSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/square-terminal\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst SquareTerminal = createLucideIcon('square-terminal', __iconNode);\n\nexport default SquareTerminal;\n"],"names":[],"mappings":"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","ignoreList":[0,21,22]}
1
+ {"version":3,"sources":["../../../../../../../node_modules/.pnpm/%40dagrejs%2Bdagre%402.0.4/node_modules/%40dagrejs/dagre/dist/dagre.esm.js","../../../../../../../src/presentation/web/components/features/control-center/use-control-center-state.ts","../../../../../../../src/presentation/web/app/actions/data%3A884076%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Aad4dd1%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A8f706f%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3Aee3011%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/hooks/use-graph-state.ts","../../../../../../../src/presentation/web/lib/layout-with-dagre.ts","../../../../../../../src/presentation/web/lib/derive-graph.ts","../../../../../../../src/presentation/web/components/features/control-center/control-center.tsx","../../../../../../../src/presentation/web/components/common/repository-node/repository-node.tsx","../../../../../../../src/presentation/web/components/common/repository-node/repository-drawer.tsx","../../../../../../../src/presentation/web/components/features/features-canvas/dependency-edge.tsx","../../../../../../../src/presentation/web/components/features/features-canvas/features-canvas.tsx","../../../../../../../src/presentation/web/hooks/use-selected-feature-id.ts","../../../../../../../src/presentation/web/hooks/use-viewport-persistence.ts","../../../../../../../src/presentation/web/app/actions/data%3A23ea53%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/app/actions/data%3A947b6e%20%3Ctext/javascript%3E","../../../../../../../src/presentation/web/components/features/control-center/welcome-agent-setup.tsx","../../../../../../../src/presentation/web/components/features/control-center/control-center-empty-state.tsx","../../../../../../../src/presentation/web/components/features/control-center/control-center-inner.tsx","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/github.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/square-terminal.ts"],"sourcesContent":["var v=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var y=v((Fi,ee)=>{var Vt=Object.defineProperty,At=(e,t,r)=>t in e?Vt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,E=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),k=(e,t,r)=>At(e,typeof t!=\"symbol\"?t+\"\":t,r),R=E((e,t)=>{\"use strict\";var r=\"\\0\",n=\"\\0\",i=\"\u0001\",o=class{constructor(d){k(this,\"_isDirected\",!0),k(this,\"_isMultigraph\",!1),k(this,\"_isCompound\",!1),k(this,\"_label\"),k(this,\"_defaultNodeLabelFn\",()=>{}),k(this,\"_defaultEdgeLabelFn\",()=>{}),k(this,\"_nodes\",{}),k(this,\"_in\",{}),k(this,\"_preds\",{}),k(this,\"_out\",{}),k(this,\"_sucs\",{}),k(this,\"_edgeObjs\",{}),k(this,\"_edgeLabels\",{}),k(this,\"_nodeCount\",0),k(this,\"_edgeCount\",0),k(this,\"_parent\"),k(this,\"_children\"),d&&(this._isDirected=Object.hasOwn(d,\"directed\")?d.directed:!0,this._isMultigraph=Object.hasOwn(d,\"multigraph\")?d.multigraph:!1,this._isCompound=Object.hasOwn(d,\"compound\")?d.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children[n]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(d){return this._label=d,this}graph(){return this._label}setDefaultNodeLabel(d){return this._defaultNodeLabelFn=d,typeof d!=\"function\"&&(this._defaultNodeLabelFn=()=>d),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var d=this;return this.nodes().filter(h=>Object.keys(d._in[h]).length===0)}sinks(){var d=this;return this.nodes().filter(h=>Object.keys(d._out[h]).length===0)}setNodes(d,h){var f=arguments,m=this;return d.forEach(function(p){f.length>1?m.setNode(p,h):m.setNode(p)}),this}setNode(d,h){return Object.hasOwn(this._nodes,d)?(arguments.length>1&&(this._nodes[d]=h),this):(this._nodes[d]=arguments.length>1?h:this._defaultNodeLabelFn(d),this._isCompound&&(this._parent[d]=n,this._children[d]={},this._children[n][d]=!0),this._in[d]={},this._preds[d]={},this._out[d]={},this._sucs[d]={},++this._nodeCount,this)}node(d){return this._nodes[d]}hasNode(d){return Object.hasOwn(this._nodes,d)}removeNode(d){var h=this;if(Object.hasOwn(this._nodes,d)){var f=m=>h.removeEdge(h._edgeObjs[m]);delete this._nodes[d],this._isCompound&&(this._removeFromParentsChildList(d),delete this._parent[d],this.children(d).forEach(function(m){h.setParent(m)}),delete this._children[d]),Object.keys(this._in[d]).forEach(f),delete this._in[d],delete this._preds[d],Object.keys(this._out[d]).forEach(f),delete this._out[d],delete this._sucs[d],--this._nodeCount}return this}setParent(d,h){if(!this._isCompound)throw new Error(\"Cannot set parent in a non-compound graph\");if(h===void 0)h=n;else{h+=\"\";for(var f=h;f!==void 0;f=this.parent(f))if(f===d)throw new Error(\"Setting \"+h+\" as parent of \"+d+\" would create a cycle\");this.setNode(h)}return this.setNode(d),this._removeFromParentsChildList(d),this._parent[d]=h,this._children[h][d]=!0,this}_removeFromParentsChildList(d){delete this._children[this._parent[d]][d]}parent(d){if(this._isCompound){var h=this._parent[d];if(h!==n)return h}}children(d=n){if(this._isCompound){var h=this._children[d];if(h)return Object.keys(h)}else{if(d===n)return this.nodes();if(this.hasNode(d))return[]}}predecessors(d){var h=this._preds[d];if(h)return Object.keys(h)}successors(d){var h=this._sucs[d];if(h)return Object.keys(h)}neighbors(d){var h=this.predecessors(d);if(h){let m=new Set(h);for(var f of this.successors(d))m.add(f);return Array.from(m.values())}}isLeaf(d){var h;return this.isDirected()?h=this.successors(d):h=this.neighbors(d),h.length===0}filterNodes(d){var h=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});h.setGraph(this.graph());var f=this;Object.entries(this._nodes).forEach(function([w,b]){d(w)&&h.setNode(w,b)}),Object.values(this._edgeObjs).forEach(function(w){h.hasNode(w.v)&&h.hasNode(w.w)&&h.setEdge(w,f.edge(w))});var m={};function p(w){var b=f.parent(w);return b===void 0||h.hasNode(b)?(m[w]=b,b):b in m?m[b]:p(b)}return this._isCompound&&h.nodes().forEach(w=>h.setParent(w,p(w))),h}setDefaultEdgeLabel(d){return this._defaultEdgeLabelFn=d,typeof d!=\"function\"&&(this._defaultEdgeLabelFn=()=>d),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(d,h){var f=this,m=arguments;return d.reduce(function(p,w){return m.length>1?f.setEdge(p,w,h):f.setEdge(p,w),w}),this}setEdge(){var d,h,f,m,p=!1,w=arguments[0];typeof w==\"object\"&&w!==null&&\"v\"in w?(d=w.v,h=w.w,f=w.name,arguments.length===2&&(m=arguments[1],p=!0)):(d=w,h=arguments[1],f=arguments[3],arguments.length>2&&(m=arguments[2],p=!0)),d=\"\"+d,h=\"\"+h,f!==void 0&&(f=\"\"+f);var b=l(this._isDirected,d,h,f);if(Object.hasOwn(this._edgeLabels,b))return p&&(this._edgeLabels[b]=m),this;if(f!==void 0&&!this._isMultigraph)throw new Error(\"Cannot set a named edge when isMultigraph = false\");this.setNode(d),this.setNode(h),this._edgeLabels[b]=p?m:this._defaultEdgeLabelFn(d,h,f);var g=u(this._isDirected,d,h,f);return d=g.v,h=g.w,Object.freeze(g),this._edgeObjs[b]=g,s(this._preds[h],d),s(this._sucs[d],h),this._in[h][b]=g,this._out[d][b]=g,this._edgeCount++,this}edge(d,h,f){var m=arguments.length===1?c(this._isDirected,arguments[0]):l(this._isDirected,d,h,f);return this._edgeLabels[m]}edgeAsObj(){let d=this.edge(...arguments);return typeof d!=\"object\"?{label:d}:d}hasEdge(d,h,f){var m=arguments.length===1?c(this._isDirected,arguments[0]):l(this._isDirected,d,h,f);return Object.hasOwn(this._edgeLabels,m)}removeEdge(d,h,f){var m=arguments.length===1?c(this._isDirected,arguments[0]):l(this._isDirected,d,h,f),p=this._edgeObjs[m];return p&&(d=p.v,h=p.w,delete this._edgeLabels[m],delete this._edgeObjs[m],a(this._preds[h],d),a(this._sucs[d],h),delete this._in[h][m],delete this._out[d][m],this._edgeCount--),this}inEdges(d,h){return this.isDirected()?this.filterEdges(this._in[d],d,h):this.nodeEdges(d,h)}outEdges(d,h){return this.isDirected()?this.filterEdges(this._out[d],d,h):this.nodeEdges(d,h)}nodeEdges(d,h){if(d in this._nodes)return this.filterEdges({...this._in[d],...this._out[d]},d,h)}filterEdges(d,h,f){if(d){var m=Object.values(d);return f?m.filter(function(p){return p.v===h&&p.w===f||p.v===f&&p.w===h}):m}}};function s(d,h){d[h]?d[h]++:d[h]=1}function a(d,h){--d[h]||delete d[h]}function l(d,h,f,m){var p=\"\"+h,w=\"\"+f;if(!d&&p>w){var b=p;p=w,w=b}return p+i+w+i+(m===void 0?r:m)}function u(d,h,f,m){var p=\"\"+h,w=\"\"+f;if(!d&&p>w){var b=p;p=w,w=b}var g={v:p,w};return m&&(g.name=m),g}function c(d,h){return l(d,h.v,h.w,h.name)}t.exports=o}),Yt=E((e,t)=>{t.exports=\"3.0.2\"}),Bt=E((e,t)=>{t.exports={Graph:R(),version:Yt()}}),Wt=E((e,t)=>{var r=R();t.exports={write:n,read:s};function n(a){var l={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:i(a),edges:o(a)};return a.graph()!==void 0&&(l.value=structuredClone(a.graph())),l}function i(a){return a.nodes().map(function(l){var u=a.node(l),c=a.parent(l),d={v:l};return u!==void 0&&(d.value=u),c!==void 0&&(d.parent=c),d})}function o(a){return a.edges().map(function(l){var u=a.edge(l),c={v:l.v,w:l.w};return l.name!==void 0&&(c.name=l.name),u!==void 0&&(c.value=u),c})}function s(a){var l=new r(a.options).setGraph(a.value);return a.nodes.forEach(function(u){l.setNode(u.v,u.value),u.parent&&l.setParent(u.v,u.parent)}),a.edges.forEach(function(u){l.setEdge({v:u.v,w:u.w,name:u.name},u.value)}),l}}),U=E((e,t)=>{t.exports=n;var r=()=>1;function n(o,s,a,l){return i(o,String(s),a||r,l||function(u){return o.outEdges(u)})}function i(o,s,a,l){var u={},c=!0,d=0,h=o.nodes(),f=function(b){var g=a(b);u[b.v].distance+g<u[b.w].distance&&(u[b.w]={distance:u[b.v].distance+g,predecessor:b.v},c=!0)},m=function(){h.forEach(function(b){l(b).forEach(function(g){var I=g.v===b?g.v:g.w,Gt=I===g.v?g.w:g.v;f({v:I,w:Gt})})})};h.forEach(function(b){var g=b===s?0:Number.POSITIVE_INFINITY;u[b]={distance:g}});for(var p=h.length,w=1;w<p&&(c=!1,d++,m(),!!c);w++);if(d===p-1&&(c=!1,m(),c))throw new Error(\"The graph contains a negative weight cycle\");return u}}),zt=E((e,t)=>{t.exports=r;function r(n){var i={},o=[],s;function a(l){Object.hasOwn(i,l)||(i[l]=!0,s.push(l),n.successors(l).forEach(a),n.predecessors(l).forEach(a))}return n.nodes().forEach(function(l){s=[],a(l),s.length&&o.push(s)}),o}}),K=E((e,t)=>{var r=class{constructor(){k(this,\"_arr\",[]),k(this,\"_keyIndices\",{})}size(){return this._arr.length}keys(){return this._arr.map(function(n){return n.key})}has(n){return Object.hasOwn(this._keyIndices,n)}priority(n){var i=this._keyIndices[n];if(i!==void 0)return this._arr[i].priority}min(){if(this.size()===0)throw new Error(\"Queue underflow\");return this._arr[0].key}add(n,i){var o=this._keyIndices;if(n=String(n),!Object.hasOwn(o,n)){var s=this._arr,a=s.length;return o[n]=a,s.push({key:n,priority:i}),this._decrease(a),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var n=this._arr.pop();return delete this._keyIndices[n.key],this._heapify(0),n.key}decrease(n,i){var o=this._keyIndices[n];if(i>this._arr[o].priority)throw new Error(\"New priority is greater than current priority. Key: \"+n+\" Old: \"+this._arr[o].priority+\" New: \"+i);this._arr[o].priority=i,this._decrease(o)}_heapify(n){var i=this._arr,o=2*n,s=o+1,a=n;o<i.length&&(a=i[o].priority<i[a].priority?o:a,s<i.length&&(a=i[s].priority<i[a].priority?s:a),a!==n&&(this._swap(n,a),this._heapify(a)))}_decrease(n){for(var i=this._arr,o=i[n].priority,s;n!==0&&(s=n>>1,!(i[s].priority<o));)this._swap(n,s),n=s}_swap(n,i){var o=this._arr,s=this._keyIndices,a=o[n],l=o[i];o[n]=l,o[i]=a,s[l.key]=n,s[a.key]=i}};t.exports=r}),T=E((e,t)=>{var r=K();t.exports=i;var n=()=>1;function i(s,a,l,u){var c=function(d){return s.outEdges(d)};return o(s,String(a),l||n,u||c)}function o(s,a,l,u){var c={},d=new r,h,f,m=function(p){var w=p.v!==h?p.v:p.w,b=c[w],g=l(p),I=f.distance+g;if(g<0)throw new Error(\"dijkstra does not allow negative edge weights. Bad edge: \"+p+\" Weight: \"+g);I<b.distance&&(b.distance=I,b.predecessor=h,d.decrease(w,I))};for(s.nodes().forEach(function(p){var w=p===a?0:Number.POSITIVE_INFINITY;c[p]={distance:w},d.add(p,w)});d.size()>0&&(h=d.removeMin(),f=c[h],f.distance!==Number.POSITIVE_INFINITY);)u(h).forEach(m);return c}}),Xt=E((e,t)=>{var r=T();t.exports=n;function n(i,o,s){return i.nodes().reduce(function(a,l){return a[l]=r(i,l,o,s),a},{})}}),Ht=E((e,t)=>{t.exports=r;function r(i,o,s){if(i[o].predecessor!==void 0)throw new Error(\"Invalid source vertex\");if(i[s].predecessor===void 0&&s!==o)throw new Error(\"Invalid destination vertex\");return{weight:i[s].distance,path:n(i,o,s)}}function n(i,o,s){for(var a=[],l=s;l!==o;)a.push(l),l=i[l].predecessor;return a.push(o),a.reverse()}}),Q=E((e,t)=>{t.exports=r;function r(n){var i=0,o=[],s={},a=[];function l(u){var c=s[u]={onStack:!0,lowlink:i,index:i++};if(o.push(u),n.successors(u).forEach(function(f){Object.hasOwn(s,f)?s[f].onStack&&(c.lowlink=Math.min(c.lowlink,s[f].index)):(l(f),c.lowlink=Math.min(c.lowlink,s[f].lowlink))}),c.lowlink===c.index){var d=[],h;do h=o.pop(),s[h].onStack=!1,d.push(h);while(u!==h);a.push(d)}}return n.nodes().forEach(function(u){Object.hasOwn(s,u)||l(u)}),a}}),Ut=E((e,t)=>{var r=Q();t.exports=n;function n(i){return r(i).filter(function(o){return o.length>1||o.length===1&&i.hasEdge(o[0],o[0])})}}),Kt=E((e,t)=>{t.exports=n;var r=()=>1;function n(o,s,a){return i(o,s||r,a||function(l){return o.outEdges(l)})}function i(o,s,a){var l={},u=o.nodes();return u.forEach(function(c){l[c]={},l[c][c]={distance:0},u.forEach(function(d){c!==d&&(l[c][d]={distance:Number.POSITIVE_INFINITY})}),a(c).forEach(function(d){var h=d.v===c?d.w:d.v,f=s(d);l[c][h]={distance:f,predecessor:c}})}),u.forEach(function(c){var d=l[c];u.forEach(function(h){var f=l[h];u.forEach(function(m){var p=f[c],w=d[m],b=f[m],g=p.distance+w.distance;g<b.distance&&(b.distance=g,b.predecessor=w.predecessor)})})}),l}}),J=E((e,t)=>{function r(i){var o={},s={},a=[];function l(u){if(Object.hasOwn(s,u))throw new n;Object.hasOwn(o,u)||(s[u]=!0,o[u]=!0,i.predecessors(u).forEach(l),delete s[u],a.push(u))}if(i.sinks().forEach(l),Object.keys(o).length!==i.nodeCount())throw new n;return a}var n=class extends Error{constructor(){super(...arguments)}};t.exports=r,r.CycleException=n}),Qt=E((e,t)=>{var r=J();t.exports=n;function n(i){try{r(i)}catch(o){if(o instanceof r.CycleException)return!1;throw o}return!0}}),Z=E((e,t)=>{t.exports=r;function r(i,o,s,a,l){Array.isArray(o)||(o=[o]);var u=(i.isDirected()?i.successors:i.neighbors).bind(i),c={};return o.forEach(function(d){if(!i.hasNode(d))throw new Error(\"Graph does not have node: \"+d);l=n(i,d,s===\"post\",c,u,a,l)}),l}function n(i,o,s,a,l,u,c){return Object.hasOwn(a,o)||(a[o]=!0,s||(c=u(c,o)),l(o).forEach(function(d){c=n(i,d,s,a,l,u,c)}),s&&(c=u(c,o))),c}}),$=E((e,t)=>{var r=Z();t.exports=n;function n(i,o,s){return r(i,o,s,function(a,l){return a.push(l),a},[])}}),Jt=E((e,t)=>{var r=$();t.exports=n;function n(i,o){return r(i,o,\"post\")}}),Zt=E((e,t)=>{var r=$();t.exports=n;function n(i,o){return r(i,o,\"pre\")}}),$t=E((e,t)=>{var r=R(),n=K();t.exports=i;function i(o,s){var a=new r,l={},u=new n,c;function d(f){var m=f.v===c?f.w:f.v,p=u.priority(m);if(p!==void 0){var w=s(f);w<p&&(l[m]=c,u.decrease(m,w))}}if(o.nodeCount()===0)return a;o.nodes().forEach(function(f){u.add(f,Number.POSITIVE_INFINITY),a.setNode(f)}),u.decrease(o.nodes()[0],0);for(var h=!1;u.size()>0;){if(c=u.removeMin(),Object.hasOwn(l,c))a.setEdge(c,l[c]);else{if(h)throw new Error(\"Input graph is not connected: \"+o);h=!0}o.nodeEdges(c).forEach(d)}return a}}),er=E((e,t)=>{var r=T(),n=U();t.exports=i;function i(s,a,l,u){return o(s,a,l,u||function(c){return s.outEdges(c)})}function o(s,a,l,u){if(l===void 0)return r(s,a,l,u);for(var c=!1,d=s.nodes(),h=0;h<d.length;h++){for(var f=u(d[h]),m=0;m<f.length;m++){var p=f[m],w=p.v===d[h]?p.v:p.w,b=w===p.v?p.w:p.v;l({v:w,w:b})<0&&(c=!0)}if(c)return n(s,a,l,u)}return r(s,a,l,u)}}),tr=E((e,t)=>{t.exports={bellmanFord:U(),components:zt(),dijkstra:T(),dijkstraAll:Xt(),extractPath:Ht(),findCycles:Ut(),floydWarshall:Kt(),isAcyclic:Qt(),postorder:Jt(),preorder:Zt(),prim:$t(),shortestPaths:er(),reduce:Z(),tarjan:Q(),topsort:J()}}),H=Bt();ee.exports={Graph:H.Graph,json:Wt(),alg:tr(),version:H.version}});var ne=v((Ai,re)=>{var S=class{constructor(){let t={};t._next=t._prev=t,this._sentinel=t}dequeue(){let t=this._sentinel,r=t._prev;if(r!==t)return te(r),r}enqueue(t){let r=this._sentinel;t._prev&&t._next&&te(t),t._next=r._next,r._next._prev=t,r._next=t,t._prev=r}toString(){let t=[],r=this._sentinel,n=r._prev;for(;n!==r;)t.push(JSON.stringify(n,rr)),n=n._prev;return\"[\"+t.join(\", \")+\"]\"}};function te(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function rr(e,t){if(e!==\"_next\"&&e!==\"_prev\")return t}re.exports=S});var oe=v((Yi,ie)=>{var nr=y().Graph,ir=ne();ie.exports=sr;var or=()=>1;function sr(e,t){if(e.nodeCount()<=1)return[];let r=dr(e,t||or);return ar(r.graph,r.buckets,r.zeroIdx).flatMap(i=>e.outEdges(i.v,i.w))}function ar(e,t,r){let n=[],i=t[t.length-1],o=t[0],s;for(;e.nodeCount();){for(;s=o.dequeue();)P(e,t,r,s);for(;s=i.dequeue();)P(e,t,r,s);if(e.nodeCount()){for(let a=t.length-2;a>0;--a)if(s=t[a].dequeue(),s){n=n.concat(P(e,t,r,s,!0));break}}}return n}function P(e,t,r,n,i){let o=i?[]:void 0;return e.inEdges(n.v).forEach(s=>{let a=e.edge(s),l=e.node(s.v);i&&o.push({v:s.v,w:s.w}),l.out-=a,F(t,r,l)}),e.outEdges(n.v).forEach(s=>{let a=e.edge(s),l=s.w,u=e.node(l);u.in-=a,F(t,r,u)}),e.removeNode(n.v),o}function dr(e,t){let r=new nr,n=0,i=0;e.nodes().forEach(a=>{r.setNode(a,{v:a,in:0,out:0})}),e.edges().forEach(a=>{let l=r.edge(a.v,a.w)||0,u=t(a),c=l+u;r.setEdge(a.v,a.w,c),i=Math.max(i,r.node(a.v).out+=u),n=Math.max(n,r.node(a.w).in+=u)});let o=lr(i+n+3).map(()=>new ir),s=n+1;return r.nodes().forEach(a=>{F(o,s,r.node(a))}),{graph:r,buckets:o,zeroIdx:s}}function F(e,t,r){r.out?r.in?e[r.out-r.in+t].enqueue(r):e[e.length-1].enqueue(r):e[0].enqueue(r)}function lr(e){let t=[];for(let r=0;r<e;r++)t.push(r);return t}});var _=v((Bi,ce)=>{\"use strict\";var se=y().Graph;ce.exports={addBorderNode:vr,addDummyNode:ae,applyWithChunking:C,asNonCompoundGraph:hr,buildLayerMatrix:mr,intersectRect:pr,mapValues:Or,maxRank:le,normalizeRanks:wr,notime:kr,partition:Er,pick:xr,predecessorWeights:fr,range:he,removeEmptyRanks:br,simplify:ur,successorWeights:cr,time:_r,uniqueId:ue,zipObject:D};function ae(e,t,r,n){for(var i=n;e.hasNode(i);)i=ue(n);return r.dummy=t,e.setNode(i,r),i}function ur(e){let t=new se().setGraph(e.graph());return e.nodes().forEach(r=>t.setNode(r,e.node(r))),e.edges().forEach(r=>{let n=t.edge(r.v,r.w)||{weight:0,minlen:1},i=e.edge(r);t.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})}),t}function hr(e){let t=new se({multigraph:e.isMultigraph()}).setGraph(e.graph());return e.nodes().forEach(r=>{e.children(r).length||t.setNode(r,e.node(r))}),e.edges().forEach(r=>{t.setEdge(r,e.edge(r))}),t}function cr(e){let t=e.nodes().map(r=>{let n={};return e.outEdges(r).forEach(i=>{n[i.w]=(n[i.w]||0)+e.edge(i).weight}),n});return D(e.nodes(),t)}function fr(e){let t=e.nodes().map(r=>{let n={};return e.inEdges(r).forEach(i=>{n[i.v]=(n[i.v]||0)+e.edge(i).weight}),n});return D(e.nodes(),t)}function pr(e,t){let r=e.x,n=e.y,i=t.x-r,o=t.y-n,s=e.width/2,a=e.height/2;if(!i&&!o)throw new Error(\"Not possible to find intersection inside of the rectangle\");let l,u;return Math.abs(o)*s>Math.abs(i)*a?(o<0&&(a=-a),l=a*i/o,u=a):(i<0&&(s=-s),l=s,u=s*o/i),{x:r+l,y:n+u}}function mr(e){let t=he(le(e)+1).map(()=>[]);return e.nodes().forEach(r=>{let n=e.node(r),i=n.rank;i!==void 0&&(t[i][n.order]=r)}),t}function wr(e){let t=e.nodes().map(n=>{let i=e.node(n).rank;return i===void 0?Number.MAX_VALUE:i}),r=C(Math.min,t);e.nodes().forEach(n=>{let i=e.node(n);Object.hasOwn(i,\"rank\")&&(i.rank-=r)})}function br(e){let t=e.nodes().map(s=>e.node(s).rank).filter(s=>s!==void 0),r=C(Math.min,t),n=[];e.nodes().forEach(s=>{let a=e.node(s).rank-r;n[a]||(n[a]=[]),n[a].push(s)});let i=0,o=e.graph().nodeRankFactor;Array.from(n).forEach((s,a)=>{s===void 0&&a%o!==0?--i:s!==void 0&&i&&s.forEach(l=>e.node(l).rank+=i)})}function vr(e,t,r,n){let i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=n),ae(e,\"border\",i,t)}function gr(e,t=de){let r=[];for(let n=0;n<e.length;n+=t){let i=e.slice(n,n+t);r.push(i)}return r}var de=65535;function C(e,t){if(t.length>de){let r=gr(t);return e.apply(null,r.map(n=>e.apply(null,n)))}else return e.apply(null,t)}function le(e){let r=e.nodes().map(n=>{let i=e.node(n).rank;return i===void 0?Number.MIN_VALUE:i});return C(Math.max,r)}function Er(e,t){let r={lhs:[],rhs:[]};return e.forEach(n=>{t(n)?r.lhs.push(n):r.rhs.push(n)}),r}function _r(e,t){let r=Date.now();try{return t()}finally{console.log(e+\" time: \"+(Date.now()-r)+\"ms\")}}function kr(e,t){return t()}var yr=0;function ue(e){var t=++yr;return e+(\"\"+t)}function he(e,t,r=1){t==null&&(t=e,e=0);let n=o=>o<t;r<0&&(n=o=>t<o);let i=[];for(let o=e;n(o);o+=r)i.push(o);return i}function xr(e,t){let r={};for(let n of t)e[n]!==void 0&&(r[n]=e[n]);return r}function Or(e,t){let r=t;return typeof t==\"string\"&&(r=n=>n[t]),Object.entries(e).reduce((n,[i,o])=>(n[i]=r(o,i),n),{})}function D(e,t){return e.reduce((r,n,i)=>(r[n]=t[i],r),{})}});var pe=v((Wi,fe)=>{\"use strict\";var Nr=oe(),Ir=_().uniqueId;fe.exports={run:jr,undo:Lr};function jr(e){(e.graph().acyclicer===\"greedy\"?Nr(e,r(e)):Cr(e)).forEach(n=>{let i=e.edge(n);e.removeEdge(n),i.forwardName=n.name,i.reversed=!0,e.setEdge(n.w,n.v,i,Ir(\"rev\"))});function r(n){return i=>n.edge(i).weight}}function Cr(e){let t=[],r={},n={};function i(o){Object.hasOwn(n,o)||(n[o]=!0,r[o]=!0,e.outEdges(o).forEach(s=>{Object.hasOwn(r,s.w)?t.push(s):i(s.w)}),delete r[o])}return e.nodes().forEach(i),t}function Lr(e){e.edges().forEach(t=>{let r=e.edge(t);if(r.reversed){e.removeEdge(t);let n=r.forwardName;delete r.reversed,delete r.forwardName,e.setEdge(t.w,t.v,r,n)}})}});var we=v((zi,me)=>{\"use strict\";var qr=_();me.exports={run:Mr,undo:Tr};function Mr(e){e.graph().dummyChains=[],e.edges().forEach(t=>Rr(e,t))}function Rr(e,t){let r=t.v,n=e.node(r).rank,i=t.w,o=e.node(i).rank,s=t.name,a=e.edge(t),l=a.labelRank;if(o===n+1)return;e.removeEdge(t);let u,c,d;for(d=0,++n;n<o;++d,++n)a.points=[],c={width:0,height:0,edgeLabel:a,edgeObj:t,rank:n},u=qr.addDummyNode(e,\"edge\",c,\"_d\"),n===l&&(c.width=a.width,c.height=a.height,c.dummy=\"edge-label\",c.labelpos=a.labelpos),e.setEdge(r,u,{weight:a.weight},s),d===0&&e.graph().dummyChains.push(u),r=u;e.setEdge(r,i,{weight:a.weight},s)}function Tr(e){e.graph().dummyChains.forEach(t=>{let r=e.node(t),n=r.edgeLabel,i;for(e.setEdge(r.edgeObj,n);r.dummy;)i=e.successors(t)[0],e.removeNode(t),n.points.push({x:r.x,y:r.y}),r.dummy===\"edge-label\"&&(n.x=r.x,n.y=r.y,n.width=r.width,n.height=r.height),t=i,r=e.node(t)})}});var j=v((Xi,be)=>{\"use strict\";var{applyWithChunking:Sr}=_();be.exports={longestPath:Pr,slack:Fr};function Pr(e){var t={};function r(n){var i=e.node(n);if(Object.hasOwn(t,n))return i.rank;t[n]=!0;let o=e.outEdges(n).map(a=>a==null?Number.POSITIVE_INFINITY:r(a.w)-e.edge(a).minlen);var s=Sr(Math.min,o);return s===Number.POSITIVE_INFINITY&&(s=0),i.rank=s}e.sources().forEach(r)}function Fr(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}});var G=v((Hi,ve)=>{\"use strict\";var Dr=y().Graph,L=j().slack;ve.exports=Gr;function Gr(e){var t=new Dr({directed:!1}),r=e.nodes()[0],n=e.nodeCount();t.setNode(r,{});for(var i,o;Vr(t,e)<n;)i=Ar(t,e),o=t.hasNode(i.v)?L(e,i):-L(e,i),Yr(t,e,o);return t}function Vr(e,t){function r(n){t.nodeEdges(n).forEach(i=>{var o=i.v,s=n===o?i.w:o;!e.hasNode(s)&&!L(t,i)&&(e.setNode(s,{}),e.setEdge(n,s,{}),r(s))})}return e.nodes().forEach(r),e.nodeCount()}function Ar(e,t){return t.edges().reduce((n,i)=>{let o=Number.POSITIVE_INFINITY;return e.hasNode(i.v)!==e.hasNode(i.w)&&(o=L(t,i)),o<n[0]?[o,i]:n},[Number.POSITIVE_INFINITY,null])[1]}function Yr(e,t,r){e.nodes().forEach(n=>t.node(n).rank+=r)}});var Ie=v((Ui,Ne)=>{\"use strict\";var Br=G(),ge=j().slack,Wr=j().longestPath,zr=y().alg.preorder,Xr=y().alg.postorder,Hr=_().simplify;Ne.exports=N;N.initLowLimValues=A;N.initCutValues=V;N.calcCutValue=_e;N.leaveEdge=ye;N.enterEdge=xe;N.exchangeEdges=Oe;function N(e){e=Hr(e),Wr(e);var t=Br(e);A(t),V(t,e);for(var r,n;r=ye(t);)n=xe(t,e,r),Oe(t,e,r,n)}function V(e,t){var r=Xr(e,e.nodes());r=r.slice(0,r.length-1),r.forEach(n=>Ur(e,t,n))}function Ur(e,t,r){var n=e.node(r),i=n.parent;e.edge(r,i).cutvalue=_e(e,t,r)}function _e(e,t,r){var n=e.node(r),i=n.parent,o=!0,s=t.edge(r,i),a=0;return s||(o=!1,s=t.edge(i,r)),a=s.weight,t.nodeEdges(r).forEach(l=>{var u=l.v===r,c=u?l.w:l.v;if(c!==i){var d=u===o,h=t.edge(l).weight;if(a+=d?h:-h,Qr(e,r,c)){var f=e.edge(r,c).cutvalue;a+=d?-f:f}}}),a}function A(e,t){arguments.length<2&&(t=e.nodes()[0]),ke(e,{},1,t)}function ke(e,t,r,n,i){var o=r,s=e.node(n);return t[n]=!0,e.neighbors(n).forEach(a=>{Object.hasOwn(t,a)||(r=ke(e,t,r,a,n))}),s.low=o,s.lim=r++,i?s.parent=i:delete s.parent,r}function ye(e){return e.edges().find(t=>e.edge(t).cutvalue<0)}function xe(e,t,r){var n=r.v,i=r.w;t.hasEdge(n,i)||(n=r.w,i=r.v);var o=e.node(n),s=e.node(i),a=o,l=!1;o.lim>s.lim&&(a=s,l=!0);var u=t.edges().filter(c=>l===Ee(e,e.node(c.v),a)&&l!==Ee(e,e.node(c.w),a));return u.reduce((c,d)=>ge(t,d)<ge(t,c)?d:c)}function Oe(e,t,r,n){var i=r.v,o=r.w;e.removeEdge(i,o),e.setEdge(n.v,n.w,{}),A(e),V(e,t),Kr(e,t)}function Kr(e,t){var r=e.nodes().find(i=>!t.node(i).parent),n=zr(e,r);n=n.slice(1),n.forEach(i=>{var o=e.node(i).parent,s=t.edge(i,o),a=!1;s||(s=t.edge(o,i),a=!0),t.node(i).rank=t.node(o).rank+(a?s.minlen:-s.minlen)})}function Qr(e,t,r){return e.hasEdge(t,r)}function Ee(e,t,r){return r.low<=t.lim&&t.lim<=r.lim}});var qe=v((Ki,Le)=>{\"use strict\";var Jr=j(),Ce=Jr.longestPath,Zr=G(),$r=Ie();Le.exports=en;function en(e){var t=e.graph().ranker;if(t instanceof Function)return t(e);switch(e.graph().ranker){case\"network-simplex\":je(e);break;case\"tight-tree\":rn(e);break;case\"longest-path\":tn(e);break;case\"none\":break;default:je(e)}}var tn=Ce;function rn(e){Ce(e),Zr(e)}function je(e){$r(e)}});var Re=v((Qi,Me)=>{Me.exports=nn;function nn(e){let t=sn(e);e.graph().dummyChains.forEach(r=>{let n=e.node(r),i=n.edgeObj,o=on(e,t,i.v,i.w),s=o.path,a=o.lca,l=0,u=s[l],c=!0;for(;r!==i.w;){if(n=e.node(r),c){for(;(u=s[l])!==a&&e.node(u).maxRank<n.rank;)l++;u===a&&(c=!1)}if(!c){for(;l<s.length-1&&e.node(u=s[l+1]).minRank<=n.rank;)l++;u=s[l]}e.setParent(r,u),r=e.successors(r)[0]}})}function on(e,t,r,n){let i=[],o=[],s=Math.min(t[r].low,t[n].low),a=Math.max(t[r].lim,t[n].lim),l,u;l=r;do l=e.parent(l),i.push(l);while(l&&(t[l].low>s||a>t[l].lim));for(u=l,l=n;(l=e.parent(l))!==u;)o.push(l);return{path:i.concat(o.reverse()),lca:u}}function sn(e){let t={},r=0;function n(i){let o=r;e.children(i).forEach(n),t[i]={low:o,lim:r++}}return e.children().forEach(n),t}});var Pe=v((Ji,Se)=>{var q=_();Se.exports={run:an,cleanup:un};function an(e){let t=q.addDummyNode(e,\"root\",{},\"_root\"),r=dn(e),n=Object.values(r),i=q.applyWithChunking(Math.max,n)-1,o=2*i+1;e.graph().nestingRoot=t,e.edges().forEach(a=>e.edge(a).minlen*=o);let s=ln(e)+1;e.children().forEach(a=>Te(e,t,o,s,i,r,a)),e.graph().nodeRankFactor=o}function Te(e,t,r,n,i,o,s){let a=e.children(s);if(!a.length){s!==t&&e.setEdge(t,s,{weight:0,minlen:r});return}let l=q.addBorderNode(e,\"_bt\"),u=q.addBorderNode(e,\"_bb\"),c=e.node(s);e.setParent(l,s),c.borderTop=l,e.setParent(u,s),c.borderBottom=u,a.forEach(d=>{Te(e,t,r,n,i,o,d);let h=e.node(d),f=h.borderTop?h.borderTop:d,m=h.borderBottom?h.borderBottom:d,p=h.borderTop?n:2*n,w=f!==m?1:i-o[s]+1;e.setEdge(l,f,{weight:p,minlen:w,nestingEdge:!0}),e.setEdge(m,u,{weight:p,minlen:w,nestingEdge:!0})}),e.parent(s)||e.setEdge(t,l,{weight:0,minlen:i+o[s]})}function dn(e){var t={};function r(n,i){var o=e.children(n);o&&o.length&&o.forEach(s=>r(s,i+1)),t[n]=i}return e.children().forEach(n=>r(n,1)),t}function ln(e){return e.edges().reduce((t,r)=>t+e.edge(r).weight,0)}function un(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,e.edges().forEach(r=>{var n=e.edge(r);n.nestingEdge&&e.removeEdge(r)})}});var Ge=v((Zi,De)=>{var hn=_();De.exports=cn;function cn(e){function t(r){let n=e.children(r),i=e.node(r);if(n.length&&n.forEach(t),Object.hasOwn(i,\"minRank\")){i.borderLeft=[],i.borderRight=[];for(let o=i.minRank,s=i.maxRank+1;o<s;++o)Fe(e,\"borderLeft\",\"_bl\",r,i,o),Fe(e,\"borderRight\",\"_br\",r,i,o)}}e.children().forEach(t)}function Fe(e,t,r,n,i,o){let s={width:0,height:0,rank:o,borderType:t},a=i[t][o-1],l=hn.addDummyNode(e,\"border\",s,r);i[t][o]=l,e.setParent(l,n),a&&e.setEdge(a,l,{weight:1})}});var Be=v(($i,Ye)=>{\"use strict\";Ye.exports={adjust:fn,undo:pn};function fn(e){let t=e.graph().rankdir.toLowerCase();(t===\"lr\"||t===\"rl\")&&Ae(e)}function pn(e){let t=e.graph().rankdir.toLowerCase();(t===\"bt\"||t===\"rl\")&&mn(e),(t===\"lr\"||t===\"rl\")&&(wn(e),Ae(e))}function Ae(e){e.nodes().forEach(t=>Ve(e.node(t))),e.edges().forEach(t=>Ve(e.edge(t)))}function Ve(e){let t=e.width;e.width=e.height,e.height=t}function mn(e){e.nodes().forEach(t=>Y(e.node(t))),e.edges().forEach(t=>{let r=e.edge(t);r.points.forEach(Y),Object.hasOwn(r,\"y\")&&Y(r)})}function Y(e){e.y=-e.y}function wn(e){e.nodes().forEach(t=>B(e.node(t))),e.edges().forEach(t=>{let r=e.edge(t);r.points.forEach(B),Object.hasOwn(r,\"x\")&&B(r)})}function B(e){let t=e.x;e.x=e.y,e.y=t}});var Xe=v((eo,ze)=>{\"use strict\";var We=_();ze.exports=bn;function bn(e){let t={},r=e.nodes().filter(l=>!e.children(l).length),n=r.map(l=>e.node(l).rank),i=We.applyWithChunking(Math.max,n),o=We.range(i+1).map(()=>[]);function s(l){if(t[l])return;t[l]=!0;let u=e.node(l);o[u.rank].push(l),e.successors(l).forEach(s)}return r.sort((l,u)=>e.node(l).rank-e.node(u).rank).forEach(s),o}});var Ue=v((to,He)=>{\"use strict\";var vn=_().zipObject;He.exports=gn;function gn(e,t){let r=0;for(let n=1;n<t.length;++n)r+=En(e,t[n-1],t[n]);return r}function En(e,t,r){let n=vn(r,r.map((u,c)=>c)),i=t.flatMap(u=>e.outEdges(u).map(c=>({pos:n[c.w],weight:e.edge(c).weight})).sort((c,d)=>c.pos-d.pos)),o=1;for(;o<r.length;)o<<=1;let s=2*o-1;o-=1;let a=new Array(s).fill(0),l=0;return i.forEach(u=>{let c=u.pos+o;a[c]+=u.weight;let d=0;for(;c>0;)c%2&&(d+=a[c+1]),c=c-1>>1,a[c]+=u.weight;l+=u.weight*d}),l}});var Qe=v((ro,Ke)=>{Ke.exports=_n;function _n(e,t=[]){return t.map(r=>{let n=e.inEdges(r);if(n.length){let i=n.reduce((o,s)=>{let a=e.edge(s),l=e.node(s.v);return{sum:o.sum+a.weight*l.order,weight:o.weight+a.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}});var Ze=v((no,Je)=>{\"use strict\";var kn=_();Je.exports=yn;function yn(e,t){let r={};e.forEach((i,o)=>{let s=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:o};i.barycenter!==void 0&&(s.barycenter=i.barycenter,s.weight=i.weight)}),t.edges().forEach(i=>{let o=r[i.v],s=r[i.w];o!==void 0&&s!==void 0&&(s.indegree++,o.out.push(r[i.w]))});let n=Object.values(r).filter(i=>!i.indegree);return xn(n)}function xn(e){let t=[];function r(i){return o=>{o.merged||(o.barycenter===void 0||i.barycenter===void 0||o.barycenter>=i.barycenter)&&On(i,o)}}function n(i){return o=>{o.in.push(i),--o.indegree===0&&e.push(o)}}for(;e.length;){let i=e.pop();t.push(i),i.in.reverse().forEach(r(i)),i.out.forEach(n(i))}return t.filter(i=>!i.merged).map(i=>kn.pick(i,[\"vs\",\"i\",\"barycenter\",\"weight\"]))}function On(e,t){let r=0,n=0;e.weight&&(r+=e.barycenter*e.weight,n+=e.weight),t.weight&&(r+=t.barycenter*t.weight,n+=t.weight),e.vs=t.vs.concat(e.vs),e.barycenter=r/n,e.weight=n,e.i=Math.min(t.i,e.i),t.merged=!0}});var tt=v((io,et)=>{var Nn=_();et.exports=In;function In(e,t){let r=Nn.partition(e,c=>Object.hasOwn(c,\"barycenter\")),n=r.lhs,i=r.rhs.sort((c,d)=>d.i-c.i),o=[],s=0,a=0,l=0;n.sort(jn(!!t)),l=$e(o,i,l),n.forEach(c=>{l+=c.vs.length,o.push(c.vs),s+=c.barycenter*c.weight,a+=c.weight,l=$e(o,i,l)});let u={vs:o.flat(!0)};return a&&(u.barycenter=s/a,u.weight=a),u}function $e(e,t,r){let n;for(;t.length&&(n=t[t.length-1]).i<=r;)t.pop(),e.push(n.vs),r++;return r}function jn(e){return(t,r)=>t.barycenter<r.barycenter?-1:t.barycenter>r.barycenter?1:e?r.i-t.i:t.i-r.i}});var it=v((oo,nt)=>{var Cn=Qe(),Ln=Ze(),qn=tt();nt.exports=rt;function rt(e,t,r,n){let i=e.children(t),o=e.node(t),s=o?o.borderLeft:void 0,a=o?o.borderRight:void 0,l={};s&&(i=i.filter(h=>h!==s&&h!==a));let u=Cn(e,i);u.forEach(h=>{if(e.children(h.v).length){let f=rt(e,h.v,r,n);l[h.v]=f,Object.hasOwn(f,\"barycenter\")&&Rn(h,f)}});let c=Ln(u,r);Mn(c,l);let d=qn(c,n);if(s&&(d.vs=[s,d.vs,a].flat(!0),e.predecessors(s).length)){let h=e.node(e.predecessors(s)[0]),f=e.node(e.predecessors(a)[0]);Object.hasOwn(d,\"barycenter\")||(d.barycenter=0,d.weight=0),d.barycenter=(d.barycenter*d.weight+h.order+f.order)/(d.weight+2),d.weight+=2}return d}function Mn(e,t){e.forEach(r=>{r.vs=r.vs.flatMap(n=>t[n]?t[n].vs:n)})}function Rn(e,t){e.barycenter!==void 0?(e.barycenter=(e.barycenter*e.weight+t.barycenter*t.weight)/(e.weight+t.weight),e.weight+=t.weight):(e.barycenter=t.barycenter,e.weight=t.weight)}});var st=v((so,ot)=>{var Tn=y().Graph,Sn=_();ot.exports=Pn;function Pn(e,t,r,n){n||(n=e.nodes());let i=Fn(e),o=new Tn({compound:!0}).setGraph({root:i}).setDefaultNodeLabel(s=>e.node(s));return n.forEach(s=>{let a=e.node(s),l=e.parent(s);(a.rank===t||a.minRank<=t&&t<=a.maxRank)&&(o.setNode(s),o.setParent(s,l||i),e[r](s).forEach(u=>{let c=u.v===s?u.w:u.v,d=o.edge(c,s),h=d!==void 0?d.weight:0;o.setEdge(c,s,{weight:e.edge(u).weight+h})}),Object.hasOwn(a,\"minRank\")&&o.setNode(s,{borderLeft:a.borderLeft[t],borderRight:a.borderRight[t]}))}),o}function Fn(e){for(var t;e.hasNode(t=Sn.uniqueId(\"_root\")););return t}});var dt=v((ao,at)=>{at.exports=Dn;function Dn(e,t,r){let n={},i;r.forEach(o=>{let s=e.parent(o),a,l;for(;s;){if(a=e.parent(s),a?(l=n[a],n[a]=s):(l=i,i=s),l&&l!==s){t.setEdge(l,s);return}s=a}})}});var ft=v((lo,ct)=>{\"use strict\";var Gn=Xe(),Vn=Ue(),An=it(),Yn=st(),Bn=dt(),Wn=y().Graph,M=_();ct.exports=ht;function ht(e,t={}){if(typeof t.customOrder==\"function\"){t.customOrder(e,ht);return}let r=M.maxRank(e),n=lt(e,M.range(1,r+1),\"inEdges\"),i=lt(e,M.range(r-1,-1,-1),\"outEdges\"),o=Gn(e);if(ut(e,o),t.disableOptimalOrderHeuristic)return;let s=Number.POSITIVE_INFINITY,a,l=t.constraints||[];for(let u=0,c=0;c<4;++u,++c){zn(u%2?n:i,u%4>=2,l),o=M.buildLayerMatrix(e);let d=Vn(e,o);d<s?(c=0,a=Object.assign({},o),s=d):d===s&&(a=structuredClone(o))}ut(e,a)}function lt(e,t,r){let n=new Map,i=(o,s)=>{n.has(o)||n.set(o,[]),n.get(o).push(s)};for(let o of e.nodes()){let s=e.node(o);if(typeof s.rank==\"number\"&&i(s.rank,o),typeof s.minRank==\"number\"&&typeof s.maxRank==\"number\")for(let a=s.minRank;a<=s.maxRank;a++)a!==s.rank&&i(a,o)}return t.map(function(o){return Yn(e,o,r,n.get(o)||[])})}function zn(e,t,r){let n=new Wn;e.forEach(function(i){r.forEach(a=>n.setEdge(a.left,a.right));let o=i.graph().root,s=An(i,o,n,t);s.vs.forEach((a,l)=>i.node(a).order=l),Bn(i,n,s.vs)})}function ut(e,t){Object.values(t).forEach(r=>r.forEach((n,i)=>e.node(n).order=i))}});var yt=v((uo,kt)=>{\"use strict\";var Xn=y().Graph,O=_();kt.exports={positionX:Kn,findType1Conflicts:pt,findType2Conflicts:mt,addConflict:W,hasConflict:wt,verticalAlignment:bt,horizontalCompaction:vt,alignCoordinates:Et,findSmallestWidthAlignment:gt,balance:_t};function pt(e,t){let r={};function n(i,o){let s=0,a=0,l=i.length,u=o[o.length-1];return o.forEach((c,d)=>{let h=Hn(e,c),f=h?e.node(h).order:l;(h||c===u)&&(o.slice(a,d+1).forEach(m=>{e.predecessors(m).forEach(p=>{let w=e.node(p),b=w.order;(b<s||f<b)&&!(w.dummy&&e.node(m).dummy)&&W(r,p,m)})}),a=d+1,s=f)}),o}return t.length&&t.reduce(n),r}function mt(e,t){let r={};function n(o,s,a,l,u){let c;O.range(s,a).forEach(d=>{c=o[d],e.node(c).dummy&&e.predecessors(c).forEach(h=>{let f=e.node(h);f.dummy&&(f.order<l||f.order>u)&&W(r,h,c)})})}function i(o,s){let a=-1,l,u=0;return s.forEach((c,d)=>{if(e.node(c).dummy===\"border\"){let h=e.predecessors(c);h.length&&(l=e.node(h[0]).order,n(s,u,d,a,l),u=d,a=l)}n(s,u,s.length,l,o.length)}),s}return t.length&&t.reduce(i),r}function Hn(e,t){if(e.node(t).dummy)return e.predecessors(t).find(r=>e.node(r).dummy)}function W(e,t,r){if(t>r){let i=t;t=r,r=i}let n=e[t];n||(e[t]=n={}),n[r]=!0}function wt(e,t,r){if(t>r){let n=t;t=r,r=n}return!!e[t]&&Object.hasOwn(e[t],r)}function bt(e,t,r,n){let i={},o={},s={};return t.forEach(a=>{a.forEach((l,u)=>{i[l]=l,o[l]=l,s[l]=u})}),t.forEach(a=>{let l=-1;a.forEach(u=>{let c=n(u);if(c.length){c=c.sort((h,f)=>s[h]-s[f]);let d=(c.length-1)/2;for(let h=Math.floor(d),f=Math.ceil(d);h<=f;++h){let m=c[h];o[u]===u&&l<s[m]&&!wt(r,u,m)&&(o[m]=u,o[u]=i[u]=i[m],l=s[m])}}})}),{root:i,align:o}}function vt(e,t,r,n,i){let o={},s=Un(e,t,r,i),a=i?\"borderLeft\":\"borderRight\";function l(d,h){let f=s.nodes().slice(),m={},p=f.pop();for(;p;){if(m[p])d(p);else{m[p]=!0,f.push(p);for(let w of h(p))f.push(w)}p=f.pop()}}function u(d){o[d]=s.inEdges(d).reduce((h,f)=>Math.max(h,o[f.v]+s.edge(f)),0)}function c(d){let h=s.outEdges(d).reduce((m,p)=>Math.min(m,o[p.w]-s.edge(p)),Number.POSITIVE_INFINITY),f=e.node(d);h!==Number.POSITIVE_INFINITY&&f.borderType!==a&&(o[d]=Math.max(o[d],h))}return l(u,s.predecessors.bind(s)),l(c,s.successors.bind(s)),Object.keys(n).forEach(d=>o[d]=o[r[d]]),o}function Un(e,t,r,n){let i=new Xn,o=e.graph(),s=Qn(o.nodesep,o.edgesep,n);return t.forEach(a=>{let l;a.forEach(u=>{let c=r[u];if(i.setNode(c),l){var d=r[l],h=i.edge(d,c);i.setEdge(d,c,Math.max(s(e,u,l),h||0))}l=u})}),i}function gt(e,t){return Object.values(t).reduce((r,n)=>{let i=Number.NEGATIVE_INFINITY,o=Number.POSITIVE_INFINITY;Object.entries(n).forEach(([a,l])=>{let u=Jn(e,a)/2;i=Math.max(l+u,i),o=Math.min(l-u,o)});let s=i-o;return s<r[0]&&(r=[s,n]),r},[Number.POSITIVE_INFINITY,null])[1]}function Et(e,t){let r=Object.values(t),n=O.applyWithChunking(Math.min,r),i=O.applyWithChunking(Math.max,r);[\"u\",\"d\"].forEach(o=>{[\"l\",\"r\"].forEach(s=>{let a=o+s,l=e[a];if(l===t)return;let u=Object.values(l),c=n-O.applyWithChunking(Math.min,u);s!==\"l\"&&(c=i-O.applyWithChunking(Math.max,u)),c&&(e[a]=O.mapValues(l,d=>d+c))})})}function _t(e,t){return O.mapValues(e.ul,(r,n)=>{if(t)return e[t.toLowerCase()][n];{let i=Object.values(e).map(o=>o[n]).sort((o,s)=>o-s);return(i[1]+i[2])/2}})}function Kn(e){let t=O.buildLayerMatrix(e),r=Object.assign(pt(e,t),mt(e,t)),n={},i;[\"u\",\"d\"].forEach(s=>{i=s===\"u\"?t:Object.values(t).reverse(),[\"l\",\"r\"].forEach(a=>{a===\"r\"&&(i=i.map(d=>Object.values(d).reverse()));let l=(s===\"u\"?e.predecessors:e.successors).bind(e),u=bt(e,i,r,l),c=vt(e,i,u.root,u.align,a===\"r\");a===\"r\"&&(c=O.mapValues(c,d=>-d)),n[s+a]=c})});let o=gt(e,n);return Et(n,o),_t(n,e.graph().align)}function Qn(e,t,r){return(n,i,o)=>{let s=n.node(i),a=n.node(o),l=0,u;if(l+=s.width/2,Object.hasOwn(s,\"labelpos\"))switch(s.labelpos.toLowerCase()){case\"l\":u=-s.width/2;break;case\"r\":u=s.width/2;break}if(u&&(l+=r?u:-u),u=0,l+=(s.dummy?t:e)/2,l+=(a.dummy?t:e)/2,l+=a.width/2,Object.hasOwn(a,\"labelpos\"))switch(a.labelpos.toLowerCase()){case\"l\":u=a.width/2;break;case\"r\":u=-a.width/2;break}return u&&(l+=r?u:-u),u=0,l}}function Jn(e,t){return e.node(t).width}});var Nt=v((ho,Ot)=>{\"use strict\";var xt=_(),Zn=yt().positionX;Ot.exports=$n;function $n(e){e=xt.asNonCompoundGraph(e),ei(e),Object.entries(Zn(e)).forEach(([t,r])=>e.node(t).x=r)}function ei(e){let t=xt.buildLayerMatrix(e),r=e.graph().ranksep,n=e.graph().rankalign,i=0;t.forEach(o=>{let s=o.reduce((a,l)=>{let u=e.node(l).height;return a>u?a:u},0);o.forEach(a=>{let l=e.node(a);n===\"top\"?l.y=i+l.height/2:n===\"bottom\"?l.y=i+s-l.height/2:l.y=i+s/2}),i+=s+r})}});var Rt=v((co,Mt)=>{\"use strict\";var It=pe(),jt=we(),ti=qe(),ri=_().normalizeRanks,ni=Re(),ii=_().removeEmptyRanks,Ct=Pe(),oi=Ge(),Lt=Be(),si=ft(),ai=Nt(),x=_(),di=y().Graph;Mt.exports=li;function li(e,t={}){let r=t.debugTiming?x.time:x.notime;return r(\"layout\",()=>{let n=r(\" buildLayoutGraph\",()=>gi(e));return r(\" runLayout\",()=>ui(n,r,t)),r(\" updateInputGraph\",()=>hi(e,n)),n})}function ui(e,t,r){t(\" makeSpaceForEdgeLabels\",()=>Ei(e)),t(\" removeSelfEdges\",()=>Ci(e)),t(\" acyclic\",()=>It.run(e)),t(\" nestingGraph.run\",()=>Ct.run(e)),t(\" rank\",()=>ti(x.asNonCompoundGraph(e))),t(\" injectEdgeLabelProxies\",()=>_i(e)),t(\" removeEmptyRanks\",()=>ii(e)),t(\" nestingGraph.cleanup\",()=>Ct.cleanup(e)),t(\" normalizeRanks\",()=>ri(e)),t(\" assignRankMinMax\",()=>ki(e)),t(\" removeEdgeLabelProxies\",()=>yi(e)),t(\" normalize.run\",()=>jt.run(e)),t(\" parentDummyChains\",()=>ni(e)),t(\" addBorderSegments\",()=>oi(e)),t(\" order\",()=>si(e,r)),t(\" insertSelfEdges\",()=>Li(e)),t(\" adjustCoordinateSystem\",()=>Lt.adjust(e)),t(\" position\",()=>ai(e)),t(\" positionSelfEdges\",()=>qi(e)),t(\" removeBorderNodes\",()=>ji(e)),t(\" normalize.undo\",()=>jt.undo(e)),t(\" fixupEdgeLabelCoords\",()=>Ni(e)),t(\" undoCoordinateSystem\",()=>Lt.undo(e)),t(\" translateGraph\",()=>xi(e)),t(\" assignNodeIntersects\",()=>Oi(e)),t(\" reversePoints\",()=>Ii(e)),t(\" acyclic.undo\",()=>It.undo(e))}function hi(e,t){e.nodes().forEach(r=>{let n=e.node(r),i=t.node(r);n&&(n.x=i.x,n.y=i.y,n.order=i.order,n.rank=i.rank,t.children(r).length&&(n.width=i.width,n.height=i.height))}),e.edges().forEach(r=>{let n=e.edge(r),i=t.edge(r);n.points=i.points,Object.hasOwn(i,\"x\")&&(n.x=i.x,n.y=i.y)}),e.graph().width=t.graph().width,e.graph().height=t.graph().height}var ci=[\"nodesep\",\"edgesep\",\"ranksep\",\"marginx\",\"marginy\"],fi={ranksep:50,edgesep:20,nodesep:50,rankdir:\"tb\",rankalign:\"center\"},pi=[\"acyclicer\",\"ranker\",\"rankdir\",\"align\",\"rankalign\"],mi=[\"width\",\"height\",\"rank\"],qt={width:0,height:0},wi=[\"minlen\",\"weight\",\"width\",\"height\",\"labeloffset\"],bi={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:\"r\"},vi=[\"labelpos\"];function gi(e){let t=new di({multigraph:!0,compound:!0}),r=X(e.graph());return t.setGraph(Object.assign({},fi,z(r,ci),x.pick(r,pi))),e.nodes().forEach(n=>{let i=X(e.node(n)),o=z(i,mi);Object.keys(qt).forEach(s=>{o[s]===void 0&&(o[s]=qt[s])}),t.setNode(n,o),t.setParent(n,e.parent(n))}),e.edges().forEach(n=>{let i=X(e.edge(n));t.setEdge(n,Object.assign({},bi,z(i,wi),x.pick(i,vi)))}),t}function Ei(e){let t=e.graph();t.ranksep/=2,e.edges().forEach(r=>{let n=e.edge(r);n.minlen*=2,n.labelpos.toLowerCase()!==\"c\"&&(t.rankdir===\"TB\"||t.rankdir===\"BT\"?n.width+=n.labeloffset:n.height+=n.labeloffset)})}function _i(e){e.edges().forEach(t=>{let r=e.edge(t);if(r.width&&r.height){let n=e.node(t.v),o={rank:(e.node(t.w).rank-n.rank)/2+n.rank,e:t};x.addDummyNode(e,\"edge-proxy\",o,\"_ep\")}})}function ki(e){let t=0;e.nodes().forEach(r=>{let n=e.node(r);n.borderTop&&(n.minRank=e.node(n.borderTop).rank,n.maxRank=e.node(n.borderBottom).rank,t=Math.max(t,n.maxRank))}),e.graph().maxRank=t}function yi(e){e.nodes().forEach(t=>{let r=e.node(t);r.dummy===\"edge-proxy\"&&(e.edge(r.e).labelRank=r.rank,e.removeNode(t))})}function xi(e){let t=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,o=e.graph(),s=o.marginx||0,a=o.marginy||0;function l(u){let c=u.x,d=u.y,h=u.width,f=u.height;t=Math.min(t,c-h/2),r=Math.max(r,c+h/2),n=Math.min(n,d-f/2),i=Math.max(i,d+f/2)}e.nodes().forEach(u=>l(e.node(u))),e.edges().forEach(u=>{let c=e.edge(u);Object.hasOwn(c,\"x\")&&l(c)}),t-=s,n-=a,e.nodes().forEach(u=>{let c=e.node(u);c.x-=t,c.y-=n}),e.edges().forEach(u=>{let c=e.edge(u);c.points.forEach(d=>{d.x-=t,d.y-=n}),Object.hasOwn(c,\"x\")&&(c.x-=t),Object.hasOwn(c,\"y\")&&(c.y-=n)}),o.width=r-t+s,o.height=i-n+a}function Oi(e){e.edges().forEach(t=>{let r=e.edge(t),n=e.node(t.v),i=e.node(t.w),o,s;r.points?(o=r.points[0],s=r.points[r.points.length-1]):(r.points=[],o=i,s=n),r.points.unshift(x.intersectRect(n,o)),r.points.push(x.intersectRect(i,s))})}function Ni(e){e.edges().forEach(t=>{let r=e.edge(t);if(Object.hasOwn(r,\"x\"))switch((r.labelpos===\"l\"||r.labelpos===\"r\")&&(r.width-=r.labeloffset),r.labelpos){case\"l\":r.x-=r.width/2+r.labeloffset;break;case\"r\":r.x+=r.width/2+r.labeloffset;break}})}function Ii(e){e.edges().forEach(t=>{let r=e.edge(t);r.reversed&&r.points.reverse()})}function ji(e){e.nodes().forEach(t=>{if(e.children(t).length){let r=e.node(t),n=e.node(r.borderTop),i=e.node(r.borderBottom),o=e.node(r.borderLeft[r.borderLeft.length-1]),s=e.node(r.borderRight[r.borderRight.length-1]);r.width=Math.abs(s.x-o.x),r.height=Math.abs(i.y-n.y),r.x=o.x+r.width/2,r.y=n.y+r.height/2}}),e.nodes().forEach(t=>{e.node(t).dummy===\"border\"&&e.removeNode(t)})}function Ci(e){e.edges().forEach(t=>{if(t.v===t.w){var r=e.node(t.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}})}function Li(e){var t=x.buildLayerMatrix(e);t.forEach(r=>{var n=0;r.forEach((i,o)=>{var s=e.node(i);s.order=o+n,(s.selfEdges||[]).forEach(a=>{x.addDummyNode(e,\"selfedge\",{width:a.label.width,height:a.label.height,rank:s.rank,order:o+ ++n,e:a.e,label:a.label},\"_se\")}),delete s.selfEdges})})}function qi(e){e.nodes().forEach(t=>{var r=e.node(t);if(r.dummy===\"selfedge\"){var n=e.node(r.e.v),i=n.x+n.width/2,o=n.y,s=r.x-i,a=n.height/2;e.setEdge(r.e,r.label),e.removeNode(t),r.label.points=[{x:i+2*s/3,y:o-a},{x:i+5*s/6,y:o-a},{x:i+s,y:o},{x:i+5*s/6,y:o+a},{x:i+2*s/3,y:o+a}],r.label.x=r.x,r.label.y=r.y}})}function z(e,t){return x.mapValues(x.pick(e,t),Number)}function X(e){var t={};return e&&Object.entries(e).forEach(([r,n])=>{typeof r==\"string\"&&(r=r.toLowerCase()),t[r]=n}),t}});var St=v((fo,Tt)=>{var Mi=_(),Ri=y().Graph;Tt.exports={debugOrdering:Ti};function Ti(e){let t=Mi.buildLayerMatrix(e),r=new Ri({compound:!0,multigraph:!0}).setGraph({});return e.nodes().forEach(n=>{r.setNode(n,{label:n}),r.setParent(n,\"layer\"+e.node(n).rank)}),e.edges().forEach(n=>r.setEdge(n.v,n.w,{},n.name)),t.forEach((n,i)=>{let o=\"layer\"+i;r.setNode(o,{rank:\"same\"}),n.reduce((s,a)=>(r.setEdge(s,a,{style:\"invis\"}),a))}),r}});var Ft=v((po,Pt)=>{Pt.exports=\"2.0.4\"});var Si=v((mo,Dt)=>{Dt.exports={graphlib:y(),layout:Rt(),debug:St(),util:{time:_().time,notime:_().notime},version:Ft()}});export default Si();\n/*! For license information please see dagre.esm.js.LEGAL.txt */\n//# sourceMappingURL=dagre.esm.js.map\n","'use client';\n\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useRouter } from 'next/navigation';\nimport { toast } from 'sonner';\nimport type { Connection, Edge, NodeChange } from '@xyflow/react';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\nimport type { RepositoryNodeData } from '@/components/common/repository-node';\nimport type { CanvasNodeType } from '@/components/features/features-canvas';\nimport {\n layoutWithDagre,\n CANVAS_LAYOUT_DEFAULTS,\n type LayoutDirection,\n} from '@/lib/layout-with-dagre';\nimport { deleteFeature } from '@/app/actions/delete-feature';\nimport { resumeFeature } from '@/app/actions/resume-feature';\nimport { addRepository } from '@/app/actions/add-repository';\nimport { deleteRepository } from '@/app/actions/delete-repository';\nimport { getFeatureMetadata } from '@/app/actions/get-feature-metadata';\nimport { useAgentEventsContext } from '@/hooks/agent-events-provider';\nimport { useSoundAction } from '@/hooks/use-sound-action';\nimport { createLogger } from '@/lib/logger';\n\nimport {\n mapEventTypeToState,\n resolveSseEventUpdates,\n} from '@/components/common/feature-node/derive-feature-state';\nimport { useGraphState, type GraphCallbacks } from '@/hooks/use-graph-state';\nimport type { FeatureEntry } from '@/lib/derive-graph';\n\nconst log = createLogger('[Polling]');\nconst POLL_INTERVAL_MS = 3_000;\n\nexport interface ControlCenterState {\n nodes: CanvasNodeType[];\n edges: Edge[];\n onNodesChange: (changes: NodeChange<CanvasNodeType>[]) => void;\n handleConnect: (connection: Connection) => void;\n handleAddRepository: (path: string) => { wasEmpty: boolean; repoPath: string };\n handleLayout: (direction: LayoutDirection) => void;\n handleDeleteFeature: (featureId: string, cleanup?: boolean, cascadeDelete?: boolean) => void;\n handleRetryFeature: (featureId: string) => void;\n handleDeleteRepository: (repositoryId: string) => Promise<void>;\n createFeatureNode: (\n sourceNodeId: string | null,\n dataOverride?: Partial<FeatureNodeData>,\n edgeType?: string\n ) => string;\n /** Stable lookup: repositoryPath for a feature node. */\n getFeatureRepositoryPath: (featureNodeId: string) => string | undefined;\n /** Stable lookup: repository data by nodeId. */\n getRepositoryData: (nodeId: string) => RepositoryNodeData | undefined;\n /** Sync callbacks into derived node data (does not trigger re-render). */\n setCallbacks: (callbacks: GraphCallbacks) => void;\n}\n\n/** Must match the message string emitted by the SSE route in agent-events/route.ts */\nconst METADATA_UPDATED_MESSAGE = 'Feature metadata updated';\n\nlet nextFeatureId = 0;\nlet nextRepoTempId = 0;\n\nexport function useControlCenterState(\n initialNodes: CanvasNodeType[],\n initialEdges: Edge[]\n): ControlCenterState {\n const router = useRouter();\n const deleteSound = useSoundAction('delete');\n const createSound = useSoundAction('create');\n\n const {\n nodes,\n edges,\n reconcile,\n updateFeature,\n addPendingFeature,\n removeFeature,\n restoreFeature,\n addRepository: addRepositoryToMap,\n removeRepository,\n replaceRepository,\n getFeatureRepositoryPath,\n getRepositoryData,\n getRepoMapSize,\n setCallbacks,\n beginMutation,\n endMutation,\n isMutating,\n } = useGraphState(initialNodes, initialEdges);\n\n // Refs for stable access to latest nodes/edges without callback recreation\n const nodesRef = useRef(nodes);\n const edgesRef = useRef(edges);\n useEffect(() => {\n nodesRef.current = nodes;\n edgesRef.current = edges;\n }, [nodes, edges]);\n\n // Sync server props into domain Maps when initialNodes/initialEdges change.\n // Keyed by a stable string so we don't re-reconcile on every render.\n const initialNodeKey = useMemo(\n () =>\n initialNodes\n .map((n) => n.id)\n .sort()\n .join(','),\n [initialNodes]\n );\n const initialDataKey = useMemo(\n () =>\n initialNodes\n .filter((n) => n.type === 'featureNode')\n .map((n) => {\n const d = n.data as FeatureNodeData;\n return `${n.id}:${d.state}:${d.lifecycle}`;\n })\n .sort()\n .join(','),\n [initialNodes]\n );\n\n const prevReconcileKey = useRef('');\n\n useEffect(() => {\n const key = `${initialNodeKey}|${initialDataKey}`;\n if (key !== prevReconcileKey.current) {\n prevReconcileKey.current = key;\n reconcile(initialNodes, initialEdges);\n }\n }, [initialNodeKey, initialDataKey, initialNodes, initialEdges, reconcile]);\n\n // Track previous feature states for fallback notifications\n const prevFeatureStatesRef = useRef<Map<string, FeatureNodeData['state']>>(new Map());\n\n const { events } = useAgentEventsContext();\n\n useEffect(() => {\n const prevStates = prevFeatureStatesRef.current;\n for (const node of initialNodes) {\n if (node.type !== 'featureNode') continue;\n const data = node.data as FeatureNodeData;\n const prev = prevStates.get(node.id);\n if (prev !== undefined && prev !== data.state) {\n const sseAlreadyCovered = events.some(\n (e) => e.featureId === data.featureId && mapEventTypeToState(e.eventType) === data.state\n );\n if (!sseAlreadyCovered) {\n if (data.state === 'done') {\n toast.success(data.name, { description: 'Feature completed!' });\n } else if (data.state === 'action-required') {\n toast.warning(data.name, {\n description: 'Waiting for your approval',\n action: {\n label: 'Review',\n onClick: () => router.push(`/feature/${data.featureId}`),\n },\n });\n } else if (data.state === 'error') {\n toast.error(data.name, { description: data.errorMessage ?? 'Agent failed' });\n }\n }\n }\n prevStates.set(node.id, data.state);\n }\n }, [initialDataKey, initialNodes, events, router]);\n\n // SSE effect: only state + lifecycle updates\n const processedEventCountRef = useRef(0);\n\n useEffect(() => {\n // Clamp cursor if events were pruned\n if (processedEventCountRef.current > events.length) {\n processedEventCountRef.current = 0;\n }\n if (events.length <= processedEventCountRef.current) return;\n const newEvents = events.slice(processedEventCountRef.current);\n processedEventCountRef.current = events.length;\n\n for (const { featureId, state, lifecycle } of resolveSseEventUpdates(newEvents)) {\n if (state !== undefined || lifecycle !== undefined) {\n const nodeId = `feat-${featureId}`;\n // Skip SSE updates for features in 'deleting' state — the optimistic\n // delete state must not be overwritten by stale SSE events (e.g. agent\n // cancellation emitting AgentFailed during the soft-delete window).\n const existingNode = nodesRef.current.find((n) => n.id === nodeId);\n if (existingNode && (existingNode.data as FeatureNodeData).state === 'deleting') continue;\n\n updateFeature(nodeId, {\n ...(state !== undefined && { state }),\n ...(lifecycle !== undefined && { lifecycle }),\n });\n }\n }\n }, [events, updateFeature]);\n\n // Listen for optimistic approval events from the drawer (fires before SSE arrives)\n useEffect(() => {\n const handler = (e: Event) => {\n const { featureId } = (e as CustomEvent<{ featureId: string }>).detail;\n updateFeature(`feat-${featureId}`, { state: 'running' });\n };\n window.addEventListener('shep:feature-approved', handler);\n return () => window.removeEventListener('shep:feature-approved', handler);\n }, [updateFeature]);\n\n // Separate effect: fetch metadata (name + description) when SSE reports it changed\n const metadataFetchedRef = useRef<Set<string>>(new Set());\n const processedMetadataCountRef = useRef(0);\n\n useEffect(() => {\n // Clamp cursor if events were pruned\n if (processedMetadataCountRef.current > events.length) {\n processedMetadataCountRef.current = 0;\n }\n if (events.length <= processedMetadataCountRef.current) return;\n const newEvents = events.slice(processedMetadataCountRef.current);\n processedMetadataCountRef.current = events.length;\n\n for (const event of newEvents) {\n if (event.message !== METADATA_UPDATED_MESSAGE) continue;\n if (metadataFetchedRef.current.has(event.featureId)) continue;\n metadataFetchedRef.current.add(event.featureId);\n\n const nodeId = `feat-${event.featureId}`;\n getFeatureMetadata(event.featureId)\n .then((meta) => {\n if (meta) {\n updateFeature(nodeId, { name: meta.name, description: meta.description });\n }\n })\n .catch(() => {\n // Silent: metadata fetch failure is non-critical\n });\n }\n }, [events, updateFeature]);\n\n // --- Polling fallback: catch any SSE events that were missed ---\n useEffect(() => {\n log.debug(`polling enabled (${POLL_INTERVAL_MS}ms interval)`);\n\n const timer = setInterval(async () => {\n // Skip fetch entirely while a mutation is in-flight — the response\n // would contain pre-mutation data that reconcile would discard anyway.\n if (isMutating()) return;\n\n try {\n // Use a plain fetch instead of a server action so the poll\n // doesn't trigger the Next.js \"Rendering…\" indicator.\n const res = await fetch('/api/graph-data');\n if (!res.ok) throw new Error(`status ${res.status}`);\n const { nodes: freshNodes, edges: freshEdges } = await res.json();\n reconcile(freshNodes, freshEdges);\n } catch {\n log.warn('poll fetch failed — will retry next interval');\n }\n }, POLL_INTERVAL_MS);\n\n return () => {\n log.debug('polling disabled');\n clearInterval(timer);\n };\n }, [reconcile, isMutating]);\n\n // onNodesChange is a no-op: nodes are derived from domain Maps.\n // Since nodesDraggable=false and elementsSelectable=false, only React Flow's\n // internal replace/dimensions changes come through — we ignore them all.\n const onNodesChange = useCallback((_changes: NodeChange<CanvasNodeType>[]) => {\n // Intentional no-op: domain Maps are the source of truth.\n }, []);\n\n const handleConnect = useCallback((_connection: Connection) => {\n // Connections are managed via domain operations, not direct edge manipulation.\n }, []);\n\n const createFeatureNode = useCallback(\n (\n sourceNodeId: string | null,\n dataOverride?: Partial<FeatureNodeData>,\n edgeType?: string\n ): string => {\n // Use real feature ID when available (from server), otherwise temp ID\n const id = dataOverride?.featureId\n ? `feat-${dataOverride.featureId}`\n : `feature-${Date.now()}-${nextFeatureId++}`;\n const newFeatureData: FeatureNodeData = {\n name: dataOverride?.name ?? 'New Feature',\n description: dataOverride?.description ?? 'Describe what this feature does',\n featureId: dataOverride?.featureId ?? `#${id.slice(-4)}`,\n lifecycle: 'requirements',\n state: dataOverride?.state ?? 'running',\n progress: 0,\n repositoryPath: dataOverride?.repositoryPath ?? '',\n branch: dataOverride?.branch ?? '',\n };\n\n const parentNodeId = edgeType === 'dependencyEdge' && sourceNodeId ? sourceNodeId : undefined;\n\n addPendingFeature(id, newFeatureData, parentNodeId);\n\n return id;\n },\n [addPendingFeature]\n );\n\n const handleRetryFeature = useCallback(\n (featureId: string) => {\n const nodeId = `feat-${featureId}`;\n // Optimistic: switch to running state\n beginMutation();\n updateFeature(nodeId, { state: 'running' });\n\n resumeFeature(featureId)\n .then((result) => {\n if (result.error) {\n updateFeature(nodeId, { state: 'error' });\n toast.error(result.error);\n } else {\n toast.success('Feature resumed');\n }\n })\n .catch(() => {\n updateFeature(nodeId, { state: 'error' });\n toast.error('Failed to resume feature');\n })\n .finally(() => endMutation());\n },\n [updateFeature, beginMutation, endMutation]\n );\n\n const handleDeleteFeature = useCallback(\n (featureId: string, cleanup?: boolean, cascadeDelete?: boolean) => {\n const nodeId = `feat-${featureId}`;\n const shouldCascade = cascadeDelete === true;\n\n // Collect all descendant feature node IDs (children, grandchildren, etc.)\n const descendants: string[] = [];\n if (shouldCascade) {\n const queue = [nodeId];\n while (queue.length > 0) {\n const current = queue.shift()!;\n for (const edge of edgesRef.current) {\n if (edge.type === 'dependencyEdge' && edge.source === current) {\n descendants.push(edge.target);\n queue.push(edge.target);\n }\n }\n }\n }\n\n // Snapshot current states for rollback (parent + descendants)\n const prevStates = new Map<string, FeatureNodeData['state']>();\n for (const nid of [nodeId, ...descendants]) {\n const node = nodesRef.current.find((n) => n.id === nid);\n if (node) {\n prevStates.set(nid, (node.data as FeatureNodeData).state);\n }\n }\n\n // Optimistic: show \"deleting\" state on parent (and descendants if cascading)\n beginMutation();\n updateFeature(nodeId, { state: 'deleting' });\n for (const childId of descendants) {\n updateFeature(childId, { state: 'deleting' });\n }\n deleteSound.play();\n router.push('/');\n\n deleteFeature(featureId, cleanup, cascadeDelete)\n .then((result) => {\n if (result.error) {\n // Rollback all to previous states\n for (const [nid, prevState] of prevStates) {\n if (prevState) updateFeature(nid, { state: prevState });\n }\n toast.error(result.error);\n } else {\n // Delete succeeded — remove features from the canvas. The polling\n // reconcile would eventually clean them up, but we remove them\n // explicitly so the user sees them disappear promptly.\n removeFeature(nodeId);\n for (const childId of descendants) {\n removeFeature(childId);\n }\n }\n })\n .catch(() => {\n for (const [nid, prevState] of prevStates) {\n if (prevState) updateFeature(nid, { state: prevState });\n }\n toast.error('Failed to delete feature');\n })\n .finally(() => endMutation());\n },\n [router, deleteSound, updateFeature, removeFeature, beginMutation, endMutation]\n );\n\n const handleDeleteRepository = useCallback(\n async (repositoryId: string) => {\n const repoNodeId = `repo-${repositoryId}`;\n\n // Find children of this repo via edges\n const childFeatureIds = new Set(\n edgesRef.current.filter((e) => e.source === repoNodeId).map((e) => e.target)\n );\n\n // Snapshot for rollback\n const prevRepoData = getRepositoryData(repoNodeId);\n const childSnapshots = new Map<string, FeatureEntry>();\n for (const childId of childFeatureIds) {\n const childNode = nodesRef.current.find((n) => n.id === childId);\n if (childNode) {\n childSnapshots.set(childId, { nodeId: childId, data: childNode.data as FeatureNodeData });\n }\n }\n\n const rollback = () => {\n if (prevRepoData) addRepositoryToMap(repoNodeId, prevRepoData);\n for (const [childId, entry] of childSnapshots) {\n restoreFeature(childId, entry);\n }\n };\n\n // Optimistic: remove repo + children\n beginMutation();\n removeRepository(repoNodeId);\n for (const childId of childFeatureIds) {\n removeFeature(childId);\n }\n\n try {\n const result = await deleteRepository(repositoryId);\n if (!result.success) {\n toast.error(result.error ?? 'Failed to remove repository');\n rollback();\n return;\n }\n deleteSound.play();\n } catch {\n toast.error('Failed to remove repository');\n rollback();\n } finally {\n endMutation();\n }\n },\n [\n deleteSound,\n removeRepository,\n removeFeature,\n addRepositoryToMap,\n restoreFeature,\n getRepositoryData,\n beginMutation,\n endMutation,\n ]\n );\n\n const handleLayout = useCallback(\n (direction: LayoutDirection) => {\n // Layout is applied via reconcile on next server prop update.\n // For immediate re-layout, we apply dagre and trigger a reconcile-like update.\n const result = layoutWithDagre(nodesRef.current, edgesRef.current, {\n ...CANVAS_LAYOUT_DEFAULTS,\n direction,\n });\n reconcile(result.nodes, result.edges);\n },\n [reconcile]\n );\n\n const handleAddRepository = useCallback(\n (path: string): { wasEmpty: boolean; repoPath: string } => {\n const wasEmpty = getRepoMapSize() === 0;\n const tempId = `repo-temp-${++nextRepoTempId}`;\n const repoName =\n path\n .replace(/[\\\\/]+$/, '')\n .split(/[\\\\/]/)\n .pop() ?? path;\n\n beginMutation();\n addRepositoryToMap(tempId, {\n name: repoName,\n repositoryPath: path,\n id: tempId,\n createdAt: Date.now(),\n });\n\n addRepository({ path, name: repoName })\n .then((result) => {\n if (result.error) {\n removeRepository(tempId);\n toast.error(result.error);\n return;\n }\n const repo = result.repository!;\n const realId = `repo-${repo.id}`;\n replaceRepository(tempId, realId, {\n name: repo.name,\n repositoryPath: repo.path,\n id: repo.id,\n createdAt:\n repo.createdAt instanceof Date ? repo.createdAt.getTime() : Number(repo.createdAt),\n });\n createSound.play();\n })\n .catch(() => {\n removeRepository(tempId);\n toast.error('Failed to add repository');\n })\n .finally(() => endMutation());\n\n return { wasEmpty, repoPath: path };\n },\n [\n addRepositoryToMap,\n removeRepository,\n replaceRepository,\n createSound,\n getRepoMapSize,\n beginMutation,\n endMutation,\n ]\n );\n\n return {\n nodes,\n edges,\n onNodesChange,\n handleConnect,\n handleAddRepository,\n handleLayout,\n handleDeleteFeature,\n handleRetryFeature,\n handleDeleteRepository,\n createFeatureNode,\n getFeatureRepositoryPath,\n getRepositoryData,\n setCallbacks,\n };\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"701f2ce80b41482cbc7253bd40906e8e394372ec02\":\"deleteFeature\"},\"src/presentation/web/app/actions/delete-feature.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"701f2ce80b41482cbc7253bd40906e8e394372ec02\",callServer,void 0,findSourceMapURL,\"deleteFeature\");export{$$RSC_SERVER_ACTION_0 as deleteFeature};","/* __next_internal_action_entry_do_not_use__ [{\"4042f1b4d939c60c5758bde59aa3b3df745d614f9b\":\"addRepository\"},\"src/presentation/web/app/actions/add-repository.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"4042f1b4d939c60c5758bde59aa3b3df745d614f9b\",callServer,void 0,findSourceMapURL,\"addRepository\");export{$$RSC_SERVER_ACTION_0 as addRepository};","/* __next_internal_action_entry_do_not_use__ [{\"40857259afdbfb422562636922cb74482095d303ad\":\"deleteRepository\"},\"src/presentation/web/app/actions/delete-repository.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40857259afdbfb422562636922cb74482095d303ad\",callServer,void 0,findSourceMapURL,\"deleteRepository\");export{$$RSC_SERVER_ACTION_0 as deleteRepository};","/* __next_internal_action_entry_do_not_use__ [{\"40aae1b80a0e8bdcca54b74780a11e2ec0d7bbced3\":\"getFeatureMetadata\"},\"src/presentation/web/app/actions/get-feature-metadata.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"40aae1b80a0e8bdcca54b74780a11e2ec0d7bbced3\",callServer,void 0,findSourceMapURL,\"getFeatureMetadata\");export{$$RSC_SERVER_ACTION_0 as getFeatureMetadata};","'use client';\n\nimport { useState, useMemo, useCallback, useRef, useEffect } from 'react';\nimport type { Edge, Position } from '@xyflow/react';\nimport type { CanvasNodeType } from '@/components/features/features-canvas';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\nimport type { RepositoryNodeData } from '@/components/common/repository-node';\nimport {\n deriveGraph,\n type FeatureEntry,\n type RepoEntry,\n type GraphCallbacks,\n} from '@/lib/derive-graph';\nimport { layoutWithDagre, CANVAS_LAYOUT_DEFAULTS } from '@/lib/layout-with-dagre';\n\nexport type { GraphCallbacks } from '@/lib/derive-graph';\n\nexport interface UseGraphStateReturn {\n /** Derived React Flow nodes (from domain Maps). */\n nodes: CanvasNodeType[];\n /** Derived React Flow edges (from domain Maps). */\n edges: Edge[];\n /**\n * Reconcile domain Maps with fresh server data (new initialNodes/initialEdges).\n * Preserves pending (creating) nodes unless a matching real feature appears.\n * No-ops when a mutation is in-flight (see beginMutation/endMutation).\n */\n reconcile: (newNodes: CanvasNodeType[], newEdges: Edge[]) => void;\n /** Update a feature's state/lifecycle/name (e.g., from SSE events). */\n updateFeature: (featureNodeId: string, updates: FeatureDataUpdates) => void;\n /** Add a pending (optimistic) feature node (state='creating'). */\n addPendingFeature: (nodeId: string, data: FeatureNodeData, parentNodeId?: string) => void;\n /** Remove a pending feature node (e.g., on rollback). */\n removePendingFeature: (nodeId: string) => void;\n /** Remove a real feature node from the domain Map. */\n removeFeature: (nodeId: string) => void;\n /** Restore a previously removed feature (rollback). */\n restoreFeature: (nodeId: string, entry: FeatureEntry) => void;\n /** Add a repository node (may use a temp ID initially). */\n addRepository: (nodeId: string, data: RepositoryNodeData) => void;\n /** Remove a repository node. */\n removeRepository: (nodeId: string) => void;\n /** Replace a temp repo ID with the real one (atomic). */\n replaceRepository: (tempId: string, realId: string, data: RepositoryNodeData) => void;\n /** Stable lookup: get the repositoryPath for a feature node. */\n getFeatureRepositoryPath: (featureNodeId: string) => string | undefined;\n /** Stable lookup: get repository node data by nodeId. */\n getRepositoryData: (nodeId: string) => RepositoryNodeData | undefined;\n /** Stable lookup: get the current number of repositories in the domain Map. */\n getRepoMapSize: () => number;\n /** Update callbacks injected into node data (does NOT trigger re-render). */\n setCallbacks: (callbacks: GraphCallbacks) => void;\n /**\n * Signal that an optimistic mutation has started. While any mutation is\n * in-flight, `reconcile` becomes a no-op so stale poll data cannot\n * overwrite optimistic state. Calls are ref-counted — nest freely.\n */\n beginMutation: () => void;\n /**\n * Signal that an optimistic mutation has resolved. Adds a one-poll-interval\n * cooldown (default 3 s) so the next poll fetches post-mutation data.\n */\n endMutation: (cooldownMs?: number) => void;\n /** Whether a mutation is currently in-flight (for polling skip logic). */\n isMutating: () => boolean;\n}\n\n/** Parse initialNodes + initialEdges into domain Maps. */\nfunction parseMaps(\n initialNodes: CanvasNodeType[],\n initialEdges: Edge[]\n): {\n featureMap: Map<string, FeatureEntry>;\n repoMap: Map<string, RepoEntry>;\n} {\n // Build parentNodeId map from dependency edges\n const parentByChild = new Map<string, string>();\n for (const edge of initialEdges) {\n if (edge.type === 'dependencyEdge') {\n parentByChild.set(edge.target, edge.source);\n }\n }\n\n const featureMap = new Map<string, FeatureEntry>();\n const repoMap = new Map<string, RepoEntry>();\n\n for (const node of initialNodes) {\n if (node.type === 'featureNode') {\n featureMap.set(node.id, {\n nodeId: node.id,\n data: node.data as FeatureNodeData,\n parentNodeId: parentByChild.get(node.id),\n });\n } else if (node.type === 'repositoryNode') {\n repoMap.set(node.id, {\n nodeId: node.id,\n data: node.data as RepositoryNodeData,\n });\n }\n }\n\n return { featureMap, repoMap };\n}\n\ntype FeatureDataUpdates = Partial<\n Pick<FeatureNodeData, 'state' | 'lifecycle' | 'name' | 'description'>\n>;\n\nfunction isFeatureDataUnchanged(data: FeatureNodeData, updates: FeatureDataUpdates): boolean {\n return (\n (updates.state === undefined || updates.state === data.state) &&\n (updates.lifecycle === undefined || updates.lifecycle === data.lifecycle) &&\n (updates.name === undefined || updates.name === data.name) &&\n (updates.description === undefined || updates.description === data.description)\n );\n}\n\n/**\n * Shallow-compare two Maps by key set and entry data (JSON equality).\n * Returns true if they are structurally identical, avoiding unnecessary re-renders.\n */\nfunction mapsEqual<T extends { data: unknown; parentNodeId?: string }>(\n a: Map<string, T>,\n b: Map<string, T>\n): boolean {\n if (a.size !== b.size) return false;\n for (const [key, aEntry] of a) {\n const bEntry = b.get(key);\n if (!bEntry) return false;\n if (aEntry.parentNodeId !== bEntry.parentNodeId) return false;\n if (aEntry.data === bEntry.data) continue;\n if (JSON.stringify(aEntry.data) !== JSON.stringify(bEntry.data)) return false;\n }\n return true;\n}\n\nexport function useGraphState(\n initialNodes: CanvasNodeType[],\n initialEdges: Edge[]\n): UseGraphStateReturn {\n // eslint-disable-next-line react-hooks/exhaustive-deps -- intentional: parse only on mount (like useState initializer)\n const init = useMemo(() => parseMaps(initialNodes, initialEdges), []);\n\n const [featureMap, setFeatureMap] = useState<Map<string, FeatureEntry>>(init.featureMap);\n const [repoMap, setRepoMap] = useState<Map<string, RepoEntry>>(init.repoMap);\n const [pendingMap, setPendingMap] = useState<Map<string, FeatureEntry>>(\n new Map<string, FeatureEntry>()\n );\n\n // Buffer for SSE updates that arrive before their feature is in featureMap.\n // When reconcile adds new features, buffered updates are applied automatically.\n const pendingUpdatesRef = useRef<\n Map<string, Partial<Pick<FeatureNodeData, 'state' | 'lifecycle' | 'name' | 'description'>>>\n >(new Map());\n\n // Protect recently-added/replaced repos from stale-poll reconcile.\n // After addRepository or replaceRepository, the repo ID is marked as protected.\n // Once reconcile sees the repo in server data, the protection is cleared.\n // This prevents a stale poll (that fetched data before the server action completed)\n // from wiping a repo that the client has already added.\n const protectedRepoIdsRef = useRef<Set<string>>(new Set());\n\n // Mutation guard: ref-counted counter. While > 0, reconcile is a no-op\n // so stale poll data cannot overwrite optimistic state.\n const mutationCountRef = useRef(0);\n const mutationTimersRef = useRef<Set<ReturnType<typeof setTimeout>>>(new Set());\n\n // Track 'deleting' features that the server no longer returns.\n // Retained for one extra reconcile cycle so the user sees the deleting state\n // before the node disappears from the canvas.\n const deletingRetainedRef = useRef<Set<string>>(new Set());\n\n // Callbacks stored in a ref so changing them doesn't trigger re-render.\n // The stable wrapper object reads from the ref so node closures always use latest callbacks.\n const callbacksRef = useRef<GraphCallbacks>({});\n const stableCallbacks = useMemo<GraphCallbacks>(\n () => ({\n onNodeAction: (nodeId) => callbacksRef.current.onNodeAction?.(nodeId),\n onNodeSettings: (nodeId) => callbacksRef.current.onNodeSettings?.(nodeId),\n onFeatureDelete: (featureId) => callbacksRef.current.onFeatureDelete?.(featureId),\n onRepositoryAdd: (nodeId) => callbacksRef.current.onRepositoryAdd?.(nodeId),\n onRepositoryClick: (nodeId) => callbacksRef.current.onRepositoryClick?.(nodeId),\n onRepositoryDelete: (repositoryId) => callbacksRef.current.onRepositoryDelete?.(repositoryId),\n onRetryFeature: (featureId) => callbacksRef.current.onRetryFeature?.(featureId),\n }),\n []\n );\n\n // Stable refs for domain Maps (for use in callbacks without depending on state)\n const featureMapRef = useRef(featureMap);\n featureMapRef.current = featureMap;\n const repoMapRef = useRef(repoMap);\n repoMapRef.current = repoMap;\n\n // Derive graph from domain Maps (runs on every Map change, but dagre only on topology change)\n const derived = useMemo(\n () => deriveGraph(featureMap, repoMap, pendingMap, stableCallbacks),\n [featureMap, repoMap, pendingMap, stableCallbacks]\n );\n\n // Cache dagre layout positions — only re-run when node set or edge connections change\n const layoutCacheRef = useRef<{\n key: string;\n positions: Map<\n string,\n { position: { x: number; y: number }; targetPosition: Position; sourcePosition: Position }\n >;\n }>({ key: '', positions: new Map() });\n\n const { nodes, edges } = useMemo(() => {\n const nodeIds = derived.nodes\n .map((n) => n.id)\n .sort()\n .join(',');\n const edgeKeys = derived.edges\n .map((e) => `${e.source}-${e.target}`)\n .sort()\n .join(',');\n const topologyKey = `${nodeIds}|${edgeKeys}`;\n\n if (topologyKey !== layoutCacheRef.current.key) {\n // Topology changed — re-run dagre\n const result = layoutWithDagre(derived.nodes, derived.edges, CANVAS_LAYOUT_DEFAULTS);\n const positions = new Map<\n string,\n { position: { x: number; y: number }; targetPosition: Position; sourcePosition: Position }\n >();\n for (const node of result.nodes) {\n positions.set(node.id, {\n position: node.position,\n targetPosition: (node as Record<string, unknown>).targetPosition as Position,\n sourcePosition: (node as Record<string, unknown>).sourcePosition as Position,\n });\n }\n\n // Anchor new layout to previous positions so the graph doesn't drift.\n // Find the first surviving node (exists in both old and new layouts) and\n // shift the entire new layout by the delta between its old and new position.\n const prevPositions = layoutCacheRef.current.positions;\n if (prevPositions.size > 0) {\n let dx = 0;\n let dy = 0;\n for (const [id, newPos] of positions) {\n const oldPos = prevPositions.get(id);\n if (oldPos) {\n dx = oldPos.position.x - newPos.position.x;\n dy = oldPos.position.y - newPos.position.y;\n break;\n }\n }\n if (dx !== 0 || dy !== 0) {\n for (const pos of positions.values()) {\n pos.position = { x: pos.position.x + dx, y: pos.position.y + dy };\n }\n for (const node of result.nodes) {\n node.position = { x: node.position.x + dx, y: node.position.y + dy };\n }\n }\n }\n\n layoutCacheRef.current = { key: topologyKey, positions };\n return result;\n }\n\n // Data-only change — apply cached positions without re-running dagre\n const { positions } = layoutCacheRef.current;\n const nodes = derived.nodes.map((node) => {\n const cached = positions.get(node.id);\n return cached ? { ...node, ...cached } : node;\n });\n return { nodes, edges: derived.edges };\n }, [derived]);\n\n // --- Mutations ---\n\n const reconcile = useCallback((newNodes: CanvasNodeType[], newEdges: Edge[]) => {\n // Skip reconciliation while an optimistic mutation is in-flight.\n // Stale poll data fetched before the mutation completed would overwrite\n // the optimistic state, causing flicker (nodes disappearing/reappearing).\n if (mutationCountRef.current > 0) return;\n\n const { featureMap: newFeatureMap, repoMap: newRepoMap } = parseMaps(newNodes, newEdges);\n\n // Precompute match keys so we don't scan newFeatureMap.values() per pending entry\n const realFeatureKeys = new Set(\n [...newFeatureMap.values()].map((e) => `${e.data.name}\\0${e.data.repositoryPath}`)\n );\n\n setFeatureMap((currentFeatureMap) => {\n // Preserve pending (creating) nodes unless matched by name+repositoryPath from newFeatureMap\n const pendingEntries = [...currentFeatureMap.entries()].filter(\n ([, e]) => e.data.state === 'creating'\n );\n\n const merged = new Map(newFeatureMap);\n\n // Keep pending nodes that don't have a real counterpart in new data\n for (const [tempId, pendingEntry] of pendingEntries) {\n const key = `${pendingEntry.data.name}\\0${pendingEntry.data.repositoryPath}`;\n if (!realFeatureKeys.has(key)) {\n merged.set(tempId, pendingEntry);\n }\n }\n\n // Preserve 'deleting' state for features being deleted.\n // If the server still returns the feature, override its state to 'deleting'.\n // If the server no longer returns it (soft-deleted), retain it for one\n // extra reconcile cycle so the user sees the deleting animation.\n const nextRetained = new Set<string>();\n for (const [id, entry] of currentFeatureMap) {\n if (entry.data.state === 'deleting') {\n if (merged.has(id)) {\n // Server still has it — override state to keep showing 'deleting'\n merged.set(id, {\n ...merged.get(id)!,\n data: { ...merged.get(id)!.data, state: 'deleting' },\n });\n } else if (!deletingRetainedRef.current.has(id)) {\n // First reconcile after server removal — retain with deleting state\n merged.set(id, entry);\n nextRetained.add(id);\n }\n // else: already retained once — let it disappear\n }\n }\n deletingRetainedRef.current = nextRetained;\n\n // Apply any buffered SSE updates to features that now exist in the map\n for (const [nodeId, updates] of pendingUpdatesRef.current) {\n const entry = merged.get(nodeId);\n if (entry) {\n merged.set(nodeId, { ...entry, data: { ...entry.data, ...updates } });\n pendingUpdatesRef.current.delete(nodeId);\n }\n }\n\n // Avoid re-render when polling returns identical data\n if (mapsEqual(currentFeatureMap, merged)) return currentFeatureMap;\n return merged;\n });\n\n // Clean pendingMap entries that now have a real counterpart in server data\n setPendingMap((currentPendingMap) => {\n if (currentPendingMap.size === 0) return currentPendingMap;\n let changed = false;\n const next = new Map(currentPendingMap);\n for (const [tempId, pendingEntry] of currentPendingMap) {\n const key = `${pendingEntry.data.name}\\0${pendingEntry.data.repositoryPath}`;\n if (realFeatureKeys.has(key)) {\n next.delete(tempId);\n changed = true;\n }\n }\n return changed ? next : currentPendingMap;\n });\n\n // Merge repoMap: preserve optimistic (temp) repos AND recently-added/replaced\n // repos that the server doesn't know about yet. Without this, a polling\n // reconcile that fires before the server action returns (or uses stale data\n // from an in-flight fetch) would wipe the repo, causing a canvas→empty flicker.\n setRepoMap((currentRepoMap) => {\n // Start with everything the server returned\n const merged = new Map(newRepoMap);\n\n // Build a set of repositoryPaths present in server data for dedup\n const serverPaths = new Set([...newRepoMap.values()].map((e) => e.data.repositoryPath));\n\n for (const [id, entry] of currentRepoMap) {\n if (merged.has(id)) {\n // Server confirmed this repo — no longer needs protection\n protectedRepoIdsRef.current.delete(id);\n continue;\n }\n if (serverPaths.has(entry.data.repositoryPath)) {\n // Server has a repo with same path — clear protection\n protectedRepoIdsRef.current.delete(id);\n continue;\n }\n // Keep temp repos or protected (recently added/replaced) repos\n if (id.startsWith('repo-temp-') || protectedRepoIdsRef.current.has(id)) {\n merged.set(id, entry);\n }\n }\n\n // Avoid re-render when polling returns identical data\n if (mapsEqual(currentRepoMap, merged)) return currentRepoMap;\n return merged;\n });\n }, []);\n\n const updateFeature = useCallback((featureNodeId: string, updates: FeatureDataUpdates) => {\n setFeatureMap((prev) => {\n const entry = prev.get(featureNodeId);\n if (!entry) {\n // Feature not yet in map — buffer update for when reconcile adds it\n pendingUpdatesRef.current.set(featureNodeId, {\n ...pendingUpdatesRef.current.get(featureNodeId),\n ...updates,\n });\n return prev;\n }\n // Clear any buffered update for this feature since it's now in the map\n pendingUpdatesRef.current.delete(featureNodeId);\n if (isFeatureDataUnchanged(entry.data, updates)) return prev;\n const next = new Map(prev);\n next.set(featureNodeId, { ...entry, data: { ...entry.data, ...updates } });\n return next;\n });\n\n // Also check pendingMap\n setPendingMap((prev) => {\n const entry = prev.get(featureNodeId);\n if (!entry) return prev;\n if (isFeatureDataUnchanged(entry.data, updates)) return prev;\n const next = new Map(prev);\n next.set(featureNodeId, { ...entry, data: { ...entry.data, ...updates } });\n return next;\n });\n }, []);\n\n const addPendingFeature = useCallback(\n (nodeId: string, data: FeatureNodeData, parentNodeId?: string) => {\n setPendingMap((prev) => {\n const next = new Map(prev);\n next.set(nodeId, { nodeId, data, parentNodeId });\n return next;\n });\n },\n []\n );\n\n const removePendingFeature = useCallback((nodeId: string) => {\n setPendingMap((prev) => {\n if (!prev.has(nodeId)) return prev;\n const next = new Map(prev);\n next.delete(nodeId);\n return next;\n });\n }, []);\n\n const removeFeature = useCallback((nodeId: string) => {\n setFeatureMap((prev) => {\n if (!prev.has(nodeId)) return prev;\n const next = new Map(prev);\n next.delete(nodeId);\n return next;\n });\n }, []);\n\n const restoreFeature = useCallback((nodeId: string, entry: FeatureEntry) => {\n setFeatureMap((prev) => {\n const next = new Map(prev);\n next.set(nodeId, entry);\n return next;\n });\n }, []);\n\n const addRepository = useCallback((nodeId: string, data: RepositoryNodeData) => {\n protectedRepoIdsRef.current.add(nodeId);\n setRepoMap((prev) => {\n const next = new Map(prev);\n next.set(nodeId, { nodeId, data });\n return next;\n });\n }, []);\n\n const removeRepository = useCallback((nodeId: string) => {\n protectedRepoIdsRef.current.delete(nodeId);\n setRepoMap((prev) => {\n if (!prev.has(nodeId)) return prev;\n const next = new Map(prev);\n next.delete(nodeId);\n return next;\n });\n }, []);\n\n const replaceRepository = useCallback(\n (tempId: string, realId: string, data: RepositoryNodeData) => {\n protectedRepoIdsRef.current.delete(tempId);\n protectedRepoIdsRef.current.add(realId);\n setRepoMap((prev) => {\n if (!prev.has(tempId)) return prev;\n const next = new Map(prev);\n next.delete(tempId);\n next.set(realId, { nodeId: realId, data });\n return next;\n });\n },\n []\n );\n\n const getFeatureRepositoryPath = useCallback((featureNodeId: string): string | undefined => {\n return featureMapRef.current.get(featureNodeId)?.data.repositoryPath;\n }, []);\n\n const getRepositoryData = useCallback((nodeId: string): RepositoryNodeData | undefined => {\n return repoMapRef.current.get(nodeId)?.data;\n }, []);\n\n const getRepoMapSize = useCallback((): number => {\n return repoMapRef.current.size;\n }, []);\n\n const setCallbacks = useCallback((callbacks: GraphCallbacks) => {\n callbacksRef.current = callbacks;\n }, []);\n\n const beginMutation = useCallback(() => {\n mutationCountRef.current++;\n }, []);\n\n const endMutation = useCallback((cooldownMs = 3_000) => {\n // Delay decrement by one poll interval so the next fetch after the\n // mutation returns post-mutation data, not a stale in-flight response.\n const timer = setTimeout(() => {\n mutationCountRef.current = Math.max(0, mutationCountRef.current - 1);\n mutationTimersRef.current.delete(timer);\n }, cooldownMs);\n mutationTimersRef.current.add(timer);\n }, []);\n\n const isMutating = useCallback(() => mutationCountRef.current > 0, []);\n\n // Cleanup cooldown timers on unmount\n useEffect(() => {\n const timers = mutationTimersRef.current;\n return () => {\n for (const timer of timers) clearTimeout(timer);\n timers.clear();\n };\n }, []);\n\n return {\n nodes,\n edges,\n reconcile,\n updateFeature,\n addPendingFeature,\n removePendingFeature,\n removeFeature,\n restoreFeature,\n addRepository,\n removeRepository,\n replaceRepository,\n getFeatureRepositoryPath,\n getRepositoryData,\n getRepoMapSize,\n setCallbacks,\n beginMutation,\n endMutation,\n isMutating,\n };\n}\n","import dagre from '@dagrejs/dagre';\nimport type { Edge, Node } from '@xyflow/react';\n\nexport type LayoutDirection = 'TB' | 'LR' | 'BT' | 'RL';\n\nexport interface LayoutOptions {\n /** Graph direction: top-bottom, left-right, etc. Default \"TB\" */\n direction?: LayoutDirection;\n /** Default node size when per-node size is unavailable */\n nodeSize?: { width: number; height: number };\n /** Vertical separation between ranks (default 80) */\n ranksep?: number;\n /** Horizontal separation between nodes in the same rank (default 30) */\n nodesep?: number;\n}\n\n/** Canonical layout defaults for the control-center canvas. */\nexport const CANVAS_LAYOUT_DEFAULTS: LayoutOptions = {\n direction: 'LR',\n ranksep: 200,\n nodesep: 15,\n};\n\n/** Known node-type dimensions for the canvas node types */\nconst NODE_DIMENSIONS: Record<string, { width: number; height: number }> = {\n featureNode: { width: 288, height: 140 },\n repositoryNode: { width: 328, height: 50 },\n};\n\nfunction getNodeSize(\n node: Node,\n defaultSize: { width: number; height: number }\n): { width: number; height: number } {\n // Prefer per-node size from data, then type-based lookup, then default\n const data = node.data as Record<string, unknown> | undefined;\n if (data && typeof data.width === 'number' && typeof data.height === 'number') {\n return { width: data.width, height: data.height };\n }\n return NODE_DIMENSIONS[node.type ?? ''] ?? defaultSize;\n}\n\nfunction getHandlePositions(direction: LayoutDirection) {\n switch (direction) {\n case 'LR':\n return { targetPosition: 'left' as const, sourcePosition: 'right' as const };\n case 'RL':\n return { targetPosition: 'right' as const, sourcePosition: 'left' as const };\n case 'BT':\n return { targetPosition: 'bottom' as const, sourcePosition: 'top' as const };\n case 'TB':\n default:\n return { targetPosition: 'top' as const, sourcePosition: 'bottom' as const };\n }\n}\n\n/**\n * Compute an automatic hierarchical layout for React Flow nodes and edges\n * using Dagre. Returns new node/edge arrays — never mutates the originals.\n *\n * Disconnected nodes (no edges) are interleaved with connected root trees\n * in their original input order, preserving the caller's sort (e.g. createdAt).\n */\nexport function layoutWithDagre<N extends Node>(\n nodes: N[],\n edges: Edge[],\n opts: LayoutOptions = {}\n): { nodes: N[]; edges: Edge[] } {\n const {\n direction = 'TB',\n nodeSize = { width: 172, height: 36 },\n ranksep = 80,\n nodesep = 30,\n } = opts;\n\n if (nodes.length === 0) {\n return { nodes: [], edges: [] };\n }\n\n const g = new dagre.graphlib.Graph({ multigraph: true });\n g.setDefaultEdgeLabel(() => ({}));\n g.setGraph({ rankdir: direction, ranksep, nodesep });\n\n // Separate connected from disconnected nodes\n const connectedIds = new Set<string>();\n for (const edge of edges) {\n connectedIds.add(edge.source);\n connectedIds.add(edge.target);\n }\n\n const graphNodes = nodes.filter((n) => connectedIds.has(n.id));\n const disconnectedNodes = nodes.filter((n) => !connectedIds.has(n.id));\n\n // Add nodes to the dagre graph\n for (const node of graphNodes) {\n const size = getNodeSize(node, nodeSize);\n g.setNode(node.id, { width: size.width, height: size.height });\n }\n\n // Add edges — use edge.id as key to support multigraph (duplicate source→target)\n for (const edge of edges) {\n if (!g.hasNode(edge.source) || !g.hasNode(edge.target)) continue;\n g.setEdge(edge.source, edge.target, {}, edge.id);\n }\n\n dagre.layout(g);\n\n const { targetPosition, sourcePosition } = getHandlePositions(direction);\n const isHorizontal = direction === 'LR' || direction === 'RL';\n\n // Collect dagre center positions keyed by node id\n const centerMap = new Map<string, { cx: number; cy: number; w: number; h: number }>();\n for (const node of graphNodes) {\n const dagreNode = g.node(node.id);\n const size = getNodeSize(node, nodeSize);\n centerMap.set(node.id, { cx: dagreNode.x, cy: dagreNode.y, w: size.width, h: size.height });\n }\n\n // Add disconnected nodes to centerMap so they participate in root positioning.\n // Use the same primary-axis position as connected roots (rank 0) so they align\n // visually with repos that have features attached.\n let rootPrimaryAxis = 0;\n for (const c of centerMap.values()) {\n rootPrimaryAxis = isHorizontal ? c.cx : c.cy;\n break; // Use the first connected node's primary position\n }\n for (const node of disconnectedNodes) {\n const size = getNodeSize(node, nodeSize);\n centerMap.set(node.id, {\n cx: isHorizontal ? rootPrimaryAxis : 0,\n cy: isHorizontal ? 0 : rootPrimaryAxis,\n w: size.width,\n h: size.height,\n });\n }\n\n // ── Proper tree layout for the secondary axis ──\n // Dagre gives us correct primary-axis (rank/X) positions but its secondary-\n // axis (Y) positioning doesn't respect our tree structure well. Replace it\n // with a bottom-up tree layout:\n // 1. Compute subtree heights (leaves → roots)\n // 2. Position children centered on parent (roots → leaves)\n // This guarantees: no overlaps, parents centered on children, and straight\n // lines for 1-to-1 connections at every depth.\n\n // Build parent→children map from edges\n const childrenOf = new Map<string, string[]>();\n for (const edge of edges) {\n if (!centerMap.has(edge.source) || !centerMap.has(edge.target)) continue;\n if (!childrenOf.has(edge.source)) childrenOf.set(edge.source, []);\n childrenOf.get(edge.source)!.push(edge.target);\n }\n\n // Sort children by input order (preserves caller's ordering, e.g. createdAt)\n const inputIndex = new Map<string, number>();\n for (let i = 0; i < nodes.length; i++) {\n inputIndex.set(nodes[i].id, i);\n }\n for (const [, kids] of childrenOf) {\n kids.sort((a, b) => (inputIndex.get(a) ?? 0) - (inputIndex.get(b) ?? 0));\n }\n\n // Find tree roots: connected nodes that are not children of another node\n const childSet = new Set<string>();\n for (const ids of childrenOf.values()) {\n for (const id of ids) childSet.add(id);\n }\n const connectedRoots = [...connectedIds].filter((id) => centerMap.has(id) && !childSet.has(id));\n // Merge connected roots and disconnected nodes, sorted by input order\n // so repos maintain their original creation-time ordering regardless of\n // whether they have features attached.\n const allRoots = [...connectedRoots, ...disconnectedNodes.map((n) => n.id)];\n allRoots.sort((a, b) => (inputIndex.get(a) ?? 0) - (inputIndex.get(b) ?? 0));\n\n // Bottom-up: compute the total secondary-axis span each subtree needs\n const subtreeSpan = new Map<string, number>();\n function computeSpan(nodeId: string): number {\n if (subtreeSpan.has(nodeId)) return subtreeSpan.get(nodeId)!;\n const c = centerMap.get(nodeId)!;\n const nodeSpan = isHorizontal ? c.h : c.w;\n const kids = childrenOf.get(nodeId);\n if (!kids || kids.length === 0) {\n subtreeSpan.set(nodeId, nodeSpan);\n return nodeSpan;\n }\n let childrenTotalSpan = 0;\n for (const kid of kids) {\n childrenTotalSpan += computeSpan(kid);\n }\n childrenTotalSpan += (kids.length - 1) * nodesep;\n const span = Math.max(nodeSpan, childrenTotalSpan);\n subtreeSpan.set(nodeId, span);\n return span;\n }\n\n for (const root of allRoots) computeSpan(root);\n\n // Top-down: position each node on the secondary axis, centering parent\n // on its children block. For 1-to-1 edges the child gets the same\n // secondary-axis value as its parent (straight line).\n function positionTree(nodeId: string, centerPos: number): void {\n const c = centerMap.get(nodeId)!;\n if (isHorizontal) {\n c.cy = centerPos;\n } else {\n c.cx = centerPos;\n }\n const kids = childrenOf.get(nodeId);\n if (!kids || kids.length === 0) return;\n\n // Total span occupied by children\n let childrenTotalSpan = 0;\n for (const kid of kids) {\n childrenTotalSpan += subtreeSpan.get(kid) ?? 0;\n }\n childrenTotalSpan += (kids.length - 1) * nodesep;\n\n // Start from the top of the centered children block\n let cursor = centerPos - childrenTotalSpan / 2;\n for (const kid of kids) {\n const kidSpan = subtreeSpan.get(kid) ?? 0;\n positionTree(kid, cursor + kidSpan / 2);\n cursor += kidSpan + nodesep;\n }\n }\n\n // Position all root trees (connected and disconnected) in input order.\n let rootCursor = 0;\n for (const root of allRoots) {\n const span = subtreeSpan.get(root) ?? 0;\n positionTree(root, rootCursor + span / 2);\n rootCursor += span + nodesep;\n }\n\n // Build result array converting center-coords to React Flow top-left\n const result: N[] = [];\n for (const node of nodes) {\n const c = centerMap.get(node.id);\n if (!c) continue;\n result.push({\n ...node,\n targetPosition,\n sourcePosition,\n position: { x: c.cx - c.w / 2, y: c.cy - c.h / 2 },\n } as N);\n }\n\n return { nodes: result, edges: [...edges] };\n}\n","/**\n * derive-graph.ts\n *\n * Pure client-side derivation: domain Maps → React Flow nodes + edges.\n * All edges are derived from domain relationships (repositoryPath matching,\n * parentNodeId) — never stored independently.\n */\n\nimport type { Edge } from '@xyflow/react';\nimport type { CanvasNodeType } from '@/components/features/features-canvas';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\nimport type { RepositoryNodeData } from '@/components/common/repository-node';\n/** A feature node entry stored in the domain Map. */\nexport interface FeatureEntry {\n nodeId: string;\n data: FeatureNodeData;\n /** If set, this feature connects to a parent feature via a dependency edge (no repo→feature edge). */\n parentNodeId?: string;\n}\n\n/** A repository node entry stored in the domain Map. */\nexport interface RepoEntry {\n nodeId: string;\n data: RepositoryNodeData;\n}\n\n/** Stable callbacks passed by the consumer, injected into derived node data. */\nexport interface GraphCallbacks {\n /** Called when the user triggers an action on a feature node (e.g., adds a sub-feature). */\n onNodeAction?: (nodeId: string) => void;\n /** Called when the user opens settings/details on a feature node. */\n onNodeSettings?: (nodeId: string) => void;\n /** Called when the user deletes a feature. */\n onFeatureDelete?: (featureId: string, cleanup?: boolean, cascadeDelete?: boolean) => void;\n /** Called when the user clicks the \"+\" add-feature button on a repo node. */\n onRepositoryAdd?: (repoNodeId: string) => void;\n /** Called when the user clicks a repo node to navigate to its detail page. */\n onRepositoryClick?: (repoNodeId: string) => void;\n /** Called when the user deletes a repository. */\n onRepositoryDelete?: (repositoryId: string) => void;\n /** Called when the user retries a failed feature. */\n onRetryFeature?: (featureId: string) => void;\n}\n\n/**\n * Derives React Flow nodes and edges from domain Maps.\n *\n * - Feature nodes without a parentNodeId → repo→feature edge (matched by repositoryPath)\n * - Feature nodes without a parentNodeId but with no matching repo → virtual repo node\n * - Feature nodes with a parentNodeId → dependency edge (parentNodeId→nodeId)\n * - Pending feature nodes (creating state) from pendingMap → same rules, no action callbacks\n * - Callbacks are injected into node data via closures\n */\nexport function deriveGraph(\n featureMap: Map<string, FeatureEntry>,\n repoMap: Map<string, RepoEntry>,\n pendingMap: Map<string, FeatureEntry>,\n callbacks?: GraphCallbacks\n): { nodes: CanvasNodeType[]; edges: Edge[] } {\n const nodes: CanvasNodeType[] = [];\n const edges: Edge[] = [];\n\n // Normalize path separators so Windows backslash paths match forward-slash paths\n const normalizePath = (p: string) => p.replace(/\\\\/g, '/');\n\n // Build a lookup: repositoryPath → repoNodeId\n const repoByPath = new Map<string, string>();\n for (const [nodeId, entry] of repoMap) {\n if (entry.data.repositoryPath) {\n repoByPath.set(normalizePath(entry.data.repositoryPath), nodeId);\n }\n }\n\n // Virtual repo nodes created for orphaned features (not in repoMap)\n const virtualRepos = new Map<string, string>(); // path → virtualNodeId\n\n function getOrCreateVirtualRepo(repositoryPath: string): string {\n if (virtualRepos.has(repositoryPath)) {\n return virtualRepos.get(repositoryPath)!;\n }\n const virtualId = `virtual-repo-${repositoryPath}`;\n const repoName = repositoryPath.split('/').filter(Boolean).at(-1) ?? repositoryPath;\n nodes.push({\n id: virtualId,\n type: 'repositoryNode',\n position: { x: 0, y: 0 },\n data: { name: repoName, repositoryPath } satisfies RepositoryNodeData,\n } as CanvasNodeType);\n virtualRepos.set(repositoryPath, virtualId);\n return virtualId;\n }\n\n // Add repo nodes (real ones) — sorted by createdAt for stable vertical order.\n // The server-side layoutWithDagre may reorder the node array (connected vs\n // disconnected split), so we cannot rely on Map insertion order alone.\n const sortedRepoEntries = [...repoMap.entries()].sort((a, b) => {\n const aTime = (a[1].data.createdAt as number | undefined) ?? 0;\n const bTime = (b[1].data.createdAt as number | undefined) ?? 0;\n return aTime - bTime;\n });\n for (const [nodeId, entry] of sortedRepoEntries) {\n const data: RepositoryNodeData = {\n ...entry.data,\n ...(callbacks?.onRepositoryAdd && {\n onAdd: () => callbacks.onRepositoryAdd!(nodeId),\n }),\n ...(callbacks?.onRepositoryClick && {\n onClick: () => callbacks.onRepositoryClick!(nodeId),\n }),\n ...(callbacks?.onRepositoryDelete && {\n onDelete: callbacks.onRepositoryDelete,\n }),\n };\n nodes.push({\n id: nodeId,\n type: 'repositoryNode',\n position: { x: 0, y: 0 },\n data,\n } as CanvasNodeType);\n }\n\n // Process feature entries (both real and pending).\n // Skip pendingMap entries that already exist in featureMap (reconcile may not\n // have cleaned them up yet if the AI-generated name differs from the original).\n const allFeatureEntries: [string, FeatureEntry, boolean][] = [\n ...[...featureMap.entries()].map(\n ([id, e]) => [id, e, false] as [string, FeatureEntry, boolean]\n ),\n ...[...pendingMap.entries()]\n .filter(([id]) => !featureMap.has(id))\n .map(([id, e]) => [id, e, true] as [string, FeatureEntry, boolean]),\n ];\n\n for (const [nodeId, entry, isPending] of allFeatureEntries) {\n const isCreating = entry.data.state === 'creating' || isPending;\n\n const data: FeatureNodeData = {\n ...entry.data,\n // Callbacks only for non-creating nodes\n ...(!isCreating &&\n callbacks?.onNodeAction && {\n onAction: () => callbacks.onNodeAction!(nodeId),\n }),\n ...(!isCreating &&\n callbacks?.onNodeSettings && {\n onSettings: () => callbacks.onNodeSettings!(nodeId),\n }),\n ...(!isCreating &&\n callbacks?.onFeatureDelete && {\n onDelete: callbacks.onFeatureDelete,\n }),\n ...(!isCreating &&\n entry.data.state === 'error' &&\n callbacks?.onRetryFeature && {\n onRetry: callbacks.onRetryFeature,\n }),\n };\n\n nodes.push({\n id: nodeId,\n type: 'featureNode',\n position: { x: 0, y: 0 },\n data,\n } as CanvasNodeType);\n\n // Edge derivation\n if (entry.parentNodeId) {\n // Dependency edge (parent→child feature)\n edges.push({\n id: `dep-${entry.parentNodeId}-${nodeId}`,\n source: entry.parentNodeId,\n target: nodeId,\n type: 'dependencyEdge',\n });\n } else {\n // Repo→feature edge (matched by repositoryPath)\n const repositoryPath = normalizePath(entry.data.repositoryPath);\n const repoNodeId = repoByPath.get(repositoryPath) ?? getOrCreateVirtualRepo(repositoryPath);\n edges.push({\n id: `edge-${repoNodeId}-${nodeId}`,\n source: repoNodeId,\n target: nodeId,\n style: { strokeDasharray: '5 5' },\n });\n }\n }\n\n // Build set of feature node IDs that have children (are dependency edge sources)\n const parentNodeIds = new Set<string>();\n for (const edge of edges) {\n if (edge.type === 'dependencyEdge') {\n parentNodeIds.add(edge.source);\n }\n }\n\n // Inject showHandles and hasChildren based on edges\n const hasEdges = edges.length > 0;\n for (const node of nodes) {\n const data = node.data as Record<string, unknown>;\n data.showHandles = hasEdges;\n if (node.type === 'featureNode') {\n data.hasChildren = parentNodeIds.has(node.id);\n }\n }\n\n return { nodes, edges };\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { ReactFlowProvider } from '@xyflow/react';\nimport type { Edge } from '@xyflow/react';\nimport type { CanvasNodeType } from '@/components/features/features-canvas';\nimport { ControlCenterInner } from './control-center-inner';\n\nexport interface ControlCenterProps {\n initialNodes: CanvasNodeType[];\n initialEdges: Edge[];\n /** Drawer content rendered by the @drawer parallel route slot. */\n drawer?: ReactNode;\n}\n\nexport function ControlCenter({ initialNodes, initialEdges, drawer }: ControlCenterProps) {\n return (\n <div data-testid=\"control-center\" className=\"h-full w-full\">\n <ReactFlowProvider>\n <ControlCenterInner initialNodes={initialNodes} initialEdges={initialEdges} />\n </ReactFlowProvider>\n <div key=\"drawer\">{drawer}</div>\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport { Handle, Position } from '@xyflow/react';\nimport { Github, Plus, Code2, Terminal, FolderOpen, Trash2, Play, Square } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { ActionButton } from '@/components/common/action-button';\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog';\nimport { Button } from '@/components/ui/button';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\nimport { DeploymentStatusBadge } from '@/components/common/deployment-status-badge';\nimport { useDeployAction } from '@/hooks/use-deploy-action';\nimport { useFeatureFlags } from '@/hooks/feature-flags-context';\nimport type { RepositoryNodeData } from './repository-node-config';\nimport { useRepositoryActions } from './use-repository-actions';\n\nexport function RepositoryNode({ data }: { data: RepositoryNodeData; [key: string]: unknown }) {\n const featureFlags = useFeatureFlags();\n const [confirmOpen, setConfirmOpen] = useState(false);\n const actions = useRepositoryActions(\n data.repositoryPath ? { repositoryPath: data.repositoryPath } : null\n );\n const deployAction = useDeployAction(\n data.repositoryPath\n ? {\n targetId: data.repositoryPath,\n targetType: 'repository',\n repositoryPath: data.repositoryPath,\n }\n : null\n );\n const isDeploymentActive = deployAction.status === 'Booting' || deployAction.status === 'Ready';\n\n return (\n <div className={cn('group relative', data.onDelete && data.id && 'pl-10')}>\n {data.showHandles ? (\n <Handle\n type=\"target\"\n position={Position.Left}\n isConnectable={false}\n className=\"opacity-0!\"\n />\n ) : null}\n\n {/* Delete button — visible on hover, positioned to the left */}\n {data.onDelete && data.id ? (\n <>\n <div className=\"absolute top-1/2 left-0 -translate-y-1/2 opacity-0 transition-opacity group-hover:opacity-100\">\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n aria-label=\"Remove repository\"\n data-testid=\"repository-node-delete-button\"\n onClick={(e) => {\n e.stopPropagation();\n setConfirmOpen(true);\n }}\n className=\"bg-card text-muted-foreground hover:border-destructive hover:text-destructive flex h-7 w-7 cursor-pointer items-center justify-center rounded-full border shadow-sm transition-colors\"\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n </button>\n </TooltipTrigger>\n <TooltipContent>Remove repository</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </div>\n\n <Dialog open={confirmOpen} onOpenChange={setConfirmOpen}>\n <DialogContent className=\"max-w-xs\">\n <DialogHeader>\n <DialogTitle>Remove repository?</DialogTitle>\n <DialogDescription>\n This will remove <strong>{data.name}</strong> and all its features from your\n workspace. The repository files on disk won&apos;t be affected.\n </DialogDescription>\n </DialogHeader>\n <DialogFooter className=\"grid grid-cols-2 gap-2 sm:flex-none\">\n <DialogClose asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogClose>\n <Button\n variant=\"destructive\"\n onClick={() => {\n setConfirmOpen(false);\n data.onDelete?.(data.id!);\n }}\n >\n Remove\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </>\n ) : null}\n\n <div\n role=\"button\"\n tabIndex={0}\n data-testid=\"repository-node-card\"\n data-repo-name={data.name}\n onClick={(e) => {\n e.stopPropagation();\n data.onClick?.();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n data.onClick?.();\n }\n }}\n className=\"nodrag bg-card flex min-w-[18rem] cursor-pointer items-center gap-3 rounded-full border px-4 py-3 shadow-sm\"\n >\n <Github className=\"text-muted-foreground h-5 w-5 shrink-0\" />\n <span data-testid=\"repository-node-name\" className=\"min-w-0 truncate text-sm font-medium\">\n {data.name}\n </span>\n\n <div\n className={cn(\n 'flex shrink-0 items-center gap-2',\n (data.repositoryPath ?? data.onAdd) && 'ml-auto'\n )}\n onClick={(e) => e.stopPropagation()}\n >\n {data.repositoryPath ? (\n <>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"flex items-center\">\n <ActionButton\n label=\"Open in IDE\"\n onClick={actions.openInIde}\n loading={actions.ideLoading}\n error={!!actions.ideError}\n icon={Code2}\n iconOnly\n variant=\"ghost\"\n size=\"icon-xs\"\n />\n </span>\n </TooltipTrigger>\n <TooltipContent>Open in IDE</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"flex items-center\">\n <ActionButton\n label=\"Open in Shell\"\n onClick={actions.openInShell}\n loading={actions.shellLoading}\n error={!!actions.shellError}\n icon={Terminal}\n iconOnly\n variant=\"ghost\"\n size=\"icon-xs\"\n />\n </span>\n </TooltipTrigger>\n <TooltipContent>Open in Shell</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"flex items-center\">\n <ActionButton\n label=\"Open Folder\"\n onClick={actions.openFolder}\n loading={actions.folderLoading}\n error={!!actions.folderError}\n icon={FolderOpen}\n iconOnly\n variant=\"ghost\"\n size=\"icon-xs\"\n />\n </span>\n </TooltipTrigger>\n <TooltipContent>Open Folder</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n {featureFlags.envDeploy ? (\n <>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"flex items-center\">\n <ActionButton\n label={isDeploymentActive ? 'Stop Dev Server' : 'Start Dev Server'}\n onClick={isDeploymentActive ? deployAction.stop : deployAction.deploy}\n loading={deployAction.deployLoading || deployAction.stopLoading}\n error={!!deployAction.deployError}\n icon={isDeploymentActive ? Square : Play}\n iconOnly\n variant=\"ghost\"\n size=\"icon-xs\"\n />\n </span>\n </TooltipTrigger>\n <TooltipContent>\n {isDeploymentActive ? 'Stop Dev Server' : 'Start Dev Server'}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n {isDeploymentActive ? (\n <DeploymentStatusBadge\n status={deployAction.status}\n url={deployAction.url}\n targetId={data.repositoryPath}\n />\n ) : null}\n </>\n ) : null}\n </>\n ) : null}\n\n {data.onAdd ? (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n aria-label=\"Add feature\"\n data-testid=\"repository-node-add-button\"\n onClick={(e) => {\n e.stopPropagation();\n data.onAdd?.();\n }}\n className={cn(\n 'text-muted-foreground hover:bg-accent dark:hover:bg-accent/50 flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded-full transition-colors hover:text-blue-500',\n data.pulseAdd &&\n 'animate-pulse-cta bg-blue-100 text-blue-500 dark:bg-blue-900/40'\n )}\n >\n <Plus className=\"h-3.5 w-3.5\" />\n </button>\n </TooltipTrigger>\n <TooltipContent>Add feature</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n ) : null}\n </div>\n </div>\n\n {/* Source handle — invisible, for edge connections */}\n {data.onAdd || data.showHandles ? (\n <Handle\n type=\"source\"\n position={Position.Right}\n isConnectable={!data.showHandles}\n className=\"opacity-0!\"\n />\n ) : null}\n </div>\n );\n}\n","'use client';\n\nimport { useCallback } from 'react';\nimport { Code2, Terminal, FolderOpen } from 'lucide-react';\nimport { BaseDrawer } from '@/components/common/base-drawer';\nimport { DrawerTitle, DrawerDescription } from '@/components/ui/drawer';\nimport { Separator } from '@/components/ui/separator';\nimport { ActionButton } from '@/components/common/action-button';\nimport type { RepositoryNodeData } from './repository-node-config';\nimport { useRepositoryActions } from './use-repository-actions';\n\nexport interface RepositoryDrawerProps {\n data: RepositoryNodeData | null;\n onClose: () => void;\n}\n\nexport function RepositoryDrawer({ data, onClose }: RepositoryDrawerProps) {\n const handleClose = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const actions = useRepositoryActions(\n data?.repositoryPath ? { repositoryPath: data.repositoryPath } : null\n );\n\n return (\n <BaseDrawer\n open={data !== null}\n onClose={handleClose}\n size=\"md\"\n modal={false}\n data-testid=\"repository-drawer\"\n deployTarget={\n data?.repositoryPath\n ? {\n targetId: data.repositoryPath,\n targetType: 'repository',\n repositoryPath: data.repositoryPath,\n }\n : undefined\n }\n header={\n data ? (\n <div data-testid=\"repository-drawer-header\">\n <DrawerTitle>{data.name}</DrawerTitle>\n {data.repositoryPath ? (\n <DrawerDescription className=\"truncate font-mono text-xs\">\n {data.repositoryPath}\n </DrawerDescription>\n ) : null}\n </div>\n ) : undefined\n }\n >\n {data?.repositoryPath ? (\n <>\n <Separator />\n <div className=\"flex flex-col gap-3 p-4\">\n <div className=\"text-muted-foreground text-xs font-semibold tracking-wider\">\n OPEN WITH\n </div>\n <div className=\"flex flex-col gap-2\">\n <ActionButton\n label=\"Open in IDE\"\n onClick={actions.openInIde}\n loading={actions.ideLoading}\n error={!!actions.ideError}\n icon={Code2}\n variant=\"outline\"\n size=\"sm\"\n />\n <ActionButton\n label=\"Open in Shell\"\n onClick={actions.openInShell}\n loading={actions.shellLoading}\n error={!!actions.shellError}\n icon={Terminal}\n variant=\"outline\"\n size=\"sm\"\n />\n <ActionButton\n label=\"Open Folder\"\n onClick={actions.openFolder}\n loading={actions.folderLoading}\n error={!!actions.folderError}\n icon={FolderOpen}\n variant=\"outline\"\n size=\"sm\"\n />\n </div>\n </div>\n </>\n ) : null}\n </BaseDrawer>\n );\n}\n","'use client';\n\nimport { BaseEdge, getBezierPath } from '@xyflow/react';\nimport type { EdgeProps } from '@xyflow/react';\n\n/**\n * Custom React Flow edge for parent→child feature dependencies.\n * Uses bezier curves and dashed style matching repo→feature edges.\n */\nexport function DependencyEdge(props: EdgeProps) {\n const [edgePath] = getBezierPath({\n sourceX: props.sourceX,\n sourceY: props.sourceY,\n targetX: props.targetX,\n targetY: props.targetY,\n sourcePosition: props.sourcePosition,\n targetPosition: props.targetPosition,\n });\n\n return (\n <BaseEdge\n id={props.id}\n path={edgePath}\n style={{\n strokeDasharray: '5 5',\n }}\n />\n );\n}\n","'use client';\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n ReactFlow,\n Background,\n BackgroundVariant,\n Controls,\n ControlButton,\n useReactFlow,\n} from '@xyflow/react';\nimport type { Connection, Edge, NodeChange, OnMoveEnd, Viewport } from '@xyflow/react';\nimport { Plus, RotateCcw } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\nimport { EmptyState } from '@/components/common/empty-state';\nimport { FeatureNode } from '@/components/common/feature-node';\nimport type { FeatureNodeType, FeatureNodeData } from '@/components/common/feature-node';\nimport { RepositoryNode } from '@/components/common/repository-node';\nimport type { RepositoryNodeType } from '@/components/common/repository-node';\nimport { DependencyEdge } from './dependency-edge';\n\nexport type CanvasNodeType = FeatureNodeType | RepositoryNodeType;\n\nexport interface FeaturesCanvasProps {\n nodes: CanvasNodeType[];\n edges: Edge[];\n selectedFeatureId?: string | null;\n defaultViewport?: Viewport;\n onNodesChange?: (changes: NodeChange<CanvasNodeType>[]) => void;\n onAddFeature?: () => void;\n onNodeClick?: (event: React.MouseEvent, node: CanvasNodeType) => void;\n onPaneClick?: (event: React.MouseEvent) => void;\n onConnect?: (connection: Connection) => void;\n onCanvasDrag?: () => void;\n onMoveEnd?: OnMoveEnd;\n onResetViewport?: () => Viewport;\n toolbar?: React.ReactNode;\n emptyState?: React.ReactNode;\n}\n\nconst FALLBACK_VIEWPORT: Viewport = { x: 30, y: 30, zoom: 0.85 };\n\nfunction ResetButton({ onResetViewport }: { onResetViewport: () => Viewport }) {\n const { setViewport } = useReactFlow();\n\n const handleReset = useCallback(() => {\n const viewport = onResetViewport();\n setViewport(viewport, { duration: 400 });\n }, [onResetViewport, setViewport]);\n\n return (\n <ControlButton onClick={handleReset} title=\"Reset view\" aria-label=\"Reset view\">\n <RotateCcw style={{ fill: 'none' }} />\n </ControlButton>\n );\n}\n\nexport function FeaturesCanvas({\n nodes,\n edges,\n selectedFeatureId,\n defaultViewport,\n onNodesChange,\n onAddFeature,\n onConnect,\n onNodeClick,\n onPaneClick,\n onCanvasDrag,\n onMoveEnd,\n onResetViewport,\n toolbar,\n emptyState,\n}: FeaturesCanvasProps) {\n const nodeTypes = useMemo(\n () => ({\n featureNode: FeatureNode,\n repositoryNode: RepositoryNode,\n }),\n []\n );\n\n const edgeTypes = useMemo(\n () => ({\n dependencyEdge: DependencyEdge,\n }),\n []\n );\n\n // Callbacks and showHandles are already injected into node.data by deriveGraph.\n // Only selectedFeatureId highlighting needs to be applied here.\n const enrichedNodes = useMemo(\n () =>\n selectedFeatureId == null\n ? nodes\n : (nodes.map((node) =>\n node.type === 'featureNode' &&\n (node.data as FeatureNodeData).featureId === selectedFeatureId\n ? { ...node, selected: true }\n : node\n ) as CanvasNodeType[]),\n [nodes, selectedFeatureId]\n );\n\n const isEmpty = nodes.length === 0;\n\n // Track empty→populated transition for exit animation.\n // When isEmpty flips from true to false, keep the overlay mounted\n // and fade it out before removing it from the DOM.\n const [showOverlay, setShowOverlay] = useState(isEmpty);\n const [overlayExiting, setOverlayExiting] = useState(false);\n const prevEmptyRef = useRef(isEmpty);\n\n useEffect(() => {\n if (prevEmptyRef.current && !isEmpty) {\n // Was empty, now populated — start exit animation\n setOverlayExiting(true);\n const timer = setTimeout(() => {\n setShowOverlay(false);\n setOverlayExiting(false);\n }, 300);\n prevEmptyRef.current = isEmpty;\n return () => clearTimeout(timer);\n }\n if (!prevEmptyRef.current && isEmpty) {\n // Was populated, now empty — show overlay immediately\n setShowOverlay(true);\n }\n prevEmptyRef.current = isEmpty;\n }, [isEmpty]);\n\n const fallbackEmptyState =\n isEmpty && !emptyState ? (\n <EmptyState\n title=\"No features yet\"\n description=\"Get started by creating your first feature.\"\n action={\n <Button onClick={onAddFeature}>\n <Plus className=\"mr-2 h-4 w-4\" />\n New Feature\n </Button>\n }\n />\n ) : null;\n\n const overlayContent = emptyState ?? fallbackEmptyState;\n\n return (\n <div\n data-testid={isEmpty ? 'features-canvas-empty' : 'features-canvas'}\n data-no-drawer-close\n className=\"dark:bg-background pointer-events-auto relative h-full w-full bg-[#f6f7f8]\"\n >\n <ReactFlow\n nodes={enrichedNodes}\n edges={edges}\n nodeTypes={nodeTypes}\n edgeTypes={edgeTypes}\n onConnect={onConnect}\n onNodesChange={onNodesChange}\n onNodeClick={onNodeClick}\n onPaneClick={onPaneClick}\n onMoveStart={onCanvasDrag}\n onMoveEnd={onMoveEnd}\n defaultViewport={defaultViewport ?? FALLBACK_VIEWPORT}\n nodesDraggable={false}\n nodesConnectable={false}\n elementsSelectable={false}\n proOptions={{ hideAttribution: true }}\n >\n <Background\n variant={BackgroundVariant.Dots}\n gap={24}\n size={1}\n color=\"#b8bcc4\"\n className=\"dark:[&_circle]:!fill-white/[0.1]\"\n />\n {!isEmpty && (\n <Controls showInteractive={false}>\n {onResetViewport ? <ResetButton onResetViewport={onResetViewport} /> : null}\n </Controls>\n )}\n {toolbar}\n </ReactFlow>\n {showOverlay && overlayContent ? (\n <div\n className={cn(\n 'pointer-events-none absolute inset-0 z-10 flex items-center justify-center transition-opacity duration-300',\n overlayExiting ? 'opacity-0' : 'animate-in fade-in opacity-100 duration-200'\n )}\n >\n <div className=\"pointer-events-auto\">{overlayContent}</div>\n </div>\n ) : null}\n </div>\n );\n}\n","'use client';\n\nimport { usePathname } from 'next/navigation';\n\n/**\n * Extracts the selected feature ID from the current URL path.\n * Returns `null` when no feature drawer route is active.\n */\nexport function useSelectedFeatureId(): string | null {\n const pathname = usePathname();\n const match = pathname.match(/^\\/feature\\/([^/]+)/);\n return match?.[1] ?? null;\n}\n","'use client';\n\nimport { useCallback, useEffect, useRef } from 'react';\nimport type { Viewport } from '@xyflow/react';\n\nexport type { Viewport } from '@xyflow/react';\n\nexport const STORAGE_KEY = 'shep-canvas-viewport';\nexport const DEBOUNCE_MS = 500;\n\nexport const DEFAULT_VIEWPORT: Viewport = { x: 30, y: 30, zoom: 0.85 };\n\nexport interface UseViewportPersistenceResult {\n defaultViewport: Viewport;\n onMoveEnd: (viewport: Viewport) => void;\n resetViewport: () => Viewport;\n}\n\nfunction isValidViewport(value: unknown): value is Viewport {\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const v = value as Record<string, unknown>;\n return (\n typeof v.x === 'number' &&\n typeof v.y === 'number' &&\n typeof v.zoom === 'number' &&\n Number.isFinite(v.x) &&\n Number.isFinite(v.y) &&\n Number.isFinite(v.zoom) &&\n v.zoom > 0\n );\n}\n\nfunction readViewport(): Viewport {\n try {\n const raw = localStorage.getItem(STORAGE_KEY);\n if (raw == null) return DEFAULT_VIEWPORT;\n const parsed: unknown = JSON.parse(raw);\n return isValidViewport(parsed) ? parsed : DEFAULT_VIEWPORT;\n } catch {\n return DEFAULT_VIEWPORT;\n }\n}\n\nexport function useViewportPersistence(): UseViewportPersistenceResult {\n const defaultViewport = useRef<Viewport>(readViewport()).current;\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n return () => {\n if (timerRef.current != null) {\n clearTimeout(timerRef.current);\n }\n };\n }, []);\n\n const onMoveEnd = useCallback((viewport: Viewport) => {\n if (timerRef.current != null) {\n clearTimeout(timerRef.current);\n }\n timerRef.current = setTimeout(() => {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(viewport));\n } catch {\n // Silently ignore localStorage errors (quota exceeded, private browsing, etc.)\n }\n }, DEBOUNCE_MS);\n }, []);\n\n const resetViewport = useCallback((): Viewport => {\n try {\n localStorage.removeItem(STORAGE_KEY);\n } catch {\n // Silently ignore localStorage errors\n }\n return DEFAULT_VIEWPORT;\n }, []);\n\n return { defaultViewport, onMoveEnd, resetViewport };\n}\n","/* __next_internal_action_entry_do_not_use__ [{\"00798652f4ed095a414b564abbeee6057dd109a44a\":\"isAgentSetupComplete\"},\"src/presentation/web/app/actions/agent-setup-flag.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"00798652f4ed095a414b564abbeee6057dd109a44a\",callServer,void 0,findSourceMapURL,\"isAgentSetupComplete\");export{$$RSC_SERVER_ACTION_0 as isAgentSetupComplete};","/* __next_internal_action_entry_do_not_use__ [{\"00b16a1159fca702e925b708270022526a0dddc0c0\":\"checkAgentAuth\"},\"src/presentation/web/app/actions/check-agent-auth.ts\",\"\"] */\"use turbopack no side effects\";import{createServerReference,callServer,findSourceMapURL}from\"private-next-rsc-action-client-wrapper\";const $$RSC_SERVER_ACTION_0=/*#__PURE__*/createServerReference(\"00b16a1159fca702e925b708270022526a0dddc0c0\",callServer,void 0,findSourceMapURL,\"checkAgentAuth\");export{$$RSC_SERVER_ACTION_0 as checkAgentAuth};","'use client';\n\nimport { useState, useEffect, useCallback, useRef } from 'react';\nimport { ChevronRight, ChevronLeft, Loader2, Bot } from 'lucide-react';\nimport { getAllAgentModels } from '@/app/actions/get-all-agent-models';\nimport type { AgentModelGroup } from '@/app/actions/get-all-agent-models';\nimport { updateAgentAndModel } from '@/app/actions/update-agent-and-model';\nimport { getAgentTypeIcon } from '@/components/common/feature-node/agent-type-icons';\nimport { getModelMeta } from '@/lib/model-metadata';\nimport { cn } from '@/lib/utils';\n\nexport interface WelcomeAgentSetupProps {\n onComplete: () => void;\n className?: string;\n}\n\ntype SetupStep = 'select-agent' | 'select-model';\n\nconst STEPS: SetupStep[] = ['select-agent', 'select-model'];\n\n/** Fixed width for the wizard content area to prevent layout jumps */\nconst WIZARD_WIDTH = 'w-72';\n\nexport function WelcomeAgentSetup({ onComplete, className }: WelcomeAgentSetupProps) {\n const [groups, setGroups] = useState<AgentModelGroup[]>([]);\n const [loading, setLoading] = useState(true);\n const [step, setStep] = useState<SetupStep>('select-agent');\n const [selectedAgent, setSelectedAgent] = useState<string | null>(null);\n const [saving, setSaving] = useState(false);\n const [transitioning, setTransitioning] = useState(false);\n const [visible, setVisible] = useState(true);\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>(undefined);\n\n useEffect(() => {\n getAllAgentModels()\n .then(setGroups)\n .finally(() => setLoading(false));\n }, []);\n\n const activeGroup = selectedAgent ? groups.find((g) => g.agentType === selectedAgent) : null;\n\n /** Animate step transition: fade out → change step → fade in */\n const transitionTo = useCallback((nextStep: SetupStep, setup?: () => void) => {\n setTransitioning(true);\n setVisible(false);\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => {\n setup?.();\n setStep(nextStep);\n requestAnimationFrame(() => {\n setVisible(true);\n setTransitioning(false);\n });\n }, 150);\n }, []);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n };\n }, []);\n\n /** Save agent+model selection and complete the wizard */\n const saveAndComplete = useCallback(\n async (agentType: string, model: string | null) => {\n setSaving(true);\n try {\n await updateAgentAndModel(agentType, model);\n onComplete();\n } finally {\n setSaving(false);\n }\n },\n [onComplete]\n );\n\n const handleAgentSelect = useCallback(\n (agentType: string) => {\n const group = groups.find((g) => g.agentType === agentType);\n if (group && group.models.length > 0) {\n transitionTo('select-model', () => {\n setSelectedAgent(agentType);\n });\n } else {\n // No models — save immediately\n saveAndComplete(agentType, null);\n }\n },\n [groups, transitionTo, saveAndComplete]\n );\n\n const handleModelSelect = useCallback(\n (model: string) => {\n if (!selectedAgent) return;\n saveAndComplete(selectedAgent, model);\n },\n [selectedAgent, saveAndComplete]\n );\n\n const handleBack = useCallback(() => {\n if (step === 'select-model') {\n transitionTo('select-agent', () => {\n setSelectedAgent(null);\n });\n }\n }, [step, transitionTo]);\n\n if (loading) {\n return (\n <div\n data-testid=\"welcome-agent-setup\"\n className={cn('flex flex-col items-center justify-center gap-3', className)}\n >\n <Loader2 className=\"text-muted-foreground h-4 w-4 animate-spin\" />\n <p className=\"text-muted-foreground text-xs\">Loading agents…</p>\n </div>\n );\n }\n\n const stepIndex = STEPS.indexOf(step);\n\n return (\n <div\n data-testid=\"welcome-agent-setup\"\n className={cn('flex flex-col items-center gap-4', WIZARD_WIDTH, className)}\n >\n {/* Section header */}\n <div className=\"flex flex-col items-center gap-1\">\n <div className=\"text-muted-foreground flex items-center gap-2\">\n {step === 'select-agent' && (\n <>\n <Bot className=\"h-3.5 w-3.5\" />\n <span className=\"text-[10px] font-semibold tracking-widest uppercase\">\n Choose your agent\n </span>\n </>\n )}\n {step === 'select-model' && activeGroup\n ? (() => {\n const AgentIcon = getAgentTypeIcon(activeGroup.agentType);\n return (\n <>\n <AgentIcon className=\"h-3.5 w-3.5\" />\n <span className=\"text-[10px] font-semibold tracking-widest uppercase\">\n {activeGroup.label} — Pick a model\n </span>\n </>\n );\n })()\n : null}\n </div>\n </div>\n\n {/* Step indicator */}\n <div className=\"flex w-full items-center gap-1\">\n {STEPS.map((s, i) => (\n <div\n key={s}\n className={cn(\n 'h-0.5 flex-1 rounded-full transition-colors duration-300',\n i <= stepIndex ? 'bg-foreground/60' : 'bg-muted'\n )}\n />\n ))}\n </div>\n\n {/* Step content — fixed dimensions, fade transition */}\n <div\n className={cn(\n 'flex w-full flex-col items-center transition-opacity duration-150',\n visible && !transitioning ? 'opacity-100' : 'opacity-0'\n )}\n >\n {/* Step 1: Agent selection */}\n {step === 'select-agent' && (\n <div data-testid=\"agent-list\" className=\"flex w-full flex-col gap-1.5\">\n {groups.map((group) => {\n const GroupIcon = getAgentTypeIcon(group.agentType);\n return (\n <button\n key={group.agentType}\n type=\"button\"\n disabled={saving}\n data-testid={`agent-option-${group.agentType}`}\n className=\"border-border hover:border-foreground/40 flex w-full cursor-pointer items-center gap-2.5 rounded-md border border-dashed px-4 py-2.5 transition-colors disabled:opacity-50\"\n onClick={() => handleAgentSelect(group.agentType)}\n >\n <GroupIcon className=\"text-muted-foreground h-4 w-4 shrink-0\" />\n <span className=\"flex-1 text-left text-xs font-medium\">{group.label}</span>\n <ChevronRight className=\"text-muted-foreground h-3 w-3\" />\n </button>\n );\n })}\n </div>\n )}\n\n {/* Step 2: Model selection */}\n {step === 'select-model' && activeGroup ? (\n <div data-testid=\"model-list\" className=\"flex w-full flex-col gap-1.5\">\n <button\n type=\"button\"\n disabled={saving}\n className=\"text-muted-foreground hover:text-foreground mb-0.5 flex cursor-pointer items-center gap-1 self-start text-[10px] font-medium transition-colors\"\n onClick={handleBack}\n >\n <ChevronLeft className=\"h-3 w-3\" />\n Back\n </button>\n <div className=\"flex max-h-48 w-full flex-col gap-1.5 overflow-y-auto\">\n {activeGroup.models.map((m) => {\n const meta = getModelMeta(m.id);\n return (\n <button\n key={m.id}\n type=\"button\"\n disabled={saving}\n data-testid={`model-option-${m.id}`}\n className=\"border-border hover:border-foreground/40 flex w-full cursor-pointer items-center gap-2.5 rounded-md border border-dashed px-4 py-2.5 text-left transition-colors disabled:opacity-50\"\n onClick={() => handleModelSelect(m.id)}\n >\n <div className=\"flex min-w-0 flex-1 flex-col gap-0.5\">\n <span className=\"text-xs font-medium\">\n {meta.displayName || m.displayName}\n </span>\n <span className=\"text-muted-foreground text-[10px] leading-tight\">\n {meta.description || m.description}\n </span>\n </div>\n <ChevronRight className=\"text-muted-foreground h-3 w-3 shrink-0\" />\n </button>\n );\n })}\n </div>\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useState, useCallback, useEffect } from 'react';\nimport {\n Github,\n Plus,\n TerminalSquare,\n Copy,\n Check,\n Loader2,\n CheckCircle2,\n AlertCircle,\n Terminal,\n} from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { pickFolder } from '@/components/common/add-repository-button/pick-folder';\nimport { isAgentSetupComplete } from '@/app/actions/agent-setup-flag';\nimport { checkAgentAuth } from '@/app/actions/check-agent-auth';\nimport type { AgentAuthStatus } from '@/app/actions/check-agent-auth';\nimport { WelcomeAgentSetup } from './welcome-agent-setup';\n\nexport interface ControlCenterEmptyStateProps {\n onRepositorySelect?: (path: string) => void;\n className?: string;\n}\n\nconst commands = ['cd ~/my-repo', 'shep feat new \"sleek dashboard\"'];\n\nexport function ControlCenterEmptyState({\n onRepositorySelect,\n className,\n}: ControlCenterEmptyStateProps) {\n const [copied, setCopied] = useState(false);\n const [loading, setLoading] = useState(false);\n const [agentReady, setAgentReady] = useState<boolean | null>(null);\n const [authStatus, setAuthStatus] = useState<AgentAuthStatus | null>(null);\n\n useEffect(() => {\n isAgentSetupComplete().then((done) => {\n setAgentReady(done);\n });\n }, []);\n\n // Background auth check — runs after agent setup is complete\n useEffect(() => {\n if (!agentReady) return;\n checkAgentAuth().then(setAuthStatus);\n }, [agentReady]);\n\n async function handlePickerClick() {\n if (loading) return;\n setLoading(true);\n try {\n const path = await pickFolder();\n if (path) {\n onRepositorySelect?.(path);\n }\n } finally {\n setLoading(false);\n }\n }\n\n const handleCopy = useCallback(async () => {\n await navigator.clipboard.writeText(commands.join('\\n'));\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }, []);\n\n const handleAgentSetupComplete = useCallback(() => {\n setAgentReady(true);\n }, []);\n\n const handleRetryAuth = useCallback(() => {\n setAuthStatus(null);\n checkAgentAuth().then(setAuthStatus);\n }, []);\n\n if (agentReady === null) return null;\n\n return (\n <div\n data-testid=\"control-center-empty-state\"\n className={cn('flex flex-col items-center justify-center', className)}\n >\n {/* Glassy container */}\n <div className=\"animate-in fade-in slide-in-from-bottom-2 w-96 rounded-2xl border border-white/30 bg-white/50 px-8 py-8 shadow-lg backdrop-blur-xl duration-300 dark:border-white/10 dark:bg-white/5\">\n <div className=\"flex flex-col items-center gap-4\">\n {/* Page header — inside card */}\n <div className=\"mb-2 text-center\">\n <h1 className=\"text-xl font-bold tracking-tight\">Features</h1>\n <p className=\"text-muted-foreground text-sm font-light\">Control Center</p>\n </div>\n\n {!agentReady ? (\n /* Step 1: Agent setup */\n <WelcomeAgentSetup onComplete={handleAgentSetupComplete} className=\"w-full\" />\n ) : (\n /* Step 2: Add repository (shown immediately after agent is configured) */\n <>\n {/* Background auth status banner */}\n <AgentAuthBanner status={authStatus} onRetry={handleRetryAuth} />\n\n {/* Repositories label */}\n <div className=\"text-muted-foreground flex items-center gap-2\">\n <Github className=\"h-3.5 w-3.5\" />\n <span className=\"text-[10px] font-semibold tracking-widest uppercase\">\n Repositories\n </span>\n </div>\n\n {/* Add Repository button */}\n <button\n type=\"button\"\n data-testid=\"empty-state-add-repository\"\n onClick={handlePickerClick}\n disabled={loading}\n className=\"border-border hover:border-foreground/40 flex w-full cursor-pointer items-center gap-2.5 rounded-md border border-dashed px-4 py-2.5 transition-colors disabled:cursor-wait disabled:opacity-50\"\n >\n {loading ? (\n <Loader2 className=\"text-muted-foreground h-4 w-4 animate-spin\" />\n ) : (\n <Plus className=\"text-muted-foreground h-4 w-4\" />\n )}\n <span className=\"text-xs font-medium\">\n {loading ? 'Opening…' : 'Add Repository'}\n </span>\n </button>\n\n {/* CLI divider */}\n <div className=\"text-muted-foreground flex items-center gap-2\">\n <div className=\"bg-border h-px w-10\" />\n <div className=\"flex items-center gap-1\">\n <TerminalSquare className=\"h-3 w-3\" />\n <span className=\"text-[10px] font-semibold tracking-widest uppercase\">\n Or via CLI\n </span>\n </div>\n <div className=\"bg-border h-px w-10\" />\n </div>\n\n {/* Code block */}\n <div\n data-testid=\"cli-code-block\"\n className=\"relative w-full rounded-md bg-zinc-900 px-3 py-2 font-mono text-[11px] text-zinc-300\"\n >\n <button\n type=\"button\"\n data-testid=\"cli-code-block-copy\"\n onClick={handleCopy}\n className=\"absolute top-2 right-2 cursor-pointer rounded p-1 text-zinc-500 transition-colors hover:bg-zinc-800 hover:text-zinc-300\"\n aria-label=\"Copy commands\"\n >\n {copied ? <Check className=\"h-3 w-3\" /> : <Copy className=\"h-3 w-3\" />}\n </button>\n <div className=\"space-y-0.5\">\n {commands.map((cmd) => (\n <div key={cmd} className=\"whitespace-nowrap\">\n <span className=\"text-zinc-500 select-none\">$ </span>\n <span>{cmd}</span>\n </div>\n ))}\n </div>\n </div>\n\n {/* Hint */}\n <p className=\"text-muted-foreground text-[10px]\">\n Feature will appear on canvas once created\n </p>\n </>\n )}\n </div>\n </div>\n </div>\n );\n}\n\n/** Compact auth status banner — shows checking/success/error states */\nfunction AgentAuthBanner({\n status,\n onRetry,\n}: {\n status: AgentAuthStatus | null;\n onRetry: () => void;\n}) {\n // Still checking — show subtle spinner\n if (!status) {\n return (\n <div className=\"bg-muted/50 flex w-full items-center gap-2 rounded-md px-3 py-1.5\">\n <Loader2 className=\"text-muted-foreground h-3 w-3 animate-spin\" />\n <span className=\"text-muted-foreground text-[10px]\">Checking agent setup…</span>\n </div>\n );\n }\n\n // All good — compact success, auto-fades\n if (status.installed && status.authenticated) {\n return (\n <div className=\"animate-in fade-in flex w-full items-center gap-2 rounded-md bg-emerald-500/10 px-3 py-1.5\">\n <CheckCircle2 className=\"h-3 w-3 text-emerald-600 dark:text-emerald-400\" />\n <span className=\"text-[10px] text-emerald-700 dark:text-emerald-300\">\n {status.label} ready\n </span>\n </div>\n );\n }\n\n // Not installed\n if (!status.installed) {\n return (\n <div className=\"flex w-full flex-col gap-2 rounded-md bg-amber-500/10 px-3 py-2\">\n <div className=\"flex items-center gap-2\">\n <AlertCircle className=\"h-3 w-3 text-amber-600 dark:text-amber-400\" />\n <span className=\"text-[10px] font-medium text-amber-700 dark:text-amber-300\">\n {status.label} not installed\n </span>\n </div>\n {status.binaryName ? (\n <div className=\"rounded bg-zinc-900 px-2 py-1 font-mono text-[10px] text-zinc-300\">\n <span className=\"text-zinc-500 select-none\">$ </span>\n npm install -g {status.binaryName}\n </div>\n ) : null}\n <button\n type=\"button\"\n onClick={onRetry}\n className=\"self-start text-[10px] font-medium text-amber-700 underline underline-offset-2 hover:text-amber-900 dark:text-amber-300 dark:hover:text-amber-100\"\n >\n Re-check\n </button>\n </div>\n );\n }\n\n // Installed but not authenticated\n return (\n <div className=\"flex w-full flex-col gap-2 rounded-md bg-amber-500/10 px-3 py-2\">\n <div className=\"flex items-center gap-2\">\n <AlertCircle className=\"h-3 w-3 text-amber-600 dark:text-amber-400\" />\n <span className=\"text-[10px] font-medium text-amber-700 dark:text-amber-300\">\n {status.label} needs authentication\n </span>\n </div>\n {status.authCommand ? (\n <div className=\"rounded bg-zinc-900 px-2 py-1 font-mono text-[10px] text-zinc-300\">\n <span className=\"text-zinc-500 select-none\">$ </span>\n {status.authCommand}\n </div>\n ) : null}\n <div className=\"flex items-center gap-2\">\n {status.binaryName ? (\n <button\n type=\"button\"\n data-testid=\"auth-banner-open-terminal\"\n onClick={async () => {\n try {\n const toolId =\n status.agentType === 'claude-code' ? 'claude-code' : status.agentType;\n await fetch(`/api/tools/${toolId}/launch`, { method: 'POST' });\n } catch {\n // best effort\n }\n }}\n className=\"flex items-center gap-1 rounded border border-amber-600/30 px-2 py-0.5 text-[10px] font-medium text-amber-700 transition-colors hover:bg-amber-500/10 dark:text-amber-300\"\n >\n <Terminal className=\"h-2.5 w-2.5\" />\n Open {status.label}\n </button>\n ) : null}\n <button\n type=\"button\"\n onClick={onRetry}\n className=\"text-[10px] font-medium text-amber-700 underline underline-offset-2 hover:text-amber-900 dark:text-amber-300 dark:hover:text-amber-100\"\n >\n Re-check\n </button>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useRouter, usePathname } from 'next/navigation';\nimport type { Edge, Viewport } from '@xyflow/react';\nimport { useReactFlow } from '@xyflow/react';\nimport { FeaturesCanvas } from '@/components/features/features-canvas';\nimport type { CanvasNodeType } from '@/components/features/features-canvas';\nimport type { FeatureNodeData } from '@/components/common/feature-node';\nimport type { RepositoryNodeData } from '@/components/common/repository-node';\nimport {\n useSidebarFeaturesContext,\n mapNodeStateToSidebarStatus,\n} from '@/hooks/sidebar-features-context';\nimport { useSelectedFeatureId } from '@/hooks/use-selected-feature-id';\nimport { useSoundAction } from '@/hooks/use-sound-action';\nimport { useDrawerCloseGuard } from '@/hooks/drawer-close-guard';\nimport { useViewportPersistence } from '@/hooks/use-viewport-persistence';\nimport { ControlCenterEmptyState } from './control-center-empty-state';\nimport { useControlCenterState } from './use-control-center-state';\n\nconst AUTO_FOCUS_OPTIONS = {\n maxZoom: 1.0,\n padding: 0.5,\n duration: 500,\n} as const;\n\nconst AUTO_FOCUS_DRAWER_DELAY_MS = 600;\n\ninterface ControlCenterInnerProps {\n initialNodes: CanvasNodeType[];\n initialEdges: Edge[];\n}\n\nexport function ControlCenterInner({ initialNodes, initialEdges }: ControlCenterInnerProps) {\n const router = useRouter();\n const pathname = usePathname();\n const selectedFeatureId = useSelectedFeatureId();\n const clickSound = useSoundAction('click');\n const { guardedNavigate } = useDrawerCloseGuard();\n const { fitView } = useReactFlow();\n const drawerTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const {\n defaultViewport,\n onMoveEnd: handleViewportChange,\n resetViewport,\n } = useViewportPersistence();\n\n const {\n nodes,\n edges,\n onNodesChange,\n handleConnect,\n handleAddRepository,\n handleDeleteFeature,\n handleRetryFeature,\n handleDeleteRepository,\n createFeatureNode,\n setCallbacks,\n } = useControlCenterState(initialNodes, initialEdges);\n\n // Publish sidebar features to context whenever feature node data changes\n const { setFeatures: setSidebarFeatures } = useSidebarFeaturesContext();\n\n const featureNodes = useMemo(() => nodes.filter((n) => n.type === 'featureNode'), [nodes]);\n\n const sidebarKey = useMemo(() => {\n return featureNodes\n .map((n) => {\n const d = n.data as FeatureNodeData;\n return `${d.featureId}:${d.state}:${d.name}`;\n })\n .sort()\n .join(',');\n }, [featureNodes]);\n\n useEffect(() => {\n const sidebarItems = featureNodes\n .map((n) => {\n const d = n.data as FeatureNodeData;\n const status = mapNodeStateToSidebarStatus(d.state);\n if (!status) return null;\n return {\n featureId: d.featureId,\n name: d.name,\n status,\n ...(d.startedAt != null && { startedAt: d.startedAt }),\n ...(d.runtime != null && { duration: d.runtime }),\n ...(d.agentType && { agentType: d.agentType }),\n ...(d.modelId && { modelId: d.modelId }),\n };\n })\n .filter(Boolean) as {\n featureId: string;\n name: string;\n status: 'action-needed' | 'in-progress' | 'done';\n startedAt?: number;\n duration?: string;\n agentType?: string;\n modelId?: string;\n }[];\n\n setSidebarFeatures(sidebarItems);\n }, [sidebarKey, featureNodes, setSidebarFeatures]);\n\n // ── URL-based navigation handlers ────────────────────────────────────\n\n const handleNodeClick = useCallback(\n (event: React.MouseEvent, node: CanvasNodeType) => {\n if (node.type === 'featureNode') {\n const data = node.data as FeatureNodeData;\n if (data.state === 'creating' || data.state === 'deleting') return;\n // Only navigate when the click lands on the card itself, not on\n // overlay buttons (delete, add) or pointer events leaking from dialogs.\n const target = event.target as HTMLElement;\n if (!target.closest('[data-testid=\"feature-node-card\"]')) return;\n guardedNavigate(() => {\n clickSound.play();\n router.push(`/feature/${data.featureId}`);\n });\n }\n },\n [router, clickSound, guardedNavigate]\n );\n\n const handleAddFeature = useCallback(() => {\n clickSound.play();\n router.push('/create');\n }, [router, clickSound]);\n\n const handleAddFeatureToRepo = useCallback(\n (repoNodeId: string) => {\n clickSound.play();\n const node = nodes.find((n) => n.id === repoNodeId);\n const repoPath = (node?.data as { repositoryPath?: string } | undefined)?.repositoryPath;\n if (repoPath) {\n router.push(`/create?repo=${encodeURIComponent(repoPath)}`);\n } else {\n router.push('/create');\n }\n },\n [nodes, router, clickSound]\n );\n\n const handleAddFeatureToFeature = useCallback(\n (featureNodeId: string) => {\n const featureId = featureNodeId.startsWith('feat-') ? featureNodeId.slice(5) : featureNodeId;\n // Find the repo node that owns this feature\n const repoEdge = edges.find((e) => e.target === featureNodeId);\n const repoNode = repoEdge ? nodes.find((n) => n.id === repoEdge.source) : null;\n const repoPath = (repoNode?.data as { repositoryPath?: string } | undefined)?.repositoryPath;\n\n clickSound.play();\n const params = new URLSearchParams();\n if (repoPath) params.set('repo', repoPath);\n params.set('parent', featureId);\n router.push(`/create?${params.toString()}`);\n },\n [nodes, edges, router, clickSound]\n );\n\n const handleRepositoryClick = useCallback(\n (nodeId: string) => {\n const node = nodes.find((n) => n.id === nodeId);\n if (node?.type === 'repositoryNode') {\n const data = node.data as RepositoryNodeData;\n if (data.id) {\n guardedNavigate(() => router.push(`/repository/${data.id}`));\n }\n }\n },\n [nodes, router, guardedNavigate]\n );\n\n // Close all drawers — navigate back to root\n const handleClearDrawers = useCallback(() => {\n if (pathname !== '/') {\n guardedNavigate(() => router.push('/'));\n }\n }, [router, pathname, guardedNavigate]);\n\n // Listen for global \"add repository\" events from the top bar button\n useEffect(() => {\n const handler = (e: Event) => {\n const path = (e as CustomEvent<{ path: string }>).detail.path;\n const { wasEmpty, repoPath } = handleAddRepository(path);\n\n if (wasEmpty) {\n // Wait for next render so the repo node exists in the DOM, then auto-focus\n setTimeout(() => {\n fitView(AUTO_FOCUS_OPTIONS);\n\n // Open the create-feature drawer after the fitView animation completes\n drawerTimerRef.current = setTimeout(() => {\n guardedNavigate(() => router.push(`/create?repo=${encodeURIComponent(repoPath)}`));\n }, AUTO_FOCUS_DRAWER_DELAY_MS);\n }, 0);\n }\n };\n window.addEventListener('shep:add-repository', handler);\n return () => {\n window.removeEventListener('shep:add-repository', handler);\n if (drawerTimerRef.current != null) {\n clearTimeout(drawerTimerRef.current);\n }\n };\n }, [handleAddRepository, fitView, guardedNavigate, router]);\n\n // Listen for create events from the create drawer (with real feature ID from server)\n useEffect(() => {\n const handler = (e: Event) => {\n const detail = (\n e as CustomEvent<{\n featureId: string;\n name: string;\n description?: string;\n repositoryPath: string;\n parentId?: string;\n }>\n ).detail;\n\n // When a parentId is provided, connect to the parent feature node\n // via a dependency edge instead of the repo node.\n if (detail.parentId) {\n const parentNodeId = `feat-${detail.parentId}`;\n createFeatureNode(\n parentNodeId,\n {\n state: 'creating',\n featureId: detail.featureId,\n name: detail.name,\n description: detail.description,\n repositoryPath: detail.repositoryPath,\n },\n 'dependencyEdge'\n );\n return;\n }\n\n // Find the repo node to connect to\n const repoNode = nodes.find(\n (n) =>\n n.type === 'repositoryNode' &&\n (n.data as { repositoryPath?: string }).repositoryPath === detail.repositoryPath\n );\n\n createFeatureNode(repoNode?.id ?? null, {\n state: 'running',\n featureId: detail.featureId,\n name: detail.name,\n description: detail.description,\n repositoryPath: detail.repositoryPath,\n });\n };\n window.addEventListener('shep:feature-created', handler);\n return () => window.removeEventListener('shep:feature-created', handler);\n }, [nodes, createFeatureNode]);\n\n // Listen for delete requests from the feature drawer (fires when the user\n // confirms delete inside the drawer). Delegates to handleDeleteFeature so\n // the canvas gets optimistic state, mutation guard, and node removal.\n useEffect(() => {\n const handler = (e: Event) => {\n const { featureId, cleanup, cascadeDelete } = (\n e as CustomEvent<{ featureId: string; cleanup?: boolean; cascadeDelete?: boolean }>\n ).detail;\n handleDeleteFeature(featureId, cleanup, cascadeDelete);\n };\n window.addEventListener('shep:feature-delete-requested', handler);\n return () => window.removeEventListener('shep:feature-delete-requested', handler);\n }, [handleDeleteFeature]);\n\n // Wire callbacks into derived node data (via ref — no re-render).\n useEffect(() => {\n setCallbacks({\n onNodeAction: handleAddFeatureToFeature,\n onFeatureDelete: handleDeleteFeature,\n onRetryFeature: handleRetryFeature,\n onRepositoryAdd: handleAddFeatureToRepo,\n onRepositoryClick: handleRepositoryClick,\n onRepositoryDelete: handleDeleteRepository,\n });\n }, [\n setCallbacks,\n handleAddFeatureToFeature,\n handleDeleteFeature,\n handleRetryFeature,\n handleAddFeatureToRepo,\n handleRepositoryClick,\n handleDeleteRepository,\n ]);\n\n const handleMoveEnd = useCallback(\n (_event: unknown, viewport: Viewport) => {\n handleViewportChange(viewport);\n },\n [handleViewportChange]\n );\n\n const hasRepositories = nodes.some((n) => n.type === 'repositoryNode');\n\n // Debounced latch: prevent empty-state flicker during brief reconcile gaps\n // (e.g. stale poll momentarily drops repos), but allow the empty state to\n // return after a real delete once repos stay gone past the debounce window.\n const [showCanvas, setShowCanvas] = useState(hasRepositories);\n const latchTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (hasRepositories) {\n // Repos exist — show canvas immediately, cancel any pending unlatch\n if (latchTimerRef.current) {\n clearTimeout(latchTimerRef.current);\n latchTimerRef.current = null;\n }\n setShowCanvas(true);\n } else if (showCanvas) {\n // Repos gone — wait before showing empty state (debounce stale polls)\n latchTimerRef.current = setTimeout(() => {\n setShowCanvas(false);\n latchTimerRef.current = null;\n }, 500);\n }\n return () => {\n if (latchTimerRef.current) clearTimeout(latchTimerRef.current);\n };\n }, [hasRepositories, showCanvas]);\n\n // Pulse the \"+\" button when there's a single repo with no features and the\n // create-feature drawer is not open — draws attention to the next action.\n const isCreateDrawerOpen = pathname.startsWith('/create');\n const displayNodes = useMemo(() => {\n const repoNodes = nodes.filter((n) => n.type === 'repositoryNode');\n const hasFeatures = nodes.some((n) => n.type === 'featureNode');\n const shouldPulse = repoNodes.length === 1 && !hasFeatures && !isCreateDrawerOpen;\n\n if (!shouldPulse) return nodes;\n\n return nodes.map((n) =>\n n.type === 'repositoryNode' ? { ...n, data: { ...n.data, pulseAdd: true } } : n\n );\n }, [nodes, isCreateDrawerOpen]);\n\n return (\n <FeaturesCanvas\n nodes={showCanvas ? displayNodes : []}\n edges={showCanvas ? edges : []}\n selectedFeatureId={selectedFeatureId}\n defaultViewport={defaultViewport}\n onNodesChange={onNodesChange}\n onConnect={handleConnect}\n onAddFeature={handleAddFeature}\n onNodeClick={handleNodeClick}\n onPaneClick={handleClearDrawers}\n onMoveEnd={handleMoveEnd}\n onResetViewport={resetViewport}\n emptyState={<ControlCenterEmptyState onRepositorySelect={handleAddRepository} />}\n />\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4',\n key: 'tonef',\n },\n ],\n ['path', { d: 'M9 18c-4.51 2-5-2-7-2', key: '9comsn' }],\n];\n\n/**\n * @component @name Github\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgMjJ2LTRhNC44IDQuOCAwIDAgMC0xLTMuNWMzIDAgNi0yIDYtNS41LjA4LTEuMjUtLjI3LTIuNDgtMS0zLjUuMjgtMS4xNS4yOC0yLjM1IDAtMy41IDAgMC0xIDAtMyAxLjUtMi42NC0uNS01LjM2LS41LTggMEM2IDIgNSAyIDUgMmMtLjMgMS4xNS0uMyAyLjM1IDAgMy41QTUuNDAzIDUuNDAzIDAgMCAwIDQgOWMwIDMuNSAzIDUuNSA2IDUuNS0uMzkuNDktLjY4IDEuMDUtLjg1IDEuNjUtLjE3LjYtLjIyIDEuMjMtLjE1IDEuODV2NCIgLz4KICA8cGF0aCBkPSJNOSAxOGMtNC41MSAyLTUtMi03LTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/github\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n * @deprecated Brand icons have been deprecated and are due to be removed, please refer to https://github.com/lucide-icons/lucide/issues/670. We recommend using https://simpleicons.org/?q=github instead. This icon will be removed in v1.0\n */\nconst Github = createLucideIcon('github', __iconNode);\n\nexport default Github;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm7 11 2-2-2-2', key: '1lz0vl' }],\n ['path', { d: 'M11 13h4', key: '1p7l4v' }],\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2', key: '1m3agn' }],\n];\n\n/**\n * @component @name SquareTerminal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNyAxMSAyLTItMi0yIiAvPgogIDxwYXRoIGQ9Ik0xMSAxM2g0IiAvPgogIDxyZWN0IHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgeD0iMyIgeT0iMyIgcng9IjIiIHJ5PSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/square-terminal\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst SquareTerminal = createLucideIcon('square-terminal', __iconNode);\n\nexport default SquareTerminal;\n"],"names":[],"mappings":"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","ignoreList":[0,21,22]}