trybeacon 0.1.50 → 0.1.52
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 -10
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/routes-manifest.json +26 -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.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +11 -11
- package/.next/server/app/_not-found.segments/_full.segment.rsc +11 -11
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/board-annotations/[id]/route.js +1 -1
- package/.next/server/app/api/board-annotations/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/board-annotations/route.js +1 -1
- package/.next/server/app/api/board-annotations/route.js.nft.json +1 -1
- package/.next/server/app/api/board-layout/route.js +1 -1
- package/.next/server/app/api/board-layout/route.js.nft.json +1 -1
- package/.next/server/app/api/bug-flags/[id]/route.js +1 -1
- package/.next/server/app/api/bug-flags/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/bug-flags/route.js +1 -1
- package/.next/server/app/api/bug-flags/route.js.nft.json +1 -1
- package/.next/server/app/api/code-graph/position/route.js +1 -1
- package/.next/server/app/api/code-graph/position/route.js.nft.json +1 -1
- package/.next/server/app/api/code-graph/route.js +1 -1
- package/.next/server/app/api/code-graph/route.js.nft.json +1 -1
- package/.next/server/app/api/context/feature/route.js +1 -1
- package/.next/server/app/api/context/feature/route.js.nft.json +1 -1
- package/.next/server/app/api/context/file/route.js +1 -1
- package/.next/server/app/api/context/file/route.js.nft.json +1 -1
- package/.next/server/app/api/context/route.js +2 -2
- package/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/server/app/api/db/arrange/route.js +1 -1
- package/.next/server/app/api/db/arrange/route.js.nft.json +1 -1
- package/.next/server/app/api/db/backfill-access/route.js +1 -1
- package/.next/server/app/api/db/backfill-access/route.js.nft.json +1 -1
- package/.next/server/app/api/db/position/route.js +1 -1
- package/.next/server/app/api/db/position/route.js.nft.json +1 -1
- package/.next/server/app/api/db/prune-planned/route.js +1 -1
- package/.next/server/app/api/db/prune-planned/route.js.nft.json +1 -1
- package/.next/server/app/api/db/reconcile-endpoints/route.js +1 -1
- package/.next/server/app/api/db/reconcile-endpoints/route.js.nft.json +1 -1
- package/.next/server/app/api/db/relations/[id]/route.js +1 -1
- package/.next/server/app/api/db/relations/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/db/tables/[id]/route.js +1 -1
- package/.next/server/app/api/db/tables/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/draft/approve/route.js +1 -1
- package/.next/server/app/api/draft/approve/route.js.nft.json +1 -1
- package/.next/server/app/api/draft/route.js +1 -1
- package/.next/server/app/api/draft/route.js.nft.json +1 -1
- package/.next/server/app/api/draft/status/route.js +1 -1
- package/.next/server/app/api/draft/status/route.js.nft.json +1 -1
- package/.next/server/app/api/edges/[id]/route.js +1 -1
- package/.next/server/app/api/edges/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/edges/route.js +1 -1
- package/.next/server/app/api/edges/route.js.nft.json +1 -1
- package/.next/server/app/api/endpoints/[id]/route.js +1 -1
- package/.next/server/app/api/endpoints/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/entities/route.js +1 -1
- package/.next/server/app/api/entities/route.js.nft.json +1 -1
- package/.next/server/app/api/feedback/[id]/route.js +1 -1
- package/.next/server/app/api/feedback/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/feedback/[id]/vote/route.js +1 -1
- package/.next/server/app/api/feedback/[id]/vote/route.js.nft.json +1 -1
- package/.next/server/app/api/feedback/route.js +1 -1
- package/.next/server/app/api/feedback/route.js.nft.json +1 -1
- package/.next/server/app/api/flags/route.js +1 -1
- package/.next/server/app/api/flags/route.js.nft.json +1 -1
- package/.next/server/app/api/ingest/route.js +2 -2
- package/.next/server/app/api/ingest/route.js.nft.json +1 -1
- package/.next/server/app/api/init/route.js +2 -2
- package/.next/server/app/api/init/route.js.nft.json +1 -1
- package/.next/server/app/api/map/describe/route.js +2 -2
- package/.next/server/app/api/map/describe/route.js.nft.json +1 -1
- package/.next/server/app/api/map/files/route.js +1 -1
- package/.next/server/app/api/map/files/route.js.nft.json +1 -1
- package/.next/server/app/api/map/finish/route.js +1 -1
- package/.next/server/app/api/map/finish/route.js.nft.json +1 -1
- package/.next/server/app/api/map/route.js +1 -1
- package/.next/server/app/api/map/route.js.nft.json +1 -1
- package/.next/server/app/api/map/start/route.js +1 -1
- package/.next/server/app/api/map/start/route.js.nft.json +1 -1
- package/.next/server/app/api/map/touch-active/route.js +1 -1
- package/.next/server/app/api/map/touch-active/route.js.nft.json +1 -1
- package/.next/server/app/api/mention-search/route.js +1 -0
- package/.next/server/app/api/mention-search/route.js.nft.json +1 -0
- package/.next/server/app/api/mention-search/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/nodes/[id]/position/route.js +1 -1
- package/.next/server/app/api/nodes/[id]/position/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/[id]/route.js +1 -1
- package/.next/server/app/api/nodes/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/positions/route.js +1 -1
- package/.next/server/app/api/nodes/positions/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/route.js +1 -1
- package/.next/server/app/api/nodes/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/subtasks/route.js +1 -1
- package/.next/server/app/api/nodes/subtasks/route.js.nft.json +1 -1
- package/.next/server/app/api/notes/[id]/route.js +1 -1
- package/.next/server/app/api/notes/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/notes/route.js +1 -1
- package/.next/server/app/api/notes/route.js.nft.json +1 -1
- package/.next/server/app/api/open/route.js +1 -1
- package/.next/server/app/api/open/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/annotations/route.js +3 -3
- package/.next/server/app/api/plan/annotations/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/approve/route.js +2 -2
- package/.next/server/app/api/plan/approve/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/history/route.js +1 -1
- package/.next/server/app/api/plan/history/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/markdown/route.js +1 -1
- package/.next/server/app/api/plan/markdown/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/presence/route.js +1 -1
- package/.next/server/app/api/plan/presence/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/route.js +1 -1
- package/.next/server/app/api/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/verdict/route.js +1 -1
- package/.next/server/app/api/plan/verdict/route.js.nft.json +1 -1
- package/.next/server/app/api/preferences/route.js +1 -1
- package/.next/server/app/api/preferences/route.js.nft.json +1 -1
- package/.next/server/app/api/project-meta/route.js +1 -1
- package/.next/server/app/api/project-meta/route.js.nft.json +1 -1
- package/.next/server/app/api/reset/route.js +1 -1
- package/.next/server/app/api/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/scope-guard/check/route.js +1 -1
- package/.next/server/app/api/scope-guard/check/route.js.nft.json +1 -1
- package/.next/server/app/api/share/create/route.js +1 -0
- package/.next/server/app/api/share/create/route.js.nft.json +1 -0
- package/.next/server/app/api/share/create/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/share/route.js +1 -0
- package/.next/server/app/api/share/route.js.nft.json +1 -0
- package/.next/server/app/api/share/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/stream/route.js +2 -2
- package/.next/server/app/api/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/tab/nav/route.js +1 -1
- package/.next/server/app/api/tab/nav/route.js.nft.json +1 -1
- package/.next/server/app/api/tab/presence/route.js +1 -1
- package/.next/server/app/api/tab/presence/route.js.nft.json +1 -1
- package/.next/server/app/api/telemetry/route.js +1 -1
- package/.next/server/app/api/telemetry/route.js.nft.json +1 -1
- package/.next/server/app/api/telemetry/stats/route.js +1 -1
- package/.next/server/app/api/telemetry/stats/route.js.nft.json +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/api/version/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/activate/route.js +1 -1
- package/.next/server/app/api/workspace/activate/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/route.js +1 -1
- package/.next/server/app/api/workspace/route.js.nft.json +1 -1
- package/.next/server/app/apple-icon.png/route.js +1 -1
- package/.next/server/app/docs/page.js +2 -2
- package/.next/server/app/docs/page.js.nft.json +1 -1
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +11 -11
- package/.next/server/app/docs.segments/_full.segment.rsc +11 -11
- package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/docs.segments/_index.segment.rsc +11 -11
- package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
- package/.next/server/app/feedback/page.js +2 -2
- package/.next/server/app/feedback/page.js.nft.json +1 -1
- 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 +11 -11
- package/.next/server/app/feedback.segments/_full.segment.rsc +11 -11
- package/.next/server/app/feedback.segments/_head.segment.rsc +1 -1
- package/.next/server/app/feedback.segments/_index.segment.rsc +11 -11
- 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.js.nft.json +1 -1
- package/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/.next/server/app/help.html +1 -1
- package/.next/server/app/help.rsc +11 -11
- package/.next/server/app/help.segments/_full.segment.rsc +11 -11
- package/.next/server/app/help.segments/_head.segment.rsc +1 -1
- package/.next/server/app/help.segments/_index.segment.rsc +11 -11
- package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/help.segments/help.segment.rsc +1 -1
- package/.next/server/app/icon.svg/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +12 -12
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +12 -12
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +11 -11
- 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.js.nft.json +1 -1
- 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/s/[token]/page.js +2 -0
- package/.next/server/app/s/[token]/page.js.nft.json +1 -0
- package/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/settings/page.js +2 -2
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +14 -10
- package/.next/server/chunks/1669.js +1 -0
- package/.next/server/chunks/2050.js +1 -0
- package/.next/server/chunks/249.js +1 -1
- package/.next/server/chunks/{3221.js → 2693.js} +1 -1
- package/.next/server/chunks/2942.js +1 -0
- package/.next/server/chunks/3098.js +1 -0
- package/.next/server/chunks/3254.js +1 -1
- package/.next/server/chunks/{2999.js → 3304.js} +65 -4
- package/.next/server/chunks/4046.js +3 -3
- package/.next/server/chunks/4307.js +1 -1
- package/.next/server/chunks/{4217.js → 4700.js} +19 -19
- package/.next/server/chunks/4872.js +1 -0
- package/.next/server/chunks/{4940.js → 7350.js} +1 -1
- package/.next/server/chunks/{8423.js → 9338.js} +8 -8
- package/.next/server/chunks/9683.js +1 -1
- package/.next/server/chunks/9734.js +1 -1
- package/.next/server/chunks/9884.js +2 -2
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware.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/XBUVgZagQUtfUZn0r6pJS/_buildManifest.js +1 -0
- package/.next/static/chunks/1099-208cc390a92efae0.js +62 -0
- package/.next/static/chunks/1175-715e4664e518ded4.js +1 -0
- package/.next/static/chunks/1397-96849550aca888c5.js +1 -0
- package/.next/static/chunks/2231-379685a022444780.js +1 -0
- package/.next/static/chunks/{2500-15c373070714563d.js → 3021-ed52ee7b3f02e2cd.js} +1 -1
- package/.next/static/chunks/54a60aa6-0378818fce5a4dc5.js +82 -0
- package/.next/static/chunks/874-c750840a8644deb1.js +1 -0
- package/.next/static/chunks/9887-e8954568a4031ed3.js +74 -0
- package/.next/static/chunks/app/_global-error/page-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/board-annotations/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/board-annotations/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/board-layout/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/bug-flags/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/bug-flags/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/code-graph/position/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/code-graph/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/context/feature/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/context/file/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/context/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/db/arrange/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/db/backfill-access/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/db/position/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/db/prune-planned/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/db/relations/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/db/tables/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/draft/approve/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/draft/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/draft/status/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/edges/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/edges/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/endpoints/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/entities/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/feedback/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/feedback/[id]/vote/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/feedback/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/flags/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/ingest/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/init/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/map/describe/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/map/files/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/map/finish/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/map/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/map/start/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/map/touch-active/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/mention-search/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/position/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/nodes/positions/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/nodes/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/nodes/subtasks/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/notes/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/notes/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/open/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/plan/annotations/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/plan/approve/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/plan/history/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/plan/markdown/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/plan/presence/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/plan/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/plan/verdict/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/preferences/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/project-meta/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/reset/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/scope-guard/check/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/share/create/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/share/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/stream/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/tab/nav/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/tab/presence/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/telemetry/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/telemetry/stats/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/version/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/workspace/activate/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/workspace/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/layout-3115f8503ff00902.js +1 -0
- package/.next/static/chunks/app/map/page-6a2f4ef0b7260ad6.js +1 -0
- package/.next/static/chunks/app/{page-541e900d67f17dae.js → page-a229992616b3a3de.js} +1 -1
- package/.next/static/chunks/app/plan/page-9fe41756fd39d3ec.js +1 -0
- package/.next/static/chunks/app/s/[token]/page-4ddcc6ddb2252f2b.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-548a84d85e061550.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-548a84d85e061550.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-548a84d85e061550.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-548a84d85e061550.js +1 -0
- package/.next/static/css/d60eecd8c5676c16.css +1 -0
- package/.next/trace +42 -39
- package/.next/trace-build +1 -1
- package/.next/types/app/api/mention-search/route.ts +351 -0
- package/.next/types/app/api/share/create/route.ts +351 -0
- package/.next/types/app/api/share/route.ts +351 -0
- package/.next/types/app/s/[token]/page.ts +87 -0
- package/.next/types/routes.d.ts +6 -2
- package/.next/types/validator.ts +36 -0
- package/package.json +11 -8
- package/.next/server/chunks/1341.js +0 -1
- package/.next/server/chunks/9773.js +0 -1
- package/.next/static/J1AU9kp6Vs1x9YOBkXMiR/_buildManifest.js +0 -1
- package/.next/static/chunks/1439-260d1c3a9b3b79b3.js +0 -1
- package/.next/static/chunks/1487-13f43d25413ae041.js +0 -1
- package/.next/static/chunks/3343-af1292b51a276724.js +0 -1
- package/.next/static/chunks/54a60aa6-407808fee210eca2.js +0 -82
- package/.next/static/chunks/7886-46eaf3a9533310f7.js +0 -74
- package/.next/static/chunks/app/_global-error/page-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/board-annotations/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/board-annotations/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/board-layout/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/bug-flags/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/bug-flags/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/code-graph/position/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/code-graph/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/context/feature/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/context/file/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/context/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/db/arrange/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/db/backfill-access/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/db/position/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/db/prune-planned/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/db/relations/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/db/tables/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/draft/approve/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/draft/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/draft/status/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/edges/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/edges/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/endpoints/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/entities/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/feedback/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/feedback/[id]/vote/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/feedback/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/flags/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/ingest/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/init/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/map/describe/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/map/files/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/map/finish/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/map/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/map/start/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/map/touch-active/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/position/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/nodes/positions/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/nodes/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/nodes/subtasks/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/notes/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/notes/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/open/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/plan/annotations/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/plan/approve/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/plan/history/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/plan/markdown/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/plan/presence/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/plan/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/plan/verdict/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/preferences/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/project-meta/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/reset/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/scope-guard/check/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/stream/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/tab/nav/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/tab/presence/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/telemetry/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/telemetry/stats/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/version/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/workspace/activate/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/workspace/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/layout-1bc5f9fd4ce6bff9.js +0 -1
- package/.next/static/chunks/app/map/page-5074176a5e746ffb.js +0 -1
- package/.next/static/chunks/app/plan/page-3c4c1fc03275299f.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/css/629ab377241de9ca.css +0 -1
- /package/.next/static/{J1AU9kp6Vs1x9YOBkXMiR → XBUVgZagQUtfUZn0r6pJS}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=9773,exports.ids=[9773],exports.modules={526:(a,b,c)=>{},1110:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{HQ:()=>o,Oz:()=>p,cl:()=>t,hY:()=>r,hg:()=>s,pJ:()=>u,t3:()=>q});var e=c(95349),f=c(42650),g=c(39321),h=c(62896),i=c(22443),j=c(16189),k=c(3173),l=c(89337),m=a([h,j,k]);function n(){(0,f.revalidatePath)("/map")}async function o(a){let b=await (0,j.n)(()=>(0,k.RM)(a));return n(),b}async function p(a,b){let c=await (0,j.n)(()=>(0,k.OK)(a,b));return n(),c}async function q(a,b){let c=await (0,j.n)(()=>(0,k.Pj)(a,b));return n(),c}async function r(a){let b=await (0,j.n)(()=>(0,k.Vp)(a));return n(),b}async function s(a){let b=await (0,j.n)(()=>(0,k.x$)(a));return n(),b}async function t(a){await (0,j.n)(()=>(0,k.AC)(a)),n()}async function u(a){await (0,j.n)(async()=>{await h.db.update(i.node).set({source:"MANUAL"}).where((0,g.eq)(i.node.id,a))}),n()}[h,j,k]=m.then?(await m)():m,(0,l.D)([o,p,q,r,s,t,u]),(0,e.A)(o,"409b56b6cc15fb689c1e8af1737fd8f024eaccdee4",null),(0,e.A)(p,"60e29301deee354e9b22d10d0882e0fba1f0efa5ef",null),(0,e.A)(q,"6056d9e95481af19600b95cac9e79c4164163f0bd3",null),(0,e.A)(r,"409d7b91af7e6220b13f8eefb6a4930de68ec73c7e",null),(0,e.A)(s,"40adc582a181b7655db7b410a1e6bc56e23cc4912d",null),(0,e.A)(t,"406a6b6c901a8878d4b40206421368ea734d34ffe9",null),(0,e.A)(u,"4084780b8a9ec39fddb37d84c6eb4d6f8db41b4fc6",null),d()}catch(a){d(a)}})},1229:(a,b,c)=>{c.d(b,{x:()=>g});var d=c(48249),e=c(56024),f=c(55030);function g(){let a="!h-2 !w-2 !border-0 !bg-zinc-400";return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(e.h7,{type:"target",position:f.yX.Top,id:"tt",className:a}),(0,d.jsx)(e.h7,{type:"source",position:f.yX.Top,id:"st",className:a}),(0,d.jsx)(e.h7,{type:"target",position:f.yX.Right,id:"tr",className:a}),(0,d.jsx)(e.h7,{type:"source",position:f.yX.Right,id:"sr",className:a}),(0,d.jsx)(e.h7,{type:"target",position:f.yX.Bottom,id:"tb",className:a}),(0,d.jsx)(e.h7,{type:"source",position:f.yX.Bottom,id:"sb",className:a}),(0,d.jsx)(e.h7,{type:"target",position:f.yX.Left,id:"tl",className:a}),(0,d.jsx)(e.h7,{type:"source",position:f.yX.Left,id:"sl",className:a})]})}},2367:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(62896),e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},2942:(a,b,c)=>{c.d(b,{F8:()=>s,NG:()=>o,QH:()=>p,Vq:()=>r,aM:()=>v,cV:()=>x,kz:()=>u,n$:()=>m,pO:()=>g,vB:()=>t});var d=c(48249),e=c(67484),f=c(33191);function g({markdown:a,className:b,variant:c="reading"}){let h=(0,e.useMemo)(()=>m(a),[a]),i="reading"===c;return(0,d.jsx)("div",{className:(0,f.cn)("min-w-0 [overflow-wrap:anywhere]",i?"mx-auto w-full max-w-[66ch] space-y-4 text-[15px] leading-[1.6]":"space-y-3.5 text-[13px] leading-relaxed",b),children:h.map((a,b)=>(0,d.jsx)(w,{block:a,variant:c},b))})}function h(a){let b=a.trim();return b.includes("|")&&b.includes("-")&&/^[\s|:-]+$/.test(b)}function i(a){return""!==a.trim()&&a.includes("|")}function j(a){let b=a.trim();return b.startsWith("|")&&(b=b.slice(1)),b.endsWith("|")&&(b=b.slice(0,-1)),b.split("|").map(a=>a.trim())}function k(a){let b=a.trim(),c=b.startsWith(":"),d=b.endsWith(":");return c&&d?"center":d?"right":c?"left":null}let l=/^\s*```[^\s`]*\s*$/;function m(a){let b=a.split("\n"),c=[],d=[],e=()=>{d.length&&(c.push({kind:"p",text:d.join("\n")}),d=[])},f=null,g=()=>{null!==f&&(c.push({kind:"quote",text:f.join("\n")}),f=null)},m=a=>Math.min(6,Math.floor(a.length/2)),n=null,o=null;for(let a=0;a<b.length;a++){let p=b[a];if(null!==n){l.test(p)?(c.push({kind:"code",text:n.join("\n")}),n=null):n.push(p);continue}let q=p.match(/^>\s?(.*)$/);if(q){e(),o=null,(f??=[]).push(q[1]);continue}if(g(),l.test(p)){e(),o=null,n=[];continue}if(/^\s*$/.test(p)){e(),o=null;continue}let r=p.match(/^#### +(.+)$/);if(r){e(),o=null,c.push({kind:"h4",text:r[1]});continue}let s=p.match(/^### +(.+)$/);if(s){e(),o=null,c.push({kind:"h3",text:s[1]});continue}let t=p.match(/^## +(.+)$/);if(t){e(),o=null,c.push({kind:"h2",text:t[1]});continue}let u=p.match(/^# +(.+)$/);if(u){e(),o=null,c.push({kind:"h1",text:u[1]});continue}if(i(p)&&a+1<b.length&&h(b[a+1])){e(),o=null;let d=[j(p)],f=j(b[a+1]).map(k),g=a+2;for(;g<b.length&&i(b[g])&&!h(b[g]);)d.push(j(b[g])),g++;c.push({kind:"table",text:b.slice(a,g).join("\n"),rows:d,align:f}),a=g-1;continue}let v=p.match(/^(\s*)(\d+)\. +(.+)$/);if(v){e(),c.push({kind:"ol",text:v[3],depth:m(v[1]),marker:v[2]}),o=c.length-1;continue}let w=p.match(/^(\s*)- +(.+)$/);if(w){e(),c.push({kind:"ul",text:w[2],depth:m(w[1])}),o=c.length-1;continue}if(null!==o&&0===d.length){c[o].text+=" "+p.trim();continue}d.push(p)}return e(),g(),null!==n&&c.push({kind:"code",text:n.join("\n")}),c}let n=/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false|null)\b|(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/g;function o({text:a}){let b=function(a){let b=a.trim();if(!b||"{"!==b[0]&&"["!==b[0])return null;try{return JSON.stringify(JSON.parse(b),null,2)}catch{return null}}(a);return(0,d.jsx)("pre",{className:"overflow-x-auto rounded-lg border border-white/10 bg-white/[0.06] p-3 text-[12px] leading-relaxed",children:(0,d.jsx)("code",{className:"whitespace-pre font-mono [overflow-wrap:normal]",children:b?function(a){let b,c=[],e=0,f=0,g=a=>(0,d.jsx)("span",{className:"text-foreground/45",children:a},f++);for(n.lastIndex=0;null!==(b=n.exec(a));){if(b.index>e&&c.push(g(a.slice(e,b.index))),void 0!==b[1]){let a=void 0!==b[2];c.push((0,d.jsx)("span",{className:a?"text-sky-300":"text-emerald-300/90",children:b[1]},f++)),a&&b[2]&&c.push(g(b[2]))}else void 0!==b[3]?c.push((0,d.jsx)("span",{className:"text-purple-300",children:b[3]},f++)):void 0!==b[4]&&c.push((0,d.jsx)("span",{className:"text-amber-300",children:b[4]},f++));e=n.lastIndex}return e<a.length&&c.push(g(a.slice(e))),c}(b):(0,d.jsx)("span",{className:"text-foreground/85",children:a})})})}function p({block:a}){let b=a.rows??[];if(0===b.length)return null;let[c,...e]=b,g=a.align??[],h=a=>"center"===g[a]?"text-center":"right"===g[a]?"text-right":"text-left";return(0,d.jsx)("div",{className:"overflow-x-auto rounded-lg border border-white/10",children:(0,d.jsxs)("table",{className:"w-full border-collapse text-[13px] [overflow-wrap:normal]",children:[(0,d.jsx)("thead",{children:(0,d.jsx)("tr",{className:"border-b border-white/15 bg-white/[0.04]",children:c.map((a,b)=>(0,d.jsx)("th",{className:(0,f.cn)("whitespace-nowrap px-3 py-1.5 font-semibold text-foreground",h(b)),children:(0,d.jsx)(x,{text:a})},b))})}),(0,d.jsx)("tbody",{children:e.map((a,b)=>(0,d.jsx)("tr",{className:"border-b border-white/5 last:border-0",children:a.map((a,b)=>(0,d.jsx)("td",{className:(0,f.cn)("px-3 py-1.5 align-top text-foreground/90",h(b)),children:(0,d.jsx)(x,{text:a})},b))},b))})]})})}let q=["h1","h2","h3","h4"];function r(a){return q.includes(a)}function s(a){let b=q.indexOf(a);return b<0?0:b}function t(a){return`plan-h-${a}`}function u(a){return a.replace(/[`*]/g,"").trim()}function v(a,b,c,e){let g="reading"===c;switch(a.kind){case"h1":return(0,d.jsx)("h1",{id:e,className:g?"scroll-mt-24 text-xl font-semibold tracking-tight text-foreground":"text-base font-semibold text-foreground",children:b});case"h2":return(0,d.jsx)("h2",{id:e,className:g?"mt-6 scroll-mt-24 border-b border-white/10 pb-1 text-lg font-semibold text-foreground":"mt-3 text-sm font-semibold text-muted-foreground",children:b});case"h3":return(0,d.jsx)("h3",{id:e,className:g?"mt-4 scroll-mt-24 text-base font-semibold text-foreground":"mt-2 text-[13px] font-semibold text-foreground",children:b});case"h4":return(0,d.jsx)("h4",{id:e,className:g?"mt-3 scroll-mt-24 text-sm font-semibold text-muted-foreground":"mt-2 text-[13px] font-semibold text-muted-foreground",children:b});case"ul":case"ol":{let c=a.depth??0;return(0,d.jsxs)("div",{className:(0,f.cn)("flex gap-2",g?"text-foreground/95":"text-foreground/90"),style:{marginLeft:`${.75+1.25*c}rem`},children:[(0,d.jsx)("span",{className:"shrink-0 select-none text-muted-foreground tabular-nums",children:"ol"===a.kind?`${a.marker}.`:"•"}),(0,d.jsx)("span",{className:"min-w-0 flex-1",children:b})]})}case"quote":return(0,d.jsx)("blockquote",{className:(0,f.cn)("whitespace-pre-wrap border-l-2 pl-3 italic",g?"border-white/15 text-foreground/80":"border-white/10 text-foreground/75"),children:b});default:return(0,d.jsx)("p",{className:(0,f.cn)("whitespace-pre-wrap",g?"text-foreground/95":"text-foreground/90"),children:b})}}function w({block:a,variant:b}){return"code"===a.kind?(0,d.jsx)(o,{text:a.text}):"table"===a.kind?(0,d.jsx)(p,{block:a}):(0,d.jsx)(d.Fragment,{children:v(a,(0,d.jsx)(x,{text:a.text}),b)})}function x({text:a}){let b=a.split(/(`[^`]+`|\*\*[\s\S]+?\*\*|\*[^*]+\*)/g);return(0,d.jsx)(d.Fragment,{children:b.map((a,b)=>/^`[^`]+`$/.test(a)?(0,d.jsx)("code",{className:"rounded bg-white/5 px-1 font-mono text-[12px]",children:a.slice(1,-1)},b):/^\*\*[\s\S]+\*\*$/.test(a)?(0,d.jsx)("strong",{className:"font-semibold text-foreground",children:(0,d.jsx)(x,{text:a.slice(2,-2)})},b):/^\*[^*]+\*$/.test(a)?(0,d.jsx)("em",{className:"text-muted-foreground",children:(0,d.jsx)(x,{text:a.slice(1,-1)})},b):(0,d.jsx)("span",{children:a},b))})}},3173:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AC:()=>p,OK:()=>l,Pj:()=>m,RM:()=>k,Vp:()=>n,x$:()=>o});var e=c(39321),f=c(62896),g=c(22443),h=c(8292),i=c(7913),j=a([f,h]);async function k(a){let b=i.gY.parse(a),c="ARCHITECTURE"===b.view?"REBUILD":"PENDING",[d]=await f.db.insert(g.node).values({...b.id?{id:b.id}:{},view:b.view,kind:b.kind??"FEATURE",title:b.title,cluster:b.cluster??null,layer:b.layer??null,role:b.role??null,plain:b.plain??null,parentId:b.parentId??null,status:b.status??c,priority:b.priority??2,x:b.x??0,y:b.y??0,sourceRef:b.sourceRef??null}).returning();return d}async function l(a,b){let c=i.$Y.parse(b),[d]=await f.db.update(g.node).set(c).where((0,e.eq)(g.node.id,a)).returning();return void 0!==c.status&&await (0,h.Nh)(a),d}async function m(a,b){let c=i.M7.parse(b),[d]=await f.db.update(g.node).set({status:c}).where((0,e.eq)(g.node.id,a)).returning();return await (0,h.Nh)(a),d}async function n(a){let[b]=await f.db.update(g.node).set({status:"DEPRIORITIZED",priority:3}).where((0,e.eq)(g.node.id,a)).returning();return await (0,h.Nh)(a),b}async function o(a){let[b]=await f.db.update(g.node).set({status:"CANCELLED"}).where((0,e.eq)(g.node.id,a)).returning();return await (0,h.Nh)(a),b}async function p(a){let[b]=await f.db.delete(g.node).where((0,e.eq)(g.node.id,a)).returning();return b}[f,h]=j.then?(await j)():j,d()}catch(a){d(a)}})},4120:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(62896);c(22443);var e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},4963:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(23873),e=c(62896);c(22443);var f=c(2367),g=c(29303),h=c(56258);c(50320),c(66625);var i=c(76174),j=a([e,f,g,h,i]);[e,f,g,h,i]=j.then?(await j)():j,d.Ik({tables:d.YO(d.Ik({name:d.Yj().trim().min(1),domain:d.Yj().nullish(),description:d.Yj().nullish(),columns:d.YO(d.Ik({name:d.Yj().trim().min(1),type:d.Yj().trim().min(1),isPk:d.zM().optional(),isFk:d.zM().optional(),nullable:d.zM().optional(),note:d.Yj().nullish()})).default([])})).default([]),relations:d.YO(d.Ik({fromTable:d.Yj(),fromColumn:d.Yj(),toTable:d.Yj(),toColumn:d.Yj(),label:d.Yj().nullish()})).default([]),endpoints:d.YO(d.Ik({method:d.Yj().trim().min(1),path:d.Yj().trim().min(1),domain:d.Yj().nullish(),description:d.Yj().nullish(),uses:d.YO(d.Ik({table:d.Yj(),access:d.Yj().default("read")})).default([])})).default([])}),b()}catch(a){b(a)}})},7747:(a,b,c)=>{c.d(b,{DbMapClient:()=>ar});var d=c(48249),e=c(67484),f=c(19099),g=c(56024),h=c(55030);c(71763);var i=c(49783),j=c(90165),k=c(89216),l=c(57684),m=c(45535),n=c(69473),o=c(33191),p=c(38476);let q=(0,e.createContext)(null);function r(){let a=(0,e.useContext)(q);if(!a)throw Error("useDbEdit must be used inside DbEditContext");return a}var s=c(50605),t=c(91365),u=c(1229),v=c(58720);let w={danger:"bg-red-500/15 text-red-300",warn:"bg-amber-500/15 text-amber-300"};function x({badges:a,className:b}){return a.length?(0,d.jsx)("span",{className:(0,o.cn)("flex shrink-0 items-center gap-0.5",b),children:a.map(a=>(0,d.jsx)("span",{title:a.title,className:(0,o.cn)("rounded px-1 text-[8px] font-semibold uppercase tracking-wide",w[a.tone]),children:a.label},a.label))}):null}let y=/pass(word)?|token|secret|api[_-]?key|credential|priv(ate)?[_-]?key|hash|salt/i,z=/auth|login|logout|session|token|password|oauth|sso|credential/i,A="nodrag nopan",B=u.x;function C({onClick:a,title:b}){return(0,d.jsx)("button",{type:"button",title:b,onClick:b=>{b.stopPropagation(),a()},className:(0,o.cn)(A,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover/row:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,d.jsx)(i.A,{className:"size-3"})})}function D({c:a,fkTargets:b}){let c=b?.[a.name];return(0,d.jsx)("span",{title:c?`→ ${c}`:a.type,className:"ml-auto min-w-0 truncate font-mono text-[11px] text-muted-foreground/80",children:c?(0,d.jsxs)(d.Fragment,{children:["→\xa0",c]}):a.type})}let E="nodrag nopan",F=["GET","POST","PUT","PATCH","DELETE"];var G=c(32798),H=c(48779),I=c(26284);let J=[{id:"claude",label:"Prompt p/ Claude Code",fn:function(a){let b=["Implement this database schema in this project, following its existing stack and conventions:",""];for(let c of a.tables){let a=`Table \`${c.name}\``+(c.domain?` (domain: ${c.domain})`:"")+(c.description?` — ${c.description}`:"");for(let d of(b.push(a),c.columns)){let a=[d.isPk&&"PK",d.isFk&&"FK",!1===d.nullable&&"NOT NULL"].filter(Boolean).join(", ");b.push(` - ${d.name}: ${d.type}`+(a?` [${a}]`:"")+(d.note?` — ${d.note}`:""))}b.push("")}if(a.relations.length){for(let c of(b.push("Foreign keys:"),a.relations))b.push(` - ${c.fromTable}.${c.fromColumn} -> ${c.toTable}.${c.toColumn}`);b.push("")}return b.push("Create the models/migrations using the project's existing ORM and patterns, wire the relationships, and keep table and column names exactly as given."),b.join("\n")}},{id:"dbml",label:"DBML",fn:function(a){let b=[];for(let c of a.tables){for(let a of(b.push(`Table ${c.name} {`),c.columns)){let c=[a.isPk&&"pk",!1===a.nullable&&!a.isPk&&"not null",a.note&&`note: '${a.note.replace(/'/g,"")}'`].filter(Boolean).join(", ");b.push(` ${a.name} ${a.type}`+(c?` [${c}]`:""))}b.push("}","")}for(let c of a.relations)b.push(`Ref: ${c.fromTable}.${c.fromColumn} > ${c.toTable}.${c.toColumn}`);return b.join("\n").trim()}},{id:"sql",label:"SQL DDL",fn:function(a){let b=[];for(let c of a.tables){b.push(`CREATE TABLE ${c.name} (`);let d=c.columns.map(a=>{let b=[` ${a.name} ${a.type}`];return a.isPk?b.push("PRIMARY KEY"):!1===a.nullable&&b.push("NOT NULL"),b.join(" ")}),e=a.relations.filter(a=>a.fromTable===c.name).map(a=>` FOREIGN KEY (${a.fromColumn}) REFERENCES ${a.toTable}(${a.toColumn})`);b.push([...d,...e].join(",\n")),b.push(");","")}return b.join("\n").trim()}}];function K({draftGraph:a}){let[b,c]=(0,e.useState)(null);if(0===a.tables.length)return null;async function f(b){await navigator.clipboard.writeText(b.fn(a)).catch(()=>{}),c(b.id),setTimeout(()=>c(null),1500)}return(0,d.jsxs)("div",{className:"space-y-2 rounded-xl border border-sky-400/20 bg-sky-500/[0.04] p-3",children:[(0,d.jsxs)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-sky-300",children:["Rascunho \xb7 ",a.tables.length," tabelas"]}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,d.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:"copiar:"}),J.map(a=>(0,d.jsx)(I.$,{size:"sm",variant:"outline",className:"h-6 px-2 text-[11px]",onClick:()=>f(a),children:b===a.id?"✓":a.label},a.id))]})]})}function L({selected:a,tables:b,relations:c,endpoints:e,draftGraph:f,onClose:g,commentsContent:h,commentsCount:j=0,activeTab:k,onTabChange:l,onAddComment:n,topOffset:o}){let p,q,r=new Map(b.map(a=>[a.id,a.name])),s=!!h,t=k??"details",u=a?.kind==="table"?b.find(b=>b.id===a.id)?.name??null:a?.kind==="endpoint"&&(q=e.find(b=>b.id===a.id))?`${q.method} ${q.path}`:null;if(a?.kind==="table"){let f=b.find(b=>b.id===a.id);p=f?(0,d.jsx)(N,{table:f,relations:c,endpoints:e,nameById:r}):null}else if(a?.kind==="endpoint"){let b=e.find(b=>b.id===a.id);p=b?(0,d.jsx)(O,{ep:b,nameById:r}):null}else p=(0,d.jsx)(P,{tables:b,relations:c,endpoints:e});return(0,d.jsxs)(H.b,{className:"absolute right-3 z-10 flex w-80 flex-col rounded-2xl",style:{top:o??12,maxHeight:`calc(100% - ${(o??12)+12}px)`},children:[s?(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-1 py-1",children:[(0,d.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,d.jsx)(M,{active:"details"===t,onClick:()=>l?.("details"),children:"Details"}),(0,d.jsxs)(M,{active:"comments"===t,onClick:()=>l?.("comments"),children:["Comments",j>0&&(0,d.jsx)("span",{className:"ml-1 rounded-full bg-white/10 px-1 text-[9px] font-semibold leading-4",children:j})]})]}),(0,d.jsx)("button",{onClick:g,title:"Close panel",className:"mr-1 rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(m.A,{className:"size-4"})})]}):(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,d.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Panel"}),(0,d.jsx)("button",{onClick:g,title:"Close panel",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(m.A,{className:"size-4"})})]}),(0,d.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:"comments"===t&&s?(0,d.jsx)("div",{className:"p-3",children:h}):(0,d.jsxs)(d.Fragment,{children:[f.tables.length>0&&(0,d.jsx)("div",{className:"border-b border-white/10 p-3.5",children:(0,d.jsx)(K,{draftGraph:f})}),(0,d.jsxs)("div",{className:"p-4",children:[n&&u&&(0,d.jsxs)("button",{type:"button",onClick:()=>n(u),className:"mb-3 flex w-full items-center justify-center gap-1.5 rounded-lg border border-white/10 bg-white/[0.03] px-3 py-1.5 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,d.jsx)(i.A,{className:"size-3.5"}),"Comment on this ",a?.kind==="endpoint"?"endpoint":"table"]}),p]})]})})]})}function M({active:a,onClick:b,children:c}){return(0,d.jsx)("button",{type:"button",onClick:b,className:(0,o.cn)("flex items-center gap-1 rounded-md px-2.5 py-1 text-[11px] font-medium transition-colors",a?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:c})}function N({table:a,relations:b,endpoints:c,nameById:e}){let f=b.filter(b=>b.fromTableId===a.id),g=b.filter(b=>b.toTableId===a.id),h=c.map(b=>({e:b,u:b.tables.find(b=>b.tableId===a.id)})).filter(a=>a.u);return(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-xs uppercase tracking-wide",style:{color:(0,p.qA)(a.domain)},children:a.domain??"table"}),(0,d.jsx)("h2",{className:"font-mono text-lg font-semibold",children:a.name}),a.description&&(0,d.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:a.description})]}),(0,d.jsx)(Q,{title:`Columns (${a.columns.length})`,children:(0,d.jsx)("ul",{className:"space-y-0.5",children:a.columns.map(a=>(0,d.jsxs)("li",{className:"flex items-center gap-1.5 text-xs",children:[a.isPk?(0,d.jsx)(j.A,{className:"size-3 text-amber-400"}):a.isFk?(0,d.jsx)(k.A,{className:"size-3 text-sky-400"}):(0,d.jsx)("span",{className:"size-3"}),(0,d.jsx)("span",{className:"font-mono",children:a.name}),(0,d.jsxs)("span",{className:"ml-auto font-mono text-[10px] text-muted-foreground",children:[a.type,!a.nullable&&" \xb7NN"]})]},a.name))})}),f.length>0&&(0,d.jsx)(Q,{title:"References (FK out)",children:(0,d.jsx)("ul",{className:"space-y-1 text-xs",children:f.map(a=>(0,d.jsxs)("li",{className:"font-mono text-muted-foreground",children:[a.fromColumn," → ",e.get(a.toTableId),".",a.toColumn]},a.id))})}),g.length>0&&(0,d.jsx)(Q,{title:"Referenced by (FK in)",children:(0,d.jsx)("ul",{className:"space-y-1 text-xs",children:g.map(a=>(0,d.jsxs)("li",{className:"font-mono text-muted-foreground",children:[e.get(a.fromTableId),".",a.fromColumn]},a.id))})}),h.length>0&&(0,d.jsx)(Q,{title:`Used by endpoints (${h.length})`,children:(0,d.jsx)("ul",{className:"space-y-1 text-xs",children:h.map(({e:a,u:b})=>(0,d.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{style:{color:p.e6[a.method]},className:"font-bold",children:a.method}),(0,d.jsx)("span",{className:"truncate font-mono",children:a.path}),(0,d.jsx)("span",{className:"ml-auto",style:{color:p.ru[b.access]},children:b.access})]},a.id))})})]})}function O({ep:a,nameById:b}){return(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[11px] font-bold",style:{background:`${p.e6[a.method]}22`,color:p.e6[a.method]},children:a.method}),(0,d.jsx)("h2",{className:"mt-2 font-mono text-base font-semibold",children:a.path}),a.description&&(0,d.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:a.description})]}),(0,d.jsx)(Q,{title:`Tables used (${a.tables.length})`,children:(0,d.jsx)("ul",{className:"space-y-1 text-xs",children:a.tables.map(a=>(0,d.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{className:"font-mono",children:b.get(a.tableId)}),(0,d.jsx)("span",{className:"ml-auto",style:{color:p.ru[a.access]},children:a.access})]},a.tableId))})})]})}function P({tables:a,relations:b,endpoints:c}){return(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-sm font-semibold",children:"Database"}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Live schema derived from your code. Click a table or endpoint to see details. Drag to rearrange — positions are saved."})]}),(0,d.jsxs)("dl",{className:"grid grid-cols-3 gap-2 text-center",children:[(0,d.jsx)(R,{label:"tables",value:a.length}),(0,d.jsx)(R,{label:"FKs",value:b.length}),(0,d.jsx)(R,{label:"endpoints",value:c.length})]}),(0,d.jsx)(Q,{title:"Legend",children:(0,d.jsxs)("ul",{className:"space-y-1 text-xs text-muted-foreground",children:[(0,d.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,d.jsx)(j.A,{className:"size-3 text-amber-400"})," primary key"]}),(0,d.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,d.jsx)(k.A,{className:"size-3 text-sky-400"})," foreign key"]}),(0,d.jsx)("li",{children:"— gray line: FK relation between tables"}),(0,d.jsx)("li",{children:"– – dashed line: endpoint uses table (read/write)"})]})})]})}function Q({title:a,children:b}){return(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:a}),b]})}function R({label:a,value:b}){return(0,d.jsxs)("div",{className:"rounded-lg border border-white/10 bg-white/[0.03] py-2",children:[(0,d.jsx)("div",{className:"text-lg font-semibold",children:b}),(0,d.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:a})]})}var S=c(92994),T=c(54193),U=c(81725),V=c(55805);let W=new Set(["GET","HEAD","OPTIONS"]);var X=c(27741),Y=c(86892);function Z(a){return 36+30*Math.max(0,a)+16}let $="Unattached",_=a=>(a??"").trim()||"—";function aa(a,b){let c=new Map(a.map(a=>[a.id,a.name])),d=new Map;for(let a of b)for(let b of a.uses)c.has(b.tableId)&&d.set(b.tableId,(d.get(b.tableId)??0)+1);return new Map(b.map(a=>[a.id,function(a,b,c){let d=new Map;for(let c of a.uses)b.has(c.tableId)&&d.set(c.tableId,(d.get(c.tableId)??0)+1);let e=null;for(let[a,f]of d){if(null===e){e=a;continue}let g=d.get(e);if(f>g){e=a;continue}if(f<g)continue;let h=c?.get(a)??0,i=c?.get(e)??0;h<i?e=a:h===i&&0>b.get(a).localeCompare(b.get(e))&&(e=a)}return e}(a,c,d)]))}let ab=(a,b)=>a.path.localeCompare(b.path)||a.method.localeCompare(b.method)||a.id.localeCompare(b.id);var ac=c(67637);let ad=a=>a.trim().toLowerCase();var ae=c(15828),af=c(30170),ag=c(10920),ah=c(95744),ai=c(10758),aj=c(69680),ak=c(35471),al=c(42800),am=c(96863);let an={dbTable:function({id:a,data:b,selected:c}){var f;let g,h,i="DRAFT"===b.source,q="added"===b.diffStatus?"#7bd389":"modified"===b.diffStatus?"#ffb86b":"#4ea1ff",w="added"===b.diffStatus?"new":"modified"===b.diffStatus?"modify":"draft",z=b.diffChanges?.length?b.diffChanges.join("\n"):"draft",E=i?q:(0,p.qA)(b.domain),F=(f={domain:b.domain,columns:b.columns},g=[],(h=f.columns.filter(a=>y.test(a.name)).map(a=>a.name)).length&&g.push({label:"secrets",tone:"danger",title:`stores credentials: ${h.join(", ")}`}),f.domain&&/auth/i.test(f.domain)&&g.push({label:"auth",tone:"warn",title:"auth-domain table"}),g),G=r(),[H,I]=(0,e.useState)(b.name),[J,K]=(0,e.useState)(b.columns),[L,M]=(0,e.useState)(!1),N=a=>a.stopPropagation(),O=b=>{K(b),G.patchTable(a,{columns:b})},P=(b.pins??[]).filter(a=>null===a.column),Q=a=>(b.pins??[]).filter(b=>b.column===a),R=function(a,b,c,d=!1){return Math.min(312,Math.max(240,Math.round(8*a.length)+90,...b.map(a=>{if(d)return Math.round(7.3*a.name.length)+146;let b=c?.[a.name]?c[a.name].length+2:a.type.length;return Math.round(7.3*a.name.length+6.7*b)+64})))}(b.name,i?J:b.columns,b.fkTargets,i),S=(0,o.cn)("relative rounded-xl border bg-[#161618]/95 text-card-foreground shadow-[0_18px_50px_-22px_rgba(0,0,0,0.9)] backdrop-blur",c&&"ring-2 ring-[var(--accent,#f5b942)]"),T=(0,s.k)(t.fE);return"full"!==T?(0,d.jsxs)("div",{className:(0,o.cn)(S,"border-white/10 px-3 py-2.5","far"===T&&"!opacity-0"),style:{width:R},children:[(0,d.jsx)(u.x,{}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block size-2 shrink-0 rounded-full",style:{background:E}}),(0,d.jsx)("span",{className:"truncate font-mono text-[15px] font-semibold",children:b.name})]})]}):i?(0,d.jsxs)("div",{className:(0,o.cn)(S,"group/card"),style:{width:R,borderColor:`${q}59`},children:[(0,d.jsx)(B,{}),(0,d.jsxs)("div",{className:"group/row relative flex items-center gap-1.5 rounded-t-[11px] px-3 py-2",style:{background:`${q}14`},children:[(0,d.jsx)("input",{value:H,onChange:a=>I(a.target.value),onBlur:()=>{let c=H.trim();c&&c!==b.name&&G.patchTable(a,{name:c})},onKeyDown:a=>{N(a),"Enter"===a.key&&a.currentTarget.blur()},placeholder:"table",className:(0,o.cn)(A,"min-w-0 flex-1 bg-transparent font-mono text-[13px] font-semibold tracking-tight outline-none")}),(0,d.jsx)(x,{badges:F}),(0,d.jsx)("span",{title:z,className:"shrink-0 rounded-md border px-1.5 py-px font-mono text-[9px] font-semibold uppercase tracking-[0.14em]",style:{background:`${q}1f`,borderColor:`${q}55`,color:q},children:w}),(0,d.jsx)("button",{type:"button",onClick:b=>{N(b),L?G.deleteTable(a):M(!0)},onBlur:()=>M(!1),title:"Delete table",className:(0,o.cn)(A,"shrink-0 transition-all",L?"text-red-300":"text-muted-foreground opacity-0 hover:text-red-300 group-hover/card:opacity-100"),children:(0,d.jsx)(l.A,{className:"size-3"})}),P.length>0?(0,d.jsx)(v.e0,{pins:P,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)(C,{title:`Comment on ${b.name}`,onClick:()=>b.onComment?.(b.name)})]}),(0,d.jsxs)("div",{className:"divide-y divide-white/[0.05]",children:[J.map((a,c)=>{let e=Q(a.name),f=b.diffColumns?.[a.name];return(0,d.jsxs)("div",{title:"added"===f?"column being added":"modified"===f?"column changed vs. the live schema":void 0,style:"added"===f?{background:"#7bd38914",boxShadow:"inset 2px 0 0 #7bd389"}:"modified"===f?{background:"#ffb86b14",boxShadow:"inset 2px 0 0 #ffb86b"}:void 0,className:"group/row relative flex items-center gap-1.5 px-3 py-[5px] text-[12px]",children:[(0,d.jsx)("button",{type:"button",onClick:a=>{N(a),O(J.map((a,b)=>b===c?{...a,isPk:!a.isPk}:a))},title:"Primary key",className:(0,o.cn)(A,"shrink-0",a.isPk?"text-amber-300/90":"text-muted-foreground/40 hover:text-amber-300"),children:(0,d.jsx)(j.A,{className:"size-3"})}),(0,d.jsx)("button",{type:"button",onClick:a=>{N(a),O(J.map((a,b)=>b===c?{...a,isFk:!a.isFk}:a))},title:"Foreign key",className:(0,o.cn)(A,"shrink-0",a.isFk?"text-sky-400/80":"text-muted-foreground/40 hover:text-sky-400"),children:(0,d.jsx)(k.A,{className:"size-3"})}),(0,d.jsx)("input",{value:a.name,onChange:a=>K(b=>b.map((b,d)=>d===c?{...b,name:a.target.value}:b)),onBlur:()=>O(J),onKeyDown:N,placeholder:"column",style:{minWidth:`${Math.max(6,a.name.length+1)}ch`},className:(0,o.cn)(A,"flex-1 bg-transparent font-mono outline-none")}),b.fkTargets?.[a.name]?(0,d.jsxs)("span",{title:`→ ${b.fkTargets[a.name]}`,className:"min-w-0 shrink truncate text-right font-mono text-[11px] text-muted-foreground/80",children:["→\xa0",b.fkTargets[a.name]]}):(0,d.jsx)("input",{value:a.type,onChange:a=>K(b=>b.map((b,d)=>d===c?{...b,type:a.target.value}:b)),onBlur:()=>O(J),onKeyDown:N,placeholder:"type",title:a.type,className:(0,o.cn)(A,"w-16 min-w-0 shrink bg-transparent text-right font-mono text-[11px] text-muted-foreground/80 outline-none")}),(0,d.jsx)("button",{type:"button",onClick:a=>{N(a),O(J.filter((a,b)=>b!==c))},title:"Remove column",className:(0,o.cn)(A,"shrink-0 text-muted-foreground/40 opacity-0 transition-opacity hover:text-red-300 group-hover/card:opacity-100"),children:(0,d.jsx)(m.A,{className:"size-3"})}),e.length>0?(0,d.jsx)(v.e0,{pins:e,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)(C,{title:`Comment on ${b.name}.${a.name}`,onClick:()=>b.onComment?.(`${b.name}.${a.name}`)})]},c)}),(0,d.jsxs)("button",{type:"button",onClick:a=>{N(a),O([...J,{name:"",type:"text",isPk:!1,isFk:!1,nullable:!0,note:null}])},className:(0,o.cn)(A,"flex w-full items-center gap-1 px-3 py-1.5 text-[10px] text-muted-foreground hover:text-foreground"),children:[(0,d.jsx)(n.A,{className:"size-3"})," column"]})]})]}):(0,d.jsxs)("div",{className:S,style:{width:R,borderColor:`${E}3d`},children:[(0,d.jsx)(B,{}),(0,d.jsxs)("div",{className:"group/row relative flex items-center justify-between rounded-t-[11px] px-3 py-2",style:{background:`${E}14`},children:[(0,d.jsxs)("span",{className:"flex min-w-0 flex-1 items-center gap-1.5 font-mono text-[13px] font-semibold tracking-tight",children:["INTROSPECTION"===b.source&&(0,d.jsx)("span",{title:"live — derived from your code",className:"inline-block size-1.5 shrink-0 rounded-full bg-emerald-400"}),(0,d.jsx)("span",{className:"truncate",title:b.name,children:b.name})]}),(0,d.jsxs)("span",{className:"flex shrink-0 items-center gap-1.5",children:["INTROSPECTION"!==b.source&&(0,d.jsx)("span",{title:"planned — not yet detected in code",className:"shrink-0 rounded-md border border-[#f5b942]/35 bg-[#f5b942]/10 px-1.5 py-px font-mono text-[9px] font-semibold uppercase tracking-[0.14em] text-[#f5b942]",children:"planned"}),(0,d.jsx)(x,{badges:F}),b.domain&&(0,d.jsx)("span",{className:"text-[9px] uppercase tracking-[0.14em]",style:{color:E},children:b.domain})]}),P.length>0?(0,d.jsx)(v.e0,{pins:P,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)(C,{title:`Comment on ${b.name}`,onClick:()=>b.onComment?.(b.name)})]}),(0,d.jsx)("div",{className:"divide-y divide-white/[0.05]",children:b.columns.map(a=>{let c=Q(a.name);return(0,d.jsxs)("div",{className:"group/row relative flex items-center gap-2 px-3 py-[7px] text-[12px]",children:[a.isPk?(0,d.jsx)(j.A,{className:"size-3 shrink-0 text-amber-300/90"}):a.isFk?(0,d.jsx)(k.A,{className:"size-3 shrink-0 text-sky-400/80"}):(0,d.jsx)("span",{className:"size-3 shrink-0"}),(0,d.jsx)("span",{className:"shrink-0 whitespace-nowrap font-mono",children:a.name}),(0,d.jsx)(D,{c:a,fkTargets:b.fkTargets}),c.length>0?(0,d.jsx)(v.e0,{pins:c,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)(C,{title:`Comment on ${b.name}.${a.name}`,onClick:()=>b.onComment?.(`${b.name}.${a.name}`)})]},a.name)})})]})},endpoint:function({id:a,data:b,selected:c}){var f;let g,h=p.e6[b.method]??"#8a8a8a",j="DRAFT"===b.source,k="added"===b.diffStatus?"#7bd389":"modified"===b.diffStatus?"#ffb86b":"#4ea1ff",m="added"===b.diffStatus?"new":"modified"===b.diffStatus?"changed":"draft",n=b.diffChanges?.length?b.diffChanges.join("\n"):"draft",q=(f={method:b.method,domain:b.domain,path:b.path},g=[],/^delete$/i.test(f.method.trim())&&g.push({label:"DELETE",tone:"danger",title:"destructive: deletes data"}),(f.domain&&/auth/i.test(f.domain)||z.test(f.path))&&g.push({label:"auth",tone:"warn",title:"auth-related endpoint"}),g),w=r(),[y,A]=(0,e.useState)(b.path),[B,C]=(0,e.useState)(!1),D=a=>a.stopPropagation(),G=(0,s.k)(t.fE);return"full"!==G?(0,d.jsxs)("div",{className:(0,o.cn)("relative flex w-[300px] items-center gap-2 rounded-lg border border-white/10 bg-[#161618]/95 px-2.5 py-2 text-card-foreground backdrop-blur",c&&"ring-2 ring-[var(--accent,#f5b942)]","far"===G&&"!opacity-0"),children:[(0,d.jsx)(u.x,{}),(0,d.jsx)("span",{className:"shrink-0 font-mono text-[12px] font-bold",style:{color:h},children:b.method}),(0,d.jsx)("span",{title:b.path,className:"truncate font-mono text-[13px]",children:b.path})]}):(0,d.jsxs)("div",{className:(0,o.cn)("group relative flex w-[300px] items-center gap-2 rounded-lg border bg-[#161618]/95 px-2.5 py-1.5 text-card-foreground shadow-[0_12px_36px_-18px_rgba(0,0,0,0.9)] backdrop-blur",j?"border-dashed":"border-white/10",c&&"ring-2 ring-[var(--accent,#f5b942)]"),style:j?{borderColor:`${k}66`,background:`${k}0f`}:void 0,children:[(0,d.jsx)(u.x,{}),"INTROSPECTION"===b.source&&(0,d.jsx)("span",{title:"live — derived from your code",className:"inline-block size-1.5 shrink-0 rounded-full bg-emerald-400"}),j?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("select",{value:b.method,onChange:b=>w.patchEndpoint(a,{method:b.target.value}),onPointerDown:D,className:(0,o.cn)(E,"shrink-0 rounded bg-transparent text-[10px] font-bold outline-none"),style:{color:h},title:"Method",children:F.map(a=>(0,d.jsx)("option",{value:a,className:"bg-card text-foreground",children:a},a))}),(0,d.jsx)("input",{value:y,title:y,onChange:a=>A(a.target.value),onBlur:()=>{let c=y.trim();c&&c!==b.path&&w.patchEndpoint(a,{path:c})},onKeyDown:a=>{D(a),"Enter"===a.key&&a.currentTarget.blur()},className:(0,o.cn)(E,"min-w-0 flex-1 bg-transparent font-mono text-[11px] outline-none")}),(0,d.jsx)(x,{badges:q}),(0,d.jsx)("span",{title:n,className:"shrink-0 rounded px-1 py-0.5 text-[8px] font-semibold uppercase",style:{background:`${k}26`,color:k},children:m}),(0,d.jsx)("button",{type:"button",onClick:b=>{D(b),B?w.deleteEndpoint(a):C(!0)},onBlur:()=>C(!1),title:"Delete",className:(0,o.cn)(E,"shrink-0 transition-colors",B?"text-red-300":"text-muted-foreground hover:text-red-300"),children:(0,d.jsx)(l.A,{className:"size-3"})})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[10px] font-bold",style:{background:`${h}22`,color:h},children:b.method}),(0,d.jsx)("span",{title:b.path,className:"min-w-0 flex-1 break-all font-mono text-[11px] leading-tight [-webkit-box-orient:vertical] [-webkit-line-clamp:2] [display:-webkit-box] overflow-hidden",children:b.path}),"INTROSPECTION"!==b.source&&(0,d.jsx)("span",{title:"planned — not yet detected in code",className:"shrink-0 rounded-md border border-[#f5b942]/35 bg-[#f5b942]/10 px-1.5 py-px font-mono text-[8px] font-semibold uppercase tracking-[0.14em] text-[#f5b942]",children:"planned"}),(0,d.jsx)(x,{badges:q}),(0,d.jsx)("button",{type:"button",onClick:b=>{D(b),B?w.deleteRealEndpoint(a):C(!0)},onBlur:()=>C(!1),title:B?"Click again to delete":"Delete endpoint",className:(0,o.cn)(E,"shrink-0 opacity-0 transition-opacity group-hover:opacity-100",B?"text-red-300 opacity-100":"text-muted-foreground hover:text-red-300"),children:(0,d.jsx)(l.A,{className:"size-3"})})]}),(b.pins?.length??0)>0?(0,d.jsx)(v.e0,{pins:b.pins,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)("button",{type:"button",title:`Comment on ${b.method} ${b.path}`,onClick:a=>{D(a),b.onComment?.(`${b.method} ${b.path}`)},className:(0,o.cn)(E,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,d.jsx)(i.A,{className:"size-3"})})]})},annotation:v.Sh},ao={deletable:al.I,annotation:am.L},ap="beacon:db-draft",aq={proposedAt:0,status:"pending",tables:[],relations:[],endpoints:[]};function ar({tables:a,relations:b,endpoints:c,draft:i,workspaceId:j,embedded:k=!1,diffBase:m,draftRef:n,onEdit:r,controlRef:u,commentsContent:w,commentsCount:x=0,onAddComment:y,annotations:z,onPinClick:A,onUpdateComment:B,onRemoveComment:C,boardAnnotations:D,readOnly:E=!1}){let F=(0,f.useRouter)(),H=a.length+(i?.tables.length??0),I=c.length+(i?.endpoints.length??0),[J,K]=(0,e.useState)(I>0&&(k||0===H)),[M,N]=(0,e.useState)(null),[O,P]=(0,e.useState)(null),[Q,R]=(0,e.useState)(null),[al,am]=(0,e.useState)(!1),[as,at]=(0,e.useState)("details"),[au,av]=(0,e.useState)(!1),[aw,ax]=(0,e.useState)(""),ay=(0,e.useRef)(null),[az,aA]=(0,e.useState)(new Set),[aB,aC]=(0,e.useState)("full"),[aD,aE]=(0,e.useState)(new Set),[aF,aG]=(0,e.useState)(new Set),[aH,aI]=(0,e.useState)(()=>({past:[],present:i??aq,future:[],rev:0,edited:!1})),aJ=aH.present,aK=(0,e.useCallback)(a=>{aI(b=>{let c=a(b.present);return c===b.present?b:{past:[...b.past,b.present].slice(-100),present:c,future:[],rev:b.rev+1,edited:!0}})},[]),aL=(0,e.useCallback)(a=>{aI(b=>{let c=a(b.present);return c===b.present?b:{...b,present:c}})},[]),aM=(0,e.useCallback)(()=>aI(a=>a.past.length?{past:a.past.slice(0,-1),present:a.past[a.past.length-1],future:[a.present,...a.future],rev:a.rev+1,edited:!0}:a),[]),aN=(0,e.useCallback)(()=>aI(a=>a.future.length?{past:[...a.past,a.present],present:a.future[0],future:a.future.slice(1),rev:a.rev+1,edited:!0}:a),[]),aO=(0,e.useCallback)(a=>aI(b=>({past:[],present:a,future:[],rev:b.rev+1,edited:!1})),[]);(0,e.useRef)(!1),i?.proposedAt,(0,e.useRef)(!1);let aP=(0,e.useMemo)(()=>aJ.tables.map(a=>({id:a.id,name:a.name,domain:a.domain,description:a.description,source:"DRAFT",x:a.x,y:a.y,columns:a.columns})),[aJ]),aQ=(0,e.useMemo)(()=>aJ.endpoints.map(a=>({id:a.id,method:a.method,path:a.path,domain:a.domain,description:a.description,source:"DRAFT",x:a.x,y:a.y,tables:a.links.map(a=>({tableId:a.tableId,access:a.access}))})),[aJ]),aR=(0,e.useMemo)(()=>[...a,...aP],[a,aP]),aS=(0,e.useMemo)(()=>[...c,...aQ],[c,aQ]),aT=(0,e.useMemo)(()=>(function(a,b,c={}){let d=aa(a,b),e=new Map,f=[];for(let a of[...b].sort(ab)){let b=d.get(a.id)??null;if(b){let c=e.get(b);c?c.push(a):e.set(b,[a])}else f.push(a)}let g=a=>{let b=e.get(a.id)?.length??0;return Z(a.columnCount)+(b?10+60*b:0)+30},h=Array.from(new Set(a.map(a=>_(a.domain)))),i=h.filter(a=>"—"!==a).sort(),j=h.includes("—")?[...i,"—"]:i,k=[];for(let b of j){let c=a.filter(a=>_(a.domain)===b).sort((a,b)=>a.name.localeCompare(b.name)),d=c.reduce((a,b)=>a+g(b),0),e=Math.max(1,Math.min(12,c.length,Math.round(Math.sqrt(d/320)))),f=Array(e).fill(0),h=new Map;for(let a of c){let b=0;for(let a=1;a<e;a++)f[a]<f[b]&&(b=a);h.set(a.id,{x:320*b,y:f[b]}),f[b]+=g(a)}k.push({d:b,w:320*e,h:Math.max(...f,0),tableLocal:h})}let l=(0,Y.Xi)(k.map(a=>({id:a.d,w:a.w,h:a.h})),{gapX:84,gapY:72,viewportAspect:c.viewportAspect,minBandW:960,aspectSlack:1.7}),m=new Map,n=new Map,o=0;for(let b of k){let c=l.get(b.d);for(let d of a.filter(a=>b.tableLocal.has(a.id))){let a=b.tableLocal.get(d.id),f=c.x+a.x,g=c.y+a.y;m.set(d.id,{x:f,y:g}),(e.get(d.id)??[]).forEach((a,b)=>{n.set(a.id,{x:f,y:g+Z(d.columnCount)+10+60*b})})}o=Math.max(o,c.y+b.h)}if(f.length){let a=o+72,b=Math.max(1,Math.min(4,Math.ceil(Math.sqrt(f.length/2))));f.forEach((c,d)=>{n.set(c.id,{x:d%b*300,y:a+60*Math.floor(d/b)})})}return{tables:m,endpoints:n}})(aR.map(a=>({id:a.id,name:a.name,domain:a.domain,columnCount:a.columns.length})),[]).tables,[aR]),aU=(0,e.useMemo)(()=>new Map,[]),aV=(0,e.useMemo)(()=>k?function(a,b){let c=new Map(a.map(a=>[ad(a.name),a])),d=new Map;for(let a of b){let b=c.get(ad(a.name));if(!b){d.set(a.id,{status:"added",changes:["new table"],columns:{}});continue}let{changes:e,columns:f}=function(a,b){let c=new Map(a.map(a=>[ad(a.name),a])),d=new Set(b.map(a=>ad(a.name))),e=[],f={};for(let a of b){let b=c.get(ad(a.name));if(!b){e.push(`+ column ${a.name} (${a.type})`),f[a.name]="added";continue}let d=[];ad(b.type)!==ad(a.type)&&d.push(`type ${b.type}→${a.type}`),b.isPk!==a.isPk&&d.push(a.isPk?"now PK":"no longer PK"),b.isFk!==a.isFk&&d.push(a.isFk?"now FK":"no longer FK"),b.nullable!==a.nullable&&d.push(a.nullable?"now nullable":"now required"),d.length&&(e.push(`~ column ${a.name}: ${d.join(", ")}`),f[a.name]="modified")}for(let b of a)d.has(ad(b.name))||e.push(`- column ${b.name}`);return{changes:e,columns:f}}(b.columns,a.columns);d.set(a.id,{status:e.length?"modified":"unchanged",changes:e,columns:f})}return d}(m?.tables??a,aP):aU,[k,m,a,aP,aU]),aW=(0,e.useMemo)(()=>k?function(a,b){let c=a=>`${ad(a.method)} ${ad(a.path)}`,d=new Set(a.map(c)),e=new Map;for(let a of b)e.set(a.id,d.has(c(a))?{status:"unchanged",changes:[],columns:{}}:{status:"added",changes:["new endpoint"],columns:{}});return e}(m?.endpoints??c,aQ):aU,[k,m,c,aQ,aU]),aX=(0,e.useMemo)(()=>[...b,...aJ.relations.map(a=>({id:a.id,fromTableId:a.fromTableId,toTableId:a.toTableId,fromColumn:a.fromColumn,toColumn:a.toColumn,label:a.label}))],[b,aJ.relations]),aY=(0,e.useMemo)(()=>{let a=new Map;for(let b of aS)for(let c of b.tables)a.set(c.tableId,(a.get(c.tableId)??0)+1);return a},[aS]),aZ=(0,e.useMemo)(()=>{let a=new Map;return aR.forEach(b=>a.set(b.id,b.x)),aS.forEach(b=>a.set(b.id,b.x)),a},[aR,aS]),a$=(0,e.useMemo)(()=>{let a=new Map;return aR.forEach(b=>a.set(b.id,b.y)),aS.forEach(b=>a.set(b.id,b.y)),a},[aR,aS]),a_=(0,e.useMemo)(()=>{let a=new Map(aR.map(a=>[a.id,a.name])),b=new Map;for(let c of aX){let d=a.get(c.toTableId);if(!d)continue;let e=b.get(c.fromTableId)??{};e[c.fromColumn]=d,b.set(c.fromTableId,e)}return b},[aX,aR]),a0=void 0!==D,[a1,a2]=(0,e.useState)(D??[]),a3=(0,e.useMemo)(()=>({tables:aR.map(a=>({id:a.id,name:a.name,columns:a.columns.map(a=>a.name)})),endpoints:aS.map(a=>({id:a.id,method:a.method,path:a.path}))}),[aR,aS]),a4=(0,e.useMemo)(()=>{if(a0){let a=new Set([...aR.map(a=>a.id),...aS.map(a=>a.id)]);return a1.filter(b=>a.has(b.targetId)).map((a,b)=>({id:a.id,n:b+1,targetId:a.targetId,column:a.columnName,text:a.body,x:a.x,y:a.y}))}let a=new Map((z??[]).map(a=>[a.id,a.comment]));return(0,G.m)(z??[],a3).map(b=>({id:b.annotationId,n:b.n,targetId:b.targetId,column:b.column,text:a.get(b.annotationId)??"",x:null,y:null}))},[a0,a1,z,a3,aR,aS]),a5=(0,e.useMemo)(()=>{let a=new Map;for(let b of a4){let c=a.get(b.targetId)??[];c.push({id:b.id,n:b.n,column:b.column}),a.set(b.targetId,c)}return a},[a4]),a6=(0,e.useMemo)(()=>new Map(a4.map(a=>[`anno-${a.id}`,a.targetId])),[a4]),a7=(0,e.useCallback)(async a=>{let b=(0,G.m)([{id:"_",excerpt:a}],a3)[0];if(!b)return;let c=await fetch("/api/board-annotations",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({targetKind:b.kind,targetId:b.targetId,columnName:b.column??void 0})});if(c.ok){let a=await c.json();a2(b=>[...b,a])}},[a3]),a8=(0,e.useCallback)((a,b)=>{a2(c=>c.map(c=>c.id===a?{...c,...b}:c)),fetch(`/api/board-annotations/${a}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(b)})},[]),a9=(0,e.useCallback)(a=>{a2(b=>b.filter(b=>b.id!==a)),fetch(`/api/board-annotations/${a}`,{method:"DELETE"})},[]),ba=a0?a7:y,bb=(0,e.useCallback)((a,b)=>{let c=(aZ.get(b)??0)-(aZ.get(a)??0),d=(a$.get(b)??0)-(a$.get(a)??0);return Math.abs(c)>=Math.abs(d)?c>=0?{sourceHandle:"sr",targetHandle:"tl"}:{sourceHandle:"sl",targetHandle:"tr"}:d>=0?{sourceHandle:"sb",targetHandle:"tt"}:{sourceHandle:"st",targetHandle:"tb"}},[aZ,a$]),bc=(0,e.useMemo)(()=>new Set([...aJ.tables.map(a=>a.id),...aJ.endpoints.map(a=>a.id)]),[aJ]),bd=(0,e.useMemo)(()=>new Set(a.map(a=>a.id)),[a]),be=(0,e.useCallback)(()=>{let a=aR.map(a=>({id:a.id,type:"dbTable",position:J?{x:a.x,y:a.y}:aT.get(a.id)??{x:a.x,y:a.y},data:{name:a.name,domain:a.domain,columns:a.columns,usageCount:aY.get(a.id)??0,source:a.source,rev:aH.rev,diffStatus:aV.get(a.id)?.status,diffChanges:aV.get(a.id)?.changes,diffColumns:aV.get(a.id)?.columns,fkTargets:a_.get(a.id),pins:a5.get(a.id),onPinClick:A,onComment:ba}})),b=aS.map(a=>({id:a.id,type:"endpoint",position:{x:a.x,y:a.y},data:{method:a.method,path:a.path,domain:a.domain,source:a.source,rev:aH.rev,diffStatus:aW.get(a.id)?.status,diffChanges:aW.get(a.id)?.changes,pins:a5.get(a.id),onPinClick:A,onComment:ba}})),c=new Map,d=new Map(aR.map(a=>[a.id,a])),e=new Map(aS.map(a=>[a.id,a]));return[...a,...b,...a4.map(a=>{let b=d.get(a.targetId),f=e.get(a.targetId),g=b?.x??f?.x??0,h=b?.y??f?.y??0,i=b?38+28*b.columns.length:42,j=c.get(a.targetId)??0;return c.set(a.targetId,j+1),{id:`anno-${a.id}`,type:"annotation",position:{x:a.x??g+26,y:a.y??h+i+64+112*j},data:{n:a.n,text:a.text,annotationId:a.id,onClick:a0||B?void 0:A,editable:a0||!!B,onChangeText:a0?(a,b)=>a8(a,{body:b}):B,onDelete:a0?a9:C}}})]},[aR,aS,J,aT,aY,aH.rev,aV,aW,a_,a5,a4,a0,A,B,C,ba,a8,a9]),[bf,bg,bh]=(0,g.ck)(be());(0,e.useRef)(J);let bi=(0,e.useCallback)((a,b,c,d)=>{fetch("/api/db/position",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({kind:a,id:b,x:c,y:d})})},[]),bj=(0,e.useCallback)((a,b)=>{let{x:c,y:d}=b.position;if(b.id.startsWith("anno-")){a0&&a8(b.id.slice(5),{x:c,y:d});return}bc.has(b.id)?aL(a=>a.tables.some(a=>a.id===b.id)?{...a,tables:a.tables.map(a=>a.id===b.id?{...a,x:c,y:d}:a)}:a.endpoints.some(a=>a.id===b.id)?{...a,endpoints:a.endpoints.map(a=>a.id===b.id?{...a,x:c,y:d}:a)}:a):bi("endpoint"===b.type?"endpoint":"table",b.id,c,d)},[bc,aL,bi,a0,a8]),bk=(0,e.useMemo)(()=>aX.map(a=>({id:`fk-${a.id}`,source:a.fromTableId,target:a.toTableId,...bb(a.fromTableId,a.toTableId),type:"deletable",label:a.label??void 0,markerEnd:{type:h.TG.ArrowClosed,color:"#6b6b6b"},style:{stroke:"#6b6b6b"}})),[aX,bb]),bl=(0,e.useMemo)(()=>aS.flatMap(a=>a.tables.map(b=>{let c=p.ru[b.access]??"#5a5a5a";return{id:`u-${a.id}-${b.tableId}`,source:a.id,target:b.tableId,...bb(a.id,b.tableId),type:"default",markerEnd:{type:h.TG.ArrowClosed,color:c},style:{stroke:c,strokeDasharray:"4 4",opacity:.7}}})),[aS,bb]),bm=(0,e.useMemo)(()=>J?[...bk,...bl]:bk,[bk,bl,J]),bn=(0,e.useMemo)(()=>a4.map(a=>({id:`annoe-${a.id}`,source:a.targetId,sourceHandle:`pin-${a.id}`,target:`anno-${a.id}`,targetHandle:"in",type:"annotation",selectable:!1,zIndex:30,style:{stroke:v.V5,strokeWidth:1.5,opacity:.9}})),[a4]),bo=M?.id??Q,bp=(0,e.useMemo)(()=>{if(O){let a=bm.find(a=>a.id===O);return a?new Set([a.source,a.target]):null}return bo?(0,p.F1)(bo,bm):null},[bo,O,bm]),bq=(0,e.useMemo)(()=>new Map(aR.map(a=>[a.id,{domain:a.domain,source:a.source}])),[aR]),br=(0,e.useMemo)(()=>new Map(aS.map(a=>[a.id,{method:a.method,source:a.source}])),[aS]),bs=(0,e.useMemo)(()=>{let a=new Set;if(!J)for(let b of br.keys())a.add(b);for(let[b,c]of bq)!az.size||c.domain&&az.has(c.domain)||a.add(b),aD.size&&!aD.has(c.source)&&a.add(b);for(let[b,c]of br)aF.size&&!aF.has(c.method)&&a.add(b),aD.size&&!aD.has(c.source)&&a.add(b);return a},[J,bq,br,az,aD,aF]),bt=aw.trim().length>0,bu=(0,e.useMemo)(()=>{if(!bt)return null;let a=new Set;for(let b of aR)!bs.has(b.id)&&(0,U.Qk)((0,U.jF)(b),aw)&&a.add(b.id);for(let b of aS)!bs.has(b.id)&&(0,U.Qk)((0,U.sQ)(b),aw)&&a.add(b.id);return a},[aR,aS,bs,aw,bt]),bv=(0,e.useMemo)(()=>bt?[...(0,U.r2)(aR.filter(a=>!bs.has(a.id)),aw,a=>(0,U.jF)(a),a=>({id:a.id,label:a.name,sublabel:a.domain??"table",kind:"table"})),...(0,U.r2)(aS.filter(a=>!bs.has(a.id)),aw,a=>(0,U.sQ)(a),a=>({id:a.id,label:a.path,sublabel:a.method,kind:"endpoint"}))].slice(0,12):[],[aR,aS,bs,aw,bt]),bw=(0,e.useCallback)(a=>{ax(""),N(br.has(a)?{id:a,kind:"endpoint"}:{id:a,kind:"table"}),P(null),am(!0),at("details");let b=ay.current?.getNode(a);if(!b||!ay.current)return;let c=b.measured?.width??220,d=b.measured?.height??80;ay.current.setCenter(b.position.x+c/2,b.position.y+d/2,{zoom:.9,duration:600})},[br]),bx=bu??bp,by=(0,e.useMemo)(()=>bf.map(a=>{if(a.id.startsWith("anno-")){let b=a6.get(a.id),c=!!b&&bs.has(b);return!!a.hidden!==c?{...a,hidden:c}:a}let b=bs.has(a.id);if(!bx)return b?{...a,hidden:b}:a;let c=bx.has(a.id),d=bu?U.Uy:.45;return{...a,hidden:b,style:{...a.style,opacity:c?1:d,boxShadow:c&&bu?U.RU:a.style?.boxShadow,borderRadius:c&&bu?12:a.style?.borderRadius,transition:"opacity 120ms, box-shadow 120ms"}}}),[bf,bs,bx,bu,a6]),bz=(0,e.useMemo)(()=>{let a=new Map(aR.map(a=>[a.id,(a.domain??"").trim()||"—"])),b=aa(aR,aS.map(a=>({id:a.id,method:a.method,path:a.path,uses:a.tables.map(a=>({tableId:a.tableId}))})));return new Map(aS.map(c=>{let d=b.get(c.id);return[c.id,d?a.get(d):$]}))},[aR,aS]),bA=(0,e.useMemo)(()=>{let a=[];for(let b of bf)if(!bs.has(b.id))if("dbTable"===b.type){let c=b.data;a.push({id:b.id,group:(c.domain??"").trim()||"—",x:b.position.x,y:b.position.y,w:b.measured?.width??280,h:b.measured?.height??38+28*c.columns.length})}else"endpoint"===b.type&&a.push({id:b.id,group:bz.get(b.id)??$,x:b.position.x,y:b.position.y,w:b.measured?.width??240,h:b.measured?.height??50});return(0,X.S)(a)},[bf,bs,bz]),bB=(0,e.useMemo)(()=>bu?bm.map(a=>{let b=bs.has(a.source)||bs.has(a.target);return bu.has(a.source)&&bu.has(a.target)?{...a,hidden:b,style:{...a.style,opacity:1}}:{...a,hidden:b,label:void 0,style:{...a.style,opacity:.08}}}):bm.map(a=>{let b=bs.has(a.source)||bs.has(a.target);return bo||O?(O?a.id===O:bo&&(a.source===bo||a.target===bo))?{...a,hidden:b,zIndex:20,style:{...a.style,opacity:1,strokeWidth:2.5}}:{...a,hidden:b,selectable:!1,label:void 0,markerEnd:void 0,style:{...a.style,opacity:.08}}:{...a,hidden:b,label:void 0}}),[bm,bo,O,bs,bu]),bC=(0,e.useMemo)(()=>Array.from(new Set(aR.map(a=>a.domain).filter(a=>!!a))).sort(),[aR]),bD=(0,e.useMemo)(()=>Array.from(new Set([...aR.map(a=>a.source),...aS.map(a=>a.source)])).sort(),[aR,aS]),bE=(0,e.useMemo)(()=>Array.from(new Set(aS.map(a=>a.method))).sort(),[aS]);function bF(a,b){b(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})}let bG=+!J+az.size+aD.size+aF.size,bH=(0,e.useCallback)(()=>{K(!0),aA(new Set),aE(new Set),aG(new Set)},[]),bI=(0,e.useCallback)(a=>{let{source:b,target:c}=a;b&&c&&b!==c&&aK(a=>{if(!(a.tables.some(a=>a.id===c)||bd.has(c)))return a;let d=a.endpoints.find(a=>a.id===b);return d?d.links.some(a=>a.tableId===c)?a:{...a,endpoints:a.endpoints.map(a=>{var d;return a.id===b?{...a,links:[...a.links,{tableId:c,access:(d=a.method,W.has(d.trim().toUpperCase())?"read":"write")}]}:a})}:a.tables.find(a=>a.id===b)?a.relations.some(a=>a.fromTableId===b&&a.toTableId===c)?a:{...a,relations:[...a.relations,{id:crypto.randomUUID(),fromTableId:b,toTableId:c,fromColumn:"fk",toColumn:"id",label:null}]}:a})},[aK,bd]),bJ=(0,e.useMemo)(()=>({patchEndpoint:(a,b)=>aK(c=>({...c,endpoints:c.endpoints.map(c=>c.id===a?{...c,...b}:c)})),deleteEndpoint:a=>aK(b=>({...b,endpoints:b.endpoints.filter(b=>b.id!==a)})),patchTable:(a,b)=>aK(c=>({...c,tables:c.tables.map(c=>c.id===a?{...c,...b}:c)})),deleteTable:a=>aK(b=>({...b,tables:b.tables.filter(b=>b.id!==a),relations:b.relations.filter(b=>b.fromTableId!==a&&b.toTableId!==a),endpoints:b.endpoints.map(b=>({...b,links:b.links.filter(b=>b.tableId!==a)}))})),deleteRealEndpoint:a=>{fetch(`/api/endpoints/${a}`,{method:"DELETE"}).then(a=>{a.ok&&F.refresh()})}}),[aK,F]),bK=(0,e.useCallback)(async()=>{av(!0);try{if((await fetch("/api/draft/approve",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(aJ)})).ok){try{localStorage.removeItem(ap)}catch{}aO(aq),F.refresh()}}finally{av(!1)}},[aJ,aO,F]),bL=(0,e.useCallback)(async()=>{av(!0);try{await fetch("/api/draft",{method:"DELETE"})}catch{}try{localStorage.removeItem(ap)}catch{}aO(aq),F.refresh(),av(!1)},[aO,F]),bM=(0,e.useMemo)(()=>{let a;return a=new Map(aJ.tables.map(a=>[a.id,a.name])),{tables:aJ.tables.map(a=>({name:a.name,domain:a.domain,description:a.description,columns:a.columns.map(a=>({name:a.name,type:a.type,isPk:a.isPk,isFk:a.isFk,nullable:a.nullable,note:a.note}))})),relations:aJ.relations.flatMap(b=>{let c=a.get(b.fromTableId),d=a.get(b.toTableId);return c&&d?[{fromTable:c,fromColumn:b.fromColumn,toTable:d,toColumn:b.toColumn,label:b.label}]:[]}),endpoints:aJ.endpoints.map(b=>({method:b.method,path:b.path,domain:b.domain,description:b.description,uses:b.links.flatMap(b=>{let c=a.get(b.tableId);return c?[{table:c,access:b.access}]:[]})}))}},[aJ]),bN=aJ.tables.length>0||aJ.endpoints.length>0,bO=aH.past.length>0,bP=aH.future.length>0;return(0,d.jsx)(q.Provider,{value:bJ,children:(0,d.jsxs)("div",{className:(0,o.cn)("canvas-dots relative w-full",k?"h-full":"h-screen"),children:[(0,d.jsxs)(g.Gc,{nodes:by,edges:"far"===aB?[...bB,...bn].map(a=>({...a,hidden:!0})):[...bB,...bn.map(a=>({...a,hidden:bs.has(a.source)}))],nodeTypes:an,edgeTypes:ao,nodesConnectable:!E,connectionMode:h.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onInit:a=>{ay.current=a},onNodesChange:bh,onConnect:bI,onNodeMouseEnter:(a,b)=>{"annotation"!==b.type&&R(b.id)},onNodeMouseLeave:()=>R(null),onNodeClick:(a,b)=>{if("annotation"===b.type){let a=b.data;a.editable||A?.(a.annotationId);return}let c="endpoint"===b.type?"endpoint":"table";N({id:b.id,kind:c}),P(null),am(!0),at("details")},onEdgeClick:(a,b)=>{P(b.id),N(null)},onPaneClick:()=>{N(null),P(null),am(!1)},onNodeDragStop:bj,onEdgesDelete:a=>{for(let b of a)if(b.id.startsWith("fk-")){let a=b.id.slice(3);fetch(`/api/db/relations/${a}`,{method:"DELETE"})}},onNodesDelete:a=>{for(let b of a)b.id.startsWith("anno-")||bc.has(b.id)||("endpoint"===b.type?fetch(`/api/endpoints/${b.id}`,{method:"DELETE"}):"dbTable"===b.type&&fetch(`/api/db/tables/${b.id}`,{method:"DELETE"}))},deleteKeyCode:E?null:["Backspace","Delete"],colorMode:"dark",fitView:!0,fitViewOptions:{padding:.15,minZoom:.38,maxZoom:.9},minZoom:.15,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[(0,d.jsx)(ac.Z,{regions:bA,tone:"category",lod:aB}),(0,d.jsx)(s.J,{onLod:aC,thresholds:t.fE}),(0,d.jsx)(g.H2,{position:"bottom-right",className:"!overflow-hidden !rounded-xl !border !border-white/10 [&_button]:!border-white/10 [&_button]:!bg-card/70 [&_button]:!text-foreground [&_button]:!backdrop-blur"}),!k&&(0,d.jsx)(g.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!overflow-hidden !rounded-xl !border !border-white/10 !bg-card/50 !backdrop-blur",nodeColor:"#555"}),!k&&(0,d.jsx)(g.Zk,{position:"bottom-center",className:"!mb-4",children:(0,d.jsx)("div",{className:"glass flex items-center rounded-full p-0.5",children:(0,d.jsxs)("button",{type:"button",disabled:au,title:"Re-arrange the board — domain clusters with endpoints docked under their tables",onClick:async()=>{av(!0);try{let a=window.innerWidth/window.innerHeight;await fetch("/api/db/arrange",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({viewportAspect:a})}),F.refresh()}finally{av(!1)}},className:"flex h-6 items-center gap-1.5 rounded-full px-3 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground disabled:opacity-40",children:[(0,d.jsx)(ae.A,{className:"size-3"}),au?"Arranging…":"Arrange"]})})}),!k&&(0,d.jsx)(g.Zk,{position:"top-center",className:"glass rounded-full px-1 py-0.5",children:(0,d.jsx)(V.Z,{active:"DATABASE",tabs:[{value:"ROADMAP",label:"Roadmap",href:"/map?view=ROADMAP"},{value:"ARCHITECTURE",label:"Architecture",href:"/map?view=ARCHITECTURE"},{value:"DATABASE",label:"Database",href:"/map?view=DATABASE"},{value:"FILES",label:"Files",href:"/map?view=FILES"}]})}),(0,d.jsxs)(g.Zk,{position:"top-right",className:(0,o.cn)("flex items-center gap-1 transition-[margin] duration-200",al&&"!mr-[332px]",k&&"hidden"),children:[(0,d.jsx)(T.X,{query:aw,onQuery:ax,hits:bv,placeholder:"Find a table, column, endpoint…",onPick:bw,onZoomToMatches:()=>{bu?.size&&ay.current?.fitView({nodes:[...bu].map(a=>({id:a})),duration:600,padding:.2})}}),(0,d.jsxs)(S.er,{title:"Filters",trigger:(a,b)=>(0,d.jsxs)("button",{type:"button",onClick:b,title:"Filters",className:(0,o.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",a||bG>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,d.jsx)(af.A,{className:"size-4"}),bG>0&&(0,d.jsx)("span",{className:"absolute -right-1 -top-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-[var(--accent-2,#ff7a45)] px-1 text-[9px] font-semibold text-white",children:bG})]}),children:[(0,d.jsx)(S.r1,{title:"Show",children:(0,d.jsx)(S.vu,{tone:"accent",on:J,onClick:()=>K(a=>!a),children:"endpoints"})}),bC.length>0&&(0,d.jsx)(S.r1,{title:"Domain",children:bC.map(a=>(0,d.jsx)(S.vu,{on:az.has(a),onClick:()=>bF(a,aA),children:a},a))}),bE.length>0&&(0,d.jsx)(S.r1,{title:"Method",children:bE.map(a=>(0,d.jsx)(S.vu,{on:aF.has(a),onClick:()=>bF(a,aG),children:a},a))}),bD.length>0&&(0,d.jsx)(S.r1,{title:"Source",children:bD.map(a=>(0,d.jsx)(S.vu,{on:aD.has(a),onClick:()=>bF(a,aE),children:a.toLowerCase()},a))}),bG>0&&(0,d.jsx)("button",{type:"button",onClick:bH,className:"mt-1 w-full rounded-md border border-white/10 px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:"clear filters"})]}),(0,d.jsx)(S.er,{title:"Legend",trigger:(a,b)=>(0,d.jsx)("button",{type:"button",onClick:b,title:"Legend",className:(0,o.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",a?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,d.jsx)(ag.A,{className:"size-4"})}),children:(0,d.jsxs)("ul",{className:"space-y-1.5 text-[10.5px] text-muted-foreground",children:[(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded border border-white/15 bg-white/[0.06] px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-foreground/80",children:"table"}),(0,d.jsx)("span",{children:"a database table \xb7 its columns"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded border border-white/15 bg-white/[0.06] px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-foreground/80",children:"endpoint"}),(0,d.jsx)("span",{children:"an API route \xb7 reads / writes tables"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-px w-6 bg-[#6b6b6b]"}),(0,d.jsx)("span",{children:"foreign key \xb7 drag from a table handle"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#4ea1ff"}}),(0,d.jsx)("span",{children:"endpoint read \xb7 GET / POST / etc"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#ffb86b"}}),(0,d.jsx)("span",{children:"endpoint write"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded border border-dashed border-sky-400/50 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"draft"}),(0,d.jsx)("span",{children:"agent-proposed \xb7 approve to persist"})]})]})}),!al&&(0,d.jsx)("button",{onClick:()=>am(!0),title:"Show panel",className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,d.jsx)(ah.A,{className:"size-4"})})]}),bN&&(0,d.jsxs)(g.Zk,{position:"bottom-center",className:"glass flex items-center gap-1 rounded-xl p-1.5",children:[(0,d.jsxs)("button",{onClick:aM,disabled:!bO,title:"Undo (⌘Z)",className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground disabled:opacity-30 disabled:hover:bg-transparent",children:[(0,d.jsx)(ai.A,{className:"size-3.5"})," undo"]}),(0,d.jsxs)("button",{onClick:aN,disabled:!bP,title:"Redo (⇧⌘Z)",className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground disabled:opacity-30 disabled:hover:bg-transparent",children:[(0,d.jsx)(aj.A,{className:"size-3.5"})," redo"]}),!k&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"mx-1 h-4 w-px bg-white/10"}),(0,d.jsxs)("button",{onClick:bL,disabled:au,title:"Discard draft",className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-red-500/15 hover:text-red-300 disabled:opacity-40",children:[(0,d.jsx)(l.A,{className:"size-3.5"})," discard"]}),(0,d.jsxs)("button",{onClick:bK,disabled:au,title:"Approve and persist to the schema",className:"flex items-center gap-1 rounded-md border border-emerald-500/40 bg-emerald-500/15 px-2.5 py-1 text-[11px] font-semibold text-emerald-300 transition-colors hover:bg-emerald-500/25 disabled:opacity-40",children:[(0,d.jsx)(ak.A,{className:"size-3.5"})," approve draft"]})]})]})]}),al&&(0,d.jsx)(L,{selected:M,tables:aR,relations:aX,endpoints:aS,draftGraph:bM,onClose:()=>{am(!1),at("details")},commentsContent:w,commentsCount:x,activeTab:as,onTabChange:at,onAddComment:ba,topOffset:k?64:void 0})]})})}},7913:(a,b,c)=>{c.d(b,{$Y:()=>j,M7:()=>h,gY:()=>i});var d=c(23873);let e=d.k5(["ROADMAP","ARCHITECTURE"]),f=d.k5(["FEATURE","BUG"]),g=d.k5(["frontend","backend","fullstack"]);d.k5(["user","agent"]);let h=d.k5(["PENDING","IN_PROGRESS","DONE","BLOCKED","CANCELLED","DEPRIORITIZED","KEEP","REBUILD","REPLACE","DROP"]);d.k5(["DEPENDS","CONTAINS","RELATES","REPLACES"]);let i=d.Ik({id:d.Yj().trim().min(1).max(64).optional(),view:e,kind:f.optional(),title:d.Yj().trim().min(1).max(200),cluster:d.Yj().trim().max(64).nullish(),layer:g.nullish(),role:d.Yj().trim().max(500).nullish(),plain:d.Yj().trim().max(2e3).nullish(),parentId:d.Yj().nullish(),status:h.optional(),priority:d.ai().int().min(0).max(3).optional(),x:d.ai().optional(),y:d.ai().optional(),sourceRef:d.Yj().trim().max(300).nullish()}),j=d.Ik({title:d.Yj().trim().min(1).max(200).optional(),kind:f.optional(),role:d.Yj().trim().max(500).nullish(),plain:d.Yj().trim().max(2e3).nullish(),cluster:d.Yj().trim().max(64).nullish(),layer:g.nullish(),status:h.optional(),priority:d.ai().int().min(0).max(3).optional(),sourceRef:d.Yj().trim().max(300).nullish()});d.Ik({x:d.ai(),y:d.ai()}),d.Ik({fromId:d.Yj().min(1),toId:d.Yj().min(1),kind:d.k5(["DEPENDS","RELATES","REPLACES"]).optional(),label:d.Yj().trim().max(80).nullish(),sourceHandle:d.Yj().trim().max(16).nullish(),targetHandle:d.Yj().trim().max(16).nullish()})},8292:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Nh:()=>o});var e=c(23873),f=c(39321),g=c(62896),h=c(22443),i=c(4963),j=c(56258);c(526),c(58149),c(47446);var k=c(10556);c(47162),c(27840),c(66949);var l=c(3173);c(50042);var m=c(4120),n=a([g,i,j,k,l,m]);[g,i,j,k,l,m]=n.then?(await n)():n;let p=new Set(["DONE","CANCELLED","DEPRIORITIZED"]),q=new Set(["IN_PROGRESS","BLOCKED"]),r=new Set(["CANCELLED","DEPRIORITIZED"]);async function o(a){let b=new Set,c=a;for(;!b.has(c);){var d;b.add(c);let a=await g.db.query.node.findFirst({where:(a,{eq:b})=>b(a.id,c),columns:{parentId:!0,view:!0}});if(!a?.parentId||"ROADMAP"!==a.view)return;let e=await g.db.query.node.findFirst({where:(b,{eq:c})=>c(b.id,a.parentId),columns:{id:!0,status:!0,view:!0}});if(!e||"ROADMAP"!==e.view||r.has(e.status))return;let i=(d=(await g.db.query.node.findMany({where:(a,{eq:b})=>b(a.parentId,e.id),columns:{status:!0}})).map(a=>a.status)).length?d.every(a=>p.has(a))?"DONE":d.some(a=>q.has(a))?"IN_PROGRESS":"PENDING":"PENDING";if(e.status===i)return;await g.db.update(h.node).set({status:i}).where((0,f.eq)(h.node.id,e.id)),c=e.id}}e.Ik({title:e.Yj().trim().min(1),domain:e.Yj().trim().min(1),role:e.Yj().nullish(),plain:e.Yj().nullish(),layer:e.Yj().nullish(),status:e.Yj().nullish(),files:e.YO(e.Yj()).optional(),depends:e.YO(e.Yj()).optional(),bugs:e.YO(e.Ik({note:e.Yj().trim().min(1).max(2e3)})).optional()}),d()}catch(a){d(a)}})},10556:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(62896);c(22443),c(47446);var e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},16189:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{n:()=>i});var e=c(80941),f=c(62896),g=a([f]);async function h(a){if(a)return void await (0,e.kO)(a);let b=(0,e.UP)();b?await (0,e.kO)(b):await (0,f.e$)()}async function i(a){let b=null;try{let{cookies:a}=await c.e(6042).then(c.bind(c,36042)),d=await a(),f=d.get(e.Dk)?.value??null;b=f&&(0,e.K4)(f)?f:null}catch{}return await h(b),(0,e.X_)(b,a)}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},22443:(a,b,c)=>{c.r(b),c.d(b,{appSetting:()=>E,boardAnnotation:()=>r,bugFlag:()=>s,codeFile:()=>B,codeFileEdge:()=>C,dbColumn:()=>u,dbRelation:()=>v,dbTable:()=>t,draftColumn:()=>z,draftRelation:()=>A,draftTable:()=>y,edge:()=>o,endpoint:()=>w,endpointTable:()=>x,node:()=>l,nodeFile:()=>m,nodeTags:()=>p,note:()=>q,planContract:()=>H,projectMeta:()=>F,syncState:()=>D,tag:()=>n,workspaceFlag:()=>G});var d=c(16996),e=c(55402),f=c(76003),g=c(24267),h=c(3161),i=c(80822),j=c(96508),k=c(70202);let l=(0,d.D)("Node",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),view:(0,e.Qq)().notNull(),kind:(0,e.Qq)().default("FEATURE").notNull(),cluster:(0,e.Qq)(),layer:(0,e.Qq)(),title:(0,e.Qq)().notNull(),role:(0,e.Qq)(),plain:(0,e.Qq)(),status:(0,e.Qq)().default("PENDING").notNull(),priority:(0,f.nd)().default(2).notNull(),progress:(0,f.nd)().default(0).notNull(),x:(0,g.x)().default(0).notNull(),y:(0,g.x)().default(0).notNull(),sourceRef:(0,e.Qq)(),externalId:(0,e.Qq)(),source:(0,e.Qq)().default("MANUAL").notNull(),planId:(0,e.Qq)(),parentId:(0,e.Qq)(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.Pe)("Node_cluster_idx").on(a.cluster),(0,h.Pe)("Node_parentId_idx").on(a.parentId),(0,h.Pe)("Node_view_idx").on(a.view),(0,i.mt)(()=>({columns:[a.parentId],foreignColumns:[a.id],name:"Node_parentId_Node_id_fk"})).onUpdate("cascade").onDelete("cascade")]),m=(0,d.D)("NodeFile",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),nodeId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),path:(0,e.Qq)().notNull()},a=>[(0,h.GL)("NodeFile_nodeId_path_key").on(a.nodeId,a.path),(0,h.Pe)("NodeFile_nodeId_idx").on(a.nodeId)]),n=(0,d.D)("Tag",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),label:(0,e.Qq)().notNull(),color:(0,e.Qq)()},a=>[(0,h.GL)("Tag_label_key").on(a.label)]),o=(0,d.D)("Edge",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),fromId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),toId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),kind:(0,e.Qq)().default("DEPENDS").notNull(),label:(0,e.Qq)(),sourceHandle:(0,e.Qq)(),targetHandle:(0,e.Qq)()},a=>[(0,h.GL)("Edge_fromId_toId_kind_key").on(a.fromId,a.toId,a.kind),(0,h.Pe)("Edge_toId_idx").on(a.toId),(0,h.Pe)("Edge_fromId_idx").on(a.fromId)]),p=(0,d.D)("_NodeTags",{a:(0,e.Qq)("A").notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),b:(0,e.Qq)("B").notNull().references(()=>n.id,{onDelete:"cascade",onUpdate:"cascade"})},a=>[(0,h.GL)("_NodeTags_AB_unique").on(a.a,a.b),(0,h.Pe)("_NodeTags_B_index").on(a.b)]),q=(0,d.D)("Note",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),title:(0,e.Qq)().default("Untitled").notNull(),body:(0,e.Qq)().default("").notNull(),ord:(0,g.x)().default(0).notNull(),pinned:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.Pe)("Note_updatedAt_idx").on(a.updatedAt)]),r=(0,d.D)("BoardAnnotation",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),targetKind:(0,e.Qq)().notNull(),targetId:(0,e.Qq)().notNull(),columnName:(0,e.Qq)(),body:(0,e.Qq)().default("").notNull(),x:(0,g.x)(),y:(0,g.x)(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.Pe)("BoardAnnotation_target_idx").on(a.targetId)]),s=(0,d.D)("BugFlag",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),nodeId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),by:(0,e.Qq)().notNull(),note:(0,e.Qq)().notNull(),resolvedAt:(0,f.nd)({mode:"timestamp_ms"}),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},a=>[(0,h.Pe)("BugFlag_nodeId_idx").on(a.nodeId)]),t=(0,d.D)("DbTable",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),name:(0,e.Qq)().notNull(),domain:(0,e.Qq)(),description:(0,e.Qq)(),source:(0,e.Qq)().default("MANUAL").notNull(),planId:(0,e.Qq)(),x:(0,g.x)().default(0).notNull(),y:(0,g.x)().default(0).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.Pe)("DbTable_domain_idx").on(a.domain),(0,h.GL)("DbTable_name_key").on(a.name)]),u=(0,d.D)("DbColumn",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),tableId:(0,e.Qq)().notNull().references(()=>t.id,{onDelete:"cascade",onUpdate:"cascade"}),name:(0,e.Qq)().notNull(),type:(0,e.Qq)().notNull(),isPk:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),isFk:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),nullable:(0,f.nd)({mode:"boolean"}).default(!0).notNull(),note:(0,e.Qq)(),ord:(0,f.nd)().default(0).notNull()},a=>[(0,h.GL)("DbColumn_tableId_name_key").on(a.tableId,a.name),(0,h.Pe)("DbColumn_tableId_idx").on(a.tableId)]),v=(0,d.D)("DbRelation",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),fromTableId:(0,e.Qq)().notNull().references(()=>t.id,{onDelete:"cascade",onUpdate:"cascade"}),toTableId:(0,e.Qq)().notNull().references(()=>t.id,{onDelete:"cascade",onUpdate:"cascade"}),fromColumn:(0,e.Qq)().notNull(),toColumn:(0,e.Qq)().notNull(),label:(0,e.Qq)()},a=>[(0,h.Pe)("DbRelation_toTableId_idx").on(a.toTableId),(0,h.Pe)("DbRelation_fromTableId_idx").on(a.fromTableId)]),w=(0,d.D)("Endpoint",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),method:(0,e.Qq)().notNull(),path:(0,e.Qq)().notNull(),domain:(0,e.Qq)(),description:(0,e.Qq)(),source:(0,e.Qq)().default("MANUAL").notNull(),planId:(0,e.Qq)(),x:(0,g.x)().default(0).notNull(),y:(0,g.x)().default(0).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.GL)("Endpoint_method_path_key").on(a.method,a.path),(0,h.Pe)("Endpoint_domain_idx").on(a.domain)]),x=(0,d.D)("EndpointTable",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),endpointId:(0,e.Qq)().notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),tableId:(0,e.Qq)().notNull().references(()=>t.id,{onDelete:"cascade",onUpdate:"cascade"}),access:(0,e.Qq)().default("read").notNull()},a=>[(0,h.GL)("EndpointTable_endpointId_tableId_key").on(a.endpointId,a.tableId),(0,h.Pe)("EndpointTable_tableId_idx").on(a.tableId)]),y=(0,d.D)("DraftTable",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),name:(0,e.Qq)().notNull(),domain:(0,e.Qq)(),description:(0,e.Qq)(),x:(0,g.x)().default(0).notNull(),y:(0,g.x)().default(0).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},a=>[(0,h.GL)("DraftTable_name_key").on(a.name)]),z=(0,d.D)("DraftColumn",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),tableId:(0,e.Qq)().notNull().references(()=>y.id,{onDelete:"cascade",onUpdate:"cascade"}),name:(0,e.Qq)().notNull(),type:(0,e.Qq)().notNull(),isPk:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),isFk:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),nullable:(0,f.nd)({mode:"boolean"}).default(!0).notNull(),note:(0,e.Qq)(),ord:(0,f.nd)().default(0).notNull()},a=>[(0,h.Pe)("DraftColumn_tableId_idx").on(a.tableId)]),A=(0,d.D)("DraftRelation",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),fromTableId:(0,e.Qq)().notNull().references(()=>y.id,{onDelete:"cascade",onUpdate:"cascade"}),toTableId:(0,e.Qq)().notNull().references(()=>y.id,{onDelete:"cascade",onUpdate:"cascade"}),fromColumn:(0,e.Qq)().notNull(),toColumn:(0,e.Qq)().notNull(),label:(0,e.Qq)()},a=>[(0,h.Pe)("DraftRelation_toTableId_idx").on(a.toTableId),(0,h.Pe)("DraftRelation_fromTableId_idx").on(a.fromTableId)]),B=(0,d.D)("CodeFile",{path:(0,e.Qq)().primaryKey(),root:(0,e.Qq)(),lang:(0,e.Qq)(),x:(0,g.x)().default(0).notNull(),y:(0,g.x)().default(0).notNull(),mtimeMs:(0,g.x)(),size:(0,f.nd)(),inDegree:(0,f.nd)().default(0).notNull(),outDegree:(0,f.nd)().default(0).notNull(),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),C=(0,d.D)("CodeFileEdge",{fromPath:(0,e.Qq)().notNull().references(()=>B.path,{onDelete:"cascade",onUpdate:"cascade"}),toPath:(0,e.Qq)().notNull().references(()=>B.path,{onDelete:"cascade",onUpdate:"cascade"}),circular:(0,f.nd)({mode:"boolean"}).default(!1).notNull()},a=>[(0,h.Pe)("CodeFileEdge_circular_idx").on(a.circular),(0,h.Pe)("CodeFileEdge_toPath_idx").on(a.toPath),(0,h.Pe)("CodeFileEdge_fromPath_idx").on(a.fromPath),(0,j.ie)({columns:[a.fromPath,a.toPath],name:"CodeFileEdge_fromPath_toPath_pk"})]),D=(0,d.D)("SyncState",{id:(0,e.Qq)().primaryKey().default("singleton"),version:(0,f.nd)().default(0).notNull(),codeGraphSyncedAt:(0,f.nd)({mode:"timestamp_ms"}),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),E=(0,d.D)("AppSetting",{id:(0,e.Qq)().primaryKey().default("singleton"),editor:(0,e.Qq)().default("auto").notNull(),currentFeatureId:(0,e.Qq)(),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),F=(0,d.D)("ProjectMeta",{id:(0,e.Qq)().primaryKey().default("singleton"),overview:(0,e.Qq)(),conventions:(0,e.Qq)().default("[]").notNull(),hasFrontend:(0,f.nd)({mode:"boolean"}),classificationRoots:(0,e.Qq)().default("[]").notNull(),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),G=(0,d.D)("WorkspaceFlag",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),key:(0,e.Qq)().notNull(),enabled:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),config:(0,e.Qq)(),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.GL)("WorkspaceFlag_key_key").on(a.key)]),H=(0,d.D)("PlanContract",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),planId:(0,e.Qq)().notNull(),declaredFiles:(0,e.Qq)().default("[]").notNull(),authorizedExtras:(0,e.Qq)().default("[]").notNull(),active:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.GL)("PlanContract_planId_key").on(a.planId),(0,h.Pe)("PlanContract_active_idx").on(a.active)])},23727:(a,b,c)=>{c.d(b,{U:()=>h,u:()=>i});var d=c(55030);function e(a){let{x:b,y:c}=a.internals.positionAbsolute,d=a.measured?.width??0,e=a.measured?.height??0;return{x:b,y:c,w:d,h:e,cx:b+d/2,cy:c+e/2}}function f(a,b){let c=e(a),d=e(b),f=c.w/2||1,g=c.h/2||1,h=(d.cx-c.cx)/(2*f)-(d.cy-c.cy)/(2*g),i=(d.cx-c.cx)/(2*f)+(d.cy-c.cy)/(2*g),j=1/(Math.abs(h)+Math.abs(i)||1);return{x:f*j*(h+i)+c.cx,y:g*j*(-h+i)+c.cy}}function g(a,b){let c=e(a),f=Math.round(b.x),g=Math.round(b.y);return f<=Math.round(c.x)+1?d.yX.Left:f>=Math.round(c.x+c.w)-1?d.yX.Right:g<=Math.round(c.y)+1?d.yX.Top:d.yX.Bottom}function h(a,b){let c=f(a,b),d=f(b,a);return{sx:c.x,sy:c.y,tx:d.x,ty:d.y,sourcePos:g(a,c),targetPos:g(b,d)}}function i(a,b){let c=a.x+a.w/2,d=a.y+a.h/2,e=b.x-c,f=b.y-d;if(0===e&&0===f)return{x:c,y:d};let g=1/Math.max(Math.abs(e)/(a.w/2||1),Math.abs(f)/(a.h/2||1));return{x:c+e*g,y:d+f*g}}},25127:(a,b,c)=>{c.d(b,{W:()=>e});var d=c(67484);function e(a,b){let[c,e]=(0,d.useState)(!1),[f,g]=(0,d.useState)(0),h=c?a[f]??null:null,i=(0,d.useCallback)(()=>{g(0),e(!0)},[]),j=(0,d.useCallback)(()=>e(!1),[]),k=(0,d.useCallback)(()=>g(b=>Math.min(b+1,a.length-1)),[a.length]),l=(0,d.useCallback)(()=>g(a=>Math.max(a-1,0)),[]),m=(0,d.useCallback)(b=>{b>=0&&b<a.length&&g(b)},[a.length]),n=(0,d.useMemo)(()=>h&&h.focusIds.length?new Set(h.focusIds):null,[h]);return{active:c,index:f,step:h,start:i,stop:j,next:k,prev:l,goto:m,focusIds:n}}},26284:(a,b,c)=>{c.d(b,{$:()=>i});var d=c(48249),e=c(70813),f=c(21654),g=c(33191);let h=(0,f.F)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function i({className:a,variant:b="default",size:c="default",...f}){return(0,d.jsx)(e.Button,{"data-slot":"button",className:(0,g.cn)(h({variant:b,size:c,className:a})),...f})}},27267:(a,b,c)=>{c.d(b,{TT:()=>f,Xf:()=>h,m6:()=>e,nR:()=>g,yl:()=>d});let d=["PENDING","IN_PROGRESS","DONE","BLOCKED","CANCELLED","DEPRIORITIZED"],e=["KEEP","REBUILD","REPLACE","DROP"],f=["IN_PROGRESS","PENDING","BLOCKED","DONE","DEPRIORITIZED","CANCELLED"],g={DONE:{label:"Done",className:"border-emerald-500/30 bg-emerald-500/15 text-emerald-300"},IN_PROGRESS:{label:"In progress",className:"border-sky-500/30 bg-sky-500/15 text-sky-300"},PENDING:{label:"Pending",className:"border-amber-500/30 bg-amber-500/10 text-amber-200"},BLOCKED:{label:"Blocked",className:"border-orange-500/30 bg-orange-500/15 text-orange-300"},CANCELLED:{label:"Cancelled",className:"border-zinc-500/30 bg-zinc-500/10 text-zinc-400 line-through"},DEPRIORITIZED:{label:"Deprioritized",className:"border-zinc-600/40 bg-zinc-600/10 text-zinc-400"},KEEP:{label:"Keep",className:"border-emerald-500/30 bg-emerald-500/15 text-emerald-300"},REBUILD:{label:"Rebuild",className:"border-violet-500/30 bg-violet-500/15 text-violet-300"},REPLACE:{label:"Replace",className:"border-rose-500/30 bg-rose-500/15 text-rose-300"},DROP:{label:"Drop",className:"border-zinc-500/30 bg-zinc-500/10 text-zinc-400 line-through"}};function h(a){return a?.trim()||"—"}},27741:(a,b,c)=>{c.d(b,{S:()=>d});function d(a,b={}){let c=b.pad??20,e=b.header??26,f=new Map;for(let b of a){let a=f.get(b.group);a?(a.minX=Math.min(a.minX,b.x),a.minY=Math.min(a.minY,b.y),a.maxX=Math.max(a.maxX,b.x+b.w),a.maxY=Math.max(a.maxY,b.y+b.h),a.count++):f.set(b.group,{minX:b.x,minY:b.y,maxX:b.x+b.w,maxY:b.y+b.h,count:1})}return Array.from(f.entries()).sort(([a],[b])=>a.localeCompare(b)).map(([a,b])=>({key:a,label:a,x:b.minX-c,y:b.minY-c-e,w:b.maxX-b.minX+2*c,h:b.maxY-b.minY+2*c+e,count:b.count}))}},27840:(a,b,c)=>{},29303:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(62896);c(22443);var e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},32798:(a,b,c)=>{c.d(b,{m:()=>d});function d(a,b){let c=[];return a.forEach((a,d)=>{let e=a.excerpt.trim();if(!e)return;let f={annotationId:a.id,n:d+1};for(let a of b.tables){if(e===a.name)return void c.push({...f,kind:"table",targetId:a.id,column:null});if(e.startsWith(`${a.name}.`)){let b=e.slice(a.name.length+1);if(a.columns.includes(b))return void c.push({...f,kind:"column",targetId:a.id,column:b})}}for(let a of b.endpoints??[])if(e===`${a.method} ${a.path}`)return void c.push({...f,kind:"endpoint",targetId:a.id,column:null});for(let a of b.features??[])if(e===a.title||e===`feature: ${a.title}`)return void c.push({...f,kind:"feature",targetId:a.id,column:null})}),c}},33346:(a,b,c)=>{c.d(b,{a2:()=>g,i3:()=>j,xZ:()=>h});let d=["bg-emerald-500/15 text-emerald-300","bg-sky-500/15 text-sky-300","bg-violet-500/15 text-violet-300","bg-amber-500/15 text-amber-200","bg-rose-500/15 text-rose-300","bg-cyan-500/15 text-cyan-300","bg-fuchsia-500/15 text-fuchsia-300","bg-lime-500/15 text-lime-300","bg-orange-500/15 text-orange-300","bg-teal-500/15 text-teal-300","bg-indigo-500/15 text-indigo-300","bg-pink-500/15 text-pink-300"],e=["border-emerald-500/20 bg-emerald-500/[0.04]","border-sky-500/20 bg-sky-500/[0.04]","border-violet-500/20 bg-violet-500/[0.04]","border-amber-500/20 bg-amber-500/[0.04]","border-rose-500/20 bg-rose-500/[0.04]","border-cyan-500/20 bg-cyan-500/[0.04]","border-fuchsia-500/20 bg-fuchsia-500/[0.04]","border-lime-500/20 bg-lime-500/[0.04]","border-orange-500/20 bg-orange-500/[0.04]","border-teal-500/20 bg-teal-500/[0.04]","border-indigo-500/20 bg-indigo-500/[0.04]","border-pink-500/20 bg-pink-500/[0.04]"];function f(a){let b=(a??"").trim().toUpperCase();if(!b)return null;let c=0;for(let a=0;a<b.length;a++)c=31*c+b.charCodeAt(a)>>>0;return c%d.length}function g(a){let b=f(a);return null===b?"bg-white/[0.06] text-muted-foreground":d[b]}function h(a){let b=f(a);return null===b?"border-white/10 bg-white/[0.02]":e[b]}let i=["#34d399","#38bdf8","#a78bfa","#fbbf24","#fb7185","#22d3ee","#e879f9","#a3e635","#fb923c","#2dd4bf","#818cf8","#f472b6"];function j(a){let b=f(a);return null===b?"#9ca3af":i[b]}},34849:(a,b,c)=>{c.d(b,{VI:()=>f});var d=c(27267),e=c(86892);function f(a,b,c={}){let g=c.colW??320,h=c.rowH??150,i=c.childIndent??24,j=c.laneGap??56,k=c.bandGap??110,l=c.maxCols??10,m=c.minBandW??3*g,n=new Set(a.map(a=>a.id)),o=a=>!a.parentId||!n.has(a.parentId),p=a.filter(o),q=new Map;for(let b of a){if(o(b))continue;let a=q.get(b.parentId);a?a.push(b):q.set(b.parentId,[b])}let r="status"===b?a=>a.status:"priority"===b?a=>String(a.priority):a=>(a.cluster??"").trim()||"—",s=new Map;for(let a of p){let b=r(a),c=s.get(b);c?c.push(a):s.set(b,[a])}let t=(function(a,b,c){if("status"===a)return[...d.TT];if("priority"===a)return["0","1","2","3"];let e=Array.from(new Set(b.map(c))),f=e.filter(a=>"—"!==a).sort();return e.includes("—")?[...f,"—"]:f})(b,p,r).filter(a=>s.has(a)),u=[];for(let a of t){let b=s.get(a),c=b.reduce((a,b)=>a+1+(q.get(b.id)?.length??0),0),d=Math.max(1,Math.min(l,b.length,Math.round(Math.sqrt(.85*c))||1)),e=Array(d).fill(0),f=new Map;for(let a of b){let b=0;for(let a=1;a<d;a++)e[a]<e[b]&&(b=a);let c=b*g,j=e[b]*h;f.set(a.id,{x:c,y:j});let k=q.get(a.id)??[];k.forEach((a,b)=>{f.set(a.id,{x:c+i,y:j+(b+1)*h})}),e[b]+=1+k.length}let j=e.reduce((a,b)=>Math.max(a,b),0);u.push({id:a,w:d*g,h:j*h,local:f})}let v=(0,e.Xi)(u.map(a=>({id:a.id,w:a.w,h:a.h})),{gapX:j,gapY:k,viewportAspect:c.viewportAspect,minBandW:m,aspectSlack:1.5}),w=new Map;for(let a of u){let b=v.get(a.id);for(let[c,d]of a.local)w.set(c,{x:b.x+d.x,y:b.y+d.y})}return w}},38476:(a,b,c)=>{c.d(b,{F1:()=>h,e6:()=>f,qA:()=>e,ru:()=>g});let d={auth:"#4ea1ff",firms:"#c792ea",search:"#7bd389",storage:"#ffb86b",petitions:"#ff7a45",monitoring:"#f5b942",admin:"#ff6b9d"};function e(a){return a&&d[a]||"#8a8a8a"}let f={GET:"#7bd389",POST:"#4ea1ff",PUT:"#ffb86b",PATCH:"#ffb86b",DELETE:"#ff3860"},g={read:"#4ea1ff",write:"#ffb86b","read-write":"#c792ea"};function h(a,b){let c=new Set([a]);for(let d of b)d.source===a&&c.add(d.target),d.target===a&&c.add(d.source);return c}},38706:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{"406a6b6c901a8878d4b40206421368ea734d34ffe9":()=>e.cl,"4084780b8a9ec39fddb37d84c6eb4d6f8db41b4fc6":()=>e.pJ,"409b56b6cc15fb689c1e8af1737fd8f024eaccdee4":()=>e.HQ,"409d7b91af7e6220b13f8eefb6a4930de68ec73c7e":()=>e.hY,"40adc582a181b7655db7b410a1e6bc56e23cc4912d":()=>e.hg,"6056d9e95481af19600b95cac9e79c4164163f0bd3":()=>e.t3,"60e29301deee354e9b22d10d0882e0fba1f0efa5ef":()=>e.Oz});var e=c(1110),f=a([e]);e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},40335:(a,b,c)=>{c.d(b,{b:()=>g,d:()=>h});let d=a=>a.slice(a.lastIndexOf("/")+1),e=(a,b)=>b>a?", …":"";function f(a){let b=new Map;for(let c of a)b.set(d(c),(b.get(d(c))??0)+1);return a.map(a=>{let c=d(a);if((b.get(c)??0)<=1)return c;let e=a.slice(0,a.lastIndexOf("/")),f=e.slice(e.lastIndexOf("/")+1);return f?`${f}/${c}`:c})}function g(a,b,c){if(0===a.length)return[];let d=a=>c.get(a)??"(root)",g=new Map;for(let b of a){let a=d(b.path),c=g.get(a);c?c.push(b):g.set(a,[b])}let h=[...g.keys()],i=a=>g.get(a)?.length??0,j=new Map,k=new Map;for(let a of h)j.set(a,new Set),k.set(a,0);let l=new Set;for(let a of b){if(a.circular)continue;let b=d(a.from),c=d(a.to);if(b===c||!j.has(b)||!j.has(c))continue;let e=`${b}\0${c}`;l.has(e)||(l.add(e),j.get(b).add(c),k.set(c,(k.get(c)??0)+1))}let m=(a,b)=>i(b)-i(a)||a.localeCompare(b),n=new Map(k),o=new Set,p=[];for(;p.length<h.length;){let a=h.filter(a=>!o.has(a)&&(n.get(a)??0)===0).sort(m);if(0===a.length){for(let a of h.filter(a=>!o.has(a)).sort((a,b)=>(n.get(a)??0)-(n.get(b)??0)||i(b)-i(a)||a.localeCompare(b)))p.push(a),o.add(a);break}for(let b of a)for(let a of(p.push(b),o.add(b),j.get(b)))n.set(a,(n.get(a)??0)-1)}let q=a.filter(a=>(a.inDegree??0)===0).sort((a,b)=>(b.outDegree??0)-(a.outDegree??0)||a.path.localeCompare(b.path)),r=[];if(r.push({id:"tour:overview",kind:"overview",title:"Project overview",summary:`${a.length} files across ${h.length} ${1===h.length?"area":"areas"} \xb7 ${b.length} imports. Step through the architecture in dependency order — entry points first.`,focusIds:[]}),q.length){let a=f(q.slice(0,4).map(a=>a.path));r.push({id:"tour:entry",kind:"entry",title:"Entry points",summary:`${q.length} file${1===q.length?"":"s"} nothing imports — where execution starts: ${a.join(", ")}${e(4,q.length)}.`,focusIds:q.slice(0,12).map(a=>a.path)})}for(let a of p){let b=g.get(a),c=f([...b].sort((a,b)=>(b.inDegree??0)-(a.inDegree??0)||a.path.localeCompare(b.path)).slice(0,3).map(a=>a.path)),d=[...j.get(a)].sort(m),h=d.length?` \xb7 imports ${d.slice(0,3).join(", ")}${e(3,d.length)}`:" \xb7 no cross-area imports";r.push({id:`tour:group:${a}`,kind:"group",title:a,summary:`${b.length} file${1===b.length?"":"s"}${h} \xb7 top hubs: ${c.join(", ")}.`,focusIds:b.map(a=>a.path)})}return r}function h(a){if(0===a.length)return[];let b=a=>a.cluster?.trim()||"—",c=new Map;for(let d of a){let a=b(d),e=c.get(a);e?e.push(d):c.set(a,[d])}let d=a=>Math.min(...c.get(a).map(a=>a.x??0)),f=[...c.keys()].sort((a,b)=>d(a)-d(b)||a.localeCompare(b)),g=[{id:"tour:overview",kind:"overview",title:"Architecture overview",summary:`${a.length} component${1===a.length?"":"s"} across ${f.length} ${1===f.length?"domain":"domains"}. Walk the architecture domain by domain, upstream first.`,focusIds:[]}];for(let a of f){let b=c.get(a),d=b.slice(0,3).map(a=>a.title?.trim()||a.id);g.push({id:`tour:domain:${a}`,kind:"group",title:a,summary:`${b.length} component${1===b.length?"":"s"}: ${d.join(", ")}${e(3,b.length)}.`,focusIds:b.map(a=>a.id)})}return g}},40359:(a,b,c)=>{c.d(b,{d:()=>k});var d=c(48249),e=c(32039),f=c(45535),g=c(34644),h=c(91995),i=c(48779),j=c(33191);function k({steps:a,index:b,onPrev:c,onNext:l,onExit:m,onGoto:n}){let o=a[b];if(!o)return null;let p=b===a.length-1;return(0,d.jsxs)(i.b,{className:"absolute bottom-3 left-3 top-16 z-10 flex w-72 flex-col rounded-2xl",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,d.jsxs)("span",{className:"flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:[(0,d.jsx)(e.A,{className:"size-3.5"}),"Guided tour"]}),(0,d.jsx)("button",{onClick:m,title:"End tour (Esc)",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(f.A,{className:"size-4"})})]}),(0,d.jsxs)("div",{className:"border-b border-white/10 px-3.5 py-3",children:[(0,d.jsxs)("div",{className:"text-[10px] font-medium uppercase tracking-wide text-[var(--accent-2,#ff7a45)]",children:["Step ",b+1," / ",a.length]}),(0,d.jsx)("h2",{className:"mt-1 break-words text-sm font-semibold leading-tight",children:o.title}),(0,d.jsx)("p",{className:"mt-1 text-[11px] leading-snug text-muted-foreground",children:o.summary})]}),(0,d.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto p-1.5",children:(0,d.jsx)("ol",{className:"space-y-0.5",children:a.map((a,c)=>(0,d.jsx)("li",{children:(0,d.jsxs)("button",{onClick:()=>n(c),title:a.title,className:(0,j.cn)("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left transition-colors",c===b?"bg-white/[0.08] text-foreground":"text-muted-foreground hover:bg-white/[0.04] hover:text-foreground"),children:[(0,d.jsx)("span",{className:(0,j.cn)("flex size-4 shrink-0 items-center justify-center rounded-full text-[9px] font-bold",c===b?"bg-[var(--accent-2,#ff7a45)] text-background":"bg-white/10 text-muted-foreground"),children:c+1}),(0,d.jsx)("span",{className:"truncate text-[11px]",children:a.title})]})},a.id))})}),(0,d.jsxs)("div",{className:"flex items-center justify-between gap-2 border-t border-white/10 p-2",children:[(0,d.jsxs)("button",{onClick:c,disabled:0===b,className:"flex items-center gap-1 rounded-md px-2 py-1.5 text-[11px] text-muted-foreground transition-colors enabled:hover:bg-white/[0.06] enabled:hover:text-foreground disabled:opacity-40",children:[(0,d.jsx)(g.A,{className:"size-3.5"})," Prev"]}),p?(0,d.jsx)("button",{onClick:m,className:"rounded-md bg-[var(--accent-2,#ff7a45)]/90 px-3 py-1.5 text-[11px] font-semibold text-background transition-colors hover:bg-[var(--accent-2,#ff7a45)]",children:"Done"}):(0,d.jsxs)("button",{onClick:l,className:"flex items-center gap-1 rounded-md bg-white/10 px-3 py-1.5 text-[11px] font-semibold text-foreground transition-colors hover:bg-white/[0.16]",children:["Next ",(0,d.jsx)(h.A,{className:"size-3.5"})]})]})]})}},42800:(a,b,c)=>{c.d(b,{I:()=>i});var d=c(48249),e=c(56024),f=c(55030),g=c(57684),h=c(23727);function i(a){let{deleteElements:b}=(0,e.VH)(),c=(0,e.JY)(a.source),i=(0,e.JY)(a.target),j=c&&i?(0,h.U)(c,i):null,[k,l,m]=(0,f.Fp)(j?{sourceX:j.sx,sourceY:j.sy,sourcePosition:j.sourcePos,targetX:j.tx,targetY:j.ty,targetPosition:j.targetPos}:{sourceX:a.sourceX,sourceY:a.sourceY,sourcePosition:a.sourcePosition,targetX:a.targetX,targetY:a.targetY,targetPosition:a.targetPosition});return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(e.tE,{id:a.id,path:k,style:a.style,markerEnd:a.markerEnd,interactionWidth:20}),a.label&&(0,d.jsx)(e.rV,{children:(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -120%) translate(${l}px, ${m}px)`,fontSize:11,color:"#cfcfcf",background:"#161616",padding:"1px 4px",borderRadius:4,pointerEvents:"none",zIndex:1e3},children:a.label})}),a.selected&&(0,d.jsx)(e.rV,{children:(0,d.jsx)("div",{className:"nodrag nopan",style:{position:"absolute",transform:`translate(-50%, 0) translate(${l}px, ${m+14}px)`,pointerEvents:"all",zIndex:1e3},children:(0,d.jsx)("button",{type:"button",onMouseDown:a=>a.stopPropagation(),onClick:c=>{c.stopPropagation(),b({edges:[{id:a.id}]})},title:"Delete (or press Backspace)",className:"flex size-7 items-center justify-center rounded-full border border-white/20 bg-card/95 text-red-300 shadow-lg backdrop-blur-md transition-colors hover:bg-red-500/25 hover:text-red-200",children:(0,d.jsx)(g.A,{className:"size-3.5"})})})})]})}},45006:(a,b,c)=>{c.d(b,{MapClient:()=>aN});var d=c(48249),e=c(67484),f=c(53735),g=c(55030),h=c(56024);c(71763);var i=c(10920),j=c(15828),k=c(69473),l=c(17313),m=c(28624),n=c(32039),o=c(90498),p=c(30170),q=c(95744),r=c(19099),s=c(1229),t=c(58720),u=c(99829);let v=(0,u.createServerReference)("4084780b8a9ec39fddb37d84c6eb4d6f8db41b4fc6",u.callServer,void 0,u.findSourceMapURL,"acceptSuggestionAction");var w=c(85205),x=c(9880),y=c(49783),z=c(25148),A=c(24422),B=c(47578),C=c(97432),D=c(47352),E=c(35471),F=c(45535),G=c(57684),H=c(83394),I=c(55056),J=c(27267),K=c(78103),L=c(33346);let M=(0,e.createContext)(null);function N(){let a=(0,e.useContext)(M);if(!a)throw Error("useNodeEdit must be used inside NodeEditContext");return a}var O=c(50605),P=c(2942),Q=c(33191);let R=[{v:0,l:"P0 \xb7 critical"},{v:1,l:"P1 \xb7 high"},{v:2,l:"P2 \xb7 medium"},{v:3,l:"P3 \xb7 low"}],S="nodrag nopan";function T({layer:a}){let b=(0,K.jR)(a);return b?(0,d.jsx)("span",{"aria-hidden":!0,className:"absolute bottom-2 left-1 top-2 w-[3px] rounded-full",style:{background:(0,K.A6)(b)}}):null}function U({layer:a}){let b=(0,K.jR)(a);if(!b)return null;let c=K.YG[b];return(0,d.jsxs)("span",{title:`${c.label} — which side of the stack this lands on`,className:"flex shrink-0 items-center gap-1 rounded bg-white/10 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:["backend"!==b&&(0,d.jsx)(w.A,{className:"size-2.5"}),"frontend"!==b&&(0,d.jsx)(x.A,{className:"size-2.5"}),c.short]})}function V({nodeId:a}){let b=(0,r.useRouter)(),[c,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(""),[i,j]=(0,e.useState)(!1),k=()=>{f(!1),h("")},m=async()=>{let c=g.trim();if(c&&!i){j(!0);try{(await fetch("/api/bug-flags",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({nodeId:a,by:"user",note:c})})).ok&&(k(),b.refresh())}finally{j(!1)}}};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("button",{type:"button",title:"Flag a bug on this component",onClick:a=>{a.stopPropagation(),f(a=>!a)},className:(0,Q.cn)(S,"absolute -right-3 top-[calc(50%-28px)] z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground shadow-md transition-all hover:border-rose-400/50 hover:text-rose-300",c?"border-rose-400/50 text-rose-300 opacity-100":"opacity-0 group-hover/nc:opacity-100"),children:(0,d.jsx)(l.A,{className:"size-3"})}),c&&(0,d.jsxs)("div",{onClick:a=>a.stopPropagation(),className:(0,Q.cn)(S,"absolute -right-2 top-[calc(50%-28px)] z-20 w-60 translate-x-full rounded-xl border border-rose-400/25 bg-[#1c1c1f] p-2 shadow-xl"),children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center justify-between",children:[(0,d.jsxs)("span",{className:"flex items-center gap-1 text-[10px] font-semibold uppercase tracking-wide text-rose-300",children:[(0,d.jsx)(l.A,{className:"size-3"})," Flag a bug"]}),(0,d.jsx)("button",{type:"button",title:"Cancel",onClick:k,className:"rounded p-0.5 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)("span",{className:"block px-1 text-[11px] leading-none",children:"✕"})})]}),(0,d.jsx)("textarea",{autoFocus:!0,rows:2,value:g,placeholder:"What did you find?",onChange:a=>h(a.target.value),onKeyDown:a=>{a.stopPropagation(),"Escape"===a.key&&k(),"Enter"!==a.key||a.shiftKey||(a.preventDefault(),m())},className:"field-sizing-content max-h-40 min-h-12 w-full resize-none rounded-md bg-white/[0.04] px-1.5 py-1 text-xs outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.07]"}),(0,d.jsx)("button",{type:"button",disabled:i||!g.trim(),onClick:()=>void m(),className:"mt-1.5 w-full rounded-md bg-rose-500/15 py-1 text-[11px] font-semibold text-rose-300 transition-colors hover:bg-rose-500/25 disabled:opacity-50",children:i?"Flagging…":"Flag bug"})]})]})}let W=["border-[#ff3860]/60 shadow-[0_0_0_1px_rgba(255,56,96,0.15)]","border-[#ff7a45]/50","border-amber-400/35","border-border"];function X({id:a,data:b,selected:c}){let{categories:f,statuses:g,patch:h,isExpanded:i,toggleExpand:j,openDetailed:k,removeNode:m,editingTitleId:n,onAskAgent:o,hasFrontend:p}=N(),r=i(a),[u,w]=(0,e.useState)(!1),[x,M]=(0,e.useState)(!1),[Y,Z]=(0,e.useState)(b.title),[$,_]=(0,e.useState)(b.cluster??""),[aa,ab]=(0,e.useState)(b.plain??""),ac="BUG"===b.kind&&"ROADMAP"===b.view,ad="ARCHITECTURE"===b.view,ae=ad?"border-border":W[b.priority]??"border-border",af=b.openBugs??0,ag="CANCELLED"===b.status||"DROP"===b.status,ah="DEPRIORITIZED"===b.status,ai="DRAFT"===b.source,aj="IN_PROGRESS"===b.status,ak="INIT"===b.source&&"ROADMAP"===b.view,al=a=>a.stopPropagation(),[am,an]=(0,e.useTransition)(),ao=(0,O.k)();return"full"!==ao?(0,d.jsxs)("div",{className:(0,Q.cn)("relative rounded-lg border bg-card px-3 py-2.5 text-card-foreground shadow-sm","w-fit max-w-[296px]",b.isChild?"min-w-56":"min-w-64",ac?"border-rose-400/50 bg-rose-500/[0.05]":ae,aj&&"border-sky-400/60",c&&"ring-2 ring-[var(--accent,#f5b942)]",ag&&"opacity-60","far"===ao&&"!opacity-0"),children:[(0,d.jsx)(s.x,{}),p&&(0,d.jsx)(T,{layer:b.layer}),(0,d.jsx)("div",{className:"break-words text-[15px] font-semibold leading-snug",children:b.title})]}):(0,d.jsxs)("div",{className:(0,Q.cn)("group/nc relative rounded-lg border bg-card px-2.5 py-2 text-card-foreground shadow-sm transition","w-fit max-w-96",r?"min-w-80":"min-w-64",ai?"border-dashed border-sky-400/50 bg-sky-500/[0.06]":ak?"border-dashed border-violet-400/60 bg-violet-500/[0.07] shadow-[0_0_0_1px_rgba(167,139,250,0.18)]":ae,ac&&!ai&&"border-rose-400/50 bg-rose-500/[0.05]",aj&&"border-sky-400/60 shadow-[0_0_0_1px_rgba(56,160,255,0.25)]",b.isNext&&"border-emerald-400/70 shadow-[0_0_0_2px_rgba(52,211,153,0.35)]",null!=b.workOrderRank&&b.workOrderRank>1&&"border-emerald-400/25",c&&"ring-2 ring-[var(--accent,#f5b942)]",ag&&"opacity-60",ah&&"opacity-70 border-dashed"),children:[(0,d.jsx)(s.x,{}),p&&(0,d.jsx)(T,{layer:b.layer}),ad&&(0,d.jsx)(V,{nodeId:a}),(b.pins?.length??0)>0?(0,d.jsx)(t.e0,{pins:b.pins,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)("button",{type:"button",title:`Annotate ${b.title}`,onClick:a=>{al(a),b.onComment?.(b.title)},className:(0,Q.cn)(S,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover/nc:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,d.jsx)(y.A,{className:"size-3"})}),b.isNext&&(0,d.jsx)("div",{className:"mb-1 inline-flex items-center gap-1 rounded bg-emerald-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-emerald-300",children:"work on next"}),null!=b.workOrderRank&&b.workOrderRank>1&&(0,d.jsxs)("div",{title:`#${b.workOrderRank} in the work order`,className:"mb-1 inline-flex items-center gap-1 rounded bg-white/5 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-muted-foreground",children:["next \xb7 ",b.workOrderRank]}),(0,d.jsxs)("div",{className:"flex w-0 min-w-full items-start gap-1.5",children:[aj&&(0,d.jsx)("span",{title:"em andamento",className:"mt-1.5 inline-block size-2 shrink-0 animate-pulse rounded-full bg-sky-400"}),b.isCriterion&&!aj&&(0,d.jsx)("span",{title:"Success criterion",className:"mt-1.5 inline-block size-1.5 shrink-0 rounded-full bg-[var(--accent,#f5b942)]"}),(0,d.jsx)("textarea",{rows:1,value:Y,autoFocus:n===a,placeholder:"Title…",onFocus:b=>{n===a&&b.currentTarget.select()},onChange:a=>Z(a.target.value),onBlur:()=>{let c=Y.trim();c&&c!==b.title&&h(a,{title:c},!0)},onKeyDown:a=>{al(a),"Enter"!==a.key||a.shiftKey||(a.preventDefault(),a.currentTarget.blur())},className:(0,Q.cn)(S,"field-sizing-content w-full resize-none bg-transparent text-sm font-medium leading-snug outline-none placeholder:text-muted-foreground/60",ag&&"line-through")}),(0,d.jsx)("button",{type:"button",onClick:b=>{al(b),j(a)},title:r?"Collapse":"Expand",className:(0,Q.cn)(S,"mt-0.5 shrink-0 text-muted-foreground hover:text-foreground"),children:r?(0,d.jsx)(z.A,{className:"size-3.5"}):(0,d.jsx)(A.A,{className:"size-3.5"})})]}),((b.signals?.untested??0)>0||b.signals?.auth||af>0)&&(0,d.jsxs)("div",{className:"mt-1 flex w-0 min-w-full flex-wrap items-center gap-1",children:[af>0&&(0,d.jsxs)("span",{title:`${af} open bug flag(s) — raised by you or an agent examining this code`,className:"flex items-center gap-1 rounded bg-rose-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-rose-300",children:[(0,d.jsx)(l.A,{className:"size-2.5"}),af," ",1===af?"bug":"bugs"]}),(b.signals?.untested??0)>0&&(0,d.jsxs)("span",{title:`${b.signals.untested} of ${b.signals.total} attached file(s) have no test importing them`,className:"flex items-center gap-1 rounded bg-amber-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-amber-300",children:[(0,d.jsx)(B.A,{className:"size-2.5"}),b.signals.untested," untested"]}),b.signals?.auth&&(0,d.jsxs)("span",{title:"touches auth-sensitive files",className:"flex items-center gap-1 rounded bg-red-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-red-300",children:[(0,d.jsx)(C.A,{className:"size-2.5"})," auth"]})]}),b.role&&(0,d.jsx)("div",{className:(0,Q.cn)("mt-0.5 w-0 min-w-full text-[10px] leading-snug text-muted-foreground",!r&&"line-clamp-1"),children:b.role}),(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-1.5",children:["ROADMAP"===b.view?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{title:ac?"Bug — something to fix":b.isChild?"Sub-task of a feature":"Feature — top-level roadmap item",className:(0,Q.cn)("flex shrink-0 items-center gap-1 rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide",ac?"bg-rose-500/15 text-rose-300":b.isChild?"bg-zinc-500/15 text-zinc-300":"bg-sky-500/15 text-sky-300"),children:[ac&&(0,d.jsx)(l.A,{className:"size-2.5"}),ac?"bug":b.isChild?"sub-task":"feature"]}),p&&(0,d.jsx)(U,{layer:b.layer}),ak&&(0,d.jsxs)("span",{className:(0,Q.cn)("flex items-center gap-1 rounded bg-violet-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-violet-300",am&&"opacity-50"),children:[(0,d.jsx)(D.A,{className:"size-2.5"})," IA",(0,d.jsx)("button",{type:"button",title:"Accept suggestion — turn it into your own feature",disabled:am,onClick:b=>{al(b),an(async()=>v(a))},className:(0,Q.cn)(S,"-my-0.5 rounded p-0.5 hover:bg-emerald-500/20 hover:text-emerald-300"),children:(0,d.jsx)(E.A,{className:"size-2.5"})}),(0,d.jsx)("button",{type:"button",title:"Dismiss suggestion (deletes the card)",disabled:am,onClick:b=>{al(b),m(a)},className:(0,Q.cn)(S,"-my-0.5 -ml-0.5 rounded p-0.5 hover:bg-red-500/20 hover:text-red-300"),children:(0,d.jsx)(F.A,{className:"size-2.5"})})]}),(0,d.jsx)("input",{list:`cats-${a}`,value:$,placeholder:"category",onChange:a=>_(a.target.value),onBlur:()=>{let c=$.trim()||null;c!==(b.cluster??null)&&h(a,{cluster:c},!0)},onKeyDown:a=>{al(a),"Enter"===a.key&&a.currentTarget.blur()},className:(0,Q.cn)(S,"field-sizing-content min-w-12 max-w-[65%] rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide outline-none focus:brightness-125 [&::-webkit-calendar-picker-indicator]:hidden",(0,L.a2)($))})]}):(0,d.jsxs)(d.Fragment,{children:[b.isChild&&(0,d.jsx)("span",{title:"Sub-component",className:"shrink-0 rounded bg-zinc-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:"sub"}),p&&(0,d.jsx)(U,{layer:b.layer}),(0,d.jsx)("input",{list:`cats-${a}`,value:$,placeholder:"domain",title:"Architecture domain — the lane this component lives in",onChange:a=>_(a.target.value),onBlur:()=>{let c=$.trim()||null;c!==(b.cluster??null)&&h(a,{cluster:c},!0)},onKeyDown:a=>{al(a),"Enter"===a.key&&a.currentTarget.blur()},className:(0,Q.cn)(S,"field-sizing-content min-w-12 max-w-[65%] rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide outline-none focus:brightness-125 [&::-webkit-calendar-picker-indicator]:hidden",(0,L.a2)($))})]}),(0,d.jsx)("datalist",{id:`cats-${a}`,children:f.map(a=>(0,d.jsx)("option",{value:a},a))}),(0,d.jsxs)(I.l6,{value:b.status,onValueChange:b=>h(a,{status:b},!0),children:[(0,d.jsx)(I.bq,{className:(0,Q.cn)(S,"ml-auto h-6 shrink-0 gap-1 rounded border px-1.5 py-0 text-[10px] font-medium",J.nR[b.status]?.className??"border-white/10"),children:(0,d.jsx)(I.yv,{children:a=>J.nR[a]?.label??a})}),(0,d.jsx)(I.gC,{alignItemWithTrigger:!1,children:g.map(a=>(0,d.jsx)(I.eb,{value:a,children:J.nR[a]?.label??a},a))})]})]}),r&&(0,d.jsxs)("div",{className:"mt-2 w-0 min-w-full space-y-2 border-t border-white/10 pt-2",children:[x||!aa.trim()?(0,d.jsx)("textarea",{autoFocus:x,value:aa,placeholder:"Description (markdown)…",onChange:a=>ab(a.target.value),onBlur:()=>{M(!1);let c=aa.trim()||null;c!==(b.plain??null)&&h(a,{plain:c},!0)},onKeyDown:al,rows:3,className:(0,Q.cn)(S,"field-sizing-content max-h-[24rem] min-h-[4.5rem] w-full resize-y rounded bg-white/[0.04] px-1.5 py-1 text-xs outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.08]")}):(0,d.jsx)("div",{onClick:a=>{al(a),M(!0)},title:"Click to edit",className:"cursor-text rounded bg-white/[0.02] px-1.5 py-1 text-xs hover:bg-white/[0.05]",children:(0,d.jsx)(P.pO,{markdown:aa,variant:"compact",className:"text-[12px]"})}),(0,d.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[(0,d.jsxs)(I.l6,{value:String(b.priority),onValueChange:b=>h(a,{priority:Number(b)},!0),children:[(0,d.jsx)(I.bq,{className:(0,Q.cn)(S,"h-6 gap-1 rounded border-white/10 px-1.5 py-0 text-[10px]"),children:(0,d.jsx)(I.yv,{children:a=>R.find(b=>String(b.v)===a)?.l??a})}),(0,d.jsx)(I.gC,{alignItemWithTrigger:!1,children:R.map(a=>(0,d.jsx)(I.eb,{value:String(a.v),children:a.l},a.v))})]}),p&&(0,d.jsxs)(I.l6,{value:(0,K.jR)(b.layer)??"none",onValueChange:b=>h(a,{layer:"none"===b?null:b},!0),children:[(0,d.jsx)(I.bq,{title:"Which side of the stack this lands on",className:(0,Q.cn)(S,"h-6 gap-1 rounded border-white/10 px-1.5 py-0 text-[10px]"),children:(0,d.jsx)(I.yv,{children:a=>"none"===a?"layer \xb7 —":K.YG[a]?.label??a})}),(0,d.jsxs)(I.gC,{alignItemWithTrigger:!1,children:[(0,d.jsx)(I.eb,{value:"none",children:"—"}),Object.entries(K.YG).map(([a,b])=>(0,d.jsx)(I.eb,{value:a,children:b.label},a))]})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[(0,d.jsxs)("button",{type:"button",onClick:b=>{al(b),u?m(a):w(!0)},onBlur:()=>w(!1),title:"Delete node",className:(0,Q.cn)(S,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] transition-colors",u?"bg-red-500/20 text-red-300":"text-muted-foreground hover:bg-white/5 hover:text-red-300"),children:[(0,d.jsx)(G.A,{className:"size-3"}),u&&"Delete?"]}),o&&(0,d.jsxs)("button",{type:"button",onClick:a=>{al(a),o(`feature: ${b.title}`)},title:"Ask the agent a question about this feature (answered in its next round)",className:(0,Q.cn)(S,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] text-sky-300/90 hover:bg-sky-500/15 hover:text-sky-300"),children:[(0,d.jsx)(H.A,{className:"size-3"})," Ask"]}),(0,d.jsxs)("button",{type:"button",onClick:b=>{al(b),k(a)},className:(0,Q.cn)(S,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] text-muted-foreground hover:bg-white/5 hover:text-foreground"),children:[(0,d.jsx)(q.A,{className:"size-3"})," Details"]})]})]})]})]})}var Y=c(32798),Z=c(42800),$=c(96863),_=c(48779),aa=c(26284),ab=c(52351),ac=c(74732);function ad({className:a,type:b,...c}){return(0,d.jsx)("input",{type:b,"data-slot":"input",className:(0,Q.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...c})}function ae({className:a,...b}){return(0,d.jsx)("textarea",{"data-slot":"textarea",className:(0,Q.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),...b})}var af=c(86371);function ag({className:a,...b}){return(0,d.jsx)(af.b,{"data-slot":"label",className:(0,Q.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",a),...b})}let ah=(0,u.createServerReference)("409b56b6cc15fb689c1e8af1737fd8f024eaccdee4",u.callServer,void 0,u.findSourceMapURL,"createNodeAction"),ai=(0,u.createServerReference)("60e29301deee354e9b22d10d0882e0fba1f0efa5ef",u.callServer,void 0,u.findSourceMapURL,"updateNodeAction");function aj({open:a,onOpenChange:b,mode:c,view:f,heading:g,nodeId:h,parentId:i,position:j,defaults:k,hasFrontend:l=!1}){let m=(0,r.useRouter)(),[n,o]=(0,e.useState)(k?.title??""),[p,q]=(0,e.useState)(k?.role??""),[s,t]=(0,e.useState)(k?.plain??""),[u,v]=(0,e.useState)(k?.cluster??""),[w,x]=(0,e.useState)(k?.status??("ARCHITECTURE"===f?"REBUILD":"PENDING")),[y,z]=(0,e.useState)(k?.kind==="BUG"?"BUG":"FEATURE"),[A,B]=(0,e.useState)((0,K.jR)(k?.layer)??"none"),[C,D]=(0,e.useState)(!1),E="ARCHITECTURE"===f?J.m6:J.yl;async function F(){if(n.trim()){D(!0);try{let a="none"===A?null:A;"create"===c?await ah({view:f,..."ROADMAP"===f?{kind:y}:{},title:n.trim(),role:p.trim()||null,plain:s.trim()||null,cluster:u.trim()||null,...l?{layer:a}:{},parentId:i??null,status:w,x:j?.x??60,y:j?.y??60}):h&&await ai(h,{..."ROADMAP"===f?{kind:y}:{},title:n.trim(),role:p.trim()||null,plain:s.trim()||null,cluster:u.trim()||null,...l?{layer:a}:{},status:w}),b(!1),m.refresh()}finally{D(!1)}}}return(0,d.jsx)(ac.lG,{open:a,onOpenChange:b,children:(0,d.jsxs)(ac.Cf,{children:[(0,d.jsx)(ac.c7,{children:(0,d.jsx)(ac.L3,{children:g})}),(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(ag,{htmlFor:"nf-title",children:"Title"}),(0,d.jsx)(ad,{id:"nf-title",value:n,autoFocus:!0,onChange:a=>o(a.target.value)})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(ag,{htmlFor:"nf-role",children:"Role (one line)"}),(0,d.jsx)(ad,{id:"nf-role",value:p,onChange:a=>q(a.target.value)})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(ag,{htmlFor:"nf-plain",children:"Description"}),(0,d.jsx)(ae,{id:"nf-plain",rows:3,value:s,onChange:a=>t(a.target.value)})]}),"ROADMAP"===f&&(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(ag,{children:"Kind"}),(0,d.jsxs)(I.l6,{value:y,onValueChange:a=>null!=a&&z(a),children:[(0,d.jsx)(I.bq,{children:(0,d.jsx)(I.yv,{children:a=>"BUG"===a?"Bug":"Feature"})}),(0,d.jsxs)(I.gC,{children:[(0,d.jsx)(I.eb,{value:"FEATURE",children:"Feature"}),(0,d.jsx)(I.eb,{value:"BUG",children:"Bug"})]})]})]}),l&&(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(ag,{children:"Layer"}),(0,d.jsxs)(I.l6,{value:A,onValueChange:a=>null!=a&&B(a),children:[(0,d.jsx)(I.bq,{children:(0,d.jsx)(I.yv,{children:a=>"none"===a?"—":K.YG[a]?.label??a})}),(0,d.jsxs)(I.gC,{children:[(0,d.jsx)(I.eb,{value:"none",children:"—"}),Object.keys(K.YG).map(a=>(0,d.jsx)(I.eb,{value:a,children:K.YG[a].label},a))]})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(ag,{children:"Status"}),(0,d.jsxs)(I.l6,{value:w,onValueChange:a=>null!=a&&x(a),children:[(0,d.jsx)(I.bq,{children:(0,d.jsx)(I.yv,{children:a=>J.nR[a]?.label??a})}),(0,d.jsx)(I.gC,{children:E.map(a=>(0,d.jsx)(I.eb,{value:a,children:J.nR[a]?.label??a},a))})]})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(ag,{htmlFor:"nf-cluster",children:"Cluster / lane"}),(0,d.jsx)(ad,{id:"nf-cluster",value:u,onChange:a=>v(a.target.value)})]})]})]}),(0,d.jsxs)(ac.Es,{children:[(0,d.jsx)(aa.$,{variant:"outline",onClick:()=>b(!1),children:"Cancel"}),(0,d.jsx)(aa.$,{onClick:F,disabled:C||!n.trim(),children:C?"Saving…":"Save"})]})]})})}let ak=(0,u.createServerReference)("406a6b6c901a8878d4b40206421368ea734d34ffe9",u.callServer,void 0,u.findSourceMapURL,"deleteNodeAction"),al=(0,u.createServerReference)("6056d9e95481af19600b95cac9e79c4164163f0bd3",u.callServer,void 0,u.findSourceMapURL,"setStatusAction"),am=(0,u.createServerReference)("40adc582a181b7655db7b410a1e6bc56e23cc4912d",u.callServer,void 0,u.findSourceMapURL,"cancelAction"),an=(0,u.createServerReference)("409d7b91af7e6220b13f8eefb6a4930de68ec73c7e",u.callServer,void 0,u.findSourceMapURL,"deprioritizeAction");function ao({view:a,selected:b,allNodes:c,onClose:e,commentsContent:f,commentsCount:g=0,activeTab:h,onTabChange:i,onAddComment:j,topOffset:k}){let l=!!f,m=h??"details";return(0,d.jsxs)(_.b,{className:"absolute right-3 z-10 flex w-80 flex-col rounded-2xl",style:{top:k??12,maxHeight:`calc(100% - ${(k??12)+12}px)`},children:[l?(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-1 py-1",children:[(0,d.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,d.jsx)(ap,{active:"details"===m,onClick:()=>i?.("details"),children:"Details"}),(0,d.jsxs)(ap,{active:"comments"===m,onClick:()=>i?.("comments"),children:["Comments",g>0&&(0,d.jsx)("span",{className:"ml-1 rounded-full bg-white/10 px-1 text-[9px] font-semibold leading-4",children:g})]})]}),(0,d.jsx)("button",{onClick:e,title:"Close panel",className:"mr-1 rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(F.A,{className:"size-4"})})]}):(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,d.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Details"}),(0,d.jsx)("button",{onClick:e,title:"Close panel",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(F.A,{className:"size-4"})})]}),(0,d.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:(0,d.jsx)("div",{className:"p-3",children:"comments"===m&&l?f:b?(0,d.jsxs)(d.Fragment,{children:[j&&(0,d.jsxs)("button",{type:"button",onClick:()=>j(b.title),className:"mb-3 flex w-full items-center justify-center gap-1.5 rounded-lg border border-white/10 bg-white/[0.03] px-3 py-1.5 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,d.jsx)(y.A,{className:"size-3.5"}),"Comment on this ","ARCHITECTURE"===a?"component":"feature"]}),(0,d.jsx)(aq,{node:b,view:a},b.id)]}):(0,d.jsx)(as,{view:a,nodes:c})})})]})}function ap({active:a,onClick:b,children:c}){return(0,d.jsx)("button",{type:"button",onClick:b,className:(0,Q.cn)("flex items-center gap-1 rounded-md px-2.5 py-1 text-[11px] font-medium transition-colors",a?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:c})}function aq({node:a,view:b}){let c=(0,r.useRouter)(),[f,g]=(0,e.useTransition)(),[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!1),{hasFrontend:l}=N(),m=(0,K.jR)(a.layer),n="ARCHITECTURE"===b?J.m6:J.yl,o=a=>g(async()=>{await a(),c.refresh()});return(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"text-xs uppercase tracking-wide text-muted-foreground",children:[(0,J.Xf)(a.cluster),l&&m&&(0,d.jsxs)("span",{className:"ml-2 text-zinc-400",children:["\xb7 ",K.YG[m].label]}),0===a.priority&&(0,d.jsx)("span",{className:"ml-2 text-[#ff7a90]",children:"\xb7 critical path"})]}),(0,d.jsx)("h2",{className:"mt-1 text-lg font-semibold leading-tight",children:a.title})]}),"INIT"===a.source&&(0,d.jsxs)("div",{className:"rounded-lg border border-violet-400/30 bg-violet-500/[0.06] p-2.5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-semibold text-violet-300",children:[(0,d.jsx)(D.A,{className:"size-3.5"})," AI suggestion"]}),(0,d.jsx)("p",{className:"mt-1 text-[11px] leading-snug text-muted-foreground",children:"Suggested direction surfaced when mapping the repo. Accept to turn it into your own feature, or dismiss."}),(0,d.jsxs)("div",{className:"mt-2 flex gap-1.5",children:[(0,d.jsx)(aa.$,{size:"sm",className:"h-7 px-2.5 text-xs",disabled:f,onClick:()=>o(()=>v(a.id)),children:"Accept"}),(0,d.jsx)(aa.$,{size:"sm",variant:"outline",className:"h-7 px-2.5 text-xs text-muted-foreground",disabled:f,onClick:()=>o(()=>ak(a.id)),children:"Dismiss"})]})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:"Status"}),(0,d.jsxs)(I.l6,{value:a.status,onValueChange:b=>null!=b&&o(()=>al(a.id,b)),children:[(0,d.jsx)(I.bq,{className:"h-8",disabled:f,children:(0,d.jsx)(I.yv,{children:a=>J.nR[a]?.label??a})}),(0,d.jsx)(I.gC,{children:n.map(a=>(0,d.jsx)(I.eb,{value:a,children:J.nR[a]?.label??a},a))})]})]}),a.plain&&(0,d.jsx)("div",{className:"rounded-md border border-white/5 bg-card/40 px-2.5 py-2 text-sm",children:(0,d.jsx)(P.pO,{markdown:a.plain,variant:"compact",className:"text-[12.5px]"})}),a.sourceRef&&(0,d.jsx)("div",{className:"rounded-md border border-border bg-card px-2 py-1.5 font-mono text-xs text-muted-foreground",children:a.sourceRef}),a.files.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("h3",{className:"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:["Files (",a.files.length,")"]}),(0,d.jsx)("ul",{className:"space-y-0.5",children:a.files.map(a=>(0,d.jsx)("li",{children:(0,d.jsx)("button",{onClick:()=>fetch(`/api/open?path=${encodeURIComponent(a)}`).catch(()=>{}),title:`Open ${a} in editor`,className:"block w-full truncate rounded px-1.5 py-0.5 text-left font-mono text-[11px] text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:a})},a))})]}),"ARCHITECTURE"===b&&(0,d.jsx)(ar,{node:a}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-1.5 pt-1",children:[(0,d.jsx)(aa.$,{size:"sm",variant:"outline",onClick:()=>i(!0),children:"Edit"}),(0,d.jsx)(aa.$,{size:"sm",variant:"outline",onClick:()=>k(!0),children:"+ Sub-node"}),(0,d.jsx)(aa.$,{size:"sm",variant:"outline",disabled:f,onClick:()=>o(()=>am(a.id)),children:"Cancel"}),(0,d.jsx)(aa.$,{size:"sm",variant:"outline",disabled:f,onClick:()=>o(()=>an(a.id)),children:"Deprioritize"}),(0,d.jsxs)(ab.Lt,{children:[(0,d.jsx)(ab.tv,{render:(0,d.jsx)(aa.$,{size:"sm",variant:"outline",className:"text-red-300",children:"Delete"})}),(0,d.jsxs)(ab.EO,{children:[(0,d.jsxs)(ab.wd,{children:[(0,d.jsxs)(ab.r7,{children:["Delete “",a.title,"”?"]}),(0,d.jsx)(ab.$v,{children:"This removes the node and all its sub-nodes. It can’t be undone."})]}),(0,d.jsxs)(ab.ck,{children:[(0,d.jsx)(ab.Zr,{children:"Cancel"}),(0,d.jsx)(ab.Rx,{onClick:()=>o(()=>ak(a.id)),children:"Delete"})]})]})]})]}),h&&(0,d.jsx)(aj,{open:!0,onOpenChange:i,mode:"edit",view:b,heading:"Edit node",nodeId:a.id,hasFrontend:l,defaults:{title:a.title,role:a.role,plain:a.plain,status:a.status,cluster:a.cluster,kind:a.kind,layer:a.layer}}),j&&(0,d.jsx)(aj,{open:!0,onOpenChange:k,mode:"create",view:b,heading:"New sub-node",parentId:a.id,position:{x:a.x,y:a.y+120},hasFrontend:l,defaults:{cluster:a.cluster,layer:a.layer}})]})}function ar({node:a}){let b=(0,r.useRouter)(),[c,f]=(0,e.useState)(""),[g,h]=(0,e.useState)(!1),i=a.bugFlags.filter(a=>!a.resolved),j=a=>{h(!0),a().then(()=>b.refresh()).finally(()=>h(!1))},k=()=>{let b=c.trim();b&&j(async()=>{(await fetch("/api/bug-flags",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({nodeId:a.id,by:"user",note:b})})).ok&&f("")})};return(0,d.jsxs)("div",{children:[(0,d.jsxs)("h3",{className:"mb-1.5 flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:[(0,d.jsx)(l.A,{className:"size-3.5 text-rose-300"}),"Bug flags",i.length>0&&` (${i.length} open)`]}),a.bugFlags.length>0&&(0,d.jsx)("ul",{className:"space-y-1.5",children:a.bugFlags.map(a=>(0,d.jsxs)("li",{className:(0,Q.cn)("rounded-md border px-2 py-1.5",a.resolved?"border-white/5 bg-card/30 opacity-60":"border-rose-400/25 bg-rose-500/[0.05]"),children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{title:"agent"===a.by?"Flagged by an agent examining the code":"Flagged by you",className:(0,Q.cn)("rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide","agent"===a.by?"bg-violet-500/15 text-violet-300":"bg-sky-500/15 text-sky-300"),children:"agent"===a.by?"agent":"you"}),(0,d.jsxs)("div",{className:"ml-auto flex items-center gap-1",children:[(0,d.jsx)("button",{type:"button",disabled:g,onClick:()=>j(()=>fetch(`/api/bug-flags/${a.id}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({resolved:!a.resolved})})),className:"rounded px-1.5 py-0.5 text-[10px] text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:a.resolved?"Reopen":"Resolve"}),(0,d.jsx)("button",{type:"button",disabled:g,title:"Delete flag",onClick:()=>j(()=>fetch(`/api/bug-flags/${a.id}`,{method:"DELETE"})),className:"rounded p-0.5 text-muted-foreground transition-colors hover:bg-white/10 hover:text-red-300",children:(0,d.jsx)(F.A,{className:"size-3"})})]})]}),(0,d.jsx)("p",{className:(0,Q.cn)("mt-1 text-[11.5px] leading-snug",a.resolved&&"line-through"),children:a.note})]},a.id))}),(0,d.jsxs)("div",{className:"mt-1.5 flex items-start gap-1.5",children:[(0,d.jsx)("textarea",{rows:1,value:c,placeholder:"Flag a bug or something worth investigating…",onChange:a=>f(a.target.value),onKeyDown:a=>{"Enter"!==a.key||a.shiftKey||(a.preventDefault(),k())},className:"field-sizing-content min-h-7 w-full resize-none rounded-md border border-white/10 bg-white/[0.03] px-2 py-1 text-[11.5px] outline-none placeholder:text-muted-foreground/60 focus:bg-white/[0.06]"}),(0,d.jsx)(aa.$,{size:"sm",variant:"outline",className:"h-7 shrink-0 px-2 text-[11px]",disabled:g||!c.trim(),onClick:k,children:"Flag"})]})]})}function as({view:a,nodes:b}){let c=b.filter(a=>0===a.priority).length;return(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-sm font-semibold",children:"ROADMAP"===a?"Roadmap":"Architecture"}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Click a node for details and actions. Drag to rearrange — positions are saved."})]}),(0,d.jsxs)("dl",{className:"grid grid-cols-2 gap-2 text-center",children:[(0,d.jsx)(at,{label:"nodes",value:b.length}),(0,d.jsx)(at,{label:"critical",value:c})]})]})}function at({label:a,value:b}){return(0,d.jsxs)("div",{className:"rounded-md border border-border bg-card py-2",children:[(0,d.jsx)("div",{className:"text-lg font-semibold",children:b}),(0,d.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:a})]})}var au=c(38476),av=c(55805),aw=c(54193),ax=c(81725),ay=c(40335),az=c(25127),aA=c(40359),aB=c(92994),aC=c(84170),aD=c(34849),aE=c(86892),aF=c(27741);function aG(a,b){let c={x:b.x,y:b.y};for(let b=0;b<100&&a.some(a=>200>Math.abs(c.x-a.x)&&150>Math.abs(c.y-a.y));b++)c.y+=150;return c}var aH=c(67637);let aI=[{value:"cluster",label:"Theme"},{value:"status",label:"Status"},{value:"priority",label:"Priority"}],aJ=new Set(["title","role","plain","cluster","layer","status","priority"]),aK={roadmapNode:X,archNode:X,annotation:t.Sh},aL={deletable:Z.I,annotation:$.L},aM={CONTAINS:{stroke:"#7c7c8a"},DEPENDS:{stroke:"#f5b942",dash:"6 4"},RELATES:{stroke:"#8a8a95",dash:"4 4"},REPLACES:{stroke:"#ff6b9d"}};function aN({view:a,nodes:b,edges:c,workOrder:r=[],embedded:s=!1,commentsContent:u,commentsCount:v=0,controlRef:w,onAskAgent:x,onAddComment:y,annotations:z,onPinClick:A,onUpdateComment:B,onRemoveComment:C,boardAnnotations:D,initialArrangedBy:E=null,hasFrontend:F=!1,readOnly:G=!1}){let H=r.join(","),I=(0,e.useMemo)(()=>{let a=new Map;return r.forEach((b,c)=>a.set(b,c+1)),a},[H]),L=r[0]??null,N=(0,e.useMemo)(()=>b.map(a=>({id:a.id,type:"ROADMAP"===a.view?"roadmapNode":"archNode",position:{x:a.x,y:a.y},data:{title:a.title,role:a.role,plain:a.plain,status:a.status,priority:a.priority,cluster:a.cluster,layer:a.layer,view:a.view,kind:a.kind,source:a.source,sourceRef:a.sourceRef,isCriterion:a.isCriterion,isChild:null!=a.parentId,parentId:a.parentId,signals:a.signals,openBugs:a.bugFlags.filter(a=>!a.resolved).length}})),[b]),P=(0,e.useMemo)(()=>{let a;return a=new Set(b.map(a=>a.id)),[...b.filter(b=>b.parentId&&a.has(b.parentId)).map(a=>({id:`c-${a.id}`,source:a.parentId,sourceHandle:"sb",target:a.id,targetHandle:"tt",type:"smoothstep",style:{stroke:aM.CONTAINS.stroke}})),...c.filter(b=>a.has(b.fromId)&&a.has(b.toId)).map(a=>{let b=aM[a.kind]??aM.RELATES,c="DEPENDS"===a.kind?"depends on":void 0;return{id:a.id,source:a.fromId,sourceHandle:a.sourceHandle??void 0,target:a.toId,targetHandle:a.targetHandle??void 0,label:a.label??c,type:"deletable",markerEnd:{type:g.TG.ArrowClosed,color:b.stroke},style:{stroke:b.stroke,strokeDasharray:b.dash}}})]},[b,c]),[R,S]=(0,e.useState)(N),[T,U]=(0,e.useState)(P),[V,W]=(0,e.useState)(null),[X,Z]=(0,e.useState)(null),[$,_]=(0,e.useState)(null),[aa,ab]=(0,e.useState)(!1),[ac,ad]=(0,e.useState)("details");(0,e.useRef)(!1),(0,e.useRef)("details");let[ae,af]=(0,e.useState)(new Set),[ag,ah]=(0,e.useState)(null),[ai,aj]=(0,e.useState)(!1),ak=(0,e.useRef)(null),al=(0,e.useCallback)((a,b,c)=>{S(c=>c.map(c=>c.id===a?{...c,data:{...c.data,...b}}:c)),c&&fetch(`/api/nodes/${a}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(Object.fromEntries(Object.entries(b).filter(([a])=>aJ.has(a))))})},[]),am=(0,e.useMemo)(()=>Array.from(new Set(R.map(a=>a.data.cluster).filter(a=>!!a))).sort(),[R]),an=(0,e.useCallback)(a=>af(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c}),[]),ap=(0,e.useCallback)(a=>{W(a),ab(!0),ad("details")},[]),aq=(0,e.useCallback)(a=>{S(b=>b.filter(b=>b.id!==a)),W(b=>b===a?null:b),fetch(`/api/nodes/${a}`,{method:"DELETE"})},[]),ar=(0,e.useCallback)(async(b,c,d="FEATURE")=>{let e=(0,f.sX)(),g="ARCHITECTURE"===a?"REBUILD":"PENDING",h="BUG"===d?"New bug":"New node";S(f=>[...f,{id:e,type:"ROADMAP"===a?"roadmapNode":"archNode",position:{x:b,y:c},data:{title:h,role:null,plain:null,status:g,priority:2,cluster:null,view:a,kind:d,source:"MANUAL",sourceRef:null,isCriterion:!1,isChild:!1,parentId:null,openBugs:0}}]),af(a=>new Set(a).add(e)),ah(e),W(e);try{if(!(await fetch("/api/nodes",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({id:e,view:a,kind:d,title:h,status:g,x:b,y:c})})).ok)throw Error("create failed")}catch{S(a=>a.filter(a=>a.id!==e)),af(a=>{let b=new Set(a);return b.delete(e),b}),ah(a=>a===e?null:a),W(a=>a===e?null:a)}},[a]),as=(0,e.useCallback)(()=>{let a=R.filter(a=>"annotation"!==a.type);return function(a,b,c={}){let d=c.colW??320,e=c.rowH??150,f=c.maxCols??4,g=c.bandGap??90;if(0===a.length){if(0===b.length)return{x:0,y:0};let a=Math.max(...b.map(a=>a.y));return aG(b,{x:0,y:a+e+g})}let h=Math.min(...a.map(a=>a.x)),i=Math.min(...a.map(a=>a.y)),j=a.map(a=>Math.max(0,Math.round((a.x-h)/d))),k=Math.min(f,Math.max(Math.max(...j)+1,Math.ceil(Math.sqrt(a.length+1)))),l=Array(k).fill(i-e);a.forEach((a,b)=>{let c=Math.min(j[b],k-1);l[c]=Math.max(l[c],a.y)});let m=0;for(let a=1;a<k;a++)l[a]<l[m]&&(m=a);return aG(b,{x:h+m*d,y:l[m]+e})}(a.filter(a=>!a.data.parentId&&!(a.data.cluster??"").trim()).map(a=>a.position),a.map(a=>a.position))},[R]),at=(0,e.useCallback)(()=>{let a=as();ar(a.x,a.y)},[ar,as]),aO=(0,e.useCallback)(()=>{let a=as();ar(a.x,a.y,"BUG")},[ar,as]),aP=(0,e.useMemo)(()=>({view:a,categories:am,statuses:"ARCHITECTURE"===a?J.m6:J.yl,patch:al,isExpanded:a=>ae.has(a),toggleExpand:an,openDetailed:ap,removeNode:aq,editingTitleId:ag,onAskAgent:x,hasFrontend:F}),[a,am,al,ae,an,ap,aq,ag,x,F]),[aQ,aR]=(0,e.useState)(E),[aS,aT]=(0,e.useState)(""),[aU,aV]=(0,e.useState)("full"),[aW,aX]=(0,e.useState)(new Set),[aY,aZ]=(0,e.useState)(new Set),[a$,a_]=(0,e.useState)(new Set),[a0,a1]=(0,e.useState)(null),a2=(0,e.useMemo)(()=>Array.from(new Set(b.map(a=>a.status))),[b]),a3=(0,e.useMemo)(()=>Array.from(new Set(b.map(a=>a.cluster).filter(a=>!!a))).sort(),[b]),a4=(0,e.useMemo)(()=>Array.from(new Set(b.map(a=>a.priority))).sort((a,b)=>a-b),[b]),a5=(0,e.useCallback)(a=>(!aW.size||!!aW.has(a.status))&&(!aY.size||!!a.cluster&&!!aY.has(a.cluster))&&(!a$.size||!!a$.has(a.priority)),[aW,aY,a$]),a6=aW.size+aY.size+a$.size,a7=(0,e.useCallback)(()=>{aX(new Set),aZ(new Set),a_(new Set)},[]),a8=(0,e.useMemo)(()=>R.map(a=>({...a,hidden:!a5(a.data)})),[R,a5]),a9=(0,e.useMemo)(()=>new Set(a8.filter(a=>a.hidden).map(a=>a.id)),[a8]),ba=(0,e.useMemo)(()=>T.map(a=>({...a,hidden:a9.has(a.source)||a9.has(a.target)})),[T,a9]),bb=(0,e.useMemo)(()=>{if(X){let a=ba.find(a=>a.id===X);return a?new Set([a.source,a.target]):null}return V?(0,au.F1)(V,ba.filter(a=>!a.hidden)):null},[V,X,ba]),bc=aS.trim().length>0,bd=(0,e.useMemo)(()=>{if(!bc)return null;let a=new Set;for(let b of R)a5(b.data)&&(0,ax.Qk)((0,ax.$$)(b.data),aS)&&a.add(b.id);return a},[R,aS,a5,bc]),be=(0,e.useMemo)(()=>"ARCHITECTURE"===a?(0,ay.d)(b):[],[a,b]),bf=(0,e.useCallback)(a=>{ak.current&&(a.focusIds.length?ak.current.fitView({nodes:a.focusIds.map(a=>({id:a})),duration:700,padding:.3,maxZoom:1.1}):ak.current.fitView({duration:700,padding:.2}))},[]),bg=(0,az.W)(be,bf),bh=bg.focusIds,bi=bh??bd??bb,bj=bd??bh,bk=(0,e.useMemo)(()=>a0?new Set(a8.filter(a=>!a.hidden&&!(0,aC.F)(a0,(0,K.jR)(a.data.layer))).map(a=>a.id)):null,[a0,a8]),bl=(0,e.useMemo)(()=>a8.map(a=>{let b=I.get(a.id),c=b?{...a,data:{...a.data,workOrderRank:b,isNext:1===b}}:a;if(ae.has(a.id)&&(c={...c,zIndex:25}),c.hidden)return c;if(!bi)return bk?.has(a.id)?{...c,style:{...c.style,opacity:.3,filter:"saturate(0.3)",transition:"opacity 120ms, filter 120ms"}}:c;let d=bi.has(a.id),e=bj?ax.Uy:.45;return{...c,zIndex:d&&bj?24:c.zIndex,style:{...c.style,opacity:d?1:e,boxShadow:d&&bj?ax.RU:c.style?.boxShadow,borderRadius:d&&bj?14:c.style?.borderRadius,transition:"opacity 120ms, box-shadow 120ms"}}}),[a8,bi,bj,I,ae,bk]),bm=(0,e.useMemo)(()=>{if("ROADMAP"===a&&!aQ||"ROADMAP"!==a&&"ARCHITECTURE"!==a)return[];let b=new Map(bl.map(a=>[a.id,a])),c=[];for(let e of bl){var d;if(e.hidden||"annotation"===e.type)continue;let f=(e.data.parentId?b.get(e.data.parentId):void 0)??e,g="ROADMAP"===a&&aQ?(d=f.data,"status"===aQ?J.nR[d.status]?.label??d.status:"priority"===aQ?`P${d.priority}`:d.cluster?.trim()||"—"):f.data.cluster?.trim()||"—";c.push({id:e.id,group:g,x:e.position.x,y:e.position.y,w:e.measured?.width??(e.data.isChild?224:256),h:e.measured?.height??96})}return(0,aF.S)(c)},[bl,aQ,a]),bn="ARCHITECTURE"===a||"cluster"===aQ?"category":"neutral",bo=(0,e.useMemo)(()=>{if(bh)return ba.map(a=>a.hidden?a:bh.has(a.source)&&bh.has(a.target)?{...a,style:{...a.style,opacity:1}}:{...a,label:void 0,style:{...a.style,opacity:.06}});if(bd)return ba.map(a=>a.hidden?a:bd.has(a.source)&&bd.has(a.target)?{...a,style:{...a.style,opacity:1}}:{...a,label:void 0,style:{...a.style,opacity:.06}});let a=V??$;return X||a?ba.map(b=>b.hidden?b:(X?b.id===X:b.source===a||b.target===a)?{...b,zIndex:20,style:{...b.style,opacity:1,strokeWidth:2.5}}:{...b,selectable:!1,label:void 0,markerEnd:void 0,style:{...b.style,opacity:.06}}):ba.map(a=>{if(a.hidden)return a;let b=bk&&(bk.has(a.source)||bk.has(a.target));return{...a,label:void 0,style:{...a.style,opacity:b?.06:.18}}})},[ba,V,X,$,bd,bk,bh]),bp=void 0!==D,[bq,br]=(0,e.useState)(D??[]),bs=(0,e.useMemo)(()=>{if(bp){let a=new Set(b.map(a=>a.id));return bq.filter(b=>"feature"===b.targetKind&&a.has(b.targetId)).map((a,b)=>({id:a.id,n:b+1,targetId:a.targetId,text:a.body,x:a.x,y:a.y}))}let a=new Map((z??[]).map(a=>[a.id,a.comment]));return(0,Y.m)(z??[],{tables:[],features:b.map(a=>({id:a.id,title:a.title}))}).map(b=>({id:b.annotationId,n:b.n,targetId:b.targetId,text:a.get(b.annotationId)??"",x:null,y:null}))},[bp,bq,z,b]),bt=(0,e.useMemo)(()=>{let a=new Map;for(let b of bs){let c=a.get(b.targetId)??[];c.push({id:b.id,n:b.n,column:null}),a.set(b.targetId,c)}return a},[bs]),bu=(0,e.useCallback)(async a=>{let c=(0,Y.m)([{id:"_",excerpt:a}],{tables:[],features:b.map(a=>({id:a.id,title:a.title}))})[0];if(!c)return;let d=await fetch("/api/board-annotations",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({targetKind:"feature",targetId:c.targetId})});if(d.ok){let a=await d.json();br(b=>[...b,a])}},[b]),bv=(0,e.useCallback)((a,b)=>{br(c=>c.map(c=>c.id===a?{...c,...b}:c)),fetch(`/api/board-annotations/${a}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(b)})},[]),bw=(0,e.useCallback)(a=>{br(b=>b.filter(b=>b.id!==a)),fetch(`/api/board-annotations/${a}`,{method:"DELETE"})},[]),bx=bp?bu:y,[by,bz]=(0,e.useState)(()=>new Map),bA=(0,e.useMemo)(()=>{let a=new Map(bl.map(a=>[a.id,a])),b=new Map,c=bs.flatMap(c=>{let d=a.get(c.targetId);if(!d||d.hidden)return[];let e=b.get(c.targetId)??0;b.set(c.targetId,e+1);let f=d.measured?.height??96;return[{id:`anno-${c.id}`,type:"annotation",position:{x:c.x??d.position.x+26,y:c.y??d.position.y+f+56+112*e},measured:by.get(`anno-${c.id}`),draggable:bp,data:{n:c.n,text:c.text,annotationId:c.id,onClick:bp||B?void 0:A,editable:bp||!!B,onChangeText:bp?(a,b)=>bv(a,{body:b}):B,onDelete:bp?bw:C}}]});return[...bl.map(a=>{let b=bt.get(a.id);return b||bx?{...a,data:{...a.data,pins:b,onPinClick:bp?void 0:A,onComment:bx}}:a}),...c]},[bl,bs,bt,bp,A,B,C,bx,bv,bw,by]),bB=(0,e.useMemo)(()=>bs.map(a=>({id:`annoe-${a.id}`,source:a.targetId,sourceHandle:`pin-${a.id}`,target:`anno-${a.id}`,targetHandle:"in",type:"annotation",selectable:!1,zIndex:30,style:{stroke:t.V5,strokeWidth:1.5,opacity:.9}})),[bs]),bC=(0,e.useCallback)(a=>{let b=[];for(let c of a)if("position"===c.type&&c.id.startsWith("anno-")&&c.position){let a=c.id.slice(5),{x:b,y:d}=c.position;br(c=>c.map(c=>c.id===a?{...c,x:b,y:d}:c))}else if("dimensions"===c.type&&c.id.startsWith("anno-")){let a=c.dimensions;a&&bz(b=>{let d=b.get(c.id);if(d&&d.width===a.width&&d.height===a.height)return b;let e=new Map(b);return e.set(c.id,a),e})}else b.push(c);b.length&&S(a=>(0,h._0)(b,a))},[]),bD=(0,e.useCallback)(a=>U(b=>(0,h.zW)(a,b)),[]),bE=(0,e.useCallback)(async a=>{if(!a.source||!a.target||a.source===a.target)return;let b=await fetch("/api/edges",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({fromId:a.source,toId:a.target,kind:"DEPENDS",sourceHandle:a.sourceHandle??null,targetHandle:a.targetHandle??null})});if(!b.ok)return;let c=await b.json(),d=aM.DEPENDS;U(b=>b.some(a=>a.id===c.id)?b:[...b,{id:c.id,source:c.fromId,sourceHandle:a.sourceHandle??void 0,target:c.toId,targetHandle:a.targetHandle??void 0,label:"depends on",type:"deletable",markerEnd:{type:g.TG.ArrowClosed,color:d.stroke},style:{stroke:d.stroke,strokeDasharray:d.dash}}])},[]),bF=(0,e.useCallback)(async(b,c,d)=>{let e=await fetch("/api/nodes",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({view:a,title:"New node",parentId:b.id,cluster:b.data.cluster??null,status:"ARCHITECTURE"===a?"REBUILD":"PENDING",x:c,y:d})});if(!e.ok)return;let f=await e.json();S(e=>[...e,{id:f.id,type:"ROADMAP"===a?"roadmapNode":"archNode",position:{x:c,y:d},data:{title:f.title,role:f.role,plain:f.plain,status:f.status,priority:f.priority,cluster:f.cluster,view:f.view,source:f.source,sourceRef:f.sourceRef,kind:f.kind,isCriterion:!1,isChild:!0,parentId:b.id,openBugs:0}}]),U(a=>[...a,{id:`c-${f.id}`,source:b.id,target:f.id,type:"smoothstep",style:{stroke:aM.CONTAINS.stroke}}]),af(a=>new Set(a).add(f.id)),ah(f.id),W(f.id)},[a]),bG=(0,e.useCallback)(async(a,b)=>{if(b.isValid||!b.fromNode||!ak.current)return;let c=a.changedTouches,d=c?.[0]?.clientX??a.clientX,e=c?.[0]?.clientY??a.clientY,{x:f,y:g}=ak.current.screenToFlowPosition({x:d,y:e});await bF(b.fromNode,f,g)},[bF]),bH=(0,e.useMemo)(()=>b.find(a=>a.id===V)??null,[b,V]),bI=(0,e.useCallback)((a,b,c)=>{fetch(`/api/nodes/${a}/position`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({x:b,y:c})})},[]),bJ=(0,e.useCallback)(a=>{W(a),Z(null);let b=ak.current?.getNode(a);if(!b||!ak.current)return;let c=b.measured?.width??128,d=b.measured?.height??48;ak.current.setCenter(b.position.x+c/2,b.position.y+d/2,{zoom:1.2,duration:600})},[]),bK=(0,e.useCallback)(a=>{let b=(0,aD.VI)(R.map(a=>({id:a.id,parentId:a.data.parentId??null,cluster:a.data.cluster,status:a.data.status,priority:a.data.priority})),a,{viewportAspect:window.innerWidth/window.innerHeight});S(a=>a.map(a=>{let c=b.get(a.id);return c?{...a,position:c}:a}));let c=Array.from(b,([a,b])=>({id:a,x:b.x,y:b.y}));c.length&&fetch("/api/nodes/positions",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({batch:c})}),aR(a),fetch("/api/board-layout",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({board:"roadmap",arrangedBy:a})}),requestAnimationFrame(()=>ak.current?.fitView({duration:600,padding:.2}))},[R]);(0,e.useMemo)(()=>{let b=new Map;if("ROADMAP"!==a||!aQ)return b;let c=a=>"status"===aQ?a.status:"priority"===aQ?`P${a.priority}`:a.cluster??"—";for(let a of R)"annotation"!==a.type&&b.set(a.id,c(a.data));return b},[R,aQ,a]),(0,e.useRef)(null);let bL=(0,e.useCallback)(()=>{let a=function(a,b,c={}){if(0===a.length)return new Map;let d=function(a,b){let c=a.map(a=>a.id).sort(),d=new Map(c.map(a=>[a,[]]));for(let a of[...b].sort((a,b)=>a.fromId.localeCompare(b.fromId)||a.toId.localeCompare(b.toId)))d.get(a.fromId)?.push(a);let e=new Map,f=[],g=a=>{for(let b of(e.set(a,"visiting"),d.get(a)??[])){let a=e.get(b.toId);"visiting"!==a&&(f.push(b),"done"!==a&&g(b.toId))}e.set(a,"done")};for(let a of c)e.has(a)||g(a);return f}(a,b),e=function(a,b){let c=new Map(a.map(a=>[a.id,[]]));for(let a of b)c.get(a.fromId)?.push(a.toId);let d=new Map,e=a=>{let b=d.get(a);if(void 0!==b)return b;d.set(a,0);let f=c.get(a)??[],g=f.length?1+Math.max(...f.map(e)):0;return d.set(a,g),g};for(let b of a)e(b.id);return d}(a,d),f=new Map(a.map(a=>[a.id,[]]));for(let a of d)f.get(a.fromId)?.push(a.toId);let g=Array.from(new Set(a.map(a=>a.group))),h=g.filter(a=>"—"!==a).sort(),i=g.includes("—")?[...h,"—"]:h,j=[];for(let b of i){let c=a.filter(a=>a.group===b),d=Math.min(...c.map(a=>e.get(a.id)??0)),g=Math.max(...c.map(a=>e.get(a.id)??0)),h=new Map,i=new Map,k=0,l=1;for(let a=d;a<=g;a++){let b=c.filter(b=>e.get(b.id)===a);if(!b.length)continue;let d=a=>{let b=(f.get(a.id)??[]).map(a=>i.get(a)).filter(a=>void 0!==a);return b.length?b.reduce((a,b)=>a+b,0)/b.length:1/0};b.sort((a,b)=>d(a)-d(b)||a.id.localeCompare(b.id));let g=Math.max(1,Math.ceil(Math.sqrt(2*b.length)));b.forEach((a,b)=>{let c=Math.floor(b/g),d=b%g;i.set(a.id,d),h.set(a.id,{x:k+360*c,y:150*d}),l=Math.max(l,d+1)}),k+=360*Math.ceil(b.length/g)}j.push({d:b,w:k,h:150*l,local:h})}let k=(0,aE.Xi)(j.map(a=>({id:a.d,w:a.w,h:a.h})),{gapX:84,gapY:80,viewportAspect:c.viewportAspect,minBandW:1080,aspectSlack:1.5}),l=new Map;for(let a of j){let b=k.get(a.d);for(let[c,d]of a.local)l.set(c,{x:b.x+d.x,y:b.y+d.y})}return l}(R.filter(a=>"annotation"!==a.type).map(a=>({id:a.id,group:(a.data.cluster??"").trim()||"—"})),c.filter(a=>"DEPENDS"===a.kind).map(a=>({fromId:a.fromId,toId:a.toId})),{viewportAspect:window.innerWidth/window.innerHeight});S(b=>b.map(b=>{let c=a.get(b.id);return c?{...b,position:c}:b}));let b=Array.from(a,([a,b])=>({id:a,x:b.x,y:b.y}));b.length&&fetch("/api/nodes/positions",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({batch:b})}),requestAnimationFrame(()=>ak.current?.fitView({duration:600,padding:.2}))},[R,c]),bM=(0,e.useMemo)(()=>bc?(0,ax.r2)(R.filter(a=>a5(a.data)),aS,a=>(0,ax.$$)(a.data),a=>({id:a.id,label:a.data.title,sublabel:a.data.cluster??a.data.status,kind:"feature"})):[],[R,aS,a5,bc]);function bN(a,b){b(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})}return(0,d.jsx)(M.Provider,{value:aP,children:(0,d.jsxs)("div",{className:(0,Q.cn)("canvas-dots relative w-full",s?"h-full":"h-screen"),onDragOver:a=>{a.dataTransfer.types.includes("application/beacon-node")&&(a.preventDefault(),a.dataTransfer.dropEffect="copy")},onDrop:a=>{if(!a.dataTransfer.getData("application/beacon-node")||!ak.current)return;a.preventDefault();let{x:b,y:c}=ak.current.screenToFlowPosition({x:a.clientX,y:a.clientY});ar(b,c,"BUG"===a.dataTransfer.getData("application/beacon-node-kind")?"BUG":"FEATURE")},children:[(0,d.jsxs)(h.Gc,{nodes:bA,edges:"far"===aU?[...bo,...bB].map(a=>({...a,hidden:!0})):[...bo,...bB],nodeTypes:aK,edgeTypes:aL,nodesConnectable:!G,connectionMode:g.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onInit:a=>{ak.current=a},onNodesChange:bC,onEdgesChange:bD,onConnect:bE,onConnectEnd:bG,onNodeMouseEnter:(a,b)=>_(b.id),onNodeMouseLeave:()=>_(null),onEdgesDelete:a=>{for(let b of a)b.id.startsWith("c-")||fetch(`/api/edges/${b.id}`,{method:"DELETE"})},onNodesDelete:a=>{for(let b of a)b.id.startsWith("anno-")||(fetch(`/api/nodes/${b.id}`,{method:"DELETE"}),W(a=>a===b.id?null:a))},onNodeClick:(a,b)=>{if("annotation"===b.type){let a=b.data;a.editable||A?.(a.annotationId);return}if(ai){if(aj(!1),b.data.isChild)return;bF(b,b.position.x+300,b.position.y+60);return}if(W(b.id),Z(null),ad("details"),s){let b=a.target;b?.closest("input, textarea, select, button, [role='combobox']")||ab(!0)}},onEdgeClick:(a,b)=>{Z(b.id),W(null),ad("details")},onPaneClick:()=>{ai?aj(!1):(ab(!1),W(null),Z(null))},onNodeDragStop:(a,b)=>{if(b.id.startsWith("anno-")){bp&&bv(b.id.slice(5),{x:b.position.x,y:b.position.y});return}G||bI(b.id,b.position.x,b.position.y)},deleteKeyCode:G?null:["Backspace","Delete"],colorMode:"dark",fitView:!0,fitViewOptions:{padding:.15,minZoom:.38,maxZoom:.9},minZoom:.2,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[(0,d.jsx)(aH.Z,{regions:bm,tone:bn,lod:aU}),(0,d.jsx)(O.J,{onLod:aV}),(0,d.jsx)(h.H2,{position:"bottom-right",className:"!overflow-hidden !rounded-xl !border !border-white/10 [&_button]:!border-white/10 [&_button]:!bg-card/70 [&_button]:!text-foreground [&_button]:!backdrop-blur"}),(0,d.jsx)(h.Zk,{position:"bottom-right",style:{marginBottom:152},children:(0,d.jsx)(aB.er,{title:"Legend",trigger:(a,b)=>(0,d.jsx)("button",{type:"button",onClick:b,title:"Legend",className:(0,Q.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",a?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,d.jsx)(i.A,{className:"size-4"})}),children:(0,d.jsxs)("ul",{className:"space-y-1.5 text-[10.5px] text-muted-foreground",children:["ROADMAP"===a?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-sky-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"feature"}),(0,d.jsx)("span",{children:"top-level card \xb7 can have sub-tasks"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-zinc-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:"sub-task"}),(0,d.jsx)("span",{children:"child of a feature"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-rose-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-rose-300",children:"bug"}),(0,d.jsx)("span",{children:"a bug to fix \xb7 not a feature"})]})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-sky-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"component"}),(0,d.jsx)("span",{children:"a subsystem \xb7 can have sub-components"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-zinc-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:"sub-component"}),(0,d.jsx)("span",{children:"part of a component"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-rose-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-rose-300",children:"bug"}),(0,d.jsx)("span",{children:"a flagged issue on a component"})]})]}),F&&(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-3 w-1 shrink-0 rounded-sm",style:{background:(0,K.A6)("fullstack")}}),(0,d.jsx)("span",{children:"left stripe \xb7 frontend / backend layer"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-px w-6 bg-[#33333a]"}),(0,d.jsx)("span",{children:"contains \xb7 drag the bottom handle to empty canvas"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#f5b942"}}),(0,d.jsxs)("span",{children:["depends on \xb7 drag between two ","ROADMAP"===a?"cards":"components"]})]})]})})}),!s&&(0,d.jsx)(h.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!overflow-hidden !rounded-xl !border !border-white/10 !bg-card/50 !backdrop-blur",nodeColor:a=>a.data?.priority===0?"#ff3860":"#555"}),(0,d.jsxs)(h.Zk,{position:"bottom-center",className:"!mb-4 flex flex-col items-center gap-2",children:[ai&&(0,d.jsxs)("div",{className:"glass rounded-full px-3 py-1 text-[11px] text-muted-foreground",children:["Click a ","ARCHITECTURE"===a?"component":"feature"," to attach the"," ","ARCHITECTURE"===a?"sub-component":"sub-task"," \xb7 Esc to cancel"]}),"ARCHITECTURE"===a&&(0,d.jsx)("div",{className:"glass flex items-center rounded-full p-0.5",children:(0,d.jsxs)("button",{onClick:bL,title:"Arrange components into a left→right dependency flow, grouped by domain",className:"flex h-6 items-center gap-1.5 rounded-full px-3 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,d.jsx)(j.A,{className:"size-3"}),"Arrange"]})}),"ROADMAP"===a&&(0,d.jsxs)("div",{className:"glass flex items-center gap-1 rounded-full p-1",children:[(0,d.jsx)("span",{className:"pl-2 pr-0.5 text-[11px] text-muted-foreground",children:"Group by"}),aI.map(a=>(0,d.jsx)("button",{onClick:()=>bK(a.value),title:`Arrange features into lanes by ${a.label.toLowerCase()}`,className:(0,Q.cn)("h-7 rounded-full px-2.5 text-[11px] font-medium transition-colors",aQ===a.value?"bg-white/[0.12] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:a.label},a.value))]}),(0,d.jsxs)("div",{className:"glass flex items-center gap-1 rounded-full p-1",children:[(0,d.jsxs)("button",{onClick:at,draggable:!0,onDragStart:b=>{b.dataTransfer.setData("application/beacon-node",a),b.dataTransfer.effectAllowed="copy"},title:"ARCHITECTURE"===a?"Add component (click, or drag onto the board to place it)":"Add feature (click, or drag onto the board to place it)",className:"flex h-8 cursor-grab items-center gap-1.5 rounded-full px-3 text-[12px] font-medium text-foreground transition-colors hover:bg-white/[0.06] active:cursor-grabbing",children:[(0,d.jsx)(k.A,{className:"size-3.5 text-[var(--accent-2,#ff7a45)]"}),"ARCHITECTURE"===a?"Component":"Feature"]}),"ROADMAP"===a&&(0,d.jsxs)("button",{onClick:aO,draggable:!0,onDragStart:b=>{b.dataTransfer.setData("application/beacon-node",a),b.dataTransfer.setData("application/beacon-node-kind","BUG"),b.dataTransfer.effectAllowed="copy"},title:"Add bug (click, or drag onto the board to place it)",className:"flex h-8 cursor-grab items-center gap-1.5 rounded-full px-3 text-[12px] font-medium text-foreground transition-colors hover:bg-white/[0.06] active:cursor-grabbing",children:[(0,d.jsx)(l.A,{className:"size-3.5 text-rose-400"}),"Bug"]}),(0,d.jsx)("span",{"aria-hidden":!0,className:"mx-0.5 h-5 w-px bg-white/10"}),(0,d.jsxs)("button",{onClick:()=>aj(a=>!a),title:"ARCHITECTURE"===a?"Add sub-component (click a component next)":"Add sub-task (click a feature next)",className:(0,Q.cn)("flex h-8 items-center gap-1.5 rounded-full px-3 text-[12px] font-medium transition-colors",ai?"bg-white/[0.1] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:[(0,d.jsx)(m.A,{className:"size-3.5"}),"ARCHITECTURE"===a?"Sub-component":"Sub-task"]})]})]}),!s&&be.length>0&&!bg.active&&(0,d.jsx)(h.Zk,{position:"top-left",className:"!mt-14",children:(0,d.jsxs)("button",{type:"button",onClick:bg.start,title:"Guided, domain-by-domain walkthrough of the architecture",className:"glass flex items-center gap-1.5 rounded-xl px-3 py-1.5 text-[11px] text-muted-foreground transition-colors hover:text-foreground",children:[(0,d.jsx)(n.A,{className:"size-3.5"}),"Start tour"]})}),!s&&(0,d.jsx)(h.Zk,{position:"top-center",className:"glass rounded-full px-1 py-0.5",children:(0,d.jsx)(av.Z,{active:a,tabs:[{value:"ROADMAP",label:"Roadmap",href:"/map?view=ROADMAP"},{value:"ARCHITECTURE",label:"Architecture",href:"/map?view=ARCHITECTURE"},{value:"DATABASE",label:"Database",href:"/map?view=DATABASE"},{value:"FILES",label:"Files",href:"/map?view=FILES"}]})}),(0,d.jsxs)(h.Zk,{position:"top-right",className:(0,Q.cn)("flex items-center gap-1 transition-[margin] duration-200",aa&&"!mr-[332px]",s&&"hidden"),children:[(0,d.jsx)(aw.X,{query:aS,onQuery:aT,hits:bM,placeholder:"Find a feature…",onPick:a=>{aT(""),bJ(a)},onZoomToMatches:()=>{bd?.size&&ak.current?.fitView({nodes:[...bd].map(a=>({id:a})),duration:600,padding:.2})}}),F&&(0,d.jsx)(aC.o,{value:a0,onChange:a1}),"ROADMAP"===a&&L&&(0,d.jsx)("button",{type:"button",onClick:()=>bJ(L),title:"Jump to the next feature to work on",className:"glass flex size-8 items-center justify-center rounded-lg text-emerald-300 transition-colors hover:text-emerald-200",children:(0,d.jsx)(o.A,{className:"size-4"})}),(0,d.jsxs)(aB.er,{title:"Filters",trigger:(a,b)=>(0,d.jsxs)("button",{type:"button",onClick:b,title:"Filters",className:(0,Q.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",a||a6>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,d.jsx)(p.A,{className:"size-4"}),a6>0&&(0,d.jsx)("span",{className:"absolute -right-1 -top-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-[var(--accent-2,#ff7a45)] px-1 text-[9px] font-semibold text-white",children:a6})]}),children:[a2.length>0&&(0,d.jsx)(aB.r1,{title:"Status",children:a2.map(a=>(0,d.jsx)(aB.vu,{on:aW.has(a),onClick:()=>bN(a,aX),children:J.nR[a]?.label??a},a))}),a3.length>0&&(0,d.jsx)(aB.r1,{title:"Cluster",children:a3.map(a=>(0,d.jsx)(aB.vu,{on:aY.has(a),onClick:()=>bN(a,aZ),children:a},a))}),a4.length>0&&(0,d.jsx)(aB.r1,{title:"Priority",children:a4.map(a=>(0,d.jsxs)(aB.vu,{on:a$.has(a),onClick:()=>bN(a,a_),children:["P",a]},a))}),a6>0&&(0,d.jsx)("button",{type:"button",onClick:a7,className:"mt-1 w-full rounded-md border border-white/10 px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:"clear filters"})]}),!aa&&(0,d.jsx)("button",{onClick:()=>{ab(!0),ad("details")},title:"Show panel",className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,d.jsx)(q.A,{className:"size-4"})})]})]}),aa&&(0,d.jsx)(ao,{view:a,selected:bH,allNodes:b,onClose:()=>{ab(!1),ad("details")},commentsContent:u,commentsCount:v,activeTab:ac,onTabChange:ad,onAddComment:bx,topOffset:s?64:void 0}),bg.active&&bg.step&&(0,d.jsx)(aA.d,{steps:be,index:bg.index,onPrev:bg.prev,onNext:bg.next,onExit:bg.stop,onGoto:bg.goto})]})})}},47162:()=>{},47446:(a,b,c)=>{},50042:(a,b,c)=>{c(31421),c(77598),c(48161),c(76760),c(80941)},50320:(a,b,c)=>{c(66625)},50605:(a,b,c)=>{c.d(b,{J:()=>h,k:()=>g});var d=c(67484),e=c(56024),f=c(91365);function g(a){let[b,c]=(0,d.useState)("full"),g=(0,e.Pj)(c=>(0,f.gt)(c.transform[2],b,a));return g!==b&&c(g),g}function h({onLod:a,thresholds:b}){return g(b),(0,d.useRef)(null),null}},52351:(a,b,c)=>{c.d(b,{$v:()=>w,EO:()=>s,Lt:()=>o,Rx:()=>x,Zr:()=>y,ck:()=>u,r7:()=>v,tv:()=>p,wd:()=>t});var d=c(48249);c(67484);var e=c(71523),f=c(99469),g=c(60388),h=c(74283),i=c(25845),j=c(36902),k=c(64230),l=c(87298),m=c(33191),n=c(26284);function o({...a}){return(0,d.jsx)(e.V,{"data-slot":"alert-dialog",...a})}function p({...a}){return(0,d.jsx)(f.t,{"data-slot":"alert-dialog-trigger",...a})}function q({...a}){return(0,d.jsx)(g.Z,{"data-slot":"alert-dialog-portal",...a})}function r({className:a,...b}){return(0,d.jsx)(h.X,{"data-slot":"alert-dialog-overlay",className:(0,m.cn)("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",a),...b})}function s({className:a,size:b="default",...c}){return(0,d.jsxs)(q,{children:[(0,d.jsx)(r,{}),(0,d.jsx)(i.h,{"data-slot":"alert-dialog-content","data-size":b,className:(0,m.cn)("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",a),...c})]})}function t({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,m.cn)("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",a),...b})}function u({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,m.cn)("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",a),...b})}function v({className:a,...b}){return(0,d.jsx)(j.L,{"data-slot":"alert-dialog-title",className:(0,m.cn)("font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",a),...b})}function w({className:a,...b}){return(0,d.jsx)(k.r,{"data-slot":"alert-dialog-description",className:(0,m.cn)("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",a),...b})}function x({className:a,variant:b,size:c,...e}){return(0,d.jsx)(l.H,{"data-slot":"alert-dialog-action",className:(0,m.cn)(a),render:(0,d.jsx)(n.$,{variant:b,size:c}),...e})}function y({className:a,variant:b="outline",size:c="default",...e}){return(0,d.jsx)(l.H,{"data-slot":"alert-dialog-cancel",className:(0,m.cn)(a),render:(0,d.jsx)(n.$,{variant:b,size:c}),...e})}},54193:(a,b,c)=>{c.d(b,{X:()=>j});var d=c(48249),e=c(67484),f=c(29813),g=c(45535),h=c(33191),i=c(92994);function j({query:a,onQuery:b,hits:c,onPick:k,onZoomToMatches:l,placeholder:m="Search…"}){let[n,o]=(0,e.useState)(!1);return(0,d.jsxs)(i.er,{title:"Search",open:n,onOpenChange:a=>a?o(!0):void(o(!1),b("")),outsideClicksToClose:2,trigger:(b,c)=>(0,d.jsx)("button",{type:"button",onClick:c,title:"Search this canvas",className:(0,h.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",b||a.trim()?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,d.jsx)(f.A,{className:"size-4"})}),children:[(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("input",{autoFocus:!0,value:a,onChange:a=>b(a.target.value),onKeyDown:a=>{"Enter"===a.key&&l&&(a.preventDefault(),l())},placeholder:m,className:"w-full rounded-md border border-white/10 bg-white/[0.04] py-1 pl-2 pr-7 text-[12px] outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.08]"}),a&&(0,d.jsx)("button",{type:"button",onClick:()=>b(""),title:"Clear search",className:"absolute right-1 top-1/2 flex size-5 -translate-y-1/2 items-center justify-center rounded text-muted-foreground/60 transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(g.A,{className:"size-3.5"})})]}),(0,d.jsxs)("div",{className:"mt-2 max-h-64 space-y-0.5 overflow-y-auto",children:[a.trim()&&0===c.length&&(0,d.jsx)("div",{className:"px-1 py-1 text-[11px] text-muted-foreground",children:"No matches"}),c.map(a=>(0,d.jsxs)("button",{type:"button",onClick:()=>{k(a.id),o(!1)},className:"group flex w-full items-center gap-2 rounded-md px-2 py-1 text-left transition-colors hover:bg-white/5",children:[(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate text-[12px] text-muted-foreground transition-colors group-hover:text-foreground",children:a.label}),a.sublabel&&(0,d.jsx)("span",{className:"shrink-0 text-[10px] uppercase tracking-wide text-muted-foreground/50",children:a.sublabel})]},a.id))]})]})}},55805:(a,b,c)=>{c.d(b,{Z:()=>n});var d=c(48249),e=c(67484),f=c(2116),g=c.n(f),h=c(15996),i=c(41665),j=c(79602),k=c(36274);c(79768);var l=c(33191);let m={ROADMAP:h.A,ARCHITECTURE:i.A,FILES:j.A,DATABASE:k.A};function n({tabs:a,active:b}){let[c,f]=(0,e.useState)(null);return(0,d.jsx)("div",{className:"flex items-center gap-0.5",children:a.map(a=>{let e,f=a.value===b,h=a.Icon??m[a.value];return(0,d.jsxs)(g(),{href:(e=a.href,c?`${e}${e.includes("?")?"&":"?"}ws=${c}`:e),className:(0,l.cn)("flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-[12px] font-medium tracking-tight transition-colors",f?"border-white/10 bg-white/[0.07] text-foreground shadow-[inset_0_1px_0_rgba(255,255,255,0.06)]":"border-transparent text-muted-foreground/80 hover:bg-white/5 hover:text-foreground"),children:[h?(0,d.jsx)(h,{className:(0,l.cn)("size-3",f&&"text-[#ff7a45]")}):null,(0,d.jsx)("span",{children:a.label})]},a.value)})})}},56258:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(62896);c(22443);var e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},58149:(a,b,c)=>{c(47446),c(526)},58720:(a,b,c)=>{c.d(b,{Sh:()=>k,V5:()=>j,e0:()=>m});var d=c(48249),e=c(67484),f=c(56024),g=c(55030),h=c(45535),i=c(33191);let j="#ff7a45";function k({data:a,selected:b}){let[c,l]=(0,e.useState)(a.text);return(0,d.jsxs)("div",{onClick:()=>a.onClick?.(a.annotationId),className:(0,i.cn)("group/anno relative w-[270px] rounded-xl border border-white/10 bg-[#1b1b1e]/95 px-4 py-3 shadow-[0_18px_50px_-20px_rgba(0,0,0,0.9)] backdrop-blur transition-colors hover:border-white/20",!a.editable&&"cursor-pointer",b&&"border-[#ff7a45]/50"),children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute -left-px bottom-2 top-2 w-[3px] rounded-full",style:{background:j}}),(0,d.jsx)(f.h7,{type:"target",id:"in",position:g.yX.Top,isConnectable:!1,className:"!pointer-events-none !size-1 !min-h-0 !min-w-0 !border-0 !bg-transparent",style:{left:"auto",right:22,top:0}}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("div",{className:"font-mono text-[10px] font-semibold uppercase tracking-[0.22em]",style:{color:j},children:"Annotation \xb7 You"}),a.editable&&a.onDelete&&(0,d.jsx)("button",{type:"button",title:"Delete annotation",onClick:b=>{b.stopPropagation(),a.onDelete?.(a.annotationId)},className:"nodrag nopan -mr-1 rounded p-0.5 text-muted-foreground/60 opacity-0 transition-opacity hover:text-red-300 group-hover/anno:opacity-100",children:(0,d.jsx)(h.A,{className:"size-3"})})]}),a.editable?(0,d.jsx)("textarea",{value:c,autoFocus:!a.text.trim(),placeholder:"Type your annotation…",onChange:a=>l(a.target.value),onBlur:()=>{c!==a.text&&a.onChangeText?.(a.annotationId,c)},onKeyDown:a=>a.stopPropagation(),className:"nodrag nopan thin-scroll field-sizing-content mt-1.5 max-h-40 min-h-[2.25rem] w-full resize-none overflow-y-auto bg-transparent text-[13px] leading-snug text-foreground/95 outline-none placeholder:text-muted-foreground/60"}):(0,d.jsx)("div",{className:"thin-scroll mt-1.5 max-h-40 overflow-y-auto text-[13px] leading-snug text-foreground/95",children:a.text.trim()?a.text:(0,d.jsx)("span",{className:"text-muted-foreground",children:"…"})})]})}function l({n:a,annotationId:b,onClick:c}){return(0,d.jsxs)("button",{type:"button",title:`Annotation ${a} — view comment`,onClick:a=>{a.stopPropagation(),c?.(b)},className:"nodrag nopan relative flex size-6 items-center justify-center rounded-full font-mono text-[11px] font-bold text-[#181818] shadow-[0_0_0_3px_rgba(255,122,69,0.22),0_0_16px_2px_rgba(255,122,69,0.4)] transition-transform hover:scale-110",style:{background:j},children:[a,(0,d.jsx)(f.h7,{type:"source",id:`pin-${b}`,position:g.yX.Bottom,isConnectable:!1,className:"!pointer-events-none !size-1 !min-h-0 !min-w-0 !border-0 !bg-transparent",style:{left:"50%",bottom:2}})]})}function m({pins:a,onPinClick:b}){return a.length?(0,d.jsx)("span",{className:"absolute -right-3 top-1/2 z-10 flex -translate-y-1/2 flex-row-reverse gap-1",children:a.map(a=>(0,d.jsx)(l,{n:a.n,annotationId:a.id,onClick:b},a.id))}):null}},62896:(a,b,c)=>{c.a(a,async(a,d)=>{try{let m;c.d(b,{db:()=>t,e$:()=>l});var e=c(58296),f=c(28855),g=c(22443),h=c(76909),i=c(80941),j=a([f,e]);[f,e]=j.then?(await j)():j;let n={...g,...h},o=(m=process.env.DATABASE_URL)&&/^(file:|libsql:|wss?:|https?:|:memory:)/i.test(m)?m:"file:./dev.db";function k(a){let b=(0,f.createClient)({url:a});return b.execute("PRAGMA foreign_keys = ON;"),b.execute("PRAGMA busy_timeout = 5000;"),(0,e.f)(b,{schema:n})}let p=globalThis,q=p.dzDefault??k(o),r=p.dzByUrl??=new Map,s=new Map;function l(a=o){if(!/^file:/i.test(a))return Promise.resolve();let b=s.get(a);return b||(b=c.e(9127).then(c.bind(c,29127)).then(({provisionDb:b})=>b(a)).then(()=>{}).catch(b=>{s.delete(a),console.error("[beacon] fallback db provision failed:",b instanceof Error?b.message:b)}),s.set(a,b)),b}let t=new Proxy({},{get(a,b){let c=function(){var a;let b;if(process.env.BEACON_REPO)return q;let c=(0,i.p1)()??(0,i.UP)();return c?(a=(0,i.Nx)(c),(b=r.get(a))||(b=k(a),r.set(a,b)),b):q}(),d=c[b];return"function"==typeof d?d.bind(c):d}});d()}catch(a){d(a)}})},66625:(a,b,c)=>{},66949:(a,b,c)=>{c(73024),c(76760),c(50042)},67637:(a,b,c)=>{c.d(b,{Z:()=>h});var d=c(48249),e=c(56024),f=c(33346),g=c(33191);function h({regions:a,tone:b="neutral",lod:c="full"}){let i=(0,e.Pj)(a=>a.transform[2]);if(0===a.length)return null;let j="far"===c,k=Math.min(150,26/Math.max(i,.05)),l=Math.min(80,13/Math.max(i,.05));return(0,d.jsx)(e.DX,{children:a.map(a=>(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(${a.x}px, ${a.y}px)`,width:a.w,height:a.h,pointerEvents:"none",zIndex:0},className:(0,g.cn)("rounded-2xl border","category"===b?(0,f.xZ)(a.key):"border-white/[0.08] bg-white/[0.015]",j&&"bg-card/80"),children:j?(0,d.jsxs)("div",{className:"flex h-full flex-col items-center justify-center gap-[0.3em] px-2",children:[(0,d.jsx)("span",{className:"whitespace-nowrap text-center font-semibold tracking-tight text-foreground",style:{fontSize:Math.min(k,.34*a.h,(a.w-16)/(.74*Math.max(a.label.length,1))),lineHeight:1.1},children:a.label}),(0,d.jsxs)("span",{className:"tabular-nums text-muted-foreground",style:{fontSize:Math.min(l,.18*a.h)},children:[a.count," ",1===a.count?"card":"cards"]})]}):(0,d.jsxs)("div",{className:"flex items-baseline gap-2 px-3 py-1",children:[(0,d.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground/80",children:a.label}),(0,d.jsx)("span",{className:"text-[10px] tabular-nums text-muted-foreground/50",children:a.count})]})},a.key))})}},74732:(a,b,c)=>{c.d(b,{Cf:()=>r,Es:()=>t,L3:()=>u,c7:()=>s,lG:()=>o,rr:()=>v});var d=c(48249);c(67484);var e=c(76424),f=c(60388),g=c(74283),h=c(25845),i=c(87298),j=c(36902),k=c(64230),l=c(33191),m=c(26284),n=c(45535);function o({...a}){return(0,d.jsx)(e.D,{"data-slot":"dialog",...a})}function p({...a}){return(0,d.jsx)(f.Z,{"data-slot":"dialog-portal",...a})}function q({className:a,...b}){return(0,d.jsx)(g.X,{"data-slot":"dialog-overlay",className:(0,l.cn)("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",a),...b})}function r({className:a,children:b,showCloseButton:c=!0,...e}){return(0,d.jsxs)(p,{children:[(0,d.jsx)(q,{}),(0,d.jsxs)(h.h,{"data-slot":"dialog-content",className:(0,l.cn)("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",a),...e,children:[b,c&&(0,d.jsxs)(i.H,{"data-slot":"dialog-close",render:(0,d.jsx)(m.$,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[(0,d.jsx)(n.A,{}),(0,d.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function s({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"dialog-header",className:(0,l.cn)("flex flex-col gap-2",a),...b})}function t({className:a,showCloseButton:b=!1,children:c,...e}){return(0,d.jsxs)("div",{"data-slot":"dialog-footer",className:(0,l.cn)("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",a),...e,children:[c,b&&(0,d.jsx)(i.H,{render:(0,d.jsx)(m.$,{variant:"outline"}),children:"Close"})]})}function u({className:a,...b}){return(0,d.jsx)(j.L,{"data-slot":"dialog-title",className:(0,l.cn)("font-heading text-base leading-none font-medium",a),...b})}function v({className:a,...b}){return(0,d.jsx)(k.r,{"data-slot":"dialog-description",className:(0,l.cn)("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",a),...b})}},76174:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(62896);c(22443),c(66625),c(66949);var e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},76909:(a,b,c)=>{c.r(b),c.d(b,{bugFlagRelations:()=>h,codeFileEdgeRelations:()=>u,codeFileRelations:()=>t,dbColumnRelations:()=>m,dbRelationRelations:()=>n,dbTableRelations:()=>l,draftColumnRelations:()=>r,draftRelationRelations:()=>s,draftTableRelations:()=>q,edgeRelations:()=>k,endpointRelations:()=>o,endpointTableRelations:()=>p,nodeFileRelations:()=>g,nodeRelations:()=>f,nodeTagsRelations:()=>j,tagRelations:()=>i});var d=c(74184),e=c(22443);let f=(0,d.K1)(e.node,({one:a,many:b})=>({files:b(e.nodeFile),bugFlags:b(e.bugFlag),nodeTags:b(e.nodeTags),edgesOut:b(e.edge,{relationName:"EdgeFrom"}),edgesIn:b(e.edge,{relationName:"EdgeTo"}),parent:a(e.node,{fields:[e.node.parentId],references:[e.node.id],relationName:"NodeTree"}),children:b(e.node,{relationName:"NodeTree"})})),g=(0,d.K1)(e.nodeFile,({one:a})=>({node:a(e.node,{fields:[e.nodeFile.nodeId],references:[e.node.id]})})),h=(0,d.K1)(e.bugFlag,({one:a})=>({node:a(e.node,{fields:[e.bugFlag.nodeId],references:[e.node.id]})})),i=(0,d.K1)(e.tag,({many:a})=>({nodeTags:a(e.nodeTags)})),j=(0,d.K1)(e.nodeTags,({one:a})=>({node:a(e.node,{fields:[e.nodeTags.a],references:[e.node.id]}),tag:a(e.tag,{fields:[e.nodeTags.b],references:[e.tag.id]})})),k=(0,d.K1)(e.edge,({one:a})=>({from:a(e.node,{fields:[e.edge.fromId],references:[e.node.id],relationName:"EdgeFrom"}),to:a(e.node,{fields:[e.edge.toId],references:[e.node.id],relationName:"EdgeTo"})})),l=(0,d.K1)(e.dbTable,({many:a})=>({columns:a(e.dbColumn),fksOut:a(e.dbRelation,{relationName:"FkFrom"}),fksIn:a(e.dbRelation,{relationName:"FkTo"}),usages:a(e.endpointTable)})),m=(0,d.K1)(e.dbColumn,({one:a})=>({table:a(e.dbTable,{fields:[e.dbColumn.tableId],references:[e.dbTable.id]})})),n=(0,d.K1)(e.dbRelation,({one:a})=>({fromTable:a(e.dbTable,{fields:[e.dbRelation.fromTableId],references:[e.dbTable.id],relationName:"FkFrom"}),toTable:a(e.dbTable,{fields:[e.dbRelation.toTableId],references:[e.dbTable.id],relationName:"FkTo"})})),o=(0,d.K1)(e.endpoint,({many:a})=>({tables:a(e.endpointTable)})),p=(0,d.K1)(e.endpointTable,({one:a})=>({endpoint:a(e.endpoint,{fields:[e.endpointTable.endpointId],references:[e.endpoint.id]}),table:a(e.dbTable,{fields:[e.endpointTable.tableId],references:[e.dbTable.id]})})),q=(0,d.K1)(e.draftTable,({many:a})=>({columns:a(e.draftColumn),fksOut:a(e.draftRelation,{relationName:"DraftFkFrom"}),fksIn:a(e.draftRelation,{relationName:"DraftFkTo"})})),r=(0,d.K1)(e.draftColumn,({one:a})=>({table:a(e.draftTable,{fields:[e.draftColumn.tableId],references:[e.draftTable.id]})})),s=(0,d.K1)(e.draftRelation,({one:a})=>({fromTable:a(e.draftTable,{fields:[e.draftRelation.fromTableId],references:[e.draftTable.id],relationName:"DraftFkFrom"}),toTable:a(e.draftTable,{fields:[e.draftRelation.toTableId],references:[e.draftTable.id],relationName:"DraftFkTo"})})),t=(0,d.K1)(e.codeFile,({many:a})=>({edgesOut:a(e.codeFileEdge,{relationName:"CFEFrom"}),edgesIn:a(e.codeFileEdge,{relationName:"CFETo"})})),u=(0,d.K1)(e.codeFileEdge,({one:a})=>({fromFile:a(e.codeFile,{fields:[e.codeFileEdge.fromPath],references:[e.codeFile.path],relationName:"CFEFrom"}),toFile:a(e.codeFile,{fields:[e.codeFileEdge.toPath],references:[e.codeFile.path],relationName:"CFETo"})}))},78103:(a,b,c)=>{c.d(b,{A6:()=>i,An:()=>j,RR:()=>d,YG:()=>g,ZD:()=>h,jR:()=>f});let d=["frontend","backend","fullstack"],e={fe:"frontend",front:"frontend",be:"backend",back:"backend",fs:"fullstack","full-stack":"fullstack","full stack":"fullstack"};function f(a){let b=(a??"").trim().toLowerCase();return b?d.includes(b)?b:e[b]??null:null}let g={frontend:{label:"Frontend",short:"FE"},backend:{label:"Backend",short:"BE"},fullstack:{label:"Fullstack",short:"FS"}},h={frontend:"#5AC8FA",backend:"#3ECF8E",fullstack:"#5AC8FA"};function i(a){return"fullstack"!==a?h[a]:`linear-gradient(to bottom, ${h.frontend} 0%, ${h.frontend} 50%, ${h.backend} 50%, ${h.backend} 100%)`}let j=/\.(tsx|jsx|vue|svelte)$/i},80941:(a,b,c)=>{c.d(b,{Dk:()=>m,K4:()=>k,Nx:()=>j,UP:()=>l,X_:()=>o,kO:()=>r,p1:()=>p});var d=c(16698);c(31421),c(77598);var e=c(73024),f=c(48161),g=c(76760);function h(){return process.env.BEACON_HOME||(0,g.join)((0,f.homedir)(),".beacon")}function i(a){return(0,g.join)(h(),a)}function j(a){return`file:${(0,g.join)(i(a),"db.sqlite")}`}function k(a){return(function(){try{let a=JSON.parse((0,e.readFileSync)((0,g.join)(h(),"workspaces.json"),"utf8"));return Array.isArray(a)?a:[]}catch{return[]}})().find(b=>b.id===a)??null}function l(){try{return(0,e.readFileSync)((0,g.join)(h(),"active"),"utf8").trim()||null}catch{return null}}let m="beacon_ws",n=new d.AsyncLocalStorage;function o(a,b){return a?n.run(a,b):b()}function p(){return n.getStore()??null}let q=new Set;async function r(a){let b=i(a),d=(0,g.join)(b,"db.sqlite"),f=(0,e.existsSync)(d);if(f&&q.has(d))return{ok:!0,created:!1,migrated:!1};try{(0,e.mkdirSync)(b,{recursive:!0});let{provisionDb:g}=await c.e(9127).then(c.bind(c,29127)),h=await g(j(a));return q.add(d),{ok:!0,created:!f,migrated:f&&h.migrated}}catch(a){return{ok:!1,created:!1,migrated:!1,error:a instanceof Error?a.message:String(a)}}}},81725:(a,b,c)=>{c.d(b,{$$:()=>g,Qk:()=>f,RU:()=>d,Uy:()=>e,jF:()=>h,r2:()=>k,sQ:()=>i,zn:()=>j});let d="0 0 0 3px var(--accent-2,#ff7a45), 0 0 32px -2px var(--accent-2,#ff7a45)",e=.14;function f(a,b){let c=b.trim().toLowerCase();if(!c)return!1;for(let b of a)if(b&&b.toLowerCase().includes(c))return!0;return!1}function g(a){return[a.title,a.role,a.plain,a.cluster,a.status].filter(Boolean)}function h(a){let b=[a.name,a.domain,a.description];for(let c of a.columns??[])b.push(c.name,c.type,c.note);return b.filter(Boolean)}function i(a){return[a.method,a.path,a.domain,a.description].filter(Boolean)}function j(a){return[a.path,a.lang].filter(Boolean)}function k(a,b,c,d,e=12){let g=b.trim().toLowerCase();if(!g)return[];let h=[];for(let b of a){if(!f(c(b),g))continue;let a=d(b);h.push({hit:a,score:function(a,b){let c=a.toLowerCase();return c===b?0:c.startsWith(b)?1:RegExp(`(^|[^a-z0-9])${b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}`,"i").test(a)?2:c.includes(b)?3:4}(a.label,g)})}return h.sort((a,b)=>a.score-b.score||a.hit.label.length-b.hit.label.length),h.slice(0,e).map(a=>a.hit)}},84170:(a,b,c)=>{c.d(b,{F:()=>g,o:()=>h});var d=c(48249),e=c(78103),f=c(33191);function g(a,b){return!!b&&("fullstack"===a?"fullstack"===b:b===a||"fullstack"===b)}function h({value:a,onChange:b,options:c=e.RR}){return(0,d.jsx)("div",{className:"glass flex items-center gap-0.5 rounded-lg p-0.5",children:c.map(c=>{let g=a===c;return(0,d.jsxs)("button",{type:"button",onClick:()=>b(g?null:c),title:g?"Show every layer at full strength again":`Highlight ${e.YG[c].label} — other cards dim, nothing is hidden`,className:(0,f.cn)("flex h-7 items-center gap-1.5 rounded-md px-2 text-[10px] font-semibold uppercase tracking-wide transition-colors",g?"bg-white/[0.12] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"h-3 w-[3px] shrink-0 rounded-full",style:{background:(0,e.A6)(c)}}),e.YG[c].short]},c)})})}},84853:(a,b,c)=>{c.d(b,{C5:()=>f,KW:()=>g});var d=c(65573),e=c(6716);async function f(a){if(a&&(0,e.K4)(a))return a;let b=(await (0,d.cookies)()).get(e.Dk)?.value;return b&&(0,e.K4)(b)?b:null}let g=f},86892:(a,b,c)=>{c.d(b,{Xi:()=>d});function d(a,b){let c,d,e,f=(d=((c=b.viewportAspect)&&Number.isFinite(c)&&c>0?Math.min(3.2,Math.max(.7,c)):1.8)*(b.aspectSlack??1),e=a.reduce((a,c)=>a+(c.w+b.gapX)*(c.h+b.gapY),0),Math.max(b.minBandW,Math.round(Math.sqrt(e*d)))),g=new Map,h=0,i=0,j=0;for(let c of a)h>0&&h+c.w>f&&(i+=j+b.gapY,h=0,j=0),g.set(c.id,{x:h,y:i}),j=Math.max(j,c.h),h+=c.w+b.gapX;return g}},91365:(a,b,c)=>{c.d(b,{fE:()=>f,gt:()=>g,kz:()=>e});let d={far:.3,farExit:.34,mid:.55,midExit:.6},e={far:.12,farExit:.15,mid:.45,midExit:.5},f={far:.2,farExit:.24,mid:.32,midExit:.36};function g(a,b="full",c=d){return a<c.far||"far"===b&&a<c.farExit?"far":a<c.mid||"mid"===b&&a<c.midExit?"mid":"full"}},92994:(a,b,c)=>{c.d(b,{er:()=>g,r1:()=>h,vu:()=>i});var d=c(48249),e=c(67484),f=c(33191);function g({trigger:a,title:b,align:c="right",children:h,open:i,onOpenChange:j,outsideClicksToClose:k=1}){let[l,m]=(0,e.useState)(!1),[n,o]=(0,e.useState)("down"),p=i??l,q=(0,e.useRef)(null);return(0,e.useRef)(()=>{}),(0,d.jsxs)("div",{ref:q,className:"relative",children:[a(p,()=>{var a;return a=!p,void(void 0===i&&m(a),j?.(a))}),p&&(0,d.jsxs)("div",{className:(0,f.cn)("glass absolute z-30 w-64 rounded-xl p-3 shadow-xl","up"===n?"bottom-full mb-1.5":"top-full mt-1.5","right"===c?"right-0":"left-0"),children:[b&&(0,d.jsx)("div",{className:"mb-2 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:b}),h]})]})}function h({title:a,children:b}){return(0,d.jsxs)("div",{className:"mb-2.5 last:mb-0",children:[(0,d.jsx)("div",{className:"mb-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground/80",children:a}),(0,d.jsx)("div",{className:"flex flex-wrap gap-1",children:b})]})}function i({on:a,onClick:b,children:c,tone:e="default"}){return(0,d.jsx)("button",{type:"button",onClick:b,className:(0,f.cn)("rounded-md border px-2 py-0.5 text-[11px] font-medium transition-colors",{default:a?"border-foreground/40 bg-white/10 text-foreground":"border-white/10 text-muted-foreground hover:text-foreground",danger:a?"border-red-500/40 bg-red-500/15 text-red-300":"border-white/10 text-muted-foreground hover:text-foreground",accent:a?"border-sky-500/40 bg-sky-500/15 text-sky-300":"border-white/10 text-muted-foreground hover:text-foreground"}[e]),children:c})}},96863:(a,b,c)=>{c.d(b,{L:()=>h});var d=c(48249),e=c(56024),f=c(55030),g=c(23727);function h(a){let b=(0,e.JY)(a.target),c=a.targetX,h=a.targetY,i=b?.measured?.width,j=b?.measured?.height;if(b&&i&&j){let d=(0,g.u)({x:b.internals.positionAbsolute.x,y:b.internals.positionAbsolute.y,w:i,h:j},{x:a.sourceX,y:a.sourceY});c=d.x,h=d.y}let[k]=(0,f.ah)({sourceX:a.sourceX,sourceY:a.sourceY,targetX:c,targetY:h});return(0,d.jsx)(e.tE,{id:a.id,path:k,style:a.style,markerEnd:a.markerEnd})}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:63,errorRate:1e-4,numBits:1208,numHashes:14,bitArray:[1,1,0,1,1,1,0,0,1,1,0,1,0,1,0,0,1,0,1,0,0,0,0,1,1,1,0,0,1,0,1,0,1,1,1,1,1,0,1,1,1,0,1,1,1,1,0,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,1,0,1,0,1,1,1,0,1,1,0,0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,1,0,1,0,1,0,1,1,0,1,1,0,0,0,1,0,1,1,1,0,1,0,0,0,0,1,1,0,1,0,0,0,1,1,0,1,1,0,1,1,0,1,1,1,0,0,0,1,1,1,0,0,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,1,1,1,0,0,1,0,1,0,0,0,0,1,1,1,0,1,0,0,0,1,1,1,1,0,0,1,0,1,1,1,1,1,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,1,0,0,1,1,1,0,0,1,0,1,0,0,0,0,1,0,0,1,1,0,0,1,1,0,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0,1,1,0,1,0,1,1,0,1,1,0,1,0,0,0,0,1,0,0,1,1,0,1,0,0,1,0,1,1,1,1,0,1,1,0,1,1,1,1,0,1,0,1,1,1,1,0,1,0,0,0,1,1,1,1,1,0,1,0,1,1,0,0,1,1,1,1,1,0,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,0,1,1,1,0,1,1,1,0,0,0,1,0,1,1,0,1,1,1,0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,1,1,1,0,0,1,1,0,1,0,0,0,1,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,0,1,1,0,0,1,0,0,0,1,0,1,0,0,0,1,1,0,1,1,0,0,0,0,1,1,1,1,1,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,0,1,1,0,1,1,0,1,1,0,1,0,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,1,1,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,1,0,0,0,1,1,0,0,1,1,0,0,0,0,1,1,0,1,0,1,1,0,1,0,0,1,0,0,1,0,0,1,1,1,0,1,0,1,1,1,1,0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,1,0,1,1,0,1,1,0,0,0,0,1,0,0,1,1,1,1,0,0,0,0,0,1,0,0,1,0,1,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,1,0,1,0,0,0,0,0,1,1,1,0,0,0,1,1,0,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,0,1,0,0,1,0,0,1,0,0,1,0,1,0,1,1,1,1,0,0,1,1,0,1,0,1,0,0,0,0,0,1,0,0,1,1,0,0,0,0,1,0,1,0,0,0,0,0,1,1,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,1,1,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,0,1,1,1,1,1,0,1,0,0,0,0,1,1,0,0,1,1,1,0,1,1,1,0,0,0,1,1,1,0,0,1,1,0,1,0,1,1,1,0,1,1,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,1,1,1,1,1,0,1,0,0,0,1,1,0,1,1,1,1,1,1,0,1,0,1,1,1,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0,1,1,0,1,0,1,1,0,1,0,0,0,0,1,1,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1,1,0,1,1,1,0,1,1,0,1,0,0,0,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,1,0,1,0,0,1,0,1,1,1,0,1,0,0,1,1,1,0,0,0,1,0,0,0,0,1,1,0,0,1,0,1,1,1,1,0,1,0,0,1,1,0,0,1,0,1,0,0,1,1,1,1,0,1,0,0,1,0,1,0,0,0,1,1,1,0,0,0,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,1,0,0,0,0,1,1,1,1,0,1,0,1,0,0,1,1,1,1,0,1,1,0,1,1,0,0,1,0,1,1,0,0,0,1,1,0,1,0,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,0,1,1,1,1,0,0,0,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,0,1,0,0,0,1,1,1,0,1,1,0,0,1,1,0,1,0,0]},__routerFilterDynamic:{numItems:9,errorRate:1e-4,numBits:173,numHashes:14,bitArray:[0,0,0,0,0,0,1,1,1,0,0,1,0,1,0,0,1,0,1,1,1,0,1,1,0,1,1,0,1,0,0,0,1,0,0,0,1,0,1,0,0,1,1,0,1,1,0,0,1,0,1,0,0,1,0,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,0,1,0,1,0,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,0,1,1,1,0,1,1,0,1,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,0,1,1,1,0,1,1,1,1,0,1,1,1,0,1,0,1,0,0,1,1,0,0,1,1,1]},sortedPages:["/_app"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1439],{2982:(t,n,r)=>{r.d(n,{A:()=>i});var e=r(17434);function i(t){var n,r,i,o=(0,e.A)(.1);function u(t){for(var e,o=0,u=n.length;o<u;++o)e=n[o],e.vx+=(i[o]-e.x)*r[o]*t}function a(){if(n){var e,u=n.length;for(e=0,r=Array(u),i=Array(u);e<u;++e)r[e]=isNaN(i[e]=+t(n[e],e,n))?0:+o(n[e],e,n)}}return"function"!=typeof t&&(t=(0,e.A)(null==t?0:+t)),u.initialize=function(t){n=t,a()},u.strength=function(t){return arguments.length?(o="function"==typeof t?t:(0,e.A)(+t),a(),u):o},u.x=function(n){return arguments.length?(t="function"==typeof n?n:(0,e.A)(+n),a(),u):t},u}},7679:(t,n,r)=>{r.d(n,{A:()=>h,x:()=>o,y:()=>u});var e=r(32521),i=r(87977);function o(t){return t.x}function u(t){return t.y}var a=Math.PI*(3-Math.sqrt(5));function h(t){let n;var r,o=1,u=.001,h=1-Math.pow(.001,1/300),f=0,s=.6,l=new Map,c=(0,i.O1)(y),x=(0,e.A)("tick","end"),v=(n=1,()=>(n=(1664525*n+0x3c6ef35f)%0x100000000)/0x100000000);function y(){d(),x.call("tick",r),o<u&&(c.stop(),x.call("end",r))}function d(n){var e,i,u=t.length;void 0===n&&(n=1);for(var a=0;a<n;++a)for(o+=(f-o)*h,l.forEach(function(t){t(o)}),e=0;e<u;++e)null==(i=t[e]).fx?i.x+=i.vx*=s:(i.x=i.fx,i.vx=0),null==i.fy?i.y+=i.vy*=s:(i.y=i.fy,i.vy=0);return r}function g(){for(var n,r=0,e=t.length;r<e;++r){if((n=t[r]).index=r,null!=n.fx&&(n.x=n.fx),null!=n.fy&&(n.y=n.fy),isNaN(n.x)||isNaN(n.y)){var i=10*Math.sqrt(.5+r),o=r*a;n.x=i*Math.cos(o),n.y=i*Math.sin(o)}(isNaN(n.vx)||isNaN(n.vy))&&(n.vx=n.vy=0)}}function _(n){return n.initialize&&n.initialize(t,v),n}return null==t&&(t=[]),g(),r={tick:d,restart:function(){return c.restart(y),r},stop:function(){return c.stop(),r},nodes:function(n){return arguments.length?(t=n,g(),l.forEach(_),r):t},alpha:function(t){return arguments.length?(o=+t,r):o},alphaMin:function(t){return arguments.length?(u=+t,r):u},alphaDecay:function(t){return arguments.length?(h=+t,r):+h},alphaTarget:function(t){return arguments.length?(f=+t,r):f},velocityDecay:function(t){return arguments.length?(s=1-t,r):1-s},randomSource:function(t){return arguments.length?(v=t,l.forEach(_),r):v},force:function(t,n){return arguments.length>1?(null==n?l.delete(t):l.set(t,_(n)),r):l.get(t)},find:function(n,r,e){var i,o,u,a,h,f=0,s=t.length;for(null==e?e=1/0:e*=e,f=0;f<s;++f)(u=(i=n-(a=t[f]).x)*i+(o=r-a.y)*o)<e&&(h=a,e=u);return h},on:function(t,n){return arguments.length>1?(x.on(t,n),r):x.on(t)}}}},15629:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(53891),i=r(17434),o=r(93958),u=r(7679);function a(){var t,n,r,a,h,f=(0,i.A)(-30),s=1,l=1/0,c=.81;function x(r){var i,o=t.length,h=(0,e.A)(t,u.x,u.y).visitAfter(y);for(a=r,i=0;i<o;++i)n=t[i],h.visit(d)}function v(){if(t){var n,r,e=t.length;for(n=0,h=Array(e);n<e;++n)h[(r=t[n]).index]=+f(r,n,t)}}function y(t){var n,r,e,i,o,u=0,a=0;if(t.length){for(e=i=o=0;o<4;++o)(n=t[o])&&(r=Math.abs(n.value))&&(u+=n.value,a+=r,e+=r*n.x,i+=r*n.y);t.x=e/a,t.y=i/a}else{(n=t).x=n.data.x,n.y=n.data.y;do u+=h[n.data.index];while(n=n.next)}t.value=u}function d(t,e,i,u){if(!t.value)return!0;var f=t.x-n.x,x=t.y-n.y,v=u-e,y=f*f+x*x;if(v*v/c<y)return y<l&&(0===f&&(y+=(f=(0,o.A)(r))*f),0===x&&(y+=(x=(0,o.A)(r))*x),y<s&&(y=Math.sqrt(s*y)),n.vx+=f*t.value*a/y,n.vy+=x*t.value*a/y),!0;if(!t.length&&!(y>=l)){(t.data!==n||t.next)&&(0===f&&(y+=(f=(0,o.A)(r))*f),0===x&&(y+=(x=(0,o.A)(r))*x),y<s&&(y=Math.sqrt(s*y)));do t.data!==n&&(v=h[t.data.index]*a/y,n.vx+=f*v,n.vy+=x*v);while(t=t.next)}}return x.initialize=function(n,e){t=n,r=e,v()},x.strength=function(t){return arguments.length?(f="function"==typeof t?t:(0,i.A)(+t),v(),x):f},x.distanceMin=function(t){return arguments.length?(s=t*t,x):Math.sqrt(s)},x.distanceMax=function(t){return arguments.length?(l=t*t,x):Math.sqrt(l)},x.theta=function(t){return arguments.length?(c=t*t,x):Math.sqrt(c)},x}},17434:(t,n,r)=>{r.d(n,{A:()=>e});function e(t){return function(){return t}}},18986:(t,n,r)=>{r.d(n,{A:()=>e});let e=(0,r(30772).A)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]])},25583:(t,n,r)=>{r.d(n,{A:()=>e});let e=(0,r(30772).A)("file-code-corner",[["path",{d:"M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35",key:"1wthlu"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"m5 16-3 3 3 3",key:"331omg"}],["path",{d:"m9 22 3-3-3-3",key:"lsp7cz"}]])},53891:(t,n,r)=>{function e(t,n,r,e){if(isNaN(n)||isNaN(r))return t;var i,o,u,a,h,f,s,l,c,x=t._root,v={data:e},y=t._x0,d=t._y0,g=t._x1,_=t._y1;if(!x)return t._root=v,t;for(;x.length;)if((f=n>=(o=(y+g)/2))?y=o:g=o,(s=r>=(u=(d+_)/2))?d=u:_=u,i=x,!(x=x[l=s<<1|f]))return i[l]=v,t;if(a=+t._x.call(null,x.data),h=+t._y.call(null,x.data),n===a&&r===h)return v.next=x,i?i[l]=v:t._root=v,t;do i=i?i[l]=[,,,,]:t._root=[,,,,],(f=n>=(o=(y+g)/2))?y=o:g=o,(s=r>=(u=(d+_)/2))?d=u:_=u;while((l=s<<1|f)==(c=(h>=u)<<1|a>=o));return i[c]=x,i[l]=v,t}function i(t,n,r,e,i){this.node=t,this.x0=n,this.y0=r,this.x1=e,this.y1=i}function o(t){return t[0]}function u(t){return t[1]}function a(t,n,r){var e=new h(null==n?o:n,null==r?u:r,NaN,NaN,NaN,NaN);return null==t?e:e.addAll(t)}function h(t,n,r,e,i,o){this._x=t,this._y=n,this._x0=r,this._y0=e,this._x1=i,this._y1=o,this._root=void 0}function f(t){for(var n={data:t.data},r=n;t=t.next;)r=r.next={data:t.data};return n}r.d(n,{A:()=>a});var s=a.prototype=h.prototype;s.copy=function(){var t,n,r=new h(this._x,this._y,this._x0,this._y0,this._x1,this._y1),e=this._root;if(!e)return r;if(!e.length)return r._root=f(e),r;for(t=[{source:e,target:r._root=[,,,,]}];e=t.pop();)for(var i=0;i<4;++i)(n=e.source[i])&&(n.length?t.push({source:n,target:e.target[i]=[,,,,]}):e.target[i]=f(n));return r},s.add=function(t){let n=+this._x.call(null,t),r=+this._y.call(null,t);return e(this.cover(n,r),n,r,t)},s.addAll=function(t){var n,r,i,o,u=t.length,a=Array(u),h=Array(u),f=1/0,s=1/0,l=-1/0,c=-1/0;for(r=0;r<u;++r)!(isNaN(i=+this._x.call(null,n=t[r]))||isNaN(o=+this._y.call(null,n)))&&(a[r]=i,h[r]=o,i<f&&(f=i),i>l&&(l=i),o<s&&(s=o),o>c&&(c=o));if(f>l||s>c)return this;for(this.cover(f,s).cover(l,c),r=0;r<u;++r)e(this,a[r],h[r],t[r]);return this},s.cover=function(t,n){if(isNaN(t*=1)||isNaN(n*=1))return this;var r=this._x0,e=this._y0,i=this._x1,o=this._y1;if(isNaN(r))i=(r=Math.floor(t))+1,o=(e=Math.floor(n))+1;else{for(var u,a,h=i-r||1,f=this._root;r>t||t>=i||e>n||n>=o;)switch(a=(n<e)<<1|t<r,(u=[,,,,])[a]=f,f=u,h*=2,a){case 0:i=r+h,o=e+h;break;case 1:r=i-h,o=e+h;break;case 2:i=r+h,e=o-h;break;case 3:r=i-h,e=o-h}this._root&&this._root.length&&(this._root=f)}return this._x0=r,this._y0=e,this._x1=i,this._y1=o,this},s.data=function(){var t=[];return this.visit(function(n){if(!n.length)do t.push(n.data);while(n=n.next)}),t},s.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},s.find=function(t,n,r){var e,o,u,a,h,f,s,l=this._x0,c=this._y0,x=this._x1,v=this._y1,y=[],d=this._root;for(d&&y.push(new i(d,l,c,x,v)),null==r?r=1/0:(l=t-r,c=n-r,x=t+r,v=n+r,r*=r);f=y.pop();)if((d=f.node)&&!((o=f.x0)>x)&&!((u=f.y0)>v)&&!((a=f.x1)<l)&&!((h=f.y1)<c))if(d.length){var g=(o+a)/2,_=(u+h)/2;y.push(new i(d[3],g,_,a,h),new i(d[2],o,_,g,h),new i(d[1],g,u,a,_),new i(d[0],o,u,g,_)),(s=(n>=_)<<1|t>=g)&&(f=y[y.length-1],y[y.length-1]=y[y.length-1-s],y[y.length-1-s]=f)}else{var p=t-this._x.call(null,d.data),A=n-this._y.call(null,d.data),N=p*p+A*A;if(N<r){var w=Math.sqrt(r=N);l=t-w,c=n-w,x=t+w,v=n+w,e=d.data}}return e},s.remove=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(u=+this._y.call(null,t)))return this;var n,r,e,i,o,u,a,h,f,s,l,c,x=this._root,v=this._x0,y=this._y0,d=this._x1,g=this._y1;if(!x)return this;if(x.length)for(;;){if((f=o>=(a=(v+d)/2))?v=a:d=a,(s=u>=(h=(y+g)/2))?y=h:g=h,n=x,!(x=x[l=s<<1|f]))return this;if(!x.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(r=n,c=l)}for(;x.data!==t;)if(e=x,!(x=x.next))return this;return((i=x.next)&&delete x.next,e)?i?e.next=i:delete e.next:n?(i?n[l]=i:delete n[l],(x=n[0]||n[1]||n[2]||n[3])&&x===(n[3]||n[2]||n[1]||n[0])&&!x.length&&(r?r[c]=x:this._root=x)):this._root=i,this},s.removeAll=function(t){for(var n=0,r=t.length;n<r;++n)this.remove(t[n]);return this},s.root=function(){return this._root},s.size=function(){var t=0;return this.visit(function(n){if(!n.length)do++t;while(n=n.next)}),t},s.visit=function(t){var n,r,e,o,u,a,h=[],f=this._root;for(f&&h.push(new i(f,this._x0,this._y0,this._x1,this._y1));n=h.pop();)if(!t(f=n.node,e=n.x0,o=n.y0,u=n.x1,a=n.y1)&&f.length){var s=(e+u)/2,l=(o+a)/2;(r=f[3])&&h.push(new i(r,s,l,u,a)),(r=f[2])&&h.push(new i(r,e,l,s,a)),(r=f[1])&&h.push(new i(r,s,o,u,l)),(r=f[0])&&h.push(new i(r,e,o,s,l))}return this},s.visitAfter=function(t){var n,r=[],e=[];for(this._root&&r.push(new i(this._root,this._x0,this._y0,this._x1,this._y1));n=r.pop();){var o=n.node;if(o.length){var u,a=n.x0,h=n.y0,f=n.x1,s=n.y1,l=(a+f)/2,c=(h+s)/2;(u=o[0])&&r.push(new i(u,a,h,l,c)),(u=o[1])&&r.push(new i(u,l,h,f,c)),(u=o[2])&&r.push(new i(u,a,c,l,s)),(u=o[3])&&r.push(new i(u,l,c,f,s))}e.push(n)}for(;n=e.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},s.x=function(t){return arguments.length?(this._x=t,this):this._x},s.y=function(t){return arguments.length?(this._y=t,this):this._y}},64385:(t,n,r)=>{r.d(n,{A:()=>i});var e=r(17434);function i(t){var n,r,i,o=(0,e.A)(.1);function u(t){for(var e,o=0,u=n.length;o<u;++o)e=n[o],e.vy+=(i[o]-e.y)*r[o]*t}function a(){if(n){var e,u=n.length;for(e=0,r=Array(u),i=Array(u);e<u;++e)r[e]=isNaN(i[e]=+t(n[e],e,n))?0:+o(n[e],e,n)}}return"function"!=typeof t&&(t=(0,e.A)(null==t?0:+t)),u.initialize=function(t){n=t,a()},u.strength=function(t){return arguments.length?(o="function"==typeof t?t:(0,e.A)(+t),a(),u):o},u.y=function(n){return arguments.length?(t="function"==typeof n?n:(0,e.A)(+n),a(),u):t},u}},79176:(t,n,r)=>{r.d(n,{A:()=>h});var e=r(53891),i=r(17434),o=r(93958);function u(t){return t.x+t.vx}function a(t){return t.y+t.vy}function h(t){var n,r,h,f=1,s=1;function l(){for(var t,i,l,x,v,y,d,g=n.length,_=0;_<s;++_)for(t=0,i=(0,e.A)(n,u,a).visitAfter(c);t<g;++t)d=(y=r[(l=n[t]).index])*y,x=l.x+l.vx,v=l.y+l.vy,i.visit(p);function p(t,n,r,e,i){var u=t.data,a=t.r,s=y+a;if(u){if(u.index>l.index){var c=x-u.x-u.vx,g=v-u.y-u.vy,_=c*c+g*g;_<s*s&&(0===c&&(_+=(c=(0,o.A)(h))*c),0===g&&(_+=(g=(0,o.A)(h))*g),_=(s-(_=Math.sqrt(_)))/_*f,l.vx+=(c*=_)*(s=(a*=a)/(d+a)),l.vy+=(g*=_)*s,u.vx-=c*(s=1-s),u.vy-=g*s)}return}return n>x+s||e<x-s||r>v+s||i<v-s}}function c(t){if(t.data)return t.r=r[t.data.index];for(var n=t.r=0;n<4;++n)t[n]&&t[n].r>t.r&&(t.r=t[n].r)}function x(){if(n){var e,i,o=n.length;for(e=0,r=Array(o);e<o;++e)r[(i=n[e]).index]=+t(i,e,n)}}return"function"!=typeof t&&(t=(0,i.A)(null==t?1:+t)),l.initialize=function(t,r){n=t,h=r,x()},l.iterations=function(t){return arguments.length?(s=+t,l):s},l.strength=function(t){return arguments.length?(f=+t,l):f},l.radius=function(n){return arguments.length?(t="function"==typeof n?n:(0,i.A)(+n),x(),l):t},l}},93958:(t,n,r)=>{r.d(n,{A:()=>e});function e(t){return(t()-.5)*1e-6}},98766:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(17434),i=r(93958);function o(t){return t.index}function u(t,n){var r=t.get(n);if(!r)throw Error("node not found: "+n);return r}function a(t){var n,r,a,h,f,s,l=o,c=function(t){return 1/Math.min(h[t.source.index],h[t.target.index])},x=(0,e.A)(30),v=1;function y(e){for(var o=0,u=t.length;o<v;++o)for(var a,h,l,c,x,y,d,g=0;g<u;++g)h=(a=t[g]).source,y=((y=Math.sqrt((c=(l=a.target).x+l.vx-h.x-h.vx||(0,i.A)(s))*c+(x=l.y+l.vy-h.y-h.vy||(0,i.A)(s))*x))-r[g])/y*e*n[g],c*=y,x*=y,l.vx-=c*(d=f[g]),l.vy-=x*d,h.vx+=c*(d=1-d),h.vy+=x*d}function d(){if(a){var e,i,o=a.length,s=t.length,c=new Map(a.map((t,n)=>[l(t,n,a),t]));for(e=0,h=Array(o);e<s;++e)(i=t[e]).index=e,"object"!=typeof i.source&&(i.source=u(c,i.source)),"object"!=typeof i.target&&(i.target=u(c,i.target)),h[i.source.index]=(h[i.source.index]||0)+1,h[i.target.index]=(h[i.target.index]||0)+1;for(e=0,f=Array(s);e<s;++e)i=t[e],f[e]=h[i.source.index]/(h[i.source.index]+h[i.target.index]);n=Array(s),g(),r=Array(s),_()}}function g(){if(a)for(var r=0,e=t.length;r<e;++r)n[r]=+c(t[r],r,t)}function _(){if(a)for(var n=0,e=t.length;n<e;++n)r[n]=+x(t[n],n,t)}return null==t&&(t=[]),y.initialize=function(t,n){a=t,s=n,d()},y.links=function(n){return arguments.length?(t=n,d(),y):t},y.id=function(t){return arguments.length?(l=t,y):l},y.iterations=function(t){return arguments.length?(v=+t,y):v},y.strength=function(t){return arguments.length?(c="function"==typeof t?t:(0,e.A)(+t),g(),y):c},y.distance=function(t){return arguments.length?(x="function"==typeof t?t:(0,e.A)(+t),_(),y):x},y}}}]);
|