trybeacon 0.1.30 → 0.1.32

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 (168) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +18 -18
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/dev/build-manifest.json +50 -0
  5. package/.next/dev/fallback-build-manifest.json +37 -0
  6. package/.next/dev/logs/next-development.log +101 -0
  7. package/.next/dev/server/chunks/ssr/[externals]__1vp7etu._.js +32 -0
  8. package/.next/dev/server/chunks/ssr/[externals]__1vp7etu._.js.map +5 -0
  9. package/.next/dev/server/chunks/ssr/[externals]_next_dist_shared_lib_no-fallback-error_external_0r3u29k.js +8 -0
  10. package/.next/dev/server/chunks/ssr/[externals]_next_dist_shared_lib_no-fallback-error_external_0r3u29k.js.map +5 -0
  11. package/.next/dev/server/chunks/ssr/[root-of-the-server]__0y0_snu._.js +285 -0
  12. package/.next/dev/server/chunks/ssr/[root-of-the-server]__0y0_snu._.js.map +9 -0
  13. package/.next/dev/server/chunks/ssr/node_modules_02es85m._.js +6621 -0
  14. package/.next/dev/server/chunks/ssr/node_modules_02es85m._.js.map +76 -0
  15. package/.next/dev/server/chunks/ssr/node_modules_1_aarlg._.js +4399 -0
  16. package/.next/dev/server/chunks/ssr/node_modules_1_aarlg._.js.map +35 -0
  17. package/.next/dev/server/chunks/ssr/node_modules_next_1_o5zxs._.js +55 -0
  18. package/.next/dev/server/chunks/ssr/node_modules_next_1_o5zxs._.js.map +7 -0
  19. package/.next/dev/server/middleware-build-manifest.js +50 -0
  20. package/.next/dev/server/next-font-manifest.js +1 -0
  21. package/.next/dev/server/next-font-manifest.json +23 -0
  22. package/.next/dev/server/pages/_app/build-manifest.json +23 -0
  23. package/.next/dev/server/pages/_app/client-build-manifest.json +5 -0
  24. package/.next/dev/server/pages/_app/next-font-manifest.json +6 -0
  25. package/.next/dev/server/pages/_app/pages-manifest.json +3 -0
  26. package/.next/dev/server/pages/_app/react-loadable-manifest.json +1 -0
  27. package/.next/dev/server/pages/_app.js +4 -0
  28. package/.next/dev/server/pages/_app.js.map +5 -0
  29. package/.next/dev/server/pages/_document/next-font-manifest.json +6 -0
  30. package/.next/dev/server/pages/_document/pages-manifest.json +3 -0
  31. package/.next/dev/server/pages/_document/react-loadable-manifest.json +1 -0
  32. package/.next/dev/server/pages/_document.js +5 -0
  33. package/.next/dev/server/pages/_document.js.map +5 -0
  34. package/.next/dev/server/pages/_error/build-manifest.json +22 -0
  35. package/.next/dev/server/pages/_error/client-build-manifest.json +5 -0
  36. package/.next/dev/server/pages/_error/next-font-manifest.json +6 -0
  37. package/.next/dev/server/pages/_error/pages-manifest.json +3 -0
  38. package/.next/dev/server/pages/_error/react-loadable-manifest.json +1 -0
  39. package/.next/dev/server/pages/_error.js +8 -0
  40. package/.next/dev/server/pages/_error.js.map +5 -0
  41. package/.next/dev/server/pages-manifest.json +5 -0
  42. package/.next/dev/static/chunks/[next]_entry_page-loader_ts_0z3haqk._.js +23 -0
  43. package/.next/dev/static/chunks/[next]_entry_page-loader_ts_0z3haqk._.js.map +6 -0
  44. package/.next/dev/static/chunks/[next]_entry_page-loader_ts_1aoli7m._.js +23 -0
  45. package/.next/dev/static/chunks/[next]_entry_page-loader_ts_1aoli7m._.js.map +6 -0
  46. package/.next/dev/static/chunks/[root-of-the-server]__02sxxph._.js +476 -0
  47. package/.next/dev/static/chunks/[root-of-the-server]__02sxxph._.js.map +6 -0
  48. package/.next/dev/static/chunks/[root-of-the-server]__0l4r13l._.js +476 -0
  49. package/.next/dev/static/chunks/[root-of-the-server]__0l4r13l._.js.map +6 -0
  50. package/.next/dev/static/chunks/node_modules_10e2-xo._.js +1343 -0
  51. package/.next/dev/static/chunks/node_modules_10e2-xo._.js.map +13 -0
  52. package/.next/dev/static/chunks/node_modules_next_app_0yrdk3r.js +8 -0
  53. package/.next/dev/static/chunks/node_modules_next_app_0yrdk3r.js.map +6 -0
  54. package/.next/dev/static/chunks/node_modules_next_dist_1atto1n._.js +2334 -0
  55. package/.next/dev/static/chunks/node_modules_next_dist_1atto1n._.js.map +26 -0
  56. package/.next/dev/static/chunks/node_modules_next_dist_1gdrd03._.js +2165 -0
  57. package/.next/dev/static/chunks/node_modules_next_dist_1gdrd03._.js.map +25 -0
  58. package/.next/dev/static/chunks/node_modules_next_dist_client_16lnmlo._.js +4084 -0
  59. package/.next/dev/static/chunks/node_modules_next_dist_client_16lnmlo._.js.map +49 -0
  60. package/.next/dev/static/chunks/node_modules_next_dist_compiled_14ibvna._.js +6064 -0
  61. package/.next/dev/static/chunks/node_modules_next_dist_compiled_14ibvna._.js.map +17 -0
  62. package/.next/dev/static/chunks/node_modules_next_dist_shared_lib_0pizcwv._.js +7311 -0
  63. package/.next/dev/static/chunks/node_modules_next_dist_shared_lib_0pizcwv._.js.map +72 -0
  64. package/.next/dev/static/chunks/node_modules_next_dist_shared_lib_12jmhie._.js +7070 -0
  65. package/.next/dev/static/chunks/node_modules_next_dist_shared_lib_12jmhie._.js.map +70 -0
  66. package/.next/dev/static/chunks/node_modules_react-dom_0kla17-._.js +15381 -0
  67. package/.next/dev/static/chunks/node_modules_react-dom_0kla17-._.js.map +9 -0
  68. package/.next/dev/static/chunks/pages/_app.js +13 -0
  69. package/.next/dev/static/chunks/pages/_error.js +12 -0
  70. package/.next/dev/static/chunks/pages__app_0du2_q-._.js +5 -0
  71. package/.next/dev/static/chunks/pages__app_1ouknez._.js.map +11 -0
  72. package/.next/dev/static/chunks/pages__error_0du2_q-._.js +5 -0
  73. package/.next/dev/static/chunks/pages__error_18oj9bx._.js.map +11 -0
  74. package/.next/dev/static/chunks/turbopack-pages__app_1ouknez._.js +2236 -0
  75. package/.next/dev/static/chunks/turbopack-pages__error_18oj9bx._.js +2236 -0
  76. package/.next/prerender-manifest.json +3 -3
  77. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  78. package/.next/server/app/_global-error.html +1 -1
  79. package/.next/server/app/_global-error.rsc +1 -1
  80. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  81. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  82. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  83. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  84. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  85. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  86. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  87. package/.next/server/app/_not-found.html +1 -1
  88. package/.next/server/app/_not-found.rsc +11 -11
  89. package/.next/server/app/_not-found.segments/_full.segment.rsc +11 -11
  90. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  91. package/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  92. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  93. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  94. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  95. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  96. package/.next/server/app/docs.html +1 -1
  97. package/.next/server/app/docs.rsc +12 -12
  98. package/.next/server/app/docs.segments/_full.segment.rsc +12 -12
  99. package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  100. package/.next/server/app/docs.segments/_index.segment.rsc +10 -10
  101. package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  102. package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +2 -2
  103. package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  104. package/.next/server/app/feedback/page_client-reference-manifest.js +1 -1
  105. package/.next/server/app/feedback.html +1 -1
  106. package/.next/server/app/feedback.rsc +11 -11
  107. package/.next/server/app/feedback.segments/_full.segment.rsc +11 -11
  108. package/.next/server/app/feedback.segments/_head.segment.rsc +1 -1
  109. package/.next/server/app/feedback.segments/_index.segment.rsc +10 -10
  110. package/.next/server/app/feedback.segments/_tree.segment.rsc +2 -2
  111. package/.next/server/app/feedback.segments/feedback/__PAGE__.segment.rsc +1 -1
  112. package/.next/server/app/feedback.segments/feedback.segment.rsc +1 -1
  113. package/.next/server/app/help/page_client-reference-manifest.js +1 -1
  114. package/.next/server/app/help.html +1 -1
  115. package/.next/server/app/help.rsc +28 -27
  116. package/.next/server/app/help.segments/_full.segment.rsc +28 -27
  117. package/.next/server/app/help.segments/_head.segment.rsc +1 -1
  118. package/.next/server/app/help.segments/_index.segment.rsc +10 -10
  119. package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
  120. package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
  121. package/.next/server/app/help.segments/help.segment.rsc +1 -1
  122. package/.next/server/app/icon.svg/route.js +1 -1
  123. package/.next/server/app/icon.svg.body +1 -1
  124. package/.next/server/app/index.html +1 -1
  125. package/.next/server/app/index.rsc +12 -12
  126. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  127. package/.next/server/app/index.segments/_full.segment.rsc +12 -12
  128. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  129. package/.next/server/app/index.segments/_index.segment.rsc +10 -10
  130. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  131. package/.next/server/app/map/page.js +2 -2
  132. package/.next/server/app/map/page.js.nft.json +1 -1
  133. package/.next/server/app/map/page_client-reference-manifest.js +1 -1
  134. package/.next/server/app/page_client-reference-manifest.js +1 -1
  135. package/.next/server/app/plan/page.js +2 -2
  136. package/.next/server/app/plan/page.js.nft.json +1 -1
  137. package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
  138. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  139. package/.next/server/app-paths-manifest.json +18 -18
  140. package/.next/server/chunks/2933.js +1 -1
  141. package/.next/server/chunks/333.js +1 -1
  142. package/.next/server/chunks/9213.js +1 -1
  143. package/.next/server/chunks/9972.js +1 -0
  144. package/.next/server/middleware-build-manifest.js +1 -1
  145. package/.next/server/pages/404.html +1 -1
  146. package/.next/server/pages/500.html +1 -1
  147. package/.next/server/server-reference-manifest.js +1 -1
  148. package/.next/server/server-reference-manifest.json +1 -1
  149. package/.next/static/chunks/1439-260d1c3a9b3b79b3.js +1 -0
  150. package/.next/static/chunks/2420-fa8df70262f420d0.js +1 -0
  151. package/.next/static/chunks/app/docs/page-53e546dabf1b1ad3.js +1 -0
  152. package/.next/static/chunks/app/{layout-da48c47b6a3a2b7e.js → layout-33b2dea4a7ce242e.js} +1 -1
  153. package/.next/static/chunks/app/map/page-02ad8e3650faa96a.js +1 -0
  154. package/.next/static/chunks/app/{page-f8884bd1ed98948c.js → page-92284d5d81118e0d.js} +1 -1
  155. package/.next/static/chunks/app/plan/{page-a2a98ec27486b518.js → page-7be8419fc56d5f1d.js} +1 -1
  156. package/.next/static/css/f57cbca8ad454630.css +1 -0
  157. package/.next/trace +38 -38
  158. package/.next/trace-build +1 -1
  159. package/dist/bin/remove.js +1 -1
  160. package/package.json +1 -1
  161. package/.next/server/chunks/5974.js +0 -1
  162. package/.next/static/chunks/5426-21219f7464c3641b.js +0 -1
  163. package/.next/static/chunks/7028-203d22963f2662e5.js +0 -1
  164. package/.next/static/chunks/app/docs/page-b19140967150d8a3.js +0 -1
  165. package/.next/static/chunks/app/map/page-89a4e1643ef6fd58.js +0 -1
  166. package/.next/static/css/80cb1416c2081a49.css +0 -1
  167. /package/.next/static/{wFJUzKzOKT3laaJ4v8nu0 → fyHHiCSkZnragXxrsGMEr}/_buildManifest.js +0 -0
  168. /package/.next/static/{wFJUzKzOKT3laaJ4v8nu0 → fyHHiCSkZnragXxrsGMEr}/_ssgManifest.js +0 -0
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-webpack","duration":6773249,"timestamp":330462990770,"id":14,"parentId":1,"tags":{},"startTime":1781145182823,"traceId":"0a1cf725f6a06d59"},{"name":"run-typescript","duration":3219241,"timestamp":330469765052,"id":3960,"parentId":1,"tags":{},"startTime":1781145189597,"traceId":"0a1cf725f6a06d59"},{"name":"static-check","duration":292597,"timestamp":330472993069,"id":3963,"parentId":1,"tags":{},"startTime":1781145192825,"traceId":"0a1cf725f6a06d59"},{"name":"static-generation","duration":991420,"timestamp":330473633125,"id":4103,"parentId":1,"tags":{},"startTime":1781145193465,"traceId":"0a1cf725f6a06d59"},{"name":"collect-build-traces","duration":3399012,"timestamp":330473286978,"id":4100,"parentId":1,"tags":{},"startTime":1781145193119,"traceId":"0a1cf725f6a06d59"},{"name":"telemetry-flush","duration":14,"timestamp":330476687448,"id":4112,"parentId":1,"tags":{},"startTime":1781145196519,"traceId":"0a1cf725f6a06d59"},{"name":"next-build","duration":13793978,"timestamp":330462893550,"id":1,"tags":{"buildMode":"default","version":"16.2.7","bundler":"webpack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781145182726,"traceId":"0a1cf725f6a06d59"}]
1
+ [{"name":"run-webpack","duration":7347090,"timestamp":333356663827,"id":14,"parentId":1,"tags":{},"startTime":1781148076501,"traceId":"ef4fb471114f15eb"},{"name":"run-typescript","duration":3370453,"timestamp":333364012258,"id":3960,"parentId":1,"tags":{},"startTime":1781148083849,"traceId":"ef4fb471114f15eb"},{"name":"static-check","duration":313818,"timestamp":333367390341,"id":3963,"parentId":1,"tags":{},"startTime":1781148087227,"traceId":"ef4fb471114f15eb"},{"name":"static-generation","duration":1055791,"timestamp":333368082075,"id":4103,"parentId":1,"tags":{},"startTime":1781148087919,"traceId":"ef4fb471114f15eb"},{"name":"collect-build-traces","duration":3513180,"timestamp":333367705441,"id":4100,"parentId":1,"tags":{},"startTime":1781148087542,"traceId":"ef4fb471114f15eb"},{"name":"telemetry-flush","duration":18,"timestamp":333371220145,"id":4112,"parentId":1,"tags":{},"startTime":1781148091057,"traceId":"ef4fb471114f15eb"},{"name":"next-build","duration":14596671,"timestamp":333356623551,"id":1,"tags":{"buildMode":"default","version":"16.2.7","bundler":"webpack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781148076461,"traceId":"ef4fb471114f15eb"}]
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var S5=Object.defineProperty;var k5=(Z)=>Z;function v5(Z,$){this[Z]=k5.bind(null,$)}var wZ=(Z,$)=>{for(var Q in $)S5(Z,Q,{get:$[Q],enumerable:!0,configurable:!0,set:v5.bind($,Q)})};var $4=(Z,$)=>()=>(Z&&($=Z(Z=0)),$);var J4={};wZ(J4,{provisionDb:()=>c5});import{createClient as w5}from"@libsql/client";import{drizzle as T5}from"drizzle-orm/libsql";import{migrate as y5}from"drizzle-orm/libsql/migrator";import{readMigrationFiles as f5}from"drizzle-orm/migrator";import{dirname as TZ,join as u5}from"path";import{fileURLToPath as x5}from"url";async function AZ(Z,$){return(await Z.execute({sql:"SELECT 1 FROM sqlite_master WHERE type='table' AND name = ?",args:[$]})).rows.length>0}async function m5(Z,$){let Q=await Z.execute(`PRAGMA table_info("${$}")`);return new Set(Q.rows.map((J)=>String(J.name)))}async function Q4(Z){if(!await AZ(Z,"__drizzle_migrations"))return 0;let $=await Z.execute('SELECT count(*) AS n FROM "__drizzle_migrations"');return Number($.rows[0]?.n??0)}async function p5(Z){for(let[$,Q]of Object.entries(b5)){if(!await AZ(Z,$))continue;let J=await m5(Z,$);for(let V of Q){if(!J.has(V))continue;await Z.execute(`UPDATE "${$}" SET "${V}" = CAST((julianday("${V}") - 2440587.5) * 86400000 AS INTEGER) WHERE typeof("${V}") = 'text'`)}}}async function c5(Z,$=h5){let Q=w5({url:Z});try{await Q.execute("PRAGMA journal_mode = WAL;"),await Q.execute("PRAGMA foreign_keys = ON;"),await Q.execute("PRAGMA busy_timeout = 5000;");let J=await AZ(Q,"__drizzle_migrations"),V=await AZ(Q,"Node"),K=!1;if(V&&!J){let X=f5({migrationsFolder:$})[0];if(X)await Q.execute('CREATE TABLE IF NOT EXISTS "__drizzle_migrations" (id SERIAL PRIMARY KEY, hash text NOT NULL, created_at numeric)'),await Q.execute({sql:'INSERT INTO "__drizzle_migrations" ("hash", "created_at") VALUES (?, ?)',args:[X.hash,X.folderMillis]}),K=!0}let Y=await Q4(Q);if(await y5(T5(Q),{migrationsFolder:$}),await Q4(Q)>Y)K=!0;return await p5(Q),{migrated:K}}finally{Q.close()}}var g5,h5,b5;var V4=$4(async()=>{g5=TZ(TZ(TZ(x5(import.meta.url)))),h5=process.env.BEACON_MIGRATIONS_DIR||u5(g5,"drizzle"),b5={Node:["createdAt","updatedAt"],Note:["createdAt","updatedAt"],DbTable:["createdAt","updatedAt"],Endpoint:["createdAt","updatedAt"],DraftTable:["createdAt"],SyncState:["codeGraphSyncedAt","updatedAt"],AppSetting:["updatedAt"],ProjectMeta:["updatedAt"],CodeFile:["updatedAt"]}});import{mkdirSync as u7,renameSync as x7,rmSync as g7,writeFileSync as h7}from"fs";import{dirname as b7}from"path";function S$(Z,$){u7(b7(Z),{recursive:!0});let Q=`${Z}.tmp`;try{h7(Q,$),x7(Q,Z)}catch(J){throw g7(Q,{force:!0}),J}}var M5=()=>{};import{AsyncLocalStorage as l5}from"async_hooks";import{spawnSync as d5}from"child_process";import{createHash as n5}from"crypto";import{existsSync as K4,mkdirSync as _Z,readFileSync as X4,writeFileSync as Y4}from"fs";import{homedir as r5}from"os";import{basename as o5,join as ZZ}from"path";function $Z(){return process.env.BEACON_HOME||ZZ(r5(),".beacon")}function fZ(){return ZZ($Z(),"workspaces.json")}function WZ(Z){return n5("sha256").update(Z).digest("hex").slice(0,12)}function uZ(Z=process.cwd()){let $=d5("git",["rev-parse","--show-toplevel"],{cwd:Z,stdio:["ignore","pipe","ignore"]});if($.status===0){let Q=$.stdout?.toString().trim();if(Q)return Q}return Z}function n(Z){return ZZ($Z(),Z)}function QZ(Z){return`file:${ZZ(n(Z),"db.sqlite")}`}function LZ(){try{let Z=JSON.parse(X4(fZ(),"utf8"));return Array.isArray(Z)?Z:[]}catch{return[]}}function xZ(Z){_Z($Z(),{recursive:!0}),Y4(fZ(),JSON.stringify(Z,null,2))}function gZ(){return LZ().sort((Z,$)=>$.lastOpenedAt.localeCompare(Z.lastOpenedAt))}function x(Z){return LZ().find(($)=>$.id===Z)??null}function i5(Z,$,Q=new Date().toISOString()){let J=WZ(Z),V=LZ(),K=V.find((H)=>H.id===J),Y={id:J,path:Z,name:$||K?.name||o5(Z),lastOpenedAt:Q},X=[Y,...V.filter((H)=>H.id!==J)];return _Z(n(J),{recursive:!0}),xZ(X),Y}function F8(Z,$=new Date().toISOString()){let Q=LZ(),J=Q.find((V)=>V.id===Z);if(!J)return;J.lastOpenedAt=$,xZ(Q)}function G4(Z){if(xZ(LZ().filter(($)=>$.id!==Z)),r()===Z)s5(gZ()[0]?.id??null)}function M4(){return ZZ($Z(),"active")}function r(){try{return X4(M4(),"utf8").trim()||null}catch{return null}}function s5(Z){_Z($Z(),{recursive:!0}),Y4(M4(),Z??"")}function a5(){let Z=r();return Z?x(Z):null}function z8(){let Z=DZ()??r();return Z?x(Z):null}function P8(Z){return x(Z)?.path??null}function E8(){return K4(fZ())}var j4="beacon_ws";function U4(Z,$){let Q=Z.headers.get("cookie");if(!Q)return null;for(let J of Q.split(";")){let V=J.indexOf("=");if(V===-1)continue;if(J.slice(0,V).trim()===$)return decodeURIComponent(J.slice(V+1).trim())}return null}function I8(Z){let $=Z.headers.get("x-beacon-workspace");if($&&x($))return $;let Q=U4(Z,j4);if(Q&&x(Q))return Q;return null}var t5="x-beacon-workspace-path";async function R8(Z){let $=Z.headers.get("x-beacon-workspace");if($&&x($))return $;let Q=Z.headers.get(t5);if(Q&&(!$||WZ(Q)===$)){let V=i5(Q);return await hZ(V.id),V.id}let J=U4(Z,j4);if(J&&x(J))return J;return null}var H4=new l5;function e5(Z,$){return Z?H4.run(Z,$):$()}function DZ(){return H4.getStore()??null}var yZ=new Set;function W4(Z){yZ.delete(ZZ(n(Z),"db.sqlite"))}async function hZ(Z){let $=n(Z),Q=ZZ($,"db.sqlite"),J=K4(Q);if(J&&yZ.has(Q))return{ok:!0,created:!1,migrated:!1};try{_Z($,{recursive:!0});let{provisionDb:V}=await V4().then(() => J4),K=await V(QZ(Z));return yZ.add(Q),{ok:!0,created:!J,migrated:J&&K.migrated}}catch(V){return{ok:!1,created:!1,migrated:!1,error:V instanceof Error?V.message:String(V)}}}import{existsSync as X8,readFileSync as Y8}from"fs";import{resolve as z5}from"path";import{rmSync as K8}from"fs";import{drizzle as D6}from"drizzle-orm/libsql";import{createClient as F6}from"@libsql/client";var bZ={};wZ(bZ,{tag:()=>MZ,syncState:()=>s,projectMeta:()=>K6,note:()=>Q6,nodeTags:()=>VZ,nodeFile:()=>CZ,node:()=>w,endpointTable:()=>o,endpoint:()=>k,edge:()=>JZ,draftTable:()=>c,draftRelation:()=>KZ,draftColumn:()=>NZ,dbTable:()=>E,dbRelation:()=>l,dbColumn:()=>t,codeFileEdge:()=>u,codeFile:()=>f,bugFlag:()=>BZ,boardAnnotation:()=>J6,appSetting:()=>V6});import{sqliteTable as T,index as v,foreignKey as Z6,text as C,integer as z,real as b,uniqueIndex as a,primaryKey as $6}from"drizzle-orm/sqlite-core";import{createId as h}from"@paralleldrive/cuid2";var w=T("Node",{id:C().primaryKey().$defaultFn(()=>h()),view:C().notNull(),kind:C().default("FEATURE").notNull(),cluster:C(),title:C().notNull(),role:C(),plain:C(),status:C().default("PENDING").notNull(),priority:z().default(2).notNull(),progress:z().default(0).notNull(),x:b().default(0).notNull(),y:b().default(0).notNull(),sourceRef:C(),externalId:C(),source:C().default("MANUAL").notNull(),planId:C(),parentId:C(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[v("Node_cluster_idx").on(Z.cluster),v("Node_parentId_idx").on(Z.parentId),v("Node_view_idx").on(Z.view),Z6(()=>({columns:[Z.parentId],foreignColumns:[Z.id],name:"Node_parentId_Node_id_fk"})).onUpdate("cascade").onDelete("cascade")]),CZ=T("NodeFile",{id:C().primaryKey().$defaultFn(()=>h()),nodeId:C().notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),path:C().notNull()},(Z)=>[a("NodeFile_nodeId_path_key").on(Z.nodeId,Z.path),v("NodeFile_nodeId_idx").on(Z.nodeId)]),MZ=T("Tag",{id:C().primaryKey().$defaultFn(()=>h()),label:C().notNull(),color:C()},(Z)=>[a("Tag_label_key").on(Z.label)]),JZ=T("Edge",{id:C().primaryKey().$defaultFn(()=>h()),fromId:C().notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),toId:C().notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),kind:C().default("DEPENDS").notNull(),label:C(),sourceHandle:C(),targetHandle:C()},(Z)=>[a("Edge_fromId_toId_kind_key").on(Z.fromId,Z.toId,Z.kind),v("Edge_toId_idx").on(Z.toId),v("Edge_fromId_idx").on(Z.fromId)]),VZ=T("_NodeTags",{a:C("A").notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),b:C("B").notNull().references(()=>MZ.id,{onDelete:"cascade",onUpdate:"cascade"})},(Z)=>[a("_NodeTags_AB_unique").on(Z.a,Z.b),v("_NodeTags_B_index").on(Z.b)]),Q6=T("Note",{id:C().primaryKey().$defaultFn(()=>h()),title:C().default("Untitled").notNull(),body:C().default("").notNull(),ord:b().default(0).notNull(),pinned:z({mode:"boolean"}).default(!1).notNull(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[v("Note_updatedAt_idx").on(Z.updatedAt)]),J6=T("BoardAnnotation",{id:C().primaryKey().$defaultFn(()=>h()),targetKind:C().notNull(),targetId:C().notNull(),columnName:C(),body:C().default("").notNull(),x:b(),y:b(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[v("BoardAnnotation_target_idx").on(Z.targetId)]),BZ=T("BugFlag",{id:C().primaryKey().$defaultFn(()=>h()),nodeId:C().notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),by:C().notNull(),note:C().notNull(),resolvedAt:z({mode:"timestamp_ms"}),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},(Z)=>[v("BugFlag_nodeId_idx").on(Z.nodeId)]),E=T("DbTable",{id:C().primaryKey().$defaultFn(()=>h()),name:C().notNull(),domain:C(),description:C(),source:C().default("MANUAL").notNull(),planId:C(),x:b().default(0).notNull(),y:b().default(0).notNull(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[v("DbTable_domain_idx").on(Z.domain),a("DbTable_name_key").on(Z.name)]),t=T("DbColumn",{id:C().primaryKey().$defaultFn(()=>h()),tableId:C().notNull().references(()=>E.id,{onDelete:"cascade",onUpdate:"cascade"}),name:C().notNull(),type:C().notNull(),isPk:z({mode:"boolean"}).default(!1).notNull(),isFk:z({mode:"boolean"}).default(!1).notNull(),nullable:z({mode:"boolean"}).default(!0).notNull(),note:C(),ord:z().default(0).notNull()},(Z)=>[a("DbColumn_tableId_name_key").on(Z.tableId,Z.name),v("DbColumn_tableId_idx").on(Z.tableId)]),l=T("DbRelation",{id:C().primaryKey().$defaultFn(()=>h()),fromTableId:C().notNull().references(()=>E.id,{onDelete:"cascade",onUpdate:"cascade"}),toTableId:C().notNull().references(()=>E.id,{onDelete:"cascade",onUpdate:"cascade"}),fromColumn:C().notNull(),toColumn:C().notNull(),label:C()},(Z)=>[v("DbRelation_toTableId_idx").on(Z.toTableId),v("DbRelation_fromTableId_idx").on(Z.fromTableId)]),k=T("Endpoint",{id:C().primaryKey().$defaultFn(()=>h()),method:C().notNull(),path:C().notNull(),domain:C(),description:C(),source:C().default("MANUAL").notNull(),planId:C(),x:b().default(0).notNull(),y:b().default(0).notNull(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[a("Endpoint_method_path_key").on(Z.method,Z.path),v("Endpoint_domain_idx").on(Z.domain)]),o=T("EndpointTable",{id:C().primaryKey().$defaultFn(()=>h()),endpointId:C().notNull().references(()=>k.id,{onDelete:"cascade",onUpdate:"cascade"}),tableId:C().notNull().references(()=>E.id,{onDelete:"cascade",onUpdate:"cascade"}),access:C().default("read").notNull()},(Z)=>[a("EndpointTable_endpointId_tableId_key").on(Z.endpointId,Z.tableId),v("EndpointTable_tableId_idx").on(Z.tableId)]),c=T("DraftTable",{id:C().primaryKey().$defaultFn(()=>h()),name:C().notNull(),domain:C(),description:C(),x:b().default(0).notNull(),y:b().default(0).notNull(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},(Z)=>[a("DraftTable_name_key").on(Z.name)]),NZ=T("DraftColumn",{id:C().primaryKey().$defaultFn(()=>h()),tableId:C().notNull().references(()=>c.id,{onDelete:"cascade",onUpdate:"cascade"}),name:C().notNull(),type:C().notNull(),isPk:z({mode:"boolean"}).default(!1).notNull(),isFk:z({mode:"boolean"}).default(!1).notNull(),nullable:z({mode:"boolean"}).default(!0).notNull(),note:C(),ord:z().default(0).notNull()},(Z)=>[v("DraftColumn_tableId_idx").on(Z.tableId)]),KZ=T("DraftRelation",{id:C().primaryKey().$defaultFn(()=>h()),fromTableId:C().notNull().references(()=>c.id,{onDelete:"cascade",onUpdate:"cascade"}),toTableId:C().notNull().references(()=>c.id,{onDelete:"cascade",onUpdate:"cascade"}),fromColumn:C().notNull(),toColumn:C().notNull(),label:C()},(Z)=>[v("DraftRelation_toTableId_idx").on(Z.toTableId),v("DraftRelation_fromTableId_idx").on(Z.fromTableId)]),f=T("CodeFile",{path:C().primaryKey(),root:C(),lang:C(),x:b().default(0).notNull(),y:b().default(0).notNull(),mtimeMs:b(),size:z(),inDegree:z().default(0).notNull(),outDegree:z().default(0).notNull(),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),u=T("CodeFileEdge",{fromPath:C().notNull().references(()=>f.path,{onDelete:"cascade",onUpdate:"cascade"}),toPath:C().notNull().references(()=>f.path,{onDelete:"cascade",onUpdate:"cascade"}),circular:z({mode:"boolean"}).default(!1).notNull()},(Z)=>[v("CodeFileEdge_circular_idx").on(Z.circular),v("CodeFileEdge_toPath_idx").on(Z.toPath),v("CodeFileEdge_fromPath_idx").on(Z.fromPath),$6({columns:[Z.fromPath,Z.toPath],name:"CodeFileEdge_fromPath_toPath_pk"})]),s=T("SyncState",{id:C().primaryKey().default("singleton"),version:z().default(0).notNull(),codeGraphSyncedAt:z({mode:"timestamp_ms"}),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),V6=T("AppSetting",{id:C().primaryKey().default("singleton"),editor:C().default("auto").notNull(),currentFeatureId:C(),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),K6=T("ProjectMeta",{id:C().primaryKey().default("singleton"),overview:C(),conventions:C().default("[]").notNull(),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)});var mZ={};wZ(mZ,{tagRelations:()=>M6,nodeTagsRelations:()=>j6,nodeRelations:()=>X6,nodeFileRelations:()=>Y6,endpointTableRelations:()=>B6,endpointRelations:()=>C6,edgeRelations:()=>U6,draftTableRelations:()=>N6,draftRelationRelations:()=>O6,draftColumnRelations:()=>q6,dbTableRelations:()=>H6,dbRelationRelations:()=>L6,dbColumnRelations:()=>W6,codeFileRelations:()=>A6,codeFileEdgeRelations:()=>_6,bugFlagRelations:()=>G6});import{relations as g}from"drizzle-orm";var X6=g(w,({one:Z,many:$})=>({files:$(CZ),bugFlags:$(BZ),nodeTags:$(VZ),edgesOut:$(JZ,{relationName:"EdgeFrom"}),edgesIn:$(JZ,{relationName:"EdgeTo"}),parent:Z(w,{fields:[w.parentId],references:[w.id],relationName:"NodeTree"}),children:$(w,{relationName:"NodeTree"})})),Y6=g(CZ,({one:Z})=>({node:Z(w,{fields:[CZ.nodeId],references:[w.id]})})),G6=g(BZ,({one:Z})=>({node:Z(w,{fields:[BZ.nodeId],references:[w.id]})})),M6=g(MZ,({many:Z})=>({nodeTags:Z(VZ)})),j6=g(VZ,({one:Z})=>({node:Z(w,{fields:[VZ.a],references:[w.id]}),tag:Z(MZ,{fields:[VZ.b],references:[MZ.id]})})),U6=g(JZ,({one:Z})=>({from:Z(w,{fields:[JZ.fromId],references:[w.id],relationName:"EdgeFrom"}),to:Z(w,{fields:[JZ.toId],references:[w.id],relationName:"EdgeTo"})})),H6=g(E,({many:Z})=>({columns:Z(t),fksOut:Z(l,{relationName:"FkFrom"}),fksIn:Z(l,{relationName:"FkTo"}),usages:Z(o)})),W6=g(t,({one:Z})=>({table:Z(E,{fields:[t.tableId],references:[E.id]})})),L6=g(l,({one:Z})=>({fromTable:Z(E,{fields:[l.fromTableId],references:[E.id],relationName:"FkFrom"}),toTable:Z(E,{fields:[l.toTableId],references:[E.id],relationName:"FkTo"})})),C6=g(k,({many:Z})=>({tables:Z(o)})),B6=g(o,({one:Z})=>({endpoint:Z(k,{fields:[o.endpointId],references:[k.id]}),table:Z(E,{fields:[o.tableId],references:[E.id]})})),N6=g(c,({many:Z})=>({columns:Z(NZ),fksOut:Z(KZ,{relationName:"DraftFkFrom"}),fksIn:Z(KZ,{relationName:"DraftFkTo"})})),q6=g(NZ,({one:Z})=>({table:Z(c,{fields:[NZ.tableId],references:[c.id]})})),O6=g(KZ,({one:Z})=>({fromTable:Z(c,{fields:[KZ.fromTableId],references:[c.id],relationName:"DraftFkFrom"}),toTable:Z(c,{fields:[KZ.toTableId],references:[c.id],relationName:"DraftFkTo"})})),A6=g(f,({many:Z})=>({edgesOut:Z(u,{relationName:"CFEFrom"}),edgesIn:Z(u,{relationName:"CFETo"})})),_6=g(u,({one:Z})=>({fromFile:Z(f,{fields:[u.fromPath],references:[f.path],relationName:"CFEFrom"}),toFile:Z(f,{fields:[u.toPath],references:[f.path],relationName:"CFETo"})}));var z6={...bZ,...mZ};function P6(){let Z=process.env.DATABASE_URL;if(Z&&/^(file:|libsql:|wss?:|https?:|:memory:)/i.test(Z))return Z;return"file:./dev.db"}var E6=P6();function L4(Z){let $=F6({url:Z});return $.execute("PRAGMA foreign_keys = ON;"),$.execute("PRAGMA busy_timeout = 5000;"),D6($,{schema:z6})}var cZ=globalThis,pZ=cZ.dzDefault??L4(E6);cZ.dzDefault=pZ;var FZ=cZ.dzByUrl??=new Map;function lZ(Z){let $=FZ.get(Z);if(!$)$=L4(Z),FZ.set(Z,$);return $}function C4(Z){let $=FZ.get(Z);FZ.delete(Z);try{$?.$client?.close?.()}catch{}}function I6(){if(process.env.BEACON_REPO)return pZ;let Z=DZ()??r();if(!Z)return pZ;return lZ(QZ(Z))}var m=new Proxy({},{get(Z,$){let Q=I6(),J=Q[$];return typeof J==="function"?J.bind(Q):J}});import{existsSync as Q8}from"fs";import{existsSync as O5,readFileSync as s7,watch as a7}from"fs";import{readFile as q5}from"fs/promises";import{join as OZ,relative as t7,resolve as e7}from"path";import{existsSync as y4,readFileSync as f4}from"fs";import{readdir as V7,readFile as K7,stat as u4}from"fs/promises";import{extname as x4,join as EZ,relative as UZ,resolve as jZ}from"path";import{extname as S4}from"path";import{dirname as R6,resolve as S6}from"path";var dZ=[".ts",".tsx",".js",".jsx",".mjs",".cjs"],k6=[/(?:^|[\n;])\s*(?:import|export)[^'"`\n]{0,4000}?from\s*['"]([^'"`]+)['"]/g,/(?:^|[\n;])\s*import\s*['"]([^'"`]+)['"]/g,/\brequire\(\s*['"]([^'"`]+)['"]\s*\)/g,/\bimport\(\s*['"]([^'"`]+)['"]\s*\)/g];function v6(Z){return Z.split(/[\\/]/).join("/")}function B4(Z,$){if($.has(Z))return Z;for(let Q of dZ){let J=`${Z}${Q}`;if($.has(J))return J}for(let Q of dZ){let J=`${Z}/index${Q}`;if($.has(J))return J}return null}function w6(Z){let $=new Set;for(let Q of k6)for(let J of Z.matchAll(Q))$.add(J[1]);return $}function T6(Z,$,Q,J){if(Z.startsWith(".")){let V=S6("/",R6($),Z),K=v6(V).replace(/^\//,"");return B4(K,Q)}for(let V of J)if(Z.startsWith(V.from)){let K=Z.slice(V.from.length),Y=V.to?`${V.to}/${K}`:K,X=B4(Y,Q);if(X)return X}return null}var N4={id:"ts",extensions:dZ,specifiers:w6,resolve(Z,$,Q){let J=T6(Z,$,Q.fileSet,Q.tsAliases??[]);return J?[J]:[]}};import{dirname as q4,join as y6,normalize as f6}from"path";var u6=[".py",".pyi"],O4=[/(?:^|[\n;])\s*from\s+(\.*[\w.]*)\s+import\b/g,/(?:^|[\n;])\s*import\s+([\w.]+(?:\s*,\s*[\w.]+)*)/g];function A4(Z,$){for(let Q of[`${Z}.py`,`${Z}/__init__.py`,`${Z}.pyi`])if($.has(Q))return[Q];return[]}function x6(Z){let $=new Set;for(let Q of Z.matchAll(O4[0])){let J=Q[1].trim();if(J)$.add(J)}for(let Q of Z.matchAll(O4[1]))for(let J of Q[1].split(/\s*,\s*/)){let V=J.trim().split(/\s+as\s+/)[0].trim();if(V)$.add(V)}return $}var _4={id:"python",extensions:u6,specifiers:x6,resolve(Z,$,Q){if(Z.startsWith(".")){let J=Z.length-Z.replace(/^\.+/,"").length,V=Z.slice(J),K=q4($);for(let X=1;X<J;X++)K=q4(K);let Y=V?y6(K,V.replace(/\./g,"/")):K;return A4(f6(Y).replace(/\\/g,"/"),Q.fileSet)}return A4(Z.replace(/\./g,"/"),Q.fileSet)}};import{dirname as g6}from"path";var h6=[".go"],b6=/(?:^|[\n;])\s*import\s+(?:[\w.]+\s+)?"([^"]+)"/g,m6=/(?:^|[\n;])\s*import\s*\(([\s\S]*?)\)/g,p6=/"([^"]+)"/g;function c6(Z){let $=new Set;for(let Q of Z.matchAll(b6))$.add(Q[1]);for(let Q of Z.matchAll(m6))for(let J of Q[1].matchAll(p6))$.add(J[1]);return $}var D4={id:"go",extensions:h6,resolve(Z,$,Q){let J=Q.goModulePath;if(!J)return[];let V=null;if(Z===J)V="";else if(Z.startsWith(`${J}/`))V=Z.slice(J.length+1);if(V===null)return[];let K=[];for(let Y of Q.fileSet){if(!Y.endsWith(".go"))continue;let X=g6(Y);if(V===""&&X==="."||X===V)K.push(Y)}return K.sort()},specifiers:c6};import{basename as F4,dirname as nZ,join as z4,normalize as P4}from"path";var l6=[".rs"],d6=/(?:^|[\n;])\s*(?:pub\s+)?mod\s+(\w+)\s*;/g,n6=/(?:^|[\n;])\s*(?:pub\s+)?use\s+([\w:]+)/g;function r6(Z){let $=Z.split("::").filter((Q)=>Q&&Q!=="*");if(!$.length)return"";if($[0]==="crate")return["crate",...$.slice(1)].join("/");if($[0]==="super")return["..",...$.slice(1)].join("/");if($[0]==="self")return[".",...$.slice(1)].join("/");return $.join("/")}function rZ(Z,$){for(let Q of[`${Z}.rs`,`${Z}/mod.rs`])if($.has(Q))return[Q];return[]}var o6=new Set(["mod.rs","lib.rs","main.rs"]);function i6(Z){let $=new Set;for(let Q of Z.matchAll(d6))$.add(`./${Q[1]}`);for(let Q of Z.matchAll(n6)){let J=r6(Q[1]);if(J)$.add(J)}return $}var E4={id:"rust",extensions:l6,specifiers:i6,resolve(Z,$,Q){let J=Q.fileSet;if(Z.startsWith("./")||Z.startsWith("../")){let V=Z.replace(/^\.\//,""),K=P4(z4(nZ($),Z)).replace(/\\/g,"/"),Y=rZ(K,J);if(Y.length)return Y;if(Z.startsWith("./")&&!o6.has(F4($))){let X=z4(nZ($),F4($,".rs"),V);if(Y=rZ(P4(X).replace(/\\/g,"/"),J),Y.length)return Y}return[]}if(Z.startsWith("crate/")){let V=$.split("/"),K=V.lastIndexOf("src"),Y=K>=0?V.slice(0,K+1).join("/"):nZ($),X=Z.slice(6).split("/");for(let H of[X.join("/"),X.slice(0,-1).join("/")]){if(!H)continue;let B=rZ(`${Y}/${H}`,J);if(B.length)return B}return[]}return[]}};import{dirname as s6,extname as a6,join as t6,normalize as e6}from"path";var I4=[".swift",".java",".rb",".kt",".kts",".cs",".php",".scala",".c",".h",".cpp",".hpp",".cc",".hh",".m",".mm",".ex",".exs",".lua",".dart",".vue",".svelte"],Z7=[/\b(?:require_relative|require|include|import|use|using|from)\s*\(?\s*['"]([^'"`\n]+)['"]/g,/(?:^|[\n;])\s*import\s+([\w.]+)/g,/(?:^|[\n;])\s*from\s+([\w.]+)\s+import\b/g,/(?:^|[\n;])\s*using\s+([\w.]+)\s*;/g,/(?:^|[\n;])\s*use\s+([\w\\]+)/g,/#\s*include\s*[<"]([^>"\n]+)[>"]/g];function $7(Z){let $=new Set;for(let Q of Z7)for(let J of Z.matchAll(Q)){let V=J[1].trim();if(V)$.add(V)}return $}var R4={id:"fallback",extensions:I4,specifiers:$7,resolve(Z,$,Q){let V=[a6($).toLowerCase(),...I4].filter((H,B,M)=>H&&M.indexOf(H)===B),K=Z.includes("/")||Z.includes("\\"),Y=Z.startsWith(".")||K?Z.replace(/\\/g,"/"):Z.replace(/[.:]+/g,"/"),X=[e6(t6(s6($),Y)).replace(/\\/g,"/"),Y.replace(/^\.\//,"")];for(let H of X){if(Q.fileSet.has(H))return[H];for(let B of V){let M=H.endsWith(B)?H:`${H}${B}`;if(Q.fileSet.has(M))return[M];if(Q.fileSet.has(`${H}/index${B}`))return[`${H}/index${B}`]}}return[]}};var Q7=[N4,_4,D4,E4,R4],zZ=new Map;for(let Z of Q7)for(let $ of Z.extensions)zZ.set($,Z);var J7={".ts":"ts",".tsx":"ts",".js":"js",".jsx":"js",".mjs":"js",".cjs":"js",".py":"py",".pyi":"py",".go":"go",".rs":"rs",".swift":"swift",".java":"java",".rb":"ruby",".kt":"kotlin",".kts":"kotlin",".cs":"csharp",".php":"php",".scala":"scala",".c":"c",".h":"c",".cpp":"cpp",".hpp":"cpp",".cc":"cpp",".hh":"cpp",".m":"objc",".mm":"objc",".ex":"elixir",".exs":"elixir",".lua":"lua",".dart":"dart",".vue":"vue",".svelte":"svelte"};function oZ(Z){return zZ.get(S4(Z).toLowerCase())??null}function k4(Z){let $=S4(Z).toLowerCase();if(!zZ.has($))return null;return J7[$]??$.slice(1)}function iZ(){return new Set(zZ.keys())}var g4=new Set(["node_modules",".git",".next","dist","build","__pycache__","target",".venv","venv","env",".turbo","coverage",".beacon",".playwright-mcp","generated"]);function X7(Z=5){let $=performance.now();return async()=>{if(performance.now()-$>Z)await new Promise((Q)=>setImmediate(Q)),$=performance.now()}}var Y7=()=>Promise.resolve();async function h4(Z,$,Q,J,V){let K;try{K=await V7($,{withFileTypes:!0})}catch{return}for(let Y of K){if(Y.name.startsWith("."))continue;if(g4.has(Y.name))continue;let X=EZ($,Y.name);if(Y.isDirectory()){await h4(Z,X,Q,J,V);continue}if(!Y.isFile())continue;if(Y.name.endsWith(".d.ts"))continue;if(!Q.has(x4(Y.name).toLowerCase()))continue;J.push(UZ(Z,X))}await V()}async function G7(Z,$=Y7){let Q=[];return await h4(Z,Z,iZ(),Q,$),Q.map((J)=>J.split(/[\\/]/).join("/")).sort()}function M7(Z){try{return JSON.parse(Z)}catch{}let $=Z.replace(/\/\*[^"]*?\*\//g,"").replace(/(^|[^:"])\/\/.*$/gm,"$1").replace(/,\s*([}\]])/g,"$1");return JSON.parse($)}function v4(Z){return Z.replace(/^\.\/?/,"").replace(/\/$/,"")}function b4(Z){let $=EZ(Z,"tsconfig.json");if(!y4($))return[];let Q;try{Q=M7(f4($,"utf8"))}catch{return[]}let J=Q.compilerOptions?.paths??{},V=v4(Q.compilerOptions?.baseUrl??"."),K=[];for(let[Y,X]of Object.entries(J)){if(!Y.endsWith("/*")||!X.length)continue;let H=X[0];if(!H.endsWith("/*"))continue;let B=Y.slice(0,-1),M=v4(H.slice(0,-1)),W=[V,M].filter(Boolean).join("/");K.push({from:B,to:W})}return K}function PZ(Z){let $=EZ(Z,"go.mod");if(!y4($))return null;try{let Q=/^\s*module\s+(\S+)/m.exec(f4($,"utf8"));return Q?Q[1]:null}catch{return null}}function p(Z){return Z.split(/[\\/]/).join("/")}function m4(Z){if(Z.length===1)return Z[0];let $=Z.map((V)=>p(V).split("/")),Q=$[0],J=0;for(;J<Q.length;J++)if(!$.every((V)=>V[J]===Q[J]))break;return Q.slice(0,J).join("/")||"/"}async function j7(Z,$,Q){let J=(Array.isArray(Z)?Z:[Z]).map((B)=>p(jZ(B))),V=p($?jZ($):J.length===1?J[0]:m4(J)),K=new Map,Y=[];for(let B of J){let M=p(UZ(V,B));for(let W of b4(B))Y.push({from:W.from,to:[M,W.to].filter(Boolean).join("/")});for(let W of await G7(B,Q)){let L=p(EZ(B,W)),q=p(UZ(V,L));if(K.has(q))continue;try{let j=await u4(L);K.set(q,{path:q,abs:L,root:M||null,mtimeMs:j.mtimeMs,size:j.size})}catch{}await Q()}}let X=J.map(PZ).find(Boolean)??PZ(V);return{metas:[...K.values()].sort((B,M)=>B.path.localeCompare(M.path)),ctx:{fileSet:new Set(K.keys()),tsAliases:Y,goModulePath:X}}}var w4=50000;function U7(Z){let $=0;for(let Q=0;Q<Z.length;Q++)if(Z.charCodeAt(Q)===10){if(Q-$>w4)return!0;$=Q+1}return Z.length-$>w4}async function T4(Z){let $=oZ(Z.path);if(!$||Z.size>200000)return new Set;try{let Q=await K7(Z.abs,"utf8");if(U7(Q))return new Set;return $.specifiers(Q)}catch{return new Set}}function p4(Z,$){let Q=(Array.isArray(Z)?Z:[Z]).map((j)=>p(jZ(j))),J=p($?jZ($):Q.length===1?Q[0]:m4(Q)),V=new Map,K=new Map,Y=[],X=null;function H(){Y=[];for(let j of Q){let U=p(UZ(J,j));for(let O of b4(j))Y.push({from:O.from,to:[U,O.to].filter(Boolean).join("/")})}X=Q.map(PZ).find(Boolean)??PZ(J)}function B(j){let U=j.split("/");for(let A=0;A<U.length;A++){let N=U[A];if(!N||N.startsWith("."))return!0;if(A<U.length-1&&g4.has(N))return!0}let O=U[U.length-1];if(O.endsWith(".d.ts"))return!0;return!iZ().has(x4(O).toLowerCase())}function M(j){let U=p(jZ(j));for(let O of Q)if(U===O||U.startsWith(`${O}/`)){let A=U.slice(O.length).replace(/^\/+/,"");if(B(A))return null;return{path:p(UZ(J,U)),root:p(UZ(J,O))||null}}return null}function W(){let j={fileSet:new Set(V.keys()),tsAliases:Y,goModulePath:X},U=[...V.values()].sort((N,G)=>N.path.localeCompare(G.path)),O=[];for(let N of U){let G=oZ(N.path);if(!G)continue;let _=K.get(N.path)??new Set,D=new Set;for(let R of _)for(let y of G.resolve(R,N.path,j)){if(!y||y===N.path||D.has(y))continue;D.add(y),O.push({from:N.path,to:y})}}return{files:U.map((N)=>({path:N.path,lang:k4(N.path),root:N.root,mtimeMs:N.mtimeMs,size:N.size})),edges:O}}async function L(){let j=X7(),{metas:U,ctx:O}=await j7(Z,$,j);V.clear(),K.clear();for(let A of U)await j(),V.set(A.path,A),K.set(A.path,await T4(A));return Y=O.tsAliases??[],X=O.goModulePath??null,W()}async function q(j){let U=p(jZ(j));if(!Q.some((D)=>U===D||U.startsWith(`${D}/`)))return!1;let O=U.split("/").pop()??"";if(O==="tsconfig.json"||O==="go.mod"){let D=U.slice(0,U.length-O.length-1);if(Q.includes(D))return H(),!0;return!1}let A=M(j);if(!A)return!1;let N;try{N=await u4(U)}catch{let D=V.delete(A.path);return K.delete(A.path),D}let G=V.get(A.path);if(G&&G.mtimeMs===N.mtimeMs&&G.size===N.size)return!1;let _={path:A.path,abs:U,root:A.root,mtimeMs:N.mtimeMs,size:N.size};return V.set(A.path,_),K.set(A.path,await T4(_)),!0}return{seed:L,applyChange:q,snapshot:W}}function c4(Z){let $=Object.keys(Z.tableVars),Q=new Map;if(!$.length){for(let Y of Z.routeFiles)Q.set(Y,[]);return Q}let J=new Map;for(let Y of Z.edges){let X=J.get(Y.from)??[];X.push(Y.to),J.set(Y.from,X)}let V=new Map($.map((Y)=>[Y,new RegExp(`(?:query\\.${Y}\\b|\\.from\\(\\s*${Y}\\b)`)])),K=new Map($.map((Y)=>[Y,new RegExp(`(?:insert|update|delete)\\(\\s*${Y}\\b`)]));for(let Y of Z.routeFiles){let X=new Set([Y]),H=[Y];for(let L=0;L<2&&X.size<25;L++){let q=[];for(let j of H)for(let U of J.get(j)??[]){if(X.has(U)||X.size>=25)continue;X.add(U),q.push(U)}H=q}let B=new Set,M=new Set;for(let L of X){let q=Z.content(L);if(!q)continue;for(let j of $){if(!B.has(j)&&V.get(j).test(q))B.add(j);if(!M.has(j)&&K.get(j).test(q))M.add(j)}}let W=[];for(let L of $){let q=B.has(L),j=M.has(L);if(!q&&!j)continue;W.push({table:Z.tableVars[L],access:q&&j?"read-write":j?"write":"read"})}Q.set(Y,W)}return Q}function l4(Z,$){if(/_JSON_OR_JSONB|\bJSONB\b|\bJSON\b/.test(Z))return"jsonb";let Q=Z.match(/\b(GUID|Uuid|UUID|String|Text|DateTime|Date|Time|BigInteger|SmallInteger|Integer|Boolean|Float|Numeric|Decimal|Vector|TSVECTOR|LargeBinary|Enum)\b\s*(\([^)]*\))?/);if(Q){let K=Q[2]??"",Y=K.match(/\d+/)?.[0];switch(Q[1]){case"GUID":case"Uuid":case"UUID":return"uuid";case"String":return Y?`varchar(${Y})`:"varchar";case"Text":return"text";case"DateTime":return/timezone\s*=\s*True/.test(K)?"timestamptz":"timestamp";case"Date":return"date";case"Time":return"time";case"BigInteger":return"bigint";case"SmallInteger":return"smallint";case"Integer":return"integer";case"Boolean":return"boolean";case"Float":return"float";case"Numeric":case"Decimal":return"numeric";case"Vector":return Y?`vector(${Y})`:"vector";case"TSVECTOR":return"tsvector";case"LargeBinary":return"bytea";case"Enum":return"varchar"}}let J=$.replace(/\s*\|\s*None/g,"").trim(),V=J.match(/^Optional\[([\s\S]*)\]$/);if(V)J=V[1].trim();if(/uuid/i.test(J))return"uuid";if(/datetime/i.test(J))return"timestamptz";if(/\bint\b/i.test(J))return"integer";if(/\bbool\b/i.test(J))return"boolean";if(/\bfloat\b/.test(J)&&!/\blist\b/.test(J))return"float";if(/\bdict\b|\blist\b|\bAny\b/.test(J))return"jsonb";return"text"}function IZ(Z,$){let Q=0;for(let J=$;J<Z.length;J++)if(Z[J]==="(")Q++;else if(Z[J]===")"){if(Q--,Q===0)return Z.slice($+1,J)}return""}function H7(Z,$){let Q=0;for(let J=$;J<Z.length;J++)if(Z[J]==="[")Q++;else if(Z[J]==="]"){if(Q--,Q===0)return Z.slice($+1,J)}return null}function W7(Z,$,Q){let J=Q.match(/__tablename__\s*=\s*["']([^"']+)["']/)?.[1],V=[],K=[],Y=[],X=/(\w+)\s*:\s*Mapped\s*\[/g,H;while(H=X.exec(Q)){let W=H.index+H[0].length-1,L=H7(Q,W);if(L===null)continue;let q=W+L.length+2,j=Q.slice(q).match(/^\s*=\s*(\w+)\s*\(/);if(!j||j[1]!=="mapped_column")continue;Y.push({colName:H[1],pyType:L,argsAt:q+j[0].length-1})}let B=/(\w+)\s*=\s*(mapped_column|Column)\s*\(/g;while(H=B.exec(Q))Y.push({colName:H[1],pyType:"",argsAt:H.index+H[0].length-1});Y.sort((W,L)=>W.argsAt-L.argsAt);let M=new Set;for(let W of Y){if(M.has(W.colName)||W.colName==="__tablename__")continue;M.add(W.colName);let L=IZ(Q,W.argsAt),q=/primary_key\s*=\s*True/.test(L)||void 0,j=/nullable\s*=\s*False/.test(L)?!1:!0,U=L.match(/ForeignKey\(\s*["']([^"']+?)\.([^"'.]+)["']/);if(V.push({name:W.colName,type:l4(L,W.pyType),isPk:q,isFk:U?!0:void 0,nullable:j}),U)K.push({column:W.colName,toTable:U[1],toColumn:U[2]})}return{name:Z,bases:$,tableName:J,columns:V,fks:K}}function L7(Z){let $=[],Q=[],J=/\bTable\s*(\()\s*["']([^"']+)["']\s*,/g,V;while(V=J.exec(Z)){let K=V[2],Y=IZ(Z,V.index+V[0].indexOf("("));if(!/\bmetadata\b/.test(Y)||!/\bColumn\s*\(/.test(Y))continue;let X=[],H=/\bColumn\s*\(/g,B;while(B=H.exec(Y)){let M=IZ(Y,B.index+B[0].length-1),W=M.match(/^\s*["'](\w+)["']\s*,/)?.[1];if(!W)continue;let L=/primary_key\s*=\s*True/.test(M)||void 0,q=/nullable\s*=\s*False/.test(M)?!1:!0,j=M.match(/ForeignKey\(\s*["']([^"']+?)\.([^"'.]+)["']/);if(X.push({name:W,type:l4(M,""),isPk:L,isFk:j?!0:void 0,nullable:q}),j)Q.push({fromTable:K,fromColumn:W,toTable:j[1],toColumn:j[2]})}if(X.length)$.push({name:K,columns:X})}return{tables:$,relations:Q}}function C7(Z){let $=new Map,Q={tables:[],relations:[]};for(let X of Z){if(!X.path.endsWith(".py"))continue;if(!/mapped_column\s*\(|__tablename__|\bTable\s*\(\s*["']/.test(X.content))continue;let H=L7(X.content);Q.tables.push(...H.tables),Q.relations.push(...H.relations);let B=/^class\s+(\w+)\s*\(([^)]*)\)\s*:/gm,M,W=[];while(M=B.exec(X.content))W.push({name:M[1],bases:M[2].split(",").map((L)=>L.trim().split(/[.[]/)[0]).filter(Boolean),at:M.index});for(let L=0;L<W.length;L++){let q=X.content.slice(W[L].at,W[L+1]?.at??X.content.length),j=W7(W[L].name,W[L].bases,q);$.set(j.name,j)}}if(![...$.values()].some((X)=>X.tableName)&&!Q.tables.length)return{tables:[],relations:[]};let J=(X,H=new Set)=>{if(H.has(X.name))return[];H.add(X.name);let B=[];for(let M of X.bases){let W=$.get(M);if(W&&!W.tableName)B.push(...J(W,H))}return B.push(...X.columns),B},V=[],K=[];for(let X of $.values()){if(!X.tableName)continue;let H=J(X),B=new Map;for(let j of H)if(!B.has(j.name))B.set(j.name,j);let M=[...B.values()],W=(j)=>M.splice(M.findIndex((U)=>U.name===j),1)[0],L=M.some((j)=>j.name==="id")?W("id"):null,q=["created_at","updated_at","deleted_at"].filter((j)=>M.some((U)=>U.name===j)).map((j)=>W(j));V.push({name:X.tableName,columns:[...L?[L]:[],...M,...q]});for(let j of X.fks)K.push({fromTable:X.tableName,fromColumn:j.column,toTable:j.toTable,toColumn:j.toColumn})}let Y=new Set(V.map((X)=>X.name));for(let X of Q.tables)if(!Y.has(X.name))V.push(X);return K.push(...Q.relations.filter((X)=>!Y.has(X.fromTable))),{tables:V,relations:K}}function B7(Z){let $=Z.replace(/[?[\]]/g,"");return{String:"text",Int:"integer",BigInt:"bigint",Float:"float",Decimal:"numeric",Boolean:"boolean",DateTime:"timestamptz",Json:"jsonb",Bytes:"bytea"}[$]??$.toLowerCase()}function N7(Z){let $=[],Q=[];for(let J of Z){if(!J.path.endsWith(".prisma"))continue;let V=/model\s+(\w+)\s*\{([\s\S]*?)\}/g,K;while(K=V.exec(J.content)){let Y=K[1],X=K[2].match(/@@map\(\s*["']([^"']+)["']\s*\)/)?.[1]??Y,H=[];for(let B of K[2].split(`
3
+ var S5=Object.defineProperty;var k5=(Z)=>Z;function v5(Z,$){this[Z]=k5.bind(null,$)}var wZ=(Z,$)=>{for(var Q in $)S5(Z,Q,{get:$[Q],enumerable:!0,configurable:!0,set:v5.bind($,Q)})};var $4=(Z,$)=>()=>(Z&&($=Z(Z=0)),$);var J4={};wZ(J4,{provisionDb:()=>c5});import{createClient as w5}from"@libsql/client";import{drizzle as T5}from"drizzle-orm/libsql";import{migrate as y5}from"drizzle-orm/libsql/migrator";import{readMigrationFiles as f5}from"drizzle-orm/migrator";import{dirname as TZ,join as u5}from"path";import{fileURLToPath as x5}from"url";async function AZ(Z,$){return(await Z.execute({sql:"SELECT 1 FROM sqlite_master WHERE type='table' AND name = ?",args:[$]})).rows.length>0}async function m5(Z,$){let Q=await Z.execute(`PRAGMA table_info("${$}")`);return new Set(Q.rows.map((J)=>String(J.name)))}async function Q4(Z){if(!await AZ(Z,"__drizzle_migrations"))return 0;let $=await Z.execute('SELECT count(*) AS n FROM "__drizzle_migrations"');return Number($.rows[0]?.n??0)}async function p5(Z){for(let[$,Q]of Object.entries(b5)){if(!await AZ(Z,$))continue;let J=await m5(Z,$);for(let V of Q){if(!J.has(V))continue;await Z.execute(`UPDATE "${$}" SET "${V}" = CAST((julianday("${V}") - 2440587.5) * 86400000 AS INTEGER) WHERE typeof("${V}") = 'text'`)}}}async function c5(Z,$=h5){let Q=w5({url:Z});try{await Q.execute("PRAGMA journal_mode = WAL;"),await Q.execute("PRAGMA foreign_keys = ON;"),await Q.execute("PRAGMA busy_timeout = 5000;");let J=await AZ(Q,"__drizzle_migrations"),V=await AZ(Q,"Node"),K=!1;if(V&&!J){let X=f5({migrationsFolder:$})[0];if(X)await Q.execute('CREATE TABLE IF NOT EXISTS "__drizzle_migrations" (id SERIAL PRIMARY KEY, hash text NOT NULL, created_at numeric)'),await Q.execute({sql:'INSERT INTO "__drizzle_migrations" ("hash", "created_at") VALUES (?, ?)',args:[X.hash,X.folderMillis]}),K=!0}let Y=await Q4(Q);if(await y5(T5(Q),{migrationsFolder:$}),await Q4(Q)>Y)K=!0;return await p5(Q),{migrated:K}}finally{Q.close()}}var g5,h5,b5;var V4=$4(async()=>{g5=TZ(TZ(TZ(x5(import.meta.url)))),h5=process.env.BEACON_MIGRATIONS_DIR||u5(g5,"drizzle"),b5={Node:["createdAt","updatedAt"],Note:["createdAt","updatedAt"],DbTable:["createdAt","updatedAt"],Endpoint:["createdAt","updatedAt"],DraftTable:["createdAt"],SyncState:["codeGraphSyncedAt","updatedAt"],AppSetting:["updatedAt"],ProjectMeta:["updatedAt"],CodeFile:["updatedAt"]}});import{mkdirSync as u7,renameSync as x7,rmSync as g7,writeFileSync as h7}from"fs";import{dirname as b7}from"path";function S$(Z,$){u7(b7(Z),{recursive:!0});let Q=`${Z}.tmp`;try{h7(Q,$),x7(Q,Z)}catch(J){throw g7(Q,{force:!0}),J}}var M5=()=>{};import{AsyncLocalStorage as l5}from"async_hooks";import{spawnSync as d5}from"child_process";import{createHash as n5}from"crypto";import{existsSync as K4,mkdirSync as _Z,readFileSync as X4,writeFileSync as Y4}from"fs";import{homedir as r5}from"os";import{basename as o5,join as ZZ}from"path";function $Z(){return process.env.BEACON_HOME||ZZ(r5(),".beacon")}function fZ(){return ZZ($Z(),"workspaces.json")}function WZ(Z){return n5("sha256").update(Z).digest("hex").slice(0,12)}function uZ(Z=process.cwd()){let $=d5("git",["rev-parse","--show-toplevel"],{cwd:Z,stdio:["ignore","pipe","ignore"]});if($.status===0){let Q=$.stdout?.toString().trim();if(Q)return Q}return Z}function n(Z){return ZZ($Z(),Z)}function QZ(Z){return`file:${ZZ(n(Z),"db.sqlite")}`}function LZ(){try{let Z=JSON.parse(X4(fZ(),"utf8"));return Array.isArray(Z)?Z:[]}catch{return[]}}function xZ(Z){_Z($Z(),{recursive:!0}),Y4(fZ(),JSON.stringify(Z,null,2))}function gZ(){return LZ().sort((Z,$)=>$.lastOpenedAt.localeCompare(Z.lastOpenedAt))}function x(Z){return LZ().find(($)=>$.id===Z)??null}function i5(Z,$,Q=new Date().toISOString()){let J=WZ(Z),V=LZ(),K=V.find((H)=>H.id===J),Y={id:J,path:Z,name:$||K?.name||o5(Z),lastOpenedAt:Q},X=[Y,...V.filter((H)=>H.id!==J)];return _Z(n(J),{recursive:!0}),xZ(X),Y}function F8(Z,$=new Date().toISOString()){let Q=LZ(),J=Q.find((V)=>V.id===Z);if(!J)return;J.lastOpenedAt=$,xZ(Q)}function G4(Z){if(xZ(LZ().filter(($)=>$.id!==Z)),r()===Z)s5(gZ()[0]?.id??null)}function M4(){return ZZ($Z(),"active")}function r(){try{return X4(M4(),"utf8").trim()||null}catch{return null}}function s5(Z){_Z($Z(),{recursive:!0}),Y4(M4(),Z??"")}function a5(){let Z=r();return Z?x(Z):null}function z8(){let Z=DZ()??r();return Z?x(Z):null}function P8(Z){return x(Z)?.path??null}function E8(){return K4(fZ())}var j4="beacon_ws";function U4(Z,$){let Q=Z.headers.get("cookie");if(!Q)return null;for(let J of Q.split(";")){let V=J.indexOf("=");if(V===-1)continue;if(J.slice(0,V).trim()===$)return decodeURIComponent(J.slice(V+1).trim())}return null}function I8(Z){let $=Z.headers.get("x-beacon-workspace");if($&&x($))return $;let Q=U4(Z,j4);if(Q&&x(Q))return Q;return null}var t5="x-beacon-workspace-path";async function R8(Z){let $=Z.headers.get("x-beacon-workspace");if($&&x($))return $;let Q=Z.headers.get(t5);if(Q&&(!$||WZ(Q)===$)){let V=i5(Q);return await hZ(V.id),V.id}let J=U4(Z,j4);if(J&&x(J))return J;return null}var H4=new l5;function e5(Z,$){return Z?H4.run(Z,$):$()}function DZ(){return H4.getStore()??null}var yZ=new Set;function W4(Z){yZ.delete(ZZ(n(Z),"db.sqlite"))}async function hZ(Z){let $=n(Z),Q=ZZ($,"db.sqlite"),J=K4(Q);if(J&&yZ.has(Q))return{ok:!0,created:!1,migrated:!1};try{_Z($,{recursive:!0});let{provisionDb:V}=await V4().then(() => J4),K=await V(QZ(Z));return yZ.add(Q),{ok:!0,created:!J,migrated:J&&K.migrated}}catch(V){return{ok:!1,created:!1,migrated:!1,error:V instanceof Error?V.message:String(V)}}}import{existsSync as X8,readFileSync as Y8}from"fs";import{resolve as z5}from"path";import{rmSync as K8}from"fs";import{drizzle as D6}from"drizzle-orm/libsql";import{createClient as F6}from"@libsql/client";var bZ={};wZ(bZ,{tag:()=>MZ,syncState:()=>s,projectMeta:()=>K6,note:()=>Q6,nodeTags:()=>VZ,nodeFile:()=>CZ,node:()=>w,endpointTable:()=>o,endpoint:()=>k,edge:()=>JZ,draftTable:()=>c,draftRelation:()=>KZ,draftColumn:()=>NZ,dbTable:()=>E,dbRelation:()=>l,dbColumn:()=>t,codeFileEdge:()=>u,codeFile:()=>f,bugFlag:()=>BZ,boardAnnotation:()=>J6,appSetting:()=>V6});import{sqliteTable as T,index as v,foreignKey as Z6,text as C,integer as z,real as b,uniqueIndex as a,primaryKey as $6}from"drizzle-orm/sqlite-core";import{createId as h}from"@paralleldrive/cuid2";var w=T("Node",{id:C().primaryKey().$defaultFn(()=>h()),view:C().notNull(),kind:C().default("FEATURE").notNull(),cluster:C(),title:C().notNull(),role:C(),plain:C(),status:C().default("PENDING").notNull(),priority:z().default(2).notNull(),progress:z().default(0).notNull(),x:b().default(0).notNull(),y:b().default(0).notNull(),sourceRef:C(),externalId:C(),source:C().default("MANUAL").notNull(),planId:C(),parentId:C(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[v("Node_cluster_idx").on(Z.cluster),v("Node_parentId_idx").on(Z.parentId),v("Node_view_idx").on(Z.view),Z6(()=>({columns:[Z.parentId],foreignColumns:[Z.id],name:"Node_parentId_Node_id_fk"})).onUpdate("cascade").onDelete("cascade")]),CZ=T("NodeFile",{id:C().primaryKey().$defaultFn(()=>h()),nodeId:C().notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),path:C().notNull()},(Z)=>[a("NodeFile_nodeId_path_key").on(Z.nodeId,Z.path),v("NodeFile_nodeId_idx").on(Z.nodeId)]),MZ=T("Tag",{id:C().primaryKey().$defaultFn(()=>h()),label:C().notNull(),color:C()},(Z)=>[a("Tag_label_key").on(Z.label)]),JZ=T("Edge",{id:C().primaryKey().$defaultFn(()=>h()),fromId:C().notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),toId:C().notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),kind:C().default("DEPENDS").notNull(),label:C(),sourceHandle:C(),targetHandle:C()},(Z)=>[a("Edge_fromId_toId_kind_key").on(Z.fromId,Z.toId,Z.kind),v("Edge_toId_idx").on(Z.toId),v("Edge_fromId_idx").on(Z.fromId)]),VZ=T("_NodeTags",{a:C("A").notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),b:C("B").notNull().references(()=>MZ.id,{onDelete:"cascade",onUpdate:"cascade"})},(Z)=>[a("_NodeTags_AB_unique").on(Z.a,Z.b),v("_NodeTags_B_index").on(Z.b)]),Q6=T("Note",{id:C().primaryKey().$defaultFn(()=>h()),title:C().default("Untitled").notNull(),body:C().default("").notNull(),ord:b().default(0).notNull(),pinned:z({mode:"boolean"}).default(!1).notNull(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[v("Note_updatedAt_idx").on(Z.updatedAt)]),J6=T("BoardAnnotation",{id:C().primaryKey().$defaultFn(()=>h()),targetKind:C().notNull(),targetId:C().notNull(),columnName:C(),body:C().default("").notNull(),x:b(),y:b(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[v("BoardAnnotation_target_idx").on(Z.targetId)]),BZ=T("BugFlag",{id:C().primaryKey().$defaultFn(()=>h()),nodeId:C().notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),by:C().notNull(),note:C().notNull(),resolvedAt:z({mode:"timestamp_ms"}),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},(Z)=>[v("BugFlag_nodeId_idx").on(Z.nodeId)]),E=T("DbTable",{id:C().primaryKey().$defaultFn(()=>h()),name:C().notNull(),domain:C(),description:C(),source:C().default("MANUAL").notNull(),planId:C(),x:b().default(0).notNull(),y:b().default(0).notNull(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[v("DbTable_domain_idx").on(Z.domain),a("DbTable_name_key").on(Z.name)]),t=T("DbColumn",{id:C().primaryKey().$defaultFn(()=>h()),tableId:C().notNull().references(()=>E.id,{onDelete:"cascade",onUpdate:"cascade"}),name:C().notNull(),type:C().notNull(),isPk:z({mode:"boolean"}).default(!1).notNull(),isFk:z({mode:"boolean"}).default(!1).notNull(),nullable:z({mode:"boolean"}).default(!0).notNull(),note:C(),ord:z().default(0).notNull()},(Z)=>[a("DbColumn_tableId_name_key").on(Z.tableId,Z.name),v("DbColumn_tableId_idx").on(Z.tableId)]),l=T("DbRelation",{id:C().primaryKey().$defaultFn(()=>h()),fromTableId:C().notNull().references(()=>E.id,{onDelete:"cascade",onUpdate:"cascade"}),toTableId:C().notNull().references(()=>E.id,{onDelete:"cascade",onUpdate:"cascade"}),fromColumn:C().notNull(),toColumn:C().notNull(),label:C()},(Z)=>[v("DbRelation_toTableId_idx").on(Z.toTableId),v("DbRelation_fromTableId_idx").on(Z.fromTableId)]),k=T("Endpoint",{id:C().primaryKey().$defaultFn(()=>h()),method:C().notNull(),path:C().notNull(),domain:C(),description:C(),source:C().default("MANUAL").notNull(),planId:C(),x:b().default(0).notNull(),y:b().default(0).notNull(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[a("Endpoint_method_path_key").on(Z.method,Z.path),v("Endpoint_domain_idx").on(Z.domain)]),o=T("EndpointTable",{id:C().primaryKey().$defaultFn(()=>h()),endpointId:C().notNull().references(()=>k.id,{onDelete:"cascade",onUpdate:"cascade"}),tableId:C().notNull().references(()=>E.id,{onDelete:"cascade",onUpdate:"cascade"}),access:C().default("read").notNull()},(Z)=>[a("EndpointTable_endpointId_tableId_key").on(Z.endpointId,Z.tableId),v("EndpointTable_tableId_idx").on(Z.tableId)]),c=T("DraftTable",{id:C().primaryKey().$defaultFn(()=>h()),name:C().notNull(),domain:C(),description:C(),x:b().default(0).notNull(),y:b().default(0).notNull(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},(Z)=>[a("DraftTable_name_key").on(Z.name)]),NZ=T("DraftColumn",{id:C().primaryKey().$defaultFn(()=>h()),tableId:C().notNull().references(()=>c.id,{onDelete:"cascade",onUpdate:"cascade"}),name:C().notNull(),type:C().notNull(),isPk:z({mode:"boolean"}).default(!1).notNull(),isFk:z({mode:"boolean"}).default(!1).notNull(),nullable:z({mode:"boolean"}).default(!0).notNull(),note:C(),ord:z().default(0).notNull()},(Z)=>[v("DraftColumn_tableId_idx").on(Z.tableId)]),KZ=T("DraftRelation",{id:C().primaryKey().$defaultFn(()=>h()),fromTableId:C().notNull().references(()=>c.id,{onDelete:"cascade",onUpdate:"cascade"}),toTableId:C().notNull().references(()=>c.id,{onDelete:"cascade",onUpdate:"cascade"}),fromColumn:C().notNull(),toColumn:C().notNull(),label:C()},(Z)=>[v("DraftRelation_toTableId_idx").on(Z.toTableId),v("DraftRelation_fromTableId_idx").on(Z.fromTableId)]),f=T("CodeFile",{path:C().primaryKey(),root:C(),lang:C(),x:b().default(0).notNull(),y:b().default(0).notNull(),mtimeMs:b(),size:z(),inDegree:z().default(0).notNull(),outDegree:z().default(0).notNull(),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),u=T("CodeFileEdge",{fromPath:C().notNull().references(()=>f.path,{onDelete:"cascade",onUpdate:"cascade"}),toPath:C().notNull().references(()=>f.path,{onDelete:"cascade",onUpdate:"cascade"}),circular:z({mode:"boolean"}).default(!1).notNull()},(Z)=>[v("CodeFileEdge_circular_idx").on(Z.circular),v("CodeFileEdge_toPath_idx").on(Z.toPath),v("CodeFileEdge_fromPath_idx").on(Z.fromPath),$6({columns:[Z.fromPath,Z.toPath],name:"CodeFileEdge_fromPath_toPath_pk"})]),s=T("SyncState",{id:C().primaryKey().default("singleton"),version:z().default(0).notNull(),codeGraphSyncedAt:z({mode:"timestamp_ms"}),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),V6=T("AppSetting",{id:C().primaryKey().default("singleton"),editor:C().default("auto").notNull(),currentFeatureId:C(),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),K6=T("ProjectMeta",{id:C().primaryKey().default("singleton"),overview:C(),conventions:C().default("[]").notNull(),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)});var mZ={};wZ(mZ,{tagRelations:()=>M6,nodeTagsRelations:()=>j6,nodeRelations:()=>X6,nodeFileRelations:()=>Y6,endpointTableRelations:()=>B6,endpointRelations:()=>C6,edgeRelations:()=>U6,draftTableRelations:()=>N6,draftRelationRelations:()=>O6,draftColumnRelations:()=>q6,dbTableRelations:()=>H6,dbRelationRelations:()=>L6,dbColumnRelations:()=>W6,codeFileRelations:()=>A6,codeFileEdgeRelations:()=>_6,bugFlagRelations:()=>G6});import{relations as g}from"drizzle-orm";var X6=g(w,({one:Z,many:$})=>({files:$(CZ),bugFlags:$(BZ),nodeTags:$(VZ),edgesOut:$(JZ,{relationName:"EdgeFrom"}),edgesIn:$(JZ,{relationName:"EdgeTo"}),parent:Z(w,{fields:[w.parentId],references:[w.id],relationName:"NodeTree"}),children:$(w,{relationName:"NodeTree"})})),Y6=g(CZ,({one:Z})=>({node:Z(w,{fields:[CZ.nodeId],references:[w.id]})})),G6=g(BZ,({one:Z})=>({node:Z(w,{fields:[BZ.nodeId],references:[w.id]})})),M6=g(MZ,({many:Z})=>({nodeTags:Z(VZ)})),j6=g(VZ,({one:Z})=>({node:Z(w,{fields:[VZ.a],references:[w.id]}),tag:Z(MZ,{fields:[VZ.b],references:[MZ.id]})})),U6=g(JZ,({one:Z})=>({from:Z(w,{fields:[JZ.fromId],references:[w.id],relationName:"EdgeFrom"}),to:Z(w,{fields:[JZ.toId],references:[w.id],relationName:"EdgeTo"})})),H6=g(E,({many:Z})=>({columns:Z(t),fksOut:Z(l,{relationName:"FkFrom"}),fksIn:Z(l,{relationName:"FkTo"}),usages:Z(o)})),W6=g(t,({one:Z})=>({table:Z(E,{fields:[t.tableId],references:[E.id]})})),L6=g(l,({one:Z})=>({fromTable:Z(E,{fields:[l.fromTableId],references:[E.id],relationName:"FkFrom"}),toTable:Z(E,{fields:[l.toTableId],references:[E.id],relationName:"FkTo"})})),C6=g(k,({many:Z})=>({tables:Z(o)})),B6=g(o,({one:Z})=>({endpoint:Z(k,{fields:[o.endpointId],references:[k.id]}),table:Z(E,{fields:[o.tableId],references:[E.id]})})),N6=g(c,({many:Z})=>({columns:Z(NZ),fksOut:Z(KZ,{relationName:"DraftFkFrom"}),fksIn:Z(KZ,{relationName:"DraftFkTo"})})),q6=g(NZ,({one:Z})=>({table:Z(c,{fields:[NZ.tableId],references:[c.id]})})),O6=g(KZ,({one:Z})=>({fromTable:Z(c,{fields:[KZ.fromTableId],references:[c.id],relationName:"DraftFkFrom"}),toTable:Z(c,{fields:[KZ.toTableId],references:[c.id],relationName:"DraftFkTo"})})),A6=g(f,({many:Z})=>({edgesOut:Z(u,{relationName:"CFEFrom"}),edgesIn:Z(u,{relationName:"CFETo"})})),_6=g(u,({one:Z})=>({fromFile:Z(f,{fields:[u.fromPath],references:[f.path],relationName:"CFEFrom"}),toFile:Z(f,{fields:[u.toPath],references:[f.path],relationName:"CFETo"})}));var z6={...bZ,...mZ};function P6(){let Z=process.env.DATABASE_URL;if(Z&&/^(file:|libsql:|wss?:|https?:|:memory:)/i.test(Z))return Z;return"file:./dev.db"}var E6=P6();function L4(Z){let $=F6({url:Z});return $.execute("PRAGMA foreign_keys = ON;"),$.execute("PRAGMA busy_timeout = 5000;"),D6($,{schema:z6})}var cZ=globalThis,pZ=cZ.dzDefault??L4(E6);cZ.dzDefault=pZ;var FZ=cZ.dzByUrl??=new Map;function lZ(Z){let $=FZ.get(Z);if(!$)$=L4(Z),FZ.set(Z,$);return $}function C4(Z){let $=FZ.get(Z);FZ.delete(Z);try{$?.$client?.close?.()}catch{}}function I6(){if(process.env.BEACON_REPO)return pZ;let Z=DZ()??r();if(!Z)return pZ;return lZ(QZ(Z))}var m=new Proxy({},{get(Z,$){let Q=I6(),J=Q[$];return typeof J==="function"?J.bind(Q):J}});import{existsSync as Q8}from"fs";import{existsSync as O5,readFileSync as s7,watch as a7}from"fs";import{readFile as q5}from"fs/promises";import{join as OZ,relative as t7,resolve as e7}from"path";import{existsSync as y4,readFileSync as f4}from"fs";import{readdir as V7,readFile as K7,stat as u4}from"fs/promises";import{extname as x4,join as EZ,relative as UZ,resolve as jZ}from"path";import{extname as S4}from"path";import{dirname as R6,resolve as S6}from"path";var dZ=[".ts",".tsx",".js",".jsx",".mjs",".cjs"],k6=[/(?:^|[\n;])\s*(?:import|export)[^'"`\n]{0,4000}?from\s*['"]([^'"`]+)['"]/g,/(?:^|[\n;])\s*import\s*['"]([^'"`]+)['"]/g,/\brequire\(\s*['"]([^'"`]+)['"]\s*\)/g,/\bimport\(\s*['"]([^'"`]+)['"]\s*\)/g];function v6(Z){return Z.split(/[\\/]/).join("/")}function B4(Z,$){if($.has(Z))return Z;for(let Q of dZ){let J=`${Z}${Q}`;if($.has(J))return J}for(let Q of dZ){let J=`${Z}/index${Q}`;if($.has(J))return J}return null}function w6(Z){let $=new Set;for(let Q of k6)for(let J of Z.matchAll(Q))$.add(J[1]);return $}function T6(Z,$,Q,J){if(Z.startsWith(".")){let V=S6("/",R6($),Z),K=v6(V).replace(/^\//,"");return B4(K,Q)}for(let V of J)if(Z.startsWith(V.from)){let K=Z.slice(V.from.length),Y=V.to?`${V.to}/${K}`:K,X=B4(Y,Q);if(X)return X}return null}var N4={id:"ts",extensions:dZ,specifiers:w6,resolve(Z,$,Q){let J=T6(Z,$,Q.fileSet,Q.tsAliases??[]);return J?[J]:[]}};import{dirname as q4,join as y6,normalize as f6}from"path";var u6=[".py",".pyi"],O4=[/(?:^|[\n;])\s*from\s+(\.*[\w.]*)\s+import\b/g,/(?:^|[\n;])\s*import\s+([\w.]+(?:\s*,\s*[\w.]+)*)/g];function A4(Z,$){for(let Q of[`${Z}.py`,`${Z}/__init__.py`,`${Z}.pyi`])if($.has(Q))return[Q];return[]}function x6(Z){let $=new Set;for(let Q of Z.matchAll(O4[0])){let J=Q[1].trim();if(J)$.add(J)}for(let Q of Z.matchAll(O4[1]))for(let J of Q[1].split(/\s*,\s*/)){let V=J.trim().split(/\s+as\s+/)[0].trim();if(V)$.add(V)}return $}var _4={id:"python",extensions:u6,specifiers:x6,resolve(Z,$,Q){if(Z.startsWith(".")){let J=Z.length-Z.replace(/^\.+/,"").length,V=Z.slice(J),K=q4($);for(let X=1;X<J;X++)K=q4(K);let Y=V?y6(K,V.replace(/\./g,"/")):K;return A4(f6(Y).replace(/\\/g,"/"),Q.fileSet)}return A4(Z.replace(/\./g,"/"),Q.fileSet)}};import{dirname as g6}from"path";var h6=[".go"],b6=/(?:^|[\n;])\s*import\s+(?:[\w.]+\s+)?"([^"]+)"/g,m6=/(?:^|[\n;])\s*import\s*\(([\s\S]*?)\)/g,p6=/"([^"]+)"/g;function c6(Z){let $=new Set;for(let Q of Z.matchAll(b6))$.add(Q[1]);for(let Q of Z.matchAll(m6))for(let J of Q[1].matchAll(p6))$.add(J[1]);return $}var D4={id:"go",extensions:h6,resolve(Z,$,Q){let J=Q.goModulePath;if(!J)return[];let V=null;if(Z===J)V="";else if(Z.startsWith(`${J}/`))V=Z.slice(J.length+1);if(V===null)return[];let K=[];for(let Y of Q.fileSet){if(!Y.endsWith(".go"))continue;let X=g6(Y);if(V===""&&X==="."||X===V)K.push(Y)}return K.sort()},specifiers:c6};import{basename as F4,dirname as nZ,join as z4,normalize as P4}from"path";var l6=[".rs"],d6=/(?:^|[\n;])\s*(?:pub\s+)?mod\s+(\w+)\s*;/g,n6=/(?:^|[\n;])\s*(?:pub\s+)?use\s+([\w:]+)/g;function r6(Z){let $=Z.split("::").filter((Q)=>Q&&Q!=="*");if(!$.length)return"";if($[0]==="crate")return["crate",...$.slice(1)].join("/");if($[0]==="super")return["..",...$.slice(1)].join("/");if($[0]==="self")return[".",...$.slice(1)].join("/");return $.join("/")}function rZ(Z,$){for(let Q of[`${Z}.rs`,`${Z}/mod.rs`])if($.has(Q))return[Q];return[]}var o6=new Set(["mod.rs","lib.rs","main.rs"]);function i6(Z){let $=new Set;for(let Q of Z.matchAll(d6))$.add(`./${Q[1]}`);for(let Q of Z.matchAll(n6)){let J=r6(Q[1]);if(J)$.add(J)}return $}var E4={id:"rust",extensions:l6,specifiers:i6,resolve(Z,$,Q){let J=Q.fileSet;if(Z.startsWith("./")||Z.startsWith("../")){let V=Z.replace(/^\.\//,""),K=P4(z4(nZ($),Z)).replace(/\\/g,"/"),Y=rZ(K,J);if(Y.length)return Y;if(Z.startsWith("./")&&!o6.has(F4($))){let X=z4(nZ($),F4($,".rs"),V);if(Y=rZ(P4(X).replace(/\\/g,"/"),J),Y.length)return Y}return[]}if(Z.startsWith("crate/")){let V=$.split("/"),K=V.lastIndexOf("src"),Y=K>=0?V.slice(0,K+1).join("/"):nZ($),X=Z.slice(6).split("/");for(let H of[X.join("/"),X.slice(0,-1).join("/")]){if(!H)continue;let B=rZ(`${Y}/${H}`,J);if(B.length)return B}return[]}return[]}};import{dirname as s6,extname as a6,join as t6,normalize as e6}from"path";var I4=[".swift",".java",".rb",".kt",".kts",".cs",".php",".scala",".c",".h",".cpp",".hpp",".cc",".hh",".m",".mm",".ex",".exs",".lua",".dart",".vue",".svelte"],Z7=[/\b(?:require_relative|require|include|import|use|using|from)\s*\(?\s*['"]([^'"`\n]+)['"]/g,/(?:^|[\n;])\s*import\s+([\w.]+)/g,/(?:^|[\n;])\s*from\s+([\w.]+)\s+import\b/g,/(?:^|[\n;])\s*using\s+([\w.]+)\s*;/g,/(?:^|[\n;])\s*use\s+([\w\\]+)/g,/#\s*include\s*[<"]([^>"\n]+)[>"]/g];function $7(Z){let $=new Set;for(let Q of Z7)for(let J of Z.matchAll(Q)){let V=J[1].trim();if(V)$.add(V)}return $}var R4={id:"fallback",extensions:I4,specifiers:$7,resolve(Z,$,Q){let V=[a6($).toLowerCase(),...I4].filter((H,B,M)=>H&&M.indexOf(H)===B),K=Z.includes("/")||Z.includes("\\"),Y=Z.startsWith(".")||K?Z.replace(/\\/g,"/"):Z.replace(/[.:]+/g,"/"),X=[e6(t6(s6($),Y)).replace(/\\/g,"/"),Y.replace(/^\.\//,"")];for(let H of X){if(Q.fileSet.has(H))return[H];for(let B of V){let M=H.endsWith(B)?H:`${H}${B}`;if(Q.fileSet.has(M))return[M];if(Q.fileSet.has(`${H}/index${B}`))return[`${H}/index${B}`]}}return[]}};var Q7=[N4,_4,D4,E4,R4],zZ=new Map;for(let Z of Q7)for(let $ of Z.extensions)zZ.set($,Z);var J7={".ts":"ts",".tsx":"ts",".js":"js",".jsx":"js",".mjs":"js",".cjs":"js",".py":"py",".pyi":"py",".go":"go",".rs":"rs",".swift":"swift",".java":"java",".rb":"ruby",".kt":"kotlin",".kts":"kotlin",".cs":"csharp",".php":"php",".scala":"scala",".c":"c",".h":"c",".cpp":"cpp",".hpp":"cpp",".cc":"cpp",".hh":"cpp",".m":"objc",".mm":"objc",".ex":"elixir",".exs":"elixir",".lua":"lua",".dart":"dart",".vue":"vue",".svelte":"svelte"};function oZ(Z){return zZ.get(S4(Z).toLowerCase())??null}function k4(Z){let $=S4(Z).toLowerCase();if(!zZ.has($))return null;return J7[$]??$.slice(1)}function iZ(){return new Set(zZ.keys())}var g4=new Set(["node_modules",".git",".next","dist","build","__pycache__","target",".venv","venv","env",".turbo","coverage",".beacon",".playwright-mcp","generated","migrations","drizzle","alembic","migrate"]);function X7(Z=5){let $=performance.now();return async()=>{if(performance.now()-$>Z)await new Promise((Q)=>setImmediate(Q)),$=performance.now()}}var Y7=()=>Promise.resolve();async function h4(Z,$,Q,J,V){let K;try{K=await V7($,{withFileTypes:!0})}catch{return}for(let Y of K){if(Y.name.startsWith("."))continue;if(g4.has(Y.name))continue;let X=EZ($,Y.name);if(Y.isDirectory()){await h4(Z,X,Q,J,V);continue}if(!Y.isFile())continue;if(Y.name.endsWith(".d.ts"))continue;if(!Q.has(x4(Y.name).toLowerCase()))continue;J.push(UZ(Z,X))}await V()}async function G7(Z,$=Y7){let Q=[];return await h4(Z,Z,iZ(),Q,$),Q.map((J)=>J.split(/[\\/]/).join("/")).sort()}function M7(Z){try{return JSON.parse(Z)}catch{}let $=Z.replace(/\/\*[^"]*?\*\//g,"").replace(/(^|[^:"])\/\/.*$/gm,"$1").replace(/,\s*([}\]])/g,"$1");return JSON.parse($)}function v4(Z){return Z.replace(/^\.\/?/,"").replace(/\/$/,"")}function b4(Z){let $=EZ(Z,"tsconfig.json");if(!y4($))return[];let Q;try{Q=M7(f4($,"utf8"))}catch{return[]}let J=Q.compilerOptions?.paths??{},V=v4(Q.compilerOptions?.baseUrl??"."),K=[];for(let[Y,X]of Object.entries(J)){if(!Y.endsWith("/*")||!X.length)continue;let H=X[0];if(!H.endsWith("/*"))continue;let B=Y.slice(0,-1),M=v4(H.slice(0,-1)),W=[V,M].filter(Boolean).join("/");K.push({from:B,to:W})}return K}function PZ(Z){let $=EZ(Z,"go.mod");if(!y4($))return null;try{let Q=/^\s*module\s+(\S+)/m.exec(f4($,"utf8"));return Q?Q[1]:null}catch{return null}}function p(Z){return Z.split(/[\\/]/).join("/")}function m4(Z){if(Z.length===1)return Z[0];let $=Z.map((V)=>p(V).split("/")),Q=$[0],J=0;for(;J<Q.length;J++)if(!$.every((V)=>V[J]===Q[J]))break;return Q.slice(0,J).join("/")||"/"}async function j7(Z,$,Q){let J=(Array.isArray(Z)?Z:[Z]).map((B)=>p(jZ(B))),V=p($?jZ($):J.length===1?J[0]:m4(J)),K=new Map,Y=[];for(let B of J){let M=p(UZ(V,B));for(let W of b4(B))Y.push({from:W.from,to:[M,W.to].filter(Boolean).join("/")});for(let W of await G7(B,Q)){let L=p(EZ(B,W)),q=p(UZ(V,L));if(K.has(q))continue;try{let j=await u4(L);K.set(q,{path:q,abs:L,root:M||null,mtimeMs:j.mtimeMs,size:j.size})}catch{}await Q()}}let X=J.map(PZ).find(Boolean)??PZ(V);return{metas:[...K.values()].sort((B,M)=>B.path.localeCompare(M.path)),ctx:{fileSet:new Set(K.keys()),tsAliases:Y,goModulePath:X}}}var w4=50000;function U7(Z){let $=0;for(let Q=0;Q<Z.length;Q++)if(Z.charCodeAt(Q)===10){if(Q-$>w4)return!0;$=Q+1}return Z.length-$>w4}async function T4(Z){let $=oZ(Z.path);if(!$||Z.size>200000)return new Set;try{let Q=await K7(Z.abs,"utf8");if(U7(Q))return new Set;return $.specifiers(Q)}catch{return new Set}}function p4(Z,$){let Q=(Array.isArray(Z)?Z:[Z]).map((j)=>p(jZ(j))),J=p($?jZ($):Q.length===1?Q[0]:m4(Q)),V=new Map,K=new Map,Y=[],X=null;function H(){Y=[];for(let j of Q){let U=p(UZ(J,j));for(let O of b4(j))Y.push({from:O.from,to:[U,O.to].filter(Boolean).join("/")})}X=Q.map(PZ).find(Boolean)??PZ(J)}function B(j){let U=j.split("/");for(let A=0;A<U.length;A++){let N=U[A];if(!N||N.startsWith("."))return!0;if(A<U.length-1&&g4.has(N))return!0}let O=U[U.length-1];if(O.endsWith(".d.ts"))return!0;return!iZ().has(x4(O).toLowerCase())}function M(j){let U=p(jZ(j));for(let O of Q)if(U===O||U.startsWith(`${O}/`)){let A=U.slice(O.length).replace(/^\/+/,"");if(B(A))return null;return{path:p(UZ(J,U)),root:p(UZ(J,O))||null}}return null}function W(){let j={fileSet:new Set(V.keys()),tsAliases:Y,goModulePath:X},U=[...V.values()].sort((N,G)=>N.path.localeCompare(G.path)),O=[];for(let N of U){let G=oZ(N.path);if(!G)continue;let _=K.get(N.path)??new Set,D=new Set;for(let R of _)for(let y of G.resolve(R,N.path,j)){if(!y||y===N.path||D.has(y))continue;D.add(y),O.push({from:N.path,to:y})}}return{files:U.map((N)=>({path:N.path,lang:k4(N.path),root:N.root,mtimeMs:N.mtimeMs,size:N.size})),edges:O}}async function L(){let j=X7(),{metas:U,ctx:O}=await j7(Z,$,j);V.clear(),K.clear();for(let A of U)await j(),V.set(A.path,A),K.set(A.path,await T4(A));return Y=O.tsAliases??[],X=O.goModulePath??null,W()}async function q(j){let U=p(jZ(j));if(!Q.some((D)=>U===D||U.startsWith(`${D}/`)))return!1;let O=U.split("/").pop()??"";if(O==="tsconfig.json"||O==="go.mod"){let D=U.slice(0,U.length-O.length-1);if(Q.includes(D))return H(),!0;return!1}let A=M(j);if(!A)return!1;let N;try{N=await u4(U)}catch{let D=V.delete(A.path);return K.delete(A.path),D}let G=V.get(A.path);if(G&&G.mtimeMs===N.mtimeMs&&G.size===N.size)return!1;let _={path:A.path,abs:U,root:A.root,mtimeMs:N.mtimeMs,size:N.size};return V.set(A.path,_),K.set(A.path,await T4(_)),!0}return{seed:L,applyChange:q,snapshot:W}}function c4(Z){let $=Object.keys(Z.tableVars),Q=new Map;if(!$.length){for(let Y of Z.routeFiles)Q.set(Y,[]);return Q}let J=new Map;for(let Y of Z.edges){let X=J.get(Y.from)??[];X.push(Y.to),J.set(Y.from,X)}let V=new Map($.map((Y)=>[Y,new RegExp(`(?:query\\.${Y}\\b|\\.from\\(\\s*${Y}\\b)`)])),K=new Map($.map((Y)=>[Y,new RegExp(`(?:insert|update|delete)\\(\\s*${Y}\\b`)]));for(let Y of Z.routeFiles){let X=new Set([Y]),H=[Y];for(let L=0;L<2&&X.size<25;L++){let q=[];for(let j of H)for(let U of J.get(j)??[]){if(X.has(U)||X.size>=25)continue;X.add(U),q.push(U)}H=q}let B=new Set,M=new Set;for(let L of X){let q=Z.content(L);if(!q)continue;for(let j of $){if(!B.has(j)&&V.get(j).test(q))B.add(j);if(!M.has(j)&&K.get(j).test(q))M.add(j)}}let W=[];for(let L of $){let q=B.has(L),j=M.has(L);if(!q&&!j)continue;W.push({table:Z.tableVars[L],access:q&&j?"read-write":j?"write":"read"})}Q.set(Y,W)}return Q}function l4(Z,$){if(/_JSON_OR_JSONB|\bJSONB\b|\bJSON\b/.test(Z))return"jsonb";let Q=Z.match(/\b(GUID|Uuid|UUID|String|Text|DateTime|Date|Time|BigInteger|SmallInteger|Integer|Boolean|Float|Numeric|Decimal|Vector|TSVECTOR|LargeBinary|Enum)\b\s*(\([^)]*\))?/);if(Q){let K=Q[2]??"",Y=K.match(/\d+/)?.[0];switch(Q[1]){case"GUID":case"Uuid":case"UUID":return"uuid";case"String":return Y?`varchar(${Y})`:"varchar";case"Text":return"text";case"DateTime":return/timezone\s*=\s*True/.test(K)?"timestamptz":"timestamp";case"Date":return"date";case"Time":return"time";case"BigInteger":return"bigint";case"SmallInteger":return"smallint";case"Integer":return"integer";case"Boolean":return"boolean";case"Float":return"float";case"Numeric":case"Decimal":return"numeric";case"Vector":return Y?`vector(${Y})`:"vector";case"TSVECTOR":return"tsvector";case"LargeBinary":return"bytea";case"Enum":return"varchar"}}let J=$.replace(/\s*\|\s*None/g,"").trim(),V=J.match(/^Optional\[([\s\S]*)\]$/);if(V)J=V[1].trim();if(/uuid/i.test(J))return"uuid";if(/datetime/i.test(J))return"timestamptz";if(/\bint\b/i.test(J))return"integer";if(/\bbool\b/i.test(J))return"boolean";if(/\bfloat\b/.test(J)&&!/\blist\b/.test(J))return"float";if(/\bdict\b|\blist\b|\bAny\b/.test(J))return"jsonb";return"text"}function IZ(Z,$){let Q=0;for(let J=$;J<Z.length;J++)if(Z[J]==="(")Q++;else if(Z[J]===")"){if(Q--,Q===0)return Z.slice($+1,J)}return""}function H7(Z,$){let Q=0;for(let J=$;J<Z.length;J++)if(Z[J]==="[")Q++;else if(Z[J]==="]"){if(Q--,Q===0)return Z.slice($+1,J)}return null}function W7(Z,$,Q){let J=Q.match(/__tablename__\s*=\s*["']([^"']+)["']/)?.[1],V=[],K=[],Y=[],X=/(\w+)\s*:\s*Mapped\s*\[/g,H;while(H=X.exec(Q)){let W=H.index+H[0].length-1,L=H7(Q,W);if(L===null)continue;let q=W+L.length+2,j=Q.slice(q).match(/^\s*=\s*(\w+)\s*\(/);if(!j||j[1]!=="mapped_column")continue;Y.push({colName:H[1],pyType:L,argsAt:q+j[0].length-1})}let B=/(\w+)\s*=\s*(mapped_column|Column)\s*\(/g;while(H=B.exec(Q))Y.push({colName:H[1],pyType:"",argsAt:H.index+H[0].length-1});Y.sort((W,L)=>W.argsAt-L.argsAt);let M=new Set;for(let W of Y){if(M.has(W.colName)||W.colName==="__tablename__")continue;M.add(W.colName);let L=IZ(Q,W.argsAt),q=/primary_key\s*=\s*True/.test(L)||void 0,j=/nullable\s*=\s*False/.test(L)?!1:!0,U=L.match(/ForeignKey\(\s*["']([^"']+?)\.([^"'.]+)["']/);if(V.push({name:W.colName,type:l4(L,W.pyType),isPk:q,isFk:U?!0:void 0,nullable:j}),U)K.push({column:W.colName,toTable:U[1],toColumn:U[2]})}return{name:Z,bases:$,tableName:J,columns:V,fks:K}}function L7(Z){let $=[],Q=[],J=/\bTable\s*(\()\s*["']([^"']+)["']\s*,/g,V;while(V=J.exec(Z)){let K=V[2],Y=IZ(Z,V.index+V[0].indexOf("("));if(!/\bmetadata\b/.test(Y)||!/\bColumn\s*\(/.test(Y))continue;let X=[],H=/\bColumn\s*\(/g,B;while(B=H.exec(Y)){let M=IZ(Y,B.index+B[0].length-1),W=M.match(/^\s*["'](\w+)["']\s*,/)?.[1];if(!W)continue;let L=/primary_key\s*=\s*True/.test(M)||void 0,q=/nullable\s*=\s*False/.test(M)?!1:!0,j=M.match(/ForeignKey\(\s*["']([^"']+?)\.([^"'.]+)["']/);if(X.push({name:W,type:l4(M,""),isPk:L,isFk:j?!0:void 0,nullable:q}),j)Q.push({fromTable:K,fromColumn:W,toTable:j[1],toColumn:j[2]})}if(X.length)$.push({name:K,columns:X})}return{tables:$,relations:Q}}function C7(Z){let $=new Map,Q={tables:[],relations:[]};for(let X of Z){if(!X.path.endsWith(".py"))continue;if(!/mapped_column\s*\(|__tablename__|\bTable\s*\(\s*["']/.test(X.content))continue;let H=L7(X.content);Q.tables.push(...H.tables),Q.relations.push(...H.relations);let B=/^class\s+(\w+)\s*\(([^)]*)\)\s*:/gm,M,W=[];while(M=B.exec(X.content))W.push({name:M[1],bases:M[2].split(",").map((L)=>L.trim().split(/[.[]/)[0]).filter(Boolean),at:M.index});for(let L=0;L<W.length;L++){let q=X.content.slice(W[L].at,W[L+1]?.at??X.content.length),j=W7(W[L].name,W[L].bases,q);$.set(j.name,j)}}if(![...$.values()].some((X)=>X.tableName)&&!Q.tables.length)return{tables:[],relations:[]};let J=(X,H=new Set)=>{if(H.has(X.name))return[];H.add(X.name);let B=[];for(let M of X.bases){let W=$.get(M);if(W&&!W.tableName)B.push(...J(W,H))}return B.push(...X.columns),B},V=[],K=[];for(let X of $.values()){if(!X.tableName)continue;let H=J(X),B=new Map;for(let j of H)if(!B.has(j.name))B.set(j.name,j);let M=[...B.values()],W=(j)=>M.splice(M.findIndex((U)=>U.name===j),1)[0],L=M.some((j)=>j.name==="id")?W("id"):null,q=["created_at","updated_at","deleted_at"].filter((j)=>M.some((U)=>U.name===j)).map((j)=>W(j));V.push({name:X.tableName,columns:[...L?[L]:[],...M,...q]});for(let j of X.fks)K.push({fromTable:X.tableName,fromColumn:j.column,toTable:j.toTable,toColumn:j.toColumn})}let Y=new Set(V.map((X)=>X.name));for(let X of Q.tables)if(!Y.has(X.name))V.push(X);return K.push(...Q.relations.filter((X)=>!Y.has(X.fromTable))),{tables:V,relations:K}}function B7(Z){let $=Z.replace(/[?[\]]/g,"");return{String:"text",Int:"integer",BigInt:"bigint",Float:"float",Decimal:"numeric",Boolean:"boolean",DateTime:"timestamptz",Json:"jsonb",Bytes:"bytea"}[$]??$.toLowerCase()}function N7(Z){let $=[],Q=[];for(let J of Z){if(!J.path.endsWith(".prisma"))continue;let V=/model\s+(\w+)\s*\{([\s\S]*?)\}/g,K;while(K=V.exec(J.content)){let Y=K[1],X=K[2].match(/@@map\(\s*["']([^"']+)["']\s*\)/)?.[1]??Y,H=[];for(let B of K[2].split(`
4
4
  `)){let M=B.trim().match(/^(\w+)\s+(\w+(?:\[\])?\??)\s*(.*)$/);if(!M||/^@@/.test(B.trim()))continue;let[,W,L,q]=M,j=/^(String|Int|BigInt|Float|Decimal|Boolean|DateTime|Json|Bytes)(\[\])?\??$/.test(L),U=q.match(/@relation\([^)]*fields:\s*\[(\w+)\][^)]*references:\s*\[(\w+)\]/);if(U)Q.push({fromTable:X,fromColumn:U[1],toTable:L.replace(/[?[\]]/g,""),toColumn:U[2]});if(!j)continue;H.push({name:W,type:B7(L),isPk:/@id\b/.test(q)||void 0,isFk:/@relation\b/.test(q)||void 0,nullable:L.endsWith("?")})}if(H.length)$.push({name:X,columns:H})}}return{tables:$,relations:Q}}function q7(Z,$){if(/mode:\s*["']timestamp/.test($))return"timestamp";if(/mode:\s*["']boolean["']/.test($))return"boolean";if(/mode:\s*["']json["']/.test($))return"jsonb";return Z}function O7(Z,$){let Q=0;for(let J=$;J<Z.length;J++)if(Z[J]==="{")Q++;else if(Z[J]==="}"){if(Q--,Q===0)return Z.slice($+1,J)}return""}function A7(Z){let $=[],Q=/(\w+)\s*:\s*(text|integer|real|blob|numeric|varchar|boolean|timestamp|serial|uuid|json|jsonb)\s*\(/g;for(let K of Z){if(!/\.(ts|tsx|mts|cts)$/.test(K.path))continue;if(!/\b(?:sqliteTable|pgTable|mysqlTable)\s*\(/.test(K.content))continue;let Y=/(?:export\s+)?const\s+(\w+)\s*=\s*(?:sqliteTable|pgTable|mysqlTable)\s*\(\s*["']([^"']+)["']\s*,/g,X;while(X=Y.exec(K.content)){let H=K.content.indexOf("{",X.index+X[0].length);if(H<0)continue;let B=O7(K.content,H),M={varName:X[1],tableName:X[2],columns:[],colByProp:new Map,fks:[]},W=[];Q.lastIndex=0;for(let L of B.matchAll(Q))W.push({prop:L[1],builder:L[2],at:L.index,argOpen:L.index+L[0].length-1});W.forEach((L,q)=>{let j=B.slice(L.at,W[q+1]?.at??B.length),U=IZ(B,L.argOpen),A=U.match(/^\s*["']([^"']+)["']/)?.[1]??L.prop,N=j.match(/\.references\(\s*\(\)\s*=>\s*(\w+)\.(\w+)/);if(M.columns.push({name:A,type:q7(L.builder,U),isPk:/\.primaryKey\(\)/.test(j)||void 0,isFk:N?!0:void 0,nullable:/\.notNull\(\)/.test(j)?!1:!0}),M.colByProp.set(L.prop,A),N)M.fks.push({column:A,toVar:N[1],toProp:N[2]})}),$.push(M)}}if(!$.length)return{tables:[],relations:[]};let J=new Map($.map((K)=>[K.varName,K])),V=[];for(let K of $)for(let Y of K.fks){let X=J.get(Y.toVar);if(!X)continue;V.push({fromTable:K.tableName,fromColumn:Y.column,toTable:X.tableName,toColumn:X.colByProp.get(Y.toProp)??Y.toProp})}return{tables:$.map((K)=>({name:K.tableName,columns:K.columns})),relations:V,tableVars:Object.fromEntries($.map((K)=>[K.varName,K.tableName]))}}function d4(Z){let $=A7(Z);if($.tables.length)return $;let Q=N7(Z);if(Q.tables.length)return Q;return C7(Z)}var _7=["GET","POST","PUT","PATCH","DELETE"];function D7(Z){let $=Z.match(/(?:^|\/)app\/(.+)\/route\.(?:ts|tsx|js|jsx|mjs)$/);if(!$)return null;let Q=$[1].split("/").filter((J)=>!(J.startsWith("(")&&J.endsWith(")"))).map((J)=>{let V=J.match(/^\[{1,2}(?:\.\.\.)?([^\]]+)\]{1,2}$/);return V?`{${V[1]}}`:J});if(Q[0]!=="api")return null;return`/${Q.join("/")}`}function n4(Z){let $=[];for(let Q of Z){let J=D7(Q.path);if(!J)continue;for(let V of _7)if(new RegExp(`export\\s+(?:async\\s+)?(?:function|const)\\s+${V}\\b`).test(Q.content))$.push({method:V,path:J,uses:[],file:Q.path})}return $.sort((Q,J)=>`${Q.path} ${Q.method}`.localeCompare(`${J.path} ${J.method}`))}var F7=/(^|\/)app\/.*\/route\.(ts|tsx|js|jsx|mjs)$/,z7=/\.(ts|py)$/,P7=/(schema|model)/i;function sZ(Z){if(Z.endsWith(".prisma"))return!0;if(F7.test(Z))return!0;return z7.test(Z)&&P7.test(Z)}function r4(Z,$=300){return Z.filter(sZ).slice(0,$)}import{z as d}from"zod";import{and as W5,eq as HZ,inArray as n7,notInArray as r7}from"drizzle-orm";import{z as P}from"zod";import{and as m7,eq as kZ,inArray as tZ,notInArray as p7,or as c7,sql as l7}from"drizzle-orm";var o4=240,i4=50;function s4(Z){for(let $=0;$<Z.length;$++)for(let Q=$+1;Q<Z.length;Q++){let J=Z[$],V=Z[Q];if(J.x<V.x+o4&&J.x+o4>V.x&&J.y<V.y+i4&&J.y+i4>V.y)return!0}return!1}import{eq as E7}from"drizzle-orm";var a4=(Z)=>Z.replace(/\{[^}]*\}/g,"{}");function I7(Z,$){if(Z.method.toUpperCase()!==$.method.toUpperCase())return!1;let Q=a4(Z.path),J=a4($.path);return J===Q||J.endsWith(Q)}async function t4(Z=m){let[$,Q]=await Promise.all([Z.query.endpoint.findMany({where:(V,{ne:K})=>K(V.source,"INTROSPECTION")}),Z.query.endpoint.findMany({where:(V,{eq:K})=>K(V.source,"INTROSPECTION")})]),J={collapsed:0,mappings:[]};for(let V of $){let K=Q.find((Y)=>I7(V,Y));if(!K)continue;await Z.delete(k).where(E7(k.id,V.id)),J.collapsed++,J.mappings.push({planned:`${V.method} ${V.path}`,code:`${K.method} ${K.path}`})}return J}import{and as e4,inArray as R7,isNull as Z5,ne as $5,or as S7}from"drizzle-orm";var k7=new Set(["DONE","CANCELLED","DEPRIORITIZED"]);async function v7(Z){let $=await Z.query.node.findMany({where:(J,{and:V,eq:K,isNotNull:Y})=>V(K(J.view,"ROADMAP"),Y(J.planId)),columns:{planId:!0,status:!0}}),Q=new Map;for(let J of $){let V=J.planId;Q.set(V,(Q.get(V)??!0)&&k7.has(J.status))}return[...Q.entries()].filter(([,J])=>J).map(([J])=>J)}async function Q5(Z=m){let $=await v7(Z),Q=(K)=>$.length?S7(Z5(K.planId),R7(K.planId,$)):Z5(K.planId),J=await Z.delete(E).where(e4($5(E.source,"INTROSPECTION"),Q(E))).returning({id:E.id}),V=await Z.delete(k).where(e4($5(k.source,"INTROSPECTION"),Q(k))).returning({id:k.id});return{tables:J.length,endpoints:V.length}}var V5=320;function e(Z){return 36+Math.max(0,Z)*30+16}var XZ=60,w7=280,RZ=14,J5=120,qZ=170,T7=2560;var SZ=(Z)=>(Z??"").trim()||"\u2014";function y7(Z,$,Q){let J=new Map;for(let K of Z.uses){if(!$.has(K.tableId))continue;J.set(K.tableId,(J.get(K.tableId)??0)+1)}let V=null;for(let[K,Y]of J){if(V===null){V=K;continue}let X=J.get(V);if(Y>X){V=K;continue}if(Y<X)continue;let H=Q?.get(K)??0,B=Q?.get(V)??0;if(H<B)V=K;else if(H===B&&$.get(K).localeCompare($.get(V))<0)V=K}return V}function aZ(Z,$){let Q=new Map(Z.map((V)=>[V.id,V.name])),J=new Map;for(let V of $)for(let K of V.uses){if(!Q.has(K.tableId))continue;J.set(K.tableId,(J.get(K.tableId)??0)+1)}return new Map($.map((V)=>[V.id,y7(V,Q,J)]))}var f7=(Z,$)=>Z.path.localeCompare($.path)||Z.method.localeCompare($.method)||Z.id.localeCompare($.id);function K5(Z,$){let Q=aZ(Z,$),J=new Map,V=[];for(let N of[...$].sort(f7)){let G=Q.get(N.id)??null;if(G){let _=J.get(G);if(_)_.push(N);else J.set(G,[N])}else V.push(N)}let K=(N)=>{let G=J.get(N.id)?.length??0;return e(N.columnCount)+(G?RZ+G*XZ:0)+50},Y=Array.from(new Set(Z.map((N)=>SZ(N.domain)))),X=Y.filter((N)=>N!=="\u2014").sort(),H=Y.includes("\u2014")?[...X,"\u2014"]:X,B=[];for(let N of H){let G=Z.filter((S)=>SZ(S.domain)===N).sort((S,I)=>S.name.localeCompare(I.name)),_=G.reduce((S,I)=>S+K(I),0),D=Math.max(1,Math.min(12,G.length,Math.round(Math.sqrt(_/320)))),R=Array(D).fill(0),y=new Map;for(let S of G){let I=0;for(let F=1;F<D;F++)if(R[F]<R[I])I=F;y.set(S.id,{x:I*320,y:R[I]}),R[I]+=K(S)}B.push({d:N,w:D*320,h:Math.max(...R,0),tableLocal:y})}let M=B.reduce((N,G)=>N+(G.w+J5)*(G.h+qZ),0),W=Math.max(T7,Math.round(Math.sqrt(M*2.2))),L=new Map,q=new Map,j=0,U=0,O=0,A=0;for(let N of B){if(j>0&&j+N.w>W)U+=O+qZ,j=0,O=0;let G=Z.filter((_)=>N.tableLocal.has(_.id));for(let _ of G){let D=N.tableLocal.get(_.id),R=j+D.x,y=U+D.y;L.set(_.id,{x:R,y}),(J.get(_.id)??[]).forEach((I,F)=>{q.set(I.id,{x:R,y:y+e(_.columnCount)+RZ+F*XZ})})}O=Math.max(O,N.h),A=Math.max(A,U+N.h),j+=N.w+J5}if(V.length){let N=A+qZ,G=Math.max(1,Math.min(4,Math.ceil(Math.sqrt(V.length/2))));V.forEach((_,D)=>{q.set(_.id,{x:D%G*w7,y:N+Math.floor(D/G)*XZ})})}return{tables:L,endpoints:q}}function X5(Z,$,Q){let J=aZ($,Q),V=new Map;for(let q of Q){let j=J.get(q.id);if(j)V.set(j,(V.get(j)??0)+1)}let K=(q)=>{let j=V.get(q.id)??0;return q.y+e(q.columnCount)+(j?RZ+j*XZ:0)},Y=SZ(Z.domain),X=$.filter((q)=>SZ(q.domain)===Y);if(!X.length){let q=$.length?Math.max(...$.map(K),...Q.map((j)=>j.y+XZ)):0;return{x:0,y:$.length||Q.length?q+qZ:0}}let H=Math.min(...X.map((q)=>q.x)),B=X.map((q)=>Math.max(0,Math.round((q.x-H)/320))),M=Math.min(12,Math.max(...B)+1),W=Array(M).fill(Math.min(...X.map((q)=>q.y)));X.forEach((q,j)=>{let U=Math.min(B[j],M-1);W[U]=Math.max(W[U],K(q)+50)});let L=0;for(let q=1;q<M;q++)if(W[q]<W[L])L=q;return{x:H+L*320,y:W[L]}}function Y5(Z,$,Q){let J=aZ($,[...Q,Z]),V=J.get(Z.id),K=V?$.find((X)=>X.id===V):void 0;if(K){let X=Q.filter((M)=>J.get(M.id)===K.id),H=K.y+e(K.columnCount)+RZ,B=X.length?Math.max(...X.map((M)=>M.y))+XZ:H;return{x:K.x,y:B}}let Y=[...$.map((X)=>X.y+e(X.columnCount)),...Q.map((X)=>X.y+XZ)];return{x:0,y:Y.length?Math.max(...Y)+qZ:0}}function G5(Z){let $=V5-20;for(let Q=0;Q<Z.length;Q++)for(let J=Q+1;J<Z.length;J++){let V=Z[Q],K=Z[J],Y=e(V.columnCount),X=e(K.columnCount);if(V.x<K.x+$&&V.x+$>K.x&&V.y<K.y+X&&V.y+Y>K.y)return!0}return!1}import{eq as j5}from"drizzle-orm";M5();async function U5(Z=m){let[$,Q]=await Promise.all([Z.query.dbTable.findMany({with:{columns:{columns:{id:!0}}},orderBy:(K,{asc:Y})=>Y(K.name)}),Z.query.endpoint.findMany({with:{tables:{columns:{tableId:!0}}}})]),J=K5($.map((K)=>({id:K.id,name:K.name,domain:K.domain,columnCount:K.columns.length})),Q.map((K)=>({id:K.id,method:K.method,path:K.path,uses:K.tables.map((Y)=>({tableId:Y.tableId}))}))),V=0;for(let K of $){let Y=J.tables.get(K.id);if(!Y||Math.round(Y.x)===Math.round(K.x)&&Math.round(Y.y)===Math.round(K.y))continue;await Z.update(E).set({x:Y.x,y:Y.y}).where(j5(E.id,K.id)),V++}for(let K of Q){let Y=J.endpoints.get(K.id);if(!Y||Math.round(Y.x)===Math.round(K.x)&&Math.round(Y.y)===Math.round(K.y))continue;await Z.update(k).set({x:Y.x,y:Y.y}).where(j5(k.id,K.id)),V++}return V}var d7=P.object({tables:P.array(P.object({name:P.string().trim().min(1),domain:P.string().nullish(),description:P.string().nullish(),columns:P.array(P.object({name:P.string().trim().min(1),type:P.string().trim().min(1),isPk:P.boolean().optional(),isFk:P.boolean().optional(),nullable:P.boolean().optional(),note:P.string().nullish()})).default([])})).default([]),relations:P.array(P.object({fromTable:P.string(),fromColumn:P.string(),toTable:P.string(),toColumn:P.string(),label:P.string().nullish()})).default([]),endpoints:P.array(P.object({method:P.string().trim().min(1),path:P.string().trim().min(1),domain:P.string().nullish(),description:P.string().nullish(),uses:P.array(P.object({table:P.string(),access:P.string().default("read")})).default([])})).default([])});async function vZ(Z=m){let[$]=await Z.insert(s).values({id:"singleton",version:1}).onConflictDoUpdate({target:s.id,set:{version:l7`${s.version} + 1`}}).returning();return $.version}async function H5(Z,$=m,Q={}){let J=d7.parse(Z),V=J.tables.length>0,K=J.endpoints.length>0,Y=J.tables.map((G)=>G.name);if(V)await $.delete(E).where(Y.length?m7(kZ(E.source,"INTROSPECTION"),p7(E.name,Y)):kZ(E.source,"INTROSPECTION"));let X=await $.query.dbTable.findMany({columns:{id:!0,name:!0,domain:!0,x:!0,y:!0},with:{columns:{columns:{id:!0}}}}),H=await $.query.endpoint.findMany({columns:{id:!0,method:!0,path:!0,x:!0,y:!0},with:{tables:{columns:{tableId:!0}}}}),B=new Map(X.map((G)=>[G.name,G])),M=X.map((G)=>({id:G.id,name:G.name,domain:G.domain,columnCount:G.columns.length,x:G.x,y:G.y})),W=H.map((G)=>({id:G.id,method:G.method,path:G.path,uses:G.tables.map((_)=>({tableId:_.tableId})),x:G.x,y:G.y})),L=new Map;for(let G of J.tables){if(B.has(G.name))continue;let _=X5({domain:G.domain??null,columnCount:G.columns.length},M,W);L.set(G.name,_),M.push({id:`new:${G.name}`,name:G.name,domain:G.domain??null,columnCount:G.columns.length,..._})}let q=new Map;for(let G of J.tables){let _=B.get(G.name),D=L.get(G.name),R=_?.x??D?.x??0,y=_?.y??D?.y??0,[S]=await $.insert(E).values({name:G.name,domain:G.domain??null,description:G.description??null,source:"INTROSPECTION",x:R,y}).onConflictDoUpdate({target:E.name,set:{...G.domain!=null?{domain:G.domain}:{},...G.description!=null?{description:G.description}:{},source:"INTROSPECTION"}}).returning();if(q.set(G.name,S.id),await $.delete(t).where(kZ(t.tableId,S.id)),G.columns.length)await $.insert(t).values(G.columns.map((I,F)=>({tableId:S.id,name:I.name,type:I.type,isPk:I.isPk??!1,isFk:I.isFk??!1,nullable:I.nullable??!0,note:I.note??null,ord:F})))}let j=[...q.values()];if(j.length)await $.delete(l).where(c7(tZ(l.fromTableId,j),tZ(l.toTableId,j)));for(let G of J.relations){let _=q.get(G.fromTable),D=q.get(G.toTable);if(!_||!D)continue;await $.insert(l).values({fromTableId:_,toTableId:D,fromColumn:G.fromColumn,toColumn:G.toColumn,label:G.label??`${G.fromColumn} \u2192 ${G.toTable}.${G.toColumn}`})}let U=new Set(J.endpoints.map((G)=>`${G.method} ${G.path}`));if(K){let _=(await $.query.endpoint.findMany({where:(D,{eq:R})=>R(D.source,"INTROSPECTION")})).filter((D)=>!U.has(`${D.method} ${D.path}`)).map((D)=>D.id);if(_.length)await $.delete(k).where(tZ(k.id,_))}for(let G of M)if(G.id.startsWith("new:"))G.id=q.get(G.name)??G.id;for(let G of J.endpoints){let _=await $.query.endpoint.findFirst({where:(S,{and:I,eq:F})=>I(F(S.method,G.method),F(S.path,G.path))}),D,R;if(_)D=_.x,R=_.y;else{let S={id:`new:${G.method} ${G.path}`,method:G.method,path:G.path,uses:G.uses.map((F)=>({tableId:q.get(F.table)??""})).filter((F)=>F.tableId)},I=Y5(S,M,W);D=I.x,R=I.y,W.push({...S,x:D,y:R})}let[y]=await $.insert(k).values({method:G.method,path:G.path,domain:G.domain??null,description:G.description??null,source:"INTROSPECTION",x:D,y:R}).onConflictDoUpdate({target:[k.method,k.path],set:{...G.domain!=null?{domain:G.domain}:{},...G.description!=null?{description:G.description}:{},source:"INTROSPECTION"}}).returning();if(!Q.partial||G.uses.length>0)await $.delete(o).where(kZ(o.endpointId,y.id));for(let S of G.uses){let I=q.get(S.table)??(await $.query.dbTable.findFirst({where:(F,{eq:GZ})=>GZ(F.name,S.table)}))?.id;if(!I)continue;await $.insert(o).values({endpointId:y.id,tableId:I,access:S.access})}}await t4($),await Q5($);let O=await $.query.dbTable.findMany({where:(G,{eq:_})=>_(G.source,"INTROSPECTION"),columns:{x:!0,y:!0},with:{columns:{columns:{id:!0}}}}),A=await $.select({x:k.x,y:k.y}).from(k);if(G5(O.map((G)=>({x:G.x,y:G.y,columnCount:G.columns.length})))||s4(A))await U5($);let N=await vZ($);return{tables:J.tables.length,relations:J.relations.length,endpoints:J.endpoints.length,version:N}}var L5=d.object({files:d.array(d.object({path:d.string().trim().min(1),root:d.string().nullish(),lang:d.string().nullish(),mtimeMs:d.number().nullish(),size:d.number().nullish()})).default([]),edges:d.array(d.object({from:d.string().trim().min(1),to:d.string().trim().min(1)})).default([])});function C5(Z,$){let Q=new Map;for(let L of Z)Q.set(L,[]);for(let L of $)Q.get(L.from)?.push(L.to);let J=new Map,V=new Map,K=new Set,Y=[],X=new Map,H=[],B=0,M=0;for(let L of Z){if(J.has(L))continue;let q=[{v:L,iter:0}];J.set(L,B),V.set(L,B),B++,Y.push(L),K.add(L);while(q.length){let j=q[q.length-1],U=Q.get(j.v)??[];if(j.iter<U.length){let O=U[j.iter++];if(!J.has(O))J.set(O,B),V.set(O,B),B++,Y.push(O),K.add(O),q.push({v:O,iter:0});else if(K.has(O))V.set(j.v,Math.min(V.get(j.v),J.get(O)))}else{if(V.get(j.v)===J.get(j.v)){let A=0,N;do N=Y.pop(),K.delete(N),X.set(N,M),A++;while(N!==j.v);H.push(A),M++}q.pop();let O=q[q.length-1];if(O)V.set(O.v,Math.min(V.get(O.v),V.get(j.v)))}}}let W=new Set;for(let L of $){let q=X.get(L.from);if(q!==void 0&&q===X.get(L.to)&&H[q]>1)W.add(`${L.from}|${L.to}`)}return W}async function B5(Z,$=m){let Q=L5.parse(Z),J=Q.files.map((W)=>W.path),V=new Set(J),K=Q.edges.filter((W)=>V.has(W.from)&&V.has(W.to)&&W.from!==W.to),Y=C5(J,K),X=new Map,H=new Map;for(let W of K)H.set(W.from,(H.get(W.from)??0)+1),X.set(W.to,(X.get(W.to)??0)+1);await $.delete(f).where(r7(f.path,J));for(let W of Q.files){let L={root:W.root??null,lang:W.lang??null,mtimeMs:W.mtimeMs??null,size:W.size??null,inDegree:X.get(W.path)??0,outDegree:H.get(W.path)??0};await $.insert(f).values({path:W.path,...L}).onConflictDoUpdate({target:f.path,set:L})}await $.delete(u);let B=0;if(K.length)await $.insert(u).values(K.map((W)=>{let L=Y.has(`${W.from}|${W.to}`);if(L)B++;return{fromPath:W.from,toPath:W.to,circular:L}}));let M=await vZ($);return await $.update(s).set({codeGraphSyncedAt:new Date}).where(HZ(s.id,"singleton")),{files:Q.files.length,edges:K.length,circular:B,version:M}}var o7=(Z,$)=>`${Z}\x00${$}`;function eZ(Z){let $=L5.parse(Z),Q=$.files.map((M)=>M.path),J=new Set(Q),V=$.edges.filter((M)=>J.has(M.from)&&J.has(M.to)&&M.from!==M.to),K=C5(Q,V),Y=new Map,X=new Map;for(let M of V)X.set(M.from,(X.get(M.from)??0)+1),Y.set(M.to,(Y.get(M.to)??0)+1);let H=new Map;for(let M of $.files)H.set(M.path,{root:M.root??null,lang:M.lang??null,mtimeMs:M.mtimeMs??null,size:M.size??null,inDegree:Y.get(M.path)??0,outDegree:X.get(M.path)??0});let B=new Map;for(let M of V)B.set(o7(M.from,M.to),{from:M.from,to:M.to,circular:K.has(`${M.from}|${M.to}`)});return{files:H,edges:B}}var i7=(Z,$)=>Z.root===$.root&&Z.lang===$.lang&&Z.mtimeMs===$.mtimeMs&&Z.size===$.size&&Z.inDegree===$.inDegree&&Z.outDegree===$.outDegree;async function N5(Z,$,Q=m){for(let[X,H]of $.files){let B=Z.files.get(X);if(B&&i7(B,H))continue;let M={root:H.root,lang:H.lang,mtimeMs:H.mtimeMs,size:H.size,inDegree:H.inDegree,outDegree:H.outDegree};await Q.insert(f).values({path:X,...M}).onConflictDoUpdate({target:f.path,set:M})}let J=[...Z.files.keys()].filter((X)=>!$.files.has(X));if(J.length)await Q.delete(f).where(n7(f.path,J));for(let[X,H]of Z.edges)if(!$.edges.has(X))await Q.delete(u).where(W5(HZ(u.fromPath,H.from),HZ(u.toPath,H.to)));let V=[];for(let[X,H]of $.edges){let B=Z.edges.get(X);if(!B)V.push({fromPath:H.from,toPath:H.to,circular:H.circular});else if(B.circular!==H.circular)await Q.update(u).set({circular:H.circular}).where(W5(HZ(u.fromPath,H.from),HZ(u.toPath,H.to)))}if(V.length)await Q.insert(u).values(V);let K=await vZ(Q);await Q.update(s).set({codeGraphSyncedAt:new Date}).where(HZ(s.id,"singleton"));let Y=0;for(let X of $.edges.values())if(X.circular)Y++;return{files:$.files.size,edges:$.edges.size,circular:Y,version:K}}var Z8=/[/\\](node_modules|\.git|\.next|dist|build|__pycache__|target|\.venv|venv|\.beacon|\.playwright-mcp|generated|coverage)[/\\]/;function $8(Z){try{let $=OZ(Z,"beacon.config.json");if(O5($)){let Q=JSON.parse(s7($,"utf8"));if(Array.isArray(Q.roots)&&Q.roots.length)return Q.roots.map((J)=>e7(Z,J))}}catch{}return[Z]}function A5(Z){let $=$8(Z.path),Q=hZ(Z.id),J=lZ(QZ(Z.id)),V=p4($,Z.path);async function K(){let U=r4(V.snapshot().files.map((_)=>_.path));for(let _ of $)for(let D of["prisma/schema.prisma","schema.prisma"]){let R=OZ(_,D);if(O5(R))U.push(Y(R))}let O=[];for(let _ of U)try{O.push({path:_,content:await q5(OZ(Z.path,_),"utf8")})}catch{}let A=d4(O),N=n4(O);if(!A.tables.length&&!N.length)return;if(N.length&&A.tableVars&&Object.keys(A.tableVars).length){let D=V.snapshot().edges,R=new Set(N.map((F)=>F.file)),y=new Map;for(let F of D){let GZ=y.get(F.from)??[];GZ.push(F.to),y.set(F.from,GZ)}for(let F=0;F<2;F++)for(let GZ of[...R])for(let R5 of y.get(GZ)??[])R.add(R5);let S=new Map;for(let F of[...R].slice(0,600))try{S.set(F,await q5(OZ(Z.path,F),"utf8"))}catch{}let I=c4({routeFiles:[...new Set(N.map((F)=>F.file))],edges:D,content:(F)=>S.get(F)??null,tableVars:A.tableVars});for(let F of N)F.uses=I.get(F.file)??[]}let G=await H5({tables:A.tables,relations:A.relations,endpoints:N},J,{partial:!0});console.log(`[beacon-inline] schema synced (${Z.name}): ${G.tables} tables / ${G.endpoints} endpoints`)}function Y(U){return t7(Z.path,U).split(/[\\/]/).join("/")}let X=null,H=!1,B=new Set,M=null,W=!1;async function L(){if(W){q();return}W=!0;try{if(await Q,H)X=null,H=!1;if(X===null){let N=await V.seed(),G=await B5(N,J);X=eZ(N),console.log(`[beacon-inline] code-graph synced (${Z.name}): ${G.files} files / ${G.edges} imports${G.circular>0?` (${G.circular} circular)`:""}`),await K();return}let U=[...B];B.clear();let O=U.some((N)=>sZ(Y(N))),A=!1;for(let N of U)if(await V.applyChange(N))A=!0;if(A){let N=eZ(V.snapshot()),G=await N5(X,N,J);X=N,console.log(`[beacon-inline] code-graph updated (${Z.name}): ${G.files} files / ${G.edges} imports${G.circular>0?` (${G.circular} circular)`:""}`)}if(O)await K()}catch(U){console.error(`[beacon-inline] error (${Z.name}):`,U instanceof Error?U.message:U)}finally{W=!1}}function q(){if(M)clearTimeout(M);M=setTimeout(L,600)}let j=[];for(let U of $)try{let O=a7(U,{recursive:!0,persistent:!0},(A,N)=>{if(!N){H=!0,q();return}let G=String(N);if(Z8.test(`/${G}`))return;B.add(OZ(U,G)),q()});O.on("error",(A)=>console.error(`[beacon-inline] watcher error (${Z.name}):`,A)),j.push(O)}catch(O){console.error(`[beacon-inline] live watch unavailable for ${U} (${Z.name}):`,O instanceof Error?O.message:O)}return console.log(`[beacon-inline] watching ${Z.name} (${$.join(", ")}) \u2014 initial extract\u2026`),L(),{async stop(){if(M)clearTimeout(M);for(let U of j)U.close()}}}function J8(Z){let $=Z.limit??6,Q=Z.hardCap??12,J=new Map,V=0,K=new Set;function Y(U){let O=J.get(U);if(O)O.seq=++V}function X(U){if(J.has(U.id))return Y(U.id);if(!Z.exists(U.path))return;J.set(U.id,{handle:Z.start(U),seq:++V})}function H(){let U=null,O=1/0;for(let[A,N]of J){if(K.has(A))continue;if(N.seq<O)O=N.seq,U=A}if(U)J.get(U).handle.stop(),J.delete(U)}function B(){let U=Z.list().filter((O)=>Z.exists(O.path)).slice(0,$);K=new Set(U.map((O)=>O.id));for(let O of U)X(O);for(let[O,A]of[...J]){let N=Z.get(O);if(!N||!Z.exists(N.path))A.handle.stop(),J.delete(O)}}function M(U){if(J.has(U))return Y(U);let O=Z.get(U);if(!O||!Z.exists(O.path))return;if(J.size>=Q)H();if(J.size>=Q)return;J.set(U,{handle:Z.start(O),seq:++V})}async function W(U){let O=J.get(U);if(!O)return;J.delete(U),await O.handle.stop()}function L(U){return J.has(U)}function q(){return[...J.keys()]}async function j(){await Promise.all([...J.values()].map((U)=>U.handle.stop())),J.clear()}return{reconcile:B,ensureWatcher:M,stopWatcher:W,isWatching:L,activeIds:q,stopAll:j}}var V8=J8({list:gZ,get:x,exists:Q8,start:(Z)=>A5(Z)});async function _5(Z){await V8.stopWatcher(Z)}async function D5(Z){if(!x(Z))return{ok:!1,removed:!1,fallbackId:r(),error:"unknown workspace"};G4(Z),await _5(Z),C4(QZ(Z)),W4(Z);try{K8(n(Z),{recursive:!0,force:!0})}catch($){return{ok:!1,removed:!0,fallbackId:r(),error:$ instanceof Error?$.message:String($)}}return{ok:!0,removed:!0,fallbackId:r()}}var Z4=process.argv.slice(3),P5=Z4.includes("--yes")||Z4.includes("-y"),YZ=Z4.find((Z)=>!Z.startsWith("-")),F5=(Z)=>`\x1B[32m\u2713\x1B[0m ${Z}`,E5=(Z)=>`\x1B[2m${Z}\x1B[0m`,I5=(Z)=>`
5
5
  \x1B[1m${Z}\x1B[0m`;function G8(){if(!YZ)return x(WZ(uZ(process.cwd())));if(/^[0-9a-f]{12}$/.test(YZ)){let Z=x(YZ);if(Z)return Z}return x(WZ(uZ(z5(YZ))))}var i=G8();if(!i)console.error(`[beacon] ${YZ??process.cwd()} is not a registered Beacon workspace \u2014 nothing to remove.`),process.exit(1);console.log(I5(P5?"Beacon \xB7 remove workspace":"Beacon \xB7 remove workspace (dry run)"));console.log(` name: ${i.name}${r()===i.id?" (currently active)":""}`);console.log(` repo: ${i.path} ${E5("(untouched \u2014 only Beacon's data is erased)")}`);console.log(` data: ${n(i.id)} ${E5("(deleted)")}`);if(!P5)console.log(I5("Nothing was changed.")),console.log(` Run \x1B[1mbeacon remove${YZ?` ${YZ}`:""} --yes\x1B[0m to apply.
6
6
  `),process.exit(0);async function M8(Z){try{let{pid:$,port:Q}=JSON.parse(Y8(z5($Z(),"server.json"),"utf8"));if(!$||!Q)return!1;return process.kill($,0),(await fetch(`http://localhost:${Q}/api/workspace`,{method:"DELETE",headers:{"content-type":"application/json"},body:JSON.stringify({id:Z}),signal:AbortSignal.timeout(1e4)})).ok}catch{return!1}}if(await M8(i.id))console.log(` ${F5(`removed ${i.name} (via the running daemon)`)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trybeacon",
3
- "version": "0.1.30",
3
+ "version": "0.1.32",
4
4
  "description": "The visual planning surface for the coding agent in your terminal.",
5
5
  "homepage": "https://trybeacon.sh",
6
6
  "bin": {