trybeacon 0.1.39 → 0.1.41
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 +13 -11
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/routes-manifest.json +12 -0
- package/.next/server/app/_global-error/page.js +2 -2
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +23 -22
- package/.next/server/app/_not-found.segments/_full.segment.rsc +23 -22
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +12 -11
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/api/board-annotations/[id]/route.js +1 -1
- package/.next/server/app/api/board-annotations/route.js +1 -1
- package/.next/server/app/api/board-layout/route.js +1 -1
- package/.next/server/app/api/bug-flags/[id]/route.js +1 -1
- package/.next/server/app/api/bug-flags/route.js +1 -1
- package/.next/server/app/api/code-graph/position/route.js +1 -1
- package/.next/server/app/api/code-graph/route.js +1 -1
- package/.next/server/app/api/context/feature/route.js +1 -1
- package/.next/server/app/api/context/file/route.js +1 -1
- package/.next/server/app/api/context/route.js +2 -2
- package/.next/server/app/api/db/arrange/route.js +1 -1
- package/.next/server/app/api/db/backfill-access/route.js +1 -1
- package/.next/server/app/api/db/position/route.js +1 -1
- package/.next/server/app/api/db/prune-planned/route.js +1 -1
- package/.next/server/app/api/db/reconcile-endpoints/route.js +1 -1
- package/.next/server/app/api/db/relations/[id]/route.js +1 -1
- package/.next/server/app/api/db/tables/[id]/route.js +1 -1
- package/.next/server/app/api/draft/approve/route.js +1 -1
- package/.next/server/app/api/draft/route.js +1 -1
- package/.next/server/app/api/draft/status/route.js +1 -1
- package/.next/server/app/api/edges/[id]/route.js +1 -1
- package/.next/server/app/api/edges/route.js +1 -1
- package/.next/server/app/api/endpoints/[id]/route.js +1 -1
- package/.next/server/app/api/entities/route.js +1 -1
- package/.next/server/app/api/feedback/[id]/route.js +1 -1
- package/.next/server/app/api/feedback/[id]/vote/route.js +1 -1
- package/.next/server/app/api/feedback/route.js +1 -1
- package/.next/server/app/api/ingest/route.js +2 -2
- package/.next/server/app/api/init/route.js +2 -2
- package/.next/server/app/api/map/describe/route.js +2 -2
- package/.next/server/app/api/map/files/route.js +1 -1
- package/.next/server/app/api/map/finish/route.js +1 -1
- package/.next/server/app/api/map/route.js +1 -1
- package/.next/server/app/api/map/start/route.js +1 -1
- package/.next/server/app/api/map/touch-active/route.js +1 -1
- package/.next/server/app/api/nodes/[id]/position/route.js +1 -1
- package/.next/server/app/api/nodes/[id]/route.js +1 -1
- package/.next/server/app/api/nodes/positions/route.js +1 -1
- package/.next/server/app/api/nodes/route.js +1 -1
- package/.next/server/app/api/nodes/subtasks/route.js +1 -1
- package/.next/server/app/api/notes/[id]/route.js +1 -1
- package/.next/server/app/api/notes/route.js +1 -1
- package/.next/server/app/api/open/route.js +1 -1
- package/.next/server/app/api/plan/annotations/route.js +2 -2
- package/.next/server/app/api/plan/approve/route.js +2 -2
- package/.next/server/app/api/plan/history/route.js +1 -1
- package/.next/server/app/api/plan/markdown/route.js +1 -1
- package/.next/server/app/api/plan/presence/route.js +1 -1
- package/.next/server/app/api/plan/route.js +1 -1
- package/.next/server/app/api/plan/verdict/route.js +1 -1
- package/.next/server/app/api/preferences/route.js +1 -1
- package/.next/server/app/api/project-meta/route.js +1 -1
- package/.next/server/app/api/reset/route.js +1 -1
- package/.next/server/app/api/stream/route.js +2 -2
- package/.next/server/app/api/tab/nav/route.js +1 -0
- package/.next/server/app/api/tab/nav/route.js.nft.json +1 -0
- package/.next/server/app/api/tab/nav/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/tab/presence/route.js +1 -0
- package/.next/server/app/api/tab/presence/route.js.nft.json +1 -0
- package/.next/server/app/api/tab/presence/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/telemetry/route.js +1 -1
- package/.next/server/app/api/telemetry/stats/route.js +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/api/workspace/activate/route.js +1 -1
- package/.next/server/app/api/workspace/route.js +1 -1
- package/.next/server/app/apple-icon.png/route.js +1 -1
- package/.next/server/app/docs/page.js +2 -2
- package/.next/server/app/docs/page.js.nft.json +1 -1
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +24 -23
- package/.next/server/app/docs.segments/_full.segment.rsc +24 -23
- package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/docs.segments/_index.segment.rsc +12 -11
- package/.next/server/app/docs.segments/_tree.segment.rsc +1 -1
- 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 +27 -26
- package/.next/server/app/feedback.segments/_full.segment.rsc +27 -26
- package/.next/server/app/feedback.segments/_head.segment.rsc +1 -1
- package/.next/server/app/feedback.segments/_index.segment.rsc +12 -11
- package/.next/server/app/feedback.segments/_tree.segment.rsc +1 -1
- 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 +32 -30
- package/.next/server/app/help.segments/_full.segment.rsc +32 -30
- package/.next/server/app/help.segments/_head.segment.rsc +1 -1
- package/.next/server/app/help.segments/_index.segment.rsc +12 -11
- package/.next/server/app/help.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/help.segments/help.segment.rsc +1 -1
- package/.next/server/app/icon.svg/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +22 -21
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/index.segments/_full.segment.rsc +22 -21
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +12 -11
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/map/page.js +2 -2
- package/.next/server/app/map/page.js.nft.json +1 -1
- package/.next/server/app/map/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/plan/page.js +2 -2
- package/.next/server/app/plan/page.js.nft.json +1 -1
- package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +2 -2
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +13 -11
- package/.next/server/chunks/4307.js +1 -0
- package/.next/server/chunks/4419.js +1 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{1237-9d3991189a7950bf.js → 1726-cfa1c45735118a49.js} +1 -1
- package/.next/static/chunks/app/_global-error/page-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/board-annotations/[id]/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/board-annotations/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/board-layout/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/bug-flags/[id]/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/bug-flags/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/code-graph/position/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/code-graph/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/context/feature/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/context/file/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/context/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/db/arrange/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/db/backfill-access/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/db/position/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/db/prune-planned/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/db/relations/[id]/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/db/tables/[id]/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/draft/approve/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/draft/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/draft/status/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/edges/[id]/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/edges/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/endpoints/[id]/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/entities/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/feedback/[id]/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/feedback/[id]/vote/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/feedback/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/ingest/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/init/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/map/describe/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/map/files/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/map/finish/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/map/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/map/start/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/map/touch-active/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/position/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/nodes/positions/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/nodes/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/nodes/subtasks/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/notes/[id]/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/notes/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/open/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/plan/annotations/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/plan/approve/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/plan/history/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/plan/markdown/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/plan/presence/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/plan/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/plan/verdict/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/preferences/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/project-meta/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/reset/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/stream/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/tab/nav/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/tab/presence/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/telemetry/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/telemetry/stats/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/version/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/workspace/activate/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/api/workspace/route-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/app/layout-1c0e0a0b09f3bede.js +1 -0
- package/.next/static/chunks/app/map/{page-0b80331a4e6a28d1.js → page-2c29809f6e747ed0.js} +1 -1
- package/.next/static/chunks/app/plan/page-15563f68be095be8.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-16ca2ed05a1d74d1.js +1 -0
- package/.next/static/d7yMlZAE4rxhUZzJXRGvS/_buildManifest.js +1 -0
- package/.next/trace +38 -38
- package/.next/trace-build +1 -1
- package/.next/types/app/api/tab/nav/route.ts +351 -0
- package/.next/types/app/api/tab/presence/route.ts +351 -0
- package/.next/types/routes.d.ts +3 -1
- package/.next/types/validator.ts +18 -0
- package/dist/bin/beacon.js +13 -12
- package/dist/bin/hook.js +18 -18
- package/dist/bin/mcp.js +31 -31
- package/dist/bin/plan.js +13 -13
- package/dist/lib/daemon-port.js +2 -0
- package/package.json +1 -1
- package/.next/server/chunks/3015.js +0 -1
- package/.next/server/chunks/7844.js +0 -1
- package/.next/static/FcKcgfUAfLhrW5iXsBe6p/_buildManifest.js +0 -1
- package/.next/static/chunks/app/_global-error/page-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/board-annotations/[id]/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/board-annotations/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/board-layout/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/bug-flags/[id]/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/bug-flags/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/code-graph/position/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/code-graph/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/context/feature/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/context/file/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/context/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/db/arrange/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/db/backfill-access/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/db/position/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/db/prune-planned/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/db/relations/[id]/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/db/tables/[id]/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/draft/approve/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/draft/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/draft/status/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/edges/[id]/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/edges/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/endpoints/[id]/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/entities/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/feedback/[id]/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/feedback/[id]/vote/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/feedback/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/ingest/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/init/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/map/describe/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/map/files/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/map/finish/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/map/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/map/start/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/map/touch-active/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/position/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/nodes/positions/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/nodes/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/nodes/subtasks/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/notes/[id]/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/notes/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/open/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/plan/annotations/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/plan/approve/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/plan/history/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/plan/markdown/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/plan/presence/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/plan/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/plan/verdict/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/preferences/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/project-meta/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/reset/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/stream/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/telemetry/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/telemetry/stats/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/version/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/workspace/activate/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/api/workspace/route-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/app/layout-9b750c41268879f0.js +0 -1
- package/.next/static/chunks/app/plan/page-6f5b996737bcedc4.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-f0868dfbc3f7bf63.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-f0868dfbc3f7bf63.js +0 -1
- /package/.next/static/{FcKcgfUAfLhrW5iXsBe6p → d7yMlZAE4rxhUZzJXRGvS}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=4419,exports.ids=[4419],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,"405627b9eeed46adf3e5eacd9e0d973beb1dbc4d1c",null),(0,e.A)(p,"603dccb642b462d4d57c73674dd721cbab098b0d87",null),(0,e.A)(q,"60f54eee2865724c7ed99a0531a728b139b7e65a63",null),(0,e.A)(r,"40591af608ce0a1b6082bac561dc8e9f301869d97b",null),(0,e.A)(s,"404f68d337a1b7970bc2a2c0122799240ae05b471e",null),(0,e.A)(t,"40c373e8c7e0291ca625e6c13669b17cd09ea4aa92",null),(0,e.A)(u,"402584e6cffe33a5b73ce6a887d1d9e5a898c6a814",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:()=>ap});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 bottom-3 right-3 z-10 flex w-80 flex-col rounded-2xl",style:{top:o??12},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:"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);function Y(a){return 36+30*Math.max(0,a)+16}let Z="Unattached",$=a=>(a??"").trim()||"—";function _(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 aa=(a,b)=>a.path.localeCompare(b.path)||a.method.localeCompare(b.method)||a.id.localeCompare(b.id);var ab=c(67637);let ac=a=>a.trim().toLowerCase();var ad=c(15828),ae=c(30170),af=c(10920),ag=c(95744),ah=c(10758),ai=c(69680),aj=c(35471),ak=c(82145);let al={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-[240px] 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",{className:"truncate font-mono text-[13px]",children:b.path})]}):(0,d.jsxs)("div",{className:(0,o.cn)("group relative flex w-[240px] 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,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",{className:"min-w-0 flex-1 truncate font-mono text-[11px]",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},am={deletable:ak.I},an="beacon:db-draft",ao={proposedAt:0,status:"pending",tables:[],relations:[],endpoints:[]};function ap({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}){let E=(0,f.useRouter)(),[F,H]=(0,e.useState)(!1),[I,J]=(0,e.useState)(null),[K,M]=(0,e.useState)(null),[N,O]=(0,e.useState)(null),[P,Q]=(0,e.useState)(!1),[R,ak]=(0,e.useState)("details"),[aq,ar]=(0,e.useState)(!1),[as,at]=(0,e.useState)(""),au=(0,e.useRef)(null),[av,aw]=(0,e.useState)(new Set),[ax,ay]=(0,e.useState)("full"),[az,aA]=(0,e.useState)(new Set),[aB,aC]=(0,e.useState)(new Set),[aD,aE]=(0,e.useState)(()=>({past:[],present:i??ao,future:[],rev:0,edited:!1})),aF=aD.present,aG=(0,e.useCallback)(a=>{aE(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}})},[]),aH=(0,e.useCallback)(a=>{aE(b=>{let c=a(b.present);return c===b.present?b:{...b,present:c}})},[]),aI=(0,e.useCallback)(()=>aE(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),[]),aJ=(0,e.useCallback)(()=>aE(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),[]),aK=(0,e.useCallback)(a=>aE(b=>({past:[],present:a,future:[],rev:b.rev+1,edited:!1})),[]);(0,e.useRef)(!1),i?.proposedAt,(0,e.useRef)(!1);let aL=(0,e.useMemo)(()=>aF.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})),[aF]),aM=(0,e.useMemo)(()=>aF.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}))})),[aF]),aN=(0,e.useMemo)(()=>[...a,...aL],[a,aL]),aO=(0,e.useMemo)(()=>[...c,...aM],[c,aM]),aP=(0,e.useMemo)(()=>(function(a,b){let c=_(a,b),d=new Map,e=[];for(let a of[...b].sort(aa)){let b=c.get(a.id)??null;if(b){let c=d.get(b);c?c.push(a):d.set(b,[a])}else e.push(a)}let f=a=>{let b=d.get(a.id)?.length??0;return Y(a.columnCount)+(b?14+60*b:0)+50},g=Array.from(new Set(a.map(a=>$(a.domain)))),h=g.filter(a=>"—"!==a).sort(),i=g.includes("—")?[...h,"—"]:h,j=[];for(let b of i){let c=a.filter(a=>$(a.domain)===b).sort((a,b)=>a.name.localeCompare(b.name)),d=c.reduce((a,b)=>a+f(b),0),e=Math.max(1,Math.min(12,c.length,Math.round(Math.sqrt(d/320)))),g=Array(e).fill(0),h=new Map;for(let a of c){let b=0;for(let a=1;a<e;a++)g[a]<g[b]&&(b=a);h.set(a.id,{x:320*b,y:g[b]}),g[b]+=f(a)}j.push({d:b,w:320*e,h:Math.max(...g,0),tableLocal:h})}let k=Math.max(2560,Math.round(Math.sqrt(2.2*j.reduce((a,b)=>a+(b.w+120)*(b.h+170),0)))),l=new Map,m=new Map,n=0,o=0,p=0,q=0;for(let b of j){for(let c of(n>0&&n+b.w>k&&(o+=p+170,n=0,p=0),a.filter(a=>b.tableLocal.has(a.id)))){let a=b.tableLocal.get(c.id),e=n+a.x,f=o+a.y;l.set(c.id,{x:e,y:f}),(d.get(c.id)??[]).forEach((a,b)=>{m.set(a.id,{x:e,y:f+Y(c.columnCount)+14+60*b})})}p=Math.max(p,b.h),q=Math.max(q,o+b.h),n+=b.w+120}if(e.length){let a=q+170,b=Math.max(1,Math.min(4,Math.ceil(Math.sqrt(e.length/2))));e.forEach((c,d)=>{m.set(c.id,{x:d%b*280,y:a+60*Math.floor(d/b)})})}return{tables:l,endpoints:m}})(aN.map(a=>({id:a.id,name:a.name,domain:a.domain,columnCount:a.columns.length})),[]).tables,[aN]),aQ=(0,e.useMemo)(()=>new Map,[]),aR=(0,e.useMemo)(()=>k?function(a,b){let c=new Map(a.map(a=>[ac(a.name),a])),d=new Map;for(let a of b){let b=c.get(ac(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=>[ac(a.name),a])),d=new Set(b.map(a=>ac(a.name))),e=[],f={};for(let a of b){let b=c.get(ac(a.name));if(!b){e.push(`+ column ${a.name} (${a.type})`),f[a.name]="added";continue}let d=[];ac(b.type)!==ac(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(ac(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,aL):aQ,[k,m,a,aL,aQ]),aS=(0,e.useMemo)(()=>k?function(a,b){let c=a=>`${ac(a.method)} ${ac(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,aM):aQ,[k,m,c,aM,aQ]),aT=(0,e.useMemo)(()=>[...b,...aF.relations.map(a=>({id:a.id,fromTableId:a.fromTableId,toTableId:a.toTableId,fromColumn:a.fromColumn,toColumn:a.toColumn,label:a.label}))],[b,aF.relations]),aU=(0,e.useMemo)(()=>{let a=new Map;for(let b of aO)for(let c of b.tables)a.set(c.tableId,(a.get(c.tableId)??0)+1);return a},[aO]),aV=(0,e.useMemo)(()=>{let a=new Map;return aN.forEach(b=>a.set(b.id,b.x)),aO.forEach(b=>a.set(b.id,b.x)),a},[aN,aO]),aW=(0,e.useMemo)(()=>{let a=new Map(aN.map(a=>[a.id,a.name])),b=new Map;for(let c of aT){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},[aT,aN]),aX=void 0!==D,[aY,aZ]=(0,e.useState)(D??[]),a$=(0,e.useMemo)(()=>({tables:aN.map(a=>({id:a.id,name:a.name,columns:a.columns.map(a=>a.name)})),endpoints:aO.map(a=>({id:a.id,method:a.method,path:a.path}))}),[aN,aO]),a_=(0,e.useMemo)(()=>{if(aX){let a=new Set([...aN.map(a=>a.id),...aO.map(a=>a.id)]);return aY.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??[],a$).map(b=>({id:b.annotationId,n:b.n,targetId:b.targetId,column:b.column,text:a.get(b.annotationId)??"",x:null,y:null}))},[aX,aY,z,a$,aN,aO]),a0=(0,e.useMemo)(()=>{let a=new Map;for(let b of a_){let c=a.get(b.targetId)??[];c.push({id:b.id,n:b.n,column:b.column}),a.set(b.targetId,c)}return a},[a_]),a1=(0,e.useMemo)(()=>new Map(a_.map(a=>[`anno-${a.id}`,a.targetId])),[a_]),a2=(0,e.useCallback)(async a=>{let b=(0,G.m)([{id:"_",excerpt:a}],a$)[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();aZ(b=>[...b,a])}},[a$]),a3=(0,e.useCallback)((a,b)=>{aZ(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)})},[]),a4=(0,e.useCallback)(a=>{aZ(b=>b.filter(b=>b.id!==a)),fetch(`/api/board-annotations/${a}`,{method:"DELETE"})},[]),a5=aX?a2:y,a6=(0,e.useCallback)((a,b)=>(aV.get(a)??0)<=(aV.get(b)??0)?{sourceHandle:"sr",targetHandle:"tl"}:{sourceHandle:"sl",targetHandle:"tr"},[aV]),a7=(0,e.useMemo)(()=>new Set([...aF.tables.map(a=>a.id),...aF.endpoints.map(a=>a.id)]),[aF]),a8=(0,e.useMemo)(()=>new Set(a.map(a=>a.id)),[a]),a9=(0,e.useCallback)(()=>{let a=aN.map(a=>({id:a.id,type:"dbTable",position:F?{x:a.x,y:a.y}:aP.get(a.id)??{x:a.x,y:a.y},data:{name:a.name,domain:a.domain,columns:a.columns,usageCount:aU.get(a.id)??0,source:a.source,rev:aD.rev,diffStatus:aR.get(a.id)?.status,diffChanges:aR.get(a.id)?.changes,diffColumns:aR.get(a.id)?.columns,fkTargets:aW.get(a.id),pins:a0.get(a.id),onPinClick:A,onComment:a5}})),b=aO.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:aD.rev,diffStatus:aS.get(a.id)?.status,diffChanges:aS.get(a.id)?.changes,pins:a0.get(a.id),onPinClick:A,onComment:a5}})),c=new Map,d=new Map(aN.map(a=>[a.id,a])),e=new Map(aO.map(a=>[a.id,a]));return[...a,...b,...a_.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:aX||B?void 0:A,editable:aX||!!B,onChangeText:aX?(a,b)=>a3(a,{body:b}):B,onDelete:aX?a4:C}}})]},[aN,aO,F,aP,aU,aD.rev,aR,aS,aW,a0,a_,aX,A,B,C,a5,a3,a4]),[ba,bb,bc]=(0,g.ck)(a9());(0,e.useRef)(F);let bd=(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})})},[]),be=(0,e.useCallback)((a,b)=>{let{x:c,y:d}=b.position;if(b.id.startsWith("anno-")){aX&&a3(b.id.slice(5),{x:c,y:d});return}a7.has(b.id)?aH(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):bd("endpoint"===b.type?"endpoint":"table",b.id,c,d)},[a7,aH,bd,aX,a3]),bf=(0,e.useMemo)(()=>aT.map(a=>({id:`fk-${a.id}`,source:a.fromTableId,target:a.toTableId,...a6(a.fromTableId,a.toTableId),type:"deletable",label:a.label??void 0,markerEnd:{type:h.TG.ArrowClosed,color:"#6b6b6b"},style:{stroke:"#6b6b6b"}})),[aT,a6]),bg=(0,e.useMemo)(()=>aO.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,...a6(a.id,b.tableId),type:"default",markerEnd:{type:h.TG.ArrowClosed,color:c},style:{stroke:c,strokeDasharray:"4 4",opacity:.7}}})),[aO,a6]),bh=(0,e.useMemo)(()=>F?[...bf,...bg]:bf,[bf,bg,F]),bi=(0,e.useMemo)(()=>a_.map(a=>({id:`annoe-${a.id}`,source:a.targetId,sourceHandle:`pin-${a.id}`,target:`anno-${a.id}`,targetHandle:"in",type:"default",selectable:!1,zIndex:30,style:{stroke:v.V5,strokeWidth:1.5,opacity:.9}})),[a_]),bj=I?.id??N,bk=(0,e.useMemo)(()=>{if(K){let a=bh.find(a=>a.id===K);return a?new Set([a.source,a.target]):null}return bj?(0,p.F1)(bj,bh):null},[bj,K,bh]),bl=(0,e.useMemo)(()=>new Map(aN.map(a=>[a.id,{domain:a.domain,source:a.source}])),[aN]),bm=(0,e.useMemo)(()=>new Map(aO.map(a=>[a.id,{method:a.method,source:a.source}])),[aO]),bn=(0,e.useMemo)(()=>{let a=new Set;if(!F)for(let b of bm.keys())a.add(b);for(let[b,c]of bl)!av.size||c.domain&&av.has(c.domain)||a.add(b),az.size&&!az.has(c.source)&&a.add(b);for(let[b,c]of bm)aB.size&&!aB.has(c.method)&&a.add(b),az.size&&!az.has(c.source)&&a.add(b);return a},[F,bl,bm,av,az,aB]),bo=as.trim().length>0,bp=(0,e.useMemo)(()=>{if(!bo)return null;let a=new Set;for(let b of aN)!bn.has(b.id)&&(0,U.Qk)((0,U.jF)(b),as)&&a.add(b.id);for(let b of aO)!bn.has(b.id)&&(0,U.Qk)((0,U.sQ)(b),as)&&a.add(b.id);return a},[aN,aO,bn,as,bo]),bq=(0,e.useMemo)(()=>bo?[...(0,U.r2)(aN.filter(a=>!bn.has(a.id)),as,a=>(0,U.jF)(a),a=>({id:a.id,label:a.name,sublabel:a.domain??"table",kind:"table"})),...(0,U.r2)(aO.filter(a=>!bn.has(a.id)),as,a=>(0,U.sQ)(a),a=>({id:a.id,label:a.path,sublabel:a.method,kind:"endpoint"}))].slice(0,12):[],[aN,aO,bn,as,bo]),br=(0,e.useCallback)(a=>{at(""),J(bm.has(a)?{id:a,kind:"endpoint"}:{id:a,kind:"table"}),M(null),Q(!0),ak("details");let b=au.current?.getNode(a);if(!b||!au.current)return;let c=b.measured?.width??220,d=b.measured?.height??80;au.current.setCenter(b.position.x+c/2,b.position.y+d/2,{zoom:.9,duration:600})},[bm]),bs=bp??bk,bt=(0,e.useMemo)(()=>ba.map(a=>{if(a.id.startsWith("anno-")){let b=a1.get(a.id),c=!!b&&bn.has(b);return!!a.hidden!==c?{...a,hidden:c}:a}let b=bn.has(a.id);if(!bs)return b?{...a,hidden:b}:a;let c=bs.has(a.id),d=bp?U.Uy:.45;return{...a,hidden:b,style:{...a.style,opacity:c?1:d,boxShadow:c&&bp?U.RU:a.style?.boxShadow,borderRadius:c&&bp?12:a.style?.borderRadius,transition:"opacity 120ms, box-shadow 120ms"}}}),[ba,bn,bs,bp,a1]),bu=(0,e.useMemo)(()=>{let a=new Map(aN.map(a=>[a.id,(a.domain??"").trim()||"—"])),b=_(aN,aO.map(a=>({id:a.id,method:a.method,path:a.path,uses:a.tables.map(a=>({tableId:a.tableId}))})));return new Map(aO.map(c=>{let d=b.get(c.id);return[c.id,d?a.get(d):Z]}))},[aN,aO]),bv=(0,e.useMemo)(()=>{let a=[];for(let b of ba)if(!bn.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:bu.get(b.id)??Z,x:b.position.x,y:b.position.y,w:b.measured?.width??240,h:b.measured?.height??50});return(0,X.S)(a)},[ba,bn,bu]),bw=(0,e.useMemo)(()=>bp?bh.map(a=>{let b=bn.has(a.source)||bn.has(a.target);return bp.has(a.source)&&bp.has(a.target)?{...a,hidden:b,style:{...a.style,opacity:1}}:{...a,hidden:b,label:void 0,style:{...a.style,opacity:.08}}}):bh.map(a=>{let b=bn.has(a.source)||bn.has(a.target);return bj||K?(K?a.id===K:bj&&(a.source===bj||a.target===bj))?{...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}}),[bh,bj,K,bn,bp]),bx=(0,e.useMemo)(()=>Array.from(new Set(aN.map(a=>a.domain).filter(a=>!!a))).sort(),[aN]),by=(0,e.useMemo)(()=>Array.from(new Set([...aN.map(a=>a.source),...aO.map(a=>a.source)])).sort(),[aN,aO]),bz=(0,e.useMemo)(()=>Array.from(new Set(aO.map(a=>a.method))).sort(),[aO]);function bA(a,b){b(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})}let bB=+!F+av.size+az.size+aB.size,bC=(0,e.useCallback)(()=>{H(!0),aw(new Set),aA(new Set),aC(new Set)},[]),bD=(0,e.useCallback)(a=>{let{source:b,target:c}=a;b&&c&&b!==c&&aG(a=>{if(!(a.tables.some(a=>a.id===c)||a8.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})},[aG,a8]),bE=(0,e.useMemo)(()=>({patchEndpoint:(a,b)=>aG(c=>({...c,endpoints:c.endpoints.map(c=>c.id===a?{...c,...b}:c)})),deleteEndpoint:a=>aG(b=>({...b,endpoints:b.endpoints.filter(b=>b.id!==a)})),patchTable:(a,b)=>aG(c=>({...c,tables:c.tables.map(c=>c.id===a?{...c,...b}:c)})),deleteTable:a=>aG(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&&E.refresh()})}}),[aG,E]),bF=(0,e.useCallback)(async()=>{ar(!0);try{if((await fetch("/api/draft/approve",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(aF)})).ok){try{localStorage.removeItem(an)}catch{}aK(ao),E.refresh()}}finally{ar(!1)}},[aF,aK,E]),bG=(0,e.useCallback)(async()=>{ar(!0);try{await fetch("/api/draft",{method:"DELETE"})}catch{}try{localStorage.removeItem(an)}catch{}aK(ao),E.refresh(),ar(!1)},[aK,E]),bH=(0,e.useMemo)(()=>{let a;return a=new Map(aF.tables.map(a=>[a.id,a.name])),{tables:aF.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:aF.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:aF.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}]:[]})}))}},[aF]),bI=aF.tables.length>0||aF.endpoints.length>0,bJ=aD.past.length>0,bK=aD.future.length>0;return(0,d.jsx)(q.Provider,{value:bE,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:bt,edges:"far"===ax?[...bw,...bi].map(a=>({...a,hidden:!0})):[...bw,...bi.map(a=>({...a,hidden:bn.has(a.source)}))],nodeTypes:al,edgeTypes:am,connectionMode:h.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onInit:a=>{au.current=a},onNodesChange:bc,onConnect:bD,onNodeMouseEnter:(a,b)=>{"annotation"!==b.type&&O(b.id)},onNodeMouseLeave:()=>O(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";J({id:b.id,kind:c}),M(null),Q(!0),ak("details")},onEdgeClick:(a,b)=>{M(b.id),J(null)},onPaneClick:()=>{J(null),M(null)},onNodeDragStop:be,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-")||a7.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:["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)(ab.Z,{regions:bv,tone:"category",lod:ax}),(0,d.jsx)(s.J,{onLod:ay,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:"!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:aq,title:"Re-arrange the board — domain clusters with endpoints docked under their tables",onClick:async()=>{ar(!0);try{await fetch("/api/db/arrange",{method:"POST"}),E.refresh()}finally{ar(!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)(ad.A,{className:"size-3"}),aq?"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",P&&"!mr-[332px]",k&&"hidden"),children:[(0,d.jsx)(T.X,{query:as,onQuery:at,hits:bq,placeholder:"Find a table, column, endpoint…",onPick:br,onZoomToMatches:()=>{bp?.size&&au.current?.fitView({nodes:[...bp].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||bB>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,d.jsx)(ae.A,{className:"size-4"}),bB>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:bB})]}),children:[(0,d.jsx)(S.r1,{title:"Show",children:(0,d.jsx)(S.vu,{tone:"accent",on:F,onClick:()=>H(a=>!a),children:"endpoints"})}),bx.length>0&&(0,d.jsx)(S.r1,{title:"Domain",children:bx.map(a=>(0,d.jsx)(S.vu,{on:av.has(a),onClick:()=>bA(a,aw),children:a},a))}),bz.length>0&&(0,d.jsx)(S.r1,{title:"Method",children:bz.map(a=>(0,d.jsx)(S.vu,{on:aB.has(a),onClick:()=>bA(a,aC),children:a},a))}),by.length>0&&(0,d.jsx)(S.r1,{title:"Source",children:by.map(a=>(0,d.jsx)(S.vu,{on:az.has(a),onClick:()=>bA(a,aA),children:a.toLowerCase()},a))}),bB>0&&(0,d.jsx)("button",{type:"button",onClick:bC,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)(af.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",{"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"})]})]})}),!P&&(0,d.jsx)("button",{onClick:()=>Q(!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)(ag.A,{className:"size-4"})})]}),bI&&(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:aI,disabled:!bJ,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)(ah.A,{className:"size-3.5"})," undo"]}),(0,d.jsxs)("button",{onClick:aJ,disabled:!bK,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)(ai.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:bG,disabled:aq,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:bF,disabled:aq,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)(aj.A,{className:"size-3.5"})," approve draft"]})]})]})]}),P&&(0,d.jsx)(L,{selected:I,tables:aN,relations:aT,endpoints:aO,draftGraph:bH,onClose:()=>{Q(!1),ak("details")},commentsContent:w,commentsCount:x,activeTab:R,onTabChange:ak,onAddComment:a5,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)}})},15987:(a,b,c)=>{c.d(b,{MapClient:()=>aJ});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(90498),o=c(30170),p=c(95744),q=c(19099),r=c(1229),s=c(58720),t=c(99829);let u=(0,t.createServerReference)("402584e6cffe33a5b73ce6a887d1d9e5a898c6a814",t.callServer,void 0,t.findSourceMapURL,"acceptSuggestionAction");var v=c(85205),w=c(9880),x=c(49783),y=c(25148),z=c(24422),A=c(47578),B=c(97432),C=c(47352),D=c(35471),E=c(45535),F=c(57684),G=c(83394),H=c(55056);let I=["PENDING","IN_PROGRESS","DONE","BLOCKED","CANCELLED","DEPRIORITIZED"],J=["KEEP","REBUILD","REPLACE","DROP"],K=["IN_PROGRESS","PENDING","BLOCKED","DONE","DEPRIORITIZED","CANCELLED"],L={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"}};var M=c(78103),N=c(33346);let O=(0,e.createContext)(null);function P(){let a=(0,e.useContext)(O);if(!a)throw Error("useNodeEdit must be used inside NodeEditContext");return a}var Q=c(50605),R=c(2942),S=c(33191);let T=[{v:0,l:"P0 \xb7 critical"},{v:1,l:"P1 \xb7 high"},{v:2,l:"P2 \xb7 medium"},{v:3,l:"P3 \xb7 low"}],U="nodrag nopan";function V({layer:a}){let b=(0,M.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,M.A6)(b)}}):null}function W({layer:a}){let b=(0,M.jR)(a);if(!b)return null;let c=M.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)(v.A,{className:"size-2.5"}),"frontend"!==b&&(0,d.jsx)(w.A,{className:"size-2.5"}),c.short]})}function X({nodeId:a}){let b=(0,q.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,S.cn)(U,"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,S.cn)(U,"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 Y=["border-[#ff3860]/60 shadow-[0_0_0_1px_rgba(255,56,96,0.15)]","border-[#ff7a45]/50","border-amber-400/35","border-border"];function Z({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:q}=P(),t=i(a),[v,w]=(0,e.useState)(!1),[I,J]=(0,e.useState)(!1),[K,O]=(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":Y[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,Q.k)();return"full"!==ao?(0,d.jsxs)("div",{className:(0,S.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)(r.x,{}),q&&(0,d.jsx)(V,{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,S.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",t?"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)]",c&&"ring-2 ring-[var(--accent,#f5b942)]",ag&&"opacity-60",ah&&"opacity-70 border-dashed"),children:[(0,d.jsx)(r.x,{}),q&&(0,d.jsx)(V,{layer:b.layer}),ad&&(0,d.jsx)(X,{nodeId:a}),(b.pins?.length??0)>0?(0,d.jsx)(s.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,S.cn)(U,"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)(x.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"}),(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:K,autoFocus:n===a,placeholder:"Title…",onFocus:b=>{n===a&&b.currentTarget.select()},onChange:a=>O(a.target.value),onBlur:()=>{let c=K.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,S.cn)(U,"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:t?"Collapse":"Expand",className:(0,S.cn)(U,"mt-0.5 shrink-0 text-muted-foreground hover:text-foreground"),children:t?(0,d.jsx)(y.A,{className:"size-3.5"}):(0,d.jsx)(z.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)(A.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)(B.A,{className:"size-2.5"})," auth"]})]}),b.role&&(0,d.jsx)("div",{className:(0,S.cn)("mt-0.5 w-0 min-w-full text-[10px] leading-snug text-muted-foreground",!t&&"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,S.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"]}),q&&(0,d.jsx)(W,{layer:b.layer}),ak&&(0,d.jsxs)("span",{className:(0,S.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)(C.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()=>u(a))},className:(0,S.cn)(U,"-my-0.5 rounded p-0.5 hover:bg-emerald-500/20 hover:text-emerald-300"),children:(0,d.jsx)(D.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,S.cn)(U,"-my-0.5 -ml-0.5 rounded p-0.5 hover:bg-red-500/20 hover:text-red-300"),children:(0,d.jsx)(E.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,S.cn)(U,"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,N.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"}),q&&(0,d.jsx)(W,{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,S.cn)(U,"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,N.a2)($))})]}),(0,d.jsx)("datalist",{id:`cats-${a}`,children:f.map(a=>(0,d.jsx)("option",{value:a},a))}),(0,d.jsxs)(H.l6,{value:b.status,onValueChange:b=>h(a,{status:b},!0),children:[(0,d.jsx)(H.bq,{className:(0,S.cn)(U,"ml-auto h-6 shrink-0 gap-1 rounded border px-1.5 py-0 text-[10px] font-medium",L[b.status]?.className??"border-white/10"),children:(0,d.jsx)(H.yv,{children:a=>L[a]?.label??a})}),(0,d.jsx)(H.gC,{alignItemWithTrigger:!1,children:g.map(a=>(0,d.jsx)(H.eb,{value:a,children:L[a]?.label??a},a))})]})]}),t&&(0,d.jsxs)("div",{className:"mt-2 w-0 min-w-full space-y-2 border-t border-white/10 pt-2",children:[I||!aa.trim()?(0,d.jsx)("textarea",{autoFocus:I,value:aa,placeholder:"Description (markdown)…",onChange:a=>ab(a.target.value),onBlur:()=>{J(!1);let c=aa.trim()||null;c!==(b.plain??null)&&h(a,{plain:c},!0)},onKeyDown:al,rows:3,className:(0,S.cn)(U,"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),J(!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)(R.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)(H.l6,{value:String(b.priority),onValueChange:b=>h(a,{priority:Number(b)},!0),children:[(0,d.jsx)(H.bq,{className:(0,S.cn)(U,"h-6 gap-1 rounded border-white/10 px-1.5 py-0 text-[10px]"),children:(0,d.jsx)(H.yv,{children:a=>T.find(b=>String(b.v)===a)?.l??a})}),(0,d.jsx)(H.gC,{alignItemWithTrigger:!1,children:T.map(a=>(0,d.jsx)(H.eb,{value:String(a.v),children:a.l},a.v))})]}),q&&(0,d.jsxs)(H.l6,{value:(0,M.jR)(b.layer)??"none",onValueChange:b=>h(a,{layer:"none"===b?null:b},!0),children:[(0,d.jsx)(H.bq,{title:"Which side of the stack this lands on",className:(0,S.cn)(U,"h-6 gap-1 rounded border-white/10 px-1.5 py-0 text-[10px]"),children:(0,d.jsx)(H.yv,{children:a=>"none"===a?"layer \xb7 —":M.YG[a]?.label??a})}),(0,d.jsxs)(H.gC,{alignItemWithTrigger:!1,children:[(0,d.jsx)(H.eb,{value:"none",children:"—"}),Object.entries(M.YG).map(([a,b])=>(0,d.jsx)(H.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),v?m(a):w(!0)},onBlur:()=>w(!1),title:"Delete node",className:(0,S.cn)(U,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] transition-colors",v?"bg-red-500/20 text-red-300":"text-muted-foreground hover:bg-white/5 hover:text-red-300"),children:[(0,d.jsx)(F.A,{className:"size-3"}),v&&"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,S.cn)(U,"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)(G.A,{className:"size-3"})," Ask"]}),(0,d.jsxs)("button",{type:"button",onClick:b=>{al(b),k(a)},className:(0,S.cn)(U,"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)(p.A,{className:"size-3"})," Details"]})]})]})]})]})}var $=c(32798),_=c(82145),aa=c(48779),ab=c(26284),ac=c(52351),ad=c(74732);function ae({className:a,type:b,...c}){return(0,d.jsx)("input",{type:b,"data-slot":"input",className:(0,S.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 af({className:a,...b}){return(0,d.jsx)("textarea",{"data-slot":"textarea",className:(0,S.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 ag=c(86371);function ah({className:a,...b}){return(0,d.jsx)(ag.b,{"data-slot":"label",className:(0,S.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 ai=(0,t.createServerReference)("405627b9eeed46adf3e5eacd9e0d973beb1dbc4d1c",t.callServer,void 0,t.findSourceMapURL,"createNodeAction"),aj=(0,t.createServerReference)("603dccb642b462d4d57c73674dd721cbab098b0d87",t.callServer,void 0,t.findSourceMapURL,"updateNodeAction");function ak({open:a,onOpenChange:b,mode:c,view:f,heading:g,nodeId:h,parentId:i,position:j,defaults:k,hasFrontend:l=!1}){let m=(0,q.useRouter)(),[n,o]=(0,e.useState)(k?.title??""),[p,r]=(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,M.jR)(k?.layer)??"none"),[C,D]=(0,e.useState)(!1),E="ARCHITECTURE"===f?J:I;async function F(){if(n.trim()){D(!0);try{let a="none"===A?null:A;"create"===c?await ai({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 aj(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)(ad.lG,{open:a,onOpenChange:b,children:(0,d.jsxs)(ad.Cf,{children:[(0,d.jsx)(ad.c7,{children:(0,d.jsx)(ad.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)(ah,{htmlFor:"nf-title",children:"Title"}),(0,d.jsx)(ae,{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)(ah,{htmlFor:"nf-role",children:"Role (one line)"}),(0,d.jsx)(ae,{id:"nf-role",value:p,onChange:a=>r(a.target.value)})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(ah,{htmlFor:"nf-plain",children:"Description"}),(0,d.jsx)(af,{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)(ah,{children:"Kind"}),(0,d.jsxs)(H.l6,{value:y,onValueChange:a=>null!=a&&z(a),children:[(0,d.jsx)(H.bq,{children:(0,d.jsx)(H.yv,{children:a=>"BUG"===a?"Bug":"Feature"})}),(0,d.jsxs)(H.gC,{children:[(0,d.jsx)(H.eb,{value:"FEATURE",children:"Feature"}),(0,d.jsx)(H.eb,{value:"BUG",children:"Bug"})]})]})]}),l&&(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(ah,{children:"Layer"}),(0,d.jsxs)(H.l6,{value:A,onValueChange:a=>null!=a&&B(a),children:[(0,d.jsx)(H.bq,{children:(0,d.jsx)(H.yv,{children:a=>"none"===a?"—":M.YG[a]?.label??a})}),(0,d.jsxs)(H.gC,{children:[(0,d.jsx)(H.eb,{value:"none",children:"—"}),Object.keys(M.YG).map(a=>(0,d.jsx)(H.eb,{value:a,children:M.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)(ah,{children:"Status"}),(0,d.jsxs)(H.l6,{value:w,onValueChange:a=>null!=a&&x(a),children:[(0,d.jsx)(H.bq,{children:(0,d.jsx)(H.yv,{children:a=>L[a]?.label??a})}),(0,d.jsx)(H.gC,{children:E.map(a=>(0,d.jsx)(H.eb,{value:a,children:L[a]?.label??a},a))})]})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(ah,{htmlFor:"nf-cluster",children:"Cluster / lane"}),(0,d.jsx)(ae,{id:"nf-cluster",value:u,onChange:a=>v(a.target.value)})]})]})]}),(0,d.jsxs)(ad.Es,{children:[(0,d.jsx)(ab.$,{variant:"outline",onClick:()=>b(!1),children:"Cancel"}),(0,d.jsx)(ab.$,{onClick:F,disabled:C||!n.trim(),children:C?"Saving…":"Save"})]})]})})}let al=(0,t.createServerReference)("40c373e8c7e0291ca625e6c13669b17cd09ea4aa92",t.callServer,void 0,t.findSourceMapURL,"deleteNodeAction"),am=(0,t.createServerReference)("60f54eee2865724c7ed99a0531a728b139b7e65a63",t.callServer,void 0,t.findSourceMapURL,"setStatusAction"),an=(0,t.createServerReference)("404f68d337a1b7970bc2a2c0122799240ae05b471e",t.callServer,void 0,t.findSourceMapURL,"cancelAction"),ao=(0,t.createServerReference)("40591af608ce0a1b6082bac561dc8e9f301869d97b",t.callServer,void 0,t.findSourceMapURL,"deprioritizeAction");function ap({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)(aa.b,{className:"absolute bottom-3 right-3 z-10 flex w-80 flex-col rounded-2xl",style:{top:k??12},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)(aq,{active:"details"===m,onClick:()=>i?.("details"),children:"Details"}),(0,d.jsxs)(aq,{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)(E.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)(E.A,{className:"size-4"})})]}),(0,d.jsx)("div",{className:"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)(x.A,{className:"size-3.5"}),"Comment on this ","ARCHITECTURE"===a?"component":"feature"]}),(0,d.jsx)(ar,{node:b,view:a},b.id)]}):(0,d.jsx)(at,{view:a,nodes:c})})})]})}function aq({active:a,onClick:b,children:c}){return(0,d.jsx)("button",{type:"button",onClick:b,className:(0,S.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 ar({node:a,view:b}){var c;let f=(0,q.useRouter)(),[g,h]=(0,e.useTransition)(),[i,j]=(0,e.useState)(!1),[k,l]=(0,e.useState)(!1),{hasFrontend:m}=P(),n=(0,M.jR)(a.layer),o="ARCHITECTURE"===b?J:I,p=a=>h(async()=>{await a(),f.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:[(c=a.cluster,c?.trim()||"—"),m&&n&&(0,d.jsxs)("span",{className:"ml-2 text-zinc-400",children:["\xb7 ",M.YG[n].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)(C.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)(ab.$,{size:"sm",className:"h-7 px-2.5 text-xs",disabled:g,onClick:()=>p(()=>u(a.id)),children:"Accept"}),(0,d.jsx)(ab.$,{size:"sm",variant:"outline",className:"h-7 px-2.5 text-xs text-muted-foreground",disabled:g,onClick:()=>p(()=>al(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)(H.l6,{value:a.status,onValueChange:b=>null!=b&&p(()=>am(a.id,b)),children:[(0,d.jsx)(H.bq,{className:"h-8",disabled:g,children:(0,d.jsx)(H.yv,{children:a=>L[a]?.label??a})}),(0,d.jsx)(H.gC,{children:o.map(a=>(0,d.jsx)(H.eb,{value:a,children:L[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)(R.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)(as,{node:a}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-1.5 pt-1",children:[(0,d.jsx)(ab.$,{size:"sm",variant:"outline",onClick:()=>j(!0),children:"Edit"}),(0,d.jsx)(ab.$,{size:"sm",variant:"outline",onClick:()=>l(!0),children:"+ Sub-node"}),(0,d.jsx)(ab.$,{size:"sm",variant:"outline",disabled:g,onClick:()=>p(()=>an(a.id)),children:"Cancel"}),(0,d.jsx)(ab.$,{size:"sm",variant:"outline",disabled:g,onClick:()=>p(()=>ao(a.id)),children:"Deprioritize"}),(0,d.jsxs)(ac.Lt,{children:[(0,d.jsx)(ac.tv,{render:(0,d.jsx)(ab.$,{size:"sm",variant:"outline",className:"text-red-300",children:"Delete"})}),(0,d.jsxs)(ac.EO,{children:[(0,d.jsxs)(ac.wd,{children:[(0,d.jsxs)(ac.r7,{children:["Delete “",a.title,"”?"]}),(0,d.jsx)(ac.$v,{children:"This removes the node and all its sub-nodes. It can’t be undone."})]}),(0,d.jsxs)(ac.ck,{children:[(0,d.jsx)(ac.Zr,{children:"Cancel"}),(0,d.jsx)(ac.Rx,{onClick:()=>p(()=>al(a.id)),children:"Delete"})]})]})]})]}),i&&(0,d.jsx)(ak,{open:!0,onOpenChange:j,mode:"edit",view:b,heading:"Edit node",nodeId:a.id,hasFrontend:m,defaults:{title:a.title,role:a.role,plain:a.plain,status:a.status,cluster:a.cluster,kind:a.kind,layer:a.layer}}),k&&(0,d.jsx)(ak,{open:!0,onOpenChange:l,mode:"create",view:b,heading:"New sub-node",parentId:a.id,position:{x:a.x,y:a.y+120},hasFrontend:m,defaults:{cluster:a.cluster,layer:a.layer}})]})}function as({node:a}){let b=(0,q.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,S.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,S.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)(E.A,{className:"size-3"})})]})]}),(0,d.jsx)("p",{className:(0,S.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)(ab.$,{size:"sm",variant:"outline",className:"h-7 shrink-0 px-2 text-[11px]",disabled:g||!c.trim(),onClick:k,children:"Flag"})]})]})}function at({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)(au,{label:"nodes",value:b.length}),(0,d.jsx)(au,{label:"critical",value:c})]})]})}function au({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 av=c(38476),aw=c(55805),ax=c(54193),ay=c(81725),az=c(92994),aA=c(84170),aB=c(27741);function aC(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 aD=c(67637);let aE=[{value:"cluster",label:"Theme"},{value:"status",label:"Status"},{value:"priority",label:"Priority"}],aF=new Set(["title","role","plain","cluster","layer","status","priority"]),aG={roadmapNode:Z,archNode:Z,annotation:s.Sh},aH={deletable:_.I},aI={CONTAINS:{stroke:"#7c7c8a"},DEPENDS:{stroke:"#f5b942",dash:"6 4"},RELATES:{stroke:"#8a8a95",dash:"4 4"},REPLACES:{stroke:"#ff6b9d"}};function aJ({view:a,nodes:b,edges:c,workOnNextId:q=null,embedded:r=!1,commentsContent:t,commentsCount:u=0,controlRef:v,onAskAgent:w,onAddComment:x,annotations:y,onPinClick:z,onUpdateComment:A,onRemoveComment:B,boardAnnotations:C,initialArrangedBy:D=null,hasFrontend:E=!1}){let F=(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]),G=(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:aI.CONTAINS.stroke}})),...c.filter(b=>a.has(b.fromId)&&a.has(b.toId)).map(a=>{let b=aI[a.kind]??aI.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]),[H,N]=(0,e.useState)(F),[P,R]=(0,e.useState)(G),[T,U]=(0,e.useState)(null),[V,W]=(0,e.useState)(null),[X,Y]=(0,e.useState)(null),[Z,_]=(0,e.useState)(!1),[aa,ab]=(0,e.useState)("details");(0,e.useRef)(!1),(0,e.useRef)("details");let[ac,ad]=(0,e.useState)(new Set),[ae,af]=(0,e.useState)(null),[ag,ah]=(0,e.useState)(!1),ai=(0,e.useRef)(null),aj=(0,e.useCallback)((a,b,c)=>{N(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])=>aF.has(a))))})},[]),ak=(0,e.useMemo)(()=>Array.from(new Set(H.map(a=>a.data.cluster).filter(a=>!!a))).sort(),[H]),al=(0,e.useCallback)(a=>ad(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c}),[]),am=(0,e.useCallback)(a=>{U(a),_(!0),ab("details")},[]),an=(0,e.useCallback)(a=>{N(b=>b.filter(b=>b.id!==a)),U(b=>b===a?null:b),fetch(`/api/nodes/${a}`,{method:"DELETE"})},[]),ao=(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";N(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}}]),ad(a=>new Set(a).add(e)),af(e),U(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{N(a=>a.filter(a=>a.id!==e)),ad(a=>{let b=new Set(a);return b.delete(e),b}),af(a=>a===e?null:a),U(a=>a===e?null:a)}},[a]),aq=(0,e.useCallback)(()=>{let a=H.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 aC(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 aC(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))},[H]),ar=(0,e.useCallback)(()=>{let a=aq();ao(a.x,a.y)},[ao,aq]),as=(0,e.useCallback)(()=>{let a=aq();ao(a.x,a.y,"BUG")},[ao,aq]),at=(0,e.useMemo)(()=>({view:a,categories:ak,statuses:"ARCHITECTURE"===a?J:I,patch:aj,isExpanded:a=>ac.has(a),toggleExpand:al,openDetailed:am,removeNode:an,editingTitleId:ae,onAskAgent:w,hasFrontend:E}),[a,ak,aj,ac,al,am,an,ae,w,E]),[au,aK]=(0,e.useState)(D),[aL,aM]=(0,e.useState)(""),[aN,aO]=(0,e.useState)("full"),[aP,aQ]=(0,e.useState)(new Set),[aR,aS]=(0,e.useState)(new Set),[aT,aU]=(0,e.useState)(new Set),[aV,aW]=(0,e.useState)(null),aX=(0,e.useMemo)(()=>Array.from(new Set(b.map(a=>a.status))),[b]),aY=(0,e.useMemo)(()=>Array.from(new Set(b.map(a=>a.cluster).filter(a=>!!a))).sort(),[b]),aZ=(0,e.useMemo)(()=>Array.from(new Set(b.map(a=>a.priority))).sort((a,b)=>a-b),[b]),a$=(0,e.useCallback)(a=>(!aP.size||!!aP.has(a.status))&&(!aR.size||!!a.cluster&&!!aR.has(a.cluster))&&(!aT.size||!!aT.has(a.priority)),[aP,aR,aT]),a_=aP.size+aR.size+aT.size,a0=(0,e.useCallback)(()=>{aQ(new Set),aS(new Set),aU(new Set)},[]),a1=(0,e.useMemo)(()=>H.map(a=>({...a,hidden:!a$(a.data)})),[H,a$]),a2=(0,e.useMemo)(()=>new Set(a1.filter(a=>a.hidden).map(a=>a.id)),[a1]),a3=(0,e.useMemo)(()=>P.map(a=>({...a,hidden:a2.has(a.source)||a2.has(a.target)})),[P,a2]),a4=(0,e.useMemo)(()=>{if(V){let a=a3.find(a=>a.id===V);return a?new Set([a.source,a.target]):null}return T?(0,av.F1)(T,a3.filter(a=>!a.hidden)):null},[T,V,a3]),a5=aL.trim().length>0,a6=(0,e.useMemo)(()=>{if(!a5)return null;let a=new Set;for(let b of H)a$(b.data)&&(0,ay.Qk)((0,ay.$$)(b.data),aL)&&a.add(b.id);return a},[H,aL,a$,a5]),a7=a6??a4,a8=(0,e.useMemo)(()=>aV?new Set(a1.filter(a=>!a.hidden&&!(0,aA.F)(aV,(0,M.jR)(a.data.layer))).map(a=>a.id)):null,[aV,a1]),a9=(0,e.useMemo)(()=>a1.map(a=>{let b=q&&a.id===q?{...a,data:{...a.data,isNext:!0}}:a;if(ac.has(a.id)&&(b={...b,zIndex:25}),b.hidden)return b;if(!a7)return a8?.has(a.id)?{...b,style:{...b.style,opacity:.3,filter:"saturate(0.3)",transition:"opacity 120ms, filter 120ms"}}:b;let c=a7.has(a.id),d=a6?ay.Uy:.45;return{...b,zIndex:c&&a6?24:b.zIndex,style:{...b.style,opacity:c?1:d,boxShadow:c&&a6?ay.RU:b.style?.boxShadow,borderRadius:c&&a6?14:b.style?.borderRadius,transition:"opacity 120ms, box-shadow 120ms"}}}),[a1,a7,a6,q,ac,a8]),ba=(0,e.useMemo)(()=>{if("ROADMAP"===a&&!au||"ROADMAP"!==a&&"ARCHITECTURE"!==a)return[];let b=new Map(a9.map(a=>[a.id,a])),c=[];for(let e of a9){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&&au?(d=f.data,"status"===au?L[d.status]?.label??d.status:"priority"===au?`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,aB.S)(c)},[a9,au,a]),bb="ARCHITECTURE"===a||"cluster"===au?"category":"neutral",bc=(0,e.useMemo)(()=>{if(a6)return a3.map(a=>a.hidden?a:a6.has(a.source)&&a6.has(a.target)?{...a,style:{...a.style,opacity:1}}:{...a,label:void 0,style:{...a.style,opacity:.06}});let a=T??X;return V||a?a3.map(b=>b.hidden?b:(V?b.id===V: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}}):a3.map(a=>{if(a.hidden)return a;let b=a8&&(a8.has(a.source)||a8.has(a.target));return{...a,label:void 0,style:{...a.style,opacity:b?.06:.18}}})},[a3,T,V,X,a6,a8]),bd=void 0!==C,[be,bf]=(0,e.useState)(C??[]),bg=(0,e.useMemo)(()=>{if(bd){let a=new Set(b.map(a=>a.id));return be.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((y??[]).map(a=>[a.id,a.comment]));return(0,$.m)(y??[],{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}))},[bd,be,y,b]),bh=(0,e.useMemo)(()=>{let a=new Map;for(let b of bg){let c=a.get(b.targetId)??[];c.push({id:b.id,n:b.n,column:null}),a.set(b.targetId,c)}return a},[bg]),bi=(0,e.useCallback)(async a=>{let c=(0,$.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();bf(b=>[...b,a])}},[b]),bj=(0,e.useCallback)((a,b)=>{bf(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)})},[]),bk=(0,e.useCallback)(a=>{bf(b=>b.filter(b=>b.id!==a)),fetch(`/api/board-annotations/${a}`,{method:"DELETE"})},[]),bl=bd?bi:x,[bm,bn]=(0,e.useState)(()=>new Map),bo=(0,e.useMemo)(()=>{let a=new Map(a9.map(a=>[a.id,a])),b=new Map,c=bg.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:bm.get(`anno-${c.id}`),draggable:bd,data:{n:c.n,text:c.text,annotationId:c.id,onClick:bd||A?void 0:z,editable:bd||!!A,onChangeText:bd?(a,b)=>bj(a,{body:b}):A,onDelete:bd?bk:B}}]});return[...a9.map(a=>{let b=bh.get(a.id);return b||bl?{...a,data:{...a.data,pins:b,onPinClick:bd?void 0:z,onComment:bl}}:a}),...c]},[a9,bg,bh,bd,z,A,B,bl,bj,bk,bm]),bp=(0,e.useMemo)(()=>bg.map(a=>({id:`annoe-${a.id}`,source:a.targetId,sourceHandle:`pin-${a.id}`,target:`anno-${a.id}`,targetHandle:"in",type:"default",selectable:!1,zIndex:30,style:{stroke:s.V5,strokeWidth:1.5,opacity:.9}})),[bg]),bq=(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;bf(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&&bn(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&&N(a=>(0,h._0)(b,a))},[]),br=(0,e.useCallback)(a=>R(b=>(0,h.zW)(a,b)),[]),bs=(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=aI.DEPENDS;R(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}}])},[]),bt=(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();N(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}}]),R(a=>[...a,{id:`c-${f.id}`,source:b.id,target:f.id,type:"smoothstep",style:{stroke:aI.CONTAINS.stroke}}]),ad(a=>new Set(a).add(f.id)),af(f.id),U(f.id)},[a]),bu=(0,e.useCallback)(async(a,b)=>{if(b.isValid||!b.fromNode||!ai.current)return;let c=a.changedTouches,d=c?.[0]?.clientX??a.clientX,e=c?.[0]?.clientY??a.clientY,{x:f,y:g}=ai.current.screenToFlowPosition({x:d,y:e});await bt(b.fromNode,f,g)},[bt]),bv=(0,e.useMemo)(()=>b.find(a=>a.id===T)??null,[b,T]),bw=(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})})},[]),bx=(0,e.useCallback)(a=>{U(a),W(null);let b=ai.current?.getNode(a);if(!b||!ai.current)return;let c=b.measured?.width??128,d=b.measured?.height??48;ai.current.setCenter(b.position.x+c/2,b.position.y+d/2,{zoom:1.2,duration:600})},[]),by=(0,e.useCallback)(a=>{let b=function(a,b,c={}){let d=c.colW??320,e=c.rowH??150,f=c.childIndent??24,g=c.laneGap??56,h=c.bandGap??110,i=c.maxCols??10,j=c.maxBandW??8*d,k=new Set(a.map(a=>a.id)),l=a=>!a.parentId||!k.has(a.parentId),m=a.filter(l),n=new Map;for(let b of a){if(l(b))continue;let a=n.get(b.parentId);a?a.push(b):n.set(b.parentId,[b])}let o="status"===b?a=>a.status:"priority"===b?a=>String(a.priority):a=>(a.cluster??"").trim()||"—",p=new Map;for(let a of m){let b=o(a),c=p.get(b);c?c.push(a):p.set(b,[a])}let q=(function(a,b,c){if("status"===a)return[...K];if("priority"===a)return["0","1","2","3"];let d=Array.from(new Set(b.map(c))),e=d.filter(a=>"—"!==a).sort();return d.includes("—")?[...e,"—"]:e})(b,m,o).filter(a=>p.has(a)),r=new Map,s=0,t=0,u=0;for(let a of q){let b=p.get(a),c=b.reduce((a,b)=>a+1+(n.get(b.id)?.length??0),0),k=Math.max(1,Math.min(i,b.length,Math.round(Math.sqrt(.85*c))||1)),l=k*d;s>0&&s+l>j&&(s=0,t+=u+h,u=0);let m=Array(k).fill(0);for(let a of b){let b=0;for(let a=1;a<k;a++)m[a]<m[b]&&(b=a);let c=s+b*d,g=t+m[b]*e;r.set(a.id,{x:c,y:g});let h=n.get(a.id)??[];h.forEach((a,b)=>{r.set(a.id,{x:c+f,y:g+(b+1)*e})}),m[b]+=1+h.length}u=Math.max(u,m.reduce((a,b)=>Math.max(a,b),0)*e),s+=l+g}return r}(H.map(a=>({id:a.id,parentId:a.data.parentId??null,cluster:a.data.cluster,status:a.data.status,priority:a.data.priority})),a);N(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})}),aK(a),fetch("/api/board-layout",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({board:"roadmap",arrangedBy:a})}),requestAnimationFrame(()=>ai.current?.fitView({duration:600,padding:.2}))},[H]),bz=(0,e.useCallback)(()=>{let a=function(a,b){if(0===a.length)return new Map;let c=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),d=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,c),e=new Map(a.map(a=>[a.id,[]]));for(let a of c)e.get(a.fromId)?.push(a.toId);let f=Array.from(new Set(a.map(a=>a.group))),g=f.filter(a=>"—"!==a).sort(),h=f.includes("—")?[...g,"—"]:g,i=[];for(let b of h){let c=a.filter(a=>a.group===b),f=Math.min(...c.map(a=>d.get(a.id)??0)),g=Math.max(...c.map(a=>d.get(a.id)??0)),h=new Map,j=new Map,k=0,l=1;for(let a=f;a<=g;a++){let b=c.filter(b=>d.get(b.id)===a);if(!b.length)continue;let f=a=>{let b=(e.get(a.id)??[]).map(a=>j.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)=>f(a)-f(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;j.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)}i.push({d:b,w:k,h:150*l,local:h})}let j=Math.max(2880,Math.round(Math.sqrt(2.2*i.reduce((a,b)=>a+(b.w+140)*(b.h+170),0)))),k=new Map,l=0,m=0,n=0;for(let a of i){for(let[b,c]of(l>0&&l+a.w>j&&(m+=n+170,l=0,n=0),a.local))k.set(b,{x:l+c.x,y:m+c.y});n=Math.max(n,a.h),l+=a.w+140}return k}(H.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})));N(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(()=>ai.current?.fitView({duration:600,padding:.2}))},[H,c]),bA=(0,e.useMemo)(()=>a5?(0,ay.r2)(H.filter(a=>a$(a.data)),aL,a=>(0,ay.$$)(a.data),a=>({id:a.id,label:a.data.title,sublabel:a.data.cluster??a.data.status,kind:"feature"})):[],[H,aL,a$,a5]);function bB(a,b){b(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})}return(0,d.jsx)(O.Provider,{value:at,children:(0,d.jsxs)("div",{className:(0,S.cn)("canvas-dots relative w-full",r?"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")||!ai.current)return;a.preventDefault();let{x:b,y:c}=ai.current.screenToFlowPosition({x:a.clientX,y:a.clientY});ao(b,c,"BUG"===a.dataTransfer.getData("application/beacon-node-kind")?"BUG":"FEATURE")},children:[(0,d.jsxs)(h.Gc,{nodes:bo,edges:"far"===aN?[...bc,...bp].map(a=>({...a,hidden:!0})):[...bc,...bp],nodeTypes:aG,edgeTypes:aH,connectionMode:g.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onInit:a=>{ai.current=a},onNodesChange:bq,onEdgesChange:br,onConnect:bs,onConnectEnd:bu,onNodeMouseEnter:(a,b)=>Y(b.id),onNodeMouseLeave:()=>Y(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"}),U(a=>a===b.id?null:a))},onNodeClick:(a,b)=>{if("annotation"===b.type){let a=b.data;a.editable||z?.(a.annotationId);return}if(ag){if(ah(!1),b.data.isChild)return;bt(b,b.position.x+300,b.position.y+60);return}if(U(b.id),W(null),ab("details"),r){let b=a.target;b?.closest("input, textarea, select, button, [role='combobox']")||_(!0)}},onEdgeClick:(a,b)=>{W(b.id),U(null),ab("details")},onPaneClick:()=>{ag?ah(!1):(U(null),W(null))},onNodeDragStop:(a,b)=>{if(b.id.startsWith("anno-")){bd&&bj(b.id.slice(5),{x:b.position.x,y:b.position.y});return}bw(b.id,b.position.x,b.position.y)},deleteKeyCode:["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)(aD.Z,{regions:ba,tone:bb,lod:aN}),(0,d.jsx)(Q.J,{onLod:aO}),(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)(az.er,{title:"Legend",trigger:(a,b)=>(0,d.jsx)("button",{type:"button",onClick:b,title:"Legend",className:(0,S.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:[(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",{"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.jsx)("span",{children:"depends on \xb7 drag between two cards"})]})]})})}),!r&&(0,d.jsx)(h.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!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:[ag&&(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:bz,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"}),aE.map(a=>(0,d.jsx)("button",{onClick:()=>by(a.value),title:`Arrange features into lanes by ${a.label.toLowerCase()}`,className:(0,S.cn)("h-7 rounded-full px-2.5 text-[11px] font-medium transition-colors",au===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:ar,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:as,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:()=>ah(a=>!a),title:"ARCHITECTURE"===a?"Add sub-component (click a component next)":"Add sub-task (click a feature next)",className:(0,S.cn)("flex h-8 items-center gap-1.5 rounded-full px-3 text-[12px] font-medium transition-colors",ag?"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"]})]})]}),!r&&(0,d.jsx)(h.Zk,{position:"top-center",className:"glass rounded-full px-1 py-0.5",children:(0,d.jsx)(aw.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,S.cn)("flex items-center gap-1 transition-[margin] duration-200",Z&&"!mr-[332px]",r&&"hidden"),children:[(0,d.jsx)(ax.X,{query:aL,onQuery:aM,hits:bA,placeholder:"Find a feature…",onPick:a=>{aM(""),bx(a)},onZoomToMatches:()=>{a6?.size&&ai.current?.fitView({nodes:[...a6].map(a=>({id:a})),duration:600,padding:.2})}}),E&&(0,d.jsx)(aA.o,{value:aV,onChange:aW}),"ROADMAP"===a&&q&&(0,d.jsx)("button",{type:"button",onClick:()=>bx(q),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)(n.A,{className:"size-4"})}),(0,d.jsxs)(az.er,{title:"Filters",trigger:(a,b)=>(0,d.jsxs)("button",{type:"button",onClick:b,title:"Filters",className:(0,S.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",a||a_>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,d.jsx)(o.A,{className:"size-4"}),a_>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:a_})]}),children:[aX.length>0&&(0,d.jsx)(az.r1,{title:"Status",children:aX.map(a=>(0,d.jsx)(az.vu,{on:aP.has(a),onClick:()=>bB(a,aQ),children:L[a]?.label??a},a))}),aY.length>0&&(0,d.jsx)(az.r1,{title:"Cluster",children:aY.map(a=>(0,d.jsx)(az.vu,{on:aR.has(a),onClick:()=>bB(a,aS),children:a},a))}),aZ.length>0&&(0,d.jsx)(az.r1,{title:"Priority",children:aZ.map(a=>(0,d.jsxs)(az.vu,{on:aT.has(a),onClick:()=>bB(a,aU),children:["P",a]},a))}),a_>0&&(0,d.jsx)("button",{type:"button",onClick:a0,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"})]}),!Z&&(0,d.jsx)("button",{onClick:()=>{_(!0),ab("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)(p.A,{className:"size-4"})})]})]}),Z&&(0,d.jsx)(ap,{view:a,selected:bv,allNodes:b,onClose:()=>{_(!1),ab("details")},commentsContent:t,commentsCount:u,activeTab:aa,onTabChange:ab,onAddComment:bl,topOffset:r?64:void 0})]})})}},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,projectMeta:()=>F,syncState:()=>D,tag:()=>n});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)})},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})}},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]}},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}},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:()=>m});var d=c(48249),e=c(2116),f=c.n(e),g=c(15996),h=c(41665),i=c(79602),j=c(36274),k=c(33191);let l={ROADMAP:g.A,ARCHITECTURE:h.A,FILES:i.A,DATABASE:j.A};function m({tabs:a,active:b}){return(0,d.jsx)("div",{className:"flex items-center gap-0.5",children:a.map(a=>{let c=a.value===b,e=a.Icon??l[a.value];return(0,d.jsxs)(f(),{href:a.href,className:(0,k.cn)("flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-[12px] font-medium tracking-tight transition-colors",c?"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:[e?(0,d.jsx)(e,{className:(0,k.cn)("size-3",c&&"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…",rows:Math.max(2,Math.min(6,c.split("\n").length)),onChange:a=>l(a.target.value),onBlur:()=>{c!==a.text&&a.onChangeText?.(a.annotationId,c)},onKeyDown:a=>a.stopPropagation(),className:"nodrag nopan mt-1.5 w-full resize-none bg-transparent text-[13px] leading-snug text-foreground/95 outline-none placeholder:text-muted-foreground/60"}):(0,d.jsx)("div",{className:"mt-1.5 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}},60763:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{"402584e6cffe33a5b73ce6a887d1d9e5a898c6a814":()=>e.pJ,"404f68d337a1b7970bc2a2c0122799240ae05b471e":()=>e.hg,"405627b9eeed46adf3e5eacd9e0d973beb1dbc4d1c":()=>e.HQ,"40591af608ce0a1b6082bac561dc8e9f301869d97b":()=>e.hY,"40c373e8c7e0291ca625e6c13669b17cd09ea4aa92":()=>e.cl,"603dccb642b462d4d57c73674dd721cbab098b0d87":()=>e.Oz,"60f54eee2865724c7ed99a0531a728b139b7e65a63":()=>e.t3});var e=c(1110),f=a([e]);e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},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)}},82145:(a,b,c)=>{c.d(b,{I:()=>k});var d=c(48249),e=c(56024),f=c(55030),g=c(57684);function h(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 i(a,b){let c=h(a),d=h(b),e=c.w/2||1,f=c.h/2||1,g=(d.cx-c.cx)/(2*e)-(d.cy-c.cy)/(2*f),i=(d.cx-c.cx)/(2*e)+(d.cy-c.cy)/(2*f),j=1/(Math.abs(g)+Math.abs(i)||1);return{x:e*j*(g+i)+c.cx,y:f*j*(-g+i)+c.cy}}function j(a,b){let c=h(a),d=Math.round(b.x),e=Math.round(b.y);return d<=Math.round(c.x)+1?f.yX.Left:d>=Math.round(c.x+c.w)-1?f.yX.Right:e<=Math.round(c.y)+1?f.yX.Top:f.yX.Bottom}function k(a){let b,c,{deleteElements:h}=(0,e.VH)(),k=(0,e.JY)(a.source),l=(0,e.JY)(a.target),m=k&&l?(b=i(k,l),c=i(l,k),{sx:b.x,sy:b.y,tx:c.x,ty:c.y,sourcePos:j(k,b),targetPos:j(l,c)}):null,[n,o,p]=(0,f.Fp)(m?{sourceX:m.sx,sourceY:m.sy,sourcePosition:m.sourcePos,targetX:m.tx,targetY:m.ty,targetPosition:m.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:n,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(${o}px, ${p}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(${o}px, ${p+14}px)`,pointerEvents:"all",zIndex:1e3},children:(0,d.jsx)("button",{type:"button",onMouseDown:a=>a.stopPropagation(),onClick:b=>{b.stopPropagation(),h({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"})})})})]})}},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},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=i??l,o=(0,e.useRef)(null);return(0,e.useRef)(()=>{}),(0,d.jsxs)("div",{ref:o,className:"relative",children:[a(n,()=>{var a;return a=!n,void(void 0===i&&m(a),j?.(a))}),n&&(0,d.jsxs)("div",{className:(0,f.cn)("glass absolute top-full z-30 mt-1.5 w-64 rounded-xl p-3 shadow-xl","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})}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/
|
|
1
|
+
globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/d7yMlZAE4rxhUZzJXRGvS/_buildManifest.js","static/d7yMlZAE4rxhUZzJXRGvS/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-3dc11ff04fc155e6.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-cef5038dc7aa126a.js","static/chunks/main-app-1a32dc335629e4e4.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en" class="dark __variable_246ccd __variable_c29908 h-full antialiased"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/22a5144ee8d83bca-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/7d4881bb7e1bf84d-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/4cddafb96f165148.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/e02ab5db9ff2dca2.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-3dc11ff04fc155e6.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-cef5038dc7aa126a.js" async=""></script><script src="/_next/static/chunks/main-app-1a32dc335629e4e4.js" async=""></script><script src="/_next/static/chunks/70e0d97a-bbb0ec05083da54f.js" async=""></script><script src="/_next/static/chunks/54a60aa6-407808fee210eca2.js" async=""></script><script src="/_next/static/chunks/8500-f62a38ff68ab7f42.js" async=""></script><script src="/_next/static/chunks/4294-0e5034f9c5643c3f.js" async=""></script><script src="/_next/static/chunks/7886-46eaf3a9533310f7.js" async=""></script><script src="/_next/static/chunks/app/layout-9b750c41268879f0.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Beacon</title><meta name="description" content="A local control panel for the repository you're working in"/><link rel="icon" href="/icon.svg?bb93a1375ed3c298" type="image/svg+xml" sizes="any"/><link rel="apple-touch-icon" href="/apple-icon.png?f9d64651576bd776" type="image/png" sizes="180x180"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-full flex flex-col bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><header class="pointer-events-none fixed left-3 top-3 z-30"><div class="glass pointer-events-auto flex h-10 items-center gap-1 rounded-full pl-3 pr-1.5"><a class="mr-1 flex items-center gap-2 text-sm font-semibold tracking-tight" href="/"><svg width="18" height="18" viewBox="20 22 56 56" fill="none" class="text-foreground" aria-hidden="true"><path d="M48 33 L72.5 73 L23.5 73 Z" fill="none" stroke="var(--accent-2, #ff7a45)" stroke-width="7" stroke-linejoin="round" stroke-linecap="round"></path><circle cx="48" cy="29.5" r="7" fill="var(--accent-2, #ff7a45)"></circle></svg>Beacon</a><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><span class="font-mono text-xs text-muted-foreground">· <!-- -->beacon</span><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><nav class="flex items-center gap-0.5 text-sm"><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/plan">Plans</a><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/map">Map</a><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/settings">Settings</a></nav><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><button type="button" aria-pressed="false" aria-label="Notes" title="Notes" class="flex items-center justify-center rounded-full p-1.5 transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sticky-note size-4" aria-hidden="true"><path d="M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z"></path><path d="M15 3v5a1 1 0 0 0 1 1h5"></path></svg></button></div></header><main class="flex flex-1 flex-col"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main><div aria-hidden="true" class="fixed inset-y-0 right-0 z-40 flex transition-transform duration-300 ease-out pointer-events-none translate-x-full"><div class="glass relative isolate overflow-hidden flex h-full w-[420px] flex-col rounded-l-2xl border-l border-white/10"><span aria-hidden="true" class="pointer-events-none absolute inset-0 -z-10 rounded-[inherit]" style="background:radial-gradient(90% 60% at 0% 0%, oklch(1 0 0 / 0.04), transparent 42%)"></span><span aria-hidden="true" class="pointer-events-none absolute inset-0 -z-10 rounded-[inherit] opacity-[0.035] mix-blend-overlay" style="background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:120px 120px"></span><div class="flex items-center gap-2 border-b border-white/10 px-3 py-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sticky-note size-4 text-[var(--accent-2,#ff7a45)]" aria-hidden="true"><path d="M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z"></path><path d="M15 3v5a1 1 0 0 0 1 1h5"></path></svg><span class="text-sm font-semibold tracking-tight">Notes</span><span class="ml-auto"></span><button type="button" aria-label="New note" title="New note" class="rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus size-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button><button type="button" aria-label="Close notes" title="Close" class="rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x size-4" aria-hidden="true"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button></div><div class="max-h-44 shrink-0 overflow-y-auto border-b border-white/10 p-1.5"><p class="px-2 py-3 text-[13px] text-muted-foreground">No notes yet. Hit <span class="text-foreground">+</span> to start one.</p></div><div class="flex flex-1 items-center justify-center p-6 text-center text-[13px] text-muted-foreground">Select a note, or create one. Then <span class="px-1 text-foreground">@</span>-mention it in your terminal to turn it into features.</div></div></div><script src="/_next/static/chunks/webpack-3dc11ff04fc155e6.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[30165,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-9b750c41268879f0.js\"],\"LiveRefresh\"]\n3:I[81984,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-9b750c41268879f0.js\"],\"NotesProvider\"]\n4:I[48484,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-9b750c41268879f0.js\"],\"PlanProvider\"]\n5:I[96848,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-9b750c41268879f0.js\"],\"TopNav\"]\n6:I[52174,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-9b750c41268879f0.js\"],\"MainRegion\"]\n7:I[57121,[],\"\"]\n8:I[74581,[],\"\"]\n9:I[434,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-9b750c41268879f0.js\"],\"PlanBar\"]\na:I[1494,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-9b750c41268879f0.js\"],\"NotesDrawer\"]\nb:I[33082,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-9b750c41268879f0.js\"],\"UpdateBanner\"]\nc:I[90484,[],\"OutletBoundary\"]\nd:\"$Sreact.suspense\"\n10:I[90484,[],\"ViewportBoundary\"]\n12:I[90484,[],\"MetadataBoundary\"]\n14:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/22a5144ee8d83bca-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/7d4881bb7e1bf84d-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/4cddafb96f165148.css\",\"style\"]\n:HL[\"/_next/static/css/e02ab5db9ff2dca2.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/4cddafb96f165148.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/e02ab5db9ff2dca2.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark __variable_246ccd __variable_c29908 h-full antialiased\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col bg-background text-foreground\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{\"children\":[[\"$\",\"$L4\",null,{\"children\":[[\"$\",\"$L5\",null,{\"repo\":\"beacon\"}],[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$L9\",null,{}]]}],[\"$\",\"$La\",null,{}]]}],[\"$\",\"$Lb\",null,{\"currentVersion\":\"0.1.39\"}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$d\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@e\"}]}]]}],{},null,false,null]},null,false,\"$@f\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L10\",null,{\"children\":\"$L11\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L12\",null,{\"children\":[\"$\",\"$d\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L13\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$14\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"FcKcgfUAfLhrW5iXsBe6p\"}\n"])</script><script>self.__next_f.push([1,"15:[]\nf:\"$W15\"\n"])</script><script>self.__next_f.push([1,"11:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"16:I[86869,[],\"IconMark\"]\ne:null\n13:[[\"$\",\"title\",\"0\",{\"children\":\"Beacon\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A local control panel for the repository you're working in\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?bb93a1375ed3c298\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"link\",\"3\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?f9d64651576bd776\",\"type\":\"image/png\",\"sizes\":\"180x180\"}],[\"$\",\"$L16\",\"4\",{}]]\n"])</script></body></html>
|
|
1
|
+
<!DOCTYPE html><html lang="en" class="dark __variable_246ccd __variable_c29908 h-full antialiased"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/22a5144ee8d83bca-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/7d4881bb7e1bf84d-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/4cddafb96f165148.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/e02ab5db9ff2dca2.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-3dc11ff04fc155e6.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-cef5038dc7aa126a.js" async=""></script><script src="/_next/static/chunks/main-app-1a32dc335629e4e4.js" async=""></script><script src="/_next/static/chunks/70e0d97a-bbb0ec05083da54f.js" async=""></script><script src="/_next/static/chunks/54a60aa6-407808fee210eca2.js" async=""></script><script src="/_next/static/chunks/8500-f62a38ff68ab7f42.js" async=""></script><script src="/_next/static/chunks/4294-0e5034f9c5643c3f.js" async=""></script><script src="/_next/static/chunks/7886-46eaf3a9533310f7.js" async=""></script><script src="/_next/static/chunks/app/layout-1c0e0a0b09f3bede.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Beacon</title><meta name="description" content="A local control panel for the repository you're working in"/><link rel="icon" href="/icon.svg?bb93a1375ed3c298" type="image/svg+xml" sizes="any"/><link rel="apple-touch-icon" href="/apple-icon.png?f9d64651576bd776" type="image/png" sizes="180x180"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-full flex flex-col bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><header class="pointer-events-none fixed left-3 top-3 z-30"><div class="glass pointer-events-auto flex h-10 items-center gap-1 rounded-full pl-3 pr-1.5"><a class="mr-1 flex items-center gap-2 text-sm font-semibold tracking-tight" href="/"><svg width="18" height="18" viewBox="20 22 56 56" fill="none" class="text-foreground" aria-hidden="true"><path d="M48 33 L72.5 73 L23.5 73 Z" fill="none" stroke="var(--accent-2, #ff7a45)" stroke-width="7" stroke-linejoin="round" stroke-linecap="round"></path><circle cx="48" cy="29.5" r="7" fill="var(--accent-2, #ff7a45)"></circle></svg>Beacon</a><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><span class="font-mono text-xs text-muted-foreground">· <!-- -->beacon</span><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><nav class="flex items-center gap-0.5 text-sm"><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/plan">Plans</a><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/map">Map</a><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/settings">Settings</a></nav><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><button type="button" aria-pressed="false" aria-label="Notes" title="Notes" class="flex items-center justify-center rounded-full p-1.5 transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sticky-note size-4" aria-hidden="true"><path d="M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z"></path><path d="M15 3v5a1 1 0 0 0 1 1h5"></path></svg></button></div></header><main class="flex flex-1 flex-col"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main><div aria-hidden="true" class="fixed inset-y-0 right-0 z-40 flex transition-transform duration-300 ease-out pointer-events-none translate-x-full"><div class="glass relative isolate overflow-hidden flex h-full w-[420px] flex-col rounded-l-2xl border-l border-white/10"><span aria-hidden="true" class="pointer-events-none absolute inset-0 -z-10 rounded-[inherit]" style="background:radial-gradient(90% 60% at 0% 0%, oklch(1 0 0 / 0.04), transparent 42%)"></span><span aria-hidden="true" class="pointer-events-none absolute inset-0 -z-10 rounded-[inherit] opacity-[0.035] mix-blend-overlay" style="background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:120px 120px"></span><div class="flex items-center gap-2 border-b border-white/10 px-3 py-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sticky-note size-4 text-[var(--accent-2,#ff7a45)]" aria-hidden="true"><path d="M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z"></path><path d="M15 3v5a1 1 0 0 0 1 1h5"></path></svg><span class="text-sm font-semibold tracking-tight">Notes</span><span class="ml-auto"></span><button type="button" aria-label="New note" title="New note" class="rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus size-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button><button type="button" aria-label="Close notes" title="Close" class="rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x size-4" aria-hidden="true"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button></div><div class="max-h-44 shrink-0 overflow-y-auto border-b border-white/10 p-1.5"><p class="px-2 py-3 text-[13px] text-muted-foreground">No notes yet. Hit <span class="text-foreground">+</span> to start one.</p></div><div class="flex flex-1 items-center justify-center p-6 text-center text-[13px] text-muted-foreground">Select a note, or create one. Then <span class="px-1 text-foreground">@</span>-mention it in your terminal to turn it into features.</div></div></div><script src="/_next/static/chunks/webpack-3dc11ff04fc155e6.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[81998,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-1c0e0a0b09f3bede.js\"],\"LiveRefresh\"]\n3:I[77242,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-1c0e0a0b09f3bede.js\"],\"TabWorkspace\"]\n4:I[81984,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-1c0e0a0b09f3bede.js\"],\"NotesProvider\"]\n5:I[48484,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-1c0e0a0b09f3bede.js\"],\"PlanProvider\"]\n6:I[96848,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-1c0e0a0b09f3bede.js\"],\"TopNav\"]\n7:I[52174,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-1c0e0a0b09f3bede.js\"],\"MainRegion\"]\n8:I[57121,[],\"\"]\n9:I[74581,[],\"\"]\na:I[434,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-1c0e0a0b09f3bede.js\"],\"PlanBar\"]\nb:I[1494,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-1c0e0a0b09f3bede.js\"],\"NotesDrawer\"]\nc:I[33082,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-407808fee210eca2.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4294\",\"static/chunks/4294-0e5034f9c5643c3f.js\",\"7886\",\"static/chunks/7886-46eaf3a9533310f7.js\",\"7177\",\"static/chunks/app/layout-1c0e0a0b09f3bede.js\"],\"UpdateBanner\"]\nd:I[90484,[],\"OutletBoundary\"]\ne:\"$Sreact.suspense\"\n11:I[90484,[],\"ViewportBoundary\"]\n13:I[90484,[],\"MetadataBoundary\"]\n15:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/22a5144ee8d83bca-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/7d4881bb7e1bf84d-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/4cddafb96f165148.css\",\"style\"]\n:HL[\"/_next/static/css/e02ab5db9ff2dca2.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/4cddafb96f165148.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/e02ab5db9ff2dca2.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark __variable_246ccd __variable_c29908 h-full antialiased\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col bg-background text-foreground\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{\"children\":[[\"$\",\"$L5\",null,{\"children\":[[\"$\",\"$L6\",null,{\"repo\":\"beacon\"}],[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$La\",null,{}]]}],[\"$\",\"$Lb\",null,{}]]}],[\"$\",\"$Lc\",null,{\"currentVersion\":\"0.1.41\"}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@f\"}]}]]}],{},null,false,null]},null,false,\"$@10\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L11\",null,{\"children\":\"$L12\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L13\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L14\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$15\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"d7yMlZAE4rxhUZzJXRGvS\"}\n"])</script><script>self.__next_f.push([1,"16:[]\n10:\"$W16\"\n"])</script><script>self.__next_f.push([1,"12:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"17:I[86869,[],\"IconMark\"]\nf:null\n14:[[\"$\",\"title\",\"0\",{\"children\":\"Beacon\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A local control panel for the repository you're working in\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?bb93a1375ed3c298\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"link\",\"3\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?f9d64651576bd776\",\"type\":\"image/png\",\"sizes\":\"180x180\"}],[\"$\",\"$L17\",\"4\",{}]]\n"])</script></body></html>
|