trybeacon 0.1.47 → 0.1.49
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +14 -12
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/routes-manifest.json +12 -0
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- 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/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/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 +2 -2
- 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/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/route.js +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/endpoints/[id]/route.js +1 -1
- package/.next/server/app/api/entities/route.js +1 -1
- package/.next/server/app/api/feedback/[id]/route.js +1 -1
- package/.next/server/app/api/feedback/[id]/vote/route.js +1 -1
- package/.next/server/app/api/feedback/route.js +1 -1
- package/.next/server/app/api/flags/route.js +1 -0
- package/.next/server/app/api/flags/route.js.nft.json +1 -0
- package/.next/server/app/api/flags/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/ingest/route.js +2 -2
- package/.next/server/app/api/init/route.js +1 -1
- package/.next/server/app/api/map/describe/route.js +2 -2
- package/.next/server/app/api/map/files/route.js +1 -1
- package/.next/server/app/api/map/finish/route.js +1 -1
- package/.next/server/app/api/map/route.js +1 -1
- package/.next/server/app/api/map/start/route.js +1 -1
- package/.next/server/app/api/map/touch-active/route.js +1 -1
- package/.next/server/app/api/nodes/[id]/position/route.js +1 -1
- package/.next/server/app/api/nodes/[id]/route.js +1 -1
- package/.next/server/app/api/nodes/positions/route.js +1 -1
- package/.next/server/app/api/nodes/route.js +1 -1
- package/.next/server/app/api/nodes/subtasks/route.js +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 +3 -3
- package/.next/server/app/api/plan/approve/route.js +2 -2
- 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/presence/route.js +1 -1
- package/.next/server/app/api/plan/route.js +1 -1
- package/.next/server/app/api/plan/verdict/route.js +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 +1 -0
- package/.next/server/app/api/scope-guard/check/route.js.nft.json +1 -0
- package/.next/server/app/api/scope-guard/check/route_client-reference-manifest.js +1 -0
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +2 -2
- package/.next/server/app/docs.segments/_full.segment.rsc +2 -2
- package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/docs.segments/_index.segment.rsc +2 -2
- 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/feedback/page.js +2 -2
- package/.next/server/app/feedback/page_client-reference-manifest.js +1 -1
- package/.next/server/app/feedback.html +1 -1
- package/.next/server/app/feedback.rsc +2 -2
- package/.next/server/app/feedback.segments/_full.segment.rsc +2 -2
- package/.next/server/app/feedback.segments/_head.segment.rsc +1 -1
- package/.next/server/app/feedback.segments/_index.segment.rsc +2 -2
- package/.next/server/app/feedback.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/feedback.segments/feedback/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/feedback.segments/feedback.segment.rsc +1 -1
- package/.next/server/app/help/page.js +2 -2
- 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 +2 -2
- package/.next/server/app/help.segments/_full.segment.rsc +2 -2
- package/.next/server/app/help.segments/_head.segment.rsc +1 -1
- package/.next/server/app/help.segments/_index.segment.rsc +2 -2
- 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 +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/plan/page.js +2 -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/settings/page.js +2 -2
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +14 -12
- package/.next/server/chunks/1341.js +1 -1
- package/.next/server/chunks/249.js +1 -1
- package/.next/server/chunks/2933.js +1 -1
- package/.next/server/chunks/{7208.js → 2999.js} +3 -3
- package/.next/server/chunks/3221.js +2 -2
- package/.next/server/chunks/3622.js +1 -1
- package/.next/server/chunks/4378.js +1 -1
- package/.next/server/chunks/4940.js +1 -1
- package/.next/server/chunks/7331.js +1 -0
- package/.next/server/chunks/9213.js +1 -1
- package/.next/server/chunks/9683.js +1 -1
- package/.next/server/chunks/9734.js +1 -1
- 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/3343-af1292b51a276724.js +1 -0
- package/.next/static/chunks/7323-480fb88e9d24f9e9.js +1 -0
- package/.next/static/chunks/app/_global-error/page-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/board-annotations/[id]/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/board-annotations/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/board-layout/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/bug-flags/[id]/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/bug-flags/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/code-graph/position/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/code-graph/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/context/feature/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/context/file/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/context/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/db/arrange/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/db/backfill-access/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/db/position/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/db/prune-planned/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/db/relations/[id]/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/db/tables/[id]/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/draft/approve/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/draft/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/draft/status/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/edges/[id]/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/edges/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/endpoints/[id]/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/entities/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/feedback/[id]/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/feedback/[id]/vote/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/feedback/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/flags/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/ingest/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/init/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/map/describe/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/map/files/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/map/finish/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/map/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/map/start/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/map/touch-active/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/position/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/nodes/positions/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/nodes/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/nodes/subtasks/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/notes/[id]/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/notes/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/open/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/plan/annotations/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/plan/approve/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/plan/history/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/plan/markdown/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/plan/presence/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/plan/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/plan/verdict/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/preferences/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/project-meta/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/reset/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/scope-guard/check/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/stream/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/tab/nav/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/tab/presence/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/telemetry/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/telemetry/stats/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/version/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/workspace/activate/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/api/workspace/route-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/app/map/page-66d71744ae3363d7.js +1 -0
- package/.next/static/chunks/app/page-541e900d67f17dae.js +1 -0
- package/.next/static/chunks/app/plan/page-e7d16fa2a3713a92.js +1 -0
- package/.next/static/chunks/app/settings/page-7e176d120b1effa9.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-dc3f0f4fd9e88c4e.js +1 -0
- package/.next/static/css/629ab377241de9ca.css +1 -0
- package/.next/static/qeqVD-yeoYO_3C0pw9kHg/_buildManifest.js +1 -0
- package/.next/trace +39 -39
- package/.next/trace-build +1 -1
- package/.next/types/app/api/flags/route.ts +351 -0
- package/.next/types/app/api/scope-guard/check/route.ts +351 -0
- package/.next/types/routes.d.ts +3 -1
- package/.next/types/validator.ts +18 -0
- package/dist/bin/beacon.js +7 -7
- package/dist/bin/doctor.js +33 -26
- package/dist/bin/guard.js +3 -0
- package/dist/bin/hook.js +33 -26
- package/dist/bin/mcp.js +42 -35
- package/dist/bin/plan.js +34 -27
- package/dist/bin/remove.js +7 -6
- package/dist/bin/uninstall.js +33 -26
- package/dist/lib/assets.js +20 -13
- package/dist/lib/codex-install.js +30 -23
- package/dist/lib/global-install.js +30 -23
- package/dist/lib/telemetry.js +1 -1
- package/dist/lib/workspaces.js +1 -1
- package/drizzle/0008_good_lucky_pierre.sql +21 -0
- package/drizzle/meta/0008_snapshot.json +1904 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +1 -1
- package/public/install.sh +37 -6
- package/.next/server/chunks/142.js +0 -1
- package/.next/static/OO5fwNXOYFYnu4W91Z44C/_buildManifest.js +0 -1
- package/.next/static/chunks/5811-4d1f942c37146b40.js +0 -1
- package/.next/static/chunks/8074-a6b2725786399e2c.js +0 -1
- package/.next/static/chunks/app/_global-error/page-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/board-annotations/[id]/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/board-annotations/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/board-layout/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/bug-flags/[id]/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/bug-flags/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/code-graph/position/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/code-graph/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/context/feature/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/context/file/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/context/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/db/arrange/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/db/backfill-access/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/db/position/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/db/prune-planned/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/db/relations/[id]/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/db/tables/[id]/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/draft/approve/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/draft/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/draft/status/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/edges/[id]/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/edges/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/endpoints/[id]/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/entities/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/feedback/[id]/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/feedback/[id]/vote/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/feedback/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/ingest/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/init/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/map/describe/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/map/files/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/map/finish/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/map/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/map/start/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/map/touch-active/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/position/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/nodes/positions/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/nodes/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/nodes/subtasks/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/notes/[id]/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/notes/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/open/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/plan/annotations/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/plan/approve/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/plan/history/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/plan/markdown/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/plan/presence/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/plan/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/plan/verdict/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/preferences/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/project-meta/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/reset/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/stream/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/tab/nav/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/tab/presence/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/telemetry/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/telemetry/stats/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/version/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/workspace/activate/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/api/workspace/route-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/app/map/page-a0bcd15b8dbfb3d3.js +0 -1
- package/.next/static/chunks/app/page-968dd5a6f667bff9.js +0 -1
- package/.next/static/chunks/app/plan/page-376f36858e187c73.js +0 -1
- package/.next/static/chunks/app/settings/page-67cab634be8bfef2.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-16ca2ed05a1d74d1.js +0 -1
- package/.next/static/css/2d019ca6e0582481.css +0 -1
- /package/.next/static/{OO5fwNXOYFYnu4W91Z44C → qeqVD-yeoYO_3C0pw9kHg}/_ssgManifest.js +0 -0
package/dist/bin/remove.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var g5=Object.defineProperty;var h5=(Z)=>Z;function b5(Z,$){this[Z]=h5.bind(null,$)}var TZ=(Z,$)=>{for(var Q in $)g5(Z,Q,{get:$[Q],enumerable:!0,configurable:!0,set:b5.bind($,Q)})};var K4=(Z,$)=>()=>(Z&&($=Z(Z=0)),$);var Y4={};TZ(Y4,{provisionDb:()=>t5});import{createClient as m5}from"@libsql/client";import{drizzle as p5}from"drizzle-orm/libsql";import{migrate as c5}from"drizzle-orm/libsql/migrator";import{readMigrationFiles as l5}from"drizzle-orm/migrator";import{dirname as yZ,join as d5}from"path";import{fileURLToPath as n5}from"url";async function _Z(Z,$){return(await Z.execute({sql:"SELECT 1 FROM sqlite_master WHERE type='table' AND name = ?",args:[$]})).rows.length>0}async function s5(Z,$){let Q=await Z.execute(`PRAGMA table_info("${$}")`);return new Set(Q.rows.map((J)=>String(J.name)))}async function X4(Z){if(!await _Z(Z,"__drizzle_migrations"))return 0;let $=await Z.execute('SELECT count(*) AS n FROM "__drizzle_migrations"');return Number($.rows[0]?.n??0)}async function a5(Z){for(let[$,Q]of Object.entries(i5)){if(!await _Z(Z,$))continue;let J=await s5(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 t5(Z,$=o5){let Q=m5({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 _Z(Q,"__drizzle_migrations"),V=await _Z(Q,"Node"),K=!1;if(V&&!J){let X=l5({migrationsFolder:$})[0];if(X)await Q.execute('CREATE TABLE IF NOT EXISTS "__drizzle_migrations" (id SERIAL PRIMARY KEY, hash text NOT NULL, created_at numeric)'),await Q.execute({sql:'INSERT INTO "__drizzle_migrations" ("hash", "created_at") VALUES (?, ?)',args:[X.hash,X.folderMillis]}),K=!0}let Y=await X4(Q);if(await c5(p5(Q),{migrationsFolder:$}),await X4(Q)>Y)K=!0;return await a5(Q),{migrated:K}}finally{Q.close()}}var r5,o5,i5;var G4=K4(async()=>{r5=yZ(yZ(yZ(n5(import.meta.url)))),o5=process.env.BEACON_MIGRATIONS_DIR||d5(r5,"drizzle"),i5={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 n7,renameSync as r7,rmSync as o7,writeFileSync as i7}from"fs";import{dirname as s7}from"path";function a7(Z,$){n7(s7(Z),{recursive:!0});let Q=`${Z}.tmp`;try{i7(Q,$),r7(Q,Z)}catch(J){throw o7(Q,{force:!0}),J}}function t7(Z,$,Q=!1){a7(Z,JSON.stringify($,null,Q?2:void 0))}var q5=()=>{};import{AsyncLocalStorage as e5}from"async_hooks";import{spawnSync as Z6}from"child_process";import{createHash as $6}from"crypto";import{existsSync as j4,mkdirSync as LZ,readFileSync as uZ,writeFileSync as xZ}from"fs";import{homedir as U4}from"os";import{basename as Q6,join as ZZ,parse as J6,resolve as M4}from"path";function a(){return process.env.BEACON_HOME||ZZ(U4(),".beacon")}function gZ(){return ZZ(a(),"workspaces.json")}function QZ(Z){return $6("sha256").update(Z).digest("hex").slice(0,12)}function hZ(Z=process.cwd()){let $=Z6("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 H4(Z){let $=M4(Z);return $!==M4(U4())&&$!==J6($).root}function W4(){return ZZ(a(),"deleted.json")}function bZ(){try{let Z=JSON.parse(uZ(W4(),"utf8"));return Array.isArray(Z)?Z:[]}catch{return[]}}function L4(Z){LZ(a(),{recursive:!0}),xZ(W4(),JSON.stringify(Z,null,2))}function C4(Z){return bZ().includes(Z)}function B4(Z){let $=bZ();if(!$.includes(Z))L4([...$,Z])}function V6(Z){let $=bZ();if($.includes(Z))L4($.filter((Q)=>Q!==Z))}function n(Z){return ZZ(a(),Z)}function JZ(Z){return`file:${ZZ(n(Z),"db.sqlite")}`}function CZ(){try{let Z=JSON.parse(uZ(gZ(),"utf8"));return Array.isArray(Z)?Z:[]}catch{return[]}}function mZ(Z){LZ(a(),{recursive:!0}),xZ(gZ(),JSON.stringify(Z,null,2))}function pZ(){return CZ().sort((Z,$)=>$.lastOpenedAt.localeCompare(Z.lastOpenedAt))}function x(Z){return CZ().find(($)=>$.id===Z)??null}function N4(Z,$,Q=new Date().toISOString()){if(!H4(Z))throw Error(`beacon: refusing to register a non-repo path as a workspace: ${Z}`);let J=QZ(Z);if(C4(J))throw Error(`beacon: workspace ${J} (${Z}) was deleted \u2014 run \`beacon\` or /beacon-init to re-add it`);let V=CZ(),K=V.find((j)=>j.id===J),Y={id:J,path:Z,name:$||K?.name||Q6(Z),lastOpenedAt:Q},X=[Y,...V.filter((j)=>j.id!==J)];return LZ(n(J),{recursive:!0}),mZ(X),Y}function f8(Z,$){return V6(QZ(Z)),N4(Z,$)}function u8(Z,$=new Date().toISOString()){let Q=CZ(),J=Q.find((V)=>V.id===Z);if(!J)return;J.lastOpenedAt=$,mZ(Q)}function q4(Z){if(mZ(CZ().filter(($)=>$.id!==Z)),r()===Z)K6(pZ()[0]?.id??null)}function O4(){return ZZ(a(),"active")}function r(){try{return uZ(O4(),"utf8").trim()||null}catch{return null}}function K6(Z){LZ(a(),{recursive:!0}),xZ(O4(),Z??"")}function X6(){let Z=r();return Z?x(Z):null}function x8(){let Z=DZ()??r();return Z?x(Z):null}function g8(Z){return x(Z)?.path??null}function h8(){return j4(gZ())}var A4="beacon_ws";function _4(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 b8(Z){let $=Z.headers.get("x-beacon-workspace");if($&&x($))return $;let Q=_4(Z,A4);if(Q&&x(Q))return Q;return null}var Y6="x-beacon-workspace-path";async function m8(Z){let $=Z.headers.get("x-beacon-workspace");if($&&x($))return $;let Q=Z.headers.get(Y6);if(Q&&H4(Q)&&!C4(QZ(Q))&&(!$||QZ(Q)===$)){let V=N4(Q);return await cZ(V.id),V.id}let J=_4(Z,A4);if(J&&x(J))return J;return null}var D4=new e5;function G6(Z,$){return Z?D4.run(Z,$):$()}function DZ(){return D4.getStore()??null}var fZ=new Set;function F4(Z){fZ.delete(ZZ(n(Z),"db.sqlite"))}async function cZ(Z){let $=n(Z),Q=ZZ($,"db.sqlite"),J=j4(Q);if(J&&fZ.has(Q))return{ok:!0,created:!1,migrated:!1};try{LZ($,{recursive:!0});let{provisionDb:V}=await G4().then(() => Y4),K=await V(JZ(Z));return fZ.add(Q),{ok:!0,created:!J,migrated:J&&K.migrated}}catch(V){return{ok:!1,created:!1,migrated:!1,error:V instanceof Error?V.message:String(V)}}}import{existsSync as q8,readFileSync as O8}from"fs";import{resolve as T5}from"path";import{rmSync as N8}from"fs";import{drizzle as k6}from"drizzle-orm/libsql";import{createClient as w6}from"@libsql/client";var lZ={};TZ(lZ,{tag:()=>jZ,syncState:()=>s,projectMeta:()=>L6,note:()=>U6,nodeTags:()=>KZ,nodeFile:()=>BZ,node:()=>w,endpointTable:()=>o,endpoint:()=>v,edge:()=>VZ,draftTable:()=>c,draftRelation:()=>XZ,draftColumn:()=>qZ,dbTable:()=>I,dbRelation:()=>l,dbColumn:()=>e,codeFileEdge:()=>u,codeFile:()=>f,bugFlag:()=>NZ,boardAnnotation:()=>H6,appSetting:()=>W6});import{sqliteTable as T,index as k,foreignKey as M6,text as W,integer as z,real as b,uniqueIndex as t,primaryKey as j6}from"drizzle-orm/sqlite-core";import{createId as h}from"@paralleldrive/cuid2";var w=T("Node",{id:W().primaryKey().$defaultFn(()=>h()),view:W().notNull(),kind:W().default("FEATURE").notNull(),cluster:W(),layer:W(),title:W().notNull(),role:W(),plain:W(),status:W().default("PENDING").notNull(),priority:z().default(2).notNull(),progress:z().default(0).notNull(),x:b().default(0).notNull(),y:b().default(0).notNull(),sourceRef:W(),externalId:W(),source:W().default("MANUAL").notNull(),planId:W(),parentId:W(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[k("Node_cluster_idx").on(Z.cluster),k("Node_parentId_idx").on(Z.parentId),k("Node_view_idx").on(Z.view),M6(()=>({columns:[Z.parentId],foreignColumns:[Z.id],name:"Node_parentId_Node_id_fk"})).onUpdate("cascade").onDelete("cascade")]),BZ=T("NodeFile",{id:W().primaryKey().$defaultFn(()=>h()),nodeId:W().notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),path:W().notNull()},(Z)=>[t("NodeFile_nodeId_path_key").on(Z.nodeId,Z.path),k("NodeFile_nodeId_idx").on(Z.nodeId)]),jZ=T("Tag",{id:W().primaryKey().$defaultFn(()=>h()),label:W().notNull(),color:W()},(Z)=>[t("Tag_label_key").on(Z.label)]),VZ=T("Edge",{id:W().primaryKey().$defaultFn(()=>h()),fromId:W().notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),toId:W().notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),kind:W().default("DEPENDS").notNull(),label:W(),sourceHandle:W(),targetHandle:W()},(Z)=>[t("Edge_fromId_toId_kind_key").on(Z.fromId,Z.toId,Z.kind),k("Edge_toId_idx").on(Z.toId),k("Edge_fromId_idx").on(Z.fromId)]),KZ=T("_NodeTags",{a:W("A").notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),b:W("B").notNull().references(()=>jZ.id,{onDelete:"cascade",onUpdate:"cascade"})},(Z)=>[t("_NodeTags_AB_unique").on(Z.a,Z.b),k("_NodeTags_B_index").on(Z.b)]),U6=T("Note",{id:W().primaryKey().$defaultFn(()=>h()),title:W().default("Untitled").notNull(),body:W().default("").notNull(),ord:b().default(0).notNull(),pinned:z({mode:"boolean"}).default(!1).notNull(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[k("Note_updatedAt_idx").on(Z.updatedAt)]),H6=T("BoardAnnotation",{id:W().primaryKey().$defaultFn(()=>h()),targetKind:W().notNull(),targetId:W().notNull(),columnName:W(),body:W().default("").notNull(),x:b(),y:b(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[k("BoardAnnotation_target_idx").on(Z.targetId)]),NZ=T("BugFlag",{id:W().primaryKey().$defaultFn(()=>h()),nodeId:W().notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),by:W().notNull(),note:W().notNull(),resolvedAt:z({mode:"timestamp_ms"}),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},(Z)=>[k("BugFlag_nodeId_idx").on(Z.nodeId)]),I=T("DbTable",{id:W().primaryKey().$defaultFn(()=>h()),name:W().notNull(),domain:W(),description:W(),source:W().default("MANUAL").notNull(),planId:W(),x:b().default(0).notNull(),y:b().default(0).notNull(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[k("DbTable_domain_idx").on(Z.domain),t("DbTable_name_key").on(Z.name)]),e=T("DbColumn",{id:W().primaryKey().$defaultFn(()=>h()),tableId:W().notNull().references(()=>I.id,{onDelete:"cascade",onUpdate:"cascade"}),name:W().notNull(),type:W().notNull(),isPk:z({mode:"boolean"}).default(!1).notNull(),isFk:z({mode:"boolean"}).default(!1).notNull(),nullable:z({mode:"boolean"}).default(!0).notNull(),note:W(),ord:z().default(0).notNull()},(Z)=>[t("DbColumn_tableId_name_key").on(Z.tableId,Z.name),k("DbColumn_tableId_idx").on(Z.tableId)]),l=T("DbRelation",{id:W().primaryKey().$defaultFn(()=>h()),fromTableId:W().notNull().references(()=>I.id,{onDelete:"cascade",onUpdate:"cascade"}),toTableId:W().notNull().references(()=>I.id,{onDelete:"cascade",onUpdate:"cascade"}),fromColumn:W().notNull(),toColumn:W().notNull(),label:W()},(Z)=>[k("DbRelation_toTableId_idx").on(Z.toTableId),k("DbRelation_fromTableId_idx").on(Z.fromTableId)]),v=T("Endpoint",{id:W().primaryKey().$defaultFn(()=>h()),method:W().notNull(),path:W().notNull(),domain:W(),description:W(),source:W().default("MANUAL").notNull(),planId:W(),x:b().default(0).notNull(),y:b().default(0).notNull(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},(Z)=>[t("Endpoint_method_path_key").on(Z.method,Z.path),k("Endpoint_domain_idx").on(Z.domain)]),o=T("EndpointTable",{id:W().primaryKey().$defaultFn(()=>h()),endpointId:W().notNull().references(()=>v.id,{onDelete:"cascade",onUpdate:"cascade"}),tableId:W().notNull().references(()=>I.id,{onDelete:"cascade",onUpdate:"cascade"}),access:W().default("read").notNull()},(Z)=>[t("EndpointTable_endpointId_tableId_key").on(Z.endpointId,Z.tableId),k("EndpointTable_tableId_idx").on(Z.tableId)]),c=T("DraftTable",{id:W().primaryKey().$defaultFn(()=>h()),name:W().notNull(),domain:W(),description:W(),x:b().default(0).notNull(),y:b().default(0).notNull(),createdAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},(Z)=>[t("DraftTable_name_key").on(Z.name)]),qZ=T("DraftColumn",{id:W().primaryKey().$defaultFn(()=>h()),tableId:W().notNull().references(()=>c.id,{onDelete:"cascade",onUpdate:"cascade"}),name:W().notNull(),type:W().notNull(),isPk:z({mode:"boolean"}).default(!1).notNull(),isFk:z({mode:"boolean"}).default(!1).notNull(),nullable:z({mode:"boolean"}).default(!0).notNull(),note:W(),ord:z().default(0).notNull()},(Z)=>[k("DraftColumn_tableId_idx").on(Z.tableId)]),XZ=T("DraftRelation",{id:W().primaryKey().$defaultFn(()=>h()),fromTableId:W().notNull().references(()=>c.id,{onDelete:"cascade",onUpdate:"cascade"}),toTableId:W().notNull().references(()=>c.id,{onDelete:"cascade",onUpdate:"cascade"}),fromColumn:W().notNull(),toColumn:W().notNull(),label:W()},(Z)=>[k("DraftRelation_toTableId_idx").on(Z.toTableId),k("DraftRelation_fromTableId_idx").on(Z.fromTableId)]),f=T("CodeFile",{path:W().primaryKey(),root:W(),lang:W(),x:b().default(0).notNull(),y:b().default(0).notNull(),mtimeMs:b(),size:z(),inDegree:z().default(0).notNull(),outDegree:z().default(0).notNull(),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),u=T("CodeFileEdge",{fromPath:W().notNull().references(()=>f.path,{onDelete:"cascade",onUpdate:"cascade"}),toPath:W().notNull().references(()=>f.path,{onDelete:"cascade",onUpdate:"cascade"}),circular:z({mode:"boolean"}).default(!1).notNull()},(Z)=>[k("CodeFileEdge_circular_idx").on(Z.circular),k("CodeFileEdge_toPath_idx").on(Z.toPath),k("CodeFileEdge_fromPath_idx").on(Z.fromPath),j6({columns:[Z.fromPath,Z.toPath],name:"CodeFileEdge_fromPath_toPath_pk"})]),s=T("SyncState",{id:W().primaryKey().default("singleton"),version:z().default(0).notNull(),codeGraphSyncedAt:z({mode:"timestamp_ms"}),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),W6=T("AppSetting",{id:W().primaryKey().default("singleton"),editor:W().default("auto").notNull(),currentFeatureId:W(),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),L6=T("ProjectMeta",{id:W().primaryKey().default("singleton"),overview:W(),conventions:W().default("[]").notNull(),hasFrontend:z({mode:"boolean"}),classificationRoots:W().default("[]").notNull(),updatedAt:z({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)});var dZ={};TZ(dZ,{tagRelations:()=>q6,nodeTagsRelations:()=>O6,nodeRelations:()=>C6,nodeFileRelations:()=>B6,endpointTableRelations:()=>P6,endpointRelations:()=>z6,edgeRelations:()=>A6,draftTableRelations:()=>I6,draftRelationRelations:()=>R6,draftColumnRelations:()=>E6,dbTableRelations:()=>_6,dbRelationRelations:()=>F6,dbColumnRelations:()=>D6,codeFileRelations:()=>S6,codeFileEdgeRelations:()=>v6,bugFlagRelations:()=>N6});import{relations as g}from"drizzle-orm";var C6=g(w,({one:Z,many:$})=>({files:$(BZ),bugFlags:$(NZ),nodeTags:$(KZ),edgesOut:$(VZ,{relationName:"EdgeFrom"}),edgesIn:$(VZ,{relationName:"EdgeTo"}),parent:Z(w,{fields:[w.parentId],references:[w.id],relationName:"NodeTree"}),children:$(w,{relationName:"NodeTree"})})),B6=g(BZ,({one:Z})=>({node:Z(w,{fields:[BZ.nodeId],references:[w.id]})})),N6=g(NZ,({one:Z})=>({node:Z(w,{fields:[NZ.nodeId],references:[w.id]})})),q6=g(jZ,({many:Z})=>({nodeTags:Z(KZ)})),O6=g(KZ,({one:Z})=>({node:Z(w,{fields:[KZ.a],references:[w.id]}),tag:Z(jZ,{fields:[KZ.b],references:[jZ.id]})})),A6=g(VZ,({one:Z})=>({from:Z(w,{fields:[VZ.fromId],references:[w.id],relationName:"EdgeFrom"}),to:Z(w,{fields:[VZ.toId],references:[w.id],relationName:"EdgeTo"})})),_6=g(I,({many:Z})=>({columns:Z(e),fksOut:Z(l,{relationName:"FkFrom"}),fksIn:Z(l,{relationName:"FkTo"}),usages:Z(o)})),D6=g(e,({one:Z})=>({table:Z(I,{fields:[e.tableId],references:[I.id]})})),F6=g(l,({one:Z})=>({fromTable:Z(I,{fields:[l.fromTableId],references:[I.id],relationName:"FkFrom"}),toTable:Z(I,{fields:[l.toTableId],references:[I.id],relationName:"FkTo"})})),z6=g(v,({many:Z})=>({tables:Z(o)})),P6=g(o,({one:Z})=>({endpoint:Z(v,{fields:[o.endpointId],references:[v.id]}),table:Z(I,{fields:[o.tableId],references:[I.id]})})),I6=g(c,({many:Z})=>({columns:Z(qZ),fksOut:Z(XZ,{relationName:"DraftFkFrom"}),fksIn:Z(XZ,{relationName:"DraftFkTo"})})),E6=g(qZ,({one:Z})=>({table:Z(c,{fields:[qZ.tableId],references:[c.id]})})),R6=g(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"})})),S6=g(f,({many:Z})=>({edgesOut:Z(u,{relationName:"CFEFrom"}),edgesIn:Z(u,{relationName:"CFETo"})})),v6=g(u,({one:Z})=>({fromFile:Z(f,{fields:[u.fromPath],references:[f.path],relationName:"CFEFrom"}),toFile:Z(f,{fields:[u.toPath],references:[f.path],relationName:"CFETo"})}));var T6={...lZ,...dZ};function y6(){let Z=process.env.DATABASE_URL;if(Z&&/^(file:|libsql:|wss?:|https?:|:memory:)/i.test(Z))return Z;return"file:./dev.db"}var f6=y6();function z4(Z){let $=w6({url:Z});return $.execute("PRAGMA foreign_keys = ON;"),$.execute("PRAGMA busy_timeout = 5000;"),k6($,{schema:T6})}var rZ=globalThis,nZ=rZ.dzDefault??z4(f6);rZ.dzDefault=nZ;var FZ=rZ.dzByUrl??=new Map;function oZ(Z){let $=FZ.get(Z);if(!$)$=z4(Z),FZ.set(Z,$);return $}function P4(Z){let $=FZ.get(Z);FZ.delete(Z);try{$?.$client?.close?.()}catch{}}function u6(){if(process.env.BEACON_REPO)return nZ;let Z=DZ()??r();if(!Z)return nZ;return oZ(JZ(Z))}var m=new Proxy({},{get(Z,$){let Q=u6(),J=Q[$];return typeof J==="function"?J.bind(Q):J}});import{existsSync as L8}from"fs";import{existsSync as R5,readFileSync as G8,watch as M8}from"fs";import{readFile as E5}from"fs/promises";import{join as AZ,relative as j8,resolve as U8}from"path";import{existsSync as c4,readFileSync as l4}from"fs";import{readdir as W7,readFile as L7,stat as d4}from"fs/promises";import{extname as n4,join as EZ,relative as HZ,resolve as UZ}from"path";import{extname as g4}from"path";import{dirname as x6,resolve as g6}from"path";var iZ=[".ts",".tsx",".js",".jsx",".mjs",".cjs"],h6=[/(?:^|[\n;])\s*(?:import|export)[^'"`\n]{0,4000}?from\s*['"]([^'"`]+)['"]/g,/(?:^|[\n;])\s*import\s*['"]([^'"`]+)['"]/g,/\brequire\(\s*['"]([^'"`]+)['"]\s*\)/g,/\bimport\(\s*['"]([^'"`]+)['"]\s*\)/g];function b6(Z){return Z.split(/[\\/]/).join("/")}function I4(Z,$){if($.has(Z))return Z;for(let Q of iZ){let J=`${Z}${Q}`;if($.has(J))return J}for(let Q of iZ){let J=`${Z}/index${Q}`;if($.has(J))return J}return null}function m6(Z){let $=new Set;for(let Q of h6)for(let J of Z.matchAll(Q))$.add(J[1]);return $}function p6(Z,$,Q,J){if(Z.startsWith(".")){let V=g6("/",x6($),Z),K=b6(V).replace(/^\//,"");return I4(K,Q)}for(let V of J)if(Z.startsWith(V.from)){let K=Z.slice(V.from.length),Y=V.to?`${V.to}/${K}`:K,X=I4(Y,Q);if(X)return X}return null}var E4={id:"ts",extensions:iZ,specifiers:m6,resolve(Z,$,Q){let J=p6(Z,$,Q.fileSet,Q.tsAliases??[]);return J?[J]:[]}};import{dirname as zZ,join as c6,normalize as l6}from"path";var d6=[".py",".pyi"],R4=[/(?:^|[\n;])\s*from\s+(\.*[\w.]*)\s+import\b/g,/(?:^|[\n;])\s*import\s+([\w.]+(?:\s*,\s*[\w.]+)*)/g];function S4(Z,$){for(let Q of[`${Z}.py`,`${Z}/__init__.py`,`${Z}.pyi`])if($.has(Q))return[Q];return[]}function n6(Z){let $=new Set;for(let Q of Z.matchAll(R4[0])){let J=Q[1].trim();if(J)$.add(J)}for(let Q of Z.matchAll(R4[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 v4={id:"python",extensions:d6,specifiers:n6,resolve(Z,$,Q){if(Z.startsWith(".")){let Y=Z.length-Z.replace(/^\.+/,"").length,X=Z.slice(Y),j=zZ($);for(let M=1;M<Y;M++)j=zZ(j);let B=X?c6(j,X.replace(/\./g,"/")):j;return S4(l6(B).replace(/\\/g,"/"),Q.fileSet)}let J=Z.replace(/\./g,"/"),V=[],K=zZ($);while(K&&K!=="."&&K!=="/")V.push(K),K=zZ(K);V.push("");for(let Y of V){let X=S4(Y?`${Y}/${J}`:J,Q.fileSet);if(X.length)return X}return[]}};import{dirname as r6}from"path";var o6=[".go"],i6=/(?:^|[\n;])\s*import\s+(?:[\w.]+\s+)?"([^"]+)"/g,s6=/(?:^|[\n;])\s*import\s*\(([\s\S]*?)\)/g,a6=/"([^"]+)"/g;function t6(Z){let $=new Set;for(let Q of Z.matchAll(i6))$.add(Q[1]);for(let Q of Z.matchAll(s6))for(let J of Q[1].matchAll(a6))$.add(J[1]);return $}var k4={id:"go",extensions:o6,resolve(Z,$,Q){let J=Q.goModulePath;if(!J)return[];let V=null;if(Z===J)V="";else if(Z.startsWith(`${J}/`))V=Z.slice(J.length+1);if(V===null)return[];let K=[];for(let Y of Q.fileSet){if(!Y.endsWith(".go"))continue;let X=r6(Y);if(V===""&&X==="."||X===V)K.push(Y)}return K.sort()},specifiers:t6};import{basename as w4,dirname as sZ,join as T4,normalize as y4}from"path";var e6=[".rs"],Z7=/(?:^|[\n;])\s*(?:pub\s+)?mod\s+(\w+)\s*;/g,$7=/(?:^|[\n;])\s*(?:pub\s+)?use\s+([\w:]+)/g;function Q7(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 aZ(Z,$){for(let Q of[`${Z}.rs`,`${Z}/mod.rs`])if($.has(Q))return[Q];return[]}var J7=new Set(["mod.rs","lib.rs","main.rs"]);function V7(Z){let $=new Set;for(let Q of Z.matchAll(Z7))$.add(`./${Q[1]}`);for(let Q of Z.matchAll($7)){let J=Q7(Q[1]);if(J)$.add(J)}return $}var f4={id:"rust",extensions:e6,specifiers:V7,resolve(Z,$,Q){let J=Q.fileSet;if(Z.startsWith("./")||Z.startsWith("../")){let V=Z.replace(/^\.\//,""),K=y4(T4(sZ($),Z)).replace(/\\/g,"/"),Y=aZ(K,J);if(Y.length)return Y;if(Z.startsWith("./")&&!J7.has(w4($))){let X=T4(sZ($),w4($,".rs"),V);if(Y=aZ(y4(X).replace(/\\/g,"/"),J),Y.length)return Y}return[]}if(Z.startsWith("crate/")){let V=$.split("/"),K=V.lastIndexOf("src"),Y=K>=0?V.slice(0,K+1).join("/"):sZ($),X=Z.slice(6).split("/");for(let j of[X.join("/"),X.slice(0,-1).join("/")]){if(!j)continue;let B=aZ(`${Y}/${j}`,J);if(B.length)return B}return[]}return[]}};import{dirname as K7,extname as X7,join as Y7,normalize as G7}from"path";var u4=[".swift",".java",".rb",".kt",".kts",".cs",".php",".scala",".c",".h",".cpp",".hpp",".cc",".hh",".m",".mm",".ex",".exs",".lua",".dart",".vue",".svelte"],M7=[/\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 j7(Z){let $=new Set;for(let Q of M7)for(let J of Z.matchAll(Q)){let V=J[1].trim();if(V)$.add(V)}return $}var x4={id:"fallback",extensions:u4,specifiers:j7,resolve(Z,$,Q){let V=[X7($).toLowerCase(),...u4].filter((j,B,M)=>j&&M.indexOf(j)===B),K=Z.includes("/")||Z.includes("\\"),Y=Z.startsWith(".")||K?Z.replace(/\\/g,"/"):Z.replace(/[.:]+/g,"/"),X=[G7(Y7(K7($),Y)).replace(/\\/g,"/"),Y.replace(/^\.\//,"")];for(let j of X){if(Q.fileSet.has(j))return[j];for(let B of V){let M=j.endsWith(B)?j:`${j}${B}`;if(Q.fileSet.has(M))return[M];if(Q.fileSet.has(`${j}/index${B}`))return[`${j}/index${B}`]}}return[]}};var U7=[E4,v4,k4,f4,x4],PZ=new Map;for(let Z of U7)for(let $ of Z.extensions)PZ.set($,Z);var H7={".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 tZ(Z){return PZ.get(g4(Z).toLowerCase())??null}function h4(Z){let $=g4(Z).toLowerCase();if(!PZ.has($))return null;return H7[$]??$.slice(1)}function eZ(){return new Set(PZ.keys())}var r4=new Set(["node_modules",".git",".next","dist","build","__pycache__","target",".venv","venv","env",".turbo","coverage",".beacon",".playwright-mcp","generated","migrations","alembic","migrate"]);function C7(Z=5){let $=performance.now();return async()=>{if(performance.now()-$>Z)await new Promise((Q)=>setImmediate(Q)),$=performance.now()}}var B7=()=>Promise.resolve();async function o4(Z,$,Q,J,V){let K;try{K=await W7($,{withFileTypes:!0})}catch{return}for(let Y of K){if(Y.name.startsWith("."))continue;if(r4.has(Y.name))continue;let X=EZ($,Y.name);if(Y.isDirectory()){await o4(Z,X,Q,J,V);continue}if(!Y.isFile())continue;if(Y.name.endsWith(".d.ts"))continue;if(!Q.has(n4(Y.name).toLowerCase()))continue;J.push(HZ(Z,X))}await V()}async function N7(Z,$=B7){let Q=[];return await o4(Z,Z,eZ(),Q,$),Q.map((J)=>J.split(/[\\/]/).join("/")).sort()}function q7(Z){try{return JSON.parse(Z)}catch{}let $=Z.replace(/\/\*[^"]*?\*\//g,"").replace(/(^|[^:"])\/\/.*$/gm,"$1").replace(/,\s*([}\]])/g,"$1");return JSON.parse($)}function b4(Z){return Z.replace(/^\.\/?/,"").replace(/\/$/,"")}function i4(Z){let $=EZ(Z,"tsconfig.json");if(!c4($))return[];let Q;try{Q=q7(l4($,"utf8"))}catch{return[]}let J=Q.compilerOptions?.paths??{},V=b4(Q.compilerOptions?.baseUrl??"."),K=[];for(let[Y,X]of Object.entries(J)){if(!Y.endsWith("/*")||!X.length)continue;let j=X[0];if(!j.endsWith("/*"))continue;let B=Y.slice(0,-1),M=b4(j.slice(0,-1)),L=[V,M].filter(Boolean).join("/");K.push({from:B,to:L})}return K}function IZ(Z){let $=EZ(Z,"go.mod");if(!c4($))return null;try{let Q=/^\s*module\s+(\S+)/m.exec(l4($,"utf8"));return Q?Q[1]:null}catch{return null}}function p(Z){return Z.split(/[\\/]/).join("/")}function s4(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 O7(Z,$,Q){let J=(Array.isArray(Z)?Z:[Z]).map((B)=>p(UZ(B))),V=p($?UZ($):J.length===1?J[0]:s4(J)),K=new Map,Y=[];for(let B of J){let M=p(HZ(V,B));for(let L of i4(B))Y.push({from:L.from,to:[M,L.to].filter(Boolean).join("/")});for(let L of await N7(B,Q)){let C=p(EZ(B,L)),q=p(HZ(V,C));if(K.has(q))continue;try{let U=await d4(C);K.set(q,{path:q,abs:C,root:M||null,mtimeMs:U.mtimeMs,size:U.size})}catch{}await Q()}}let X=J.map(IZ).find(Boolean)??IZ(V);return{metas:[...K.values()].sort((B,M)=>B.path.localeCompare(M.path)),ctx:{fileSet:new Set(K.keys()),tsAliases:Y,goModulePath:X}}}var m4=50000;function A7(Z){let $=0;for(let Q=0;Q<Z.length;Q++)if(Z.charCodeAt(Q)===10){if(Q-$>m4)return!0;$=Q+1}return Z.length-$>m4}async function p4(Z){let $=tZ(Z.path);if(!$||Z.size>200000)return new Set;try{let Q=await L7(Z.abs,"utf8");if(A7(Q))return new Set;return $.specifiers(Q)}catch{return new Set}}function a4(Z,$){let Q=(Array.isArray(Z)?Z:[Z]).map((U)=>p(UZ(U))),J=p($?UZ($):Q.length===1?Q[0]:s4(Q)),V=new Map,K=new Map,Y=[],X=null;function j(){Y=[];for(let U of Q){let H=p(HZ(J,U));for(let O of i4(U))Y.push({from:O.from,to:[H,O.to].filter(Boolean).join("/")})}X=Q.map(IZ).find(Boolean)??IZ(J)}function B(U){let H=U.split("/");for(let A=0;A<H.length;A++){let N=H[A];if(!N||N.startsWith("."))return!0;if(A<H.length-1&&r4.has(N))return!0}let O=H[H.length-1];if(O.endsWith(".d.ts"))return!0;return!eZ().has(n4(O).toLowerCase())}function M(U){let H=p(UZ(U));for(let O of Q)if(H===O||H.startsWith(`${O}/`)){let A=H.slice(O.length).replace(/^\/+/,"");if(B(A))return null;return{path:p(HZ(J,H)),root:p(HZ(J,O))||null}}return null}function L(){let U={fileSet:new Set(V.keys()),tsAliases:Y,goModulePath:X},H=[...V.values()].sort((N,G)=>N.path.localeCompare(G.path)),O=[];for(let N of H){let G=tZ(N.path);if(!G)continue;let _=K.get(N.path)??new Set,D=new Set;for(let R of _)for(let y of G.resolve(R,N.path,U)){if(!y||y===N.path||D.has(y))continue;D.add(y),O.push({from:N.path,to:y})}}return{files:H.map((N)=>({path:N.path,lang:h4(N.path),root:N.root,mtimeMs:N.mtimeMs,size:N.size})),edges:O}}async function C(){let U=C7(),{metas:H,ctx:O}=await O7(Z,$,U);V.clear(),K.clear();for(let A of H)await U(),V.set(A.path,A),K.set(A.path,await p4(A));return Y=O.tsAliases??[],X=O.goModulePath??null,L()}async function q(U){let H=p(UZ(U));if(!Q.some((D)=>H===D||H.startsWith(`${D}/`)))return!1;let O=H.split("/").pop()??"";if(O==="tsconfig.json"||O==="go.mod"){let D=H.slice(0,H.length-O.length-1);if(Q.includes(D))return j(),!0;return!1}let A=M(U);if(!A)return!1;let N;try{N=await d4(H)}catch{let D=V.delete(A.path);return K.delete(A.path),D}let G=V.get(A.path);if(G&&G.mtimeMs===N.mtimeMs&&G.size===N.size)return!1;let _={path:A.path,abs:H,root:A.root,mtimeMs:N.mtimeMs,size:N.size};return V.set(A.path,_),K.set(A.path,await p4(_)),!0}return{seed:C,applyChange:q,snapshot:L}}function t4(Z){let $=Object.keys(Z.tableVars),Q=new Map;if(!$.length){for(let Y of Z.routeFiles)Q.set(Y,[]);return Q}let J=new Map;for(let Y of Z.edges){let X=J.get(Y.from)??[];X.push(Y.to),J.set(Y.from,X)}let V=new Map($.map((Y)=>[Y,new RegExp(`(?:query\\.${Y}\\b|\\.from\\(\\s*${Y}\\b)`)])),K=new Map($.map((Y)=>[Y,new RegExp(`(?:insert|update|delete)\\(\\s*${Y}\\b`)]));for(let Y of Z.routeFiles){let X=new Set([Y]),j=[Y];for(let C=0;C<2&&X.size<25;C++){let q=[];for(let U of j)for(let H of J.get(U)??[]){if(X.has(H)||X.size>=25)continue;X.add(H),q.push(H)}j=q}let B=new Set,M=new Set;for(let C of X){let q=Z.content(C);if(!q)continue;for(let U of $){if(!B.has(U)&&V.get(U).test(q))B.add(U);if(!M.has(U)&&K.get(U).test(q))M.add(U)}}let L=[];for(let C of $){let q=B.has(C),U=M.has(C);if(!q&&!U)continue;L.push({table:Z.tableVars[C],access:q&&U?"read-write":U?"write":"read"})}Q.set(Y,L)}return Q}function e4(Z,$){if(/_JSON_OR_JSONB|\bJSONB\b|\bJSON\b/.test(Z))return"jsonb";let Q=Z.match(/\b(GUID|Uuid|UUID|String|Text|DateTime|Date|Time|BigInteger|SmallInteger|Integer|Boolean|Float|Numeric|Decimal|Vector|TSVECTOR|LargeBinary|Enum)\b\s*(\([^)]*\))?/);if(Q){let K=Q[2]??"",Y=K.match(/\d+/)?.[0];switch(Q[1]){case"GUID":case"Uuid":case"UUID":return"uuid";case"String":return Y?`varchar(${Y})`:"varchar";case"Text":return"text";case"DateTime":return/timezone\s*=\s*True/.test(K)?"timestamptz":"timestamp";case"Date":return"date";case"Time":return"time";case"BigInteger":return"bigint";case"SmallInteger":return"smallint";case"Integer":return"integer";case"Boolean":return"boolean";case"Float":return"float";case"Numeric":case"Decimal":return"numeric";case"Vector":return Y?`vector(${Y})`:"vector";case"TSVECTOR":return"tsvector";case"LargeBinary":return"bytea";case"Enum":return"varchar"}}let J=$.replace(/\s*\|\s*None/g,"").trim(),V=J.match(/^Optional\[([\s\S]*)\]$/);if(V)J=V[1].trim();if(/uuid/i.test(J))return"uuid";if(/datetime/i.test(J))return"timestamptz";if(/\bint\b/i.test(J))return"integer";if(/\bbool\b/i.test(J))return"boolean";if(/\bfloat\b/.test(J)&&!/\blist\b/.test(J))return"float";if(/\bdict\b|\blist\b|\bAny\b/.test(J))return"jsonb";return"text"}function RZ(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 _7(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 D7(Z,$,Q){let J=Q.match(/__tablename__\s*=\s*["']([^"']+)["']/)?.[1],V=[],K=[],Y=[],X=/(\w+)\s*:\s*Mapped\s*\[/g,j;while(j=X.exec(Q)){let L=j.index+j[0].length-1,C=_7(Q,L);if(C===null)continue;let q=L+C.length+2,U=Q.slice(q).match(/^\s*=\s*(\w+)\s*\(/);if(!U||U[1]!=="mapped_column")continue;Y.push({colName:j[1],pyType:C,argsAt:q+U[0].length-1})}let B=/(\w+)\s*=\s*(mapped_column|Column)\s*\(/g;while(j=B.exec(Q))Y.push({colName:j[1],pyType:"",argsAt:j.index+j[0].length-1});Y.sort((L,C)=>L.argsAt-C.argsAt);let M=new Set;for(let L of Y){if(M.has(L.colName)||L.colName==="__tablename__")continue;M.add(L.colName);let C=RZ(Q,L.argsAt),q=/primary_key\s*=\s*True/.test(C)||void 0,U=/nullable\s*=\s*False/.test(C)?!1:!0,H=C.match(/ForeignKey\(\s*["']([^"']+?)\.([^"'.]+)["']/);if(V.push({name:L.colName,type:e4(C,L.pyType),isPk:q,isFk:H?!0:void 0,nullable:U}),H)K.push({column:L.colName,toTable:H[1],toColumn:H[2]})}return{name:Z,bases:$,tableName:J,columns:V,fks:K}}function F7(Z){let $=[],Q=[],J=/\bTable\s*(\()\s*["']([^"']+)["']\s*,/g,V;while(V=J.exec(Z)){let K=V[2],Y=RZ(Z,V.index+V[0].indexOf("("));if(!/\bmetadata\b/.test(Y)||!/\bColumn\s*\(/.test(Y))continue;let X=[],j=/\bColumn\s*\(/g,B;while(B=j.exec(Y)){let M=RZ(Y,B.index+B[0].length-1),L=M.match(/^\s*["'](\w+)["']\s*,/)?.[1];if(!L)continue;let C=/primary_key\s*=\s*True/.test(M)||void 0,q=/nullable\s*=\s*False/.test(M)?!1:!0,U=M.match(/ForeignKey\(\s*["']([^"']+?)\.([^"'.]+)["']/);if(X.push({name:L,type:e4(M,""),isPk:C,isFk:U?!0:void 0,nullable:q}),U)Q.push({fromTable:K,fromColumn:L,toTable:U[1],toColumn:U[2]})}if(X.length)$.push({name:K,columns:X})}return{tables:$,relations:Q}}function z7(Z){let $=new Map,Q={tables:[],relations:[]};for(let X of Z){if(!X.path.endsWith(".py"))continue;if(!/mapped_column\s*\(|__tablename__|\bTable\s*\(\s*["']/.test(X.content))continue;let j=F7(X.content);Q.tables.push(...j.tables),Q.relations.push(...j.relations);let B=/^class\s+(\w+)\s*\(([^)]*)\)\s*:/gm,M,L=[];while(M=B.exec(X.content))L.push({name:M[1],bases:M[2].split(",").map((C)=>C.trim().split(/[.[]/)[0]).filter(Boolean),at:M.index});for(let C=0;C<L.length;C++){let q=X.content.slice(L[C].at,L[C+1]?.at??X.content.length),U=D7(L[C].name,L[C].bases,q);$.set(U.name,U)}}if(![...$.values()].some((X)=>X.tableName)&&!Q.tables.length)return{tables:[],relations:[]};let J=(X,j=new Set)=>{if(j.has(X.name))return[];j.add(X.name);let B=[];for(let M of X.bases){let L=$.get(M);if(L&&!L.tableName)B.push(...J(L,j))}return B.push(...X.columns),B},V=[],K=[];for(let X of $.values()){if(!X.tableName)continue;let j=J(X),B=new Map;for(let U of j)if(!B.has(U.name))B.set(U.name,U);let M=[...B.values()],L=(U)=>M.splice(M.findIndex((H)=>H.name===U),1)[0],C=M.some((U)=>U.name==="id")?L("id"):null,q=["created_at","updated_at","deleted_at"].filter((U)=>M.some((H)=>H.name===U)).map((U)=>L(U));V.push({name:X.tableName,columns:[...C?[C]:[],...M,...q]});for(let U of X.fks)K.push({fromTable:X.tableName,fromColumn:U.column,toTable:U.toTable,toColumn:U.toColumn})}let Y=new Set(V.map((X)=>X.name));for(let X of Q.tables)if(!Y.has(X.name))V.push(X);return K.push(...Q.relations.filter((X)=>!Y.has(X.fromTable))),{tables:V,relations:K}}function P7(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 I7(Z){let $=[],Q=[];for(let J of Z){if(!J.path.endsWith(".prisma"))continue;let V=/model\s+(\w+)\s*\{([\s\S]*?)\}/g,K;while(K=V.exec(J.content)){let Y=K[1],X=K[2].match(/@@map\(\s*["']([^"']+)["']\s*\)/)?.[1]??Y,j=[];for(let B of K[2].split(`
|
|
4
|
-
`)){let M=B.trim().match(/^(\w+)\s+(\w+(?:\[\])?\??)\s*(.*)$/);if(!M||/^@@/.test(B.trim()))continue;let[,L,C,q]=M,U=/^(String|Int|BigInt|Float|Decimal|Boolean|DateTime|Json|Bytes)(\[\])?\??$/.test(C),H=q.match(/@relation\([^)]*fields:\s*\[(\w+)\][^)]*references:\s*\[(\w+)\]/);if(H)Q.push({fromTable:X,fromColumn:H[1],toTable:C.replace(/[?[\]]/g,""),toColumn:H[2]});if(!U)continue;j.push({name:L,type:P7(C),isPk:/@id\b/.test(q)||void 0,isFk:/@relation\b/.test(q)||void 0,nullable:C.endsWith("?")})}if(j.length)$.push({name:X,columns:j})}}return{tables:$,relations:Q}}function E7(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 R7(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 S7(Z){let $=[],Q=/(\w+)\s*:\s*(text|integer|real|blob|numeric|varchar|boolean|timestamp|serial|uuid|json|jsonb)\s*\(/g;for(let K of Z){if(!/\.(ts|tsx|mts|cts)$/.test(K.path))continue;if(!/\b(?:sqliteTable|pgTable|mysqlTable)\s*\(/.test(K.content))continue;let Y=/(?:export\s+)?const\s+(\w+)\s*=\s*(?:sqliteTable|pgTable|mysqlTable)\s*\(\s*["']([^"']+)["']\s*,/g,X;while(X=Y.exec(K.content)){let j=K.content.indexOf("{",X.index+X[0].length);if(j<0)continue;let B=R7(K.content,j),M={varName:X[1],tableName:X[2],columns:[],colByProp:new Map,fks:[]},L=[];Q.lastIndex=0;for(let C of B.matchAll(Q))L.push({prop:C[1],builder:C[2],at:C.index,argOpen:C.index+C[0].length-1});L.forEach((C,q)=>{let U=B.slice(C.at,L[q+1]?.at??B.length),H=RZ(B,C.argOpen),A=H.match(/^\s*["']([^"']+)["']/)?.[1]??C.prop,N=U.match(/\.references\(\s*\(\)\s*=>\s*(\w+)\.(\w+)/);if(M.columns.push({name:A,type:E7(C.builder,H),isPk:/\.primaryKey\(\)/.test(U)||void 0,isFk:N?!0:void 0,nullable:/\.notNull\(\)/.test(U)?!1:!0}),M.colByProp.set(C.prop,A),N)M.fks.push({column:A,toVar:N[1],toProp:N[2]})}),$.push(M)}}if(!$.length)return{tables:[],relations:[]};let J=new Map($.map((K)=>[K.varName,K])),V=[];for(let K of $)for(let Y of K.fks){let X=J.get(Y.toVar);if(!X)continue;V.push({fromTable:K.tableName,fromColumn:Y.column,toTable:X.tableName,toColumn:X.colByProp.get(Y.toProp)??Y.toProp})}return{tables:$.map((K)=>({name:K.tableName,columns:K.columns})),relations:V,tableVars:Object.fromEntries($.map((K)=>[K.varName,K.tableName]))}}function Z5(Z){let $=S7(Z);if($.tables.length)return $;let Q=I7(Z);if(Q.tables.length)return Q;return z7(Z)}var v7=["GET","POST","PUT","PATCH","DELETE"];function k7(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 $5(Z){let $=[];for(let Q of Z){let J=k7(Q.path);if(!J)continue;for(let V of v7)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 w7=/(^|\/)app\/.*\/route\.(ts|tsx|js|jsx|mjs)$/,T7=/\.(ts|py)$/,y7=/(schema|model)/i,f7=/(\.(test|spec)\.[jt]sx?$)|(^|\/)(tests?|__tests__|__mocks__)\/|(^|\/)test_[^/]+\.py$|_test\.py$/;function Z4(Z){if(f7.test(Z))return!1;if(Z.endsWith(".prisma"))return!0;if(w7.test(Z))return!0;return T7.test(Z)&&y7.test(Z)}function Q5(Z,$=300){return Z.filter(Z4).slice(0,$)}import{z as d}from"zod";import{and as D5,eq as WZ,inArray as V8,notInArray as K8}from"drizzle-orm";import{z as P}from"zod";import{and as e7,eq as kZ,inArray as Q4,notInArray as Z8,or as $8,sql as Q8}from"drizzle-orm";var J5=240,V5=50;function K5(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+J5&&J.x+J5>V.x&&J.y<V.y+V5&&J.y+V5>V.y)return!0}return!1}import{eq as u7}from"drizzle-orm";var X5=(Z)=>Z.replace(/\{[^}]*\}/g,"{}");function x7(Z,$){if(Z.method.toUpperCase()!==$.method.toUpperCase())return!1;let Q=X5(Z.path),J=X5($.path);return J===Q||J.endsWith(Q)}async function Y5(Z=m){let[$,Q]=await Promise.all([Z.query.endpoint.findMany({where:(V,{ne:K})=>K(V.source,"INTROSPECTION")}),Z.query.endpoint.findMany({where:(V,{eq:K})=>K(V.source,"INTROSPECTION")})]),J={collapsed:0,mappings:[]};for(let V of $){let K=Q.find((Y)=>x7(V,Y));if(!K)continue;await Z.delete(v).where(u7(v.id,V.id)),J.collapsed++,J.mappings.push({planned:`${V.method} ${V.path}`,code:`${K.method} ${K.path}`})}return J}import{and as G5,inArray as g7,isNull as M5,ne as j5,or as h7}from"drizzle-orm";var b7=new Set(["DONE","CANCELLED","DEPRIORITIZED"]);async function m7(Z){let $=await Z.query.node.findMany({where:(J,{and:V,eq:K,isNotNull:Y})=>V(K(J.view,"ROADMAP"),Y(J.planId)),columns:{planId:!0,status:!0}}),Q=new Map;for(let J of $){let V=J.planId;Q.set(V,(Q.get(V)??!0)&&b7.has(J.status))}return[...Q.entries()].filter(([,J])=>J).map(([J])=>J)}async function U5(Z=m){let $=await m7(Z),Q=(K)=>$.length?h7(M5(K.planId),g7(K.planId,$)):M5(K.planId),J=await Z.delete(I).where(G5(j5(I.source,"INTROSPECTION"),Q(I))).returning({id:I.id}),V=await Z.delete(v).where(G5(j5(v.source,"INTROSPECTION"),Q(v))).returning({id:v.id});return{tables:J.length,endpoints:V.length}}var W5=320;function $Z(Z){return 36+Math.max(0,Z)*30+16}var YZ=60,p7=280,SZ=14,H5=120,OZ=170,c7=2560;var vZ=(Z)=>(Z??"").trim()||"\u2014";function l7(Z,$,Q){let J=new Map;for(let K of Z.uses){if(!$.has(K.tableId))continue;J.set(K.tableId,(J.get(K.tableId)??0)+1)}let V=null;for(let[K,Y]of J){if(V===null){V=K;continue}let X=J.get(V);if(Y>X){V=K;continue}if(Y<X)continue;let j=Q?.get(K)??0,B=Q?.get(V)??0;if(j<B)V=K;else if(j===B&&$.get(K).localeCompare($.get(V))<0)V=K}return V}function $4(Z,$){let Q=new Map(Z.map((V)=>[V.id,V.name])),J=new Map;for(let V of $)for(let K of V.uses){if(!Q.has(K.tableId))continue;J.set(K.tableId,(J.get(K.tableId)??0)+1)}return new Map($.map((V)=>[V.id,l7(V,Q,J)]))}var d7=(Z,$)=>Z.path.localeCompare($.path)||Z.method.localeCompare($.method)||Z.id.localeCompare($.id);function L5(Z,$){let Q=$4(Z,$),J=new Map,V=[];for(let N of[...$].sort(d7)){let G=Q.get(N.id)??null;if(G){let _=J.get(G);if(_)_.push(N);else J.set(G,[N])}else V.push(N)}let K=(N)=>{let G=J.get(N.id)?.length??0;return $Z(N.columnCount)+(G?SZ+G*YZ:0)+50},Y=Array.from(new Set(Z.map((N)=>vZ(N.domain)))),X=Y.filter((N)=>N!=="\u2014").sort(),j=Y.includes("\u2014")?[...X,"\u2014"]:X,B=[];for(let N of j){let G=Z.filter((S)=>vZ(S.domain)===N).sort((S,E)=>S.name.localeCompare(E.name)),_=G.reduce((S,E)=>S+K(E),0),D=Math.max(1,Math.min(12,G.length,Math.round(Math.sqrt(_/320)))),R=Array(D).fill(0),y=new Map;for(let S of G){let E=0;for(let F=1;F<D;F++)if(R[F]<R[E])E=F;y.set(S.id,{x:E*320,y:R[E]}),R[E]+=K(S)}B.push({d:N,w:D*320,h:Math.max(...R,0),tableLocal:y})}let M=B.reduce((N,G)=>N+(G.w+H5)*(G.h+OZ),0),L=Math.max(c7,Math.round(Math.sqrt(M*2.2))),C=new Map,q=new Map,U=0,H=0,O=0,A=0;for(let N of B){if(U>0&&U+N.w>L)H+=O+OZ,U=0,O=0;let G=Z.filter((_)=>N.tableLocal.has(_.id));for(let _ of G){let D=N.tableLocal.get(_.id),R=U+D.x,y=H+D.y;C.set(_.id,{x:R,y}),(J.get(_.id)??[]).forEach((E,F)=>{q.set(E.id,{x:R,y:y+$Z(_.columnCount)+SZ+F*YZ})})}O=Math.max(O,N.h),A=Math.max(A,H+N.h),U+=N.w+H5}if(V.length){let N=A+OZ,G=Math.max(1,Math.min(4,Math.ceil(Math.sqrt(V.length/2))));V.forEach((_,D)=>{q.set(_.id,{x:D%G*p7,y:N+Math.floor(D/G)*YZ})})}return{tables:C,endpoints:q}}function C5(Z,$,Q){let J=$4($,Q),V=new Map;for(let q of Q){let U=J.get(q.id);if(U)V.set(U,(V.get(U)??0)+1)}let K=(q)=>{let U=V.get(q.id)??0;return q.y+$Z(q.columnCount)+(U?SZ+U*YZ:0)},Y=vZ(Z.domain),X=$.filter((q)=>vZ(q.domain)===Y);if(!X.length){let q=$.length?Math.max(...$.map(K),...Q.map((U)=>U.y+YZ)):0;return{x:0,y:$.length||Q.length?q+OZ:0}}let j=Math.min(...X.map((q)=>q.x)),B=X.map((q)=>Math.max(0,Math.round((q.x-j)/320))),M=Math.min(12,Math.max(...B)+1),L=Array(M).fill(Math.min(...X.map((q)=>q.y)));X.forEach((q,U)=>{let H=Math.min(B[U],M-1);L[H]=Math.max(L[H],K(q)+50)});let C=0;for(let q=1;q<M;q++)if(L[q]<L[C])C=q;return{x:j+C*320,y:L[C]}}function B5(Z,$,Q){let J=$4($,[...Q,Z]),V=J.get(Z.id),K=V?$.find((X)=>X.id===V):void 0;if(K){let X=Q.filter((M)=>J.get(M.id)===K.id),j=K.y+$Z(K.columnCount)+SZ,B=X.length?Math.max(...X.map((M)=>M.y))+YZ:j;return{x:K.x,y:B}}let Y=[...$.map((X)=>X.y+$Z(X.columnCount)),...Q.map((X)=>X.y+YZ)];return{x:0,y:Y.length?Math.max(...Y)+OZ:0}}function N5(Z){let $=W5-20;for(let Q=0;Q<Z.length;Q++)for(let J=Q+1;J<Z.length;J++){let V=Z[Q],K=Z[J],Y=$Z(V.columnCount),X=$Z(K.columnCount);if(V.x<K.x+$&&V.x+$>K.x&&V.y<K.y+X&&V.y+Y>K.y)return!0}return!1}import{eq as O5}from"drizzle-orm";q5();async function A5(Z=m){let[$,Q]=await Promise.all([Z.query.dbTable.findMany({with:{columns:{columns:{id:!0}}},orderBy:(K,{asc:Y})=>Y(K.name)}),Z.query.endpoint.findMany({with:{tables:{columns:{tableId:!0}}}})]),J=L5($.map((K)=>({id:K.id,name:K.name,domain:K.domain,columnCount:K.columns.length})),Q.map((K)=>({id:K.id,method:K.method,path:K.path,uses:K.tables.map((Y)=>({tableId:Y.tableId}))}))),V=0;for(let K of $){let Y=J.tables.get(K.id);if(!Y||Math.round(Y.x)===Math.round(K.x)&&Math.round(Y.y)===Math.round(K.y))continue;await Z.update(I).set({x:Y.x,y:Y.y}).where(O5(I.id,K.id)),V++}for(let K of Q){let Y=J.endpoints.get(K.id);if(!Y||Math.round(Y.x)===Math.round(K.x)&&Math.round(Y.y)===Math.round(K.y))continue;await Z.update(v).set({x:Y.x,y:Y.y}).where(O5(v.id,K.id)),V++}return V}var J8=P.object({tables:P.array(P.object({name:P.string().trim().min(1),domain:P.string().nullish(),description:P.string().nullish(),columns:P.array(P.object({name:P.string().trim().min(1),type:P.string().trim().min(1),isPk:P.boolean().optional(),isFk:P.boolean().optional(),nullable:P.boolean().optional(),note:P.string().nullish()})).default([])})).default([]),relations:P.array(P.object({fromTable:P.string(),fromColumn:P.string(),toTable:P.string(),toColumn:P.string(),label:P.string().nullish()})).default([]),endpoints:P.array(P.object({method:P.string().trim().min(1),path:P.string().trim().min(1),domain:P.string().nullish(),description:P.string().nullish(),uses:P.array(P.object({table:P.string(),access:P.string().default("read")})).default([])})).default([])});async function wZ(Z=m){let[$]=await Z.insert(s).values({id:"singleton",version:1}).onConflictDoUpdate({target:s.id,set:{version:Q8`${s.version} + 1`}}).returning();return $.version}async function _5(Z,$=m,Q={}){let J=J8.parse(Z),V=J.tables.length>0,K=J.endpoints.length>0,Y=J.tables.map((G)=>G.name);if(V)await $.delete(I).where(Y.length?e7(kZ(I.source,"INTROSPECTION"),Z8(I.name,Y)):kZ(I.source,"INTROSPECTION"));let X=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}}}}),B=new Map(X.map((G)=>[G.name,G])),M=X.map((G)=>({id:G.id,name:G.name,domain:G.domain,columnCount:G.columns.length,x:G.x,y:G.y})),L=j.map((G)=>({id:G.id,method:G.method,path:G.path,uses:G.tables.map((_)=>({tableId:_.tableId})),x:G.x,y:G.y})),C=new Map;for(let G of J.tables){if(B.has(G.name))continue;let _=C5({domain:G.domain??null,columnCount:G.columns.length},M,L);C.set(G.name,_),M.push({id:`new:${G.name}`,name:G.name,domain:G.domain??null,columnCount:G.columns.length,..._})}let q=new Map;for(let G of J.tables){let _=B.get(G.name),D=C.get(G.name),R=_?.x??D?.x??0,y=_?.y??D?.y??0,[S]=await $.insert(I).values({name:G.name,domain:G.domain??null,description:G.description??null,source:"INTROSPECTION",x:R,y}).onConflictDoUpdate({target:I.name,set:{...G.domain!=null?{domain:G.domain}:{},...G.description!=null?{description:G.description}:{},source:"INTROSPECTION"}}).returning();if(q.set(G.name,S.id),await $.delete(e).where(kZ(e.tableId,S.id)),G.columns.length)await $.insert(e).values(G.columns.map((E,F)=>({tableId:S.id,name:E.name,type:E.type,isPk:E.isPk??!1,isFk:E.isFk??!1,nullable:E.nullable??!0,note:E.note??null,ord:F})))}let U=[...q.values()];if(U.length)await $.delete(l).where($8(Q4(l.fromTableId,U),Q4(l.toTableId,U)));for(let G of J.relations){let _=q.get(G.fromTable),D=q.get(G.toTable);if(!_||!D)continue;await $.insert(l).values({fromTableId:_,toTableId:D,fromColumn:G.fromColumn,toColumn:G.toColumn,label:G.label??`${G.fromColumn} \u2192 ${G.toTable}.${G.toColumn}`})}let H=new Set(J.endpoints.map((G)=>`${G.method} ${G.path}`));if(K){let _=(await $.query.endpoint.findMany({where:(D,{eq:R})=>R(D.source,"INTROSPECTION")})).filter((D)=>!H.has(`${D.method} ${D.path}`)).map((D)=>D.id);if(_.length)await $.delete(v).where(Q4(v.id,_))}for(let G of M)if(G.id.startsWith("new:"))G.id=q.get(G.name)??G.id;for(let G of J.endpoints){let _=await $.query.endpoint.findFirst({where:(S,{and:E,eq:F})=>E(F(S.method,G.method),F(S.path,G.path))}),D,R;if(_)D=_.x,R=_.y;else{let S={id:`new:${G.method} ${G.path}`,method:G.method,path:G.path,uses:G.uses.map((F)=>({tableId:q.get(F.table)??""})).filter((F)=>F.tableId)},E=B5(S,M,L);D=E.x,R=E.y,L.push({...S,x:D,y:R})}let[y]=await $.insert(v).values({method:G.method,path:G.path,domain:G.domain??null,description:G.description??null,source:"INTROSPECTION",x:D,y:R}).onConflictDoUpdate({target:[v.method,v.path],set:{...G.domain!=null?{domain:G.domain}:{},...G.description!=null?{description:G.description}:{},source:"INTROSPECTION"}}).returning();if(!Q.partial||G.uses.length>0)await $.delete(o).where(kZ(o.endpointId,y.id));for(let S of G.uses){let E=q.get(S.table)??(await $.query.dbTable.findFirst({where:(F,{eq:MZ})=>MZ(F.name,S.table)}))?.id;if(!E)continue;await $.insert(o).values({endpointId:y.id,tableId:E,access:S.access})}}await Y5($),await U5($);let O=await $.query.dbTable.findMany({where:(G,{eq:_})=>_(G.source,"INTROSPECTION"),columns:{x:!0,y:!0},with:{columns:{columns:{id:!0}}}}),A=await $.select({x:v.x,y:v.y}).from(v);if(N5(O.map((G)=>({x:G.x,y:G.y,columnCount:G.columns.length})))||K5(A))await A5($);let N=await wZ($);return{tables:J.tables.length,relations:J.relations.length,endpoints:J.endpoints.length,version:N}}var F5=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 z5(Z,$){let Q=new Map;for(let C of Z)Q.set(C,[]);for(let C of $)Q.get(C.from)?.push(C.to);let J=new Map,V=new Map,K=new Set,Y=[],X=new Map,j=[],B=0,M=0;for(let C of Z){if(J.has(C))continue;let q=[{v:C,iter:0}];J.set(C,B),V.set(C,B),B++,Y.push(C),K.add(C);while(q.length){let U=q[q.length-1],H=Q.get(U.v)??[];if(U.iter<H.length){let O=H[U.iter++];if(!J.has(O))J.set(O,B),V.set(O,B),B++,Y.push(O),K.add(O),q.push({v:O,iter:0});else if(K.has(O))V.set(U.v,Math.min(V.get(U.v),J.get(O)))}else{if(V.get(U.v)===J.get(U.v)){let A=0,N;do N=Y.pop(),K.delete(N),X.set(N,M),A++;while(N!==U.v);j.push(A),M++}q.pop();let O=q[q.length-1];if(O)V.set(O.v,Math.min(V.get(O.v),V.get(U.v)))}}}let L=new Set;for(let C of $){let q=X.get(C.from);if(q!==void 0&&q===X.get(C.to)&&j[q]>1)L.add(`${C.from}|${C.to}`)}return L}async function P5(Z,$=m){let Q=F5.parse(Z),J=Q.files.map((L)=>L.path),V=new Set(J),K=Q.edges.filter((L)=>V.has(L.from)&&V.has(L.to)&&L.from!==L.to),Y=z5(J,K),X=new Map,j=new Map;for(let L of K)j.set(L.from,(j.get(L.from)??0)+1),X.set(L.to,(X.get(L.to)??0)+1);await $.delete(f).where(K8(f.path,J));for(let L of Q.files){let C={root:L.root??null,lang:L.lang??null,mtimeMs:L.mtimeMs??null,size:L.size??null,inDegree:X.get(L.path)??0,outDegree:j.get(L.path)??0};await $.insert(f).values({path:L.path,...C}).onConflictDoUpdate({target:f.path,set:C})}await $.delete(u);let B=0;if(K.length)await $.insert(u).values(K.map((L)=>{let C=Y.has(`${L.from}|${L.to}`);if(C)B++;return{fromPath:L.from,toPath:L.to,circular:C}}));let M=await wZ($);return await $.update(s).set({codeGraphSyncedAt:new Date}).where(WZ(s.id,"singleton")),{files:Q.files.length,edges:K.length,circular:B,version:M}}var X8=(Z,$)=>`${Z}\x00${$}`;function J4(Z){let $=F5.parse(Z),Q=$.files.map((M)=>M.path),J=new Set(Q),V=$.edges.filter((M)=>J.has(M.from)&&J.has(M.to)&&M.from!==M.to),K=z5(Q,V),Y=new Map,X=new Map;for(let M of V)X.set(M.from,(X.get(M.from)??0)+1),Y.set(M.to,(Y.get(M.to)??0)+1);let j=new Map;for(let M of $.files)j.set(M.path,{root:M.root??null,lang:M.lang??null,mtimeMs:M.mtimeMs??null,size:M.size??null,inDegree:Y.get(M.path)??0,outDegree:X.get(M.path)??0});let B=new Map;for(let M of V)B.set(X8(M.from,M.to),{from:M.from,to:M.to,circular:K.has(`${M.from}|${M.to}`)});return{files:j,edges:B}}var Y8=(Z,$)=>Z.root===$.root&&Z.lang===$.lang&&Z.mtimeMs===$.mtimeMs&&Z.size===$.size&&Z.inDegree===$.inDegree&&Z.outDegree===$.outDegree;async function I5(Z,$,Q=m){for(let[X,j]of $.files){let B=Z.files.get(X);if(B&&Y8(B,j))continue;let M={root:j.root,lang:j.lang,mtimeMs:j.mtimeMs,size:j.size,inDegree:j.inDegree,outDegree:j.outDegree};await Q.insert(f).values({path:X,...M}).onConflictDoUpdate({target:f.path,set:M})}let J=[...Z.files.keys()].filter((X)=>!$.files.has(X));if(J.length)await Q.delete(f).where(V8(f.path,J));for(let[X,j]of Z.edges)if(!$.edges.has(X))await Q.delete(u).where(D5(WZ(u.fromPath,j.from),WZ(u.toPath,j.to)));let V=[];for(let[X,j]of $.edges){let B=Z.edges.get(X);if(!B)V.push({fromPath:j.from,toPath:j.to,circular:j.circular});else if(B.circular!==j.circular)await Q.update(u).set({circular:j.circular}).where(D5(WZ(u.fromPath,j.from),WZ(u.toPath,j.to)))}if(V.length)await Q.insert(u).values(V);let K=await wZ(Q);await Q.update(s).set({codeGraphSyncedAt:new Date}).where(WZ(s.id,"singleton"));let Y=0;for(let X of $.edges.values())if(X.circular)Y++;return{files:$.files.size,edges:$.edges.size,circular:Y,version:K}}var H8=/[/\\](node_modules|\.git|\.next|dist|build|__pycache__|target|\.venv|venv|\.beacon|\.playwright-mcp|generated|coverage)[/\\]/;function W8(Z){try{let $=AZ(Z,"beacon.config.json");if(R5($)){let Q=JSON.parse(G8($,"utf8"));if(Array.isArray(Q.roots)&&Q.roots.length)return Q.roots.map((J)=>U8(Z,J))}}catch{}return[Z]}function S5(Z){let $=W8(Z.path),Q=cZ(Z.id),J=oZ(JZ(Z.id)),V=a4($,Z.path);async function K(){let H=Q5(V.snapshot().files.map((_)=>_.path));for(let _ of $)for(let D of["prisma/schema.prisma","schema.prisma"]){let R=AZ(_,D);if(R5(R))H.push(Y(R))}let O=[];for(let _ of H)try{O.push({path:_,content:await E5(AZ(Z.path,_),"utf8")})}catch{}let A=Z5(O),N=$5(O);if(!A.tables.length&&!N.length)return;if(N.length&&A.tableVars&&Object.keys(A.tableVars).length){let D=V.snapshot().edges,R=new Set(N.map((F)=>F.file)),y=new Map;for(let F of D){let MZ=y.get(F.from)??[];MZ.push(F.to),y.set(F.from,MZ)}for(let F=0;F<2;F++)for(let MZ of[...R])for(let x5 of y.get(MZ)??[])R.add(x5);let S=new Map;for(let F of[...R].slice(0,600))try{S.set(F,await E5(AZ(Z.path,F),"utf8"))}catch{}let E=t4({routeFiles:[...new Set(N.map((F)=>F.file))],edges:D,content:(F)=>S.get(F)??null,tableVars:A.tableVars});for(let F of N)F.uses=E.get(F.file)??[]}let G=await _5({tables:A.tables,relations:A.relations,endpoints:N},J,{partial:!0});console.log(`[beacon-inline] schema synced (${Z.name}): ${G.tables} tables / ${G.endpoints} endpoints`)}function Y(H){return j8(Z.path,H).split(/[\\/]/).join("/")}let X=null,j=!1,B=new Set,M=null,L=!1;async function C(){if(L){q();return}L=!0;try{if(await Q,j)X=null,j=!1;if(X===null){let N=await V.seed(),G=await P5(N,J);X=J4(N),console.log(`[beacon-inline] code-graph synced (${Z.name}): ${G.files} files / ${G.edges} imports${G.circular>0?` (${G.circular} circular)`:""}`),await K();return}let H=[...B];B.clear();let O=H.some((N)=>Z4(Y(N))),A=!1;for(let N of H)if(await V.applyChange(N))A=!0;if(A){let N=J4(V.snapshot()),G=await I5(X,N,J);X=N,console.log(`[beacon-inline] code-graph updated (${Z.name}): ${G.files} files / ${G.edges} imports${G.circular>0?` (${G.circular} circular)`:""}`)}if(O)await K()}catch(H){console.error(`[beacon-inline] error (${Z.name}):`,H instanceof Error?H.message:H)}finally{L=!1}}function q(){if(M)clearTimeout(M);M=setTimeout(C,600)}let U=[];for(let H of $)try{let O=M8(H,{recursive:!0,persistent:!0},(A,N)=>{if(!N){j=!0,q();return}let G=String(N);if(H8.test(`/${G}`))return;B.add(AZ(H,G)),q()});O.on("error",(A)=>console.error(`[beacon-inline] watcher error (${Z.name}):`,A)),U.push(O)}catch(O){console.error(`[beacon-inline] live watch unavailable for ${H} (${Z.name}):`,O instanceof Error?O.message:O)}return console.log(`[beacon-inline] watching ${Z.name} (${$.join(", ")}) \u2014 initial extract\u2026`),C(),{async stop(){if(M)clearTimeout(M);for(let H of U)H.close()}}}function C8(Z){let $=Z.limit??6,Q=Z.hardCap??12,J=new Map,V=0,K=new Set;function Y(H){let O=J.get(H);if(O)O.seq=++V}function X(H){if(J.has(H.id))return Y(H.id);if(!Z.exists(H.path))return;J.set(H.id,{handle:Z.start(H),seq:++V})}function j(){let H=null,O=1/0;for(let[A,N]of J){if(K.has(A))continue;if(N.seq<O)O=N.seq,H=A}if(H)J.get(H).handle.stop(),J.delete(H)}function B(){let H=Z.list().filter((O)=>Z.exists(O.path)).slice(0,$);K=new Set(H.map((O)=>O.id));for(let O of H)X(O);for(let[O,A]of[...J]){let N=Z.get(O);if(!N||!Z.exists(N.path))A.handle.stop(),J.delete(O)}}function M(H){if(J.has(H))return Y(H);let O=Z.get(H);if(!O||!Z.exists(O.path))return;if(J.size>=Q)j();if(J.size>=Q)return;J.set(H,{handle:Z.start(O),seq:++V})}async function L(H){let O=J.get(H);if(!O)return;J.delete(H),await O.handle.stop()}function C(H){return J.has(H)}function q(){return[...J.keys()]}async function U(){await Promise.all([...J.values()].map((H)=>H.handle.stop())),J.clear()}return{reconcile:B,ensureWatcher:M,stopWatcher:L,isWatching:C,activeIds:q,stopAll:U}}var B8=C8({list:pZ,get:x,exists:L8,start:(Z)=>S5(Z)});async function v5(Z){await B8.stopWatcher(Z)}async function k5(Z){if(!x(Z))return{ok:!1,removed:!1,fallbackId:r(),error:"unknown workspace"};q4(Z),B4(Z),await v5(Z),P4(JZ(Z)),F4(Z);try{N8(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 V4=process.argv.slice(3),y5=V4.includes("--yes")||V4.includes("-y"),GZ=V4.find((Z)=>!Z.startsWith("-")),w5=(Z)=>`\x1B[32m\u2713\x1B[0m ${Z}`,f5=(Z)=>`\x1B[2m${Z}\x1B[0m`,u5=(Z)=>`
|
|
5
|
-
\x1B[1m${Z}\x1B[0m`;function A8(){if(!GZ)return x(QZ(hZ(process.cwd())));if(/^[0-9a-f]{12}$/.test(GZ)){let Z=x(GZ);if(Z)return Z}return x(QZ(hZ(T5(GZ))))}var i=A8();if(!i)console.error(`[beacon] ${GZ??process.cwd()} is not a registered Beacon workspace \u2014 nothing to remove.`),process.exit(1);console.log(u5(y5?"Beacon \xB7 remove workspace":"Beacon \xB7 remove workspace (dry run)"));console.log(` name: ${i.name}${r()===i.id?" (currently active)":""}`);console.log(` repo: ${i.path} ${f5("(untouched \u2014 only Beacon's data is erased)")}`);console.log(` data: ${n(i.id)} ${f5("(deleted)")}`);if(!y5)console.log(u5("Nothing was changed.")),console.log(` Run \x1B[1mbeacon remove${GZ?` ${GZ}`:""} --yes\x1B[0m to apply.
|
|
6
|
-
|
|
7
|
-
`);
|
|
8
|
-
`)
|
|
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=SZ(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 V5(Z){if(/byte\s*\[\s*\]/.test(Z))return"byte[]";return(Z.replace(/<.*>/,"").trim().split(".").pop()??Z).trim()}function h7(Z){let $=V5(Z);if($==="byte[]")return"bytea";return f7[$]??$.toLowerCase()}function vZ(Z,$){return Z.match(new RegExp(`\\b${$}\\s*=\\s*"([^"]*)"`))?.[1]}function Q5(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=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(JZ(pZ(process.cwd())));if(/^[0-9a-f]{12}$/.test(MZ)){let Z=g(MZ);if(Z)return Z}return g(JZ(pZ(f5(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(m5(g5?"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} ${h5("(untouched \u2014 only Beacon's data is erased)")}`);console.log(` data: ${n(s.id)} ${h5("(deleted)")}`);if(!g5)console.log(m5("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(f5(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(` ${x5(`removed ${s.name} (via the running daemon)`)}
|
|
8
|
+
`);else{let Z=await u5(s.id);if(!Z.ok)console.error(`[beacon] remove failed: ${Z.error??"unknown error"}`),process.exit(1);console.log(` ${x5(`removed ${s.name}`)}
|
|
9
|
+
`)}if(h8(n(s.id)))console.error(`[beacon] warning: ${n(s.id)} still exists \u2014 remove it manually.`),process.exit(1);
|