trybeacon 0.1.72 → 0.1.74
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.
- package/.claude-plugin/plugin.json +1 -1
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +17 -9
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/routes-manifest.json +54 -6
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +23 -22
- package/.next/server/app/_not-found.segments/_full.segment.rsc +23 -22
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +12 -11
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/ask/answer/route.js +1 -0
- package/.next/server/app/api/ask/answer/route.js.nft.json +1 -0
- package/.next/server/app/api/ask/answer/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/ask/route.js +1 -0
- package/.next/server/app/api/ask/route.js.nft.json +1 -0
- package/.next/server/app/api/ask/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/ask/verdict/route.js +1 -0
- package/.next/server/app/api/ask/verdict/route.js.nft.json +1 -0
- package/.next/server/app/api/ask/verdict/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/board-annotations/[id]/route.js +1 -1
- package/.next/server/app/api/board-annotations/route.js +1 -1
- package/.next/server/app/api/board-layout/route.js +1 -1
- package/.next/server/app/api/bug-flags/[id]/route.js +1 -1
- package/.next/server/app/api/bug-flags/route.js +1 -1
- package/.next/server/app/api/changes/comment/answer/route.js +4 -0
- package/.next/server/app/api/changes/comment/answer/route.js.nft.json +1 -0
- package/.next/server/app/api/changes/comment/answer/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/changes/comment/claim/route.js +4 -0
- package/.next/server/app/api/changes/comment/claim/route.js.nft.json +1 -0
- package/.next/server/app/api/changes/comment/claim/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/changes/comment/route.js +4 -0
- package/.next/server/app/api/changes/comment/route.js.nft.json +1 -0
- package/.next/server/app/api/changes/comment/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/changes/quality/route.js +1 -0
- package/.next/server/app/api/changes/quality/route.js.nft.json +1 -0
- package/.next/server/app/api/changes/quality/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/changes/route.js +1 -0
- package/.next/server/app/api/{flags → changes}/route.js.nft.json +1 -1
- package/.next/server/app/api/changes/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/changes/viewed/route.js +1 -0
- package/.next/server/app/api/changes/viewed/route.js.nft.json +1 -0
- package/.next/server/app/api/changes/viewed/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/code-graph/position/route.js +1 -1
- package/.next/server/app/api/code-graph/route.js +1 -1
- package/.next/server/app/api/context/feature/route.js +1 -1
- package/.next/server/app/api/context/file/route.js +1 -1
- package/.next/server/app/api/context/route.js +1 -9
- package/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/server/app/api/db/arrange/route.js +1 -1
- package/.next/server/app/api/db/backfill-access/route.js +1 -1
- package/.next/server/app/api/db/position/route.js +1 -1
- package/.next/server/app/api/db/position/route.js.nft.json +1 -1
- package/.next/server/app/api/db/prune-planned/route.js +1 -1
- package/.next/server/app/api/db/reconcile-endpoints/route.js +1 -1
- package/.next/server/app/api/db/relations/[id]/route.js +1 -1
- package/.next/server/app/api/db/tables/[id]/route.js +1 -1
- package/.next/server/app/api/draft/approve/route.js +1 -1
- package/.next/server/app/api/draft/approve/route.js.nft.json +1 -1
- package/.next/server/app/api/draft/route.js +1 -1
- package/.next/server/app/api/draft/route.js.nft.json +1 -1
- package/.next/server/app/api/draft/status/route.js +1 -1
- package/.next/server/app/api/edges/[id]/route.js +1 -1
- package/.next/server/app/api/edges/route.js +1 -1
- package/.next/server/app/api/edges/route.js.nft.json +1 -1
- package/.next/server/app/api/endpoints/[id]/route.js +1 -1
- package/.next/server/app/api/entities/route.js +1 -1
- package/.next/server/app/api/ingest/route.js +1 -9
- package/.next/server/app/api/ingest/route.js.nft.json +1 -1
- package/.next/server/app/api/init/route.js +1 -9
- package/.next/server/app/api/init/route.js.nft.json +1 -1
- package/.next/server/app/api/lesson/close/route.js +1 -1
- package/.next/server/app/api/lesson/presence/route.js +1 -1
- package/.next/server/app/api/lesson/questions/route.js +1 -1
- package/.next/server/app/api/lesson/route.js +1 -1
- package/.next/server/app/api/lesson/save/route.js +1 -1
- package/.next/server/app/api/lesson/verdict/route.js +1 -1
- package/.next/server/app/api/map/describe/route.js +1 -9
- package/.next/server/app/api/map/describe/route.js.nft.json +1 -1
- package/.next/server/app/api/map/files/route.js +1 -1
- package/.next/server/app/api/map/files/route.js.nft.json +1 -1
- package/.next/server/app/api/map/finish/route.js +1 -1
- package/.next/server/app/api/map/finish/route.js.nft.json +1 -1
- package/.next/server/app/api/map/route.js +1 -1
- package/.next/server/app/api/map/route.js.nft.json +1 -1
- package/.next/server/app/api/map/start/route.js +1 -1
- package/.next/server/app/api/map/start/route.js.nft.json +1 -1
- package/.next/server/app/api/map/touch-active/route.js +1 -1
- package/.next/server/app/api/map/touch-active/route.js.nft.json +1 -1
- package/.next/server/app/api/mention-search/route.js +1 -1
- package/.next/server/app/api/nodes/[id]/position/route.js +1 -1
- package/.next/server/app/api/nodes/[id]/position/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/[id]/route.js +1 -1
- package/.next/server/app/api/nodes/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/positions/route.js +1 -1
- package/.next/server/app/api/nodes/positions/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/route.js +1 -1
- package/.next/server/app/api/nodes/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/subtasks/route.js +1 -1
- package/.next/server/app/api/nodes/subtasks/route.js.nft.json +1 -1
- package/.next/server/app/api/notes/[id]/route.js +1 -1
- package/.next/server/app/api/notes/route.js +1 -1
- package/.next/server/app/api/open/route.js +1 -1
- package/.next/server/app/api/plan/annotations/route.js +2 -2
- package/.next/server/app/api/plan/approve/route.js +1 -9
- package/.next/server/app/api/plan/approve/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/history/route.js +1 -1
- package/.next/server/app/api/plan/markdown/route.js +1 -1
- package/.next/server/app/api/plan/markdown/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/presence/route.js +1 -1
- package/.next/server/app/api/plan/route.js +1 -1
- package/.next/server/app/api/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/verdict/route.js +1 -1
- package/.next/server/app/api/plan/verdict/route.js.nft.json +1 -1
- package/.next/server/app/api/preferences/route.js +1 -1
- package/.next/server/app/api/project-meta/route.js +1 -1
- package/.next/server/app/api/reset/route.js +1 -1
- package/.next/server/app/api/scope-guard/check/route.js +4 -1
- package/.next/server/app/api/scope-guard/check/route.js.nft.json +1 -1
- package/.next/server/app/api/share/create/route.js +1 -1
- package/.next/server/app/api/share/create/route.js.nft.json +1 -1
- package/.next/server/app/api/share/route.js +1 -1
- package/.next/server/app/api/stream/route.js +2 -2
- package/.next/server/app/api/tab/nav/route.js +1 -1
- package/.next/server/app/api/tab/presence/route.js +1 -1
- package/.next/server/app/api/telemetry/route.js +1 -1
- package/.next/server/app/api/telemetry/stats/route.js +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/api/workspace/activate/route.js +1 -1
- package/.next/server/app/api/workspace/route.js +1 -1
- package/.next/server/app/apple-icon.png/route.js +1 -1
- package/.next/server/app/docs/page.js +2 -2
- package/.next/server/app/docs/page.js.nft.json +1 -1
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +24 -23
- package/.next/server/app/docs.segments/_full.segment.rsc +24 -23
- package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/docs.segments/_index.segment.rsc +12 -11
- package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
- package/.next/server/app/help/page.js +2 -2
- package/.next/server/app/help/page.js.nft.json +1 -1
- package/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/.next/server/app/help.html +1 -1
- package/.next/server/app/help.rsc +32 -31
- package/.next/server/app/help.segments/_full.segment.rsc +32 -31
- package/.next/server/app/help.segments/_head.segment.rsc +1 -1
- package/.next/server/app/help.segments/_index.segment.rsc +12 -11
- package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/help.segments/help.segment.rsc +1 -1
- package/.next/server/app/icon.svg/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +22 -21
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/index.segments/_full.segment.rsc +22 -21
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +12 -11
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/learn/page.js +3 -3
- package/.next/server/app/learn/page.js.nft.json +1 -1
- package/.next/server/app/learn/page_client-reference-manifest.js +1 -1
- package/.next/server/app/map/page.js +2 -2
- package/.next/server/app/map/page.js.nft.json +1 -1
- package/.next/server/app/map/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/plan/page.js +12 -2
- package/.next/server/app/plan/page.js.nft.json +1 -1
- package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
- package/.next/server/app/s/[token]/page.js +2 -2
- package/.next/server/app/s/[token]/page.js.nft.json +1 -1
- package/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +2 -2
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +17 -9
- package/.next/server/chunks/1130.js +1 -1
- package/.next/server/chunks/2031.js +1 -0
- package/.next/server/chunks/230.js +1 -0
- package/.next/server/chunks/2693.js +8 -0
- package/.next/server/chunks/374.js +1 -0
- package/.next/server/chunks/5295.js +1 -0
- package/.next/server/chunks/{4700.js → 5704.js} +2 -2
- package/.next/server/chunks/6469.js +10 -0
- package/.next/server/chunks/6962.js +1 -0
- package/.next/server/chunks/8227.js +1 -0
- package/.next/server/chunks/8674.js +7 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/3151-861a6caa40f70f79.js +1 -0
- package/.next/static/chunks/3908-80efc60050779adf.js +1 -0
- package/.next/static/chunks/5697-5b9719b81806b4cf.js +1 -0
- package/.next/static/chunks/654-8e68a43e4c589e9c.js +1 -0
- package/.next/static/chunks/7424-d7fa15ef452064dd.js +1 -0
- package/.next/static/chunks/app/_global-error/page-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/ask/answer/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/ask/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/ask/verdict/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/board-annotations/[id]/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/board-annotations/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/board-layout/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/bug-flags/[id]/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/bug-flags/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/changes/comment/answer/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/changes/comment/claim/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/changes/comment/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/changes/quality/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/changes/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/changes/viewed/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/code-graph/position/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/code-graph/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/context/feature/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/context/file/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/context/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/db/arrange/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/db/backfill-access/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/db/position/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/db/prune-planned/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/db/relations/[id]/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/db/tables/[id]/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/draft/approve/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/draft/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/draft/status/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/edges/[id]/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/edges/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/endpoints/[id]/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/entities/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/ingest/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/init/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/lesson/close/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/lesson/presence/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/lesson/questions/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/lesson/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/lesson/save/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/lesson/verdict/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/map/describe/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/map/files/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/map/finish/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/map/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/map/start/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/map/touch-active/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/mention-search/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/position/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/nodes/positions/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/nodes/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/nodes/subtasks/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/notes/[id]/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/notes/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/open/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/plan/annotations/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/plan/approve/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/plan/history/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/plan/markdown/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/plan/presence/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/plan/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/plan/verdict/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/preferences/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/project-meta/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/reset/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/scope-guard/check/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/share/create/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/share/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/stream/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/tab/nav/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/tab/presence/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/telemetry/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/telemetry/stats/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/version/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/workspace/activate/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/api/workspace/route-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/app/layout-f908dc26e06f4302.js +1 -0
- package/.next/static/chunks/app/learn/{page-e5bd3257170098e7.js → page-bc40746566d115e5.js} +1 -1
- package/.next/static/chunks/app/map/{page-5ab46e5ea28ecd79.js → page-233ccd830873114b.js} +1 -1
- package/.next/static/chunks/app/plan/page-8ec1e1d8ea40686a.js +11 -0
- package/.next/static/chunks/app/s/[token]/{page-8e4ffccdf7cd0309.js → page-2a3f04bc3f60ec49.js} +1 -1
- package/.next/static/chunks/app/settings/page-a751eabdd933f685.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-d54a69e7dc6b4008.js +1 -0
- package/.next/static/chunks/{webpack-de4a0d9611ec2cad.js → webpack-6c27b0ed1ac1459c.js} +1 -1
- package/.next/static/css/60048003a8c96562.css +1 -0
- package/.next/static/css/a5d17568738ef1e9.css +1 -0
- package/.next/static/yescmIM6BeSzGgwZ-Dwpq/_buildManifest.js +1 -0
- package/.next/trace +46 -43
- package/.next/trace-build +1 -1
- package/.next/types/app/api/ask/answer/route.ts +351 -0
- package/.next/types/app/api/{flags → ask}/route.ts +3 -3
- package/.next/types/app/api/ask/verdict/route.ts +351 -0
- package/.next/types/app/api/changes/comment/answer/route.ts +351 -0
- package/.next/types/app/api/changes/comment/claim/route.ts +351 -0
- package/.next/types/app/api/changes/comment/route.ts +351 -0
- package/.next/types/app/api/changes/quality/route.ts +351 -0
- package/.next/types/app/api/changes/route.ts +351 -0
- package/.next/types/app/api/changes/viewed/route.ts +351 -0
- package/.next/types/routes.d.ts +10 -2
- package/.next/types/validator.ts +81 -9
- package/bun.lock +54 -0
- package/dist/bin/answer.js +8 -0
- package/dist/bin/ask.js +5 -0
- package/dist/bin/beacon.js +5 -5
- package/dist/bin/doctor.js +36 -35
- package/dist/bin/guard.js +1 -1
- package/dist/bin/hook.js +33 -32
- package/dist/bin/mcp.js +45 -44
- package/dist/bin/plan.js +36 -35
- package/dist/bin/remove.js +6 -6
- package/dist/bin/stop-hook.js +7 -3
- package/dist/bin/uninstall.js +35 -34
- package/dist/lib/assets.js +25 -24
- package/dist/lib/codex-install.js +32 -31
- package/dist/lib/global-install.js +33 -32
- package/dist/lib/telemetry.js +1 -1
- package/dist/lib/workspaces.js +1 -1
- package/package.json +3 -1
- package/plugin/skills/beacon-plan/SKILL.md +5 -4
- package/.next/server/app/api/flags/route.js +0 -1
- package/.next/server/app/api/flags/route_client-reference-manifest.js +0 -1
- package/.next/server/chunks/3098.js +0 -1
- package/.next/server/chunks/3221.js +0 -5
- package/.next/server/chunks/4307.js +0 -1
- package/.next/server/chunks/5719.js +0 -1
- package/.next/server/chunks/7604.js +0 -1
- package/.next/static/chunks/2231-63ad38ec8fb7cb6f.js +0 -1
- package/.next/static/chunks/2416-dbbbff4e4c9abad1.js +0 -1
- package/.next/static/chunks/766-242213d211df0afd.js +0 -1
- package/.next/static/chunks/8997-78a359d0d238622e.js +0 -1
- package/.next/static/chunks/app/_global-error/page-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/board-annotations/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/board-annotations/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/board-layout/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/bug-flags/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/bug-flags/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/code-graph/position/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/code-graph/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/context/feature/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/context/file/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/context/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/db/arrange/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/db/backfill-access/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/db/position/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/db/prune-planned/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/db/relations/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/db/tables/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/draft/approve/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/draft/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/draft/status/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/edges/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/edges/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/endpoints/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/entities/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/flags/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/ingest/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/init/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/lesson/close/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/lesson/presence/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/lesson/questions/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/lesson/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/lesson/save/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/lesson/verdict/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/map/describe/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/map/files/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/map/finish/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/map/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/map/start/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/map/touch-active/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/mention-search/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/position/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/nodes/positions/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/nodes/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/nodes/subtasks/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/notes/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/notes/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/open/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/plan/annotations/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/plan/approve/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/plan/history/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/plan/markdown/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/plan/presence/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/plan/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/plan/verdict/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/preferences/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/project-meta/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/reset/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/scope-guard/check/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/share/create/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/share/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/stream/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/tab/nav/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/tab/presence/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/telemetry/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/telemetry/stats/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/version/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/workspace/activate/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/workspace/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/layout-d3b7276f116dce46.js +0 -1
- package/.next/static/chunks/app/plan/page-948f3eca400e746a.js +0 -1
- package/.next/static/chunks/app/settings/page-7e176d120b1effa9.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-93569b5eb93a61e9.js +0 -1
- package/.next/static/css/446974879473fd01.css +0 -1
- package/.next/static/lnOOQsWRymiliRmMEQ95F/_buildManifest.js +0 -1
- /package/.next/static/{lnOOQsWRymiliRmMEQ95F → yescmIM6BeSzGgwZ-Dwpq}/_ssgManifest.js +0 -0
package/dist/bin/remove.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var p5=Object.defineProperty;var c5=(Z)=>Z;function l5(Z,$){this[Z]=c5.bind(null,$)}var xZ=(Z,$)=>{for(var Q in $)p5(Z,Q,{get:$[Q],enumerable:!0,configurable:!0,set:l5.bind($,Q)})};var G4=(Z,$)=>()=>(Z&&($=Z(Z=0)),$);var U4={};xZ(U4,{provisionDb:()=>Q6});import{createClient as d5}from"@libsql/client";import{drizzle as n5}from"drizzle-orm/libsql";import{migrate as r5}from"drizzle-orm/libsql/migrator";import{readMigrationFiles as o5}from"drizzle-orm/migrator";import{dirname as fZ,join as i5}from"path";import{fileURLToPath as s5}from"url";async function DZ(Z,$){return(await Z.execute({sql:"SELECT 1 FROM sqlite_master WHERE type='table' AND name = ?",args:[$]})).rows.length>0}async function Z6(Z,$){let Q=await Z.execute(`PRAGMA table_info("${$}")`);return new Set(Q.rows.map((J)=>String(J.name)))}async function M4(Z){if(!await DZ(Z,"__drizzle_migrations"))return 0;let $=await Z.execute('SELECT count(*) AS n FROM "__drizzle_migrations"');return Number($.rows[0]?.n??0)}async function $6(Z){for(let[$,Q]of Object.entries(e5)){if(!await DZ(Z,$))continue;let J=await Z6(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 Q6(Z,$=t5){let Q=d5({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 DZ(Q,"__drizzle_migrations"),V=await DZ(Q,"Node"),Y=!1;if(V&&!J){let K=o5({migrationsFolder:$})[0];if(K)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:[K.hash,K.folderMillis]}),Y=!0}let X=await M4(Q);if(await r5(n5(Q),{migrationsFolder:$}),await M4(Q)>X)Y=!0;return await $6(Q),{migrated:Y}}finally{Q.close()}}var a5,t5,e5;var j4=G4(async()=>{a5=fZ(fZ(fZ(s5(import.meta.url)))),t5=process.env.BEACON_MIGRATIONS_DIR||i5(a5,"drizzle"),e5={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 W8,renameSync as N8,rmSync as C8,writeFileSync as L8}from"fs";import{dirname as B8}from"path";function q8(Z,$){W8(B8(Z),{recursive:!0});let Q=`${Z}.tmp`;try{L8(Q,$),N8(Q,Z)}catch(J){throw C8(Q,{force:!0}),J}}function O8(Z,$,Q=!1){q8(Z,JSON.stringify($,null,Q?2:void 0))}var F5=()=>{};import{AsyncLocalStorage as J6}from"async_hooks";import{spawnSync as V6}from"child_process";import{createHash as K6}from"crypto";import{existsSync as W4,mkdirSync as CZ,readFileSync as hZ,writeFileSync as mZ}from"fs";import{homedir as N4}from"os";import{basename as Y6,join as ZZ,parse as X6,resolve as H4}from"path";function t(){return process.env.BEACON_HOME||ZZ(N4(),".beacon")}function bZ(){return ZZ(t(),"workspaces.json")}function JZ(Z){return K6("sha256").update(Z).digest("hex").slice(0,12)}function pZ(Z=process.cwd()){let $=V6("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 C4(Z){let $=H4(Z);return $!==H4(N4())&&$!==X6($).root}function L4(){return ZZ(t(),"deleted.json")}function cZ(){try{let Z=JSON.parse(hZ(L4(),"utf8"));return Array.isArray(Z)?Z:[]}catch{return[]}}function B4(Z){CZ(t(),{recursive:!0}),mZ(L4(),JSON.stringify(Z,null,2))}function q4(Z){return cZ().includes(Z)}function O4(Z){let $=cZ();if(!$.includes(Z))B4([...$,Z])}function G6(Z){let $=cZ();if($.includes(Z))B4($.filter((Q)=>Q!==Z))}function n(Z){return ZZ(t(),Z)}function VZ(Z){return`file:${ZZ(n(Z),"db.sqlite")}`}function LZ(){try{let Z=JSON.parse(hZ(bZ(),"utf8"));return Array.isArray(Z)?Z:[]}catch{return[]}}function lZ(Z){CZ(t(),{recursive:!0}),mZ(bZ(),JSON.stringify(Z,null,2))}function FZ(){return LZ().sort((Z,$)=>$.lastOpenedAt.localeCompare(Z.lastOpenedAt))}function g(Z){return LZ().find(($)=>$.id===Z)??null}function z4(Z,$,Q=new Date().toISOString()){if(!C4(Z))throw Error(`beacon: refusing to register a non-repo path as a workspace: ${Z}`);let J=JZ(Z);if(q4(J))throw Error(`beacon: workspace ${J} (${Z}) was deleted \u2014 run \`beacon\` or /beacon-init to re-add it`);let V=LZ(),Y=V.find((j)=>j.id===J),X={id:J,path:Z,name:$||Y?.name||Y6(Z),lastOpenedAt:Q},K=[X,...V.filter((j)=>j.id!==J)];return CZ(n(J),{recursive:!0}),lZ(K),X}function Q$(Z,$){return G6(JZ(Z)),z4(Z,$)}function J$(Z,$=new Date().toISOString()){let Q=LZ(),J=Q.find((V)=>V.id===Z);if(!J)return;J.lastOpenedAt=$,lZ(Q)}function D4(Z){if(lZ(LZ().filter(($)=>$.id!==Z)),r()===Z)M6(FZ()[0]?.id??null)}function F4(){return ZZ(t(),"active")}function r(){try{return hZ(F4(),"utf8").trim()||null}catch{return null}}function M6(Z){CZ(t(),{recursive:!0}),mZ(F4(),Z??"")}function U6(){let Z=r();return Z?g(Z):null}function V$(){let Z=_Z()??r();return Z?g(Z):null}function K$(Z){return g(Z)?.path??null}function Y$(){return W4(bZ())}var _4="beacon_ws";function A4(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 X$(Z){let $=Z.headers.get("x-beacon-workspace");if($&&g($))return $;let Q=A4(Z,_4);if(Q&&g(Q))return Q;return j6()}function j6(){let Z=FZ();return Z.length===1?Z[0].id:null}var H6="x-beacon-workspace-path";async function G$(Z){let $=Z.headers.get("x-beacon-workspace");if($&&g($))return $;let Q=Z.headers.get(H6);if(Q&&C4(Q)&&!q4(JZ(Q))&&(!$||JZ(Q)===$)){let V=z4(Q);return await dZ(V.id),V.id}let J=A4(Z,_4);if(J&&g(J))return J;return null}var P4=new J6;function W6(Z,$){return Z?P4.run(Z,$):$()}function _Z(){return P4.getStore()??null}var gZ=new Set;function I4(Z){gZ.delete(ZZ(n(Z),"db.sqlite"))}async function dZ(Z){let $=n(Z),Q=ZZ($,"db.sqlite"),J=W4(Q);if(J&&gZ.has(Q))return{ok:!0,created:!1,migrated:!1};try{CZ($,{recursive:!0});let{provisionDb:V}=await j4().then(() => U4),Y=await V(VZ(Z));return gZ.add(Q),{ok:!0,created:!J,migrated:J&&Y.migrated}}catch(V){return{ok:!1,created:!1,migrated:!1,error:V instanceof Error?V.message:String(V)}}}import{existsSync as h8,readFileSync as m8}from"fs";import{resolve as f5}from"path";import{rmSync as g8}from"fs";import{drizzle as g6}from"drizzle-orm/libsql";import{createClient as h6}from"@libsql/client";var nZ={};xZ(nZ,{workspaceFlag:()=>z6,tag:()=>jZ,syncState:()=>a,projectMeta:()=>O6,planContract:()=>D6,note:()=>L6,nodeTags:()=>YZ,nodeFile:()=>BZ,node:()=>k,endpointTable:()=>i,endpoint:()=>E,edge:()=>KZ,draftTable:()=>c,draftRelation:()=>XZ,draftColumn:()=>OZ,dbTable:()=>P,dbRelation:()=>l,dbColumn:()=>e,codeFileEdge:()=>x,codeFile:()=>y,bugFlag:()=>qZ,boardAnnotation:()=>B6,appSetting:()=>q6});import{sqliteTable as v,index as S,foreignKey as N6,text as C,integer as _,real as m,uniqueIndex as o,primaryKey as C6}from"drizzle-orm/sqlite-core";import{createId as u}from"@paralleldrive/cuid2";var k=v("Node",{id:C().primaryKey().$defaultFn(()=>u()),view:C().notNull(),kind:C().default("FEATURE").notNull(),cluster:C(),layer:C(),title:C().notNull(),role:C(),plain:C(),status:C().default("PENDING").notNull(),priority:_().default(2).notNull(),progress:_().default(0).notNull(),x:m().default(0).notNull(),y:m().default(0).notNull(),sourceRef:C(),externalId:C(),source:C().default("MANUAL").notNull(),planId:C(),parentId:C(),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[S("Node_cluster_idx").on(Z.cluster),S("Node_parentId_idx").on(Z.parentId),S("Node_view_idx").on(Z.view),N6(()=>({columns:[Z.parentId],foreignColumns:[Z.id],name:"Node_parentId_Node_id_fk"})).onUpdate("cascade").onDelete("cascade")]),BZ=v("NodeFile",{id:C().primaryKey().$defaultFn(()=>u()),nodeId:C().notNull().references(()=>k.id,{onDelete:"cascade",onUpdate:"cascade"}),path:C().notNull()},(Z)=>[o("NodeFile_nodeId_path_key").on(Z.nodeId,Z.path),S("NodeFile_nodeId_idx").on(Z.nodeId)]),jZ=v("Tag",{id:C().primaryKey().$defaultFn(()=>u()),label:C().notNull(),color:C()},(Z)=>[o("Tag_label_key").on(Z.label)]),KZ=v("Edge",{id:C().primaryKey().$defaultFn(()=>u()),fromId:C().notNull().references(()=>k.id,{onDelete:"cascade",onUpdate:"cascade"}),toId:C().notNull().references(()=>k.id,{onDelete:"cascade",onUpdate:"cascade"}),kind:C().default("DEPENDS").notNull(),label:C(),sourceHandle:C(),targetHandle:C()},(Z)=>[o("Edge_fromId_toId_kind_key").on(Z.fromId,Z.toId,Z.kind),S("Edge_toId_idx").on(Z.toId),S("Edge_fromId_idx").on(Z.fromId)]),YZ=v("_NodeTags",{a:C("A").notNull().references(()=>k.id,{onDelete:"cascade",onUpdate:"cascade"}),b:C("B").notNull().references(()=>jZ.id,{onDelete:"cascade",onUpdate:"cascade"})},(Z)=>[o("_NodeTags_AB_unique").on(Z.a,Z.b),S("_NodeTags_B_index").on(Z.b)]),L6=v("Note",{id:C().primaryKey().$defaultFn(()=>u()),title:C().default("Untitled").notNull(),body:C().default("").notNull(),ord:m().default(0).notNull(),pinned:_({mode:"boolean"}).default(!1).notNull(),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[S("Note_updatedAt_idx").on(Z.updatedAt)]),B6=v("BoardAnnotation",{id:C().primaryKey().$defaultFn(()=>u()),targetKind:C().notNull(),targetId:C().notNull(),columnName:C(),body:C().default("").notNull(),x:m(),y:m(),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[S("BoardAnnotation_target_idx").on(Z.targetId)]),qZ=v("BugFlag",{id:C().primaryKey().$defaultFn(()=>u()),nodeId:C().notNull().references(()=>k.id,{onDelete:"cascade",onUpdate:"cascade"}),by:C().notNull(),note:C().notNull(),resolvedAt:_({mode:"timestamp_ms"}),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},(Z)=>[S("BugFlag_nodeId_idx").on(Z.nodeId)]),P=v("DbTable",{id:C().primaryKey().$defaultFn(()=>u()),name:C().notNull(),domain:C(),description:C(),source:C().default("MANUAL").notNull(),planId:C(),x:m().default(0).notNull(),y:m().default(0).notNull(),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[S("DbTable_domain_idx").on(Z.domain),o("DbTable_name_key").on(Z.name)]),e=v("DbColumn",{id:C().primaryKey().$defaultFn(()=>u()),tableId:C().notNull().references(()=>P.id,{onDelete:"cascade",onUpdate:"cascade"}),name:C().notNull(),type:C().notNull(),isPk:_({mode:"boolean"}).default(!1).notNull(),isFk:_({mode:"boolean"}).default(!1).notNull(),nullable:_({mode:"boolean"}).default(!0).notNull(),note:C(),ord:_().default(0).notNull()},(Z)=>[o("DbColumn_tableId_name_key").on(Z.tableId,Z.name),S("DbColumn_tableId_idx").on(Z.tableId)]),l=v("DbRelation",{id:C().primaryKey().$defaultFn(()=>u()),fromTableId:C().notNull().references(()=>P.id,{onDelete:"cascade",onUpdate:"cascade"}),toTableId:C().notNull().references(()=>P.id,{onDelete:"cascade",onUpdate:"cascade"}),fromColumn:C().notNull(),toColumn:C().notNull(),label:C()},(Z)=>[S("DbRelation_toTableId_idx").on(Z.toTableId),S("DbRelation_fromTableId_idx").on(Z.fromTableId)]),E=v("Endpoint",{id:C().primaryKey().$defaultFn(()=>u()),method:C().notNull(),path:C().notNull(),domain:C(),description:C(),source:C().default("MANUAL").notNull(),planId:C(),x:m().default(0).notNull(),y:m().default(0).notNull(),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[o("Endpoint_method_path_key").on(Z.method,Z.path),S("Endpoint_domain_idx").on(Z.domain)]),i=v("EndpointTable",{id:C().primaryKey().$defaultFn(()=>u()),endpointId:C().notNull().references(()=>E.id,{onDelete:"cascade",onUpdate:"cascade"}),tableId:C().notNull().references(()=>P.id,{onDelete:"cascade",onUpdate:"cascade"}),access:C().default("read").notNull()},(Z)=>[o("EndpointTable_endpointId_tableId_key").on(Z.endpointId,Z.tableId),S("EndpointTable_tableId_idx").on(Z.tableId)]),c=v("DraftTable",{id:C().primaryKey().$defaultFn(()=>u()),name:C().notNull(),domain:C(),description:C(),x:m().default(0).notNull(),y:m().default(0).notNull(),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},(Z)=>[o("DraftTable_name_key").on(Z.name)]),OZ=v("DraftColumn",{id:C().primaryKey().$defaultFn(()=>u()),tableId:C().notNull().references(()=>c.id,{onDelete:"cascade",onUpdate:"cascade"}),name:C().notNull(),type:C().notNull(),isPk:_({mode:"boolean"}).default(!1).notNull(),isFk:_({mode:"boolean"}).default(!1).notNull(),nullable:_({mode:"boolean"}).default(!0).notNull(),note:C(),ord:_().default(0).notNull()},(Z)=>[S("DraftColumn_tableId_idx").on(Z.tableId)]),XZ=v("DraftRelation",{id:C().primaryKey().$defaultFn(()=>u()),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)=>[S("DraftRelation_toTableId_idx").on(Z.toTableId),S("DraftRelation_fromTableId_idx").on(Z.fromTableId)]),y=v("CodeFile",{path:C().primaryKey(),root:C(),lang:C(),x:m().default(0).notNull(),y:m().default(0).notNull(),mtimeMs:m(),size:_(),inDegree:_().default(0).notNull(),outDegree:_().default(0).notNull(),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),x=v("CodeFileEdge",{fromPath:C().notNull().references(()=>y.path,{onDelete:"cascade",onUpdate:"cascade"}),toPath:C().notNull().references(()=>y.path,{onDelete:"cascade",onUpdate:"cascade"}),circular:_({mode:"boolean"}).default(!1).notNull()},(Z)=>[S("CodeFileEdge_circular_idx").on(Z.circular),S("CodeFileEdge_toPath_idx").on(Z.toPath),S("CodeFileEdge_fromPath_idx").on(Z.fromPath),C6({columns:[Z.fromPath,Z.toPath],name:"CodeFileEdge_fromPath_toPath_pk"})]),a=v("SyncState",{id:C().primaryKey().default("singleton"),version:_().default(0).notNull(),codeGraphSyncedAt:_({mode:"timestamp_ms"}),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),q6=v("AppSetting",{id:C().primaryKey().default("singleton"),editor:C().default("auto").notNull(),currentFeatureId:C(),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),O6=v("ProjectMeta",{id:C().primaryKey().default("singleton"),overview:C(),conventions:C().default("[]").notNull(),hasFrontend:_({mode:"boolean"}),classificationRoots:C().default("[]").notNull(),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),z6=v("WorkspaceFlag",{id:C().primaryKey().$defaultFn(()=>u()),key:C().notNull(),enabled:_({mode:"boolean"}).default(!1).notNull(),config:C(),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[o("WorkspaceFlag_key_key").on(Z.key)]),D6=v("PlanContract",{id:C().primaryKey().$defaultFn(()=>u()),planId:C().notNull(),declaredFiles:C().default("[]").notNull(),authorizedExtras:C().default("[]").notNull(),active:_({mode:"boolean"}).default(!1).notNull(),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[o("PlanContract_planId_key").on(Z.planId),S("PlanContract_active_idx").on(Z.active)]);var rZ={};xZ(rZ,{tagRelations:()=>P6,nodeTagsRelations:()=>I6,nodeRelations:()=>F6,nodeFileRelations:()=>_6,endpointTableRelations:()=>w6,endpointRelations:()=>k6,edgeRelations:()=>R6,draftTableRelations:()=>T6,draftRelationRelations:()=>u6,draftColumnRelations:()=>y6,dbTableRelations:()=>E6,dbRelationRelations:()=>v6,dbColumnRelations:()=>S6,codeFileRelations:()=>x6,codeFileEdgeRelations:()=>f6,bugFlagRelations:()=>A6});import{relations as h}from"drizzle-orm";var F6=h(k,({one:Z,many:$})=>({files:$(BZ),bugFlags:$(qZ),nodeTags:$(YZ),edgesOut:$(KZ,{relationName:"EdgeFrom"}),edgesIn:$(KZ,{relationName:"EdgeTo"}),parent:Z(k,{fields:[k.parentId],references:[k.id],relationName:"NodeTree"}),children:$(k,{relationName:"NodeTree"})})),_6=h(BZ,({one:Z})=>({node:Z(k,{fields:[BZ.nodeId],references:[k.id]})})),A6=h(qZ,({one:Z})=>({node:Z(k,{fields:[qZ.nodeId],references:[k.id]})})),P6=h(jZ,({many:Z})=>({nodeTags:Z(YZ)})),I6=h(YZ,({one:Z})=>({node:Z(k,{fields:[YZ.a],references:[k.id]}),tag:Z(jZ,{fields:[YZ.b],references:[jZ.id]})})),R6=h(KZ,({one:Z})=>({from:Z(k,{fields:[KZ.fromId],references:[k.id],relationName:"EdgeFrom"}),to:Z(k,{fields:[KZ.toId],references:[k.id],relationName:"EdgeTo"})})),E6=h(P,({many:Z})=>({columns:Z(e),fksOut:Z(l,{relationName:"FkFrom"}),fksIn:Z(l,{relationName:"FkTo"}),usages:Z(i)})),S6=h(e,({one:Z})=>({table:Z(P,{fields:[e.tableId],references:[P.id]})})),v6=h(l,({one:Z})=>({fromTable:Z(P,{fields:[l.fromTableId],references:[P.id],relationName:"FkFrom"}),toTable:Z(P,{fields:[l.toTableId],references:[P.id],relationName:"FkTo"})})),k6=h(E,({many:Z})=>({tables:Z(i)})),w6=h(i,({one:Z})=>({endpoint:Z(E,{fields:[i.endpointId],references:[E.id]}),table:Z(P,{fields:[i.tableId],references:[P.id]})})),T6=h(c,({many:Z})=>({columns:Z(OZ),fksOut:Z(XZ,{relationName:"DraftFkFrom"}),fksIn:Z(XZ,{relationName:"DraftFkTo"})})),y6=h(OZ,({one:Z})=>({table:Z(c,{fields:[OZ.tableId],references:[c.id]})})),u6=h(XZ,({one:Z})=>({fromTable:Z(c,{fields:[XZ.fromTableId],references:[c.id],relationName:"DraftFkFrom"}),toTable:Z(c,{fields:[XZ.toTableId],references:[c.id],relationName:"DraftFkTo"})})),x6=h(y,({many:Z})=>({edgesOut:Z(x,{relationName:"CFEFrom"}),edgesIn:Z(x,{relationName:"CFETo"})})),f6=h(x,({one:Z})=>({fromFile:Z(y,{fields:[x.fromPath],references:[y.path],relationName:"CFEFrom"}),toFile:Z(y,{fields:[x.toPath],references:[y.path],relationName:"CFETo"})}));var m6={...nZ,...rZ};function b6(){let Z=process.env.DATABASE_URL;if(Z&&/^(file:|libsql:|wss?:|https?:|:memory:)/i.test(Z))return Z;return"file:./dev.db"}var p6=b6();function R4(Z){let $=h6({url:Z});return $.execute("PRAGMA foreign_keys = ON;"),$.execute("PRAGMA busy_timeout = 5000;"),g6($,{schema:m6})}var iZ=globalThis,oZ=iZ.dzDefault??R4(p6);iZ.dzDefault=oZ;var AZ=iZ.dzByUrl??=new Map;function sZ(Z){let $=AZ.get(Z);if(!$)$=R4(Z),AZ.set(Z,$);return $}function E4(Z){let $=AZ.get(Z);AZ.delete(Z);try{$?.$client?.close?.()}catch{}}function c6(){if(process.env.BEACON_REPO)return oZ;let Z=_Z()??r();if(!Z)return oZ;return sZ(VZ(Z))}var b=new Proxy({},{get(Z,$){let Q=c6(),J=Q[$];return typeof J==="function"?J.bind(Q):J}});import{existsSync as u8}from"fs";import{existsSync as w5,readFileSync as S8,watch as v8}from"fs";import{readFile as k5}from"fs/promises";import{join as zZ,relative as k8,resolve as w8}from"path";import{existsSync as n4,readFileSync as r4}from"fs";import{readdir as z7,readFile as D7,stat as o4}from"fs/promises";import{extname as i4,join as EZ,relative as WZ,resolve as HZ}from"path";import{extname as b4}from"path";import{dirname as l6,resolve as d6}from"path";var aZ=[".ts",".tsx",".js",".jsx",".mjs",".cjs"],n6=[/(?:^|[\n;])\s*(?:import|export)[^'"`\n]{0,4000}?from\s*['"]([^'"`]+)['"]/g,/(?:^|[\n;])\s*import\s*['"]([^'"`]+)['"]/g,/\brequire\(\s*['"]([^'"`]+)['"]\s*\)/g,/\bimport\(\s*['"]([^'"`]+)['"]\s*\)/g];function r6(Z){return Z.split(/[\\/]/).join("/")}function S4(Z,$){if($.has(Z))return Z;for(let Q of aZ){let J=`${Z}${Q}`;if($.has(J))return J}for(let Q of aZ){let J=`${Z}/index${Q}`;if($.has(J))return J}return null}function o6(Z){let $=new Set;for(let Q of n6)for(let J of Z.matchAll(Q))$.add(J[1]);return $}function i6(Z,$,Q,J){if(Z.startsWith(".")){let V=d6("/",l6($),Z),Y=r6(V).replace(/^\//,"");return S4(Y,Q)}for(let V of J)if(Z.startsWith(V.from)){let Y=Z.slice(V.from.length),X=V.to?`${V.to}/${Y}`:Y,K=S4(X,Q);if(K)return K}return null}var v4={id:"ts",extensions:aZ,specifiers:o6,resolve(Z,$,Q){let J=i6(Z,$,Q.fileSet,Q.tsAliases??[]);return J?[J]:[]}};import{dirname as PZ,join as s6,normalize as a6}from"path";var t6=[".py",".pyi"],k4=[/(?:^|[\n;])\s*from\s+(\.*[\w.]*)\s+import\b/g,/(?:^|[\n;])\s*import\s+([\w.]+(?:\s*,\s*[\w.]+)*)/g];function w4(Z,$){for(let Q of[`${Z}.py`,`${Z}/__init__.py`,`${Z}.pyi`])if($.has(Q))return[Q];return[]}function e6(Z){let $=new Set;for(let Q of Z.matchAll(k4[0])){let J=Q[1].trim();if(J)$.add(J)}for(let Q of Z.matchAll(k4[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 T4={id:"python",extensions:t6,specifiers:e6,resolve(Z,$,Q){if(Z.startsWith(".")){let X=Z.length-Z.replace(/^\.+/,"").length,K=Z.slice(X),j=PZ($);for(let U=1;U<X;U++)j=PZ(j);let W=K?s6(j,K.replace(/\./g,"/")):j;return w4(a6(W).replace(/\\/g,"/"),Q.fileSet)}let J=Z.replace(/\./g,"/"),V=[],Y=PZ($);while(Y&&Y!=="."&&Y!=="/")V.push(Y),Y=PZ(Y);V.push("");for(let X of V){let K=w4(X?`${X}/${J}`:J,Q.fileSet);if(K.length)return K}return[]}};import{dirname as Z7}from"path";var $7=[".go"],Q7=/(?:^|[\n;])\s*import\s+(?:[\w.]+\s+)?"([^"]+)"/g,J7=/(?:^|[\n;])\s*import\s*\(([\s\S]*?)\)/g,V7=/"([^"]+)"/g;function K7(Z){let $=new Set;for(let Q of Z.matchAll(Q7))$.add(Q[1]);for(let Q of Z.matchAll(J7))for(let J of Q[1].matchAll(V7))$.add(J[1]);return $}var y4={id:"go",extensions:$7,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 Y=[];for(let X of Q.fileSet){if(!X.endsWith(".go"))continue;let K=Z7(X);if(V===""&&K==="."||K===V)Y.push(X)}return Y.sort()},specifiers:K7};import{basename as u4,dirname as tZ,join as x4,normalize as f4}from"path";var Y7=[".rs"],X7=/(?:^|[\n;])\s*(?:pub\s+)?mod\s+(\w+)\s*;/g,G7=/(?:^|[\n;])\s*(?:pub\s+)?use\s+([\w:]+)/g;function M7(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 eZ(Z,$){for(let Q of[`${Z}.rs`,`${Z}/mod.rs`])if($.has(Q))return[Q];return[]}var U7=new Set(["mod.rs","lib.rs","main.rs"]);function j7(Z){let $=new Set;for(let Q of Z.matchAll(X7))$.add(`./${Q[1]}`);for(let Q of Z.matchAll(G7)){let J=M7(Q[1]);if(J)$.add(J)}return $}var g4={id:"rust",extensions:Y7,specifiers:j7,resolve(Z,$,Q){let J=Q.fileSet;if(Z.startsWith("./")||Z.startsWith("../")){let V=Z.replace(/^\.\//,""),Y=f4(x4(tZ($),Z)).replace(/\\/g,"/"),X=eZ(Y,J);if(X.length)return X;if(Z.startsWith("./")&&!U7.has(u4($))){let K=x4(tZ($),u4($,".rs"),V);if(X=eZ(f4(K).replace(/\\/g,"/"),J),X.length)return X}return[]}if(Z.startsWith("crate/")){let V=$.split("/"),Y=V.lastIndexOf("src"),X=Y>=0?V.slice(0,Y+1).join("/"):tZ($),K=Z.slice(6).split("/");for(let j of[K.join("/"),K.slice(0,-1).join("/")]){if(!j)continue;let W=eZ(`${X}/${j}`,J);if(W.length)return W}return[]}return[]}};import{dirname as H7,extname as W7,join as N7,normalize as C7}from"path";var h4=[".swift",".java",".rb",".kt",".kts",".cs",".php",".scala",".c",".h",".cpp",".hpp",".cc",".hh",".m",".mm",".ex",".exs",".lua",".dart",".vue",".svelte"],L7=[/\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 B7(Z){let $=new Set;for(let Q of L7)for(let J of Z.matchAll(Q)){let V=J[1].trim();if(V)$.add(V)}return $}var m4={id:"fallback",extensions:h4,specifiers:B7,resolve(Z,$,Q){let V=[W7($).toLowerCase(),...h4].filter((j,W,U)=>j&&U.indexOf(j)===W),Y=Z.includes("/")||Z.includes("\\"),X=Z.startsWith(".")||Y?Z.replace(/\\/g,"/"):Z.replace(/[.:]+/g,"/"),K=[C7(N7(H7($),X)).replace(/\\/g,"/"),X.replace(/^\.\//,"")];for(let j of K){if(Q.fileSet.has(j))return[j];for(let W of V){let U=j.endsWith(W)?j:`${j}${W}`;if(Q.fileSet.has(U))return[U];if(Q.fileSet.has(`${j}/index${W}`))return[`${j}/index${W}`]}}return[]}};var q7=[v4,T4,y4,g4,m4],IZ=new Map;for(let Z of q7)for(let $ of Z.extensions)IZ.set($,Z);var O7={".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 Z4(Z){return IZ.get(b4(Z).toLowerCase())??null}function p4(Z){let $=b4(Z).toLowerCase();if(!IZ.has($))return null;return O7[$]??$.slice(1)}function $4(){return new Set(IZ.keys())}var s4=new Set(["node_modules",".git",".next","dist","build","__pycache__","target",".venv","venv","env",".turbo","coverage",".beacon",".playwright-mcp","generated","migrations","alembic","migrate"]);function F7(Z=5){let $=performance.now();return async()=>{if(performance.now()-$>Z)await new Promise((Q)=>setImmediate(Q)),$=performance.now()}}var _7=()=>Promise.resolve();async function a4(Z,$,Q,J,V){let Y;try{Y=await z7($,{withFileTypes:!0})}catch{return}for(let X of Y){if(X.name.startsWith("."))continue;if(s4.has(X.name))continue;let K=EZ($,X.name);if(X.isDirectory()){await a4(Z,K,Q,J,V);continue}if(!X.isFile())continue;if(X.name.endsWith(".d.ts"))continue;if(!Q.has(i4(X.name).toLowerCase()))continue;J.push(WZ(Z,K))}await V()}async function A7(Z,$=_7){let Q=[];return await a4(Z,Z,$4(),Q,$),Q.map((J)=>J.split(/[\\/]/).join("/")).sort()}function P7(Z){try{return JSON.parse(Z)}catch{}let $=Z.replace(/\/\*[^"]*?\*\//g,"").replace(/(^|[^:"])\/\/.*$/gm,"$1").replace(/,\s*([}\]])/g,"$1");return JSON.parse($)}function c4(Z){return Z.replace(/^\.\/?/,"").replace(/\/$/,"")}function t4(Z){let $=EZ(Z,"tsconfig.json");if(!n4($))return[];let Q;try{Q=P7(r4($,"utf8"))}catch{return[]}let J=Q.compilerOptions?.paths??{},V=c4(Q.compilerOptions?.baseUrl??"."),Y=[];for(let[X,K]of Object.entries(J)){if(!X.endsWith("/*")||!K.length)continue;let j=K[0];if(!j.endsWith("/*"))continue;let W=X.slice(0,-1),U=c4(j.slice(0,-1)),N=[V,U].filter(Boolean).join("/");Y.push({from:W,to:N})}return Y}function RZ(Z){let $=EZ(Z,"go.mod");if(!n4($))return null;try{let Q=/^\s*module\s+(\S+)/m.exec(r4($,"utf8"));return Q?Q[1]:null}catch{return null}}function p(Z){return Z.split(/[\\/]/).join("/")}function e4(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 I7(Z,$,Q){let J=(Array.isArray(Z)?Z:[Z]).map((W)=>p(HZ(W))),V=p($?HZ($):J.length===1?J[0]:e4(J)),Y=new Map,X=[];for(let W of J){let U=p(WZ(V,W));for(let N of t4(W))X.push({from:N.from,to:[U,N.to].filter(Boolean).join("/")});for(let N of await A7(W,Q)){let L=p(EZ(W,N)),q=p(WZ(V,L));if(Y.has(q))continue;try{let H=await o4(L);Y.set(q,{path:q,abs:L,root:U||null,mtimeMs:H.mtimeMs,size:H.size})}catch{}await Q()}}let K=J.map(RZ).find(Boolean)??RZ(V);return{metas:[...Y.values()].sort((W,U)=>W.path.localeCompare(U.path)),ctx:{fileSet:new Set(Y.keys()),tsAliases:X,goModulePath:K}}}var l4=50000;function R7(Z){let $=0;for(let Q=0;Q<Z.length;Q++)if(Z.charCodeAt(Q)===10){if(Q-$>l4)return!0;$=Q+1}return Z.length-$>l4}async function d4(Z){let $=Z4(Z.path);if(!$||Z.size>200000)return new Set;try{let Q=await D7(Z.abs,"utf8");if(R7(Q))return new Set;return $.specifiers(Q)}catch{return new Set}}function Z5(Z,$){let Q=(Array.isArray(Z)?Z:[Z]).map((H)=>p(HZ(H))),J=p($?HZ($):Q.length===1?Q[0]:e4(Q)),V=new Map,Y=new Map,X=[],K=null;function j(){X=[];for(let H of Q){let G=p(WZ(J,H));for(let B of t4(H))X.push({from:B.from,to:[G,B.to].filter(Boolean).join("/")})}K=Q.map(RZ).find(Boolean)??RZ(J)}function W(H){let G=H.split("/");for(let z=0;z<G.length;z++){let O=G[z];if(!O||O.startsWith("."))return!0;if(z<G.length-1&&s4.has(O))return!0}let B=G[G.length-1];if(B.endsWith(".d.ts"))return!0;return!$4().has(i4(B).toLowerCase())}function U(H){let G=p(HZ(H));for(let B of Q)if(G===B||G.startsWith(`${B}/`)){let z=G.slice(B.length).replace(/^\/+/,"");if(W(z))return null;return{path:p(WZ(J,G)),root:p(WZ(J,B))||null}}return null}function N(){let H={fileSet:new Set(V.keys()),tsAliases:X,goModulePath:K},G=[...V.values()].sort((O,M)=>O.path.localeCompare(M.path)),B=[];for(let O of G){let M=Z4(O.path);if(!M)continue;let F=Y.get(O.path)??new Set,D=new Set;for(let R of F)for(let w of M.resolve(R,O.path,H)){if(!w||w===O.path||D.has(w))continue;D.add(w),B.push({from:O.path,to:w})}}return{files:G.map((O)=>({path:O.path,lang:p4(O.path),root:O.root,mtimeMs:O.mtimeMs,size:O.size})),edges:B}}async function L(){let H=F7(),{metas:G,ctx:B}=await I7(Z,$,H);V.clear(),Y.clear();for(let z of G)await H(),V.set(z.path,z),Y.set(z.path,await d4(z));return X=B.tsAliases??[],K=B.goModulePath??null,N()}async function q(H){let G=p(HZ(H));if(!Q.some((D)=>G===D||G.startsWith(`${D}/`)))return!1;let B=G.split("/").pop()??"";if(B==="tsconfig.json"||B==="go.mod"){let D=G.slice(0,G.length-B.length-1);if(Q.includes(D))return j(),!0;return!1}let z=U(H);if(!z)return!1;let O;try{O=await o4(G)}catch{let D=V.delete(z.path);return Y.delete(z.path),D}let M=V.get(z.path);if(M&&M.mtimeMs===O.mtimeMs&&M.size===O.size)return!1;let F={path:z.path,abs:G,root:z.root,mtimeMs:O.mtimeMs,size:O.size};return V.set(z.path,F),Y.set(z.path,await d4(F)),!0}return{seed:L,applyChange:q,snapshot:N}}function $5(Z){let $=Object.keys(Z.tableVars),Q=new Map;if(!$.length){for(let X of Z.routeFiles)Q.set(X,[]);return Q}let J=new Map;for(let X of Z.edges){let K=J.get(X.from)??[];K.push(X.to),J.set(X.from,K)}let V=new Map($.map((X)=>[X,new RegExp(`(?:query\\.${X}\\b|\\.from\\(\\s*${X}\\b)`)])),Y=new Map($.map((X)=>[X,new RegExp(`(?:insert|update|delete)\\(\\s*${X}\\b`)]));for(let X of Z.routeFiles){let K=new Set([X]),j=[X];for(let L=0;L<2&&K.size<25;L++){let q=[];for(let H of j)for(let G of J.get(H)??[]){if(K.has(G)||K.size>=25)continue;K.add(G),q.push(G)}j=q}let W=new Set,U=new Set;for(let L of K){let q=Z.content(L);if(!q)continue;for(let H of $){if(!W.has(H)&&V.get(H).test(q))W.add(H);if(!U.has(H)&&Y.get(H).test(q))U.add(H)}}let N=[];for(let L of $){let q=W.has(L),H=U.has(L);if(!q&&!H)continue;N.push({table:Z.tableVars[L],access:q&&H?"read-write":H?"write":"read"})}Q.set(X,N)}return Q}function J5(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 Y=Q[2]??"",X=Y.match(/\d+/)?.[0];switch(Q[1]){case"GUID":case"Uuid":case"UUID":return"uuid";case"String":return X?`varchar(${X})`:"varchar";case"Text":return"text";case"DateTime":return/timezone\s*=\s*True/.test(Y)?"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 X?`vector(${X})`:"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 SZ(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 E7(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 S7(Z,$,Q){let J=Q.match(/__tablename__\s*=\s*["']([^"']+)["']/)?.[1],V=[],Y=[],X=[],K=/(\w+)\s*:\s*Mapped\s*\[/g,j;while(j=K.exec(Q)){let N=j.index+j[0].length-1,L=E7(Q,N);if(L===null)continue;let q=N+L.length+2,H=Q.slice(q).match(/^\s*=\s*(\w+)\s*\(/);if(!H||H[1]!=="mapped_column")continue;X.push({colName:j[1],pyType:L,argsAt:q+H[0].length-1})}let W=/(\w+)\s*=\s*(mapped_column|Column)\s*\(/g;while(j=W.exec(Q))X.push({colName:j[1],pyType:"",argsAt:j.index+j[0].length-1});X.sort((N,L)=>N.argsAt-L.argsAt);let U=new Set;for(let N of X){if(U.has(N.colName)||N.colName==="__tablename__")continue;U.add(N.colName);let L=SZ(Q,N.argsAt),q=/primary_key\s*=\s*True/.test(L)||void 0,H=/nullable\s*=\s*False/.test(L)?!1:!0,G=L.match(/ForeignKey\(\s*["']([^"']+?)\.([^"'.]+)["']/);if(V.push({name:N.colName,type:J5(L,N.pyType),isPk:q,isFk:G?!0:void 0,nullable:H}),G)Y.push({column:N.colName,toTable:G[1],toColumn:G[2]})}return{name:Z,bases:$,tableName:J,columns:V,fks:Y}}function v7(Z){let $=[],Q=[],J=/\bTable\s*(\()\s*["']([^"']+)["']\s*,/g,V;while(V=J.exec(Z)){let Y=V[2],X=SZ(Z,V.index+V[0].indexOf("("));if(!/\bmetadata\b/.test(X)||!/\bColumn\s*\(/.test(X))continue;let K=[],j=/\bColumn\s*\(/g,W;while(W=j.exec(X)){let U=SZ(X,W.index+W[0].length-1),N=U.match(/^\s*["'](\w+)["']\s*,/)?.[1];if(!N)continue;let L=/primary_key\s*=\s*True/.test(U)||void 0,q=/nullable\s*=\s*False/.test(U)?!1:!0,H=U.match(/ForeignKey\(\s*["']([^"']+?)\.([^"'.]+)["']/);if(K.push({name:N,type:J5(U,""),isPk:L,isFk:H?!0:void 0,nullable:q}),H)Q.push({fromTable:Y,fromColumn:N,toTable:H[1],toColumn:H[2]})}if(K.length)$.push({name:Y,columns:K})}return{tables:$,relations:Q}}function k7(Z){let $=new Map,Q={tables:[],relations:[]};for(let K of Z){if(!K.path.endsWith(".py"))continue;if(!/mapped_column\s*\(|__tablename__|\bTable\s*\(\s*["']/.test(K.content))continue;let j=v7(K.content);Q.tables.push(...j.tables),Q.relations.push(...j.relations);let W=/^class\s+(\w+)\s*\(([^)]*)\)\s*:/gm,U,N=[];while(U=W.exec(K.content))N.push({name:U[1],bases:U[2].split(",").map((L)=>L.trim().split(/[.[]/)[0]).filter(Boolean),at:U.index});for(let L=0;L<N.length;L++){let q=K.content.slice(N[L].at,N[L+1]?.at??K.content.length),H=S7(N[L].name,N[L].bases,q);$.set(H.name,H)}}if(![...$.values()].some((K)=>K.tableName)&&!Q.tables.length)return{tables:[],relations:[]};let J=(K,j=new Set)=>{if(j.has(K.name))return[];j.add(K.name);let W=[];for(let U of K.bases){let N=$.get(U);if(N&&!N.tableName)W.push(...J(N,j))}return W.push(...K.columns),W},V=[],Y=[];for(let K of $.values()){if(!K.tableName)continue;let j=J(K),W=new Map;for(let H of j)if(!W.has(H.name))W.set(H.name,H);let U=[...W.values()],N=(H)=>U.splice(U.findIndex((G)=>G.name===H),1)[0],L=U.some((H)=>H.name==="id")?N("id"):null,q=["created_at","updated_at","deleted_at"].filter((H)=>U.some((G)=>G.name===H)).map((H)=>N(H));V.push({name:K.tableName,columns:[...L?[L]:[],...U,...q]});for(let H of K.fks)Y.push({fromTable:K.tableName,fromColumn:H.column,toTable:H.toTable,toColumn:H.toColumn})}let X=new Set(V.map((K)=>K.name));for(let K of Q.tables)if(!X.has(K.name))V.push(K);return Y.push(...Q.relations.filter((K)=>!X.has(K.fromTable))),{tables:V,relations:Y}}function w7(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 T7(Z){let $=[],Q=[];for(let J of Z){if(!J.path.endsWith(".prisma"))continue;let V=/model\s+(\w+)\s*\{([\s\S]*?)\}/g,Y;while(Y=V.exec(J.content)){let X=Y[1],K=Y[2].match(/@@map\(\s*["']([^"']+)["']\s*\)/)?.[1]??X,j=[];for(let W of Y[2].split(`
|
|
4
|
-
`)){let U=W.trim().match(/^(\w+)\s+(\w+(?:\[\])?\??)\s*(.*)$/);if(!U||/^@@/.test(W.trim()))continue;let[,N,L,q]=U,H=/^(String|Int|BigInt|Float|Decimal|Boolean|DateTime|Json|Bytes)(\[\])?\??$/.test(L),G=q.match(/@relation\([^)]*fields:\s*\[(\w+)\][^)]*references:\s*\[(\w+)\]/);if(G)Q.push({fromTable:K,fromColumn:G[1],toTable:L.replace(/[?[\]]/g,""),toColumn:G[2]});if(!H)continue;j.push({name:N,type:w7(L),isPk:/@id\b/.test(q)||void 0,isFk:/@relation\b/.test(q)||void 0,nullable:L.endsWith("?")})}if(j.length)$.push({name:K,columns:j})}}return{tables:$,relations:Q}}function y7(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 u7(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 x7(Z){let $=[],Q=/(\w+)\s*:\s*(text|integer|real|blob|numeric|varchar|boolean|timestamp|serial|uuid|json|jsonb)\s*\(/g;for(let Y of Z){if(!/\.(ts|tsx|mts|cts)$/.test(Y.path))continue;if(!/\b(?:sqliteTable|pgTable|mysqlTable)\s*\(/.test(Y.content))continue;let X=/(?:export\s+)?const\s+(\w+)\s*=\s*(?:sqliteTable|pgTable|mysqlTable)\s*\(\s*["']([^"']+)["']\s*,/g,K;while(K=X.exec(Y.content)){let j=Y.content.indexOf("{",K.index+K[0].length);if(j<0)continue;let W=u7(Y.content,j),U={varName:K[1],tableName:K[2],columns:[],colByProp:new Map,fks:[]},N=[];Q.lastIndex=0;for(let L of W.matchAll(Q))N.push({prop:L[1],builder:L[2],at:L.index,argOpen:L.index+L[0].length-1});N.forEach((L,q)=>{let H=W.slice(L.at,N[q+1]?.at??W.length),G=
|
|
5
|
-
`)){let V=J.trim();if(!V||V.startsWith("//")||V.startsWith("*")||V.startsWith("/*"))continue;let{annots:Y,rest:X}=m7(V);if(Q.push(...Y),!X)continue;let K=X,j="";while(K!==j)j=K,K=K.replace(/^(?:public|private|protected|static|final|transient|volatile)\s+/,"");let W=!K.includes("(")?K.match(/^([\w.$]+(?:<[^>]*>)?(?:\s*\[\s*\])?)\s+(\w+)\s*[;=]/):null;if(W)$.push({annots:Q,type:W[1],name:W[2]});Q=[]}return $}function p7(Z){let $=[],Q=/\bclass\s+(\w+)/g,J;while(J=Q.exec(Z))$.push({name:J[1],at:J.index});let V=[];for(let Y=0;Y<$.length;Y++){let X=Z.slice(Y===0?0:$[Y-1].at,$[Y].at);if(!/@Entity\b/.test(X))continue;let K=X.match(/@Table\s*\([^)]*\)/)?.[0]??"",j=vZ(K,"name")??$[Y].name,W=Z.slice($[Y].at,$[Y+1]?.at??Z.length),U=b7(W),N=U.find((q)=>q.annots.some((H)=>/@Id\b/.test(H))),L=N?vZ(N.annots.find((q)=>/@Column\b/.test(q))??"","name")??N.name:"id";V.push({className:$[Y].name,tableName:j,idColumn:L,fields:U})}return V}function c7(Z){let $=Z.filter((K)=>K.path.endsWith(".java")&&/@Entity\b/.test(K.content));if(!$.length)return{tables:[],relations:[]};let Q=$.flatMap((K)=>p7(K.content));if(!Q.length)return{tables:[],relations:[]};let J=new Map(Q.map((K)=>[K.className,K.tableName])),V=new Map(Q.map((K)=>[K.className,K.idColumn])),Y=[],X=[];for(let K of Q){let j=[];for(let W of K.fields){let U=W.annots.join(" ");if(/@Transient\b/.test(U))continue;let N=V5(W.type);if(/@ManyToOne\b|@OneToOne\b|@OneToMany\b|@ManyToMany\b/.test(U)||J.has(N)){let O=W.annots.find((F)=>/@JoinColumn\b/.test(F)),M=O?vZ(O,"name"):void 0;if(M){j.push({name:M,type:"bigint",isFk:!0,nullable:Q5(U,"nullable")??!0});let F=J.get(N);if(F)X.push({fromTable:K.tableName,fromColumn:M,toTable:F,toColumn:V.get(N)??"id"})}continue}if(g7.test(N))continue;let H=W.annots.find((O)=>/@Column\b/.test(O))??"",G=vZ(H,"name")??W.name,B=W.annots.some((O)=>/@Id\b/.test(O)),z=Q5(H,"nullable");j.push({name:G,type:h7(W.type),...B?{isPk:!0}:{},...z!==void 0?{nullable:z}:{}})}Y.push({name:K.tableName,columns:j})}return{tables:Y,relations:X}}function K5(Z){let $=x7(Z);if($.tables.length)return $;let Q=T7(Z);if(Q.tables.length)return Q;let J=k7(Z);if(J.tables.length)return J;return c7(Z)}var l7=["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 Y5(Z){let $=[];for(let Q of Z){let J=d7(Q.path);if(!J)continue;for(let V of l7)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 n7=/(^|\/)app\/.*\/route\.(ts|tsx|js|jsx|mjs)$/,r7=/\.(ts|py)$/,o7=/(schema|model)/i,i7=/(\.(test|spec)\.[jt]sx?$)|(^|\/)(tests?|__tests__|__mocks__)\/|(^|\/)test_[^/]+\.py$|_test\.py$/;function Q4(Z){if(i7.test(Z))return!1;if(Z.endsWith(".prisma"))return!0;if(n7.test(Z))return!0;if(Z.endsWith(".java"))return!0;return r7.test(Z)&&o7.test(Z)}function X5(Z,$=300){return Z.filter(Q4).slice(0,$)}import{z as d}from"zod";import{and as I5,eq as NZ,inArray as P8,notInArray as I8}from"drizzle-orm";import{z as A}from"zod";import{and as z8,eq as yZ,inArray as K4,notInArray as D8,or as F8,sql as _8}from"drizzle-orm";var G5=300,M5=50;function U5(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+G5&&J.x+G5>V.x&&J.y<V.y+M5&&J.y+M5>V.y)return!0}return!1}import{eq as s7}from"drizzle-orm";var j5=(Z)=>Z.replace(/\{[^}]*\}/g,"{}");function a7(Z,$){if(Z.method.toUpperCase()!==$.method.toUpperCase())return!1;let Q=j5(Z.path),J=j5($.path);return J===Q||J.endsWith(Q)}async function H5(Z=b){let[$,Q]=await Promise.all([Z.query.endpoint.findMany({where:(V,{ne:Y})=>Y(V.source,"INTROSPECTION")}),Z.query.endpoint.findMany({where:(V,{eq:Y})=>Y(V.source,"INTROSPECTION")})]),J={collapsed:0,mappings:[]};for(let V of $){let Y=Q.find((X)=>a7(V,X));if(!Y)continue;await Z.delete(E).where(s7(E.id,V.id)),J.collapsed++,J.mappings.push({planned:`${V.method} ${V.path}`,code:`${Y.method} ${Y.path}`})}return J}import{and as W5,inArray as t7,isNull as N5,ne as C5,or as e7}from"drizzle-orm";var Z8=new Set(["DONE","CANCELLED","DEPRIORITIZED"]);async function $8(Z){let $=await Z.query.node.findMany({where:(J,{and:V,eq:Y,isNotNull:X})=>V(Y(J.view,"ROADMAP"),X(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)&&Z8.has(J.status))}return[...Q.entries()].filter(([,J])=>J).map(([J])=>J)}async function L5(Z=b){let $=await $8(Z),Q=(Y)=>$.length?e7(N5(Y.planId),t7(Y.planId,$)):N5(Y.planId),J=await Z.delete(P).where(W5(C5(P.source,"INTROSPECTION"),Q(P))).returning({id:P.id}),V=await Z.delete(E).where(W5(C5(E.source,"INTROSPECTION"),Q(E))).returning({id:E.id});return{tables:J.length,endpoints:V.length}}var Q8=(Z)=>Z&&Number.isFinite(Z)&&Z>0?Math.min(3.2,Math.max(0.7,Z)):1.8;function J8(Z,$){let Q=Q8($.viewportAspect)*($.aspectSlack??1),J=Z.reduce((V,Y)=>V+(Y.w+$.gapX)*(Y.h+$.gapY),0);return Math.max($.minBandW,Math.round(Math.sqrt(J*Q)))}function B5(Z,$){let Q=J8(Z,$),J=new Map,V=0,Y=0,X=0;for(let K of Z){if(V>0&&V+K.w>Q)Y+=X+$.gapY,V=0,X=0;J.set(K.id,{x:V,y:Y}),X=Math.max(X,K.h),V+=K.w+$.gapX}return J}var $Z=320,J4=30,V8=36,K8=30,Y8=16;function QZ(Z){return V8+Math.max(0,Z)*K8+Y8}var GZ=60,X8=300,kZ=10,G8=84,wZ=72,M8=3*$Z,U8=1.7;var TZ=(Z)=>(Z??"").trim()||"\u2014";function j8(Z,$,Q){let J=new Map;for(let Y of Z.uses){if(!$.has(Y.tableId))continue;J.set(Y.tableId,(J.get(Y.tableId)??0)+1)}let V=null;for(let[Y,X]of J){if(V===null){V=Y;continue}let K=J.get(V);if(X>K){V=Y;continue}if(X<K)continue;let j=Q?.get(Y)??0,W=Q?.get(V)??0;if(j<W)V=Y;else if(j===W&&$.get(Y).localeCompare($.get(V))<0)V=Y}return V}function V4(Z,$){let Q=new Map(Z.map((V)=>[V.id,V.name])),J=new Map;for(let V of $)for(let Y of V.uses){if(!Q.has(Y.tableId))continue;J.set(Y.tableId,(J.get(Y.tableId)??0)+1)}return new Map($.map((V)=>[V.id,j8(V,Q,J)]))}var H8=(Z,$)=>Z.path.localeCompare($.path)||Z.method.localeCompare($.method)||Z.id.localeCompare($.id);function q5(Z,$,Q={}){let J=V4(Z,$),V=new Map,Y=[];for(let G of[...$].sort(H8)){let B=J.get(G.id)??null;if(B){let z=V.get(B);if(z)z.push(G);else V.set(B,[G])}else Y.push(G)}let X=(G)=>{let B=V.get(G.id)?.length??0;return QZ(G.columnCount)+(B?kZ+B*GZ:0)+J4},K=Array.from(new Set(Z.map((G)=>TZ(G.domain)))),j=K.filter((G)=>G!=="\u2014").sort(),W=K.includes("\u2014")?[...j,"\u2014"]:j,U=[];for(let G of W){let B=Z.filter((D)=>TZ(D.domain)===G).sort((D,R)=>D.name.localeCompare(R.name)),z=B.reduce((D,R)=>D+X(R),0),O=Math.max(1,Math.min(12,B.length,Math.round(Math.sqrt(z/$Z)))),M=Array(O).fill(0),F=new Map;for(let D of B){let R=0;for(let w=1;w<O;w++)if(M[w]<M[R])R=w;F.set(D.id,{x:R*$Z,y:M[R]}),M[R]+=X(D)}U.push({d:G,w:O*$Z,h:Math.max(...M,0),tableLocal:F})}let N=B5(U.map((G)=>({id:G.d,w:G.w,h:G.h})),{gapX:G8,gapY:wZ,viewportAspect:Q.viewportAspect,minBandW:M8,aspectSlack:U8}),L=new Map,q=new Map,H=0;for(let G of U){let B=N.get(G.d),z=Z.filter((O)=>G.tableLocal.has(O.id));for(let O of z){let M=G.tableLocal.get(O.id),F=B.x+M.x,D=B.y+M.y;L.set(O.id,{x:F,y:D}),(V.get(O.id)??[]).forEach((w,T)=>{q.set(w.id,{x:F,y:D+QZ(O.columnCount)+kZ+T*GZ})})}H=Math.max(H,B.y+G.h)}if(Y.length){let G=H+wZ,B=Math.max(1,Math.min(4,Math.ceil(Math.sqrt(Y.length/2))));Y.forEach((z,O)=>{q.set(z.id,{x:O%B*X8,y:G+Math.floor(O/B)*GZ})})}return{tables:L,endpoints:q}}function O5(Z,$,Q){let J=V4($,Q),V=new Map;for(let q of Q){let H=J.get(q.id);if(H)V.set(H,(V.get(H)??0)+1)}let Y=(q)=>{let H=V.get(q.id)??0;return q.y+QZ(q.columnCount)+(H?kZ+H*GZ:0)},X=TZ(Z.domain),K=$.filter((q)=>TZ(q.domain)===X);if(!K.length){let q=$.length?Math.max(...$.map(Y),...Q.map((H)=>H.y+GZ)):0;return{x:0,y:$.length||Q.length?q+wZ:0}}let j=Math.min(...K.map((q)=>q.x)),W=K.map((q)=>Math.max(0,Math.round((q.x-j)/$Z))),U=Math.min(12,Math.max(...W)+1),N=Array(U).fill(Math.min(...K.map((q)=>q.y)));K.forEach((q,H)=>{let G=Math.min(W[H],U-1);N[G]=Math.max(N[G],Y(q)+J4)});let L=0;for(let q=1;q<U;q++)if(N[q]<N[L])L=q;return{x:j+L*$Z,y:N[L]}}function z5(Z,$,Q){let J=V4($,[...Q,Z]),V=J.get(Z.id),Y=V?$.find((K)=>K.id===V):void 0;if(Y){let K=Q.filter((U)=>J.get(U.id)===Y.id),j=Y.y+QZ(Y.columnCount)+kZ,W=K.length?Math.max(...K.map((U)=>U.y))+GZ:j;return{x:Y.x,y:W}}let X=[...$.map((K)=>K.y+QZ(K.columnCount)),...Q.map((K)=>K.y+GZ)];return{x:0,y:X.length?Math.max(...X)+wZ:0}}function D5(Z){let $=$Z-20;for(let Q=0;Q<Z.length;Q++)for(let J=Q+1;J<Z.length;J++){let V=Z[Q],Y=Z[J],X=QZ(V.columnCount),K=QZ(Y.columnCount);if(V.x<Y.x+$&&V.x+$>Y.x&&V.y<Y.y+K&&V.y+X>Y.y)return!0}return!1}import{eq as _5}from"drizzle-orm";F5();async function A5(Z=b,$){let[Q,J]=await Promise.all([Z.query.dbTable.findMany({with:{columns:{columns:{id:!0}}},orderBy:(X,{asc:K})=>K(X.name)}),Z.query.endpoint.findMany({with:{tables:{columns:{tableId:!0}}}})]),V=q5(Q.map((X)=>({id:X.id,name:X.name,domain:X.domain,columnCount:X.columns.length})),J.map((X)=>({id:X.id,method:X.method,path:X.path,uses:X.tables.map((K)=>({tableId:K.tableId}))})),{viewportAspect:$}),Y=0;for(let X of Q){let K=V.tables.get(X.id);if(!K||Math.round(K.x)===Math.round(X.x)&&Math.round(K.y)===Math.round(X.y))continue;await Z.update(P).set({x:K.x,y:K.y}).where(_5(P.id,X.id)),Y++}for(let X of J){let K=V.endpoints.get(X.id);if(!K||Math.round(K.x)===Math.round(X.x)&&Math.round(K.y)===Math.round(X.y))continue;await Z.update(E).set({x:K.x,y:K.y}).where(_5(E.id,X.id)),Y++}return Y}var A8=A.object({tables:A.array(A.object({name:A.string().trim().min(1),domain:A.string().nullish(),description:A.string().nullish(),columns:A.array(A.object({name:A.string().trim().min(1),type:A.string().trim().min(1),isPk:A.boolean().optional(),isFk:A.boolean().optional(),nullable:A.boolean().optional(),note:A.string().nullish()})).default([])})).default([]),relations:A.array(A.object({fromTable:A.string(),fromColumn:A.string(),toTable:A.string(),toColumn:A.string(),label:A.string().nullish()})).default([]),endpoints:A.array(A.object({method:A.string().trim().min(1),path:A.string().trim().min(1),domain:A.string().nullish(),description:A.string().nullish(),uses:A.array(A.object({table:A.string(),access:A.string().default("read")})).default([])})).default([])});async function uZ(Z=b){let[$]=await Z.insert(a).values({id:"singleton",version:1}).onConflictDoUpdate({target:a.id,set:{version:_8`${a.version} + 1`}}).returning();return $.version}async function P5(Z,$=b,Q={}){let J=A8.parse(Z),V=J.tables.length>0,Y=J.endpoints.length>0,X=J.tables.map((M)=>M.name);if(V)await $.delete(P).where(X.length?z8(yZ(P.source,"INTROSPECTION"),D8(P.name,X)):yZ(P.source,"INTROSPECTION"));let K=await $.query.dbTable.findMany({columns:{id:!0,name:!0,domain:!0,x:!0,y:!0},with:{columns:{columns:{id:!0}}}}),j=await $.query.endpoint.findMany({columns:{id:!0,method:!0,path:!0,x:!0,y:!0},with:{tables:{columns:{tableId:!0}}}}),W=new Map(K.map((M)=>[M.name,M])),U=K.map((M)=>({id:M.id,name:M.name,domain:M.domain,columnCount:M.columns.length,x:M.x,y:M.y})),N=j.map((M)=>({id:M.id,method:M.method,path:M.path,uses:M.tables.map((F)=>({tableId:F.tableId})),x:M.x,y:M.y})),L=new Map;for(let M of J.tables){if(W.has(M.name))continue;let F=O5({domain:M.domain??null,columnCount:M.columns.length},U,N);L.set(M.name,F),U.push({id:`new:${M.name}`,name:M.name,domain:M.domain??null,columnCount:M.columns.length,...F})}let q=new Map;for(let M of J.tables){let F=W.get(M.name),D=L.get(M.name),R=F?.x??D?.x??0,w=F?.y??D?.y??0,[T]=await $.insert(P).values({name:M.name,domain:M.domain??null,description:M.description??null,source:"INTROSPECTION",x:R,y:w}).onConflictDoUpdate({target:P.name,set:{...M.domain!=null?{domain:M.domain}:{},...M.description!=null?{description:M.description}:{},source:"INTROSPECTION"}}).returning();if(q.set(M.name,T.id),await $.delete(e).where(yZ(e.tableId,T.id)),M.columns.length)await $.insert(e).values(M.columns.map((f,I)=>({tableId:T.id,name:f.name,type:f.type,isPk:f.isPk??!1,isFk:f.isFk??!1,nullable:f.nullable??!0,note:f.note??null,ord:I})))}let H=[...q.values()];if(H.length)await $.delete(l).where(F8(K4(l.fromTableId,H),K4(l.toTableId,H)));for(let M of J.relations){let F=q.get(M.fromTable),D=q.get(M.toTable);if(!F||!D)continue;await $.insert(l).values({fromTableId:F,toTableId:D,fromColumn:M.fromColumn,toColumn:M.toColumn,label:M.label??`${M.fromColumn} \u2192 ${M.toTable}.${M.toColumn}`})}let G=new Set(J.endpoints.map((M)=>`${M.method} ${M.path}`));if(Y){let F=(await $.query.endpoint.findMany({where:(D,{eq:R})=>R(D.source,"INTROSPECTION")})).filter((D)=>!G.has(`${D.method} ${D.path}`)).map((D)=>D.id);if(F.length)await $.delete(E).where(K4(E.id,F))}for(let M of U)if(M.id.startsWith("new:"))M.id=q.get(M.name)??M.id;for(let M of J.endpoints){let F=await $.query.endpoint.findFirst({where:(T,{and:f,eq:I})=>f(I(T.method,M.method),I(T.path,M.path))}),D,R;if(F)D=F.x,R=F.y;else{let T={id:`new:${M.method} ${M.path}`,method:M.method,path:M.path,uses:M.uses.map((I)=>({tableId:q.get(I.table)??""})).filter((I)=>I.tableId)},f=z5(T,U,N);D=f.x,R=f.y,N.push({...T,x:D,y:R})}let[w]=await $.insert(E).values({method:M.method,path:M.path,domain:M.domain??null,description:M.description??null,source:"INTROSPECTION",x:D,y:R}).onConflictDoUpdate({target:[E.method,E.path],set:{...M.domain!=null?{domain:M.domain}:{},...M.description!=null?{description:M.description}:{},source:"INTROSPECTION"}}).returning();if(!Q.partial||M.uses.length>0)await $.delete(i).where(yZ(i.endpointId,w.id));for(let T of M.uses){let f=q.get(T.table)??(await $.query.dbTable.findFirst({where:(I,{eq:UZ})=>UZ(I.name,T.table)}))?.id;if(!f)continue;await $.insert(i).values({endpointId:w.id,tableId:f,access:T.access})}}await H5($),await L5($);let B=await $.query.dbTable.findMany({where:(M,{eq:F})=>F(M.source,"INTROSPECTION"),columns:{x:!0,y:!0},with:{columns:{columns:{id:!0}}}}),z=await $.select({x:E.x,y:E.y}).from(E);if(D5(B.map((M)=>({x:M.x,y:M.y,columnCount:M.columns.length})))||U5(z))await A5($);let O=await uZ($);return{tables:J.tables.length,relations:J.relations.length,endpoints:J.endpoints.length,version:O}}var R5=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 E5(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,Y=new Set,X=[],K=new Map,j=[],W=0,U=0;for(let L of Z){if(J.has(L))continue;let q=[{v:L,iter:0}];J.set(L,W),V.set(L,W),W++,X.push(L),Y.add(L);while(q.length){let H=q[q.length-1],G=Q.get(H.v)??[];if(H.iter<G.length){let B=G[H.iter++];if(!J.has(B))J.set(B,W),V.set(B,W),W++,X.push(B),Y.add(B),q.push({v:B,iter:0});else if(Y.has(B))V.set(H.v,Math.min(V.get(H.v),J.get(B)))}else{if(V.get(H.v)===J.get(H.v)){let z=0,O;do O=X.pop(),Y.delete(O),K.set(O,U),z++;while(O!==H.v);j.push(z),U++}q.pop();let B=q[q.length-1];if(B)V.set(B.v,Math.min(V.get(B.v),V.get(H.v)))}}}let N=new Set;for(let L of $){let q=K.get(L.from);if(q!==void 0&&q===K.get(L.to)&&j[q]>1)N.add(`${L.from}|${L.to}`)}return N}async function S5(Z,$=b){let Q=R5.parse(Z),J=Q.files.map((N)=>N.path),V=new Set(J),Y=Q.edges.filter((N)=>V.has(N.from)&&V.has(N.to)&&N.from!==N.to),X=E5(J,Y),K=new Map,j=new Map;for(let N of Y)j.set(N.from,(j.get(N.from)??0)+1),K.set(N.to,(K.get(N.to)??0)+1);await $.delete(y).where(I8(y.path,J));for(let N of Q.files){let L={root:N.root??null,lang:N.lang??null,mtimeMs:N.mtimeMs??null,size:N.size??null,inDegree:K.get(N.path)??0,outDegree:j.get(N.path)??0};await $.insert(y).values({path:N.path,...L}).onConflictDoUpdate({target:y.path,set:L})}await $.delete(x);let W=0;if(Y.length)await $.insert(x).values(Y.map((N)=>{let L=X.has(`${N.from}|${N.to}`);if(L)W++;return{fromPath:N.from,toPath:N.to,circular:L}}));let U=await uZ($);return await $.update(a).set({codeGraphSyncedAt:new Date}).where(NZ(a.id,"singleton")),{files:Q.files.length,edges:Y.length,circular:W,version:U}}var R8=(Z,$)=>`${Z}\x00${$}`;function Y4(Z){let $=R5.parse(Z),Q=$.files.map((U)=>U.path),J=new Set(Q),V=$.edges.filter((U)=>J.has(U.from)&&J.has(U.to)&&U.from!==U.to),Y=E5(Q,V),X=new Map,K=new Map;for(let U of V)K.set(U.from,(K.get(U.from)??0)+1),X.set(U.to,(X.get(U.to)??0)+1);let j=new Map;for(let U of $.files)j.set(U.path,{root:U.root??null,lang:U.lang??null,mtimeMs:U.mtimeMs??null,size:U.size??null,inDegree:X.get(U.path)??0,outDegree:K.get(U.path)??0});let W=new Map;for(let U of V)W.set(R8(U.from,U.to),{from:U.from,to:U.to,circular:Y.has(`${U.from}|${U.to}`)});return{files:j,edges:W}}var E8=(Z,$)=>Z.root===$.root&&Z.lang===$.lang&&Z.mtimeMs===$.mtimeMs&&Z.size===$.size&&Z.inDegree===$.inDegree&&Z.outDegree===$.outDegree;async function v5(Z,$,Q=b){for(let[K,j]of $.files){let W=Z.files.get(K);if(W&&E8(W,j))continue;let U={root:j.root,lang:j.lang,mtimeMs:j.mtimeMs,size:j.size,inDegree:j.inDegree,outDegree:j.outDegree};await Q.insert(y).values({path:K,...U}).onConflictDoUpdate({target:y.path,set:U})}let J=[...Z.files.keys()].filter((K)=>!$.files.has(K));if(J.length)await Q.delete(y).where(P8(y.path,J));for(let[K,j]of Z.edges)if(!$.edges.has(K))await Q.delete(x).where(I5(NZ(x.fromPath,j.from),NZ(x.toPath,j.to)));let V=[];for(let[K,j]of $.edges){let W=Z.edges.get(K);if(!W)V.push({fromPath:j.from,toPath:j.to,circular:j.circular});else if(W.circular!==j.circular)await Q.update(x).set({circular:j.circular}).where(I5(NZ(x.fromPath,j.from),NZ(x.toPath,j.to)))}if(V.length)await Q.insert(x).values(V);let Y=await uZ(Q);await Q.update(a).set({codeGraphSyncedAt:new Date}).where(NZ(a.id,"singleton"));let X=0;for(let K of $.edges.values())if(K.circular)X++;return{files:$.files.size,edges:$.edges.size,circular:X,version:Y}}var T8=/[/\\](node_modules|\.git|\.next|dist|build|__pycache__|target|\.venv|venv|\.beacon|\.playwright-mcp|generated|coverage)[/\\]/;function y8(Z){try{let $=zZ(Z,"beacon.config.json");if(w5($)){let Q=JSON.parse(S8($,"utf8"));if(Array.isArray(Q.roots)&&Q.roots.length)return Q.roots.map((J)=>w8(Z,J))}}catch{}return[Z]}function T5(Z){let $=y8(Z.path),Q=dZ(Z.id),J=sZ(VZ(Z.id)),V=Z5($,Z.path);async function Y(){let G=X5(V.snapshot().files.map((F)=>F.path));for(let F of $)for(let D of["prisma/schema.prisma","schema.prisma"]){let R=zZ(F,D);if(w5(R))G.push(X(R))}let B=[];for(let F of G)try{B.push({path:F,content:await k5(zZ(Z.path,F),"utf8")})}catch{}let z=K5(B),O=Y5(B);if(!z.tables.length&&!O.length)return;if(O.length&&z.tableVars&&Object.keys(z.tableVars).length){let D=V.snapshot().edges,R=new Set(O.map((I)=>I.file)),w=new Map;for(let I of D){let UZ=w.get(I.from)??[];UZ.push(I.to),w.set(I.from,UZ)}for(let I=0;I<2;I++)for(let UZ of[...R])for(let b5 of w.get(UZ)??[])R.add(b5);let T=new Map;for(let I of[...R].slice(0,600))try{T.set(I,await k5(zZ(Z.path,I),"utf8"))}catch{}let f=$5({routeFiles:[...new Set(O.map((I)=>I.file))],edges:D,content:(I)=>T.get(I)??null,tableVars:z.tableVars});for(let I of O)I.uses=f.get(I.file)??[]}let M=await P5({tables:z.tables,relations:z.relations,endpoints:O},J,{partial:!0});console.log(`[beacon-inline] schema synced (${Z.name}): ${M.tables} tables / ${M.endpoints} endpoints`)}function X(G){return k8(Z.path,G).split(/[\\/]/).join("/")}let K=null,j=!1,W=new Set,U=null,N=!1;async function L(){if(N){q();return}N=!0;try{if(await Q,j)K=null,j=!1;if(K===null){let O=await V.seed(),M=await S5(O,J);K=Y4(O),console.log(`[beacon-inline] code-graph synced (${Z.name}): ${M.files} files / ${M.edges} imports${M.circular>0?` (${M.circular} circular)`:""}`),await Y();return}let G=[...W];W.clear();let B=G.some((O)=>Q4(X(O))),z=!1;for(let O of G)if(await V.applyChange(O))z=!0;if(z){let O=Y4(V.snapshot()),M=await v5(K,O,J);K=O,console.log(`[beacon-inline] code-graph updated (${Z.name}): ${M.files} files / ${M.edges} imports${M.circular>0?` (${M.circular} circular)`:""}`)}if(B)await Y()}catch(G){console.error(`[beacon-inline] error (${Z.name}):`,G instanceof Error?G.message:G)}finally{N=!1}}function q(){if(U)clearTimeout(U);U=setTimeout(L,600)}let H=[];for(let G of $)try{let B=v8(G,{recursive:!0,persistent:!0},(z,O)=>{if(!O){j=!0,q();return}let M=String(O);if(T8.test(`/${M}`))return;W.add(zZ(G,M)),q()});B.on("error",(z)=>console.error(`[beacon-inline] watcher error (${Z.name}):`,z)),H.push(B)}catch(B){console.error(`[beacon-inline] live watch unavailable for ${G} (${Z.name}):`,B instanceof Error?B.message:B)}return console.log(`[beacon-inline] watching ${Z.name} (${$.join(", ")}) \u2014 initial extract\u2026`),L(),{async stop(){if(U)clearTimeout(U);for(let G of H)G.close()}}}function x8(Z){let $=Z.limit??6,Q=Z.hardCap??12,J=new Map,V=0,Y=new Set;function X(G){let B=J.get(G);if(B)B.seq=++V}function K(G){if(J.has(G.id))return X(G.id);if(!Z.exists(G.path))return;J.set(G.id,{handle:Z.start(G),seq:++V})}function j(){let G=null,B=1/0;for(let[z,O]of J){if(Y.has(z))continue;if(O.seq<B)B=O.seq,G=z}if(G)J.get(G).handle.stop(),J.delete(G)}function W(){let G=Z.list().filter((B)=>Z.exists(B.path)).slice(0,$);Y=new Set(G.map((B)=>B.id));for(let B of G)K(B);for(let[B,z]of[...J]){let O=Z.get(B);if(!O||!Z.exists(O.path))z.handle.stop(),J.delete(B)}}function U(G){if(J.has(G))return X(G);let B=Z.get(G);if(!B||!Z.exists(B.path))return;if(J.size>=Q)j();if(J.size>=Q)return;J.set(G,{handle:Z.start(B),seq:++V})}async function N(G){let B=J.get(G);if(!B)return;J.delete(G),await B.handle.stop()}function L(G){return J.has(G)}function q(){return[...J.keys()]}async function H(){await Promise.all([...J.values()].map((G)=>G.handle.stop())),J.clear()}return{reconcile:W,ensureWatcher:U,stopWatcher:N,isWatching:L,activeIds:q,stopAll:H}}var f8=x8({list:FZ,get:g,exists:u8,start:(Z)=>T5(Z)});async function y5(Z){await f8.stopWatcher(Z)}async function u5(Z){if(!g(Z))return{ok:!1,removed:!1,fallbackId:r(),error:"unknown workspace"};D4(Z),O4(Z),await y5(Z),E4(VZ(Z)),I4(Z);try{g8(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 X4=process.argv.slice(3),g5=X4.includes("--yes")||X4.includes("-y"),MZ=X4.find((Z)=>!Z.startsWith("-")),x5=(Z)=>`\x1B[32m\u2713\x1B[0m ${Z}`,h5=(Z)=>`\x1B[2m${Z}\x1B[0m`,m5=(Z)=>`
|
|
6
|
-
\x1B[1m${Z}\x1B[0m`;function b8(){if(!MZ)return g(
|
|
7
|
-
`),process.exit(0);async function p8(Z){try{let{pid:$,port:Q}=JSON.parse(m8(
|
|
8
|
-
`);else{let Z=await
|
|
3
|
+
var c5=Object.defineProperty;var l5=(Z)=>Z;function d5(Z,$){this[Z]=l5.bind(null,$)}var fZ=(Z,$)=>{for(var Q in $)c5(Z,Q,{get:$[Q],enumerable:!0,configurable:!0,set:d5.bind($,Q)})};var G4=(Z,$)=>()=>(Z&&($=Z(Z=0)),$);var U4={};fZ(U4,{provisionDb:()=>J6});import{createClient as n5}from"@libsql/client";import{drizzle as r5}from"drizzle-orm/libsql";import{migrate as o5}from"drizzle-orm/libsql/migrator";import{readMigrationFiles as i5}from"drizzle-orm/migrator";import{dirname as gZ,join as s5}from"path";import{fileURLToPath as a5}from"url";async function DZ(Z,$){return(await Z.execute({sql:"SELECT 1 FROM sqlite_master WHERE type='table' AND name = ?",args:[$]})).rows.length>0}async function $6(Z,$){let Q=await Z.execute(`PRAGMA table_info("${$}")`);return new Set(Q.rows.map((J)=>String(J.name)))}async function M4(Z){if(!await DZ(Z,"__drizzle_migrations"))return 0;let $=await Z.execute('SELECT count(*) AS n FROM "__drizzle_migrations"');return Number($.rows[0]?.n??0)}async function Q6(Z){for(let[$,Q]of Object.entries(Z6)){if(!await DZ(Z,$))continue;let J=await $6(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 J6(Z,$=e5){let Q=n5({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 DZ(Q,"__drizzle_migrations"),V=await DZ(Q,"Node"),Y=!1;if(V&&!J){let K=i5({migrationsFolder:$})[0];if(K)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:[K.hash,K.folderMillis]}),Y=!0}let X=await M4(Q);if(await o5(r5(Q),{migrationsFolder:$}),await M4(Q)>X)Y=!0;return await Q6(Q),{migrated:Y}}finally{Q.close()}}var t5,e5,Z6;var j4=G4(async()=>{t5=gZ(gZ(gZ(a5(import.meta.url)))),e5=process.env.BEACON_MIGRATIONS_DIR||s5(t5,"drizzle"),Z6={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 W8,renameSync as N8,rmSync as C8,writeFileSync as L8}from"fs";import{dirname as B8}from"path";function q8(Z,$){W8(B8(Z),{recursive:!0});let Q=`${Z}.tmp`;try{L8(Q,$),N8(Q,Z)}catch(J){throw C8(Q,{force:!0}),J}}function O8(Z,$,Q=!1){q8(Z,JSON.stringify($,null,Q?2:void 0))}var _5=()=>{};import{AsyncLocalStorage as V6}from"async_hooks";import{spawnSync as K6}from"child_process";import{createHash as Y6}from"crypto";import{existsSync as W4,mkdirSync as CZ,readFileSync as mZ,writeFileSync as bZ}from"fs";import{homedir as N4}from"os";import{basename as X6,join as $Z,parse as G6,resolve as H4}from"path";function t(){return process.env.BEACON_HOME||$Z(N4(),".beacon")}function pZ(){return $Z(t(),"workspaces.json")}function ZZ(Z){return Y6("sha256").update(Z).digest("hex").slice(0,12)}function FZ(Z=process.cwd()){let $=K6("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 C4(Z){let $=H4(Z);return $!==H4(N4())&&$!==G6($).root}function L4(){return $Z(t(),"deleted.json")}function cZ(){try{let Z=JSON.parse(mZ(L4(),"utf8"));return Array.isArray(Z)?Z:[]}catch{return[]}}function B4(Z){CZ(t(),{recursive:!0}),bZ(L4(),JSON.stringify(Z,null,2))}function q4(Z){return cZ().includes(Z)}function O4(Z){let $=cZ();if(!$.includes(Z))B4([...$,Z])}function M6(Z){let $=cZ();if($.includes(Z))B4($.filter((Q)=>Q!==Z))}function n(Z){return $Z(t(),Z)}function VZ(Z){return`file:${$Z(n(Z),"db.sqlite")}`}function LZ(){try{let Z=JSON.parse(mZ(pZ(),"utf8"));return Array.isArray(Z)?Z:[]}catch{return[]}}function lZ(Z){CZ(t(),{recursive:!0}),bZ(pZ(),JSON.stringify(Z,null,2))}function _Z(){return LZ().sort((Z,$)=>$.lastOpenedAt.localeCompare(Z.lastOpenedAt))}function g(Z){return LZ().find(($)=>$.id===Z)??null}function z4(Z,$,Q=new Date().toISOString()){if(!C4(Z))throw Error(`beacon: refusing to register a non-repo path as a workspace: ${Z}`);let J=ZZ(Z);if(q4(J))throw Error(`beacon: workspace ${J} (${Z}) was deleted \u2014 run \`beacon\` or /beacon-init to re-add it`);let V=LZ(),Y=V.find((j)=>j.id===J),X={id:J,path:Z,name:$||Y?.name||X6(Z),lastOpenedAt:Q},K=[X,...V.filter((j)=>j.id!==J)];return CZ(n(J),{recursive:!0}),lZ(K),X}function Q$(Z,$){return M6(ZZ(Z)),z4(Z,$)}function J$(Z,$=new Date().toISOString()){let Q=LZ(),J=Q.find((V)=>V.id===Z);if(!J)return;J.lastOpenedAt=$,lZ(Q)}function D4(Z){if(lZ(LZ().filter(($)=>$.id!==Z)),r()===Z)U6(_Z()[0]?.id??null)}function F4(){return $Z(t(),"active")}function r(){try{return mZ(F4(),"utf8").trim()||null}catch{return null}}function U6(Z){CZ(t(),{recursive:!0}),bZ(F4(),Z??"")}function j6(){let Z=r();return Z?g(Z):null}function V$(){let Z=AZ()??r();return Z?g(Z):null}function K$(Z){return g(Z)?.path??null}function Y$(){return W4(pZ())}var _4="beacon_ws";function A4(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 X$(Z){let $=Z.headers.get("x-beacon-workspace");if($&&g($))return $;let Q=A4(Z,_4);if(Q&&g(Q))return Q;return H6()}function H6(){let Z=_Z();return Z.length===1?Z[0].id:null}var P4="x-beacon-workspace-path";function G$(Z=process.cwd()){let $=FZ(Z);return{"x-beacon-workspace":ZZ($),[P4]:$}}async function M$(Z){let $=Z.headers.get("x-beacon-workspace");if($&&g($))return $;let Q=Z.headers.get(P4);if(Q&&C4(Q)&&!q4(ZZ(Q))&&(!$||ZZ(Q)===$)){let V=z4(Q);return await dZ(V.id),V.id}let J=A4(Z,_4);if(J&&g(J))return J;return null}var I4=new V6;function W6(Z,$){return Z?I4.run(Z,$):$()}function AZ(){return I4.getStore()??null}var hZ=new Set;function R4(Z){hZ.delete($Z(n(Z),"db.sqlite"))}async function dZ(Z){let $=n(Z),Q=$Z($,"db.sqlite"),J=W4(Q);if(J&&hZ.has(Q))return{ok:!0,created:!1,migrated:!1};try{CZ($,{recursive:!0});let{provisionDb:V}=await j4().then(() => U4),Y=await V(VZ(Z));return hZ.add(Q),{ok:!0,created:!J,migrated:J&&Y.migrated}}catch(V){return{ok:!1,created:!1,migrated:!1,error:V instanceof Error?V.message:String(V)}}}import{existsSync as h8,readFileSync as m8}from"fs";import{resolve as g5}from"path";import{rmSync as g8}from"fs";import{drizzle as g6}from"drizzle-orm/libsql";import{createClient as h6}from"@libsql/client";var nZ={};fZ(nZ,{workspaceFlag:()=>z6,tag:()=>jZ,syncState:()=>a,projectMeta:()=>O6,planContract:()=>D6,note:()=>L6,nodeTags:()=>YZ,nodeFile:()=>BZ,node:()=>k,endpointTable:()=>i,endpoint:()=>E,edge:()=>KZ,draftTable:()=>c,draftRelation:()=>XZ,draftColumn:()=>OZ,dbTable:()=>P,dbRelation:()=>l,dbColumn:()=>e,codeFileEdge:()=>x,codeFile:()=>y,bugFlag:()=>qZ,boardAnnotation:()=>B6,appSetting:()=>q6});import{sqliteTable as v,index as S,foreignKey as N6,text as C,integer as _,real as m,uniqueIndex as o,primaryKey as C6}from"drizzle-orm/sqlite-core";import{createId as u}from"@paralleldrive/cuid2";var k=v("Node",{id:C().primaryKey().$defaultFn(()=>u()),view:C().notNull(),kind:C().default("FEATURE").notNull(),cluster:C(),layer:C(),title:C().notNull(),role:C(),plain:C(),status:C().default("PENDING").notNull(),priority:_().default(2).notNull(),progress:_().default(0).notNull(),x:m().default(0).notNull(),y:m().default(0).notNull(),sourceRef:C(),externalId:C(),source:C().default("MANUAL").notNull(),planId:C(),parentId:C(),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[S("Node_cluster_idx").on(Z.cluster),S("Node_parentId_idx").on(Z.parentId),S("Node_view_idx").on(Z.view),N6(()=>({columns:[Z.parentId],foreignColumns:[Z.id],name:"Node_parentId_Node_id_fk"})).onUpdate("cascade").onDelete("cascade")]),BZ=v("NodeFile",{id:C().primaryKey().$defaultFn(()=>u()),nodeId:C().notNull().references(()=>k.id,{onDelete:"cascade",onUpdate:"cascade"}),path:C().notNull()},(Z)=>[o("NodeFile_nodeId_path_key").on(Z.nodeId,Z.path),S("NodeFile_nodeId_idx").on(Z.nodeId)]),jZ=v("Tag",{id:C().primaryKey().$defaultFn(()=>u()),label:C().notNull(),color:C()},(Z)=>[o("Tag_label_key").on(Z.label)]),KZ=v("Edge",{id:C().primaryKey().$defaultFn(()=>u()),fromId:C().notNull().references(()=>k.id,{onDelete:"cascade",onUpdate:"cascade"}),toId:C().notNull().references(()=>k.id,{onDelete:"cascade",onUpdate:"cascade"}),kind:C().default("DEPENDS").notNull(),label:C(),sourceHandle:C(),targetHandle:C()},(Z)=>[o("Edge_fromId_toId_kind_key").on(Z.fromId,Z.toId,Z.kind),S("Edge_toId_idx").on(Z.toId),S("Edge_fromId_idx").on(Z.fromId)]),YZ=v("_NodeTags",{a:C("A").notNull().references(()=>k.id,{onDelete:"cascade",onUpdate:"cascade"}),b:C("B").notNull().references(()=>jZ.id,{onDelete:"cascade",onUpdate:"cascade"})},(Z)=>[o("_NodeTags_AB_unique").on(Z.a,Z.b),S("_NodeTags_B_index").on(Z.b)]),L6=v("Note",{id:C().primaryKey().$defaultFn(()=>u()),title:C().default("Untitled").notNull(),body:C().default("").notNull(),ord:m().default(0).notNull(),pinned:_({mode:"boolean"}).default(!1).notNull(),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[S("Note_updatedAt_idx").on(Z.updatedAt)]),B6=v("BoardAnnotation",{id:C().primaryKey().$defaultFn(()=>u()),targetKind:C().notNull(),targetId:C().notNull(),columnName:C(),body:C().default("").notNull(),x:m(),y:m(),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[S("BoardAnnotation_target_idx").on(Z.targetId)]),qZ=v("BugFlag",{id:C().primaryKey().$defaultFn(()=>u()),nodeId:C().notNull().references(()=>k.id,{onDelete:"cascade",onUpdate:"cascade"}),by:C().notNull(),note:C().notNull(),resolvedAt:_({mode:"timestamp_ms"}),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},(Z)=>[S("BugFlag_nodeId_idx").on(Z.nodeId)]),P=v("DbTable",{id:C().primaryKey().$defaultFn(()=>u()),name:C().notNull(),domain:C(),description:C(),source:C().default("MANUAL").notNull(),planId:C(),x:m().default(0).notNull(),y:m().default(0).notNull(),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[S("DbTable_domain_idx").on(Z.domain),o("DbTable_name_key").on(Z.name)]),e=v("DbColumn",{id:C().primaryKey().$defaultFn(()=>u()),tableId:C().notNull().references(()=>P.id,{onDelete:"cascade",onUpdate:"cascade"}),name:C().notNull(),type:C().notNull(),isPk:_({mode:"boolean"}).default(!1).notNull(),isFk:_({mode:"boolean"}).default(!1).notNull(),nullable:_({mode:"boolean"}).default(!0).notNull(),note:C(),ord:_().default(0).notNull()},(Z)=>[o("DbColumn_tableId_name_key").on(Z.tableId,Z.name),S("DbColumn_tableId_idx").on(Z.tableId)]),l=v("DbRelation",{id:C().primaryKey().$defaultFn(()=>u()),fromTableId:C().notNull().references(()=>P.id,{onDelete:"cascade",onUpdate:"cascade"}),toTableId:C().notNull().references(()=>P.id,{onDelete:"cascade",onUpdate:"cascade"}),fromColumn:C().notNull(),toColumn:C().notNull(),label:C()},(Z)=>[S("DbRelation_toTableId_idx").on(Z.toTableId),S("DbRelation_fromTableId_idx").on(Z.fromTableId)]),E=v("Endpoint",{id:C().primaryKey().$defaultFn(()=>u()),method:C().notNull(),path:C().notNull(),domain:C(),description:C(),source:C().default("MANUAL").notNull(),planId:C(),x:m().default(0).notNull(),y:m().default(0).notNull(),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[o("Endpoint_method_path_key").on(Z.method,Z.path),S("Endpoint_domain_idx").on(Z.domain)]),i=v("EndpointTable",{id:C().primaryKey().$defaultFn(()=>u()),endpointId:C().notNull().references(()=>E.id,{onDelete:"cascade",onUpdate:"cascade"}),tableId:C().notNull().references(()=>P.id,{onDelete:"cascade",onUpdate:"cascade"}),access:C().default("read").notNull()},(Z)=>[o("EndpointTable_endpointId_tableId_key").on(Z.endpointId,Z.tableId),S("EndpointTable_tableId_idx").on(Z.tableId)]),c=v("DraftTable",{id:C().primaryKey().$defaultFn(()=>u()),name:C().notNull(),domain:C(),description:C(),x:m().default(0).notNull(),y:m().default(0).notNull(),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},(Z)=>[o("DraftTable_name_key").on(Z.name)]),OZ=v("DraftColumn",{id:C().primaryKey().$defaultFn(()=>u()),tableId:C().notNull().references(()=>c.id,{onDelete:"cascade",onUpdate:"cascade"}),name:C().notNull(),type:C().notNull(),isPk:_({mode:"boolean"}).default(!1).notNull(),isFk:_({mode:"boolean"}).default(!1).notNull(),nullable:_({mode:"boolean"}).default(!0).notNull(),note:C(),ord:_().default(0).notNull()},(Z)=>[S("DraftColumn_tableId_idx").on(Z.tableId)]),XZ=v("DraftRelation",{id:C().primaryKey().$defaultFn(()=>u()),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)=>[S("DraftRelation_toTableId_idx").on(Z.toTableId),S("DraftRelation_fromTableId_idx").on(Z.fromTableId)]),y=v("CodeFile",{path:C().primaryKey(),root:C(),lang:C(),x:m().default(0).notNull(),y:m().default(0).notNull(),mtimeMs:m(),size:_(),inDegree:_().default(0).notNull(),outDegree:_().default(0).notNull(),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),x=v("CodeFileEdge",{fromPath:C().notNull().references(()=>y.path,{onDelete:"cascade",onUpdate:"cascade"}),toPath:C().notNull().references(()=>y.path,{onDelete:"cascade",onUpdate:"cascade"}),circular:_({mode:"boolean"}).default(!1).notNull()},(Z)=>[S("CodeFileEdge_circular_idx").on(Z.circular),S("CodeFileEdge_toPath_idx").on(Z.toPath),S("CodeFileEdge_fromPath_idx").on(Z.fromPath),C6({columns:[Z.fromPath,Z.toPath],name:"CodeFileEdge_fromPath_toPath_pk"})]),a=v("SyncState",{id:C().primaryKey().default("singleton"),version:_().default(0).notNull(),codeGraphSyncedAt:_({mode:"timestamp_ms"}),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),q6=v("AppSetting",{id:C().primaryKey().default("singleton"),editor:C().default("auto").notNull(),currentFeatureId:C(),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),O6=v("ProjectMeta",{id:C().primaryKey().default("singleton"),overview:C(),conventions:C().default("[]").notNull(),hasFrontend:_({mode:"boolean"}),classificationRoots:C().default("[]").notNull(),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),z6=v("WorkspaceFlag",{id:C().primaryKey().$defaultFn(()=>u()),key:C().notNull(),enabled:_({mode:"boolean"}).default(!1).notNull(),config:C(),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[o("WorkspaceFlag_key_key").on(Z.key)]),D6=v("PlanContract",{id:C().primaryKey().$defaultFn(()=>u()),planId:C().notNull(),declaredFiles:C().default("[]").notNull(),authorizedExtras:C().default("[]").notNull(),active:_({mode:"boolean"}).default(!1).notNull(),createdAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:_({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[o("PlanContract_planId_key").on(Z.planId),S("PlanContract_active_idx").on(Z.active)]);var rZ={};fZ(rZ,{tagRelations:()=>P6,nodeTagsRelations:()=>I6,nodeRelations:()=>F6,nodeFileRelations:()=>_6,endpointTableRelations:()=>w6,endpointRelations:()=>k6,edgeRelations:()=>R6,draftTableRelations:()=>T6,draftRelationRelations:()=>u6,draftColumnRelations:()=>y6,dbTableRelations:()=>E6,dbRelationRelations:()=>v6,dbColumnRelations:()=>S6,codeFileRelations:()=>x6,codeFileEdgeRelations:()=>f6,bugFlagRelations:()=>A6});import{relations as h}from"drizzle-orm";var F6=h(k,({one:Z,many:$})=>({files:$(BZ),bugFlags:$(qZ),nodeTags:$(YZ),edgesOut:$(KZ,{relationName:"EdgeFrom"}),edgesIn:$(KZ,{relationName:"EdgeTo"}),parent:Z(k,{fields:[k.parentId],references:[k.id],relationName:"NodeTree"}),children:$(k,{relationName:"NodeTree"})})),_6=h(BZ,({one:Z})=>({node:Z(k,{fields:[BZ.nodeId],references:[k.id]})})),A6=h(qZ,({one:Z})=>({node:Z(k,{fields:[qZ.nodeId],references:[k.id]})})),P6=h(jZ,({many:Z})=>({nodeTags:Z(YZ)})),I6=h(YZ,({one:Z})=>({node:Z(k,{fields:[YZ.a],references:[k.id]}),tag:Z(jZ,{fields:[YZ.b],references:[jZ.id]})})),R6=h(KZ,({one:Z})=>({from:Z(k,{fields:[KZ.fromId],references:[k.id],relationName:"EdgeFrom"}),to:Z(k,{fields:[KZ.toId],references:[k.id],relationName:"EdgeTo"})})),E6=h(P,({many:Z})=>({columns:Z(e),fksOut:Z(l,{relationName:"FkFrom"}),fksIn:Z(l,{relationName:"FkTo"}),usages:Z(i)})),S6=h(e,({one:Z})=>({table:Z(P,{fields:[e.tableId],references:[P.id]})})),v6=h(l,({one:Z})=>({fromTable:Z(P,{fields:[l.fromTableId],references:[P.id],relationName:"FkFrom"}),toTable:Z(P,{fields:[l.toTableId],references:[P.id],relationName:"FkTo"})})),k6=h(E,({many:Z})=>({tables:Z(i)})),w6=h(i,({one:Z})=>({endpoint:Z(E,{fields:[i.endpointId],references:[E.id]}),table:Z(P,{fields:[i.tableId],references:[P.id]})})),T6=h(c,({many:Z})=>({columns:Z(OZ),fksOut:Z(XZ,{relationName:"DraftFkFrom"}),fksIn:Z(XZ,{relationName:"DraftFkTo"})})),y6=h(OZ,({one:Z})=>({table:Z(c,{fields:[OZ.tableId],references:[c.id]})})),u6=h(XZ,({one:Z})=>({fromTable:Z(c,{fields:[XZ.fromTableId],references:[c.id],relationName:"DraftFkFrom"}),toTable:Z(c,{fields:[XZ.toTableId],references:[c.id],relationName:"DraftFkTo"})})),x6=h(y,({many:Z})=>({edgesOut:Z(x,{relationName:"CFEFrom"}),edgesIn:Z(x,{relationName:"CFETo"})})),f6=h(x,({one:Z})=>({fromFile:Z(y,{fields:[x.fromPath],references:[y.path],relationName:"CFEFrom"}),toFile:Z(y,{fields:[x.toPath],references:[y.path],relationName:"CFETo"})}));var m6={...nZ,...rZ};function b6(){let Z=process.env.DATABASE_URL;if(Z&&/^(file:|libsql:|wss?:|https?:|:memory:)/i.test(Z))return Z;return"file:./dev.db"}var p6=b6();function E4(Z){let $=h6({url:Z});return $.execute("PRAGMA foreign_keys = ON;"),$.execute("PRAGMA busy_timeout = 5000;"),g6($,{schema:m6})}var iZ=globalThis,oZ=iZ.dzDefault??E4(p6);iZ.dzDefault=oZ;var PZ=iZ.dzByUrl??=new Map;function sZ(Z){let $=PZ.get(Z);if(!$)$=E4(Z),PZ.set(Z,$);return $}function S4(Z){let $=PZ.get(Z);PZ.delete(Z);try{$?.$client?.close?.()}catch{}}function c6(){if(process.env.BEACON_REPO)return oZ;let Z=AZ()??r();if(!Z)return oZ;return sZ(VZ(Z))}var b=new Proxy({},{get(Z,$){let Q=c6(),J=Q[$];return typeof J==="function"?J.bind(Q):J}});import{existsSync as u8}from"fs";import{existsSync as T5,readFileSync as S8,watch as v8}from"fs";import{readFile as w5}from"fs/promises";import{join as zZ,relative as k8,resolve as w8}from"path";import{existsSync as r4,readFileSync as o4}from"fs";import{readdir as z7,readFile as D7,stat as i4}from"fs/promises";import{extname as s4,join as SZ,relative as WZ,resolve as HZ}from"path";import{extname as p4}from"path";import{dirname as l6,resolve as d6}from"path";var aZ=[".ts",".tsx",".js",".jsx",".mjs",".cjs"],n6=[/(?:^|[\n;])\s*(?:import|export)[^'"`\n]{0,4000}?from\s*['"]([^'"`]+)['"]/g,/(?:^|[\n;])\s*import\s*['"]([^'"`]+)['"]/g,/\brequire\(\s*['"]([^'"`]+)['"]\s*\)/g,/\bimport\(\s*['"]([^'"`]+)['"]\s*\)/g];function r6(Z){return Z.split(/[\\/]/).join("/")}function v4(Z,$){if($.has(Z))return Z;for(let Q of aZ){let J=`${Z}${Q}`;if($.has(J))return J}for(let Q of aZ){let J=`${Z}/index${Q}`;if($.has(J))return J}return null}function o6(Z){let $=new Set;for(let Q of n6)for(let J of Z.matchAll(Q))$.add(J[1]);return $}function i6(Z,$,Q,J){if(Z.startsWith(".")){let V=d6("/",l6($),Z),Y=r6(V).replace(/^\//,"");return v4(Y,Q)}for(let V of J)if(Z.startsWith(V.from)){let Y=Z.slice(V.from.length),X=V.to?`${V.to}/${Y}`:Y,K=v4(X,Q);if(K)return K}return null}var k4={id:"ts",extensions:aZ,specifiers:o6,resolve(Z,$,Q){let J=i6(Z,$,Q.fileSet,Q.tsAliases??[]);return J?[J]:[]}};import{dirname as IZ,join as s6,normalize as a6}from"path";var t6=[".py",".pyi"],w4=[/(?:^|[\n;])\s*from\s+(\.*[\w.]*)\s+import\b/g,/(?:^|[\n;])\s*import\s+([\w.]+(?:\s*,\s*[\w.]+)*)/g];function T4(Z,$){for(let Q of[`${Z}.py`,`${Z}/__init__.py`,`${Z}.pyi`])if($.has(Q))return[Q];return[]}function e6(Z){let $=new Set;for(let Q of Z.matchAll(w4[0])){let J=Q[1].trim();if(J)$.add(J)}for(let Q of Z.matchAll(w4[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 y4={id:"python",extensions:t6,specifiers:e6,resolve(Z,$,Q){if(Z.startsWith(".")){let X=Z.length-Z.replace(/^\.+/,"").length,K=Z.slice(X),j=IZ($);for(let U=1;U<X;U++)j=IZ(j);let W=K?s6(j,K.replace(/\./g,"/")):j;return T4(a6(W).replace(/\\/g,"/"),Q.fileSet)}let J=Z.replace(/\./g,"/"),V=[],Y=IZ($);while(Y&&Y!=="."&&Y!=="/")V.push(Y),Y=IZ(Y);V.push("");for(let X of V){let K=T4(X?`${X}/${J}`:J,Q.fileSet);if(K.length)return K}return[]}};import{dirname as Z7}from"path";var $7=[".go"],Q7=/(?:^|[\n;])\s*import\s+(?:[\w.]+\s+)?"([^"]+)"/g,J7=/(?:^|[\n;])\s*import\s*\(([\s\S]*?)\)/g,V7=/"([^"]+)"/g;function K7(Z){let $=new Set;for(let Q of Z.matchAll(Q7))$.add(Q[1]);for(let Q of Z.matchAll(J7))for(let J of Q[1].matchAll(V7))$.add(J[1]);return $}var u4={id:"go",extensions:$7,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 Y=[];for(let X of Q.fileSet){if(!X.endsWith(".go"))continue;let K=Z7(X);if(V===""&&K==="."||K===V)Y.push(X)}return Y.sort()},specifiers:K7};import{basename as x4,dirname as tZ,join as f4,normalize as g4}from"path";var Y7=[".rs"],X7=/(?:^|[\n;])\s*(?:pub\s+)?mod\s+(\w+)\s*;/g,G7=/(?:^|[\n;])\s*(?:pub\s+)?use\s+([\w:]+)/g;function M7(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 eZ(Z,$){for(let Q of[`${Z}.rs`,`${Z}/mod.rs`])if($.has(Q))return[Q];return[]}var U7=new Set(["mod.rs","lib.rs","main.rs"]);function j7(Z){let $=new Set;for(let Q of Z.matchAll(X7))$.add(`./${Q[1]}`);for(let Q of Z.matchAll(G7)){let J=M7(Q[1]);if(J)$.add(J)}return $}var h4={id:"rust",extensions:Y7,specifiers:j7,resolve(Z,$,Q){let J=Q.fileSet;if(Z.startsWith("./")||Z.startsWith("../")){let V=Z.replace(/^\.\//,""),Y=g4(f4(tZ($),Z)).replace(/\\/g,"/"),X=eZ(Y,J);if(X.length)return X;if(Z.startsWith("./")&&!U7.has(x4($))){let K=f4(tZ($),x4($,".rs"),V);if(X=eZ(g4(K).replace(/\\/g,"/"),J),X.length)return X}return[]}if(Z.startsWith("crate/")){let V=$.split("/"),Y=V.lastIndexOf("src"),X=Y>=0?V.slice(0,Y+1).join("/"):tZ($),K=Z.slice(6).split("/");for(let j of[K.join("/"),K.slice(0,-1).join("/")]){if(!j)continue;let W=eZ(`${X}/${j}`,J);if(W.length)return W}return[]}return[]}};import{dirname as H7,extname as W7,join as N7,normalize as C7}from"path";var m4=[".swift",".java",".rb",".kt",".kts",".cs",".php",".scala",".c",".h",".cpp",".hpp",".cc",".hh",".m",".mm",".ex",".exs",".lua",".dart",".vue",".svelte"],L7=[/\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 B7(Z){let $=new Set;for(let Q of L7)for(let J of Z.matchAll(Q)){let V=J[1].trim();if(V)$.add(V)}return $}var b4={id:"fallback",extensions:m4,specifiers:B7,resolve(Z,$,Q){let V=[W7($).toLowerCase(),...m4].filter((j,W,U)=>j&&U.indexOf(j)===W),Y=Z.includes("/")||Z.includes("\\"),X=Z.startsWith(".")||Y?Z.replace(/\\/g,"/"):Z.replace(/[.:]+/g,"/"),K=[C7(N7(H7($),X)).replace(/\\/g,"/"),X.replace(/^\.\//,"")];for(let j of K){if(Q.fileSet.has(j))return[j];for(let W of V){let U=j.endsWith(W)?j:`${j}${W}`;if(Q.fileSet.has(U))return[U];if(Q.fileSet.has(`${j}/index${W}`))return[`${j}/index${W}`]}}return[]}};var q7=[k4,y4,u4,h4,b4],RZ=new Map;for(let Z of q7)for(let $ of Z.extensions)RZ.set($,Z);var O7={".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 Z4(Z){return RZ.get(p4(Z).toLowerCase())??null}function c4(Z){let $=p4(Z).toLowerCase();if(!RZ.has($))return null;return O7[$]??$.slice(1)}function $4(){return new Set(RZ.keys())}var a4=new Set(["node_modules",".git",".next","dist","build","__pycache__","target",".venv","venv","env",".turbo","coverage",".beacon",".playwright-mcp","generated","migrations","alembic","migrate"]);function F7(Z=5){let $=performance.now();return async()=>{if(performance.now()-$>Z)await new Promise((Q)=>setImmediate(Q)),$=performance.now()}}var _7=()=>Promise.resolve();async function t4(Z,$,Q,J,V){let Y;try{Y=await z7($,{withFileTypes:!0})}catch{return}for(let X of Y){if(X.name.startsWith("."))continue;if(a4.has(X.name))continue;let K=SZ($,X.name);if(X.isDirectory()){await t4(Z,K,Q,J,V);continue}if(!X.isFile())continue;if(X.name.endsWith(".d.ts"))continue;if(!Q.has(s4(X.name).toLowerCase()))continue;J.push(WZ(Z,K))}await V()}async function A7(Z,$=_7){let Q=[];return await t4(Z,Z,$4(),Q,$),Q.map((J)=>J.split(/[\\/]/).join("/")).sort()}function P7(Z){try{return JSON.parse(Z)}catch{}let $=Z.replace(/\/\*[^"]*?\*\//g,"").replace(/(^|[^:"])\/\/.*$/gm,"$1").replace(/,\s*([}\]])/g,"$1");return JSON.parse($)}function l4(Z){return Z.replace(/^\.\/?/,"").replace(/\/$/,"")}function e4(Z){let $=SZ(Z,"tsconfig.json");if(!r4($))return[];let Q;try{Q=P7(o4($,"utf8"))}catch{return[]}let J=Q.compilerOptions?.paths??{},V=l4(Q.compilerOptions?.baseUrl??"."),Y=[];for(let[X,K]of Object.entries(J)){if(!X.endsWith("/*")||!K.length)continue;let j=K[0];if(!j.endsWith("/*"))continue;let W=X.slice(0,-1),U=l4(j.slice(0,-1)),N=[V,U].filter(Boolean).join("/");Y.push({from:W,to:N})}return Y}function EZ(Z){let $=SZ(Z,"go.mod");if(!r4($))return null;try{let Q=/^\s*module\s+(\S+)/m.exec(o4($,"utf8"));return Q?Q[1]:null}catch{return null}}function p(Z){return Z.split(/[\\/]/).join("/")}function Z5(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 I7(Z,$,Q){let J=(Array.isArray(Z)?Z:[Z]).map((W)=>p(HZ(W))),V=p($?HZ($):J.length===1?J[0]:Z5(J)),Y=new Map,X=[];for(let W of J){let U=p(WZ(V,W));for(let N of e4(W))X.push({from:N.from,to:[U,N.to].filter(Boolean).join("/")});for(let N of await A7(W,Q)){let L=p(SZ(W,N)),q=p(WZ(V,L));if(Y.has(q))continue;try{let H=await i4(L);Y.set(q,{path:q,abs:L,root:U||null,mtimeMs:H.mtimeMs,size:H.size})}catch{}await Q()}}let K=J.map(EZ).find(Boolean)??EZ(V);return{metas:[...Y.values()].sort((W,U)=>W.path.localeCompare(U.path)),ctx:{fileSet:new Set(Y.keys()),tsAliases:X,goModulePath:K}}}var d4=50000;function R7(Z){let $=0;for(let Q=0;Q<Z.length;Q++)if(Z.charCodeAt(Q)===10){if(Q-$>d4)return!0;$=Q+1}return Z.length-$>d4}async function n4(Z){let $=Z4(Z.path);if(!$||Z.size>200000)return new Set;try{let Q=await D7(Z.abs,"utf8");if(R7(Q))return new Set;return $.specifiers(Q)}catch{return new Set}}function $5(Z,$){let Q=(Array.isArray(Z)?Z:[Z]).map((H)=>p(HZ(H))),J=p($?HZ($):Q.length===1?Q[0]:Z5(Q)),V=new Map,Y=new Map,X=[],K=null;function j(){X=[];for(let H of Q){let G=p(WZ(J,H));for(let B of e4(H))X.push({from:B.from,to:[G,B.to].filter(Boolean).join("/")})}K=Q.map(EZ).find(Boolean)??EZ(J)}function W(H){let G=H.split("/");for(let z=0;z<G.length;z++){let O=G[z];if(!O||O.startsWith("."))return!0;if(z<G.length-1&&a4.has(O))return!0}let B=G[G.length-1];if(B.endsWith(".d.ts"))return!0;return!$4().has(s4(B).toLowerCase())}function U(H){let G=p(HZ(H));for(let B of Q)if(G===B||G.startsWith(`${B}/`)){let z=G.slice(B.length).replace(/^\/+/,"");if(W(z))return null;return{path:p(WZ(J,G)),root:p(WZ(J,B))||null}}return null}function N(){let H={fileSet:new Set(V.keys()),tsAliases:X,goModulePath:K},G=[...V.values()].sort((O,M)=>O.path.localeCompare(M.path)),B=[];for(let O of G){let M=Z4(O.path);if(!M)continue;let F=Y.get(O.path)??new Set,D=new Set;for(let R of F)for(let w of M.resolve(R,O.path,H)){if(!w||w===O.path||D.has(w))continue;D.add(w),B.push({from:O.path,to:w})}}return{files:G.map((O)=>({path:O.path,lang:c4(O.path),root:O.root,mtimeMs:O.mtimeMs,size:O.size})),edges:B}}async function L(){let H=F7(),{metas:G,ctx:B}=await I7(Z,$,H);V.clear(),Y.clear();for(let z of G)await H(),V.set(z.path,z),Y.set(z.path,await n4(z));return X=B.tsAliases??[],K=B.goModulePath??null,N()}async function q(H){let G=p(HZ(H));if(!Q.some((D)=>G===D||G.startsWith(`${D}/`)))return!1;let B=G.split("/").pop()??"";if(B==="tsconfig.json"||B==="go.mod"){let D=G.slice(0,G.length-B.length-1);if(Q.includes(D))return j(),!0;return!1}let z=U(H);if(!z)return!1;let O;try{O=await i4(G)}catch{let D=V.delete(z.path);return Y.delete(z.path),D}let M=V.get(z.path);if(M&&M.mtimeMs===O.mtimeMs&&M.size===O.size)return!1;let F={path:z.path,abs:G,root:z.root,mtimeMs:O.mtimeMs,size:O.size};return V.set(z.path,F),Y.set(z.path,await n4(F)),!0}return{seed:L,applyChange:q,snapshot:N}}function Q5(Z){let $=Object.keys(Z.tableVars),Q=new Map;if(!$.length){for(let X of Z.routeFiles)Q.set(X,[]);return Q}let J=new Map;for(let X of Z.edges){let K=J.get(X.from)??[];K.push(X.to),J.set(X.from,K)}let V=new Map($.map((X)=>[X,new RegExp(`(?:query\\.${X}\\b|\\.from\\(\\s*${X}\\b)`)])),Y=new Map($.map((X)=>[X,new RegExp(`(?:insert|update|delete)\\(\\s*${X}\\b`)]));for(let X of Z.routeFiles){let K=new Set([X]),j=[X];for(let L=0;L<2&&K.size<25;L++){let q=[];for(let H of j)for(let G of J.get(H)??[]){if(K.has(G)||K.size>=25)continue;K.add(G),q.push(G)}j=q}let W=new Set,U=new Set;for(let L of K){let q=Z.content(L);if(!q)continue;for(let H of $){if(!W.has(H)&&V.get(H).test(q))W.add(H);if(!U.has(H)&&Y.get(H).test(q))U.add(H)}}let N=[];for(let L of $){let q=W.has(L),H=U.has(L);if(!q&&!H)continue;N.push({table:Z.tableVars[L],access:q&&H?"read-write":H?"write":"read"})}Q.set(X,N)}return Q}function V5(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 Y=Q[2]??"",X=Y.match(/\d+/)?.[0];switch(Q[1]){case"GUID":case"Uuid":case"UUID":return"uuid";case"String":return X?`varchar(${X})`:"varchar";case"Text":return"text";case"DateTime":return/timezone\s*=\s*True/.test(Y)?"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 X?`vector(${X})`:"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 vZ(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 E7(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 S7(Z,$,Q){let J=Q.match(/__tablename__\s*=\s*["']([^"']+)["']/)?.[1],V=[],Y=[],X=[],K=/(\w+)\s*:\s*Mapped\s*\[/g,j;while(j=K.exec(Q)){let N=j.index+j[0].length-1,L=E7(Q,N);if(L===null)continue;let q=N+L.length+2,H=Q.slice(q).match(/^\s*=\s*(\w+)\s*\(/);if(!H||H[1]!=="mapped_column")continue;X.push({colName:j[1],pyType:L,argsAt:q+H[0].length-1})}let W=/(\w+)\s*=\s*(mapped_column|Column)\s*\(/g;while(j=W.exec(Q))X.push({colName:j[1],pyType:"",argsAt:j.index+j[0].length-1});X.sort((N,L)=>N.argsAt-L.argsAt);let U=new Set;for(let N of X){if(U.has(N.colName)||N.colName==="__tablename__")continue;U.add(N.colName);let L=vZ(Q,N.argsAt),q=/primary_key\s*=\s*True/.test(L)||void 0,H=/nullable\s*=\s*False/.test(L)?!1:!0,G=L.match(/ForeignKey\(\s*["']([^"']+?)\.([^"'.]+)["']/);if(V.push({name:N.colName,type:V5(L,N.pyType),isPk:q,isFk:G?!0:void 0,nullable:H}),G)Y.push({column:N.colName,toTable:G[1],toColumn:G[2]})}return{name:Z,bases:$,tableName:J,columns:V,fks:Y}}function v7(Z){let $=[],Q=[],J=/\bTable\s*(\()\s*["']([^"']+)["']\s*,/g,V;while(V=J.exec(Z)){let Y=V[2],X=vZ(Z,V.index+V[0].indexOf("("));if(!/\bmetadata\b/.test(X)||!/\bColumn\s*\(/.test(X))continue;let K=[],j=/\bColumn\s*\(/g,W;while(W=j.exec(X)){let U=vZ(X,W.index+W[0].length-1),N=U.match(/^\s*["'](\w+)["']\s*,/)?.[1];if(!N)continue;let L=/primary_key\s*=\s*True/.test(U)||void 0,q=/nullable\s*=\s*False/.test(U)?!1:!0,H=U.match(/ForeignKey\(\s*["']([^"']+?)\.([^"'.]+)["']/);if(K.push({name:N,type:V5(U,""),isPk:L,isFk:H?!0:void 0,nullable:q}),H)Q.push({fromTable:Y,fromColumn:N,toTable:H[1],toColumn:H[2]})}if(K.length)$.push({name:Y,columns:K})}return{tables:$,relations:Q}}function k7(Z){let $=new Map,Q={tables:[],relations:[]};for(let K of Z){if(!K.path.endsWith(".py"))continue;if(!/mapped_column\s*\(|__tablename__|\bTable\s*\(\s*["']/.test(K.content))continue;let j=v7(K.content);Q.tables.push(...j.tables),Q.relations.push(...j.relations);let W=/^class\s+(\w+)\s*\(([^)]*)\)\s*:/gm,U,N=[];while(U=W.exec(K.content))N.push({name:U[1],bases:U[2].split(",").map((L)=>L.trim().split(/[.[]/)[0]).filter(Boolean),at:U.index});for(let L=0;L<N.length;L++){let q=K.content.slice(N[L].at,N[L+1]?.at??K.content.length),H=S7(N[L].name,N[L].bases,q);$.set(H.name,H)}}if(![...$.values()].some((K)=>K.tableName)&&!Q.tables.length)return{tables:[],relations:[]};let J=(K,j=new Set)=>{if(j.has(K.name))return[];j.add(K.name);let W=[];for(let U of K.bases){let N=$.get(U);if(N&&!N.tableName)W.push(...J(N,j))}return W.push(...K.columns),W},V=[],Y=[];for(let K of $.values()){if(!K.tableName)continue;let j=J(K),W=new Map;for(let H of j)if(!W.has(H.name))W.set(H.name,H);let U=[...W.values()],N=(H)=>U.splice(U.findIndex((G)=>G.name===H),1)[0],L=U.some((H)=>H.name==="id")?N("id"):null,q=["created_at","updated_at","deleted_at"].filter((H)=>U.some((G)=>G.name===H)).map((H)=>N(H));V.push({name:K.tableName,columns:[...L?[L]:[],...U,...q]});for(let H of K.fks)Y.push({fromTable:K.tableName,fromColumn:H.column,toTable:H.toTable,toColumn:H.toColumn})}let X=new Set(V.map((K)=>K.name));for(let K of Q.tables)if(!X.has(K.name))V.push(K);return Y.push(...Q.relations.filter((K)=>!X.has(K.fromTable))),{tables:V,relations:Y}}function w7(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 T7(Z){let $=[],Q=[];for(let J of Z){if(!J.path.endsWith(".prisma"))continue;let V=/model\s+(\w+)\s*\{([\s\S]*?)\}/g,Y;while(Y=V.exec(J.content)){let X=Y[1],K=Y[2].match(/@@map\(\s*["']([^"']+)["']\s*\)/)?.[1]??X,j=[];for(let W of Y[2].split(`
|
|
4
|
+
`)){let U=W.trim().match(/^(\w+)\s+(\w+(?:\[\])?\??)\s*(.*)$/);if(!U||/^@@/.test(W.trim()))continue;let[,N,L,q]=U,H=/^(String|Int|BigInt|Float|Decimal|Boolean|DateTime|Json|Bytes)(\[\])?\??$/.test(L),G=q.match(/@relation\([^)]*fields:\s*\[(\w+)\][^)]*references:\s*\[(\w+)\]/);if(G)Q.push({fromTable:K,fromColumn:G[1],toTable:L.replace(/[?[\]]/g,""),toColumn:G[2]});if(!H)continue;j.push({name:N,type:w7(L),isPk:/@id\b/.test(q)||void 0,isFk:/@relation\b/.test(q)||void 0,nullable:L.endsWith("?")})}if(j.length)$.push({name:K,columns:j})}}return{tables:$,relations:Q}}function y7(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 u7(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 x7(Z){let $=[],Q=/(\w+)\s*:\s*(text|integer|real|blob|numeric|varchar|boolean|timestamp|serial|uuid|json|jsonb)\s*\(/g;for(let Y of Z){if(!/\.(ts|tsx|mts|cts)$/.test(Y.path))continue;if(!/\b(?:sqliteTable|pgTable|mysqlTable)\s*\(/.test(Y.content))continue;let X=/(?:export\s+)?const\s+(\w+)\s*=\s*(?:sqliteTable|pgTable|mysqlTable)\s*\(\s*["']([^"']+)["']\s*,/g,K;while(K=X.exec(Y.content)){let j=Y.content.indexOf("{",K.index+K[0].length);if(j<0)continue;let W=u7(Y.content,j),U={varName:K[1],tableName:K[2],columns:[],colByProp:new Map,fks:[]},N=[];Q.lastIndex=0;for(let L of W.matchAll(Q))N.push({prop:L[1],builder:L[2],at:L.index,argOpen:L.index+L[0].length-1});N.forEach((L,q)=>{let H=W.slice(L.at,N[q+1]?.at??W.length),G=vZ(W,L.argOpen),z=G.match(/^\s*["']([^"']+)["']/)?.[1]??L.prop,O=H.match(/\.references\(\s*\(\)\s*=>\s*(\w+)\.(\w+)/);if(U.columns.push({name:z,type:y7(L.builder,G),isPk:/\.primaryKey\(\)/.test(H)||void 0,isFk:O?!0:void 0,nullable:/\.notNull\(\)/.test(H)?!1:!0}),U.colByProp.set(L.prop,z),O)U.fks.push({column:z,toVar:O[1],toProp:O[2]})}),$.push(U)}}if(!$.length)return{tables:[],relations:[]};let J=new Map($.map((Y)=>[Y.varName,Y])),V=[];for(let Y of $)for(let X of Y.fks){let K=J.get(X.toVar);if(!K)continue;V.push({fromTable:Y.tableName,fromColumn:X.column,toTable:K.tableName,toColumn:K.colByProp.get(X.toProp)??X.toProp})}return{tables:$.map((Y)=>({name:Y.tableName,columns:Y.columns})),relations:V,tableVars:Object.fromEntries($.map((Y)=>[Y.varName,Y.tableName]))}}var f7={long:"bigint",Long:"bigint",BigInteger:"bigint",int:"integer",Integer:"integer",short:"smallint",Short:"smallint",String:"varchar",char:"varchar",Character:"varchar",boolean:"boolean",Boolean:"boolean",UUID:"uuid",BigDecimal:"numeric",double:"double",Double:"double",float:"float",Float:"float",LocalDate:"date",LocalDateTime:"timestamp",Instant:"timestamp",Timestamp:"timestamp",Date:"timestamp",OffsetDateTime:"timestamptz",ZonedDateTime:"timestamptz",LocalTime:"time"},g7=/^(List|Set|Map|Collection|Iterable)$/;function K5(Z){if(/byte\s*\[\s*\]/.test(Z))return"byte[]";return(Z.replace(/<.*>/,"").trim().split(".").pop()??Z).trim()}function h7(Z){let $=K5(Z);if($==="byte[]")return"bytea";return f7[$]??$.toLowerCase()}function kZ(Z,$){return Z.match(new RegExp(`\\b${$}\\s*=\\s*"([^"]*)"`))?.[1]}function J5(Z,$){let Q=Z.match(new RegExp(`\\b${$}\\s*=\\s*(true|false)`));return Q?Q[1]==="true":void 0}function m7(Z){let $=[],Q=Z,J;while(J=Q.match(/^@[\w.]+(\([^)]*\))?\s*/))$.push(Q.slice(0,J[0].length).trim()),Q=Q.slice(J[0].length);return{annots:$,rest:Q.trim()}}function b7(Z){let $=[],Q=[];for(let J of Z.split(`
|
|
5
|
+
`)){let V=J.trim();if(!V||V.startsWith("//")||V.startsWith("*")||V.startsWith("/*"))continue;let{annots:Y,rest:X}=m7(V);if(Q.push(...Y),!X)continue;let K=X,j="";while(K!==j)j=K,K=K.replace(/^(?:public|private|protected|static|final|transient|volatile)\s+/,"");let W=!K.includes("(")?K.match(/^([\w.$]+(?:<[^>]*>)?(?:\s*\[\s*\])?)\s+(\w+)\s*[;=]/):null;if(W)$.push({annots:Q,type:W[1],name:W[2]});Q=[]}return $}function p7(Z){let $=[],Q=/\bclass\s+(\w+)/g,J;while(J=Q.exec(Z))$.push({name:J[1],at:J.index});let V=[];for(let Y=0;Y<$.length;Y++){let X=Z.slice(Y===0?0:$[Y-1].at,$[Y].at);if(!/@Entity\b/.test(X))continue;let K=X.match(/@Table\s*\([^)]*\)/)?.[0]??"",j=kZ(K,"name")??$[Y].name,W=Z.slice($[Y].at,$[Y+1]?.at??Z.length),U=b7(W),N=U.find((q)=>q.annots.some((H)=>/@Id\b/.test(H))),L=N?kZ(N.annots.find((q)=>/@Column\b/.test(q))??"","name")??N.name:"id";V.push({className:$[Y].name,tableName:j,idColumn:L,fields:U})}return V}function c7(Z){let $=Z.filter((K)=>K.path.endsWith(".java")&&/@Entity\b/.test(K.content));if(!$.length)return{tables:[],relations:[]};let Q=$.flatMap((K)=>p7(K.content));if(!Q.length)return{tables:[],relations:[]};let J=new Map(Q.map((K)=>[K.className,K.tableName])),V=new Map(Q.map((K)=>[K.className,K.idColumn])),Y=[],X=[];for(let K of Q){let j=[];for(let W of K.fields){let U=W.annots.join(" ");if(/@Transient\b/.test(U))continue;let N=K5(W.type);if(/@ManyToOne\b|@OneToOne\b|@OneToMany\b|@ManyToMany\b/.test(U)||J.has(N)){let O=W.annots.find((F)=>/@JoinColumn\b/.test(F)),M=O?kZ(O,"name"):void 0;if(M){j.push({name:M,type:"bigint",isFk:!0,nullable:J5(U,"nullable")??!0});let F=J.get(N);if(F)X.push({fromTable:K.tableName,fromColumn:M,toTable:F,toColumn:V.get(N)??"id"})}continue}if(g7.test(N))continue;let H=W.annots.find((O)=>/@Column\b/.test(O))??"",G=kZ(H,"name")??W.name,B=W.annots.some((O)=>/@Id\b/.test(O)),z=J5(H,"nullable");j.push({name:G,type:h7(W.type),...B?{isPk:!0}:{},...z!==void 0?{nullable:z}:{}})}Y.push({name:K.tableName,columns:j})}return{tables:Y,relations:X}}function Y5(Z){let $=x7(Z);if($.tables.length)return $;let Q=T7(Z);if(Q.tables.length)return Q;let J=k7(Z);if(J.tables.length)return J;return c7(Z)}var l7=["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 X5(Z){let $=[];for(let Q of Z){let J=d7(Q.path);if(!J)continue;for(let V of l7)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 n7=/(^|\/)app\/.*\/route\.(ts|tsx|js|jsx|mjs)$/,r7=/\.(ts|py)$/,o7=/(schema|model)/i,i7=/(\.(test|spec)\.[jt]sx?$)|(^|\/)(tests?|__tests__|__mocks__)\/|(^|\/)test_[^/]+\.py$|_test\.py$/;function Q4(Z){if(i7.test(Z))return!1;if(Z.endsWith(".prisma"))return!0;if(n7.test(Z))return!0;if(Z.endsWith(".java"))return!0;return r7.test(Z)&&o7.test(Z)}function G5(Z,$=300){return Z.filter(Q4).slice(0,$)}import{z as d}from"zod";import{and as R5,eq as NZ,inArray as P8,notInArray as I8}from"drizzle-orm";import{z as A}from"zod";import{and as z8,eq as uZ,inArray as K4,notInArray as D8,or as F8,sql as _8}from"drizzle-orm";var M5=300,U5=50;function j5(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+M5&&J.x+M5>V.x&&J.y<V.y+U5&&J.y+U5>V.y)return!0}return!1}import{eq as s7}from"drizzle-orm";var H5=(Z)=>Z.replace(/\{[^}]*\}/g,"{}");function a7(Z,$){if(Z.method.toUpperCase()!==$.method.toUpperCase())return!1;let Q=H5(Z.path),J=H5($.path);return J===Q||J.endsWith(Q)}async function W5(Z=b){let[$,Q]=await Promise.all([Z.query.endpoint.findMany({where:(V,{ne:Y})=>Y(V.source,"INTROSPECTION")}),Z.query.endpoint.findMany({where:(V,{eq:Y})=>Y(V.source,"INTROSPECTION")})]),J={collapsed:0,mappings:[]};for(let V of $){let Y=Q.find((X)=>a7(V,X));if(!Y)continue;await Z.delete(E).where(s7(E.id,V.id)),J.collapsed++,J.mappings.push({planned:`${V.method} ${V.path}`,code:`${Y.method} ${Y.path}`})}return J}import{and as N5,inArray as t7,isNull as C5,ne as L5,or as e7}from"drizzle-orm";var Z8=new Set(["DONE","CANCELLED","DEPRIORITIZED"]);async function $8(Z){let $=await Z.query.node.findMany({where:(J,{and:V,eq:Y,isNotNull:X})=>V(Y(J.view,"ROADMAP"),X(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)&&Z8.has(J.status))}return[...Q.entries()].filter(([,J])=>J).map(([J])=>J)}async function B5(Z=b){let $=await $8(Z),Q=(Y)=>$.length?e7(C5(Y.planId),t7(Y.planId,$)):C5(Y.planId),J=await Z.delete(P).where(N5(L5(P.source,"INTROSPECTION"),Q(P))).returning({id:P.id}),V=await Z.delete(E).where(N5(L5(E.source,"INTROSPECTION"),Q(E))).returning({id:E.id});return{tables:J.length,endpoints:V.length}}var Q8=(Z)=>Z&&Number.isFinite(Z)&&Z>0?Math.min(3.2,Math.max(0.7,Z)):1.8;function J8(Z,$){let Q=Q8($.viewportAspect)*($.aspectSlack??1),J=Z.reduce((V,Y)=>V+(Y.w+$.gapX)*(Y.h+$.gapY),0);return Math.max($.minBandW,Math.round(Math.sqrt(J*Q)))}function q5(Z,$){let Q=J8(Z,$),J=new Map,V=0,Y=0,X=0;for(let K of Z){if(V>0&&V+K.w>Q)Y+=X+$.gapY,V=0,X=0;J.set(K.id,{x:V,y:Y}),X=Math.max(X,K.h),V+=K.w+$.gapX}return J}var QZ=320,J4=30,V8=36,K8=30,Y8=16;function JZ(Z){return V8+Math.max(0,Z)*K8+Y8}var GZ=60,X8=300,wZ=10,G8=84,TZ=72,M8=3*QZ,U8=1.7;var yZ=(Z)=>(Z??"").trim()||"\u2014";function j8(Z,$,Q){let J=new Map;for(let Y of Z.uses){if(!$.has(Y.tableId))continue;J.set(Y.tableId,(J.get(Y.tableId)??0)+1)}let V=null;for(let[Y,X]of J){if(V===null){V=Y;continue}let K=J.get(V);if(X>K){V=Y;continue}if(X<K)continue;let j=Q?.get(Y)??0,W=Q?.get(V)??0;if(j<W)V=Y;else if(j===W&&$.get(Y).localeCompare($.get(V))<0)V=Y}return V}function V4(Z,$){let Q=new Map(Z.map((V)=>[V.id,V.name])),J=new Map;for(let V of $)for(let Y of V.uses){if(!Q.has(Y.tableId))continue;J.set(Y.tableId,(J.get(Y.tableId)??0)+1)}return new Map($.map((V)=>[V.id,j8(V,Q,J)]))}var H8=(Z,$)=>Z.path.localeCompare($.path)||Z.method.localeCompare($.method)||Z.id.localeCompare($.id);function O5(Z,$,Q={}){let J=V4(Z,$),V=new Map,Y=[];for(let G of[...$].sort(H8)){let B=J.get(G.id)??null;if(B){let z=V.get(B);if(z)z.push(G);else V.set(B,[G])}else Y.push(G)}let X=(G)=>{let B=V.get(G.id)?.length??0;return JZ(G.columnCount)+(B?wZ+B*GZ:0)+J4},K=Array.from(new Set(Z.map((G)=>yZ(G.domain)))),j=K.filter((G)=>G!=="\u2014").sort(),W=K.includes("\u2014")?[...j,"\u2014"]:j,U=[];for(let G of W){let B=Z.filter((D)=>yZ(D.domain)===G).sort((D,R)=>D.name.localeCompare(R.name)),z=B.reduce((D,R)=>D+X(R),0),O=Math.max(1,Math.min(12,B.length,Math.round(Math.sqrt(z/QZ)))),M=Array(O).fill(0),F=new Map;for(let D of B){let R=0;for(let w=1;w<O;w++)if(M[w]<M[R])R=w;F.set(D.id,{x:R*QZ,y:M[R]}),M[R]+=X(D)}U.push({d:G,w:O*QZ,h:Math.max(...M,0),tableLocal:F})}let N=q5(U.map((G)=>({id:G.d,w:G.w,h:G.h})),{gapX:G8,gapY:TZ,viewportAspect:Q.viewportAspect,minBandW:M8,aspectSlack:U8}),L=new Map,q=new Map,H=0;for(let G of U){let B=N.get(G.d),z=Z.filter((O)=>G.tableLocal.has(O.id));for(let O of z){let M=G.tableLocal.get(O.id),F=B.x+M.x,D=B.y+M.y;L.set(O.id,{x:F,y:D}),(V.get(O.id)??[]).forEach((w,T)=>{q.set(w.id,{x:F,y:D+JZ(O.columnCount)+wZ+T*GZ})})}H=Math.max(H,B.y+G.h)}if(Y.length){let G=H+TZ,B=Math.max(1,Math.min(4,Math.ceil(Math.sqrt(Y.length/2))));Y.forEach((z,O)=>{q.set(z.id,{x:O%B*X8,y:G+Math.floor(O/B)*GZ})})}return{tables:L,endpoints:q}}function z5(Z,$,Q){let J=V4($,Q),V=new Map;for(let q of Q){let H=J.get(q.id);if(H)V.set(H,(V.get(H)??0)+1)}let Y=(q)=>{let H=V.get(q.id)??0;return q.y+JZ(q.columnCount)+(H?wZ+H*GZ:0)},X=yZ(Z.domain),K=$.filter((q)=>yZ(q.domain)===X);if(!K.length){let q=$.length?Math.max(...$.map(Y),...Q.map((H)=>H.y+GZ)):0;return{x:0,y:$.length||Q.length?q+TZ:0}}let j=Math.min(...K.map((q)=>q.x)),W=K.map((q)=>Math.max(0,Math.round((q.x-j)/QZ))),U=Math.min(12,Math.max(...W)+1),N=Array(U).fill(Math.min(...K.map((q)=>q.y)));K.forEach((q,H)=>{let G=Math.min(W[H],U-1);N[G]=Math.max(N[G],Y(q)+J4)});let L=0;for(let q=1;q<U;q++)if(N[q]<N[L])L=q;return{x:j+L*QZ,y:N[L]}}function D5(Z,$,Q){let J=V4($,[...Q,Z]),V=J.get(Z.id),Y=V?$.find((K)=>K.id===V):void 0;if(Y){let K=Q.filter((U)=>J.get(U.id)===Y.id),j=Y.y+JZ(Y.columnCount)+wZ,W=K.length?Math.max(...K.map((U)=>U.y))+GZ:j;return{x:Y.x,y:W}}let X=[...$.map((K)=>K.y+JZ(K.columnCount)),...Q.map((K)=>K.y+GZ)];return{x:0,y:X.length?Math.max(...X)+TZ:0}}function F5(Z){let $=QZ-20;for(let Q=0;Q<Z.length;Q++)for(let J=Q+1;J<Z.length;J++){let V=Z[Q],Y=Z[J],X=JZ(V.columnCount),K=JZ(Y.columnCount);if(V.x<Y.x+$&&V.x+$>Y.x&&V.y<Y.y+K&&V.y+X>Y.y)return!0}return!1}import{eq as A5}from"drizzle-orm";_5();async function P5(Z=b,$){let[Q,J]=await Promise.all([Z.query.dbTable.findMany({with:{columns:{columns:{id:!0}}},orderBy:(X,{asc:K})=>K(X.name)}),Z.query.endpoint.findMany({with:{tables:{columns:{tableId:!0}}}})]),V=O5(Q.map((X)=>({id:X.id,name:X.name,domain:X.domain,columnCount:X.columns.length})),J.map((X)=>({id:X.id,method:X.method,path:X.path,uses:X.tables.map((K)=>({tableId:K.tableId}))})),{viewportAspect:$}),Y=0;for(let X of Q){let K=V.tables.get(X.id);if(!K||Math.round(K.x)===Math.round(X.x)&&Math.round(K.y)===Math.round(X.y))continue;await Z.update(P).set({x:K.x,y:K.y}).where(A5(P.id,X.id)),Y++}for(let X of J){let K=V.endpoints.get(X.id);if(!K||Math.round(K.x)===Math.round(X.x)&&Math.round(K.y)===Math.round(X.y))continue;await Z.update(E).set({x:K.x,y:K.y}).where(A5(E.id,X.id)),Y++}return Y}var A8=A.object({tables:A.array(A.object({name:A.string().trim().min(1),domain:A.string().nullish(),description:A.string().nullish(),columns:A.array(A.object({name:A.string().trim().min(1),type:A.string().trim().min(1),isPk:A.boolean().optional(),isFk:A.boolean().optional(),nullable:A.boolean().optional(),note:A.string().nullish()})).default([])})).default([]),relations:A.array(A.object({fromTable:A.string(),fromColumn:A.string(),toTable:A.string(),toColumn:A.string(),label:A.string().nullish()})).default([]),endpoints:A.array(A.object({method:A.string().trim().min(1),path:A.string().trim().min(1),domain:A.string().nullish(),description:A.string().nullish(),uses:A.array(A.object({table:A.string(),access:A.string().default("read")})).default([])})).default([])});async function xZ(Z=b){let[$]=await Z.insert(a).values({id:"singleton",version:1}).onConflictDoUpdate({target:a.id,set:{version:_8`${a.version} + 1`}}).returning();return $.version}async function I5(Z,$=b,Q={}){let J=A8.parse(Z),V=J.tables.length>0,Y=J.endpoints.length>0,X=J.tables.map((M)=>M.name);if(V)await $.delete(P).where(X.length?z8(uZ(P.source,"INTROSPECTION"),D8(P.name,X)):uZ(P.source,"INTROSPECTION"));let K=await $.query.dbTable.findMany({columns:{id:!0,name:!0,domain:!0,x:!0,y:!0},with:{columns:{columns:{id:!0}}}}),j=await $.query.endpoint.findMany({columns:{id:!0,method:!0,path:!0,x:!0,y:!0},with:{tables:{columns:{tableId:!0}}}}),W=new Map(K.map((M)=>[M.name,M])),U=K.map((M)=>({id:M.id,name:M.name,domain:M.domain,columnCount:M.columns.length,x:M.x,y:M.y})),N=j.map((M)=>({id:M.id,method:M.method,path:M.path,uses:M.tables.map((F)=>({tableId:F.tableId})),x:M.x,y:M.y})),L=new Map;for(let M of J.tables){if(W.has(M.name))continue;let F=z5({domain:M.domain??null,columnCount:M.columns.length},U,N);L.set(M.name,F),U.push({id:`new:${M.name}`,name:M.name,domain:M.domain??null,columnCount:M.columns.length,...F})}let q=new Map;for(let M of J.tables){let F=W.get(M.name),D=L.get(M.name),R=F?.x??D?.x??0,w=F?.y??D?.y??0,[T]=await $.insert(P).values({name:M.name,domain:M.domain??null,description:M.description??null,source:"INTROSPECTION",x:R,y:w}).onConflictDoUpdate({target:P.name,set:{...M.domain!=null?{domain:M.domain}:{},...M.description!=null?{description:M.description}:{},source:"INTROSPECTION"}}).returning();if(q.set(M.name,T.id),await $.delete(e).where(uZ(e.tableId,T.id)),M.columns.length)await $.insert(e).values(M.columns.map((f,I)=>({tableId:T.id,name:f.name,type:f.type,isPk:f.isPk??!1,isFk:f.isFk??!1,nullable:f.nullable??!0,note:f.note??null,ord:I})))}let H=[...q.values()];if(H.length)await $.delete(l).where(F8(K4(l.fromTableId,H),K4(l.toTableId,H)));for(let M of J.relations){let F=q.get(M.fromTable),D=q.get(M.toTable);if(!F||!D)continue;await $.insert(l).values({fromTableId:F,toTableId:D,fromColumn:M.fromColumn,toColumn:M.toColumn,label:M.label??`${M.fromColumn} \u2192 ${M.toTable}.${M.toColumn}`})}let G=new Set(J.endpoints.map((M)=>`${M.method} ${M.path}`));if(Y){let F=(await $.query.endpoint.findMany({where:(D,{eq:R})=>R(D.source,"INTROSPECTION")})).filter((D)=>!G.has(`${D.method} ${D.path}`)).map((D)=>D.id);if(F.length)await $.delete(E).where(K4(E.id,F))}for(let M of U)if(M.id.startsWith("new:"))M.id=q.get(M.name)??M.id;for(let M of J.endpoints){let F=await $.query.endpoint.findFirst({where:(T,{and:f,eq:I})=>f(I(T.method,M.method),I(T.path,M.path))}),D,R;if(F)D=F.x,R=F.y;else{let T={id:`new:${M.method} ${M.path}`,method:M.method,path:M.path,uses:M.uses.map((I)=>({tableId:q.get(I.table)??""})).filter((I)=>I.tableId)},f=D5(T,U,N);D=f.x,R=f.y,N.push({...T,x:D,y:R})}let[w]=await $.insert(E).values({method:M.method,path:M.path,domain:M.domain??null,description:M.description??null,source:"INTROSPECTION",x:D,y:R}).onConflictDoUpdate({target:[E.method,E.path],set:{...M.domain!=null?{domain:M.domain}:{},...M.description!=null?{description:M.description}:{},source:"INTROSPECTION"}}).returning();if(!Q.partial||M.uses.length>0)await $.delete(i).where(uZ(i.endpointId,w.id));for(let T of M.uses){let f=q.get(T.table)??(await $.query.dbTable.findFirst({where:(I,{eq:UZ})=>UZ(I.name,T.table)}))?.id;if(!f)continue;await $.insert(i).values({endpointId:w.id,tableId:f,access:T.access})}}await W5($),await B5($);let B=await $.query.dbTable.findMany({where:(M,{eq:F})=>F(M.source,"INTROSPECTION"),columns:{x:!0,y:!0},with:{columns:{columns:{id:!0}}}}),z=await $.select({x:E.x,y:E.y}).from(E);if(F5(B.map((M)=>({x:M.x,y:M.y,columnCount:M.columns.length})))||j5(z))await P5($);let O=await xZ($);return{tables:J.tables.length,relations:J.relations.length,endpoints:J.endpoints.length,version:O}}var E5=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 S5(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,Y=new Set,X=[],K=new Map,j=[],W=0,U=0;for(let L of Z){if(J.has(L))continue;let q=[{v:L,iter:0}];J.set(L,W),V.set(L,W),W++,X.push(L),Y.add(L);while(q.length){let H=q[q.length-1],G=Q.get(H.v)??[];if(H.iter<G.length){let B=G[H.iter++];if(!J.has(B))J.set(B,W),V.set(B,W),W++,X.push(B),Y.add(B),q.push({v:B,iter:0});else if(Y.has(B))V.set(H.v,Math.min(V.get(H.v),J.get(B)))}else{if(V.get(H.v)===J.get(H.v)){let z=0,O;do O=X.pop(),Y.delete(O),K.set(O,U),z++;while(O!==H.v);j.push(z),U++}q.pop();let B=q[q.length-1];if(B)V.set(B.v,Math.min(V.get(B.v),V.get(H.v)))}}}let N=new Set;for(let L of $){let q=K.get(L.from);if(q!==void 0&&q===K.get(L.to)&&j[q]>1)N.add(`${L.from}|${L.to}`)}return N}async function v5(Z,$=b){let Q=E5.parse(Z),J=Q.files.map((N)=>N.path),V=new Set(J),Y=Q.edges.filter((N)=>V.has(N.from)&&V.has(N.to)&&N.from!==N.to),X=S5(J,Y),K=new Map,j=new Map;for(let N of Y)j.set(N.from,(j.get(N.from)??0)+1),K.set(N.to,(K.get(N.to)??0)+1);await $.delete(y).where(I8(y.path,J));for(let N of Q.files){let L={root:N.root??null,lang:N.lang??null,mtimeMs:N.mtimeMs??null,size:N.size??null,inDegree:K.get(N.path)??0,outDegree:j.get(N.path)??0};await $.insert(y).values({path:N.path,...L}).onConflictDoUpdate({target:y.path,set:L})}await $.delete(x);let W=0;if(Y.length)await $.insert(x).values(Y.map((N)=>{let L=X.has(`${N.from}|${N.to}`);if(L)W++;return{fromPath:N.from,toPath:N.to,circular:L}}));let U=await xZ($);return await $.update(a).set({codeGraphSyncedAt:new Date}).where(NZ(a.id,"singleton")),{files:Q.files.length,edges:Y.length,circular:W,version:U}}var R8=(Z,$)=>`${Z}\x00${$}`;function Y4(Z){let $=E5.parse(Z),Q=$.files.map((U)=>U.path),J=new Set(Q),V=$.edges.filter((U)=>J.has(U.from)&&J.has(U.to)&&U.from!==U.to),Y=S5(Q,V),X=new Map,K=new Map;for(let U of V)K.set(U.from,(K.get(U.from)??0)+1),X.set(U.to,(X.get(U.to)??0)+1);let j=new Map;for(let U of $.files)j.set(U.path,{root:U.root??null,lang:U.lang??null,mtimeMs:U.mtimeMs??null,size:U.size??null,inDegree:X.get(U.path)??0,outDegree:K.get(U.path)??0});let W=new Map;for(let U of V)W.set(R8(U.from,U.to),{from:U.from,to:U.to,circular:Y.has(`${U.from}|${U.to}`)});return{files:j,edges:W}}var E8=(Z,$)=>Z.root===$.root&&Z.lang===$.lang&&Z.mtimeMs===$.mtimeMs&&Z.size===$.size&&Z.inDegree===$.inDegree&&Z.outDegree===$.outDegree;async function k5(Z,$,Q=b){for(let[K,j]of $.files){let W=Z.files.get(K);if(W&&E8(W,j))continue;let U={root:j.root,lang:j.lang,mtimeMs:j.mtimeMs,size:j.size,inDegree:j.inDegree,outDegree:j.outDegree};await Q.insert(y).values({path:K,...U}).onConflictDoUpdate({target:y.path,set:U})}let J=[...Z.files.keys()].filter((K)=>!$.files.has(K));if(J.length)await Q.delete(y).where(P8(y.path,J));for(let[K,j]of Z.edges)if(!$.edges.has(K))await Q.delete(x).where(R5(NZ(x.fromPath,j.from),NZ(x.toPath,j.to)));let V=[];for(let[K,j]of $.edges){let W=Z.edges.get(K);if(!W)V.push({fromPath:j.from,toPath:j.to,circular:j.circular});else if(W.circular!==j.circular)await Q.update(x).set({circular:j.circular}).where(R5(NZ(x.fromPath,j.from),NZ(x.toPath,j.to)))}if(V.length)await Q.insert(x).values(V);let Y=await xZ(Q);await Q.update(a).set({codeGraphSyncedAt:new Date}).where(NZ(a.id,"singleton"));let X=0;for(let K of $.edges.values())if(K.circular)X++;return{files:$.files.size,edges:$.edges.size,circular:X,version:Y}}var T8=/[/\\](node_modules|\.git|\.next|dist|build|__pycache__|target|\.venv|venv|\.beacon|\.playwright-mcp|generated|coverage)[/\\]/;function y8(Z){try{let $=zZ(Z,"beacon.config.json");if(T5($)){let Q=JSON.parse(S8($,"utf8"));if(Array.isArray(Q.roots)&&Q.roots.length)return Q.roots.map((J)=>w8(Z,J))}}catch{}return[Z]}function y5(Z){let $=y8(Z.path),Q=dZ(Z.id),J=sZ(VZ(Z.id)),V=$5($,Z.path);async function Y(){let G=G5(V.snapshot().files.map((F)=>F.path));for(let F of $)for(let D of["prisma/schema.prisma","schema.prisma"]){let R=zZ(F,D);if(T5(R))G.push(X(R))}let B=[];for(let F of G)try{B.push({path:F,content:await w5(zZ(Z.path,F),"utf8")})}catch{}let z=Y5(B),O=X5(B);if(!z.tables.length&&!O.length)return;if(O.length&&z.tableVars&&Object.keys(z.tableVars).length){let D=V.snapshot().edges,R=new Set(O.map((I)=>I.file)),w=new Map;for(let I of D){let UZ=w.get(I.from)??[];UZ.push(I.to),w.set(I.from,UZ)}for(let I=0;I<2;I++)for(let UZ of[...R])for(let p5 of w.get(UZ)??[])R.add(p5);let T=new Map;for(let I of[...R].slice(0,600))try{T.set(I,await w5(zZ(Z.path,I),"utf8"))}catch{}let f=Q5({routeFiles:[...new Set(O.map((I)=>I.file))],edges:D,content:(I)=>T.get(I)??null,tableVars:z.tableVars});for(let I of O)I.uses=f.get(I.file)??[]}let M=await I5({tables:z.tables,relations:z.relations,endpoints:O},J,{partial:!0});console.log(`[beacon-inline] schema synced (${Z.name}): ${M.tables} tables / ${M.endpoints} endpoints`)}function X(G){return k8(Z.path,G).split(/[\\/]/).join("/")}let K=null,j=!1,W=new Set,U=null,N=!1;async function L(){if(N){q();return}N=!0;try{if(await Q,j)K=null,j=!1;if(K===null){let O=await V.seed(),M=await v5(O,J);K=Y4(O),console.log(`[beacon-inline] code-graph synced (${Z.name}): ${M.files} files / ${M.edges} imports${M.circular>0?` (${M.circular} circular)`:""}`),await Y();return}let G=[...W];W.clear();let B=G.some((O)=>Q4(X(O))),z=!1;for(let O of G)if(await V.applyChange(O))z=!0;if(z){let O=Y4(V.snapshot()),M=await k5(K,O,J);K=O,console.log(`[beacon-inline] code-graph updated (${Z.name}): ${M.files} files / ${M.edges} imports${M.circular>0?` (${M.circular} circular)`:""}`)}if(B)await Y()}catch(G){console.error(`[beacon-inline] error (${Z.name}):`,G instanceof Error?G.message:G)}finally{N=!1}}function q(){if(U)clearTimeout(U);U=setTimeout(L,600)}let H=[];for(let G of $)try{let B=v8(G,{recursive:!0,persistent:!0},(z,O)=>{if(!O){j=!0,q();return}let M=String(O);if(T8.test(`/${M}`))return;W.add(zZ(G,M)),q()});B.on("error",(z)=>console.error(`[beacon-inline] watcher error (${Z.name}):`,z)),H.push(B)}catch(B){console.error(`[beacon-inline] live watch unavailable for ${G} (${Z.name}):`,B instanceof Error?B.message:B)}return console.log(`[beacon-inline] watching ${Z.name} (${$.join(", ")}) \u2014 initial extract\u2026`),L(),{async stop(){if(U)clearTimeout(U);for(let G of H)G.close()}}}function x8(Z){let $=Z.limit??6,Q=Z.hardCap??12,J=new Map,V=0,Y=new Set;function X(G){let B=J.get(G);if(B)B.seq=++V}function K(G){if(J.has(G.id))return X(G.id);if(!Z.exists(G.path))return;J.set(G.id,{handle:Z.start(G),seq:++V})}function j(){let G=null,B=1/0;for(let[z,O]of J){if(Y.has(z))continue;if(O.seq<B)B=O.seq,G=z}if(G)J.get(G).handle.stop(),J.delete(G)}function W(){let G=Z.list().filter((B)=>Z.exists(B.path)).slice(0,$);Y=new Set(G.map((B)=>B.id));for(let B of G)K(B);for(let[B,z]of[...J]){let O=Z.get(B);if(!O||!Z.exists(O.path))z.handle.stop(),J.delete(B)}}function U(G){if(J.has(G))return X(G);let B=Z.get(G);if(!B||!Z.exists(B.path))return;if(J.size>=Q)j();if(J.size>=Q)return;J.set(G,{handle:Z.start(B),seq:++V})}async function N(G){let B=J.get(G);if(!B)return;J.delete(G),await B.handle.stop()}function L(G){return J.has(G)}function q(){return[...J.keys()]}async function H(){await Promise.all([...J.values()].map((G)=>G.handle.stop())),J.clear()}return{reconcile:W,ensureWatcher:U,stopWatcher:N,isWatching:L,activeIds:q,stopAll:H}}var f8=x8({list:_Z,get:g,exists:u8,start:(Z)=>y5(Z)});async function u5(Z){await f8.stopWatcher(Z)}async function x5(Z){if(!g(Z))return{ok:!1,removed:!1,fallbackId:r(),error:"unknown workspace"};D4(Z),O4(Z),await u5(Z),S4(VZ(Z)),R4(Z);try{g8(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 X4=process.argv.slice(3),h5=X4.includes("--yes")||X4.includes("-y"),MZ=X4.find((Z)=>!Z.startsWith("-")),f5=(Z)=>`\x1B[32m\u2713\x1B[0m ${Z}`,m5=(Z)=>`\x1B[2m${Z}\x1B[0m`,b5=(Z)=>`
|
|
6
|
+
\x1B[1m${Z}\x1B[0m`;function b8(){if(!MZ)return g(ZZ(FZ(process.cwd())));if(/^[0-9a-f]{12}$/.test(MZ)){let Z=g(MZ);if(Z)return Z}return g(ZZ(FZ(g5(MZ))))}var s=b8();if(!s)console.error(`[beacon] ${MZ??process.cwd()} is not a registered Beacon workspace \u2014 nothing to remove.`),process.exit(1);console.log(b5(h5?"Beacon \xB7 remove workspace":"Beacon \xB7 remove workspace (dry run)"));console.log(` name: ${s.name}${r()===s.id?" (currently active)":""}`);console.log(` repo: ${s.path} ${m5("(untouched \u2014 only Beacon's data is erased)")}`);console.log(` data: ${n(s.id)} ${m5("(deleted)")}`);if(!h5)console.log(b5("Nothing was changed.")),console.log(` Run \x1B[1mbeacon remove${MZ?` ${MZ}`:""} --yes\x1B[0m to apply.
|
|
7
|
+
`),process.exit(0);async function p8(Z){try{let{pid:$,port:Q}=JSON.parse(m8(g5(t(),"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 p8(s.id))console.log(` ${f5(`removed ${s.name} (via the running daemon)`)}
|
|
8
|
+
`);else{let Z=await x5(s.id);if(!Z.ok)console.error(`[beacon] remove failed: ${Z.error??"unknown error"}`),process.exit(1);console.log(` ${f5(`removed ${s.name}`)}
|
|
9
9
|
`)}if(h8(n(s.id)))console.error(`[beacon] warning: ${n(s.id)} still exists \u2014 remove it manually.`),process.exit(1);
|
package/dist/bin/stop-hook.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var
|
|
4
|
-
`).trim();return""}function
|
|
5
|
-
`);for(let
|
|
3
|
+
var s=Object.defineProperty;var o=(Q)=>Q;function a(Q,X){this[Q]=o.bind(null,X)}var r=(Q,X)=>{for(var Z in X)s(Q,Z,{get:X[Z],enumerable:!0,configurable:!0,set:a.bind(X,Z)})};var i=(Q,X)=>()=>(Q&&(X=Q(Q=0)),X);var u={};r(u,{provisionDb:()=>MQ});import{createClient as t}from"@libsql/client";import{drizzle as e}from"drizzle-orm/libsql";import{migrate as QQ}from"drizzle-orm/libsql/migrator";import{readMigrationFiles as XQ}from"drizzle-orm/migrator";import{dirname as O,join as ZQ}from"path";import{fileURLToPath as $Q}from"url";async function L(Q,X){return(await Q.execute({sql:"SELECT 1 FROM sqlite_master WHERE type='table' AND name = ?",args:[X]})).rows.length>0}async function KQ(Q,X){let Z=await Q.execute(`PRAGMA table_info("${X}")`);return new Set(Z.rows.map((J)=>String(J.name)))}async function R(Q){if(!await L(Q,"__drizzle_migrations"))return 0;let X=await Q.execute('SELECT count(*) AS n FROM "__drizzle_migrations"');return Number(X.rows[0]?.n??0)}async function VQ(Q){for(let[X,Z]of Object.entries(GQ)){if(!await L(Q,X))continue;let J=await KQ(Q,X);for(let $ of Z){if(!J.has($))continue;await Q.execute(`UPDATE "${X}" SET "${$}" = CAST((julianday("${$}") - 2440587.5) * 86400000 AS INTEGER) WHERE typeof("${$}") = 'text'`)}}}async function MQ(Q,X=YQ){let Z=t({url:Q});try{await Z.execute("PRAGMA journal_mode = WAL;"),await Z.execute("PRAGMA foreign_keys = ON;"),await Z.execute("PRAGMA busy_timeout = 5000;");let J=await L(Z,"__drizzle_migrations"),$=await L(Z,"Node"),Y=!1;if($&&!J){let M=XQ({migrationsFolder:X})[0];if(M)await Z.execute('CREATE TABLE IF NOT EXISTS "__drizzle_migrations" (id SERIAL PRIMARY KEY, hash text NOT NULL, created_at numeric)'),await Z.execute({sql:'INSERT INTO "__drizzle_migrations" ("hash", "created_at") VALUES (?, ?)',args:[M.hash,M.folderMillis]}),Y=!0}let G=await R(Z);if(await QQ(e(Z),{migrationsFolder:X}),await R(Z)>G)Y=!0;return await VQ(Z),{migrated:Y}}finally{Z.close()}}var JQ,YQ,GQ;var A=i(async()=>{JQ=O(O(O($Q(import.meta.url)))),YQ=process.env.BEACON_MIGRATIONS_DIR||ZQ(JQ,"drizzle"),GQ={Node:["createdAt","updatedAt"],Note:["createdAt","updatedAt"],DbTable:["createdAt","updatedAt"],Endpoint:["createdAt","updatedAt"],DraftTable:["createdAt"],SyncState:["codeGraphSyncedAt","updatedAt"],AppSetting:["updatedAt"],ProjectMeta:["updatedAt"],CodeFile:["updatedAt"]}});import{AsyncLocalStorage as BQ}from"async_hooks";import{spawnSync as UQ}from"child_process";import{createHash as NQ}from"crypto";import{existsSync as W,mkdirSync as N,readFileSync as j,writeFileSync as q}from"fs";import{homedir as v}from"os";import{basename as zQ,join as V,parse as LQ,resolve as F}from"path";function K(){return process.env.BEACON_HOME||V(v(),".beacon")}function I(){return V(K(),"workspaces.json")}function U(Q){return NQ("sha256").update(Q).digest("hex").slice(0,12)}function CQ(Q=process.cwd()){let X=UQ("git",["rev-parse","--show-toplevel"],{cwd:Q,stdio:["ignore","pipe","ignore"]});if(X.status===0){let Z=X.stdout?.toString().trim();if(Z)return Z}return Q}function x(Q){let X=F(Q);return X!==F(v())&&X!==LQ(X).root}function S(){return V(K(),"deleted.json")}function E(){try{let Q=JSON.parse(j(S(),"utf8"));return Array.isArray(Q)?Q:[]}catch{return[]}}function f(Q){N(K(),{recursive:!0}),q(S(),JSON.stringify(Q,null,2))}function y(Q){return E().includes(Q)}function tQ(Q){let X=E();if(!X.includes(Q))f([...X,Q])}function HQ(Q){let X=E();if(X.includes(Q))f(X.filter((Z)=>Z!==Q))}function C(Q){return V(K(),Q)}function OQ(Q){return`file:${V(C(Q),"db.sqlite")}`}function z(){try{let Q=JSON.parse(j(I(),"utf8"));return Array.isArray(Q)?Q:[]}catch{return[]}}function T(Q){N(K(),{recursive:!0}),q(I(),JSON.stringify(Q,null,2))}function P(){return z().sort((Q,X)=>X.lastOpenedAt.localeCompare(Q.lastOpenedAt))}function B(Q){return z().find((X)=>X.id===Q)??null}function w(Q,X,Z=new Date().toISOString()){if(!x(Q))throw Error(`beacon: refusing to register a non-repo path as a workspace: ${Q}`);let J=U(Q);if(y(J))throw Error(`beacon: workspace ${J} (${Q}) was deleted \u2014 run \`beacon\` or /beacon-init to re-add it`);let $=z(),Y=$.find((H)=>H.id===J),G={id:J,path:Q,name:X||Y?.name||zQ(Q),lastOpenedAt:Z},M=[G,...$.filter((H)=>H.id!==J)];return N(C(J),{recursive:!0}),T(M),G}function eQ(Q,X){return HQ(U(Q)),w(Q,X)}function QX(Q,X=new Date().toISOString()){let Z=z(),J=Z.find(($)=>$.id===Q);if(!J)return;J.lastOpenedAt=X,T(Z)}function XX(Q){if(T(z().filter((X)=>X.id!==Q)),D()===Q)_Q(P()[0]?.id??null)}function k(){return V(K(),"active")}function D(){try{return j(k(),"utf8").trim()||null}catch{return null}}function _Q(Q){N(K(),{recursive:!0}),q(k(),Q??"")}function ZX(){let Q=D();return Q?B(Q):null}function $X(){let Q=qQ()??D();return Q?B(Q):null}function JX(Q){return B(Q)?.path??null}function YX(){return W(I())}var g="beacon_ws";function m(Q,X){let Z=Q.headers.get("cookie");if(!Z)return null;for(let J of Z.split(";")){let $=J.indexOf("=");if($===-1)continue;if(J.slice(0,$).trim()===X)return decodeURIComponent(J.slice($+1).trim())}return null}function GX(Q){let X=Q.headers.get("x-beacon-workspace");if(X&&B(X))return X;let Z=m(Q,g);if(Z&&B(Z))return Z;return jQ()}function jQ(){let Q=P();return Q.length===1?Q[0].id:null}var b="x-beacon-workspace-path";function h(Q=process.cwd()){let X=CQ(Q);return{"x-beacon-workspace":U(X),[b]:X}}async function KX(Q){let X=Q.headers.get("x-beacon-workspace");if(X&&B(X))return X;let Z=Q.headers.get(b);if(Z&&x(Z)&&!y(U(Z))&&(!X||U(Z)===X)){let $=w(Z);return await IQ($.id),$.id}let J=m(Q,g);if(J&&B(J))return J;return null}var p=new BQ;function VX(Q,X){return Q?p.run(Q,X):X()}function qQ(){return p.getStore()??null}var _=new Set;function MX(Q){_.delete(V(C(Q),"db.sqlite"))}async function IQ(Q){let X=C(Q),Z=V(X,"db.sqlite"),J=W(Z);if(J&&_.has(Z))return{ok:!0,created:!1,migrated:!1};try{N(X,{recursive:!0});let{provisionDb:$}=await A().then(() => u),Y=await $(OQ(Q));return _.add(Z),{ok:!0,created:!J,migrated:J&&Y.migrated}}catch($){return{ok:!1,created:!1,migrated:!1,error:$ instanceof Error?$.message:String($)}}}import{connect as EQ}from"net";var c=4319;function TQ(Q,X,Z=400){return new Promise((J)=>{let $=EQ({host:Q,port:X}),Y=!1,G=(M)=>{if(Y)return;Y=!0,$.destroy(),J(M)};$.once("connect",()=>G(!0)),$.once("error",()=>G(!1)),$.setTimeout(Z,()=>G(!1))})}async function DQ(Q){for(let X of["127.0.0.1","::1"])if(await TQ(X,Q))return!1;return!0}async function NX(Q,X=20){for(let Z=Q;Z<Q+X;Z++)if(await DQ(Z))return Z;return Q}import{closeSync as fQ,fstatSync as yQ,openSync as PQ,readSync as wQ}from"fs";var RQ=[/\bshould i (go ahead|proceed|start|begin|continue|implement|build|kick)\b/i,/\b(want|do you want|would you like) me to (go ahead|proceed|start|begin|continue|implement|build|kick|do)\b/i,/\bshall i (proceed|start|begin|continue|implement|build|go)\b/i,/\bdoes (this|that|the plan|the approach|it) (look|sound) (right|good|ok|okay|fine)\b/i,/\b(looks?|sounds?) (right|good|fine) to you\b/i,/\blet me know (if|what|how|whether|once|when)\b/i,/\bbefore i (go|start|begin|implement|proceed|dive|write|send|build|continue|move|ship)\b/i,/\b(ready|good) to (proceed|implement|start|build|go)\b/i,/\b(things?|couple|two|a few)\b[^.?!]*\bto confirm\b/i,/\bto confirm[:?]/i,/\bif (this|that|it) looks (right|good|ok|okay)\b/i,/\bwaiting (for|on) your (approval|go-?ahead|sign-?off|ok|review|decision)\b/i,/\b(approve|green-?light|sign off on) (this|the plan|the approach|it)\b/i];function uQ(Q){if(!Q||!Q.trim())return!1;return RQ.some((X)=>X.test(Q))}function AQ(Q){if(typeof Q==="string")return Q;if(Array.isArray(Q))return Q.filter((X)=>(X?.type==="text"||X?.type==="output_text")&&typeof X.text==="string").map((X)=>X.text).join(`
|
|
4
|
+
`).trim();return""}function FQ(Q){let X=Q.split(`
|
|
5
|
+
`);for(let Z=X.length-1;Z>=0;Z--){let J=X[Z].trim();if(!J)continue;let $;try{$=JSON.parse(J)}catch{continue}let Y=$.message??$.payload??$;if((Y.role??$.type)!=="assistant")continue;return AQ(Y.content)}return""}function WQ(Q){let X=Q.split(/\n\s*\n/).map((Z)=>Z.trim()).filter(Boolean);return X.length?X[X.length-1]:""}function l(Q){return uQ(WQ(FQ(Q)))}import{readFileSync as vQ}from"fs";import{join as xQ}from"path";function SQ(){try{return JSON.parse(vQ(xQ(K(),"server.json"),"utf8"))}catch{return null}}function d(){if(process.env.BEACON_URL)return process.env.BEACON_URL;return`http://localhost:${SQ()?.port||process.env.PORT||c}`}var kQ="It looks like you ended your turn asking the user to approve a plan or decide how to "+"proceed \u2014 in prose. In this project, plans are reviewed on Beacon's /plan canvas, not in the "+"terminal. Present it through Beacon instead: call the `beacon_present_plan` MCP tool with your plan as markdown (embed a ```beacon block for any tables/endpoints/features). It opens /plan and BLOCKS until the user approves, discards, or leaves feedback, then returns their verdict. If this was NOT a plan (just a quick question), ignore this and continue.";function gQ(Q,X=65536){let Z=PQ(Q,"r");try{let J=yQ(Z).size,$=Math.max(0,J-X),Y=J-$;if(Y<=0)return"";let G=Buffer.alloc(Y);return wQ(Z,G,0,Y,$),G.toString("utf8")}finally{fQ(Z)}}var n="";for await(let Q of process.stdin)n+=Q;try{let Q=JSON.parse(n||"{}");if(Q.stop_hook_active)process.exit(0);let X=[];try{let J=typeof Q.session_id==="string"?Q.session_id:"",$=await fetch(`${d()}/api/changes/comment/claim?session=${encodeURIComponent(J)}`,{method:"POST",headers:h(typeof Q.cwd==="string"?Q.cwd:void 0),signal:AbortSignal.timeout(2500)}).catch(()=>null),Y=$?.ok?(await $.json().catch(()=>null))?.additionalContext:"";if(Y&&Y.trim())X.push(Y)}catch{}let Z=Q.transcript_path;if(typeof Z==="string"&&Z)try{if(l(gQ(Z)))X.push(kQ)}catch{}if(X.length)process.stdout.write(JSON.stringify({decision:"block",reason:X.join(`
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
`)}))}catch{}process.exit(0);
|