trybeacon 0.1.61 → 0.1.63

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 (147) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +22 -22
  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/board-layout/route.js +1 -1
  24. package/.next/server/app/api/db/backfill-access/route.js +1 -1
  25. package/.next/server/app/api/db/backfill-access/route.js.nft.json +1 -1
  26. package/.next/server/app/api/draft/approve/route.js +1 -1
  27. package/.next/server/app/api/draft/approve/route.js.nft.json +1 -1
  28. package/.next/server/app/api/draft/route.js +1 -1
  29. package/.next/server/app/api/draft/route.js.nft.json +1 -1
  30. package/.next/server/app/api/draft/status/route.js +1 -1
  31. package/.next/server/app/api/draft/status/route.js.nft.json +1 -1
  32. package/.next/server/app/api/init/route.js +1 -1
  33. package/.next/server/app/api/plan/annotations/route.js +1 -1
  34. package/.next/server/app/api/plan/annotations/route.js.nft.json +1 -1
  35. package/.next/server/app/api/plan/approve/route.js +1 -1
  36. package/.next/server/app/api/plan/approve/route.js.nft.json +1 -1
  37. package/.next/server/app/api/plan/markdown/route.js +1 -1
  38. package/.next/server/app/api/plan/markdown/route.js.nft.json +1 -1
  39. package/.next/server/app/api/plan/route.js +1 -1
  40. package/.next/server/app/api/plan/route.js.nft.json +1 -1
  41. package/.next/server/app/api/plan/verdict/route.js +1 -1
  42. package/.next/server/app/api/plan/verdict/route.js.nft.json +1 -1
  43. package/.next/server/app/api/reset/route.js +1 -1
  44. package/.next/server/app/api/reset/route.js.nft.json +1 -1
  45. package/.next/server/app/api/share/create/route.js +1 -1
  46. package/.next/server/app/api/share/create/route.js.nft.json +1 -1
  47. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  48. package/.next/server/app/docs.html +1 -1
  49. package/.next/server/app/docs.rsc +2 -2
  50. package/.next/server/app/docs.segments/_full.segment.rsc +2 -2
  51. package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  52. package/.next/server/app/docs.segments/_index.segment.rsc +2 -2
  53. package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  54. package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
  55. package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  56. package/.next/server/app/feedback/page_client-reference-manifest.js +1 -1
  57. package/.next/server/app/feedback.html +1 -1
  58. package/.next/server/app/feedback.rsc +2 -2
  59. package/.next/server/app/feedback.segments/_full.segment.rsc +2 -2
  60. package/.next/server/app/feedback.segments/_head.segment.rsc +1 -1
  61. package/.next/server/app/feedback.segments/_index.segment.rsc +2 -2
  62. package/.next/server/app/feedback.segments/_tree.segment.rsc +2 -2
  63. package/.next/server/app/feedback.segments/feedback/__PAGE__.segment.rsc +1 -1
  64. package/.next/server/app/feedback.segments/feedback.segment.rsc +1 -1
  65. package/.next/server/app/help/page_client-reference-manifest.js +1 -1
  66. package/.next/server/app/help.html +1 -1
  67. package/.next/server/app/help.rsc +2 -2
  68. package/.next/server/app/help.segments/_full.segment.rsc +2 -2
  69. package/.next/server/app/help.segments/_head.segment.rsc +1 -1
  70. package/.next/server/app/help.segments/_index.segment.rsc +2 -2
  71. package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
  72. package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
  73. package/.next/server/app/help.segments/help.segment.rsc +1 -1
  74. package/.next/server/app/index.html +1 -1
  75. package/.next/server/app/index.rsc +3 -3
  76. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  77. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  78. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  79. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  80. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  81. package/.next/server/app/map/page.js +1 -1
  82. package/.next/server/app/map/page.js.nft.json +1 -1
  83. package/.next/server/app/map/page_client-reference-manifest.js +1 -1
  84. package/.next/server/app/page.js +2 -2
  85. package/.next/server/app/page.js.nft.json +1 -1
  86. package/.next/server/app/page_client-reference-manifest.js +1 -1
  87. package/.next/server/app/plan/page.js +2 -2
  88. package/.next/server/app/plan/page.js.nft.json +1 -1
  89. package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
  90. package/.next/server/app/s/[token]/page.js +1 -1
  91. package/.next/server/app/s/[token]/page.js.nft.json +1 -1
  92. package/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
  93. package/.next/server/app/settings/page.js +1 -1
  94. package/.next/server/app/settings/page.js.nft.json +1 -1
  95. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  96. package/.next/server/app-paths-manifest.json +22 -22
  97. package/.next/server/chunks/1130.js +1 -1
  98. package/.next/server/chunks/2179.js +1 -0
  99. package/.next/server/chunks/2343.js +1 -0
  100. package/.next/server/chunks/2994.js +2 -0
  101. package/.next/server/chunks/3098.js +1 -1
  102. package/.next/server/chunks/3221.js +5 -0
  103. package/.next/server/chunks/3284.js +154 -0
  104. package/.next/server/chunks/3622.js +1 -1
  105. package/.next/server/chunks/5719.js +1 -0
  106. package/.next/server/chunks/9734.js +1 -1
  107. package/.next/server/middleware-build-manifest.js +1 -1
  108. package/.next/server/pages/404.html +1 -1
  109. package/.next/server/pages/500.html +1 -1
  110. package/.next/server/server-reference-manifest.js +1 -1
  111. package/.next/server/server-reference-manifest.json +1 -1
  112. package/.next/static/chunks/5780-fd253c7329871c77.js +1 -0
  113. package/.next/static/chunks/{3021-ed52ee7b3f02e2cd.js → 5957-83f611fcd5a08b45.js} +1 -1
  114. package/.next/static/chunks/766-242213d211df0afd.js +1 -0
  115. package/.next/static/chunks/{5847-5ddb55da26c93a1e.js → 8915-fa61a860c63a7c85.js} +3 -3
  116. package/.next/static/chunks/app/map/{page-e6a0e8c5a0ce482d.js → page-af4a5a1f12413f4d.js} +1 -1
  117. package/.next/static/chunks/app/page-6f46e6682942af3a.js +1 -0
  118. package/.next/static/chunks/app/plan/page-6213cdfdbee97ad6.js +1 -0
  119. package/.next/static/chunks/app/s/[token]/{page-ee635988a6aff3fb.js → page-5c21314106b5ae91.js} +1 -1
  120. package/.next/static/chunks/app/settings/page-7e176d120b1effa9.js +1 -0
  121. package/.next/static/css/f86b3e50f4e93bc8.css +1 -0
  122. package/.next/trace +42 -42
  123. package/.next/trace-build +1 -1
  124. package/dist/bin/beacon.js +14 -13
  125. package/dist/bin/doctor.js +12 -4
  126. package/dist/bin/hook.js +12 -4
  127. package/dist/bin/mcp.js +26 -18
  128. package/dist/bin/plan.js +12 -4
  129. package/dist/bin/uninstall.js +12 -4
  130. package/dist/lib/assets.js +12 -4
  131. package/dist/lib/codex-install.js +12 -4
  132. package/dist/lib/global-install.js +12 -4
  133. package/package.json +1 -1
  134. package/.next/server/chunks/1988.js +0 -154
  135. package/.next/server/chunks/249.js +0 -1
  136. package/.next/server/chunks/2693.js +0 -5
  137. package/.next/server/chunks/519.js +0 -1
  138. package/.next/server/chunks/8035.js +0 -1
  139. package/.next/server/chunks/8846.js +0 -2
  140. package/.next/static/chunks/6638-4e53879181b1df75.js +0 -1
  141. package/.next/static/chunks/6961-d1f5351e5ff6c376.js +0 -1
  142. package/.next/static/chunks/app/page-a229992616b3a3de.js +0 -1
  143. package/.next/static/chunks/app/plan/page-51392fb2730c3058.js +0 -1
  144. package/.next/static/chunks/app/settings/page-323bfcf32d1e7fc8.js +0 -1
  145. package/.next/static/css/e9ed4ff9a583fd9c.css +0 -1
  146. /package/.next/static/{j_yDuyPEP2TT78o8NwY-x → kt65bLHd8wfwQxMb3ivew}/_buildManifest.js +0 -0
  147. /package/.next/static/{j_yDuyPEP2TT78o8NwY-x → kt65bLHd8wfwQxMb3ivew}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=3622,exports.ids=[3622],exports.modules={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.`}},63622:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{DELETE:()=>v,GET:()=>t,POST:()=>u,dynamic:()=>w});var e=c(77598),f=c(44046),g=c(6324),h=c(50101),i=c(38356),j=c(72179),k=c(24433),l=c(72658),m=c(19734),n=c(18072),o=c(54655),p=c(72595),q=c(56727),r=c(6716),s=a([h,j,k,l,m,n,p,q]);[h,j,k,l,m,n,p,q]=s.then?(await s)():s;let w="force-dynamic",x=f.Ik({description:f.Yj().trim().min(1),markdown:f.Yj().optional(),draft:g.Xg.optional(),features:h.Qy.shape.features.optional(),contract:f.YO(f.Yj().trim().min(1)).optional()});async function t(a){return(0,q.X_)((0,r.Ck)(a),async()=>{let a=(0,j.iL)(),b=await (0,h.C5)(),c=(0,o.Fn)(),d=(a?.tables.length??0)+(a?.endpoints.length??0)+b.features.length>0||!!c?.markdown;return Response.json({pending:d,description:c?.description??"",proposedAt:c?.proposedAt??0,tables:a?.tables.length??0,endpoints:a?.endpoints.length??0,features:b.features.length})})}async function u(a){try{let b=x.parse(await a.json());return await (0,q.X_)((0,r.Ck)(a),async()=>{let a=(0,e.createHash)("sha256").update(JSON.stringify({d:b.description,m:b.markdown??"",t:b.draft??null,f:b.features??null})).digest("hex"),c=b.draft,d=b.features,f=b.markdown,g=b.contract,r=(c?.tables.length??0)>0||(c?.endpoints.length??0)>0||(c?.relations.length??0)>0||(d?.length??0)>0;if(b.markdown&&!r){let a=(0,k.J)(b.markdown);f=a.prose,c=a.draft,d=a.features,g=g??a.contract}let s=(c?.tables.length??0)+(c?.endpoints.length??0)+(d?.length??0)>0,t=(0,o.Fn)();if(t?.contentHash===a&&(t.proposedAt??0)>0){let a=(0,j.iL)(),b=await (0,h.C5)();if((a?.tables.length??0)+(a?.endpoints.length??0)+b.features.length>0||!s)return Response.json({ok:!0,resumed:!0})}if(d&&d.length){let a=await (0,p.jZ)(),b=(0,i.Kn)(d,{requireLayer:a});if(b)return Response.json({error:b},{status:422});let c=await q.db.query.node.findMany({where:(a,{and:b,eq:c,ne:d})=>b(c(a.view,"ROADMAP"),d(a.source,"DRAFT")),columns:{id:!0,title:!0,cluster:!0,status:!0}}),e=(0,i.AG)(d,c);if(e)return Response.json({error:e},{status:422})}let u=0,v=0;if(c&&(c.tables.length||c.endpoints.length)){let a=await (0,l.C)(),b=(0,j.Gf)(c,a);u=b.tables.length,v=b.endpoints.length}let w=0;d&&d.length&&(await (0,h.KR)({features:d}),w=d.length);let x=!!f?.trim();return 0!==u||0!==v||0!==w||x?((0,o.UC)({description:b.description,proposedAt:Math.max(Date.now(),(t?.proposedAt??0)+1),markdown:x?f:t?.description===b.description?t?.markdown:void 0,originalFeatures:d?.map(a=>a.title)??[],contractFiles:g??(t?.description===b.description?t?.contractFiles:void 0),contentHash:a}),(0,n.Ze)(),await (0,m.Bx)(),Response.json({ok:!0,tables:u,endpoints:v,features:w})):new Response("plan must include at least one table, endpoint, feature, or markdown",{status:400})})}catch(a){return new Response(`plan failed: ${a instanceof Error?a.message:"error"}`,{status:400})}}async function v(a){return(0,q.X_)((0,r.Ck)(a),async()=>(await (0,n.sS)(),new Response(null,{status:204})))}d()}catch(a){d(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)}})}};
1
+ "use strict";exports.id=3622,exports.ids=[3622],exports.modules={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:()=>i,Ey:()=>j,Kn:()=>g,eL:()=>f,oA:()=>h});var d=c(32753),e=c(29833);function f(a,b){let c=a=>(a.cluster??a.category??a.domain??"").trim().toLowerCase(),e=c(b);if(e&&e!==c(a))return!1;let f=(0,d.jR)(b.layer??null);return!f||f===(0,d.jR)(a.layer??null)}function g(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 h(a){let b=(a.title??"").trim();if(!b)return"⛔ A feature needs a non-empty title.";let c=(a.category??"").trim();if(!c){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 g=a.existing.filter(b=>f(b,{category:c,layer:a.layer})),h=(0,e.mk)(b,g.map(a=>({id:a.id,title:a.title})));if(h.best){let a=g.find(a=>a.id===h.best.id),c=a?.status?` (${a.status})`:"";return`⛔ "${b}" already exists as the feature "${a?.title??h.best.title}"${c}. 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 i(a,b){let c=a.map(a=>{let c=b.filter(b=>f(b,a)),d=(0,e.mk)(a.title??"",c.map(a=>({id:a.id,title:a.title})));return d.best?{title:a.title,hit:c.find(a=>a.id===d.best.id)}:null}).filter(a=>null!==a);return c.length?"⛔ These proposed features already exist on the roadmap — reuse them instead of creating duplicates:\n"+c.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 j(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.`}},63622:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{DELETE:()=>v,GET:()=>t,POST:()=>u,dynamic:()=>w});var e=c(77598),f=c(44046),g=c(6324),h=c(50101),i=c(38356),j=c(72179),k=c(24433),l=c(72658),m=c(19734),n=c(18072),o=c(54655),p=c(72595),q=c(56727),r=c(6716),s=a([h,j,k,l,m,n,p,q]);[h,j,k,l,m,n,p,q]=s.then?(await s)():s;let w="force-dynamic",x=f.Ik({description:f.Yj().trim().min(1),markdown:f.Yj().optional(),draft:g.Xg.optional(),features:h.Qy.shape.features.optional(),contract:f.YO(f.Yj().trim().min(1)).optional()});async function t(a){return(0,q.X_)((0,r.Ck)(a),async()=>{let a=(0,j.iL)(),b=await (0,h.C5)(),c=(0,o.Fn)(),d=(a?.tables.length??0)+(a?.endpoints.length??0)+b.features.length>0||!!c?.markdown;return Response.json({pending:d,description:c?.description??"",proposedAt:c?.proposedAt??0,tables:a?.tables.length??0,endpoints:a?.endpoints.length??0,features:b.features.length})})}async function u(a){try{let b=x.parse(await a.json());return await (0,q.X_)((0,r.Ck)(a),async()=>{let a=(0,e.createHash)("sha256").update(JSON.stringify({d:b.description,m:b.markdown??"",t:b.draft??null,f:b.features??null})).digest("hex"),c=b.draft,d=b.features,f=b.markdown,g=b.contract,r=(c?.tables.length??0)>0||(c?.endpoints.length??0)>0||(c?.relations.length??0)>0||(d?.length??0)>0;if(b.markdown&&!r){let a=(0,k.J)(b.markdown);f=a.prose,c=a.draft,d=a.features,g=g??a.contract}let s=(c?.tables.length??0)+(c?.endpoints.length??0)+(d?.length??0)>0,t=(0,o.Fn)();if(t?.contentHash===a&&(t.proposedAt??0)>0){let a=(0,j.iL)(),b=await (0,h.C5)();if((a?.tables.length??0)+(a?.endpoints.length??0)+b.features.length>0||!s)return Response.json({ok:!0,resumed:!0})}if(d&&d.length){let a=await (0,p.jZ)(),b=(0,i.Kn)(d,{requireLayer:a});if(b)return Response.json({error:b},{status:422});let c=await q.db.query.node.findMany({where:(a,{and:b,eq:c,ne:d})=>b(c(a.view,"ROADMAP"),d(a.source,"DRAFT")),columns:{id:!0,title:!0,cluster:!0,layer:!0,status:!0}}),e=(0,i.AG)(d,c);if(e)return Response.json({error:e},{status:422})}let u=0,v=0;if(c&&(c.tables.length||c.endpoints.length)){let a=await (0,l.C)(),b=await q.db.query.dbTable.findMany({with:{columns:!0}}),d=(0,j.Gf)(c,a,b);u=d.tables.length,v=d.endpoints.length}let w=0;d&&d.length&&(await (0,h.KR)({features:d}),w=d.length);let x=!!f?.trim();return 0!==u||0!==v||0!==w||x?((0,o.UC)({description:b.description,proposedAt:Math.max(Date.now(),(t?.proposedAt??0)+1),markdown:x?f:t?.description===b.description?t?.markdown:void 0,originalFeatures:d?.map(a=>a.title)??[],contractFiles:g??(t?.description===b.description?t?.contractFiles:void 0),contentHash:a}),(0,n.Ze)(),await (0,m.Bx)(),Response.json({ok:!0,tables:u,endpoints:v,features:w})):new Response("plan must include at least one table, endpoint, feature, or markdown",{status:400})})}catch(a){return new Response(`plan failed: ${a instanceof Error?a.message:"error"}`,{status:400})}}async function v(a){return(0,q.X_)((0,r.Ck)(a),async()=>(await (0,n.sS)(),new Response(null,{status:204})))}d()}catch(a){d(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)}})}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=5719,exports.ids=[5719],exports.modules={21654:(a,b,c)=>{c.d(b,{F:()=>g});var d=c(99314);let e=a=>"boolean"==typeof a?`${a}`:0===a?"0":a,f=d.$,g=(a,b)=>c=>{var d;if((null==b?void 0:b.variants)==null)return f(a,null==c?void 0:c.class,null==c?void 0:c.className);let{variants:g,defaultVariants:h}=b,i=Object.keys(g).map(a=>{let b=null==c?void 0:c[a],d=null==h?void 0:h[a];if(null===b)return null;let f=e(b)||e(d);return g[a][f]}),j=c&&Object.entries(c).reduce((a,b)=>{let[c,d]=b;return void 0===d||(a[c]=d),a},{});return f(a,i,null==b||null==(d=b.compoundVariants)?void 0:d.reduce((a,b)=>{let{class:c,className:d,...e}=b;return Object.entries(e).every(a=>{let[b,c]=a;return Array.isArray(c)?c.includes({...h,...j}[b]):({...h,...j})[b]===c})?[...a,c,d]:a},[]),null==c?void 0:c.class,null==c?void 0:c.className)}},23673:(a,b,c)=>{c.d(b,{m:()=>f,p:()=>g});var d=c(82466),e=c(67484);let f=e.createContext(void 0);function g(){let a=e.useContext(f);if(void 0===a)throw Error((0,d.A)(26));return a}},25845:(a,b,c)=>{c.d(b,{h:()=>t});var d,e,f=c(67484),g=c(20211),h=c(59165),i=c(37058),j=c(46493),k=c(45863);let l=((d={}).nestedDialogs="--nested-dialogs",d),m=((e={})[e.open=j.lP.open]="open",e[e.closed=j.lP.closed]="closed",e[e.startingStyle=j.lP.startingStyle]="startingStyle",e[e.endingStyle=j.lP.endingStyle]="endingStyle",e.nested="data-nested",e.nestedDialogOpen="data-nested-dialog-open",e);var n=c(23673),o=c(39533),p=c(71270),q=c(20432),r=c(48249);let s={...j.GW,...k.G,nestedDialogOpen:a=>a?{[m.nestedDialogOpen]:""}:null},t=f.forwardRef(function(a,b){let{render:c,className:d,style:e,finalFocus:f,initialFocus:j,...k}=a,{store:m}=(0,h.PQ)(),t=m.useState("descriptionElementId"),u=m.useState("disablePointerDismissal"),v=m.useState("floatingRootContext"),w=m.useState("popupProps"),x=m.useState("modal"),y=m.useState("mounted"),z=m.useState("nested"),A=m.useState("nestedOpenDialogCount"),B=m.useState("open"),C=m.useState("openMethod"),D=m.useState("titleElementId"),E=m.useState("transitionStatus"),F=m.useState("role"),G=v.useState("floatingId"),H=k.id??G;(0,n.p)(),(0,o.v)({open:B,ref:m.context.popupRef,onComplete(){B&&m.context.onOpenChangeComplete?.(!0)}});let I=void 0===j?function(a){return"touch"!==a||m.context.popupRef.current}:j,J=m.useStateSetter("popupElement"),K=(0,i.o)("div",a,{state:{open:B,nested:z,transitionStatus:E,nestedDialogOpen:A>0},props:[w,{id:H,"aria-labelledby":D??void 0,"aria-describedby":t??void 0,role:F,...q.Ls,hidden:!y,onKeyDown(a){p.jF.has(a.key)&&a.stopPropagation()},style:{[l.nestedDialogs]:A}},k],ref:[b,m.context.popupRef,J],stateAttributesMapping:s});return(0,r.jsx)(g.s,{context:v,openInteractionType:C,disabled:!y,closeOnFocusOut:!u,initialFocus:I,returnFocus:f,modal:!1!==x,restoreFocus:"popup",children:K})})},36902:(a,b,c)=>{c.d(b,{L:()=>h});var d=c(67484),e=c(59165),f=c(37058),g=c(61156);let h=d.forwardRef(function(a,b){let{render:c,className:d,style:h,id:i,...j}=a,{store:k}=(0,e.PQ)(),l=(0,g.e)(i);return k.useSyncedValueWithCleanup("titleElementId",l),(0,f.o)("h2",a,{ref:b,props:[{id:l},j]})})},59165:(a,b,c)=>{c.d(b,{PQ:()=>h,Ts:()=>f,am:()=>g});var d=c(82466),e=c(67484);let f=e.createContext(!1),g=e.createContext(void 0);function h(a){let b=e.useContext(g);if(!1===a&&void 0===b)throw Error((0,d.A)(27));return b}},60388:(a,b,c)=>{c.d(b,{Z:()=>k});var d=c(67484),e=c(53013),f=c(43383),g=c(59165),h=c(23673),i=c(57491),j=c(48249);let k=d.forwardRef(function(a,b){let{keepMounted:c=!1,...d}=a,{store:k}=(0,g.PQ)(),l=k.useState("mounted"),m=k.useState("modal"),n=k.useState("open");return l||c?(0,j.jsx)(h.m.Provider,{value:c,children:(0,j.jsxs)(f.XF,{ref:b,...d,children:[l&&!0===m&&(0,j.jsx)(i.W,{ref:k.context.internalBackdropRef,inert:(0,e.Y)(!n)}),a.children]})}):null})},64230:(a,b,c)=>{c.d(b,{r:()=>h});var d=c(67484),e=c(59165),f=c(37058),g=c(61156);let h=d.forwardRef(function(a,b){let{render:c,className:d,style:h,id:i,...j}=a,{store:k}=(0,e.PQ)(),l=(0,g.e)(i);return k.useSyncedValueWithCleanup("descriptionElementId",l),(0,f.o)("p",a,{ref:b,props:[{id:l},j]})})},70813:(a,b,c)=>{c.d(b,{Button:()=>g});var d=c(67484),e=c(29522),f=c(37058);let g=d.forwardRef(function(a,b){let{render:c,className:d,disabled:g=!1,focusableWhenDisabled:h=!1,nativeButton:i=!0,style:j,...k}=a,{getButtonProps:l,buttonRef:m}=(0,e.s)({disabled:g,focusableWhenDisabled:h,native:i});return(0,f.o)("button",a,{state:{disabled:g},ref:[b,m],props:[k,l]})})},71523:(a,b,c)=>{c.d(b,{V:()=>e});var d=c(81066);function e(a){return(0,d.G)(a,"alert-dialog")}},74283:(a,b,c)=>{c.d(b,{X:()=>j});var d=c(67484),e=c(59165),f=c(37058),g=c(46493),h=c(45863);let i={...g.GW,...h.G},j=d.forwardRef(function(a,b){let{render:c,className:d,style:g,forceRender:h=!1,...j}=a,{store:k}=(0,e.PQ)(),l=k.useState("open"),m=k.useState("nested"),n=k.useState("mounted"),o=k.useState("transitionStatus");return(0,f.o)("div",a,{state:{open:l,transitionStatus:o},ref:[k.context.backdropRef,b],stateAttributesMapping:i,props:[{role:"presentation",hidden:!n,style:{userSelect:"none",WebkitUserSelect:"none"}},j],enabled:h||!m})})},81066:(a,b,c)=>{c.d(b,{G:()=>A});var d=c(67484),e=c(9716),f=c(95275),g=c(46583),h=c(67708),i=c(20036),j=c(66025),k=c(67056),l=c(22054),m=c(20432);function n({store:a,dialogRoot:b}){let{parentContext:c,isDrawer:e}=b,k=a.useState("open"),l=a.useState("disablePointerDismissal"),o=a.useState("modal"),p=a.useState("popupElement"),q=a.useState("floatingRootContext"),[r,s]=d.useState(0),[t,u]=d.useState(0),v=0===r,w=(0,i.s)(q,{outsidePressEvent:()=>a.context.internalBackdropRef.current||a.context.backdropRef.current?"intentional":{mouse:"trap-focus"===o?"sloppy":"intentional",touch:"sloppy"},outsidePress(b){if(!a.context.outsidePressEnabledRef.current||"button"in b&&0!==b.button||"touches"in b&&1!==b.touches.length)return!1;let c=(0,j.EW)(b);return!!v&&!l&&(!o||!a.context.internalBackdropRef.current&&!a.context.backdropRef.current||a.context.internalBackdropRef.current===c||a.context.backdropRef.current===c||(0,j.gR)(c,p)&&!c?.hasAttribute("data-base-ui-portal"))},escapeKey:v});(0,f.K)(k&&!0===o,p),a.useContextCallback("onNestedDialogOpen",(a,b)=>{s(a),u(b)}),a.useContextCallback("onNestedDialogClose",()=>{s(0),u(0)}),d.useEffect(()=>(c?.onNestedDialogOpen&&k&&c.onNestedDialogOpen(r+1,t+ +!!e),c?.onNestedDialogClose&&!k&&c.onNestedDialogClose(),()=>{c?.onNestedDialogClose&&k&&c.onNestedDialogClose()}),[e,k,r,t,c]);let x=w.reference??g.t0,y=w.trigger??g.t0,z=d.useMemo(()=>(0,h.v6)(m.Ls,w.floating),[w.floating]);return(0,m.i6)(a,{activeTriggerProps:x,inactiveTriggerProps:y,popupProps:z,nestedOpenDialogCount:r,nestedOpenDrawerCount:t}),null}var o=c(59165),p=c(61935),q=c(15418),r=c(31483),s=c(57544);let t=(0,p.M)(a=>a.triggerIdProp??a.activeTriggerId),u=(0,p.M)(a=>a.openProp??a.open),v=(0,p.M)(a=>(a.popupElement?.id??a.floatingId)||void 0);function w(a,b){return void 0!==b&&u(a)&&t(a)===b}let x={...{open:u,mounted:(0,p.M)(a=>a.mounted),transitionStatus:(0,p.M)(a=>a.transitionStatus),floatingRootContext:(0,p.M)(a=>a.floatingRootContext),triggerCount:(0,p.M)(a=>a.triggerCount),preventUnmountingOnClose:(0,p.M)(a=>a.preventUnmountingOnClose),payload:(0,p.M)(a=>a.payload),activeTriggerId:t,activeTriggerElement:(0,p.M)(a=>a.mounted?a.activeTriggerElement:null),popupId:v,isTriggerActive:(0,p.M)((a,b)=>void 0!==b&&t(a)===b),isOpenedByTrigger:(0,p.M)((a,b)=>w(a,b)),isMountedByTrigger:(0,p.M)((a,b)=>void 0!==b&&t(a)===b&&a.mounted),triggerProps:(0,p.M)((a,b)=>b?a.activeTriggerProps:a.inactiveTriggerProps),triggerPopupId:(0,p.M)((a,b)=>w(a,b)||void 0!==b&&u(a)&&null==t(a)&&1===a.triggerCount?v(a):void 0),popupProps:(0,p.M)(a=>a.popupProps),popupElement:(0,p.M)(a=>a.popupElement),positionerElement:(0,p.M)(a=>a.positionerElement)},modal:(0,p.M)(a=>a.modal),nested:(0,p.M)(a=>a.nested),nestedOpenDialogCount:(0,p.M)(a=>a.nestedOpenDialogCount),nestedOpenDrawerCount:(0,p.M)(a=>a.nestedOpenDrawerCount),disablePointerDismissal:(0,p.M)(a=>a.disablePointerDismissal),openMethod:(0,p.M)(a=>a.openMethod),descriptionElementId:(0,p.M)(a=>a.descriptionElementId),titleElementId:(0,p.M)(a=>a.titleElementId),viewportElement:(0,p.M)(a=>a.viewportElement),role:(0,p.M)(a=>a.role)};class y extends q.H{constructor(a,b,c=!1){const e=new s.Z,f=function(a={}){return{...{open:!1,openProp:void 0,mounted:!1,transitionStatus:void 0,floatingRootContext:new r.K({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:new s.Z,floatingId:void 0,syncOnly:!1,nested:!1,onOpenChange:void 0}),floatingId:void 0,triggerCount:0,preventUnmountingOnClose:!1,payload:void 0,activeTriggerId:null,activeTriggerElement:null,triggerIdProp:void 0,popupElement:null,positionerElement:null,activeTriggerProps:g.t0,inactiveTriggerProps:g.t0,popupProps:g.t0},modal:!0,disablePointerDismissal:!1,popupElement:null,viewportElement:null,descriptionElementId:void 0,titleElementId:void 0,openMethod:null,nested:!1,nestedOpenDialogCount:0,nestedOpenDrawerCount:0,role:"dialog",...a}}(a);f.floatingRootContext=function(a,b,c=!1){return new r.K({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:a,floatingId:b,syncOnly:!0,nested:c,onOpenChange:void 0})}(e,b,c),super(f,{popupRef:d.createRef(),backdropRef:d.createRef(),internalBackdropRef:d.createRef(),outsidePressEnabledRef:{current:!0},triggerElements:e,onOpenChange:void 0,onOpenChangeComplete:void 0},x)}setOpen=(a,b)=>{if(b.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},a||null!=b.trigger||null==this.state.activeTriggerId||(b.trigger=this.state.activeTriggerElement??void 0),this.context.onOpenChange?.(a,b),b.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(a,b);let c={open:a};(0,m.CN)(c,a,b.trigger),this.update(c)};static useStore(a,b){return(0,m.Nj)(a,(a,c)=>new y(b,a,c),!0).store}}var z=c(48249);function A(a,b="dialog"){let{children:c,open:f,defaultOpen:g=!1,onOpenChange:h,onOpenChangeComplete:i,disablePointerDismissal:j=!1,modal:p=!0,actionsRef:q,handle:r,triggerId:s,defaultTriggerId:t=null}=a,u="alert-dialog"===b,v=(0,o.PQ)(!0),w={modal:!!u||p,disablePointerDismissal:u||j,nested:!!v,role:u?"alertdialog":"dialog"},x=y.useStore(r?.store,{open:g,openProp:f,activeTriggerId:t,triggerIdProp:s,...w});(0,e.j)(()=>{let a=void 0===f&&!1===x.state.open&&!0===g?{open:!0,activeTriggerId:t}:null;u?x.update(a?{...w,...a}:w):a&&x.update(a)}),x.useControlledProp("openProp",f),x.useControlledProp("triggerIdProp",s),x.useSyncedValues(w),x.useContextCallback("onOpenChange",h),x.useContextCallback("onOpenChangeComplete",i);let B=x.useState("open"),C=x.useState("mounted"),D=x.useState("payload"),E=function(a){let{store:b,parentContext:c,actionsRef:e,isDrawer:f}=a,g=b.useState("open");(0,m.xs)(b,g),(0,m.tr)(b);let{forceUnmount:h}=(0,m.l$)(g,b),i=d.useCallback(()=>{b.setOpen(!1,(0,k.d)(l.zJ))},[b]);return d.useImperativeHandle(e,()=>({unmount:h,close:i}),[h,i]),{parentContext:c,isDrawer:f}}({store:x,actionsRef:q,parentContext:v?.store.context,isDrawer:"drawer"===b}),F=d.useMemo(()=>({store:x}),[x]);return(0,z.jsx)(o.Ts.Provider,{value:!1,children:(0,z.jsxs)(o.am.Provider,{value:F,children:[(B||C)&&(0,z.jsx)(n,{store:x,dialogRoot:E}),"function"==typeof c?c({payload:D}):c]})})}},87298:(a,b,c)=>{c.d(b,{H:()=>j});var d=c(67484),e=c(59165),f=c(37058),g=c(29522),h=c(67056),i=c(22054);let j=d.forwardRef(function(a,b){let{render:c,className:d,style:j,disabled:k=!1,nativeButton:l=!0,...m}=a,{store:n}=(0,e.PQ)(),o=n.useState("open"),{getButtonProps:p,buttonRef:q}=(0,g.s)({disabled:k,native:l});return(0,f.o)("button",a,{state:{disabled:k},ref:[b,q],props:[{onClick:function(a){o&&n.setOpen(!1,(0,h.d)(i.SR,a.nativeEvent))}},m,p]})})},99469:(a,b,c)=>{c.d(b,{t:()=>o});var d=c(82466),e=c(67484),f=c(59165),g=c(29522),h=c(37058),i=c(46493),j=c(98816),k=c(20432),l=c(61156),m=c(46304),n=c(14908);let o=e.forwardRef(function(a,b){let{render:c,className:o,style:p,disabled:q=!1,nativeButton:r=!0,id:s,payload:t,handle:u,...v}=a,w=(0,f.PQ)(!0),x=u?.store??w?.store;if(!x)throw Error((0,d.A)(79));let y=(0,l.e)(s),z=x.useState("floatingRootContext"),A=x.useState("isOpenedByTrigger",y),B=x.useState("triggerPopupId",y),C=e.useRef(null),{registerTrigger:D,isMountedByThisTrigger:E}=(0,k.L_)(y,C,x,{payload:t}),{getButtonProps:F,buttonRef:G}=(0,g.s)({disabled:q,native:r}),H=(0,m.k)(z,{enabled:null!=z}),I=(0,n.L)(()=>x.select("open"),a=>{x.set("openMethod",a)}),J=x.useState("triggerProps",E);return(0,h.o)("button",a,{state:{disabled:q,open:A},ref:[G,b,D,C],props:[H.reference,J,I,{[j.Kd]:"",id:y,"aria-haspopup":"dialog","aria-expanded":A,"aria-controls":B},v,F],stateAttributesMapping:i.qV})})}};
@@ -1 +1 @@
1
- "use strict";exports.id=9734,exports.ids=[9734],exports.modules={7903:(a,b,c)=>{c.d(b,{VE:()=>k,qT:()=>l,zP:()=>h});var d=c(73024),e=c(76760),f=c(45301),g=c(32213);let h={roadmap:"grouped-2",architecture:"arch-layered-3",db:"db-dock-3"};function i(){return(0,e.join)((0,f.KS)(),"board-layout-state.json")}function j(){try{return JSON.parse((0,d.readFileSync)(i(),"utf8"))}catch{return null}}function k(a){let b=j(),c=b?.[a];return{sig:c?.sig??("roadmap"!==a||b?null:function(){try{return JSON.parse((0,d.readFileSync)((0,e.join)((0,f.KS)(),"roadmap-layout-sig.json"),"utf8")).sig??null}catch{return null}}())??null,arrangedBy:c?.arrangedBy??null,collapsed:Array.isArray(c?.collapsed)?c.collapsed:[]}}function l(a,b){let c=j()??{};c[a]={...c[a],...b},(0,g.q)(i(),c)}},19734:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Bx:()=>r,HF:()=>q,Rw:()=>s,ap:()=>t});var e=c(44046),f=c(91430),g=c(34216),h=c(56727),i=c(30046),j=c(72658),k=c(35498),l=c(49565),m=c(24983),n=c(96976),o=c(73033),p=a([h,j,k,l,o]);[h,j,k,l,o]=p.then?(await p)():p;let t=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.query.syncState.findFirst({where:(a,{eq:b})=>b(a.id,"singleton")});return b?.version??0}async function r(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 s(a,b=h.db,c={}){let d=t.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 q=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(q.map(a=>[a.name,a])),w=q.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 r(b);return{tables:d.tables.length,relations:d.relations.length,endpoints:d.endpoints.length,version:E}}d()}catch(a){d(a)}})},24983:(a,b,c)=>{c.d(b,{v4:()=>e});var d=c(96976);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}},32213:(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}}},35498:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{X:()=>i});var e=c(34216),f=c(56727),g=c(30046),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)}})},45301:(a,b,c)=>{c.d(b,{KS:()=>l,Qq:()=>k,jv:()=>j});var d=c(31421),e=c(77598),f=c(48161),g=c(76760),h=c(6716);let i=null;function j(){if(process.env.BEACON_REPO)return process.env.BEACON_REPO;let a=(0,h.p1)();if(a){let b=(0,h.K4)(a);if(b)return b.path}let b=(0,h.WQ)();if(b)return b.path;if(i)return i;try{let a=(0,d.execSync)("git rev-parse --show-toplevel",{cwd:process.cwd(),stdio:["ignore","pipe","ignore"]}).toString().trim();if(a)return i=a}catch{}return i=(0,g.resolve)(process.cwd(),"../..")}function k(){return(0,g.basename)(j())}function l(){if(process.env.BEACON_DATA_DIR)return process.env.BEACON_DATA_DIR;let a=(0,h.p1)();if(a&&(0,h.K4)(a))return(0,h.T_)(a);let b=(0,h.WQ)();return b?(0,h.T_)(b.id):(0,g.join)((0,f.homedir)(),".beacon",(0,e.createHash)("sha256").update(j()).digest("hex").slice(0,12))}},47782:(a,b,c)=>{c.d(b,{Xi:()=>d});function d(a,b){let c,d,e,f=(d=((c=b.viewportAspect)&&Number.isFinite(c)&&c>0?Math.min(3.2,Math.max(.7,c)):1.8)*(b.aspectSlack??1),e=a.reduce((a,c)=>a+(c.w+b.gapX)*(c.h+b.gapY),0),Math.max(b.minBandW,Math.round(Math.sqrt(e*d)))),g=new Map,h=0,i=0,j=0;for(let c of a)h>0&&h+c.w>f&&(i+=j+b.gapY,h=0,j=0),g.set(c.id,{x:h,y:i}),j=Math.max(j,c.h),h+=c.w+b.gapX;return g}},49565:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{q:()=>j});var e=c(34216),f=c(56727),g=c(30046),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)}})},72658:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{C:()=>h,i:()=>g});var e=c(56727),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}async function h(a=e.db){let[b,c]=await Promise.all([a.query.dbTable.findFirst({orderBy:(a,{desc:b})=>b(a.y)}),a.query.endpoint.findFirst({orderBy:(a,{desc:b})=>b(a.y)})]),d=Math.max(b?.y??0,c?.y??0);return d>0?d+280:0}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},73033:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{r:()=>k,v:()=>l});var e=c(34216),f=c(56727),g=c(30046),h=c(96976),i=c(7903),j=a([f]);async function k(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}),j=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)),j++)}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)),j++)}return j}async function l(a=f.db){let b=i.zP.db;(0,i.VE)("db").sig===b||await a.query.dbTable.findFirst({columns:{id:!0}})&&(await k(a),(0,i.qT)("db",{sig:b}))}f=(j.then?(await j)():j)[0],d()}catch(a){d(a)}})},96976:(a,b,c)=>{c.d(b,{LT:()=>e,ez:()=>m,kq:()=>k,mn:()=>f,uQ:()=>l});var d=c(47782);let e=320;function f(a){return 36+30*Math.max(0,a)+16}let g=960,h=a=>(a??"").trim()||"—";function i(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 j=(a,b)=>a.path.localeCompare(b.path)||a.method.localeCompare(b.method)||a.id.localeCompare(b.id);function k(a,b,c={}){let l=i(a,b),m=new Map,n=[];for(let a of[...b].sort(j)){let b=l.get(a.id)??null;if(b){let c=m.get(b);c?c.push(a):m.set(b,[a])}else n.push(a)}let o=a=>{let b=m.get(a.id)?.length??0;return f(a.columnCount)+(b?10+60*b:0)+30},p=Array.from(new Set(a.map(a=>h(a.domain)))),q=p.filter(a=>"—"!==a).sort(),r=p.includes("—")?[...q,"—"]:q,s=[];for(let b of r){let c=a.filter(a=>h(a.domain)===b).sort((a,b)=>a.name.localeCompare(b.name)),d=c.reduce((a,b)=>a+o(b),0),f=Math.max(1,Math.min(12,c.length,Math.round(Math.sqrt(d/e)))),g=Array(f).fill(0),i=new Map;for(let a of c){let b=0;for(let a=1;a<f;a++)g[a]<g[b]&&(b=a);i.set(a.id,{x:b*e,y:g[b]}),g[b]+=o(a)}s.push({d:b,w:f*e,h:Math.max(...g,0),tableLocal:i})}let t=(0,d.Xi)(s.map(a=>({id:a.d,w:a.w,h:a.h})),{gapX:84,gapY:72,viewportAspect:c.viewportAspect,minBandW:g,aspectSlack:1.7}),u=new Map,v=new Map,w=0;for(let b of s){let c=t.get(b.d);for(let d of a.filter(a=>b.tableLocal.has(a.id))){let a=b.tableLocal.get(d.id),e=c.x+a.x,g=c.y+a.y;u.set(d.id,{x:e,y:g}),(m.get(d.id)??[]).forEach((a,b)=>{v.set(a.id,{x:e,y:g+f(d.columnCount)+10+60*b})})}w=Math.max(w,c.y+b.h)}if(n.length){let a=w+72,b=Math.max(1,Math.min(4,Math.ceil(Math.sqrt(n.length/2))));n.forEach((c,d)=>{v.set(c.id,{x:d%b*300,y:a+60*Math.floor(d/b)})})}return{tables:u,endpoints:v}}function l(a,b,c){let d=i(b,c),g=new Map;for(let a of c){let b=d.get(a.id);b&&g.set(b,(g.get(b)??0)+1)}let j=a=>{let b=g.get(a.id)??0;return a.y+f(a.columnCount)+(b?10+60*b:0)},k=h(a.domain),l=b.filter(a=>h(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)/e))),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*e,y:p[q]}}function m(a,b,c){let d=i(b,[...c,a]),e=d.get(a.id),g=e?b.find(a=>a.id===e):void 0;if(g){let a=c.filter(a=>d.get(a.id)===g.id),b=g.y+f(g.columnCount)+10,e=a.length?Math.max(...a.map(a=>a.y))+60:b;return{x:g.x,y:e}}let h=[...b.map(a=>a.y+f(a.columnCount)),...c.map(a=>a.y+60)];return{x:0,y:h.length?Math.max(...h)+72:0}}}};
1
+ "use strict";exports.id=9734,exports.ids=[9734],exports.modules={7903:(a,b,c)=>{c.d(b,{VE:()=>k,qT:()=>l,zP:()=>h});var d=c(73024),e=c(76760),f=c(45301),g=c(32213);let h={roadmap:"grouped-3",architecture:"arch-layered-3",db:"db-dock-3"};function i(){return(0,e.join)((0,f.KS)(),"board-layout-state.json")}function j(){try{return JSON.parse((0,d.readFileSync)(i(),"utf8"))}catch{return null}}function k(a){let b=j(),c=b?.[a];return{sig:c?.sig??("roadmap"!==a||b?null:function(){try{return JSON.parse((0,d.readFileSync)((0,e.join)((0,f.KS)(),"roadmap-layout-sig.json"),"utf8")).sig??null}catch{return null}}())??null,arrangedBy:c?.arrangedBy??null,collapsed:Array.isArray(c?.collapsed)?c.collapsed:[]}}function l(a,b){let c=j()??{};c[a]={...c[a],...b},(0,g.q)(i(),c)}},19734:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Bx:()=>r,HF:()=>q,Rw:()=>s,ap:()=>t});var e=c(44046),f=c(91430),g=c(34216),h=c(56727),i=c(30046),j=c(72658),k=c(35498),l=c(49565),m=c(24983),n=c(96976),o=c(73033),p=a([h,j,k,l,o]);[h,j,k,l,o]=p.then?(await p)():p;let t=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.query.syncState.findFirst({where:(a,{eq:b})=>b(a.id,"singleton")});return b?.version??0}async function r(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 s(a,b=h.db,c={}){let d=t.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 q=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(q.map(a=>[a.name,a])),w=q.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 r(b);return{tables:d.tables.length,relations:d.relations.length,endpoints:d.endpoints.length,version:E}}d()}catch(a){d(a)}})},24983:(a,b,c)=>{c.d(b,{v4:()=>e});var d=c(96976);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}},32213:(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}}},35498:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{X:()=>i});var e=c(34216),f=c(56727),g=c(30046),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)}})},45301:(a,b,c)=>{c.d(b,{KS:()=>l,Qq:()=>k,jv:()=>j});var d=c(31421),e=c(77598),f=c(48161),g=c(76760),h=c(6716);let i=null;function j(){if(process.env.BEACON_REPO)return process.env.BEACON_REPO;let a=(0,h.p1)();if(a){let b=(0,h.K4)(a);if(b)return b.path}let b=(0,h.WQ)();if(b)return b.path;if(i)return i;try{let a=(0,d.execSync)("git rev-parse --show-toplevel",{cwd:process.cwd(),stdio:["ignore","pipe","ignore"]}).toString().trim();if(a)return i=a}catch{}return i=(0,g.resolve)(process.cwd(),"../..")}function k(){return(0,g.basename)(j())}function l(){if(process.env.BEACON_DATA_DIR)return process.env.BEACON_DATA_DIR;let a=(0,h.p1)();if(a&&(0,h.K4)(a))return(0,h.T_)(a);let b=(0,h.WQ)();return b?(0,h.T_)(b.id):(0,g.join)((0,f.homedir)(),".beacon",(0,e.createHash)("sha256").update(j()).digest("hex").slice(0,12))}},47782:(a,b,c)=>{c.d(b,{Xi:()=>d});function d(a,b){let c,d,e,f=(d=((c=b.viewportAspect)&&Number.isFinite(c)&&c>0?Math.min(3.2,Math.max(.7,c)):1.8)*(b.aspectSlack??1),e=a.reduce((a,c)=>a+(c.w+b.gapX)*(c.h+b.gapY),0),Math.max(b.minBandW,Math.round(Math.sqrt(e*d)))),g=new Map,h=0,i=0,j=0;for(let c of a)h>0&&h+c.w>f&&(i+=j+b.gapY,h=0,j=0),g.set(c.id,{x:h,y:i}),j=Math.max(j,c.h),h+=c.w+b.gapX;return g}},49565:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{q:()=>j});var e=c(34216),f=c(56727),g=c(30046),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)}})},72658:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{C:()=>h,i:()=>g});var e=c(56727),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}async function h(a=e.db){let[b,c]=await Promise.all([a.query.dbTable.findFirst({orderBy:(a,{desc:b})=>b(a.y)}),a.query.endpoint.findFirst({orderBy:(a,{desc:b})=>b(a.y)})]),d=Math.max(b?.y??0,c?.y??0);return d>0?d+280:0}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},73033:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{r:()=>k,v:()=>l});var e=c(34216),f=c(56727),g=c(30046),h=c(96976),i=c(7903),j=a([f]);async function k(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}),j=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)),j++)}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)),j++)}return j}async function l(a=f.db){let b=i.zP.db;(0,i.VE)("db").sig===b||await a.query.dbTable.findFirst({columns:{id:!0}})&&(await k(a),(0,i.qT)("db",{sig:b}))}f=(j.then?(await j)():j)[0],d()}catch(a){d(a)}})},96976:(a,b,c)=>{c.d(b,{LT:()=>e,ez:()=>m,kq:()=>k,mn:()=>f,uQ:()=>l});var d=c(47782);let e=320;function f(a){return 36+30*Math.max(0,a)+16}let g=960,h=a=>(a??"").trim()||"—";function i(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 j=(a,b)=>a.path.localeCompare(b.path)||a.method.localeCompare(b.method)||a.id.localeCompare(b.id);function k(a,b,c={}){let l=i(a,b),m=new Map,n=[];for(let a of[...b].sort(j)){let b=l.get(a.id)??null;if(b){let c=m.get(b);c?c.push(a):m.set(b,[a])}else n.push(a)}let o=a=>{let b=m.get(a.id)?.length??0;return f(a.columnCount)+(b?10+60*b:0)+30},p=Array.from(new Set(a.map(a=>h(a.domain)))),q=p.filter(a=>"—"!==a).sort(),r=p.includes("—")?[...q,"—"]:q,s=[];for(let b of r){let c=a.filter(a=>h(a.domain)===b).sort((a,b)=>a.name.localeCompare(b.name)),d=c.reduce((a,b)=>a+o(b),0),f=Math.max(1,Math.min(12,c.length,Math.round(Math.sqrt(d/e)))),g=Array(f).fill(0),i=new Map;for(let a of c){let b=0;for(let a=1;a<f;a++)g[a]<g[b]&&(b=a);i.set(a.id,{x:b*e,y:g[b]}),g[b]+=o(a)}s.push({d:b,w:f*e,h:Math.max(...g,0),tableLocal:i})}let t=(0,d.Xi)(s.map(a=>({id:a.d,w:a.w,h:a.h})),{gapX:84,gapY:72,viewportAspect:c.viewportAspect,minBandW:g,aspectSlack:1.7}),u=new Map,v=new Map,w=0;for(let b of s){let c=t.get(b.d);for(let d of a.filter(a=>b.tableLocal.has(a.id))){let a=b.tableLocal.get(d.id),e=c.x+a.x,g=c.y+a.y;u.set(d.id,{x:e,y:g}),(m.get(d.id)??[]).forEach((a,b)=>{v.set(a.id,{x:e,y:g+f(d.columnCount)+10+60*b})})}w=Math.max(w,c.y+b.h)}if(n.length){let a=w+72,b=Math.max(1,Math.min(4,Math.ceil(Math.sqrt(n.length/2))));n.forEach((c,d)=>{v.set(c.id,{x:d%b*300,y:a+60*Math.floor(d/b)})})}return{tables:u,endpoints:v}}function l(a,b,c){let d=i(b,c),g=new Map;for(let a of c){let b=d.get(a.id);b&&g.set(b,(g.get(b)??0)+1)}let j=a=>{let b=g.get(a.id)??0;return a.y+f(a.columnCount)+(b?10+60*b:0)},k=h(a.domain),l=b.filter(a=>h(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)/e))),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*e,y:p[q]}}function m(a,b,c){let d=i(b,[...c,a]),e=d.get(a.id),g=e?b.find(a=>a.id===e):void 0;if(g){let a=c.filter(a=>d.get(a.id)===g.id),b=g.y+f(g.columnCount)+10,e=a.length?Math.max(...a.map(a=>a.y))+60:b;return{x:g.x,y:e}}let h=[...b.map(a=>a.y+f(a.columnCount)),...c.map(a=>a.y+60)];return{x:0,y:h.length?Math.max(...h)+72:0}}}};
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/j_yDuyPEP2TT78o8NwY-x/_buildManifest.js","static/j_yDuyPEP2TT78o8NwY-x/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-de4a0d9611ec2cad.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-cef5038dc7aa126a.js","static/chunks/main-app-1a32dc335629e4e4.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/kt65bLHd8wfwQxMb3ivew/_buildManifest.js","static/kt65bLHd8wfwQxMb3ivew/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-de4a0d9611ec2cad.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-cef5038dc7aa126a.js","static/chunks/main-app-1a32dc335629e4e4.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="dark __variable_246ccd __variable_c29908 h-full antialiased"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/22a5144ee8d83bca-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/7d4881bb7e1bf84d-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/e9ed4ff9a583fd9c.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/e02ab5db9ff2dca2.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-de4a0d9611ec2cad.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-cef5038dc7aa126a.js" async=""></script><script src="/_next/static/chunks/main-app-1a32dc335629e4e4.js" async=""></script><script src="/_next/static/chunks/70e0d97a-bbb0ec05083da54f.js" async=""></script><script src="/_next/static/chunks/54a60aa6-0378818fce5a4dc5.js" async=""></script><script src="/_next/static/chunks/8500-f62a38ff68ab7f42.js" async=""></script><script src="/_next/static/chunks/4888-911c0da3c2d785d2.js" async=""></script><script src="/_next/static/chunks/8997-78a359d0d238622e.js" async=""></script><script src="/_next/static/chunks/9887-e8954568a4031ed3.js" async=""></script><script src="/_next/static/chunks/2231-63ad38ec8fb7cb6f.js" async=""></script><script src="/_next/static/chunks/app/layout-3115f8503ff00902.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Beacon</title><meta name="description" content="A local control panel for the repository you&#x27;re working in"/><link rel="icon" href="/icon.svg?bb93a1375ed3c298" type="image/svg+xml" sizes="any"/><link rel="apple-touch-icon" href="/apple-icon.png?f9d64651576bd776" type="image/png" sizes="180x180"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-full flex flex-col bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><header class="pointer-events-none fixed left-3 top-3 z-30"><div class="glass pointer-events-auto flex h-10 items-center gap-1 rounded-full pl-3 pr-1.5"><a class="mr-1 flex items-center gap-2 text-sm font-semibold tracking-tight" href="/"><svg width="18" height="18" viewBox="20 22 56 56" fill="none" class="text-foreground" aria-hidden="true"><path d="M48 33 L72.5 73 L23.5 73 Z" fill="none" stroke="var(--accent-2, #ff7a45)" stroke-width="7" stroke-linejoin="round" stroke-linecap="round"></path><circle cx="48" cy="29.5" r="7" fill="var(--accent-2, #ff7a45)"></circle></svg>Beacon</a><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><span class="font-mono text-xs text-muted-foreground">· <!-- -->beacon</span><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><nav class="flex items-center gap-0.5 text-sm"><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/plan">Plans</a><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/map">Map</a><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/settings">Settings</a></nav><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><button type="button" aria-pressed="false" aria-label="Notes" title="Notes" class="flex items-center justify-center rounded-full p-1.5 transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sticky-note size-4" aria-hidden="true"><path d="M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z"></path><path d="M15 3v5a1 1 0 0 0 1 1h5"></path></svg></button></div></header><main class="flex flex-1 flex-col"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main><div aria-hidden="true" class="fixed inset-y-0 right-0 z-40 flex transition-transform duration-300 ease-out pointer-events-none translate-x-full"><div class="glass relative isolate overflow-hidden flex h-full w-[420px] flex-col rounded-l-2xl border-l border-white/10"><span aria-hidden="true" class="pointer-events-none absolute inset-0 -z-10 rounded-[inherit]" style="background:radial-gradient(90% 60% at 0% 0%, oklch(1 0 0 / 0.04), transparent 42%)"></span><span aria-hidden="true" class="pointer-events-none absolute inset-0 -z-10 rounded-[inherit] opacity-[0.035] mix-blend-overlay" style="background-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&#x27;http://www.w3.org/2000/svg&#x27; width=&#x27;120&#x27; height=&#x27;120&#x27;%3E%3Cfilter id=&#x27;n&#x27;%3E%3CfeTurbulence type=&#x27;fractalNoise&#x27; baseFrequency=&#x27;0.85&#x27; numOctaves=&#x27;2&#x27; stitchTiles=&#x27;stitch&#x27;/%3E%3C/filter%3E%3Crect width=&#x27;100%25&#x27; height=&#x27;100%25&#x27; filter=&#x27;url(%23n)&#x27;/%3E%3C/svg%3E&quot;);background-size:120px 120px"></span><div class="flex items-center gap-2 border-b border-white/10 px-3 py-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sticky-note size-4 text-[var(--accent-2,#ff7a45)]" aria-hidden="true"><path d="M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z"></path><path d="M15 3v5a1 1 0 0 0 1 1h5"></path></svg><span class="text-sm font-semibold tracking-tight">Notes</span><span class="ml-auto"></span><button type="button" aria-label="New note" title="New note" class="rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus size-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button><button type="button" aria-label="Close notes" title="Close" class="rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x size-4" aria-hidden="true"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button></div><div class="max-h-44 shrink-0 overflow-y-auto border-b border-white/10 p-1.5"><p class="px-2 py-3 text-[13px] text-muted-foreground">No notes yet. Hit <span class="text-foreground">+</span> to start one.</p></div><div class="flex flex-1 items-center justify-center p-6 text-center text-[13px] text-muted-foreground">Select a note, or create one. Then <span class="px-1 text-foreground">@</span>-mention it in your terminal to turn it into features.</div></div></div><script src="/_next/static/chunks/webpack-de4a0d9611ec2cad.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[81998,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"LiveRefresh\"]\n3:I[77242,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"TabWorkspace\"]\n4:I[81984,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"NotesProvider\"]\n5:I[48484,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"PlanProvider\"]\n6:I[10436,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"TopNav\"]\n7:I[52174,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"MainRegion\"]\n8:I[57121,[],\"\"]\n9:I[74581,[],\"\"]\na:I[434,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"PlanBar\"]\nb:I[71886,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"NotesDrawer\"]\nc:I[29510,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"UpdateBanner\"]\nd:I[90484,[],\"OutletBoundary\"]\ne:\"$Sreact.suspense\"\n11:I[90484,[],\"ViewportBoundary\"]\n13:I[90484,[],\"MetadataBoundary\"]\n15:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/22a5144ee8d83bca-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":"])</script><script>self.__next_f.push([1,"\"font/woff2\"}]\n:HL[\"/_next/static/media/7d4881bb7e1bf84d-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/e9ed4ff9a583fd9c.css\",\"style\"]\n:HL[\"/_next/static/css/e02ab5db9ff2dca2.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/e9ed4ff9a583fd9c.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/e02ab5db9ff2dca2.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark __variable_246ccd __variable_c29908 h-full antialiased\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col bg-background text-foreground\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{\"children\":[[\"$\",\"$L5\",null,{\"children\":[[\"$\",\"$L6\",null,{\"repo\":\"beacon\"}],[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$La\",null,{}]]}],[\"$\",\"$Lb\",null,{}]]}],[\"$\",\"$Lc\",null,{\"currentVersion\":\"0.1.61\"}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@f\"}]}]]}],{},null,false,null]},null,false,\"$@10\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L11\",null,{\"children\":\"$L12\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L13\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L14\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$15\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"j_yDuyPEP2TT78o8NwY-x\"}\n"])</script><script>self.__next_f.push([1,"16:[]\n10:\"$W16\"\n"])</script><script>self.__next_f.push([1,"12:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"17:I[86869,[],\"IconMark\"]\nf:null\n14:[[\"$\",\"title\",\"0\",{\"children\":\"Beacon\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A local control panel for the repository you're working in\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?bb93a1375ed3c298\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"link\",\"3\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?f9d64651576bd776\",\"type\":\"image/png\",\"sizes\":\"180x180\"}],[\"$\",\"$L17\",\"4\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="dark __variable_246ccd __variable_c29908 h-full antialiased"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/22a5144ee8d83bca-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/7d4881bb7e1bf84d-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/f86b3e50f4e93bc8.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/e02ab5db9ff2dca2.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-de4a0d9611ec2cad.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-cef5038dc7aa126a.js" async=""></script><script src="/_next/static/chunks/main-app-1a32dc335629e4e4.js" async=""></script><script src="/_next/static/chunks/70e0d97a-bbb0ec05083da54f.js" async=""></script><script src="/_next/static/chunks/54a60aa6-0378818fce5a4dc5.js" async=""></script><script src="/_next/static/chunks/8500-f62a38ff68ab7f42.js" async=""></script><script src="/_next/static/chunks/4888-911c0da3c2d785d2.js" async=""></script><script src="/_next/static/chunks/8997-78a359d0d238622e.js" async=""></script><script src="/_next/static/chunks/9887-e8954568a4031ed3.js" async=""></script><script src="/_next/static/chunks/2231-63ad38ec8fb7cb6f.js" async=""></script><script src="/_next/static/chunks/app/layout-3115f8503ff00902.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Beacon</title><meta name="description" content="A local control panel for the repository you&#x27;re working in"/><link rel="icon" href="/icon.svg?bb93a1375ed3c298" type="image/svg+xml" sizes="any"/><link rel="apple-touch-icon" href="/apple-icon.png?f9d64651576bd776" type="image/png" sizes="180x180"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-full flex flex-col bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><header class="pointer-events-none fixed left-3 top-3 z-30"><div class="glass pointer-events-auto flex h-10 items-center gap-1 rounded-full pl-3 pr-1.5"><a class="mr-1 flex items-center gap-2 text-sm font-semibold tracking-tight" href="/"><svg width="18" height="18" viewBox="20 22 56 56" fill="none" class="text-foreground" aria-hidden="true"><path d="M48 33 L72.5 73 L23.5 73 Z" fill="none" stroke="var(--accent-2, #ff7a45)" stroke-width="7" stroke-linejoin="round" stroke-linecap="round"></path><circle cx="48" cy="29.5" r="7" fill="var(--accent-2, #ff7a45)"></circle></svg>Beacon</a><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><span class="font-mono text-xs text-muted-foreground">· <!-- -->beacon</span><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><nav class="flex items-center gap-0.5 text-sm"><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/plan">Plans</a><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/map">Map</a><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/settings">Settings</a></nav><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><button type="button" aria-pressed="false" aria-label="Notes" title="Notes" class="flex items-center justify-center rounded-full p-1.5 transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sticky-note size-4" aria-hidden="true"><path d="M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z"></path><path d="M15 3v5a1 1 0 0 0 1 1h5"></path></svg></button></div></header><main class="flex flex-1 flex-col"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main><div aria-hidden="true" class="fixed inset-y-0 right-0 z-40 flex transition-transform duration-300 ease-out pointer-events-none translate-x-full"><div class="glass relative isolate overflow-hidden flex h-full w-[420px] flex-col rounded-l-2xl border-l border-white/10"><span aria-hidden="true" class="pointer-events-none absolute inset-0 -z-10 rounded-[inherit]" style="background:radial-gradient(90% 60% at 0% 0%, oklch(1 0 0 / 0.04), transparent 42%)"></span><span aria-hidden="true" class="pointer-events-none absolute inset-0 -z-10 rounded-[inherit] opacity-[0.035] mix-blend-overlay" style="background-image:url(&quot;data:image/svg+xml,%3Csvg xmlns=&#x27;http://www.w3.org/2000/svg&#x27; width=&#x27;120&#x27; height=&#x27;120&#x27;%3E%3Cfilter id=&#x27;n&#x27;%3E%3CfeTurbulence type=&#x27;fractalNoise&#x27; baseFrequency=&#x27;0.85&#x27; numOctaves=&#x27;2&#x27; stitchTiles=&#x27;stitch&#x27;/%3E%3C/filter%3E%3Crect width=&#x27;100%25&#x27; height=&#x27;100%25&#x27; filter=&#x27;url(%23n)&#x27;/%3E%3C/svg%3E&quot;);background-size:120px 120px"></span><div class="flex items-center gap-2 border-b border-white/10 px-3 py-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sticky-note size-4 text-[var(--accent-2,#ff7a45)]" aria-hidden="true"><path d="M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z"></path><path d="M15 3v5a1 1 0 0 0 1 1h5"></path></svg><span class="text-sm font-semibold tracking-tight">Notes</span><span class="ml-auto"></span><button type="button" aria-label="New note" title="New note" class="rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus size-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button><button type="button" aria-label="Close notes" title="Close" class="rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x size-4" aria-hidden="true"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button></div><div class="max-h-44 shrink-0 overflow-y-auto border-b border-white/10 p-1.5"><p class="px-2 py-3 text-[13px] text-muted-foreground">No notes yet. Hit <span class="text-foreground">+</span> to start one.</p></div><div class="flex flex-1 items-center justify-center p-6 text-center text-[13px] text-muted-foreground">Select a note, or create one. Then <span class="px-1 text-foreground">@</span>-mention it in your terminal to turn it into features.</div></div></div><script src="/_next/static/chunks/webpack-de4a0d9611ec2cad.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[81998,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"LiveRefresh\"]\n3:I[77242,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"TabWorkspace\"]\n4:I[81984,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"NotesProvider\"]\n5:I[48484,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"PlanProvider\"]\n6:I[10436,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"TopNav\"]\n7:I[52174,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"MainRegion\"]\n8:I[57121,[],\"\"]\n9:I[74581,[],\"\"]\na:I[434,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"PlanBar\"]\nb:I[71886,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"NotesDrawer\"]\nc:I[29510,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-3115f8503ff00902.js\"],\"UpdateBanner\"]\nd:I[90484,[],\"OutletBoundary\"]\ne:\"$Sreact.suspense\"\n11:I[90484,[],\"ViewportBoundary\"]\n13:I[90484,[],\"MetadataBoundary\"]\n15:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/22a5144ee8d83bca-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":"])</script><script>self.__next_f.push([1,"\"font/woff2\"}]\n:HL[\"/_next/static/media/7d4881bb7e1bf84d-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/f86b3e50f4e93bc8.css\",\"style\"]\n:HL[\"/_next/static/css/e02ab5db9ff2dca2.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/f86b3e50f4e93bc8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/e02ab5db9ff2dca2.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark __variable_246ccd __variable_c29908 h-full antialiased\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col bg-background text-foreground\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{\"children\":[[\"$\",\"$L5\",null,{\"children\":[[\"$\",\"$L6\",null,{\"repo\":\"beacon\"}],[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$La\",null,{}]]}],[\"$\",\"$Lb\",null,{}]]}],[\"$\",\"$Lc\",null,{\"currentVersion\":\"0.1.63\"}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@f\"}]}]]}],{},null,false,null]},null,false,\"$@10\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L11\",null,{\"children\":\"$L12\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L13\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L14\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$15\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"kt65bLHd8wfwQxMb3ivew\"}\n"])</script><script>self.__next_f.push([1,"16:[]\n10:\"$W16\"\n"])</script><script>self.__next_f.push([1,"12:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"17:I[86869,[],\"IconMark\"]\nf:null\n14:[[\"$\",\"title\",\"0\",{\"children\":\"Beacon\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A local control panel for the repository you're working in\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?bb93a1375ed3c298\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"link\",\"3\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?f9d64651576bd776\",\"type\":\"image/png\",\"sizes\":\"180x180\"}],[\"$\",\"$L17\",\"4\",{}]]\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-de4a0d9611ec2cad.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-cef5038dc7aa126a.js" async=""></script><script src="/_next/static/chunks/main-app-1a32dc335629e4e4.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-de4a0d9611ec2cad.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"j_yDuyPEP2TT78o8NwY-x\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-de4a0d9611ec2cad.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-cef5038dc7aa126a.js" async=""></script><script src="/_next/static/chunks/main-app-1a32dc335629e4e4.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-de4a0d9611ec2cad.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"kt65bLHd8wfwQxMb3ivew\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
@@ -1 +1 @@
1
- self.__RSC_SERVER_MANIFEST="{\"node\":{\"400865ba85bca4ad3e7fc43034422aecc8a9e48ba6\":{\"workers\":{\"app/map/page\":{\"moduleId\":\"50997\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"50997\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"50997\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"createNodeAction\"},\"4014d28e393d4ac54a78d78884f955696e68f039e0\":{\"workers\":{\"app/map/page\":{\"moduleId\":\"50997\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"50997\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"50997\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"cancelAction\"},\"403678f24987fe2f9e85531e5f764211f71c4c639f\":{\"workers\":{\"app/map/page\":{\"moduleId\":\"50997\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"50997\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"50997\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"deprioritizeAction\"},\"40756291e6acc8b0b4557d85d89b9a2604ee101d71\":{\"workers\":{\"app/map/page\":{\"moduleId\":\"50997\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"50997\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"50997\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"deleteNodeAction\"},\"4084905ea0710d080217aa07e9ccd19f38ef345752\":{\"workers\":{\"app/map/page\":{\"moduleId\":\"50997\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"50997\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"50997\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"acceptSuggestionAction\"},\"6012e69231a425e1f22caa946abebf6a6f7962378b\":{\"workers\":{\"app/map/page\":{\"moduleId\":\"50997\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"50997\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"50997\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"updateNodeAction\"},\"6087242e35b0207c26829aea55001cbddcc14c40b1\":{\"workers\":{\"app/map/page\":{\"moduleId\":\"50997\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"50997\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"50997\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"setStatusAction\"}},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}"
1
+ self.__RSC_SERVER_MANIFEST="{\"node\":{\"401d5ecfa3d55d166321590159a3204e3e752833de\":{\"workers\":{\"app/map/page\":{\"moduleId\":\"50872\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"50872\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"50872\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"deleteNodeAction\"},\"4057b83585fcb7793586f1a4e693a6cca6d31fc144\":{\"workers\":{\"app/map/page\":{\"moduleId\":\"50872\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"50872\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"50872\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"createNodeAction\"},\"406133fcd4dc472bfc4aec196b3f0002afadcc715d\":{\"workers\":{\"app/map/page\":{\"moduleId\":\"50872\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"50872\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"50872\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"cancelAction\"},\"406efdf857822b00108c7e6e0fb6a9c3ed8723ab1f\":{\"workers\":{\"app/map/page\":{\"moduleId\":\"50872\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"50872\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"50872\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"deprioritizeAction\"},\"40d8c7e04296d3389822d388ae467d761cf10b6ba1\":{\"workers\":{\"app/map/page\":{\"moduleId\":\"50872\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"50872\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"50872\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"acceptSuggestionAction\"},\"602a5c854434c2eded053dd02adcb444fd46373db6\":{\"workers\":{\"app/map/page\":{\"moduleId\":\"50872\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"50872\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"50872\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"updateNodeAction\"},\"60c2daba20ed903a866d5c3447944703e416fbf6c1\":{\"workers\":{\"app/map/page\":{\"moduleId\":\"50872\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"50872\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"50872\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"setStatusAction\"}},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}"
@@ -1 +1 @@
1
- {"node":{"400865ba85bca4ad3e7fc43034422aecc8a9e48ba6":{"workers":{"app/map/page":{"moduleId":"50997","async":true},"app/plan/page":{"moduleId":"50997","async":true},"app/s/[token]/page":{"moduleId":"50997","async":true}},"filename":"app/actions/nodes.ts","exportedName":"createNodeAction"},"4014d28e393d4ac54a78d78884f955696e68f039e0":{"workers":{"app/map/page":{"moduleId":"50997","async":true},"app/plan/page":{"moduleId":"50997","async":true},"app/s/[token]/page":{"moduleId":"50997","async":true}},"filename":"app/actions/nodes.ts","exportedName":"cancelAction"},"403678f24987fe2f9e85531e5f764211f71c4c639f":{"workers":{"app/map/page":{"moduleId":"50997","async":true},"app/plan/page":{"moduleId":"50997","async":true},"app/s/[token]/page":{"moduleId":"50997","async":true}},"filename":"app/actions/nodes.ts","exportedName":"deprioritizeAction"},"40756291e6acc8b0b4557d85d89b9a2604ee101d71":{"workers":{"app/map/page":{"moduleId":"50997","async":true},"app/plan/page":{"moduleId":"50997","async":true},"app/s/[token]/page":{"moduleId":"50997","async":true}},"filename":"app/actions/nodes.ts","exportedName":"deleteNodeAction"},"4084905ea0710d080217aa07e9ccd19f38ef345752":{"workers":{"app/map/page":{"moduleId":"50997","async":true},"app/plan/page":{"moduleId":"50997","async":true},"app/s/[token]/page":{"moduleId":"50997","async":true}},"filename":"app/actions/nodes.ts","exportedName":"acceptSuggestionAction"},"6012e69231a425e1f22caa946abebf6a6f7962378b":{"workers":{"app/map/page":{"moduleId":"50997","async":true},"app/plan/page":{"moduleId":"50997","async":true},"app/s/[token]/page":{"moduleId":"50997","async":true}},"filename":"app/actions/nodes.ts","exportedName":"updateNodeAction"},"6087242e35b0207c26829aea55001cbddcc14c40b1":{"workers":{"app/map/page":{"moduleId":"50997","async":true},"app/plan/page":{"moduleId":"50997","async":true},"app/s/[token]/page":{"moduleId":"50997","async":true}},"filename":"app/actions/nodes.ts","exportedName":"setStatusAction"}},"edge":{},"encryptionKey":"N8GCVors2Lwj4D10jA0RDomZWDmmR+mOgcAvprf+APk="}
1
+ {"node":{"401d5ecfa3d55d166321590159a3204e3e752833de":{"workers":{"app/map/page":{"moduleId":"50872","async":true},"app/s/[token]/page":{"moduleId":"50872","async":true},"app/plan/page":{"moduleId":"50872","async":true}},"filename":"app/actions/nodes.ts","exportedName":"deleteNodeAction"},"4057b83585fcb7793586f1a4e693a6cca6d31fc144":{"workers":{"app/map/page":{"moduleId":"50872","async":true},"app/s/[token]/page":{"moduleId":"50872","async":true},"app/plan/page":{"moduleId":"50872","async":true}},"filename":"app/actions/nodes.ts","exportedName":"createNodeAction"},"406133fcd4dc472bfc4aec196b3f0002afadcc715d":{"workers":{"app/map/page":{"moduleId":"50872","async":true},"app/s/[token]/page":{"moduleId":"50872","async":true},"app/plan/page":{"moduleId":"50872","async":true}},"filename":"app/actions/nodes.ts","exportedName":"cancelAction"},"406efdf857822b00108c7e6e0fb6a9c3ed8723ab1f":{"workers":{"app/map/page":{"moduleId":"50872","async":true},"app/s/[token]/page":{"moduleId":"50872","async":true},"app/plan/page":{"moduleId":"50872","async":true}},"filename":"app/actions/nodes.ts","exportedName":"deprioritizeAction"},"40d8c7e04296d3389822d388ae467d761cf10b6ba1":{"workers":{"app/map/page":{"moduleId":"50872","async":true},"app/s/[token]/page":{"moduleId":"50872","async":true},"app/plan/page":{"moduleId":"50872","async":true}},"filename":"app/actions/nodes.ts","exportedName":"acceptSuggestionAction"},"602a5c854434c2eded053dd02adcb444fd46373db6":{"workers":{"app/map/page":{"moduleId":"50872","async":true},"app/s/[token]/page":{"moduleId":"50872","async":true},"app/plan/page":{"moduleId":"50872","async":true}},"filename":"app/actions/nodes.ts","exportedName":"updateNodeAction"},"60c2daba20ed903a866d5c3447944703e416fbf6c1":{"workers":{"app/map/page":{"moduleId":"50872","async":true},"app/s/[token]/page":{"moduleId":"50872","async":true},"app/plan/page":{"moduleId":"50872","async":true}},"filename":"app/actions/nodes.ts","exportedName":"setStatusAction"}},"edge":{},"encryptionKey":"bNOmPnCrbYjWTTzdrpsZ6Mb99Spjh9xIsoPHXWYfeQs="}