trybeacon 0.1.62 → 0.1.64

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 (130) hide show
  1. package/.claude-plugin/plugin.json +19 -0
  2. package/.next/BUILD_ID +1 -1
  3. package/.next/app-path-routes-manifest.json +11 -11
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/required-server-files.js +1 -1
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_global-error.html +1 -1
  10. package/.next/server/app/_global-error.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/_not-found.html +1 -1
  19. package/.next/server/app/_not-found.rsc +2 -2
  20. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  21. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  23. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/.next/server/app/api/share/create/route.js +1 -1
  27. package/.next/server/app/api/share/route.js +1 -1
  28. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  29. package/.next/server/app/docs.html +1 -1
  30. package/.next/server/app/docs.rsc +3 -3
  31. package/.next/server/app/docs.segments/_full.segment.rsc +3 -3
  32. package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  33. package/.next/server/app/docs.segments/_index.segment.rsc +2 -2
  34. package/.next/server/app/docs.segments/_tree.segment.rsc +3 -3
  35. package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +2 -2
  36. package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  37. package/.next/server/app/feedback/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/feedback.html +1 -1
  39. package/.next/server/app/feedback.rsc +2 -2
  40. package/.next/server/app/feedback.segments/_full.segment.rsc +2 -2
  41. package/.next/server/app/feedback.segments/_head.segment.rsc +1 -1
  42. package/.next/server/app/feedback.segments/_index.segment.rsc +2 -2
  43. package/.next/server/app/feedback.segments/_tree.segment.rsc +2 -2
  44. package/.next/server/app/feedback.segments/feedback/__PAGE__.segment.rsc +1 -1
  45. package/.next/server/app/feedback.segments/feedback.segment.rsc +1 -1
  46. package/.next/server/app/help/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/help.html +1 -1
  48. package/.next/server/app/help.rsc +2 -2
  49. package/.next/server/app/help.segments/_full.segment.rsc +2 -2
  50. package/.next/server/app/help.segments/_head.segment.rsc +1 -1
  51. package/.next/server/app/help.segments/_index.segment.rsc +2 -2
  52. package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
  53. package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
  54. package/.next/server/app/help.segments/help.segment.rsc +1 -1
  55. package/.next/server/app/index.html +1 -1
  56. package/.next/server/app/index.rsc +4 -4
  57. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  58. package/.next/server/app/index.segments/_full.segment.rsc +4 -4
  59. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  60. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  61. package/.next/server/app/index.segments/_tree.segment.rsc +3 -3
  62. package/.next/server/app/map/page.js +1 -1
  63. package/.next/server/app/map/page.js.nft.json +1 -1
  64. package/.next/server/app/map/page_client-reference-manifest.js +1 -1
  65. package/.next/server/app/page.js +2 -2
  66. package/.next/server/app/page.js.nft.json +1 -1
  67. package/.next/server/app/page_client-reference-manifest.js +1 -1
  68. package/.next/server/app/plan/page.js +2 -2
  69. package/.next/server/app/plan/page.js.nft.json +1 -1
  70. package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
  71. package/.next/server/app/s/[token]/page.js +1 -1
  72. package/.next/server/app/s/[token]/page.js.nft.json +1 -1
  73. package/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/settings/page.js +1 -1
  75. package/.next/server/app/settings/page.js.nft.json +1 -1
  76. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app-paths-manifest.json +11 -11
  78. package/.next/server/chunks/2994.js +2 -0
  79. package/.next/server/chunks/3284.js +154 -0
  80. package/.next/server/chunks/4384.js +1 -0
  81. package/.next/server/chunks/5719.js +1 -0
  82. package/.next/server/middleware-build-manifest.js +1 -1
  83. package/.next/server/pages/404.html +1 -1
  84. package/.next/server/pages/500.html +1 -1
  85. package/.next/server/server-reference-manifest.js +1 -1
  86. package/.next/server/server-reference-manifest.json +1 -1
  87. package/.next/static/chunks/{2980-07afca8f83adfcea.js → 3415-05007c2bd98125c7.js} +1 -1
  88. package/.next/static/chunks/{3021-ed52ee7b3f02e2cd.js → 5957-83f611fcd5a08b45.js} +1 -1
  89. package/.next/static/chunks/766-242213d211df0afd.js +1 -0
  90. package/.next/static/chunks/{5847-9e0d59eaaa2ed4e0.js → 8915-fa61a860c63a7c85.js} +3 -3
  91. package/.next/static/chunks/app/map/{page-756355c41278dd07.js → page-491d4767dbc4e954.js} +1 -1
  92. package/.next/static/chunks/app/page-d08947a671077569.js +1 -0
  93. package/.next/static/chunks/app/plan/{page-71925c6a12eb1180.js → page-a90e0981499546e3.js} +1 -1
  94. package/.next/static/chunks/app/s/[token]/{page-6d7e15718d081a4a.js → page-5c8f260e75758b02.js} +1 -1
  95. package/.next/static/chunks/app/settings/page-7e176d120b1effa9.js +1 -0
  96. package/.next/static/css/490566ec68a48e1a.css +1 -0
  97. package/.next/static/css/53e84df868515cf7.css +1 -0
  98. package/.next/trace +42 -42
  99. package/.next/trace-build +1 -1
  100. package/LICENSE +201 -0
  101. package/README.md +39 -8
  102. package/bun.lock +2274 -0
  103. package/dist/bin/beacon.js +14 -13
  104. package/dist/bin/boot.js +4 -0
  105. package/dist/bin/doctor.js +38 -30
  106. package/dist/bin/hook.js +34 -26
  107. package/dist/bin/mcp.js +40 -32
  108. package/dist/bin/plan.js +35 -27
  109. package/dist/bin/uninstall.js +37 -29
  110. package/dist/lib/assets.js +10 -2
  111. package/dist/lib/codex-install.js +35 -27
  112. package/dist/lib/global-install.js +34 -26
  113. package/package.json +16 -3
  114. package/plugin/commands/beacon.md +11 -0
  115. package/plugin/hooks.json +70 -0
  116. package/plugin/mcp.json +10 -0
  117. package/plugin/skills/beacon-init/SKILL.md +47 -0
  118. package/plugin/skills/beacon-plan/SKILL.md +48 -0
  119. package/plugin/skills/beacon-refresh/SKILL.md +47 -0
  120. package/.next/server/chunks/1988.js +0 -154
  121. package/.next/server/chunks/6192.js +0 -1
  122. package/.next/server/chunks/8035.js +0 -1
  123. package/.next/server/chunks/8846.js +0 -2
  124. package/.next/static/chunks/6638-4e53879181b1df75.js +0 -1
  125. package/.next/static/chunks/app/page-a229992616b3a3de.js +0 -1
  126. package/.next/static/chunks/app/settings/page-323bfcf32d1e7fc8.js +0 -1
  127. package/.next/static/css/5a3abd6d2c9dd5a8.css +0 -1
  128. package/.next/static/css/e63457bec0b3ee27.css +0 -1
  129. /package/.next/static/{dFKft-kT3vVI6erpmcYuN → qoq7TibU72duRZATxeVnT}/_buildManifest.js +0 -0
  130. /package/.next/static/{dFKft-kT3vVI6erpmcYuN → qoq7TibU72duRZATxeVnT}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";exports.id=4384,exports.ids=[4384],exports.modules={526:(a,b,c)=>{},1110:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{HQ:()=>o,Oz:()=>p,cl:()=>t,hY:()=>r,hg:()=>s,pJ:()=>u,t3:()=>q});var e=c(95349),f=c(42650),g=c(39321),h=c(62896),i=c(22443),j=c(16189),k=c(3173),l=c(89337),m=a([h,j,k]);function n(){(0,f.revalidatePath)("/map")}async function o(a){let b=await (0,j.n)(()=>(0,k.RM)(a));return n(),b}async function p(a,b){let c=await (0,j.n)(()=>(0,k.OK)(a,b));return n(),c}async function q(a,b){let c=await (0,j.n)(()=>(0,k.Pj)(a,b));return n(),c}async function r(a){let b=await (0,j.n)(()=>(0,k.Vp)(a));return n(),b}async function s(a){let b=await (0,j.n)(()=>(0,k.x$)(a));return n(),b}async function t(a){await (0,j.n)(()=>(0,k.AC)(a)),n()}async function u(a){await (0,j.n)(async()=>{await h.db.update(i.node).set({source:"MANUAL"}).where((0,g.eq)(i.node.id,a))}),n()}[h,j,k]=m.then?(await m)():m,(0,l.D)([o,p,q,r,s,t,u]),(0,e.A)(o,"405fed96e8fcd3210b2652544f09f4a2feb081048d",null),(0,e.A)(p,"60d93c8f776ebe01b1bbbb5ba3a35321be89079edc",null),(0,e.A)(q,"60675d38e74d058b2494932b394bc88c3530a6b549",null),(0,e.A)(r,"40ced2ac4888b0b81a390ab192c89e52595cb6f3f8",null),(0,e.A)(s,"40362f552cace67395cd15d7423dd90e76f034d780",null),(0,e.A)(t,"40efecbfda0d6d6e3e7cc8b8b8302d5a8aa43e4fcd",null),(0,e.A)(u,"40b24a1be90ea3de2491d58fc9bc46309c5721024c",null),d()}catch(a){d(a)}})},1229:(a,b,c)=>{c.d(b,{x:()=>g});var d=c(48249),e=c(56024),f=c(55030);function g(){let a="!h-2 !w-2 !border-0 !bg-zinc-400";return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(e.h7,{type:"target",position:f.yX.Top,id:"tt",className:a}),(0,d.jsx)(e.h7,{type:"source",position:f.yX.Top,id:"st",className:a}),(0,d.jsx)(e.h7,{type:"target",position:f.yX.Right,id:"tr",className:a}),(0,d.jsx)(e.h7,{type:"source",position:f.yX.Right,id:"sr",className:a}),(0,d.jsx)(e.h7,{type:"target",position:f.yX.Bottom,id:"tb",className:a}),(0,d.jsx)(e.h7,{type:"source",position:f.yX.Bottom,id:"sb",className:a}),(0,d.jsx)(e.h7,{type:"target",position:f.yX.Left,id:"tl",className:a}),(0,d.jsx)(e.h7,{type:"source",position:f.yX.Left,id:"sl",className:a})]})}},2367:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(62896),e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},3173:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AC:()=>p,OK:()=>l,Pj:()=>m,RM:()=>k,Vp:()=>n,x$:()=>o});var e=c(39321),f=c(62896),g=c(22443),h=c(8292),i=c(7913),j=a([f,h]);async function k(a){let b=i.gY.parse(a),c="ARCHITECTURE"===b.view?"REBUILD":"PENDING",[d]=await f.db.insert(g.node).values({...b.id?{id:b.id}:{},view:b.view,kind:b.kind??"FEATURE",title:b.title,cluster:b.cluster??null,layer:b.layer??null,role:b.role??null,plain:b.plain??null,parentId:b.parentId??null,status:b.status??c,priority:b.priority??2,x:b.x??0,y:b.y??0,sourceRef:b.sourceRef??null}).returning();return d}async function l(a,b){let c=i.$Y.parse(b),[d]=await f.db.update(g.node).set(c).where((0,e.eq)(g.node.id,a)).returning();return void 0!==c.status&&await (0,h.Nh)(a),d}async function m(a,b){let c=i.M7.parse(b),[d]=await f.db.update(g.node).set({status:c}).where((0,e.eq)(g.node.id,a)).returning();return await (0,h.Nh)(a),d}async function n(a){let[b]=await f.db.update(g.node).set({status:"DEPRIORITIZED",priority:3}).where((0,e.eq)(g.node.id,a)).returning();return await (0,h.Nh)(a),b}async function o(a){let[b]=await f.db.update(g.node).set({status:"CANCELLED"}).where((0,e.eq)(g.node.id,a)).returning();return await (0,h.Nh)(a),b}async function p(a){let[b]=await f.db.delete(g.node).where((0,e.eq)(g.node.id,a)).returning();return b}[f,h]=j.then?(await j)():j,d()}catch(a){d(a)}})},4120:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(62896);c(22443);var e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},4963:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(23873),e=c(62896);c(22443);var f=c(2367),g=c(29303),h=c(56258);c(50320),c(66625);var i=c(76174),j=a([e,f,g,h,i]);[e,f,g,h,i]=j.then?(await j)():j,d.Ik({tables:d.YO(d.Ik({name:d.Yj().trim().min(1),domain:d.Yj().nullish(),description:d.Yj().nullish(),columns:d.YO(d.Ik({name:d.Yj().trim().min(1),type:d.Yj().trim().min(1),isPk:d.zM().optional(),isFk:d.zM().optional(),nullable:d.zM().optional(),note:d.Yj().nullish()})).default([])})).default([]),relations:d.YO(d.Ik({fromTable:d.Yj(),fromColumn:d.Yj(),toTable:d.Yj(),toColumn:d.Yj(),label:d.Yj().nullish()})).default([]),endpoints:d.YO(d.Ik({method:d.Yj().trim().min(1),path:d.Yj().trim().min(1),domain:d.Yj().nullish(),description:d.Yj().nullish(),uses:d.YO(d.Ik({table:d.Yj(),access:d.Yj().default("read")})).default([])})).default([])}),b()}catch(a){b(a)}})},7913:(a,b,c)=>{c.d(b,{$Y:()=>j,M7:()=>h,gY:()=>i});var d=c(23873);let e=d.k5(["ROADMAP","ARCHITECTURE"]),f=d.k5(["FEATURE","BUG"]),g=d.k5(["frontend","backend","fullstack"]);d.k5(["user","agent"]);let h=d.k5(["PENDING","IN_PROGRESS","DONE","BLOCKED","CANCELLED","DEPRIORITIZED","KEEP","REBUILD","REPLACE","DROP"]);d.k5(["DEPENDS","CONTAINS","RELATES","REPLACES"]);let i=d.Ik({id:d.Yj().trim().min(1).max(64).optional(),view:e,kind:f.optional(),title:d.Yj().trim().min(1).max(200),cluster:d.Yj().trim().max(64).nullish(),layer:g.nullish(),role:d.Yj().trim().max(500).nullish(),plain:d.Yj().trim().max(2e4).nullish(),parentId:d.Yj().nullish(),status:h.optional(),priority:d.ai().int().min(0).max(3).optional(),x:d.ai().optional(),y:d.ai().optional(),sourceRef:d.Yj().trim().max(300).nullish()}),j=d.Ik({title:d.Yj().trim().min(1).max(200).optional(),kind:f.optional(),role:d.Yj().trim().max(500).nullish(),plain:d.Yj().trim().max(2e4).nullish(),cluster:d.Yj().trim().max(64).nullish(),layer:g.nullish(),status:h.optional(),priority:d.ai().int().min(0).max(3).optional(),sourceRef:d.Yj().trim().max(300).nullish()});d.Ik({x:d.ai(),y:d.ai()}),d.Ik({fromId:d.Yj().min(1),toId:d.Yj().min(1),kind:d.k5(["DEPENDS","RELATES","REPLACES"]).optional(),label:d.Yj().trim().max(80).nullish(),sourceHandle:d.Yj().trim().max(16).nullish(),targetHandle:d.Yj().trim().max(16).nullish()})},8292:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Nh:()=>o});var e=c(23873),f=c(39321),g=c(62896),h=c(22443),i=c(4963),j=c(56258);c(526),c(58149),c(47446);var k=c(10556);c(47162),c(27840),c(66949);var l=c(3173);c(50042);var m=c(4120),n=a([g,i,j,k,l,m]);[g,i,j,k,l,m]=n.then?(await n)():n;let p=new Set(["DONE","CANCELLED","DEPRIORITIZED"]),q=new Set(["IN_PROGRESS","BLOCKED"]),r=new Set(["CANCELLED","DEPRIORITIZED"]);async function o(a){let b=new Set,c=a;for(;!b.has(c);){var d;b.add(c);let a=await g.db.query.node.findFirst({where:(a,{eq:b})=>b(a.id,c),columns:{parentId:!0,view:!0}});if(!a?.parentId||"ROADMAP"!==a.view)return;let e=await g.db.query.node.findFirst({where:(b,{eq:c})=>c(b.id,a.parentId),columns:{id:!0,status:!0,view:!0}});if(!e||"ROADMAP"!==e.view||r.has(e.status))return;let i=(d=(await g.db.query.node.findMany({where:(a,{eq:b})=>b(a.parentId,e.id),columns:{status:!0}})).map(a=>a.status)).length?d.every(a=>p.has(a))?"DONE":d.some(a=>q.has(a))?"IN_PROGRESS":"PENDING":"PENDING";if(e.status===i)return;await g.db.update(h.node).set({status:i}).where((0,f.eq)(h.node.id,e.id)),c=e.id}}e.Ik({title:e.Yj().trim().min(1),domain:e.Yj().trim().min(1),role:e.Yj().nullish(),plain:e.Yj().nullish(),layer:e.Yj().nullish(),status:e.Yj().nullish(),files:e.YO(e.Yj()).optional(),depends:e.YO(e.Yj()).optional(),bugs:e.YO(e.Ik({note:e.Yj().trim().min(1).max(2e3)})).optional()}),d()}catch(a){d(a)}})},10556:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(62896);c(22443),c(47446);var e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},16189:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{n:()=>i});var e=c(80941),f=c(62896),g=a([f]);async function h(a){if(a)return void await (0,e.kO)(a);let b=(0,e.UP)();b?await (0,e.kO)(b):await (0,f.e$)()}async function i(a){let b=null;try{let{cookies:a}=await c.e(6042).then(c.bind(c,36042)),d=await a(),f=d.get(e.Dk)?.value??null;b=f&&(0,e.K4)(f)?f:null}catch{}return await h(b),(0,e.X_)(b,a)}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},22443:(a,b,c)=>{c.r(b),c.d(b,{appSetting:()=>E,boardAnnotation:()=>r,bugFlag:()=>s,codeFile:()=>B,codeFileEdge:()=>C,dbColumn:()=>u,dbRelation:()=>v,dbTable:()=>t,draftColumn:()=>z,draftRelation:()=>A,draftTable:()=>y,edge:()=>o,endpoint:()=>w,endpointTable:()=>x,node:()=>l,nodeFile:()=>m,nodeTags:()=>p,note:()=>q,planContract:()=>H,projectMeta:()=>F,syncState:()=>D,tag:()=>n,workspaceFlag:()=>G});var d=c(16996),e=c(55402),f=c(76003),g=c(24267),h=c(3161),i=c(80822),j=c(96508),k=c(70202);let l=(0,d.D)("Node",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),view:(0,e.Qq)().notNull(),kind:(0,e.Qq)().default("FEATURE").notNull(),cluster:(0,e.Qq)(),layer:(0,e.Qq)(),title:(0,e.Qq)().notNull(),role:(0,e.Qq)(),plain:(0,e.Qq)(),status:(0,e.Qq)().default("PENDING").notNull(),priority:(0,f.nd)().default(2).notNull(),progress:(0,f.nd)().default(0).notNull(),x:(0,g.x)().default(0).notNull(),y:(0,g.x)().default(0).notNull(),sourceRef:(0,e.Qq)(),externalId:(0,e.Qq)(),source:(0,e.Qq)().default("MANUAL").notNull(),planId:(0,e.Qq)(),parentId:(0,e.Qq)(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.Pe)("Node_cluster_idx").on(a.cluster),(0,h.Pe)("Node_parentId_idx").on(a.parentId),(0,h.Pe)("Node_view_idx").on(a.view),(0,i.mt)(()=>({columns:[a.parentId],foreignColumns:[a.id],name:"Node_parentId_Node_id_fk"})).onUpdate("cascade").onDelete("cascade")]),m=(0,d.D)("NodeFile",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),nodeId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),path:(0,e.Qq)().notNull()},a=>[(0,h.GL)("NodeFile_nodeId_path_key").on(a.nodeId,a.path),(0,h.Pe)("NodeFile_nodeId_idx").on(a.nodeId)]),n=(0,d.D)("Tag",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),label:(0,e.Qq)().notNull(),color:(0,e.Qq)()},a=>[(0,h.GL)("Tag_label_key").on(a.label)]),o=(0,d.D)("Edge",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),fromId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),toId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),kind:(0,e.Qq)().default("DEPENDS").notNull(),label:(0,e.Qq)(),sourceHandle:(0,e.Qq)(),targetHandle:(0,e.Qq)()},a=>[(0,h.GL)("Edge_fromId_toId_kind_key").on(a.fromId,a.toId,a.kind),(0,h.Pe)("Edge_toId_idx").on(a.toId),(0,h.Pe)("Edge_fromId_idx").on(a.fromId)]),p=(0,d.D)("_NodeTags",{a:(0,e.Qq)("A").notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),b:(0,e.Qq)("B").notNull().references(()=>n.id,{onDelete:"cascade",onUpdate:"cascade"})},a=>[(0,h.GL)("_NodeTags_AB_unique").on(a.a,a.b),(0,h.Pe)("_NodeTags_B_index").on(a.b)]),q=(0,d.D)("Note",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),title:(0,e.Qq)().default("Untitled").notNull(),body:(0,e.Qq)().default("").notNull(),ord:(0,g.x)().default(0).notNull(),pinned:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.Pe)("Note_updatedAt_idx").on(a.updatedAt)]),r=(0,d.D)("BoardAnnotation",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),targetKind:(0,e.Qq)().notNull(),targetId:(0,e.Qq)().notNull(),columnName:(0,e.Qq)(),body:(0,e.Qq)().default("").notNull(),x:(0,g.x)(),y:(0,g.x)(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.Pe)("BoardAnnotation_target_idx").on(a.targetId)]),s=(0,d.D)("BugFlag",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),nodeId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),by:(0,e.Qq)().notNull(),note:(0,e.Qq)().notNull(),resolvedAt:(0,f.nd)({mode:"timestamp_ms"}),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},a=>[(0,h.Pe)("BugFlag_nodeId_idx").on(a.nodeId)]),t=(0,d.D)("DbTable",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),name:(0,e.Qq)().notNull(),domain:(0,e.Qq)(),description:(0,e.Qq)(),source:(0,e.Qq)().default("MANUAL").notNull(),planId:(0,e.Qq)(),x:(0,g.x)().default(0).notNull(),y:(0,g.x)().default(0).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.Pe)("DbTable_domain_idx").on(a.domain),(0,h.GL)("DbTable_name_key").on(a.name)]),u=(0,d.D)("DbColumn",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),tableId:(0,e.Qq)().notNull().references(()=>t.id,{onDelete:"cascade",onUpdate:"cascade"}),name:(0,e.Qq)().notNull(),type:(0,e.Qq)().notNull(),isPk:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),isFk:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),nullable:(0,f.nd)({mode:"boolean"}).default(!0).notNull(),note:(0,e.Qq)(),ord:(0,f.nd)().default(0).notNull()},a=>[(0,h.GL)("DbColumn_tableId_name_key").on(a.tableId,a.name),(0,h.Pe)("DbColumn_tableId_idx").on(a.tableId)]),v=(0,d.D)("DbRelation",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),fromTableId:(0,e.Qq)().notNull().references(()=>t.id,{onDelete:"cascade",onUpdate:"cascade"}),toTableId:(0,e.Qq)().notNull().references(()=>t.id,{onDelete:"cascade",onUpdate:"cascade"}),fromColumn:(0,e.Qq)().notNull(),toColumn:(0,e.Qq)().notNull(),label:(0,e.Qq)()},a=>[(0,h.Pe)("DbRelation_toTableId_idx").on(a.toTableId),(0,h.Pe)("DbRelation_fromTableId_idx").on(a.fromTableId)]),w=(0,d.D)("Endpoint",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),method:(0,e.Qq)().notNull(),path:(0,e.Qq)().notNull(),domain:(0,e.Qq)(),description:(0,e.Qq)(),source:(0,e.Qq)().default("MANUAL").notNull(),planId:(0,e.Qq)(),x:(0,g.x)().default(0).notNull(),y:(0,g.x)().default(0).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.GL)("Endpoint_method_path_key").on(a.method,a.path),(0,h.Pe)("Endpoint_domain_idx").on(a.domain)]),x=(0,d.D)("EndpointTable",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),endpointId:(0,e.Qq)().notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),tableId:(0,e.Qq)().notNull().references(()=>t.id,{onDelete:"cascade",onUpdate:"cascade"}),access:(0,e.Qq)().default("read").notNull()},a=>[(0,h.GL)("EndpointTable_endpointId_tableId_key").on(a.endpointId,a.tableId),(0,h.Pe)("EndpointTable_tableId_idx").on(a.tableId)]),y=(0,d.D)("DraftTable",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),name:(0,e.Qq)().notNull(),domain:(0,e.Qq)(),description:(0,e.Qq)(),x:(0,g.x)().default(0).notNull(),y:(0,g.x)().default(0).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},a=>[(0,h.GL)("DraftTable_name_key").on(a.name)]),z=(0,d.D)("DraftColumn",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),tableId:(0,e.Qq)().notNull().references(()=>y.id,{onDelete:"cascade",onUpdate:"cascade"}),name:(0,e.Qq)().notNull(),type:(0,e.Qq)().notNull(),isPk:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),isFk:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),nullable:(0,f.nd)({mode:"boolean"}).default(!0).notNull(),note:(0,e.Qq)(),ord:(0,f.nd)().default(0).notNull()},a=>[(0,h.Pe)("DraftColumn_tableId_idx").on(a.tableId)]),A=(0,d.D)("DraftRelation",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),fromTableId:(0,e.Qq)().notNull().references(()=>y.id,{onDelete:"cascade",onUpdate:"cascade"}),toTableId:(0,e.Qq)().notNull().references(()=>y.id,{onDelete:"cascade",onUpdate:"cascade"}),fromColumn:(0,e.Qq)().notNull(),toColumn:(0,e.Qq)().notNull(),label:(0,e.Qq)()},a=>[(0,h.Pe)("DraftRelation_toTableId_idx").on(a.toTableId),(0,h.Pe)("DraftRelation_fromTableId_idx").on(a.fromTableId)]),B=(0,d.D)("CodeFile",{path:(0,e.Qq)().primaryKey(),root:(0,e.Qq)(),lang:(0,e.Qq)(),x:(0,g.x)().default(0).notNull(),y:(0,g.x)().default(0).notNull(),mtimeMs:(0,g.x)(),size:(0,f.nd)(),inDegree:(0,f.nd)().default(0).notNull(),outDegree:(0,f.nd)().default(0).notNull(),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),C=(0,d.D)("CodeFileEdge",{fromPath:(0,e.Qq)().notNull().references(()=>B.path,{onDelete:"cascade",onUpdate:"cascade"}),toPath:(0,e.Qq)().notNull().references(()=>B.path,{onDelete:"cascade",onUpdate:"cascade"}),circular:(0,f.nd)({mode:"boolean"}).default(!1).notNull()},a=>[(0,h.Pe)("CodeFileEdge_circular_idx").on(a.circular),(0,h.Pe)("CodeFileEdge_toPath_idx").on(a.toPath),(0,h.Pe)("CodeFileEdge_fromPath_idx").on(a.fromPath),(0,j.ie)({columns:[a.fromPath,a.toPath],name:"CodeFileEdge_fromPath_toPath_pk"})]),D=(0,d.D)("SyncState",{id:(0,e.Qq)().primaryKey().default("singleton"),version:(0,f.nd)().default(0).notNull(),codeGraphSyncedAt:(0,f.nd)({mode:"timestamp_ms"}),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),E=(0,d.D)("AppSetting",{id:(0,e.Qq)().primaryKey().default("singleton"),editor:(0,e.Qq)().default("auto").notNull(),currentFeatureId:(0,e.Qq)(),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),F=(0,d.D)("ProjectMeta",{id:(0,e.Qq)().primaryKey().default("singleton"),overview:(0,e.Qq)(),conventions:(0,e.Qq)().default("[]").notNull(),hasFrontend:(0,f.nd)({mode:"boolean"}),classificationRoots:(0,e.Qq)().default("[]").notNull(),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),G=(0,d.D)("WorkspaceFlag",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),key:(0,e.Qq)().notNull(),enabled:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),config:(0,e.Qq)(),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.GL)("WorkspaceFlag_key_key").on(a.key)]),H=(0,d.D)("PlanContract",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),planId:(0,e.Qq)().notNull(),declaredFiles:(0,e.Qq)().default("[]").notNull(),authorizedExtras:(0,e.Qq)().default("[]").notNull(),active:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.GL)("PlanContract_planId_key").on(a.planId),(0,h.Pe)("PlanContract_active_idx").on(a.active)])},23727:(a,b,c)=>{c.d(b,{U:()=>h,u:()=>i});var d=c(55030);function e(a){let{x:b,y:c}=a.internals.positionAbsolute,d=a.measured?.width??0,e=a.measured?.height??0;return{x:b,y:c,w:d,h:e,cx:b+d/2,cy:c+e/2}}function f(a,b){let c=e(a),d=e(b),f=c.w/2||1,g=c.h/2||1,h=(d.cx-c.cx)/(2*f)-(d.cy-c.cy)/(2*g),i=(d.cx-c.cx)/(2*f)+(d.cy-c.cy)/(2*g),j=1/(Math.abs(h)+Math.abs(i)||1);return{x:f*j*(h+i)+c.cx,y:g*j*(-h+i)+c.cy}}function g(a,b){let c=e(a),f=Math.round(b.x),g=Math.round(b.y);return f<=Math.round(c.x)+1?d.yX.Left:f>=Math.round(c.x+c.w)-1?d.yX.Right:g<=Math.round(c.y)+1?d.yX.Top:d.yX.Bottom}function h(a,b){let c=f(a,b),d=f(b,a);return{sx:c.x,sy:c.y,tx:d.x,ty:d.y,sourcePos:g(a,c),targetPos:g(b,d)}}function i(a,b){let c=a.x+a.w/2,d=a.y+a.h/2,e=b.x-c,f=b.y-d;if(0===e&&0===f)return{x:c,y:d};let g=1/Math.max(Math.abs(e)/(a.w/2||1),Math.abs(f)/(a.h/2||1));return{x:c+e*g,y:d+f*g}}},25127:(a,b,c)=>{c.d(b,{W:()=>e});var d=c(67484);function e(a,b){let[c,e]=(0,d.useState)(!1),[f,g]=(0,d.useState)(0),h=c?a[f]??null:null,i=(0,d.useCallback)(()=>{g(0),e(!0)},[]),j=(0,d.useCallback)(()=>e(!1),[]),k=(0,d.useCallback)(()=>g(b=>Math.min(b+1,a.length-1)),[a.length]),l=(0,d.useCallback)(()=>g(a=>Math.max(a-1,0)),[]),m=(0,d.useCallback)(b=>{b>=0&&b<a.length&&g(b)},[a.length]),n=(0,d.useMemo)(()=>h&&h.focusIds.length?new Set(h.focusIds):null,[h]);return{active:c,index:f,step:h,start:i,stop:j,next:k,prev:l,goto:m,focusIds:n}}},26284:(a,b,c)=>{c.d(b,{$:()=>i});var d=c(48249),e=c(70813),f=c(21654),g=c(33191);let h=(0,f.F)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function i({className:a,variant:b="default",size:c="default",...f}){return(0,d.jsx)(e.Button,{"data-slot":"button",className:(0,g.cn)(h({variant:b,size:c,className:a})),...f})}},27267:(a,b,c)=>{c.d(b,{TT:()=>f,Xf:()=>h,m6:()=>e,nR:()=>g,yl:()=>d});let d=["PENDING","IN_PROGRESS","DONE","BLOCKED","CANCELLED","DEPRIORITIZED"],e=["KEEP","REBUILD","REPLACE","DROP"],f=["IN_PROGRESS","PENDING","BLOCKED","DONE","DEPRIORITIZED","CANCELLED"],g={DONE:{label:"Done",className:"border-emerald-500/30 bg-emerald-500/15 text-emerald-300"},IN_PROGRESS:{label:"In progress",className:"border-sky-500/30 bg-sky-500/15 text-sky-300"},PENDING:{label:"Pending",className:"border-amber-500/30 bg-amber-500/10 text-amber-200"},BLOCKED:{label:"Blocked",className:"border-orange-500/30 bg-orange-500/15 text-orange-300"},CANCELLED:{label:"Cancelled",className:"border-zinc-500/30 bg-zinc-500/10 text-zinc-400 line-through"},DEPRIORITIZED:{label:"Deprioritized",className:"border-zinc-600/40 bg-zinc-600/10 text-zinc-400"},KEEP:{label:"Keep",className:"border-emerald-500/30 bg-emerald-500/15 text-emerald-300"},REBUILD:{label:"Rebuild",className:"border-violet-500/30 bg-violet-500/15 text-violet-300"},REPLACE:{label:"Replace",className:"border-rose-500/30 bg-rose-500/15 text-rose-300"},DROP:{label:"Drop",className:"border-zinc-500/30 bg-zinc-500/10 text-zinc-400 line-through"}};function h(a){return a?.trim()||"—"}},27741:(a,b,c)=>{c.d(b,{S:()=>d});function d(a,b={}){let c=b.pad??20,e=b.header??26,f=new Map;for(let b of a){let a=f.get(b.group);a?(a.minX=Math.min(a.minX,b.x),a.minY=Math.min(a.minY,b.y),a.maxX=Math.max(a.maxX,b.x+b.w),a.maxY=Math.max(a.maxY,b.y+b.h),a.count++):f.set(b.group,{minX:b.x,minY:b.y,maxX:b.x+b.w,maxY:b.y+b.h,count:1})}return Array.from(f.entries()).sort(([a],[b])=>a.localeCompare(b)).map(([a,b])=>({key:a,label:a,x:b.minX-c,y:b.minY-c-e,w:b.maxX-b.minX+2*c,h:b.maxY-b.minY+2*c+e,count:b.count}))}},27840:(a,b,c)=>{},29051:(a,b,c)=>{c.d(b,{DbMapClient:()=>av});var d=c(48249),e=c(67484),f=c(35283),g=c(19099),h=c(56024),i=c(55030);c(71763);var j=c(49783),k=c(90165),l=c(89216),m=c(57684),n=c(45535),o=c(69473),p=c(33191),q=c(38476);let r=(0,e.createContext)(null);function s(){let a=(0,e.useContext)(r);if(!a)throw Error("useDbEdit must be used inside DbEditContext");return a}var t=c(50605),u=c(91365),v=c(1229),w=c(58720);let x={danger:"bg-red-500/15 text-red-300",warn:"bg-amber-500/15 text-amber-300"};function y({badges:a,className:b}){return a.length?(0,d.jsx)("span",{className:(0,p.cn)("flex shrink-0 items-center gap-0.5",b),children:a.map(a=>(0,d.jsx)("span",{title:a.title,className:(0,p.cn)("rounded px-1 text-[8px] font-semibold uppercase tracking-wide",x[a.tone]),children:a.label},a.label))}):null}let z=/pass(word)?|token|secret|api[_-]?key|credential|priv(ate)?[_-]?key|hash|salt/i,A=/auth|login|logout|session|token|password|oauth|sso|credential/i,B="nodrag nopan",C=v.x;function D({onClick:a,title:b}){return(0,d.jsx)("button",{type:"button",title:b,onClick:b=>{b.stopPropagation(),a()},className:(0,p.cn)(B,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover/row:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,d.jsx)(j.A,{className:"size-3"})})}function E({c:a,fkTargets:b}){let c=b?.[a.name];return(0,d.jsx)("span",{title:c?`→ ${c}`:a.type,className:"ml-auto min-w-0 truncate font-mono text-[11px] text-muted-foreground/80",children:c?(0,d.jsxs)(d.Fragment,{children:["→\xa0",c]}):a.type})}let F=(0,e.memo)(function({id:a,data:b,selected:c}){var f;let g,h,i="DRAFT"===b.source,j="added"===b.diffStatus?"#7bd389":"modified"===b.diffStatus?"#ffb86b":"#4ea1ff",r="added"===b.diffStatus||"modified"===b.diffStatus,x="added"===b.diffStatus?"new":"modified"===b.diffStatus?"modify":"in plan",A=b.diffChanges?.length?b.diffChanges.join("\n"):"in this plan — no column change",F=i?j:(0,q.qA)(b.domain),G=(f={domain:b.domain,columns:b.columns},g=[],(h=f.columns.filter(a=>z.test(a.name)).map(a=>a.name)).length&&g.push({label:"secrets",tone:"danger",title:`stores credentials: ${h.join(", ")}`}),f.domain&&/auth/i.test(f.domain)&&g.push({label:"auth",tone:"warn",title:"auth-domain table"}),g),H=s(),[I,J]=(0,e.useState)(b.name),[K,L]=(0,e.useState)(b.columns),[M,N]=(0,e.useState)(!1);(0,e.useEffect)(()=>{J(b.name),L(b.columns)},[b.rev]);let O=a=>a.stopPropagation(),P=b=>{L(b),H.patchTable(a,{columns:b})},Q=(b.pins??[]).filter(a=>null===a.column),R=a=>(b.pins??[]).filter(b=>b.column===a),S=function(a,b,c,d=!1,e){return Math.min(312,Math.max(240,Math.round(8*a.length)+90,...b.map(a=>{if(d){let b=e?.[a.name];return Math.round(7.3*Math.max(6,a.name.length+1)+(b?.kind==="modified"?8*b.detail.length:64))+94}let b=c?.[a.name]?c[a.name].length+2:a.type.length;return Math.round(7.3*a.name.length+6.7*b)+64})))}(b.name,i?K:b.columns,b.fkTargets,i,b.diffColumns),T=(0,p.cn)("relative rounded-xl border bg-[#161618]/95 text-card-foreground shadow-[0_18px_50px_-22px_rgba(0,0,0,0.9)] backdrop-blur",c&&"ring-2 ring-[var(--accent,#f5b942)]"),U=(0,t.k)(u.fE);return"full"!==U?(0,d.jsxs)("div",{className:(0,p.cn)(T,"border-white/10 px-3 py-2.5","far"===U&&!H.readOnly&&"!opacity-0"),style:{width:S},children:[(0,d.jsx)(v.x,{}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block size-2 shrink-0 rounded-full",style:{background:F}}),(0,d.jsx)("span",{className:"truncate font-mono text-[15px] font-semibold",children:b.name})]})]}):i?(0,d.jsxs)("div",{className:(0,p.cn)(T,"group/card"),style:{width:S,borderColor:`${j}59`},children:[(0,d.jsx)(C,{}),(0,d.jsxs)("div",{className:"group/row relative flex items-center gap-1.5 rounded-t-[11px] px-3 py-2",style:{background:`${j}14`},children:[(0,d.jsx)("input",{value:I,onChange:a=>J(a.target.value),onBlur:()=>{let c=I.trim();c&&c!==b.name&&H.patchTable(a,{name:c})},onKeyDown:a=>{O(a),"Enter"===a.key&&a.currentTarget.blur()},placeholder:"table",className:(0,p.cn)(B,"min-w-0 flex-1 bg-transparent font-mono text-[13px] font-semibold tracking-tight outline-none")}),(0,d.jsx)(y,{badges:G}),(0,d.jsx)("span",{title:A,className:(0,p.cn)("shrink-0 rounded-md border px-1.5 py-px font-mono text-[9px] font-semibold uppercase tracking-[0.14em]",!r&&"border-white/15 bg-white/5 text-muted-foreground"),style:r?{background:`${j}1f`,borderColor:`${j}55`,color:j}:void 0,children:x}),(0,d.jsx)("button",{type:"button",onClick:b=>{O(b),M?H.deleteTable(a):N(!0)},onBlur:()=>N(!1),title:"Delete table",className:(0,p.cn)(B,"shrink-0 transition-all",M?"text-red-300":"text-muted-foreground opacity-0 hover:text-red-300 group-hover/card:opacity-100"),children:(0,d.jsx)(m.A,{className:"size-3"})}),Q.length>0?(0,d.jsx)(w.e0,{pins:Q,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)(D,{title:`Comment on ${b.name}`,onClick:()=>b.onComment?.(b.name)})]}),(0,d.jsxs)("div",{className:"divide-y divide-white/[0.05]",children:[K.map((a,c)=>{let e=R(a.name),f=b.diffColumns?.[a.name],g=f?.kind==="added"?{background:"#7bd38914",boxShadow:"inset 2px 0 0 #7bd389"}:f?.kind==="modified"?{background:"#ffb86b14",boxShadow:"inset 2px 0 0 #ffb86b"}:void 0;return(0,d.jsxs)("div",{style:g,className:"group/row relative flex items-center gap-1.5 px-3 py-[5px] text-[12px]",children:[(0,d.jsx)("button",{type:"button",onClick:a=>{O(a),P(K.map((a,b)=>b===c?{...a,isPk:!a.isPk}:a))},title:"Primary key",className:(0,p.cn)(B,"shrink-0",a.isPk?"text-amber-300/90":"text-muted-foreground/40 hover:text-amber-300"),children:(0,d.jsx)(k.A,{className:"size-3"})}),(0,d.jsx)("button",{type:"button",onClick:a=>{O(a),P(K.map((a,b)=>b===c?{...a,isFk:!a.isFk}:a))},title:"Foreign key",className:(0,p.cn)(B,"shrink-0",a.isFk?"text-sky-400/80":"text-muted-foreground/40 hover:text-sky-400"),children:(0,d.jsx)(l.A,{className:"size-3"})}),(0,d.jsx)("input",{value:a.name,onChange:a=>L(b=>b.map((b,d)=>d===c?{...b,name:a.target.value}:b)),onBlur:()=>P(K),onKeyDown:O,placeholder:"column",style:{width:`${Math.max(6,a.name.length+1)}ch`},className:(0,p.cn)(B,"shrink-0 bg-transparent font-mono outline-none")}),(0,d.jsx)("span",{"aria-hidden":!0,className:"flex-1"}),b.fkTargets?.[a.name]?(0,d.jsxs)("span",{title:`→ ${b.fkTargets[a.name]}`,className:"min-w-0 shrink truncate text-right font-mono text-[11px] text-muted-foreground/80",children:["→\xa0",b.fkTargets[a.name]]}):f?.kind==="modified"?(0,d.jsx)("span",{title:`was changed — ${f.detail}`,className:(0,p.cn)(B,"min-w-0 shrink truncate text-right font-mono text-[11px] font-medium text-[#ffb86b]"),children:f.detail}):(0,d.jsx)("input",{value:a.type,onChange:a=>L(b=>b.map((b,d)=>d===c?{...b,type:a.target.value}:b)),onBlur:()=>P(K),onKeyDown:O,placeholder:"type",title:a.type,className:(0,p.cn)(B,"w-16 min-w-0 shrink bg-transparent text-right font-mono text-[11px] outline-none",f?.kind==="added"?"text-[#7bd389]":"text-muted-foreground/80")}),(0,d.jsx)("button",{type:"button",onClick:a=>{O(a),P(K.filter((a,b)=>b!==c))},title:"Remove column",className:(0,p.cn)(B,"shrink-0 text-muted-foreground/40 opacity-0 transition-opacity hover:text-red-300 group-hover/card:opacity-100"),children:(0,d.jsx)(n.A,{className:"size-3"})}),e.length>0?(0,d.jsx)(w.e0,{pins:e,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)(D,{title:`Comment on ${b.name}.${a.name}`,onClick:()=>b.onComment?.(`${b.name}.${a.name}`)})]},c)}),(0,d.jsxs)("button",{type:"button",onClick:a=>{O(a),P([...K,{name:"",type:"text",isPk:!1,isFk:!1,nullable:!0,note:null}])},className:(0,p.cn)(B,"flex w-full items-center gap-1 px-3 py-1.5 text-[10px] text-muted-foreground hover:text-foreground"),children:[(0,d.jsx)(o.A,{className:"size-3"})," column"]})]})]}):(0,d.jsxs)("div",{className:T,style:{width:S,borderColor:`${F}3d`},children:[(0,d.jsx)(C,{}),(0,d.jsxs)("div",{className:"group/row relative flex items-center justify-between rounded-t-[11px] px-3 py-2",style:{background:`${F}14`},children:[(0,d.jsxs)("span",{className:"flex min-w-0 flex-1 items-center gap-1.5 font-mono text-[13px] font-semibold tracking-tight",children:["INTROSPECTION"===b.source&&(0,d.jsx)("span",{title:"live — derived from your code",className:"inline-block size-1.5 shrink-0 rounded-full bg-emerald-400"}),(0,d.jsx)("span",{className:"truncate",title:b.name,children:b.name})]}),(0,d.jsxs)("span",{className:"flex shrink-0 items-center gap-1.5",children:["INTROSPECTION"!==b.source&&(0,d.jsx)("span",{title:"planned — not yet detected in code",className:"shrink-0 rounded-md border border-[#f5b942]/35 bg-[#f5b942]/10 px-1.5 py-px font-mono text-[9px] font-semibold uppercase tracking-[0.14em] text-[#f5b942]",children:"planned"}),(0,d.jsx)(y,{badges:G}),b.domain&&(0,d.jsx)("span",{className:"text-[9px] uppercase tracking-[0.14em]",style:{color:F},children:b.domain})]}),Q.length>0?(0,d.jsx)(w.e0,{pins:Q,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)(D,{title:`Comment on ${b.name}`,onClick:()=>b.onComment?.(b.name)})]}),(0,d.jsx)("div",{className:"divide-y divide-white/[0.05]",children:b.columns.map(a=>{let c=R(a.name);return(0,d.jsxs)("div",{className:"group/row relative flex items-center gap-2 px-3 py-[7px] text-[12px]",children:[a.isPk?(0,d.jsx)(k.A,{className:"size-3 shrink-0 text-amber-300/90"}):a.isFk?(0,d.jsx)(l.A,{className:"size-3 shrink-0 text-sky-400/80"}):(0,d.jsx)("span",{className:"size-3 shrink-0"}),(0,d.jsx)("span",{className:"shrink-0 whitespace-nowrap font-mono",children:a.name}),(0,d.jsx)(E,{c:a,fkTargets:b.fkTargets}),c.length>0?(0,d.jsx)(w.e0,{pins:c,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)(D,{title:`Comment on ${b.name}.${a.name}`,onClick:()=>b.onComment?.(`${b.name}.${a.name}`)})]},a.name)})})]})}),G="nodrag nopan",H=["GET","POST","PUT","PATCH","DELETE"],I=(0,e.memo)(function({id:a,data:b,selected:c}){var f;let g,h=q.e6[b.method]??"#8a8a8a",i="DRAFT"===b.source,k="added"===b.diffStatus?"#7bd389":"modified"===b.diffStatus?"#ffb86b":"#4ea1ff",l="added"===b.diffStatus?"new":"modified"===b.diffStatus?"changed":"draft",n=b.diffChanges?.length?b.diffChanges.join("\n"):"draft",o=(f={method:b.method,domain:b.domain,path:b.path},g=[],/^delete$/i.test(f.method.trim())&&g.push({label:"DELETE",tone:"danger",title:"destructive: deletes data"}),(f.domain&&/auth/i.test(f.domain)||A.test(f.path))&&g.push({label:"auth",tone:"warn",title:"auth-related endpoint"}),g),r=s(),[x,z]=(0,e.useState)(b.path),[B,C]=(0,e.useState)(!1);(0,e.useEffect)(()=>{z(b.path)},[b.rev]);let D=a=>a.stopPropagation(),E=(0,t.k)(u.fE);return"full"!==E?(0,d.jsxs)("div",{className:(0,p.cn)("relative flex w-[300px] items-center gap-2 rounded-lg border border-white/10 bg-[#161618]/95 px-2.5 py-2 text-card-foreground backdrop-blur",c&&"ring-2 ring-[var(--accent,#f5b942)]","far"===E&&!r.readOnly&&"!opacity-0"),children:[(0,d.jsx)(v.x,{}),(0,d.jsx)("span",{className:"shrink-0 font-mono text-[12px] font-bold",style:{color:h},children:b.method}),(0,d.jsx)("span",{title:b.path,className:"truncate font-mono text-[13px]",children:b.path})]}):(0,d.jsxs)("div",{className:(0,p.cn)("group relative flex w-[300px] items-center gap-2 rounded-lg border bg-[#161618]/95 px-2.5 py-1.5 text-card-foreground shadow-[0_12px_36px_-18px_rgba(0,0,0,0.9)] backdrop-blur",i?"border-dashed":"border-white/10",c&&"ring-2 ring-[var(--accent,#f5b942)]"),style:i?{borderColor:`${k}66`,background:`${k}0f`}:void 0,children:[(0,d.jsx)(v.x,{}),"INTROSPECTION"===b.source&&(0,d.jsx)("span",{title:"live — derived from your code",className:"inline-block size-1.5 shrink-0 rounded-full bg-emerald-400"}),i?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("select",{value:b.method,onChange:b=>r.patchEndpoint(a,{method:b.target.value}),onPointerDown:D,className:(0,p.cn)(G,"shrink-0 rounded bg-transparent text-[10px] font-bold outline-none"),style:{color:h},title:"Method",children:H.map(a=>(0,d.jsx)("option",{value:a,className:"bg-card text-foreground",children:a},a))}),(0,d.jsx)("input",{value:x,title:x,onChange:a=>z(a.target.value),onBlur:()=>{let c=x.trim();c&&c!==b.path&&r.patchEndpoint(a,{path:c})},onKeyDown:a=>{D(a),"Enter"===a.key&&a.currentTarget.blur()},className:(0,p.cn)(G,"min-w-0 flex-1 bg-transparent font-mono text-[11px] outline-none")}),(0,d.jsx)(y,{badges:o}),(0,d.jsx)("span",{title:n,className:"shrink-0 rounded px-1 py-0.5 text-[8px] font-semibold uppercase",style:{background:`${k}26`,color:k},children:l}),(0,d.jsx)("button",{type:"button",onClick:b=>{D(b),B?r.deleteEndpoint(a):C(!0)},onBlur:()=>C(!1),title:"Delete",className:(0,p.cn)(G,"shrink-0 transition-colors",B?"text-red-300":"text-muted-foreground hover:text-red-300"),children:(0,d.jsx)(m.A,{className:"size-3"})})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[10px] font-bold",style:{background:`${h}22`,color:h},children:b.method}),(0,d.jsx)("span",{title:b.path,className:"min-w-0 flex-1 break-all font-mono text-[11px] leading-tight [-webkit-box-orient:vertical] [-webkit-line-clamp:2] [display:-webkit-box] overflow-hidden",children:b.path}),"INTROSPECTION"!==b.source&&(0,d.jsx)("span",{title:"planned — not yet detected in code",className:"shrink-0 rounded-md border border-[#f5b942]/35 bg-[#f5b942]/10 px-1.5 py-px font-mono text-[8px] font-semibold uppercase tracking-[0.14em] text-[#f5b942]",children:"planned"}),(0,d.jsx)(y,{badges:o}),(0,d.jsx)("button",{type:"button",onClick:b=>{D(b),B?r.deleteRealEndpoint(a):C(!0)},onBlur:()=>C(!1),title:B?"Click again to delete":"Delete endpoint",className:(0,p.cn)(G,"shrink-0 opacity-0 transition-opacity group-hover:opacity-100",B?"text-red-300 opacity-100":"text-muted-foreground hover:text-red-300"),children:(0,d.jsx)(m.A,{className:"size-3"})})]}),(b.pins?.length??0)>0?(0,d.jsx)(w.e0,{pins:b.pins,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)("button",{type:"button",title:`Comment on ${b.method} ${b.path}`,onClick:a=>{D(a),b.onComment?.(`${b.method} ${b.path}`)},className:(0,p.cn)(G,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,d.jsx)(j.A,{className:"size-3"})})]})});var J=c(32798),K=c(48779),L=c(26284);let M=[{id:"claude",label:"Prompt p/ Claude Code",fn:function(a){let b=["Implement this database schema in this project, following its existing stack and conventions:",""];for(let c of a.tables){let a=`Table \`${c.name}\``+(c.domain?` (domain: ${c.domain})`:"")+(c.description?` — ${c.description}`:"");for(let d of(b.push(a),c.columns)){let a=[d.isPk&&"PK",d.isFk&&"FK",!1===d.nullable&&"NOT NULL"].filter(Boolean).join(", ");b.push(` - ${d.name}: ${d.type}`+(a?` [${a}]`:"")+(d.note?` — ${d.note}`:""))}b.push("")}if(a.relations.length){for(let c of(b.push("Foreign keys:"),a.relations))b.push(` - ${c.fromTable}.${c.fromColumn} -> ${c.toTable}.${c.toColumn}`);b.push("")}return b.push("Create the models/migrations using the project's existing ORM and patterns, wire the relationships, and keep table and column names exactly as given."),b.join("\n")}},{id:"dbml",label:"DBML",fn:function(a){let b=[];for(let c of a.tables){for(let a of(b.push(`Table ${c.name} {`),c.columns)){let c=[a.isPk&&"pk",!1===a.nullable&&!a.isPk&&"not null",a.note&&`note: '${a.note.replace(/'/g,"")}'`].filter(Boolean).join(", ");b.push(` ${a.name} ${a.type}`+(c?` [${c}]`:""))}b.push("}","")}for(let c of a.relations)b.push(`Ref: ${c.fromTable}.${c.fromColumn} > ${c.toTable}.${c.toColumn}`);return b.join("\n").trim()}},{id:"sql",label:"SQL DDL",fn:function(a){let b=[];for(let c of a.tables){b.push(`CREATE TABLE ${c.name} (`);let d=c.columns.map(a=>{let b=[` ${a.name} ${a.type}`];return a.isPk?b.push("PRIMARY KEY"):!1===a.nullable&&b.push("NOT NULL"),b.join(" ")}),e=a.relations.filter(a=>a.fromTable===c.name).map(a=>` FOREIGN KEY (${a.fromColumn}) REFERENCES ${a.toTable}(${a.toColumn})`);b.push([...d,...e].join(",\n")),b.push(");","")}return b.join("\n").trim()}}];function N({draftGraph:a}){let[b,c]=(0,e.useState)(null);if(0===a.tables.length)return null;async function f(b){await navigator.clipboard.writeText(b.fn(a)).catch(()=>{}),c(b.id),setTimeout(()=>c(null),1500)}return(0,d.jsxs)("div",{className:"space-y-2 rounded-xl border border-sky-400/20 bg-sky-500/[0.04] p-3",children:[(0,d.jsxs)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-sky-300",children:["Rascunho \xb7 ",a.tables.length," tabelas"]}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,d.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:"copiar:"}),M.map(a=>(0,d.jsx)(L.$,{size:"sm",variant:"outline",className:"h-6 px-2 text-[11px]",onClick:()=>f(a),children:b===a.id?"✓":a.label},a.id))]})]})}function O({selected:a,tables:b,relations:c,endpoints:e,draftGraph:f,onClose:g,commentsContent:h,commentsCount:i=0,activeTab:k,onTabChange:l,onAddComment:m,topOffset:o}){let p,q,r=new Map(b.map(a=>[a.id,a.name])),s=!!h,t=k??"details",u=a?.kind==="table"?b.find(b=>b.id===a.id)?.name??null:a?.kind==="endpoint"&&(q=e.find(b=>b.id===a.id))?`${q.method} ${q.path}`:null;if(a?.kind==="table"){let f=b.find(b=>b.id===a.id);p=f?(0,d.jsx)(Q,{table:f,relations:c,endpoints:e,nameById:r}):null}else if(a?.kind==="endpoint"){let b=e.find(b=>b.id===a.id);p=b?(0,d.jsx)(R,{ep:b,nameById:r}):null}else p=(0,d.jsx)(S,{tables:b,relations:c,endpoints:e});return(0,d.jsxs)(K.b,{className:"absolute right-3 z-10 flex w-80 flex-col rounded-2xl",style:{top:o??12,maxHeight:`calc(100% - ${(o??12)+12}px)`},children:[s?(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-1 py-1",children:[(0,d.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,d.jsx)(P,{active:"details"===t,onClick:()=>l?.("details"),children:"Details"}),(0,d.jsxs)(P,{active:"comments"===t,onClick:()=>l?.("comments"),children:["Comments",i>0&&(0,d.jsx)("span",{className:"ml-1 rounded-full bg-white/10 px-1 text-[9px] font-semibold leading-4",children:i})]})]}),(0,d.jsx)("button",{onClick:g,title:"Close panel",className:"mr-1 rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(n.A,{className:"size-4"})})]}):(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,d.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Panel"}),(0,d.jsx)("button",{onClick:g,title:"Close panel",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(n.A,{className:"size-4"})})]}),(0,d.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:"comments"===t&&s?(0,d.jsx)("div",{className:"p-3",children:h}):(0,d.jsxs)(d.Fragment,{children:[f.tables.length>0&&(0,d.jsx)("div",{className:"border-b border-white/10 p-3.5",children:(0,d.jsx)(N,{draftGraph:f})}),(0,d.jsxs)("div",{className:"p-4",children:[m&&u&&(0,d.jsxs)("button",{type:"button",onClick:()=>m(u),className:"mb-3 flex w-full items-center justify-center gap-1.5 rounded-lg border border-white/10 bg-white/[0.03] px-3 py-1.5 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,d.jsx)(j.A,{className:"size-3.5"}),"Comment on this ",a?.kind==="endpoint"?"endpoint":"table"]}),p]})]})})]})}function P({active:a,onClick:b,children:c}){return(0,d.jsx)("button",{type:"button",onClick:b,className:(0,p.cn)("flex items-center gap-1 rounded-md px-2.5 py-1 text-[11px] font-medium transition-colors",a?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:c})}function Q({table:a,relations:b,endpoints:c,nameById:e}){let f=b.filter(b=>b.fromTableId===a.id),g=b.filter(b=>b.toTableId===a.id),h=c.map(b=>({e:b,u:b.tables.find(b=>b.tableId===a.id)})).filter(a=>a.u);return(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-xs uppercase tracking-wide",style:{color:(0,q.qA)(a.domain)},children:a.domain??"table"}),(0,d.jsx)("h2",{className:"font-mono text-lg font-semibold",children:a.name}),a.description&&(0,d.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:a.description})]}),(0,d.jsx)(T,{title:`Columns (${a.columns.length})`,children:(0,d.jsx)("ul",{className:"space-y-0.5",children:a.columns.map(a=>(0,d.jsxs)("li",{className:"flex items-center gap-1.5 text-xs",children:[a.isPk?(0,d.jsx)(k.A,{className:"size-3 text-amber-400"}):a.isFk?(0,d.jsx)(l.A,{className:"size-3 text-sky-400"}):(0,d.jsx)("span",{className:"size-3"}),(0,d.jsx)("span",{className:"font-mono",children:a.name}),(0,d.jsxs)("span",{className:"ml-auto font-mono text-[10px] text-muted-foreground",children:[a.type,!a.nullable&&" \xb7NN"]})]},a.name))})}),f.length>0&&(0,d.jsx)(T,{title:"References (FK out)",children:(0,d.jsx)("ul",{className:"space-y-1 text-xs",children:f.map(a=>(0,d.jsxs)("li",{className:"font-mono text-muted-foreground",children:[a.fromColumn," → ",e.get(a.toTableId),".",a.toColumn]},a.id))})}),g.length>0&&(0,d.jsx)(T,{title:"Referenced by (FK in)",children:(0,d.jsx)("ul",{className:"space-y-1 text-xs",children:g.map(a=>(0,d.jsxs)("li",{className:"font-mono text-muted-foreground",children:[e.get(a.fromTableId),".",a.fromColumn]},a.id))})}),h.length>0&&(0,d.jsx)(T,{title:`Used by endpoints (${h.length})`,children:(0,d.jsx)("ul",{className:"space-y-1 text-xs",children:h.map(({e:a,u:b})=>(0,d.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{style:{color:q.e6[a.method]},className:"font-bold",children:a.method}),(0,d.jsx)("span",{className:"truncate font-mono",children:a.path}),(0,d.jsx)("span",{className:"ml-auto",style:{color:q.ru[b.access]},children:b.access})]},a.id))})})]})}function R({ep:a,nameById:b}){return(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[11px] font-bold",style:{background:`${q.e6[a.method]}22`,color:q.e6[a.method]},children:a.method}),(0,d.jsx)("h2",{className:"mt-2 font-mono text-base font-semibold",children:a.path}),a.description&&(0,d.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:a.description})]}),(0,d.jsx)(T,{title:`Tables used (${a.tables.length})`,children:(0,d.jsx)("ul",{className:"space-y-1 text-xs",children:a.tables.map(a=>(0,d.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{className:"font-mono",children:b.get(a.tableId)}),(0,d.jsx)("span",{className:"ml-auto",style:{color:q.ru[a.access]},children:a.access})]},a.tableId))})})]})}function S({tables:a,relations:b,endpoints:c}){return(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-sm font-semibold",children:"Database"}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Live schema derived from your code. Click a table or endpoint to see details. Drag to rearrange — positions are saved."})]}),(0,d.jsxs)("dl",{className:"grid grid-cols-3 gap-2 text-center",children:[(0,d.jsx)(U,{label:"tables",value:a.length}),(0,d.jsx)(U,{label:"FKs",value:b.length}),(0,d.jsx)(U,{label:"endpoints",value:c.length})]}),(0,d.jsx)(T,{title:"Legend",children:(0,d.jsxs)("ul",{className:"space-y-1 text-xs text-muted-foreground",children:[(0,d.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,d.jsx)(k.A,{className:"size-3 text-amber-400"})," primary key"]}),(0,d.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,d.jsx)(l.A,{className:"size-3 text-sky-400"})," foreign key"]}),(0,d.jsx)("li",{children:"— gray line: FK relation between tables"}),(0,d.jsx)("li",{children:"– – dashed line: endpoint uses table (read/write)"})]})})]})}function T({title:a,children:b}){return(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:a}),b]})}function U({label:a,value:b}){return(0,d.jsxs)("div",{className:"rounded-lg border border-white/10 bg-white/[0.03] py-2",children:[(0,d.jsx)("div",{className:"text-lg font-semibold",children:b}),(0,d.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:a})]})}var V=c(92994),W=c(54193),X=c(82626),Y=c(81725),Z=c(55805);let $=new Set(["GET","HEAD","OPTIONS"]);var _=c(27741),aa=c(86892);function ab(a){return 36+30*Math.max(0,a)+16}let ac="Unattached",ad=a=>(a??"").trim()||"—";function ae(a,b){let c=new Map(a.map(a=>[a.id,a.name])),d=new Map;for(let a of b)for(let b of a.uses)c.has(b.tableId)&&d.set(b.tableId,(d.get(b.tableId)??0)+1);return new Map(b.map(a=>[a.id,function(a,b,c){let d=new Map;for(let c of a.uses)b.has(c.tableId)&&d.set(c.tableId,(d.get(c.tableId)??0)+1);let e=null;for(let[a,f]of d){if(null===e){e=a;continue}let g=d.get(e);if(f>g){e=a;continue}if(f<g)continue;let h=c?.get(a)??0,i=c?.get(e)??0;h<i?e=a:h===i&&0>b.get(a).localeCompare(b.get(e))&&(e=a)}return e}(a,c,d)]))}let af=(a,b)=>a.path.localeCompare(b.path)||a.method.localeCompare(b.method)||a.id.localeCompare(b.id);var ag=c(67637);let ah=a=>a.trim().toLowerCase();var ai=c(15828),aj=c(30170),ak=c(10920),al=c(95744),am=c(10758),an=c(69680),ao=c(35471),ap=c(42800),aq=c(96863);let ar={dbTable:F,endpoint:I,annotation:w.Sh},as={deletable:ap.I,annotation:aq.L},at="beacon:db-draft",au={proposedAt:0,status:"pending",tables:[],relations:[],endpoints:[]};function av({tables:a,relations:b,endpoints:c,draft:j,workspaceId:k,embedded:l=!1,diffBase:n,draftRef:o,onEdit:s,controlRef:v,commentsContent:x,commentsCount:y=0,onAddComment:z,annotations:A,onPinClick:B,onUpdateComment:C,onRemoveComment:D,boardAnnotations:E,readOnly:F=!1}){let G=(0,g.useRouter)(),H=a.length+(j?.tables.length??0),I=c.length+(j?.endpoints.length??0),[K,L]=(0,e.useState)(I>0&&(l||0===H)),[M,N]=(0,e.useState)(null),[P,Q]=(0,e.useState)(null),[R,S]=(0,e.useState)(null),[T,U]=(0,e.useState)(!1),[ap,aq]=(0,e.useState)(!1),[aw,ax]=(0,e.useState)("details"),[ay,az]=(0,e.useState)(!1),[aA,aB]=(0,e.useState)(""),aC=(0,e.useRef)(null),{tool:aD,setTool:aE,flowProps:aF}=(0,f.e)(),[aG,aH]=(0,e.useState)(new Set),[aI,aJ]=(0,e.useState)("full"),[aK,aL]=(0,e.useState)(new Set),[aM,aN]=(0,e.useState)(new Set),[aO,aP]=(0,e.useState)(()=>({past:[],present:j??au,future:[],rev:0,edited:!1})),aQ=aO.present,aR=(0,e.useCallback)(a=>{aP(b=>{let c=a(b.present);return c===b.present?b:{past:[...b.past,b.present].slice(-100),present:c,future:[],rev:b.rev+1,edited:!0}})},[]),aS=(0,e.useCallback)(a=>{aP(b=>{let c=a(b.present);return c===b.present?b:{...b,present:c}})},[]),aT=(0,e.useCallback)(()=>aP(a=>a.past.length?{past:a.past.slice(0,-1),present:a.past[a.past.length-1],future:[a.present,...a.future],rev:a.rev+1,edited:!0}:a),[]),aU=(0,e.useCallback)(()=>aP(a=>a.future.length?{past:[...a.past,a.present],present:a.future[0],future:a.future.slice(1),rev:a.rev+1,edited:!0}:a),[]),aV=(0,e.useCallback)(a=>aP(b=>({past:[],present:a,future:[],rev:b.rev+1,edited:!1})),[]);(0,e.useRef)(!1),j?.proposedAt,(0,e.useRef)(!1);let aW=(0,e.useMemo)(()=>aQ.tables.map(a=>({id:a.id,name:a.name,domain:a.domain,description:a.description,source:"DRAFT",x:a.x,y:a.y,columns:a.columns})),[aQ]),aX=(0,e.useMemo)(()=>aQ.endpoints.map(a=>({id:a.id,method:a.method,path:a.path,domain:a.domain,description:a.description,source:"DRAFT",x:a.x,y:a.y,tables:a.links.map(a=>({tableId:a.tableId,access:a.access}))})),[aQ]),aY=(0,e.useMemo)(()=>[...a,...aW],[a,aW]),aZ=(0,e.useMemo)(()=>[...c,...aX],[c,aX]),a$=(0,e.useMemo)(()=>(function(a,b,c={}){let d=ae(a,b),e=new Map,f=[];for(let a of[...b].sort(af)){let b=d.get(a.id)??null;if(b){let c=e.get(b);c?c.push(a):e.set(b,[a])}else f.push(a)}let g=a=>{let b=e.get(a.id)?.length??0;return ab(a.columnCount)+(b?10+60*b:0)+30},h=Array.from(new Set(a.map(a=>ad(a.domain)))),i=h.filter(a=>"—"!==a).sort(),j=h.includes("—")?[...i,"—"]:i,k=[];for(let b of j){let c=a.filter(a=>ad(a.domain)===b).sort((a,b)=>a.name.localeCompare(b.name)),d=c.reduce((a,b)=>a+g(b),0),e=Math.max(1,Math.min(12,c.length,Math.round(Math.sqrt(d/320)))),f=Array(e).fill(0),h=new Map;for(let a of c){let b=0;for(let a=1;a<e;a++)f[a]<f[b]&&(b=a);h.set(a.id,{x:320*b,y:f[b]}),f[b]+=g(a)}k.push({d:b,w:320*e,h:Math.max(...f,0),tableLocal:h})}let l=(0,aa.Xi)(k.map(a=>({id:a.d,w:a.w,h:a.h})),{gapX:84,gapY:72,viewportAspect:c.viewportAspect,minBandW:960,aspectSlack:1.7}),m=new Map,n=new Map,o=0;for(let b of k){let c=l.get(b.d);for(let d of a.filter(a=>b.tableLocal.has(a.id))){let a=b.tableLocal.get(d.id),f=c.x+a.x,g=c.y+a.y;m.set(d.id,{x:f,y:g}),(e.get(d.id)??[]).forEach((a,b)=>{n.set(a.id,{x:f,y:g+ab(d.columnCount)+10+60*b})})}o=Math.max(o,c.y+b.h)}if(f.length){let a=o+72,b=Math.max(1,Math.min(4,Math.ceil(Math.sqrt(f.length/2))));f.forEach((c,d)=>{n.set(c.id,{x:d%b*300,y:a+60*Math.floor(d/b)})})}return{tables:m,endpoints:n}})(aY.map(a=>({id:a.id,name:a.name,domain:a.domain,columnCount:a.columns.length})),[]).tables,[aY]),a_=(0,e.useMemo)(()=>new Map,[]),a0=(0,e.useMemo)(()=>l?function(a,b){let c=new Map(a.map(a=>[ah(a.name),a])),d=new Map;for(let a of b){let b=c.get(ah(a.name));if(!b){d.set(a.id,{status:"added",changes:["new table"],columns:{}});continue}let{changes:e,columns:f}=function(a,b){let c=new Map(a.map(a=>[ah(a.name),a])),d=new Set(b.map(a=>ah(a.name))),e=[],f={};for(let a of b){let b=c.get(ah(a.name));if(!b){e.push(`+ column ${a.name} (${a.type})`),f[a.name]={kind:"added",detail:"new column"};continue}let d=[],g=[];if(ah(b.type)!==ah(a.type)&&(d.push(`type ${b.type}→${a.type}`),g.push(`${b.type}→${a.type}`)),b.isPk!==a.isPk){let b=a.isPk?"now PK":"no longer PK";d.push(b),g.push(b)}if(b.isFk!==a.isFk){let b=a.isFk?"now FK":"no longer FK";d.push(b),g.push(b)}if(b.nullable!==a.nullable){let b=a.nullable?"now nullable":"now required";d.push(b),g.push(b)}d.length&&(e.push(`~ column ${a.name}: ${d.join(", ")}`),f[a.name]={kind:"modified",detail:g.join(" \xb7 ")})}for(let b of a)d.has(ah(b.name))||e.push(`- column ${b.name}`);return{changes:e,columns:f}}(b.columns,a.columns);d.set(a.id,{status:e.length?"modified":"unchanged",changes:e,columns:f})}return d}(n?.tables??a,aW):a_,[l,n,a,aW,a_]),a1=(0,e.useMemo)(()=>l?function(a,b){let c=a=>`${ah(a.method)} ${ah(a.path)}`,d=new Set(a.map(c)),e=new Map;for(let a of b)e.set(a.id,d.has(c(a))?{status:"unchanged",changes:[],columns:{}}:{status:"added",changes:["new endpoint"],columns:{}});return e}(n?.endpoints??c,aX):a_,[l,n,c,aX,a_]),a2=(0,e.useMemo)(()=>[...b,...aQ.relations.map(a=>({id:a.id,fromTableId:a.fromTableId,toTableId:a.toTableId,fromColumn:a.fromColumn,toColumn:a.toColumn,label:a.label}))],[b,aQ.relations]),a3=(0,e.useMemo)(()=>{let a=new Map;for(let b of aZ)for(let c of b.tables)a.set(c.tableId,(a.get(c.tableId)??0)+1);return a},[aZ]),a4=(0,e.useMemo)(()=>{let a=new Map;return aY.forEach(b=>a.set(b.id,b.x)),aZ.forEach(b=>a.set(b.id,b.x)),a},[aY,aZ]),a5=(0,e.useMemo)(()=>{let a=new Map;return aY.forEach(b=>a.set(b.id,b.y)),aZ.forEach(b=>a.set(b.id,b.y)),a},[aY,aZ]),a6=(0,e.useMemo)(()=>{let a=new Map(aY.map(a=>[a.id,a.name])),b=new Map;for(let c of a2){let d=a.get(c.toTableId);if(!d)continue;let e=b.get(c.fromTableId)??{};e[c.fromColumn]=d,b.set(c.fromTableId,e)}return b},[a2,aY]),a7=void 0!==E,[a8,a9]=(0,e.useState)(E??[]),ba=(0,e.useMemo)(()=>({tables:aY.map(a=>({id:a.id,name:a.name,columns:a.columns.map(a=>a.name)})),endpoints:aZ.map(a=>({id:a.id,method:a.method,path:a.path}))}),[aY,aZ]),bb=(0,e.useMemo)(()=>{if(a7){let a=new Set([...aY.map(a=>a.id),...aZ.map(a=>a.id)]);return a8.filter(b=>a.has(b.targetId)).map((a,b)=>({id:a.id,n:b+1,targetId:a.targetId,column:a.columnName,text:a.body,x:a.x,y:a.y}))}let a=new Map((A??[]).map(a=>[a.id,a.comment]));return(0,J.m)(A??[],ba).map(b=>({id:b.annotationId,n:b.n,targetId:b.targetId,column:b.column,text:a.get(b.annotationId)??"",x:null,y:null}))},[a7,a8,A,ba,aY,aZ]),bc=(0,e.useMemo)(()=>{let a=new Map;for(let b of bb){let c=a.get(b.targetId)??[];c.push({id:b.id,n:b.n,column:b.column}),a.set(b.targetId,c)}return a},[bb]),bd=(0,e.useMemo)(()=>new Map(bb.map(a=>[`anno-${a.id}`,a.targetId])),[bb]),be=(0,e.useCallback)(async a=>{let b=(0,J.m)([{id:"_",excerpt:a}],ba)[0];if(!b)return;let c=await fetch("/api/board-annotations",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({targetKind:b.kind,targetId:b.targetId,columnName:b.column??void 0})});if(c.ok){let a=await c.json();a9(b=>[...b,a])}},[ba]),bf=(0,e.useCallback)((a,b)=>{a9(c=>c.map(c=>c.id===a?{...c,...b}:c)),fetch(`/api/board-annotations/${a}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(b)})},[]),bg=(0,e.useCallback)(a=>{a9(b=>b.filter(b=>b.id!==a)),fetch(`/api/board-annotations/${a}`,{method:"DELETE"})},[]),bh=a7?be:z,bi=(0,e.useCallback)((a,b)=>{let c=(a4.get(b)??0)-(a4.get(a)??0),d=(a5.get(b)??0)-(a5.get(a)??0);return Math.abs(c)>=Math.abs(d)?c>=0?{sourceHandle:"sr",targetHandle:"tl"}:{sourceHandle:"sl",targetHandle:"tr"}:d>=0?{sourceHandle:"sb",targetHandle:"tt"}:{sourceHandle:"st",targetHandle:"tb"}},[a4,a5]),bj=(0,e.useMemo)(()=>new Set([...aQ.tables.map(a=>a.id),...aQ.endpoints.map(a=>a.id)]),[aQ]),bk=(0,e.useMemo)(()=>new Set(a.map(a=>a.id)),[a]),bl=(0,e.useCallback)(()=>{let a=aY.map(a=>({id:a.id,type:"dbTable",position:K?{x:a.x,y:a.y}:a$.get(a.id)??{x:a.x,y:a.y},data:{name:a.name,domain:a.domain,columns:a.columns,usageCount:a3.get(a.id)??0,source:a.source,rev:aO.rev,diffStatus:a0.get(a.id)?.status,diffChanges:a0.get(a.id)?.changes,diffColumns:a0.get(a.id)?.columns,fkTargets:a6.get(a.id),pins:bc.get(a.id),onPinClick:B,onComment:bh}})),b=aZ.map(a=>({id:a.id,type:"endpoint",position:{x:a.x,y:a.y},data:{method:a.method,path:a.path,domain:a.domain,source:a.source,rev:aO.rev,diffStatus:a1.get(a.id)?.status,diffChanges:a1.get(a.id)?.changes,pins:bc.get(a.id),onPinClick:B,onComment:bh}})),c=new Map,d=new Map(aY.map(a=>[a.id,a])),e=new Map(aZ.map(a=>[a.id,a]));return[...a,...b,...bb.map(a=>{let b=d.get(a.targetId),f=e.get(a.targetId),g=b?.x??f?.x??0,h=b?.y??f?.y??0,i=b?38+28*b.columns.length:42,j=c.get(a.targetId)??0;return c.set(a.targetId,j+1),{id:`anno-${a.id}`,type:"annotation",position:{x:a.x??g+26,y:a.y??h+i+64+112*j},data:{n:a.n,text:a.text,annotationId:a.id,onClick:a7||C?void 0:B,editable:a7||!!C,onChangeText:a7?(a,b)=>bf(a,{body:b}):C,onDelete:a7?bg:D}}})]},[aY,aZ,K,a$,a3,aO.rev,a0,a1,a6,bc,bb,a7,B,C,D,bh,bf,bg]),[bm,bn,bo]=(0,h.ck)(bl());(0,e.useRef)(K);let bp=(0,e.useCallback)((a,b,c,d)=>{fetch("/api/db/position",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({kind:a,id:b,x:c,y:d})})},[]),bq=(0,e.useCallback)((a,b)=>{var c;let{x:d,y:e}=b.position,f=(c={readOnly:F,nodeId:b.id,isDraft:bj.has(b.id),boardMode:a7}).readOnly?"none":c.nodeId.startsWith("anno-")?c.boardMode?"annotation":"none":c.isDraft?"draft":"real";"annotation"===f?bf(b.id.slice(5),{x:d,y:e}):"draft"===f?aS(a=>a.tables.some(a=>a.id===b.id)?{...a,tables:a.tables.map(a=>a.id===b.id?{...a,x:d,y:e}:a)}:a.endpoints.some(a=>a.id===b.id)?{...a,endpoints:a.endpoints.map(a=>a.id===b.id?{...a,x:d,y:e}:a)}:a):"real"===f&&bp("endpoint"===b.type?"endpoint":"table",b.id,d,e)},[F,bj,aS,bp,a7,bf]),br=(0,e.useMemo)(()=>a2.map(a=>({id:`fk-${a.id}`,source:a.fromTableId,target:a.toTableId,...bi(a.fromTableId,a.toTableId),type:"deletable",label:a.label??void 0,markerEnd:{type:i.TG.ArrowClosed,color:"#6b6b6b"},style:{stroke:"#6b6b6b"}})),[a2,bi]),bs=(0,e.useMemo)(()=>aZ.flatMap(a=>a.tables.map(b=>{let c=q.ru[b.access]??"#5a5a5a";return{id:`u-${a.id}-${b.tableId}`,source:a.id,target:b.tableId,...bi(a.id,b.tableId),type:"default",markerEnd:{type:i.TG.ArrowClosed,color:c},style:{stroke:c,strokeDasharray:"4 4",opacity:.7}}})),[aZ,bi]),bt=(0,e.useMemo)(()=>K?[...br,...bs]:br,[br,bs,K]),bu=(0,e.useMemo)(()=>bb.map(a=>({id:`annoe-${a.id}`,source:a.targetId,sourceHandle:`pin-${a.id}`,target:`anno-${a.id}`,targetHandle:"in",type:"annotation",selectable:!1,zIndex:30,style:{stroke:w.V5,strokeWidth:1.5,opacity:.9}})),[bb]),bv=M?.id??R,bw=(0,e.useMemo)(()=>{if(P){let a=bt.find(a=>a.id===P);return a?new Set([a.source,a.target]):null}return bv?(0,q.F1)(bv,bt):null},[bv,P,bt]),bx=(0,e.useMemo)(()=>new Map(aY.map(a=>[a.id,{domain:a.domain,source:a.source}])),[aY]),by=(0,e.useMemo)(()=>new Map(aZ.map(a=>[a.id,{method:a.method,source:a.source}])),[aZ]),bz=(0,e.useMemo)(()=>{let a=new Set;if(!K)for(let b of by.keys())a.add(b);for(let[b,c]of bx)!aG.size||c.domain&&aG.has(c.domain)||a.add(b),aK.size&&!aK.has(c.source)&&a.add(b);for(let[b,c]of by)aM.size&&!aM.has(c.method)&&a.add(b),aK.size&&!aK.has(c.source)&&a.add(b);return a},[K,bx,by,aG,aK,aM]),bA=aA.trim().length>0,bB=(0,e.useMemo)(()=>{if(!bA)return null;let a=new Set;for(let b of aY)!bz.has(b.id)&&(0,Y.Qk)((0,Y.jF)(b),aA)&&a.add(b.id);for(let b of aZ)!bz.has(b.id)&&(0,Y.Qk)((0,Y.sQ)(b),aA)&&a.add(b.id);return a},[aY,aZ,bz,aA,bA]),bC=(0,e.useMemo)(()=>bA?[...(0,Y.r2)(aY.filter(a=>!bz.has(a.id)),aA,a=>(0,Y.jF)(a),a=>({id:a.id,label:a.name,sublabel:a.domain??"table",kind:"table"})),...(0,Y.r2)(aZ.filter(a=>!bz.has(a.id)),aA,a=>(0,Y.sQ)(a),a=>({id:a.id,label:a.path,sublabel:a.method,kind:"endpoint"}))].slice(0,12):[],[aY,aZ,bz,aA,bA]),bD=(0,e.useCallback)(a=>{aB(""),N(by.has(a)?{id:a,kind:"endpoint"}:{id:a,kind:"table"}),Q(null),U(!0),ax("details");let b=aC.current?.getNode(a);if(!b||!aC.current)return;let c=b.measured?.width??220,d=b.measured?.height??80;aC.current.setCenter(b.position.x+c/2,b.position.y+d/2,{zoom:.9,duration:600})},[by]),bE=bB??bw,bF=(0,e.useMemo)(()=>bm.map(a=>{if(a.id.startsWith("anno-")){let b=bd.get(a.id),c=!!b&&bz.has(b);return!!a.hidden!==c?{...a,hidden:c}:a}let b=bz.has(a.id);if(!bE)return b?{...a,hidden:b}:a;let c=bE.has(a.id),d=bB?Y.Uy:.45;return{...a,hidden:b,style:{...a.style,opacity:c?1:d,boxShadow:c&&bB?Y.RU:a.style?.boxShadow,borderRadius:c&&bB?12:a.style?.borderRadius,transition:"opacity 120ms, box-shadow 120ms"}}}),[bm,bz,bE,bB,bd]),bG=(0,e.useMemo)(()=>{let a=new Map(aY.map(a=>[a.id,(a.domain??"").trim()||"—"])),b=ae(aY,aZ.map(a=>({id:a.id,method:a.method,path:a.path,uses:a.tables.map(a=>({tableId:a.tableId}))})));return new Map(aZ.map(c=>{let d=b.get(c.id);return[c.id,d?a.get(d):ac]}))},[aY,aZ]),bH=(0,e.useMemo)(()=>{let a=[];for(let b of bm)if(!bz.has(b.id))if("dbTable"===b.type){let c=b.data;a.push({id:b.id,group:(c.domain??"").trim()||"—",x:b.position.x,y:b.position.y,w:b.measured?.width??280,h:b.measured?.height??38+28*c.columns.length})}else"endpoint"===b.type&&a.push({id:b.id,group:bG.get(b.id)??ac,x:b.position.x,y:b.position.y,w:b.measured?.width??240,h:b.measured?.height??50});return(0,_.S)(a)},[bm,bz,bG]),bI=(0,e.useMemo)(()=>bB?bt.map(a=>{let b=bz.has(a.source)||bz.has(a.target);return bB.has(a.source)&&bB.has(a.target)?{...a,hidden:b,style:{...a.style,opacity:1}}:{...a,hidden:b,label:void 0,style:{...a.style,opacity:.08}}}):bt.map(a=>{let b=bz.has(a.source)||bz.has(a.target);return bv||P?(P?a.id===P:bv&&(a.source===bv||a.target===bv))?{...a,hidden:b,zIndex:20,style:{...a.style,opacity:1,strokeWidth:2.5}}:{...a,hidden:b,selectable:!1,label:void 0,markerEnd:void 0,style:{...a.style,opacity:.08}}:{...a,hidden:b,label:void 0}}),[bt,bv,P,bz,bB]),bJ=(0,e.useMemo)(()=>Array.from(new Set(aY.map(a=>a.domain).filter(a=>!!a))).sort(),[aY]),bK=(0,e.useMemo)(()=>Array.from(new Set([...aY.map(a=>a.source),...aZ.map(a=>a.source)])).sort(),[aY,aZ]),bL=(0,e.useMemo)(()=>Array.from(new Set(aZ.map(a=>a.method))).sort(),[aZ]);function bM(a,b){b(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})}let bN=+!K+aG.size+aK.size+aM.size,bO=(0,e.useCallback)(()=>{L(!0),aH(new Set),aL(new Set),aN(new Set)},[]),bP=(0,e.useCallback)(a=>{let{source:b,target:c}=a;b&&c&&b!==c&&aR(a=>{if(!(a.tables.some(a=>a.id===c)||bk.has(c)))return a;let d=a.endpoints.find(a=>a.id===b);return d?d.links.some(a=>a.tableId===c)?a:{...a,endpoints:a.endpoints.map(a=>{var d;return a.id===b?{...a,links:[...a.links,{tableId:c,access:(d=a.method,$.has(d.trim().toUpperCase())?"read":"write")}]}:a})}:a.tables.find(a=>a.id===b)?a.relations.some(a=>a.fromTableId===b&&a.toTableId===c)?a:{...a,relations:[...a.relations,{id:crypto.randomUUID(),fromTableId:b,toTableId:c,fromColumn:"fk",toColumn:"id",label:null}]}:a})},[aR,bk]),bQ=(0,e.useMemo)(()=>({readOnly:F,patchEndpoint:(a,b)=>aR(c=>({...c,endpoints:c.endpoints.map(c=>c.id===a?{...c,...b}:c)})),deleteEndpoint:a=>aR(b=>({...b,endpoints:b.endpoints.filter(b=>b.id!==a)})),patchTable:(a,b)=>aR(c=>({...c,tables:c.tables.map(c=>c.id===a?{...c,...b}:c)})),deleteTable:a=>aR(b=>({...b,tables:b.tables.filter(b=>b.id!==a),relations:b.relations.filter(b=>b.fromTableId!==a&&b.toTableId!==a),endpoints:b.endpoints.map(b=>({...b,links:b.links.filter(b=>b.tableId!==a)}))})),deleteRealEndpoint:a=>{fetch(`/api/endpoints/${a}`,{method:"DELETE"}).then(a=>{a.ok&&G.refresh()})}}),[F,aR,G]),bR=(0,e.useCallback)(async()=>{az(!0);try{if((await fetch("/api/draft/approve",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(aQ)})).ok){try{localStorage.removeItem(at)}catch{}aV(au),G.refresh()}}finally{az(!1)}},[aQ,aV,G]),bS=(0,e.useCallback)(async()=>{az(!0);try{await fetch("/api/draft",{method:"DELETE"})}catch{}try{localStorage.removeItem(at)}catch{}aV(au),G.refresh(),az(!1)},[aV,G]),bT=(0,e.useMemo)(()=>{let a;return a=new Map(aQ.tables.map(a=>[a.id,a.name])),{tables:aQ.tables.map(a=>({name:a.name,domain:a.domain,description:a.description,columns:a.columns.map(a=>({name:a.name,type:a.type,isPk:a.isPk,isFk:a.isFk,nullable:a.nullable,note:a.note}))})),relations:aQ.relations.flatMap(b=>{let c=a.get(b.fromTableId),d=a.get(b.toTableId);return c&&d?[{fromTable:c,fromColumn:b.fromColumn,toTable:d,toColumn:b.toColumn,label:b.label}]:[]}),endpoints:aQ.endpoints.map(b=>({method:b.method,path:b.path,domain:b.domain,description:b.description,uses:b.links.flatMap(b=>{let c=a.get(b.tableId);return c?[{table:c,access:b.access}]:[]})}))}},[aQ]),bU=aQ.tables.length>0||aQ.endpoints.length>0,bV=aO.past.length>0,bW=aO.future.length>0;return(0,d.jsx)(r.Provider,{value:bQ,children:(0,d.jsxs)("div",{className:(0,p.cn)("canvas-dots relative w-full",l?"h-full":"h-screen",ap&&"rf-panning"),children:[(0,d.jsxs)(h.Gc,{...aF,nodes:bF,edges:"far"===aI?[...bI,...bu].map(a=>({...a,hidden:!0})):[...bI,...bu.map(a=>({...a,hidden:bz.has(a.source)}))],nodeTypes:ar,edgeTypes:as,nodesConnectable:!F,connectionMode:i.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onInit:a=>{aC.current=a},onNodesChange:bo,onMoveStart:()=>aq(!0),onMoveEnd:()=>aq(!1),onConnect:bP,onNodeMouseEnter:(a,b)=>{"annotation"!==b.type&&S(b.id)},onNodeMouseLeave:()=>S(null),onNodeClick:(a,b)=>{if("annotation"===b.type){let a=b.data;a.editable||B?.(a.annotationId);return}let c="endpoint"===b.type?"endpoint":"table";N({id:b.id,kind:c}),Q(null),U(!0),ax("details")},onEdgeClick:(a,b)=>{Q(b.id),N(null)},onPaneClick:()=>{N(null),Q(null),U(!1)},onNodeDragStop:bq,onEdgesDelete:a=>{for(let b of a)if(b.id.startsWith("fk-")){let a=b.id.slice(3);fetch(`/api/db/relations/${a}`,{method:"DELETE"})}},onNodesDelete:a=>{for(let b of a)b.id.startsWith("anno-")||bj.has(b.id)||("endpoint"===b.type?fetch(`/api/endpoints/${b.id}`,{method:"DELETE"}):"dbTable"===b.type&&fetch(`/api/db/tables/${b.id}`,{method:"DELETE"}))},deleteKeyCode:F?null:["Backspace","Delete"],colorMode:"dark",fitView:!0,fitViewOptions:{padding:.15,minZoom:.38,maxZoom:.9},minZoom:.15,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[(0,d.jsx)(ag.Z,{regions:bH,tone:"category",lod:aI}),(0,d.jsx)(t.J,{onLod:aJ,thresholds:u.fE}),(0,d.jsx)(h.H2,{position:"bottom-right",className:"!overflow-hidden !rounded-xl !border !border-white/10 [&_button]:!border-white/10 [&_button]:!bg-card/70 [&_button]:!text-foreground [&_button]:!backdrop-blur"}),!l&&(0,d.jsx)(h.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!overflow-hidden !rounded-xl !border !border-white/10 !bg-card/50 !backdrop-blur",nodeColor:"#555"}),(0,d.jsx)(h.Zk,{position:"bottom-left",style:{marginBottom:118},children:(0,d.jsx)(f.H,{tool:aD,onChange:aE})}),!l&&(0,d.jsx)(h.Zk,{position:"bottom-center",className:"!mb-4",children:(0,d.jsx)("div",{className:"glass flex items-center rounded-full p-0.5",children:(0,d.jsxs)("button",{type:"button",disabled:ay,title:"Re-arrange the board — domain clusters with endpoints docked under their tables",onClick:async()=>{az(!0);try{let a=window.innerWidth/window.innerHeight;await fetch("/api/db/arrange",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({viewportAspect:a})}),G.refresh()}finally{az(!1)}},className:"flex h-6 items-center gap-1.5 rounded-full px-3 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground disabled:opacity-40",children:[(0,d.jsx)(ai.A,{className:"size-3"}),ay?"Arranging…":"Arrange"]})})}),!l&&(0,d.jsx)(h.Zk,{position:"top-center",className:"glass rounded-full px-1 py-0.5",children:(0,d.jsx)(Z.Z,{active:"DATABASE",tabs:[{value:"ROADMAP",label:"Roadmap",href:"/map?view=ROADMAP"},{value:"ARCHITECTURE",label:"Architecture",href:"/map?view=ARCHITECTURE"},{value:"DATABASE",label:"Database",href:"/map?view=DATABASE"},{value:"FILES",label:"Files",href:"/map?view=FILES"}]})}),(0,d.jsxs)(h.Zk,{position:"top-right",className:(0,p.cn)("flex items-center gap-1 transition-[margin] duration-200",T&&"!mr-[332px]",l&&"hidden"),children:[(0,d.jsx)(W.X,{query:aA,onQuery:aB,hits:bC,placeholder:"Find a table, column, endpoint…",onPick:bD,onZoomToMatches:()=>{bB?.size&&aC.current?.fitView({nodes:[...bB].map(a=>({id:a})),duration:600,padding:.2})}}),(0,d.jsx)(X.e,{defaultSelection:"DATABASE"}),(0,d.jsxs)(V.er,{title:"Filters",trigger:(a,b)=>(0,d.jsxs)("button",{type:"button",onClick:b,title:"Filters",className:(0,p.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",a||bN>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,d.jsx)(aj.A,{className:"size-4"}),bN>0&&(0,d.jsx)("span",{className:"absolute -right-1 -top-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-[var(--accent-2,#ff7a45)] px-1 text-[9px] font-semibold text-white",children:bN})]}),children:[(0,d.jsx)(V.r1,{title:"Show",children:(0,d.jsx)(V.vu,{tone:"accent",on:K,onClick:()=>L(a=>!a),children:"endpoints"})}),bJ.length>0&&(0,d.jsx)(V.r1,{title:"Domain",children:bJ.map(a=>(0,d.jsx)(V.vu,{on:aG.has(a),onClick:()=>bM(a,aH),children:a},a))}),bL.length>0&&(0,d.jsx)(V.r1,{title:"Method",children:bL.map(a=>(0,d.jsx)(V.vu,{on:aM.has(a),onClick:()=>bM(a,aN),children:a},a))}),bK.length>0&&(0,d.jsx)(V.r1,{title:"Source",children:bK.map(a=>(0,d.jsx)(V.vu,{on:aK.has(a),onClick:()=>bM(a,aL),children:a.toLowerCase()},a))}),bN>0&&(0,d.jsx)("button",{type:"button",onClick:bO,className:"mt-1 w-full rounded-md border border-white/10 px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:"clear filters"})]}),(0,d.jsx)(V.er,{title:"Legend",trigger:(a,b)=>(0,d.jsx)("button",{type:"button",onClick:b,title:"Legend",className:(0,p.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",a?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,d.jsx)(ak.A,{className:"size-4"})}),children:(0,d.jsxs)("ul",{className:"space-y-1.5 text-[10.5px] text-muted-foreground",children:[(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded border border-white/15 bg-white/[0.06] px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-foreground/80",children:"table"}),(0,d.jsx)("span",{children:"a database table \xb7 its columns"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded border border-white/15 bg-white/[0.06] px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-foreground/80",children:"endpoint"}),(0,d.jsx)("span",{children:"an API route \xb7 reads / writes tables"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-px w-6 bg-[#6b6b6b]"}),(0,d.jsx)("span",{children:"foreign key \xb7 drag from a table handle"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#4ea1ff"}}),(0,d.jsx)("span",{children:"endpoint read \xb7 GET / POST / etc"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#ffb86b"}}),(0,d.jsx)("span",{children:"endpoint write"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded border border-dashed border-sky-400/50 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"draft"}),(0,d.jsx)("span",{children:"agent-proposed \xb7 approve to persist"})]})]})}),!T&&(0,d.jsx)("button",{onClick:()=>U(!0),title:"Show panel",className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,d.jsx)(al.A,{className:"size-4"})})]}),bU&&(0,d.jsxs)(h.Zk,{position:"bottom-center",className:"glass flex items-center gap-1 rounded-xl p-1.5",children:[(0,d.jsxs)("button",{onClick:aT,disabled:!bV,title:"Undo (⌘Z)",className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground disabled:opacity-30 disabled:hover:bg-transparent",children:[(0,d.jsx)(am.A,{className:"size-3.5"})," undo"]}),(0,d.jsxs)("button",{onClick:aU,disabled:!bW,title:"Redo (⇧⌘Z)",className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground disabled:opacity-30 disabled:hover:bg-transparent",children:[(0,d.jsx)(an.A,{className:"size-3.5"})," redo"]}),!l&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"mx-1 h-4 w-px bg-white/10"}),(0,d.jsxs)("button",{onClick:bS,disabled:ay,title:"Discard draft",className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-red-500/15 hover:text-red-300 disabled:opacity-40",children:[(0,d.jsx)(m.A,{className:"size-3.5"})," discard"]}),(0,d.jsxs)("button",{onClick:bR,disabled:ay,title:"Approve and persist to the schema",className:"flex items-center gap-1 rounded-md border border-emerald-500/40 bg-emerald-500/15 px-2.5 py-1 text-[11px] font-semibold text-emerald-300 transition-colors hover:bg-emerald-500/25 disabled:opacity-40",children:[(0,d.jsx)(ao.A,{className:"size-3.5"})," approve draft"]})]})]})]}),T&&(0,d.jsx)(O,{selected:M,tables:aY,relations:a2,endpoints:aZ,draftGraph:bT,onClose:()=>{U(!1),ax("details")},commentsContent:x,commentsCount:y,activeTab:aw,onTabChange:ax,onAddComment:bh,topOffset:l?64:void 0})]})})}},29303:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(62896);c(22443);var e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},32450:(a,b,c)=>{c.d(b,{$2:()=>g,a4:()=>e,no:()=>f});var d=c(67484);let e=new Set(["ROADMAP","ARCHITECTURE","DATABASE"]),f=(0,d.createContext)(null);function g(){return(0,d.useContext)(f)}},32798:(a,b,c)=>{c.d(b,{m:()=>d});function d(a,b){let c=[];return a.forEach((a,d)=>{let e=a.excerpt.trim();if(!e)return;let f={annotationId:a.id,n:d+1};for(let a of b.tables){if(e===a.name)return void c.push({...f,kind:"table",targetId:a.id,column:null});if(e.startsWith(`${a.name}.`)){let b=e.slice(a.name.length+1);if(a.columns.includes(b))return void c.push({...f,kind:"column",targetId:a.id,column:b})}}for(let a of b.endpoints??[])if(e===`${a.method} ${a.path}`)return void c.push({...f,kind:"endpoint",targetId:a.id,column:null});for(let a of b.features??[])if(e===a.title||e===`feature: ${a.title}`)return void c.push({...f,kind:"feature",targetId:a.id,column:null})}),c}},33346:(a,b,c)=>{c.d(b,{a2:()=>g,i3:()=>j,xZ:()=>h});let d=["bg-emerald-500/15 text-emerald-300","bg-sky-500/15 text-sky-300","bg-violet-500/15 text-violet-300","bg-amber-500/15 text-amber-200","bg-rose-500/15 text-rose-300","bg-cyan-500/15 text-cyan-300","bg-fuchsia-500/15 text-fuchsia-300","bg-lime-500/15 text-lime-300","bg-orange-500/15 text-orange-300","bg-teal-500/15 text-teal-300","bg-indigo-500/15 text-indigo-300","bg-pink-500/15 text-pink-300"],e=["border-emerald-500/20 bg-emerald-500/[0.04]","border-sky-500/20 bg-sky-500/[0.04]","border-violet-500/20 bg-violet-500/[0.04]","border-amber-500/20 bg-amber-500/[0.04]","border-rose-500/20 bg-rose-500/[0.04]","border-cyan-500/20 bg-cyan-500/[0.04]","border-fuchsia-500/20 bg-fuchsia-500/[0.04]","border-lime-500/20 bg-lime-500/[0.04]","border-orange-500/20 bg-orange-500/[0.04]","border-teal-500/20 bg-teal-500/[0.04]","border-indigo-500/20 bg-indigo-500/[0.04]","border-pink-500/20 bg-pink-500/[0.04]"];function f(a){let b=(a??"").trim().toUpperCase();if(!b)return null;let c=0;for(let a=0;a<b.length;a++)c=31*c+b.charCodeAt(a)>>>0;return c%d.length}function g(a){let b=f(a);return null===b?"bg-white/[0.06] text-muted-foreground":d[b]}function h(a){let b=f(a);return null===b?"border-white/10 bg-white/[0.02]":e[b]}let i=["#34d399","#38bdf8","#a78bfa","#fbbf24","#fb7185","#22d3ee","#e879f9","#a3e635","#fb923c","#2dd4bf","#818cf8","#f472b6"];function j(a){let b=f(a);return null===b?"#9ca3af":i[b]}},34849:(a,b,c)=>{c.d(b,{VI:()=>g});var d=c(27267),e=c(86892);function f(a,b,c){let d,e;return null==a.title?c:Math.max(c,(e=66+(((d=(a.title??"").trim())?Math.max(1,Math.ceil(d.length/17)):1)-1)*19,a.role&&a.role.trim()&&(e+=16),b>0&&(e+=22),e+24))}function g(a,b,c={}){let h=c.colW??320,i=c.rowH??150,j=c.childIndent??24,k=c.laneGap??56,l=c.bandGap??110,m=c.maxCols??10,n=c.minBandW??3*h,o=new Set(a.map(a=>a.id)),p=a=>!a.parentId||!o.has(a.parentId),q=a.filter(p),r=new Map;for(let b of a){if(p(b))continue;let a=r.get(b.parentId);a?a.push(b):r.set(b.parentId,[b])}let s="status"===b?a=>a.status:"priority"===b?a=>String(a.priority):a=>(a.cluster??"").trim()||"—",t=new Map;for(let a of q){let b=s(a),c=t.get(b);c?c.push(a):t.set(b,[a])}let u=(function(a,b,c){if("status"===a)return[...d.TT];if("priority"===a)return["0","1","2","3"];let e=Array.from(new Set(b.map(c))),f=e.filter(a=>"—"!==a).sort();return e.includes("—")?[...f,"—"]:f})(b,q,s).filter(a=>t.has(a)),v=[];for(let a of u){let b=t.get(a),c=b.reduce((a,b)=>a+1+(r.get(b.id)?.length??0),0),d=Math.max(1,Math.min(m,b.length,Math.round(Math.sqrt(.85*c))||1)),e=Array(d).fill(0),g=new Map;for(let a of b){let b=0;for(let a=1;a<d;a++)e[a]<e[b]&&(b=a);let c=b*h,k=e[b];g.set(a.id,{x:c,y:k});let l=r.get(a.id)??[],m=k+f(a,l.length,i);for(let a of l)g.set(a.id,{x:c+j,y:m}),m+=f(a,0,i);e[b]=m}let k=e.reduce((a,b)=>Math.max(a,b),0);v.push({id:a,w:d*h,h:k,local:g})}let w=(0,e.Xi)(v.map(a=>({id:a.id,w:a.w,h:a.h})),{gapX:k,gapY:l,viewportAspect:c.viewportAspect,minBandW:n,aspectSlack:1.5}),x=new Map;for(let a of v){let b=w.get(a.id);for(let[c,d]of a.local)x.set(c,{x:b.x+d.x,y:b.y+d.y})}return x}},35283:(a,b,c)=>{c.d(b,{H:()=>k,e:()=>j});var d=c(48249),e=c(67484),f=c(55030),g=c(8727),h=c(44010),i=c(33191);function j(a="pan"){let[b,c]=(0,e.useState)(a),d="pan"===b?{panOnDrag:!0,selectionOnDrag:!1,selectionMode:f.Qc.Partial,selectNodesOnDrag:!1}:{panOnDrag:[1,2],selectionOnDrag:!0,selectionMode:f.Qc.Partial,selectNodesOnDrag:!1};return{tool:b,setTool:c,flowProps:d,paneClass:"select"===b?"rf-tool-select":void 0}}function k({tool:a,onChange:b}){return(0,d.jsxs)("div",{className:"flex items-center gap-0.5 rounded-xl border border-white/15 bg-[#202024]/95 p-1 shadow-lg backdrop-blur",children:[(0,d.jsx)(l,{active:"select"===a,label:"Select tool (V) — drag to box-select; move many nodes at once",onClick:()=>b("select"),children:(0,d.jsx)(g.A,{className:"size-4"})}),(0,d.jsx)(l,{active:"pan"===a,label:"Hand tool (H) — drag to pan the board",onClick:()=>b("pan"),children:(0,d.jsx)(h.A,{className:"size-4"})})]})}function l({active:a,label:b,onClick:c,children:e}){return(0,d.jsx)("button",{type:"button",title:b,"aria-pressed":a,onClick:c,className:(0,i.cn)("flex size-7 items-center justify-center rounded-lg transition-colors",a?"bg-[#ff7a45]/15 text-[#ff7a45]":"text-muted-foreground hover:bg-white/8 hover:text-foreground"),children:e})}},38476:(a,b,c)=>{c.d(b,{F1:()=>h,e6:()=>f,qA:()=>e,ru:()=>g});let d={auth:"#4ea1ff",firms:"#c792ea",search:"#7bd389",storage:"#ffb86b",petitions:"#ff7a45",monitoring:"#f5b942",admin:"#ff6b9d"};function e(a){return a&&d[a]||"#8a8a8a"}let f={GET:"#7bd389",POST:"#4ea1ff",PUT:"#ffb86b",PATCH:"#ffb86b",DELETE:"#ff3860"},g={read:"#4ea1ff",write:"#ffb86b","read-write":"#c792ea"};function h(a,b){let c=new Set([a]);for(let d of b)d.source===a&&c.add(d.target),d.target===a&&c.add(d.source);return c}},40335:(a,b,c)=>{c.d(b,{b:()=>g,d:()=>h});let d=a=>a.slice(a.lastIndexOf("/")+1),e=(a,b)=>b>a?", …":"";function f(a){let b=new Map;for(let c of a)b.set(d(c),(b.get(d(c))??0)+1);return a.map(a=>{let c=d(a);if((b.get(c)??0)<=1)return c;let e=a.slice(0,a.lastIndexOf("/")),f=e.slice(e.lastIndexOf("/")+1);return f?`${f}/${c}`:c})}function g(a,b,c){if(0===a.length)return[];let d=a=>c.get(a)??"(root)",g=new Map;for(let b of a){let a=d(b.path),c=g.get(a);c?c.push(b):g.set(a,[b])}let h=[...g.keys()],i=a=>g.get(a)?.length??0,j=new Map,k=new Map;for(let a of h)j.set(a,new Set),k.set(a,0);let l=new Set;for(let a of b){if(a.circular)continue;let b=d(a.from),c=d(a.to);if(b===c||!j.has(b)||!j.has(c))continue;let e=`${b}\0${c}`;l.has(e)||(l.add(e),j.get(b).add(c),k.set(c,(k.get(c)??0)+1))}let m=(a,b)=>i(b)-i(a)||a.localeCompare(b),n=new Map(k),o=new Set,p=[];for(;p.length<h.length;){let a=h.filter(a=>!o.has(a)&&(n.get(a)??0)===0).sort(m);if(0===a.length){for(let a of h.filter(a=>!o.has(a)).sort((a,b)=>(n.get(a)??0)-(n.get(b)??0)||i(b)-i(a)||a.localeCompare(b)))p.push(a),o.add(a);break}for(let b of a)for(let a of(p.push(b),o.add(b),j.get(b)))n.set(a,(n.get(a)??0)-1)}let q=a.filter(a=>(a.inDegree??0)===0).sort((a,b)=>(b.outDegree??0)-(a.outDegree??0)||a.path.localeCompare(b.path)),r=[];if(r.push({id:"tour:overview",kind:"overview",title:"Project overview",summary:`${a.length} files across ${h.length} ${1===h.length?"area":"areas"} \xb7 ${b.length} imports. Step through the architecture in dependency order — entry points first.`,focusIds:[]}),q.length){let a=f(q.slice(0,4).map(a=>a.path));r.push({id:"tour:entry",kind:"entry",title:"Entry points",summary:`${q.length} file${1===q.length?"":"s"} nothing imports — where execution starts: ${a.join(", ")}${e(4,q.length)}.`,focusIds:q.slice(0,12).map(a=>a.path)})}for(let a of p){let b=g.get(a),c=f([...b].sort((a,b)=>(b.inDegree??0)-(a.inDegree??0)||a.path.localeCompare(b.path)).slice(0,3).map(a=>a.path)),d=[...j.get(a)].sort(m),h=d.length?` \xb7 imports ${d.slice(0,3).join(", ")}${e(3,d.length)}`:" \xb7 no cross-area imports";r.push({id:`tour:group:${a}`,kind:"group",title:a,summary:`${b.length} file${1===b.length?"":"s"}${h} \xb7 top hubs: ${c.join(", ")}.`,focusIds:b.map(a=>a.path)})}return r}function h(a){if(0===a.length)return[];let b=a=>a.cluster?.trim()||"—",c=new Map;for(let d of a){let a=b(d),e=c.get(a);e?e.push(d):c.set(a,[d])}let d=a=>Math.min(...c.get(a).map(a=>a.x??0)),f=[...c.keys()].sort((a,b)=>d(a)-d(b)||a.localeCompare(b)),g=[{id:"tour:overview",kind:"overview",title:"Architecture overview",summary:`${a.length} component${1===a.length?"":"s"} across ${f.length} ${1===f.length?"domain":"domains"}. Walk the architecture domain by domain, upstream first.`,focusIds:[]}];for(let a of f){let b=c.get(a),d=b.slice(0,3).map(a=>a.title?.trim()||a.id);g.push({id:`tour:domain:${a}`,kind:"group",title:a,summary:`${b.length} component${1===b.length?"":"s"}: ${d.join(", ")}${e(3,b.length)}.`,focusIds:b.map(a=>a.id)})}return g}},40359:(a,b,c)=>{c.d(b,{d:()=>k});var d=c(48249),e=c(32039),f=c(45535),g=c(34644),h=c(91995),i=c(48779),j=c(33191);function k({steps:a,index:b,onPrev:c,onNext:l,onExit:m,onGoto:n}){let o=a[b];if(!o)return null;let p=b===a.length-1;return(0,d.jsxs)(i.b,{className:"absolute bottom-3 left-3 top-16 z-10 flex w-72 flex-col rounded-2xl",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,d.jsxs)("span",{className:"flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:[(0,d.jsx)(e.A,{className:"size-3.5"}),"Guided tour"]}),(0,d.jsx)("button",{onClick:m,title:"End tour (Esc)",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(f.A,{className:"size-4"})})]}),(0,d.jsxs)("div",{className:"border-b border-white/10 px-3.5 py-3",children:[(0,d.jsxs)("div",{className:"text-[10px] font-medium uppercase tracking-wide text-[var(--accent-2,#ff7a45)]",children:["Step ",b+1," / ",a.length]}),(0,d.jsx)("h2",{className:"mt-1 break-words text-sm font-semibold leading-tight",children:o.title}),(0,d.jsx)("p",{className:"mt-1 text-[11px] leading-snug text-muted-foreground",children:o.summary})]}),(0,d.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto p-1.5",children:(0,d.jsx)("ol",{className:"space-y-0.5",children:a.map((a,c)=>(0,d.jsx)("li",{children:(0,d.jsxs)("button",{onClick:()=>n(c),title:a.title,className:(0,j.cn)("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left transition-colors",c===b?"bg-white/[0.08] text-foreground":"text-muted-foreground hover:bg-white/[0.04] hover:text-foreground"),children:[(0,d.jsx)("span",{className:(0,j.cn)("flex size-4 shrink-0 items-center justify-center rounded-full text-[9px] font-bold",c===b?"bg-[var(--accent-2,#ff7a45)] text-background":"bg-white/10 text-muted-foreground"),children:c+1}),(0,d.jsx)("span",{className:"truncate text-[11px]",children:a.title})]})},a.id))})}),(0,d.jsxs)("div",{className:"flex items-center justify-between gap-2 border-t border-white/10 p-2",children:[(0,d.jsxs)("button",{onClick:c,disabled:0===b,className:"flex items-center gap-1 rounded-md px-2 py-1.5 text-[11px] text-muted-foreground transition-colors enabled:hover:bg-white/[0.06] enabled:hover:text-foreground disabled:opacity-40",children:[(0,d.jsx)(g.A,{className:"size-3.5"})," Prev"]}),p?(0,d.jsx)("button",{onClick:m,className:"rounded-md bg-[var(--accent-2,#ff7a45)]/90 px-3 py-1.5 text-[11px] font-semibold text-background transition-colors hover:bg-[var(--accent-2,#ff7a45)]",children:"Done"}):(0,d.jsxs)("button",{onClick:l,className:"flex items-center gap-1 rounded-md bg-white/10 px-3 py-1.5 text-[11px] font-semibold text-foreground transition-colors hover:bg-white/[0.16]",children:["Next ",(0,d.jsx)(h.A,{className:"size-3.5"})]})]})]})}},42800:(a,b,c)=>{c.d(b,{I:()=>i});var d=c(48249),e=c(56024),f=c(55030),g=c(57684),h=c(23727);function i(a){let{deleteElements:b}=(0,e.VH)(),c=(0,e.JY)(a.source),i=(0,e.JY)(a.target),j=c&&i?(0,h.U)(c,i):null,[k,l,m]=(0,f.Fp)(j?{sourceX:j.sx,sourceY:j.sy,sourcePosition:j.sourcePos,targetX:j.tx,targetY:j.ty,targetPosition:j.targetPos}:{sourceX:a.sourceX,sourceY:a.sourceY,sourcePosition:a.sourcePosition,targetX:a.targetX,targetY:a.targetY,targetPosition:a.targetPosition});return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(e.tE,{id:a.id,path:k,style:a.style,markerEnd:a.markerEnd,interactionWidth:20}),a.label&&(0,d.jsx)(e.rV,{children:(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -120%) translate(${l}px, ${m}px)`,fontSize:11,color:"#cfcfcf",background:"#161616",padding:"1px 4px",borderRadius:4,pointerEvents:"none",zIndex:1e3},children:a.label})}),a.selected&&(0,d.jsx)(e.rV,{children:(0,d.jsx)("div",{className:"nodrag nopan",style:{position:"absolute",transform:`translate(-50%, 0) translate(${l}px, ${m+14}px)`,pointerEvents:"all",zIndex:1e3},children:(0,d.jsx)("button",{type:"button",onMouseDown:a=>a.stopPropagation(),onClick:c=>{c.stopPropagation(),b({edges:[{id:a.id}]})},title:"Delete (or press Backspace)",className:"flex size-7 items-center justify-center rounded-full border border-white/20 bg-card/95 text-red-300 shadow-lg backdrop-blur-md transition-colors hover:bg-red-500/25 hover:text-red-200",children:(0,d.jsx)(g.A,{className:"size-3.5"})})})})]})}},47162:()=>{},47446:(a,b,c)=>{},50042:(a,b,c)=>{c(31421),c(77598),c(48161),c(76760),c(80941)},50320:(a,b,c)=>{c(66625)},50605:(a,b,c)=>{c.d(b,{J:()=>h,k:()=>g});var d=c(67484),e=c(56024),f=c(91365);function g(a){let[b,c]=(0,d.useState)("full"),g=(0,e.Pj)(c=>(0,f.gt)(c.transform[2],b,a));return g!==b&&c(g),g}function h({onLod:a,thresholds:b}){return g(b),(0,d.useRef)(null),null}},52351:(a,b,c)=>{c.d(b,{$v:()=>w,EO:()=>s,Lt:()=>o,Rx:()=>x,Zr:()=>y,ck:()=>u,r7:()=>v,tv:()=>p,wd:()=>t});var d=c(48249);c(67484);var e=c(71523),f=c(99469),g=c(60388),h=c(74283),i=c(25845),j=c(36902),k=c(64230),l=c(87298),m=c(33191),n=c(26284);function o({...a}){return(0,d.jsx)(e.V,{"data-slot":"alert-dialog",...a})}function p({...a}){return(0,d.jsx)(f.t,{"data-slot":"alert-dialog-trigger",...a})}function q({...a}){return(0,d.jsx)(g.Z,{"data-slot":"alert-dialog-portal",...a})}function r({className:a,...b}){return(0,d.jsx)(h.X,{"data-slot":"alert-dialog-overlay",className:(0,m.cn)("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",a),...b})}function s({className:a,size:b="default",...c}){return(0,d.jsxs)(q,{children:[(0,d.jsx)(r,{}),(0,d.jsx)(i.h,{"data-slot":"alert-dialog-content","data-size":b,className:(0,m.cn)("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",a),...c})]})}function t({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,m.cn)("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",a),...b})}function u({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,m.cn)("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",a),...b})}function v({className:a,...b}){return(0,d.jsx)(j.L,{"data-slot":"alert-dialog-title",className:(0,m.cn)("font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",a),...b})}function w({className:a,...b}){return(0,d.jsx)(k.r,{"data-slot":"alert-dialog-description",className:(0,m.cn)("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",a),...b})}function x({className:a,variant:b,size:c,...e}){return(0,d.jsx)(l.H,{"data-slot":"alert-dialog-action",className:(0,m.cn)(a),render:(0,d.jsx)(n.$,{variant:b,size:c}),...e})}function y({className:a,variant:b="outline",size:c="default",...e}){return(0,d.jsx)(l.H,{"data-slot":"alert-dialog-cancel",className:(0,m.cn)(a),render:(0,d.jsx)(n.$,{variant:b,size:c}),...e})}},54193:(a,b,c)=>{c.d(b,{X:()=>j});var d=c(48249),e=c(67484),f=c(29813),g=c(45535),h=c(33191),i=c(92994);function j({query:a,onQuery:b,hits:c,onPick:k,onZoomToMatches:l,placeholder:m="Search…"}){let[n,o]=(0,e.useState)(!1);return(0,d.jsxs)(i.er,{title:"Search",open:n,onOpenChange:a=>a?o(!0):void(o(!1),b("")),outsideClicksToClose:2,trigger:(b,c)=>(0,d.jsx)("button",{type:"button",onClick:c,title:"Search this canvas",className:(0,h.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",b||a.trim()?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,d.jsx)(f.A,{className:"size-4"})}),children:[(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("input",{autoFocus:!0,value:a,onChange:a=>b(a.target.value),onKeyDown:a=>{"Enter"===a.key&&l&&(a.preventDefault(),l())},placeholder:m,className:"w-full rounded-md border border-white/10 bg-white/[0.04] py-1 pl-2 pr-7 text-[12px] outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.08]"}),a&&(0,d.jsx)("button",{type:"button",onClick:()=>b(""),title:"Clear search",className:"absolute right-1 top-1/2 flex size-5 -translate-y-1/2 items-center justify-center rounded text-muted-foreground/60 transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(g.A,{className:"size-3.5"})})]}),(0,d.jsxs)("div",{className:"mt-2 max-h-64 space-y-0.5 overflow-y-auto",children:[a.trim()&&0===c.length&&(0,d.jsx)("div",{className:"px-1 py-1 text-[11px] text-muted-foreground",children:"No matches"}),c.map(a=>(0,d.jsxs)("button",{type:"button",onClick:()=>{k(a.id),o(!1)},className:"group flex w-full items-center gap-2 rounded-md px-2 py-1 text-left transition-colors hover:bg-white/5",children:[(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate text-[12px] text-muted-foreground transition-colors group-hover:text-foreground",children:a.label}),a.sublabel&&(0,d.jsx)("span",{className:"shrink-0 text-[10px] uppercase tracking-wide text-muted-foreground/50",children:a.sublabel})]},a.id))]})]})}},55805:(a,b,c)=>{c.d(b,{Z:()=>o});var d=c(48249),e=c(67484),f=c(2116),g=c.n(f),h=c(15996),i=c(41665),j=c(79602),k=c(36274);c(79768);var l=c(32450),m=c(33191);let n={ROADMAP:h.A,ARCHITECTURE:i.A,FILES:j.A,DATABASE:k.A};function o({tabs:a,active:b}){let[c,f]=(0,e.useState)(null),h=(0,l.$2)();return(0,d.jsx)("div",{className:"flex items-center gap-0.5",children:a.map(a=>{let e,f=a.value===b,i=a.Icon??n[a.value],j=(0,m.cn)("flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-[12px] font-medium tracking-tight transition-colors",f?"border-white/10 bg-white/[0.07] text-foreground shadow-[inset_0_1px_0_rgba(255,255,255,0.06)]":"border-transparent text-muted-foreground/80 hover:bg-white/5 hover:text-foreground"),k=(0,d.jsxs)(d.Fragment,{children:[i?(0,d.jsx)(i,{className:(0,m.cn)("size-3",f&&"text-[#ff7a45]")}):null,(0,d.jsx)("span",{children:a.label})]});return h?.views.has(a.value)?(0,d.jsx)("button",{type:"button",onClick:()=>h.switchTo(a.value),className:j,children:k},a.value):(0,d.jsx)(g(),{href:(e=a.href,c?`${e}${e.includes("?")?"&":"?"}ws=${c}`:e),className:j,children:k},a.value)})})}},56258:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(62896);c(22443);var e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},58149:(a,b,c)=>{c(47446),c(526)},58720:(a,b,c)=>{c.d(b,{Sh:()=>k,V5:()=>j,e0:()=>m});var d=c(48249),e=c(67484),f=c(56024),g=c(55030),h=c(45535),i=c(33191);let j="#ff7a45";function k({data:a,selected:b}){let[c,l]=(0,e.useState)(a.text);return(0,d.jsxs)("div",{onClick:()=>a.onClick?.(a.annotationId),className:(0,i.cn)("group/anno relative w-[270px] rounded-xl border border-white/10 bg-[#1b1b1e]/95 px-4 py-3 shadow-[0_18px_50px_-20px_rgba(0,0,0,0.9)] backdrop-blur transition-colors hover:border-white/20",!a.editable&&"cursor-pointer",b&&"border-[#ff7a45]/50"),children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute -left-px bottom-2 top-2 w-[3px] rounded-full",style:{background:j}}),(0,d.jsx)(f.h7,{type:"target",id:"in",position:g.yX.Top,isConnectable:!1,className:"!pointer-events-none !size-1 !min-h-0 !min-w-0 !border-0 !bg-transparent",style:{left:"auto",right:22,top:0}}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("div",{className:"font-mono text-[10px] font-semibold uppercase tracking-[0.22em]",style:{color:j},children:"Annotation \xb7 You"}),a.editable&&a.onDelete&&(0,d.jsx)("button",{type:"button",title:"Delete annotation",onClick:b=>{b.stopPropagation(),a.onDelete?.(a.annotationId)},className:"nodrag nopan -mr-1 rounded p-0.5 text-muted-foreground/60 opacity-0 transition-opacity hover:text-red-300 group-hover/anno:opacity-100",children:(0,d.jsx)(h.A,{className:"size-3"})})]}),a.editable?(0,d.jsx)("textarea",{value:c,autoFocus:!a.text.trim(),placeholder:"Type your annotation…",onChange:a=>l(a.target.value),onBlur:()=>{c!==a.text&&a.onChangeText?.(a.annotationId,c)},onKeyDown:a=>a.stopPropagation(),className:"nodrag nopan field-sizing-content mt-1.5 max-h-40 min-h-[2.25rem] w-full resize-none overflow-y-auto bg-transparent text-[13px] leading-snug text-foreground/95 outline-none placeholder:text-muted-foreground/60"}):(0,d.jsx)("div",{className:"mt-1.5 max-h-40 overflow-y-auto text-[13px] leading-snug text-foreground/95",children:a.text.trim()?a.text:(0,d.jsx)("span",{className:"text-muted-foreground",children:"…"})})]})}function l({n:a,annotationId:b,onClick:c}){return(0,d.jsxs)("button",{type:"button",title:`Annotation ${a} — view comment`,onClick:a=>{a.stopPropagation(),c?.(b)},className:"nodrag nopan relative flex size-6 items-center justify-center rounded-full font-mono text-[11px] font-bold text-[#181818] shadow-[0_0_0_3px_rgba(255,122,69,0.22),0_0_16px_2px_rgba(255,122,69,0.4)] transition-transform hover:scale-110",style:{background:j},children:[a,(0,d.jsx)(f.h7,{type:"source",id:`pin-${b}`,position:g.yX.Bottom,isConnectable:!1,className:"!pointer-events-none !size-1 !min-h-0 !min-w-0 !border-0 !bg-transparent",style:{left:"50%",bottom:2}})]})}function m({pins:a,onPinClick:b}){return a.length?(0,d.jsx)("span",{className:"absolute -right-3 top-1/2 z-10 flex -translate-y-1/2 flex-row-reverse gap-1",children:a.map(a=>(0,d.jsx)(l,{n:a.n,annotationId:a.id,onClick:b},a.id))}):null}},62190:(a,b,c)=>{c.d(b,{E:()=>f});var d=c(48249),e=c(33191);function f({active:a,onClick:b,icon:c,children:g}){return(0,d.jsxs)("button",{type:"button",onClick:b,className:(0,e.cn)("flex items-center gap-1 rounded-md px-2.5 py-1 text-[11px] font-medium transition-colors",a?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:[c,g]})}},62896:(a,b,c)=>{c.a(a,async(a,d)=>{try{let m;c.d(b,{db:()=>t,e$:()=>l});var e=c(58296),f=c(28855),g=c(22443),h=c(76909),i=c(80941),j=a([f,e]);[f,e]=j.then?(await j)():j;let n={...g,...h},o=(m=process.env.DATABASE_URL)&&/^(file:|libsql:|wss?:|https?:|:memory:)/i.test(m)?m:"file:./dev.db";function k(a){let b=(0,f.createClient)({url:a});return b.execute("PRAGMA foreign_keys = ON;"),b.execute("PRAGMA busy_timeout = 5000;"),(0,e.f)(b,{schema:n})}let p=globalThis,q=p.dzDefault??k(o),r=p.dzByUrl??=new Map,s=new Map;function l(a=o){if(!/^file:/i.test(a))return Promise.resolve();let b=s.get(a);return b||(b=c.e(9127).then(c.bind(c,29127)).then(({provisionDb:b})=>b(a)).then(()=>{}).catch(b=>{s.delete(a),console.error("[beacon] fallback db provision failed:",b instanceof Error?b.message:b)}),s.set(a,b)),b}let t=new Proxy({},{get(a,b){let c=function(){var a;let b;if(process.env.BEACON_REPO)return q;let c=(0,i.p1)()??(0,i.UP)();return c?(a=(0,i.Nx)(c),(b=r.get(a))||(b=k(a),r.set(a,b)),b):q}(),d=c[b];return"function"==typeof d?d.bind(c):d}});d()}catch(a){d(a)}})},65696:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{"40362f552cace67395cd15d7423dd90e76f034d780":()=>e.hg,"405fed96e8fcd3210b2652544f09f4a2feb081048d":()=>e.HQ,"40b24a1be90ea3de2491d58fc9bc46309c5721024c":()=>e.pJ,"40ced2ac4888b0b81a390ab192c89e52595cb6f3f8":()=>e.hY,"40efecbfda0d6d6e3e7cc8b8b8302d5a8aa43e4fcd":()=>e.cl,"60675d38e74d058b2494932b394bc88c3530a6b549":()=>e.t3,"60d93c8f776ebe01b1bbbb5ba3a35321be89079edc":()=>e.Oz});var e=c(1110),f=a([e]);e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},66625:(a,b,c)=>{},66949:(a,b,c)=>{c(73024),c(76760),c(50042)},67637:(a,b,c)=>{c.d(b,{Z:()=>h});var d=c(48249),e=c(56024),f=c(33346),g=c(33191);function h({regions:a,tone:b="neutral",lod:c="full"}){let i=(0,e.Pj)(a=>a.transform[2]);if(0===a.length)return null;let j="far"===c,k=Math.min(150,26/Math.max(i,.05)),l=Math.min(80,13/Math.max(i,.05));return(0,d.jsx)(e.DX,{children:a.map(a=>(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(${a.x}px, ${a.y}px)`,width:a.w,height:a.h,pointerEvents:"none",zIndex:0},className:(0,g.cn)("rounded-2xl border","category"===b?(0,f.xZ)(a.key):"border-white/[0.08] bg-white/[0.015]",j&&"bg-card/80"),children:j?(0,d.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-[0.3em] px-2",children:[(0,d.jsx)("span",{className:"whitespace-nowrap text-center font-semibold tracking-tight text-foreground",style:{fontSize:Math.min(k,.34*a.h,(a.w-16)/(.74*Math.max(a.label.length,1))),lineHeight:1.1},children:a.label}),(0,d.jsxs)("span",{className:"tabular-nums text-muted-foreground",style:{fontSize:Math.min(l,.18*a.h)},children:[a.count," ",1===a.count?"card":"cards"]})]}):(0,d.jsxs)("div",{className:"flex items-baseline gap-2 px-3 py-1",children:[(0,d.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground/80",children:a.label}),(0,d.jsx)("span",{className:"text-[10px] tabular-nums text-muted-foreground/50",children:a.count})]})},a.key))})}},71703:(a,b,c)=>{c.d(b,{b:()=>e});var d=c(67484);function e(){let[a,b]=(0,d.useState)("idle"),[c,e]=(0,d.useState)(""),[f,g]=(0,d.useState)(""),[h,i]=(0,d.useState)(!1);async function j(){try{await navigator.clipboard.writeText(c),i(!0),setTimeout(()=>i(!1),1500)}catch{}}return{status:a,url:c,error:f,copied:h,mint:async function a(a){b("loading"),g(""),i(!1);try{let c=await fetch("/api/share/create",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(a)}),d=await c.json();if(!c.ok||!d.url){g(d.error??"Could not create the link."),b("error");return}e(d.url),b("done")}catch{g("Could not reach the local Beacon daemon."),b("error")}},copy:j,reset:function(){b("idle"),e(""),g(""),i(!1)}}}},74732:(a,b,c)=>{c.d(b,{Cf:()=>r,Es:()=>t,L3:()=>u,c7:()=>s,lG:()=>o,rr:()=>v});var d=c(48249);c(67484);var e=c(76424),f=c(60388),g=c(74283),h=c(25845),i=c(87298),j=c(36902),k=c(64230),l=c(33191),m=c(26284),n=c(45535);function o({...a}){return(0,d.jsx)(e.D,{"data-slot":"dialog",...a})}function p({...a}){return(0,d.jsx)(f.Z,{"data-slot":"dialog-portal",...a})}function q({className:a,...b}){return(0,d.jsx)(g.X,{"data-slot":"dialog-overlay",className:(0,l.cn)("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",a),...b})}function r({className:a,children:b,showCloseButton:c=!0,...e}){return(0,d.jsxs)(p,{children:[(0,d.jsx)(q,{}),(0,d.jsxs)(h.h,{"data-slot":"dialog-content",className:(0,l.cn)("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",a),...e,children:[b,c&&(0,d.jsxs)(i.H,{"data-slot":"dialog-close",render:(0,d.jsx)(m.$,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[(0,d.jsx)(n.A,{}),(0,d.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function s({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"dialog-header",className:(0,l.cn)("flex flex-col gap-2",a),...b})}function t({className:a,showCloseButton:b=!1,children:c,...e}){return(0,d.jsxs)("div",{"data-slot":"dialog-footer",className:(0,l.cn)("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",a),...e,children:[c,b&&(0,d.jsx)(i.H,{render:(0,d.jsx)(m.$,{variant:"outline"}),children:"Close"})]})}function u({className:a,...b}){return(0,d.jsx)(j.L,{"data-slot":"dialog-title",className:(0,l.cn)("font-heading text-base leading-none font-medium",a),...b})}function v({className:a,...b}){return(0,d.jsx)(k.r,{"data-slot":"dialog-description",className:(0,l.cn)("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",a),...b})}},76174:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(62896);c(22443),c(66625),c(66949);var e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},76909:(a,b,c)=>{c.r(b),c.d(b,{bugFlagRelations:()=>h,codeFileEdgeRelations:()=>u,codeFileRelations:()=>t,dbColumnRelations:()=>m,dbRelationRelations:()=>n,dbTableRelations:()=>l,draftColumnRelations:()=>r,draftRelationRelations:()=>s,draftTableRelations:()=>q,edgeRelations:()=>k,endpointRelations:()=>o,endpointTableRelations:()=>p,nodeFileRelations:()=>g,nodeRelations:()=>f,nodeTagsRelations:()=>j,tagRelations:()=>i});var d=c(74184),e=c(22443);let f=(0,d.K1)(e.node,({one:a,many:b})=>({files:b(e.nodeFile),bugFlags:b(e.bugFlag),nodeTags:b(e.nodeTags),edgesOut:b(e.edge,{relationName:"EdgeFrom"}),edgesIn:b(e.edge,{relationName:"EdgeTo"}),parent:a(e.node,{fields:[e.node.parentId],references:[e.node.id],relationName:"NodeTree"}),children:b(e.node,{relationName:"NodeTree"})})),g=(0,d.K1)(e.nodeFile,({one:a})=>({node:a(e.node,{fields:[e.nodeFile.nodeId],references:[e.node.id]})})),h=(0,d.K1)(e.bugFlag,({one:a})=>({node:a(e.node,{fields:[e.bugFlag.nodeId],references:[e.node.id]})})),i=(0,d.K1)(e.tag,({many:a})=>({nodeTags:a(e.nodeTags)})),j=(0,d.K1)(e.nodeTags,({one:a})=>({node:a(e.node,{fields:[e.nodeTags.a],references:[e.node.id]}),tag:a(e.tag,{fields:[e.nodeTags.b],references:[e.tag.id]})})),k=(0,d.K1)(e.edge,({one:a})=>({from:a(e.node,{fields:[e.edge.fromId],references:[e.node.id],relationName:"EdgeFrom"}),to:a(e.node,{fields:[e.edge.toId],references:[e.node.id],relationName:"EdgeTo"})})),l=(0,d.K1)(e.dbTable,({many:a})=>({columns:a(e.dbColumn),fksOut:a(e.dbRelation,{relationName:"FkFrom"}),fksIn:a(e.dbRelation,{relationName:"FkTo"}),usages:a(e.endpointTable)})),m=(0,d.K1)(e.dbColumn,({one:a})=>({table:a(e.dbTable,{fields:[e.dbColumn.tableId],references:[e.dbTable.id]})})),n=(0,d.K1)(e.dbRelation,({one:a})=>({fromTable:a(e.dbTable,{fields:[e.dbRelation.fromTableId],references:[e.dbTable.id],relationName:"FkFrom"}),toTable:a(e.dbTable,{fields:[e.dbRelation.toTableId],references:[e.dbTable.id],relationName:"FkTo"})})),o=(0,d.K1)(e.endpoint,({many:a})=>({tables:a(e.endpointTable)})),p=(0,d.K1)(e.endpointTable,({one:a})=>({endpoint:a(e.endpoint,{fields:[e.endpointTable.endpointId],references:[e.endpoint.id]}),table:a(e.dbTable,{fields:[e.endpointTable.tableId],references:[e.dbTable.id]})})),q=(0,d.K1)(e.draftTable,({many:a})=>({columns:a(e.draftColumn),fksOut:a(e.draftRelation,{relationName:"DraftFkFrom"}),fksIn:a(e.draftRelation,{relationName:"DraftFkTo"})})),r=(0,d.K1)(e.draftColumn,({one:a})=>({table:a(e.draftTable,{fields:[e.draftColumn.tableId],references:[e.draftTable.id]})})),s=(0,d.K1)(e.draftRelation,({one:a})=>({fromTable:a(e.draftTable,{fields:[e.draftRelation.fromTableId],references:[e.draftTable.id],relationName:"DraftFkFrom"}),toTable:a(e.draftTable,{fields:[e.draftRelation.toTableId],references:[e.draftTable.id],relationName:"DraftFkTo"})})),t=(0,d.K1)(e.codeFile,({many:a})=>({edgesOut:a(e.codeFileEdge,{relationName:"CFEFrom"}),edgesIn:a(e.codeFileEdge,{relationName:"CFETo"})})),u=(0,d.K1)(e.codeFileEdge,({one:a})=>({fromFile:a(e.codeFile,{fields:[e.codeFileEdge.fromPath],references:[e.codeFile.path],relationName:"CFEFrom"}),toFile:a(e.codeFile,{fields:[e.codeFileEdge.toPath],references:[e.codeFile.path],relationName:"CFETo"})}))},78103:(a,b,c)=>{c.d(b,{A6:()=>i,An:()=>j,RR:()=>d,YG:()=>g,ZD:()=>h,jR:()=>f});let d=["frontend","backend","fullstack"],e={fe:"frontend",front:"frontend",be:"backend",back:"backend",fs:"fullstack","full-stack":"fullstack","full stack":"fullstack"};function f(a){let b=(a??"").trim().toLowerCase();return b?d.includes(b)?b:e[b]??null:null}let g={frontend:{label:"Frontend",short:"FE"},backend:{label:"Backend",short:"BE"},fullstack:{label:"Fullstack",short:"FS"}},h={frontend:"#5AC8FA",backend:"#3ECF8E",fullstack:"#5AC8FA"};function i(a){return"fullstack"!==a?h[a]:`linear-gradient(to bottom, ${h.frontend} 0%, ${h.frontend} 50%, ${h.backend} 50%, ${h.backend} 100%)`}let j=/\.(tsx|jsx|vue|svelte)$/i},80941:(a,b,c)=>{c.d(b,{Dk:()=>m,K4:()=>k,Nx:()=>j,UP:()=>l,X_:()=>o,kO:()=>r,p1:()=>p});var d=c(16698);c(31421),c(77598);var e=c(73024),f=c(48161),g=c(76760);function h(){return process.env.BEACON_HOME||(0,g.join)((0,f.homedir)(),".beacon")}function i(a){return(0,g.join)(h(),a)}function j(a){return`file:${(0,g.join)(i(a),"db.sqlite")}`}function k(a){return(function(){try{let a=JSON.parse((0,e.readFileSync)((0,g.join)(h(),"workspaces.json"),"utf8"));return Array.isArray(a)?a:[]}catch{return[]}})().find(b=>b.id===a)??null}function l(){try{return(0,e.readFileSync)((0,g.join)(h(),"active"),"utf8").trim()||null}catch{return null}}let m="beacon_ws",n=new d.AsyncLocalStorage;function o(a,b){return a?n.run(a,b):b()}function p(){return n.getStore()??null}let q=new Set;async function r(a){let b=i(a),d=(0,g.join)(b,"db.sqlite"),f=(0,e.existsSync)(d);if(f&&q.has(d))return{ok:!0,created:!1,migrated:!1};try{(0,e.mkdirSync)(b,{recursive:!0});let{provisionDb:g}=await c.e(9127).then(c.bind(c,29127)),h=await g(j(a));return q.add(d),{ok:!0,created:!f,migrated:f&&h.migrated}}catch(a){return{ok:!1,created:!1,migrated:!1,error:a instanceof Error?a.message:String(a)}}}},81725:(a,b,c)=>{c.d(b,{$$:()=>g,Qk:()=>f,RU:()=>d,Uy:()=>e,jF:()=>h,r2:()=>k,sQ:()=>i,zn:()=>j});let d="0 0 0 3px var(--accent-2,#ff7a45), 0 0 32px -2px var(--accent-2,#ff7a45)",e=.14;function f(a,b){let c=b.trim().toLowerCase();if(!c)return!1;for(let b of a)if(b&&b.toLowerCase().includes(c))return!0;return!1}function g(a){return[a.title,a.role,a.plain,a.cluster,a.status].filter(Boolean)}function h(a){let b=[a.name,a.domain,a.description];for(let c of a.columns??[])b.push(c.name,c.type,c.note);return b.filter(Boolean)}function i(a){return[a.method,a.path,a.domain,a.description].filter(Boolean)}function j(a){return[a.path,a.lang].filter(Boolean)}function k(a,b,c,d,e=12){let g=b.trim().toLowerCase();if(!g)return[];let h=[];for(let b of a){if(!f(c(b),g))continue;let a=d(b);h.push({hit:a,score:function(a,b){let c=a.toLowerCase();return c===b?0:c.startsWith(b)?1:RegExp(`(^|[^a-z0-9])${b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}`,"i").test(a)?2:c.includes(b)?3:4}(a.label,g)})}return h.sort((a,b)=>a.score-b.score||a.hit.label.length-b.hit.label.length),h.slice(0,e).map(a=>a.hit)}},82626:(a,b,c)=>{c.d(b,{e:()=>B});var d=c(48249),e=c(67484),f=c(89327),g=c(69357),h=c(74732),i=c(26284),j=c(33191),k=c(42706);let l=["ROADMAP","ARCHITECTURE","DATABASE"],m=k.k5(l),n=k.Ik({name:k.Yj(),type:k.Yj(),isPk:k.zM(),isFk:k.zM(),nullable:k.zM(),note:k.Yj().nullable()}),o=k.Ik({id:k.Yj(),view:k.Yj(),kind:k.Yj(),cluster:k.Yj().nullable(),layer:k.Yj().nullable(),title:k.Yj(),role:k.Yj().nullable(),plain:k.Yj().nullable(),status:k.Yj(),priority:k.ai(),x:k.ai(),y:k.ai(),source:k.Yj(),sourceRef:k.Yj().nullable(),parentId:k.Yj().nullable(),isCriterion:k.zM(),files:k.YO(k.Yj()),signals:k.bz().optional(),bugFlags:k.YO(k.bz())}),p=k.Ik({id:k.Yj(),fromId:k.Yj(),toId:k.Yj(),kind:k.Yj(),label:k.Yj().nullable(),sourceHandle:k.Yj().nullable(),targetHandle:k.Yj().nullable()}),q=k.Ik({nodes:k.YO(o),edges:k.YO(p),hasFrontend:k.zM()}),r=k.Ik({id:k.Yj(),name:k.Yj(),domain:k.Yj().nullable(),description:k.Yj().nullable(),source:k.Yj(),x:k.ai(),y:k.ai(),columns:k.YO(n)}),s=k.Ik({id:k.Yj(),fromTableId:k.Yj(),toTableId:k.Yj(),fromColumn:k.Yj(),toColumn:k.Yj(),label:k.Yj().nullable()}),t=k.Ik({id:k.Yj(),method:k.Yj(),path:k.Yj(),domain:k.Yj().nullable(),description:k.Yj().nullable(),source:k.Yj(),x:k.ai(),y:k.ai(),tables:k.YO(k.Ik({tableId:k.Yj(),access:k.Yj()}))}),u=k.Ik({proposedAt:k.ai(),status:k.Yj(),tables:k.YO(k.bz()),relations:k.YO(k.bz()),endpoints:k.YO(k.bz())}).nullable(),v=k.Ik({tables:k.YO(r),relations:k.YO(s),endpoints:k.YO(t),draft:u}),w=k.Ik({kind:k.eu("boards"),version:k.eu(1),createdAt:k.ai(),workspaceLabel:k.Yj(),selectedTabs:k.YO(m).min(1),roadmap:q.optional(),architecture:q.optional(),database:v.optional()}),x=k.Ik({kind:k.eu("plan"),version:k.eu(1),createdAt:k.ai(),workspaceLabel:k.Yj(),title:k.Yj(),markdown:k.Yj(),verdict:k.k5(["approved","discarded"]).nullable(),roadmap:q.optional(),draft:u.optional()});k.gM("kind",[w,x]);var y=c(71703),z=c(99281);let A=[{value:"ALL",label:"All"},{value:"ROADMAP",label:"Roadmap"},{value:"ARCHITECTURE",label:"Architecture"},{value:"DATABASE",label:"Database"}];function B({defaultSelection:a="ALL"}){let[b,c]=(0,e.useState)(!1),[k,m]=(0,e.useState)(a),{status:n,url:o,error:p,copied:q,mint:r,copy:s,reset:t}=(0,y.b)();return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("button",{type:"button",title:"Share a read-only link to these boards",onClick:function(){m(a),t(),c(!0)},className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,d.jsx)(f.A,{className:"size-4"})}),(0,d.jsx)(h.lG,{open:b,onOpenChange:c,children:(0,d.jsxs)(h.Cf,{children:[(0,d.jsxs)(h.c7,{children:[(0,d.jsx)(h.L3,{children:"Share a read-only link"}),(0,d.jsx)(h.rr,{children:"Anyone with the link can view these boards — no Beacon needed. Links expire after 7 days."})]}),"done"===n?(0,d.jsx)(z.F,{url:o,copied:q,onCopy:s}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"flex rounded-lg border border-white/10 bg-background/40 p-0.5",children:A.map(a=>(0,d.jsx)("button",{onClick:()=>m(a.value),className:(0,j.cn)("flex-1 rounded-md px-1.5 py-1.5 text-[11px] font-medium transition-colors",k===a.value?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:a.label},a.value))}),"error"===n&&(0,d.jsx)("p",{className:"text-[12px] text-red-400",children:p}),(0,d.jsx)("div",{className:"flex justify-end",children:(0,d.jsx)(i.$,{size:"sm",onClick:function(){r({kind:"boards",tabs:"ALL"===k?[...l]:[k]})},disabled:"loading"===n,children:"loading"===n?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g.A,{className:"size-3.5 animate-spin"})," Creating…"]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.A,{className:"size-3.5"})," Create link"]})})})]})]})})]})}},84170:(a,b,c)=>{c.d(b,{F:()=>g,o:()=>h});var d=c(48249),e=c(78103),f=c(33191);function g(a,b){return!!b&&("fullstack"===a?"fullstack"===b:b===a||"fullstack"===b)}function h({value:a,onChange:b,options:c=e.RR,bare:g=!1}){return(0,d.jsx)("div",{className:(0,f.cn)("flex items-center gap-0.5",!g&&"glass rounded-lg p-0.5"),children:c.map(c=>{let g=a===c;return(0,d.jsxs)("button",{type:"button",onClick:()=>b(g?null:c),title:g?"Show every layer at full strength again":`Highlight ${e.YG[c].label} — other cards dim, nothing is hidden`,className:(0,f.cn)("flex h-7 items-center gap-1.5 rounded-md px-2 text-[10px] font-semibold uppercase tracking-wide transition-colors",g?"bg-white/[0.12] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"h-3 w-[3px] shrink-0 rounded-full",style:{background:(0,e.A6)(c)}}),e.YG[c].short]},c)})})}},85360:(a,b,c)=>{c.d(b,{h:()=>t});var d=c(48249),e=c(67484),f=c(13839),g=c(9728),h=c(15741),i=c(8251),j=c(91995),k=c(2409),l=c(22130);function m(a,b){return{name:a,path:b,folders:new Map,files:new Map}}function n(a,b){return a.kind!==b.kind?"folder"===a.kind?-1:1:a.name.localeCompare(b.name,void 0,{sensitivity:"base"})}var o=c(33191);let p={added:"text-emerald-400",modified:"text-amber-300",deleted:"text-rose-400 line-through"},q={added:"bg-emerald-400",modified:"bg-amber-300",deleted:"bg-rose-400"};function r({name:a,className:b}){let c=a.slice(a.lastIndexOf(".")+1).toLowerCase();return["ts","tsx","js","jsx","mjs","cjs"].includes(c)?(0,d.jsx)(f.A,{className:b}):"json"===c?(0,d.jsx)(g.A,{className:b}):["md","mdx","txt","css","scss"].includes(c)?(0,d.jsx)(h.A,{className:b}):(0,d.jsx)(i.A,{className:b})}function s({nodes:a,depth:b,collapsed:c,onToggle:e,onSelect:f}){return(0,d.jsx)("ul",{className:(0,o.cn)(b>0&&"ml-[7px] border-l border-white/10 pl-1.5"),children:a.map(a=>"folder"===a.kind?(0,d.jsxs)("li",{children:[(0,d.jsxs)("button",{type:"button",onClick:()=>e(a.path),title:a.path,className:"flex w-full items-center gap-1 rounded px-1.5 py-1 text-left text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,d.jsx)(j.A,{className:(0,o.cn)("size-3 shrink-0 transition-transform",!c.has(a.path)&&"rotate-90")}),c.has(a.path)?(0,d.jsx)(k.A,{className:"size-3.5 shrink-0 text-muted-foreground"}):(0,d.jsx)(l.A,{className:"size-3.5 shrink-0 text-muted-foreground"}),(0,d.jsx)("span",{className:"truncate text-[11px] font-medium",children:a.name})]}),!c.has(a.path)&&(0,d.jsx)(s,{nodes:a.children,depth:b+1,collapsed:c,onToggle:e,onSelect:f})]},`d:${a.path}`):(0,d.jsx)("li",{children:(0,d.jsxs)("button",{type:"button",onClick:()=>f(a),title:a.path,className:"flex w-full items-center gap-1.5 rounded py-1 pl-[18px] pr-1.5 text-left transition-colors hover:bg-white/[0.06]",children:[(0,d.jsx)(r,{name:a.name,className:(0,o.cn)("size-3.5 shrink-0",a.status?p[a.status]:"text-muted-foreground")}),(0,d.jsx)("span",{className:(0,o.cn)("truncate text-[11px]",a.status?p[a.status]:"text-foreground/90"),children:a.name}),(0,d.jsxs)("span",{className:"ml-auto flex shrink-0 items-center gap-1.5",children:[a.meta&&(0,d.jsx)("span",{className:"text-[9px] text-teal-300/80",children:a.meta}),a.status&&(0,d.jsx)("span",{className:(0,o.cn)("size-1.5 rounded-full",q[a.status])})]})]})},`f:${a.path}`))})}function t({files:a,onSelect:b,collapse:c=!0,emptyLabel:f,className:g}){let h=(0,e.useMemo)(()=>(function(a,b={}){let c=b.collapseSingleChildFolders??!0,d=m("","");for(let b of a){let a=b.path.split("\\").join("/").trim().replace(/^\/+/,"").replace(/\/+$/,"");if(!a)continue;let c=a.split("/").filter(Boolean);if(!c.length)continue;let e=d;for(let a=0;a<c.length-1;a++){let b=c[a],d=e.path?`${e.path}/${b}`:b,f=e.folders.get(b);f||(f=m(b,d),e.folders.set(b,f)),e=f}let f=c[c.length-1];e.files.set(f,{kind:"file",name:f,path:a,status:b.status,meta:b.meta})}return function a(b,c){let d=[];for(let e of b.folders.values())d.push(function(b,c){let d=b.name,e=b;for(;c&&0===e.files.size&&1===e.folders.size;){let a=e.folders.values().next().value;d=`${d}/${a.name}`,e=a}return{kind:"folder",name:d,path:e.path,children:a(e,c)}}(e,c));for(let a of b.files.values())d.push(a);return d.sort(n)}(d,c)})(a,{collapseSingleChildFolders:c}),[a,c]),[i,j]=(0,e.useState)(()=>new Set);return h.length?(0,d.jsx)("div",{className:g,children:(0,d.jsx)(s,{nodes:h,depth:0,collapsed:i,onToggle:a=>j(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c}),onSelect:a=>{var c;return b?b(a.path):(c=a.path,void fetch(`/api/open?path=${encodeURIComponent(c)}`).catch(()=>{}))}})}):f?(0,d.jsx)("p",{className:(0,o.cn)("px-2 py-1 text-[11px] text-muted-foreground",g),children:f}):null}},86892:(a,b,c)=>{c.d(b,{Xi:()=>d});function d(a,b){let c,d,e,f=(d=((c=b.viewportAspect)&&Number.isFinite(c)&&c>0?Math.min(3.2,Math.max(.7,c)):1.8)*(b.aspectSlack??1),e=a.reduce((a,c)=>a+(c.w+b.gapX)*(c.h+b.gapY),0),Math.max(b.minBandW,Math.round(Math.sqrt(e*d)))),g=new Map,h=0,i=0,j=0;for(let c of a)h>0&&h+c.w>f&&(i+=j+b.gapY,h=0,j=0),g.set(c.id,{x:h,y:i}),j=Math.max(j,c.h),h+=c.w+b.gapX;return g}},91365:(a,b,c)=>{c.d(b,{fE:()=>f,gt:()=>g,kz:()=>e});let d={far:.3,farExit:.34,mid:.55,midExit:.6},e={far:.12,farExit:.15,mid:.45,midExit:.5},f={far:.2,farExit:.24,mid:.32,midExit:.36};function g(a,b="full",c=d){return a<c.far||"far"===b&&a<c.farExit?"far":a<c.mid||"mid"===b&&a<c.midExit?"mid":"full"}},92994:(a,b,c)=>{c.d(b,{er:()=>g,r1:()=>h,vu:()=>i});var d=c(48249),e=c(67484),f=c(33191);function g({trigger:a,title:b,align:c="right",children:h,open:i,onOpenChange:j,outsideClicksToClose:k=1}){let[l,m]=(0,e.useState)(!1),[n,o]=(0,e.useState)("down"),p=i??l,q=(0,e.useRef)(null);return(0,e.useRef)(()=>{}),(0,d.jsxs)("div",{ref:q,className:"relative",children:[a(p,()=>{var a;return a=!p,void(void 0===i&&m(a),j?.(a))}),p&&(0,d.jsxs)("div",{className:(0,f.cn)("glass absolute z-30 w-64 rounded-xl p-3 shadow-xl","up"===n?"bottom-full mb-1.5":"top-full mt-1.5","right"===c?"right-0":"left-0"),children:[b&&(0,d.jsx)("div",{className:"mb-2 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:b}),h]})]})}function h({title:a,children:b}){return(0,d.jsxs)("div",{className:"mb-2.5 last:mb-0",children:[(0,d.jsx)("div",{className:"mb-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground/80",children:a}),(0,d.jsx)("div",{className:"flex flex-wrap gap-1",children:b})]})}function i({on:a,onClick:b,children:c,tone:e="default"}){return(0,d.jsx)("button",{type:"button",onClick:b,className:(0,f.cn)("rounded-md border px-2 py-0.5 text-[11px] font-medium transition-colors",{default:a?"border-foreground/40 bg-white/10 text-foreground":"border-white/10 text-muted-foreground hover:text-foreground",danger:a?"border-red-500/40 bg-red-500/15 text-red-300":"border-white/10 text-muted-foreground hover:text-foreground",accent:a?"border-sky-500/40 bg-sky-500/15 text-sky-300":"border-white/10 text-muted-foreground hover:text-foreground"}[e]),children:c})}},96863:(a,b,c)=>{c.d(b,{L:()=>g});var d=c(48249),e=c(56024),f=c(23727);function g(a){let b=(0,e.JY)(a.target),c=a.targetX,g=a.targetY,h=b?.measured?.width,i=b?.measured?.height;if(b&&h&&i){let d=(0,f.u)({x:b.internals.positionAbsolute.x,y:b.internals.positionAbsolute.y,w:h,h:i},{x:a.sourceX,y:a.sourceY});c=d.x,g=d.y}let j=a.sourceX,k=a.sourceY,l=c-j,m=g-k,n=Math.hypot(l,m)||1,o=Math.min(.18*n,42),p=(j+c)/2+-m/n*o,q=(k+g)/2+l/n*o,r=`M${j},${k} Q${p},${q} ${c},${g}`;return(0,d.jsx)(e.tE,{id:a.id,path:r,style:a.style,markerEnd:a.markerEnd})}},97469:(a,b,c)=>{c.d(b,{MapClient:()=>bA});var d=c(48249),e=c(67484),f=c(53735),g=c(55030),h=c(56024);c(71763);var i=c(10920),j=c(15828),k=c(69473),l=c(17313),m=c(28624),n=c(32039),o=c(90498),p=c(30170),q=c(95744),r=c(19099),s=c(1229),t=c(58720),u=c(99829);let v=(0,u.createServerReference)("40b24a1be90ea3de2491d58fc9bc46309c5721024c",u.callServer,void 0,u.findSourceMapURL,"acceptSuggestionAction");var w=c(48581),x=c(36274),y=c(38396),z=c(53061),A=c(74348),B=c(41665),C=c(28470),D=c(41332),E=c(6143),F=c(77904),G=c(29813),H=c(39737),I=c(93553),J=c(48632),K=c(54183),L=c(86056),M=c(53416),N=c(85139),O=c(64714),P=c(26773),Q=c(64258),R=c(85205),S=c(9880),T=c(24422),U=c(69627),V=c(49783),W=c(91995),X=c(47578),Y=c(97432),Z=c(57684),$=c(83394),_=c(15741),aa=c(33617),ab=c(11527),ac=c(47352),ad=c(35471),ae=c(45535),af=c(55056),ag=c(27267),ah=c(78103),ai=c(33346);let aj=(0,e.createContext)(null);function ak(){let a=(0,e.useContext)(aj);if(!a)throw Error("useNodeEdit must be used inside NodeEditContext");return a}var al=c(50605),am=c(13191),an=c(46891),ao=c(18252),ap=c(92329),aq=c(18201),ar=c(81965),as=c(47161),at=c(86596),au=c(74619),av=c(84458),aw=c(79768),ax=c(33191);function ay({value:a,onChange:b,onBlur:c,autoFocus:e,compact:f,bare:g,className:h,placeholder:i="Description (markdown)… type @ to mention a file, feature, table…",editable:j=!0}){let k=(0,am.hG)({editable:j,extensions:[...at.Pu,an.Or.configure({placeholder:i}),au.tw.configure({suggestion:{char:"@",items:async({query:a})=>{if(!a.trim())return[];try{let b=await fetch(`/api/mention-search?q=${encodeURIComponent(a)}`,{headers:(0,aw.dh)((0,aw.fk)())});if(!b.ok)return[];return(await b.json()).hits}catch{return[]}},command:({editor:a,range:b,props:c})=>{a.chain().focus().insertContentAt(b,[{type:"mention",attrs:{kind:c.kind,ref:c.ref,label:c.label}},{type:"text",text:" "}]).run()},render:()=>{let a=null,b=null,c=a=>{if(!b||!a)return;let c=a();c&&(b.style.left=`${c.left}px`,b.style.top=`${c.bottom+4}px`)};return{onStart:d=>{a=new am.NV(aB,{props:d,editor:d.editor}),(b=document.createElement("div")).style.position="fixed",b.style.zIndex="10000",document.body.appendChild(b),b.appendChild(a.element),c(d.clientRect)},onUpdate:b=>{a?.updateProps(b),c(b.clientRect)},onKeyDown:c=>"Escape"===c.event.key?(b?.remove(),!0):a?.ref?.onKeyDown(c)??!1,onExit:()=>{b?.remove(),b=null,a?.destroy(),a=null}}}}})],content:a?(0,at.Gd)(a):void 0,immediatelyRender:!1,autofocus:!!e&&"end",editorProps:{attributes:{class:(0,ax.cn)("nodrag nopan node-prose focus:outline-none",h)}},onUpdate:({editor:a})=>b((0,at.Z2)(a.getJSON())),onBlur:()=>c?.()});return k?(0,d.jsxs)("div",{className:"flex flex-col gap-1",children:[j&&(0,d.jsx)(az,{editor:k,compact:f}),(0,d.jsx)(am.$Z,{editor:k,onKeyDown:a=>a.stopPropagation(),className:(0,ax.cn)("node-editor min-h-[3.5rem] rounded",g?"text-[15px] leading-relaxed":"bg-white/[0.04] px-1.5 py-1 text-xs focus-within:bg-white/[0.08]",f&&"max-h-[24rem] overflow-y-auto")})]}):null}function az({editor:a,compact:b}){(0,av.U)(a);let c=()=>a.chain().focus(),e=b?"size-3":"size-3.5";return(0,d.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,d.jsx)(av.I,{label:"Bold",active:a.isActive("bold"),onClick:()=>c().toggleBold().run(),children:(0,d.jsx)(ao.A,{className:e})}),(0,d.jsx)(av.I,{label:"Italic",active:a.isActive("italic"),onClick:()=>c().toggleItalic().run(),children:(0,d.jsx)(ap.A,{className:e})}),(0,d.jsx)("span",{"aria-hidden":!0,className:"mx-0.5 h-3.5 w-px bg-white/10"}),(0,d.jsx)(av.I,{label:"Checklist",active:a.isActive("taskList"),onClick:()=>c().toggleTaskList().run(),children:(0,d.jsx)(aq.A,{className:e})}),(0,d.jsx)(av.I,{label:"Bullet list",active:a.isActive("bulletList"),onClick:()=>c().toggleBulletList().run(),children:(0,d.jsx)(ar.A,{className:e})}),(0,d.jsx)(av.I,{label:"Numbered list",active:a.isActive("orderedList"),onClick:()=>c().toggleOrderedList().run(),children:(0,d.jsx)(as.A,{className:e})})]})}let aA={file:"\uD83D\uDCC4",folder:"\uD83D\uDCC1",feature:"\uD83E\uDDE9",table:"⛁",endpoint:"⇄",note:"\uD83D\uDDD2"},aB=(0,e.forwardRef)(function({items:a,command:b},c){let[f,g]=(0,e.useState)(0);return((0,e.useEffect)(()=>g(0),[a]),(0,e.useImperativeHandle)(c,()=>({onKeyDown:({event:c})=>"ArrowDown"===c.key?(g(b=>(b+1)%Math.max(a.length,1)),!0):"ArrowUp"===c.key?(g(b=>(b-1+a.length)%Math.max(a.length,1)),!0):"Enter"===c.key&&(a[f]&&b(a[f]),!0)})),a.length)?(0,d.jsx)("div",{className:"glass max-h-72 min-w-56 max-w-80 overflow-y-auto rounded-lg p-1 shadow-xl",children:a.map((a,c)=>(0,d.jsxs)("button",{type:"button",onMouseDown:c=>{c.preventDefault(),b(a)},onMouseEnter:()=>g(c),className:(0,ax.cn)("flex w-full items-center gap-2 rounded px-2 py-1 text-left text-[12px]",c===f?"bg-white/[0.1] text-foreground":"text-foreground/85 hover:bg-white/[0.05]"),children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"shrink-0 text-[11px] opacity-80",children:aA[a.kind]??"•"}),(0,d.jsx)("span",{className:"truncate",children:a.label}),a.sublabel&&(0,d.jsx)("span",{className:"ml-auto shrink-0 truncate text-[10px] text-muted-foreground/70",children:a.sublabel})]},`${a.kind}:${a.ref}`))}):(0,d.jsx)("div",{className:"glass min-w-56 rounded-lg p-2 text-[11px] text-muted-foreground shadow-xl",children:"No matches"})}),aC=[{v:0,l:"P0 \xb7 critical"},{v:1,l:"P1 \xb7 high"},{v:2,l:"P2 \xb7 medium"},{v:3,l:"P3 \xb7 low"}],aD=["#ff3860","#ff7a45","#fbbf24","#a1a1aa"],aE=[[/AUTH|SECURIT|LOGIN|SESSION|IDENT/,w.A],[/DATA|\bDB\b|DBMAP|SQL|STORAGE|STORE|CACHE|PERSIST/,x.A],[/\bUI\b|FRONT|VIEW|CANVAS|BOARD|DESIGN/,y.A],[/MCP|\bAPI\b|INTEGRAT/,z.A],[/WEBHOOK|HOOK/,A.A],[/INTEL|GRAPH|\bCODE\b|SYMBOL|SEARCH|FIND/,B.A],[/PLAN|ROADMAP|REVIEW/,C.A],[/INFRA|DEVOPS|CLOUD|DEPLOY|MEDIA/,D.A],[/GAM|PLAY/,E.A],[/NOTE|DOC/,F.A],[/QUERY|SEARCH/,G.A],[/BILL|\bPAY|CHECKOUT|SUBSCRIPT|INVOICE/,H.A],[/LAUNCH|RELEASE|SHIP|ROCKET/,I.A],[/INSTALL|SETUP|BOOTSTRAP|INIT/,J.A],[/CONTEXT|LAYER|BUNDLE/,K.A]],aF=[L.A,M.A,N.A,O.A,P.A,Q.A],aG="nodrag nopan";function aH({layer:a,onSave:b,readOnly:c}){let e=(0,ah.jR)(a);return(0,d.jsxs)(af.l6,{value:e??"none",onValueChange:a=>b("none"===a?null:a),disabled:c,children:[(0,d.jsx)(af.bq,{title:"Which side of the stack this lands on",className:(0,ax.cn)(aG,"!h-5 shrink-0 gap-1 rounded !border-0 !bg-white/10 !px-1.5 !py-0 text-[9px] font-semibold uppercase tracking-wide text-zinc-300 [&_svg]:size-2.5 [&>svg]:hidden hover:[&>svg]:block"),children:(0,d.jsx)(af.yv,{children:a=>"none"===a?(0,d.jsx)("span",{className:"text-muted-foreground/70",children:"layer"}):(0,d.jsxs)("span",{className:"flex items-center gap-1",children:["backend"!==a&&(0,d.jsx)(R.A,{className:"size-2.5"}),"frontend"!==a&&(0,d.jsx)(S.A,{className:"size-2.5"}),ah.YG[a]?.short??a]})})}),(0,d.jsxs)(af.gC,{alignItemWithTrigger:!1,children:[(0,d.jsx)(af.eb,{value:"none",children:"— no layer"}),Object.entries(ah.YG).map(([a,b])=>(0,d.jsx)(af.eb,{value:a,children:b.label},a))]})]})}let aI={DONE:"#34d399",IN_PROGRESS:"#38bdf8",PENDING:"#fbbf24",BLOCKED:"#fb923c",CANCELLED:"#71717a",DEPRIORITIZED:"#52525b",KEEP:"#34d399",REBUILD:"#a78bfa",REPLACE:"#fb7185",DROP:"#71717a"};function aJ({status:a}){return(0,d.jsx)("span",{"aria-hidden":!0,title:ag.nR[a]?.label??a,className:"absolute bottom-2 left-1 top-2 w-[3px] rounded-full",style:{background:aI[a]??"#71717a"}})}function aK({priority:a,rank:b}){let c=aD[a]??aD[3];return(0,d.jsxs)("div",{className:"flex w-5 shrink-0 flex-col items-center gap-1 self-stretch border-r border-white/[0.06] py-1.5",title:aC[a]?.l??"priority",children:[null!=b&&(0,d.jsx)("span",{title:`#${b} in the work order`,className:(0,ax.cn)("flex size-4 shrink-0 items-center justify-center rounded text-[10px] font-bold leading-none",1===b?"bg-emerald-400 text-black":"bg-white/10 text-muted-foreground"),children:b}),(0,d.jsx)("span",{className:"w-[3px] flex-1 rounded-full",style:{background:c,opacity:.9}})]})}function aL({onFocus:a,onExpand:b,onDetails:c,expanded:e,className:f}){return(0,d.jsxs)("div",{className:(0,ax.cn)(aG,"absolute z-20 flex items-center gap-0.5 rounded-lg p-0.5 transition-colors group-hover/nc:border group-hover/nc:border-white/10 group-hover/nc:bg-card/90 group-hover/nc:shadow-lg group-hover/nc:backdrop-blur",f??"right-2 top-2"),children:[(0,d.jsx)("button",{type:"button",onClick:b=>{b.stopPropagation(),a()},title:"Edit description in focus mode",className:"flex w-0 items-center justify-center overflow-hidden rounded p-0 text-muted-foreground opacity-0 transition-all hover:text-[#ff7a45] group-hover/nc:w-6 group-hover/nc:p-0.5 group-hover/nc:opacity-100",children:(0,d.jsx)(T.A,{className:"size-3.5"})}),(0,d.jsx)("button",{type:"button",onClick:a=>{a.stopPropagation(),b()},title:e?"Collapse":"Expand in place",className:"flex w-0 items-center justify-center overflow-hidden rounded p-0 text-muted-foreground opacity-0 transition-all hover:text-foreground group-hover/nc:w-6 group-hover/nc:p-0.5 group-hover/nc:opacity-100",children:(0,d.jsx)(U.A,{className:(0,ax.cn)("size-3.5 transition-transform",e&&"rotate-180")})}),(0,d.jsx)("button",{type:"button",onClick:a=>{a.stopPropagation(),c()},title:"Open details side panel",className:"flex w-0 items-center justify-center overflow-hidden rounded p-0 text-muted-foreground opacity-0 transition-all hover:text-[#ff7a45] group-hover/nc:w-6 group-hover/nc:p-0.5 group-hover/nc:opacity-100",children:(0,d.jsx)(q.A,{className:"size-3.5"})})]})}function aM({value:a,label:b,Icon:c,danger:e}){return(0,d.jsxs)("div",{className:"text-center",children:[(0,d.jsx)("div",{className:(0,ax.cn)("text-[13px] font-semibold leading-none tracking-tight tabular-nums",e&&"text-rose-300"),children:a}),(0,d.jsxs)("div",{className:"mt-0.5 flex items-center justify-center gap-0.5 text-[8px] font-medium uppercase tracking-wide text-muted-foreground",children:[(0,d.jsx)(c,{className:"size-2.5"}),b]})]})}function aN({importsIn:a}){let b=a>=16?5:a>=8?4:a>=4?3:a>=2?2:+(a>=1);return(0,d.jsxs)("span",{className:"flex items-center gap-1.5 text-[10px] text-muted-foreground",title:`${a} external file(s) import this component`,children:[(0,d.jsx)("span",{className:"flex items-center gap-0.5",children:[0,1,2,3,4].map(a=>(0,d.jsx)("span",{className:"size-1 rounded-full bg-sky-400",style:{opacity:a<b?.7:.18}},a))}),a>=8?"core dependency":a>=3?"shared":a>=1?"leaf":"isolated"]})}function aO({nodeId:a}){let b=(0,r.useRouter)(),[c,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(""),[i,j]=(0,e.useState)(!1),k=()=>{f(!1),h("")},m=async()=>{let c=g.trim();if(c&&!i){j(!0);try{(await fetch("/api/bug-flags",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({nodeId:a,by:"user",note:c})})).ok&&(k(),b.refresh())}finally{j(!1)}}};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("button",{type:"button",title:"Flag a bug on this component",onClick:a=>{a.stopPropagation(),f(a=>!a)},className:(0,ax.cn)(aG,"absolute -right-3 top-[calc(50%-28px)] z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground shadow-md transition-all hover:border-rose-400/50 hover:text-rose-300",c?"border-rose-400/50 text-rose-300 opacity-100":"opacity-0 group-hover/nc:opacity-100"),children:(0,d.jsx)(l.A,{className:"size-3"})}),c&&(0,d.jsxs)("div",{onClick:a=>a.stopPropagation(),className:(0,ax.cn)(aG,"absolute -right-2 top-[calc(50%-28px)] z-20 w-60 translate-x-full rounded-xl border border-rose-400/25 bg-[#1c1c1f] p-2 shadow-xl"),children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center justify-between",children:[(0,d.jsxs)("span",{className:"flex items-center gap-1 text-[10px] font-semibold uppercase tracking-wide text-rose-300",children:[(0,d.jsx)(l.A,{className:"size-3"})," Flag a bug"]}),(0,d.jsx)("button",{type:"button",title:"Cancel",onClick:k,className:"rounded p-0.5 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)("span",{className:"block px-1 text-[11px] leading-none",children:"✕"})})]}),(0,d.jsx)("textarea",{autoFocus:!0,rows:2,value:g,placeholder:"What did you find?",onChange:a=>h(a.target.value),onKeyDown:a=>{a.stopPropagation(),"Escape"===a.key&&k(),"Enter"!==a.key||a.shiftKey||(a.preventDefault(),m())},className:"field-sizing-content max-h-40 min-h-12 w-full resize-none rounded-md bg-white/[0.04] px-1.5 py-1 text-xs outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.07]"}),(0,d.jsx)("button",{type:"button",disabled:i||!g.trim(),onClick:()=>void m(),className:"mt-1.5 w-full rounded-md bg-rose-500/15 py-1 text-[11px] font-semibold text-rose-300 transition-colors hover:bg-rose-500/25 disabled:opacity-50",children:i?"Flagging…":"Flag bug"})]})]})}let aP=["border-[#ff3860]/60 shadow-[0_0_0_1px_rgba(255,56,96,0.15)]","border-[#ff7a45]/50","border-amber-400/35","border-border"],aQ=(0,e.memo)(function({id:a,data:b,selected:c}){let{categories:f,statuses:g,patch:h,isExpanded:i,toggleExpand:j,openDetailed:k,openFocus:m,removeNode:n,editingTitleId:o,onAskAgent:p,hasFrontend:q,readOnly:r}=ak(),u=i(a),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(b.title),[A,B]=(0,e.useState)(b.cluster??""),[C,D]=(0,e.useState)(b.plain??"");(0,e.useEffect)(()=>D(b.plain??""),[b.plain]);let E="BUG"===b.kind&&"ROADMAP"===b.view,F="ARCHITECTURE"===b.view,G=F?"border-border":aP[b.priority]??"border-border",H=b.openBugs??0,I="CANCELLED"===b.status||"DROP"===b.status,J="DEPRIORITIZED"===b.status,K="DRAFT"===b.source,L="IN_PROGRESS"===b.status,M="INIT"===b.source&&"ROADMAP"===b.view,N=b=>{r||h(a,b,!0)},[O,P]=(0,e.useTransition)(),Q=(0,al.k)();if("full"!==Q)return(0,d.jsxs)("div",{className:(0,ax.cn)("relative rounded-lg border bg-card px-3 py-2.5 text-card-foreground shadow-sm","w-fit max-w-[296px]",b.isChild?"min-w-56":"min-w-64",E?"border-rose-400/50 bg-rose-500/[0.05]":G,L&&"border-sky-400/60",c&&"ring-2 ring-[var(--accent,#f5b942)]",I&&"opacity-60","far"===Q&&!r&&"!opacity-0"),children:[(0,d.jsx)(s.x,{}),(0,d.jsx)(aJ,{status:b.status}),(0,d.jsx)("div",{className:"break-words text-[15px] font-semibold leading-snug",children:b.title})]});let R=(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(s.x,{}),F&&(0,d.jsx)(aO,{nodeId:a}),(b.pins?.length??0)>0?(0,d.jsx)(t.e0,{pins:b.pins,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)("button",{type:"button",title:`Annotate ${b.title}`,onClick:a=>{a.stopPropagation(),b.onComment?.(b.title)},className:(0,ax.cn)(aG,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover/nc:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,d.jsx)(V.A,{className:"size-3"})})]}),S=(b.childCount??0)>0&&(0,d.jsxs)("button",{type:"button",onClick:c=>{c.stopPropagation(),b.onToggleCollapse?.(a)},title:b.collapsed?`Show ${b.childCount} sub-task${1===b.childCount?"":"s"}`:`Hide ${b.childCount} sub-task${1===b.childCount?"":"s"}`,className:(0,ax.cn)(aG,"mt-0.5 flex shrink-0 items-center gap-0.5 rounded px-1 text-[10px] font-semibold transition-colors",b.collapsed?"bg-white/[0.06] text-foreground hover:bg-white/10":"text-muted-foreground hover:bg-white/5 hover:text-foreground"),children:[b.collapsed?(0,d.jsx)(W.A,{className:"size-3"}):(0,d.jsx)(U.A,{className:"size-3"}),b.childCount]}),T=(0,d.jsx)(aL,{onFocus:()=>m({id:a,title:b.title||"Untitled",value:C,editable:!r,onCommit:a=>N({plain:a.trim()||null})}),onExpand:()=>j(a),onDetails:()=>k(a),expanded:u,className:"top-full right-1 mt-1.5 before:absolute before:inset-x-0 before:bottom-full before:h-2.5 before:content-['']"}),ah=(0,d.jsx)("textarea",{rows:1,value:y,readOnly:r,autoFocus:o===a,placeholder:"Title…",onFocus:b=>{o===a&&b.currentTarget.select()},onChange:a=>z(a.target.value),onBlur:()=>{let a=y.trim();a&&a!==b.title&&N({title:a})},onKeyDown:a=>{a.stopPropagation(),"Enter"!==a.key||a.shiftKey||(a.preventDefault(),a.currentTarget.blur())},className:(0,ax.cn)(aG,"field-sizing-content w-full resize-none bg-transparent text-sm font-medium leading-snug outline-none placeholder:text-muted-foreground/60",I&&"line-through")}),aj=(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("input",{list:`cats-${a}`,value:A,readOnly:r,placeholder:F?"domain":"category",title:F?"Architecture domain — the lane this component lives in":void 0,onChange:a=>B(a.target.value),onBlur:()=>{let a=A.trim()||null;a!==(b.cluster??null)&&N({cluster:a})},onKeyDown:a=>{a.stopPropagation(),"Enter"===a.key&&a.currentTarget.blur()},className:(0,ax.cn)(aG,"field-sizing-content min-w-12 max-w-[60%] rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide outline-none focus:brightness-125 [&::-webkit-calendar-picker-indicator]:hidden",(0,ai.a2)(A))}),(0,d.jsx)("datalist",{id:`cats-${a}`,children:f.map(a=>(0,d.jsx)("option",{value:a},a))})]}),am=(0,d.jsxs)(af.l6,{value:b.status,onValueChange:a=>N({status:a}),disabled:r,children:[(0,d.jsx)(af.bq,{className:(0,ax.cn)(aG,"!h-5 shrink-0 !gap-0.5 rounded border !px-1.5 !py-0 text-[10px] font-medium [&_svg]:size-3",ag.nR[b.status]?.className??"border-white/10"),children:(0,d.jsx)(af.yv,{children:a=>ag.nR[a]?.label??a})}),(0,d.jsx)(af.gC,{alignItemWithTrigger:!1,children:g.map(a=>(0,d.jsx)(af.eb,{value:a,children:ag.nR[a]?.label??a},a))})]}),an=(H>0||(b.signals?.untested??0)>0||b.signals?.auth)&&(0,d.jsxs)("div",{className:"mt-1.5 flex w-0 min-w-full flex-wrap items-center gap-1",children:[H>0&&(0,d.jsxs)("span",{title:`${H} open bug flag(s)`,className:"flex items-center gap-1 rounded bg-rose-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-rose-300",children:[(0,d.jsx)(l.A,{className:"size-2.5"}),H]}),(b.signals?.untested??0)>0&&(0,d.jsxs)("span",{title:`${b.signals.untested} of ${b.signals.total} attached file(s) have no test importing them`,className:"flex items-center gap-1 rounded bg-amber-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-amber-300",children:[(0,d.jsx)(X.A,{className:"size-2.5"}),b.signals.untested]}),b.signals?.auth&&(0,d.jsxs)("span",{title:"touches auth-sensitive files",className:"flex items-center gap-1 rounded bg-red-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-red-300",children:[(0,d.jsx)(Y.A,{className:"size-2.5"})," auth"]})]}),ao=u&&(0,d.jsxs)("div",{className:"mt-2 w-0 min-w-full space-y-2 border-t border-white/10 pt-2",children:[(0,d.jsx)(ay,{compact:!0,editable:!r,value:C,onChange:D,onBlur:()=>{let a=C.trim()||null;a!==(b.plain??null)&&N({plain:a})}}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5 pr-8",children:[(0,d.jsx)("div",{className:"flex items-center gap-1",children:!F&&(0,d.jsxs)(af.l6,{value:String(b.priority),onValueChange:a=>N({priority:Number(a)}),disabled:r,children:[(0,d.jsx)(af.bq,{className:(0,ax.cn)(aG,"!h-6 gap-1 rounded border-white/10 !px-1.5 !py-0 text-[10px] [&_svg]:size-3"),children:(0,d.jsx)(af.yv,{children:a=>aC.find(b=>String(b.v)===a)?.l??a})}),(0,d.jsx)(af.gC,{alignItemWithTrigger:!1,children:aC.map(a=>(0,d.jsx)(af.eb,{value:String(a.v),children:a.l},a.v))})]})}),(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[!r&&(0,d.jsxs)("button",{type:"button",onClick:b=>{b.stopPropagation(),w?n(a):x(!0)},onBlur:()=>x(!1),title:"Delete node",className:(0,ax.cn)(aG,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] transition-colors",w?"bg-red-500/20 text-red-300":"text-muted-foreground hover:bg-white/5 hover:text-red-300"),children:[(0,d.jsx)(Z.A,{className:"size-3"}),w&&"Delete?"]}),p&&(0,d.jsxs)("button",{type:"button",onClick:a=>{a.stopPropagation(),p(`${F?"component":"feature"}: ${b.title}`)},title:"Ask the agent a question about this (answered in its next round)",className:(0,ax.cn)(aG,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] text-sky-300/90 hover:bg-sky-500/15 hover:text-sky-300"),children:[(0,d.jsx)($.A,{className:"size-3"})," Ask"]})]})]})]});if(F){let a=(0,ai.i3)(b.cluster);return(0,d.jsxs)("div",{className:(0,ax.cn)("group/nc relative rounded-lg border bg-card px-3 py-2.5 text-card-foreground shadow-sm transition","w-fit min-w-60 max-w-72",K?"border-dashed border-sky-400/50 bg-sky-500/[0.06]":"border-border",L&&"border-sky-400/60 shadow-[0_0_0_1px_rgba(56,160,255,0.25)]",c&&"ring-2 ring-[var(--accent,#f5b942)]",I&&"opacity-60",J&&"opacity-70 border-dashed"),children:[R,(0,d.jsxs)("div",{className:"flex items-start gap-2.5",children:[(0,d.jsx)("span",{className:"mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg",style:{background:`color-mix(in oklab, ${a} 18%, transparent)`,color:a},children:(0,e.createElement)(function(a){let b=(a??"").toUpperCase();for(let[a,c]of aE)if(a.test(b))return c;if(!b)return aF[0];let c=0;for(let a=0;a<b.length;a++)c=31*c+b.charCodeAt(a)>>>0;return aF[c%aF.length]}(b.cluster),{className:"size-4"})}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsxs)("div",{className:"flex items-start gap-1",children:[ah,S]}),(0,d.jsxs)("div",{className:"mt-1 flex flex-wrap items-center gap-1.5",children:[aj,q&&(0,d.jsx)(aH,{layer:b.layer,onSave:a=>N({layer:a}),readOnly:r})]})]}),(0,d.jsx)("div",{className:"shrink-0",children:am})]}),b.role&&(0,d.jsx)("div",{className:"mt-2 line-clamp-1 text-[10.5px] leading-snug text-muted-foreground",children:b.role}),(0,d.jsxs)("div",{className:"mt-2.5 grid grid-cols-4 gap-1 border-t border-white/[0.07] pt-2",children:[(0,d.jsx)(aM,{value:b.fileCount??0,label:"files",Icon:_.A}),(0,d.jsx)(aM,{value:b.importsIn??"—",label:"in",Icon:aa.A}),(0,d.jsx)(aM,{value:b.importsOut??"—",label:"out",Icon:ab.A}),(0,d.jsx)(aM,{value:H,label:"bug",Icon:l.A,danger:H>0})]}),null!=b.importsIn&&(0,d.jsx)("div",{className:"mt-2",children:(0,d.jsx)(aN,{importsIn:b.importsIn})}),T,ao]})}let ap=b.childCount??0,aq=b.childDone??0;return(0,d.jsxs)("div",{className:(0,ax.cn)("group/nc relative flex rounded-lg border bg-card text-card-foreground shadow-sm transition","w-fit max-w-96",u?"min-w-80":"min-w-64",K?"border-dashed border-sky-400/50 bg-sky-500/[0.06]":M?"border-dashed border-violet-400/60 bg-violet-500/[0.07] shadow-[0_0_0_1px_rgba(167,139,250,0.18)]":G,E&&!K&&"border-rose-400/50 bg-rose-500/[0.05]",L&&"border-sky-400/60 shadow-[0_0_0_1px_rgba(56,160,255,0.25)]",b.isNext&&"border-emerald-400/70 shadow-[0_0_0_2px_rgba(52,211,153,0.35)]",null!=b.workOrderRank&&b.workOrderRank>1&&"border-emerald-400/25",c&&"ring-2 ring-[var(--accent,#f5b942)]",I&&"opacity-60",J&&"opacity-70 border-dashed"),children:[R,T,(0,d.jsx)(aK,{priority:b.priority,rank:b.workOrderRank}),(0,d.jsxs)("div",{className:"min-w-0 flex-1 px-2.5 py-2.5",children:[(0,d.jsxs)("div",{className:"flex w-0 min-w-full items-start gap-1.5",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-1 items-start gap-1",children:[L&&(0,d.jsx)("span",{title:"in progress",className:"mt-1.5 inline-block size-2 shrink-0 animate-pulse rounded-full bg-sky-400"}),b.isCriterion&&!L&&(0,d.jsx)("span",{title:"Success criterion",className:"mt-1.5 inline-block size-1.5 shrink-0 rounded-full bg-[var(--accent,#f5b942)]"}),ah,S]}),(0,d.jsx)("div",{className:"shrink-0",children:am})]}),(0,d.jsxs)("div",{className:"mt-1.5 flex w-0 min-w-full flex-wrap items-center gap-1.5",children:[(0,d.jsxs)("span",{title:E?"Bug — something to fix":b.isChild?"Sub-task of a feature":"Feature — top-level roadmap item",className:(0,ax.cn)("flex shrink-0 items-center gap-1 rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide",E?"bg-rose-500/15 text-rose-300":b.isChild?"bg-zinc-500/15 text-zinc-300":"bg-sky-500/15 text-sky-300"),children:[E&&(0,d.jsx)(l.A,{className:"size-2.5"}),E?"bug":b.isChild?"sub-task":"feature"]}),q&&(0,d.jsx)(aH,{layer:b.layer,onSave:a=>N({layer:a}),readOnly:r}),M&&(0,d.jsxs)("span",{className:(0,ax.cn)("flex items-center gap-1 rounded bg-violet-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-violet-300",O&&"opacity-50"),children:[(0,d.jsx)(ac.A,{className:"size-2.5"})," IA",(0,d.jsx)("button",{type:"button",title:"Accept suggestion — turn it into your own feature",disabled:O,onClick:b=>{b.stopPropagation(),P(async()=>v(a))},className:(0,ax.cn)(aG,"-my-0.5 rounded p-0.5 hover:bg-emerald-500/20 hover:text-emerald-300"),children:(0,d.jsx)(ad.A,{className:"size-2.5"})}),(0,d.jsx)("button",{type:"button",title:"Dismiss suggestion (deletes the card)",disabled:O,onClick:b=>{b.stopPropagation(),n(a)},className:(0,ax.cn)(aG,"-my-0.5 -ml-0.5 rounded p-0.5 hover:bg-red-500/20 hover:text-red-300"),children:(0,d.jsx)(ae.A,{className:"size-2.5"})})]}),aj]}),b.role&&(0,d.jsx)("div",{className:(0,ax.cn)("mt-1.5 w-0 min-w-full text-[10px] leading-snug text-muted-foreground",!u&&"line-clamp-1"),children:b.role}),ap>0&&(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,d.jsx)("span",{className:"h-[3px] flex-1 overflow-hidden rounded-full bg-white/[0.08]",title:`${aq}/${ap} sub-tasks done`,children:(0,d.jsx)("span",{className:"block h-full rounded-full bg-sky-400/75",style:{width:`${ap?aq/ap*100:0}%`}})}),(0,d.jsxs)("span",{className:"flex shrink-0 items-center gap-1 text-[10px] text-muted-foreground",children:[(0,d.jsx)(ad.A,{className:"size-3"}),aq,"/",ap]})]}),an,ao]})]})});var aR=c(32798),aS=c(42800),aT=c(96863),aU=c(48779),aV=c(85360),aW=c(26284),aX=c(62190),aY=c(52351),aZ=c(74732);function a$({className:a,type:b,...c}){return(0,d.jsx)("input",{type:b,"data-slot":"input",className:(0,ax.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...c})}function a_({className:a,...b}){return(0,d.jsx)("textarea",{"data-slot":"textarea",className:(0,ax.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),...b})}var a0=c(86371);function a1({className:a,...b}){return(0,d.jsx)(a0.b,{"data-slot":"label",className:(0,ax.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",a),...b})}let a2=(0,u.createServerReference)("405fed96e8fcd3210b2652544f09f4a2feb081048d",u.callServer,void 0,u.findSourceMapURL,"createNodeAction"),a3=(0,u.createServerReference)("60d93c8f776ebe01b1bbbb5ba3a35321be89079edc",u.callServer,void 0,u.findSourceMapURL,"updateNodeAction");function a4({open:a,onOpenChange:b,mode:c,view:f,heading:g,nodeId:h,parentId:i,position:j,defaults:k,hasFrontend:l=!1}){let m=(0,r.useRouter)(),[n,o]=(0,e.useState)(k?.title??""),[p,q]=(0,e.useState)(k?.role??""),[s,t]=(0,e.useState)(k?.plain??""),[u,v]=(0,e.useState)(k?.cluster??""),[w,x]=(0,e.useState)(k?.status??("ARCHITECTURE"===f?"REBUILD":"PENDING")),[y,z]=(0,e.useState)(k?.kind==="BUG"?"BUG":"FEATURE"),[A,B]=(0,e.useState)((0,ah.jR)(k?.layer)??"none"),[C,D]=(0,e.useState)(!1),E="ARCHITECTURE"===f?ag.m6:ag.yl;async function F(){if(n.trim()){D(!0);try{let a="none"===A?null:A;"create"===c?await a2({view:f,..."ROADMAP"===f?{kind:y}:{},title:n.trim(),role:p.trim()||null,plain:s.trim()||null,cluster:u.trim()||null,...l?{layer:a}:{},parentId:i??null,status:w,x:j?.x??60,y:j?.y??60}):h&&await a3(h,{..."ROADMAP"===f?{kind:y}:{},title:n.trim(),role:p.trim()||null,plain:s.trim()||null,cluster:u.trim()||null,...l?{layer:a}:{},status:w}),b(!1),m.refresh()}finally{D(!1)}}}return(0,d.jsx)(aZ.lG,{open:a,onOpenChange:b,children:(0,d.jsxs)(aZ.Cf,{children:[(0,d.jsx)(aZ.c7,{children:(0,d.jsx)(aZ.L3,{children:g})}),(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(a1,{htmlFor:"nf-title",children:"Title"}),(0,d.jsx)(a$,{id:"nf-title",value:n,autoFocus:!0,onChange:a=>o(a.target.value)})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(a1,{htmlFor:"nf-role",children:"Role (one line)"}),(0,d.jsx)(a$,{id:"nf-role",value:p,onChange:a=>q(a.target.value)})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(a1,{htmlFor:"nf-plain",children:"Description"}),(0,d.jsx)(a_,{id:"nf-plain",rows:3,value:s,onChange:a=>t(a.target.value)})]}),"ROADMAP"===f&&(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(a1,{children:"Kind"}),(0,d.jsxs)(af.l6,{value:y,onValueChange:a=>null!=a&&z(a),children:[(0,d.jsx)(af.bq,{children:(0,d.jsx)(af.yv,{children:a=>"BUG"===a?"Bug":"Feature"})}),(0,d.jsxs)(af.gC,{children:[(0,d.jsx)(af.eb,{value:"FEATURE",children:"Feature"}),(0,d.jsx)(af.eb,{value:"BUG",children:"Bug"})]})]})]}),l&&(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(a1,{children:"Layer"}),(0,d.jsxs)(af.l6,{value:A,onValueChange:a=>null!=a&&B(a),children:[(0,d.jsx)(af.bq,{children:(0,d.jsx)(af.yv,{children:a=>"none"===a?"—":ah.YG[a]?.label??a})}),(0,d.jsxs)(af.gC,{children:[(0,d.jsx)(af.eb,{value:"none",children:"—"}),Object.keys(ah.YG).map(a=>(0,d.jsx)(af.eb,{value:a,children:ah.YG[a].label},a))]})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(a1,{children:"Status"}),(0,d.jsxs)(af.l6,{value:w,onValueChange:a=>null!=a&&x(a),children:[(0,d.jsx)(af.bq,{children:(0,d.jsx)(af.yv,{children:a=>ag.nR[a]?.label??a})}),(0,d.jsx)(af.gC,{children:E.map(a=>(0,d.jsx)(af.eb,{value:a,children:ag.nR[a]?.label??a},a))})]})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(a1,{htmlFor:"nf-cluster",children:"Cluster / lane"}),(0,d.jsx)(a$,{id:"nf-cluster",value:u,onChange:a=>v(a.target.value)})]})]})]}),(0,d.jsxs)(aZ.Es,{children:[(0,d.jsx)(aW.$,{variant:"outline",onClick:()=>b(!1),children:"Cancel"}),(0,d.jsx)(aW.$,{onClick:F,disabled:C||!n.trim(),children:C?"Saving…":"Save"})]})]})})}let a5=(0,u.createServerReference)("40efecbfda0d6d6e3e7cc8b8b8302d5a8aa43e4fcd",u.callServer,void 0,u.findSourceMapURL,"deleteNodeAction"),a6=(0,u.createServerReference)("60675d38e74d058b2494932b394bc88c3530a6b549",u.callServer,void 0,u.findSourceMapURL,"setStatusAction"),a7=(0,u.createServerReference)("40362f552cace67395cd15d7423dd90e76f034d780",u.callServer,void 0,u.findSourceMapURL,"cancelAction"),a8=(0,u.createServerReference)("40ced2ac4888b0b81a390ab192c89e52595cb6f3f8",u.callServer,void 0,u.findSourceMapURL,"deprioritizeAction");function a9({view:a,selected:b,allNodes:c,onClose:e,commentsContent:f,commentsCount:g=0,activeTab:h,onTabChange:i,onAddComment:j,topOffset:k}){let l=!!f,m=h??"details";return(0,d.jsxs)(aU.b,{className:"absolute right-3 z-10 flex w-80 flex-col rounded-2xl",style:{top:k??12,maxHeight:`calc(100% - ${(k??12)+12}px)`},children:[l?(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-1 py-1",children:[(0,d.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,d.jsx)(aX.E,{active:"details"===m,onClick:()=>i?.("details"),children:"Details"}),(0,d.jsxs)(aX.E,{active:"comments"===m,onClick:()=>i?.("comments"),children:["Comments",g>0&&(0,d.jsx)("span",{className:"ml-1 rounded-full bg-white/10 px-1 text-[9px] font-semibold leading-4",children:g})]})]}),(0,d.jsx)("button",{onClick:e,title:"Close panel",className:"mr-1 rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(ae.A,{className:"size-4"})})]}):(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,d.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Details"}),(0,d.jsx)("button",{onClick:e,title:"Close panel",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(ae.A,{className:"size-4"})})]}),(0,d.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:(0,d.jsx)("div",{className:"p-3",children:"comments"===m&&l?f:b?(0,d.jsxs)(d.Fragment,{children:[j&&(0,d.jsxs)("button",{type:"button",onClick:()=>j(b.title),className:"mb-3 flex w-full items-center justify-center gap-1.5 rounded-lg border border-white/10 bg-white/[0.03] px-3 py-1.5 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,d.jsx)(V.A,{className:"size-3.5"}),"Comment on this ","ARCHITECTURE"===a?"component":"feature"]}),(0,d.jsx)(ba,{node:b,view:a},b.id)]}):(0,d.jsx)(bc,{view:a,nodes:c})})})]})}function ba({node:a,view:b}){let c=(0,r.useRouter)(),[f,g]=(0,e.useTransition)(),[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(a.plain??""),{hasFrontend:n,openFocus:o}=ak(),p=(0,ah.jR)(a.layer),q="ARCHITECTURE"===b?ag.m6:ag.yl,s=a=>g(async()=>{await a(),c.refresh()});return(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"text-xs uppercase tracking-wide text-muted-foreground",children:[(0,ag.Xf)(a.cluster),n&&p&&(0,d.jsxs)("span",{className:"ml-2 text-zinc-400",children:["\xb7 ",ah.YG[p].label]}),0===a.priority&&(0,d.jsx)("span",{className:"ml-2 text-[#ff7a90]",children:"\xb7 critical path"})]}),(0,d.jsx)("h2",{className:"mt-1 text-lg font-semibold leading-tight",children:a.title})]}),"INIT"===a.source&&(0,d.jsxs)("div",{className:"rounded-lg border border-violet-400/30 bg-violet-500/[0.06] p-2.5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-semibold text-violet-300",children:[(0,d.jsx)(ac.A,{className:"size-3.5"})," AI suggestion"]}),(0,d.jsx)("p",{className:"mt-1 text-[11px] leading-snug text-muted-foreground",children:"Suggested direction surfaced when mapping the repo. Accept to turn it into your own feature, or dismiss."}),(0,d.jsxs)("div",{className:"mt-2 flex gap-1.5",children:[(0,d.jsx)(aW.$,{size:"sm",className:"h-7 px-2.5 text-xs",disabled:f,onClick:()=>s(()=>v(a.id)),children:"Accept"}),(0,d.jsx)(aW.$,{size:"sm",variant:"outline",className:"h-7 px-2.5 text-xs text-muted-foreground",disabled:f,onClick:()=>s(()=>a5(a.id)),children:"Dismiss"})]})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:"Status"}),(0,d.jsxs)(af.l6,{value:a.status,onValueChange:b=>null!=b&&s(()=>a6(a.id,b)),children:[(0,d.jsx)(af.bq,{className:"h-8",disabled:f,children:(0,d.jsx)(af.yv,{children:a=>ag.nR[a]?.label??a})}),(0,d.jsx)(af.gC,{children:q.map(a=>(0,d.jsx)(af.eb,{value:a,children:ag.nR[a]?.label??a},a))})]})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:"Description"}),(0,d.jsx)("button",{type:"button",title:"Edit in focus mode",onClick:()=>o({id:a.id,title:a.title,value:l,editable:!0,onCommit:b=>{m(b);let c=b.trim()||null;c!==(a.plain??null)&&s(()=>a3(a.id,{plain:c}))}}),className:"rounded p-0.5 text-muted-foreground transition-colors hover:bg-white/10 hover:text-[#ff7a45]",children:(0,d.jsx)(T.A,{className:"size-3.5"})})]}),(0,d.jsx)("div",{className:"rounded-md border border-white/5 bg-card/40 px-2.5 py-2 text-sm",children:(0,d.jsx)(ay,{value:l,onChange:m,onBlur:()=>{let b=l.trim()||null;b!==(a.plain??null)&&s(()=>a3(a.id,{plain:b}))}})})]}),a.sourceRef&&(0,d.jsx)("div",{className:"rounded-md border border-border bg-card px-2 py-1.5 font-mono text-xs text-muted-foreground",children:a.sourceRef}),a.files.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("h3",{className:"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:["Files (",a.files.length,")"]}),(0,d.jsx)(aV.h,{files:a.files.map(a=>({path:a}))})]}),"ARCHITECTURE"===b&&(0,d.jsx)(bb,{node:a}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-1.5 pt-1",children:[(0,d.jsx)(aW.$,{size:"sm",variant:"outline",onClick:()=>i(!0),children:"Edit"}),(0,d.jsx)(aW.$,{size:"sm",variant:"outline",onClick:()=>k(!0),children:"+ Sub-node"}),(0,d.jsx)(aW.$,{size:"sm",variant:"outline",disabled:f,onClick:()=>s(()=>a7(a.id)),children:"Cancel"}),(0,d.jsx)(aW.$,{size:"sm",variant:"outline",disabled:f,onClick:()=>s(()=>a8(a.id)),children:"Deprioritize"}),(0,d.jsxs)(aY.Lt,{children:[(0,d.jsx)(aY.tv,{render:(0,d.jsx)(aW.$,{size:"sm",variant:"outline",className:"text-red-300",children:"Delete"})}),(0,d.jsxs)(aY.EO,{children:[(0,d.jsxs)(aY.wd,{children:[(0,d.jsxs)(aY.r7,{children:["Delete “",a.title,"”?"]}),(0,d.jsx)(aY.$v,{children:"This removes the node and all its sub-nodes. It can’t be undone."})]}),(0,d.jsxs)(aY.ck,{children:[(0,d.jsx)(aY.Zr,{children:"Cancel"}),(0,d.jsx)(aY.Rx,{onClick:()=>s(()=>a5(a.id)),children:"Delete"})]})]})]})]}),h&&(0,d.jsx)(a4,{open:!0,onOpenChange:i,mode:"edit",view:b,heading:"Edit node",nodeId:a.id,hasFrontend:n,defaults:{title:a.title,role:a.role,plain:a.plain,status:a.status,cluster:a.cluster,kind:a.kind,layer:a.layer}}),j&&(0,d.jsx)(a4,{open:!0,onOpenChange:k,mode:"create",view:b,heading:"New sub-node",parentId:a.id,position:{x:a.x,y:a.y+120},hasFrontend:n,defaults:{cluster:a.cluster,layer:a.layer}})]})}function bb({node:a}){let b=(0,r.useRouter)(),[c,f]=(0,e.useState)(""),[g,h]=(0,e.useState)(!1),i=a.bugFlags.filter(a=>!a.resolved),j=a=>{h(!0),a().then(()=>b.refresh()).finally(()=>h(!1))},k=()=>{let b=c.trim();b&&j(async()=>{(await fetch("/api/bug-flags",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({nodeId:a.id,by:"user",note:b})})).ok&&f("")})};return(0,d.jsxs)("div",{children:[(0,d.jsxs)("h3",{className:"mb-1.5 flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:[(0,d.jsx)(l.A,{className:"size-3.5 text-rose-300"}),"Bug flags",i.length>0&&` (${i.length} open)`]}),a.bugFlags.length>0&&(0,d.jsx)("ul",{className:"space-y-1.5",children:a.bugFlags.map(a=>(0,d.jsxs)("li",{className:(0,ax.cn)("rounded-md border px-2 py-1.5",a.resolved?"border-white/5 bg-card/30 opacity-60":"border-rose-400/25 bg-rose-500/[0.05]"),children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{title:"agent"===a.by?"Flagged by an agent examining the code":"Flagged by you",className:(0,ax.cn)("rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide","agent"===a.by?"bg-violet-500/15 text-violet-300":"bg-sky-500/15 text-sky-300"),children:"agent"===a.by?"agent":"you"}),(0,d.jsxs)("div",{className:"ml-auto flex items-center gap-1",children:[(0,d.jsx)("button",{type:"button",disabled:g,onClick:()=>j(()=>fetch(`/api/bug-flags/${a.id}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({resolved:!a.resolved})})),className:"rounded px-1.5 py-0.5 text-[10px] text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:a.resolved?"Reopen":"Resolve"}),(0,d.jsx)("button",{type:"button",disabled:g,title:"Delete flag",onClick:()=>j(()=>fetch(`/api/bug-flags/${a.id}`,{method:"DELETE"})),className:"rounded p-0.5 text-muted-foreground transition-colors hover:bg-white/10 hover:text-red-300",children:(0,d.jsx)(ae.A,{className:"size-3"})})]})]}),(0,d.jsx)("p",{className:(0,ax.cn)("mt-1 text-[11.5px] leading-snug",a.resolved&&"line-through"),children:a.note})]},a.id))}),(0,d.jsxs)("div",{className:"mt-1.5 flex items-start gap-1.5",children:[(0,d.jsx)("textarea",{rows:1,value:c,placeholder:"Flag a bug or something worth investigating…",onChange:a=>f(a.target.value),onKeyDown:a=>{"Enter"!==a.key||a.shiftKey||(a.preventDefault(),k())},className:"field-sizing-content min-h-7 w-full resize-none rounded-md border border-white/10 bg-white/[0.03] px-2 py-1 text-[11.5px] outline-none placeholder:text-muted-foreground/60 focus:bg-white/[0.06]"}),(0,d.jsx)(aW.$,{size:"sm",variant:"outline",className:"h-7 shrink-0 px-2 text-[11px]",disabled:g||!c.trim(),onClick:k,children:"Flag"})]})]})}function bc({view:a,nodes:b}){let c=b.filter(a=>0===a.priority).length;return(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-sm font-semibold",children:"ROADMAP"===a?"Roadmap":"Architecture"}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Click a node for details and actions. Drag to rearrange — positions are saved."})]}),(0,d.jsxs)("dl",{className:"grid grid-cols-2 gap-2 text-center",children:[(0,d.jsx)(bd,{label:"nodes",value:b.length}),(0,d.jsx)(bd,{label:"critical",value:c})]})]})}function bd({label:a,value:b}){return(0,d.jsxs)("div",{className:"rounded-md border border-border bg-card py-2",children:[(0,d.jsx)("div",{className:"text-lg font-semibold",children:b}),(0,d.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:a})]})}function be({payload:a,onDismiss:b}){let[c,f]=(0,e.useState)(""),[g,h]=(0,e.useState)(null);if((a?.id??null)!==g&&(h(a?.id??null),f(a?.value??"")),!a)return null;let i=()=>{a.onCommit(c),b()};return(0,d.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":`Edit description — ${a.title}`,onMouseDown:a=>{a.target===a.currentTarget&&i()},className:"fixed inset-0 z-[70] flex items-center justify-center bg-black/55 backdrop-blur-[5px] animate-in fade-in duration-150",children:(0,d.jsxs)(aU.b,{className:"flex max-h-[82vh] w-[min(720px,92vw)] flex-col rounded-2xl duration-150 animate-in fade-in zoom-in-95",onMouseDown:a=>a.stopPropagation(),children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 border-b border-white/10 px-4 py-3",children:[(0,d.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:"Description"}),(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate text-sm font-semibold",children:a.title}),(0,d.jsxs)("span",{className:"shrink-0 font-mono text-[11px] text-muted-foreground",children:[c.length," chars"]}),(0,d.jsx)("button",{type:"button",onClick:i,title:"Close (Esc)",className:"shrink-0 rounded-lg p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(ae.A,{className:"size-4"})})]}),(0,d.jsx)("div",{className:"min-h-[40vh] flex-1 overflow-y-auto px-6 py-5 text-[15px] leading-relaxed",children:(0,d.jsx)(ay,{bare:!0,autoFocus:a.editable,editable:a.editable,value:c,onChange:f})}),(0,d.jsxs)("div",{className:"flex items-center gap-3 border-t border-white/10 px-4 py-2.5 text-[11.5px] text-muted-foreground",children:[(0,d.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{className:"size-1.5 rounded-full bg-emerald-400"})," Autosaves"]}),(0,d.jsx)("span",{className:"opacity-70",children:"\xb7 Esc to close"}),a.editable&&(0,d.jsxs)("button",{type:"button",onClick:i,className:"ml-auto flex items-center gap-1.5 rounded-lg bg-[#ff7a45] px-3 py-1.5 text-xs font-semibold text-black transition hover:brightness-110",children:[(0,d.jsx)(ad.A,{className:"size-3.5"}),"Save & close"]})]})]})})}var bf=c(35283),bg=c(38476),bh=c(55805),bi=c(54193),bj=c(82626),bk=c(81725),bl=c(40335),bm=c(25127),bn=c(40359),bo=c(92994),bp=c(84170),bq=c(34849),br=c(86892),bs=c(27741);function bt(a,b){let c={x:b.x,y:b.y};for(let b=0;b<100&&a.some(a=>200>Math.abs(c.x-a.x)&&150>Math.abs(c.y-a.y));b++)c.y+=150;return c}var bu=c(67637);let bv=[{value:"cluster",label:"Theme"},{value:"status",label:"Status"},{value:"priority",label:"Priority"}],bw=new Set(["title","role","plain","cluster","layer","status","priority"]),bx={roadmapNode:aQ,archNode:aQ,annotation:t.Sh},by={deletable:aS.I,annotation:aT.L},bz={CONTAINS:{stroke:"#7c7c8a"},DEPENDS:{stroke:"#f5b942",dash:"6 4"},RELATES:{stroke:"#8a8a95",dash:"4 4"},REPLACES:{stroke:"#ff6b9d"}};function bA({view:a,nodes:b,edges:c,workOrder:r=[],embedded:s=!1,commentsContent:u,commentsCount:v=0,controlRef:w,onAskAgent:x,onAddComment:y,annotations:z,onPinClick:A,onUpdateComment:B,onRemoveComment:C,boardAnnotations:D,initialArrangedBy:E=null,initialCollapsed:F=[],hasFrontend:G=!1,readOnly:H=!1,firstTapHighlightsOnly:I=!1}){let J=r.join(","),K=(0,e.useMemo)(()=>{let a=new Map;return r.forEach((b,c)=>a.set(b,c+1)),a},[J]),L=r[0]??null,M=(0,e.useMemo)(()=>b.map(a=>({id:a.id,type:"ROADMAP"===a.view?"roadmapNode":"archNode",position:{x:a.x,y:a.y},data:{title:a.title,role:a.role,plain:a.plain,status:a.status,priority:a.priority,cluster:a.cluster,layer:a.layer,view:a.view,kind:a.kind,source:a.source,sourceRef:a.sourceRef,isCriterion:a.isCriterion,isChild:null!=a.parentId,parentId:a.parentId,signals:a.signals,fileCount:a.files.length,importsIn:a.importsIn,importsOut:a.importsOut,openBugs:a.bugFlags.filter(a=>!a.resolved).length}})),[b]),N=(0,e.useMemo)(()=>{let a;return a=new Set(b.map(a=>a.id)),[...b.filter(b=>b.parentId&&a.has(b.parentId)).map(a=>({id:`c-${a.id}`,source:a.parentId,sourceHandle:"sb",target:a.id,targetHandle:"tt",type:"smoothstep",style:{stroke:bz.CONTAINS.stroke}})),...c.filter(b=>a.has(b.fromId)&&a.has(b.toId)).map(a=>{let b=bz[a.kind]??bz.RELATES,c="DEPENDS"===a.kind?"depends on":void 0;return{id:a.id,source:a.fromId,sourceHandle:a.sourceHandle??void 0,target:a.toId,targetHandle:a.targetHandle??void 0,label:a.label??c,type:"deletable",markerEnd:{type:g.TG.ArrowClosed,color:b.stroke},style:{stroke:b.stroke,strokeDasharray:b.dash}}})]},[b,c]),[O,P]=(0,e.useState)(M),[Q,R]=(0,e.useState)(N),[S,T]=(0,e.useState)(null),[U,V]=(0,e.useState)(null),[W,X]=(0,e.useState)(null),[Y,Z]=(0,e.useState)(!1),[$,_]=(0,e.useState)("details"),{tool:aa,setTool:ab,flowProps:ac,paneClass:ad}=(0,bf.e)(),[ae,af]=(0,e.useState)(null),[ai,ak]=(0,e.useState)(null),[am,an]=(0,e.useState)(!1),ao=(0,e.useRef)(!1);(0,e.useRef)("details");let[ap,aq]=(0,e.useState)(new Set),[ar,as]=(0,e.useState)(null),[at,au]=(0,e.useState)(!1),av=(0,e.useRef)(null),aw=(0,e.useCallback)((a,b,c)=>{P(c=>c.map(c=>c.id===a?{...c,data:{...c.data,...b}}:c)),c&&fetch(`/api/nodes/${a}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(Object.fromEntries(Object.entries(b).filter(([a])=>bw.has(a))))})},[]),ay=(0,e.useMemo)(()=>JSON.stringify(Array.from(new Set(O.map(a=>a.data.cluster).filter(a=>!!a))).sort()),[O]),az=(0,e.useMemo)(()=>JSON.parse(ay),[ay]),aA=(0,e.useCallback)(a=>aq(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c}),[]),aB=(0,e.useCallback)(a=>{T(a),Z(!0),_("details")},[]),aC=(0,e.useCallback)(a=>{P(b=>b.filter(b=>b.id!==a)),T(b=>b===a?null:b),fetch(`/api/nodes/${a}`,{method:"DELETE"})},[]),aD=(0,e.useCallback)(async(b,c,d="FEATURE")=>{let e=(0,f.sX)(),g="ARCHITECTURE"===a?"REBUILD":"PENDING",h="BUG"===d?"New bug":"New node";P(f=>[...f,{id:e,type:"ROADMAP"===a?"roadmapNode":"archNode",position:{x:b,y:c},data:{title:h,role:null,plain:null,status:g,priority:2,cluster:null,view:a,kind:d,source:"MANUAL",sourceRef:null,isCriterion:!1,isChild:!1,parentId:null,openBugs:0}}]),aq(a=>new Set(a).add(e)),as(e),T(e);try{if(!(await fetch("/api/nodes",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({id:e,view:a,kind:d,title:h,status:g,x:b,y:c})})).ok)throw Error("create failed")}catch{P(a=>a.filter(a=>a.id!==e)),aq(a=>{let b=new Set(a);return b.delete(e),b}),as(a=>a===e?null:a),T(a=>a===e?null:a)}},[a]),aE=(0,e.useCallback)((a,b)=>{if(!ae||!av.current)return;let c=av.current.screenToFlowPosition({x:a,y:b});aD(c.x,c.y,ae),af(null),ak(null)},[ae,aD]);(0,e.useCallback)(()=>{let a=O.filter(a=>"annotation"!==a.type);return function(a,b,c={}){let d=c.colW??320,e=c.rowH??150,f=c.maxCols??4,g=c.bandGap??90;if(0===a.length){if(0===b.length)return{x:0,y:0};let a=Math.max(...b.map(a=>a.y));return bt(b,{x:0,y:a+e+g})}let h=Math.min(...a.map(a=>a.x)),i=Math.min(...a.map(a=>a.y)),j=a.map(a=>Math.max(0,Math.round((a.x-h)/d))),k=Math.min(f,Math.max(Math.max(...j)+1,Math.ceil(Math.sqrt(a.length+1)))),l=Array(k).fill(i-e);a.forEach((a,b)=>{let c=Math.min(j[b],k-1);l[c]=Math.max(l[c],a.y)});let m=0;for(let a=1;a<k;a++)l[a]<l[m]&&(m=a);return bt(b,{x:h+m*d,y:l[m]+e})}(a.filter(a=>!a.data.parentId&&!(a.data.cluster??"").trim()).map(a=>a.position),a.map(a=>a.position))},[O]);let aF=(0,e.useCallback)(()=>{au(!1),af("FEATURE")},[]),aG=(0,e.useCallback)(()=>{au(!1),af("BUG")},[]),[aH,aI]=(0,e.useState)(null),aJ=(0,e.useCallback)(a=>aI(a),[]),aK=(0,e.useMemo)(()=>({view:a,readOnly:H,categories:az,statuses:"ARCHITECTURE"===a?ag.m6:ag.yl,patch:aw,isExpanded:a=>ap.has(a),toggleExpand:aA,openDetailed:aB,openFocus:aJ,removeNode:aC,editingTitleId:ar,onAskAgent:x,hasFrontend:G}),[a,H,az,aw,ap,aA,aB,aJ,aC,ar,x,G]),[aL,aM]=(0,e.useState)(E),[aN,aO]=(0,e.useState)(""),[aP,aQ]=(0,e.useState)("full"),[aS,aT]=(0,e.useState)(new Set),[aU,aV]=(0,e.useState)(new Set),[aW,aX]=(0,e.useState)(new Set),[aY,aZ]=(0,e.useState)(null),a$=(0,e.useMemo)(()=>Array.from(new Set(b.map(a=>a.status))),[b]),a_=(0,e.useMemo)(()=>Array.from(new Set(b.map(a=>a.cluster).filter(a=>!!a))).sort(),[b]),a0=(0,e.useMemo)(()=>Array.from(new Set(b.map(a=>a.priority))).sort((a,b)=>a-b),[b]),a1=(0,e.useCallback)(a=>(!aS.size||!!aS.has(a.status))&&(!aU.size||!!a.cluster&&!!aU.has(a.cluster))&&(!aW.size||!!aW.has(a.priority)),[aS,aU,aW]),a2=aS.size+aU.size+aW.size+ +!!aY,a3=(0,e.useCallback)(()=>{aT(new Set),aV(new Set),aX(new Set),aZ(null)},[]),[a4,a5]=(0,e.useState)(()=>new Set(F)),a6=(0,e.useCallback)(b=>{a5(c=>{let d=new Set(c);return d.has(b)?d.delete(b):d.add(b),s||fetch("/api/board-layout",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({board:"ROADMAP"===a?"roadmap":"architecture",collapsed:[...d]})}).catch(()=>{}),d})},[s,a]),a7=(0,e.useMemo)(()=>(function(a){let b=new Map;for(let c of a)c.parentId&&b.set(c.parentId,(b.get(c.parentId)??0)+1);return b})(b),[b]),a8=(0,e.useMemo)(()=>{let a=new Map;for(let c of b)c.parentId&&"DONE"===c.status&&a.set(c.parentId,(a.get(c.parentId)??0)+1);return a},[b]),ba=(0,e.useMemo)(()=>(function(a,b){let c=new Set;if(0===b.size)return c;let d=new Map;for(let b of a){if(!b.parentId)continue;let a=d.get(b.parentId);a?a.push(b.id):d.set(b.parentId,[b.id])}let e=[...b];for(;e.length;){let a=e.pop();for(let b of d.get(a)??[])c.has(b)||(c.add(b),e.push(b))}return c})(b,a4),[b,a4]),bb=(0,e.useMemo)(()=>O.map(a=>({...a,hidden:!a1(a.data)||ba.has(a.id)})),[O,a1,ba]),bc=(0,e.useMemo)(()=>new Set(bb.filter(a=>a.hidden).map(a=>a.id)),[bb]),bd=(0,e.useMemo)(()=>Q.map(a=>({...a,hidden:bc.has(a.source)||bc.has(a.target)})),[Q,bc]),bB=(0,e.useMemo)(()=>{if(U){let a=bd.find(a=>a.id===U);return a?new Set([a.source,a.target]):null}return S?(0,bg.F1)(S,bd.filter(a=>!a.hidden)):null},[S,U,bd]),bC=aN.trim().length>0,bD=(0,e.useMemo)(()=>{if(!bC)return null;let a=new Set;for(let b of O)a1(b.data)&&(0,bk.Qk)((0,bk.$$)(b.data),aN)&&a.add(b.id);return a},[O,aN,a1,bC]),bE=(0,e.useMemo)(()=>"ARCHITECTURE"===a?(0,bl.d)(b):[],[a,b]),bF=(0,e.useCallback)(a=>{av.current&&(a.focusIds.length?av.current.fitView({nodes:a.focusIds.map(a=>({id:a})),duration:700,padding:.3,maxZoom:1.1}):av.current.fitView({duration:700,padding:.2}))},[]),bG=(0,bm.W)(bE,bF),bH=bG.focusIds,bI=bH??bD??bB,bJ=bD??bH??bB,bK=(0,e.useMemo)(()=>aY?new Set(bb.filter(a=>!a.hidden&&!(0,bp.F)(aY,(0,ah.jR)(a.data.layer))).map(a=>a.id)):null,[aY,bb]),bL=(0,e.useMemo)(()=>bb.map(a=>{let b=K.get(a.id),c=a7.get(a.id)??0,d={...b?{workOrderRank:b,isNext:1===b}:{},...c>0?{childCount:c,childDone:a8.get(a.id)??0,collapsed:a4.has(a.id),onToggleCollapse:a6}:{}},e=b||c>0?{...a,data:{...a.data,...d}}:a;if(ap.has(a.id)&&(e={...e,zIndex:25}),e.hidden)return e;if(!bI)return bK?.has(a.id)?{...e,style:{...e.style,opacity:.3,filter:"saturate(0.3)",transition:"opacity 120ms, filter 120ms"}}:e;let f=bI.has(a.id),g=bJ?bk.Uy:.45;return{...e,zIndex:f&&bJ?24:e.zIndex,style:{...e.style,opacity:f?1:g,boxShadow:f&&bJ?bk.RU:e.style?.boxShadow,borderRadius:f&&bJ?14:e.style?.borderRadius,transition:"opacity 120ms, box-shadow 120ms"}}}),[bb,bI,bJ,K,ap,bK,a7,a8,a4,a6]),bM=(0,e.useMemo)(()=>{if("ROADMAP"===a&&!aL||"ROADMAP"!==a&&"ARCHITECTURE"!==a)return[];let b=new Map(bL.map(a=>[a.id,a])),c=[];for(let e of bL){var d;if(e.hidden||"annotation"===e.type)continue;let f=(e.data.parentId?b.get(e.data.parentId):void 0)??e,g="ROADMAP"===a&&aL?(d=f.data,"status"===aL?ag.nR[d.status]?.label??d.status:"priority"===aL?`P${d.priority}`:d.cluster?.trim()||"—"):f.data.cluster?.trim()||"—";c.push({id:e.id,group:g,x:e.position.x,y:e.position.y,w:e.measured?.width??(e.data.isChild?224:256),h:e.measured?.height??96})}return(0,bs.S)(c)},[bL,aL,a]),bN="ARCHITECTURE"===a||"cluster"===aL?"category":"neutral",bO=(0,e.useMemo)(()=>{if(bH)return bd.map(a=>a.hidden?a:bH.has(a.source)&&bH.has(a.target)?{...a,style:{...a.style,opacity:1}}:{...a,label:void 0,style:{...a.style,opacity:.06}});if(bD)return bd.map(a=>a.hidden?a:bD.has(a.source)&&bD.has(a.target)?{...a,style:{...a.style,opacity:1}}:{...a,label:void 0,style:{...a.style,opacity:.06}});let a=S??W;return U||a?bd.map(b=>b.hidden?b:(U?b.id===U:b.source===a||b.target===a)?{...b,zIndex:20,style:{...b.style,opacity:1,strokeWidth:2.5}}:{...b,selectable:!1,label:void 0,markerEnd:void 0,style:{...b.style,opacity:.06}}):bd.map(a=>{if(a.hidden)return a;let b=bK&&(bK.has(a.source)||bK.has(a.target));return{...a,label:void 0,style:{...a.style,opacity:b?.06:.18}}})},[bd,S,U,W,bD,bK,bH]),bP=void 0!==D,[bQ,bR]=(0,e.useState)(D??[]),bS=(0,e.useMemo)(()=>{if(bP){let a=new Set(b.map(a=>a.id));return bQ.filter(b=>"feature"===b.targetKind&&a.has(b.targetId)).map((a,b)=>({id:a.id,n:b+1,targetId:a.targetId,text:a.body,x:a.x,y:a.y}))}let a=new Map((z??[]).map(a=>[a.id,a.comment]));return(0,aR.m)(z??[],{tables:[],features:b.map(a=>({id:a.id,title:a.title}))}).map(b=>({id:b.annotationId,n:b.n,targetId:b.targetId,text:a.get(b.annotationId)??"",x:null,y:null}))},[bP,bQ,z,b]),bT=(0,e.useMemo)(()=>{let a=new Map;for(let b of bS){let c=a.get(b.targetId)??[];c.push({id:b.id,n:b.n,column:null}),a.set(b.targetId,c)}return a},[bS]),bU=(0,e.useCallback)(async a=>{let c=(0,aR.m)([{id:"_",excerpt:a}],{tables:[],features:b.map(a=>({id:a.id,title:a.title}))})[0];if(!c)return;let d=await fetch("/api/board-annotations",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({targetKind:"feature",targetId:c.targetId})});if(d.ok){let a=await d.json();bR(b=>[...b,a])}},[b]),bV=(0,e.useCallback)((a,b)=>{bR(c=>c.map(c=>c.id===a?{...c,...b}:c)),fetch(`/api/board-annotations/${a}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(b)})},[]),bW=(0,e.useCallback)(a=>{bR(b=>b.filter(b=>b.id!==a)),fetch(`/api/board-annotations/${a}`,{method:"DELETE"})},[]),bX=bP?bU:y,[bY,bZ]=(0,e.useState)(()=>new Map),b$=(0,e.useMemo)(()=>{let a=new Map(bL.map(a=>[a.id,a])),b=new Map,c=bS.flatMap(c=>{let d=a.get(c.targetId);if(!d||d.hidden)return[];let e=b.get(c.targetId)??0;b.set(c.targetId,e+1);let f=d.measured?.height??96;return[{id:`anno-${c.id}`,type:"annotation",position:{x:c.x??d.position.x+26,y:c.y??d.position.y+f+56+112*e},measured:bY.get(`anno-${c.id}`),draggable:bP,data:{n:c.n,text:c.text,annotationId:c.id,onClick:bP||B?void 0:A,editable:bP||!!B,onChangeText:bP?(a,b)=>bV(a,{body:b}):B,onDelete:bP?bW:C}}]});return[...bL.map(a=>{let b=bT.get(a.id);return b||bX?{...a,data:{...a.data,pins:b,onPinClick:bP?void 0:A,onComment:bX}}:a}),...c]},[bL,bS,bT,bP,A,B,C,bX,bV,bW,bY]),b_=(0,e.useMemo)(()=>bS.map(a=>({id:`annoe-${a.id}`,source:a.targetId,sourceHandle:`pin-${a.id}`,target:`anno-${a.id}`,targetHandle:"in",type:"annotation",selectable:!1,zIndex:30,style:{stroke:t.V5,strokeWidth:1.5,opacity:.9}})),[bS]),b0=(0,e.useCallback)(a=>{let b=[];for(let c of a)if("position"===c.type&&c.id.startsWith("anno-")&&c.position){let a=c.id.slice(5),{x:b,y:d}=c.position;bR(c=>c.map(c=>c.id===a?{...c,x:b,y:d}:c))}else if("dimensions"===c.type&&c.id.startsWith("anno-")){let a=c.dimensions;a&&bZ(b=>{let d=b.get(c.id);if(d&&d.width===a.width&&d.height===a.height)return b;let e=new Map(b);return e.set(c.id,a),e})}else b.push(c);b.length&&P(a=>(0,h._0)(b,a))},[]),b1=(0,e.useCallback)(a=>R(b=>(0,h.zW)(a,b)),[]),b2=(0,e.useCallback)(async a=>{if(!a.source||!a.target||a.source===a.target)return;let b=await fetch("/api/edges",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({fromId:a.source,toId:a.target,kind:"DEPENDS",sourceHandle:a.sourceHandle??null,targetHandle:a.targetHandle??null})});if(!b.ok)return;let c=await b.json(),d=bz.DEPENDS;R(b=>b.some(a=>a.id===c.id)?b:[...b,{id:c.id,source:c.fromId,sourceHandle:a.sourceHandle??void 0,target:c.toId,targetHandle:a.targetHandle??void 0,label:"depends on",type:"deletable",markerEnd:{type:g.TG.ArrowClosed,color:d.stroke},style:{stroke:d.stroke,strokeDasharray:d.dash}}])},[]),b3=(0,e.useCallback)(async(b,c,d)=>{let e=await fetch("/api/nodes",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({view:a,title:"New node",parentId:b.id,cluster:b.data.cluster??null,status:"ARCHITECTURE"===a?"REBUILD":"PENDING",x:c,y:d})});if(!e.ok)return;let f=await e.json();P(e=>[...e,{id:f.id,type:"ROADMAP"===a?"roadmapNode":"archNode",position:{x:c,y:d},data:{title:f.title,role:f.role,plain:f.plain,status:f.status,priority:f.priority,cluster:f.cluster,view:f.view,source:f.source,sourceRef:f.sourceRef,kind:f.kind,isCriterion:!1,isChild:!0,parentId:b.id,openBugs:0}}]),R(a=>[...a,{id:`c-${f.id}`,source:b.id,sourceHandle:"sb",target:f.id,targetHandle:"tt",type:"smoothstep",style:{stroke:bz.CONTAINS.stroke}}]),aq(a=>new Set(a).add(f.id)),as(f.id),T(f.id)},[a]),b4=(0,e.useCallback)(async(a,b)=>{if(b.isValid||!b.fromNode||!av.current)return;let c=a.changedTouches,d=c?.[0]?.clientX??a.clientX,e=c?.[0]?.clientY??a.clientY,{x:f,y:g}=av.current.screenToFlowPosition({x:d,y:e});await b3(b.fromNode,f,g)},[b3]),b5=(0,e.useMemo)(()=>b.find(a=>a.id===S)??null,[b,S]),b6=(0,e.useCallback)((a,b,c)=>{fetch(`/api/nodes/${a}/position`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({x:b,y:c})})},[]),b7=(0,e.useCallback)(a=>{T(a),V(null);let b=av.current?.getNode(a);if(!b||!av.current)return;let c=b.measured?.width??128,d=b.measured?.height??48;av.current.setCenter(b.position.x+c/2,b.position.y+d/2,{zoom:1.2,duration:600})},[]),b8=(0,e.useCallback)(a=>{let b=(0,bq.VI)(O.map(a=>({id:a.id,parentId:a.data.parentId??null,cluster:a.data.cluster,status:a.data.status,priority:a.data.priority,title:a.data.title,role:a.data.role})),a,{viewportAspect:window.innerWidth/window.innerHeight});P(a=>a.map(a=>{let c=b.get(a.id);return c?{...a,position:c}:a}));let c=Array.from(b,([a,b])=>({id:a,x:b.x,y:b.y}));c.length&&fetch("/api/nodes/positions",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({batch:c})}),aM(a),fetch("/api/board-layout",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({board:"roadmap",arrangedBy:a})}),requestAnimationFrame(()=>av.current?.fitView({duration:600,padding:.2}))},[O]);(0,e.useMemo)(()=>{let b=new Map;if("ROADMAP"!==a||!aL)return b;let c=a=>"status"===aL?a.status:"priority"===aL?`P${a.priority}`:a.cluster??"—";for(let a of O)"annotation"!==a.type&&b.set(a.id,c(a.data));return b},[O,aL,a]),(0,e.useRef)(null);let b9=(0,e.useCallback)(()=>{let a=function(a,b,c={}){if(0===a.length)return new Map;let d=function(a,b){let c=a.map(a=>a.id).sort(),d=new Map(c.map(a=>[a,[]]));for(let a of[...b].sort((a,b)=>a.fromId.localeCompare(b.fromId)||a.toId.localeCompare(b.toId)))d.get(a.fromId)?.push(a);let e=new Map,f=[],g=a=>{for(let b of(e.set(a,"visiting"),d.get(a)??[])){let a=e.get(b.toId);"visiting"!==a&&(f.push(b),"done"!==a&&g(b.toId))}e.set(a,"done")};for(let a of c)e.has(a)||g(a);return f}(a,b),e=function(a,b){let c=new Map(a.map(a=>[a.id,[]]));for(let a of b)c.get(a.fromId)?.push(a.toId);let d=new Map,e=a=>{let b=d.get(a);if(void 0!==b)return b;d.set(a,0);let f=c.get(a)??[],g=f.length?1+Math.max(...f.map(e)):0;return d.set(a,g),g};for(let b of a)e(b.id);return d}(a,d),f=new Map(a.map(a=>[a.id,[]]));for(let a of d)f.get(a.fromId)?.push(a.toId);let g=Array.from(new Set(a.map(a=>a.group))),h=g.filter(a=>"—"!==a).sort(),i=g.includes("—")?[...h,"—"]:h,j=[];for(let b of i){let c=a.filter(a=>a.group===b),d=Math.min(...c.map(a=>e.get(a.id)??0)),g=Math.max(...c.map(a=>e.get(a.id)??0)),h=new Map,i=new Map,k=0,l=1;for(let a=d;a<=g;a++){let b=c.filter(b=>e.get(b.id)===a);if(!b.length)continue;let d=a=>{let b=(f.get(a.id)??[]).map(a=>i.get(a)).filter(a=>void 0!==a);return b.length?b.reduce((a,b)=>a+b,0)/b.length:1/0};b.sort((a,b)=>d(a)-d(b)||a.id.localeCompare(b.id));let g=Math.max(1,Math.ceil(Math.sqrt(2*b.length)));b.forEach((a,b)=>{let c=Math.floor(b/g),d=b%g;i.set(a.id,d),h.set(a.id,{x:k+360*c,y:150*d}),l=Math.max(l,d+1)}),k+=360*Math.ceil(b.length/g)}j.push({d:b,w:k,h:150*l,local:h})}let k=(0,br.Xi)(j.map(a=>({id:a.d,w:a.w,h:a.h})),{gapX:84,gapY:80,viewportAspect:c.viewportAspect,minBandW:1080,aspectSlack:1.5}),l=new Map;for(let a of j){let b=k.get(a.d);for(let[c,d]of a.local)l.set(c,{x:b.x+d.x,y:b.y+d.y})}return l}(O.filter(a=>"annotation"!==a.type).map(a=>({id:a.id,group:(a.data.cluster??"").trim()||"—"})),c.filter(a=>"DEPENDS"===a.kind).map(a=>({fromId:a.fromId,toId:a.toId})),{viewportAspect:window.innerWidth/window.innerHeight});P(b=>b.map(b=>{let c=a.get(b.id);return c?{...b,position:c}:b}));let b=Array.from(a,([a,b])=>({id:a,x:b.x,y:b.y}));b.length&&fetch("/api/nodes/positions",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({batch:b})}),requestAnimationFrame(()=>av.current?.fitView({duration:600,padding:.2}))},[O,c]),ca=(0,e.useMemo)(()=>bC?(0,bk.r2)(O.filter(a=>a1(a.data)),aN,a=>(0,bk.$$)(a.data),a=>({id:a.id,label:a.data.title,sublabel:a.data.cluster??a.data.status,kind:"feature"})):[],[O,aN,a1,bC]);function cb(a,b){b(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})}return(0,d.jsx)(aj.Provider,{value:aK,children:(0,d.jsxs)("div",{className:(0,ax.cn)("canvas-dots relative w-full",s?"h-full":"h-screen",am&&"rf-panning"),onDragOver:a=>{a.dataTransfer.types.includes("application/beacon-node")&&(a.preventDefault(),a.dataTransfer.dropEffect="copy")},onDrop:a=>{if(!a.dataTransfer.getData("application/beacon-node")||!av.current)return;a.preventDefault();let{x:b,y:c}=av.current.screenToFlowPosition({x:a.clientX,y:a.clientY});aD(b,c,"BUG"===a.dataTransfer.getData("application/beacon-node-kind")?"BUG":"FEATURE")},children:[(0,d.jsxs)(h.Gc,{...ac,className:(0,ax.cn)(ad,(ae||at)&&"rf-placing"),nodes:b$,edges:"far"===aP?[...bO,...b_].map(a=>({...a,hidden:!0})):[...bO,...b_],nodeTypes:bx,edgeTypes:by,nodesConnectable:!H,connectionMode:g.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onInit:a=>{av.current=a},onNodesChange:b0,onEdgesChange:b1,onMoveStart:()=>an(!0),onMoveEnd:()=>an(!1),onConnect:b2,onConnectEnd:b4,onNodeMouseEnter:(a,b)=>X(b.id),onNodeMouseLeave:()=>X(null),onEdgesDelete:a=>{for(let b of a)b.id.startsWith("c-")||fetch(`/api/edges/${b.id}`,{method:"DELETE"})},onNodesDelete:a=>{for(let b of a)b.id.startsWith("anno-")||(fetch(`/api/nodes/${b.id}`,{method:"DELETE"}),T(a=>a===b.id?null:a))},onNodeClick:(a,b)=>{if(ae)return void aE(a.clientX,a.clientY);if("annotation"===b.type){let a=b.data;a.editable||A?.(a.annotationId);return}if(at){if(au(!1),b.data.isChild)return;b3(b,b.position.x+300,b.position.y+60);return}let c=S===b.id;if(T(b.id),V(null),_("details"),s){let b=a.target,d=b?.closest("input, textarea, select, button, [role='combobox']"),e=I&&!c&&!ao.current;d||e||Z(!0)}},onEdgeClick:(a,b)=>{V(b.id),T(null),_("details")},onPaneClick:a=>{ae?aE(a.clientX,a.clientY):at?au(!1):(Z(!1),T(null),V(null))},onNodeDragStop:(a,b)=>{if(b.id.startsWith("anno-")){bP&&bV(b.id.slice(5),{x:b.position.x,y:b.position.y});return}H||b6(b.id,b.position.x,b.position.y)},deleteKeyCode:H?null:["Backspace","Delete"],colorMode:"dark",fitView:!0,fitViewOptions:{padding:.15,minZoom:.38,maxZoom:.9},minZoom:.2,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[(0,d.jsx)(bu.Z,{regions:bM,tone:bN,lod:aP}),(0,d.jsx)(al.J,{onLod:aQ}),(0,d.jsx)(h.H2,{position:"bottom-right",className:"!overflow-hidden !rounded-xl !border !border-white/10 [&_button]:!border-white/10 [&_button]:!bg-card/70 [&_button]:!text-foreground [&_button]:!backdrop-blur"}),(0,d.jsx)(h.Zk,{position:"bottom-left",style:{marginBottom:118},children:(0,d.jsx)(bf.H,{tool:aa,onChange:ab})}),(0,d.jsx)(h.Zk,{position:"bottom-right",style:{marginBottom:152},children:(0,d.jsx)(bo.er,{title:"Legend",trigger:(a,b)=>(0,d.jsx)("button",{type:"button",onClick:b,title:"Legend",className:(0,ax.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",a?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,d.jsx)(i.A,{className:"size-4"})}),children:(0,d.jsxs)("ul",{className:"space-y-1.5 text-[10.5px] text-muted-foreground",children:["ROADMAP"===a?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-sky-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"feature"}),(0,d.jsx)("span",{children:"top-level card \xb7 can have sub-tasks"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-zinc-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:"sub-task"}),(0,d.jsx)("span",{children:"child of a feature"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-rose-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-rose-300",children:"bug"}),(0,d.jsx)("span",{children:"a bug to fix \xb7 not a feature"})]})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-sky-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"component"}),(0,d.jsx)("span",{children:"a subsystem \xb7 can have sub-components"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-zinc-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:"sub-component"}),(0,d.jsx)("span",{children:"part of a component"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-rose-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-rose-300",children:"bug"}),(0,d.jsx)("span",{children:"a flagged issue on a component"})]})]}),G&&(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-3 w-1 shrink-0 rounded-sm",style:{background:(0,ah.A6)("fullstack")}}),(0,d.jsx)("span",{children:"left stripe \xb7 frontend / backend layer"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-px w-6 bg-[#33333a]"}),(0,d.jsx)("span",{children:"contains \xb7 drag the bottom handle to empty canvas"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#f5b942"}}),(0,d.jsxs)("span",{children:["depends on \xb7 drag between two ","ROADMAP"===a?"cards":"components"]})]})]})})}),!s&&(0,d.jsx)(h.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!overflow-hidden !rounded-xl !border !border-white/10 !bg-card/50 !backdrop-blur",nodeColor:a=>a.data?.priority===0?"#ff3860":"#555"}),!s&&(0,d.jsxs)(h.Zk,{position:"bottom-center",className:"!mb-4 flex flex-col items-center gap-2",children:[at&&(0,d.jsxs)("div",{className:"glass rounded-full px-3 py-1 text-[11px] text-muted-foreground",children:["Click a ","ARCHITECTURE"===a?"component":"feature"," to attach the"," ","ARCHITECTURE"===a?"sub-component":"sub-task"," \xb7 Esc to cancel"]}),"ARCHITECTURE"===a&&(0,d.jsx)("div",{className:"glass flex items-center rounded-full p-0.5",children:(0,d.jsxs)("button",{onClick:b9,title:"Arrange components into a left→right dependency flow, grouped by domain",className:"flex h-6 items-center gap-1.5 rounded-full px-3 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,d.jsx)(j.A,{className:"size-3"}),"Arrange"]})}),"ROADMAP"===a&&(0,d.jsxs)("div",{className:"glass flex items-center gap-1 rounded-full p-1",children:[(0,d.jsx)("span",{className:"pl-2 pr-0.5 text-[11px] text-muted-foreground",children:"Group by"}),bv.map(a=>(0,d.jsx)("button",{onClick:()=>b8(a.value),title:`Arrange features into lanes by ${a.label.toLowerCase()}`,className:(0,ax.cn)("h-7 rounded-full px-2.5 text-[11px] font-medium transition-colors",aL===a.value?"bg-white/[0.12] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:a.label},a.value))]}),(0,d.jsxs)("div",{className:"glass flex items-center gap-1 rounded-full p-1",children:[(0,d.jsxs)("button",{onClick:aF,draggable:!0,onDragStart:b=>{b.dataTransfer.setData("application/beacon-node",a),b.dataTransfer.effectAllowed="copy"},title:"ARCHITECTURE"===a?"Add component (click, or drag onto the board to place it)":"Add feature (click, or drag onto the board to place it)",className:"flex h-8 cursor-grab items-center gap-1.5 rounded-full px-3 text-[12px] font-medium text-foreground transition-colors hover:bg-white/[0.06] active:cursor-grabbing",children:[(0,d.jsx)(k.A,{className:"size-3.5 text-[var(--accent-2,#ff7a45)]"}),"ARCHITECTURE"===a?"Component":"Feature"]}),"ROADMAP"===a&&(0,d.jsxs)("button",{onClick:aG,draggable:!0,onDragStart:b=>{b.dataTransfer.setData("application/beacon-node",a),b.dataTransfer.setData("application/beacon-node-kind","BUG"),b.dataTransfer.effectAllowed="copy"},title:"Add bug (click, or drag onto the board to place it)",className:"flex h-8 cursor-grab items-center gap-1.5 rounded-full px-3 text-[12px] font-medium text-foreground transition-colors hover:bg-white/[0.06] active:cursor-grabbing",children:[(0,d.jsx)(l.A,{className:"size-3.5 text-rose-400"}),"Bug"]}),(0,d.jsx)("span",{"aria-hidden":!0,className:"mx-0.5 h-5 w-px bg-white/10"}),(0,d.jsxs)("button",{onClick:()=>{af(null),au(a=>!a)},title:"ARCHITECTURE"===a?"Add sub-component (click a component next)":"Add sub-task (click a feature next)",className:(0,ax.cn)("flex h-8 items-center gap-1.5 rounded-full px-3 text-[12px] font-medium transition-colors",at?"bg-white/[0.1] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:[(0,d.jsx)(m.A,{className:"size-3.5"}),"ARCHITECTURE"===a?"Sub-component":"Sub-task"]})]})]}),!s&&bE.length>0&&!bG.active&&(0,d.jsx)(h.Zk,{position:"top-left",className:"!mt-14",children:(0,d.jsxs)("button",{type:"button",onClick:bG.start,title:"Guided, domain-by-domain walkthrough of the architecture",className:"glass flex items-center gap-1.5 rounded-xl px-3 py-1.5 text-[11px] text-muted-foreground transition-colors hover:text-foreground",children:[(0,d.jsx)(n.A,{className:"size-3.5"}),"Start tour"]})}),!s&&(0,d.jsx)(h.Zk,{position:"top-center",className:"glass rounded-full px-1 py-0.5",children:(0,d.jsx)(bh.Z,{active:a,tabs:[{value:"ROADMAP",label:"Roadmap",href:"/map?view=ROADMAP"},{value:"ARCHITECTURE",label:"Architecture",href:"/map?view=ARCHITECTURE"},{value:"DATABASE",label:"Database",href:"/map?view=DATABASE"},{value:"FILES",label:"Files",href:"/map?view=FILES"}]})}),(0,d.jsxs)(h.Zk,{position:"top-right",className:(0,ax.cn)("flex items-center gap-1 transition-[margin] duration-200",Y&&"!mr-[332px]",s&&"hidden"),children:[(0,d.jsx)(bi.X,{query:aN,onQuery:aO,hits:ca,placeholder:"Find a feature…",onPick:a=>{aO(""),b7(a)},onZoomToMatches:()=>{bD?.size&&av.current?.fitView({nodes:[...bD].map(a=>({id:a})),duration:600,padding:.2})}}),"ROADMAP"===a&&L&&(0,d.jsx)("button",{type:"button",onClick:()=>b7(L),title:"Jump to the next feature to work on",className:"glass flex size-8 items-center justify-center rounded-lg text-emerald-300 transition-colors hover:text-emerald-200",children:(0,d.jsx)(o.A,{className:"size-4"})}),(0,d.jsx)(bj.e,{defaultSelection:a}),(0,d.jsxs)(bo.er,{title:"Filters",trigger:(a,b)=>(0,d.jsxs)("button",{type:"button",onClick:b,title:"Filters",className:(0,ax.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",a||a2>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,d.jsx)(p.A,{className:"size-4"}),a2>0&&(0,d.jsx)("span",{className:"absolute -right-1 -top-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-[var(--accent-2,#ff7a45)] px-1 text-[9px] font-semibold text-white",children:a2})]}),children:[G&&(0,d.jsx)(bo.r1,{title:"Layer",children:(0,d.jsx)(bp.o,{bare:!0,value:aY,onChange:aZ})}),a$.length>0&&(0,d.jsx)(bo.r1,{title:"Status",children:a$.map(a=>(0,d.jsx)(bo.vu,{on:aS.has(a),onClick:()=>cb(a,aT),children:ag.nR[a]?.label??a},a))}),a_.length>0&&(0,d.jsx)(bo.r1,{title:"Cluster",children:a_.map(a=>(0,d.jsx)(bo.vu,{on:aU.has(a),onClick:()=>cb(a,aV),children:a},a))}),a0.length>0&&(0,d.jsx)(bo.r1,{title:"Priority",children:a0.map(a=>(0,d.jsxs)(bo.vu,{on:aW.has(a),onClick:()=>cb(a,aX),children:["P",a]},a))}),a2>0&&(0,d.jsx)("button",{type:"button",onClick:a3,className:"mt-1 w-full rounded-md border border-white/10 px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:"clear filters"})]}),!Y&&(0,d.jsx)("button",{onClick:()=>{Z(!0),_("details")},title:"Show panel",className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,d.jsx)(q.A,{className:"size-4"})})]})]}),Y&&(0,d.jsx)(a9,{view:a,selected:b5,allNodes:b,onClose:()=>{Z(!1),_("details")},commentsContent:u,commentsCount:v,activeTab:$,onTabChange:_,onAddComment:bX,topOffset:s?64:void 0}),(0,d.jsx)(be,{payload:aH,onDismiss:()=>aI(null)}),(ae||at)&&ai&&(0,d.jsxs)("div",{className:"pointer-events-none fixed z-50 flex translate-x-3 translate-y-3 items-center gap-1.5 rounded-lg border border-white/15 bg-card/95 px-2.5 py-1.5 text-xs shadow-xl backdrop-blur",style:{left:ai.x,top:ai.y},children:[(0,d.jsx)("span",{className:(0,ax.cn)("rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide","BUG"===ae?"bg-rose-500/15 text-rose-300":"FEATURE"===ae?"bg-sky-500/15 text-sky-300":"bg-zinc-500/15 text-zinc-300"),children:"BUG"===ae?"Bug":"FEATURE"===ae?"ARCHITECTURE"===a?"Component":"Feature":"Sub-task"}),(0,d.jsx)("span",{className:"text-muted-foreground",children:ae?"click to place \xb7 Esc":"click a feature to attach \xb7 Esc"})]}),bG.active&&bG.step&&(0,d.jsx)(bn.d,{steps:bE,index:bG.index,onPrev:bG.prev,onNext:bG.next,onExit:bG.stop,onGoto:bG.goto})]})})}},99281:(a,b,c)=>{c.d(b,{F:()=>i});var d=c(48249),e=c(35471),f=c(20878),g=c(90069),h=c(26284);function i({url:a,copied:b,onCopy:c}){return(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("input",{readOnly:!0,value:a,onFocus:a=>a.currentTarget.select(),className:"min-w-0 flex-1 rounded-md border border-white/10 bg-background px-2.5 py-1.5 text-[12px] text-foreground outline-none"}),(0,d.jsxs)(h.$,{size:"sm",variant:"outline",onClick:c,children:[b?(0,d.jsx)(e.A,{className:"size-3.5"}):(0,d.jsx)(f.A,{className:"size-3.5"}),b?"Copied":"Copy"]})]}),(0,d.jsxs)("a",{href:a,target:"_blank",rel:"noreferrer",className:"inline-flex items-center gap-1.5 text-[12px] text-muted-foreground transition-colors hover:text-foreground",children:[(0,d.jsx)(g.A,{className:"size-3.5"})," Open the shared view"]})]})}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=5719,exports.ids=[5719],exports.modules={21654:(a,b,c)=>{c.d(b,{F:()=>g});var d=c(99314);let e=a=>"boolean"==typeof a?`${a}`:0===a?"0":a,f=d.$,g=(a,b)=>c=>{var d;if((null==b?void 0:b.variants)==null)return f(a,null==c?void 0:c.class,null==c?void 0:c.className);let{variants:g,defaultVariants:h}=b,i=Object.keys(g).map(a=>{let b=null==c?void 0:c[a],d=null==h?void 0:h[a];if(null===b)return null;let f=e(b)||e(d);return g[a][f]}),j=c&&Object.entries(c).reduce((a,b)=>{let[c,d]=b;return void 0===d||(a[c]=d),a},{});return f(a,i,null==b||null==(d=b.compoundVariants)?void 0:d.reduce((a,b)=>{let{class:c,className:d,...e}=b;return Object.entries(e).every(a=>{let[b,c]=a;return Array.isArray(c)?c.includes({...h,...j}[b]):({...h,...j})[b]===c})?[...a,c,d]:a},[]),null==c?void 0:c.class,null==c?void 0:c.className)}},23673:(a,b,c)=>{c.d(b,{m:()=>f,p:()=>g});var d=c(82466),e=c(67484);let f=e.createContext(void 0);function g(){let a=e.useContext(f);if(void 0===a)throw Error((0,d.A)(26));return a}},25845:(a,b,c)=>{c.d(b,{h:()=>t});var d,e,f=c(67484),g=c(20211),h=c(59165),i=c(37058),j=c(46493),k=c(45863);let l=((d={}).nestedDialogs="--nested-dialogs",d),m=((e={})[e.open=j.lP.open]="open",e[e.closed=j.lP.closed]="closed",e[e.startingStyle=j.lP.startingStyle]="startingStyle",e[e.endingStyle=j.lP.endingStyle]="endingStyle",e.nested="data-nested",e.nestedDialogOpen="data-nested-dialog-open",e);var n=c(23673),o=c(39533),p=c(71270),q=c(20432),r=c(48249);let s={...j.GW,...k.G,nestedDialogOpen:a=>a?{[m.nestedDialogOpen]:""}:null},t=f.forwardRef(function(a,b){let{render:c,className:d,style:e,finalFocus:f,initialFocus:j,...k}=a,{store:m}=(0,h.PQ)(),t=m.useState("descriptionElementId"),u=m.useState("disablePointerDismissal"),v=m.useState("floatingRootContext"),w=m.useState("popupProps"),x=m.useState("modal"),y=m.useState("mounted"),z=m.useState("nested"),A=m.useState("nestedOpenDialogCount"),B=m.useState("open"),C=m.useState("openMethod"),D=m.useState("titleElementId"),E=m.useState("transitionStatus"),F=m.useState("role"),G=v.useState("floatingId"),H=k.id??G;(0,n.p)(),(0,o.v)({open:B,ref:m.context.popupRef,onComplete(){B&&m.context.onOpenChangeComplete?.(!0)}});let I=void 0===j?function(a){return"touch"!==a||m.context.popupRef.current}:j,J=m.useStateSetter("popupElement"),K=(0,i.o)("div",a,{state:{open:B,nested:z,transitionStatus:E,nestedDialogOpen:A>0},props:[w,{id:H,"aria-labelledby":D??void 0,"aria-describedby":t??void 0,role:F,...q.Ls,hidden:!y,onKeyDown(a){p.jF.has(a.key)&&a.stopPropagation()},style:{[l.nestedDialogs]:A}},k],ref:[b,m.context.popupRef,J],stateAttributesMapping:s});return(0,r.jsx)(g.s,{context:v,openInteractionType:C,disabled:!y,closeOnFocusOut:!u,initialFocus:I,returnFocus:f,modal:!1!==x,restoreFocus:"popup",children:K})})},36902:(a,b,c)=>{c.d(b,{L:()=>h});var d=c(67484),e=c(59165),f=c(37058),g=c(61156);let h=d.forwardRef(function(a,b){let{render:c,className:d,style:h,id:i,...j}=a,{store:k}=(0,e.PQ)(),l=(0,g.e)(i);return k.useSyncedValueWithCleanup("titleElementId",l),(0,f.o)("h2",a,{ref:b,props:[{id:l},j]})})},59165:(a,b,c)=>{c.d(b,{PQ:()=>h,Ts:()=>f,am:()=>g});var d=c(82466),e=c(67484);let f=e.createContext(!1),g=e.createContext(void 0);function h(a){let b=e.useContext(g);if(!1===a&&void 0===b)throw Error((0,d.A)(27));return b}},60388:(a,b,c)=>{c.d(b,{Z:()=>k});var d=c(67484),e=c(53013),f=c(43383),g=c(59165),h=c(23673),i=c(57491),j=c(48249);let k=d.forwardRef(function(a,b){let{keepMounted:c=!1,...d}=a,{store:k}=(0,g.PQ)(),l=k.useState("mounted"),m=k.useState("modal"),n=k.useState("open");return l||c?(0,j.jsx)(h.m.Provider,{value:c,children:(0,j.jsxs)(f.XF,{ref:b,...d,children:[l&&!0===m&&(0,j.jsx)(i.W,{ref:k.context.internalBackdropRef,inert:(0,e.Y)(!n)}),a.children]})}):null})},64230:(a,b,c)=>{c.d(b,{r:()=>h});var d=c(67484),e=c(59165),f=c(37058),g=c(61156);let h=d.forwardRef(function(a,b){let{render:c,className:d,style:h,id:i,...j}=a,{store:k}=(0,e.PQ)(),l=(0,g.e)(i);return k.useSyncedValueWithCleanup("descriptionElementId",l),(0,f.o)("p",a,{ref:b,props:[{id:l},j]})})},70813:(a,b,c)=>{c.d(b,{Button:()=>g});var d=c(67484),e=c(29522),f=c(37058);let g=d.forwardRef(function(a,b){let{render:c,className:d,disabled:g=!1,focusableWhenDisabled:h=!1,nativeButton:i=!0,style:j,...k}=a,{getButtonProps:l,buttonRef:m}=(0,e.s)({disabled:g,focusableWhenDisabled:h,native:i});return(0,f.o)("button",a,{state:{disabled:g},ref:[b,m],props:[k,l]})})},71523:(a,b,c)=>{c.d(b,{V:()=>e});var d=c(81066);function e(a){return(0,d.G)(a,"alert-dialog")}},74283:(a,b,c)=>{c.d(b,{X:()=>j});var d=c(67484),e=c(59165),f=c(37058),g=c(46493),h=c(45863);let i={...g.GW,...h.G},j=d.forwardRef(function(a,b){let{render:c,className:d,style:g,forceRender:h=!1,...j}=a,{store:k}=(0,e.PQ)(),l=k.useState("open"),m=k.useState("nested"),n=k.useState("mounted"),o=k.useState("transitionStatus");return(0,f.o)("div",a,{state:{open:l,transitionStatus:o},ref:[k.context.backdropRef,b],stateAttributesMapping:i,props:[{role:"presentation",hidden:!n,style:{userSelect:"none",WebkitUserSelect:"none"}},j],enabled:h||!m})})},81066:(a,b,c)=>{c.d(b,{G:()=>A});var d=c(67484),e=c(9716),f=c(95275),g=c(46583),h=c(67708),i=c(20036),j=c(66025),k=c(67056),l=c(22054),m=c(20432);function n({store:a,dialogRoot:b}){let{parentContext:c,isDrawer:e}=b,k=a.useState("open"),l=a.useState("disablePointerDismissal"),o=a.useState("modal"),p=a.useState("popupElement"),q=a.useState("floatingRootContext"),[r,s]=d.useState(0),[t,u]=d.useState(0),v=0===r,w=(0,i.s)(q,{outsidePressEvent:()=>a.context.internalBackdropRef.current||a.context.backdropRef.current?"intentional":{mouse:"trap-focus"===o?"sloppy":"intentional",touch:"sloppy"},outsidePress(b){if(!a.context.outsidePressEnabledRef.current||"button"in b&&0!==b.button||"touches"in b&&1!==b.touches.length)return!1;let c=(0,j.EW)(b);return!!v&&!l&&(!o||!a.context.internalBackdropRef.current&&!a.context.backdropRef.current||a.context.internalBackdropRef.current===c||a.context.backdropRef.current===c||(0,j.gR)(c,p)&&!c?.hasAttribute("data-base-ui-portal"))},escapeKey:v});(0,f.K)(k&&!0===o,p),a.useContextCallback("onNestedDialogOpen",(a,b)=>{s(a),u(b)}),a.useContextCallback("onNestedDialogClose",()=>{s(0),u(0)}),d.useEffect(()=>(c?.onNestedDialogOpen&&k&&c.onNestedDialogOpen(r+1,t+ +!!e),c?.onNestedDialogClose&&!k&&c.onNestedDialogClose(),()=>{c?.onNestedDialogClose&&k&&c.onNestedDialogClose()}),[e,k,r,t,c]);let x=w.reference??g.t0,y=w.trigger??g.t0,z=d.useMemo(()=>(0,h.v6)(m.Ls,w.floating),[w.floating]);return(0,m.i6)(a,{activeTriggerProps:x,inactiveTriggerProps:y,popupProps:z,nestedOpenDialogCount:r,nestedOpenDrawerCount:t}),null}var o=c(59165),p=c(61935),q=c(15418),r=c(31483),s=c(57544);let t=(0,p.M)(a=>a.triggerIdProp??a.activeTriggerId),u=(0,p.M)(a=>a.openProp??a.open),v=(0,p.M)(a=>(a.popupElement?.id??a.floatingId)||void 0);function w(a,b){return void 0!==b&&u(a)&&t(a)===b}let x={...{open:u,mounted:(0,p.M)(a=>a.mounted),transitionStatus:(0,p.M)(a=>a.transitionStatus),floatingRootContext:(0,p.M)(a=>a.floatingRootContext),triggerCount:(0,p.M)(a=>a.triggerCount),preventUnmountingOnClose:(0,p.M)(a=>a.preventUnmountingOnClose),payload:(0,p.M)(a=>a.payload),activeTriggerId:t,activeTriggerElement:(0,p.M)(a=>a.mounted?a.activeTriggerElement:null),popupId:v,isTriggerActive:(0,p.M)((a,b)=>void 0!==b&&t(a)===b),isOpenedByTrigger:(0,p.M)((a,b)=>w(a,b)),isMountedByTrigger:(0,p.M)((a,b)=>void 0!==b&&t(a)===b&&a.mounted),triggerProps:(0,p.M)((a,b)=>b?a.activeTriggerProps:a.inactiveTriggerProps),triggerPopupId:(0,p.M)((a,b)=>w(a,b)||void 0!==b&&u(a)&&null==t(a)&&1===a.triggerCount?v(a):void 0),popupProps:(0,p.M)(a=>a.popupProps),popupElement:(0,p.M)(a=>a.popupElement),positionerElement:(0,p.M)(a=>a.positionerElement)},modal:(0,p.M)(a=>a.modal),nested:(0,p.M)(a=>a.nested),nestedOpenDialogCount:(0,p.M)(a=>a.nestedOpenDialogCount),nestedOpenDrawerCount:(0,p.M)(a=>a.nestedOpenDrawerCount),disablePointerDismissal:(0,p.M)(a=>a.disablePointerDismissal),openMethod:(0,p.M)(a=>a.openMethod),descriptionElementId:(0,p.M)(a=>a.descriptionElementId),titleElementId:(0,p.M)(a=>a.titleElementId),viewportElement:(0,p.M)(a=>a.viewportElement),role:(0,p.M)(a=>a.role)};class y extends q.H{constructor(a,b,c=!1){const e=new s.Z,f=function(a={}){return{...{open:!1,openProp:void 0,mounted:!1,transitionStatus:void 0,floatingRootContext:new r.K({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:new s.Z,floatingId:void 0,syncOnly:!1,nested:!1,onOpenChange:void 0}),floatingId:void 0,triggerCount:0,preventUnmountingOnClose:!1,payload:void 0,activeTriggerId:null,activeTriggerElement:null,triggerIdProp:void 0,popupElement:null,positionerElement:null,activeTriggerProps:g.t0,inactiveTriggerProps:g.t0,popupProps:g.t0},modal:!0,disablePointerDismissal:!1,popupElement:null,viewportElement:null,descriptionElementId:void 0,titleElementId:void 0,openMethod:null,nested:!1,nestedOpenDialogCount:0,nestedOpenDrawerCount:0,role:"dialog",...a}}(a);f.floatingRootContext=function(a,b,c=!1){return new r.K({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:a,floatingId:b,syncOnly:!0,nested:c,onOpenChange:void 0})}(e,b,c),super(f,{popupRef:d.createRef(),backdropRef:d.createRef(),internalBackdropRef:d.createRef(),outsidePressEnabledRef:{current:!0},triggerElements:e,onOpenChange:void 0,onOpenChangeComplete:void 0},x)}setOpen=(a,b)=>{if(b.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},a||null!=b.trigger||null==this.state.activeTriggerId||(b.trigger=this.state.activeTriggerElement??void 0),this.context.onOpenChange?.(a,b),b.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(a,b);let c={open:a};(0,m.CN)(c,a,b.trigger),this.update(c)};static useStore(a,b){return(0,m.Nj)(a,(a,c)=>new y(b,a,c),!0).store}}var z=c(48249);function A(a,b="dialog"){let{children:c,open:f,defaultOpen:g=!1,onOpenChange:h,onOpenChangeComplete:i,disablePointerDismissal:j=!1,modal:p=!0,actionsRef:q,handle:r,triggerId:s,defaultTriggerId:t=null}=a,u="alert-dialog"===b,v=(0,o.PQ)(!0),w={modal:!!u||p,disablePointerDismissal:u||j,nested:!!v,role:u?"alertdialog":"dialog"},x=y.useStore(r?.store,{open:g,openProp:f,activeTriggerId:t,triggerIdProp:s,...w});(0,e.j)(()=>{let a=void 0===f&&!1===x.state.open&&!0===g?{open:!0,activeTriggerId:t}:null;u?x.update(a?{...w,...a}:w):a&&x.update(a)}),x.useControlledProp("openProp",f),x.useControlledProp("triggerIdProp",s),x.useSyncedValues(w),x.useContextCallback("onOpenChange",h),x.useContextCallback("onOpenChangeComplete",i);let B=x.useState("open"),C=x.useState("mounted"),D=x.useState("payload"),E=function(a){let{store:b,parentContext:c,actionsRef:e,isDrawer:f}=a,g=b.useState("open");(0,m.xs)(b,g),(0,m.tr)(b);let{forceUnmount:h}=(0,m.l$)(g,b),i=d.useCallback(()=>{b.setOpen(!1,(0,k.d)(l.zJ))},[b]);return d.useImperativeHandle(e,()=>({unmount:h,close:i}),[h,i]),{parentContext:c,isDrawer:f}}({store:x,actionsRef:q,parentContext:v?.store.context,isDrawer:"drawer"===b}),F=d.useMemo(()=>({store:x}),[x]);return(0,z.jsx)(o.Ts.Provider,{value:!1,children:(0,z.jsxs)(o.am.Provider,{value:F,children:[(B||C)&&(0,z.jsx)(n,{store:x,dialogRoot:E}),"function"==typeof c?c({payload:D}):c]})})}},87298:(a,b,c)=>{c.d(b,{H:()=>j});var d=c(67484),e=c(59165),f=c(37058),g=c(29522),h=c(67056),i=c(22054);let j=d.forwardRef(function(a,b){let{render:c,className:d,style:j,disabled:k=!1,nativeButton:l=!0,...m}=a,{store:n}=(0,e.PQ)(),o=n.useState("open"),{getButtonProps:p,buttonRef:q}=(0,g.s)({disabled:k,native:l});return(0,f.o)("button",a,{state:{disabled:k},ref:[b,q],props:[{onClick:function(a){o&&n.setOpen(!1,(0,h.d)(i.SR,a.nativeEvent))}},m,p]})})},99469:(a,b,c)=>{c.d(b,{t:()=>o});var d=c(82466),e=c(67484),f=c(59165),g=c(29522),h=c(37058),i=c(46493),j=c(98816),k=c(20432),l=c(61156),m=c(46304),n=c(14908);let o=e.forwardRef(function(a,b){let{render:c,className:o,style:p,disabled:q=!1,nativeButton:r=!0,id:s,payload:t,handle:u,...v}=a,w=(0,f.PQ)(!0),x=u?.store??w?.store;if(!x)throw Error((0,d.A)(79));let y=(0,l.e)(s),z=x.useState("floatingRootContext"),A=x.useState("isOpenedByTrigger",y),B=x.useState("triggerPopupId",y),C=e.useRef(null),{registerTrigger:D,isMountedByThisTrigger:E}=(0,k.L_)(y,C,x,{payload:t}),{getButtonProps:F,buttonRef:G}=(0,g.s)({disabled:q,native:r}),H=(0,m.k)(z,{enabled:null!=z}),I=(0,n.L)(()=>x.select("open"),a=>{x.set("openMethod",a)}),J=x.useState("triggerProps",E);return(0,h.o)("button",a,{state:{disabled:q,open:A},ref:[G,b,D,C],props:[H.reference,J,I,{[j.Kd]:"",id:y,"aria-haspopup":"dialog","aria-expanded":A,"aria-controls":B},v,F],stateAttributesMapping:i.qV})})}};
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/dFKft-kT3vVI6erpmcYuN/_buildManifest.js","static/dFKft-kT3vVI6erpmcYuN/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-de4a0d9611ec2cad.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-cef5038dc7aa126a.js","static/chunks/main-app-1a32dc335629e4e4.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/qoq7TibU72duRZATxeVnT/_buildManifest.js","static/qoq7TibU72duRZATxeVnT/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-de4a0d9611ec2cad.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-cef5038dc7aa126a.js","static/chunks/main-app-1a32dc335629e4e4.js"],rootMainFilesTree:{},pages:{"/_app":[]}};