trybeacon 0.1.88 → 0.1.89
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +18 -16
- 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/@modal/(.)settings/page.js +2 -2
- package/.next/server/app/@modal/(.)settings/page.js.nft.json +1 -1
- package/.next/server/app/@modal/(.)settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +3 -3
- package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/ask/answer/route.js +1 -1
- package/.next/server/app/api/ask/deliver/route.js +1 -0
- package/.next/server/app/api/ask/deliver/route.js.nft.json +1 -0
- package/.next/server/app/api/ask/deliver/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/ask/route.js +1 -1
- package/.next/server/app/api/ask/verdict/route.js +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/changes/comment/answer/route.js +2 -2
- package/.next/server/app/api/changes/comment/claim/route.js +2 -2
- package/.next/server/app/api/changes/comment/route.js +2 -2
- package/.next/server/app/api/changes/quality/route.js +1 -1
- package/.next/server/app/api/changes/route.js +1 -1
- package/.next/server/app/api/changes/viewed/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 +1 -1
- package/.next/server/app/api/db/arrange/route.js +1 -1
- package/.next/server/app/api/db/backfill-access/route.js +1 -1
- package/.next/server/app/api/db/position/route.js +1 -1
- package/.next/server/app/api/db/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/deliverer/route.js +1 -0
- package/.next/server/app/api/deliverer/route.js.nft.json +1 -0
- package/.next/server/app/api/deliverer/route_client-reference-manifest.js +1 -0
- 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/ingest/route.js +1 -1
- package/.next/server/app/api/init/route.js +1 -1
- package/.next/server/app/api/lesson/close/route.js +1 -1
- package/.next/server/app/api/lesson/presence/route.js +1 -1
- package/.next/server/app/api/lesson/questions/route.js +1 -1
- package/.next/server/app/api/lesson/route.js +1 -1
- package/.next/server/app/api/lesson/save/route.js +1 -1
- package/.next/server/app/api/lesson/verdict/route.js +1 -1
- package/.next/server/app/api/linear/route.js +1 -1
- package/.next/server/app/api/linear/scopes/route.js +2 -2
- package/.next/server/app/api/linear/sync/route.js +1 -1
- package/.next/server/app/api/map/describe/route.js +1 -1
- 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/mention-search/route.js +1 -1
- package/.next/server/app/api/nodes/[id]/position/route.js +1 -1
- package/.next/server/app/api/nodes/[id]/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 +1 -1
- package/.next/server/app/api/plan/history/route.js +1 -1
- package/.next/server/app/api/plan/markdown/route.js +1 -1
- package/.next/server/app/api/plan/presence/route.js +1 -1
- package/.next/server/app/api/plan/route.js +1 -1
- package/.next/server/app/api/plan/verdict/route.js +1 -1
- package/.next/server/app/api/preferences/route.js +1 -1
- package/.next/server/app/api/project-meta/route.js +1 -1
- package/.next/server/app/api/reset/route.js +1 -1
- package/.next/server/app/api/scope-guard/check/route.js +2 -2
- package/.next/server/app/api/share/create/route.js +1 -1
- package/.next/server/app/api/share/route.js +1 -1
- package/.next/server/app/api/stream/route.js +2 -2
- package/.next/server/app/api/tab/nav/route.js +1 -1
- package/.next/server/app/api/tab/park/route.js +1 -1
- package/.next/server/app/api/tab/presence/route.js +1 -1
- package/.next/server/app/api/tab/view/route.js +1 -1
- package/.next/server/app/api/telemetry/route.js +1 -1
- package/.next/server/app/api/telemetry/stats/route.js +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/api/workspace/activate/route.js +1 -1
- package/.next/server/app/api/workspace/route.js +1 -1
- package/.next/server/app/apple-icon.png/route.js +1 -1
- package/.next/server/app/docs/page.js +2 -2
- package/.next/server/app/docs/page.js.nft.json +1 -1
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +3 -3
- package/.next/server/app/docs.segments/@modal/__DEFAULT__.segment.rsc +1 -1
- package/.next/server/app/docs.segments/_full.segment.rsc +3 -3
- package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/docs.segments/_index.segment.rsc +3 -3
- package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
- package/.next/server/app/help/page.js +2 -2
- package/.next/server/app/help/page.js.nft.json +1 -1
- package/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/.next/server/app/help.html +1 -1
- package/.next/server/app/help.rsc +3 -3
- package/.next/server/app/help.segments/@modal/__DEFAULT__.segment.rsc +1 -1
- package/.next/server/app/help.segments/_full.segment.rsc +3 -3
- package/.next/server/app/help.segments/_head.segment.rsc +1 -1
- package/.next/server/app/help.segments/_index.segment.rsc +3 -3
- package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/help.segments/help.segment.rsc +1 -1
- package/.next/server/app/icon.svg/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/@modal/__DEFAULT__.segment.rsc +1 -1
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/learn/page.js +3 -3
- package/.next/server/app/learn/page.js.nft.json +1 -1
- package/.next/server/app/learn/page_client-reference-manifest.js +1 -1
- package/.next/server/app/map/page.js +2 -2
- package/.next/server/app/map/page.js.nft.json +1 -1
- package/.next/server/app/map/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/parked/page.js +2 -2
- package/.next/server/app/parked/page.js.nft.json +1 -1
- package/.next/server/app/parked/page_client-reference-manifest.js +1 -1
- package/.next/server/app/plan/page.js +3 -3
- package/.next/server/app/plan/page.js.nft.json +1 -1
- package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
- package/.next/server/app/s/[token]/page.js +2 -2
- package/.next/server/app/s/[token]/page.js.nft.json +1 -1
- package/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +2 -2
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +18 -16
- package/.next/server/chunks/2031.js +1 -1
- package/.next/server/chunks/2579.js +1 -0
- package/.next/server/chunks/{5704.js → 5332.js} +2 -2
- package/.next/server/chunks/5623.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/CgztmUmahokH2oDzktISo/_buildManifest.js +1 -0
- package/.next/static/chunks/6579-1efe1d8b378c81a7.js +1 -0
- package/.next/static/chunks/app/@modal/default-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/_global-error/page-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/ask/answer/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/ask/deliver/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/ask/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/ask/verdict/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/board-annotations/[id]/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/board-annotations/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/board-layout/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/bug-flags/[id]/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/bug-flags/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/changes/comment/answer/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/changes/comment/claim/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/changes/comment/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/changes/quality/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/changes/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/changes/viewed/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/code-graph/position/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/code-graph/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/context/feature/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/context/file/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/context/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/db/arrange/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/db/backfill-access/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/db/position/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/db/prune-planned/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/db/relations/[id]/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/db/tables/[id]/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/deliverer/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/draft/approve/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/draft/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/draft/status/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/edges/[id]/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/edges/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/endpoints/[id]/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/entities/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/ingest/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/init/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/lesson/close/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/lesson/presence/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/lesson/questions/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/lesson/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/lesson/save/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/lesson/verdict/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/linear/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/linear/scopes/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/linear/sync/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/map/describe/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/map/files/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/map/finish/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/map/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/map/start/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/map/touch-active/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/mention-search/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/position/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/nodes/positions/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/nodes/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/nodes/subtasks/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/notes/[id]/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/notes/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/open/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/plan/annotations/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/plan/approve/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/plan/history/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/plan/markdown/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/plan/presence/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/plan/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/plan/verdict/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/preferences/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/project-meta/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/reset/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/scope-guard/check/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/share/create/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/share/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/stream/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/tab/nav/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/tab/park/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/tab/presence/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/tab/view/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/telemetry/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/telemetry/stats/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/version/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/workspace/activate/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/api/workspace/route-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/app/layout-a8bb07fb86893add.js +1 -0
- package/.next/static/chunks/app/learn/{page-9242d1cf07061b79.js → page-e6401368ea95de46.js} +1 -1
- package/.next/static/chunks/app/map/{page-4e82a74041f231c0.js → page-374841ad0b729ce5.js} +1 -1
- package/.next/static/chunks/app/plan/{page-e53f4b260c16df74.js → page-809509b6149dbe6a.js} +2 -2
- package/.next/static/chunks/app/s/[token]/{page-cfd3c186ba4c4c91.js → page-57821fa904e9e018.js} +1 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/default-null-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-ae4502d569ac0303.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ae4502d569ac0303.js +1 -0
- package/.next/static/css/56890131dbc6daff.css +1 -0
- package/.next/trace +47 -47
- package/.next/trace-build +1 -1
- package/.next/types/app/api/ask/deliver/route.ts +351 -0
- package/.next/types/app/api/deliverer/route.ts +351 -0
- package/.next/types/routes.d.ts +3 -1
- package/.next/types/validator.ts +18 -0
- package/dist/bin/ask.js +2 -2
- package/package.json +1 -1
- package/.next/server/chunks/297.js +0 -1
- package/.next/static/LKQRsrATBF5LppZpLPoZ6/_buildManifest.js +0 -1
- package/.next/static/chunks/4734-ec7d86c0bdede706.js +0 -1
- package/.next/static/chunks/app/@modal/default-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/_global-error/page-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/ask/answer/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/ask/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/ask/verdict/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/board-annotations/[id]/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/board-annotations/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/board-layout/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/bug-flags/[id]/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/bug-flags/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/changes/comment/answer/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/changes/comment/claim/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/changes/comment/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/changes/quality/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/changes/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/changes/viewed/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/code-graph/position/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/code-graph/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/context/feature/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/context/file/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/context/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/db/arrange/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/db/backfill-access/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/db/position/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/db/prune-planned/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/db/relations/[id]/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/db/tables/[id]/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/draft/approve/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/draft/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/draft/status/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/edges/[id]/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/edges/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/endpoints/[id]/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/entities/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/ingest/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/init/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/lesson/close/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/lesson/presence/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/lesson/questions/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/lesson/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/lesson/save/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/lesson/verdict/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/linear/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/linear/scopes/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/linear/sync/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/map/describe/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/map/files/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/map/finish/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/map/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/map/start/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/map/touch-active/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/mention-search/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/position/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/nodes/positions/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/nodes/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/nodes/subtasks/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/notes/[id]/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/notes/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/open/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/plan/annotations/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/plan/approve/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/plan/history/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/plan/markdown/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/plan/presence/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/plan/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/plan/verdict/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/preferences/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/project-meta/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/reset/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/scope-guard/check/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/share/create/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/share/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/stream/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/tab/nav/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/tab/park/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/tab/presence/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/tab/view/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/telemetry/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/telemetry/stats/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/version/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/workspace/activate/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/api/workspace/route-4438349a80c812db.js +0 -1
- package/.next/static/chunks/app/layout-d71bf93c16d42bc0.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-4438349a80c812db.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/default-null-4438349a80c812db.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-4438349a80c812db.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-4438349a80c812db.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-4438349a80c812db.js +0 -1
- package/.next/static/css/664b23c4403cdb49.css +0 -1
- /package/.next/static/{LKQRsrATBF5LppZpLPoZ6 → CgztmUmahokH2oDzktISo}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=2579,exports.ids=[2579],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,"4091229f7df2561c0782b621991cb1a98d97a2db79",null),(0,e.A)(p,"60d0fc13b71d9cfd5d7d6960bda725312f03b99f07",null),(0,e.A)(q,"6048ea010594ee5855be1c4827b247f769ac020a8d",null),(0,e.A)(r,"4096eef23002f61bed2d9d40c10ac39a0b825a10e5",null),(0,e.A)(s,"40b8d6aa6e47fe49efb50a8540f8519f8a1a0a1f6c",null),(0,e.A)(t,"40ffa6c42af6c5129b3886462aabc37ab99414cc69",null),(0,e.A)(u,"40f7a8983b9416143d12d0a3cb15262a7629bcfb18",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)}})},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)}})},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(2e4).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(2e4).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)}})},8422:(a,b,c)=>{c.d(b,{p:()=>f});var d=c(48249);c(67484);var e=c(33191);function f({className:a,type:b,...c}){return(0,d.jsx)("input",{type:b,"data-slot":"input",className:(0,e.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})}},9182:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{"4091229f7df2561c0782b621991cb1a98d97a2db79":()=>e.HQ,"4096eef23002f61bed2d9d40c10ac39a0b825a10e5":()=>e.hY,"40b8d6aa6e47fe49efb50a8540f8519f8a1a0a1f6c":()=>e.hg,"40f7a8983b9416143d12d0a3cb15262a7629bcfb18":()=>e.pJ,"40ffa6c42af6c5129b3886462aabc37ab99414cc69":()=>e.cl,"6048ea010594ee5855be1c4827b247f769ac020a8d":()=>e.t3,"60d0fc13b71d9cfd5d7d6960bda725312f03b99f07":()=>e.Oz});var e=c(1110),f=a([e]);e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},10556:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(62896);c(22443),c(47446);var e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},16189:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{n:()=>i});var e=c(80941),f=c(62896),g=a([f]);async function h(a){if(a)return void await (0,e.kO)(a);let b=(0,e.UP)();b?await (0,e.kO)(b):await (0,f.e$)()}async function i(a){let b=null;try{let{cookies:a}=await c.e(6042).then(c.bind(c,36042)),d=await a(),f=d.get(e.Dk)?.value??null;b=f&&(0,e.K4)(f)?f:null}catch{}return await h(b),(0,e.X_)(b,a)}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},22443:(a,b,c)=>{c.r(b),c.d(b,{appSetting:()=>E,boardAnnotation:()=>r,bugFlag:()=>s,codeFile:()=>B,codeFileEdge:()=>C,dbColumn:()=>u,dbRelation:()=>v,dbTable:()=>t,draftColumn:()=>z,draftRelation:()=>A,draftTable:()=>y,edge:()=>o,endpoint:()=>w,endpointTable:()=>x,node:()=>l,nodeFile:()=>m,nodeTags:()=>p,note:()=>q,planContract:()=>H,projectMeta:()=>F,syncState:()=>D,tag:()=>n,workspaceFlag:()=>G});var d=c(16996),e=c(55402),f=c(76003),g=c(24267),h=c(3161),i=c(80822),j=c(96508),k=c(70202);let l=(0,d.D)("Node",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),view:(0,e.Qq)().notNull(),kind:(0,e.Qq)().default("FEATURE").notNull(),cluster:(0,e.Qq)(),layer:(0,e.Qq)(),title:(0,e.Qq)().notNull(),role:(0,e.Qq)(),plain:(0,e.Qq)(),status:(0,e.Qq)().default("PENDING").notNull(),priority:(0,f.nd)().default(2).notNull(),progress:(0,f.nd)().default(0).notNull(),x:(0,g.x)().default(0).notNull(),y:(0,g.x)().default(0).notNull(),sourceRef:(0,e.Qq)(),externalId:(0,e.Qq)(),source:(0,e.Qq)().default("MANUAL").notNull(),planId:(0,e.Qq)(),parentId:(0,e.Qq)(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date),externalUpdatedAt:(0,f.nd)({mode:"timestamp_ms"}),externalSyncedAt:(0,f.nd)({mode:"timestamp_ms"}),externalSnapshot:(0,e.Qq)(),assigneeName:(0,e.Qq)(),assigneeAvatarUrl:(0,e.Qq)(),hiddenAt:(0,f.nd)({mode:"timestamp_ms"})},a=>[(0,h.Pe)("Node_cluster_idx").on(a.cluster),(0,h.Pe)("Node_parentId_idx").on(a.parentId),(0,h.Pe)("Node_view_idx").on(a.view),(0,i.mt)(()=>({columns:[a.parentId],foreignColumns:[a.id],name:"Node_parentId_Node_id_fk"})).onUpdate("cascade").onDelete("cascade")]),m=(0,d.D)("NodeFile",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),nodeId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),path:(0,e.Qq)().notNull()},a=>[(0,h.GL)("NodeFile_nodeId_path_key").on(a.nodeId,a.path),(0,h.Pe)("NodeFile_nodeId_idx").on(a.nodeId)]),n=(0,d.D)("Tag",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),label:(0,e.Qq)().notNull(),color:(0,e.Qq)()},a=>[(0,h.GL)("Tag_label_key").on(a.label)]),o=(0,d.D)("Edge",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),fromId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),toId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),kind:(0,e.Qq)().default("DEPENDS").notNull(),label:(0,e.Qq)(),sourceHandle:(0,e.Qq)(),targetHandle:(0,e.Qq)()},a=>[(0,h.GL)("Edge_fromId_toId_kind_key").on(a.fromId,a.toId,a.kind),(0,h.Pe)("Edge_toId_idx").on(a.toId),(0,h.Pe)("Edge_fromId_idx").on(a.fromId)]),p=(0,d.D)("_NodeTags",{a:(0,e.Qq)("A").notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),b:(0,e.Qq)("B").notNull().references(()=>n.id,{onDelete:"cascade",onUpdate:"cascade"})},a=>[(0,h.GL)("_NodeTags_AB_unique").on(a.a,a.b),(0,h.Pe)("_NodeTags_B_index").on(a.b)]),q=(0,d.D)("Note",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),title:(0,e.Qq)().default("Untitled").notNull(),body:(0,e.Qq)().default("").notNull(),ord:(0,g.x)().default(0).notNull(),pinned:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.Pe)("Note_updatedAt_idx").on(a.updatedAt)]),r=(0,d.D)("BoardAnnotation",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),targetKind:(0,e.Qq)().notNull(),targetId:(0,e.Qq)().notNull(),columnName:(0,e.Qq)(),body:(0,e.Qq)().default("").notNull(),x:(0,g.x)(),y:(0,g.x)(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.Pe)("BoardAnnotation_target_idx").on(a.targetId)]),s=(0,d.D)("BugFlag",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),nodeId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),by:(0,e.Qq)().notNull(),note:(0,e.Qq)().notNull(),resolvedAt:(0,f.nd)({mode:"timestamp_ms"}),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},a=>[(0,h.Pe)("BugFlag_nodeId_idx").on(a.nodeId)]),t=(0,d.D)("DbTable",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),name:(0,e.Qq)().notNull(),domain:(0,e.Qq)(),description:(0,e.Qq)(),source:(0,e.Qq)().default("MANUAL").notNull(),planId:(0,e.Qq)(),x:(0,g.x)().default(0).notNull(),y:(0,g.x)().default(0).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.Pe)("DbTable_domain_idx").on(a.domain),(0,h.GL)("DbTable_name_key").on(a.name)]),u=(0,d.D)("DbColumn",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),tableId:(0,e.Qq)().notNull().references(()=>t.id,{onDelete:"cascade",onUpdate:"cascade"}),name:(0,e.Qq)().notNull(),type:(0,e.Qq)().notNull(),isPk:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),isFk:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),nullable:(0,f.nd)({mode:"boolean"}).default(!0).notNull(),note:(0,e.Qq)(),ord:(0,f.nd)().default(0).notNull()},a=>[(0,h.GL)("DbColumn_tableId_name_key").on(a.tableId,a.name),(0,h.Pe)("DbColumn_tableId_idx").on(a.tableId)]),v=(0,d.D)("DbRelation",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),fromTableId:(0,e.Qq)().notNull().references(()=>t.id,{onDelete:"cascade",onUpdate:"cascade"}),toTableId:(0,e.Qq)().notNull().references(()=>t.id,{onDelete:"cascade",onUpdate:"cascade"}),fromColumn:(0,e.Qq)().notNull(),toColumn:(0,e.Qq)().notNull(),label:(0,e.Qq)()},a=>[(0,h.Pe)("DbRelation_toTableId_idx").on(a.toTableId),(0,h.Pe)("DbRelation_fromTableId_idx").on(a.fromTableId)]),w=(0,d.D)("Endpoint",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),method:(0,e.Qq)().notNull(),path:(0,e.Qq)().notNull(),domain:(0,e.Qq)(),description:(0,e.Qq)(),source:(0,e.Qq)().default("MANUAL").notNull(),planId:(0,e.Qq)(),x:(0,g.x)().default(0).notNull(),y:(0,g.x)().default(0).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.GL)("Endpoint_method_path_key").on(a.method,a.path),(0,h.Pe)("Endpoint_domain_idx").on(a.domain)]),x=(0,d.D)("EndpointTable",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),endpointId:(0,e.Qq)().notNull().references(()=>w.id,{onDelete:"cascade",onUpdate:"cascade"}),tableId:(0,e.Qq)().notNull().references(()=>t.id,{onDelete:"cascade",onUpdate:"cascade"}),access:(0,e.Qq)().default("read").notNull()},a=>[(0,h.GL)("EndpointTable_endpointId_tableId_key").on(a.endpointId,a.tableId),(0,h.Pe)("EndpointTable_tableId_idx").on(a.tableId)]),y=(0,d.D)("DraftTable",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),name:(0,e.Qq)().notNull(),domain:(0,e.Qq)(),description:(0,e.Qq)(),x:(0,g.x)().default(0).notNull(),y:(0,g.x)().default(0).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},a=>[(0,h.GL)("DraftTable_name_key").on(a.name)]),z=(0,d.D)("DraftColumn",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),tableId:(0,e.Qq)().notNull().references(()=>y.id,{onDelete:"cascade",onUpdate:"cascade"}),name:(0,e.Qq)().notNull(),type:(0,e.Qq)().notNull(),isPk:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),isFk:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),nullable:(0,f.nd)({mode:"boolean"}).default(!0).notNull(),note:(0,e.Qq)(),ord:(0,f.nd)().default(0).notNull()},a=>[(0,h.Pe)("DraftColumn_tableId_idx").on(a.tableId)]),A=(0,d.D)("DraftRelation",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),fromTableId:(0,e.Qq)().notNull().references(()=>y.id,{onDelete:"cascade",onUpdate:"cascade"}),toTableId:(0,e.Qq)().notNull().references(()=>y.id,{onDelete:"cascade",onUpdate:"cascade"}),fromColumn:(0,e.Qq)().notNull(),toColumn:(0,e.Qq)().notNull(),label:(0,e.Qq)()},a=>[(0,h.Pe)("DraftRelation_toTableId_idx").on(a.toTableId),(0,h.Pe)("DraftRelation_fromTableId_idx").on(a.fromTableId)]),B=(0,d.D)("CodeFile",{path:(0,e.Qq)().primaryKey(),root:(0,e.Qq)(),lang:(0,e.Qq)(),x:(0,g.x)().default(0).notNull(),y:(0,g.x)().default(0).notNull(),mtimeMs:(0,g.x)(),size:(0,f.nd)(),inDegree:(0,f.nd)().default(0).notNull(),outDegree:(0,f.nd)().default(0).notNull(),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),C=(0,d.D)("CodeFileEdge",{fromPath:(0,e.Qq)().notNull().references(()=>B.path,{onDelete:"cascade",onUpdate:"cascade"}),toPath:(0,e.Qq)().notNull().references(()=>B.path,{onDelete:"cascade",onUpdate:"cascade"}),circular:(0,f.nd)({mode:"boolean"}).default(!1).notNull()},a=>[(0,h.Pe)("CodeFileEdge_circular_idx").on(a.circular),(0,h.Pe)("CodeFileEdge_toPath_idx").on(a.toPath),(0,h.Pe)("CodeFileEdge_fromPath_idx").on(a.fromPath),(0,j.ie)({columns:[a.fromPath,a.toPath],name:"CodeFileEdge_fromPath_toPath_pk"})]),D=(0,d.D)("SyncState",{id:(0,e.Qq)().primaryKey().default("singleton"),version:(0,f.nd)().default(0).notNull(),codeGraphSyncedAt:(0,f.nd)({mode:"timestamp_ms"}),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),E=(0,d.D)("AppSetting",{id:(0,e.Qq)().primaryKey().default("singleton"),editor:(0,e.Qq)().default("auto").notNull(),currentFeatureId:(0,e.Qq)(),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),F=(0,d.D)("ProjectMeta",{id:(0,e.Qq)().primaryKey().default("singleton"),overview:(0,e.Qq)(),conventions:(0,e.Qq)().default("[]").notNull(),hasFrontend:(0,f.nd)({mode:"boolean"}),classificationRoots:(0,e.Qq)().default("[]").notNull(),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)}),G=(0,d.D)("WorkspaceFlag",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),key:(0,e.Qq)().notNull(),enabled:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),config:(0,e.Qq)(),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.GL)("WorkspaceFlag_key_key").on(a.key)]),H=(0,d.D)("PlanContract",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),planId:(0,e.Qq)().notNull(),declaredFiles:(0,e.Qq)().default("[]").notNull(),authorizedExtras:(0,e.Qq)().default("[]").notNull(),active:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.GL)("PlanContract_planId_key").on(a.planId),(0,h.Pe)("PlanContract_active_idx").on(a.active)])},23727:(a,b,c)=>{c.d(b,{U:()=>h,ZH:()=>i,u1:()=>j});var d=c(55030);function e(a){let{x:b,y:c}=a.internals.positionAbsolute,d=a.measured?.width??0,e=a.measured?.height??0;return{x:b,y:c,w:d,h:e,cx:b+d/2,cy:c+e/2}}function f(a,b){let c=e(a),d=e(b),f=c.w/2||1,g=c.h/2||1,h=(d.cx-c.cx)/(2*f)-(d.cy-c.cy)/(2*g),i=(d.cx-c.cx)/(2*f)+(d.cy-c.cy)/(2*g),j=1/(Math.abs(h)+Math.abs(i)||1);return{x:f*j*(h+i)+c.cx,y:g*j*(-h+i)+c.cy}}function g(a,b){let c=e(a),f=Math.round(b.x),g=Math.round(b.y);return f<=Math.round(c.x)+1?d.yX.Left:f>=Math.round(c.x+c.w)-1?d.yX.Right:g<=Math.round(c.y)+1?d.yX.Top:d.yX.Bottom}function h(a,b){let c=f(a,b),d=f(b,a);return{sx:c.x,sy:c.y,tx:d.x,ty:d.y,sourcePos:g(a,c),targetPos:g(b,d)}}function i(a,b,c,d,e){let f=e.filter(e=>(function(a,b,c,d,e){let f=e.x-14,g=e.x+e.w+14,h=e.y-14,i=e.y+e.h+14;if(Math.max(a,c)<f||Math.min(a,c)>g||Math.max(b,d)<h||Math.min(b,d)>i)return!1;for(let e=1;e<24;e++){let j=e/24,k=a+(c-a)*j,l=b+(d-b)*j;if(k>=f&&k<=g&&l>=h&&l<=i)return!0}return!1})(a,b,c,d,e));if(!f.length)return null;let g=(a+c)/2,h=(b+d)/2,i=Math.min(...f.map(a=>a.y))-14-26,j=Math.max(...f.map(a=>a.y+a.h))+14+26,k=Math.abs(i-h)<=Math.abs(j-h)?i:j,l=a+(c-a)*.25,m=a+(c-a)*.75;return{path:`M ${a},${b} C ${l},${k} ${m},${k} ${c},${d}`,labelX:g,labelY:k}}function j(a,b){let c=a.x+a.w/2,d=a.y+a.h/2,e=b.x-c,f=b.y-d;if(0===e&&0===f)return{x:c,y:d};let g=1/Math.max(Math.abs(e)/(a.w/2||1),Math.abs(f)/(a.h/2||1));return{x:c+e*g,y:d+f*g}}},25127:(a,b,c)=>{c.d(b,{W:()=>e});var d=c(67484);function e(a,b){let[c,e]=(0,d.useState)(!1),[f,g]=(0,d.useState)(0),h=c?a[f]??null:null,i=(0,d.useCallback)(()=>{g(0),e(!0)},[]),j=(0,d.useCallback)(()=>e(!1),[]),k=(0,d.useCallback)(()=>g(b=>Math.min(b+1,a.length-1)),[a.length]),l=(0,d.useCallback)(()=>g(a=>Math.max(a-1,0)),[]),m=(0,d.useCallback)(b=>{b>=0&&b<a.length&&g(b)},[a.length]),n=(0,d.useMemo)(()=>h&&h.focusIds.length?new Set(h.focusIds):null,[h]);return{active:c,index:f,step:h,start:i,stop:j,next:k,prev:l,goto:m,focusIds:n}}},27267:(a,b,c)=>{c.d(b,{TT:()=>f,Xf:()=>h,m6:()=>e,nR:()=>g,yl:()=>d});let d=["PENDING","IN_PROGRESS","DONE","BLOCKED","CANCELLED","DEPRIORITIZED"],e=["KEEP","REBUILD","REPLACE","DROP"],f=["IN_PROGRESS","PENDING","BLOCKED","DONE","DEPRIORITIZED","CANCELLED"],g={DONE:{label:"Done",className:"border-emerald-500/30 bg-emerald-500/15 text-emerald-700 dark:text-emerald-300"},IN_PROGRESS:{label:"In progress",className:"border-sky-500/30 bg-sky-500/15 text-sky-700 dark:text-sky-300"},PENDING:{label:"Pending",className:"border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-200"},BLOCKED:{label:"Blocked",className:"border-orange-500/30 bg-orange-500/15 text-orange-700 dark:text-orange-300"},CANCELLED:{label:"Cancelled",className:"border-zinc-500/30 bg-zinc-500/10 text-zinc-600 dark:text-zinc-400 line-through"},DEPRIORITIZED:{label:"Deprioritized",className:"border-zinc-600/40 bg-zinc-600/10 text-zinc-600 dark:text-zinc-400"},KEEP:{label:"Keep",className:"border-emerald-500/30 bg-emerald-500/15 text-emerald-700 dark:text-emerald-300"},REBUILD:{label:"Rebuild",className:"border-violet-500/30 bg-violet-500/15 text-violet-700 dark:text-violet-300"},REPLACE:{label:"Replace",className:"border-rose-500/30 bg-rose-500/15 text-rose-700 dark:text-rose-300"},DROP:{label:"Drop",className:"border-zinc-500/30 bg-zinc-500/10 text-zinc-600 dark:text-zinc-400 line-through"}};function h(a){return a?.trim()||"—"}},27741:(a,b,c)=>{c.d(b,{S:()=>d});function d(a,b={}){let c=b.pad??20,e=b.header??26,f=new Map;for(let b of a){let a=f.get(b.group);a?(a.minX=Math.min(a.minX,b.x),a.minY=Math.min(a.minY,b.y),a.maxX=Math.max(a.maxX,b.x+b.w),a.maxY=Math.max(a.maxY,b.y+b.h),a.count++):f.set(b.group,{minX:b.x,minY:b.y,maxX:b.x+b.w,maxY:b.y+b.h,count:1})}return Array.from(f.entries()).sort(([a],[b])=>a.localeCompare(b)).map(([a,b])=>({key:a,label:a,x:b.minX-c,y:b.minY-c-e,w:b.maxX-b.minX+2*c,h:b.maxY-b.minY+2*c+e,count:b.count}))}},27840:(a,b,c)=>{},29303:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(62896);c(22443);var e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},30693:(a,b,c)=>{c.d(b,{Sq:()=>j,ZB:()=>o,aO:()=>l,aU:()=>n,p_:()=>k,yc:()=>m});var d=c(48249),e=c(49783),f=c(45535),g=c(48779),h=c(62190),i=c(33191);let j="!h-6 w-fit max-w-full !gap-1 rounded-md !border-0 !bg-transparent !px-1.5 !py-0 text-xs font-medium !shadow-none transition-colors hover:!bg-[var(--ink-hover)] [&_svg]:size-3";function k({topOffset:a,children:b,style:c}){return(0,d.jsx)(g.b,{className:"absolute bottom-0 right-0 z-10 flex w-[340px] flex-col rounded-none border-y-0 border-r-0",style:{top:a??0,...c},children:b})}function l({tabs:a,breadcrumb:b,comment:c,onClose:g}){return(0,d.jsxs)("div",{className:"flex items-center gap-1 border-b border-border py-2 pl-3 pr-2",children:[a?(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-0.5",children:[(0,d.jsx)(h.E,{active:"details"===a.active,onClick:()=>a.onChange("details"),children:"Details"}),(0,d.jsxs)(h.E,{active:"comments"===a.active,onClick:()=>a.onChange("comments"),children:["Comments",a.count>0&&(0,d.jsx)("span",{className:"ml-1 rounded-full bg-[var(--ink-active)] px-1 text-[9px] font-semibold leading-4",children:a.count})]})]}):(0,d.jsx)("span",{className:"min-w-0 truncate text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:b}),(0,d.jsxs)("div",{className:"ml-auto flex shrink-0 items-center gap-0.5",children:[c&&(0,d.jsx)("button",{type:"button",title:c.title,onClick:c.onClick,className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-[var(--ink-hover)] hover:text-[var(--accent-2,#ff7a45)]",children:(0,d.jsx)(e.A,{className:"size-4"})}),(0,d.jsx)("button",{onClick:g,title:"Close panel",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-[var(--ink-hover)] hover:text-foreground",children:(0,d.jsx)(f.A,{className:"size-4"})})]})]})}function m({icon:a,label:b,children:c}){return(0,d.jsxs)("div",{className:"flex min-h-7 items-center gap-2 text-xs",children:[(0,d.jsxs)("span",{className:"flex w-[88px] shrink-0 items-center gap-1.5 text-muted-foreground",children:[(0,d.jsx)(a,{className:"size-3.5"}),b]}),(0,d.jsx)("div",{className:"flex min-w-0 flex-1 items-center",children:c})]})}function n({title:a,children:b,className:c}){return(0,d.jsxs)("div",{className:(0,i.cn)("mt-4 border-t border-border pt-3",c),children:[(0,d.jsx)("h3",{className:"mb-1.5 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:a}),b]})}function o({label:a,value:b}){return(0,d.jsxs)("div",{children:[(0,d.jsx)("dd",{className:"text-lg font-semibold tabular-nums",children:b}),(0,d.jsx)("dt",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:a})]})}},32450:(a,b,c)=>{c.d(b,{$2:()=>g,a4:()=>e,no:()=>f});var d=c(67484);let e=new Set(["ROADMAP","ARCHITECTURE","DATABASE"]),f=(0,d.createContext)(null);function g(){return(0,d.useContext)(f)}},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-700 dark:text-emerald-300","bg-sky-500/15 text-sky-700 dark:text-sky-300","bg-violet-500/15 text-violet-700 dark:text-violet-300","bg-amber-500/15 text-amber-700 dark:text-amber-200","bg-rose-500/15 text-rose-700 dark:text-rose-300","bg-cyan-500/15 text-cyan-700 dark:text-cyan-300","bg-fuchsia-500/15 text-fuchsia-700 dark:text-fuchsia-300","bg-lime-500/15 text-lime-700 dark:text-lime-300","bg-orange-500/15 text-orange-700 dark:text-orange-300","bg-teal-500/15 text-teal-700 dark:text-teal-300","bg-indigo-500/15 text-indigo-700 dark:text-indigo-300","bg-pink-500/15 text-pink-700 dark: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-[var(--ink-active)] text-muted-foreground":d[b]}function h(a){let b=f(a);return null===b?"border-border bg-[var(--ink-hover)]":e[b]}let i=["#34d399","#38bdf8","#a78bfa","#fbbf24","#fb7185","#22d3ee","#e879f9","#a3e635","#fb923c","#2dd4bf","#818cf8","#f472b6"];function j(a){let b=f(a);return null===b?"#9ca3af":i[b]}},34849:(a,b,c)=>{c.d(b,{VI:()=>g});var d=c(27267),e=c(86892);function f(a,b,c){let d,e;return null==a.title?c:Math.max(c,(e=66+(((d=(a.title??"").trim())?Math.max(1,Math.ceil(d.length/17)):1)-1)*19,a.role&&a.role.trim()&&(e+=16),b>0&&(e+=22),e+24))}function g(a,b,c={}){let h=c.colW??320,i=c.rowH??150,j=c.childIndent??24,k=c.laneGap??56,l=c.bandGap??110,m=c.maxCols??10,n=c.minBandW??3*h,o=new Set(a.map(a=>a.id)),p=a=>!a.parentId||!o.has(a.parentId),q=a.filter(p),r=new Map;for(let b of a){if(p(b))continue;let a=r.get(b.parentId);a?a.push(b):r.set(b.parentId,[b])}let s="status"===b?a=>a.status:"priority"===b?a=>String(a.priority):a=>(a.cluster??"").trim()||"—",t=new Map;for(let a of q){let b=s(a),c=t.get(b);c?c.push(a):t.set(b,[a])}let u=(function(a,b,c){if("status"===a)return[...d.TT];if("priority"===a)return["0","1","2","3"];let e=Array.from(new Set(b.map(c))),f=e.filter(a=>"—"!==a).sort();return e.includes("—")?[...f,"—"]:f})(b,q,s).filter(a=>t.has(a)),v=[];for(let a of u){let b=t.get(a),c=b.reduce((a,b)=>a+1+(r.get(b.id)?.length??0),0),d=Math.max(1,Math.min(m,b.length,Math.round(Math.sqrt(.85*c))||1)),e=Array(d).fill(0),g=new Map;for(let a of b){let b=0;for(let a=1;a<d;a++)e[a]<e[b]&&(b=a);let c=b*h,k=e[b];g.set(a.id,{x:c,y:k});let l=r.get(a.id)??[],m=k+f(a,l.length,i);for(let a of l)g.set(a.id,{x:c+j,y:m}),m+=f(a,0,i);e[b]=m}let k=e.reduce((a,b)=>Math.max(a,b),0);v.push({id:a,w:d*h,h:k,local:g})}let w=(0,e.Xi)(v.map(a=>({id:a.id,w:a.w,h:a.h})),{gapX:k,gapY:l,viewportAspect:c.viewportAspect,minBandW:n,aspectSlack:1.5}),x=new Map;for(let a of v){let b=w.get(a.id);for(let[c,d]of a.local)x.set(c,{x:b.x+d.x,y:b.y+d.y})}return x}},35283:(a,b,c)=>{c.d(b,{H:()=>k,e:()=>j});var d=c(48249),e=c(67484),f=c(55030),g=c(8727),h=c(44010),i=c(33191);function j(a="pan"){let[b,c]=(0,e.useState)(a),d="pan"===b?{panOnDrag:!0,selectionOnDrag:!1,selectionMode:f.Qc.Partial,selectNodesOnDrag:!1}:{panOnDrag:[1,2],selectionOnDrag:!0,selectionMode:f.Qc.Partial,selectNodesOnDrag:!1};return{tool:b,setTool:c,flowProps:d,paneClass:"select"===b?"rf-tool-select":void 0}}function k({tool:a,onChange:b}){return(0,d.jsxs)("div",{className:"flex items-center gap-0.5 rounded-xl border border-border bg-card/95 p-1 shadow-lg backdrop-blur dark:border-white/15 dark:bg-[#202024]/95",children:[(0,d.jsx)(l,{active:"select"===a,label:"Select tool (V) — drag to box-select; move many nodes at once",onClick:()=>b("select"),children:(0,d.jsx)(g.A,{className:"size-4"})}),(0,d.jsx)(l,{active:"pan"===a,label:"Hand tool (H) — drag to pan the board",onClick:()=>b("pan"),children:(0,d.jsx)(h.A,{className:"size-4"})})]})}function l({active:a,label:b,onClick:c,children:e}){return(0,d.jsx)("button",{type:"button",title:b,"aria-pressed":a,onClick:c,className:(0,i.cn)("flex size-7 items-center justify-center rounded-lg transition-colors",a?"bg-[#ff7a45]/15 text-[#ff7a45]":"text-muted-foreground hover:bg-[var(--ink-active)] hover:text-foreground dark:hover:bg-white/8"),children:e})}},38476:(a,b,c)=>{c.d(b,{F1:()=>o,VY:()=>j,e6:()=>f,gG:()=>n,gX:()=>l,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"},h="text-[#4b5563] dark:text-[#8a8a8a]",i={GET:"text-[#15803d] dark:text-[#7bd389]",POST:"text-[#1d4ed8] dark:text-[#4ea1ff]",PUT:"text-[#b45309] dark:text-[#ffb86b]",PATCH:"text-[#b45309] dark:text-[#ffb86b]",DELETE:"text-[#be123c] dark:text-[#ff3860]"};function j(a){return a&&i[a]||h}let k={read:"text-[#1d4ed8] dark:text-[#4ea1ff]",write:"text-[#b45309] dark:text-[#ffb86b]","read-write":"text-[#6d28d9] dark:text-[#c792ea]"};function l(a){return a&&k[a]||h}let m={auth:"text-[#1d4ed8] dark:text-[#4ea1ff]",firms:"text-[#6d28d9] dark:text-[#c792ea]",search:"text-[#15803d] dark:text-[#7bd389]",storage:"text-[#b45309] dark:text-[#ffb86b]",petitions:"text-[#c2410c] dark:text-[#ff7a45]",monitoring:"text-[#b45309] dark:text-[#f5b942]",admin:"text-[#be185d] dark:text-[#ff6b9d]"};function n(a){return a&&m[a]||h}function o(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}},40335:(a,b,c)=>{c.d(b,{b:()=>g,d:()=>h});let d=a=>a.slice(a.lastIndexOf("/")+1),e=(a,b)=>b>a?", …":"";function f(a){let b=new Map;for(let c of a)b.set(d(c),(b.get(d(c))??0)+1);return a.map(a=>{let c=d(a);if((b.get(c)??0)<=1)return c;let e=a.slice(0,a.lastIndexOf("/")),f=e.slice(e.lastIndexOf("/")+1);return f?`${f}/${c}`:c})}function g(a,b,c){if(0===a.length)return[];let d=a=>c.get(a)??"(root)",g=new Map;for(let b of a){let a=d(b.path),c=g.get(a);c?c.push(b):g.set(a,[b])}let h=[...g.keys()],i=a=>g.get(a)?.length??0,j=new Map,k=new Map;for(let a of h)j.set(a,new Set),k.set(a,0);let l=new Set;for(let a of b){if(a.circular)continue;let b=d(a.from),c=d(a.to);if(b===c||!j.has(b)||!j.has(c))continue;let e=`${b}\0${c}`;l.has(e)||(l.add(e),j.get(b).add(c),k.set(c,(k.get(c)??0)+1))}let m=(a,b)=>i(b)-i(a)||a.localeCompare(b),n=new Map(k),o=new Set,p=[];for(;p.length<h.length;){let a=h.filter(a=>!o.has(a)&&(n.get(a)??0)===0).sort(m);if(0===a.length){for(let a of h.filter(a=>!o.has(a)).sort((a,b)=>(n.get(a)??0)-(n.get(b)??0)||i(b)-i(a)||a.localeCompare(b)))p.push(a),o.add(a);break}for(let b of a)for(let a of(p.push(b),o.add(b),j.get(b)))n.set(a,(n.get(a)??0)-1)}let q=a.filter(a=>(a.inDegree??0)===0).sort((a,b)=>(b.outDegree??0)-(a.outDegree??0)||a.path.localeCompare(b.path)),r=[];if(r.push({id:"tour:overview",kind:"overview",title:"Project overview",summary:`${a.length} files across ${h.length} ${1===h.length?"area":"areas"} \xb7 ${b.length} imports. Step through the architecture in dependency order — entry points first.`,focusIds:[]}),q.length){let a=f(q.slice(0,4).map(a=>a.path));r.push({id:"tour:entry",kind:"entry",title:"Entry points",summary:`${q.length} file${1===q.length?"":"s"} nothing imports — where execution starts: ${a.join(", ")}${e(4,q.length)}.`,focusIds:q.slice(0,12).map(a=>a.path)})}for(let a of p){let b=g.get(a),c=f([...b].sort((a,b)=>(b.inDegree??0)-(a.inDegree??0)||a.path.localeCompare(b.path)).slice(0,3).map(a=>a.path)),d=[...j.get(a)].sort(m),h=d.length?` \xb7 imports ${d.slice(0,3).join(", ")}${e(3,d.length)}`:" \xb7 no cross-area imports";r.push({id:`tour:group:${a}`,kind:"group",title:a,summary:`${b.length} file${1===b.length?"":"s"}${h} \xb7 top hubs: ${c.join(", ")}.`,focusIds:b.map(a=>a.path)})}return r}function h(a){if(0===a.length)return[];let b=a=>a.cluster?.trim()||"—",c=new Map;for(let d of a){let a=b(d),e=c.get(a);e?e.push(d):c.set(a,[d])}let d=a=>Math.min(...c.get(a).map(a=>a.x??0)),f=[...c.keys()].sort((a,b)=>d(a)-d(b)||a.localeCompare(b)),g=[{id:"tour:overview",kind:"overview",title:"Architecture overview",summary:`${a.length} component${1===a.length?"":"s"} across ${f.length} ${1===f.length?"domain":"domains"}. Walk the architecture domain by domain, upstream first.`,focusIds:[]}];for(let a of f){let b=c.get(a),d=b.slice(0,3).map(a=>a.title?.trim()||a.id);g.push({id:`tour:domain:${a}`,kind:"group",title:a,summary:`${b.length} component${1===b.length?"":"s"}: ${d.join(", ")}${e(3,b.length)}.`,focusIds:b.map(a=>a.id)})}return g}},40359:(a,b,c)=>{c.d(b,{d:()=>k});var d=c(48249),e=c(32039),f=c(45535),g=c(34644),h=c(91995),i=c(48779),j=c(33191);function k({steps:a,index:b,onPrev:c,onNext:l,onExit:m,onGoto:n}){let o=a[b];if(!o)return null;let p=b===a.length-1;return(0,d.jsxs)(i.b,{className:"absolute bottom-3 left-3 top-16 z-10 flex w-72 flex-col rounded-2xl",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-border px-3.5 py-2.5",children:[(0,d.jsxs)("span",{className:"flex items-center gap-1.5 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:[(0,d.jsx)(e.A,{className:"size-3.5"}),"Guided tour"]}),(0,d.jsx)("button",{onClick:m,title:"End tour (Esc)",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-[var(--ink-hover)] hover:text-foreground",children:(0,d.jsx)(f.A,{className:"size-4"})})]}),(0,d.jsxs)("div",{className:"border-b border-border px-3.5 py-3",children:[(0,d.jsxs)("div",{className:"text-[10px] font-medium uppercase tracking-wide text-[var(--accent-2,#ff7a45)]",children:["Step ",b+1," / ",a.length]}),(0,d.jsx)("h2",{className:"mt-1 break-words text-sm font-semibold leading-tight",children:o.title}),(0,d.jsx)("p",{className:"mt-1 text-[11px] leading-snug text-muted-foreground",children:o.summary})]}),(0,d.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto p-1.5",children:(0,d.jsx)("ol",{className:"space-y-0.5",children:a.map((a,c)=>(0,d.jsx)("li",{children:(0,d.jsxs)("button",{onClick:()=>n(c),title:a.title,className:(0,j.cn)("flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left transition-colors",c===b?"bg-[var(--ink-active)] text-foreground":"text-muted-foreground hover:bg-[var(--ink-hover)] hover:text-foreground"),children:[(0,d.jsx)("span",{className:(0,j.cn)("flex size-4 shrink-0 items-center justify-center rounded-full text-[9px] font-bold",c===b?"bg-[var(--accent-2,#ff7a45)] text-background":"bg-[var(--ink-active)] text-muted-foreground"),children:c+1}),(0,d.jsx)("span",{className:"truncate text-[11px]",children:a.title})]})},a.id))})}),(0,d.jsxs)("div",{className:"flex items-center justify-between gap-2 border-t border-border p-2",children:[(0,d.jsxs)("button",{onClick:c,disabled:0===b,className:"flex items-center gap-1 rounded-md px-2 py-1.5 text-[11px] text-muted-foreground transition-colors enabled:hover:bg-[var(--ink-hover)] enabled:hover:text-foreground disabled:opacity-40",children:[(0,d.jsx)(g.A,{className:"size-3.5"})," Prev"]}),p?(0,d.jsx)("button",{onClick:m,className:"rounded-md bg-[var(--accent-2,#ff7a45)]/90 px-3 py-1.5 text-[11px] font-semibold text-background transition-colors hover:bg-[var(--accent-2,#ff7a45)]",children:"Done"}):(0,d.jsxs)("button",{onClick:l,className:"flex items-center gap-1 rounded-md bg-foreground/10 px-3 py-1.5 text-[11px] font-semibold text-foreground transition-colors hover:bg-foreground/20",children:["Next ",(0,d.jsx)(h.A,{className:"size-3.5"})]})]})]})}},42800:(a,b,c)=>{c.d(b,{I:()=>j});var d=c(48249),e=c(67484),f=c(56024),g=c(55030),h=c(57684),i=c(23727);function j(a){let{deleteElements:b}=(0,f.VH)(),c=(0,f.JY)(a.source),j=(0,f.JY)(a.target),k=(0,f.pk)(),l=c&&j?(0,i.U)(c,j):null,m=(0,e.useMemo)(()=>k.filter(b=>b.id!==a.source&&b.id!==a.target).map(a=>({x:a.position.x,y:a.position.y,w:a.measured?.width??a.width??0,h:a.measured?.height??a.height??0})).filter(a=>a.w>0&&a.h>0),[k,a.source,a.target]),n=l?(0,i.ZH)(l.sx,l.sy,l.tx,l.ty,m):null,[o,p,q]=(0,g.Fp)(l?{sourceX:l.sx,sourceY:l.sy,sourcePosition:l.sourcePos,targetX:l.tx,targetY:l.ty,targetPosition:l.targetPos}:{sourceX:a.sourceX,sourceY:a.sourceY,sourcePosition:a.sourcePosition,targetX:a.targetX,targetY:a.targetY,targetPosition:a.targetPosition}),r=n?.path??o,s=n?.labelX??p,t=n?.labelY??q;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.tE,{id:a.id,path:r,style:a.style,markerEnd:a.markerEnd,interactionWidth:20}),a.label&&(0,d.jsx)(f.rV,{children:(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -120%) translate(${s}px, ${t}px)`,fontSize:11,color:"#cfcfcf",background:"#161616",padding:"1px 4px",borderRadius:4,pointerEvents:"none",zIndex:1e3},children:a.label})}),a.selected&&(0,d.jsx)(f.rV,{children:(0,d.jsx)("div",{className:"nodrag nopan",style:{position:"absolute",transform:`translate(-50%, 0) translate(${s}px, ${t+14}px)`,pointerEvents:"all",zIndex:1e3},children:(0,d.jsx)("button",{type:"button",onMouseDown:a=>a.stopPropagation(),onClick:c=>{c.stopPropagation(),b({edges:[{id:a.id}]})},title:"Delete (or press Backspace)",className:"flex size-7 items-center justify-center rounded-full border border-border 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)(h.A,{className:"size-3.5"})})})})]})}},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-border bg-[var(--ink-hover)] py-1 pl-2 pr-7 text-[12px] outline-none placeholder:text-muted-foreground/50 focus:bg-[var(--ink-active)]"}),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-[var(--ink-hover)] 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-[var(--ink-hover)]",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:()=>o});var d=c(48249),e=c(67484),f=c(2116),g=c.n(f),h=c(15996),i=c(41665),j=c(79602),k=c(36274);c(79768);var l=c(32450),m=c(33191);let n={ROADMAP:h.A,ARCHITECTURE:i.A,FILES:j.A,DATABASE:k.A};function o({tabs:a,active:b}){let[c,f]=(0,e.useState)(null),h=(0,l.$2)();return(0,d.jsx)("div",{className:"flex items-center gap-0.5",children:a.map(a=>{let e,f=a.value===b,i=a.Icon??n[a.value],j=(0,m.cn)("flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-[12px] font-medium tracking-tight transition-colors",f?"border-border bg-[var(--ink-active)] text-foreground shadow-[inset_0_1px_0_rgba(255,255,255,0.06)]":"border-transparent text-muted-foreground/80 hover:bg-[var(--ink-hover)] hover:text-foreground"),k=(0,d.jsxs)(d.Fragment,{children:[i?(0,d.jsx)(i,{className:(0,m.cn)("size-3",f&&"text-[#ff7a45]")}):null,(0,d.jsx)("span",{className:"hidden lg:inline",children:a.label})]});return h?.views.has(a.value)?(0,d.jsx)("button",{type:"button",title:a.label,onClick:()=>h.switchTo(a.value),className:j,children:k},a.value):(0,d.jsx)(g(),{href:(e=a.href,c?`${e}${e.includes("?")?"&":"?"}ws=${c}`:e),title:a.label,className:j,children:k},a.value)})})}},56173:(a,b,c)=>{c.d(b,{to:()=>e});var d=c(86892);function e(a,b,c={}){if(0===a.length)return new Map;let f=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),g=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,f),h=new Map(a.map(a=>[a.id,[]]));for(let a of f)h.get(a.fromId)?.push(a.toId);let i=Array.from(new Set(a.map(a=>a.group))),j=i.filter(a=>"—"!==a).sort(),k=i.includes("—")?[...j,"—"]:j,l=[];for(let b of k){let c=a.filter(a=>a.group===b),d=Math.min(...c.map(a=>g.get(a.id)??0)),e=Math.max(...c.map(a=>g.get(a.id)??0)),f=new Map,i=new Map,j=0,k=0;for(let a=d;a<=e;a++){let b=c.filter(b=>g.get(b.id)===a);if(!b.length)continue;let d=a=>{let b=(h.get(a.id)??[]).map(a=>i.get(a)).filter(a=>void 0!==a);return b.length?b.reduce((a,b)=>a+b,0)/b.length:1/0};b.sort((a,b)=>d(a)-d(b)||a.id.localeCompare(b.id));let e=Math.max(1,Math.ceil(Math.sqrt(2*b.length))),l=[];b.forEach((a,b)=>{let c=Math.floor(b/e),d=b%e;i.set(a.id,d);let g=l[c]??0;f.set(a.id,{x:j+360*c,y:g}),l[c]=g+(a.h??150),k=Math.max(k,l[c])}),j+=360*Math.ceil(b.length/e)}l.push({d:b,w:j,h:Math.max(k,150),local:f})}let m=(0,d.Xi)(l.map(a=>({id:a.d,w:a.w,h:a.h})),{gapX:84,gapY:80,viewportAspect:c.viewportAspect,minBandW:1080,aspectSlack:1.5}),n=new Map;for(let a of l){let b=m.get(a.d);for(let[c,d]of a.local)n.set(c,{x:b.x+d.x,y:b.y+d.y})}return n}},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-border bg-card/95 px-4 py-3 shadow-[0_18px_50px_-20px_rgba(0,0,0,0.9)] backdrop-blur transition-colors hover:border-foreground/20 dark:bg-[#1b1b1e]/95 dark:hover:border-white/20",!a.editable&&"cursor-pointer",b&&"border-[#ff7a45]/50"),children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute -left-px bottom-2 top-2 w-[3px] rounded-full",style:{background:j}}),(0,d.jsx)(f.h7,{type:"target",id:"in",position:g.yX.Top,isConnectable:!1,className:"!pointer-events-none !size-1 !min-h-0 !min-w-0 !border-0 !bg-transparent",style:{left:"auto",right:22,top:0}}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("div",{className:"font-mono text-[10px] font-semibold uppercase tracking-[0.22em]",style:{color:j},children:"Annotation \xb7 You"}),a.editable&&a.onDelete&&(0,d.jsx)("button",{type:"button",title:"Delete annotation",onClick:b=>{b.stopPropagation(),a.onDelete?.(a.annotationId)},className:"nodrag nopan -mr-1 rounded p-0.5 text-muted-foreground/60 opacity-0 transition-opacity hover:text-red-300 group-hover/anno:opacity-100",children:(0,d.jsx)(h.A,{className:"size-3"})})]}),a.editable?(0,d.jsx)("textarea",{value:c,autoFocus:!a.text.trim(),placeholder:"Type your annotation…",onChange:a=>l(a.target.value),onBlur:()=>{c!==a.text&&a.onChangeText?.(a.annotationId,c)},onKeyDown:a=>a.stopPropagation(),className:"nodrag nopan field-sizing-content mt-1.5 max-h-40 min-h-[2.25rem] w-full resize-none overflow-y-auto bg-transparent text-[13px] leading-snug text-foreground/95 outline-none placeholder:text-muted-foreground/60"}):(0,d.jsx)("div",{className:"mt-1.5 max-h-40 overflow-y-auto text-[13px] leading-snug text-foreground/95",children:a.text.trim()?a.text:(0,d.jsx)("span",{className:"text-muted-foreground",children:"…"})})]})}function l({n:a,annotationId:b,onClick:c}){return(0,d.jsxs)("button",{type:"button",title:`Annotation ${a} — view comment`,onClick:a=>{a.stopPropagation(),c?.(b)},className:"nodrag nopan relative flex size-6 items-center justify-center rounded-full font-mono text-[11px] font-bold text-[#181818] shadow-[0_0_0_3px_rgba(255,122,69,0.22),0_0_16px_2px_rgba(255,122,69,0.4)] transition-transform hover:scale-110",style:{background:j},children:[a,(0,d.jsx)(f.h7,{type:"source",id:`pin-${b}`,position:g.yX.Bottom,isConnectable:!1,className:"!pointer-events-none !size-1 !min-h-0 !min-w-0 !border-0 !bg-transparent",style:{left:"50%",bottom:2}})]})}function m({pins:a,onPinClick:b}){return a.length?(0,d.jsx)("span",{className:"absolute -right-3 top-1/2 z-10 flex -translate-y-1/2 flex-row-reverse gap-1",children:a.map(a=>(0,d.jsx)(l,{n:a.n,annotationId:a.id,onClick:b},a.id))}):null}},62190:(a,b,c)=>{c.d(b,{E:()=>f});var d=c(48249),e=c(33191);function f({active:a,onClick:b,icon:c,children:g}){return(0,d.jsxs)("button",{type:"button",onClick:b,className:(0,e.cn)("flex items-center gap-1 rounded-md px-2.5 py-1 text-[11px] font-medium transition-colors",a?"bg-[var(--ink-active)] text-foreground":"text-muted-foreground hover:text-foreground"),children:[c,g]})}},62444:(a,b,c)=>{c.d(b,{MapClient:()=>bM});var d=c(48249),e=c(67484),f=c(53735),g=c(55030),h=c(56024);c(71763);var i=c(10920),j=c(15828),k=c(69473),l=c(17313),m=c(28624),n=c(32039),o=c(90498),p=c(30170),q=c(95744),r=c(19099),s=c(1229),t=c(58720),u=c(99829);let v=(0,u.createServerReference)("40f7a8983b9416143d12d0a3cb15262a7629bcfb18",u.callServer,void 0,u.findSourceMapURL,"acceptSuggestionAction");var w=c(48581),x=c(36274),y=c(38396),z=c(53061),A=c(74348),B=c(41665),C=c(28470),D=c(41332),E=c(6143),F=c(77904),G=c(29813),H=c(39737),I=c(93553),J=c(48632),K=c(54183),L=c(86056),M=c(53416),N=c(85139),O=c(64714),P=c(26773),Q=c(64258),R=c(85205),S=c(9880),T=c(24422),U=c(69627),V=c(49783),W=c(91995),X=c(47578),Y=c(97432),Z=c(57684),$=c(83394),_=c(15741),aa=c(33617),ab=c(11527),ac=c(47352),ad=c(35471),ae=c(45535),af=c(55056),ag=c(27267),ah=c(78103),ai=c(33346);let aj=(0,e.createContext)(null);function ak(){let a=(0,e.useContext)(aj);if(!a)throw Error("useNodeEdit must be used inside NodeEditContext");return a}var al=c(50605),am=c(13191),an=c(46891),ao=c(18252),ap=c(92329),aq=c(18201),ar=c(81965),as=c(47161),at=c(86596),au=c(74619),av=c(84458),aw=c(79768),ax=c(33191);function ay({value:a,onChange:b,onBlur:c,autoFocus:e,compact:f,bare:g,className:h,placeholder:i="Description (markdown)… type @ to mention a file, feature, table…",editable:j=!0}){let k=(0,am.hG)({editable:j,extensions:[...at.Pu,an.Or.configure({placeholder:i}),au.tw.configure({suggestion:{char:"@",items:async({query:a})=>{if(!a.trim())return[];try{let b=await fetch(`/api/mention-search?q=${encodeURIComponent(a)}`,{headers:(0,aw.dh)((0,aw.fk)())});if(!b.ok)return[];return(await b.json()).hits}catch{return[]}},command:({editor:a,range:b,props:c})=>{a.chain().focus().insertContentAt(b,[{type:"mention",attrs:{kind:c.kind,ref:c.ref,label:c.label}},{type:"text",text:" "}]).run()},render:()=>{let a=null,b=null,c=a=>{if(!b||!a)return;let c=a();c&&(b.style.left=`${c.left}px`,b.style.top=`${c.bottom+4}px`)};return{onStart:d=>{a=new am.NV(aB,{props:d,editor:d.editor}),(b=document.createElement("div")).style.position="fixed",b.style.zIndex="10000",document.body.appendChild(b),b.appendChild(a.element),c(d.clientRect)},onUpdate:b=>{a?.updateProps(b),c(b.clientRect)},onKeyDown:c=>"Escape"===c.event.key?(b?.remove(),!0):a?.ref?.onKeyDown(c)??!1,onExit:()=>{b?.remove(),b=null,a?.destroy(),a=null}}}}})],content:a?(0,at.Gd)(a):void 0,immediatelyRender:!1,autofocus:!!e&&"end",editorProps:{attributes:{class:(0,ax.cn)("nodrag nopan node-prose focus:outline-none",h)}},onUpdate:({editor:a})=>b((0,at.Z2)(a.getJSON())),onBlur:()=>c?.()});return k?(0,d.jsxs)("div",{className:"flex flex-col gap-1",children:[j&&(0,d.jsx)(az,{editor:k,compact:f}),(0,d.jsx)(am.$Z,{editor:k,onKeyDown:a=>a.stopPropagation(),className:(0,ax.cn)("node-editor rounded",g?"min-h-[3.5rem] text-[15px] leading-relaxed":j?"min-h-[3.5rem] bg-[var(--ink-hover)] px-1.5 py-1 text-xs focus-within:bg-[var(--ink-active)]":"text-xs",f&&"max-h-[24rem] overflow-y-auto")})]}):null}function az({editor:a,compact:b}){(0,av.U)(a);let c=()=>a.chain().focus(),e=b?"size-3":"size-3.5";return(0,d.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,d.jsx)(av.I,{label:"Bold",active:a.isActive("bold"),onClick:()=>c().toggleBold().run(),children:(0,d.jsx)(ao.A,{className:e})}),(0,d.jsx)(av.I,{label:"Italic",active:a.isActive("italic"),onClick:()=>c().toggleItalic().run(),children:(0,d.jsx)(ap.A,{className:e})}),(0,d.jsx)("span",{"aria-hidden":!0,className:"mx-0.5 h-3.5 w-px bg-border"}),(0,d.jsx)(av.I,{label:"Checklist",active:a.isActive("taskList"),onClick:()=>c().toggleTaskList().run(),children:(0,d.jsx)(aq.A,{className:e})}),(0,d.jsx)(av.I,{label:"Bullet list",active:a.isActive("bulletList"),onClick:()=>c().toggleBulletList().run(),children:(0,d.jsx)(ar.A,{className:e})}),(0,d.jsx)(av.I,{label:"Numbered list",active:a.isActive("orderedList"),onClick:()=>c().toggleOrderedList().run(),children:(0,d.jsx)(as.A,{className:e})})]})}let aA={file:"\uD83D\uDCC4",folder:"\uD83D\uDCC1",feature:"\uD83E\uDDE9",table:"⛁",endpoint:"⇄",note:"\uD83D\uDDD2"},aB=(0,e.forwardRef)(function({items:a,command:b},c){let[f,g]=(0,e.useState)(0);return((0,e.useEffect)(()=>g(0),[a]),(0,e.useImperativeHandle)(c,()=>({onKeyDown:({event:c})=>"ArrowDown"===c.key?(g(b=>(b+1)%Math.max(a.length,1)),!0):"ArrowUp"===c.key?(g(b=>(b-1+a.length)%Math.max(a.length,1)),!0):"Enter"===c.key&&(a[f]&&b(a[f]),!0)})),a.length)?(0,d.jsx)("div",{className:"glass max-h-72 min-w-56 max-w-80 overflow-y-auto rounded-lg p-1 shadow-xl",children:a.map((a,c)=>(0,d.jsxs)("button",{type:"button",onMouseDown:c=>{c.preventDefault(),b(a)},onMouseEnter:()=>g(c),className:(0,ax.cn)("flex w-full items-center gap-2 rounded px-2 py-1 text-left text-[12px]",c===f?"bg-[var(--ink-active)] text-foreground":"text-foreground/85 hover:bg-[var(--ink-hover)]"),children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"shrink-0 text-[11px] opacity-80",children:aA[a.kind]??"•"}),(0,d.jsx)("span",{className:"truncate",children:a.label}),a.sublabel&&(0,d.jsx)("span",{className:"ml-auto shrink-0 truncate text-[10px] text-muted-foreground/70",children:a.sublabel})]},`${a.kind}:${a.ref}`))}):(0,d.jsx)("div",{className:"glass min-w-56 rounded-lg p-2 text-[11px] text-muted-foreground shadow-xl",children:"No matches"})}),aC=[{v:0,l:"P0 \xb7 critical"},{v:1,l:"P1 \xb7 high"},{v:2,l:"P2 \xb7 medium"},{v:3,l:"P3 \xb7 low"}],aD=["#ff3860","#ff7a45","#fbbf24","#a1a1aa"],aE=[[/AUTH|SECURIT|LOGIN|SESSION|IDENT/,w.A],[/DATA|\bDB\b|DBMAP|SQL|STORAGE|STORE|CACHE|PERSIST/,x.A],[/\bUI\b|FRONT|VIEW|CANVAS|BOARD|DESIGN/,y.A],[/MCP|\bAPI\b|INTEGRAT/,z.A],[/WEBHOOK|HOOK/,A.A],[/INTEL|GRAPH|\bCODE\b|SYMBOL|SEARCH|FIND/,B.A],[/PLAN|ROADMAP|REVIEW/,C.A],[/INFRA|DEVOPS|CLOUD|DEPLOY|MEDIA/,D.A],[/GAM|PLAY/,E.A],[/NOTE|DOC/,F.A],[/QUERY|SEARCH/,G.A],[/BILL|\bPAY|CHECKOUT|SUBSCRIPT|INVOICE/,H.A],[/LAUNCH|RELEASE|SHIP|ROCKET/,I.A],[/INSTALL|SETUP|BOOTSTRAP|INIT/,J.A],[/CONTEXT|LAYER|BUNDLE/,K.A]],aF=[L.A,M.A,N.A,O.A,P.A,Q.A],aG="nodrag nopan";function aH({layer:a,onSave:b,readOnly:c}){let e=(0,ah.jR)(a);return(0,d.jsxs)(af.l6,{value:e??"none",onValueChange:a=>b("none"===a?null:a),disabled:c,children:[(0,d.jsx)(af.bq,{title:"Which side of the stack this lands on",className:(0,ax.cn)(aG,"!h-5 shrink-0 gap-1 rounded !border-0 !bg-[var(--ink-active)] !px-1.5 !py-0 text-[9px] font-semibold uppercase tracking-wide text-muted-foreground [&_svg]:size-2.5 [&>svg]:hidden hover:[&>svg]:block"),children:(0,d.jsx)(af.yv,{children:a=>"none"===a?(0,d.jsx)("span",{className:"text-muted-foreground/70",children:"layer"}):(0,d.jsxs)("span",{className:"flex items-center gap-1",children:["backend"!==a&&(0,d.jsx)(R.A,{className:"size-2.5"}),"frontend"!==a&&(0,d.jsx)(S.A,{className:"size-2.5"}),ah.YG[a]?.short??a]})})}),(0,d.jsxs)(af.gC,{alignItemWithTrigger:!1,children:[(0,d.jsx)(af.eb,{value:"none",children:"— no layer"}),Object.entries(ah.YG).map(([a,b])=>(0,d.jsx)(af.eb,{value:a,children:b.label},a))]})]})}let aI={DONE:"#34d399",IN_PROGRESS:"#38bdf8",PENDING:"#fbbf24",BLOCKED:"#fb923c",CANCELLED:"#71717a",DEPRIORITIZED:"#52525b",KEEP:"#34d399",REBUILD:"#a78bfa",REPLACE:"#fb7185",DROP:"#71717a"};function aJ({status:a}){return(0,d.jsx)("span",{"aria-hidden":!0,title:ag.nR[a]?.label??a,className:"absolute bottom-2 left-1 top-2 w-[3px] rounded-full",style:{background:aI[a]??"#71717a"}})}function aK({priority:a,rank:b}){let c=aD[a]??aD[3];return(0,d.jsxs)("div",{className:"flex w-5 shrink-0 flex-col items-center gap-1 self-stretch border-r border-border py-1.5",title:aC[a]?.l??"priority",children:[null!=b&&(0,d.jsx)("span",{title:`#${b} in the work order`,className:(0,ax.cn)("flex size-4 shrink-0 items-center justify-center rounded text-[10px] font-bold leading-none",1===b?"bg-emerald-400 text-black":"bg-[var(--ink-active)] text-muted-foreground"),children:b}),(0,d.jsx)("span",{className:"w-[3px] flex-1 rounded-full",style:{background:c,opacity:.9}})]})}function aL({onFocus:a,onExpand:b,onDetails:c,expanded:e,className:f}){return(0,d.jsxs)("div",{className:(0,ax.cn)(aG,"absolute z-20 flex items-center gap-0.5 rounded-lg p-0.5 transition-colors group-hover/nc:border group-hover/nc:border-border group-hover/nc:bg-card/90 group-hover/nc:shadow-lg group-hover/nc:backdrop-blur",f??"right-2 top-2"),children:[(0,d.jsx)("button",{type:"button",onClick:b=>{b.stopPropagation(),a()},title:"Edit description in focus mode",className:"flex w-0 items-center justify-center overflow-hidden rounded p-0 text-muted-foreground opacity-0 transition-all hover:text-[#ff7a45] group-hover/nc:w-6 group-hover/nc:p-0.5 group-hover/nc:opacity-100",children:(0,d.jsx)(T.A,{className:"size-3.5"})}),(0,d.jsx)("button",{type:"button",onClick:a=>{a.stopPropagation(),b()},title:e?"Collapse":"Expand in place",className:"flex w-0 items-center justify-center overflow-hidden rounded p-0 text-muted-foreground opacity-0 transition-all hover:text-foreground group-hover/nc:w-6 group-hover/nc:p-0.5 group-hover/nc:opacity-100",children:(0,d.jsx)(U.A,{className:(0,ax.cn)("size-3.5 transition-transform",e&&"rotate-180")})}),(0,d.jsx)("button",{type:"button",onClick:a=>{a.stopPropagation(),c()},title:"Open details side panel",className:"flex w-0 items-center justify-center overflow-hidden rounded p-0 text-muted-foreground opacity-0 transition-all hover:text-[#ff7a45] group-hover/nc:w-6 group-hover/nc:p-0.5 group-hover/nc:opacity-100",children:(0,d.jsx)(q.A,{className:"size-3.5"})})]})}function aM({value:a,label:b,Icon:c,danger:e}){return(0,d.jsxs)("div",{className:"text-center",children:[(0,d.jsx)("div",{className:(0,ax.cn)("text-[13px] font-semibold leading-none tracking-tight tabular-nums",e&&"text-rose-700 dark:text-rose-300"),children:a}),(0,d.jsxs)("div",{className:"mt-0.5 flex items-center justify-center gap-0.5 text-[8px] font-medium uppercase tracking-wide text-muted-foreground",children:[(0,d.jsx)(c,{className:"size-2.5"}),b]})]})}function aN({importsIn:a}){let b=a>=16?5:a>=8?4:a>=4?3:a>=2?2:+(a>=1);return(0,d.jsxs)("span",{className:"flex items-center gap-1.5 text-[10px] text-muted-foreground",title:`${a} external file(s) import this component`,children:[(0,d.jsx)("span",{className:"flex items-center gap-0.5",children:[0,1,2,3,4].map(a=>(0,d.jsx)("span",{className:"size-1 rounded-full bg-sky-400",style:{opacity:a<b?.7:.18}},a))}),a>=8?"core dependency":a>=3?"shared":a>=1?"leaf":"isolated"]})}function aO({nodeId:a}){let b=(0,r.useRouter)(),[c,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(""),[i,j]=(0,e.useState)(!1),k=()=>{f(!1),h("")},m=async()=>{let c=g.trim();if(c&&!i){j(!0);try{(await fetch("/api/bug-flags",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({nodeId:a,by:"user",note:c})})).ok&&(k(),b.refresh())}finally{j(!1)}}};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("button",{type:"button",title:"Flag a bug on this component",onClick:a=>{a.stopPropagation(),f(a=>!a)},className:(0,ax.cn)(aG,"absolute -right-3 top-[calc(50%-28px)] z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-border bg-card text-muted-foreground shadow-md transition-all hover:border-rose-400/50 hover:text-rose-600 dark:hover:text-rose-300",c?"border-rose-400/50 text-rose-600 opacity-100 dark:text-rose-300":"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,ax.cn)(aG,"absolute -right-2 top-[calc(50%-28px)] z-20 w-60 translate-x-full rounded-xl border border-rose-400/25 bg-popover 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-700 dark: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-[var(--ink-active)] 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-[var(--ink-hover)] px-1.5 py-1 text-xs outline-none placeholder:text-muted-foreground/50 focus:bg-[var(--ink-active)]"}),(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-700 transition-colors hover:bg-rose-500/25 disabled:opacity-50 dark:text-rose-300",children:i?"Flagging…":"Flag bug"})]})]})}let aP=["border-[#ff3860]/60 shadow-[0_0_0_1px_rgba(255,56,96,0.15)]","border-[#ff7a45]/50","border-amber-400/35","border-border"],aQ=(0,e.memo)(function({id:a,data:b,selected:c}){let{categories:f,statuses:g,patch:h,isExpanded:i,toggleExpand:j,openDetailed:k,openFocus:m,removeNode:n,editingTitleId:o,onAskAgent:p,hasFrontend:q,readOnly:r}=ak(),u=i(a),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(b.title),[A,B]=(0,e.useState)(b.cluster??""),[C,D]=(0,e.useState)(b.plain??"");(0,e.useEffect)(()=>D(b.plain??""),[b.plain]);let E="BUG"===b.kind&&"ROADMAP"===b.view,F="ARCHITECTURE"===b.view,G=F?"border-border":aP[b.priority]??"border-border",H=b.openBugs??0,I="CANCELLED"===b.status||"DROP"===b.status,J="DEPRIORITIZED"===b.status,K="DRAFT"===b.source,L="IN_PROGRESS"===b.status,M="INIT"===b.source&&"ROADMAP"===b.view,N=b=>{r||h(a,b,!0)},[O,P]=(0,e.useTransition)(),Q=(0,al.k)();if("full"!==Q)return(0,d.jsxs)("div",{className:(0,ax.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",E?"border-rose-400/50 bg-rose-500/[0.05]":G,L&&"border-sky-400/60",c&&"ring-2 ring-[var(--accent,#f5b942)]",I&&"opacity-60","far"===Q&&!r&&"!opacity-0"),children:[(0,d.jsx)(s.x,{}),(0,d.jsx)(aJ,{status:b.status}),(0,d.jsx)("div",{className:"break-words text-[15px] font-semibold leading-snug",children:b.title})]});let R=(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(s.x,{}),F&&(0,d.jsx)(aO,{nodeId:a}),(b.pins?.length??0)>0?(0,d.jsx)(t.e0,{pins:b.pins,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)("button",{type:"button",title:`Annotate ${b.title}`,onClick:a=>{a.stopPropagation(),b.onComment?.(b.title)},className:(0,ax.cn)(aG,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-border bg-card 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)(V.A,{className:"size-3"})})]}),S=(b.childCount??0)>0&&(0,d.jsxs)("button",{type:"button",onClick:c=>{c.stopPropagation(),b.onToggleCollapse?.(a)},title:b.collapsed?`Show ${b.childCount} sub-task${1===b.childCount?"":"s"}`:`Hide ${b.childCount} sub-task${1===b.childCount?"":"s"}`,className:(0,ax.cn)(aG,"mt-0.5 flex shrink-0 items-center gap-0.5 rounded px-1 text-[10px] font-semibold transition-colors",b.collapsed?"bg-[var(--ink-active)] text-foreground hover:brightness-110":"text-muted-foreground hover:bg-[var(--ink-hover)] hover:text-foreground"),children:[b.collapsed?(0,d.jsx)(W.A,{className:"size-3"}):(0,d.jsx)(U.A,{className:"size-3"}),b.childCount]}),T=(0,d.jsx)(aL,{onFocus:()=>m({id:a,title:b.title||"Untitled",value:C,editable:!r,onCommit:a=>N({plain:a.trim()||null})}),onExpand:()=>j(a),onDetails:()=>k(a),expanded:u,className:"top-full right-1 mt-1.5 before:absolute before:inset-x-0 before:bottom-full before:h-2.5 before:content-['']"}),ah=(0,d.jsx)("textarea",{rows:1,value:y,readOnly:r,autoFocus:o===a,placeholder:"Title…",onFocus:b=>{o===a&&b.currentTarget.select()},onChange:a=>z(a.target.value),onBlur:()=>{let a=y.trim();a&&a!==b.title&&N({title:a})},onKeyDown:a=>{a.stopPropagation(),"Enter"!==a.key||a.shiftKey||(a.preventDefault(),a.currentTarget.blur())},className:(0,ax.cn)(aG,"field-sizing-content w-full resize-none bg-transparent text-sm font-medium leading-snug outline-none placeholder:text-muted-foreground/60",I&&"line-through")}),aj=(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("input",{list:`cats-${a}`,value:A,readOnly:r,placeholder:F?"domain":"category",title:F?"Architecture domain — the lane this component lives in":void 0,onChange:a=>B(a.target.value),onBlur:()=>{let a=A.trim()||null;a!==(b.cluster??null)&&N({cluster:a})},onKeyDown:a=>{a.stopPropagation(),"Enter"===a.key&&a.currentTarget.blur()},className:(0,ax.cn)(aG,"field-sizing-content min-w-12 max-w-[60%] 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,ai.a2)(A))}),(0,d.jsx)("datalist",{id:`cats-${a}`,children:f.map(a=>(0,d.jsx)("option",{value:a},a))})]}),am=(0,d.jsxs)(af.l6,{value:b.status,onValueChange:a=>N({status:a}),disabled:r,children:[(0,d.jsx)(af.bq,{className:(0,ax.cn)(aG,"!h-5 shrink-0 !gap-0.5 rounded border !px-1.5 !py-0 text-[10px] font-medium [&_svg]:size-3",ag.nR[b.status]?.className??"border-border"),children:(0,d.jsx)(af.yv,{children:a=>ag.nR[a]?.label??a})}),(0,d.jsx)(af.gC,{alignItemWithTrigger:!1,children:g.map(a=>(0,d.jsx)(af.eb,{value:a,children:ag.nR[a]?.label??a},a))})]}),an=(H>0||(b.signals?.untested??0)>0||b.signals?.auth)&&(0,d.jsxs)("div",{className:"mt-1.5 flex w-0 min-w-full flex-wrap items-center gap-1",children:[H>0&&(0,d.jsxs)("span",{title:`${H} open bug flag(s)`,className:"flex items-center gap-1 rounded bg-rose-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-rose-700 dark:text-rose-300",children:[(0,d.jsx)(l.A,{className:"size-2.5"}),H]}),(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-700 dark:text-amber-300",children:[(0,d.jsx)(X.A,{className:"size-2.5"}),b.signals.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-700 dark:text-red-300",children:[(0,d.jsx)(Y.A,{className:"size-2.5"})," auth"]})]}),ao=u&&(0,d.jsxs)("div",{className:"mt-2 w-0 min-w-full space-y-2 border-t border-border pt-2",children:[(0,d.jsx)(ay,{compact:!0,editable:!r,value:C,onChange:D,onBlur:()=>{let a=C.trim()||null;a!==(b.plain??null)&&N({plain:a})}}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5 pr-8",children:[(0,d.jsx)("div",{className:"flex items-center gap-1",children:!F&&(0,d.jsxs)(af.l6,{value:String(b.priority),onValueChange:a=>N({priority:Number(a)}),disabled:r,children:[(0,d.jsx)(af.bq,{className:(0,ax.cn)(aG,"!h-6 gap-1 rounded border-border !px-1.5 !py-0 text-[10px] [&_svg]:size-3"),children:(0,d.jsx)(af.yv,{children:a=>aC.find(b=>String(b.v)===a)?.l??a})}),(0,d.jsx)(af.gC,{alignItemWithTrigger:!1,children:aC.map(a=>(0,d.jsx)(af.eb,{value:String(a.v),children:a.l},a.v))})]})}),(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[!r&&(0,d.jsxs)("button",{type:"button",onClick:b=>{b.stopPropagation(),w?n(a):x(!0)},onBlur:()=>x(!1),title:"Delete node",className:(0,ax.cn)(aG,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] transition-colors",w?"bg-red-500/20 text-red-700 dark:text-red-300":"text-muted-foreground hover:bg-[var(--ink-hover)] hover:text-red-600 dark:hover:text-red-300"),children:[(0,d.jsx)(Z.A,{className:"size-3"}),w&&"Delete?"]}),p&&(0,d.jsxs)("button",{type:"button",onClick:a=>{a.stopPropagation(),p(`${F?"component":"feature"}: ${b.title}`)},title:"Ask the agent a question about this (answered in its next round)",className:(0,ax.cn)(aG,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] text-sky-700/90 hover:bg-sky-500/15 hover:text-sky-700 dark:text-sky-300/90 dark:hover:text-sky-300"),children:[(0,d.jsx)($.A,{className:"size-3"})," Ask"]})]})]})]});if(F){let a=(0,ai.i3)(b.cluster);return(0,d.jsxs)("div",{className:(0,ax.cn)("group/nc relative rounded-lg border bg-card px-3 py-2.5 text-card-foreground shadow-sm transition","w-fit min-w-60 max-w-72",K?"border-dashed border-sky-400/50 bg-sky-500/[0.06]":"border-border",L&&"border-sky-400/60 shadow-[0_0_0_1px_rgba(56,160,255,0.25)]",c&&"ring-2 ring-[var(--accent,#f5b942)]",I&&"opacity-60",J&&"opacity-70 border-dashed"),children:[R,(0,d.jsxs)("div",{className:"flex items-start gap-2.5",children:[(0,d.jsx)("span",{className:"mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg",style:{background:`color-mix(in oklab, ${a} 18%, transparent)`,color:a},children:(0,e.createElement)(function(a){let b=(a??"").toUpperCase();for(let[a,c]of aE)if(a.test(b))return c;if(!b)return aF[0];let c=0;for(let a=0;a<b.length;a++)c=31*c+b.charCodeAt(a)>>>0;return aF[c%aF.length]}(b.cluster),{className:"size-4"})}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsxs)("div",{className:"flex items-start gap-1",children:[ah,S]}),(0,d.jsxs)("div",{className:"mt-1 flex flex-wrap items-center gap-1.5",children:[aj,q&&(0,d.jsx)(aH,{layer:b.layer,onSave:a=>N({layer:a}),readOnly:r})]})]}),(0,d.jsx)("div",{className:"shrink-0",children:am})]}),b.role&&(0,d.jsx)("div",{className:"mt-2 line-clamp-1 text-[10.5px] leading-snug text-muted-foreground",children:b.role}),(0,d.jsxs)("div",{className:"mt-2.5 grid grid-cols-4 gap-1 border-t border-border pt-2",children:[(0,d.jsx)(aM,{value:b.fileCount??0,label:"files",Icon:_.A}),(0,d.jsx)(aM,{value:b.importsIn??"—",label:"in",Icon:aa.A}),(0,d.jsx)(aM,{value:b.importsOut??"—",label:"out",Icon:ab.A}),(0,d.jsx)(aM,{value:H,label:"bug",Icon:l.A,danger:H>0})]}),null!=b.importsIn&&(0,d.jsx)("div",{className:"mt-2",children:(0,d.jsx)(aN,{importsIn:b.importsIn})}),T,ao]})}let ap=b.childCount??0,aq=b.childDone??0;return(0,d.jsxs)("div",{className:(0,ax.cn)("group/nc relative flex rounded-lg border bg-card text-card-foreground shadow-sm transition","w-fit max-w-96",u?"min-w-80":"min-w-64",K?"border-dashed border-sky-400/50 bg-sky-500/[0.06]":M?"border-dashed border-violet-400/60 bg-violet-500/[0.07] shadow-[0_0_0_1px_rgba(167,139,250,0.18)]":G,E&&!K&&"border-rose-400/50 bg-rose-500/[0.05]",L&&"border-sky-400/60 shadow-[0_0_0_1px_rgba(56,160,255,0.25)]",b.isNext&&"border-emerald-400/70 shadow-[0_0_0_2px_rgba(52,211,153,0.35)]",null!=b.workOrderRank&&b.workOrderRank>1&&"border-emerald-400/25",c&&"ring-2 ring-[var(--accent,#f5b942)]",I&&"opacity-60",J&&"opacity-70 border-dashed"),children:[R,T,(0,d.jsx)(aK,{priority:b.priority,rank:b.workOrderRank}),"LINEAR"===b.source&&(b.assigneeAvatarUrl?(0,d.jsx)("img",{src:b.assigneeAvatarUrl,alt:b.assigneeName??"assignee",title:b.assigneeName?`Owner: ${b.assigneeName}`:"Assignee",draggable:!1,className:(0,ax.cn)(aG,"absolute -left-2 -top-2 z-20 size-5 rounded-full object-cover shadow ring-2 ring-background")}):b.assigneeName?(0,d.jsx)("span",{title:`Owner: ${b.assigneeName}`,className:(0,ax.cn)(aG,"absolute -left-2 -top-2 z-20 flex size-5 items-center justify-center rounded-full bg-[#3a3a40] text-[8px] font-semibold uppercase text-white/90 shadow ring-2 ring-background"),children:b.assigneeName.split(/\s+/).map(a=>a[0]).slice(0,2).join("")}):null),(0,d.jsxs)("div",{className:"min-w-0 flex-1 px-2.5 py-2.5",children:[(0,d.jsxs)("div",{className:"flex w-0 min-w-full items-start gap-1.5",children:[(0,d.jsxs)("div",{className:"flex min-w-0 flex-1 items-start gap-1",children:[L&&(0,d.jsx)("span",{title:"in progress",className:"mt-1.5 inline-block size-2 shrink-0 animate-pulse rounded-full bg-sky-400"}),b.isCriterion&&!L&&(0,d.jsx)("span",{title:"Success criterion",className:"mt-1.5 inline-block size-1.5 shrink-0 rounded-full bg-[var(--accent,#f5b942)]"}),ah,S]}),(0,d.jsx)("div",{className:"shrink-0",children:am})]}),(0,d.jsxs)("div",{className:"mt-1.5 flex w-0 min-w-full flex-wrap items-center gap-1.5",children:[(0,d.jsxs)("span",{title:E?"Bug — something to fix":b.isChild?"Sub-task of a feature":"Feature — top-level roadmap item",className:(0,ax.cn)("flex shrink-0 items-center gap-1 rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide",E?"bg-rose-500/15 text-rose-700 dark:text-rose-300":b.isChild?"bg-zinc-500/15 text-zinc-600 dark:text-zinc-300":"bg-sky-500/15 text-sky-700 dark:text-sky-300"),children:[E&&(0,d.jsx)(l.A,{className:"size-2.5"}),E?"bug":b.isChild?"sub-task":"feature"]}),q&&(0,d.jsx)(aH,{layer:b.layer,onSave:a=>N({layer:a}),readOnly:r}),M&&(0,d.jsxs)("span",{className:(0,ax.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-700 dark:text-violet-300",O&&"opacity-50"),children:[(0,d.jsx)(ac.A,{className:"size-2.5"})," IA",(0,d.jsx)("button",{type:"button",title:"Accept suggestion — turn it into your own feature",disabled:O,onClick:b=>{b.stopPropagation(),P(async()=>v(a))},className:(0,ax.cn)(aG,"-my-0.5 rounded p-0.5 hover:bg-emerald-500/20 hover:text-emerald-600 dark:hover:text-emerald-300"),children:(0,d.jsx)(ad.A,{className:"size-2.5"})}),(0,d.jsx)("button",{type:"button",title:"Dismiss suggestion (deletes the card)",disabled:O,onClick:b=>{b.stopPropagation(),n(a)},className:(0,ax.cn)(aG,"-my-0.5 -ml-0.5 rounded p-0.5 hover:bg-red-500/20 hover:text-red-600 dark:hover:text-red-300"),children:(0,d.jsx)(ae.A,{className:"size-2.5"})})]}),aj]}),b.role&&(0,d.jsx)("div",{className:(0,ax.cn)("mt-1.5 w-0 min-w-full text-[10px] leading-snug text-muted-foreground",!u&&"line-clamp-1"),children:b.role}),ap>0&&(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,d.jsx)("span",{className:"h-[3px] flex-1 overflow-hidden rounded-full bg-[var(--ink-active)]",title:`${aq}/${ap} sub-tasks done`,children:(0,d.jsx)("span",{className:"block h-full rounded-full bg-sky-400/75",style:{width:`${ap?aq/ap*100:0}%`}})}),(0,d.jsxs)("span",{className:"flex shrink-0 items-center gap-1 text-[10px] text-muted-foreground",children:[(0,d.jsx)(ad.A,{className:"size-3"}),aq,"/",ap]})]}),an,ao]})]})});var aR=c(32798),aS=c(42800),aT=c(90165),aU=c(89216);let aV=(0,e.memo)(function({data:a}){let[b,c]=(0,e.useState)(!1),f=a.columns??[],g=b?f:f.slice(0,5),h=f.length-g.length,i=a.sample??[];return(0,d.jsxs)("div",{className:"w-[270px] rounded-xl border border-sky-400/25 bg-card/95 text-card-foreground shadow-[0_18px_50px_-22px_rgba(0,0,0,0.9)] backdrop-blur dark:bg-[#13161b]/95",children:[(0,d.jsx)(s.x,{}),(0,d.jsxs)("div",{className:"flex items-center gap-1.5 rounded-t-[11px] border-b border-border dark:border-white/[0.06] bg-sky-400/[0.07] px-3 py-2",children:[(0,d.jsx)(x.A,{className:"size-3.5 shrink-0 text-sky-400/80"}),(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate font-mono text-[13px] font-semibold tracking-tight",title:a.name,children:a.name}),a.domain&&(0,d.jsx)("span",{className:"shrink-0 text-[9px] uppercase tracking-[0.14em] text-sky-300/70",children:a.domain})]}),a.note&&(0,d.jsx)("div",{className:"border-b border-border px-3 py-1.5 text-[11px] leading-snug text-muted-foreground dark:border-white/[0.05]",children:a.note}),(0,d.jsx)("div",{className:"divide-y divide-border dark:divide-white/[0.05]",children:g.map(a=>(0,d.jsxs)("div",{className:"px-3 py-[6px]",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-[12px]",children:[a.isPk?(0,d.jsx)(aT.A,{className:"size-3 shrink-0 text-amber-300/90"}):a.isFk?(0,d.jsx)(aU.A,{className:"size-3 shrink-0 text-sky-400/80"}):(0,d.jsx)("span",{className:"size-3 shrink-0"}),(0,d.jsx)("span",{className:(0,ax.cn)("shrink-0 whitespace-nowrap font-mono",a.isPk&&"text-amber-200/95"),children:a.name}),(0,d.jsx)("span",{title:a.fkTo?`→ ${a.fkTo}`:a.type,className:"ml-auto min-w-0 truncate font-mono text-[11px] text-muted-foreground/80",children:a.fkTo?(0,d.jsxs)(d.Fragment,{children:["→\xa0",a.fkTo]}):a.type})]}),a.note&&(0,d.jsx)("div",{className:"ml-5 mt-0.5 text-[10.5px] leading-snug text-muted-foreground/70 [overflow-wrap:anywhere]",children:a.note})]},a.name))}),(h>0||i.length>0)&&(0,d.jsx)("button",{type:"button",onClick:a=>{a.stopPropagation(),c(a=>!a)},className:"nodrag nopan flex w-full items-center justify-center gap-1 rounded-b-[11px] border-t border-border dark:border-white/[0.06] px-3 py-1.5 text-[10px] text-muted-foreground transition-colors hover:bg-[var(--ink-hover)] hover:text-foreground dark:hover:bg-white/[0.04]",children:b?"Show less":h>0?`+${h} more column${1===h?"":"s"}`:"Show example row"}),b&&i.length>0&&(0,d.jsxs)("div",{className:"nowheel overflow-x-auto border-t border-border dark:border-white/[0.06] px-3 py-2",children:[(0,d.jsx)("div",{className:"mb-1 text-[9px] font-semibold uppercase tracking-[0.14em] text-muted-foreground/70",children:"example"}),(0,d.jsxs)("table",{className:"border-collapse font-mono text-[10px]",children:[(0,d.jsx)("thead",{children:(0,d.jsx)("tr",{className:"text-muted-foreground/60",children:f.map(a=>(0,d.jsx)("th",{className:"whitespace-nowrap px-1.5 pb-1 text-left font-medium",children:a.name},a.name))})}),(0,d.jsx)("tbody",{children:i.map((a,b)=>(0,d.jsx)("tr",{className:"text-foreground/85",children:f.map(b=>(0,d.jsx)("td",{className:"whitespace-nowrap px-1.5 py-0.5",children:a[b.name]??""},b.name))},b))})]})]})]})});var aW=c(96863),aX=c(42925),aY=c(37663),aZ=c(10139),a$=c(96498),a_=c(90069),a0=c(82078),a1=c(60136),a2=c(30693),a3=c(85360),a4=c(26284),a5=c(52351),a6=c(74732),a7=c(8422);function a8({className:a,...b}){return(0,d.jsx)("textarea",{"data-slot":"textarea",className:(0,ax.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 a9=c(86371);function ba({className:a,...b}){return(0,d.jsx)(a9.b,{"data-slot":"label",className:(0,ax.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 bb=(0,u.createServerReference)("4091229f7df2561c0782b621991cb1a98d97a2db79",u.callServer,void 0,u.findSourceMapURL,"createNodeAction"),bc=(0,u.createServerReference)("60d0fc13b71d9cfd5d7d6960bda725312f03b99f07",u.callServer,void 0,u.findSourceMapURL,"updateNodeAction");function bd({open:a,onOpenChange:b,mode:c,view:f,heading:g,nodeId:h,parentId:i,position:j,defaults:k,hasFrontend:l=!1}){let m=(0,r.useRouter)(),[n,o]=(0,e.useState)(k?.title??""),[p,q]=(0,e.useState)(k?.role??""),[s,t]=(0,e.useState)(k?.plain??""),[u,v]=(0,e.useState)(k?.cluster??""),[w,x]=(0,e.useState)(k?.status??("ARCHITECTURE"===f?"REBUILD":"PENDING")),[y,z]=(0,e.useState)(k?.kind==="BUG"?"BUG":"FEATURE"),[A,B]=(0,e.useState)((0,ah.jR)(k?.layer)??"none"),[C,D]=(0,e.useState)(!1),E="ARCHITECTURE"===f?ag.m6:ag.yl;async function F(){if(n.trim()){D(!0);try{let a="none"===A?null:A;"create"===c?await bb({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 bc(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)(a6.lG,{open:a,onOpenChange:b,children:(0,d.jsxs)(a6.Cf,{children:[(0,d.jsx)(a6.c7,{children:(0,d.jsx)(a6.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)(ba,{htmlFor:"nf-title",children:"Title"}),(0,d.jsx)(a7.p,{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)(ba,{htmlFor:"nf-role",children:"Role (one line)"}),(0,d.jsx)(a7.p,{id:"nf-role",value:p,onChange:a=>q(a.target.value)})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(ba,{htmlFor:"nf-plain",children:"Description"}),(0,d.jsx)(a8,{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)(ba,{children:"Kind"}),(0,d.jsxs)(af.l6,{value:y,onValueChange:a=>null!=a&&z(a),children:[(0,d.jsx)(af.bq,{children:(0,d.jsx)(af.yv,{children:a=>"BUG"===a?"Bug":"Feature"})}),(0,d.jsxs)(af.gC,{children:[(0,d.jsx)(af.eb,{value:"FEATURE",children:"Feature"}),(0,d.jsx)(af.eb,{value:"BUG",children:"Bug"})]})]})]}),l&&(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(ba,{children:"Layer"}),(0,d.jsxs)(af.l6,{value:A,onValueChange:a=>null!=a&&B(a),children:[(0,d.jsx)(af.bq,{children:(0,d.jsx)(af.yv,{children:a=>"none"===a?"—":ah.YG[a]?.label??a})}),(0,d.jsxs)(af.gC,{children:[(0,d.jsx)(af.eb,{value:"none",children:"—"}),Object.keys(ah.YG).map(a=>(0,d.jsx)(af.eb,{value:a,children:ah.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)(ba,{children:"Status"}),(0,d.jsxs)(af.l6,{value:w,onValueChange:a=>null!=a&&x(a),children:[(0,d.jsx)(af.bq,{children:(0,d.jsx)(af.yv,{children:a=>ag.nR[a]?.label??a})}),(0,d.jsx)(af.gC,{children:E.map(a=>(0,d.jsx)(af.eb,{value:a,children:ag.nR[a]?.label??a},a))})]})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(ba,{htmlFor:"nf-cluster",children:"Cluster / lane"}),(0,d.jsx)(a7.p,{id:"nf-cluster",value:u,onChange:a=>v(a.target.value)})]})]})]}),(0,d.jsxs)(a6.Es,{children:[(0,d.jsx)(a4.$,{variant:"outline",onClick:()=>b(!1),children:"Cancel"}),(0,d.jsx)(a4.$,{onClick:F,disabled:C||!n.trim(),children:C?"Saving…":"Save"})]})]})})}let be=(0,u.createServerReference)("40ffa6c42af6c5129b3886462aabc37ab99414cc69",u.callServer,void 0,u.findSourceMapURL,"deleteNodeAction"),bf=(0,u.createServerReference)("6048ea010594ee5855be1c4827b247f769ac020a8d",u.callServer,void 0,u.findSourceMapURL,"setStatusAction"),bg=(0,u.createServerReference)("4096eef23002f61bed2d9d40c10ac39a0b825a10e5",u.callServer,void 0,u.findSourceMapURL,"deprioritizeAction"),bh=(0,u.createServerReference)("40b8d6aa6e47fe49efb50a8540f8519f8a1a0a1f6c",u.callServer,void 0,u.findSourceMapURL,"cancelAction");function bi({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",n=b?.parentId?c.find(a=>a.id===b.parentId)?.title??null:null;return(0,d.jsxs)(a2.p_,{topOffset:k,children:[(0,d.jsx)(a2.aO,{tabs:l?{active:m,count:g,onChange:a=>i?.(a)}:null,breadcrumb:b?(0,d.jsx)(bj,{node:b,view:a}):"ROADMAP"===a?"Roadmap":"Architecture",comment:j&&b&&"details"===m?{title:`Comment on this ${"ARCHITECTURE"===a?"component":"feature"}`,onClick:()=>j(b.title)}:null,onClose:e}),(0,d.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:(0,d.jsx)("div",{className:"px-4 py-3",children:"comments"===m&&l?f:b?(0,d.jsx)(bk,{node:b,view:a,parentTitle:n,showBreadcrumb:l},b.id):(0,d.jsx)(bn,{view:a,nodes:c})})})]})}function bj({node:a,view:b}){let{hasFrontend:c}=ak(),e=(0,ah.jR)(a.layer),f="ARCHITECTURE"===b?"component":"BUG"===a.kind?"bug":a.parentId?"sub-task":"feature";return(0,d.jsxs)(d.Fragment,{children:[(0,ag.Xf)(a.cluster),c&&e&&(0,d.jsxs)("span",{children:[" \xb7 ",ah.YG[e].label]}),(0,d.jsxs)("span",{children:[" \xb7 ",f]})]})}function bk({node:a,view:b,parentTitle:c,showBreadcrumb:f}){let g=(0,r.useRouter)(),[h,i]=(0,e.useTransition)(),[j,l]=(0,e.useState)(!1),[m,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)(!1),[q,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(!1),[w,x]=(0,e.useState)(a.plain??""),{hasFrontend:y,openFocus:z}=ak(),A="ARCHITECTURE"===b?ag.m6:ag.yl,B="LINEAR"===a.source&&a.sourceRef?a.sourceRef.match(/\/issue\/([^/]+)/)?.[1]??"Linear issue":null,C=a=>i(async()=>{await a(),g.refresh()});return(0,d.jsxs)("div",{children:[f&&(0,d.jsx)("div",{className:"mb-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:(0,d.jsx)(bj,{node:a,view:b})}),(0,d.jsx)("h2",{className:"text-base font-semibold leading-snug",children:a.title}),"INIT"===a.source&&"ROADMAP"===b&&(0,d.jsxs)("div",{className:"mt-3 rounded-lg border border-violet-400/25 bg-violet-500/[0.05] p-2.5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-semibold text-violet-700 dark:text-violet-300",children:[(0,d.jsx)(ac.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)(a4.$,{size:"sm",className:"h-7 px-2.5 text-xs",disabled:h,onClick:()=>C(()=>v(a.id)),children:"Accept"}),(0,d.jsx)(a4.$,{size:"sm",variant:"ghost",className:"h-7 px-2.5 text-xs text-muted-foreground",disabled:h,onClick:()=>C(()=>be(a.id)),children:"Dismiss"})]})]}),(0,d.jsxs)("div",{className:"mt-3 space-y-px",children:[(0,d.jsx)(a2.yc,{icon:aX.A,label:"Status",children:(0,d.jsxs)(af.l6,{value:a.status,onValueChange:b=>null!=b&&C(()=>bf(a.id,b)),children:[(0,d.jsx)(af.bq,{className:a2.Sq,disabled:h,children:(0,d.jsx)(af.yv,{children:a=>(0,d.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"size-2 rounded-full",style:{background:aI[a]??"#71717a"}}),ag.nR[a]?.label??a]})})}),(0,d.jsx)(af.gC,{alignItemWithTrigger:!1,children:A.map(a=>(0,d.jsx)(af.eb,{value:a,children:ag.nR[a]?.label??a},a))})]})}),"ARCHITECTURE"!==b&&(0,d.jsx)(a2.yc,{icon:aY.A,label:"Priority",children:(0,d.jsxs)(af.l6,{value:String(a.priority),onValueChange:b=>null!=b&&C(()=>bc(a.id,{priority:Number(b)})),children:[(0,d.jsx)(af.bq,{className:a2.Sq,disabled:h,children:(0,d.jsx)(af.yv,{children:a=>aC.find(b=>String(b.v)===a)?.l??a})}),(0,d.jsx)(af.gC,{alignItemWithTrigger:!1,children:aC.map(a=>(0,d.jsx)(af.eb,{value:String(a.v),children:a.l},a.v))})]})}),y&&(0,d.jsx)(a2.yc,{icon:K.A,label:"Layer",children:(0,d.jsxs)(af.l6,{value:(0,ah.jR)(a.layer)??"none",onValueChange:b=>null!=b&&C(()=>bc(a.id,{layer:"none"===b?null:b})),children:[(0,d.jsx)(af.bq,{className:a2.Sq,disabled:h,children:(0,d.jsx)(af.yv,{children:a=>"none"===a?(0,d.jsx)("span",{className:"text-muted-foreground",children:"No layer"}):ah.YG[a]?.label??a})}),(0,d.jsxs)(af.gC,{alignItemWithTrigger:!1,children:[(0,d.jsx)(af.eb,{value:"none",children:"— no layer"}),Object.entries(ah.YG).map(([a,b])=>(0,d.jsx)(af.eb,{value:a,children:b.label},a))]})]})}),a.cluster&&(0,d.jsx)(a2.yc,{icon:aZ.A,label:"Category",children:(0,d.jsx)("span",{className:(0,ax.cn)("rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide",(0,ai.a2)(a.cluster)),children:a.cluster})}),c&&(0,d.jsx)(a2.yc,{icon:a$.A,label:"Parent",children:(0,d.jsx)("span",{className:"truncate",children:c})}),B?(0,d.jsx)(a2.yc,{icon:a_.A,label:"Linear",children:(0,d.jsxs)("a",{href:a.sourceRef,target:"_blank",rel:"noreferrer",className:"flex items-center gap-1 rounded-md px-1.5 py-0.5 font-mono text-xs transition-colors hover:bg-[var(--ink-hover)] hover:text-[var(--accent-2,#ff7a45)]",children:[B,(0,d.jsx)(a_.A,{className:"size-3"})]})}):a.sourceRef?(0,d.jsx)(a2.yc,{icon:a_.A,label:"Source",children:(0,d.jsx)("span",{className:"truncate font-mono text-[11px] text-muted-foreground",children:a.sourceRef})}):null]}),(0,d.jsx)(a2.aU,{title:(0,d.jsxs)(d.Fragment,{children:["Description",(0,d.jsx)("button",{type:"button",title:"Edit in focus mode",onClick:()=>z({id:a.id,title:a.title,value:w,editable:!0,onCommit:b=>{x(b);let c=b.trim()||null;c!==(a.plain??null)&&C(()=>bc(a.id,{plain:c}))}}),className:"ml-auto rounded p-0.5 text-muted-foreground transition-colors hover:bg-[var(--ink-hover)] hover:text-[var(--accent-2,#ff7a45)]",children:(0,d.jsx)(T.A,{className:"size-3.5"})})]}),children:t?(0,d.jsx)(ay,{value:w,onChange:x,onBlur:()=>{u(!1);let b=w.trim()||null;b!==(a.plain??null)&&C(()=>bc(a.id,{plain:b}))},autoFocus:!0},"edit"):w.trim()?(0,d.jsx)("div",{role:"button",tabIndex:0,title:"Click to edit",onClick:()=>u(!0),onKeyDown:a=>{"Enter"===a.key&&u(!0)},className:"-mx-1.5 cursor-text rounded-md px-1.5 py-1 transition-colors hover:bg-[var(--ink-hover)]",children:(0,d.jsx)(ay,{value:w,onChange:()=>{},editable:!1},"view")}):(0,d.jsx)("button",{type:"button",onClick:()=>u(!0),className:"-mx-1.5 w-full rounded-md px-1.5 py-1 text-left text-xs text-muted-foreground/60 transition-colors hover:bg-[var(--ink-hover)] hover:text-muted-foreground",children:"Add a description…"})}),a.files.length>0&&(0,d.jsx)(a2.aU,{title:`Files (${a.files.length})`,children:(0,d.jsx)(a3.h,{files:a.files.map(a=>({path:a}))})}),"ARCHITECTURE"===b&&(0,d.jsx)(bm,{node:a}),(0,d.jsxs)("div",{className:"mt-4 flex items-center gap-1 border-t border-border pt-3",children:[(0,d.jsxs)(a4.$,{size:"sm",variant:"ghost",className:"h-7 gap-1.5 px-2 text-xs text-muted-foreground hover:text-foreground",onClick:()=>l(!0),children:[(0,d.jsx)(a0.A,{className:"size-3.5"}),"Edit"]}),(0,d.jsxs)(a4.$,{size:"sm",variant:"ghost",className:"h-7 gap-1.5 px-2 text-xs text-muted-foreground hover:text-foreground",onClick:()=>n(!0),children:[(0,d.jsx)(k.A,{className:"size-3.5"}),"Sub-node"]}),(0,d.jsxs)("div",{className:"relative ml-auto",children:[(0,d.jsx)("button",{type:"button",title:"More actions",onClick:()=>p(a=>!a),className:(0,ax.cn)("rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-[var(--ink-hover)] hover:text-foreground",o&&"bg-[var(--ink-active)] text-foreground"),children:(0,d.jsx)(a1.A,{className:"size-4"})}),o&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"fixed inset-0 z-10",onClick:()=>p(!1)}),(0,d.jsxs)("div",{className:"absolute bottom-full right-0 z-20 mb-1 w-44 rounded-lg border border-border bg-popover p-1 shadow-xl",children:[(0,d.jsx)(bl,{disabled:h,onClick:()=>{p(!1),C(()=>bg(a.id))},children:"Deprioritize"}),(0,d.jsx)(bl,{disabled:h,onClick:()=>{p(!1),C(()=>bh(a.id))},children:"Cancel node"}),(0,d.jsx)(bl,{destructive:!0,disabled:h,onClick:()=>{p(!1),s(!0)},children:"Delete…"})]})]})]})]}),(0,d.jsx)(a5.Lt,{open:q,onOpenChange:s,children:(0,d.jsxs)(a5.EO,{children:[(0,d.jsxs)(a5.wd,{children:[(0,d.jsxs)(a5.r7,{children:["Delete “",a.title,"”?"]}),(0,d.jsx)(a5.$v,{children:"This removes the node and all its sub-nodes. It can’t be undone."})]}),(0,d.jsxs)(a5.ck,{children:[(0,d.jsx)(a5.Zr,{children:"Cancel"}),(0,d.jsx)(a5.Rx,{onClick:()=>C(()=>be(a.id)),children:"Delete"})]})]})}),j&&(0,d.jsx)(bd,{open:!0,onOpenChange:l,mode:"edit",view:b,heading:"Edit node",nodeId:a.id,hasFrontend:y,defaults:{title:a.title,role:a.role,plain:a.plain,status:a.status,cluster:a.cluster,kind:a.kind,layer:a.layer}}),m&&(0,d.jsx)(bd,{open:!0,onOpenChange:n,mode:"create",view:b,heading:"New sub-node",parentId:a.id,position:{x:a.x,y:a.y+120},hasFrontend:y,defaults:{cluster:a.cluster,layer:a.layer}})]})}function bl({onClick:a,disabled:b,destructive:c,children:e}){return(0,d.jsx)("button",{type:"button",disabled:b,onClick:a,className:(0,ax.cn)("flex w-full items-center rounded-md px-2 py-1.5 text-left text-xs transition-colors disabled:opacity-50",c?"text-red-600 hover:bg-red-500/10 dark:text-red-300":"text-foreground hover:bg-[var(--ink-hover)]"),children:e})}function bm({node:a}){let b=(0,r.useRouter)(),[c,f]=(0,e.useState)(""),[g,h]=(0,e.useState)(!1),i=a.bugFlags.filter(a=>!a.resolved),j=a=>{h(!0),a().then(()=>b.refresh()).finally(()=>h(!1))},k=()=>{let b=c.trim();b&&j(async()=>{(await fetch("/api/bug-flags",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({nodeId:a.id,by:"user",note:b})})).ok&&f("")})};return(0,d.jsxs)(a2.aU,{title:(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(l.A,{className:"size-3.5 text-rose-600 dark:text-rose-300"}),"Bug flags",i.length>0&&` (${i.length} open)`]}),children:[a.bugFlags.length>0&&(0,d.jsx)("ul",{className:"space-y-1.5",children:a.bugFlags.map(a=>(0,d.jsxs)("li",{className:(0,ax.cn)("rounded-md px-2 py-1.5",a.resolved?"opacity-50":"bg-rose-500/[0.06]"),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,ax.cn)("rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide","agent"===a.by?"bg-violet-500/15 text-violet-700 dark:text-violet-300":"bg-sky-500/15 text-sky-700 dark: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-[var(--ink-hover)] 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-[var(--ink-hover)] hover:text-red-600 dark:hover:text-red-300",children:(0,d.jsx)(ae.A,{className:"size-3"})})]})]}),(0,d.jsx)("p",{className:(0,ax.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 bg-[var(--ink-hover)] px-2 py-1 text-[11.5px] outline-none placeholder:text-muted-foreground/60 focus:bg-[var(--ink-active)]"}),(0,d.jsx)(a4.$,{size:"sm",variant:"ghost",className:"h-7 shrink-0 px-2 text-[11px] text-muted-foreground hover:text-foreground",disabled:g||!c.trim(),onClick:k,children:"Flag"})]})]})}function bn({view:a,nodes:b}){let c=b.filter(a=>0===a.priority).length;return(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-base font-semibold",children:"ROADMAP"===a?"Roadmap":"Architecture"}),(0,d.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:"Click a node for details and actions. Drag to rearrange — positions are saved."}),(0,d.jsxs)("dl",{className:"mt-4 flex gap-8 border-t border-border pt-3",children:[(0,d.jsx)(a2.ZB,{label:"nodes",value:b.length}),(0,d.jsx)(a2.ZB,{label:"critical",value:c})]})]})}var bo=c(48779);function bp({payload:a,onDismiss:b}){let[c,f]=(0,e.useState)(""),[g,h]=(0,e.useState)(null);if((a?.id??null)!==g&&(h(a?.id??null),f(a?.value??"")),!a)return null;let i=()=>{a.onCommit(c),b()};return(0,d.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":`Edit description — ${a.title}`,onMouseDown:a=>{a.target===a.currentTarget&&i()},className:"fixed inset-0 z-[70] flex items-center justify-center bg-black/55 backdrop-blur-[5px] animate-in fade-in duration-150",children:(0,d.jsxs)(bo.b,{className:"flex max-h-[82vh] w-[min(720px,92vw)] flex-col rounded-2xl duration-150 animate-in fade-in zoom-in-95",onMouseDown:a=>a.stopPropagation(),children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 border-b border-border px-4 py-3",children:[(0,d.jsx)("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:"Description"}),(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate text-sm font-semibold",children:a.title}),(0,d.jsxs)("span",{className:"shrink-0 font-mono text-[11px] text-muted-foreground",children:[c.length," chars"]}),(0,d.jsx)("button",{type:"button",onClick:i,title:"Close (Esc)",className:"shrink-0 rounded-lg p-1 text-muted-foreground transition-colors hover:bg-[var(--ink-hover)] hover:text-foreground",children:(0,d.jsx)(ae.A,{className:"size-4"})})]}),(0,d.jsx)("div",{className:"min-h-[40vh] flex-1 overflow-y-auto px-6 py-5 text-[15px] leading-relaxed",children:(0,d.jsx)(ay,{bare:!0,autoFocus:a.editable,editable:a.editable,value:c,onChange:f})}),(0,d.jsxs)("div",{className:"flex items-center gap-3 border-t border-border px-4 py-2.5 text-[11.5px] text-muted-foreground",children:[(0,d.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{className:"size-1.5 rounded-full bg-emerald-400"})," Autosaves"]}),(0,d.jsx)("span",{className:"opacity-70",children:"\xb7 Esc to close"}),a.editable&&(0,d.jsxs)("button",{type:"button",onClick:i,className:"ml-auto flex items-center gap-1.5 rounded-lg bg-[#ff7a45] px-3 py-1.5 text-xs font-semibold text-black transition hover:brightness-110",children:[(0,d.jsx)(ad.A,{className:"size-3.5"}),"Save & close"]})]})]})})}var bq=c(35283),br=c(38476),bs=c(55805),bt=c(54193),bu=c(82626),bv=c(81725),bw=c(40335),bx=c(25127),by=c(40359),bz=c(92994),bA=c(84170),bB=c(34849),bC=c(56173),bD=c(27741);function bE(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 bF=c(67637),bG=c(66002);let bH=[{value:"cluster",label:"Theme"},{value:"status",label:"Status"},{value:"priority",label:"Priority"}],bI=new Set(["title","role","plain","cluster","layer","status","priority"]),bJ={roadmapNode:aQ,archNode:aQ,annotation:t.Sh,lessonTable:aV},bK={deletable:aS.I,annotation:aW.L},bL={CONTAINS:{stroke:"#7c7c8a"},DEPENDS:{stroke:"#f5b942",dash:"6 4"},RELATES:{stroke:"#8a8a95",dash:"4 4"},REPLACES:{stroke:"#ff6b9d"}};function bM({view:a,nodes:b,edges:c,workOrder:r=[],embedded:s=!1,commentsContent:u,commentsCount:v=0,controlRef:w,onAskAgent:x,onAddComment:y,annotations:z,onPinClick:A,onUpdateComment:B,onRemoveComment:C,boardAnnotations:D,initialArrangedBy:E=null,initialCollapsed:F=[],hasFrontend:G=!1,readOnly:H=!1,firstTapHighlightsOnly:I=!1,minimap:J,staticEdgeLabels:K=!1,tableNodes:L}){let M=r.join(","),N=(0,e.useMemo)(()=>{let a=new Map;return r.forEach((b,c)=>a.set(b,c+1)),a},[M]),O=r[0]??null,P=(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,assigneeName:a.assigneeName,assigneeAvatarUrl:a.assigneeAvatarUrl,isCriterion:a.isCriterion,isChild:null!=a.parentId,parentId:a.parentId,signals:a.signals,fileCount:a.files.length,importsIn:a.importsIn,importsOut:a.importsOut,openBugs:a.bugFlags.filter(a=>!a.resolved).length}})),[b]),Q=(0,e.useMemo)(()=>{var a;let d;return a=new Set((L??[]).map(a=>a.id)),d=new Set([...b.map(a=>a.id),...a??[]]),[...b.filter(a=>a.parentId&&d.has(a.parentId)).map(a=>({id:`c-${a.id}`,source:a.parentId,sourceHandle:"sb",target:a.id,targetHandle:"tt",type:"smoothstep",style:{stroke:bL.CONTAINS.stroke}})),...c.filter(a=>d.has(a.fromId)&&d.has(a.toId)).map(a=>{let b=bL[a.kind]??bL.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,L]),[R,S]=(0,e.useState)(P),[T,U]=(0,e.useState)(Q),[V,W]=(0,e.useState)(null),[X,Y]=(0,e.useState)(null),[Z,$]=(0,e.useState)(null),[_,aa]=(0,e.useState)(!1),[ab,ac]=(0,e.useState)("details"),{tool:ad,setTool:ae,flowProps:af,paneClass:ai}=(0,bq.e)(),[ak,am]=(0,e.useState)(null),[an,ao]=(0,e.useState)(null),[ap,aq]=(0,e.useState)(!1),ar=(0,bG.G)(),as=(0,e.useRef)(!1);(0,e.useRef)("details");let[at,au]=(0,e.useState)(new Set),[av,aw]=(0,e.useState)(null),[ay,az]=(0,e.useState)(!1),aA=(0,e.useRef)(null),aB=(0,e.useCallback)((a,b,c)=>{S(c=>c.map(c=>c.id===a?{...c,data:{...c.data,...b}}:c)),c&&fetch(`/api/nodes/${a}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(Object.fromEntries(Object.entries(b).filter(([a])=>bI.has(a))))})},[]),aC=(0,e.useMemo)(()=>JSON.stringify(Array.from(new Set(R.map(a=>a.data.cluster).filter(a=>!!a))).sort()),[R]),aD=(0,e.useMemo)(()=>JSON.parse(aC),[aC]),aE=(0,e.useCallback)(a=>au(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c}),[]),aF=(0,e.useCallback)(a=>{W(a),aa(!0),ac("details")},[]),aG=(0,e.useCallback)(a=>{S(b=>b.filter(b=>b.id!==a)),W(b=>b===a?null:b),fetch(`/api/nodes/${a}`,{method:"DELETE"})},[]),aH=(0,e.useCallback)(async(b,c,d="FEATURE")=>{let e=(0,f.sX)(),g="ARCHITECTURE"===a?"REBUILD":"PENDING",h="BUG"===d?"New bug":"New node";S(f=>[...f,{id:e,type:"ROADMAP"===a?"roadmapNode":"archNode",position:{x:b,y:c},data:{title:h,role:null,plain:null,status:g,priority:2,cluster:null,view:a,kind:d,source:"MANUAL",sourceRef:null,isCriterion:!1,isChild:!1,parentId:null,openBugs:0}}]),au(a=>new Set(a).add(e)),aw(e),W(e);try{if(!(await fetch("/api/nodes",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({id:e,view:a,kind:d,title:h,status:g,x:b,y:c})})).ok)throw Error("create failed")}catch{S(a=>a.filter(a=>a.id!==e)),au(a=>{let b=new Set(a);return b.delete(e),b}),aw(a=>a===e?null:a),W(a=>a===e?null:a)}},[a]),aI=(0,e.useCallback)((a,b)=>{if(!ak||!aA.current)return;let c=aA.current.screenToFlowPosition({x:a,y:b});aH(c.x,c.y,ak),am(null),ao(null)},[ak,aH]);(0,e.useCallback)(()=>{let a=R.filter(a=>"annotation"!==a.type);return function(a,b,c={}){let d=c.colW??320,e=c.rowH??150,f=c.maxCols??4,g=c.bandGap??90;if(0===a.length){if(0===b.length)return{x:0,y:0};let a=Math.max(...b.map(a=>a.y));return bE(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 bE(b,{x:h+m*d,y:l[m]+e})}(a.filter(a=>!a.data.parentId&&!(a.data.cluster??"").trim()).map(a=>a.position),a.map(a=>a.position))},[R]);let aJ=(0,e.useCallback)(()=>{az(!1),am("FEATURE")},[]),aK=(0,e.useCallback)(()=>{az(!1),am("BUG")},[]),[aL,aM]=(0,e.useState)(null),aN=(0,e.useCallback)(a=>aM(a),[]),aO=(0,e.useMemo)(()=>({view:a,readOnly:H,categories:aD,statuses:"ARCHITECTURE"===a?ag.m6:ag.yl,patch:aB,isExpanded:a=>at.has(a),toggleExpand:aE,openDetailed:aF,openFocus:aN,removeNode:aG,editingTitleId:av,onAskAgent:x,hasFrontend:G}),[a,H,aD,aB,at,aE,aF,aN,aG,av,x,G]),[aP,aQ]=(0,e.useState)(E),[aS,aT]=(0,e.useState)(""),[aU,aV]=(0,e.useState)("full"),[aW,aX]=(0,e.useState)(new Set),[aY,aZ]=(0,e.useState)(new Set),[a$,a_]=(0,e.useState)(new Set),[a0,a1]=(0,e.useState)(null),a2=(0,e.useMemo)(()=>Array.from(new Set(b.map(a=>a.status))),[b]),a3=(0,e.useMemo)(()=>Array.from(new Set(b.map(a=>a.cluster).filter(a=>!!a))).sort(),[b]),a4=(0,e.useMemo)(()=>Array.from(new Set(b.map(a=>a.priority))).sort((a,b)=>a-b),[b]),a5=(0,e.useCallback)(a=>(!aW.size||!!aW.has(a.status))&&(!aY.size||!!a.cluster&&!!aY.has(a.cluster))&&(!a$.size||!!a$.has(a.priority)),[aW,aY,a$]),a6=aW.size+aY.size+a$.size+ +!!a0,a7=(0,e.useCallback)(()=>{aX(new Set),aZ(new Set),a_(new Set),a1(null)},[]),[a8,a9]=(0,e.useState)(()=>new Set(F)),ba=(0,e.useCallback)(b=>{a9(c=>{let d=new Set(c);return d.has(b)?d.delete(b):d.add(b),s||fetch("/api/board-layout",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({board:"ROADMAP"===a?"roadmap":"architecture",collapsed:[...d]})}).catch(()=>{}),d})},[s,a]),bb=(0,e.useMemo)(()=>(function(a){let b=new Map;for(let c of a)c.parentId&&b.set(c.parentId,(b.get(c.parentId)??0)+1);return b})(b),[b]),bc=(0,e.useMemo)(()=>{let a=new Map;for(let c of b)c.parentId&&"DONE"===c.status&&a.set(c.parentId,(a.get(c.parentId)??0)+1);return a},[b]),bd=(0,e.useMemo)(()=>(function(a,b){let c=new Set;if(0===b.size)return c;let d=new Map;for(let b of a){if(!b.parentId)continue;let a=d.get(b.parentId);a?a.push(b.id):d.set(b.parentId,[b.id])}let e=[...b];for(;e.length;){let a=e.pop();for(let b of d.get(a)??[])c.has(b)||(c.add(b),e.push(b))}return c})(b,a8),[b,a8]),be=(0,e.useMemo)(()=>R.map(a=>({...a,hidden:!a5(a.data)||bd.has(a.id)})),[R,a5,bd]),bf=(0,e.useMemo)(()=>new Set(be.filter(a=>a.hidden).map(a=>a.id)),[be]),bg=(0,e.useMemo)(()=>T.map(a=>({...a,hidden:bf.has(a.source)||bf.has(a.target)})),[T,bf]),bh=(0,e.useMemo)(()=>{if(X){let a=bg.find(a=>a.id===X);return a?new Set([a.source,a.target]):null}return V?(0,br.F1)(V,bg.filter(a=>!a.hidden)):null},[V,X,bg]),bj=aS.trim().length>0,bk=(0,e.useMemo)(()=>{if(!bj)return null;let a=new Set;for(let b of R)a5(b.data)&&(0,bv.Qk)((0,bv.$$)(b.data),aS)&&a.add(b.id);return a},[R,aS,a5,bj]),bl=(0,e.useMemo)(()=>"ARCHITECTURE"===a?(0,bw.d)(b):[],[a,b]),bm=(0,e.useCallback)(a=>{aA.current&&(a.focusIds.length?aA.current.fitView({nodes:a.focusIds.map(a=>({id:a})),duration:700,padding:.3,maxZoom:1.1}):aA.current.fitView({duration:700,padding:.2}))},[]),bn=(0,bx.W)(bl,bm),bo=bn.focusIds,bN=bo??bk??bh,bO=bk??bo??bh,bP=(0,e.useMemo)(()=>a0?new Set(be.filter(a=>!a.hidden&&!(0,bA.F)(a0,(0,ah.jR)(a.data.layer))).map(a=>a.id)):null,[a0,be]),bQ=(0,e.useMemo)(()=>be.map(a=>{let b=N.get(a.id),c=bb.get(a.id)??0,d={...b?{workOrderRank:b,isNext:1===b}:{},...c>0?{childCount:c,childDone:bc.get(a.id)??0,collapsed:a8.has(a.id),onToggleCollapse:ba}:{}},e=b||c>0?{...a,data:{...a.data,...d}}:a;if(at.has(a.id)&&(e={...e,zIndex:25}),e.hidden)return e;if(!bN)return bP?.has(a.id)?{...e,style:{...e.style,opacity:.3,filter:"saturate(0.3)",transition:"opacity 120ms, filter 120ms"}}:e;let f=bN.has(a.id),g=bO?bv.Uy:.45;return{...e,zIndex:f&&bO?24:e.zIndex,style:{...e.style,opacity:f?1:g,boxShadow:f&&bO?bv.RU:e.style?.boxShadow,borderRadius:f&&bO?"var(--radius-lg)":e.style?.borderRadius,transition:"opacity 120ms, box-shadow 120ms"}}}),[be,bN,bO,N,at,bP,bb,bc,a8,ba]),[bR,bS]=(0,e.useState)(()=>new Map),[bT,bU]=(0,e.useState)(()=>new Map),bV=(0,e.useMemo)(()=>new Set((L??[]).map(a=>a.id)),[L]),bW=(0,e.useMemo)(()=>{if("ROADMAP"===a&&!aP||"ROADMAP"!==a&&"ARCHITECTURE"!==a)return[];let b=new Map(bQ.map(a=>[a.id,a])),c=[];for(let e of bQ){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&&aP?(d=f.data,"status"===aP?ag.nR[d.status]?.label??d.status:"priority"===aP?`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})}for(let a of L??[]){let b=bT.get(a.id)??a;c.push({id:a.id,group:a.group?.trim()||"—",x:b.x,y:b.y,w:bR.get(a.id)?.width??270,h:bR.get(a.id)?.height??200})}return(0,bD.S)(c)},[bQ,aP,a,L,bR,bT]),bX="ARCHITECTURE"===a||"cluster"===aP?"category":"neutral",bY=(0,e.useMemo)(()=>{if(bo)return bg.map(a=>a.hidden?a:bo.has(a.source)&&bo.has(a.target)?{...a,style:{...a.style,opacity:1}}:{...a,label:void 0,style:{...a.style,opacity:.06}});if(bk)return bg.map(a=>a.hidden?a:bk.has(a.source)&&bk.has(a.target)?{...a,style:{...a.style,opacity:1}}:{...a,label:void 0,style:{...a.style,opacity:.06}});let a=V??Z;return X||a?bg.map(b=>b.hidden?b:(X?b.id===X:b.source===a||b.target===a)?{...b,zIndex:20,style:{...b.style,opacity:1,strokeWidth:2.5}}:{...b,selectable:!1,label:void 0,markerEnd:void 0,style:{...b.style,opacity:.06}}):bg.map(a=>{if(a.hidden)return a;let b=bP&&(bP.has(a.source)||bP.has(a.target));return K?{...a,style:{...a.style,opacity:b?.25:1}}:{...a,label:void 0,style:{...a.style,opacity:b?.06:.18}}})},[bg,V,X,Z,bk,bP,bo,K]),bZ=void 0!==D,[b$,b_]=(0,e.useState)(D??[]),b0=(0,e.useMemo)(()=>{if(bZ){let a=new Set(b.map(a=>a.id));return b$.filter(b=>"feature"===b.targetKind&&a.has(b.targetId)).map((a,b)=>({id:a.id,n:b+1,targetId:a.targetId,text:a.body,x:a.x,y:a.y}))}let a=new Map((z??[]).map(a=>[a.id,a.comment]));return(0,aR.m)(z??[],{tables:[],features:b.map(a=>({id:a.id,title:a.title}))}).map(b=>({id:b.annotationId,n:b.n,targetId:b.targetId,text:a.get(b.annotationId)??"",x:null,y:null}))},[bZ,b$,z,b]),b1=(0,e.useMemo)(()=>{let a=new Map;for(let b of b0){let c=a.get(b.targetId)??[];c.push({id:b.id,n:b.n,column:null}),a.set(b.targetId,c)}return a},[b0]),b2=(0,e.useCallback)(async a=>{let c=(0,aR.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();b_(b=>[...b,a])}},[b]),b3=(0,e.useCallback)((a,b)=>{b_(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)})},[]),b4=(0,e.useCallback)(a=>{b_(b=>b.filter(b=>b.id!==a)),fetch(`/api/board-annotations/${a}`,{method:"DELETE"})},[]),b5=bZ?b2:y,[b6,b7]=(0,e.useState)(()=>new Map),b8=(0,e.useMemo)(()=>{let a=new Map(bQ.map(a=>[a.id,a])),b=new Map,c=b0.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:b6.get(`anno-${c.id}`),draggable:bZ,data:{n:c.n,text:c.text,annotationId:c.id,onClick:bZ||B?void 0:A,editable:bZ||!!B,onChangeText:bZ?(a,b)=>b3(a,{body:b}):B,onDelete:bZ?b4:C}}]});return[...bQ.map(a=>{let b=b1.get(a.id);return b||b5?{...a,data:{...a.data,pins:b,onPinClick:bZ?void 0:A,onComment:b5}}:a}),...c,...(L??[]).map(a=>({id:a.id,type:"lessonTable",position:bT.get(a.id)??{x:a.x,y:a.y},measured:bR.get(a.id),draggable:!0,data:a.data}))]},[bQ,b0,b1,bZ,A,B,C,b5,b3,b4,b6,L,bR,bT]),b9=(0,e.useMemo)(()=>b0.map(a=>({id:`annoe-${a.id}`,source:a.targetId,sourceHandle:`pin-${a.id}`,target:`anno-${a.id}`,targetHandle:"in",type:"annotation",selectable:!1,zIndex:30,style:{stroke:t.V5,strokeWidth:1.5,opacity:.9}})),[b0]),ca=(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;b_(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&&b7(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 if("dimensions"===c.type&&bV.has(c.id)){let a=c.dimensions;a&&bS(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 if("position"===c.type&&bV.has(c.id)&&c.position){let{x:a,y:b}=c.position;bU(d=>new Map(d).set(c.id,{x:a,y:b}))}else b.push(c);b.length&&S(a=>(0,h._0)(b,a))},[bV]),cb=(0,e.useCallback)(a=>U(b=>(0,h.zW)(a,b)),[]),cc=(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=bL.DEPENDS;U(b=>b.some(a=>a.id===c.id)?b:[...b,{id:c.id,source:c.fromId,sourceHandle:a.sourceHandle??void 0,target:c.toId,targetHandle:a.targetHandle??void 0,label:"depends on",type:"deletable",markerEnd:{type:g.TG.ArrowClosed,color:d.stroke},style:{stroke:d.stroke,strokeDasharray:d.dash}}])},[]),cd=(0,e.useCallback)(async(b,c,d)=>{let e=await fetch("/api/nodes",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({view:a,title:"New node",parentId:b.id,cluster:b.data.cluster??null,status:"ARCHITECTURE"===a?"REBUILD":"PENDING",x:c,y:d})});if(!e.ok)return;let f=await e.json();S(e=>[...e,{id:f.id,type:"ROADMAP"===a?"roadmapNode":"archNode",position:{x:c,y:d},data:{title:f.title,role:f.role,plain:f.plain,status:f.status,priority:f.priority,cluster:f.cluster,view:f.view,source:f.source,sourceRef:f.sourceRef,kind:f.kind,isCriterion:!1,isChild:!0,parentId:b.id,openBugs:0}}]),U(a=>[...a,{id:`c-${f.id}`,source:b.id,sourceHandle:"sb",target:f.id,targetHandle:"tt",type:"smoothstep",style:{stroke:bL.CONTAINS.stroke}}]),au(a=>new Set(a).add(f.id)),aw(f.id),W(f.id)},[a]),ce=(0,e.useCallback)(async(a,b)=>{if(b.isValid||!b.fromNode||!aA.current)return;let c=a.changedTouches,d=c?.[0]?.clientX??a.clientX,e=c?.[0]?.clientY??a.clientY,{x:f,y:g}=aA.current.screenToFlowPosition({x:d,y:e});await cd(b.fromNode,f,g)},[cd]),cf=(0,e.useMemo)(()=>b.find(a=>a.id===V)??null,[b,V]),cg=(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})})},[]),ch=(0,e.useCallback)(a=>{W(a),Y(null);let b=aA.current?.getNode(a);if(!b||!aA.current)return;let c=b.measured?.width??128,d=b.measured?.height??48;aA.current.setCenter(b.position.x+c/2,b.position.y+d/2,{zoom:1.2,duration:600})},[]),ci=(0,e.useCallback)(a=>{let b=(0,bB.VI)(R.map(a=>({id:a.id,parentId:a.data.parentId??null,cluster:a.data.cluster,status:a.data.status,priority:a.data.priority,title:a.data.title,role:a.data.role})),a,{viewportAspect:window.innerWidth/window.innerHeight});S(a=>a.map(a=>{let c=b.get(a.id);return c?{...a,position:c}:a}));let c=Array.from(b,([a,b])=>({id:a,x:b.x,y:b.y}));c.length&&fetch("/api/nodes/positions",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({batch:c})}),aQ(a),fetch("/api/board-layout",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({board:"roadmap",arrangedBy:a})}),requestAnimationFrame(()=>aA.current?.fitView({duration:600,padding:.2}))},[R]);(0,e.useMemo)(()=>{let b=new Map;if("ROADMAP"!==a||!aP)return b;let c=a=>"status"===aP?a.status:"priority"===aP?`P${a.priority}`:a.cluster??"—";for(let a of R)"annotation"!==a.type&&b.set(a.id,c(a.data));return b},[R,aP,a]),(0,e.useRef)(null);let cj=(0,e.useCallback)(()=>{let a=R.filter(a=>"annotation"!==a.type),b=(0,bC.to)(a.map(a=>({id:a.id,group:(a.data.cluster??"").trim()||"—"})),c.filter(a=>"DEPENDS"===a.kind).map(a=>({fromId:a.fromId,toId:a.toId})),{viewportAspect:window.innerWidth/window.innerHeight});S(a=>a.map(a=>{let c=b.get(a.id);return c?{...a,position:c}:a}));let d=Array.from(b,([a,b])=>({id:a,x:b.x,y:b.y}));d.length&&fetch("/api/nodes/positions",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({batch:d})}),requestAnimationFrame(()=>aA.current?.fitView({duration:600,padding:.2}))},[R,c]),ck=(0,e.useMemo)(()=>bj?(0,bv.r2)(R.filter(a=>a5(a.data)),aS,a=>(0,bv.$$)(a.data),a=>({id:a.id,label:a.data.title,sublabel:a.data.cluster??a.data.status,kind:"feature"})):[],[R,aS,a5,bj]);function cl(a,b){b(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})}return(0,d.jsx)(aj.Provider,{value:aO,children:(0,d.jsxs)("div",{className:(0,ax.cn)("canvas-dots relative w-full",s?"h-full":"h-screen",ap&&"rf-panning"),onDragOver:a=>{a.dataTransfer.types.includes("application/beacon-node")&&(a.preventDefault(),a.dataTransfer.dropEffect="copy")},onDrop:a=>{if(!a.dataTransfer.getData("application/beacon-node")||!aA.current)return;a.preventDefault();let{x:b,y:c}=aA.current.screenToFlowPosition({x:a.clientX,y:a.clientY});aH(b,c,"BUG"===a.dataTransfer.getData("application/beacon-node-kind")?"BUG":"FEATURE")},children:[(0,d.jsxs)(h.Gc,{...af,className:(0,ax.cn)(ai,(ak||ay)&&"rf-placing"),nodes:b8,edges:"far"===aU?[...bY,...b9].map(a=>({...a,hidden:!0})):[...bY,...b9],nodeTypes:bJ,edgeTypes:bK,nodesConnectable:!H,connectionMode:g.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onInit:a=>{aA.current=a},onNodesChange:ca,onEdgesChange:cb,onMoveStart:()=>aq(!0),onMoveEnd:()=>aq(!1),onConnect:cc,onConnectEnd:ce,onNodeMouseEnter:(a,b)=>$(b.id),onNodeMouseLeave:()=>$(null),onEdgesDelete:a=>{for(let b of a)b.id.startsWith("c-")||fetch(`/api/edges/${b.id}`,{method:"DELETE"})},onNodesDelete:a=>{for(let b of a)b.id.startsWith("anno-")||(fetch(`/api/nodes/${b.id}`,{method:"DELETE"}),W(a=>a===b.id?null:a))},onNodeClick:(a,b)=>{if(ak)return void aI(a.clientX,a.clientY);if("lessonTable"===b.type)return;if("annotation"===b.type){let a=b.data;a.editable||A?.(a.annotationId);return}if(ay){if(az(!1),b.data.isChild)return;cd(b,b.position.x+300,b.position.y+60);return}let c=V===b.id;if(W(b.id),Y(null),ac("details"),s){let b=a.target,d=b?.closest("input, textarea, select, button, [role='combobox']"),e=I&&!c&&!as.current;d||e||aa(!0)}},onEdgeClick:(a,b)=>{Y(b.id),W(null),ac("details")},onPaneClick:a=>{ak?aI(a.clientX,a.clientY):ay?az(!1):(aa(!1),W(null),Y(null))},onNodeDragStop:(a,b)=>{if(b.id.startsWith("anno-")){bZ&&b3(b.id.slice(5),{x:b.position.x,y:b.position.y});return}H||cg(b.id,b.position.x,b.position.y)},deleteKeyCode:H?null:["Backspace","Delete"],colorMode:ar,fitView:!0,fitViewOptions:{padding:.15,minZoom:.38,maxZoom:.9},minZoom:.2,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[(0,d.jsx)(bF.Z,{regions:bW,tone:bX,lod:aU}),(0,d.jsx)(al.J,{onLod:aV}),(0,d.jsx)(h.H2,{position:"bottom-right",className:"!overflow-hidden !rounded-xl !border !border-border [&_button]:!border-border [&_button]:!bg-card/70 [&_button]:!text-foreground [&_button]:!backdrop-blur"}),(0,d.jsx)(h.Zk,{position:"bottom-left",style:{marginBottom:118},children:(0,d.jsx)(bq.H,{tool:ad,onChange:ae})}),(0,d.jsx)(h.Zk,{position:"bottom-right",style:{marginBottom:152},children:(0,d.jsx)(bz.er,{title:"Legend",trigger:(a,b)=>(0,d.jsx)("button",{type:"button",onClick:b,title:"Legend",className:(0,ax.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",a?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,d.jsx)(i.A,{className:"size-4"})}),children:(0,d.jsxs)("ul",{className:"space-y-1.5 text-[10.5px] text-muted-foreground",children:["ROADMAP"===a?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-sky-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"feature"}),(0,d.jsx)("span",{children:"top-level card \xb7 can have sub-tasks"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-zinc-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:"sub-task"}),(0,d.jsx)("span",{children:"child of a feature"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-rose-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-rose-300",children:"bug"}),(0,d.jsx)("span",{children:"a bug to fix \xb7 not a feature"})]})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-sky-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"component"}),(0,d.jsx)("span",{children:"a subsystem \xb7 can have sub-components"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-zinc-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:"sub-component"}),(0,d.jsx)("span",{children:"part of a component"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-rose-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-rose-300",children:"bug"}),(0,d.jsx)("span",{children:"a flagged issue on a component"})]})]}),G&&(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-3 w-1 shrink-0 rounded-sm",style:{background:(0,ah.A6)("fullstack")}}),(0,d.jsx)("span",{children:"left stripe \xb7 frontend / backend layer"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-px w-6 bg-[#33333a]"}),(0,d.jsx)("span",{children:"contains \xb7 drag the bottom handle to empty canvas"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#f5b942"}}),(0,d.jsxs)("span",{children:["depends on \xb7 drag between two ","ROADMAP"===a?"cards":"components"]})]})]})})}),(J??!s)&&(0,d.jsx)(h.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!overflow-hidden !rounded-xl !border !border-border !bg-card/50 !backdrop-blur",nodeColor:a=>a.data?.priority===0?"#ff3860":"#555"}),!s&&(0,d.jsxs)(h.Zk,{position:"bottom-center",className:"!mb-4 flex flex-col items-center gap-2",children:[ay&&(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:cj,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-[var(--ink-hover)] 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"}),bH.map(a=>(0,d.jsx)("button",{onClick:()=>ci(a.value),title:`Arrange features into lanes by ${a.label.toLowerCase()}`,className:(0,ax.cn)("h-7 rounded-full px-2.5 text-[11px] font-medium transition-colors",aP===a.value?"bg-[var(--ink-active)] text-foreground":"text-muted-foreground hover:bg-[var(--ink-hover)] 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:aJ,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-[var(--ink-hover)] 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:aK,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-[var(--ink-hover)] 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-border"}),(0,d.jsxs)("button",{onClick:()=>{am(null),az(a=>!a)},title:"ARCHITECTURE"===a?"Add sub-component (click a component next)":"Add sub-task (click a feature next)",className:(0,ax.cn)("flex h-8 items-center gap-1.5 rounded-full px-3 text-[12px] font-medium transition-colors",ay?"bg-[var(--ink-active)] text-foreground":"text-muted-foreground hover:bg-[var(--ink-hover)] hover:text-foreground"),children:[(0,d.jsx)(m.A,{className:"size-3.5"}),"ARCHITECTURE"===a?"Sub-component":"Sub-task"]})]})]}),!s&&bl.length>0&&!bn.active&&(0,d.jsx)(h.Zk,{position:"top-left",className:"!mt-14",children:(0,d.jsxs)("button",{type:"button",onClick:bn.start,title:"Guided, domain-by-domain walkthrough of the architecture",className:"glass flex items-center gap-1.5 rounded-xl px-3 py-1.5 text-[11px] text-muted-foreground transition-colors hover:text-foreground",children:[(0,d.jsx)(n.A,{className:"size-3.5"}),"Start tour"]})}),!s&&(0,d.jsx)(h.Zk,{position:"top-right",className:(0,ax.cn)("glass rounded-full px-1 py-0.5 transition-[margin] duration-200",_&&"!mr-[352px]"),children:(0,d.jsx)(bs.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,ax.cn)("!mt-14 flex items-center gap-1 transition-[margin] duration-200",_&&"!mr-[352px]",s&&"hidden"),children:[(0,d.jsx)(bt.X,{query:aS,onQuery:aT,hits:ck,placeholder:"Find a feature…",onPick:a=>{aT(""),ch(a)},onZoomToMatches:()=>{bk?.size&&aA.current?.fitView({nodes:[...bk].map(a=>({id:a})),duration:600,padding:.2})}}),"ROADMAP"===a&&O&&(0,d.jsx)("button",{type:"button",onClick:()=>ch(O),title:"Jump to the next feature to work on",className:"glass flex size-8 items-center justify-center rounded-lg text-emerald-300 transition-colors hover:text-emerald-200",children:(0,d.jsx)(o.A,{className:"size-4"})}),(0,d.jsx)(bu.e,{defaultSelection:a}),(0,d.jsxs)(bz.er,{title:"Filters",trigger:(a,b)=>(0,d.jsxs)("button",{type:"button",onClick:b,title:"Filters",className:(0,ax.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",a||a6>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,d.jsx)(p.A,{className:"size-4"}),a6>0&&(0,d.jsx)("span",{className:"absolute -right-1 -top-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-[var(--accent-2,#ff7a45)] px-1 text-[9px] font-semibold text-white",children:a6})]}),children:[G&&(0,d.jsx)(bz.r1,{title:"Layer",children:(0,d.jsx)(bA.o,{bare:!0,value:a0,onChange:a1})}),a2.length>0&&(0,d.jsx)(bz.r1,{title:"Status",children:a2.map(a=>(0,d.jsx)(bz.vu,{on:aW.has(a),onClick:()=>cl(a,aX),children:ag.nR[a]?.label??a},a))}),a3.length>0&&(0,d.jsx)(bz.r1,{title:"Cluster",children:a3.map(a=>(0,d.jsx)(bz.vu,{on:aY.has(a),onClick:()=>cl(a,aZ),children:a},a))}),a4.length>0&&(0,d.jsx)(bz.r1,{title:"Priority",children:a4.map(a=>(0,d.jsxs)(bz.vu,{on:a$.has(a),onClick:()=>cl(a,a_),children:["P",a]},a))}),a6>0&&(0,d.jsx)("button",{type:"button",onClick:a7,className:"mt-1 w-full rounded-md border border-border px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-[var(--ink-hover)] hover:text-foreground",children:"clear filters"})]}),!_&&(0,d.jsx)("button",{onClick:()=>{aa(!0),ac("details")},title:"Show panel",className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,d.jsx)(q.A,{className:"size-4"})})]})]}),_&&(0,d.jsx)(bi,{view:a,selected:cf,allNodes:b,onClose:()=>{aa(!1),ac("details")},commentsContent:u,commentsCount:v,activeTab:ab,onTabChange:ac,onAddComment:b5,topOffset:s?64:void 0}),(0,d.jsx)(bp,{payload:aL,onDismiss:()=>aM(null)}),(ak||ay)&&an&&(0,d.jsxs)("div",{className:"pointer-events-none fixed z-50 flex translate-x-3 translate-y-3 items-center gap-1.5 rounded-lg border border-border bg-card/95 px-2.5 py-1.5 text-xs shadow-xl backdrop-blur dark:border-white/15",style:{left:an.x,top:an.y},children:[(0,d.jsx)("span",{className:(0,ax.cn)("rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide","BUG"===ak?"bg-rose-500/15 text-rose-300":"FEATURE"===ak?"bg-sky-500/15 text-sky-300":"bg-zinc-500/15 text-zinc-300"),children:"BUG"===ak?"Bug":"FEATURE"===ak?"ARCHITECTURE"===a?"Component":"Feature":"Sub-task"}),(0,d.jsx)("span",{className:"text-muted-foreground",children:ak?"click to place \xb7 Esc":"click a feature to attach \xb7 Esc"})]}),bn.active&&bn.step&&(0,d.jsx)(by.d,{steps:bl,index:bn.index,onPrev:bn.prev,onNext:bn.next,onExit:bn.stop,onGoto:bn.goto})]})})}},62896:(a,b,c)=>{c.a(a,async(a,d)=>{try{let m;c.d(b,{db:()=>s,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",p=globalThis,q=p.dzByUrl??=new Map;function k(a){let b=q.get(a);if(!b){let c;(c=(0,f.createClient)({url:a})).execute("PRAGMA foreign_keys = ON;"),c.execute("PRAGMA busy_timeout = 5000;"),b=(0,e.f)(c,{schema:n}),q.set(a,b)}return b}let r=new Map;function l(a=o){if(!/^file:/i.test(a))return Promise.resolve();let b=r.get(a);return b||(b=c.e(9127).then(c.bind(c,29127)).then(({provisionDb:b})=>b(a)).then(()=>{}).catch(b=>{r.delete(a),console.error("[beacon] fallback db provision failed:",b instanceof Error?b.message:b)}),r.set(a,b)),b}let s=new Proxy({},{get(a,b){let c=function(){if(process.env.BEACON_REPO)return k(o);let a=(0,i.p1)()??(0,i.UP)();return a?k((0,i.Nx)(a)):k(o)}(),d=c[b];return"function"==typeof d?d.bind(c):d}});d()}catch(a){d(a)}})},66002:(a,b,c)=>{c.d(b,{G:()=>e});var d=c(67484);function e(){let[a,b]=(0,d.useState)("dark");return 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-border bg-[var(--ink-hover)]",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))})}},71703:(a,b,c)=>{c.d(b,{b:()=>e});var d=c(67484);function e(){let[a,b]=(0,d.useState)("idle"),[c,e]=(0,d.useState)(""),[f,g]=(0,d.useState)(""),[h,i]=(0,d.useState)(!1);async function j(){try{await navigator.clipboard.writeText(c),i(!0),setTimeout(()=>i(!1),1500)}catch{}}return{status:a,url:c,error:f,copied:h,mint:async function a(a){b("loading"),g(""),i(!1);try{let c=await fetch("/api/share/create",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(a)}),d=await c.json();if(!c.ok||!d.url){g(d.error??"Could not create the link."),b("error");return}e(d.url),b("done")}catch{g("Could not reach the local Beacon daemon."),b("error")}},copy:j,reset:function(){b("idle"),e(""),g(""),i(!1)}}}},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)}},82626:(a,b,c)=>{c.d(b,{e:()=>B});var d=c(48249),e=c(67484),f=c(89327),g=c(69357),h=c(74732),i=c(26284),j=c(33191),k=c(42706);let l=["ROADMAP","ARCHITECTURE","DATABASE"],m=k.k5(l),n=k.Ik({name:k.Yj(),type:k.Yj(),isPk:k.zM(),isFk:k.zM(),nullable:k.zM(),note:k.Yj().nullable()}),o=k.Ik({id:k.Yj(),view:k.Yj(),kind:k.Yj(),cluster:k.Yj().nullable(),layer:k.Yj().nullable(),title:k.Yj(),role:k.Yj().nullable(),plain:k.Yj().nullable(),status:k.Yj(),priority:k.ai(),x:k.ai(),y:k.ai(),source:k.Yj(),sourceRef:k.Yj().nullable(),parentId:k.Yj().nullable(),isCriterion:k.zM(),files:k.YO(k.Yj()),signals:k.bz().optional(),bugFlags:k.YO(k.bz())}),p=k.Ik({id:k.Yj(),fromId:k.Yj(),toId:k.Yj(),kind:k.Yj(),label:k.Yj().nullable(),sourceHandle:k.Yj().nullable(),targetHandle:k.Yj().nullable()}),q=k.Ik({nodes:k.YO(o),edges:k.YO(p),hasFrontend:k.zM()}),r=k.Ik({id:k.Yj(),name:k.Yj(),domain:k.Yj().nullable(),description:k.Yj().nullable(),source:k.Yj(),x:k.ai(),y:k.ai(),columns:k.YO(n)}),s=k.Ik({id:k.Yj(),fromTableId:k.Yj(),toTableId:k.Yj(),fromColumn:k.Yj(),toColumn:k.Yj(),label:k.Yj().nullable()}),t=k.Ik({id:k.Yj(),method:k.Yj(),path:k.Yj(),domain:k.Yj().nullable(),description:k.Yj().nullable(),source:k.Yj(),x:k.ai(),y:k.ai(),tables:k.YO(k.Ik({tableId:k.Yj(),access:k.Yj()}))}),u=k.Ik({proposedAt:k.ai(),status:k.Yj(),tables:k.YO(k.bz()),relations:k.YO(k.bz()),endpoints:k.YO(k.bz())}).nullable(),v=k.Ik({tables:k.YO(r),relations:k.YO(s),endpoints:k.YO(t),draft:u}),w=k.Ik({kind:k.eu("boards"),version:k.eu(1),createdAt:k.ai(),workspaceLabel:k.Yj(),selectedTabs:k.YO(m).min(1),roadmap:q.optional(),architecture:q.optional(),database:v.optional()}),x=k.Ik({kind:k.eu("plan"),version:k.eu(1),createdAt:k.ai(),workspaceLabel:k.Yj(),title:k.Yj(),markdown:k.Yj(),verdict:k.k5(["approved","discarded"]).nullable(),roadmap:q.optional(),draft:u.optional()});k.gM("kind",[w,x]);var y=c(71703),z=c(99281);let A=[{value:"ALL",label:"All"},{value:"ROADMAP",label:"Roadmap"},{value:"ARCHITECTURE",label:"Architecture"},{value:"DATABASE",label:"Database"}];function B({defaultSelection:a="ALL"}){let[b,c]=(0,e.useState)(!1),[k,m]=(0,e.useState)(a),{status:n,url:o,error:p,copied:q,mint:r,copy:s,reset:t}=(0,y.b)();return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("button",{type:"button",title:"Share a read-only link to these boards",onClick:function(){m(a),t(),c(!0)},className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,d.jsx)(f.A,{className:"size-4"})}),(0,d.jsx)(h.lG,{open:b,onOpenChange:c,children:(0,d.jsxs)(h.Cf,{children:[(0,d.jsxs)(h.c7,{children:[(0,d.jsx)(h.L3,{children:"Share a read-only link"}),(0,d.jsx)(h.rr,{children:"Anyone with the link can view these boards — no Beacon needed. Links expire after 7 days."})]}),"done"===n?(0,d.jsx)(z.F,{url:o,copied:q,onCopy:s}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"flex rounded-lg border border-border bg-background/40 p-0.5",children:A.map(a=>(0,d.jsx)("button",{onClick:()=>m(a.value),className:(0,j.cn)("flex-1 rounded-md px-1.5 py-1.5 text-[11px] font-medium transition-colors",k===a.value?"bg-[var(--ink-active)] text-foreground":"text-muted-foreground hover:text-foreground"),children:a.label},a.value))}),"error"===n&&(0,d.jsx)("p",{className:"text-[12px] text-red-400",children:p}),(0,d.jsx)("div",{className:"flex justify-end",children:(0,d.jsx)(i.$,{size:"sm",onClick:function(){r({kind:"boards",tabs:"ALL"===k?[...l]:[k]})},disabled:"loading"===n,children:"loading"===n?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g.A,{className:"size-3.5 animate-spin"})," Creating…"]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.A,{className:"size-3.5"})," Create link"]})})})]})]})})]})}},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,bare:g=!1}){return(0,d.jsx)("div",{className:(0,f.cn)("flex items-center gap-0.5",!g&&"glass 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-[var(--ink-active)] text-foreground":"text-muted-foreground hover:bg-[var(--ink-hover)] 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)})})}},85360:(a,b,c)=>{c.d(b,{h:()=>t});var d=c(48249),e=c(67484),f=c(13839),g=c(9728),h=c(15741),i=c(8251),j=c(91995),k=c(2409),l=c(22130);function m(a,b){return{name:a,path:b,folders:new Map,files:new Map}}function n(a,b){return a.kind!==b.kind?"folder"===a.kind?-1:1:a.name.localeCompare(b.name,void 0,{sensitivity:"base"})}var o=c(33191);let p={added:"text-emerald-400",modified:"text-amber-300",deleted:"text-rose-400 line-through"},q={added:"bg-emerald-400",modified:"bg-amber-300",deleted:"bg-rose-400"};function r({name:a,className:b}){let c=a.slice(a.lastIndexOf(".")+1).toLowerCase();return["ts","tsx","js","jsx","mjs","cjs"].includes(c)?(0,d.jsx)(f.A,{className:b}):"json"===c?(0,d.jsx)(g.A,{className:b}):["md","mdx","txt","css","scss"].includes(c)?(0,d.jsx)(h.A,{className:b}):(0,d.jsx)(i.A,{className:b})}function s({nodes:a,depth:b,collapsed:c,onToggle:e,onSelect:f,selectedPath:g,livePath:h}){return(0,d.jsx)("ul",{className:(0,o.cn)(b>0&&"ml-[7px] border-l border-border pl-1.5"),children:a.map(a=>{let i,m;return"folder"===a.kind?(0,d.jsxs)("li",{children:[(0,d.jsxs)("button",{type:"button",onClick:()=>e(a.path),title:a.path,className:"flex w-full items-center gap-1 rounded px-1.5 py-1 text-left text-muted-foreground transition-colors hover:bg-[var(--ink-hover)] hover:text-foreground",children:[(0,d.jsx)(j.A,{className:(0,o.cn)("size-3 shrink-0 transition-transform",!c.has(a.path)&&"rotate-90")}),c.has(a.path)?(0,d.jsx)(k.A,{className:"size-3.5 shrink-0 text-muted-foreground"}):(0,d.jsx)(l.A,{className:"size-3.5 shrink-0 text-muted-foreground"}),(0,d.jsx)("span",{className:"truncate text-[11px] font-medium",children:a.name})]}),!c.has(a.path)&&(0,d.jsx)(s,{nodes:a.children,depth:b+1,collapsed:c,onToggle:e,onSelect:f,selectedPath:g,livePath:h})]},`d:${a.path}`):(i=a.path===g,m=a.path===h,(0,d.jsx)("li",{children:(0,d.jsxs)("button",{type:"button",onClick:()=>f(a),title:a.path,"aria-current":i?"true":void 0,className:(0,o.cn)("flex w-full items-center gap-1.5 rounded py-1 pl-[18px] pr-1.5 text-left transition-colors",i?"bg-[var(--ink-active)]":m?"bg-[#ff7a45]/[0.08] hover:bg-[#ff7a45]/[0.13]":"hover:bg-[var(--ink-hover)]"),children:[(0,d.jsx)(r,{name:a.name,className:(0,o.cn)("size-3.5 shrink-0",m?"text-[#ff7a45]":a.status?p[a.status]:"text-muted-foreground")}),(0,d.jsx)("span",{className:(0,o.cn)("truncate text-[11px]",m?"font-medium text-[#ff7a45]":i?"text-foreground":a.status?p[a.status]:"text-foreground/90"),children:a.name}),(0,d.jsxs)("span",{className:"ml-auto flex shrink-0 items-center gap-1.5",children:[m&&(0,d.jsx)("span",{className:"size-1.5 rounded-full bg-[#ff7a45] motion-safe:animate-pulse",title:"The agent is editing this file now"}),a.meta&&(0,d.jsx)("span",{className:"text-[9px] text-teal-300/80",children:a.meta}),a.status&&(0,d.jsx)("span",{className:(0,o.cn)("size-1.5 rounded-full",q[a.status])})]})]})},`f:${a.path}`))})})}function t({files:a,onSelect:b,collapse:c=!0,emptyLabel:f,className:g,selectedPath:h,livePath:i}){let j=(0,e.useMemo)(()=>(function(a,b={}){let c=b.collapseSingleChildFolders??!0,d=m("","");for(let b of a){let a=b.path.split("\\").join("/").trim().replace(/^\/+/,"").replace(/\/+$/,"");if(!a)continue;let c=a.split("/").filter(Boolean);if(!c.length)continue;let e=d;for(let a=0;a<c.length-1;a++){let b=c[a],d=e.path?`${e.path}/${b}`:b,f=e.folders.get(b);f||(f=m(b,d),e.folders.set(b,f)),e=f}let f=c[c.length-1];e.files.set(f,{kind:"file",name:f,path:a,status:b.status,meta:b.meta})}return function a(b,c){let d=[];for(let e of b.folders.values())d.push(function(b,c){let d=b.name,e=b;for(;c&&0===e.files.size&&1===e.folders.size;){let a=e.folders.values().next().value;d=`${d}/${a.name}`,e=a}return{kind:"folder",name:d,path:e.path,children:a(e,c)}}(e,c));for(let a of b.files.values())d.push(a);return d.sort(n)}(d,c)})(a,{collapseSingleChildFolders:c}),[a,c]),[k,l]=(0,e.useState)(()=>new Set);return j.length?(0,d.jsx)("div",{className:g,children:(0,d.jsx)(s,{nodes:j,depth:0,collapsed:k,onToggle:a=>l(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c}),onSelect:a=>{var c;return b?b(a.path):(c=a.path,void fetch(`/api/open?path=${encodeURIComponent(c)}`).catch(()=>{}))},selectedPath:h,livePath:i})}):f?(0,d.jsx)("p",{className:(0,o.cn)("px-2 py-1 text-[11px] text-muted-foreground",g),children:f}):null}},86892:(a,b,c)=>{c.d(b,{Xi:()=>d});function d(a,b){let c,d,e,f=(d=((c=b.viewportAspect)&&Number.isFinite(c)&&c>0?Math.min(3.2,Math.max(.7,c)):1.8)*(b.aspectSlack??1),e=a.reduce((a,c)=>a+(c.w+b.gapX)*(c.h+b.gapY),0),Math.max(b.minBandW,Math.round(Math.sqrt(e*d)))),g=new Map,h=0,i=0,j=0;for(let c of a)h>0&&h+c.w>f&&(i+=j+b.gapY,h=0,j=0),g.set(c.id,{x:h,y:i}),j=Math.max(j,c.h),h+=c.w+b.gapX;return g}},91365:(a,b,c)=>{c.d(b,{fE:()=>f,gt:()=>g,kz:()=>e});let d={far:.3,farExit:.34,mid:.55,midExit:.6},e={far:.12,farExit:.15,mid:.45,midExit:.5},f={far:.2,farExit:.24,mid:.32,midExit:.36};function g(a,b="full",c=d){return a<c.far||"far"===b&&a<c.farExit?"far":a<c.mid||"mid"===b&&a<c.midExit?"mid":"full"}},92994:(a,b,c)=>{c.d(b,{er:()=>g,r1:()=>h,vu:()=>i});var d=c(48249),e=c(67484),f=c(33191);function g({trigger:a,title:b,align:c="right",children:h,open:i,onOpenChange:j,outsideClicksToClose:k=1}){let[l,m]=(0,e.useState)(!1),[n,o]=(0,e.useState)("down"),p=i??l,q=(0,e.useRef)(null);return(0,e.useRef)(()=>{}),(0,d.jsxs)("div",{ref:q,className:"relative",children:[a(p,()=>{var a;return a=!p,void(void 0===i&&m(a),j?.(a))}),p&&(0,d.jsxs)("div",{className:(0,f.cn)("glass absolute z-30 w-64 rounded-xl p-3 shadow-xl","up"===n?"bottom-full mb-1.5":"top-full mt-1.5","right"===c?"right-0":"left-0"),children:[b&&(0,d.jsx)("div",{className:"mb-2 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:b}),h]})]})}function h({title:a,children:b}){return(0,d.jsxs)("div",{className:"mb-2.5 last:mb-0",children:[(0,d.jsx)("div",{className:"mb-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground/80",children:a}),(0,d.jsx)("div",{className:"flex flex-wrap gap-1",children:b})]})}function i({on:a,onClick:b,children:c,tone:e="default"}){return(0,d.jsx)("button",{type:"button",onClick:b,className:(0,f.cn)("rounded-md border px-2 py-0.5 text-[11px] font-medium transition-colors",{default:a?"border-foreground/40 bg-[var(--ink-active)] text-foreground":"border-border text-muted-foreground hover:text-foreground",danger:a?"border-red-500/40 bg-red-500/15 text-red-300":"border-border text-muted-foreground hover:text-foreground",accent:a?"border-sky-500/40 bg-sky-500/15 text-sky-300":"border-border text-muted-foreground hover:text-foreground"}[e]),children:c})}},96863:(a,b,c)=>{c.d(b,{L:()=>g});var d=c(48249),e=c(56024),f=c(23727);function g(a){let b=(0,e.JY)(a.target),c=a.targetX,g=a.targetY,h=b?.measured?.width,i=b?.measured?.height;if(b&&h&&i){let d=(0,f.u1)({x:b.internals.positionAbsolute.x,y:b.internals.positionAbsolute.y,w:h,h:i},{x:a.sourceX,y:a.sourceY});c=d.x,g=d.y}let j=a.sourceX,k=a.sourceY,l=c-j,m=g-k,n=Math.hypot(l,m)||1,o=Math.min(.18*n,42),p=(j+c)/2+-m/n*o,q=(k+g)/2+l/n*o,r=`M${j},${k} Q${p},${q} ${c},${g}`;return(0,d.jsx)(e.tE,{id:a.id,path:r,style:a.style,markerEnd:a.markerEnd})}},99281:(a,b,c)=>{c.d(b,{F:()=>i});var d=c(48249),e=c(35471),f=c(20878),g=c(90069),h=c(26284);function i({url:a,copied:b,onCopy:c}){return(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("input",{readOnly:!0,value:a,onFocus:a=>a.currentTarget.select(),className:"min-w-0 flex-1 rounded-md border border-border bg-background px-2.5 py-1.5 text-[12px] text-foreground outline-none"}),(0,d.jsxs)(h.$,{size:"sm",variant:"outline",onClick:c,children:[b?(0,d.jsx)(e.A,{className:"size-3.5"}):(0,d.jsx)(f.A,{className:"size-3.5"}),b?"Copied":"Copy"]})]}),(0,d.jsxs)("a",{href:a,target:"_blank",rel:"noreferrer",className:"inline-flex items-center gap-1.5 text-[12px] text-muted-foreground transition-colors hover:text-foreground",children:[(0,d.jsx)(g.A,{className:"size-3.5"})," Open the shared view"]})]})}}};
|