trybeacon 0.1.48 → 0.1.50

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 (114) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +13 -13
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  6. package/.next/server/app/_global-error.html +1 -1
  7. package/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/_not-found.html +1 -1
  16. package/.next/server/app/_not-found.rsc +2 -2
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  20. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  23. package/.next/server/app/api/context/feature/route.js +1 -1
  24. package/.next/server/app/api/db/arrange/route.js +1 -1
  25. package/.next/server/app/api/entities/route.js +1 -1
  26. package/.next/server/app/api/map/start/route.js +1 -1
  27. package/.next/server/app/docs/page.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 +2 -2
  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.js +1 -1
  47. package/.next/server/app/help/page_client-reference-manifest.js +1 -1
  48. package/.next/server/app/help.html +1 -1
  49. package/.next/server/app/help.rsc +4 -4
  50. package/.next/server/app/help.segments/_full.segment.rsc +4 -4
  51. package/.next/server/app/help.segments/_head.segment.rsc +1 -1
  52. package/.next/server/app/help.segments/_index.segment.rsc +2 -2
  53. package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
  54. package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +10 -12
  55. package/.next/server/app/help.segments/help.segment.rsc +1 -1
  56. package/.next/server/app/index.html +1 -1
  57. package/.next/server/app/index.rsc +3 -3
  58. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  59. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  60. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  61. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  62. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  63. package/.next/server/app/map/page.js +2 -2
  64. package/.next/server/app/map/page.js.nft.json +1 -1
  65. package/.next/server/app/map/page_client-reference-manifest.js +1 -1
  66. package/.next/server/app/page.js +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/settings/page_client-reference-manifest.js +1 -1
  72. package/.next/server/app-paths-manifest.json +13 -13
  73. package/.next/server/chunks/1130.js +1 -1
  74. package/.next/server/chunks/1341.js +1 -1
  75. package/.next/server/chunks/2933.js +1 -1
  76. package/.next/server/chunks/{7208.js → 2999.js} +3 -3
  77. package/.next/server/chunks/3622.js +1 -1
  78. package/.next/server/chunks/9734.js +1 -1
  79. package/.next/server/chunks/9773.js +1 -0
  80. package/.next/server/middleware-build-manifest.js +1 -1
  81. package/.next/server/pages/404.html +1 -1
  82. package/.next/server/pages/500.html +1 -1
  83. package/.next/server/server-reference-manifest.js +1 -1
  84. package/.next/server/server-reference-manifest.json +1 -1
  85. package/.next/static/chunks/1487-13f43d25413ae041.js +1 -0
  86. package/.next/static/chunks/3343-af1292b51a276724.js +1 -0
  87. package/.next/static/chunks/app/docs/page-ae19d2e91ec24771.js +1 -0
  88. package/.next/static/chunks/app/map/page-5074176a5e746ffb.js +1 -0
  89. package/.next/static/chunks/app/page-541e900d67f17dae.js +1 -0
  90. package/.next/static/chunks/app/plan/{page-257d486640eadd7f.js → page-3c4c1fc03275299f.js} +1 -1
  91. package/.next/static/css/629ab377241de9ca.css +1 -0
  92. package/.next/trace +39 -39
  93. package/.next/trace-build +1 -1
  94. package/dist/bin/beacon.js +7 -7
  95. package/dist/bin/doctor.js +43 -32
  96. package/dist/bin/hook.js +43 -32
  97. package/dist/bin/mcp.js +49 -38
  98. package/dist/bin/plan.js +45 -34
  99. package/dist/bin/prompt.js +1 -1
  100. package/dist/bin/remove.js +7 -7
  101. package/dist/bin/uninstall.js +42 -31
  102. package/dist/lib/assets.js +30 -19
  103. package/dist/lib/codex-install.js +40 -29
  104. package/dist/lib/global-install.js +40 -29
  105. package/package.json +1 -1
  106. package/.next/server/chunks/805.js +0 -1
  107. package/.next/static/chunks/8074-a6b2725786399e2c.js +0 -1
  108. package/.next/static/chunks/85-82015ecb44b65d3e.js +0 -1
  109. package/.next/static/chunks/app/docs/page-0c841cb9a7aa2f9a.js +0 -1
  110. package/.next/static/chunks/app/map/page-c06fcf30d8172f82.js +0 -1
  111. package/.next/static/chunks/app/page-968dd5a6f667bff9.js +0 -1
  112. package/.next/static/css/5a58d83133d25695.css +0 -1
  113. /package/.next/static/{gNMdQmtkjPn6XQhRMDoMg → J1AU9kp6Vs1x9YOBkXMiR}/_buildManifest.js +0 -0
  114. /package/.next/static/{gNMdQmtkjPn6XQhRMDoMg → J1AU9kp6Vs1x9YOBkXMiR}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=1130,exports.ids=[1130],exports.modules={13560:(a,b,c)=>{c.d(b,{$Y:()=>k,Kq:()=>h,gY:()=>j,hj:()=>m,tI:()=>l});var d=c(44046);let e=d.k5(["ROADMAP","ARCHITECTURE"]),f=d.k5(["FEATURE","BUG"]),g=d.k5(["frontend","backend","fullstack"]),h=d.k5(["user","agent"]),i=d.k5(["PENDING","IN_PROGRESS","DONE","BLOCKED","CANCELLED","DEPRIORITIZED","KEEP","REBUILD","REPLACE","DROP"]);d.k5(["DEPENDS","CONTAINS","RELATES","REPLACES"]);let j=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(2e3).nullish(),parentId:d.Yj().nullish(),status:i.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()}),k=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(2e3).nullish(),cluster:d.Yj().trim().max(64).nullish(),layer:g.nullish(),status:i.optional(),priority:d.ai().int().min(0).max(3).optional(),sourceRef:d.Yj().trim().max(300).nullish()}),l=d.Ik({x:d.ai(),y:d.ai()}),m=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()})},29833:(a,b,c)=>{c.d(b,{mk:()=>i});let d=new Set(["a","an","the","of","for","to","and","or","in","on","with","via","by","using","use","add","adds","support","implement","implementation","feature","new","build","create","o","os","as","um","uma","de","da","do","das","dos","para","por","com","e","ou","no","na","nos","nas","ao","aos","adicionar","implementar","suporte","suportar","nova","novo","funcionalidade","usar","usando","criar"]);function e(a){return a.normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9]+/g," ").trim().replace(/\s+/g," ")}function f(a){return e(a).split(" ").filter(a=>a&&!d.has(a))}function g(a,b){if(!a.size||!b.size)return 0;let c=0;for(let d of a)b.has(d)&&c++;return 2*c/(a.size+b.size)}function h(a){let b=e(a).replace(/ /g,""),c=new Set;for(let a=0;a<b.length-1;a++)c.add(b.slice(a,a+2));return c}function i(a,b,c={}){let d=c.confident??.72,j=c.consider??.5,k=c.margin??.1,l=b.map(b=>{var c,d;let i,j;return{...b,score:Math.round(100*(c=a,d=b.title,i=e(c),j=e(d),i&&j?i===j?1:Math.min(1,.7*g(new Set(f(c)),new Set(f(d)))+.4*g(h(c),h(d))):0))/100}}).sort((a,b)=>b.score-a.score),m=l[0];if(!m||m.score<j)return{best:null,candidates:[]};let n=l[1]?.score??0,o=1===l.length||m.score-n>=k;return m.score>=d&&o?{best:m,candidates:[]}:{best:null,candidates:l.filter(a=>a.score>=j).slice(0,4)}}},38356:(a,b,c)=>{c.d(b,{AG:()=>h,Ey:()=>i,Kn:()=>f,oA:()=>g});var d=c(32753),e=c(29833);function f(a,b){let c=b?.requireLayer??!1,e=a.map(a=>{let b=[],e=a.cluster??a.category??a.domain??null;return e&&e.trim()||b.push("category"),null==a.priority&&b.push("priority"),c&&!(0,d.jR)(a.layer)&&b.push("layer"),b.length?` • "${a.title?.trim()||"(untitled)"}" — missing ${b.join(" + ")}`:null}).filter(a=>null!==a);return 0===e.length?null:"⛔ Every roadmap feature needs a category AND a priority — they drive grouping and ordering on the board, and the user shouldn't have to add them by hand."+(c?' This workspace has a frontend surface, so every feature must also carry `layer`: "frontend" | "backend" | "fullstack" — which side of the stack the work lands on.':"")+" Missing:\n"+e.join("\n")+"\n\nRe-present with each feature carrying its category as `category` (or `cluster` — both work; e.g. AUTH, SEARCH, DATA, INTEL, BILLING …) and `priority` (0 = P0 critical, 1 = P1 high, 2 = P2 medium, 3 = P3 low)."+(c?" Set `layer` on EVERY feature too.":"")+" Don't rely on defaults."}function g(a){let b=(a.title??"").trim();if(!b)return"⛔ A feature needs a non-empty title.";if(!(a.category??"").trim()){let c=function(a){let b=new Set;for(let c of a){let a=(c.cluster??"").trim();a&&b.add(a)}return[...b].sort()}(a.existing),d=c.length?` Reuse an existing category where it fits: ${c.join(", ")}.`:"";return`⛔ Feature "${b}" has no category. Every roadmap feature needs one — it drives grouping and color on the board.${d} Pass it as \`category\` (e.g. AUTH, SEARCH, DATA, INTEL, BILLING, INFRA …); don't rely on a default.`}if(a.requireLayer&&!(0,d.jR)(a.layer))return`⛔ Feature "${b}" has no layer. This workspace has a frontend surface, so every roadmap feature must say which side of the stack it lands on. Pass it as \`layer\`: "frontend" | "backend" | "fullstack".`;let c=(0,e.mk)(b,a.existing.map(a=>({id:a.id,title:a.title})));if(c.best){let d=a.existing.find(a=>a.id===c.best.id),e=d?.status?` (${d.status})`:"";return`⛔ "${b}" already exists as the feature "${d?.title??c.best.title}"${e}. Don't create a duplicate — mark progress on it with \`beacon_start_feature({ id })\`, add sub-tasks with \`beacon_add_subtasks\`, or finish it with \`beacon_describe_feature\`.`}return null}function h(a,b){let c=b.map(a=>({id:a.id,title:a.title})),d=a.map(a=>{let d=(0,e.mk)(a.title??"",c);return d.best?{title:a.title,hit:b.find(a=>a.id===d.best.id)}:null}).filter(a=>null!==a);return d.length?"⛔ These proposed features already exist on the roadmap — reuse them instead of creating duplicates:\n"+d.map(a=>` • "${a.title}" → existing "${a.hit.title}"${a.hit.status?` (${a.hit.status})`:""}`).join("\n")+"\n\nDrop the duplicate(s) from the plan; to add work to an existing feature, ship sub-tasks or update it via beacon_describe_feature. Keep only genuinely new features in the proposal.":null}function i(a,b){let c=(a??"").trim();if(!c)return null;let d=(0,e.mk)(c,b);if(d.best)return null;let f=d.candidates.length?` Did you mean: ${d.candidates.map(a=>`"${a.title}"`).join(", ")}?`:"";return`⛔ front "${c}" doesn't match an existing feature.${f} \`front\` nests a feature UNDER an existing parent feature — it is NOT a domain tag. If "${c}" is a domain, pass it as \`category\` instead. If it's a real umbrella feature, create it first via beacon_propose_plan.`}},40377:(a,b,c)=>{c.d(b,{U9:()=>e});var d=c(91430);function e(a){return(0,d.ll)`count(${a||d.ll.raw("*")})`.mapWith(Number)}},70299:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AS:()=>H,N5:()=>I,Nh:()=>A,Ol:()=>K,Pq:()=>D,hL:()=>J,nV:()=>y,r$:()=>C,y2:()=>E});var e=c(44046),f=c(34216),g=c(40377),h=c(56727),i=c(30046),j=c(19734),k=c(49565),l=c(29833),m=c(38356),n=c(32753),o=c(72595),p=c(71584),q=c(93118),r=c(72967),s=c(7903),t=c(89908),u=c(45301),v=c(76223),w=a([h,j,k,o,t,v]);async function x(a){await (0,v.Z)({currentFeatureId:a})}async function y(){let a=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP"),orderBy:(a,{asc:b})=>b(a.createdAt)});return{fronts:a.filter(a=>!a.parentId).map(b=>({id:b.id,title:b.title,status:b.status,tasks:a.filter(a=>a.parentId===b.id).map(a=>({id:a.id,title:a.title,status:a.status,workingOn:"IN_PROGRESS"===a.status}))}))}}async function z(a,b){await h.db.update(i.node).set({status:b}).where((0,f.eq)(i.node.id,a)),await A(a),await (0,j.Bx)()}[h,j,k,o,t,v]=w.then?(await w)():w;let L=new Set(["DONE","CANCELLED","DEPRIORITIZED"]),M=new Set(["IN_PROGRESS","BLOCKED"]),N=new Set(["CANCELLED","DEPRIORITIZED"]);async function A(a){let b=new Set,c=a;for(;!b.has(c);){var d;b.add(c);let a=await h.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 h.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||N.has(e.status))return;let g=(d=(await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.parentId,e.id),columns:{status:!0}})).map(a=>a.status)).length?d.every(a=>L.has(a))?"DONE":d.some(a=>M.has(a))?"IN_PROGRESS":"PENDING":"PENDING";if(e.status===g)return;await h.db.update(i.node).set({status:g}).where((0,f.eq)(i.node.id,e.id)),c=e.id}}let O=new Set(["PENDING","IN_PROGRESS"]);async function B(a){let b=[],c=[],d=new Set([a]),e=[a];for(;e.length;){let a=await h.db.query.node.findMany({where:(a,{and:b,eq:c,inArray:d})=>b(d(a.parentId,e),c(a.view,"ROADMAP")),columns:{id:!0,title:!0,status:!0}});for(let f of(e=[],a))d.has(f.id)||(d.add(f.id),e.push(f.id),O.has(f.status)?b.push(f.id):"BLOCKED"===f.status&&c.push(f))}return b.length&&await h.db.update(i.node).set({status:"DONE"}).where((0,f.RV)(i.node.id,b)),{completed:b.length,blocked:c}}async function C(a){let b,c="ROADMAP"===a?"roadmap":"architecture",d=s.zP[c],e=(0,s.VE)(c);if(e.sig===d)return;let g=(await h.db.query.node.findMany({where:(b,{eq:c})=>c(b.view,a),orderBy:(a,{asc:b})=>b(a.createdAt),columns:{id:!0,parentId:!0,source:!0,cluster:!0,status:!0,priority:!0,x:!0,y:!0}})).filter(a=>"DRAFT"!==a.source);if(g.length<2)return;let j=null;if("ROADMAP"===a){let a="status"===e.arrangedBy||"priority"===e.arrangedBy?e.arrangedBy:"cluster";j=a,b=(0,q.VI)(g.map(a=>({id:a.id,parentId:a.parentId,cluster:a.cluster,status:a.status,priority:a.priority})),a)}else{let a=g.map(a=>a.id),c=await h.db.query.edge.findMany({where:(b,{and:c,eq:d})=>c(d(b.kind,"DEPENDS"),(0,f.RV)(b.fromId,a),(0,f.RV)(b.toId,a)),columns:{fromId:!0,toId:!0}});b=(0,r.to)(g.map(a=>({id:a.id,group:(a.cluster??"").trim()||"—"})),c)}let k=[];for(let a of g){let c=b.get(a.id);c&&(Math.round(c.x)!==Math.round(a.x)||Math.round(c.y)!==Math.round(a.y))&&k.push(h.db.update(i.node).set({x:c.x,y:c.y}).where((0,f.eq)(i.node.id,a.id)))}await Promise.all(k),(0,s.qT)(c,j?{sig:d,arrangedBy:j}:{sig:d})}async function D(a){let b=a.title.trim();if(!b)throw Error("title required");let c=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP")});if(a.id){let b=c.find(b=>b.id===a.id);if(b)return await z(b.id,"IN_PROGRESS"),await x(b.id),{action:"flagged",id:b.id,title:b.title,via:"id"}}let{best:d,candidates:e}=(0,l.mk)(b,c.map(a=>({id:a.id,title:a.title})));if(d)return await z(d.id,"IN_PROGRESS"),await x(d.id),{action:"flagged",id:d.id,title:d.title,via:"match",score:d.score};if(e.length)return{action:"ambiguous",candidates:e};let f=c.filter(a=>!a.parentId),g=a.front?.trim()||"",k=g?(0,m.Ey)(g,f.map(a=>({id:a.id,title:a.title}))):null;if(k)return{action:"rejected",message:k};let q=null,r=null,s=null,t=null;if(g){let a=(0,l.mk)(g,f.map(a=>({id:a.id,title:a.title}))).best;q=a.id,r=a.title;let b=c.find(b=>b.id===a.id);s=b?.cluster??null,t=b?.layer??null}let u=(a.cluster?.trim()||s)??null,v=(0,n.jR)(a.layer)??(0,n.jR)(t),w=!q&&await (0,o.jZ)(),y=(0,m.oA)({title:b,category:u,layer:v,requireLayer:w,existing:c.map(a=>({id:a.id,title:a.title,cluster:a.cluster,status:a.status}))});if(y)return{action:"rejected",message:y};let B=q?c.filter(a=>a.parentId===q).length:0,C=a=>(a??"").trim()||"—",D=q?(0,p.B)(c.map(a=>({x:a.x,y:a.y})),{x:f.find(a=>a.id===q)?.x??0,y:160+110*B}):(0,p.E)(c.filter(a=>!a.parentId&&C(a.cluster)===C(u)).map(a=>({x:a.x,y:a.y})),c.map(a=>({x:a.x,y:a.y}))),[E]=await h.db.insert(i.node).values({view:"ROADMAP",kind:a.kind?.trim().toUpperCase()==="BUG"?"BUG":"FEATURE",title:b,plain:a.detail??null,cluster:u,layer:v,status:"IN_PROGRESS",source:"SESSION",parentId:q,x:D.x,y:D.y}).returning();return await A(E.id),await (0,j.Bx)(),await x(E.id),{action:"created",id:E.id,title:b,front:r}}async function E(a){let b=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP")}),c=async a=>{let b=await B(a);return await z(a,"DONE"),await (0,k.q)(),{ok:!0,id:a,subtasksCompleted:b.completed||void 0,subtasksBlocked:b.blocked.length?b.blocked:void 0}};if(a.id){let d=b.find(b=>b.id===a.id);if(d)return c(d.id)}if(!a.title)return{ok:!1};let{best:d,candidates:e}=(0,l.mk)(a.title,b.map(a=>({id:a.id,title:a.title})));return d?c(d.id):{ok:!1,candidates:e.length?e:void 0}}function F(a){let b=a.trim(),c=(0,u.jv)();return b.startsWith(c)&&(b=b.slice(c.length)),b.replace(/^[./]+/,"").trim()}let P=new Set(["KEEP","REBUILD","REPLACE","DROP"]),Q=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()});async function G(a){let b=e.YO(Q).parse(a),c=new Map;for(let a of b)c.set(a.title.toLowerCase(),a);let d=Array.from(c.values());if(!d.length)return 0;let g=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ARCHITECTURE")}),j=new Map(g.map(a=>[a.title.toLowerCase(),a])),k=new Map(g.map(a=>[a.title.toLowerCase(),a.id])),l=g.map(a=>({x:a.x,y:a.y,domain:(a.cluster??"").trim()||"—"}));for(let a of d){let b=a.title.toLowerCase(),c=a.status&&P.has(a.status)?a.status:"KEEP",d=j.get(b);if(d)await h.db.update(i.node).set({cluster:a.domain,layer:(0,n.jR)(a.layer)??d.layer,role:a.role??d.role,plain:a.plain??d.plain,status:c}).where((0,f.eq)(i.node.id,d.id)),a.files?.length&&(await h.db.delete(i.nodeFile).where((0,f.eq)(i.nodeFile.nodeId,d.id)),await h.db.insert(i.nodeFile).values(Array.from(new Set(a.files)).map(a=>({nodeId:d.id,path:a}))));else{let d=a.domain.trim()||"—",{x:e,y:f}=(0,p.E)(l.filter(a=>a.domain===d),l);l.push({x:e,y:f,domain:d});let[g]=await h.db.insert(i.node).values({view:"ARCHITECTURE",source:"MANUAL",cluster:a.domain,layer:(0,n.jR)(a.layer),title:a.title,role:a.role??null,plain:a.plain??null,status:c,x:e,y:f}).returning();a.files?.length&&await h.db.insert(i.nodeFile).values(Array.from(new Set(a.files)).map(a=>({nodeId:g.id,path:a}))),k.set(b,g.id)}}for(let a of d){let b=k.get(a.title.toLowerCase());if(b)for(let c of a.depends??[]){let a=k.get(c.trim().toLowerCase());a&&a!==b&&(await h.db.query.edge.findFirst({where:(c,{and:d,eq:e})=>d(e(c.fromId,b),e(c.toId,a),e(c.kind,"DEPENDS"))})||await h.db.insert(i.edge).values({fromId:b,toId:a,kind:"DEPENDS"}).catch(()=>{}))}}for(let a of d){if(!a.bugs?.length)continue;let b=k.get(a.title.toLowerCase());if(b)for(let c of a.bugs)await h.db.query.bugFlag.findFirst({where:(a,{and:d,eq:e,isNull:f})=>d(e(a.nodeId,b),e(a.note,c.note),f(a.resolvedAt))})||await h.db.insert(i.bugFlag).values({nodeId:b,by:"agent",note:c.note})}return d.length}async function H(a){let b=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP")}),c=a.id?b.find(b=>b.id===a.id):void 0;if(!c&&a.title){let{best:d,candidates:e}=(0,l.mk)(a.title,b.map(a=>({id:a.id,title:a.title})));if(d)c=b.find(a=>a.id===d.id);else if(e.length)return{ok:!1,candidates:e}}if(!c)return{ok:!1};await h.db.update(i.node).set({plain:a.description,status:"DONE"}).where((0,f.eq)(i.node.id,c.id));let d=await B(c.id);if(await A(c.id),await (0,k.q)(),a.files?.length)for(let b of Array.from(new Set(a.files.map(F).filter(Boolean))))await h.db.insert(i.nodeFile).values({nodeId:c.id,path:b}).onConflictDoNothing({target:[i.nodeFile.nodeId,i.nodeFile.path]});return await h.db.update(i.appSetting).set({currentFeatureId:null}).where((0,f.eq)(i.appSetting.currentFeatureId,c.id)),a.architecture?.length&&await G(a.architecture),await (0,j.Bx)(),{ok:!0,id:c.id,subtasksCompleted:d.completed||void 0,subtasksBlocked:d.blocked.length?d.blocked:void 0}}async function I(a){let b=[];for(let c of a){let a=await H(c);b.push({...a,title:c.title})}return{results:b}}async function J(a){let b=Array.from(new Set((a.files??[]).map(F).filter(Boolean))),c=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP")}),d=a.id?c.find(b=>b.id===a.id):void 0;if(!d&&a.title){let{best:b,candidates:e}=(0,l.mk)(a.title,c.map(a=>({id:a.id,title:a.title})));if(b)d=c.find(a=>a.id===b.id);else if(e.length)return{ok:!1,candidates:e}}if(!d)return{ok:!1};for(let a of b)await h.db.insert(i.nodeFile).values({nodeId:d.id,path:a}).onConflictDoNothing({target:[i.nodeFile.nodeId,i.nodeFile.path]});await (0,j.Bx)();let e=(await h.db.select({n:(0,g.U9)()}).from(i.nodeFile).where((0,f.eq)(i.nodeFile.nodeId,d.id)))[0].n;return{ok:!0,id:d.id,count:e}}async function K(a){let b,c=a.items.filter(a=>a.title.trim());if(!c.length)return{ok:!1,reason:"no_items"};if(a.parentId)b=await h.db.query.node.findFirst({where:(b,{eq:c})=>c(b.id,a.parentId)});else if(a.parentTitle&&a.parentTitle.trim()){let c=await h.db.query.node.findMany({where:(a,{isNull:b})=>b(a.parentId),columns:{id:!0,title:!0,cluster:!0,status:!0}}),{best:d,candidates:e}=(0,l.mk)(a.parentTitle.trim(),c.map(a=>({id:a.id,title:a.title,cluster:a.cluster,status:a.status})));if(d)b=await h.db.query.node.findFirst({where:(a,{eq:b})=>b(a.id,d.id)});else if(e.length)return{ok:!1,reason:"ambiguous",candidates:e}}if(!b)return{ok:!1,reason:"parent_not_found"};let d=b,e=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.parentId,d.id),columns:{id:!0,title:!0}}),f=c.filter(a=>(0,l.mk)(a.title.trim(),e).best);if(f.length)return{ok:!1,reason:"duplicate",message:`⛔ These sub-tasks already exist under "${d.title}": ${f.map(a=>`"${a.title.trim()}"`).join(", ")}. Drop the duplicates — only add genuinely new sub-tasks.`};let g=(await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,d.view),columns:{x:!0,y:!0}})).map(a=>({x:a.x,y:a.y})),i=[];for(let a=0;a<c.length;a++){let b=c[a],e=(0,p.B)(g,{x:d.x+240*a,y:d.y+200});g.push(e);let f=await (0,t.RM)({view:d.view,kind:b.kind?.trim().toUpperCase()==="BUG"?"BUG":"FEATURE",title:b.title.trim(),plain:b.plain??null,cluster:d.cluster??null,layer:(0,n.jR)(b.layer)??(0,n.jR)(d.layer),parentId:d.id,x:e.x,y:e.y});i.push({id:f.id,title:f.title})}return i.length&&await A(i[0].id),await (0,j.Bx)(),{ok:!0,parent:{id:d.id,title:d.title},created:i}}d()}catch(a){d(a)}})},71584:(a,b,c)=>{function d(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}function e(a,b,c={}){let f=c.colW??320,g=c.rowH??150,h=c.maxCols??4,i=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 d(b,{x:0,y:a+g+i})}let j=Math.min(...a.map(a=>a.x)),k=Math.min(...a.map(a=>a.y)),l=a.map(a=>Math.max(0,Math.round((a.x-j)/f))),m=Math.min(h,Math.max(Math.max(...l)+1,Math.ceil(Math.sqrt(a.length+1)))),n=Array(m).fill(k-g);a.forEach((a,b)=>{let c=Math.min(l[b],m-1);n[c]=Math.max(n[c],a.y)});let o=0;for(let a=1;a<m;a++)n[a]<n[o]&&(o=a);return d(b,{x:j+o*f,y:n[o]+g})}c.d(b,{B:()=>d,E:()=>e})},76223:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Z:()=>i,t:()=>h});var e=c(56727),f=c(30046),g=a([e]);async function h(a=e.db){let[b]=await a.insert(f.appSetting).values({id:"singleton"}).onConflictDoUpdate({target:f.appSetting.id,set:{id:"singleton"}}).returning();return b}async function i(a,b=e.db){let[c]=await b.insert(f.appSetting).values({id:"singleton",...a}).onConflictDoUpdate({target:f.appSetting.id,set:a}).returning();return c}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},89908:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AC:()=>n,B2:()=>q,CB:()=>r,OK:()=>m,Qd:()=>l,RM:()=>k,jO:()=>o,k5:()=>p});var e=c(34216),f=c(56727),g=c(30046),h=c(70299),i=c(13560),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){let b=i.hj.parse(a);if(b.fromId===b.toId)throw Error("Self-edge not allowed");let c=b.kind??"DEPENDS",d=await f.db.query.edge.findFirst({where:(a,{and:d,eq:e})=>d(e(a.fromId,b.fromId),e(a.toId,b.toId),e(a.kind,c))});if(d)return d;let[e]=await f.db.insert(g.edge).values({fromId:b.fromId,toId:b.toId,kind:c,label:b.label??null,sourceHandle:b.sourceHandle??null,targetHandle:b.targetHandle??null}).returning();return e}async function m(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 n(a){let[b]=await f.db.delete(g.node).where((0,e.eq)(g.node.id,a)).returning();return b}async function o(a,b,c){let d=i.tI.parse({x:b,y:c}),[h]=await f.db.update(g.node).set(d).where((0,e.eq)(g.node.id,a)).returning();return h}async function p(a){return await Promise.all(a.map(a=>{let b=i.tI.parse({x:a.x,y:a.y});return f.db.update(g.node).set(b).where((0,e.eq)(g.node.id,a.id))})),a.length}async function q(a,b,c){let d=i.tI.parse({x:b,y:c}),[h]=await f.db.update(g.dbTable).set(d).where((0,e.eq)(g.dbTable.id,a)).returning();return h}async function r(a,b,c){let d=i.tI.parse({x:b,y:c}),[h]=await f.db.update(g.endpoint).set(d).where((0,e.eq)(g.endpoint.id,a)).returning();return h}[f,h]=j.then?(await j)():j,d()}catch(a){d(a)}})}};
1
+ "use strict";exports.id=1130,exports.ids=[1130],exports.modules={13560:(a,b,c)=>{c.d(b,{$Y:()=>k,Kq:()=>h,gY:()=>j,hj:()=>m,tI:()=>l});var d=c(44046);let e=d.k5(["ROADMAP","ARCHITECTURE"]),f=d.k5(["FEATURE","BUG"]),g=d.k5(["frontend","backend","fullstack"]),h=d.k5(["user","agent"]),i=d.k5(["PENDING","IN_PROGRESS","DONE","BLOCKED","CANCELLED","DEPRIORITIZED","KEEP","REBUILD","REPLACE","DROP"]);d.k5(["DEPENDS","CONTAINS","RELATES","REPLACES"]);let j=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(2e3).nullish(),parentId:d.Yj().nullish(),status:i.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()}),k=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(2e3).nullish(),cluster:d.Yj().trim().max(64).nullish(),layer:g.nullish(),status:i.optional(),priority:d.ai().int().min(0).max(3).optional(),sourceRef:d.Yj().trim().max(300).nullish()}),l=d.Ik({x:d.ai(),y:d.ai()}),m=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()})},29833:(a,b,c)=>{c.d(b,{mk:()=>i});let d=new Set(["a","an","the","of","for","to","and","or","in","on","with","via","by","using","use","add","adds","support","implement","implementation","feature","new","build","create","o","os","as","um","uma","de","da","do","das","dos","para","por","com","e","ou","no","na","nos","nas","ao","aos","adicionar","implementar","suporte","suportar","nova","novo","funcionalidade","usar","usando","criar"]);function e(a){return a.normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9]+/g," ").trim().replace(/\s+/g," ")}function f(a){return e(a).split(" ").filter(a=>a&&!d.has(a))}function g(a,b){if(!a.size||!b.size)return 0;let c=0;for(let d of a)b.has(d)&&c++;return 2*c/(a.size+b.size)}function h(a){let b=e(a).replace(/ /g,""),c=new Set;for(let a=0;a<b.length-1;a++)c.add(b.slice(a,a+2));return c}function i(a,b,c={}){let d=c.confident??.72,j=c.consider??.5,k=c.margin??.1,l=b.map(b=>{var c,d;let i,j;return{...b,score:Math.round(100*(c=a,d=b.title,i=e(c),j=e(d),i&&j?i===j?1:Math.min(1,.7*g(new Set(f(c)),new Set(f(d)))+.4*g(h(c),h(d))):0))/100}}).sort((a,b)=>b.score-a.score),m=l[0];if(!m||m.score<j)return{best:null,candidates:[]};let n=l[1]?.score??0,o=1===l.length||m.score-n>=k;return m.score>=d&&o?{best:m,candidates:[]}:{best:null,candidates:l.filter(a=>a.score>=j).slice(0,4)}}},38356:(a,b,c)=>{c.d(b,{AG:()=>h,Ey:()=>i,Kn:()=>f,oA:()=>g});var d=c(32753),e=c(29833);function f(a,b){let c=b?.requireLayer??!1,e=a.map(a=>{let b=[],e=a.cluster??a.category??a.domain??null;return e&&e.trim()||b.push("category"),null==a.priority&&b.push("priority"),c&&!(0,d.jR)(a.layer)&&b.push("layer"),b.length?` • "${a.title?.trim()||"(untitled)"}" — missing ${b.join(" + ")}`:null}).filter(a=>null!==a);return 0===e.length?null:"⛔ Every roadmap feature needs a category AND a priority — they drive grouping and ordering on the board, and the user shouldn't have to add them by hand."+(c?' This workspace has a frontend surface, so every feature must also carry `layer`: "frontend" | "backend" | "fullstack" — which side of the stack the work lands on.':"")+" Missing:\n"+e.join("\n")+"\n\nRe-present with each feature carrying its category as `category` (or `cluster` — both work; e.g. AUTH, SEARCH, DATA, INTEL, BILLING …) and `priority` (0 = P0 critical, 1 = P1 high, 2 = P2 medium, 3 = P3 low)."+(c?" Set `layer` on EVERY feature too.":"")+" Don't rely on defaults."}function g(a){let b=(a.title??"").trim();if(!b)return"⛔ A feature needs a non-empty title.";if(!(a.category??"").trim()){let c=function(a){let b=new Set;for(let c of a){let a=(c.cluster??"").trim();a&&b.add(a)}return[...b].sort()}(a.existing),d=c.length?` Reuse an existing category where it fits: ${c.join(", ")}.`:"";return`⛔ Feature "${b}" has no category. Every roadmap feature needs one — it drives grouping and color on the board.${d} Pass it as \`category\` (e.g. AUTH, SEARCH, DATA, INTEL, BILLING, INFRA …); don't rely on a default.`}if(a.requireLayer&&!(0,d.jR)(a.layer))return`⛔ Feature "${b}" has no layer. This workspace has a frontend surface, so every roadmap feature must say which side of the stack it lands on. Pass it as \`layer\`: "frontend" | "backend" | "fullstack".`;let c=(0,e.mk)(b,a.existing.map(a=>({id:a.id,title:a.title})));if(c.best){let d=a.existing.find(a=>a.id===c.best.id),e=d?.status?` (${d.status})`:"";return`⛔ "${b}" already exists as the feature "${d?.title??c.best.title}"${e}. Don't create a duplicate — start it with \`beacon_feature({ action: "start", id })\`, add sub-tasks with \`beacon_feature({ action: "subtasks" })\`, or finish it with \`beacon_feature({ action: "done" })\`.`}return null}function h(a,b){let c=b.map(a=>({id:a.id,title:a.title})),d=a.map(a=>{let d=(0,e.mk)(a.title??"",c);return d.best?{title:a.title,hit:b.find(a=>a.id===d.best.id)}:null}).filter(a=>null!==a);return d.length?"⛔ These proposed features already exist on the roadmap — reuse them instead of creating duplicates:\n"+d.map(a=>` • "${a.title}" → existing "${a.hit.title}"${a.hit.status?` (${a.hit.status})`:""}`).join("\n")+'\n\nDrop the duplicate(s) from the plan; to add work to an existing feature, ship sub-tasks or update it via `beacon_feature({ action: "done" })`. Keep only genuinely new features in the proposal.':null}function i(a,b){let c=(a??"").trim();if(!c)return null;let d=(0,e.mk)(c,b);if(d.best)return null;let f=d.candidates.length?` Did you mean: ${d.candidates.map(a=>`"${a.title}"`).join(", ")}?`:"";return`⛔ front "${c}" doesn't match an existing feature.${f} \`front\` nests a feature UNDER an existing parent feature — it is NOT a domain tag. If "${c}" is a domain, pass it as \`category\` instead. If it's a real umbrella feature, create it first via beacon_propose_plan.`}},40377:(a,b,c)=>{c.d(b,{U9:()=>e});var d=c(91430);function e(a){return(0,d.ll)`count(${a||d.ll.raw("*")})`.mapWith(Number)}},70299:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AS:()=>H,N5:()=>I,Nh:()=>A,Ol:()=>K,Pq:()=>D,hL:()=>J,nV:()=>y,r$:()=>C,y2:()=>E});var e=c(44046),f=c(34216),g=c(40377),h=c(56727),i=c(30046),j=c(19734),k=c(49565),l=c(29833),m=c(38356),n=c(32753),o=c(72595),p=c(71584),q=c(93118),r=c(72967),s=c(7903),t=c(89908),u=c(45301),v=c(76223),w=a([h,j,k,o,t,v]);async function x(a){await (0,v.Z)({currentFeatureId:a})}async function y(){let a=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP"),orderBy:(a,{asc:b})=>b(a.createdAt)}),b=a=>({id:a.id,title:a.title,status:a.status,category:a.cluster,priority:a.priority,layer:a.layer,kind:a.kind});return{fronts:a.filter(a=>!a.parentId).map(c=>({...b(c),tasks:a.filter(a=>a.parentId===c.id).map(a=>({...b(a),workingOn:"IN_PROGRESS"===a.status}))}))}}async function z(a,b){await h.db.update(i.node).set({status:b}).where((0,f.eq)(i.node.id,a)),await A(a),await (0,j.Bx)()}[h,j,k,o,t,v]=w.then?(await w)():w;let L=new Set(["DONE","CANCELLED","DEPRIORITIZED"]),M=new Set(["IN_PROGRESS","BLOCKED"]),N=new Set(["CANCELLED","DEPRIORITIZED"]);async function A(a){let b=new Set,c=a;for(;!b.has(c);){var d;b.add(c);let a=await h.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 h.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||N.has(e.status))return;let g=(d=(await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.parentId,e.id),columns:{status:!0}})).map(a=>a.status)).length?d.every(a=>L.has(a))?"DONE":d.some(a=>M.has(a))?"IN_PROGRESS":"PENDING":"PENDING";if(e.status===g)return;await h.db.update(i.node).set({status:g}).where((0,f.eq)(i.node.id,e.id)),c=e.id}}let O=new Set(["PENDING","IN_PROGRESS"]);async function B(a){let b=[],c=[],d=new Set([a]),e=[a];for(;e.length;){let a=await h.db.query.node.findMany({where:(a,{and:b,eq:c,inArray:d})=>b(d(a.parentId,e),c(a.view,"ROADMAP")),columns:{id:!0,title:!0,status:!0}});for(let f of(e=[],a))d.has(f.id)||(d.add(f.id),e.push(f.id),O.has(f.status)?b.push(f.id):"BLOCKED"===f.status&&c.push(f))}return b.length&&await h.db.update(i.node).set({status:"DONE"}).where((0,f.RV)(i.node.id,b)),{completed:b.length,blocked:c}}async function C(a){let b,c="ROADMAP"===a?"roadmap":"architecture",d=s.zP[c],e=(0,s.VE)(c);if(e.sig===d)return;let g=(await h.db.query.node.findMany({where:(b,{eq:c})=>c(b.view,a),orderBy:(a,{asc:b})=>b(a.createdAt),columns:{id:!0,parentId:!0,source:!0,cluster:!0,status:!0,priority:!0,x:!0,y:!0}})).filter(a=>"DRAFT"!==a.source);if(g.length<2)return;let j=null;if("ROADMAP"===a){let a="status"===e.arrangedBy||"priority"===e.arrangedBy?e.arrangedBy:"cluster";j=a,b=(0,q.VI)(g.map(a=>({id:a.id,parentId:a.parentId,cluster:a.cluster,status:a.status,priority:a.priority})),a)}else{let a=g.map(a=>a.id),c=await h.db.query.edge.findMany({where:(b,{and:c,eq:d})=>c(d(b.kind,"DEPENDS"),(0,f.RV)(b.fromId,a),(0,f.RV)(b.toId,a)),columns:{fromId:!0,toId:!0}});b=(0,r.to)(g.map(a=>({id:a.id,group:(a.cluster??"").trim()||"—"})),c)}let k=[];for(let a of g){let c=b.get(a.id);c&&(Math.round(c.x)!==Math.round(a.x)||Math.round(c.y)!==Math.round(a.y))&&k.push(h.db.update(i.node).set({x:c.x,y:c.y}).where((0,f.eq)(i.node.id,a.id)))}await Promise.all(k),(0,s.qT)(c,j?{sig:d,arrangedBy:j}:{sig:d})}async function D(a){let b=a.title.trim();if(!b)throw Error("title required");let c=a.flagExisting??!0,d=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP")});if(a.id){let b=d.find(b=>b.id===a.id);if(b)return c?(await z(b.id,"IN_PROGRESS"),await x(b.id),{action:"flagged",id:b.id,title:b.title,via:"id"}):{action:"exists",id:b.id,title:b.title,status:b.status}}let{best:e,candidates:f}=(0,l.mk)(b,d.map(a=>({id:a.id,title:a.title})));if(e){if(!c){let a=d.find(a=>a.id===e.id)?.status??"PENDING";return{action:"exists",id:e.id,title:e.title,status:a}}return await z(e.id,"IN_PROGRESS"),await x(e.id),{action:"flagged",id:e.id,title:e.title,via:"match",score:e.score}}if(f.length)return{action:"ambiguous",candidates:f};let g=d.filter(a=>!a.parentId),k=a.front?.trim()||"",q=k?(0,m.Ey)(k,g.map(a=>({id:a.id,title:a.title}))):null;if(q)return{action:"rejected",message:q};let r=null,s=null,t=null,u=null;if(k){let a=(0,l.mk)(k,g.map(a=>({id:a.id,title:a.title}))).best;r=a.id,s=a.title;let b=d.find(b=>b.id===a.id);t=b?.cluster??null,u=b?.layer??null}let v=(a.cluster?.trim()||t)??null,w=(0,n.jR)(a.layer)??(0,n.jR)(u),y=!r&&await (0,o.jZ)(),B=(0,m.oA)({title:b,category:v,layer:w,requireLayer:y,existing:d.map(a=>({id:a.id,title:a.title,cluster:a.cluster,status:a.status}))});if(B)return{action:"rejected",message:B};let C=r?d.filter(a=>a.parentId===r).length:0,D=a=>(a??"").trim()||"—",E=r?(0,p.B)(d.map(a=>({x:a.x,y:a.y})),{x:g.find(a=>a.id===r)?.x??0,y:160+110*C}):(0,p.E)(d.filter(a=>!a.parentId&&D(a.cluster)===D(v)).map(a=>({x:a.x,y:a.y})),d.map(a=>({x:a.x,y:a.y}))),F=(a.status??"").trim().toLowerCase(),[G]=await h.db.insert(i.node).values({view:"ROADMAP",kind:a.kind?.trim().toUpperCase()==="BUG"?"BUG":"FEATURE",title:b,plain:a.detail??null,cluster:v,layer:w,priority:"number"==typeof a.priority?a.priority:void 0,status:"backlog"===F||"pending"===F?"PENDING":"IN_PROGRESS",source:"SESSION",parentId:r,x:E.x,y:E.y}).returning();return await A(G.id),await (0,j.Bx)(),await x(G.id),{action:"created",id:G.id,title:b,front:s}}async function E(a){let b=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP")}),c=async a=>{let b=await B(a);return await z(a,"DONE"),await (0,k.q)(),{ok:!0,id:a,subtasksCompleted:b.completed||void 0,subtasksBlocked:b.blocked.length?b.blocked:void 0}};if(a.id){let d=b.find(b=>b.id===a.id);if(d)return c(d.id)}if(!a.title)return{ok:!1};let{best:d,candidates:e}=(0,l.mk)(a.title,b.map(a=>({id:a.id,title:a.title})));return d?c(d.id):{ok:!1,candidates:e.length?e:void 0}}function F(a){let b=a.trim(),c=(0,u.jv)();return b.startsWith(c)&&(b=b.slice(c.length)),b.replace(/^[./]+/,"").trim()}let P=new Set(["KEEP","REBUILD","REPLACE","DROP"]),Q=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()});async function G(a){let b=e.YO(Q).parse(a),c=new Map;for(let a of b)c.set(a.title.toLowerCase(),a);let d=Array.from(c.values());if(!d.length)return 0;let g=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ARCHITECTURE")}),j=new Map(g.map(a=>[a.title.toLowerCase(),a])),k=new Map(g.map(a=>[a.title.toLowerCase(),a.id])),l=g.map(a=>({x:a.x,y:a.y,domain:(a.cluster??"").trim()||"—"}));for(let a of d){let b=a.title.toLowerCase(),c=a.status&&P.has(a.status)?a.status:"KEEP",d=j.get(b);if(d)await h.db.update(i.node).set({cluster:a.domain,layer:(0,n.jR)(a.layer)??d.layer,role:a.role??d.role,plain:a.plain??d.plain,status:c}).where((0,f.eq)(i.node.id,d.id)),a.files?.length&&(await h.db.delete(i.nodeFile).where((0,f.eq)(i.nodeFile.nodeId,d.id)),await h.db.insert(i.nodeFile).values(Array.from(new Set(a.files)).map(a=>({nodeId:d.id,path:a}))));else{let d=a.domain.trim()||"—",{x:e,y:f}=(0,p.E)(l.filter(a=>a.domain===d),l);l.push({x:e,y:f,domain:d});let[g]=await h.db.insert(i.node).values({view:"ARCHITECTURE",source:"MANUAL",cluster:a.domain,layer:(0,n.jR)(a.layer),title:a.title,role:a.role??null,plain:a.plain??null,status:c,x:e,y:f}).returning();a.files?.length&&await h.db.insert(i.nodeFile).values(Array.from(new Set(a.files)).map(a=>({nodeId:g.id,path:a}))),k.set(b,g.id)}}for(let a of d){let b=k.get(a.title.toLowerCase());if(b)for(let c of a.depends??[]){let a=k.get(c.trim().toLowerCase());a&&a!==b&&(await h.db.query.edge.findFirst({where:(c,{and:d,eq:e})=>d(e(c.fromId,b),e(c.toId,a),e(c.kind,"DEPENDS"))})||await h.db.insert(i.edge).values({fromId:b,toId:a,kind:"DEPENDS"}).catch(()=>{}))}}for(let a of d){if(!a.bugs?.length)continue;let b=k.get(a.title.toLowerCase());if(b)for(let c of a.bugs)await h.db.query.bugFlag.findFirst({where:(a,{and:d,eq:e,isNull:f})=>d(e(a.nodeId,b),e(a.note,c.note),f(a.resolvedAt))})||await h.db.insert(i.bugFlag).values({nodeId:b,by:"agent",note:c.note})}return d.length}async function H(a){let b=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP")}),c=a.id?b.find(b=>b.id===a.id):void 0;if(!c&&a.title){let{best:d,candidates:e}=(0,l.mk)(a.title,b.map(a=>({id:a.id,title:a.title})));if(d)c=b.find(a=>a.id===d.id);else if(e.length)return{ok:!1,candidates:e}}if(!c)return{ok:!1};await h.db.update(i.node).set({plain:a.description,status:"DONE"}).where((0,f.eq)(i.node.id,c.id));let d=await B(c.id);if(await A(c.id),await (0,k.q)(),a.files?.length)for(let b of Array.from(new Set(a.files.map(F).filter(Boolean))))await h.db.insert(i.nodeFile).values({nodeId:c.id,path:b}).onConflictDoNothing({target:[i.nodeFile.nodeId,i.nodeFile.path]});return await h.db.update(i.appSetting).set({currentFeatureId:null}).where((0,f.eq)(i.appSetting.currentFeatureId,c.id)),a.architecture?.length&&await G(a.architecture),await (0,j.Bx)(),{ok:!0,id:c.id,subtasksCompleted:d.completed||void 0,subtasksBlocked:d.blocked.length?d.blocked:void 0}}async function I(a){let b=[];for(let c of a){let a=await H(c);b.push({...a,title:c.title})}return{results:b}}async function J(a){let b=Array.from(new Set((a.files??[]).map(F).filter(Boolean))),c=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP")}),d=a.id?c.find(b=>b.id===a.id):void 0;if(!d&&a.title){let{best:b,candidates:e}=(0,l.mk)(a.title,c.map(a=>({id:a.id,title:a.title})));if(b)d=c.find(a=>a.id===b.id);else if(e.length)return{ok:!1,candidates:e}}if(!d)return{ok:!1};for(let a of b)await h.db.insert(i.nodeFile).values({nodeId:d.id,path:a}).onConflictDoNothing({target:[i.nodeFile.nodeId,i.nodeFile.path]});await (0,j.Bx)();let e=(await h.db.select({n:(0,g.U9)()}).from(i.nodeFile).where((0,f.eq)(i.nodeFile.nodeId,d.id)))[0].n;return{ok:!0,id:d.id,count:e}}async function K(a){let b,c=a.items.filter(a=>a.title.trim());if(!c.length)return{ok:!1,reason:"no_items"};if(a.parentId)b=await h.db.query.node.findFirst({where:(b,{eq:c})=>c(b.id,a.parentId)});else if(a.parentTitle&&a.parentTitle.trim()){let c=await h.db.query.node.findMany({where:(a,{isNull:b})=>b(a.parentId),columns:{id:!0,title:!0,cluster:!0,status:!0}}),{best:d,candidates:e}=(0,l.mk)(a.parentTitle.trim(),c.map(a=>({id:a.id,title:a.title,cluster:a.cluster,status:a.status})));if(d)b=await h.db.query.node.findFirst({where:(a,{eq:b})=>b(a.id,d.id)});else if(e.length)return{ok:!1,reason:"ambiguous",candidates:e}}if(!b)return{ok:!1,reason:"parent_not_found"};let d=b,e=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.parentId,d.id),columns:{id:!0,title:!0}}),f=c.filter(a=>(0,l.mk)(a.title.trim(),e).best);if(f.length)return{ok:!1,reason:"duplicate",message:`⛔ These sub-tasks already exist under "${d.title}": ${f.map(a=>`"${a.title.trim()}"`).join(", ")}. Drop the duplicates — only add genuinely new sub-tasks.`};let g=(await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,d.view),columns:{x:!0,y:!0}})).map(a=>({x:a.x,y:a.y})),i=[];for(let a=0;a<c.length;a++){let b=c[a],e=(0,p.B)(g,{x:d.x+240*a,y:d.y+200});g.push(e);let f=await (0,t.RM)({view:d.view,kind:b.kind?.trim().toUpperCase()==="BUG"?"BUG":"FEATURE",title:b.title.trim(),plain:b.plain??null,cluster:d.cluster??null,layer:(0,n.jR)(b.layer)??(0,n.jR)(d.layer),parentId:d.id,x:e.x,y:e.y});i.push({id:f.id,title:f.title})}return i.length&&await A(i[0].id),await (0,j.Bx)(),{ok:!0,parent:{id:d.id,title:d.title},created:i}}d()}catch(a){d(a)}})},71584:(a,b,c)=>{function d(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}function e(a,b,c={}){let f=c.colW??320,g=c.rowH??150,h=c.maxCols??4,i=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 d(b,{x:0,y:a+g+i})}let j=Math.min(...a.map(a=>a.x)),k=Math.min(...a.map(a=>a.y)),l=a.map(a=>Math.max(0,Math.round((a.x-j)/f))),m=Math.min(h,Math.max(Math.max(...l)+1,Math.ceil(Math.sqrt(a.length+1)))),n=Array(m).fill(k-g);a.forEach((a,b)=>{let c=Math.min(l[b],m-1);n[c]=Math.max(n[c],a.y)});let o=0;for(let a=1;a<m;a++)n[a]<n[o]&&(o=a);return d(b,{x:j+o*f,y:n[o]+g})}c.d(b,{B:()=>d,E:()=>e})},76223:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Z:()=>i,t:()=>h});var e=c(56727),f=c(30046),g=a([e]);async function h(a=e.db){let[b]=await a.insert(f.appSetting).values({id:"singleton"}).onConflictDoUpdate({target:f.appSetting.id,set:{id:"singleton"}}).returning();return b}async function i(a,b=e.db){let[c]=await b.insert(f.appSetting).values({id:"singleton",...a}).onConflictDoUpdate({target:f.appSetting.id,set:a}).returning();return c}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},89908:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AC:()=>n,B2:()=>q,CB:()=>r,OK:()=>m,Qd:()=>l,RM:()=>k,jO:()=>o,k5:()=>p});var e=c(34216),f=c(56727),g=c(30046),h=c(70299),i=c(13560),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){let b=i.hj.parse(a);if(b.fromId===b.toId)throw Error("Self-edge not allowed");let c=b.kind??"DEPENDS",d=await f.db.query.edge.findFirst({where:(a,{and:d,eq:e})=>d(e(a.fromId,b.fromId),e(a.toId,b.toId),e(a.kind,c))});if(d)return d;let[e]=await f.db.insert(g.edge).values({fromId:b.fromId,toId:b.toId,kind:c,label:b.label??null,sourceHandle:b.sourceHandle??null,targetHandle:b.targetHandle??null}).returning();return e}async function m(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 n(a){let[b]=await f.db.delete(g.node).where((0,e.eq)(g.node.id,a)).returning();return b}async function o(a,b,c){let d=i.tI.parse({x:b,y:c}),[h]=await f.db.update(g.node).set(d).where((0,e.eq)(g.node.id,a)).returning();return h}async function p(a){return await Promise.all(a.map(a=>{let b=i.tI.parse({x:a.x,y:a.y});return f.db.update(g.node).set(b).where((0,e.eq)(g.node.id,a.id))})),a.length}async function q(a,b,c){let d=i.tI.parse({x:b,y:c}),[h]=await f.db.update(g.dbTable).set(d).where((0,e.eq)(g.dbTable.id,a)).returning();return h}async function r(a,b,c){let d=i.tI.parse({x:b,y:c}),[h]=await f.db.update(g.endpoint).set(d).where((0,e.eq)(g.endpoint.id,a)).returning();return h}[f,h]=j.then?(await j)():j,d()}catch(a){d(a)}})}};
@@ -1 +1 @@
1
- "use strict";exports.id=1341,exports.ids=[1341],exports.modules={31059:(a,b,c)=>{c.d(b,{ie:()=>f});var d=c(37096),e=c(71484);function f(...a){return a[0].columns?new g(a[0].columns,a[0].name):new g(a)}class g{static [d.i]="SQLitePrimaryKeyBuilder";columns;name;constructor(a,b){this.columns=a,this.name=b}build(a){return new h(a,this.columns,this.name)}}class h{constructor(a,b,c){this.table=a,this.columns=b,this.name=c}static [d.i]="SQLitePrimaryKey";columns;name;getName(){return this.name??`${this.table[e.jo.Symbol.Name]}_${this.columns.map(a=>a.name).join("_")}_pk`}}},32753:(a,b,c)=>{c.d(b,{EC:()=>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=/\.(tsx|jsx|vue|svelte)$/i;function h(a){return a.some(a=>g.test(a))}},72595:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Wg:()=>k,hA:()=>i,jZ:()=>l,zr:()=>j});var e=c(56727),f=c(30046),g=c(32753),h=a([e]);async function i(a=e.db){let[b]=await a.insert(f.projectMeta).values({id:"singleton"}).onConflictDoUpdate({target:f.projectMeta.id,set:{id:"singleton"}}).returning();return b}async function j(a,b=e.db){let c={};null!=a.overview&&(c.overview=a.overview),a.conventions&&(c.conventions=JSON.stringify(a.conventions)),void 0!==a.hasFrontend&&(c.hasFrontend=a.hasFrontend),a.classificationRoots&&(c.classificationRoots=JSON.stringify(a.classificationRoots)),0===Object.keys(c).length&&(c.id="singleton");let[d]=await b.insert(f.projectMeta).values({id:"singleton",overview:a.overview??null,conventions:JSON.stringify(a.conventions??[]),hasFrontend:a.hasFrontend??null,classificationRoots:JSON.stringify(a.classificationRoots??[])}).onConflictDoUpdate({target:f.projectMeta.id,set:c}).returning();return d}async function k(a=e.db){let b=await i(a);try{let a=JSON.parse(b.classificationRoots??"[]");return Array.isArray(a)?a.filter(a=>"string"==typeof a):[]}catch{return[]}}async function l(a=e.db){let b=await i(a);if(null!=b.hasFrontend)return b.hasFrontend;let c=await a.select({path:f.codeFile.path}).from(f.codeFile);return(0,g.EC)(c.map(a=>a.path))}e=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},72967:(a,b,c)=>{c.d(b,{to:()=>d});function d(a,b){if(0===a.length)return new Map;let c=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),d=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,c),e=new Map(a.map(a=>[a.id,[]]));for(let a of c)e.get(a.fromId)?.push(a.toId);let f=Array.from(new Set(a.map(a=>a.group))),g=f.filter(a=>"—"!==a).sort(),h=f.includes("—")?[...g,"—"]:g,i=[];for(let b of h){let c=a.filter(a=>a.group===b),f=Math.min(...c.map(a=>d.get(a.id)??0)),g=Math.max(...c.map(a=>d.get(a.id)??0)),h=new Map,j=new Map,k=0,l=1;for(let a=f;a<=g;a++){let b=c.filter(b=>d.get(b.id)===a);if(!b.length)continue;let f=a=>{let b=(e.get(a.id)??[]).map(a=>j.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)=>f(a)-f(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;j.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)}i.push({d:b,w:k,h:150*l,local:h})}let j=Math.max(2880,Math.round(Math.sqrt(2.2*i.reduce((a,b)=>a+(b.w+140)*(b.h+170),0)))),k=new Map,l=0,m=0,n=0;for(let a of i){for(let[b,c]of(l>0&&l+a.w>j&&(m+=n+170,l=0,n=0),a.local))k.set(b,{x:l+c.x,y:m+c.y});n=Math.max(n,a.h),l+=a.w+140}return k}},76968:(a,b,c)=>{c.d(b,{GL:()=>i,Pe:()=>h});var d=c(37096);class e{constructor(a,b){this.name=a,this.unique=b}static [d.i]="SQLiteIndexBuilderOn";on(...a){return new f(this.name,a,this.unique)}}class f{static [d.i]="SQLiteIndexBuilder";config;constructor(a,b,c){this.config={name:a,columns:b,unique:c,where:void 0}}where(a){return this.config.where=a,this}build(a){return new g(this.config,a)}}class g{static [d.i]="SQLiteIndex";config;constructor(a,b){this.config={...a,table:b}}}function h(a){return new e(a,!1)}function i(a){return new e(a,!0)}},93118:(a,b,c)=>{c.d(b,{VI:()=>e});let d=["IN_PROGRESS","PENDING","BLOCKED","DONE","DEPRIORITIZED","CANCELLED"];function e(a,b,c={}){let f=c.colW??320,g=c.rowH??150,h=c.childIndent??24,i=c.laneGap??56,j=c.bandGap??110,k=c.maxCols??10,l=c.maxBandW??8*f,m=new Set(a.map(a=>a.id)),n=a=>!a.parentId||!m.has(a.parentId),o=a.filter(n),p=new Map;for(let b of a){if(n(b))continue;let a=p.get(b.parentId);a?a.push(b):p.set(b.parentId,[b])}let q="status"===b?a=>a.status:"priority"===b?a=>String(a.priority):a=>(a.cluster??"").trim()||"—",r=new Map;for(let a of o){let b=q(a),c=r.get(b);c?c.push(a):r.set(b,[a])}let s=(function(a,b,c){if("status"===a)return[...d];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,o,q).filter(a=>r.has(a)),t=new Map,u=0,v=0,w=0;for(let a of s){let b=r.get(a),c=b.reduce((a,b)=>a+1+(p.get(b.id)?.length??0),0),d=Math.max(1,Math.min(k,b.length,Math.round(Math.sqrt(.85*c))||1)),e=d*f;u>0&&u+e>l&&(u=0,v+=w+j,w=0);let m=Array(d).fill(0);for(let a of b){let b=0;for(let a=1;a<d;a++)m[a]<m[b]&&(b=a);let c=u+b*f,e=v+m[b]*g;t.set(a.id,{x:c,y:e});let i=p.get(a.id)??[];i.forEach((a,b)=>{t.set(a.id,{x:c+h,y:e+(b+1)*g})}),m[b]+=1+i.length}w=Math.max(w,m.reduce((a,b)=>Math.max(a,b),0)*g),u+=e+i}return t}}};
1
+ "use strict";exports.id=1341,exports.ids=[1341],exports.modules={31059:(a,b,c)=>{c.d(b,{ie:()=>f});var d=c(37096),e=c(71484);function f(...a){return a[0].columns?new g(a[0].columns,a[0].name):new g(a)}class g{static [d.i]="SQLitePrimaryKeyBuilder";columns;name;constructor(a,b){this.columns=a,this.name=b}build(a){return new h(a,this.columns,this.name)}}class h{constructor(a,b,c){this.table=a,this.columns=b,this.name=c}static [d.i]="SQLitePrimaryKey";columns;name;getName(){return this.name??`${this.table[e.jo.Symbol.Name]}_${this.columns.map(a=>a.name).join("_")}_pk`}}},32753:(a,b,c)=>{c.d(b,{EC:()=>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=/\.(tsx|jsx|vue|svelte)$/i;function h(a){return a.some(a=>g.test(a))}},72595:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Wg:()=>k,hA:()=>i,jZ:()=>l,zr:()=>j});var e=c(56727),f=c(30046),g=c(32753),h=a([e]);async function i(a=e.db){let[b]=await a.insert(f.projectMeta).values({id:"singleton"}).onConflictDoUpdate({target:f.projectMeta.id,set:{id:"singleton"}}).returning();return b}async function j(a,b=e.db){let c={};null!=a.overview&&(c.overview=a.overview),a.conventions&&(c.conventions=JSON.stringify(a.conventions)),void 0!==a.hasFrontend&&(c.hasFrontend=a.hasFrontend),a.classificationRoots&&(c.classificationRoots=JSON.stringify(a.classificationRoots)),0===Object.keys(c).length&&(c.id="singleton");let[d]=await b.insert(f.projectMeta).values({id:"singleton",overview:a.overview??null,conventions:JSON.stringify(a.conventions??[]),hasFrontend:a.hasFrontend??null,classificationRoots:JSON.stringify(a.classificationRoots??[])}).onConflictDoUpdate({target:f.projectMeta.id,set:c}).returning();return d}async function k(a=e.db){let b=await i(a);try{let a=JSON.parse(b.classificationRoots??"[]");return Array.isArray(a)?a.filter(a=>"string"==typeof a):[]}catch{return[]}}async function l(a=e.db){let b=await i(a);if(null!=b.hasFrontend)return b.hasFrontend;let c=await a.select({path:f.codeFile.path}).from(f.codeFile);return(0,g.EC)(c.map(a=>a.path))}e=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},72967:(a,b,c)=>{c.d(b,{to:()=>e});var d=c(47782);function e(a,b,c={}){if(0===a.length)return new Map;let f=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),g=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,f),h=new Map(a.map(a=>[a.id,[]]));for(let a of f)h.get(a.fromId)?.push(a.toId);let i=Array.from(new Set(a.map(a=>a.group))),j=i.filter(a=>"—"!==a).sort(),k=i.includes("—")?[...j,"—"]:j,l=[];for(let b of k){let c=a.filter(a=>a.group===b),d=Math.min(...c.map(a=>g.get(a.id)??0)),e=Math.max(...c.map(a=>g.get(a.id)??0)),f=new Map,i=new Map,j=0,k=1;for(let a=d;a<=e;a++){let b=c.filter(b=>g.get(b.id)===a);if(!b.length)continue;let d=a=>{let b=(h.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 e=Math.max(1,Math.ceil(Math.sqrt(2*b.length)));b.forEach((a,b)=>{let c=Math.floor(b/e),d=b%e;i.set(a.id,d),f.set(a.id,{x:j+360*c,y:150*d}),k=Math.max(k,d+1)}),j+=360*Math.ceil(b.length/e)}l.push({d:b,w:j,h:150*k,local:f})}let m=(0,d.Xi)(l.map(a=>({id:a.d,w:a.w,h:a.h})),{gapX:84,gapY:80,viewportAspect:c.viewportAspect,minBandW:1080,aspectSlack:1.5}),n=new Map;for(let a of l){let b=m.get(a.d);for(let[c,d]of a.local)n.set(c,{x:b.x+d.x,y:b.y+d.y})}return n}},76968:(a,b,c)=>{c.d(b,{GL:()=>i,Pe:()=>h});var d=c(37096);class e{constructor(a,b){this.name=a,this.unique=b}static [d.i]="SQLiteIndexBuilderOn";on(...a){return new f(this.name,a,this.unique)}}class f{static [d.i]="SQLiteIndexBuilder";config;constructor(a,b,c){this.config={name:a,columns:b,unique:c,where:void 0}}where(a){return this.config.where=a,this}build(a){return new g(this.config,a)}}class g{static [d.i]="SQLiteIndex";config;constructor(a,b){this.config={...a,table:b}}}function h(a){return new e(a,!1)}function i(a){return new e(a,!0)}},93118:(a,b,c)=>{c.d(b,{VI:()=>f});let d=["IN_PROGRESS","PENDING","BLOCKED","DONE","DEPRIORITIZED","CANCELLED"];var e=c(47782);function f(a,b,c={}){let g=c.colW??320,h=c.rowH??150,i=c.childIndent??24,j=c.laneGap??56,k=c.bandGap??110,l=c.maxCols??10,m=c.minBandW??3*g,n=new Set(a.map(a=>a.id)),o=a=>!a.parentId||!n.has(a.parentId),p=a.filter(o),q=new Map;for(let b of a){if(o(b))continue;let a=q.get(b.parentId);a?a.push(b):q.set(b.parentId,[b])}let r="status"===b?a=>a.status:"priority"===b?a=>String(a.priority):a=>(a.cluster??"").trim()||"—",s=new Map;for(let a of p){let b=r(a),c=s.get(b);c?c.push(a):s.set(b,[a])}let t=(function(a,b,c){if("status"===a)return[...d];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,p,r).filter(a=>s.has(a)),u=[];for(let a of t){let b=s.get(a),c=b.reduce((a,b)=>a+1+(q.get(b.id)?.length??0),0),d=Math.max(1,Math.min(l,b.length,Math.round(Math.sqrt(.85*c))||1)),e=Array(d).fill(0),f=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*g,j=e[b]*h;f.set(a.id,{x:c,y:j});let k=q.get(a.id)??[];k.forEach((a,b)=>{f.set(a.id,{x:c+i,y:j+(b+1)*h})}),e[b]+=1+k.length}let j=e.reduce((a,b)=>Math.max(a,b),0);u.push({id:a,w:d*g,h:j*h,local:f})}let v=(0,e.Xi)(u.map(a=>({id:a.id,w:a.w,h:a.h})),{gapX:j,gapY:k,viewportAspect:c.viewportAspect,minBandW:m,aspectSlack:1.5}),w=new Map;for(let a of u){let b=v.get(a.id);for(let[c,d]of a.local)w.set(c,{x:b.x+d.x,y:b.y+d.y})}return w}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=2933,exports.ids=[2933],exports.modules={4245:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{i:()=>g});var e=c(74378),f=a([e]);function g(a){for(let b=0;b<a.length;b++)for(let c=b+1;c<a.length;c++){let d=a[b],e=a[c];if(d.x<e.x+240&&d.x+240>e.x&&d.y<e.y+50&&d.y+50>e.y)return!0}return!1}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},7185:(a,b,c)=>{c.d(b,{Q2:()=>J});var d=c(73024),e=c(51455),f=c(76760);let g=[".ts",".tsx",".js",".jsx",".mjs",".cjs"],h=[/(?:^|[\n;])\s*(?:import|export)[^'"`\n]{0,4000}?from\s*['"]([^'"`]+)['"]/g,/(?:^|[\n;])\s*import\s*['"]([^'"`]+)['"]/g,/\brequire\(\s*['"]([^'"`]+)['"]\s*\)/g,/\bimport\(\s*['"]([^'"`]+)['"]\s*\)/g];function i(a,b){if(b.has(a))return a;for(let c of g){let d=`${a}${c}`;if(b.has(d))return d}for(let c of g){let d=`${a}/index${c}`;if(b.has(d))return d}return null}function j(a,b){for(let c of[`${a}.py`,`${a}/__init__.py`,`${a}.pyi`])if(b.has(c))return[c];return[]}let k=/(?:^|[\n;])\s*import\s+(?:[\w.]+\s+)?"([^"]+)"/g,l=/(?:^|[\n;])\s*import\s*\(([\s\S]*?)\)/g,m=/"([^"]+)"/g,n=/(?:^|[\n;])\s*(?:pub\s+)?mod\s+(\w+)\s*;/g,o=/(?:^|[\n;])\s*(?:pub\s+)?use\s+([\w:]+)/g;function p(a,b){for(let c of[`${a}.rs`,`${a}/mod.rs`])if(b.has(c))return[c];return[]}let q=new Set(["mod.rs","lib.rs","main.rs"]),r=[".swift",".java",".rb",".kt",".kts",".cs",".php",".scala",".c",".h",".cpp",".hpp",".cc",".hh",".m",".mm",".ex",".exs",".lua",".dart",".vue",".svelte"],s=[/\b(?:require_relative|require|include|import|use|using|from)\s*\(?\s*['"]([^'"`\n]+)['"]/g,/(?:^|[\n;])\s*import\s+([\w.]+)/g,/(?:^|[\n;])\s*from\s+([\w.]+)\s+import\b/g,/(?:^|[\n;])\s*using\s+([\w.]+)\s*;/g,/(?:^|[\n;])\s*use\s+([\w\\]+)/g,/#\s*include\s*[<"]([^>"\n]+)[>"]/g],t=[{id:"ts",extensions:g,specifiers:function(a){let b=new Set;for(let c of h)for(let d of a.matchAll(c))b.add(d[1]);return b},resolve(a,b,c){let d=function(a,b,c,d){if(a.startsWith("."))return i((0,f.resolve)("/",(0,f.dirname)(b),a).split(/[\\/]/).join("/").replace(/^\//,""),c);for(let b of d)if(a.startsWith(b.from)){let d=a.slice(b.from.length),e=i(b.to?`${b.to}/${d}`:d,c);if(e)return e}return null}(a,b,c.fileSet,c.tsAliases??[]);return d?[d]:[]}},{id:"python",extensions:[".py",".pyi"],specifiers:function(a){let b=new Set;for(let c of a.matchAll(/(?:^|[\n;])\s*from\s+(\.*[\w.]*)\s+import\b/g)){let a=c[1].trim();a&&b.add(a)}for(let c of a.matchAll(/(?:^|[\n;])\s*import\s+([\w.]+(?:\s*,\s*[\w.]+)*)/g))for(let a of c[1].split(/\s*,\s*/)){let c=a.trim().split(/\s+as\s+/)[0].trim();c&&b.add(c)}return b},resolve(a,b,c){if(a.startsWith(".")){let d=a.length-a.replace(/^\.+/,"").length,e=a.slice(d),g=(0,f.dirname)(b);for(let a=1;a<d;a++)g=(0,f.dirname)(g);let h=e?(0,f.join)(g,e.replace(/\./g,"/")):g;return j((0,f.normalize)(h).replace(/\\/g,"/"),c.fileSet)}let d=a.replace(/\./g,"/"),e=[],g=(0,f.dirname)(b);for(;g&&"."!==g&&"/"!==g;)e.push(g),g=(0,f.dirname)(g);for(let a of(e.push(""),e)){let b=j(a?`${a}/${d}`:d,c.fileSet);if(b.length)return b}return[]}},{id:"go",extensions:[".go"],resolve(a,b,c){let d=c.goModulePath;if(!d)return[];let e=null;if(a===d?e="":a.startsWith(`${d}/`)&&(e=a.slice(d.length+1)),null===e)return[];let g=[];for(let a of c.fileSet){if(!a.endsWith(".go"))continue;let b=(0,f.dirname)(a);(""===e&&"."===b||b===e)&&g.push(a)}return g.sort()},specifiers:function(a){let b=new Set;for(let c of a.matchAll(k))b.add(c[1]);for(let c of a.matchAll(l))for(let a of c[1].matchAll(m))b.add(a[1]);return b}},{id:"rust",extensions:[".rs"],specifiers:function(a){let b=new Set;for(let c of a.matchAll(n))b.add(`./${c[1]}`);for(let c of a.matchAll(o)){let a=function(a){let b=a.split("::").filter(a=>a&&"*"!==a);return b.length?"crate"===b[0]?["crate",...b.slice(1)].join("/"):"super"===b[0]?["..",...b.slice(1)].join("/"):"self"===b[0]?[".",...b.slice(1)].join("/"):b.join("/"):""}(c[1]);a&&b.add(a)}return b},resolve(a,b,c){let d=c.fileSet;if(a.startsWith("./")||a.startsWith("../")){let c=a.replace(/^\.\//,""),e=p((0,f.normalize)((0,f.join)((0,f.dirname)(b),a)).replace(/\\/g,"/"),d);if(e.length)return e;if(a.startsWith("./")&&!q.has((0,f.basename)(b))){let a=(0,f.join)((0,f.dirname)(b),(0,f.basename)(b,".rs"),c);if((e=p((0,f.normalize)(a).replace(/\\/g,"/"),d)).length)return e}return[]}if(a.startsWith("crate/")){let c=b.split("/"),e=c.lastIndexOf("src"),g=e>=0?c.slice(0,e+1).join("/"):(0,f.dirname)(b),h=a.slice(6).split("/");for(let a of[h.join("/"),h.slice(0,-1).join("/")]){if(!a)continue;let b=p(`${g}/${a}`,d);if(b.length)return b}}return[]}},{id:"fallback",extensions:r,specifiers:function(a){let b=new Set;for(let c of s)for(let d of a.matchAll(c)){let a=d[1].trim();a&&b.add(a)}return b},resolve(a,b,c){let d=[(0,f.extname)(b).toLowerCase(),...r].filter((a,b,c)=>a&&c.indexOf(a)===b),e=a.includes("/")||a.includes("\\"),g=a.startsWith(".")||e?a.replace(/\\/g,"/"):a.replace(/[.:]+/g,"/");for(let a of[(0,f.normalize)((0,f.join)((0,f.dirname)(b),g)).replace(/\\/g,"/"),g.replace(/^\.\//,"")]){if(c.fileSet.has(a))return[a];for(let b of d){let d=a.endsWith(b)?a:`${a}${b}`;if(c.fileSet.has(d))return[d];if(c.fileSet.has(`${a}/index${b}`))return[`${a}/index${b}`]}}return[]}}],u=new Map;for(let a of t)for(let b of a.extensions)u.set(b,a);let v={".ts":"ts",".tsx":"ts",".js":"js",".jsx":"js",".mjs":"js",".cjs":"js",".py":"py",".pyi":"py",".go":"go",".rs":"rs",".swift":"swift",".java":"java",".rb":"ruby",".kt":"kotlin",".kts":"kotlin",".cs":"csharp",".php":"php",".scala":"scala",".c":"c",".h":"c",".cpp":"cpp",".hpp":"cpp",".cc":"cpp",".hh":"cpp",".m":"objc",".mm":"objc",".ex":"elixir",".exs":"elixir",".lua":"lua",".dart":"dart",".vue":"vue",".svelte":"svelte"};function w(a){return u.get((0,f.extname)(a).toLowerCase())??null}function x(){return new Set(u.keys())}let y=new Set(["node_modules",".git",".next","dist","build","__pycache__","target",".venv","venv","env",".turbo","coverage",".beacon",".playwright-mcp","generated","migrations","alembic","migrate"]),z=()=>Promise.resolve();async function A(a,b,c,d,g){let h;try{h=await (0,e.readdir)(b,{withFileTypes:!0})}catch{return}for(let e of h){if(e.name.startsWith(".")||y.has(e.name))continue;let h=(0,f.join)(b,e.name);if(e.isDirectory()){await A(a,h,c,d,g);continue}!(!e.isFile()||e.name.endsWith(".d.ts"))&&c.has((0,f.extname)(e.name).toLowerCase())&&d.push((0,f.relative)(a,h))}await g()}async function B(a,b=z){let c=[];return await A(a,a,x(),c,b),c.map(a=>a.split(/[\\/]/).join("/")).sort()}function C(a){return a.replace(/^\.\/?/,"").replace(/\/$/,"")}function D(a){let b,c=(0,f.join)(a,"tsconfig.json");if(!(0,d.existsSync)(c))return[];try{b=function(a){try{return JSON.parse(a)}catch{}return JSON.parse(a.replace(/\/\*[^"]*?\*\//g,"").replace(/(^|[^:"])\/\/.*$/gm,"$1").replace(/,\s*([}\]])/g,"$1"))}((0,d.readFileSync)(c,"utf8"))}catch{return[]}let e=b.compilerOptions?.paths??{},g=C(b.compilerOptions?.baseUrl??"."),h=[];for(let[a,b]of Object.entries(e)){if(!a.endsWith("/*")||!b.length)continue;let c=b[0];if(!c.endsWith("/*"))continue;let d=a.slice(0,-1),e=[g,C(c.slice(0,-1))].filter(Boolean).join("/");h.push({from:d,to:e})}return h}function E(a){let b=(0,f.join)(a,"go.mod");if(!(0,d.existsSync)(b))return null;try{let a=/^\s*module\s+(\S+)/m.exec((0,d.readFileSync)(b,"utf8"));return a?a[1]:null}catch{return null}}function F(a){return a.split(/[\\/]/).join("/")}function G(a){if(1===a.length)return a[0];let b=a.map(a=>F(a).split("/")),c=b[0],d=0;for(;d<c.length&&b.every(a=>a[d]===c[d]);d++);return c.slice(0,d).join("/")||"/"}async function H(a,b,c){let d=(Array.isArray(a)?a:[a]).map(a=>F((0,f.resolve)(a))),g=F(b?(0,f.resolve)(b):1===d.length?d[0]:G(d)),h=new Map,i=[];for(let a of d){let b=F((0,f.relative)(g,a));for(let c of D(a))i.push({from:c.from,to:[b,c.to].filter(Boolean).join("/")});for(let d of(await B(a,c))){let i=F((0,f.join)(a,d)),j=F((0,f.relative)(g,i));if(!h.has(j)){try{let a=await (0,e.stat)(i);h.set(j,{path:j,abs:i,root:b||null,mtimeMs:a.mtimeMs,size:a.size})}catch{}await c()}}}let j=d.map(E).find(Boolean)??E(g);return{metas:[...h.values()].sort((a,b)=>a.path.localeCompare(b.path)),ctx:{fileSet:new Set(h.keys()),tsAliases:i,goModulePath:j}}}async function I(a){let b=w(a.path);if(!b||a.size>2e5)return new Set;try{let c=await (0,e.readFile)(a.abs,"utf8");if(function(a){let b=0;for(let c=0;c<a.length;c++)if(10===a.charCodeAt(c)){if(c-b>5e4)return!0;b=c+1}return a.length-b>5e4}(c))return new Set;return b.specifiers(c)}catch{return new Set}}function J(a,b){let c=(Array.isArray(a)?a:[a]).map(a=>F((0,f.resolve)(a))),d=F(b?(0,f.resolve)(b):1===c.length?c[0]:G(c)),g=new Map,h=new Map,i=[],j=null;function k(){let a={fileSet:new Set(g.keys()),tsAliases:i,goModulePath:j},b=[...g.values()].sort((a,b)=>a.path.localeCompare(b.path)),c=[];for(let d of b){let b=w(d.path);if(!b)continue;let e=h.get(d.path)??new Set,f=new Set;for(let g of e)for(let e of b.resolve(g,d.path,a))!e||e===d.path||f.has(e)||(f.add(e),c.push({from:d.path,to:e}))}return{files:b.map(a=>{var b;let c;return{path:a.path,lang:(b=a.path,c=(0,f.extname)(b).toLowerCase(),u.has(c)?v[c]??c.slice(1):null),root:a.root,mtimeMs:a.mtimeMs,size:a.size}}),edges:c}}return{seed:async function(){let c=function(a=5){let b=performance.now();return async()=>{performance.now()-b>a&&(await new Promise(a=>setImmediate(a)),b=performance.now())}}(),{metas:d,ctx:e}=await H(a,b,c);for(let a of(g.clear(),h.clear(),d))await c(),g.set(a.path,a),h.set(a.path,await I(a));return i=e.tsAliases??[],j=e.goModulePath??null,k()},applyChange:async function(a){let b,k=F((0,f.resolve)(a));if(!c.some(a=>k===a||k.startsWith(`${a}/`)))return!1;let l=k.split("/").pop()??"";if("tsconfig.json"===l||"go.mod"===l){let a=k.slice(0,k.length-l.length-1);if(c.includes(a)){for(let a of(i=[],c)){let b=F((0,f.relative)(d,a));for(let c of D(a))i.push({from:c.from,to:[b,c.to].filter(Boolean).join("/")})}return j=c.map(E).find(Boolean)??E(d),!0}return!1}let m=function(a){let b=F((0,f.resolve)(a));for(let a of c)if(b===a||b.startsWith(`${a}/`)){if(function(a){let b=a.split("/");for(let a=0;a<b.length;a++){let c=b[a];if(!c||c.startsWith(".")||a<b.length-1&&y.has(c))return!0}let c=b[b.length-1];return!!c.endsWith(".d.ts")||!x().has((0,f.extname)(c).toLowerCase())}(b.slice(a.length).replace(/^\/+/,"")))return null;return{path:F((0,f.relative)(d,b)),root:F((0,f.relative)(d,a))||null}}return null}(a);if(!m)return!1;try{b=await (0,e.stat)(k)}catch{let a=g.delete(m.path);return h.delete(m.path),a}let n=g.get(m.path);if(n&&n.mtimeMs===b.mtimeMs&&n.size===b.size)return!1;let o={path:m.path,abs:k,root:m.root,mtimeMs:b.mtimeMs,size:b.size};return g.set(m.path,o),h.set(m.path,await I(o)),!0},snapshot:k}}},15456:(a,b,c)=>{c.d(b,{q:()=>f});var d=c(73024),e=c(76760);function f(a,b,c=!1){var g=JSON.stringify(b,null,c?2:void 0);(0,d.mkdirSync)((0,e.dirname)(a),{recursive:!0});let h=`${a}.tmp`;try{(0,d.writeFileSync)(h,g),(0,d.renameSync)(h,a)}catch(a){throw(0,d.rmSync)(h,{force:!0}),a}}},24302:(a,b,c)=>{c.d(b,{I:()=>i,r:()=>h});let d=/(^|\/)app\/.*\/route\.(ts|tsx|js|jsx|mjs)$/,e=/\.(ts|py)$/,f=/(schema|model)/i,g=/(\.(test|spec)\.[jt]sx?$)|(^|\/)(tests?|__tests__|__mocks__)\/|(^|\/)test_[^/]+\.py$|_test\.py$/;function h(a){return!g.test(a)&&(!!(a.endsWith(".prisma")||d.test(a)||a.endsWith(".java"))||e.test(a)&&f.test(a))}function i(a,b=300){return a.filter(h).slice(0,b)}},28019:(a,b,c)=>{c.d(b,{LT:()=>d,ez:()=>l,kq:()=>j,mn:()=>e,uQ:()=>k});let d=320;function e(a){return 36+30*Math.max(0,a)+16}let f=2560,g=a=>(a??"").trim()||"—";function h(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 i=(a,b)=>a.path.localeCompare(b.path)||a.method.localeCompare(b.method)||a.id.localeCompare(b.id);function j(a,b){let c=h(a,b),j=new Map,k=[];for(let a of[...b].sort(i)){let b=c.get(a.id)??null;if(b){let c=j.get(b);c?c.push(a):j.set(b,[a])}else k.push(a)}let l=a=>{let b=j.get(a.id)?.length??0;return e(a.columnCount)+(b?14+60*b:0)+50},m=Array.from(new Set(a.map(a=>g(a.domain)))),n=m.filter(a=>"—"!==a).sort(),o=m.includes("—")?[...n,"—"]:n,p=[];for(let b of o){let c=a.filter(a=>g(a.domain)===b).sort((a,b)=>a.name.localeCompare(b.name)),e=c.reduce((a,b)=>a+l(b),0),f=Math.max(1,Math.min(12,c.length,Math.round(Math.sqrt(e/d)))),h=Array(f).fill(0),i=new Map;for(let a of c){let b=0;for(let a=1;a<f;a++)h[a]<h[b]&&(b=a);i.set(a.id,{x:b*d,y:h[b]}),h[b]+=l(a)}p.push({d:b,w:f*d,h:Math.max(...h,0),tableLocal:i})}let q=Math.max(f,Math.round(Math.sqrt(2.2*p.reduce((a,b)=>a+(b.w+120)*(b.h+170),0)))),r=new Map,s=new Map,t=0,u=0,v=0,w=0;for(let b of p){for(let c of(t>0&&t+b.w>q&&(u+=v+170,t=0,v=0),a.filter(a=>b.tableLocal.has(a.id)))){let a=b.tableLocal.get(c.id),d=t+a.x,f=u+a.y;r.set(c.id,{x:d,y:f}),(j.get(c.id)??[]).forEach((a,b)=>{s.set(a.id,{x:d,y:f+e(c.columnCount)+14+60*b})})}v=Math.max(v,b.h),w=Math.max(w,u+b.h),t+=b.w+120}if(k.length){let a=w+170,b=Math.max(1,Math.min(4,Math.ceil(Math.sqrt(k.length/2))));k.forEach((c,d)=>{s.set(c.id,{x:d%b*280,y:a+60*Math.floor(d/b)})})}return{tables:r,endpoints:s}}function k(a,b,c){let f=h(b,c),i=new Map;for(let a of c){let b=f.get(a.id);b&&i.set(b,(i.get(b)??0)+1)}let j=a=>{let b=i.get(a.id)??0;return a.y+e(a.columnCount)+(b?14+60*b:0)},k=g(a.domain),l=b.filter(a=>g(a.domain)===k);if(!l.length){let a=b.length?Math.max(...b.map(j),...c.map(a=>a.y+60)):0;return{x:0,y:b.length||c.length?a+170:0}}let m=Math.min(...l.map(a=>a.x)),n=l.map(a=>Math.max(0,Math.round((a.x-m)/d))),o=Math.min(12,Math.max(...n)+1),p=Array(o).fill(Math.min(...l.map(a=>a.y)));l.forEach((a,b)=>{let c=Math.min(n[b],o-1);p[c]=Math.max(p[c],j(a)+50)});let q=0;for(let a=1;a<o;a++)p[a]<p[q]&&(q=a);return{x:m+q*d,y:p[q]}}function l(a,b,c){let d=h(b,[...c,a]),f=d.get(a.id),g=f?b.find(a=>a.id===f):void 0;if(g){let a=c.filter(a=>d.get(a.id)===g.id),b=g.y+e(g.columnCount)+14,f=a.length?Math.max(...a.map(a=>a.y))+60:b;return{x:g.x,y:f}}let i=[...b.map(a=>a.y+e(a.columnCount)),...c.map(a=>a.y+60)];return{x:0,y:i.length?Math.max(...i)+170:0}}},32933:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{startWorkspaceWatchers:()=>i});var e=c(73024),f=c(60455),g=c(98919),h=a([g]);g=(h.then?(await h)():h)[0];let j=function(a){let b=a.limit??6,c=a.hardCap??12,d=new Map,e=0,f=new Set;function g(a){let b=d.get(a);b&&(b.seq=++e)}async function h(a){let b=d.get(a);b&&(d.delete(a),await b.handle.stop())}async function i(){await Promise.all([...d.values()].map(a=>a.handle.stop())),d.clear()}return{reconcile:function(){let c=a.list().filter(b=>a.exists(b.path)).slice(0,b);for(let b of(f=new Set(c.map(a=>a.id)),c))!function(b){if(d.has(b.id))return g(b.id);a.exists(b.path)&&d.set(b.id,{handle:a.start(b),seq:++e})}(b);for(let[b,c]of[...d]){let e=a.get(b);e&&a.exists(e.path)||(c.handle.stop(),d.delete(b))}},ensureWatcher:function(b){if(d.has(b))return g(b);let h=a.get(b);h&&a.exists(h.path)&&(d.size>=c&&function(){let a=null,b=1/0;for(let[c,e]of d)!f.has(c)&&e.seq<b&&(b=e.seq,a=c);a&&(d.get(a).handle.stop(),d.delete(a))}(),d.size>=c||d.set(b,{handle:a.start(h),seq:++e}))},stopWatcher:h,isWatching:function(a){return d.has(a)},activeIds:function(){return[...d.keys()]},stopAll:i}}({list:f.Y2,get:f.K4,exists:e.existsSync,start:a=>(0,g.F)(a)}),k=null;function i(){"1"!==process.env.BEACON_NO_INLINE_WATCH&&(j.reconcile(),k||(k=setInterval(()=>j.reconcile(),3e4),k.unref?.()))}d()}catch(a){d(a)}})},52729:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{ER:()=>n,Rm:()=>m,cL:()=>l});var e=c(96904),f=c(12839),g=c(74378),h=c(99121),i=c(62313),j=a([g,i]);[g,i]=j.then?(await j)():j;let o=e.Ik({files:e.YO(e.Ik({path:e.Yj().trim().min(1),root:e.Yj().nullish(),lang:e.Yj().nullish(),mtimeMs:e.ai().nullish(),size:e.ai().nullish()})).default([]),edges:e.YO(e.Ik({from:e.Yj().trim().min(1),to:e.Yj().trim().min(1)})).default([])});function k(a,b){let c=new Map;for(let b of a)c.set(b,[]);for(let a of b)c.get(a.from)?.push(a.to);let d=new Map,e=new Map,f=new Set,g=[],h=new Map,i=[],j=0,k=0;for(let b of a){if(d.has(b))continue;let a=[{v:b,iter:0}];for(d.set(b,j),e.set(b,j),j++,g.push(b),f.add(b);a.length;){let b=a[a.length-1],l=c.get(b.v)??[];if(b.iter<l.length){let c=l[b.iter++];d.has(c)?f.has(c)&&e.set(b.v,Math.min(e.get(b.v),d.get(c))):(d.set(c,j),e.set(c,j),j++,g.push(c),f.add(c),a.push({v:c,iter:0}))}else{if(e.get(b.v)===d.get(b.v)){let a,c=0;do a=g.pop(),f.delete(a),h.set(a,k),c++;while(a!==b.v);i.push(c),k++}a.pop();let c=a[a.length-1];c&&e.set(c.v,Math.min(e.get(c.v),e.get(b.v)))}}}let l=new Set;for(let a of b){let b=h.get(a.from);void 0!==b&&b===h.get(a.to)&&i[b]>1&&l.add(`${a.from}|${a.to}`)}return l}async function l(a,b=g.db){let c=o.parse(a),d=c.files.map(a=>a.path),e=new Set(d),j=c.edges.filter(a=>e.has(a.from)&&e.has(a.to)&&a.from!==a.to),m=k(d,j),n=new Map,p=new Map;for(let a of j)p.set(a.from,(p.get(a.from)??0)+1),n.set(a.to,(n.get(a.to)??0)+1);for(let a of(await b.delete(h.codeFile).where((0,f.KL)(h.codeFile.path,d)),c.files)){let c={root:a.root??null,lang:a.lang??null,mtimeMs:a.mtimeMs??null,size:a.size??null,inDegree:n.get(a.path)??0,outDegree:p.get(a.path)??0};await b.insert(h.codeFile).values({path:a.path,...c}).onConflictDoUpdate({target:h.codeFile.path,set:c})}await b.delete(h.codeFileEdge);let q=0;j.length&&await b.insert(h.codeFileEdge).values(j.map(a=>{let b=m.has(`${a.from}|${a.to}`);return b&&q++,{fromPath:a.from,toPath:a.to,circular:b}}));let r=await (0,i.Bx)(b);return await b.update(h.syncState).set({codeGraphSyncedAt:new Date}).where((0,f.eq)(h.syncState.id,"singleton")),{files:c.files.length,edges:j.length,circular:q,version:r}}let p=(a,b)=>`${a}\0${b}`;function m(a){let b=o.parse(a),c=b.files.map(a=>a.path),d=new Set(c),e=b.edges.filter(a=>d.has(a.from)&&d.has(a.to)&&a.from!==a.to),f=k(c,e),g=new Map,h=new Map;for(let a of e)h.set(a.from,(h.get(a.from)??0)+1),g.set(a.to,(g.get(a.to)??0)+1);let i=new Map;for(let a of b.files)i.set(a.path,{root:a.root??null,lang:a.lang??null,mtimeMs:a.mtimeMs??null,size:a.size??null,inDegree:g.get(a.path)??0,outDegree:h.get(a.path)??0});let j=new Map;for(let a of e)j.set(p(a.from,a.to),{from:a.from,to:a.to,circular:f.has(`${a.from}|${a.to}`)});return{files:i,edges:j}}let q=(a,b)=>a.root===b.root&&a.lang===b.lang&&a.mtimeMs===b.mtimeMs&&a.size===b.size&&a.inDegree===b.inDegree&&a.outDegree===b.outDegree;async function n(a,b,c=g.db){for(let[d,e]of b.files){let b=a.files.get(d);if(b&&q(b,e))continue;let f={root:e.root,lang:e.lang,mtimeMs:e.mtimeMs,size:e.size,inDegree:e.inDegree,outDegree:e.outDegree};await c.insert(h.codeFile).values({path:d,...f}).onConflictDoUpdate({target:h.codeFile.path,set:f})}let d=[...a.files.keys()].filter(a=>!b.files.has(a));for(let[e,g]of(d.length&&await c.delete(h.codeFile).where((0,f.RV)(h.codeFile.path,d)),a.edges))b.edges.has(e)||await c.delete(h.codeFileEdge).where((0,f.Uo)((0,f.eq)(h.codeFileEdge.fromPath,g.from),(0,f.eq)(h.codeFileEdge.toPath,g.to)));let e=[];for(let[d,g]of b.edges){let b=a.edges.get(d);b?b.circular!==g.circular&&await c.update(h.codeFileEdge).set({circular:g.circular}).where((0,f.Uo)((0,f.eq)(h.codeFileEdge.fromPath,g.from),(0,f.eq)(h.codeFileEdge.toPath,g.to))):e.push({fromPath:g.from,toPath:g.to,circular:g.circular})}e.length&&await c.insert(h.codeFileEdge).values(e);let j=await (0,i.Bx)(c);await c.update(h.syncState).set({codeGraphSyncedAt:new Date}).where((0,f.eq)(h.syncState.id,"singleton"));let k=0;for(let a of b.edges.values())a.circular&&k++;return{files:b.files.size,edges:b.edges.size,circular:k,version:j}}d()}catch(a){d(a)}})},57074:(a,b,c)=>{c.d(b,{v4:()=>e});var d=c(28019);function e(a){let b=d.LT-20;for(let c=0;c<a.length;c++)for(let e=c+1;e<a.length;e++){let f=a[c],g=a[e],h=(0,d.mn)(f.columnCount),i=(0,d.mn)(g.columnCount);if(f.x<g.x+b&&f.x+b>g.x&&f.y<g.y+i&&f.y+h>g.y)return!0}return!1}},59314:(a,b,c)=>{c.d(b,{$:()=>e});let d=["GET","POST","PUT","PATCH","DELETE"];function e(a){let b=[];for(let c of a){let a=function(a){let b=a.match(/(?:^|\/)app\/(.+)\/route\.(?:ts|tsx|js|jsx|mjs)$/);if(!b)return null;let c=b[1].split("/").filter(a=>!(a.startsWith("(")&&a.endsWith(")"))).map(a=>{let b=a.match(/^\[{1,2}(?:\.\.\.)?([^\]]+)\]{1,2}$/);return b?`{${b[1]}}`:a});return"api"!==c[0]?null:`/${c.join("/")}`}(c.path);if(a)for(let e of d)RegExp(`export\\s+(?:async\\s+)?(?:function|const)\\s+${e}\\b`).test(c.content)&&b.push({method:e,path:a,uses:[],file:c.path})}return b.sort((a,b)=>`${a.path} ${a.method}`.localeCompare(`${b.path} ${b.method}`))}},61926:(a,b,c)=>{function d(a,b){if(/_JSON_OR_JSONB|\bJSONB\b|\bJSON\b/.test(a))return"jsonb";let c=a.match(/\b(GUID|Uuid|UUID|String|Text|DateTime|Date|Time|BigInteger|SmallInteger|Integer|Boolean|Float|Numeric|Decimal|Vector|TSVECTOR|LargeBinary|Enum)\b\s*(\([^)]*\))?/);if(c){let a=c[2]??"",b=a.match(/\d+/)?.[0];switch(c[1]){case"GUID":case"Uuid":case"UUID":return"uuid";case"String":return b?`varchar(${b})`:"varchar";case"Text":return"text";case"DateTime":return/timezone\s*=\s*True/.test(a)?"timestamptz":"timestamp";case"Date":return"date";case"Time":return"time";case"BigInteger":return"bigint";case"SmallInteger":return"smallint";case"Integer":return"integer";case"Boolean":return"boolean";case"Float":return"float";case"Numeric":case"Decimal":return"numeric";case"Vector":return b?`vector(${b})`:"vector";case"TSVECTOR":return"tsvector";case"LargeBinary":return"bytea";case"Enum":return"varchar"}}let d=b.replace(/\s*\|\s*None/g,"").trim(),e=d.match(/^Optional\[([\s\S]*)\]$/);return(e&&(d=e[1].trim()),/uuid/i.test(d))?"uuid":/datetime/i.test(d)?"timestamptz":/\bint\b/i.test(d)?"integer":/\bbool\b/i.test(d)?"boolean":/\bfloat\b/.test(d)&&!/\blist\b/.test(d)?"float":/\bdict\b|\blist\b|\bAny\b/.test(d)?"jsonb":"text"}function e(a,b){let c=0;for(let d=b;d<a.length;d++)if("("===a[d])c++;else if(")"===a[d]&&0==--c)return a.slice(b+1,d);return""}c.d(b,{Y:()=>k});let f={long:"bigint",Long:"bigint",BigInteger:"bigint",int:"integer",Integer:"integer",short:"smallint",Short:"smallint",String:"varchar",char:"varchar",Character:"varchar",boolean:"boolean",Boolean:"boolean",UUID:"uuid",BigDecimal:"numeric",double:"double",Double:"double",float:"float",Float:"float",LocalDate:"date",LocalDateTime:"timestamp",Instant:"timestamp",Timestamp:"timestamp",Date:"timestamp",OffsetDateTime:"timestamptz",ZonedDateTime:"timestamptz",LocalTime:"time"},g=/^(List|Set|Map|Collection|Iterable)$/;function h(a){return/byte\s*\[\s*\]/.test(a)?"byte[]":(a.replace(/<.*>/,"").trim().split(".").pop()??a).trim()}function i(a,b){return a.match(RegExp(`\\b${b}\\s*=\\s*"([^"]*)"`))?.[1]}function j(a,b){let c=a.match(RegExp(`\\b${b}\\s*=\\s*(true|false)`));return c?"true"===c[1]:void 0}function k(a){let b=function(a){let b=[],c=/(\w+)\s*:\s*(text|integer|real|blob|numeric|varchar|boolean|timestamp|serial|uuid|json|jsonb)\s*\(/g;for(let d of a){let a;if(!/\.(ts|tsx|mts|cts)$/.test(d.path)||!/\b(?:sqliteTable|pgTable|mysqlTable)\s*\(/.test(d.content))continue;let f=/(?:export\s+)?const\s+(\w+)\s*=\s*(?:sqliteTable|pgTable|mysqlTable)\s*\(\s*["']([^"']+)["']\s*,/g;for(;a=f.exec(d.content);){let f=d.content.indexOf("{",a.index+a[0].length);if(f<0)continue;let g=function(a,b){let c=0;for(let d=b;d<a.length;d++)if("{"===a[d])c++;else if("}"===a[d]&&0==--c)return a.slice(b+1,d);return""}(d.content,f),h={varName:a[1],tableName:a[2],columns:[],colByProp:new Map,fks:[]},i=[];for(let a of(c.lastIndex=0,g.matchAll(c)))i.push({prop:a[1],builder:a[2],at:a.index,argOpen:a.index+a[0].length-1});i.forEach((a,b)=>{var c;let d=g.slice(a.at,i[b+1]?.at??g.length),f=e(g,a.argOpen),j=f.match(/^\s*["']([^"']+)["']/)?.[1]??a.prop,k=d.match(/\.references\(\s*\(\)\s*=>\s*(\w+)\.(\w+)/);h.columns.push({name:j,type:(c=a.builder,/mode:\s*["']timestamp/.test(f)?"timestamp":/mode:\s*["']boolean["']/.test(f)?"boolean":/mode:\s*["']json["']/.test(f)?"jsonb":c),isPk:/\.primaryKey\(\)/.test(d)||void 0,isFk:!!k||void 0,nullable:!/\.notNull\(\)/.test(d)}),h.colByProp.set(a.prop,j),k&&h.fks.push({column:j,toVar:k[1],toProp:k[2]})}),b.push(h)}}if(!b.length)return{tables:[],relations:[]};let d=new Map(b.map(a=>[a.varName,a])),f=[];for(let a of b)for(let b of a.fks){let c=d.get(b.toVar);c&&f.push({fromTable:a.tableName,fromColumn:b.column,toTable:c.tableName,toColumn:c.colByProp.get(b.toProp)??b.toProp})}return{tables:b.map(a=>({name:a.tableName,columns:a.columns})),relations:f,tableVars:Object.fromEntries(b.map(a=>[a.varName,a.tableName]))}}(a);if(b.tables.length)return b;let c=function(a){let b=[],c=[];for(let d of a){let a;if(!d.path.endsWith(".prisma"))continue;let e=/model\s+(\w+)\s*\{([\s\S]*?)\}/g;for(;a=e.exec(d.content);){let d=a[1],e=a[2].match(/@@map\(\s*["']([^"']+)["']\s*\)/)?.[1]??d,f=[];for(let b of a[2].split("\n")){let a=b.trim().match(/^(\w+)\s+(\w+(?:\[\])?\??)\s*(.*)$/);if(!a||/^@@/.test(b.trim()))continue;let[,d,g,h]=a,i=/^(String|Int|BigInt|Float|Decimal|Boolean|DateTime|Json|Bytes)(\[\])?\??$/.test(g),j=h.match(/@relation\([^)]*fields:\s*\[(\w+)\][^)]*references:\s*\[(\w+)\]/);j&&c.push({fromTable:e,fromColumn:j[1],toTable:g.replace(/[?[\]]/g,""),toColumn:j[2]}),i&&f.push({name:d,type:function(a){let b=a.replace(/[?[\]]/g,"");return({String:"text",Int:"integer",BigInt:"bigint",Float:"float",Decimal:"numeric",Boolean:"boolean",DateTime:"timestamptz",Json:"jsonb",Bytes:"bytea"})[b]??b.toLowerCase()}(g),isPk:/@id\b/.test(h)||void 0,isFk:/@relation\b/.test(h)||void 0,nullable:g.endsWith("?")})}f.length&&b.push({name:e,columns:f})}}return{tables:b,relations:c}}(a);if(c.tables.length)return c;let k=function(a){let b=new Map,c=[],f=[];for(let g of a){let a;if(!g.path.endsWith(".py")||!/mapped_column\s*\(|__tablename__|\bTable\s*\(\s*["']/.test(g.content))continue;let h=function(a){let b,c=[],f=[],g=/\bTable\s*(\()\s*["']([^"']+)["']\s*,/g;for(;b=g.exec(a);){let g,h=b[2],i=e(a,b.index+b[0].indexOf("("));if(!/\bmetadata\b/.test(i)||!/\bColumn\s*\(/.test(i))continue;let j=[],k=/\bColumn\s*\(/g;for(;g=k.exec(i);){let a=e(i,g.index+g[0].length-1),b=a.match(/^\s*["'](\w+)["']\s*,/)?.[1];if(!b)continue;let c=/primary_key\s*=\s*True/.test(a)||void 0,k=!/nullable\s*=\s*False/.test(a),l=a.match(/ForeignKey\(\s*["']([^"']+?)\.([^"'.]+)["']/);j.push({name:b,type:d(a,""),isPk:c,isFk:!!l||void 0,nullable:k}),l&&f.push({fromTable:h,fromColumn:b,toTable:l[1],toColumn:l[2]})}j.length&&c.push({name:h,columns:j})}return{tables:c,relations:f}}(g.content);c.push(...h.tables),f.push(...h.relations);let i=/^class\s+(\w+)\s*\(([^)]*)\)\s*:/gm,j=[];for(;a=i.exec(g.content);)j.push({name:a[1],bases:a[2].split(",").map(a=>a.trim().split(/[.[]/)[0]).filter(Boolean),at:a.index});for(let a=0;a<j.length;a++){let c=g.content.slice(j[a].at,j[a+1]?.at??g.content.length),f=function(a,b,c){let f,g=c.match(/__tablename__\s*=\s*["']([^"']+)["']/)?.[1],h=[],i=[],j=[],k=/(\w+)\s*:\s*Mapped\s*\[/g;for(;f=k.exec(c);){let a=f.index+f[0].length-1,b=function(a,b){let c=0;for(let d=b;d<a.length;d++)if("["===a[d])c++;else if("]"===a[d]&&0==--c)return a.slice(b+1,d);return null}(c,a);if(null===b)continue;let d=a+b.length+2,e=c.slice(d).match(/^\s*=\s*(\w+)\s*\(/);e&&"mapped_column"===e[1]&&j.push({colName:f[1],pyType:b,argsAt:d+e[0].length-1})}let l=/(\w+)\s*=\s*(mapped_column|Column)\s*\(/g;for(;f=l.exec(c);)j.push({colName:f[1],pyType:"",argsAt:f.index+f[0].length-1});j.sort((a,b)=>a.argsAt-b.argsAt);let m=new Set;for(let a of j){if(m.has(a.colName)||"__tablename__"===a.colName)continue;m.add(a.colName);let b=e(c,a.argsAt),f=/primary_key\s*=\s*True/.test(b)||void 0,g=!/nullable\s*=\s*False/.test(b),j=b.match(/ForeignKey\(\s*["']([^"']+?)\.([^"'.]+)["']/);h.push({name:a.colName,type:d(b,a.pyType),isPk:f,isFk:!!j||void 0,nullable:g}),j&&i.push({column:a.colName,toTable:j[1],toColumn:j[2]})}return{name:a,bases:b,tableName:g,columns:h,fks:i}}(j[a].name,j[a].bases,c);b.set(f.name,f)}}if(![...b.values()].some(a=>a.tableName)&&!c.length)return{tables:[],relations:[]};let g=(a,c=new Set)=>{if(c.has(a.name))return[];c.add(a.name);let d=[];for(let e of a.bases){let a=b.get(e);a&&!a.tableName&&d.push(...g(a,c))}return d.push(...a.columns),d},h=[],i=[];for(let a of b.values()){if(!a.tableName)continue;let b=g(a),c=new Map;for(let a of b)c.has(a.name)||c.set(a.name,a);let d=[...c.values()],e=a=>d.splice(d.findIndex(b=>b.name===a),1)[0],f=d.some(a=>"id"===a.name)?e("id"):null,j=["created_at","updated_at","deleted_at"].filter(a=>d.some(b=>b.name===a)).map(a=>e(a));for(let b of(h.push({name:a.tableName,columns:[...f?[f]:[],...d,...j]}),a.fks))i.push({fromTable:a.tableName,fromColumn:b.column,toTable:b.toTable,toColumn:b.toColumn})}let j=new Set(h.map(a=>a.name));for(let a of c)j.has(a.name)||h.push(a);return i.push(...f.filter(a=>!j.has(a.fromTable))),{tables:h,relations:i}}(a);return k.tables.length?k:function(a){let b=a.filter(a=>a.path.endsWith(".java")&&/@Entity\b/.test(a.content));if(!b.length)return{tables:[],relations:[]};let c=b.flatMap(a=>(function(a){let b,c=[],d=/\bclass\s+(\w+)/g;for(;b=d.exec(a);)c.push({name:b[1],at:b.index});let e=[];for(let b=0;b<c.length;b++){let d=a.slice(0===b?0:c[b-1].at,c[b].at);if(!/@Entity\b/.test(d))continue;let f=i(d.match(/@Table\s*\([^)]*\)/)?.[0]??"","name")??c[b].name,g=function(a){let b=[],c=[];for(let d of a.split("\n")){let a=d.trim();if(!a||a.startsWith("//")||a.startsWith("*")||a.startsWith("/*"))continue;let{annots:e,rest:f}=function(a){let b,c=[],d=a;for(;b=d.match(/^@[\w.]+(\([^)]*\))?\s*/);)c.push(d.slice(0,b[0].length).trim()),d=d.slice(b[0].length);return{annots:c,rest:d.trim()}}(a);if(c.push(...e),!f)continue;let g=f,h="";for(;g!==h;)h=g,g=g.replace(/^(?:public|private|protected|static|final|transient|volatile)\s+/,"");let i=g.includes("(")?null:g.match(/^([\w.$]+(?:<[^>]*>)?(?:\s*\[\s*\])?)\s+(\w+)\s*[;=]/);i&&b.push({annots:c,type:i[1],name:i[2]}),c=[]}return b}(a.slice(c[b].at,c[b+1]?.at??a.length)),h=g.find(a=>a.annots.some(a=>/@Id\b/.test(a))),j=h?i(h.annots.find(a=>/@Column\b/.test(a))??"","name")??h.name:"id";e.push({className:c[b].name,tableName:f,idColumn:j,fields:g})}return e})(a.content));if(!c.length)return{tables:[],relations:[]};let d=new Map(c.map(a=>[a.className,a.tableName])),e=new Map(c.map(a=>[a.className,a.idColumn])),k=[],l=[];for(let a of c){let b=[];for(let c of a.fields){let k=c.annots.join(" ");if(/@Transient\b/.test(k))continue;let m=h(c.type);if(/@ManyToOne\b|@OneToOne\b|@OneToMany\b|@ManyToMany\b/.test(k)||d.has(m)){let f=c.annots.find(a=>/@JoinColumn\b/.test(a)),g=f?i(f,"name"):void 0;if(g){b.push({name:g,type:"bigint",isFk:!0,nullable:j(k,"nullable")??!0});let c=d.get(m);c&&l.push({fromTable:a.tableName,fromColumn:g,toTable:c,toColumn:e.get(m)??"id"})}continue}if(g.test(m))continue;let n=c.annots.find(a=>/@Column\b/.test(a))??"",o=i(n,"name")??c.name,p=c.annots.some(a=>/@Id\b/.test(a)),q=j(n,"nullable");b.push({name:o,type:function(a){let b=h(a);return"byte[]"===b?"bytea":f[b]??b.toLowerCase()}(c.type),...p?{isPk:!0}:{},...void 0!==q?{nullable:q}:{}})}k.push({name:a.tableName,columns:b})}return{tables:k,relations:l}}(a)}},62313:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Bx:()=>q,Rw:()=>r});var e=c(96904),f=c(65338),g=c(12839),h=c(74378),i=c(99121),j=c(4245),k=c(87005),l=c(76160),m=c(57074),n=c(28019),o=c(91860),p=a([h,j,k,l,o]);[h,j,k,l,o]=p.then?(await p)():p;let s=e.Ik({tables:e.YO(e.Ik({name:e.Yj().trim().min(1),domain:e.Yj().nullish(),description:e.Yj().nullish(),columns:e.YO(e.Ik({name:e.Yj().trim().min(1),type:e.Yj().trim().min(1),isPk:e.zM().optional(),isFk:e.zM().optional(),nullable:e.zM().optional(),note:e.Yj().nullish()})).default([])})).default([]),relations:e.YO(e.Ik({fromTable:e.Yj(),fromColumn:e.Yj(),toTable:e.Yj(),toColumn:e.Yj(),label:e.Yj().nullish()})).default([]),endpoints:e.YO(e.Ik({method:e.Yj().trim().min(1),path:e.Yj().trim().min(1),domain:e.Yj().nullish(),description:e.Yj().nullish(),uses:e.YO(e.Ik({table:e.Yj(),access:e.Yj().default("read")})).default([])})).default([])});async function q(a=h.db){let[b]=await a.insert(i.syncState).values({id:"singleton",version:1}).onConflictDoUpdate({target:i.syncState.id,set:{version:(0,f.ll)`${i.syncState.version} + 1`}}).returning();return b.version}async function r(a,b=h.db,c={}){let d=s.parse(a),e=d.tables.length>0,f=d.endpoints.length>0,p=d.tables.map(a=>a.name);e&&await b.delete(i.dbTable).where(p.length?(0,g.Uo)((0,g.eq)(i.dbTable.source,"INTROSPECTION"),(0,g.KL)(i.dbTable.name,p)):(0,g.eq)(i.dbTable.source,"INTROSPECTION"));let t=await b.query.dbTable.findMany({columns:{id:!0,name:!0,domain:!0,x:!0,y:!0},with:{columns:{columns:{id:!0}}}}),u=await b.query.endpoint.findMany({columns:{id:!0,method:!0,path:!0,x:!0,y:!0},with:{tables:{columns:{tableId:!0}}}}),v=new Map(t.map(a=>[a.name,a])),w=t.map(a=>({id:a.id,name:a.name,domain:a.domain,columnCount:a.columns.length,x:a.x,y:a.y})),x=u.map(a=>({id:a.id,method:a.method,path:a.path,uses:a.tables.map(a=>({tableId:a.tableId})),x:a.x,y:a.y})),y=new Map;for(let a of d.tables){if(v.has(a.name))continue;let b=(0,n.uQ)({domain:a.domain??null,columnCount:a.columns.length},w,x);y.set(a.name,b),w.push({id:`new:${a.name}`,name:a.name,domain:a.domain??null,columnCount:a.columns.length,...b})}let z=new Map;for(let a of d.tables){let c=v.get(a.name),d=y.get(a.name),e=c?.x??d?.x??0,f=c?.y??d?.y??0,[h]=await b.insert(i.dbTable).values({name:a.name,domain:a.domain??null,description:a.description??null,source:"INTROSPECTION",x:e,y:f}).onConflictDoUpdate({target:i.dbTable.name,set:{...null!=a.domain?{domain:a.domain}:{},...null!=a.description?{description:a.description}:{},source:"INTROSPECTION"}}).returning();z.set(a.name,h.id),await b.delete(i.dbColumn).where((0,g.eq)(i.dbColumn.tableId,h.id)),a.columns.length&&await b.insert(i.dbColumn).values(a.columns.map((a,b)=>({tableId:h.id,name:a.name,type:a.type,isPk:a.isPk??!1,isFk:a.isFk??!1,nullable:a.nullable??!0,note:a.note??null,ord:b})))}let A=[...z.values()];for(let a of(A.length&&await b.delete(i.dbRelation).where((0,g.or)((0,g.RV)(i.dbRelation.fromTableId,A),(0,g.RV)(i.dbRelation.toTableId,A))),d.relations)){let c=z.get(a.fromTable),d=z.get(a.toTable);c&&d&&await b.insert(i.dbRelation).values({fromTableId:c,toTableId:d,fromColumn:a.fromColumn,toColumn:a.toColumn,label:a.label??`${a.fromColumn} → ${a.toTable}.${a.toColumn}`})}let B=new Set(d.endpoints.map(a=>`${a.method} ${a.path}`));if(f){let a=(await b.query.endpoint.findMany({where:(a,{eq:b})=>b(a.source,"INTROSPECTION")})).filter(a=>!B.has(`${a.method} ${a.path}`)).map(a=>a.id);a.length&&await b.delete(i.endpoint).where((0,g.RV)(i.endpoint.id,a))}for(let a of w)a.id.startsWith("new:")&&(a.id=z.get(a.name)??a.id);for(let a of d.endpoints){let d,e,f=await b.query.endpoint.findFirst({where:(b,{and:c,eq:d})=>c(d(b.method,a.method),d(b.path,a.path))});if(f)d=f.x,e=f.y;else{let b={id:`new:${a.method} ${a.path}`,method:a.method,path:a.path,uses:a.uses.map(a=>({tableId:z.get(a.table)??""})).filter(a=>a.tableId)},c=(0,n.ez)(b,w,x);d=c.x,e=c.y,x.push({...b,x:d,y:e})}let[h]=await b.insert(i.endpoint).values({method:a.method,path:a.path,domain:a.domain??null,description:a.description??null,source:"INTROSPECTION",x:d,y:e}).onConflictDoUpdate({target:[i.endpoint.method,i.endpoint.path],set:{...null!=a.domain?{domain:a.domain}:{},...null!=a.description?{description:a.description}:{},source:"INTROSPECTION"}}).returning();for(let d of((!c.partial||a.uses.length>0)&&await b.delete(i.endpointTable).where((0,g.eq)(i.endpointTable.endpointId,h.id)),a.uses)){let a=z.get(d.table)??(await b.query.dbTable.findFirst({where:(a,{eq:b})=>b(a.name,d.table)}))?.id;a&&await b.insert(i.endpointTable).values({endpointId:h.id,tableId:a,access:d.access})}}await (0,k.X)(b),await (0,l.q)(b);let C=await b.query.dbTable.findMany({where:(a,{eq:b})=>b(a.source,"INTROSPECTION"),columns:{x:!0,y:!0},with:{columns:{columns:{id:!0}}}}),D=await b.select({x:i.endpoint.x,y:i.endpoint.y}).from(i.endpoint);((0,m.v4)(C.map(a=>({x:a.x,y:a.y,columnCount:a.columns.length})))||(0,j.i)(D))&&await (0,o.r)(b);let E=await q(b);return{tables:d.tables.length,relations:d.relations.length,endpoints:d.endpoints.length,version:E}}d()}catch(a){d(a)}})},67114:(a,b,c)=>{c(73024),c(76760),c(31421),c(77598),c(48161),c(60455),c(15456)},75332:(a,b,c)=>{c.d(b,{R:()=>d});function d(a){let b=Object.keys(a.tableVars),c=new Map;if(!b.length){for(let b of a.routeFiles)c.set(b,[]);return c}let d=new Map;for(let b of a.edges){let a=d.get(b.from)??[];a.push(b.to),d.set(b.from,a)}let e=new Map(b.map(a=>[a,RegExp(`(?:query\\.${a}\\b|\\.from\\(\\s*${a}\\b)`)])),f=new Map(b.map(a=>[a,RegExp(`(?:insert|update|delete)\\(\\s*${a}\\b`)]));for(let g of a.routeFiles){let h=new Set([g]),i=[g];for(let a=0;a<2&&h.size<25;a++){let a=[];for(let b of i)for(let c of d.get(b)??[])h.has(c)||h.size>=25||(h.add(c),a.push(c));i=a}let j=new Set,k=new Set;for(let c of h){let d=a.content(c);if(d)for(let a of b)!j.has(a)&&e.get(a).test(d)&&j.add(a),!k.has(a)&&f.get(a).test(d)&&k.add(a)}let l=[];for(let c of b){let b=j.has(c),d=k.has(c);(b||d)&&l.push({table:a.tableVars[c],access:b&&d?"read-write":d?"write":"read"})}c.set(g,l)}return c}},76160:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{q:()=>j});var e=c(12839),f=c(74378),g=c(99121),h=a([f]);f=(h.then?(await h)():h)[0];let k=new Set(["DONE","CANCELLED","DEPRIORITIZED"]);async function i(a){let b=await a.query.node.findMany({where:(a,{and:b,eq:c,isNotNull:d})=>b(c(a.view,"ROADMAP"),d(a.planId)),columns:{planId:!0,status:!0}}),c=new Map;for(let a of b){let b=a.planId;c.set(b,(c.get(b)??!0)&&k.has(a.status))}return[...c.entries()].filter(([,a])=>a).map(([a])=>a)}async function j(a=f.db){let b=await i(a),c=a=>b.length?(0,e.or)((0,e.kZ)(a.planId),(0,e.RV)(a.planId,b)):(0,e.kZ)(a.planId),d=await a.delete(g.dbTable).where((0,e.Uo)((0,e.ne)(g.dbTable.source,"INTROSPECTION"),c(g.dbTable))).returning({id:g.dbTable.id}),h=await a.delete(g.endpoint).where((0,e.Uo)((0,e.ne)(g.endpoint.source,"INTROSPECTION"),c(g.endpoint))).returning({id:g.endpoint.id});return{tables:d.length,endpoints:h.length}}d()}catch(a){d(a)}})},87005:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{X:()=>i});var e=c(12839),f=c(74378),g=c(99121),h=a([f]);async function i(a=f.db){let[b,c]=await Promise.all([a.query.endpoint.findMany({where:(a,{ne:b})=>b(a.source,"INTROSPECTION")}),a.query.endpoint.findMany({where:(a,{eq:b})=>b(a.source,"INTROSPECTION")})]),d={collapsed:0,mappings:[]};for(let f of b){let b=c.find(a=>(function(a,b){if(a.method.toUpperCase()!==b.method.toUpperCase())return!1;let c=a.path.replace(/\{[^}]*\}/g,"{}"),d=b.path.replace(/\{[^}]*\}/g,"{}");return d===c||d.endsWith(c)})(f,a));b&&(await a.delete(g.endpoint).where((0,e.eq)(g.endpoint.id,f.id)),d.collapsed++,d.mappings.push({planned:`${f.method} ${f.path}`,code:`${b.method} ${b.path}`}))}return d}f=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},91860:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{r:()=>j});var e=c(12839),f=c(74378),g=c(99121),h=c(28019);c(67114);var i=a([f]);async function j(a=f.db){let[b,c]=await Promise.all([a.query.dbTable.findMany({with:{columns:{columns:{id:!0}}},orderBy:(a,{asc:b})=>b(a.name)}),a.query.endpoint.findMany({with:{tables:{columns:{tableId:!0}}}})]),d=(0,h.kq)(b.map(a=>({id:a.id,name:a.name,domain:a.domain,columnCount:a.columns.length})),c.map(a=>({id:a.id,method:a.method,path:a.path,uses:a.tables.map(a=>({tableId:a.tableId}))}))),i=0;for(let c of b){let b=d.tables.get(c.id);b&&(Math.round(b.x)!==Math.round(c.x)||Math.round(b.y)!==Math.round(c.y))&&(await a.update(g.dbTable).set({x:b.x,y:b.y}).where((0,e.eq)(g.dbTable.id,c.id)),i++)}for(let b of c){let c=d.endpoints.get(b.id);c&&(Math.round(c.x)!==Math.round(b.x)||Math.round(c.y)!==Math.round(b.y))&&(await a.update(g.endpoint).set({x:c.x,y:c.y}).where((0,e.eq)(g.endpoint.id,b.id)),i++)}return i}f=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},96904:(a,b,c)=>{var d,e;function f(a,b,c){function d(c,d){if(c._zod||Object.defineProperty(c,"_zod",{value:{def:d,constr:g,traits:new Set},enumerable:!1}),c._zod.traits.has(a))return;c._zod.traits.add(a),b(c,d);let e=g.prototype,f=Object.keys(e);for(let a=0;a<f.length;a++){let b=f[a];b in c||(c[b]=e[b].bind(c))}}let e=c?.Parent??Object;class f extends e{}function g(a){var b;let e=c?.Parent?new f:this;for(let c of(d(e,a),(b=e._zod).deferred??(b.deferred=[]),e._zod.deferred))c();return e}return Object.defineProperty(f,"name",{value:a}),Object.defineProperty(g,"init",{value:d}),Object.defineProperty(g,Symbol.hasInstance,{value:b=>!!c?.Parent&&b instanceof c.Parent||b?._zod?.traits?.has(a)}),Object.defineProperty(g,"name",{value:a}),g}c.d(b,{EB:()=>ck,YO:()=>cO,zM:()=>cJ,ai:()=>cF,Ik:()=>cQ,Yj:()=>cj}),Symbol("zod_brand");class g extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class h extends Error{constructor(a){super(`Encountered unidirectional transform during encode: ${a}`),this.name="ZodEncodeError"}}(d=globalThis).__zod_globalConfig??(d.__zod_globalConfig={});let i=globalThis.__zod_globalConfig;function j(a){return a&&Object.assign(i,a),i}let k=/^[cC][0-9a-z]{6,}$/,l=/^[0-9a-z]+$/,m=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,n=/^[0-9a-vA-V]{20}$/,o=/^[A-Za-z0-9]{27}$/,p=/^[a-zA-Z0-9_-]{21}$/,q=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,r=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,s=a=>a?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${a}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,t=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,u=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,v=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,w=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,x=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,y=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,z=/^[A-Za-z0-9_-]*$/,A=/^https?$/,B=/^\+[1-9]\d{6,14}$/,C="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",D=RegExp(`^${C}$`);function E(a){let b="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"==typeof a.precision?-1===a.precision?`${b}`:0===a.precision?`${b}:[0-5]\\d`:`${b}:[0-5]\\d\\.\\d{${a.precision}}`:`${b}(?::[0-5]\\d(?:\\.\\d+)?)?`}let F=/^-?\d+$/,G=/^-?\d+(?:\.\d+)?$/,H=/^(?:true|false)$/i,I=/^[^A-Z]*$/,J=/^[^a-z]*$/;function K(a){let b=Object.values(a).filter(a=>"number"==typeof a);return Object.entries(a).filter(([a,c])=>-1===b.indexOf(+a)).map(([a,b])=>b)}function L(a,b){return"bigint"==typeof b?b.toString():b}function M(a){return{get value(){{let b=a();return Object.defineProperty(this,"value",{value:b}),b}}}}function N(a){let b=+!!a.startsWith("^"),c=a.endsWith("$")?a.length-1:a.length;return a.slice(b,c)}let O=Symbol("evaluating");function P(a,b,c){let d;Object.defineProperty(a,b,{get(){if(d!==O)return void 0===d&&(d=O,d=c()),d},set(c){Object.defineProperty(a,b,{value:c})},configurable:!0})}function Q(a,b,c){Object.defineProperty(a,b,{value:c,writable:!0,enumerable:!0,configurable:!0})}function R(...a){let b={};for(let c of a)Object.assign(b,Object.getOwnPropertyDescriptors(c));return Object.defineProperties({},b)}function S(a){return JSON.stringify(a)}let T="captureStackTrace"in Error?Error.captureStackTrace:(...a)=>{};function U(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}let V=M(()=>{if(i.jitless||"u">typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return Function(""),!0}catch(a){return!1}});function W(a){if(!1===U(a))return!1;let b=a.constructor;if(void 0===b||"function"!=typeof b)return!0;let c=b.prototype;return!1!==U(c)&&!1!==Object.prototype.hasOwnProperty.call(c,"isPrototypeOf")}function X(a){return W(a)?{...a}:Array.isArray(a)?[...a]:a instanceof Map?new Map(a):a instanceof Set?new Set(a):a}let Y=new Set(["string","number","symbol"]);function Z(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function $(a,b,c){let d=new a._zod.constr(b??a._zod.def);return(!b||c?.parent)&&(d._zod.parent=a),d}function _(a){if(!a)return{};if("string"==typeof a)return{error:()=>a};if(a?.message!==void 0){if(a?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");a.error=a.message}return(delete a.message,"string"==typeof a.error)?{...a,error:()=>a.error}:a}let aa={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-0x80000000,0x7fffffff],uint32:[0,0xffffffff],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function ab(a,b=0){if(!0===a.aborted)return!0;for(let c=b;c<a.issues.length;c++)if(a.issues[c]?.continue!==!0)return!0;return!1}function ac(a,b){return b.map(b=>(b.path??(b.path=[]),b.path.unshift(a),b))}function ad(a){return"string"==typeof a?a:a?.message}function ae(a,b,c){let d=a.message?a.message:ad(a.inst?._zod.def?.error?.(a))??ad(b?.error?.(a))??ad(c.customError?.(a))??ad(c.localeError?.(a))??"Invalid input",{inst:e,continue:f,input:g,...h}=a;return h.path??(h.path=[]),h.message=d,b?.reportInput&&(h.input=g),h}function af(a){return Array.isArray(a)?"array":"string"==typeof a?"string":"unknown"}function ag(...a){let[b,c,d]=a;return"string"==typeof b?{message:b,code:"custom",input:c,inst:d}:{...b}}let ah=f("$ZodCheck",(a,b)=>{var c;a._zod??(a._zod={}),a._zod.def=b,(c=a._zod).onattach??(c.onattach=[])}),ai={number:"number",bigint:"bigint",object:"date"},aj=f("$ZodCheckLessThan",(a,b)=>{ah.init(a,b);let c=ai[typeof b.value];a._zod.onattach.push(a=>{let c=a._zod.bag,d=(b.inclusive?c.maximum:c.exclusiveMaximum)??1/0;b.value<d&&(b.inclusive?c.maximum=b.value:c.exclusiveMaximum=b.value)}),a._zod.check=d=>{(b.inclusive?d.value<=b.value:d.value<b.value)||d.issues.push({origin:c,code:"too_big",maximum:"object"==typeof b.value?b.value.getTime():b.value,input:d.value,inclusive:b.inclusive,inst:a,continue:!b.abort})}}),ak=f("$ZodCheckGreaterThan",(a,b)=>{ah.init(a,b);let c=ai[typeof b.value];a._zod.onattach.push(a=>{let c=a._zod.bag,d=(b.inclusive?c.minimum:c.exclusiveMinimum)??-1/0;b.value>d&&(b.inclusive?c.minimum=b.value:c.exclusiveMinimum=b.value)}),a._zod.check=d=>{(b.inclusive?d.value>=b.value:d.value>b.value)||d.issues.push({origin:c,code:"too_small",minimum:"object"==typeof b.value?b.value.getTime():b.value,input:d.value,inclusive:b.inclusive,inst:a,continue:!b.abort})}}),al=f("$ZodCheckMultipleOf",(a,b)=>{ah.init(a,b),a._zod.onattach.push(a=>{var c;(c=a._zod.bag).multipleOf??(c.multipleOf=b.value)}),a._zod.check=c=>{let d,e,f;if(typeof c.value!=typeof b.value)throw Error("Cannot mix number and bigint in multiple_of check.");("bigint"==typeof c.value?c.value%b.value===BigInt(0):0==(e=Math.round(d=c.value/b.value),f=Number.EPSILON*Math.max(Math.abs(d),1),Math.abs(d-e)<f?0:d-e))||c.issues.push({origin:typeof c.value,code:"not_multiple_of",divisor:b.value,input:c.value,inst:a,continue:!b.abort})}}),am=f("$ZodCheckNumberFormat",(a,b)=>{ah.init(a,b),b.format=b.format||"float64";let c=b.format?.includes("int"),d=c?"int":"number",[e,f]=aa[b.format];a._zod.onattach.push(a=>{let d=a._zod.bag;d.format=b.format,d.minimum=e,d.maximum=f,c&&(d.pattern=F)}),a._zod.check=g=>{let h=g.value;if(c){if(!Number.isInteger(h))return void g.issues.push({expected:d,format:b.format,code:"invalid_type",continue:!1,input:h,inst:a});if(!Number.isSafeInteger(h))return void(h>0?g.issues.push({input:h,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:a,origin:d,inclusive:!0,continue:!b.abort}):g.issues.push({input:h,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:a,origin:d,inclusive:!0,continue:!b.abort}))}h<e&&g.issues.push({origin:"number",input:h,code:"too_small",minimum:e,inclusive:!0,inst:a,continue:!b.abort}),h>f&&g.issues.push({origin:"number",input:h,code:"too_big",maximum:f,inclusive:!0,inst:a,continue:!b.abort})}}),an=f("$ZodCheckMaxLength",(a,b)=>{var c;ah.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return null!=b&&void 0!==b.length}),a._zod.onattach.push(a=>{let c=a._zod.bag.maximum??1/0;b.maximum<c&&(a._zod.bag.maximum=b.maximum)}),a._zod.check=c=>{let d=c.value;if(d.length<=b.maximum)return;let e=af(d);c.issues.push({origin:e,code:"too_big",maximum:b.maximum,inclusive:!0,input:d,inst:a,continue:!b.abort})}}),ao=f("$ZodCheckMinLength",(a,b)=>{var c;ah.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return null!=b&&void 0!==b.length}),a._zod.onattach.push(a=>{let c=a._zod.bag.minimum??-1/0;b.minimum>c&&(a._zod.bag.minimum=b.minimum)}),a._zod.check=c=>{let d=c.value;if(d.length>=b.minimum)return;let e=af(d);c.issues.push({origin:e,code:"too_small",minimum:b.minimum,inclusive:!0,input:d,inst:a,continue:!b.abort})}}),ap=f("$ZodCheckLengthEquals",(a,b)=>{var c;ah.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return null!=b&&void 0!==b.length}),a._zod.onattach.push(a=>{let c=a._zod.bag;c.minimum=b.length,c.maximum=b.length,c.length=b.length}),a._zod.check=c=>{let d=c.value,e=d.length;if(e===b.length)return;let f=af(d),g=e>b.length;c.issues.push({origin:f,...g?{code:"too_big",maximum:b.length}:{code:"too_small",minimum:b.length},inclusive:!0,exact:!0,input:c.value,inst:a,continue:!b.abort})}}),aq=f("$ZodCheckStringFormat",(a,b)=>{var c,d;ah.init(a,b),a._zod.onattach.push(a=>{let c=a._zod.bag;c.format=b.format,b.pattern&&(c.patterns??(c.patterns=new Set),c.patterns.add(b.pattern))}),b.pattern?(c=a._zod).check??(c.check=c=>{b.pattern.lastIndex=0,b.pattern.test(c.value)||c.issues.push({origin:"string",code:"invalid_format",format:b.format,input:c.value,...b.pattern?{pattern:b.pattern.toString()}:{},inst:a,continue:!b.abort})}):(d=a._zod).check??(d.check=()=>{})}),ar=f("$ZodCheckRegex",(a,b)=>{aq.init(a,b),a._zod.check=c=>{b.pattern.lastIndex=0,b.pattern.test(c.value)||c.issues.push({origin:"string",code:"invalid_format",format:"regex",input:c.value,pattern:b.pattern.toString(),inst:a,continue:!b.abort})}}),as=f("$ZodCheckLowerCase",(a,b)=>{b.pattern??(b.pattern=I),aq.init(a,b)}),at=f("$ZodCheckUpperCase",(a,b)=>{b.pattern??(b.pattern=J),aq.init(a,b)}),au=f("$ZodCheckIncludes",(a,b)=>{ah.init(a,b);let c=Z(b.includes),d=new RegExp("number"==typeof b.position?`^.{${b.position}}${c}`:c);b.pattern=d,a._zod.onattach.push(a=>{let b=a._zod.bag;b.patterns??(b.patterns=new Set),b.patterns.add(d)}),a._zod.check=c=>{c.value.includes(b.includes,b.position)||c.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:b.includes,input:c.value,inst:a,continue:!b.abort})}}),av=f("$ZodCheckStartsWith",(a,b)=>{ah.init(a,b);let c=RegExp(`^${Z(b.prefix)}.*`);b.pattern??(b.pattern=c),a._zod.onattach.push(a=>{let b=a._zod.bag;b.patterns??(b.patterns=new Set),b.patterns.add(c)}),a._zod.check=c=>{c.value.startsWith(b.prefix)||c.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:b.prefix,input:c.value,inst:a,continue:!b.abort})}}),aw=f("$ZodCheckEndsWith",(a,b)=>{ah.init(a,b);let c=RegExp(`.*${Z(b.suffix)}$`);b.pattern??(b.pattern=c),a._zod.onattach.push(a=>{let b=a._zod.bag;b.patterns??(b.patterns=new Set),b.patterns.add(c)}),a._zod.check=c=>{c.value.endsWith(b.suffix)||c.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:b.suffix,input:c.value,inst:a,continue:!b.abort})}}),ax=f("$ZodCheckOverwrite",(a,b)=>{ah.init(a,b),a._zod.check=a=>{a.value=b.tx(a.value)}});class ay{constructor(a=[]){this.content=[],this.indent=0,this&&(this.args=a)}indented(a){this.indent+=1,a(this),this.indent-=1}write(a){if("function"==typeof a){a(this,{execution:"sync"}),a(this,{execution:"async"});return}let b=a.split("\n").filter(a=>a),c=Math.min(...b.map(a=>a.length-a.trimStart().length));for(let a of b.map(a=>a.slice(c)).map(a=>" ".repeat(2*this.indent)+a))this.content.push(a)}compile(){return Function(...this?.args,[...(this?.content??[""]).map(a=>` ${a}`)].join("\n"))}}let az=(a,b)=>{a.name="$ZodError",Object.defineProperty(a,"_zod",{value:a._zod,enumerable:!1}),Object.defineProperty(a,"issues",{value:b,enumerable:!1}),a.message=JSON.stringify(b,L,2),Object.defineProperty(a,"toString",{value:()=>a.message,enumerable:!1})},aA=f("$ZodError",az),aB=f("$ZodError",az,{Parent:Error}),aC=a=>(b,c,d,e)=>{let f=d?{...d,async:!1}:{async:!1},h=b._zod.run({value:c,issues:[]},f);if(h instanceof Promise)throw new g;if(h.issues.length){let b=new(e?.Err??a)(h.issues.map(a=>ae(a,f,j())));throw T(b,e?.callee),b}return h.value},aD=a=>async(b,c,d,e)=>{let f=d?{...d,async:!0}:{async:!0},g=b._zod.run({value:c,issues:[]},f);if(g instanceof Promise&&(g=await g),g.issues.length){let b=new(e?.Err??a)(g.issues.map(a=>ae(a,f,j())));throw T(b,e?.callee),b}return g.value},aE=a=>(b,c,d)=>{let e=d?{...d,async:!1}:{async:!1},f=b._zod.run({value:c,issues:[]},e);if(f instanceof Promise)throw new g;return f.issues.length?{success:!1,error:new(a??aA)(f.issues.map(a=>ae(a,e,j())))}:{success:!0,data:f.value}},aF=aE(aB),aG=a=>async(b,c,d)=>{let e=d?{...d,async:!0}:{async:!0},f=b._zod.run({value:c,issues:[]},e);return f instanceof Promise&&(f=await f),f.issues.length?{success:!1,error:new a(f.issues.map(a=>ae(a,e,j())))}:{success:!0,data:f.value}},aH=aG(aB),aI={major:4,minor:4,patch:3},aJ=f("$ZodType",(a,b)=>{var c;a??(a={}),a._zod.def=b,a._zod.bag=a._zod.bag||{},a._zod.version=aI;let d=[...a._zod.def.checks??[]];for(let b of(a._zod.traits.has("$ZodCheck")&&d.unshift(a),d))for(let c of b._zod.onattach)c(a);if(0===d.length)(c=a._zod).deferred??(c.deferred=[]),a._zod.deferred?.push(()=>{a._zod.run=a._zod.parse});else{let b=(a,b,c)=>{let d,e=ab(a);for(let f of b){if(f._zod.def.when){if(function(a,b=0){if(!0===a.aborted)return!0;for(let c=b;c<a.issues.length;c++)if(a.issues[c]?.continue===!1)return!0;return!1}(a)||!f._zod.def.when(a))continue}else if(e)continue;let b=a.issues.length,h=f._zod.check(a);if(h instanceof Promise&&c?.async===!1)throw new g;if(d||h instanceof Promise)d=(d??Promise.resolve()).then(async()=>{await h,a.issues.length!==b&&(e||(e=ab(a,b)))});else{if(a.issues.length===b)continue;e||(e=ab(a,b))}}return d?d.then(()=>a):a},c=(c,e,f)=>{if(ab(c))return c.aborted=!0,c;let h=b(e,d,f);if(h instanceof Promise){if(!1===f.async)throw new g;return h.then(b=>a._zod.parse(b,f))}return a._zod.parse(h,f)};a._zod.run=(e,f)=>{if(f.skipChecks)return a._zod.parse(e,f);if("backward"===f.direction){let b=a._zod.parse({value:e.value,issues:[]},{...f,skipChecks:!0});return b instanceof Promise?b.then(a=>c(a,e,f)):c(b,e,f)}let h=a._zod.parse(e,f);if(h instanceof Promise){if(!1===f.async)throw new g;return h.then(a=>b(a,d,f))}return b(h,d,f)}}P(a,"~standard",()=>({validate:b=>{try{let c=aF(a,b);return c.success?{value:c.data}:{issues:c.error?.issues}}catch(c){return aH(a,b).then(a=>a.success?{value:a.data}:{issues:a.error?.issues})}},vendor:"zod",version:1}))}),aK=f("$ZodString",(a,b)=>{var c;let d;aJ.init(a,b),a._zod.pattern=[...a?._zod.bag?.patterns??[]].pop()??(d=(c=a._zod.bag)?`[\\s\\S]{${c?.minimum??0},${c?.maximum??""}}`:"[\\s\\S]*",RegExp(`^${d}$`)),a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=String(c.value)}catch(a){}return"string"==typeof c.value||c.issues.push({expected:"string",code:"invalid_type",input:c.value,inst:a}),c}}),aL=f("$ZodStringFormat",(a,b)=>{aq.init(a,b),aK.init(a,b)}),aM=f("$ZodGUID",(a,b)=>{b.pattern??(b.pattern=r),aL.init(a,b)}),aN=f("$ZodUUID",(a,b)=>{if(b.version){let a={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[b.version];if(void 0===a)throw Error(`Invalid UUID version: "${b.version}"`);b.pattern??(b.pattern=s(a))}else b.pattern??(b.pattern=s());aL.init(a,b)}),aO=f("$ZodEmail",(a,b)=>{b.pattern??(b.pattern=t),aL.init(a,b)}),aP=f("$ZodURL",(a,b)=>{aL.init(a,b),a._zod.check=c=>{try{let d=c.value.trim();if(!b.normalize&&b.protocol?.source===A.source&&!/^https?:\/\//i.test(d))return void c.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:c.value,inst:a,continue:!b.abort});let e=new URL(d);b.hostname&&(b.hostname.lastIndex=0,b.hostname.test(e.hostname)||c.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:b.hostname.source,input:c.value,inst:a,continue:!b.abort})),b.protocol&&(b.protocol.lastIndex=0,b.protocol.test(e.protocol.endsWith(":")?e.protocol.slice(0,-1):e.protocol)||c.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:b.protocol.source,input:c.value,inst:a,continue:!b.abort})),b.normalize?c.value=e.href:c.value=d;return}catch(d){c.issues.push({code:"invalid_format",format:"url",input:c.value,inst:a,continue:!b.abort})}}}),aQ=f("$ZodEmoji",(a,b)=>{b.pattern??(b.pattern=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),aL.init(a,b)}),aR=f("$ZodNanoID",(a,b)=>{b.pattern??(b.pattern=p),aL.init(a,b)}),aS=f("$ZodCUID",(a,b)=>{b.pattern??(b.pattern=k),aL.init(a,b)}),aT=f("$ZodCUID2",(a,b)=>{b.pattern??(b.pattern=l),aL.init(a,b)}),aU=f("$ZodULID",(a,b)=>{b.pattern??(b.pattern=m),aL.init(a,b)}),aV=f("$ZodXID",(a,b)=>{b.pattern??(b.pattern=n),aL.init(a,b)}),aW=f("$ZodKSUID",(a,b)=>{b.pattern??(b.pattern=o),aL.init(a,b)}),aX=f("$ZodISODateTime",(a,b)=>{let c,d,e;b.pattern??(c=E({precision:b.precision}),d=["Z"],b.local&&d.push(""),b.offset&&d.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)"),e=`${c}(?:${d.join("|")})`,b.pattern=RegExp(`^${C}T(?:${e})$`)),aL.init(a,b)}),aY=f("$ZodISODate",(a,b)=>{b.pattern??(b.pattern=D),aL.init(a,b)}),aZ=f("$ZodISOTime",(a,b)=>{b.pattern??(b.pattern=RegExp(`^${E(b)}$`)),aL.init(a,b)}),a$=f("$ZodISODuration",(a,b)=>{b.pattern??(b.pattern=q),aL.init(a,b)}),a_=f("$ZodIPv4",(a,b)=>{b.pattern??(b.pattern=u),aL.init(a,b),a._zod.bag.format="ipv4"}),a0=f("$ZodIPv6",(a,b)=>{b.pattern??(b.pattern=v),aL.init(a,b),a._zod.bag.format="ipv6",a._zod.check=c=>{try{new URL(`http://[${c.value}]`)}catch{c.issues.push({code:"invalid_format",format:"ipv6",input:c.value,inst:a,continue:!b.abort})}}}),a1=f("$ZodCIDRv4",(a,b)=>{b.pattern??(b.pattern=w),aL.init(a,b)}),a2=f("$ZodCIDRv6",(a,b)=>{b.pattern??(b.pattern=x),aL.init(a,b),a._zod.check=c=>{let d=c.value.split("/");try{if(2!==d.length)throw Error();let[a,b]=d;if(!b)throw Error();let c=Number(b);if(`${c}`!==b||c<0||c>128)throw Error();new URL(`http://[${a}]`)}catch{c.issues.push({code:"invalid_format",format:"cidrv6",input:c.value,inst:a,continue:!b.abort})}}});function a3(a){if(""===a)return!0;if(/\s/.test(a)||a.length%4!=0)return!1;try{return atob(a),!0}catch{return!1}}let a4=f("$ZodBase64",(a,b)=>{b.pattern??(b.pattern=y),aL.init(a,b),a._zod.bag.contentEncoding="base64",a._zod.check=c=>{a3(c.value)||c.issues.push({code:"invalid_format",format:"base64",input:c.value,inst:a,continue:!b.abort})}}),a5=f("$ZodBase64URL",(a,b)=>{b.pattern??(b.pattern=z),aL.init(a,b),a._zod.bag.contentEncoding="base64url",a._zod.check=c=>{!function(a){if(!z.test(a))return!1;let b=a.replace(/[-_]/g,a=>"-"===a?"+":"/");return a3(b.padEnd(4*Math.ceil(b.length/4),"="))}(c.value)&&c.issues.push({code:"invalid_format",format:"base64url",input:c.value,inst:a,continue:!b.abort})}}),a6=f("$ZodE164",(a,b)=>{b.pattern??(b.pattern=B),aL.init(a,b)}),a7=f("$ZodJWT",(a,b)=>{aL.init(a,b),a._zod.check=c=>{!function(a,b=null){try{let c=a.split(".");if(3!==c.length)return!1;let[d]=c;if(!d)return!1;let e=JSON.parse(atob(d));if("typ"in e&&e?.typ!=="JWT"||!e.alg||b&&(!("alg"in e)||e.alg!==b))return!1;return!0}catch{return!1}}(c.value,b.alg)&&c.issues.push({code:"invalid_format",format:"jwt",input:c.value,inst:a,continue:!b.abort})}}),a8=f("$ZodNumber",(a,b)=>{aJ.init(a,b),a._zod.pattern=a._zod.bag.pattern??G,a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=Number(c.value)}catch(a){}let e=c.value;if("number"==typeof e&&!Number.isNaN(e)&&Number.isFinite(e))return c;let f="number"==typeof e?Number.isNaN(e)?"NaN":Number.isFinite(e)?void 0:"Infinity":void 0;return c.issues.push({expected:"number",code:"invalid_type",input:e,inst:a,...f?{received:f}:{}}),c}}),a9=f("$ZodNumberFormat",(a,b)=>{am.init(a,b),a8.init(a,b)}),ba=f("$ZodBoolean",(a,b)=>{aJ.init(a,b),a._zod.pattern=H,a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=!!c.value}catch(a){}let e=c.value;return"boolean"==typeof e||c.issues.push({expected:"boolean",code:"invalid_type",input:e,inst:a}),c}}),bb=f("$ZodUnknown",(a,b)=>{aJ.init(a,b),a._zod.parse=a=>a}),bc=f("$ZodNever",(a,b)=>{aJ.init(a,b),a._zod.parse=(b,c)=>(b.issues.push({expected:"never",code:"invalid_type",input:b.value,inst:a}),b)});function bd(a,b,c){a.issues.length&&b.issues.push(...ac(c,a.issues)),b.value[c]=a.value}let be=f("$ZodArray",(a,b)=>{aJ.init(a,b),a._zod.parse=(c,d)=>{let e=c.value;if(!Array.isArray(e))return c.issues.push({expected:"array",code:"invalid_type",input:e,inst:a}),c;c.value=Array(e.length);let f=[];for(let a=0;a<e.length;a++){let g=e[a],h=b.element._zod.run({value:g,issues:[]},d);h instanceof Promise?f.push(h.then(b=>bd(b,c,a))):bd(h,c,a)}return f.length?Promise.all(f).then(()=>c):c}});function bf(a,b,c,d,e,f){let g=c in d;if(a.issues.length){if(e&&f&&!g)return;b.issues.push(...ac(c,a.issues))}if(!g&&!e){a.issues.length||b.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[c]});return}void 0===a.value?g&&(b.value[c]=void 0):b.value[c]=a.value}function bg(a){var b;let c=Object.keys(a.shape);for(let b of c)if(!a.shape?.[b]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${b}": expected a Zod schema`);let d=Object.keys(b=a.shape).filter(a=>"optional"===b[a]._zod.optin&&"optional"===b[a]._zod.optout);return{...a,keys:c,keySet:new Set(c),numKeys:c.length,optionalKeys:new Set(d)}}function bh(a,b,c,d,e,f){let g=[],h=e.keySet,i=e.catchall._zod,j=i.def.type,k="optional"===i.optin,l="optional"===i.optout;for(let e in b){if("__proto__"===e||h.has(e))continue;if("never"===j){g.push(e);continue}let f=i.run({value:b[e],issues:[]},d);f instanceof Promise?a.push(f.then(a=>bf(a,c,e,b,k,l))):bf(f,c,e,b,k,l)}return(g.length&&c.issues.push({code:"unrecognized_keys",keys:g,input:b,inst:f}),a.length)?Promise.all(a).then(()=>c):c}let bi=f("$ZodObject",(a,b)=>{let c;aJ.init(a,b);let d=Object.getOwnPropertyDescriptor(b,"shape");if(!d?.get){let a=b.shape;Object.defineProperty(b,"shape",{get:()=>{let c={...a};return Object.defineProperty(b,"shape",{value:c}),c}})}let e=M(()=>bg(b));P(a._zod,"propValues",()=>{let a=b.shape,c={};for(let b in a){let d=a[b]._zod;if(d.values)for(let a of(c[b]??(c[b]=new Set),d.values))c[b].add(a)}return c});let f=b.catchall;a._zod.parse=(b,d)=>{c??(c=e.value);let g=b.value;if(!U(g))return b.issues.push({expected:"object",code:"invalid_type",input:g,inst:a}),b;b.value={};let h=[],i=c.shape;for(let a of c.keys){let c=i[a],e="optional"===c._zod.optin,f="optional"===c._zod.optout,j=c._zod.run({value:g[a],issues:[]},d);j instanceof Promise?h.push(j.then(c=>bf(c,b,a,g,e,f))):bf(j,b,a,g,e,f)}return f?bh(h,g,b,d,e.value,a):h.length?Promise.all(h).then(()=>b):b}}),bj=f("$ZodObjectJIT",(a,b)=>{let c,d;bi.init(a,b);let e=a._zod.parse,f=M(()=>bg(b)),g=!i.jitless,h=g&&V.value,j=b.catchall;a._zod.parse=(i,k)=>{d??(d=f.value);let l=i.value;return U(l)?g&&h&&k?.async===!1&&!0!==k.jitless?(c||(c=(a=>{let b=new ay(["shape","payload","ctx"]),c=f.value,d=a=>{let b=S(a);return`shape[${b}]._zod.run({ value: input[${b}], issues: [] }, ctx)`};b.write("const input = payload.value;");let e=Object.create(null),g=0;for(let a of c.keys)e[a]=`key_${g++}`;for(let f of(b.write("const newResult = {};"),c.keys)){let c=e[f],g=S(f),h=a[f],i=h?._zod?.optin==="optional",j=h?._zod?.optout==="optional";b.write(`const ${c} = ${d(f)};`),i&&j?b.write(`
1
+ "use strict";exports.id=2933,exports.ids=[2933],exports.modules={4245:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{i:()=>g});var e=c(74378),f=a([e]);function g(a){for(let b=0;b<a.length;b++)for(let c=b+1;c<a.length;c++){let d=a[b],e=a[c];if(d.x<e.x+300&&d.x+300>e.x&&d.y<e.y+50&&d.y+50>e.y)return!0}return!1}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},7185:(a,b,c)=>{c.d(b,{Q2:()=>J});var d=c(73024),e=c(51455),f=c(76760);let g=[".ts",".tsx",".js",".jsx",".mjs",".cjs"],h=[/(?:^|[\n;])\s*(?:import|export)[^'"`\n]{0,4000}?from\s*['"]([^'"`]+)['"]/g,/(?:^|[\n;])\s*import\s*['"]([^'"`]+)['"]/g,/\brequire\(\s*['"]([^'"`]+)['"]\s*\)/g,/\bimport\(\s*['"]([^'"`]+)['"]\s*\)/g];function i(a,b){if(b.has(a))return a;for(let c of g){let d=`${a}${c}`;if(b.has(d))return d}for(let c of g){let d=`${a}/index${c}`;if(b.has(d))return d}return null}function j(a,b){for(let c of[`${a}.py`,`${a}/__init__.py`,`${a}.pyi`])if(b.has(c))return[c];return[]}let k=/(?:^|[\n;])\s*import\s+(?:[\w.]+\s+)?"([^"]+)"/g,l=/(?:^|[\n;])\s*import\s*\(([\s\S]*?)\)/g,m=/"([^"]+)"/g,n=/(?:^|[\n;])\s*(?:pub\s+)?mod\s+(\w+)\s*;/g,o=/(?:^|[\n;])\s*(?:pub\s+)?use\s+([\w:]+)/g;function p(a,b){for(let c of[`${a}.rs`,`${a}/mod.rs`])if(b.has(c))return[c];return[]}let q=new Set(["mod.rs","lib.rs","main.rs"]),r=[".swift",".java",".rb",".kt",".kts",".cs",".php",".scala",".c",".h",".cpp",".hpp",".cc",".hh",".m",".mm",".ex",".exs",".lua",".dart",".vue",".svelte"],s=[/\b(?:require_relative|require|include|import|use|using|from)\s*\(?\s*['"]([^'"`\n]+)['"]/g,/(?:^|[\n;])\s*import\s+([\w.]+)/g,/(?:^|[\n;])\s*from\s+([\w.]+)\s+import\b/g,/(?:^|[\n;])\s*using\s+([\w.]+)\s*;/g,/(?:^|[\n;])\s*use\s+([\w\\]+)/g,/#\s*include\s*[<"]([^>"\n]+)[>"]/g],t=[{id:"ts",extensions:g,specifiers:function(a){let b=new Set;for(let c of h)for(let d of a.matchAll(c))b.add(d[1]);return b},resolve(a,b,c){let d=function(a,b,c,d){if(a.startsWith("."))return i((0,f.resolve)("/",(0,f.dirname)(b),a).split(/[\\/]/).join("/").replace(/^\//,""),c);for(let b of d)if(a.startsWith(b.from)){let d=a.slice(b.from.length),e=i(b.to?`${b.to}/${d}`:d,c);if(e)return e}return null}(a,b,c.fileSet,c.tsAliases??[]);return d?[d]:[]}},{id:"python",extensions:[".py",".pyi"],specifiers:function(a){let b=new Set;for(let c of a.matchAll(/(?:^|[\n;])\s*from\s+(\.*[\w.]*)\s+import\b/g)){let a=c[1].trim();a&&b.add(a)}for(let c of a.matchAll(/(?:^|[\n;])\s*import\s+([\w.]+(?:\s*,\s*[\w.]+)*)/g))for(let a of c[1].split(/\s*,\s*/)){let c=a.trim().split(/\s+as\s+/)[0].trim();c&&b.add(c)}return b},resolve(a,b,c){if(a.startsWith(".")){let d=a.length-a.replace(/^\.+/,"").length,e=a.slice(d),g=(0,f.dirname)(b);for(let a=1;a<d;a++)g=(0,f.dirname)(g);let h=e?(0,f.join)(g,e.replace(/\./g,"/")):g;return j((0,f.normalize)(h).replace(/\\/g,"/"),c.fileSet)}let d=a.replace(/\./g,"/"),e=[],g=(0,f.dirname)(b);for(;g&&"."!==g&&"/"!==g;)e.push(g),g=(0,f.dirname)(g);for(let a of(e.push(""),e)){let b=j(a?`${a}/${d}`:d,c.fileSet);if(b.length)return b}return[]}},{id:"go",extensions:[".go"],resolve(a,b,c){let d=c.goModulePath;if(!d)return[];let e=null;if(a===d?e="":a.startsWith(`${d}/`)&&(e=a.slice(d.length+1)),null===e)return[];let g=[];for(let a of c.fileSet){if(!a.endsWith(".go"))continue;let b=(0,f.dirname)(a);(""===e&&"."===b||b===e)&&g.push(a)}return g.sort()},specifiers:function(a){let b=new Set;for(let c of a.matchAll(k))b.add(c[1]);for(let c of a.matchAll(l))for(let a of c[1].matchAll(m))b.add(a[1]);return b}},{id:"rust",extensions:[".rs"],specifiers:function(a){let b=new Set;for(let c of a.matchAll(n))b.add(`./${c[1]}`);for(let c of a.matchAll(o)){let a=function(a){let b=a.split("::").filter(a=>a&&"*"!==a);return b.length?"crate"===b[0]?["crate",...b.slice(1)].join("/"):"super"===b[0]?["..",...b.slice(1)].join("/"):"self"===b[0]?[".",...b.slice(1)].join("/"):b.join("/"):""}(c[1]);a&&b.add(a)}return b},resolve(a,b,c){let d=c.fileSet;if(a.startsWith("./")||a.startsWith("../")){let c=a.replace(/^\.\//,""),e=p((0,f.normalize)((0,f.join)((0,f.dirname)(b),a)).replace(/\\/g,"/"),d);if(e.length)return e;if(a.startsWith("./")&&!q.has((0,f.basename)(b))){let a=(0,f.join)((0,f.dirname)(b),(0,f.basename)(b,".rs"),c);if((e=p((0,f.normalize)(a).replace(/\\/g,"/"),d)).length)return e}return[]}if(a.startsWith("crate/")){let c=b.split("/"),e=c.lastIndexOf("src"),g=e>=0?c.slice(0,e+1).join("/"):(0,f.dirname)(b),h=a.slice(6).split("/");for(let a of[h.join("/"),h.slice(0,-1).join("/")]){if(!a)continue;let b=p(`${g}/${a}`,d);if(b.length)return b}}return[]}},{id:"fallback",extensions:r,specifiers:function(a){let b=new Set;for(let c of s)for(let d of a.matchAll(c)){let a=d[1].trim();a&&b.add(a)}return b},resolve(a,b,c){let d=[(0,f.extname)(b).toLowerCase(),...r].filter((a,b,c)=>a&&c.indexOf(a)===b),e=a.includes("/")||a.includes("\\"),g=a.startsWith(".")||e?a.replace(/\\/g,"/"):a.replace(/[.:]+/g,"/");for(let a of[(0,f.normalize)((0,f.join)((0,f.dirname)(b),g)).replace(/\\/g,"/"),g.replace(/^\.\//,"")]){if(c.fileSet.has(a))return[a];for(let b of d){let d=a.endsWith(b)?a:`${a}${b}`;if(c.fileSet.has(d))return[d];if(c.fileSet.has(`${a}/index${b}`))return[`${a}/index${b}`]}}return[]}}],u=new Map;for(let a of t)for(let b of a.extensions)u.set(b,a);let v={".ts":"ts",".tsx":"ts",".js":"js",".jsx":"js",".mjs":"js",".cjs":"js",".py":"py",".pyi":"py",".go":"go",".rs":"rs",".swift":"swift",".java":"java",".rb":"ruby",".kt":"kotlin",".kts":"kotlin",".cs":"csharp",".php":"php",".scala":"scala",".c":"c",".h":"c",".cpp":"cpp",".hpp":"cpp",".cc":"cpp",".hh":"cpp",".m":"objc",".mm":"objc",".ex":"elixir",".exs":"elixir",".lua":"lua",".dart":"dart",".vue":"vue",".svelte":"svelte"};function w(a){return u.get((0,f.extname)(a).toLowerCase())??null}function x(){return new Set(u.keys())}let y=new Set(["node_modules",".git",".next","dist","build","__pycache__","target",".venv","venv","env",".turbo","coverage",".beacon",".playwright-mcp","generated","migrations","alembic","migrate"]),z=()=>Promise.resolve();async function A(a,b,c,d,g){let h;try{h=await (0,e.readdir)(b,{withFileTypes:!0})}catch{return}for(let e of h){if(e.name.startsWith(".")||y.has(e.name))continue;let h=(0,f.join)(b,e.name);if(e.isDirectory()){await A(a,h,c,d,g);continue}!(!e.isFile()||e.name.endsWith(".d.ts"))&&c.has((0,f.extname)(e.name).toLowerCase())&&d.push((0,f.relative)(a,h))}await g()}async function B(a,b=z){let c=[];return await A(a,a,x(),c,b),c.map(a=>a.split(/[\\/]/).join("/")).sort()}function C(a){return a.replace(/^\.\/?/,"").replace(/\/$/,"")}function D(a){let b,c=(0,f.join)(a,"tsconfig.json");if(!(0,d.existsSync)(c))return[];try{b=function(a){try{return JSON.parse(a)}catch{}return JSON.parse(a.replace(/\/\*[^"]*?\*\//g,"").replace(/(^|[^:"])\/\/.*$/gm,"$1").replace(/,\s*([}\]])/g,"$1"))}((0,d.readFileSync)(c,"utf8"))}catch{return[]}let e=b.compilerOptions?.paths??{},g=C(b.compilerOptions?.baseUrl??"."),h=[];for(let[a,b]of Object.entries(e)){if(!a.endsWith("/*")||!b.length)continue;let c=b[0];if(!c.endsWith("/*"))continue;let d=a.slice(0,-1),e=[g,C(c.slice(0,-1))].filter(Boolean).join("/");h.push({from:d,to:e})}return h}function E(a){let b=(0,f.join)(a,"go.mod");if(!(0,d.existsSync)(b))return null;try{let a=/^\s*module\s+(\S+)/m.exec((0,d.readFileSync)(b,"utf8"));return a?a[1]:null}catch{return null}}function F(a){return a.split(/[\\/]/).join("/")}function G(a){if(1===a.length)return a[0];let b=a.map(a=>F(a).split("/")),c=b[0],d=0;for(;d<c.length&&b.every(a=>a[d]===c[d]);d++);return c.slice(0,d).join("/")||"/"}async function H(a,b,c){let d=(Array.isArray(a)?a:[a]).map(a=>F((0,f.resolve)(a))),g=F(b?(0,f.resolve)(b):1===d.length?d[0]:G(d)),h=new Map,i=[];for(let a of d){let b=F((0,f.relative)(g,a));for(let c of D(a))i.push({from:c.from,to:[b,c.to].filter(Boolean).join("/")});for(let d of(await B(a,c))){let i=F((0,f.join)(a,d)),j=F((0,f.relative)(g,i));if(!h.has(j)){try{let a=await (0,e.stat)(i);h.set(j,{path:j,abs:i,root:b||null,mtimeMs:a.mtimeMs,size:a.size})}catch{}await c()}}}let j=d.map(E).find(Boolean)??E(g);return{metas:[...h.values()].sort((a,b)=>a.path.localeCompare(b.path)),ctx:{fileSet:new Set(h.keys()),tsAliases:i,goModulePath:j}}}async function I(a){let b=w(a.path);if(!b||a.size>2e5)return new Set;try{let c=await (0,e.readFile)(a.abs,"utf8");if(function(a){let b=0;for(let c=0;c<a.length;c++)if(10===a.charCodeAt(c)){if(c-b>5e4)return!0;b=c+1}return a.length-b>5e4}(c))return new Set;return b.specifiers(c)}catch{return new Set}}function J(a,b){let c=(Array.isArray(a)?a:[a]).map(a=>F((0,f.resolve)(a))),d=F(b?(0,f.resolve)(b):1===c.length?c[0]:G(c)),g=new Map,h=new Map,i=[],j=null;function k(){let a={fileSet:new Set(g.keys()),tsAliases:i,goModulePath:j},b=[...g.values()].sort((a,b)=>a.path.localeCompare(b.path)),c=[];for(let d of b){let b=w(d.path);if(!b)continue;let e=h.get(d.path)??new Set,f=new Set;for(let g of e)for(let e of b.resolve(g,d.path,a))!e||e===d.path||f.has(e)||(f.add(e),c.push({from:d.path,to:e}))}return{files:b.map(a=>{var b;let c;return{path:a.path,lang:(b=a.path,c=(0,f.extname)(b).toLowerCase(),u.has(c)?v[c]??c.slice(1):null),root:a.root,mtimeMs:a.mtimeMs,size:a.size}}),edges:c}}return{seed:async function(){let c=function(a=5){let b=performance.now();return async()=>{performance.now()-b>a&&(await new Promise(a=>setImmediate(a)),b=performance.now())}}(),{metas:d,ctx:e}=await H(a,b,c);for(let a of(g.clear(),h.clear(),d))await c(),g.set(a.path,a),h.set(a.path,await I(a));return i=e.tsAliases??[],j=e.goModulePath??null,k()},applyChange:async function(a){let b,k=F((0,f.resolve)(a));if(!c.some(a=>k===a||k.startsWith(`${a}/`)))return!1;let l=k.split("/").pop()??"";if("tsconfig.json"===l||"go.mod"===l){let a=k.slice(0,k.length-l.length-1);if(c.includes(a)){for(let a of(i=[],c)){let b=F((0,f.relative)(d,a));for(let c of D(a))i.push({from:c.from,to:[b,c.to].filter(Boolean).join("/")})}return j=c.map(E).find(Boolean)??E(d),!0}return!1}let m=function(a){let b=F((0,f.resolve)(a));for(let a of c)if(b===a||b.startsWith(`${a}/`)){if(function(a){let b=a.split("/");for(let a=0;a<b.length;a++){let c=b[a];if(!c||c.startsWith(".")||a<b.length-1&&y.has(c))return!0}let c=b[b.length-1];return!!c.endsWith(".d.ts")||!x().has((0,f.extname)(c).toLowerCase())}(b.slice(a.length).replace(/^\/+/,"")))return null;return{path:F((0,f.relative)(d,b)),root:F((0,f.relative)(d,a))||null}}return null}(a);if(!m)return!1;try{b=await (0,e.stat)(k)}catch{let a=g.delete(m.path);return h.delete(m.path),a}let n=g.get(m.path);if(n&&n.mtimeMs===b.mtimeMs&&n.size===b.size)return!1;let o={path:m.path,abs:k,root:m.root,mtimeMs:b.mtimeMs,size:b.size};return g.set(m.path,o),h.set(m.path,await I(o)),!0},snapshot:k}}},15456:(a,b,c)=>{c.d(b,{q:()=>f});var d=c(73024),e=c(76760);function f(a,b,c=!1){var g=JSON.stringify(b,null,c?2:void 0);(0,d.mkdirSync)((0,e.dirname)(a),{recursive:!0});let h=`${a}.tmp`;try{(0,d.writeFileSync)(h,g),(0,d.renameSync)(h,a)}catch(a){throw(0,d.rmSync)(h,{force:!0}),a}}},24302:(a,b,c)=>{c.d(b,{I:()=>i,r:()=>h});let d=/(^|\/)app\/.*\/route\.(ts|tsx|js|jsx|mjs)$/,e=/\.(ts|py)$/,f=/(schema|model)/i,g=/(\.(test|spec)\.[jt]sx?$)|(^|\/)(tests?|__tests__|__mocks__)\/|(^|\/)test_[^/]+\.py$|_test\.py$/;function h(a){return!g.test(a)&&(!!(a.endsWith(".prisma")||d.test(a)||a.endsWith(".java"))||e.test(a)&&f.test(a))}function i(a,b=300){return a.filter(h).slice(0,b)}},32933:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{startWorkspaceWatchers:()=>i});var e=c(73024),f=c(60455),g=c(98919),h=a([g]);g=(h.then?(await h)():h)[0];let j=function(a){let b=a.limit??6,c=a.hardCap??12,d=new Map,e=0,f=new Set;function g(a){let b=d.get(a);b&&(b.seq=++e)}async function h(a){let b=d.get(a);b&&(d.delete(a),await b.handle.stop())}async function i(){await Promise.all([...d.values()].map(a=>a.handle.stop())),d.clear()}return{reconcile:function(){let c=a.list().filter(b=>a.exists(b.path)).slice(0,b);for(let b of(f=new Set(c.map(a=>a.id)),c))!function(b){if(d.has(b.id))return g(b.id);a.exists(b.path)&&d.set(b.id,{handle:a.start(b),seq:++e})}(b);for(let[b,c]of[...d]){let e=a.get(b);e&&a.exists(e.path)||(c.handle.stop(),d.delete(b))}},ensureWatcher:function(b){if(d.has(b))return g(b);let h=a.get(b);h&&a.exists(h.path)&&(d.size>=c&&function(){let a=null,b=1/0;for(let[c,e]of d)!f.has(c)&&e.seq<b&&(b=e.seq,a=c);a&&(d.get(a).handle.stop(),d.delete(a))}(),d.size>=c||d.set(b,{handle:a.start(h),seq:++e}))},stopWatcher:h,isWatching:function(a){return d.has(a)},activeIds:function(){return[...d.keys()]},stopAll:i}}({list:f.Y2,get:f.K4,exists:e.existsSync,start:a=>(0,g.F)(a)}),k=null;function i(){"1"!==process.env.BEACON_NO_INLINE_WATCH&&(j.reconcile(),k||(k=setInterval(()=>j.reconcile(),3e4),k.unref?.()))}d()}catch(a){d(a)}})},52729:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{ER:()=>n,Rm:()=>m,cL:()=>l});var e=c(96904),f=c(12839),g=c(74378),h=c(99121),i=c(62313),j=a([g,i]);[g,i]=j.then?(await j)():j;let o=e.Ik({files:e.YO(e.Ik({path:e.Yj().trim().min(1),root:e.Yj().nullish(),lang:e.Yj().nullish(),mtimeMs:e.ai().nullish(),size:e.ai().nullish()})).default([]),edges:e.YO(e.Ik({from:e.Yj().trim().min(1),to:e.Yj().trim().min(1)})).default([])});function k(a,b){let c=new Map;for(let b of a)c.set(b,[]);for(let a of b)c.get(a.from)?.push(a.to);let d=new Map,e=new Map,f=new Set,g=[],h=new Map,i=[],j=0,k=0;for(let b of a){if(d.has(b))continue;let a=[{v:b,iter:0}];for(d.set(b,j),e.set(b,j),j++,g.push(b),f.add(b);a.length;){let b=a[a.length-1],l=c.get(b.v)??[];if(b.iter<l.length){let c=l[b.iter++];d.has(c)?f.has(c)&&e.set(b.v,Math.min(e.get(b.v),d.get(c))):(d.set(c,j),e.set(c,j),j++,g.push(c),f.add(c),a.push({v:c,iter:0}))}else{if(e.get(b.v)===d.get(b.v)){let a,c=0;do a=g.pop(),f.delete(a),h.set(a,k),c++;while(a!==b.v);i.push(c),k++}a.pop();let c=a[a.length-1];c&&e.set(c.v,Math.min(e.get(c.v),e.get(b.v)))}}}let l=new Set;for(let a of b){let b=h.get(a.from);void 0!==b&&b===h.get(a.to)&&i[b]>1&&l.add(`${a.from}|${a.to}`)}return l}async function l(a,b=g.db){let c=o.parse(a),d=c.files.map(a=>a.path),e=new Set(d),j=c.edges.filter(a=>e.has(a.from)&&e.has(a.to)&&a.from!==a.to),m=k(d,j),n=new Map,p=new Map;for(let a of j)p.set(a.from,(p.get(a.from)??0)+1),n.set(a.to,(n.get(a.to)??0)+1);for(let a of(await b.delete(h.codeFile).where((0,f.KL)(h.codeFile.path,d)),c.files)){let c={root:a.root??null,lang:a.lang??null,mtimeMs:a.mtimeMs??null,size:a.size??null,inDegree:n.get(a.path)??0,outDegree:p.get(a.path)??0};await b.insert(h.codeFile).values({path:a.path,...c}).onConflictDoUpdate({target:h.codeFile.path,set:c})}await b.delete(h.codeFileEdge);let q=0;j.length&&await b.insert(h.codeFileEdge).values(j.map(a=>{let b=m.has(`${a.from}|${a.to}`);return b&&q++,{fromPath:a.from,toPath:a.to,circular:b}}));let r=await (0,i.Bx)(b);return await b.update(h.syncState).set({codeGraphSyncedAt:new Date}).where((0,f.eq)(h.syncState.id,"singleton")),{files:c.files.length,edges:j.length,circular:q,version:r}}let p=(a,b)=>`${a}\0${b}`;function m(a){let b=o.parse(a),c=b.files.map(a=>a.path),d=new Set(c),e=b.edges.filter(a=>d.has(a.from)&&d.has(a.to)&&a.from!==a.to),f=k(c,e),g=new Map,h=new Map;for(let a of e)h.set(a.from,(h.get(a.from)??0)+1),g.set(a.to,(g.get(a.to)??0)+1);let i=new Map;for(let a of b.files)i.set(a.path,{root:a.root??null,lang:a.lang??null,mtimeMs:a.mtimeMs??null,size:a.size??null,inDegree:g.get(a.path)??0,outDegree:h.get(a.path)??0});let j=new Map;for(let a of e)j.set(p(a.from,a.to),{from:a.from,to:a.to,circular:f.has(`${a.from}|${a.to}`)});return{files:i,edges:j}}let q=(a,b)=>a.root===b.root&&a.lang===b.lang&&a.mtimeMs===b.mtimeMs&&a.size===b.size&&a.inDegree===b.inDegree&&a.outDegree===b.outDegree;async function n(a,b,c=g.db){for(let[d,e]of b.files){let b=a.files.get(d);if(b&&q(b,e))continue;let f={root:e.root,lang:e.lang,mtimeMs:e.mtimeMs,size:e.size,inDegree:e.inDegree,outDegree:e.outDegree};await c.insert(h.codeFile).values({path:d,...f}).onConflictDoUpdate({target:h.codeFile.path,set:f})}let d=[...a.files.keys()].filter(a=>!b.files.has(a));for(let[e,g]of(d.length&&await c.delete(h.codeFile).where((0,f.RV)(h.codeFile.path,d)),a.edges))b.edges.has(e)||await c.delete(h.codeFileEdge).where((0,f.Uo)((0,f.eq)(h.codeFileEdge.fromPath,g.from),(0,f.eq)(h.codeFileEdge.toPath,g.to)));let e=[];for(let[d,g]of b.edges){let b=a.edges.get(d);b?b.circular!==g.circular&&await c.update(h.codeFileEdge).set({circular:g.circular}).where((0,f.Uo)((0,f.eq)(h.codeFileEdge.fromPath,g.from),(0,f.eq)(h.codeFileEdge.toPath,g.to))):e.push({fromPath:g.from,toPath:g.to,circular:g.circular})}e.length&&await c.insert(h.codeFileEdge).values(e);let j=await (0,i.Bx)(c);await c.update(h.syncState).set({codeGraphSyncedAt:new Date}).where((0,f.eq)(h.syncState.id,"singleton"));let k=0;for(let a of b.edges.values())a.circular&&k++;return{files:b.files.size,edges:b.edges.size,circular:k,version:j}}d()}catch(a){d(a)}})},56241:(a,b,c)=>{c.d(b,{LT:()=>d,kq:()=>j,mn:()=>e,ez:()=>l,uQ:()=>k});let d=320;function e(a){return 36+30*Math.max(0,a)+16}let f=960,g=a=>(a??"").trim()||"—";function h(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 i=(a,b)=>a.path.localeCompare(b.path)||a.method.localeCompare(b.method)||a.id.localeCompare(b.id);function j(a,b,c={}){let k=h(a,b),l=new Map,m=[];for(let a of[...b].sort(i)){let b=k.get(a.id)??null;if(b){let c=l.get(b);c?c.push(a):l.set(b,[a])}else m.push(a)}let n=a=>{let b=l.get(a.id)?.length??0;return e(a.columnCount)+(b?10+60*b:0)+30},o=Array.from(new Set(a.map(a=>g(a.domain)))),p=o.filter(a=>"—"!==a).sort(),q=o.includes("—")?[...p,"—"]:p,r=[];for(let b of q){let c=a.filter(a=>g(a.domain)===b).sort((a,b)=>a.name.localeCompare(b.name)),e=c.reduce((a,b)=>a+n(b),0),f=Math.max(1,Math.min(12,c.length,Math.round(Math.sqrt(e/d)))),h=Array(f).fill(0),i=new Map;for(let a of c){let b=0;for(let a=1;a<f;a++)h[a]<h[b]&&(b=a);i.set(a.id,{x:b*d,y:h[b]}),h[b]+=n(a)}r.push({d:b,w:f*d,h:Math.max(...h,0),tableLocal:i})}let s=function(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}(r.map(a=>({id:a.d,w:a.w,h:a.h})),{gapX:84,gapY:72,viewportAspect:c.viewportAspect,minBandW:f,aspectSlack:1.7}),t=new Map,u=new Map,v=0;for(let b of r){let c=s.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;t.set(d.id,{x:f,y:g}),(l.get(d.id)??[]).forEach((a,b)=>{u.set(a.id,{x:f,y:g+e(d.columnCount)+10+60*b})})}v=Math.max(v,c.y+b.h)}if(m.length){let a=v+72,b=Math.max(1,Math.min(4,Math.ceil(Math.sqrt(m.length/2))));m.forEach((c,d)=>{u.set(c.id,{x:d%b*300,y:a+60*Math.floor(d/b)})})}return{tables:t,endpoints:u}}function k(a,b,c){let f=h(b,c),i=new Map;for(let a of c){let b=f.get(a.id);b&&i.set(b,(i.get(b)??0)+1)}let j=a=>{let b=i.get(a.id)??0;return a.y+e(a.columnCount)+(b?10+60*b:0)},k=g(a.domain),l=b.filter(a=>g(a.domain)===k);if(!l.length){let a=b.length?Math.max(...b.map(j),...c.map(a=>a.y+60)):0;return{x:0,y:b.length||c.length?a+72:0}}let m=Math.min(...l.map(a=>a.x)),n=l.map(a=>Math.max(0,Math.round((a.x-m)/d))),o=Math.min(12,Math.max(...n)+1),p=Array(o).fill(Math.min(...l.map(a=>a.y)));l.forEach((a,b)=>{let c=Math.min(n[b],o-1);p[c]=Math.max(p[c],j(a)+30)});let q=0;for(let a=1;a<o;a++)p[a]<p[q]&&(q=a);return{x:m+q*d,y:p[q]}}function l(a,b,c){let d=h(b,[...c,a]),f=d.get(a.id),g=f?b.find(a=>a.id===f):void 0;if(g){let a=c.filter(a=>d.get(a.id)===g.id),b=g.y+e(g.columnCount)+10,f=a.length?Math.max(...a.map(a=>a.y))+60:b;return{x:g.x,y:f}}let i=[...b.map(a=>a.y+e(a.columnCount)),...c.map(a=>a.y+60)];return{x:0,y:i.length?Math.max(...i)+72:0}}},57074:(a,b,c)=>{c.d(b,{v4:()=>e});var d=c(56241);function e(a){let b=d.LT-20;for(let c=0;c<a.length;c++)for(let e=c+1;e<a.length;e++){let f=a[c],g=a[e],h=(0,d.mn)(f.columnCount),i=(0,d.mn)(g.columnCount);if(f.x<g.x+b&&f.x+b>g.x&&f.y<g.y+i&&f.y+h>g.y)return!0}return!1}},59314:(a,b,c)=>{c.d(b,{$:()=>e});let d=["GET","POST","PUT","PATCH","DELETE"];function e(a){let b=[];for(let c of a){let a=function(a){let b=a.match(/(?:^|\/)app\/(.+)\/route\.(?:ts|tsx|js|jsx|mjs)$/);if(!b)return null;let c=b[1].split("/").filter(a=>!(a.startsWith("(")&&a.endsWith(")"))).map(a=>{let b=a.match(/^\[{1,2}(?:\.\.\.)?([^\]]+)\]{1,2}$/);return b?`{${b[1]}}`:a});return"api"!==c[0]?null:`/${c.join("/")}`}(c.path);if(a)for(let e of d)RegExp(`export\\s+(?:async\\s+)?(?:function|const)\\s+${e}\\b`).test(c.content)&&b.push({method:e,path:a,uses:[],file:c.path})}return b.sort((a,b)=>`${a.path} ${a.method}`.localeCompare(`${b.path} ${b.method}`))}},61926:(a,b,c)=>{function d(a,b){if(/_JSON_OR_JSONB|\bJSONB\b|\bJSON\b/.test(a))return"jsonb";let c=a.match(/\b(GUID|Uuid|UUID|String|Text|DateTime|Date|Time|BigInteger|SmallInteger|Integer|Boolean|Float|Numeric|Decimal|Vector|TSVECTOR|LargeBinary|Enum)\b\s*(\([^)]*\))?/);if(c){let a=c[2]??"",b=a.match(/\d+/)?.[0];switch(c[1]){case"GUID":case"Uuid":case"UUID":return"uuid";case"String":return b?`varchar(${b})`:"varchar";case"Text":return"text";case"DateTime":return/timezone\s*=\s*True/.test(a)?"timestamptz":"timestamp";case"Date":return"date";case"Time":return"time";case"BigInteger":return"bigint";case"SmallInteger":return"smallint";case"Integer":return"integer";case"Boolean":return"boolean";case"Float":return"float";case"Numeric":case"Decimal":return"numeric";case"Vector":return b?`vector(${b})`:"vector";case"TSVECTOR":return"tsvector";case"LargeBinary":return"bytea";case"Enum":return"varchar"}}let d=b.replace(/\s*\|\s*None/g,"").trim(),e=d.match(/^Optional\[([\s\S]*)\]$/);return(e&&(d=e[1].trim()),/uuid/i.test(d))?"uuid":/datetime/i.test(d)?"timestamptz":/\bint\b/i.test(d)?"integer":/\bbool\b/i.test(d)?"boolean":/\bfloat\b/.test(d)&&!/\blist\b/.test(d)?"float":/\bdict\b|\blist\b|\bAny\b/.test(d)?"jsonb":"text"}function e(a,b){let c=0;for(let d=b;d<a.length;d++)if("("===a[d])c++;else if(")"===a[d]&&0==--c)return a.slice(b+1,d);return""}c.d(b,{Y:()=>k});let f={long:"bigint",Long:"bigint",BigInteger:"bigint",int:"integer",Integer:"integer",short:"smallint",Short:"smallint",String:"varchar",char:"varchar",Character:"varchar",boolean:"boolean",Boolean:"boolean",UUID:"uuid",BigDecimal:"numeric",double:"double",Double:"double",float:"float",Float:"float",LocalDate:"date",LocalDateTime:"timestamp",Instant:"timestamp",Timestamp:"timestamp",Date:"timestamp",OffsetDateTime:"timestamptz",ZonedDateTime:"timestamptz",LocalTime:"time"},g=/^(List|Set|Map|Collection|Iterable)$/;function h(a){return/byte\s*\[\s*\]/.test(a)?"byte[]":(a.replace(/<.*>/,"").trim().split(".").pop()??a).trim()}function i(a,b){return a.match(RegExp(`\\b${b}\\s*=\\s*"([^"]*)"`))?.[1]}function j(a,b){let c=a.match(RegExp(`\\b${b}\\s*=\\s*(true|false)`));return c?"true"===c[1]:void 0}function k(a){let b=function(a){let b=[],c=/(\w+)\s*:\s*(text|integer|real|blob|numeric|varchar|boolean|timestamp|serial|uuid|json|jsonb)\s*\(/g;for(let d of a){let a;if(!/\.(ts|tsx|mts|cts)$/.test(d.path)||!/\b(?:sqliteTable|pgTable|mysqlTable)\s*\(/.test(d.content))continue;let f=/(?:export\s+)?const\s+(\w+)\s*=\s*(?:sqliteTable|pgTable|mysqlTable)\s*\(\s*["']([^"']+)["']\s*,/g;for(;a=f.exec(d.content);){let f=d.content.indexOf("{",a.index+a[0].length);if(f<0)continue;let g=function(a,b){let c=0;for(let d=b;d<a.length;d++)if("{"===a[d])c++;else if("}"===a[d]&&0==--c)return a.slice(b+1,d);return""}(d.content,f),h={varName:a[1],tableName:a[2],columns:[],colByProp:new Map,fks:[]},i=[];for(let a of(c.lastIndex=0,g.matchAll(c)))i.push({prop:a[1],builder:a[2],at:a.index,argOpen:a.index+a[0].length-1});i.forEach((a,b)=>{var c;let d=g.slice(a.at,i[b+1]?.at??g.length),f=e(g,a.argOpen),j=f.match(/^\s*["']([^"']+)["']/)?.[1]??a.prop,k=d.match(/\.references\(\s*\(\)\s*=>\s*(\w+)\.(\w+)/);h.columns.push({name:j,type:(c=a.builder,/mode:\s*["']timestamp/.test(f)?"timestamp":/mode:\s*["']boolean["']/.test(f)?"boolean":/mode:\s*["']json["']/.test(f)?"jsonb":c),isPk:/\.primaryKey\(\)/.test(d)||void 0,isFk:!!k||void 0,nullable:!/\.notNull\(\)/.test(d)}),h.colByProp.set(a.prop,j),k&&h.fks.push({column:j,toVar:k[1],toProp:k[2]})}),b.push(h)}}if(!b.length)return{tables:[],relations:[]};let d=new Map(b.map(a=>[a.varName,a])),f=[];for(let a of b)for(let b of a.fks){let c=d.get(b.toVar);c&&f.push({fromTable:a.tableName,fromColumn:b.column,toTable:c.tableName,toColumn:c.colByProp.get(b.toProp)??b.toProp})}return{tables:b.map(a=>({name:a.tableName,columns:a.columns})),relations:f,tableVars:Object.fromEntries(b.map(a=>[a.varName,a.tableName]))}}(a);if(b.tables.length)return b;let c=function(a){let b=[],c=[];for(let d of a){let a;if(!d.path.endsWith(".prisma"))continue;let e=/model\s+(\w+)\s*\{([\s\S]*?)\}/g;for(;a=e.exec(d.content);){let d=a[1],e=a[2].match(/@@map\(\s*["']([^"']+)["']\s*\)/)?.[1]??d,f=[];for(let b of a[2].split("\n")){let a=b.trim().match(/^(\w+)\s+(\w+(?:\[\])?\??)\s*(.*)$/);if(!a||/^@@/.test(b.trim()))continue;let[,d,g,h]=a,i=/^(String|Int|BigInt|Float|Decimal|Boolean|DateTime|Json|Bytes)(\[\])?\??$/.test(g),j=h.match(/@relation\([^)]*fields:\s*\[(\w+)\][^)]*references:\s*\[(\w+)\]/);j&&c.push({fromTable:e,fromColumn:j[1],toTable:g.replace(/[?[\]]/g,""),toColumn:j[2]}),i&&f.push({name:d,type:function(a){let b=a.replace(/[?[\]]/g,"");return({String:"text",Int:"integer",BigInt:"bigint",Float:"float",Decimal:"numeric",Boolean:"boolean",DateTime:"timestamptz",Json:"jsonb",Bytes:"bytea"})[b]??b.toLowerCase()}(g),isPk:/@id\b/.test(h)||void 0,isFk:/@relation\b/.test(h)||void 0,nullable:g.endsWith("?")})}f.length&&b.push({name:e,columns:f})}}return{tables:b,relations:c}}(a);if(c.tables.length)return c;let k=function(a){let b=new Map,c=[],f=[];for(let g of a){let a;if(!g.path.endsWith(".py")||!/mapped_column\s*\(|__tablename__|\bTable\s*\(\s*["']/.test(g.content))continue;let h=function(a){let b,c=[],f=[],g=/\bTable\s*(\()\s*["']([^"']+)["']\s*,/g;for(;b=g.exec(a);){let g,h=b[2],i=e(a,b.index+b[0].indexOf("("));if(!/\bmetadata\b/.test(i)||!/\bColumn\s*\(/.test(i))continue;let j=[],k=/\bColumn\s*\(/g;for(;g=k.exec(i);){let a=e(i,g.index+g[0].length-1),b=a.match(/^\s*["'](\w+)["']\s*,/)?.[1];if(!b)continue;let c=/primary_key\s*=\s*True/.test(a)||void 0,k=!/nullable\s*=\s*False/.test(a),l=a.match(/ForeignKey\(\s*["']([^"']+?)\.([^"'.]+)["']/);j.push({name:b,type:d(a,""),isPk:c,isFk:!!l||void 0,nullable:k}),l&&f.push({fromTable:h,fromColumn:b,toTable:l[1],toColumn:l[2]})}j.length&&c.push({name:h,columns:j})}return{tables:c,relations:f}}(g.content);c.push(...h.tables),f.push(...h.relations);let i=/^class\s+(\w+)\s*\(([^)]*)\)\s*:/gm,j=[];for(;a=i.exec(g.content);)j.push({name:a[1],bases:a[2].split(",").map(a=>a.trim().split(/[.[]/)[0]).filter(Boolean),at:a.index});for(let a=0;a<j.length;a++){let c=g.content.slice(j[a].at,j[a+1]?.at??g.content.length),f=function(a,b,c){let f,g=c.match(/__tablename__\s*=\s*["']([^"']+)["']/)?.[1],h=[],i=[],j=[],k=/(\w+)\s*:\s*Mapped\s*\[/g;for(;f=k.exec(c);){let a=f.index+f[0].length-1,b=function(a,b){let c=0;for(let d=b;d<a.length;d++)if("["===a[d])c++;else if("]"===a[d]&&0==--c)return a.slice(b+1,d);return null}(c,a);if(null===b)continue;let d=a+b.length+2,e=c.slice(d).match(/^\s*=\s*(\w+)\s*\(/);e&&"mapped_column"===e[1]&&j.push({colName:f[1],pyType:b,argsAt:d+e[0].length-1})}let l=/(\w+)\s*=\s*(mapped_column|Column)\s*\(/g;for(;f=l.exec(c);)j.push({colName:f[1],pyType:"",argsAt:f.index+f[0].length-1});j.sort((a,b)=>a.argsAt-b.argsAt);let m=new Set;for(let a of j){if(m.has(a.colName)||"__tablename__"===a.colName)continue;m.add(a.colName);let b=e(c,a.argsAt),f=/primary_key\s*=\s*True/.test(b)||void 0,g=!/nullable\s*=\s*False/.test(b),j=b.match(/ForeignKey\(\s*["']([^"']+?)\.([^"'.]+)["']/);h.push({name:a.colName,type:d(b,a.pyType),isPk:f,isFk:!!j||void 0,nullable:g}),j&&i.push({column:a.colName,toTable:j[1],toColumn:j[2]})}return{name:a,bases:b,tableName:g,columns:h,fks:i}}(j[a].name,j[a].bases,c);b.set(f.name,f)}}if(![...b.values()].some(a=>a.tableName)&&!c.length)return{tables:[],relations:[]};let g=(a,c=new Set)=>{if(c.has(a.name))return[];c.add(a.name);let d=[];for(let e of a.bases){let a=b.get(e);a&&!a.tableName&&d.push(...g(a,c))}return d.push(...a.columns),d},h=[],i=[];for(let a of b.values()){if(!a.tableName)continue;let b=g(a),c=new Map;for(let a of b)c.has(a.name)||c.set(a.name,a);let d=[...c.values()],e=a=>d.splice(d.findIndex(b=>b.name===a),1)[0],f=d.some(a=>"id"===a.name)?e("id"):null,j=["created_at","updated_at","deleted_at"].filter(a=>d.some(b=>b.name===a)).map(a=>e(a));for(let b of(h.push({name:a.tableName,columns:[...f?[f]:[],...d,...j]}),a.fks))i.push({fromTable:a.tableName,fromColumn:b.column,toTable:b.toTable,toColumn:b.toColumn})}let j=new Set(h.map(a=>a.name));for(let a of c)j.has(a.name)||h.push(a);return i.push(...f.filter(a=>!j.has(a.fromTable))),{tables:h,relations:i}}(a);return k.tables.length?k:function(a){let b=a.filter(a=>a.path.endsWith(".java")&&/@Entity\b/.test(a.content));if(!b.length)return{tables:[],relations:[]};let c=b.flatMap(a=>(function(a){let b,c=[],d=/\bclass\s+(\w+)/g;for(;b=d.exec(a);)c.push({name:b[1],at:b.index});let e=[];for(let b=0;b<c.length;b++){let d=a.slice(0===b?0:c[b-1].at,c[b].at);if(!/@Entity\b/.test(d))continue;let f=i(d.match(/@Table\s*\([^)]*\)/)?.[0]??"","name")??c[b].name,g=function(a){let b=[],c=[];for(let d of a.split("\n")){let a=d.trim();if(!a||a.startsWith("//")||a.startsWith("*")||a.startsWith("/*"))continue;let{annots:e,rest:f}=function(a){let b,c=[],d=a;for(;b=d.match(/^@[\w.]+(\([^)]*\))?\s*/);)c.push(d.slice(0,b[0].length).trim()),d=d.slice(b[0].length);return{annots:c,rest:d.trim()}}(a);if(c.push(...e),!f)continue;let g=f,h="";for(;g!==h;)h=g,g=g.replace(/^(?:public|private|protected|static|final|transient|volatile)\s+/,"");let i=g.includes("(")?null:g.match(/^([\w.$]+(?:<[^>]*>)?(?:\s*\[\s*\])?)\s+(\w+)\s*[;=]/);i&&b.push({annots:c,type:i[1],name:i[2]}),c=[]}return b}(a.slice(c[b].at,c[b+1]?.at??a.length)),h=g.find(a=>a.annots.some(a=>/@Id\b/.test(a))),j=h?i(h.annots.find(a=>/@Column\b/.test(a))??"","name")??h.name:"id";e.push({className:c[b].name,tableName:f,idColumn:j,fields:g})}return e})(a.content));if(!c.length)return{tables:[],relations:[]};let d=new Map(c.map(a=>[a.className,a.tableName])),e=new Map(c.map(a=>[a.className,a.idColumn])),k=[],l=[];for(let a of c){let b=[];for(let c of a.fields){let k=c.annots.join(" ");if(/@Transient\b/.test(k))continue;let m=h(c.type);if(/@ManyToOne\b|@OneToOne\b|@OneToMany\b|@ManyToMany\b/.test(k)||d.has(m)){let f=c.annots.find(a=>/@JoinColumn\b/.test(a)),g=f?i(f,"name"):void 0;if(g){b.push({name:g,type:"bigint",isFk:!0,nullable:j(k,"nullable")??!0});let c=d.get(m);c&&l.push({fromTable:a.tableName,fromColumn:g,toTable:c,toColumn:e.get(m)??"id"})}continue}if(g.test(m))continue;let n=c.annots.find(a=>/@Column\b/.test(a))??"",o=i(n,"name")??c.name,p=c.annots.some(a=>/@Id\b/.test(a)),q=j(n,"nullable");b.push({name:o,type:function(a){let b=h(a);return"byte[]"===b?"bytea":f[b]??b.toLowerCase()}(c.type),...p?{isPk:!0}:{},...void 0!==q?{nullable:q}:{}})}k.push({name:a.tableName,columns:b})}return{tables:k,relations:l}}(a)}},62313:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Bx:()=>q,Rw:()=>r});var e=c(96904),f=c(65338),g=c(12839),h=c(74378),i=c(99121),j=c(4245),k=c(87005),l=c(76160),m=c(57074),n=c(56241),o=c(91860),p=a([h,j,k,l,o]);[h,j,k,l,o]=p.then?(await p)():p;let s=e.Ik({tables:e.YO(e.Ik({name:e.Yj().trim().min(1),domain:e.Yj().nullish(),description:e.Yj().nullish(),columns:e.YO(e.Ik({name:e.Yj().trim().min(1),type:e.Yj().trim().min(1),isPk:e.zM().optional(),isFk:e.zM().optional(),nullable:e.zM().optional(),note:e.Yj().nullish()})).default([])})).default([]),relations:e.YO(e.Ik({fromTable:e.Yj(),fromColumn:e.Yj(),toTable:e.Yj(),toColumn:e.Yj(),label:e.Yj().nullish()})).default([]),endpoints:e.YO(e.Ik({method:e.Yj().trim().min(1),path:e.Yj().trim().min(1),domain:e.Yj().nullish(),description:e.Yj().nullish(),uses:e.YO(e.Ik({table:e.Yj(),access:e.Yj().default("read")})).default([])})).default([])});async function q(a=h.db){let[b]=await a.insert(i.syncState).values({id:"singleton",version:1}).onConflictDoUpdate({target:i.syncState.id,set:{version:(0,f.ll)`${i.syncState.version} + 1`}}).returning();return b.version}async function r(a,b=h.db,c={}){let d=s.parse(a),e=d.tables.length>0,f=d.endpoints.length>0,p=d.tables.map(a=>a.name);e&&await b.delete(i.dbTable).where(p.length?(0,g.Uo)((0,g.eq)(i.dbTable.source,"INTROSPECTION"),(0,g.KL)(i.dbTable.name,p)):(0,g.eq)(i.dbTable.source,"INTROSPECTION"));let t=await b.query.dbTable.findMany({columns:{id:!0,name:!0,domain:!0,x:!0,y:!0},with:{columns:{columns:{id:!0}}}}),u=await b.query.endpoint.findMany({columns:{id:!0,method:!0,path:!0,x:!0,y:!0},with:{tables:{columns:{tableId:!0}}}}),v=new Map(t.map(a=>[a.name,a])),w=t.map(a=>({id:a.id,name:a.name,domain:a.domain,columnCount:a.columns.length,x:a.x,y:a.y})),x=u.map(a=>({id:a.id,method:a.method,path:a.path,uses:a.tables.map(a=>({tableId:a.tableId})),x:a.x,y:a.y})),y=new Map;for(let a of d.tables){if(v.has(a.name))continue;let b=(0,n.uQ)({domain:a.domain??null,columnCount:a.columns.length},w,x);y.set(a.name,b),w.push({id:`new:${a.name}`,name:a.name,domain:a.domain??null,columnCount:a.columns.length,...b})}let z=new Map;for(let a of d.tables){let c=v.get(a.name),d=y.get(a.name),e=c?.x??d?.x??0,f=c?.y??d?.y??0,[h]=await b.insert(i.dbTable).values({name:a.name,domain:a.domain??null,description:a.description??null,source:"INTROSPECTION",x:e,y:f}).onConflictDoUpdate({target:i.dbTable.name,set:{...null!=a.domain?{domain:a.domain}:{},...null!=a.description?{description:a.description}:{},source:"INTROSPECTION"}}).returning();z.set(a.name,h.id),await b.delete(i.dbColumn).where((0,g.eq)(i.dbColumn.tableId,h.id)),a.columns.length&&await b.insert(i.dbColumn).values(a.columns.map((a,b)=>({tableId:h.id,name:a.name,type:a.type,isPk:a.isPk??!1,isFk:a.isFk??!1,nullable:a.nullable??!0,note:a.note??null,ord:b})))}let A=[...z.values()];for(let a of(A.length&&await b.delete(i.dbRelation).where((0,g.or)((0,g.RV)(i.dbRelation.fromTableId,A),(0,g.RV)(i.dbRelation.toTableId,A))),d.relations)){let c=z.get(a.fromTable),d=z.get(a.toTable);c&&d&&await b.insert(i.dbRelation).values({fromTableId:c,toTableId:d,fromColumn:a.fromColumn,toColumn:a.toColumn,label:a.label??`${a.fromColumn} → ${a.toTable}.${a.toColumn}`})}let B=new Set(d.endpoints.map(a=>`${a.method} ${a.path}`));if(f){let a=(await b.query.endpoint.findMany({where:(a,{eq:b})=>b(a.source,"INTROSPECTION")})).filter(a=>!B.has(`${a.method} ${a.path}`)).map(a=>a.id);a.length&&await b.delete(i.endpoint).where((0,g.RV)(i.endpoint.id,a))}for(let a of w)a.id.startsWith("new:")&&(a.id=z.get(a.name)??a.id);for(let a of d.endpoints){let d,e,f=await b.query.endpoint.findFirst({where:(b,{and:c,eq:d})=>c(d(b.method,a.method),d(b.path,a.path))});if(f)d=f.x,e=f.y;else{let b={id:`new:${a.method} ${a.path}`,method:a.method,path:a.path,uses:a.uses.map(a=>({tableId:z.get(a.table)??""})).filter(a=>a.tableId)},c=(0,n.ez)(b,w,x);d=c.x,e=c.y,x.push({...b,x:d,y:e})}let[h]=await b.insert(i.endpoint).values({method:a.method,path:a.path,domain:a.domain??null,description:a.description??null,source:"INTROSPECTION",x:d,y:e}).onConflictDoUpdate({target:[i.endpoint.method,i.endpoint.path],set:{...null!=a.domain?{domain:a.domain}:{},...null!=a.description?{description:a.description}:{},source:"INTROSPECTION"}}).returning();for(let d of((!c.partial||a.uses.length>0)&&await b.delete(i.endpointTable).where((0,g.eq)(i.endpointTable.endpointId,h.id)),a.uses)){let a=z.get(d.table)??(await b.query.dbTable.findFirst({where:(a,{eq:b})=>b(a.name,d.table)}))?.id;a&&await b.insert(i.endpointTable).values({endpointId:h.id,tableId:a,access:d.access})}}await (0,k.X)(b),await (0,l.q)(b);let C=await b.query.dbTable.findMany({where:(a,{eq:b})=>b(a.source,"INTROSPECTION"),columns:{x:!0,y:!0},with:{columns:{columns:{id:!0}}}}),D=await b.select({x:i.endpoint.x,y:i.endpoint.y}).from(i.endpoint);((0,m.v4)(C.map(a=>({x:a.x,y:a.y,columnCount:a.columns.length})))||(0,j.i)(D))&&await (0,o.r)(b);let E=await q(b);return{tables:d.tables.length,relations:d.relations.length,endpoints:d.endpoints.length,version:E}}d()}catch(a){d(a)}})},67114:(a,b,c)=>{c(73024),c(76760),c(31421),c(77598),c(48161),c(60455),c(15456)},75332:(a,b,c)=>{c.d(b,{R:()=>d});function d(a){let b=Object.keys(a.tableVars),c=new Map;if(!b.length){for(let b of a.routeFiles)c.set(b,[]);return c}let d=new Map;for(let b of a.edges){let a=d.get(b.from)??[];a.push(b.to),d.set(b.from,a)}let e=new Map(b.map(a=>[a,RegExp(`(?:query\\.${a}\\b|\\.from\\(\\s*${a}\\b)`)])),f=new Map(b.map(a=>[a,RegExp(`(?:insert|update|delete)\\(\\s*${a}\\b`)]));for(let g of a.routeFiles){let h=new Set([g]),i=[g];for(let a=0;a<2&&h.size<25;a++){let a=[];for(let b of i)for(let c of d.get(b)??[])h.has(c)||h.size>=25||(h.add(c),a.push(c));i=a}let j=new Set,k=new Set;for(let c of h){let d=a.content(c);if(d)for(let a of b)!j.has(a)&&e.get(a).test(d)&&j.add(a),!k.has(a)&&f.get(a).test(d)&&k.add(a)}let l=[];for(let c of b){let b=j.has(c),d=k.has(c);(b||d)&&l.push({table:a.tableVars[c],access:b&&d?"read-write":d?"write":"read"})}c.set(g,l)}return c}},76160:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{q:()=>j});var e=c(12839),f=c(74378),g=c(99121),h=a([f]);f=(h.then?(await h)():h)[0];let k=new Set(["DONE","CANCELLED","DEPRIORITIZED"]);async function i(a){let b=await a.query.node.findMany({where:(a,{and:b,eq:c,isNotNull:d})=>b(c(a.view,"ROADMAP"),d(a.planId)),columns:{planId:!0,status:!0}}),c=new Map;for(let a of b){let b=a.planId;c.set(b,(c.get(b)??!0)&&k.has(a.status))}return[...c.entries()].filter(([,a])=>a).map(([a])=>a)}async function j(a=f.db){let b=await i(a),c=a=>b.length?(0,e.or)((0,e.kZ)(a.planId),(0,e.RV)(a.planId,b)):(0,e.kZ)(a.planId),d=await a.delete(g.dbTable).where((0,e.Uo)((0,e.ne)(g.dbTable.source,"INTROSPECTION"),c(g.dbTable))).returning({id:g.dbTable.id}),h=await a.delete(g.endpoint).where((0,e.Uo)((0,e.ne)(g.endpoint.source,"INTROSPECTION"),c(g.endpoint))).returning({id:g.endpoint.id});return{tables:d.length,endpoints:h.length}}d()}catch(a){d(a)}})},87005:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{X:()=>i});var e=c(12839),f=c(74378),g=c(99121),h=a([f]);async function i(a=f.db){let[b,c]=await Promise.all([a.query.endpoint.findMany({where:(a,{ne:b})=>b(a.source,"INTROSPECTION")}),a.query.endpoint.findMany({where:(a,{eq:b})=>b(a.source,"INTROSPECTION")})]),d={collapsed:0,mappings:[]};for(let f of b){let b=c.find(a=>(function(a,b){if(a.method.toUpperCase()!==b.method.toUpperCase())return!1;let c=a.path.replace(/\{[^}]*\}/g,"{}"),d=b.path.replace(/\{[^}]*\}/g,"{}");return d===c||d.endsWith(c)})(f,a));b&&(await a.delete(g.endpoint).where((0,e.eq)(g.endpoint.id,f.id)),d.collapsed++,d.mappings.push({planned:`${f.method} ${f.path}`,code:`${b.method} ${b.path}`}))}return d}f=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},91860:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{r:()=>j});var e=c(12839),f=c(74378),g=c(99121),h=c(56241);c(67114);var i=a([f]);async function j(a=f.db,b){let[c,d]=await Promise.all([a.query.dbTable.findMany({with:{columns:{columns:{id:!0}}},orderBy:(a,{asc:b})=>b(a.name)}),a.query.endpoint.findMany({with:{tables:{columns:{tableId:!0}}}})]),i=(0,h.kq)(c.map(a=>({id:a.id,name:a.name,domain:a.domain,columnCount:a.columns.length})),d.map(a=>({id:a.id,method:a.method,path:a.path,uses:a.tables.map(a=>({tableId:a.tableId}))})),{viewportAspect:b}),k=0;for(let b of c){let c=i.tables.get(b.id);c&&(Math.round(c.x)!==Math.round(b.x)||Math.round(c.y)!==Math.round(b.y))&&(await a.update(g.dbTable).set({x:c.x,y:c.y}).where((0,e.eq)(g.dbTable.id,b.id)),k++)}for(let b of d){let c=i.endpoints.get(b.id);c&&(Math.round(c.x)!==Math.round(b.x)||Math.round(c.y)!==Math.round(b.y))&&(await a.update(g.endpoint).set({x:c.x,y:c.y}).where((0,e.eq)(g.endpoint.id,b.id)),k++)}return k}f=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},96904:(a,b,c)=>{var d,e;function f(a,b,c){function d(c,d){if(c._zod||Object.defineProperty(c,"_zod",{value:{def:d,constr:g,traits:new Set},enumerable:!1}),c._zod.traits.has(a))return;c._zod.traits.add(a),b(c,d);let e=g.prototype,f=Object.keys(e);for(let a=0;a<f.length;a++){let b=f[a];b in c||(c[b]=e[b].bind(c))}}let e=c?.Parent??Object;class f extends e{}function g(a){var b;let e=c?.Parent?new f:this;for(let c of(d(e,a),(b=e._zod).deferred??(b.deferred=[]),e._zod.deferred))c();return e}return Object.defineProperty(f,"name",{value:a}),Object.defineProperty(g,"init",{value:d}),Object.defineProperty(g,Symbol.hasInstance,{value:b=>!!c?.Parent&&b instanceof c.Parent||b?._zod?.traits?.has(a)}),Object.defineProperty(g,"name",{value:a}),g}c.d(b,{EB:()=>ck,YO:()=>cO,zM:()=>cJ,ai:()=>cF,Ik:()=>cQ,Yj:()=>cj}),Symbol("zod_brand");class g extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class h extends Error{constructor(a){super(`Encountered unidirectional transform during encode: ${a}`),this.name="ZodEncodeError"}}(d=globalThis).__zod_globalConfig??(d.__zod_globalConfig={});let i=globalThis.__zod_globalConfig;function j(a){return a&&Object.assign(i,a),i}let k=/^[cC][0-9a-z]{6,}$/,l=/^[0-9a-z]+$/,m=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,n=/^[0-9a-vA-V]{20}$/,o=/^[A-Za-z0-9]{27}$/,p=/^[a-zA-Z0-9_-]{21}$/,q=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,r=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,s=a=>a?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${a}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,t=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,u=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,v=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,w=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,x=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,y=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,z=/^[A-Za-z0-9_-]*$/,A=/^https?$/,B=/^\+[1-9]\d{6,14}$/,C="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",D=RegExp(`^${C}$`);function E(a){let b="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"==typeof a.precision?-1===a.precision?`${b}`:0===a.precision?`${b}:[0-5]\\d`:`${b}:[0-5]\\d\\.\\d{${a.precision}}`:`${b}(?::[0-5]\\d(?:\\.\\d+)?)?`}let F=/^-?\d+$/,G=/^-?\d+(?:\.\d+)?$/,H=/^(?:true|false)$/i,I=/^[^A-Z]*$/,J=/^[^a-z]*$/;function K(a){let b=Object.values(a).filter(a=>"number"==typeof a);return Object.entries(a).filter(([a,c])=>-1===b.indexOf(+a)).map(([a,b])=>b)}function L(a,b){return"bigint"==typeof b?b.toString():b}function M(a){return{get value(){{let b=a();return Object.defineProperty(this,"value",{value:b}),b}}}}function N(a){let b=+!!a.startsWith("^"),c=a.endsWith("$")?a.length-1:a.length;return a.slice(b,c)}let O=Symbol("evaluating");function P(a,b,c){let d;Object.defineProperty(a,b,{get(){if(d!==O)return void 0===d&&(d=O,d=c()),d},set(c){Object.defineProperty(a,b,{value:c})},configurable:!0})}function Q(a,b,c){Object.defineProperty(a,b,{value:c,writable:!0,enumerable:!0,configurable:!0})}function R(...a){let b={};for(let c of a)Object.assign(b,Object.getOwnPropertyDescriptors(c));return Object.defineProperties({},b)}function S(a){return JSON.stringify(a)}let T="captureStackTrace"in Error?Error.captureStackTrace:(...a)=>{};function U(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}let V=M(()=>{if(i.jitless||"u">typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return Function(""),!0}catch(a){return!1}});function W(a){if(!1===U(a))return!1;let b=a.constructor;if(void 0===b||"function"!=typeof b)return!0;let c=b.prototype;return!1!==U(c)&&!1!==Object.prototype.hasOwnProperty.call(c,"isPrototypeOf")}function X(a){return W(a)?{...a}:Array.isArray(a)?[...a]:a instanceof Map?new Map(a):a instanceof Set?new Set(a):a}let Y=new Set(["string","number","symbol"]);function Z(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function $(a,b,c){let d=new a._zod.constr(b??a._zod.def);return(!b||c?.parent)&&(d._zod.parent=a),d}function _(a){if(!a)return{};if("string"==typeof a)return{error:()=>a};if(a?.message!==void 0){if(a?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");a.error=a.message}return(delete a.message,"string"==typeof a.error)?{...a,error:()=>a.error}:a}let aa={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-0x80000000,0x7fffffff],uint32:[0,0xffffffff],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function ab(a,b=0){if(!0===a.aborted)return!0;for(let c=b;c<a.issues.length;c++)if(a.issues[c]?.continue!==!0)return!0;return!1}function ac(a,b){return b.map(b=>(b.path??(b.path=[]),b.path.unshift(a),b))}function ad(a){return"string"==typeof a?a:a?.message}function ae(a,b,c){let d=a.message?a.message:ad(a.inst?._zod.def?.error?.(a))??ad(b?.error?.(a))??ad(c.customError?.(a))??ad(c.localeError?.(a))??"Invalid input",{inst:e,continue:f,input:g,...h}=a;return h.path??(h.path=[]),h.message=d,b?.reportInput&&(h.input=g),h}function af(a){return Array.isArray(a)?"array":"string"==typeof a?"string":"unknown"}function ag(...a){let[b,c,d]=a;return"string"==typeof b?{message:b,code:"custom",input:c,inst:d}:{...b}}let ah=f("$ZodCheck",(a,b)=>{var c;a._zod??(a._zod={}),a._zod.def=b,(c=a._zod).onattach??(c.onattach=[])}),ai={number:"number",bigint:"bigint",object:"date"},aj=f("$ZodCheckLessThan",(a,b)=>{ah.init(a,b);let c=ai[typeof b.value];a._zod.onattach.push(a=>{let c=a._zod.bag,d=(b.inclusive?c.maximum:c.exclusiveMaximum)??1/0;b.value<d&&(b.inclusive?c.maximum=b.value:c.exclusiveMaximum=b.value)}),a._zod.check=d=>{(b.inclusive?d.value<=b.value:d.value<b.value)||d.issues.push({origin:c,code:"too_big",maximum:"object"==typeof b.value?b.value.getTime():b.value,input:d.value,inclusive:b.inclusive,inst:a,continue:!b.abort})}}),ak=f("$ZodCheckGreaterThan",(a,b)=>{ah.init(a,b);let c=ai[typeof b.value];a._zod.onattach.push(a=>{let c=a._zod.bag,d=(b.inclusive?c.minimum:c.exclusiveMinimum)??-1/0;b.value>d&&(b.inclusive?c.minimum=b.value:c.exclusiveMinimum=b.value)}),a._zod.check=d=>{(b.inclusive?d.value>=b.value:d.value>b.value)||d.issues.push({origin:c,code:"too_small",minimum:"object"==typeof b.value?b.value.getTime():b.value,input:d.value,inclusive:b.inclusive,inst:a,continue:!b.abort})}}),al=f("$ZodCheckMultipleOf",(a,b)=>{ah.init(a,b),a._zod.onattach.push(a=>{var c;(c=a._zod.bag).multipleOf??(c.multipleOf=b.value)}),a._zod.check=c=>{let d,e,f;if(typeof c.value!=typeof b.value)throw Error("Cannot mix number and bigint in multiple_of check.");("bigint"==typeof c.value?c.value%b.value===BigInt(0):0==(e=Math.round(d=c.value/b.value),f=Number.EPSILON*Math.max(Math.abs(d),1),Math.abs(d-e)<f?0:d-e))||c.issues.push({origin:typeof c.value,code:"not_multiple_of",divisor:b.value,input:c.value,inst:a,continue:!b.abort})}}),am=f("$ZodCheckNumberFormat",(a,b)=>{ah.init(a,b),b.format=b.format||"float64";let c=b.format?.includes("int"),d=c?"int":"number",[e,f]=aa[b.format];a._zod.onattach.push(a=>{let d=a._zod.bag;d.format=b.format,d.minimum=e,d.maximum=f,c&&(d.pattern=F)}),a._zod.check=g=>{let h=g.value;if(c){if(!Number.isInteger(h))return void g.issues.push({expected:d,format:b.format,code:"invalid_type",continue:!1,input:h,inst:a});if(!Number.isSafeInteger(h))return void(h>0?g.issues.push({input:h,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:a,origin:d,inclusive:!0,continue:!b.abort}):g.issues.push({input:h,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:a,origin:d,inclusive:!0,continue:!b.abort}))}h<e&&g.issues.push({origin:"number",input:h,code:"too_small",minimum:e,inclusive:!0,inst:a,continue:!b.abort}),h>f&&g.issues.push({origin:"number",input:h,code:"too_big",maximum:f,inclusive:!0,inst:a,continue:!b.abort})}}),an=f("$ZodCheckMaxLength",(a,b)=>{var c;ah.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return null!=b&&void 0!==b.length}),a._zod.onattach.push(a=>{let c=a._zod.bag.maximum??1/0;b.maximum<c&&(a._zod.bag.maximum=b.maximum)}),a._zod.check=c=>{let d=c.value;if(d.length<=b.maximum)return;let e=af(d);c.issues.push({origin:e,code:"too_big",maximum:b.maximum,inclusive:!0,input:d,inst:a,continue:!b.abort})}}),ao=f("$ZodCheckMinLength",(a,b)=>{var c;ah.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return null!=b&&void 0!==b.length}),a._zod.onattach.push(a=>{let c=a._zod.bag.minimum??-1/0;b.minimum>c&&(a._zod.bag.minimum=b.minimum)}),a._zod.check=c=>{let d=c.value;if(d.length>=b.minimum)return;let e=af(d);c.issues.push({origin:e,code:"too_small",minimum:b.minimum,inclusive:!0,input:d,inst:a,continue:!b.abort})}}),ap=f("$ZodCheckLengthEquals",(a,b)=>{var c;ah.init(a,b),(c=a._zod.def).when??(c.when=a=>{let b=a.value;return null!=b&&void 0!==b.length}),a._zod.onattach.push(a=>{let c=a._zod.bag;c.minimum=b.length,c.maximum=b.length,c.length=b.length}),a._zod.check=c=>{let d=c.value,e=d.length;if(e===b.length)return;let f=af(d),g=e>b.length;c.issues.push({origin:f,...g?{code:"too_big",maximum:b.length}:{code:"too_small",minimum:b.length},inclusive:!0,exact:!0,input:c.value,inst:a,continue:!b.abort})}}),aq=f("$ZodCheckStringFormat",(a,b)=>{var c,d;ah.init(a,b),a._zod.onattach.push(a=>{let c=a._zod.bag;c.format=b.format,b.pattern&&(c.patterns??(c.patterns=new Set),c.patterns.add(b.pattern))}),b.pattern?(c=a._zod).check??(c.check=c=>{b.pattern.lastIndex=0,b.pattern.test(c.value)||c.issues.push({origin:"string",code:"invalid_format",format:b.format,input:c.value,...b.pattern?{pattern:b.pattern.toString()}:{},inst:a,continue:!b.abort})}):(d=a._zod).check??(d.check=()=>{})}),ar=f("$ZodCheckRegex",(a,b)=>{aq.init(a,b),a._zod.check=c=>{b.pattern.lastIndex=0,b.pattern.test(c.value)||c.issues.push({origin:"string",code:"invalid_format",format:"regex",input:c.value,pattern:b.pattern.toString(),inst:a,continue:!b.abort})}}),as=f("$ZodCheckLowerCase",(a,b)=>{b.pattern??(b.pattern=I),aq.init(a,b)}),at=f("$ZodCheckUpperCase",(a,b)=>{b.pattern??(b.pattern=J),aq.init(a,b)}),au=f("$ZodCheckIncludes",(a,b)=>{ah.init(a,b);let c=Z(b.includes),d=new RegExp("number"==typeof b.position?`^.{${b.position}}${c}`:c);b.pattern=d,a._zod.onattach.push(a=>{let b=a._zod.bag;b.patterns??(b.patterns=new Set),b.patterns.add(d)}),a._zod.check=c=>{c.value.includes(b.includes,b.position)||c.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:b.includes,input:c.value,inst:a,continue:!b.abort})}}),av=f("$ZodCheckStartsWith",(a,b)=>{ah.init(a,b);let c=RegExp(`^${Z(b.prefix)}.*`);b.pattern??(b.pattern=c),a._zod.onattach.push(a=>{let b=a._zod.bag;b.patterns??(b.patterns=new Set),b.patterns.add(c)}),a._zod.check=c=>{c.value.startsWith(b.prefix)||c.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:b.prefix,input:c.value,inst:a,continue:!b.abort})}}),aw=f("$ZodCheckEndsWith",(a,b)=>{ah.init(a,b);let c=RegExp(`.*${Z(b.suffix)}$`);b.pattern??(b.pattern=c),a._zod.onattach.push(a=>{let b=a._zod.bag;b.patterns??(b.patterns=new Set),b.patterns.add(c)}),a._zod.check=c=>{c.value.endsWith(b.suffix)||c.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:b.suffix,input:c.value,inst:a,continue:!b.abort})}}),ax=f("$ZodCheckOverwrite",(a,b)=>{ah.init(a,b),a._zod.check=a=>{a.value=b.tx(a.value)}});class ay{constructor(a=[]){this.content=[],this.indent=0,this&&(this.args=a)}indented(a){this.indent+=1,a(this),this.indent-=1}write(a){if("function"==typeof a){a(this,{execution:"sync"}),a(this,{execution:"async"});return}let b=a.split("\n").filter(a=>a),c=Math.min(...b.map(a=>a.length-a.trimStart().length));for(let a of b.map(a=>a.slice(c)).map(a=>" ".repeat(2*this.indent)+a))this.content.push(a)}compile(){return Function(...this?.args,[...(this?.content??[""]).map(a=>` ${a}`)].join("\n"))}}let az=(a,b)=>{a.name="$ZodError",Object.defineProperty(a,"_zod",{value:a._zod,enumerable:!1}),Object.defineProperty(a,"issues",{value:b,enumerable:!1}),a.message=JSON.stringify(b,L,2),Object.defineProperty(a,"toString",{value:()=>a.message,enumerable:!1})},aA=f("$ZodError",az),aB=f("$ZodError",az,{Parent:Error}),aC=a=>(b,c,d,e)=>{let f=d?{...d,async:!1}:{async:!1},h=b._zod.run({value:c,issues:[]},f);if(h instanceof Promise)throw new g;if(h.issues.length){let b=new(e?.Err??a)(h.issues.map(a=>ae(a,f,j())));throw T(b,e?.callee),b}return h.value},aD=a=>async(b,c,d,e)=>{let f=d?{...d,async:!0}:{async:!0},g=b._zod.run({value:c,issues:[]},f);if(g instanceof Promise&&(g=await g),g.issues.length){let b=new(e?.Err??a)(g.issues.map(a=>ae(a,f,j())));throw T(b,e?.callee),b}return g.value},aE=a=>(b,c,d)=>{let e=d?{...d,async:!1}:{async:!1},f=b._zod.run({value:c,issues:[]},e);if(f instanceof Promise)throw new g;return f.issues.length?{success:!1,error:new(a??aA)(f.issues.map(a=>ae(a,e,j())))}:{success:!0,data:f.value}},aF=aE(aB),aG=a=>async(b,c,d)=>{let e=d?{...d,async:!0}:{async:!0},f=b._zod.run({value:c,issues:[]},e);return f instanceof Promise&&(f=await f),f.issues.length?{success:!1,error:new a(f.issues.map(a=>ae(a,e,j())))}:{success:!0,data:f.value}},aH=aG(aB),aI={major:4,minor:4,patch:3},aJ=f("$ZodType",(a,b)=>{var c;a??(a={}),a._zod.def=b,a._zod.bag=a._zod.bag||{},a._zod.version=aI;let d=[...a._zod.def.checks??[]];for(let b of(a._zod.traits.has("$ZodCheck")&&d.unshift(a),d))for(let c of b._zod.onattach)c(a);if(0===d.length)(c=a._zod).deferred??(c.deferred=[]),a._zod.deferred?.push(()=>{a._zod.run=a._zod.parse});else{let b=(a,b,c)=>{let d,e=ab(a);for(let f of b){if(f._zod.def.when){if(function(a,b=0){if(!0===a.aborted)return!0;for(let c=b;c<a.issues.length;c++)if(a.issues[c]?.continue===!1)return!0;return!1}(a)||!f._zod.def.when(a))continue}else if(e)continue;let b=a.issues.length,h=f._zod.check(a);if(h instanceof Promise&&c?.async===!1)throw new g;if(d||h instanceof Promise)d=(d??Promise.resolve()).then(async()=>{await h,a.issues.length!==b&&(e||(e=ab(a,b)))});else{if(a.issues.length===b)continue;e||(e=ab(a,b))}}return d?d.then(()=>a):a},c=(c,e,f)=>{if(ab(c))return c.aborted=!0,c;let h=b(e,d,f);if(h instanceof Promise){if(!1===f.async)throw new g;return h.then(b=>a._zod.parse(b,f))}return a._zod.parse(h,f)};a._zod.run=(e,f)=>{if(f.skipChecks)return a._zod.parse(e,f);if("backward"===f.direction){let b=a._zod.parse({value:e.value,issues:[]},{...f,skipChecks:!0});return b instanceof Promise?b.then(a=>c(a,e,f)):c(b,e,f)}let h=a._zod.parse(e,f);if(h instanceof Promise){if(!1===f.async)throw new g;return h.then(a=>b(a,d,f))}return b(h,d,f)}}P(a,"~standard",()=>({validate:b=>{try{let c=aF(a,b);return c.success?{value:c.data}:{issues:c.error?.issues}}catch(c){return aH(a,b).then(a=>a.success?{value:a.data}:{issues:a.error?.issues})}},vendor:"zod",version:1}))}),aK=f("$ZodString",(a,b)=>{var c;let d;aJ.init(a,b),a._zod.pattern=[...a?._zod.bag?.patterns??[]].pop()??(d=(c=a._zod.bag)?`[\\s\\S]{${c?.minimum??0},${c?.maximum??""}}`:"[\\s\\S]*",RegExp(`^${d}$`)),a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=String(c.value)}catch(a){}return"string"==typeof c.value||c.issues.push({expected:"string",code:"invalid_type",input:c.value,inst:a}),c}}),aL=f("$ZodStringFormat",(a,b)=>{aq.init(a,b),aK.init(a,b)}),aM=f("$ZodGUID",(a,b)=>{b.pattern??(b.pattern=r),aL.init(a,b)}),aN=f("$ZodUUID",(a,b)=>{if(b.version){let a={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[b.version];if(void 0===a)throw Error(`Invalid UUID version: "${b.version}"`);b.pattern??(b.pattern=s(a))}else b.pattern??(b.pattern=s());aL.init(a,b)}),aO=f("$ZodEmail",(a,b)=>{b.pattern??(b.pattern=t),aL.init(a,b)}),aP=f("$ZodURL",(a,b)=>{aL.init(a,b),a._zod.check=c=>{try{let d=c.value.trim();if(!b.normalize&&b.protocol?.source===A.source&&!/^https?:\/\//i.test(d))return void c.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:c.value,inst:a,continue:!b.abort});let e=new URL(d);b.hostname&&(b.hostname.lastIndex=0,b.hostname.test(e.hostname)||c.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:b.hostname.source,input:c.value,inst:a,continue:!b.abort})),b.protocol&&(b.protocol.lastIndex=0,b.protocol.test(e.protocol.endsWith(":")?e.protocol.slice(0,-1):e.protocol)||c.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:b.protocol.source,input:c.value,inst:a,continue:!b.abort})),b.normalize?c.value=e.href:c.value=d;return}catch(d){c.issues.push({code:"invalid_format",format:"url",input:c.value,inst:a,continue:!b.abort})}}}),aQ=f("$ZodEmoji",(a,b)=>{b.pattern??(b.pattern=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),aL.init(a,b)}),aR=f("$ZodNanoID",(a,b)=>{b.pattern??(b.pattern=p),aL.init(a,b)}),aS=f("$ZodCUID",(a,b)=>{b.pattern??(b.pattern=k),aL.init(a,b)}),aT=f("$ZodCUID2",(a,b)=>{b.pattern??(b.pattern=l),aL.init(a,b)}),aU=f("$ZodULID",(a,b)=>{b.pattern??(b.pattern=m),aL.init(a,b)}),aV=f("$ZodXID",(a,b)=>{b.pattern??(b.pattern=n),aL.init(a,b)}),aW=f("$ZodKSUID",(a,b)=>{b.pattern??(b.pattern=o),aL.init(a,b)}),aX=f("$ZodISODateTime",(a,b)=>{let c,d,e;b.pattern??(c=E({precision:b.precision}),d=["Z"],b.local&&d.push(""),b.offset&&d.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)"),e=`${c}(?:${d.join("|")})`,b.pattern=RegExp(`^${C}T(?:${e})$`)),aL.init(a,b)}),aY=f("$ZodISODate",(a,b)=>{b.pattern??(b.pattern=D),aL.init(a,b)}),aZ=f("$ZodISOTime",(a,b)=>{b.pattern??(b.pattern=RegExp(`^${E(b)}$`)),aL.init(a,b)}),a$=f("$ZodISODuration",(a,b)=>{b.pattern??(b.pattern=q),aL.init(a,b)}),a_=f("$ZodIPv4",(a,b)=>{b.pattern??(b.pattern=u),aL.init(a,b),a._zod.bag.format="ipv4"}),a0=f("$ZodIPv6",(a,b)=>{b.pattern??(b.pattern=v),aL.init(a,b),a._zod.bag.format="ipv6",a._zod.check=c=>{try{new URL(`http://[${c.value}]`)}catch{c.issues.push({code:"invalid_format",format:"ipv6",input:c.value,inst:a,continue:!b.abort})}}}),a1=f("$ZodCIDRv4",(a,b)=>{b.pattern??(b.pattern=w),aL.init(a,b)}),a2=f("$ZodCIDRv6",(a,b)=>{b.pattern??(b.pattern=x),aL.init(a,b),a._zod.check=c=>{let d=c.value.split("/");try{if(2!==d.length)throw Error();let[a,b]=d;if(!b)throw Error();let c=Number(b);if(`${c}`!==b||c<0||c>128)throw Error();new URL(`http://[${a}]`)}catch{c.issues.push({code:"invalid_format",format:"cidrv6",input:c.value,inst:a,continue:!b.abort})}}});function a3(a){if(""===a)return!0;if(/\s/.test(a)||a.length%4!=0)return!1;try{return atob(a),!0}catch{return!1}}let a4=f("$ZodBase64",(a,b)=>{b.pattern??(b.pattern=y),aL.init(a,b),a._zod.bag.contentEncoding="base64",a._zod.check=c=>{a3(c.value)||c.issues.push({code:"invalid_format",format:"base64",input:c.value,inst:a,continue:!b.abort})}}),a5=f("$ZodBase64URL",(a,b)=>{b.pattern??(b.pattern=z),aL.init(a,b),a._zod.bag.contentEncoding="base64url",a._zod.check=c=>{!function(a){if(!z.test(a))return!1;let b=a.replace(/[-_]/g,a=>"-"===a?"+":"/");return a3(b.padEnd(4*Math.ceil(b.length/4),"="))}(c.value)&&c.issues.push({code:"invalid_format",format:"base64url",input:c.value,inst:a,continue:!b.abort})}}),a6=f("$ZodE164",(a,b)=>{b.pattern??(b.pattern=B),aL.init(a,b)}),a7=f("$ZodJWT",(a,b)=>{aL.init(a,b),a._zod.check=c=>{!function(a,b=null){try{let c=a.split(".");if(3!==c.length)return!1;let[d]=c;if(!d)return!1;let e=JSON.parse(atob(d));if("typ"in e&&e?.typ!=="JWT"||!e.alg||b&&(!("alg"in e)||e.alg!==b))return!1;return!0}catch{return!1}}(c.value,b.alg)&&c.issues.push({code:"invalid_format",format:"jwt",input:c.value,inst:a,continue:!b.abort})}}),a8=f("$ZodNumber",(a,b)=>{aJ.init(a,b),a._zod.pattern=a._zod.bag.pattern??G,a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=Number(c.value)}catch(a){}let e=c.value;if("number"==typeof e&&!Number.isNaN(e)&&Number.isFinite(e))return c;let f="number"==typeof e?Number.isNaN(e)?"NaN":Number.isFinite(e)?void 0:"Infinity":void 0;return c.issues.push({expected:"number",code:"invalid_type",input:e,inst:a,...f?{received:f}:{}}),c}}),a9=f("$ZodNumberFormat",(a,b)=>{am.init(a,b),a8.init(a,b)}),ba=f("$ZodBoolean",(a,b)=>{aJ.init(a,b),a._zod.pattern=H,a._zod.parse=(c,d)=>{if(b.coerce)try{c.value=!!c.value}catch(a){}let e=c.value;return"boolean"==typeof e||c.issues.push({expected:"boolean",code:"invalid_type",input:e,inst:a}),c}}),bb=f("$ZodUnknown",(a,b)=>{aJ.init(a,b),a._zod.parse=a=>a}),bc=f("$ZodNever",(a,b)=>{aJ.init(a,b),a._zod.parse=(b,c)=>(b.issues.push({expected:"never",code:"invalid_type",input:b.value,inst:a}),b)});function bd(a,b,c){a.issues.length&&b.issues.push(...ac(c,a.issues)),b.value[c]=a.value}let be=f("$ZodArray",(a,b)=>{aJ.init(a,b),a._zod.parse=(c,d)=>{let e=c.value;if(!Array.isArray(e))return c.issues.push({expected:"array",code:"invalid_type",input:e,inst:a}),c;c.value=Array(e.length);let f=[];for(let a=0;a<e.length;a++){let g=e[a],h=b.element._zod.run({value:g,issues:[]},d);h instanceof Promise?f.push(h.then(b=>bd(b,c,a))):bd(h,c,a)}return f.length?Promise.all(f).then(()=>c):c}});function bf(a,b,c,d,e,f){let g=c in d;if(a.issues.length){if(e&&f&&!g)return;b.issues.push(...ac(c,a.issues))}if(!g&&!e){a.issues.length||b.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[c]});return}void 0===a.value?g&&(b.value[c]=void 0):b.value[c]=a.value}function bg(a){var b;let c=Object.keys(a.shape);for(let b of c)if(!a.shape?.[b]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${b}": expected a Zod schema`);let d=Object.keys(b=a.shape).filter(a=>"optional"===b[a]._zod.optin&&"optional"===b[a]._zod.optout);return{...a,keys:c,keySet:new Set(c),numKeys:c.length,optionalKeys:new Set(d)}}function bh(a,b,c,d,e,f){let g=[],h=e.keySet,i=e.catchall._zod,j=i.def.type,k="optional"===i.optin,l="optional"===i.optout;for(let e in b){if("__proto__"===e||h.has(e))continue;if("never"===j){g.push(e);continue}let f=i.run({value:b[e],issues:[]},d);f instanceof Promise?a.push(f.then(a=>bf(a,c,e,b,k,l))):bf(f,c,e,b,k,l)}return(g.length&&c.issues.push({code:"unrecognized_keys",keys:g,input:b,inst:f}),a.length)?Promise.all(a).then(()=>c):c}let bi=f("$ZodObject",(a,b)=>{let c;aJ.init(a,b);let d=Object.getOwnPropertyDescriptor(b,"shape");if(!d?.get){let a=b.shape;Object.defineProperty(b,"shape",{get:()=>{let c={...a};return Object.defineProperty(b,"shape",{value:c}),c}})}let e=M(()=>bg(b));P(a._zod,"propValues",()=>{let a=b.shape,c={};for(let b in a){let d=a[b]._zod;if(d.values)for(let a of(c[b]??(c[b]=new Set),d.values))c[b].add(a)}return c});let f=b.catchall;a._zod.parse=(b,d)=>{c??(c=e.value);let g=b.value;if(!U(g))return b.issues.push({expected:"object",code:"invalid_type",input:g,inst:a}),b;b.value={};let h=[],i=c.shape;for(let a of c.keys){let c=i[a],e="optional"===c._zod.optin,f="optional"===c._zod.optout,j=c._zod.run({value:g[a],issues:[]},d);j instanceof Promise?h.push(j.then(c=>bf(c,b,a,g,e,f))):bf(j,b,a,g,e,f)}return f?bh(h,g,b,d,e.value,a):h.length?Promise.all(h).then(()=>b):b}}),bj=f("$ZodObjectJIT",(a,b)=>{let c,d;bi.init(a,b);let e=a._zod.parse,f=M(()=>bg(b)),g=!i.jitless,h=g&&V.value,j=b.catchall;a._zod.parse=(i,k)=>{d??(d=f.value);let l=i.value;return U(l)?g&&h&&k?.async===!1&&!0!==k.jitless?(c||(c=(a=>{let b=new ay(["shape","payload","ctx"]),c=f.value,d=a=>{let b=S(a);return`shape[${b}]._zod.run({ value: input[${b}], issues: [] }, ctx)`};b.write("const input = payload.value;");let e=Object.create(null),g=0;for(let a of c.keys)e[a]=`key_${g++}`;for(let f of(b.write("const newResult = {};"),c.keys)){let c=e[f],g=S(f),h=a[f],i=h?._zod?.optin==="optional",j=h?._zod?.optout==="optional";b.write(`const ${c} = ${d(f)};`),i&&j?b.write(`
2
2
  if (${c}.issues.length) {
3
3
  if (${g} in input) {
4
4
  payload.issues = payload.issues.concat(${c}.issues.map(iss => ({