trybeacon 0.1.24 → 0.1.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +7 -6
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/routes-manifest.json +6 -0
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/board-annotations/[id]/route.js +1 -1
- package/.next/server/app/api/board-annotations/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/board-annotations/route.js +1 -1
- package/.next/server/app/api/board-annotations/route.js.nft.json +1 -1
- package/.next/server/app/api/board-layout/route.js +1 -0
- package/.next/server/app/api/board-layout/route.js.nft.json +1 -0
- package/.next/server/app/api/board-layout/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/bug-flags/[id]/route.js +1 -1
- package/.next/server/app/api/bug-flags/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/bug-flags/route.js +1 -1
- package/.next/server/app/api/bug-flags/route.js.nft.json +1 -1
- package/.next/server/app/api/code-graph/position/route.js +1 -1
- package/.next/server/app/api/code-graph/position/route.js.nft.json +1 -1
- package/.next/server/app/api/code-graph/route.js +1 -1
- package/.next/server/app/api/code-graph/route.js.nft.json +1 -1
- package/.next/server/app/api/context/feature/route.js +1 -1
- package/.next/server/app/api/context/feature/route.js.nft.json +1 -1
- package/.next/server/app/api/context/file/route.js +1 -1
- package/.next/server/app/api/context/file/route.js.nft.json +1 -1
- package/.next/server/app/api/context/route.js +2 -2
- package/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/server/app/api/db/arrange/route.js +1 -1
- package/.next/server/app/api/db/arrange/route.js.nft.json +1 -1
- package/.next/server/app/api/db/backfill-access/route.js +1 -1
- package/.next/server/app/api/db/backfill-access/route.js.nft.json +1 -1
- package/.next/server/app/api/db/position/route.js +1 -1
- package/.next/server/app/api/db/position/route.js.nft.json +1 -1
- package/.next/server/app/api/db/reconcile-endpoints/route.js +1 -1
- package/.next/server/app/api/db/reconcile-endpoints/route.js.nft.json +1 -1
- package/.next/server/app/api/db/relations/[id]/route.js +1 -1
- package/.next/server/app/api/db/relations/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/db/tables/[id]/route.js +1 -1
- package/.next/server/app/api/db/tables/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/draft/approve/route.js +1 -5
- package/.next/server/app/api/draft/approve/route.js.nft.json +1 -1
- package/.next/server/app/api/draft/route.js +1 -5
- package/.next/server/app/api/draft/route.js.nft.json +1 -1
- package/.next/server/app/api/draft/status/route.js +1 -1
- package/.next/server/app/api/draft/status/route.js.nft.json +1 -1
- package/.next/server/app/api/edges/[id]/route.js +1 -1
- package/.next/server/app/api/edges/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/edges/route.js +1 -1
- package/.next/server/app/api/edges/route.js.nft.json +1 -1
- package/.next/server/app/api/endpoints/[id]/route.js +1 -1
- package/.next/server/app/api/endpoints/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/entities/route.js +1 -1
- package/.next/server/app/api/entities/route.js.nft.json +1 -1
- package/.next/server/app/api/feedback/[id]/route.js +1 -1
- package/.next/server/app/api/feedback/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/feedback/[id]/vote/route.js +1 -1
- package/.next/server/app/api/feedback/[id]/vote/route.js.nft.json +1 -1
- package/.next/server/app/api/feedback/route.js +1 -1
- package/.next/server/app/api/feedback/route.js.nft.json +1 -1
- package/.next/server/app/api/ingest/route.js +2 -2
- package/.next/server/app/api/ingest/route.js.nft.json +1 -1
- package/.next/server/app/api/init/route.js +2 -2
- package/.next/server/app/api/init/route.js.nft.json +1 -1
- package/.next/server/app/api/map/describe/route.js +2 -2
- package/.next/server/app/api/map/describe/route.js.nft.json +1 -1
- package/.next/server/app/api/map/files/route.js +1 -1
- package/.next/server/app/api/map/files/route.js.nft.json +1 -1
- package/.next/server/app/api/map/finish/route.js +1 -1
- package/.next/server/app/api/map/finish/route.js.nft.json +1 -1
- package/.next/server/app/api/map/route.js +1 -1
- package/.next/server/app/api/map/route.js.nft.json +1 -1
- package/.next/server/app/api/map/start/route.js +1 -1
- package/.next/server/app/api/map/start/route.js.nft.json +1 -1
- package/.next/server/app/api/map/touch-active/route.js +1 -1
- package/.next/server/app/api/map/touch-active/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/[id]/position/route.js +1 -1
- package/.next/server/app/api/nodes/[id]/position/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/[id]/route.js +1 -1
- package/.next/server/app/api/nodes/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/positions/route.js +1 -1
- package/.next/server/app/api/nodes/positions/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/route.js +1 -1
- package/.next/server/app/api/nodes/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/subtasks/route.js +1 -1
- package/.next/server/app/api/nodes/subtasks/route.js.nft.json +1 -1
- package/.next/server/app/api/notes/[id]/route.js +1 -1
- package/.next/server/app/api/notes/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/notes/route.js +1 -1
- package/.next/server/app/api/notes/route.js.nft.json +1 -1
- package/.next/server/app/api/open/route.js +1 -1
- package/.next/server/app/api/open/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/annotations/route.js +3 -3
- package/.next/server/app/api/plan/annotations/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/approve/route.js +2 -6
- package/.next/server/app/api/plan/approve/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/history/route.js +1 -1
- package/.next/server/app/api/plan/history/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/markdown/route.js +1 -1
- package/.next/server/app/api/plan/markdown/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/presence/route.js +1 -1
- package/.next/server/app/api/plan/presence/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/route.js +1 -1
- package/.next/server/app/api/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/verdict/route.js +1 -5
- package/.next/server/app/api/plan/verdict/route.js.nft.json +1 -1
- package/.next/server/app/api/preferences/route.js +1 -1
- package/.next/server/app/api/reset/route.js +1 -1
- package/.next/server/app/api/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/stream/route.js +2 -2
- package/.next/server/app/api/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/api/version/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/activate/route.js +1 -1
- package/.next/server/app/api/workspace/activate/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/route.js +1 -1
- package/.next/server/app/api/workspace/route.js.nft.json +1 -1
- package/.next/server/app/apple-icon.png/route.js +1 -1
- package/.next/server/app/docs/page.js +2 -2
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +2 -2
- package/.next/server/app/docs.segments/_full.segment.rsc +2 -2
- package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/docs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
- package/.next/server/app/feedback/page.js +2 -2
- package/.next/server/app/feedback/page_client-reference-manifest.js +1 -1
- package/.next/server/app/feedback.html +1 -1
- package/.next/server/app/feedback.rsc +2 -2
- package/.next/server/app/feedback.segments/_full.segment.rsc +2 -2
- package/.next/server/app/feedback.segments/_head.segment.rsc +1 -1
- package/.next/server/app/feedback.segments/_index.segment.rsc +2 -2
- package/.next/server/app/feedback.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/feedback.segments/feedback/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/feedback.segments/feedback.segment.rsc +1 -1
- package/.next/server/app/help/page.js +2 -2
- package/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/.next/server/app/help.html +1 -1
- package/.next/server/app/help.rsc +2 -2
- package/.next/server/app/help.segments/_full.segment.rsc +2 -2
- package/.next/server/app/help.segments/_head.segment.rsc +1 -1
- package/.next/server/app/help.segments/_index.segment.rsc +2 -2
- package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/help.segments/help.segment.rsc +1 -1
- package/.next/server/app/icon.svg/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/map/page.js +2 -2
- package/.next/server/app/map/page.js.nft.json +1 -1
- package/.next/server/app/map/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/plan/page.js +2 -2
- package/.next/server/app/plan/page.js.nft.json +1 -1
- package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +2 -2
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +7 -6
- package/.next/server/chunks/249.js +1 -1
- package/.next/server/chunks/2877.js +7 -0
- package/.next/server/chunks/2933.js +2 -15
- package/.next/server/chunks/2981.js +1 -1
- package/.next/server/chunks/3221.js +5 -0
- package/.next/server/chunks/3254.js +1 -1
- package/.next/server/chunks/4198.js +1 -0
- package/.next/server/chunks/4274.js +1 -1
- package/.next/server/chunks/4378.js +1 -0
- package/.next/server/chunks/5258.js +1 -1
- package/.next/server/chunks/617.js +1 -0
- package/.next/server/chunks/7373.js +1 -0
- package/.next/server/chunks/9127.js +1 -1
- package/.next/server/chunks/{3349.js → 9213.js} +1 -1
- package/.next/server/chunks/9313.js +14 -0
- package/.next/server/chunks/9683.js +1 -1
- package/.next/server/chunks/9734.js +1 -1
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware.js +2 -2
- 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/MYvJ_ebinIGa9MP5kWFaY/_buildManifest.js +1 -0
- package/.next/static/chunks/1a258343-7b029f38cf13f847.js +2 -0
- package/.next/static/chunks/6773-89cca3b011769270.js +1 -0
- package/.next/static/chunks/app/_global-error/{page-0fdd2f2bb2631a50.js → page-8fa95c63b95bf9c3.js} +1 -1
- package/.next/static/chunks/app/api/board-annotations/[id]/{route-0fdd2f2bb2631a50.js → route-8fa95c63b95bf9c3.js} +1 -1
- package/.next/static/chunks/app/api/board-annotations/{route-0fdd2f2bb2631a50.js → route-8fa95c63b95bf9c3.js} +1 -1
- package/.next/static/chunks/app/api/{bug-flags/[id]/route-0fdd2f2bb2631a50.js → board-layout/route-8fa95c63b95bf9c3.js} +1 -1
- package/.next/static/chunks/app/api/bug-flags/[id]/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/bug-flags/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/code-graph/position/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/code-graph/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/context/feature/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/context/file/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/context/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/db/arrange/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/db/backfill-access/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/db/position/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/db/relations/[id]/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/db/tables/[id]/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/draft/approve/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/draft/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/draft/status/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/edges/[id]/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/edges/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/endpoints/[id]/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/entities/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/feedback/[id]/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/feedback/[id]/vote/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/feedback/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/ingest/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/init/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/map/describe/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/map/files/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/map/finish/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/map/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/map/start/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/map/touch-active/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/position/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/nodes/positions/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/nodes/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/nodes/subtasks/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/notes/[id]/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/notes/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/open/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/plan/annotations/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/plan/approve/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/plan/history/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/plan/markdown/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/plan/presence/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/plan/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/plan/verdict/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/preferences/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/reset/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/stream/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/version/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/workspace/activate/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/api/workspace/route-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/app/map/{page-b2fdc0df2743d278.js → page-2cac4ffa4e4220c2.js} +1 -1
- package/.next/static/chunks/app/plan/{page-611d499986560198.js → page-8a9ed9019afac5ca.js} +1 -1
- package/.next/static/chunks/app/settings/{page-d1b0fe0c79c8a745.js → page-4d4879990a4f14fc.js} +1 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-8fa95c63b95bf9c3.js +1 -0
- package/.next/static/css/30e69a9d2de6ece7.css +1 -0
- package/.next/trace +37 -37
- package/.next/trace-build +1 -1
- package/.next/types/app/api/board-layout/route.ts +351 -0
- package/.next/types/app/api/plan/route.ts +351 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/dist/bin/beacon.js +3 -3
- package/dist/bin/doctor.js +22 -22
- package/dist/bin/hook.js +26 -26
- package/dist/bin/mcp.js +27 -27
- package/dist/bin/plan.js +21 -21
- package/dist/bin/remove.js +8 -0
- package/dist/bin/uninstall.js +25 -25
- package/dist/lib/workspaces.js +1 -1
- package/package.json +1 -1
- package/.next/server/chunks/1130.js +0 -1
- package/.next/server/chunks/1193.js +0 -1
- package/.next/server/chunks/873.js +0 -1
- package/.next/server/chunks/8815.js +0 -5
- package/.next/static/B4If6Zrc9d_A-Vd9UPyiQ/_buildManifest.js +0 -1
- package/.next/static/chunks/1412-94916474aa89a70b.js +0 -1
- package/.next/static/chunks/1a258343-248e24606fc4ca54.js +0 -2
- package/.next/static/chunks/app/api/bug-flags/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/code-graph/position/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/code-graph/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/context/feature/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/context/file/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/context/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/db/arrange/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/db/backfill-access/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/db/position/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/db/relations/[id]/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/db/tables/[id]/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/draft/approve/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/draft/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/draft/status/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/edges/[id]/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/edges/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/endpoints/[id]/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/entities/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/feedback/[id]/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/feedback/[id]/vote/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/feedback/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/ingest/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/init/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/map/describe/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/map/files/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/map/finish/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/map/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/map/start/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/map/touch-active/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/position/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/nodes/positions/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/nodes/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/nodes/subtasks/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/notes/[id]/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/notes/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/open/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/plan/annotations/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/plan/approve/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/plan/history/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/plan/markdown/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/plan/presence/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/plan/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/plan/verdict/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/preferences/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/reset/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/stream/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/version/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/workspace/activate/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/app/api/workspace/route-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-0fdd2f2bb2631a50.js +0 -1
- package/.next/static/css/75d4c21b97e04260.css +0 -1
- /package/.next/static/{B4If6Zrc9d_A-Vd9UPyiQ → MYvJ_ebinIGa9MP5kWFaY}/_ssgManifest.js +0 -0
package/dist/lib/workspaces.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var q=Object.defineProperty;var P=(Q)=>Q;function S(Q,X){this[Q]=P.bind(null,X)}var y=(Q,X)=>{for(var Z in X)q(Q,Z,{get:X[Z],enumerable:!0,configurable:!0,set:S.bind(X,Z)})};var k=(Q,X)=>()=>(Q&&(X=Q(Q=0)),X);var
|
|
2
|
+
var q=Object.defineProperty;var P=(Q)=>Q;function S(Q,X){this[Q]=P.bind(null,X)}var y=(Q,X)=>{for(var Z in X)q(Q,Z,{get:X[Z],enumerable:!0,configurable:!0,set:S.bind(X,Z)})};var k=(Q,X)=>()=>(Q&&(X=Q(Q=0)),X);var v={};y(v,{provisionDb:()=>o});import{createClient as w}from"@libsql/client";import{drizzle as b}from"drizzle-orm/libsql";import{migrate as m}from"drizzle-orm/libsql/migrator";import{readMigrationFiles as g}from"drizzle-orm/migrator";import{dirname as u,join as p}from"path";import{fileURLToPath as h}from"url";async function N(Q,X){return(await Q.execute({sql:"SELECT 1 FROM sqlite_master WHERE type='table' AND name = ?",args:[X]})).rows.length>0}async function n(Q,X){let Z=await Q.execute(`PRAGMA table_info("${X}")`);return new Set(Z.rows.map(($)=>String($.name)))}async function f(Q){if(!await N(Q,"__drizzle_migrations"))return 0;let X=await Q.execute('SELECT count(*) AS n FROM "__drizzle_migrations"');return Number(X.rows[0]?.n??0)}async function d(Q){for(let[X,Z]of Object.entries(s)){if(!await N(Q,X))continue;let $=await n(Q,X);for(let J of Z){if(!$.has(J))continue;await Q.execute(`UPDATE "${X}" SET "${J}" = CAST((julianday("${J}") - 2440587.5) * 86400000 AS INTEGER) WHERE typeof("${J}") = 'text'`)}}}async function o(Q,X=c){let Z=w({url:Q});try{await Z.execute("PRAGMA journal_mode = WAL;"),await Z.execute("PRAGMA foreign_keys = ON;");let $=await N(Z,"__drizzle_migrations"),J=await N(Z,"Node"),Y=!1;if(J&&!$){let B=g({migrationsFolder:X})[0];if(B)await Z.execute('CREATE TABLE IF NOT EXISTS "__drizzle_migrations" (id SERIAL PRIMARY KEY, hash text NOT NULL, created_at numeric)'),await Z.execute({sql:'INSERT INTO "__drizzle_migrations" ("hash", "created_at") VALUES (?, ?)',args:[B.hash,B.folderMillis]}),Y=!0}let L=await f(Z);if(await m(b(Z),{migrationsFolder:X}),await f(Z)>L)Y=!0;return await d(Z),{migrated:Y}}finally{Z.close()}}var l,c,s;var _=k(async()=>{l=u(u(u(h(import.meta.url)))),c=process.env.BEACON_MIGRATIONS_DIR||p(l,"drizzle"),s={Node:["createdAt","updatedAt"],Note:["createdAt","updatedAt"],DbTable:["createdAt","updatedAt"],Endpoint:["createdAt","updatedAt"],DraftTable:["createdAt"],SyncState:["codeGraphSyncedAt","updatedAt"],AppSetting:["updatedAt"],ProjectMeta:["updatedAt"],CodeFile:["updatedAt"]}});import{AsyncLocalStorage as a}from"async_hooks";import{spawnSync as t}from"child_process";import{createHash as r}from"crypto";import{existsSync as D,mkdirSync as U,readFileSync as x,writeFileSync as E}from"fs";import{homedir as i}from"os";import{basename as e,join as V}from"path";function K(){return process.env.BEACON_HOME||V(i(),".beacon")}function C(){return V(K(),"workspaces.json")}function R(Q){return r("sha256").update(Q).digest("hex").slice(0,12)}function TQ(Q=process.cwd()){let X=t("git",["rev-parse","--show-toplevel"],{cwd:Q,stdio:["ignore","pipe","ignore"]});if(X.status===0){let Z=X.stdout?.toString().trim();if(Z)return Z}return Q}function j(Q){return V(K(),Q)}function QQ(Q){return`file:${V(j(Q),"db.sqlite")}`}function M(){try{let Q=JSON.parse(x(C(),"utf8"));return Array.isArray(Q)?Q:[]}catch{return[]}}function O(Q){U(K(),{recursive:!0}),E(C(),JSON.stringify(Q,null,2))}function XQ(){return M().sort((Q,X)=>X.lastOpenedAt.localeCompare(Q.lastOpenedAt))}function G(Q){return M().find((X)=>X.id===Q)??null}function ZQ(Q,X,Z=new Date().toISOString()){let $=R(Q),J=M(),Y=J.find((H)=>H.id===$),L={id:$,path:Q,name:X||Y?.name||e(Q),lastOpenedAt:Z},B=[L,...J.filter((H)=>H.id!==$)];return U(j($),{recursive:!0}),O(B),L}function fQ(Q,X=new Date().toISOString()){let Z=M(),$=Z.find((J)=>J.id===Q);if(!$)return;$.lastOpenedAt=X,O(Z)}function vQ(Q){if(O(M().filter((X)=>X.id!==Q)),T()===Q)$Q(XQ()[0]?.id??null)}function W(){return V(K(),"active")}function T(){try{return x(W(),"utf8").trim()||null}catch{return null}}function $Q(Q){U(K(),{recursive:!0}),E(W(),Q??"")}function _Q(){let Q=T();return Q?G(Q):null}function DQ(){let Q=YQ()??T();return Q?G(Q):null}function xQ(Q){return G(Q)?.path??null}function EQ(){return D(C())}var A="beacon_ws";function F(Q,X){let Z=Q.headers.get("cookie");if(!Z)return null;for(let $ of Z.split(";")){let J=$.indexOf("=");if(J===-1)continue;if($.slice(0,J).trim()===X)return decodeURIComponent($.slice(J+1).trim())}return null}function RQ(Q){let X=Q.headers.get("x-beacon-workspace");if(X&&G(X))return X;let Z=F(Q,A);if(Z&&G(Z))return Z;return null}var JQ="x-beacon-workspace-path";async function WQ(Q){let X=Q.headers.get("x-beacon-workspace");if(X&&G(X))return X;let Z=Q.headers.get(JQ);if(Z&&(!X||R(Z)===X)){let J=ZQ(Z);return await GQ(J.id),J.id}let $=F(Q,A);if($&&G($))return $;return null}var I=new a;function AQ(Q,X){return Q?I.run(Q,X):X()}function YQ(){return I.getStore()??null}var z=new Set;function FQ(Q){z.delete(V(j(Q),"db.sqlite"))}async function GQ(Q){let X=j(Q),Z=V(X,"db.sqlite"),$=D(Z);if($&&z.has(Z))return{ok:!0,created:!1,migrated:!1};try{U(X,{recursive:!0});let{provisionDb:J}=await _().then(() => v),Y=await J(QQ(Q));return z.add(Z),{ok:!0,created:!$,migrated:$&&Y.migrated}}catch(J){return{ok:!1,created:!1,migrated:!1,error:J instanceof Error?J.message:String(J)}}}export{RQ as workspaceIdFromRequest,fQ as touchWorkspace,$Q as setActiveId,AQ as runWithWorkspace,WQ as resolveRequestWorkspaceId,TQ as repoRootFrom,vQ as removeWorkspace,EQ as registryExists,xQ as pathForWorkspace,XQ as listWorkspaces,R as idForPath,G as getWorkspace,YQ as getPinnedWorkspaceId,T as getActiveId,FQ as forgetWorkspaceDb,GQ as ensureWorkspaceDb,QQ as dbUrlFor,j as dataDirFor,DQ as currentWorkspace,K as beaconHome,ZQ as addWorkspace,_Q as activeWorkspace,JQ as BEACON_WS_PATH_HEADER,A as BEACON_WS_COOKIE};
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=1130,exports.ids=[1130],exports.modules={13560:(a,b,c)=>{c.d(b,{$Y:()=>j,Kq:()=>g,gY:()=>i,hj:()=>l,tI:()=>k});var d=c(44046);let e=d.k5(["ROADMAP","ARCHITECTURE"]),f=d.k5(["FEATURE","BUG"]),g=d.k5(["user","agent"]),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(),role:d.Yj().trim().max(500).nullish(),plain:d.Yj().trim().max(2e3).nullish(),parentId:d.Yj().nullish(),status:h.optional(),priority:d.ai().int().min(0).max(3).optional(),x:d.ai().optional(),y:d.ai().optional(),sourceRef:d.Yj().trim().max(300).nullish()}),j=d.Ik({title:d.Yj().trim().min(1).max(200).optional(),kind:f.optional(),role:d.Yj().trim().max(500).nullish(),plain:d.Yj().trim().max(2e3).nullish(),cluster:d.Yj().trim().max(64).nullish(),status:h.optional(),priority:d.ai().int().min(0).max(3).optional(),sourceRef:d.Yj().trim().max(300).nullish()}),k=d.Ik({x:d.ai(),y:d.ai()}),l=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()})},29833:(a,b,c)=>{c.d(b,{mk:()=>i});let d=new Set(["a","an","the","of","for","to","and","or","in","on","with","via","by","using","use","add","adds","support","implement","implementation","feature","new","build","create","o","os","as","um","uma","de","da","do","das","dos","para","por","com","e","ou","no","na","nos","nas","ao","aos","adicionar","implementar","suporte","suportar","nova","novo","funcionalidade","usar","usando","criar"]);function e(a){return a.normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9]+/g," ").trim().replace(/\s+/g," ")}function f(a){return e(a).split(" ").filter(a=>a&&!d.has(a))}function g(a,b){if(!a.size||!b.size)return 0;let c=0;for(let d of a)b.has(d)&&c++;return 2*c/(a.size+b.size)}function h(a){let b=e(a).replace(/ /g,""),c=new Set;for(let a=0;a<b.length-1;a++)c.add(b.slice(a,a+2));return c}function i(a,b,c={}){let d=c.confident??.72,j=c.consider??.5,k=c.margin??.1,l=b.map(b=>{var c,d;let i,j;return{...b,score:Math.round(100*(c=a,d=b.title,i=e(c),j=e(d),i&&j?i===j?1:Math.min(1,.7*g(new Set(f(c)),new Set(f(d)))+.4*g(h(c),h(d))):0))/100}}).sort((a,b)=>b.score-a.score),m=l[0];if(!m||m.score<j)return{best:null,candidates:[]};let n=l[1]?.score??0,o=1===l.length||m.score-n>=k;return m.score>=d&&o?{best:m,candidates:[]}:{best:null,candidates:l.filter(a=>a.score>=j).slice(0,4)}}},32213:(a,b,c)=>{c.d(b,{q:()=>f});var d=c(73024),e=c(76760);function f(a,b,c=!1){var g=JSON.stringify(b,null,c?2:void 0);(0,d.mkdirSync)((0,e.dirname)(a),{recursive:!0});let h=`${a}.tmp`;try{(0,d.writeFileSync)(h,g),(0,d.renameSync)(h,a)}catch(a){throw(0,d.rmSync)(h,{force:!0}),a}}},38356:(a,b,c)=>{c.d(b,{AG:()=>g,Ey:()=>h,Kn:()=>e,oA:()=>f});var d=c(29833);function e(a){let b=a.map(a=>{let b=[],c=a.cluster??a.category??a.domain??null;return c&&c.trim()||b.push("category"),null==a.priority&&b.push("priority"),b.length?` • "${a.title?.trim()||"(untitled)"}" — missing ${b.join(" + ")}`:null}).filter(a=>null!==a);return 0===b.length?null:"⛔ Every roadmap feature needs a category AND a priority — they drive grouping and ordering on the board, and the user shouldn't have to add them by hand. Missing:\n"+b.join("\n")+"\n\nRe-present with each feature carrying its category as `category` (or `cluster` — both work; e.g. AUTH, SEARCH, DATA, INTEL, BILLING …) and `priority` (0 = P0 critical, 1 = P1 high, 2 = P2 medium, 3 = P3 low). Set BOTH on EVERY feature; don't rely on defaults."}function f(a){let b=(a.title??"").trim();if(!b)return"⛔ A feature needs a non-empty title.";if(!(a.category??"").trim()){let c=function(a){let b=new Set;for(let c of a){let a=(c.cluster??"").trim();a&&b.add(a)}return[...b].sort()}(a.existing),d=c.length?` Reuse an existing category where it fits: ${c.join(", ")}.`:"";return`⛔ Feature "${b}" has no category. Every roadmap feature needs one — it drives grouping and color on the board.${d} Pass it as \`category\` (e.g. AUTH, SEARCH, DATA, INTEL, BILLING, INFRA …); don't rely on a default.`}let c=(0,d.mk)(b,a.existing.map(a=>({id:a.id,title:a.title})));if(c.best){let d=a.existing.find(a=>a.id===c.best.id),e=d?.status?` (${d.status})`:"";return`⛔ "${b}" already exists as the feature "${d?.title??c.best.title}"${e}. Don't create a duplicate — mark progress on it with \`beacon_start_feature({ id })\`, add sub-tasks with \`beacon_add_subtasks\`, or finish it with \`beacon_describe_feature\`.`}return null}function g(a,b){let c=b.map(a=>({id:a.id,title:a.title})),e=a.map(a=>{let e=(0,d.mk)(a.title??"",c);return e.best?{title:a.title,hit:b.find(a=>a.id===e.best.id)}:null}).filter(a=>null!==a);return e.length?"⛔ These proposed features already exist on the roadmap — reuse them instead of creating duplicates:\n"+e.map(a=>` • "${a.title}" → existing "${a.hit.title}"${a.hit.status?` (${a.hit.status})`:""}`).join("\n")+"\n\nDrop the duplicate(s) from the plan; to add work to an existing feature, ship sub-tasks or update it via beacon_describe_feature. Keep only genuinely new features in the proposal.":null}function h(a,b){let c=(a??"").trim();if(!c)return null;let e=(0,d.mk)(c,b);if(e.best)return null;let f=e.candidates.length?` Did you mean: ${e.candidates.map(a=>`"${a.title}"`).join(", ")}?`:"";return`⛔ front "${c}" doesn't match an existing feature.${f} \`front\` nests a feature UNDER an existing parent feature — it is NOT a domain tag. If "${c}" is a domain, pass it as \`category\` instead. If it's a real umbrella feature, create it first via beacon_propose_plan.`}},45301:(a,b,c)=>{c.d(b,{KS:()=>l,Qq:()=>k,jv:()=>j});var d=c(31421),e=c(77598),f=c(48161),g=c(76760),h=c(6716);let i=null;function j(){if(process.env.BEACON_REPO)return process.env.BEACON_REPO;let a=(0,h.p1)();if(a){let b=(0,h.K4)(a);if(b)return b.path}let b=(0,h.WQ)();if(b)return b.path;if(i)return i;try{let a=(0,d.execSync)("git rev-parse --show-toplevel",{cwd:process.cwd(),stdio:["ignore","pipe","ignore"]}).toString().trim();if(a)return i=a}catch{}return i=(0,g.resolve)(process.cwd(),"../..")}function k(){return(0,g.basename)(j())}function l(){if(process.env.BEACON_DATA_DIR)return process.env.BEACON_DATA_DIR;let a=(0,h.p1)();if(a&&(0,h.K4)(a))return(0,h.T_)(a);let b=(0,h.WQ)();return b?(0,h.T_)(b.id):(0,g.join)((0,f.homedir)(),".beacon",(0,e.createHash)("sha256").update(j()).digest("hex").slice(0,12))}},70299:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AS:()=>D,N5:()=>E,Nh:()=>w,Ol:()=>G,P_:()=>y,Pq:()=>z,hL:()=>F,nV:()=>u,y2:()=>A});var e=c(44046),f=c(34216),g=c(40377),h=c(56727),i=c(30046),j=c(19734),k=c(29833),l=c(38356),m=c(71584),n=c(90497),o=c(90435),p=c(89908),q=c(45301),r=c(76223),s=a([h,j,p,r]);async function t(a){await (0,r.Z)({currentFeatureId:a})}async function u(){let a=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP"),orderBy:(a,{asc:b})=>b(a.createdAt)});return{fronts:a.filter(a=>!a.parentId).map(b=>({id:b.id,title:b.title,status:b.status,tasks:a.filter(a=>a.parentId===b.id).map(a=>({id:a.id,title:a.title,status:a.status,workingOn:"IN_PROGRESS"===a.status}))}))}}async function v(a,b){await h.db.update(i.node).set({status:b}).where((0,f.eq)(i.node.id,a)),await w(a),await (0,j.Bx)()}[h,j,p,r]=s.then?(await s)():s;let H=new Set(["DONE","CANCELLED","DEPRIORITIZED"]),I=new Set(["IN_PROGRESS","BLOCKED"]),J=new Set(["CANCELLED","DEPRIORITIZED"]);async function w(a){let b=new Set,c=a;for(;!b.has(c);){var d;b.add(c);let a=await h.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 h.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||J.has(e.status))return;let g=(d=(await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.parentId,e.id),columns:{status:!0}})).map(a=>a.status)).length?d.every(a=>H.has(a))?"DONE":d.some(a=>I.has(a))?"IN_PROGRESS":"PENDING":"PENDING";if(e.status===g)return;await h.db.update(i.node).set({status:g}).where((0,f.eq)(i.node.id,e.id)),c=e.id}}let K=new Set(["PENDING","IN_PROGRESS"]);async function x(a){let b=[],c=[],d=new Set([a]),e=[a];for(;e.length;){let a=await h.db.query.node.findMany({where:(a,{and:b,eq:c,inArray:d})=>b(d(a.parentId,e),c(a.view,"ROADMAP")),columns:{id:!0,title:!0,status:!0}});for(let f of(e=[],a))d.has(f.id)||(d.add(f.id),e.push(f.id),K.has(f.status)?b.push(f.id):"BLOCKED"===f.status&&c.push(f))}return b.length&&await h.db.update(i.node).set({status:"DONE"}).where((0,f.RV)(i.node.id,b)),{completed:b.length,blocked:c}}async function y(){let a=(await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP"),columns:{id:!0,parentId:!0,source:!0,x:!0,y:!0}})).filter(a=>"DRAFT"!==a.source);if(a.length<2)return;let b=a.map(a=>a.id),c=await h.db.query.edge.findMany({where:(a,{and:c,eq:d})=>c(d(a.kind,"DEPENDS"),(0,f.RV)(a.fromId,b),(0,f.RV)(a.toId,b)),columns:{fromId:!0,toId:!0}}),d=(0,o.cA)(b,c);if((0,o.wU)()===d)return;let e=(0,n.u)(a.map(a=>({id:a.id,parentId:a.parentId})),c),g=[];for(let b of a){let a=e.get(b.id);a&&(Math.round(a.x)!==Math.round(b.x)||Math.round(a.y)!==Math.round(b.y))&&g.push(h.db.update(i.node).set({x:a.x,y:a.y}).where((0,f.eq)(i.node.id,b.id)))}await Promise.all(g),(0,o.hd)(d)}async function z(a){let b=a.title.trim();if(!b)throw Error("title required");let c=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP")});if(a.id){let b=c.find(b=>b.id===a.id);if(b)return await v(b.id,"IN_PROGRESS"),await t(b.id),{action:"flagged",id:b.id,title:b.title,via:"id"}}let{best:d,candidates:e}=(0,k.mk)(b,c.map(a=>({id:a.id,title:a.title})));if(d)return await v(d.id,"IN_PROGRESS"),await t(d.id),{action:"flagged",id:d.id,title:d.title,via:"match",score:d.score};if(e.length)return{action:"ambiguous",candidates:e};let f=c.filter(a=>!a.parentId),g=a.front?.trim()||"",n=g?(0,l.Ey)(g,f.map(a=>({id:a.id,title:a.title}))):null;if(n)return{action:"rejected",message:n};let o=null,p=null,q=null;if(g){let a=(0,k.mk)(g,f.map(a=>({id:a.id,title:a.title}))).best;o=a.id,p=a.title,q=c.find(b=>b.id===a.id)?.cluster??null}let r=(a.cluster?.trim()||q)??null,s=(0,l.oA)({title:b,category:r,existing:c.map(a=>({id:a.id,title:a.title,cluster:a.cluster,status:a.status}))});if(s)return{action:"rejected",message:s};let u=o?c.filter(a=>a.parentId===o).length:f.length,x=(0,m.B)(c.map(a=>({x:a.x,y:a.y})),{x:o?f.find(a=>a.id===o)?.x??0:300*u,y:o?160+110*u:0}),[z]=await h.db.insert(i.node).values({view:"ROADMAP",kind:a.kind?.trim().toUpperCase()==="BUG"?"BUG":"FEATURE",title:b,plain:a.detail??null,cluster:r,status:"IN_PROGRESS",source:"SESSION",parentId:o,x:x.x,y:x.y}).returning();return await w(z.id),await y(),await (0,j.Bx)(),await t(z.id),{action:"created",id:z.id,title:b,front:p}}async function A(a){let b=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP")}),c=async a=>{let b=await x(a);return await v(a,"DONE"),{ok:!0,id:a,subtasksCompleted:b.completed||void 0,subtasksBlocked:b.blocked.length?b.blocked:void 0}};if(a.id){let d=b.find(b=>b.id===a.id);if(d)return c(d.id)}if(!a.title)return{ok:!1};let{best:d,candidates:e}=(0,k.mk)(a.title,b.map(a=>({id:a.id,title:a.title})));return d?c(d.id):{ok:!1,candidates:e.length?e:void 0}}function B(a){let b=a.trim(),c=(0,q.jv)();return b.startsWith(c)&&(b=b.slice(c.length)),b.replace(/^[./]+/,"").trim()}let L=new Set(["KEEP","REBUILD","REPLACE","DROP"]),M=e.Ik({title:e.Yj().trim().min(1),domain:e.Yj().trim().min(1),role:e.Yj().nullish(),plain: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()});async function C(a){let b=e.YO(M).parse(a),c=new Map;for(let a of b)c.set(a.title.toLowerCase(),a);let d=Array.from(c.values());if(!d.length)return 0;let g=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ARCHITECTURE")}),j=new Map(g.map(a=>[a.title.toLowerCase(),a])),k=new Map(g.map(a=>[a.title.toLowerCase(),a.id])),l=new Map,m=new Map;for(let a of g){let b=(a.cluster??"").trim()||"—";l.has(b)||l.set(b,a.x),m.set(b,Math.max(m.get(b)??-150,a.y))}let n=g.length?Math.max(...g.map(a=>a.x))+320:0;for(let a of d){let b=a.title.toLowerCase(),c=a.status&&L.has(a.status)?a.status:"KEEP",d=j.get(b);if(d)await h.db.update(i.node).set({cluster:a.domain,role:a.role??d.role,plain:a.plain??d.plain,status:c}).where((0,f.eq)(i.node.id,d.id)),a.files?.length&&(await h.db.delete(i.nodeFile).where((0,f.eq)(i.nodeFile.nodeId,d.id)),await h.db.insert(i.nodeFile).values(Array.from(new Set(a.files)).map(a=>({nodeId:d.id,path:a}))));else{let d=a.domain.trim()||"—",e=l.get(d);void 0===e&&(e=n,n+=320,l.set(d,e));let f=(m.get(d)??-150)+150;m.set(d,f);let[g]=await h.db.insert(i.node).values({view:"ARCHITECTURE",source:"MANUAL",cluster:a.domain,title:a.title,role:a.role??null,plain:a.plain??null,status:c,x:e,y:f}).returning();a.files?.length&&await h.db.insert(i.nodeFile).values(Array.from(new Set(a.files)).map(a=>({nodeId:g.id,path:a}))),k.set(b,g.id)}}for(let a of d){let b=k.get(a.title.toLowerCase());if(b)for(let c of a.depends??[]){let a=k.get(c.trim().toLowerCase());a&&a!==b&&(await h.db.query.edge.findFirst({where:(c,{and:d,eq:e})=>d(e(c.fromId,b),e(c.toId,a),e(c.kind,"DEPENDS"))})||await h.db.insert(i.edge).values({fromId:b,toId:a,kind:"DEPENDS"}).catch(()=>{}))}}for(let a of d){if(!a.bugs?.length)continue;let b=k.get(a.title.toLowerCase());if(b)for(let c of a.bugs)await h.db.query.bugFlag.findFirst({where:(a,{and:d,eq:e,isNull:f})=>d(e(a.nodeId,b),e(a.note,c.note),f(a.resolvedAt))})||await h.db.insert(i.bugFlag).values({nodeId:b,by:"agent",note:c.note})}return d.length}async function D(a){let b=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP")}),c=a.id?b.find(b=>b.id===a.id):void 0;if(!c&&a.title){let{best:d,candidates:e}=(0,k.mk)(a.title,b.map(a=>({id:a.id,title:a.title})));if(d)c=b.find(a=>a.id===d.id);else if(e.length)return{ok:!1,candidates:e}}if(!c)return{ok:!1};await h.db.update(i.node).set({plain:a.description,status:"DONE"}).where((0,f.eq)(i.node.id,c.id));let d=await x(c.id);if(await w(c.id),a.files?.length)for(let b of Array.from(new Set(a.files.map(B).filter(Boolean))))await h.db.insert(i.nodeFile).values({nodeId:c.id,path:b}).onConflictDoNothing({target:[i.nodeFile.nodeId,i.nodeFile.path]});return await h.db.update(i.appSetting).set({currentFeatureId:null}).where((0,f.eq)(i.appSetting.currentFeatureId,c.id)),a.architecture?.length&&await C(a.architecture),await (0,j.Bx)(),{ok:!0,id:c.id,subtasksCompleted:d.completed||void 0,subtasksBlocked:d.blocked.length?d.blocked:void 0}}async function E(a){let b=[];for(let c of a){let a=await D(c);b.push({...a,title:c.title})}return{results:b}}async function F(a){let b=Array.from(new Set((a.files??[]).map(B).filter(Boolean))),c=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,"ROADMAP")}),d=a.id?c.find(b=>b.id===a.id):void 0;if(!d&&a.title){let{best:b,candidates:e}=(0,k.mk)(a.title,c.map(a=>({id:a.id,title:a.title})));if(b)d=c.find(a=>a.id===b.id);else if(e.length)return{ok:!1,candidates:e}}if(!d)return{ok:!1};for(let a of b)await h.db.insert(i.nodeFile).values({nodeId:d.id,path:a}).onConflictDoNothing({target:[i.nodeFile.nodeId,i.nodeFile.path]});await (0,j.Bx)();let e=(await h.db.select({n:(0,g.U9)()}).from(i.nodeFile).where((0,f.eq)(i.nodeFile.nodeId,d.id)))[0].n;return{ok:!0,id:d.id,count:e}}async function G(a){let b,c=a.items.filter(a=>a.title.trim());if(!c.length)return{ok:!1,reason:"no_items"};if(a.parentId)b=await h.db.query.node.findFirst({where:(b,{eq:c})=>c(b.id,a.parentId)});else if(a.parentTitle&&a.parentTitle.trim()){let c=await h.db.query.node.findMany({where:(a,{isNull:b})=>b(a.parentId),columns:{id:!0,title:!0,cluster:!0,status:!0}}),{best:d,candidates:e}=(0,k.mk)(a.parentTitle.trim(),c.map(a=>({id:a.id,title:a.title,cluster:a.cluster,status:a.status})));if(d)b=await h.db.query.node.findFirst({where:(a,{eq:b})=>b(a.id,d.id)});else if(e.length)return{ok:!1,reason:"ambiguous",candidates:e}}if(!b)return{ok:!1,reason:"parent_not_found"};let d=b,e=await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.parentId,d.id),columns:{id:!0,title:!0}}),f=c.filter(a=>(0,k.mk)(a.title.trim(),e).best);if(f.length)return{ok:!1,reason:"duplicate",message:`⛔ These sub-tasks already exist under "${d.title}": ${f.map(a=>`"${a.title.trim()}"`).join(", ")}. Drop the duplicates — only add genuinely new sub-tasks.`};let g=(await h.db.query.node.findMany({where:(a,{eq:b})=>b(a.view,d.view),columns:{x:!0,y:!0}})).map(a=>({x:a.x,y:a.y})),i=[];for(let a=0;a<c.length;a++){let b=c[a],e=(0,m.B)(g,{x:d.x+240*a,y:d.y+200});g.push(e);let f=await (0,p.RM)({view:d.view,kind:b.kind?.trim().toUpperCase()==="BUG"?"BUG":"FEATURE",title:b.title.trim(),plain:b.plain??null,cluster:d.cluster??null,parentId:d.id,x:e.x,y:e.y});i.push({id:f.id,title:f.title})}return i.length&&await w(i[0].id),await (0,j.Bx)(),{ok:!0,parent:{id:d.id,title:d.title},created:i}}d()}catch(a){d(a)}})},71584:(a,b,c)=>{c.d(b,{B:()=>d});function d(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}},76223:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Z:()=>i,t:()=>h});var e=c(56727),f=c(30046),g=a([e]);async function h(a=e.db){let[b]=await a.insert(f.appSetting).values({id:"singleton"}).onConflictDoUpdate({target:f.appSetting.id,set:{id:"singleton"}}).returning();return b}async function i(a,b=e.db){let[c]=await b.insert(f.appSetting).values({id:"singleton",...a}).onConflictDoUpdate({target:f.appSetting.id,set:a}).returning();return c}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},89908:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AC:()=>n,B2:()=>q,CB:()=>r,OK:()=>m,Qd:()=>l,RM:()=>k,jO:()=>o,k5:()=>p});var e=c(34216),f=c(56727),g=c(30046),h=c(70299),i=c(13560),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,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){let b=i.hj.parse(a);if(b.fromId===b.toId)throw Error("Self-edge not allowed");let c=b.kind??"DEPENDS",d=await f.db.query.edge.findFirst({where:(a,{and:d,eq:e})=>d(e(a.fromId,b.fromId),e(a.toId,b.toId),e(a.kind,c))});if(d)return d;let[e]=await f.db.insert(g.edge).values({fromId:b.fromId,toId:b.toId,kind:c,label:b.label??null,sourceHandle:b.sourceHandle??null,targetHandle:b.targetHandle??null}).returning();return e}async function m(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 n(a){let[b]=await f.db.delete(g.node).where((0,e.eq)(g.node.id,a)).returning();return b}async function o(a,b,c){let d=i.tI.parse({x:b,y:c}),[h]=await f.db.update(g.node).set(d).where((0,e.eq)(g.node.id,a)).returning();return h}async function p(a){return await Promise.all(a.map(a=>{let b=i.tI.parse({x:a.x,y:a.y});return f.db.update(g.node).set(b).where((0,e.eq)(g.node.id,a.id))})),a.length}async function q(a,b,c){let d=i.tI.parse({x:b,y:c}),[h]=await f.db.update(g.dbTable).set(d).where((0,e.eq)(g.dbTable.id,a)).returning();return h}async function r(a,b,c){let d=i.tI.parse({x:b,y:c}),[h]=await f.db.update(g.endpoint).set(d).where((0,e.eq)(g.endpoint.id,a)).returning();return h}[f,h]=j.then?(await j)():j,d()}catch(a){d(a)}})},90435:(a,b,c)=>{c.d(b,{cA:()=>h,hd:()=>k,wU:()=>j});var d=c(73024),e=c(76760),f=c(45301),g=c(32213);function h(a,b){let c=[...a].sort().join(","),d=b.map(a=>`${a.fromId}>${a.toId}`).sort().join(",");return`force-2|${a.length}|${c}|${d}`}function i(){return(0,e.join)((0,f.KS)(),"roadmap-layout-sig.json")}function j(){try{return JSON.parse((0,d.readFileSync)(i(),"utf8")).sig??null}catch{return null}}function k(a){(0,g.q)(i(),{sig:a})}},90497:(a,b,c)=>{c.d(b,{u:()=>i});var d=c(61661),e=c(52648),f=c(61639),g=c(62088),h=c(19125);function i(a,b,c={}){let j,k=c.linkDistance??210,l=c.charge??-450,m=c.collideRadius??132,n=c.ticks??500,o=[...a].sort((a,b)=>a.id<b.id?-1:+(a.id>b.id)),p=new Set(o.map(a=>a.id)),q=o.map(a=>({id:a.id})),r=[];for(let a of b)a.fromId!==a.toId&&p.has(a.fromId)&&p.has(a.toId)&&r.push({source:a.fromId,target:a.toId});for(let a of o)a.parentId&&p.has(a.parentId)&&r.push({source:a.id,target:a.parentId});let s=(0,d.A)(q).randomSource((j=0x9e3779b9,()=>{let a=j=j+0x6d2b79f5>>>0;return a=Math.imul(a^a>>>15,1|a),(((a^=a+Math.imul(a^a>>>7,61|a))^a>>>14)>>>0)/0x100000000})).force("link",(0,e.A)(r).id(a=>a.id).distance(k).strength(.6)).force("charge",(0,f.A)().strength(l).distanceMax(1200)).force("collide",(0,g.A)().radius(m).strength(1)).force("center",(0,h.A)(0,0).strength(.08)).stop();for(let a=0;a<n;a++)s.tick();let t=new Map;for(let a of q)t.set(a.id,{x:Math.round(a.x??0),y:Math.round(a.y??0)});return t}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=1193,exports.ids=[1193],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,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,k]=m.then?(await m)():m,(0,l.D)([o,p,q,r,s,t,u]),(0,e.A)(o,"40eb685ebfe9863865881ba107a6d9f06ca48be7ed",null),(0,e.A)(p,"60a8bcbb7eb57e0d85ea4c6f2752198acafa0a560c",null),(0,e.A)(q,"608314f97341e28ae04ab4ab5ee7f6e9beb38a0460",null),(0,e.A)(r,"401c5dcbda4f5183d28ca893c77ed3d2a9d45fefb6",null),(0,e.A)(s,"405b6297a013f25886facc6eec3f7c9b3f484d1704",null),(0,e.A)(t,"40aa1e7107fe3c8f957869f0e12efa617d22879e4c",null),(0,e.A)(u,"4027c2809699e746c9dc2d4de53fa4e02fc880143a",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);c(22443);var e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},2942:(a,b,c)=>{c.d(b,{F8:()=>s,NG:()=>o,QH:()=>p,Vq:()=>r,aM:()=>v,cV:()=>x,kz:()=>u,n$:()=>m,pO:()=>g,vB:()=>t});var d=c(48249),e=c(67484),f=c(33191);function g({markdown:a,className:b,variant:c="reading"}){let h=(0,e.useMemo)(()=>m(a),[a]),i="reading"===c;return(0,d.jsx)("div",{className:(0,f.cn)("min-w-0 [overflow-wrap:anywhere]",i?"mx-auto w-full max-w-[66ch] space-y-4 text-[15px] leading-[1.6]":"space-y-3.5 text-[13px] leading-relaxed",b),children:h.map((a,b)=>(0,d.jsx)(w,{block:a,variant:c},b))})}function h(a){let b=a.trim();return b.includes("|")&&b.includes("-")&&/^[\s|:-]+$/.test(b)}function i(a){return""!==a.trim()&&a.includes("|")}function j(a){let b=a.trim();return b.startsWith("|")&&(b=b.slice(1)),b.endsWith("|")&&(b=b.slice(0,-1)),b.split("|").map(a=>a.trim())}function k(a){let b=a.trim(),c=b.startsWith(":"),d=b.endsWith(":");return c&&d?"center":d?"right":c?"left":null}let l=/^\s*```[^\s`]*\s*$/;function m(a){let b=a.split("\n"),c=[],d=[],e=()=>{d.length&&(c.push({kind:"p",text:d.join("\n")}),d=[])},f=null,g=()=>{null!==f&&(c.push({kind:"quote",text:f.join("\n")}),f=null)},m=a=>Math.min(6,Math.floor(a.length/2)),n=null,o=null;for(let a=0;a<b.length;a++){let p=b[a];if(null!==n){l.test(p)?(c.push({kind:"code",text:n.join("\n")}),n=null):n.push(p);continue}let q=p.match(/^>\s?(.*)$/);if(q){e(),o=null,(f??=[]).push(q[1]);continue}if(g(),l.test(p)){e(),o=null,n=[];continue}if(/^\s*$/.test(p)){e(),o=null;continue}let r=p.match(/^#### +(.+)$/);if(r){e(),o=null,c.push({kind:"h4",text:r[1]});continue}let s=p.match(/^### +(.+)$/);if(s){e(),o=null,c.push({kind:"h3",text:s[1]});continue}let t=p.match(/^## +(.+)$/);if(t){e(),o=null,c.push({kind:"h2",text:t[1]});continue}let u=p.match(/^# +(.+)$/);if(u){e(),o=null,c.push({kind:"h1",text:u[1]});continue}if(i(p)&&a+1<b.length&&h(b[a+1])){e(),o=null;let d=[j(p)],f=j(b[a+1]).map(k),g=a+2;for(;g<b.length&&i(b[g])&&!h(b[g]);)d.push(j(b[g])),g++;c.push({kind:"table",text:b.slice(a,g).join("\n"),rows:d,align:f}),a=g-1;continue}let v=p.match(/^(\s*)(\d+)\. +(.+)$/);if(v){e(),c.push({kind:"ol",text:v[3],depth:m(v[1]),marker:v[2]}),o=c.length-1;continue}let w=p.match(/^(\s*)- +(.+)$/);if(w){e(),c.push({kind:"ul",text:w[2],depth:m(w[1])}),o=c.length-1;continue}if(null!==o&&0===d.length){c[o].text+=" "+p.trim();continue}d.push(p)}return e(),g(),null!==n&&c.push({kind:"code",text:n.join("\n")}),c}let n=/("(?:\\.|[^"\\])*")(\s*:)?|\b(true|false|null)\b|(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/g;function o({text:a}){let b=function(a){let b=a.trim();if(!b||"{"!==b[0]&&"["!==b[0])return null;try{return JSON.stringify(JSON.parse(b),null,2)}catch{return null}}(a);return(0,d.jsx)("pre",{className:"overflow-x-auto rounded-lg border border-white/10 bg-white/[0.06] p-3 text-[12px] leading-relaxed",children:(0,d.jsx)("code",{className:"whitespace-pre font-mono [overflow-wrap:normal]",children:b?function(a){let b,c=[],e=0,f=0,g=a=>(0,d.jsx)("span",{className:"text-foreground/45",children:a},f++);for(n.lastIndex=0;null!==(b=n.exec(a));){if(b.index>e&&c.push(g(a.slice(e,b.index))),void 0!==b[1]){let a=void 0!==b[2];c.push((0,d.jsx)("span",{className:a?"text-sky-300":"text-emerald-300/90",children:b[1]},f++)),a&&b[2]&&c.push(g(b[2]))}else void 0!==b[3]?c.push((0,d.jsx)("span",{className:"text-purple-300",children:b[3]},f++)):void 0!==b[4]&&c.push((0,d.jsx)("span",{className:"text-amber-300",children:b[4]},f++));e=n.lastIndex}return e<a.length&&c.push(g(a.slice(e))),c}(b):(0,d.jsx)("span",{className:"text-foreground/85",children:a})})})}function p({block:a}){let b=a.rows??[];if(0===b.length)return null;let[c,...e]=b,g=a.align??[],h=a=>"center"===g[a]?"text-center":"right"===g[a]?"text-right":"text-left";return(0,d.jsx)("div",{className:"overflow-x-auto rounded-lg border border-white/10",children:(0,d.jsxs)("table",{className:"w-full border-collapse text-[13px] [overflow-wrap:normal]",children:[(0,d.jsx)("thead",{children:(0,d.jsx)("tr",{className:"border-b border-white/15 bg-white/[0.04]",children:c.map((a,b)=>(0,d.jsx)("th",{className:(0,f.cn)("whitespace-nowrap px-3 py-1.5 font-semibold text-foreground",h(b)),children:(0,d.jsx)(x,{text:a})},b))})}),(0,d.jsx)("tbody",{children:e.map((a,b)=>(0,d.jsx)("tr",{className:"border-b border-white/5 last:border-0",children:a.map((a,b)=>(0,d.jsx)("td",{className:(0,f.cn)("px-3 py-1.5 align-top text-foreground/90",h(b)),children:(0,d.jsx)(x,{text:a})},b))},b))})]})})}let q=["h1","h2","h3","h4"];function r(a){return q.includes(a)}function s(a){let b=q.indexOf(a);return b<0?0:b}function t(a){return`plan-h-${a}`}function u(a){return a.replace(/[`*]/g,"").trim()}function v(a,b,c,e){let g="reading"===c;switch(a.kind){case"h1":return(0,d.jsx)("h1",{id:e,className:g?"scroll-mt-24 text-xl font-semibold tracking-tight text-foreground":"text-base font-semibold text-foreground",children:b});case"h2":return(0,d.jsx)("h2",{id:e,className:g?"mt-6 scroll-mt-24 border-b border-white/10 pb-1 text-lg font-semibold text-foreground":"mt-3 text-sm font-semibold text-muted-foreground",children:b});case"h3":return(0,d.jsx)("h3",{id:e,className:g?"mt-4 scroll-mt-24 text-base font-semibold text-foreground":"mt-2 text-[13px] font-semibold text-foreground",children:b});case"h4":return(0,d.jsx)("h4",{id:e,className:g?"mt-3 scroll-mt-24 text-sm font-semibold text-muted-foreground":"mt-2 text-[13px] font-semibold text-muted-foreground",children:b});case"ul":case"ol":{let c=a.depth??0;return(0,d.jsxs)("div",{className:(0,f.cn)("flex gap-2",g?"text-foreground/95":"text-foreground/90"),style:{marginLeft:`${.75+1.25*c}rem`},children:[(0,d.jsx)("span",{className:"shrink-0 select-none text-muted-foreground tabular-nums",children:"ol"===a.kind?`${a.marker}.`:"•"}),(0,d.jsx)("span",{className:"min-w-0 flex-1",children:b})]})}case"quote":return(0,d.jsx)("blockquote",{className:(0,f.cn)("whitespace-pre-wrap border-l-2 pl-3 italic",g?"border-white/15 text-foreground/80":"border-white/10 text-foreground/75"),children:b});default:return(0,d.jsx)("p",{className:(0,f.cn)("whitespace-pre-wrap",g?"text-foreground/95":"text-foreground/90"),children:b})}}function w({block:a,variant:b}){return"code"===a.kind?(0,d.jsx)(o,{text:a.text}):"table"===a.kind?(0,d.jsx)(p,{block:a}):(0,d.jsx)(d.Fragment,{children:v(a,(0,d.jsx)(x,{text:a.text}),b)})}function x({text:a}){let b=a.split(/(`[^`]+`|\*\*[\s\S]+?\*\*|\*[^*]+\*)/g);return(0,d.jsx)(d.Fragment,{children:b.map((a,b)=>/^`[^`]+`$/.test(a)?(0,d.jsx)("code",{className:"rounded bg-white/5 px-1 font-mono text-[12px]",children:a.slice(1,-1)},b):/^\*\*[\s\S]+\*\*$/.test(a)?(0,d.jsx)("strong",{className:"font-semibold text-foreground",children:(0,d.jsx)(x,{text:a.slice(2,-2)})},b):/^\*[^*]+\*$/.test(a)?(0,d.jsx)("em",{className:"text-muted-foreground",children:(0,d.jsx)(x,{text:a.slice(1,-1)})},b):(0,d.jsx)("span",{children:a},b))})}},3173:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{AC:()=>p,OK:()=>l,Pj:()=>m,RM:()=>k,Vp:()=>n,x$:()=>o});var e=c(39321),f=c(62896),g=c(22443),h=c(8292),i=c(7913),j=a([f,h]);async function k(a){let b=i.gY.parse(a),c="ARCHITECTURE"===b.view?"REBUILD":"PENDING",[d]=await f.db.insert(g.node).values({...b.id?{id:b.id}:{},view:b.view,kind:b.kind??"FEATURE",title:b.title,cluster:b.cluster??null,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(50320),i=a([e,f,g,h]);[e,f,g,h]=i.then?(await i)():i,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:()=>i,M7:()=>g,gY:()=>h});var d=c(23873);let e=d.k5(["ROADMAP","ARCHITECTURE"]),f=d.k5(["FEATURE","BUG"]);d.k5(["user","agent"]);let g=d.k5(["PENDING","IN_PROGRESS","DONE","BLOCKED","CANCELLED","DEPRIORITIZED","KEEP","REBUILD","REPLACE","DROP"]);d.k5(["DEPENDS","CONTAINS","RELATES","REPLACES"]);let h=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(),role:d.Yj().trim().max(500).nullish(),plain:d.Yj().trim().max(2e3).nullish(),parentId:d.Yj().nullish(),status:g.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()}),i=d.Ik({title:d.Yj().trim().min(1).max(200).optional(),kind:f.optional(),role:d.Yj().trim().max(500).nullish(),plain:d.Yj().trim().max(2e3).nullish(),cluster:d.Yj().trim().max(64).nullish(),status:g.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:()=>m});var e=c(23873),f=c(39321),g=c(62896),h=c(22443),i=c(4963);c(526),c(58149),c(26905),c(60569);var j=c(3173);c(50042);var k=c(4120),l=a([g,i,j,k]);[g,i,j,k]=l.then?(await l)():l;let n=new Set(["DONE","CANCELLED","DEPRIORITIZED"]),o=new Set(["IN_PROGRESS","BLOCKED"]),p=new Set(["CANCELLED","DEPRIORITIZED"]);async function m(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||p.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=>n.has(a))?"DONE":d.some(a=>o.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(),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)}})},11865:(a,b,c)=>{c.d(b,{MapClient:()=>aw});var d=c(48249),e=c(67484),f=c(53735),g=c(55030),h=c(56024);c(71763);var i=c(10920),j=c(69473),k=c(17313),l=c(28624),m=c(29813),n=c(90498),o=c(30170),p=c(95744),q=c(19099),r=c(1229),s=c(58720),t=c(99829);let u=(0,t.createServerReference)("4027c2809699e746c9dc2d4de53fa4e02fc880143a",t.callServer,void 0,t.findSourceMapURL,"acceptSuggestionAction");var v=c(49783),w=c(25148),x=c(24422),y=c(47578),z=c(97432),A=c(47352),B=c(35471),C=c(45535),D=c(57684),E=c(83394),F=c(55056);let G=["PENDING","IN_PROGRESS","DONE","BLOCKED","CANCELLED","DEPRIORITIZED"],H=["KEEP","REBUILD","REPLACE","DROP"],I=["IN_PROGRESS","PENDING","BLOCKED","DONE","DEPRIORITIZED","CANCELLED"],J={DONE:{label:"Done",className:"border-emerald-500/30 bg-emerald-500/15 text-emerald-300"},IN_PROGRESS:{label:"In progress",className:"border-sky-500/30 bg-sky-500/15 text-sky-300"},PENDING:{label:"Pending",className:"border-amber-500/30 bg-amber-500/10 text-amber-200"},BLOCKED:{label:"Blocked",className:"border-orange-500/30 bg-orange-500/15 text-orange-300"},CANCELLED:{label:"Cancelled",className:"border-zinc-500/30 bg-zinc-500/10 text-zinc-400 line-through"},DEPRIORITIZED:{label:"Deprioritized",className:"border-zinc-600/40 bg-zinc-600/10 text-zinc-400"},KEEP:{label:"Keep",className:"border-emerald-500/30 bg-emerald-500/15 text-emerald-300"},REBUILD:{label:"Rebuild",className:"border-violet-500/30 bg-violet-500/15 text-violet-300"},REPLACE:{label:"Replace",className:"border-rose-500/30 bg-rose-500/15 text-rose-300"},DROP:{label:"Drop",className:"border-zinc-500/30 bg-zinc-500/10 text-zinc-400 line-through"}},K=["bg-emerald-500/15 text-emerald-300","bg-sky-500/15 text-sky-300","bg-violet-500/15 text-violet-300","bg-amber-500/15 text-amber-200","bg-rose-500/15 text-rose-300","bg-cyan-500/15 text-cyan-300","bg-fuchsia-500/15 text-fuchsia-300","bg-lime-500/15 text-lime-300","bg-orange-500/15 text-orange-300","bg-teal-500/15 text-teal-300","bg-indigo-500/15 text-indigo-300","bg-pink-500/15 text-pink-300"];function L(a){let b=(a??"").trim().toUpperCase();if(!b)return"bg-white/[0.06] text-muted-foreground";let c=0;for(let a=0;a<b.length;a++)c=31*c+b.charCodeAt(a)>>>0;return K[c%K.length]}let M=(0,e.createContext)(null);var N=c(2942),O=c(33191);let P=[{v:0,l:"P0 \xb7 critical"},{v:1,l:"P1 \xb7 high"},{v:2,l:"P2 \xb7 medium"},{v:3,l:"P3 \xb7 low"}],Q="nodrag nopan";function R({nodeId:a}){let b=(0,q.useRouter)(),[c,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(""),[i,j]=(0,e.useState)(!1),l=()=>{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&&(l(),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,O.cn)(Q,"absolute -right-3 top-[calc(50%-28px)] z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground shadow-md transition-all hover:border-rose-400/50 hover:text-rose-300",c?"border-rose-400/50 text-rose-300 opacity-100":"opacity-0 group-hover/nc:opacity-100"),children:(0,d.jsx)(k.A,{className:"size-3"})}),c&&(0,d.jsxs)("div",{onClick:a=>a.stopPropagation(),className:(0,O.cn)(Q,"absolute -right-2 top-[calc(50%-28px)] z-20 w-60 translate-x-full rounded-xl border border-rose-400/25 bg-[#1c1c1f] p-2 shadow-xl"),children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center justify-between",children:[(0,d.jsxs)("span",{className:"flex items-center gap-1 text-[10px] font-semibold uppercase tracking-wide text-rose-300",children:[(0,d.jsx)(k.A,{className:"size-3"})," Flag a bug"]}),(0,d.jsx)("button",{type:"button",title:"Cancel",onClick:l,className:"rounded p-0.5 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)("span",{className:"block px-1 text-[11px] leading-none",children:"✕"})})]}),(0,d.jsx)("textarea",{autoFocus:!0,rows:2,value:g,placeholder:"What did you find?",onChange:a=>h(a.target.value),onKeyDown:a=>{a.stopPropagation(),"Escape"===a.key&&l(),"Enter"!==a.key||a.shiftKey||(a.preventDefault(),m())},className:"field-sizing-content max-h-40 min-h-12 w-full resize-none rounded-md bg-white/[0.04] px-1.5 py-1 text-xs outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.07]"}),(0,d.jsx)("button",{type:"button",disabled:i||!g.trim(),onClick:()=>void m(),className:"mt-1.5 w-full rounded-md bg-rose-500/15 py-1 text-[11px] font-semibold text-rose-300 transition-colors hover:bg-rose-500/25 disabled:opacity-50",children:i?"Flagging…":"Flag bug"})]})]})}function S({id:a,data:b,selected:c}){let{categories:f,statuses:g,patch:h,isExpanded:i,toggleExpand:j,openDetailed:l,removeNode:m,editingTitleId:n,onAskAgent:o}=function(){let a=(0,e.useContext)(M);if(!a)throw Error("useNodeEdit must be used inside NodeEditContext");return a}(),q=i(a),[t,G]=(0,e.useState)(!1),[H,I]=(0,e.useState)(!1),[K,T]=(0,e.useState)(b.title),[U,V]=(0,e.useState)(b.cluster??""),[W,X]=(0,e.useState)(b.plain??""),Y=0===b.priority,Z="BUG"===b.kind&&"ROADMAP"===b.view,$="ARCHITECTURE"===b.view,_=b.openBugs??0,aa="CANCELLED"===b.status||"DROP"===b.status,ab="DEPRIORITIZED"===b.status,ac="DRAFT"===b.source,ad="IN_PROGRESS"===b.status,ae="INIT"===b.source&&"ROADMAP"===b.view,af=a=>a.stopPropagation(),[ag,ah]=(0,e.useTransition)();return(0,d.jsxs)("div",{className:(0,O.cn)("group/nc relative rounded-lg border bg-card px-2.5 py-2 text-card-foreground shadow-sm transition","w-fit max-w-96",q?"min-w-80":"min-w-64",ac?"border-dashed border-sky-400/50 bg-sky-500/[0.06]":ae?"border-dashed border-violet-400/60 bg-violet-500/[0.07] shadow-[0_0_0_1px_rgba(167,139,250,0.18)]":Y?"border-[#ff3860]/60 shadow-[0_0_0_1px_rgba(255,56,96,0.15)]":"border-border",Z&&!ac&&"border-rose-400/50 bg-rose-500/[0.05]",ad&&"border-sky-400/60 shadow-[0_0_0_1px_rgba(56,160,255,0.25)]",b.isNext&&"border-emerald-400/70 shadow-[0_0_0_2px_rgba(52,211,153,0.35)]",c&&"ring-2 ring-[var(--accent,#f5b942)]",aa&&"opacity-60",ab&&"opacity-70 border-dashed"),children:[(0,d.jsx)(r.x,{}),$&&(0,d.jsx)(R,{nodeId:a}),(b.pins?.length??0)>0?(0,d.jsx)(s.e0,{pins:b.pins,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)("button",{type:"button",title:`Annotate ${b.title}`,onClick:a=>{af(a),b.onComment?.(b.title)},className:(0,O.cn)(Q,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover/nc:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,d.jsx)(v.A,{className:"size-3"})}),b.isNext&&(0,d.jsx)("div",{className:"mb-1 inline-flex items-center gap-1 rounded bg-emerald-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-emerald-300",children:"work on next"}),(0,d.jsxs)("div",{className:"flex w-0 min-w-full items-start gap-1.5",children:[ad&&(0,d.jsx)("span",{title:"em andamento",className:"mt-1.5 inline-block size-2 shrink-0 animate-pulse rounded-full bg-sky-400"}),b.isCriterion&&!ad&&(0,d.jsx)("span",{title:"Success criterion",className:"mt-1.5 inline-block size-1.5 shrink-0 rounded-full bg-[var(--accent,#f5b942)]"}),(0,d.jsx)("textarea",{rows:1,value:K,autoFocus:n===a,placeholder:"Title…",onFocus:b=>{n===a&&b.currentTarget.select()},onChange:a=>T(a.target.value),onBlur:()=>{let c=K.trim();c&&c!==b.title&&h(a,{title:c},!0)},onKeyDown:a=>{af(a),"Enter"!==a.key||a.shiftKey||(a.preventDefault(),a.currentTarget.blur())},className:(0,O.cn)(Q,"field-sizing-content w-full resize-none bg-transparent text-sm font-medium leading-snug outline-none placeholder:text-muted-foreground/60",aa&&"line-through")}),(0,d.jsx)("button",{type:"button",onClick:b=>{af(b),j(a)},title:q?"Collapse":"Expand",className:(0,O.cn)(Q,"mt-0.5 shrink-0 text-muted-foreground hover:text-foreground"),children:q?(0,d.jsx)(w.A,{className:"size-3.5"}):(0,d.jsx)(x.A,{className:"size-3.5"})})]}),((b.signals?.untested??0)>0||b.signals?.auth||_>0)&&(0,d.jsxs)("div",{className:"mt-1 flex w-0 min-w-full flex-wrap items-center gap-1",children:[_>0&&(0,d.jsxs)("span",{title:`${_} open bug flag(s) — raised by you or an agent examining this code`,className:"flex items-center gap-1 rounded bg-rose-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-rose-300",children:[(0,d.jsx)(k.A,{className:"size-2.5"}),_," ",1===_?"bug":"bugs"]}),(b.signals?.untested??0)>0&&(0,d.jsxs)("span",{title:`${b.signals.untested} of ${b.signals.total} attached file(s) have no test importing them`,className:"flex items-center gap-1 rounded bg-amber-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-amber-300",children:[(0,d.jsx)(y.A,{className:"size-2.5"}),b.signals.untested," untested"]}),b.signals?.auth&&(0,d.jsxs)("span",{title:"touches auth-sensitive files",className:"flex items-center gap-1 rounded bg-red-500/15 px-1 text-[9px] font-semibold uppercase tracking-wide text-red-300",children:[(0,d.jsx)(z.A,{className:"size-2.5"})," auth"]})]}),b.role&&(0,d.jsx)("div",{className:(0,O.cn)("mt-0.5 w-0 min-w-full text-[10px] leading-snug text-muted-foreground",!q&&"line-clamp-1"),children:b.role}),(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-1.5",children:["ROADMAP"===b.view?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{title:Z?"Bug — something to fix":b.isChild?"Sub-task of a feature":"Feature — top-level roadmap item",className:(0,O.cn)("flex shrink-0 items-center gap-1 rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide",Z?"bg-rose-500/15 text-rose-300":b.isChild?"bg-zinc-500/15 text-zinc-300":"bg-sky-500/15 text-sky-300"),children:[Z&&(0,d.jsx)(k.A,{className:"size-2.5"}),Z?"bug":b.isChild?"sub-task":"feature"]}),ae&&(0,d.jsxs)("span",{className:(0,O.cn)("flex items-center gap-1 rounded bg-violet-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-violet-300",ag&&"opacity-50"),children:[(0,d.jsx)(A.A,{className:"size-2.5"})," IA",(0,d.jsx)("button",{type:"button",title:"Accept suggestion — turn it into your own feature",disabled:ag,onClick:b=>{af(b),ah(async()=>u(a))},className:(0,O.cn)(Q,"-my-0.5 rounded p-0.5 hover:bg-emerald-500/20 hover:text-emerald-300"),children:(0,d.jsx)(B.A,{className:"size-2.5"})}),(0,d.jsx)("button",{type:"button",title:"Dismiss suggestion (deletes the card)",disabled:ag,onClick:b=>{af(b),m(a)},className:(0,O.cn)(Q,"-my-0.5 -ml-0.5 rounded p-0.5 hover:bg-red-500/20 hover:text-red-300"),children:(0,d.jsx)(C.A,{className:"size-2.5"})})]}),(0,d.jsx)("input",{list:`cats-${a}`,value:U,placeholder:"category",onChange:a=>V(a.target.value),onBlur:()=>{let c=U.trim()||null;c!==(b.cluster??null)&&h(a,{cluster:c},!0)},onKeyDown:a=>{af(a),"Enter"===a.key&&a.currentTarget.blur()},className:(0,O.cn)(Q,"field-sizing-content min-w-12 max-w-[65%] rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide outline-none focus:brightness-125 [&::-webkit-calendar-picker-indicator]:hidden",L(U))})]}):(0,d.jsxs)(d.Fragment,{children:[b.isChild&&(0,d.jsx)("span",{title:"Sub-component",className:"shrink-0 rounded bg-zinc-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:"sub"}),(0,d.jsx)("input",{list:`cats-${a}`,value:U,placeholder:"domain",title:"Architecture domain — the lane this component lives in",onChange:a=>V(a.target.value),onBlur:()=>{let c=U.trim()||null;c!==(b.cluster??null)&&h(a,{cluster:c},!0)},onKeyDown:a=>{af(a),"Enter"===a.key&&a.currentTarget.blur()},className:(0,O.cn)(Q,"field-sizing-content min-w-12 max-w-[65%] rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide outline-none focus:brightness-125 [&::-webkit-calendar-picker-indicator]:hidden",L(U))})]}),(0,d.jsx)("datalist",{id:`cats-${a}`,children:f.map(a=>(0,d.jsx)("option",{value:a},a))}),(0,d.jsxs)(F.l6,{value:b.status,onValueChange:b=>h(a,{status:b},!0),children:[(0,d.jsx)(F.bq,{className:(0,O.cn)(Q,"ml-auto h-6 shrink-0 gap-1 rounded border px-1.5 py-0 text-[10px] font-medium",J[b.status]?.className??"border-white/10"),children:(0,d.jsx)(F.yv,{children:a=>J[a]?.label??a})}),(0,d.jsx)(F.gC,{alignItemWithTrigger:!1,children:g.map(a=>(0,d.jsx)(F.eb,{value:a,children:J[a]?.label??a},a))})]})]}),q&&(0,d.jsxs)("div",{className:"mt-2 w-0 min-w-full space-y-2 border-t border-white/10 pt-2",children:[H||!W.trim()?(0,d.jsx)("textarea",{autoFocus:H,value:W,placeholder:"Description (markdown)…",onChange:a=>X(a.target.value),onBlur:()=>{I(!1);let c=W.trim()||null;c!==(b.plain??null)&&h(a,{plain:c},!0)},onKeyDown:af,rows:3,className:(0,O.cn)(Q,"field-sizing-content max-h-[24rem] min-h-[4.5rem] w-full resize-y rounded bg-white/[0.04] px-1.5 py-1 text-xs outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.08]")}):(0,d.jsx)("div",{onClick:a=>{af(a),I(!0)},title:"Click to edit",className:"cursor-text rounded bg-white/[0.02] px-1.5 py-1 text-xs hover:bg-white/[0.05]",children:(0,d.jsx)(N.pO,{markdown:W,variant:"compact",className:"text-[12px]"})}),(0,d.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,d.jsxs)(F.l6,{value:String(b.priority),onValueChange:b=>h(a,{priority:Number(b)},!0),children:[(0,d.jsx)(F.bq,{className:(0,O.cn)(Q,"h-6 gap-1 rounded border-white/10 px-1.5 py-0 text-[10px]"),children:(0,d.jsx)(F.yv,{children:a=>P.find(b=>String(b.v)===a)?.l??a})}),(0,d.jsx)(F.gC,{alignItemWithTrigger:!1,children:P.map(a=>(0,d.jsx)(F.eb,{value:String(a.v),children:a.l},a.v))})]}),(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[(0,d.jsxs)("button",{type:"button",onClick:b=>{af(b),t?m(a):G(!0)},onBlur:()=>G(!1),title:"Delete node",className:(0,O.cn)(Q,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] transition-colors",t?"bg-red-500/20 text-red-300":"text-muted-foreground hover:bg-white/5 hover:text-red-300"),children:[(0,d.jsx)(D.A,{className:"size-3"}),t&&"Delete?"]}),o&&(0,d.jsxs)("button",{type:"button",onClick:a=>{af(a),o(`feature: ${b.title}`)},title:"Ask the agent a question about this feature (answered in its next round)",className:(0,O.cn)(Q,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] text-sky-300/90 hover:bg-sky-500/15 hover:text-sky-300"),children:[(0,d.jsx)(E.A,{className:"size-3"})," Ask"]}),(0,d.jsxs)("button",{type:"button",onClick:b=>{af(b),l(a)},className:(0,O.cn)(Q,"flex items-center gap-1 rounded px-1.5 py-1 text-[10px] text-muted-foreground hover:bg-white/5 hover:text-foreground"),children:[(0,d.jsx)(p.A,{className:"size-3"})," Details"]})]})]})]})]})}var T=c(32798),U=c(82145),V=c(48779),W=c(26284),X=c(52351),Y=c(74732);function Z({className:a,type:b,...c}){return(0,d.jsx)("input",{type:b,"data-slot":"input",className:(0,O.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...c})}function $({className:a,...b}){return(0,d.jsx)("textarea",{"data-slot":"textarea",className:(0,O.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 _=c(86371);function aa({className:a,...b}){return(0,d.jsx)(_.b,{"data-slot":"label",className:(0,O.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 ab=(0,t.createServerReference)("40eb685ebfe9863865881ba107a6d9f06ca48be7ed",t.callServer,void 0,t.findSourceMapURL,"createNodeAction"),ac=(0,t.createServerReference)("60a8bcbb7eb57e0d85ea4c6f2752198acafa0a560c",t.callServer,void 0,t.findSourceMapURL,"updateNodeAction");function ad({open:a,onOpenChange:b,mode:c,view:f,heading:g,nodeId:h,parentId:i,position:j,defaults:k}){let l=(0,q.useRouter)(),[m,n]=(0,e.useState)(k?.title??""),[o,p]=(0,e.useState)(k?.role??""),[r,s]=(0,e.useState)(k?.plain??""),[t,u]=(0,e.useState)(k?.cluster??""),[v,w]=(0,e.useState)(k?.status??("ARCHITECTURE"===f?"REBUILD":"PENDING")),[x,y]=(0,e.useState)(k?.kind==="BUG"?"BUG":"FEATURE"),[z,A]=(0,e.useState)(!1),B="ARCHITECTURE"===f?H:G;async function C(){if(m.trim()){A(!0);try{"create"===c?await ab({view:f,..."ROADMAP"===f?{kind:x}:{},title:m.trim(),role:o.trim()||null,plain:r.trim()||null,cluster:t.trim()||null,parentId:i??null,status:v,x:j?.x??60,y:j?.y??60}):h&&await ac(h,{..."ROADMAP"===f?{kind:x}:{},title:m.trim(),role:o.trim()||null,plain:r.trim()||null,cluster:t.trim()||null,status:v}),b(!1),l.refresh()}finally{A(!1)}}}return(0,d.jsx)(Y.lG,{open:a,onOpenChange:b,children:(0,d.jsxs)(Y.Cf,{children:[(0,d.jsx)(Y.c7,{children:(0,d.jsx)(Y.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)(aa,{htmlFor:"nf-title",children:"Title"}),(0,d.jsx)(Z,{id:"nf-title",value:m,autoFocus:!0,onChange:a=>n(a.target.value)})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(aa,{htmlFor:"nf-role",children:"Role (one line)"}),(0,d.jsx)(Z,{id:"nf-role",value:o,onChange:a=>p(a.target.value)})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(aa,{htmlFor:"nf-plain",children:"Description"}),(0,d.jsx)($,{id:"nf-plain",rows:3,value:r,onChange:a=>s(a.target.value)})]}),"ROADMAP"===f&&(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(aa,{children:"Kind"}),(0,d.jsxs)(F.l6,{value:x,onValueChange:a=>null!=a&&y(a),children:[(0,d.jsx)(F.bq,{children:(0,d.jsx)(F.yv,{children:a=>"BUG"===a?"Bug":"Feature"})}),(0,d.jsxs)(F.gC,{children:[(0,d.jsx)(F.eb,{value:"FEATURE",children:"Feature"}),(0,d.jsx)(F.eb,{value:"BUG",children:"Bug"})]})]})]}),(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)(aa,{children:"Status"}),(0,d.jsxs)(F.l6,{value:v,onValueChange:a=>null!=a&&w(a),children:[(0,d.jsx)(F.bq,{children:(0,d.jsx)(F.yv,{children:a=>J[a]?.label??a})}),(0,d.jsx)(F.gC,{children:B.map(a=>(0,d.jsx)(F.eb,{value:a,children:J[a]?.label??a},a))})]})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)(aa,{htmlFor:"nf-cluster",children:"Cluster / lane"}),(0,d.jsx)(Z,{id:"nf-cluster",value:t,onChange:a=>u(a.target.value)})]})]})]}),(0,d.jsxs)(Y.Es,{children:[(0,d.jsx)(W.$,{variant:"outline",onClick:()=>b(!1),children:"Cancel"}),(0,d.jsx)(W.$,{onClick:C,disabled:z||!m.trim(),children:z?"Saving…":"Save"})]})]})})}let ae=(0,t.createServerReference)("40aa1e7107fe3c8f957869f0e12efa617d22879e4c",t.callServer,void 0,t.findSourceMapURL,"deleteNodeAction"),af=(0,t.createServerReference)("608314f97341e28ae04ab4ab5ee7f6e9beb38a0460",t.callServer,void 0,t.findSourceMapURL,"setStatusAction"),ag=(0,t.createServerReference)("405b6297a013f25886facc6eec3f7c9b3f484d1704",t.callServer,void 0,t.findSourceMapURL,"cancelAction"),ah=(0,t.createServerReference)("401c5dcbda4f5183d28ca893c77ed3d2a9d45fefb6",t.callServer,void 0,t.findSourceMapURL,"deprioritizeAction");function ai({view:a,selected:b,allNodes:c,onClose:e,commentsContent:f,commentsCount:g=0,activeTab:h,onTabChange:i,onAddComment:j,topOffset:k}){let l=!!f,m=h??"details";return(0,d.jsxs)(V.b,{className:"absolute bottom-3 right-3 z-10 flex w-80 flex-col rounded-2xl",style:{top:k??12},children:[l?(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-1 py-1",children:[(0,d.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,d.jsx)(aj,{active:"details"===m,onClick:()=>i?.("details"),children:"Details"}),(0,d.jsxs)(aj,{active:"comments"===m,onClick:()=>i?.("comments"),children:["Comments",g>0&&(0,d.jsx)("span",{className:"ml-1 rounded-full bg-white/10 px-1 text-[9px] font-semibold leading-4",children:g})]})]}),(0,d.jsx)("button",{onClick:e,title:"Close panel",className:"mr-1 rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(C.A,{className:"size-4"})})]}):(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,d.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Details"}),(0,d.jsx)("button",{onClick:e,title:"Close panel",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(C.A,{className:"size-4"})})]}),(0,d.jsx)("div",{className:"flex-1 overflow-y-auto",children:(0,d.jsx)("div",{className:"p-3",children:"comments"===m&&l?f:b?(0,d.jsxs)(d.Fragment,{children:[j&&(0,d.jsxs)("button",{type:"button",onClick:()=>j(b.title),className:"mb-3 flex w-full items-center justify-center gap-1.5 rounded-lg border border-white/10 bg-white/[0.03] px-3 py-1.5 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,d.jsx)(v.A,{className:"size-3.5"}),"Comment on this ","ARCHITECTURE"===a?"component":"feature"]}),(0,d.jsx)(ak,{node:b,view:a},b.id)]}):(0,d.jsx)(am,{view:a,nodes:c})})})]})}function aj({active:a,onClick:b,children:c}){return(0,d.jsx)("button",{type:"button",onClick:b,className:(0,O.cn)("flex items-center gap-1 rounded-md px-2.5 py-1 text-[11px] font-medium transition-colors",a?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:c})}function ak({node:a,view:b}){var c;let f=(0,q.useRouter)(),[g,h]=(0,e.useTransition)(),[i,j]=(0,e.useState)(!1),[k,l]=(0,e.useState)(!1),m="ARCHITECTURE"===b?H:G,n=a=>h(async()=>{await a(),f.refresh()});return(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"text-xs uppercase tracking-wide text-muted-foreground",children:[(c=a.cluster,c?.trim()||"—"),0===a.priority&&(0,d.jsx)("span",{className:"ml-2 text-[#ff7a90]",children:"\xb7 critical path"})]}),(0,d.jsx)("h2",{className:"mt-1 text-lg font-semibold leading-tight",children:a.title})]}),"INIT"===a.source&&(0,d.jsxs)("div",{className:"rounded-lg border border-violet-400/30 bg-violet-500/[0.06] p-2.5",children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-semibold text-violet-300",children:[(0,d.jsx)(A.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)(W.$,{size:"sm",className:"h-7 px-2.5 text-xs",disabled:g,onClick:()=>n(()=>u(a.id)),children:"Accept"}),(0,d.jsx)(W.$,{size:"sm",variant:"outline",className:"h-7 px-2.5 text-xs text-muted-foreground",disabled:g,onClick:()=>n(()=>ae(a.id)),children:"Dismiss"})]})]}),(0,d.jsxs)("div",{className:"space-y-1.5",children:[(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:"Status"}),(0,d.jsxs)(F.l6,{value:a.status,onValueChange:b=>null!=b&&n(()=>af(a.id,b)),children:[(0,d.jsx)(F.bq,{className:"h-8",disabled:g,children:(0,d.jsx)(F.yv,{children:a=>J[a]?.label??a})}),(0,d.jsx)(F.gC,{children:m.map(a=>(0,d.jsx)(F.eb,{value:a,children:J[a]?.label??a},a))})]})]}),a.plain&&(0,d.jsx)("div",{className:"rounded-md border border-white/5 bg-card/40 px-2.5 py-2 text-sm",children:(0,d.jsx)(N.pO,{markdown:a.plain,variant:"compact",className:"text-[12.5px]"})}),a.sourceRef&&(0,d.jsx)("div",{className:"rounded-md border border-border bg-card px-2 py-1.5 font-mono text-xs text-muted-foreground",children:a.sourceRef}),a.files.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("h3",{className:"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:["Files (",a.files.length,")"]}),(0,d.jsx)("ul",{className:"space-y-0.5",children:a.files.map(a=>(0,d.jsx)("li",{children:(0,d.jsx)("button",{onClick:()=>fetch(`/api/open?path=${encodeURIComponent(a)}`).catch(()=>{}),title:`Open ${a} in editor`,className:"block w-full truncate rounded px-1.5 py-0.5 text-left font-mono text-[11px] text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:a})},a))})]}),"ARCHITECTURE"===b&&(0,d.jsx)(al,{node:a}),(0,d.jsxs)("div",{className:"flex flex-wrap gap-1.5 pt-1",children:[(0,d.jsx)(W.$,{size:"sm",variant:"outline",onClick:()=>j(!0),children:"Edit"}),(0,d.jsx)(W.$,{size:"sm",variant:"outline",onClick:()=>l(!0),children:"+ Sub-node"}),(0,d.jsx)(W.$,{size:"sm",variant:"outline",disabled:g,onClick:()=>n(()=>ag(a.id)),children:"Cancel"}),(0,d.jsx)(W.$,{size:"sm",variant:"outline",disabled:g,onClick:()=>n(()=>ah(a.id)),children:"Deprioritize"}),(0,d.jsxs)(X.Lt,{children:[(0,d.jsx)(X.tv,{render:(0,d.jsx)(W.$,{size:"sm",variant:"outline",className:"text-red-300",children:"Delete"})}),(0,d.jsxs)(X.EO,{children:[(0,d.jsxs)(X.wd,{children:[(0,d.jsxs)(X.r7,{children:["Delete “",a.title,"”?"]}),(0,d.jsx)(X.$v,{children:"This removes the node and all its sub-nodes. It can’t be undone."})]}),(0,d.jsxs)(X.ck,{children:[(0,d.jsx)(X.Zr,{children:"Cancel"}),(0,d.jsx)(X.Rx,{onClick:()=>n(()=>ae(a.id)),children:"Delete"})]})]})]})]}),i&&(0,d.jsx)(ad,{open:!0,onOpenChange:j,mode:"edit",view:b,heading:"Edit node",nodeId:a.id,defaults:{title:a.title,role:a.role,plain:a.plain,status:a.status,cluster:a.cluster,kind:a.kind}}),k&&(0,d.jsx)(ad,{open:!0,onOpenChange:l,mode:"create",view:b,heading:"New sub-node",parentId:a.id,position:{x:a.x,y:a.y+120},defaults:{cluster:a.cluster}})]})}function al({node:a}){let b=(0,q.useRouter)(),[c,f]=(0,e.useState)(""),[g,h]=(0,e.useState)(!1),i=a.bugFlags.filter(a=>!a.resolved),j=a=>{h(!0),a().then(()=>b.refresh()).finally(()=>h(!1))},l=()=>{let b=c.trim();b&&j(async()=>{(await fetch("/api/bug-flags",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({nodeId:a.id,by:"user",note:b})})).ok&&f("")})};return(0,d.jsxs)("div",{children:[(0,d.jsxs)("h3",{className:"mb-1.5 flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:[(0,d.jsx)(k.A,{className:"size-3.5 text-rose-300"}),"Bug flags",i.length>0&&` (${i.length} open)`]}),a.bugFlags.length>0&&(0,d.jsx)("ul",{className:"space-y-1.5",children:a.bugFlags.map(a=>(0,d.jsxs)("li",{className:(0,O.cn)("rounded-md border px-2 py-1.5",a.resolved?"border-white/5 bg-card/30 opacity-60":"border-rose-400/25 bg-rose-500/[0.05]"),children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{title:"agent"===a.by?"Flagged by an agent examining the code":"Flagged by you",className:(0,O.cn)("rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide","agent"===a.by?"bg-violet-500/15 text-violet-300":"bg-sky-500/15 text-sky-300"),children:"agent"===a.by?"agent":"you"}),(0,d.jsxs)("div",{className:"ml-auto flex items-center gap-1",children:[(0,d.jsx)("button",{type:"button",disabled:g,onClick:()=>j(()=>fetch(`/api/bug-flags/${a.id}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify({resolved:!a.resolved})})),className:"rounded px-1.5 py-0.5 text-[10px] text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:a.resolved?"Reopen":"Resolve"}),(0,d.jsx)("button",{type:"button",disabled:g,title:"Delete flag",onClick:()=>j(()=>fetch(`/api/bug-flags/${a.id}`,{method:"DELETE"})),className:"rounded p-0.5 text-muted-foreground transition-colors hover:bg-white/10 hover:text-red-300",children:(0,d.jsx)(C.A,{className:"size-3"})})]})]}),(0,d.jsx)("p",{className:(0,O.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(),l())},className:"field-sizing-content min-h-7 w-full resize-none rounded-md border border-white/10 bg-white/[0.03] px-2 py-1 text-[11.5px] outline-none placeholder:text-muted-foreground/60 focus:bg-white/[0.06]"}),(0,d.jsx)(W.$,{size:"sm",variant:"outline",className:"h-7 shrink-0 px-2 text-[11px]",disabled:g||!c.trim(),onClick:l,children:"Flag"})]})]})}function am({view:a,nodes:b}){let c=b.filter(a=>0===a.priority).length;return(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-sm font-semibold",children:"ROADMAP"===a?"Roadmap":"Architecture"}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Click a node for details and actions. Drag to rearrange — positions are saved."})]}),(0,d.jsxs)("dl",{className:"grid grid-cols-2 gap-2 text-center",children:[(0,d.jsx)(an,{label:"nodes",value:b.length}),(0,d.jsx)(an,{label:"critical",value:c})]})]})}function an({label:a,value:b}){return(0,d.jsxs)("div",{className:"rounded-md border border-border bg-card py-2",children:[(0,d.jsx)("div",{className:"text-lg font-semibold",children:b}),(0,d.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:a})]})}var ao=c(38476),ap=c(55805),aq=c(92994);let ar=[{value:"cluster",label:"Theme"},{value:"status",label:"Status"},{value:"priority",label:"Priority"}],as=new Set(["title","role","plain","cluster","status","priority"]),at={roadmapNode:S,archNode:S,annotation:s.Sh},au={deletable:U.I},av={CONTAINS:{stroke:"#7c7c8a"},DEPENDS:{stroke:"#f5b942",dash:"6 4"},RELATES:{stroke:"#8a8a95",dash:"4 4"},REPLACES:{stroke:"#ff6b9d"}};function aw({view:a,nodes:b,edges:c,workOnNextId:q=null,embedded:r=!1,commentsContent:t,commentsCount:u=0,controlRef:v,onAskAgent:w,onAddComment:x,annotations:y,onPinClick:z,onUpdateComment:A,onRemoveComment:B,boardAnnotations:C}){let D=(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,view:a.view,kind:a.kind,source:a.source,sourceRef:a.sourceRef,isCriterion:a.isCriterion,isChild:null!=a.parentId,parentId:a.parentId,signals:a.signals,openBugs:a.bugFlags.filter(a=>!a.resolved).length}})),[b]),E=(0,e.useMemo)(()=>{let a;return a=new Set(b.map(a=>a.id)),[...b.filter(b=>b.parentId&&a.has(b.parentId)).map(a=>({id:`c-${a.id}`,source:a.parentId,sourceHandle:"sb",target:a.id,targetHandle:"tt",type:"smoothstep",style:{stroke:av.CONTAINS.stroke}})),...c.filter(b=>a.has(b.fromId)&&a.has(b.toId)).map(a=>{let b=av[a.kind]??av.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]),[F,K]=(0,e.useState)(D),[L,N]=(0,e.useState)(E),[P,Q]=(0,e.useState)(null),[R,S]=(0,e.useState)(null),[U,V]=(0,e.useState)(null),[W,X]=(0,e.useState)(!1),[Y,Z]=(0,e.useState)("details");(0,e.useRef)(!1),(0,e.useRef)("details");let[$,_]=(0,e.useState)(new Set),[aa,ab]=(0,e.useState)(null),[ac,ad]=(0,e.useState)(!1),ae=(0,e.useRef)(0),af=(0,e.useRef)(null),ag=(0,e.useCallback)((a,b,c)=>{K(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])=>as.has(a))))})},[]),ah=(0,e.useMemo)(()=>Array.from(new Set(F.map(a=>a.data.cluster).filter(a=>!!a))).sort(),[F]),aj=(0,e.useCallback)(a=>_(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c}),[]),ak=(0,e.useCallback)(a=>{Q(a),X(!0),Z("details")},[]),al=(0,e.useCallback)(a=>{K(b=>b.filter(b=>b.id!==a)),Q(b=>b===a?null:b),fetch(`/api/nodes/${a}`,{method:"DELETE"})},[]),am=(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";K(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}}]),_(a=>new Set(a).add(e)),ab(e),Q(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{K(a=>a.filter(a=>a.id!==e)),_(a=>{let b=new Set(a);return b.delete(e),b}),ab(a=>a===e?null:a),Q(a=>a===e?null:a)}},[a]),an=(0,e.useCallback)(()=>{let a=ae.current++%8*28;am(80+a,80+a)},[am]),ax=(0,e.useCallback)(()=>{let a=ae.current++%8*28;am(80+a,80+a,"BUG")},[am]),ay=(0,e.useMemo)(()=>({view:a,categories:ah,statuses:"ARCHITECTURE"===a?H:G,patch:ag,isExpanded:a=>$.has(a),toggleExpand:aj,openDetailed:ak,removeNode:al,editingTitleId:aa,onAskAgent:w}),[a,ah,ag,$,aj,ak,al,aa,w]),[az,aA]=(0,e.useState)(null),[aB,aC]=(0,e.useState)(""),[aD,aE]=(0,e.useState)(new Set),[aF,aG]=(0,e.useState)(new Set),[aH,aI]=(0,e.useState)(new Set),aJ=(0,e.useMemo)(()=>Array.from(new Set(b.map(a=>a.status))),[b]),aK=(0,e.useMemo)(()=>Array.from(new Set(b.map(a=>a.cluster).filter(a=>!!a))).sort(),[b]),aL=(0,e.useMemo)(()=>Array.from(new Set(b.map(a=>a.priority))).sort((a,b)=>a-b),[b]),aM=(0,e.useCallback)(a=>(!aD.size||!!aD.has(a.status))&&(!aF.size||!!a.cluster&&!!aF.has(a.cluster))&&(!aH.size||!!aH.has(a.priority)),[aD,aF,aH]),aN=aD.size+aF.size+aH.size,aO=(0,e.useCallback)(()=>{aE(new Set),aG(new Set),aI(new Set)},[]),aP=(0,e.useMemo)(()=>F.map(a=>({...a,hidden:!aM(a.data)})),[F,aM]),aQ=(0,e.useMemo)(()=>new Set(aP.filter(a=>a.hidden).map(a=>a.id)),[aP]),aR=(0,e.useMemo)(()=>L.map(a=>({...a,hidden:aQ.has(a.source)||aQ.has(a.target)})),[L,aQ]),aS=(0,e.useMemo)(()=>{if(R){let a=aR.find(a=>a.id===R);return a?new Set([a.source,a.target]):null}return P?(0,ao.F1)(P,aR.filter(a=>!a.hidden)):null},[P,R,aR]),aT=(0,e.useMemo)(()=>aP.map(a=>{let b=q&&a.id===q?{...a,data:{...a.data,isNext:!0}}:a;return($.has(a.id)&&(b={...b,zIndex:25}),!aS||b.hidden)?b:{...b,style:{...b.style,opacity:aS.has(a.id)?1:.45,transition:"opacity 120ms"}}}),[aP,aS,q,$]),aU=(0,e.useMemo)(()=>{if(!az||"ROADMAP"!==a)return[];let b=new Map(aT.map(a=>[a.id,a])),c=new Map;for(let a of aT){var d;if(a.hidden)continue;let e=(d=((a.data.parentId?b.get(a.data.parentId):void 0)??a).data,"status"===az?J[d.status]?.label??d.status:"priority"===az?`P${d.priority}`:d.cluster?.trim()||"—"),f=a.measured?.width??(a.data.isChild?224:256),g=a.measured?.height??96,h=a.position.x,i=a.position.y,j=c.get(e);j?(j.minX=Math.min(j.minX,h),j.minY=Math.min(j.minY,i),j.maxX=Math.max(j.maxX,h+f),j.maxY=Math.max(j.maxY,i+g)):c.set(e,{label:e,minX:h,minY:i,maxX:h+f,maxY:i+g})}return Array.from(c.values()).map(a=>({label:a.label,x:a.minX-20,y:a.minY-20-26,w:a.maxX-a.minX+40,h:a.maxY-a.minY+40+26}))},[aT,az,a]),aV=(0,e.useMemo)(()=>{let a=P??U;return R||a?aR.map(b=>b.hidden?b:(R?b.id===R: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}}):aR.map(a=>a.hidden?a:{...a,label:void 0,style:{...a.style,opacity:.18}})},[aR,P,R,U]),aW=void 0!==C,[aX,aY]=(0,e.useState)(C??[]),aZ=(0,e.useMemo)(()=>{if(aW){let a=new Set(b.map(a=>a.id));return aX.filter(b=>"feature"===b.targetKind&&a.has(b.targetId)).map((a,b)=>({id:a.id,n:b+1,targetId:a.targetId,text:a.body,x:a.x,y:a.y}))}let a=new Map((y??[]).map(a=>[a.id,a.comment]));return(0,T.m)(y??[],{tables:[],features:b.map(a=>({id:a.id,title:a.title}))}).map(b=>({id:b.annotationId,n:b.n,targetId:b.targetId,text:a.get(b.annotationId)??"",x:null,y:null}))},[aW,aX,y,b]),a$=(0,e.useMemo)(()=>{let a=new Map;for(let b of aZ){let c=a.get(b.targetId)??[];c.push({id:b.id,n:b.n,column:null}),a.set(b.targetId,c)}return a},[aZ]),a_=(0,e.useCallback)(async a=>{let c=(0,T.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();aY(b=>[...b,a])}},[b]),a0=(0,e.useCallback)((a,b)=>{aY(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)})},[]),a1=(0,e.useCallback)(a=>{aY(b=>b.filter(b=>b.id!==a)),fetch(`/api/board-annotations/${a}`,{method:"DELETE"})},[]),a2=aW?a_:x,[a3,a4]=(0,e.useState)(()=>new Map),a5=(0,e.useMemo)(()=>{let a=new Map(aT.map(a=>[a.id,a])),b=new Map,c=aZ.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:a3.get(`anno-${c.id}`),draggable:aW,data:{n:c.n,text:c.text,annotationId:c.id,onClick:aW||A?void 0:z,editable:aW||!!A,onChangeText:aW?(a,b)=>a0(a,{body:b}):A,onDelete:aW?a1:B}}]});return[...aT.map(a=>{let b=a$.get(a.id);return b||a2?{...a,data:{...a.data,pins:b,onPinClick:aW?void 0:z,onComment:a2}}:a}),...c]},[aT,aZ,a$,aW,z,A,B,a2,a0,a1,a3]),a6=(0,e.useMemo)(()=>aZ.map(a=>({id:`annoe-${a.id}`,source:a.targetId,sourceHandle:`pin-${a.id}`,target:`anno-${a.id}`,targetHandle:"in",type:"default",selectable:!1,zIndex:30,style:{stroke:s.V5,strokeWidth:1.5,opacity:.9}})),[aZ]),a7=(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;aY(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&&a4(b=>{let d=b.get(c.id);if(d&&d.width===a.width&&d.height===a.height)return b;let e=new Map(b);return e.set(c.id,a),e})}else b.push(c);b.length&&K(a=>(0,h._0)(b,a))},[]),a8=(0,e.useCallback)(a=>N(b=>(0,h.zW)(a,b)),[]),a9=(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=av.DEPENDS;N(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}}])},[]),ba=(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();K(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}}]),N(a=>[...a,{id:`c-${f.id}`,source:b.id,target:f.id,type:"smoothstep",style:{stroke:av.CONTAINS.stroke}}]),_(a=>new Set(a).add(f.id)),ab(f.id),Q(f.id)},[a]),bb=(0,e.useCallback)(async(a,b)=>{if(b.isValid||!b.fromNode||!af.current)return;let c=a.changedTouches,d=c?.[0]?.clientX??a.clientX,e=c?.[0]?.clientY??a.clientY,{x:f,y:g}=af.current.screenToFlowPosition({x:d,y:e});await ba(b.fromNode,f,g)},[ba]),bc=(0,e.useMemo)(()=>b.find(a=>a.id===P)??null,[b,P]),bd=(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})})},[]),be=(0,e.useCallback)(a=>{Q(a),S(null);let b=af.current?.getNode(a);if(!b||!af.current)return;let c=b.measured?.width??128,d=b.measured?.height??48;af.current.setCenter(b.position.x+c/2,b.position.y+d/2,{zoom:1.2,duration:600})},[]),bf=(0,e.useCallback)(a=>{let b=function(a,b,c={}){let d=c.colW??320,e=c.rowH??150,f=c.childIndent??24,g=c.laneGap??56,h=c.bandGap??110,i=c.maxCols??4,j=c.maxBandW??6*d,k=new Set(a.map(a=>a.id)),l=a=>!a.parentId||!k.has(a.parentId),m=a.filter(l),n=new Map;for(let b of a){if(l(b))continue;let a=n.get(b.parentId);a?a.push(b):n.set(b.parentId,[b])}let o="status"===b?a=>a.status:"priority"===b?a=>String(a.priority):a=>(a.cluster??"").trim()||"—",p=new Map;for(let a of m){let b=o(a),c=p.get(b);c?c.push(a):p.set(b,[a])}let q=(function(a,b,c){if("status"===a)return[...I];if("priority"===a)return["0","1","2","3"];let d=Array.from(new Set(b.map(c))),e=d.filter(a=>"—"!==a).sort();return d.includes("—")?[...e,"—"]:e})(b,m,o).filter(a=>p.has(a)),r=new Map,s=0,t=0,u=0;for(let a of q){let b=p.get(a),c=Math.max(1,Math.min(i,Math.ceil(Math.sqrt(b.length)))),k=c*d;s>0&&s+k>j&&(s=0,t+=u+h,u=0);let l=Array(c).fill(0);for(let a of b){let b=0;for(let a=1;a<c;a++)l[a]<l[b]&&(b=a);let g=s+b*d,h=t+l[b]*e;r.set(a.id,{x:g,y:h});let i=n.get(a.id)??[];i.forEach((a,b)=>{r.set(a.id,{x:g+f,y:h+(b+1)*e})}),l[b]+=1+i.length}u=Math.max(u,l.reduce((a,b)=>Math.max(a,b),0)*e),s+=k+g}return r}(F.map(a=>({id:a.id,parentId:a.data.parentId??null,cluster:a.data.cluster,status:a.data.status,priority:a.data.priority})),a);K(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})}),aA(a),requestAnimationFrame(()=>af.current?.fitView({duration:600,padding:.2}))},[F]),bg=(0,e.useMemo)(()=>{let a=aB.trim().toLowerCase();return a?F.filter(b=>aM(b.data)&&b.data.title.toLowerCase().includes(a)).slice(0,8):[]},[F,aB,aM]);function bh(a,b){b(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})}return(0,d.jsx)(M.Provider,{value:ay,children:(0,d.jsxs)("div",{className:(0,O.cn)("canvas-dots relative w-full",r?"h-full":"h-screen"),onDragOver:a=>{a.dataTransfer.types.includes("application/beacon-node")&&(a.preventDefault(),a.dataTransfer.dropEffect="copy")},onDrop:a=>{if(!a.dataTransfer.getData("application/beacon-node")||!af.current)return;a.preventDefault();let{x:b,y:c}=af.current.screenToFlowPosition({x:a.clientX,y:a.clientY});am(b,c,"BUG"===a.dataTransfer.getData("application/beacon-node-kind")?"BUG":"FEATURE")},children:[(0,d.jsxs)(h.Gc,{nodes:a5,edges:[...aV,...a6],nodeTypes:at,edgeTypes:au,connectionMode:g.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onInit:a=>{af.current=a},onNodesChange:a7,onEdgesChange:a8,onConnect:a9,onConnectEnd:bb,onNodeMouseEnter:(a,b)=>V(b.id),onNodeMouseLeave:()=>V(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"}),Q(a=>a===b.id?null:a))},onNodeClick:(a,b)=>{if("annotation"===b.type)return void z?.(b.data.annotationId);if(ac){if(ad(!1),b.data.isChild)return;ba(b,b.position.x+300,b.position.y+60);return}if(Q(b.id),S(null),Z("details"),r){let b=a.target;b?.closest("input, textarea, select, button, [role='combobox']")||X(!0)}},onEdgeClick:(a,b)=>{S(b.id),Q(null),Z("details")},onPaneClick:()=>{ac?ad(!1):(Q(null),S(null))},onNodeDragStop:(a,b)=>{if(b.id.startsWith("anno-")){aW&&a0(b.id.slice(5),{x:b.position.x,y:b.position.y});return}bd(b.id,b.position.x,b.position.y)},deleteKeyCode:["Backspace","Delete"],colorMode:"dark",fitView:!0,minZoom:.2,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[aU.length>0&&(0,d.jsx)(h.DX,{children:aU.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:"rounded-2xl border border-white/[0.08] bg-white/[0.015]",children:(0,d.jsx)("div",{className:"px-3 py-1 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground/70",children:a.label})},a.label))}),(0,d.jsx)(h.H2,{position:"bottom-right",className:"!overflow-hidden !rounded-xl !border !border-white/10 [&_button]:!border-white/10 [&_button]:!bg-card/70 [&_button]:!text-foreground [&_button]:!backdrop-blur"}),(0,d.jsx)(h.Zk,{position:"bottom-right",style:{marginBottom:152},children:(0,d.jsx)(aq.er,{title:"Legend",trigger:(a,b)=>(0,d.jsx)("button",{type:"button",onClick:b,title:"Legend",className:(0,O.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",a?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,d.jsx)(i.A,{className:"size-4"})}),children:(0,d.jsxs)("ul",{className:"space-y-1.5 text-[10.5px] text-muted-foreground",children:[(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-sky-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"feature"}),(0,d.jsx)("span",{children:"top-level card \xb7 can have sub-tasks"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded bg-zinc-500/15 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-zinc-300",children:"sub-task"}),(0,d.jsx)("span",{children:"child of a feature"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-px w-6 bg-[#33333a]"}),(0,d.jsx)("span",{children:"contains \xb7 drag the bottom handle to empty canvas"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#f5b942"}}),(0,d.jsx)("span",{children:"depends on \xb7 drag between two cards"})]})]})})}),!r&&(0,d.jsx)(h.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!rounded-xl !border !border-white/10 !bg-card/50 !backdrop-blur",nodeColor:a=>a.data?.priority===0?"#ff3860":"#555"}),(0,d.jsxs)(h.Zk,{position:"bottom-center",className:"!mb-4 flex flex-col items-center gap-2",children:[ac&&(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"]}),"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"}),ar.map(a=>(0,d.jsx)("button",{onClick:()=>bf(a.value),title:`Arrange features into lanes by ${a.label.toLowerCase()}`,className:(0,O.cn)("h-7 rounded-full px-2.5 text-[11px] font-medium transition-colors",az===a.value?"bg-white/[0.12] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:a.label},a.value))]}),(0,d.jsxs)("div",{className:"glass flex items-center gap-1 rounded-full p-1",children:[(0,d.jsxs)("button",{onClick:an,draggable:!0,onDragStart:b=>{b.dataTransfer.setData("application/beacon-node",a),b.dataTransfer.effectAllowed="copy"},title:"ARCHITECTURE"===a?"Add component (click, or drag onto the board to place it)":"Add feature (click, or drag onto the board to place it)",className:"flex h-8 cursor-grab items-center gap-1.5 rounded-full px-3 text-[12px] font-medium text-foreground transition-colors hover:bg-white/[0.06] active:cursor-grabbing",children:[(0,d.jsx)(j.A,{className:"size-3.5 text-[var(--accent-2,#ff7a45)]"}),"ARCHITECTURE"===a?"Component":"Feature"]}),"ROADMAP"===a&&(0,d.jsxs)("button",{onClick:ax,draggable:!0,onDragStart:b=>{b.dataTransfer.setData("application/beacon-node",a),b.dataTransfer.setData("application/beacon-node-kind","BUG"),b.dataTransfer.effectAllowed="copy"},title:"Add bug (click, or drag onto the board to place it)",className:"flex h-8 cursor-grab items-center gap-1.5 rounded-full px-3 text-[12px] font-medium text-foreground transition-colors hover:bg-white/[0.06] active:cursor-grabbing",children:[(0,d.jsx)(k.A,{className:"size-3.5 text-rose-400"}),"Bug"]}),(0,d.jsx)("span",{"aria-hidden":!0,className:"mx-0.5 h-5 w-px bg-white/10"}),(0,d.jsxs)("button",{onClick:()=>ad(a=>!a),title:"ARCHITECTURE"===a?"Add sub-component (click a component next)":"Add sub-task (click a feature next)",className:(0,O.cn)("flex h-8 items-center gap-1.5 rounded-full px-3 text-[12px] font-medium transition-colors",ac?"bg-white/[0.1] text-foreground":"text-muted-foreground hover:bg-white/[0.06] hover:text-foreground"),children:[(0,d.jsx)(l.A,{className:"size-3.5"}),"ARCHITECTURE"===a?"Sub-component":"Sub-task"]})]})]}),!r&&(0,d.jsx)(h.Zk,{position:"top-center",className:"glass rounded-full px-1 py-0.5",children:(0,d.jsx)(ap.Z,{active:a,tabs:[{value:"ROADMAP",label:"Roadmap",href:"/map?view=ROADMAP"},{value:"ARCHITECTURE",label:"Architecture",href:"/map?view=ARCHITECTURE"},{value:"FILES",label:"Files",href:"/map?view=FILES"},{value:"DATABASE",label:"Database",href:"/map?view=DATABASE"}]})}),(0,d.jsxs)(h.Zk,{position:"top-right",className:(0,O.cn)("flex items-center gap-1 transition-[margin] duration-200",W&&"!mr-[332px]",r&&"hidden"),children:[(0,d.jsxs)(aq.er,{title:"Search",trigger:(a,b)=>(0,d.jsx)("button",{type:"button",onClick:b,title:"Search features",className:(0,O.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",a?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,d.jsx)(m.A,{className:"size-4"})}),children:[(0,d.jsx)("input",{autoFocus:!0,value:aB,onChange:a=>aC(a.target.value),placeholder:"Find a feature…",className:"w-full rounded-md border border-white/10 bg-white/[0.04] px-2 py-1 text-[12px] outline-none placeholder:text-muted-foreground/50 focus:bg-white/[0.08]"}),(0,d.jsxs)("div",{className:"mt-2 max-h-64 space-y-0.5 overflow-y-auto",children:[aB.trim()&&0===bg.length&&(0,d.jsx)("div",{className:"px-1 py-1 text-[11px] text-muted-foreground",children:"No matches"}),bg.map(a=>(0,d.jsx)("button",{type:"button",onClick:()=>be(a.id),className:"block w-full truncate rounded-md px-2 py-1 text-left text-[12px] text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:a.data.title},a.id))]})]}),"ROADMAP"===a&&q&&(0,d.jsx)("button",{type:"button",onClick:()=>be(q),title:"Jump to the next feature to work on",className:"glass flex size-8 items-center justify-center rounded-lg text-emerald-300 transition-colors hover:text-emerald-200",children:(0,d.jsx)(n.A,{className:"size-4"})}),(0,d.jsxs)(aq.er,{title:"Filters",trigger:(a,b)=>(0,d.jsxs)("button",{type:"button",onClick:b,title:"Filters",className:(0,O.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",a||aN>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,d.jsx)(o.A,{className:"size-4"}),aN>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:aN})]}),children:[aJ.length>0&&(0,d.jsx)(aq.r1,{title:"Status",children:aJ.map(a=>(0,d.jsx)(aq.vu,{on:aD.has(a),onClick:()=>bh(a,aE),children:J[a]?.label??a},a))}),aK.length>0&&(0,d.jsx)(aq.r1,{title:"Cluster",children:aK.map(a=>(0,d.jsx)(aq.vu,{on:aF.has(a),onClick:()=>bh(a,aG),children:a},a))}),aL.length>0&&(0,d.jsx)(aq.r1,{title:"Priority",children:aL.map(a=>(0,d.jsxs)(aq.vu,{on:aH.has(a),onClick:()=>bh(a,aI),children:["P",a]},a))}),aN>0&&(0,d.jsx)("button",{type:"button",onClick:aO,className:"mt-1 w-full rounded-md border border-white/10 px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:"clear filters"})]}),!W&&(0,d.jsx)("button",{onClick:()=>{X(!0),Z("details")},title:"Show panel",className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,d.jsx)(p.A,{className:"size-4"})})]})]}),W&&(0,d.jsx)(ai,{view:a,selected:bc,allNodes:b,onClose:()=>{X(!1),Z("details")},commentsContent:t,commentsCount:u,activeTab:Y,onTabChange:Z,onAddComment:a2,topOffset:r?64:void 0})]})})}},16189:(a,b,c)=>{c.d(b,{n:()=>e});var d=c(80941);async function e(a){let b=null;try{let{cookies:a}=await c.e(6042).then(c.bind(c,36042)),e=await a(),f=e.get(d.Dk)?.value??null;b=f&&(0,d.K4)(f)?f:null}catch{}return b&&await (0,d.kO)(b),(0,d.X_)(b,a)}},22443:(a,b,c)=>{c.r(b),c.d(b,{appSetting:()=>E,boardAnnotation:()=>r,bugFlag:()=>s,codeFile:()=>B,codeFileEdge:()=>C,dbColumn:()=>u,dbRelation:()=>v,dbTable:()=>t,draftColumn:()=>z,draftRelation:()=>A,draftTable:()=>y,edge:()=>o,endpoint:()=>w,endpointTable:()=>x,node:()=>l,nodeFile:()=>m,nodeTags:()=>p,note:()=>q,projectMeta:()=>F,syncState:()=>D,tag:()=>n});var d=c(16996),e=c(55402),f=c(76003),g=c(24267),h=c(3161),i=c(80822),j=c(96508),k=c(70202);let l=(0,d.D)("Node",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),view:(0,e.Qq)().notNull(),kind:(0,e.Qq)().default("FEATURE").notNull(),cluster:(0,e.Qq)(),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(),parentId:(0,e.Qq)(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.Pe)("Node_cluster_idx").on(a.cluster),(0,h.Pe)("Node_parentId_idx").on(a.parentId),(0,h.Pe)("Node_view_idx").on(a.view),(0,i.mt)(()=>({columns:[a.parentId],foreignColumns:[a.id],name:"Node_parentId_Node_id_fk"})).onUpdate("cascade").onDelete("cascade")]),m=(0,d.D)("NodeFile",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),nodeId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),path:(0,e.Qq)().notNull()},a=>[(0,h.GL)("NodeFile_nodeId_path_key").on(a.nodeId,a.path),(0,h.Pe)("NodeFile_nodeId_idx").on(a.nodeId)]),n=(0,d.D)("Tag",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),label:(0,e.Qq)().notNull(),color:(0,e.Qq)()},a=>[(0,h.GL)("Tag_label_key").on(a.label)]),o=(0,d.D)("Edge",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),fromId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),toId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),kind:(0,e.Qq)().default("DEPENDS").notNull(),label:(0,e.Qq)(),sourceHandle:(0,e.Qq)(),targetHandle:(0,e.Qq)()},a=>[(0,h.GL)("Edge_fromId_toId_kind_key").on(a.fromId,a.toId,a.kind),(0,h.Pe)("Edge_toId_idx").on(a.toId),(0,h.Pe)("Edge_fromId_idx").on(a.fromId)]),p=(0,d.D)("_NodeTags",{a:(0,e.Qq)("A").notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),b:(0,e.Qq)("B").notNull().references(()=>n.id,{onDelete:"cascade",onUpdate:"cascade"})},a=>[(0,h.GL)("_NodeTags_AB_unique").on(a.a,a.b),(0,h.Pe)("_NodeTags_B_index").on(a.b)]),q=(0,d.D)("Note",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),title:(0,e.Qq)().default("Untitled").notNull(),body:(0,e.Qq)().default("").notNull(),ord:(0,g.x)().default(0).notNull(),pinned:(0,f.nd)({mode:"boolean"}).default(!1).notNull(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.Pe)("Note_updatedAt_idx").on(a.updatedAt)]),r=(0,d.D)("BoardAnnotation",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),targetKind:(0,e.Qq)().notNull(),targetId:(0,e.Qq)().notNull(),columnName:(0,e.Qq)(),body:(0,e.Qq)().default("").notNull(),x:(0,g.x)(),y:(0,g.x)(),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)},a=>[(0,h.Pe)("BoardAnnotation_target_idx").on(a.targetId)]),s=(0,d.D)("BugFlag",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),nodeId:(0,e.Qq)().notNull().references(()=>l.id,{onDelete:"cascade",onUpdate:"cascade"}),by:(0,e.Qq)().notNull(),note:(0,e.Qq)().notNull(),resolvedAt:(0,f.nd)({mode:"timestamp_ms"}),createdAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date)},a=>[(0,h.Pe)("BugFlag_nodeId_idx").on(a.nodeId)]),t=(0,d.D)("DbTable",{id:(0,e.Qq)().primaryKey().$defaultFn(()=>(0,k.sX)()),name:(0,e.Qq)().notNull(),domain:(0,e.Qq)(),description:(0,e.Qq)(),source:(0,e.Qq)().default("MANUAL").notNull(),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(),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(),updatedAt:(0,f.nd)({mode:"timestamp_ms"}).notNull().$defaultFn(()=>new Date).$onUpdate(()=>new Date)})},26284:(a,b,c)=>{c.d(b,{$:()=>i});var d=c(48249),e=c(70813),f=c(21654),g=c(33191);let h=(0,f.F)("group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function i({className:a,variant:b="default",size:c="default",...f}){return(0,d.jsx)(e.Button,{"data-slot":"button",className:(0,g.cn)(h({variant:b,size:c,className:a})),...f})}},26905:(a,b,c)=>{},29303:(a,b,c)=>{c.a(a,async(a,b)=>{try{var d=c(62896);c(22443);var e=a([d]);d=(e.then?(await e)():e)[0],b()}catch(a){b(a)}})},32798:(a,b,c)=>{c.d(b,{m:()=>d});function d(a,b){let c=[];return a.forEach((a,d)=>{let e=a.excerpt.trim();if(!e)return;let f={annotationId:a.id,n:d+1};for(let a of b.tables){if(e===a.name)return void c.push({...f,kind:"table",targetId:a.id,column:null});if(e.startsWith(`${a.name}.`)){let b=e.slice(a.name.length+1);if(a.columns.includes(b))return void c.push({...f,kind:"column",targetId:a.id,column:b})}}for(let a of b.endpoints??[])if(e===`${a.method} ${a.path}`)return void c.push({...f,kind:"endpoint",targetId:a.id,column:null});for(let a of b.features??[])if(e===a.title||e===`feature: ${a.title}`)return void c.push({...f,kind:"feature",targetId:a.id,column:null})}),c}},38476:(a,b,c)=>{c.d(b,{F1:()=>h,e6:()=>f,qA:()=>e,ru:()=>g});let d={auth:"#4ea1ff",firms:"#c792ea",search:"#7bd389",storage:"#ffb86b",petitions:"#ff7a45",monitoring:"#f5b942",admin:"#ff6b9d"};function e(a){return a&&d[a]||"#8a8a8a"}let f={GET:"#7bd389",POST:"#4ea1ff",PUT:"#ffb86b",PATCH:"#ffb86b",DELETE:"#ff3860"},g={read:"#4ea1ff",write:"#ffb86b","read-write":"#c792ea"};function h(a,b){let c=new Set([a]);for(let d of b)d.source===a&&c.add(d.target),d.target===a&&c.add(d.source);return c}},50042:(a,b,c)=>{c(31421),c(77598),c(48161),c(76760),c(80941)},50320:(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)}})},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})}},52641:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{"401c5dcbda4f5183d28ca893c77ed3d2a9d45fefb6":()=>e.hY,"4027c2809699e746c9dc2d4de53fa4e02fc880143a":()=>e.pJ,"405b6297a013f25886facc6eec3f7c9b3f484d1704":()=>e.hg,"40aa1e7107fe3c8f957869f0e12efa617d22879e4c":()=>e.cl,"40eb685ebfe9863865881ba107a6d9f06ca48be7ed":()=>e.HQ,"608314f97341e28ae04ab4ab5ee7f6e9beb38a0460":()=>e.t3,"60a8bcbb7eb57e0d85ea4c6f2752198acafa0a560c":()=>e.Oz});var e=c(1110),f=a([e]);e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},55805:(a,b,c)=>{c.d(b,{Z:()=>m});var d=c(48249),e=c(2116),f=c.n(e),g=c(15996),h=c(41665),i=c(79602),j=c(36274),k=c(33191);let l={ROADMAP:g.A,ARCHITECTURE:h.A,FILES:i.A,DATABASE:j.A};function m({tabs:a,active:b}){return(0,d.jsx)("div",{className:"flex items-center gap-0.5",children:a.map(a=>{let c=a.value===b,e=a.Icon??l[a.value];return(0,d.jsxs)(f(),{href:a.href,className:(0,k.cn)("flex items-center gap-1.5 rounded-md px-2.5 py-1 text-[12px] font-medium tracking-tight transition-colors",c?"bg-white/10 text-foreground":"text-muted-foreground/80 hover:bg-white/5 hover:text-foreground"),children:[e?(0,d.jsx)(e,{className:"size-3"}):null,(0,d.jsx)("span",{children:a.label})]},a.value)})})}},58149:(a,b,c)=>{c(526)},58720:(a,b,c)=>{c.d(b,{Sh:()=>k,V5:()=>j,e0:()=>m});var d=c(48249),e=c(67484),f=c(56024),g=c(55030),h=c(45535),i=c(33191);let j="#ff7a45";function k({data:a,selected:b}){let[c,l]=(0,e.useState)(a.text);return(0,d.jsxs)("div",{onClick:()=>a.onClick?.(a.annotationId),className:(0,i.cn)("group/anno relative w-[270px] rounded-xl border border-white/10 bg-[#1b1b1e]/95 px-4 py-3 shadow-[0_18px_50px_-20px_rgba(0,0,0,0.9)] backdrop-blur transition-colors hover:border-white/20",!a.editable&&"cursor-pointer",b&&"border-[#ff7a45]/50"),children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute -left-px bottom-2 top-2 w-[3px] rounded-full",style:{background:j}}),(0,d.jsx)(f.h7,{type:"target",id:"in",position:g.yX.Top,isConnectable:!1,className:"!pointer-events-none !size-1 !min-h-0 !min-w-0 !border-0 !bg-transparent",style:{left:"auto",right:22,top:0}}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("div",{className:"font-mono text-[10px] font-semibold uppercase tracking-[0.22em]",style:{color:j},children:"Annotation \xb7 You"}),a.editable&&a.onDelete&&(0,d.jsx)("button",{type:"button",title:"Delete annotation",onClick:b=>{b.stopPropagation(),a.onDelete?.(a.annotationId)},className:"nodrag nopan -mr-1 rounded p-0.5 text-muted-foreground/60 opacity-0 transition-opacity hover:text-red-300 group-hover/anno:opacity-100",children:(0,d.jsx)(h.A,{className:"size-3"})})]}),a.editable?(0,d.jsx)("textarea",{value:c,autoFocus:!a.text.trim(),placeholder:"Type your annotation…",rows:Math.max(2,Math.min(6,c.split("\n").length)),onChange:a=>l(a.target.value),onBlur:()=>{c!==a.text&&a.onChangeText?.(a.annotationId,c)},onKeyDown:a=>a.stopPropagation(),className:"nodrag nopan mt-1.5 w-full resize-none bg-transparent text-[13px] leading-snug text-foreground/95 outline-none placeholder:text-muted-foreground/60"}):(0,d.jsx)("div",{className:"mt-1.5 text-[13px] leading-snug text-foreground/95",children:a.text.trim()?a.text:(0,d.jsx)("span",{className:"text-muted-foreground",children:"…"})})]})}function l({n:a,annotationId:b,onClick:c}){return(0,d.jsxs)("button",{type:"button",title:`Annotation ${a} — view comment`,onClick:a=>{a.stopPropagation(),c?.(b)},className:"nodrag nopan relative flex size-6 items-center justify-center rounded-full font-mono text-[11px] font-bold text-[#181818] shadow-[0_0_0_3px_rgba(255,122,69,0.22),0_0_16px_2px_rgba(255,122,69,0.4)] transition-transform hover:scale-110",style:{background:j},children:[a,(0,d.jsx)(f.h7,{type:"source",id:`pin-${b}`,position:g.yX.Bottom,isConnectable:!1,className:"!pointer-events-none !size-1 !min-h-0 !min-w-0 !border-0 !bg-transparent",style:{left:"50%",bottom:2}})]})}function m({pins:a,onPinClick:b}){return a.length?(0,d.jsx)("span",{className:"absolute -right-3 top-1/2 z-10 flex -translate-y-1/2 flex-row-reverse gap-1",children:a.map(a=>(0,d.jsx)(l,{n:a.n,annotationId:a.id,onClick:b},a.id))}):null}},60569:(a,b,c)=>{c(73024),c(76760),c(50042)},62896:(a,b,c)=>{c.a(a,async(a,d)=>{try{let l;c.d(b,{db:()=>r});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 m={...g,...h},n=(l=process.env.DATABASE_URL)&&/^(file:|libsql:|wss?:|https?:|:memory:)/i.test(l)?l:"file:./dev.db";function k(a){let b=(0,f.createClient)({url:a});return b.execute("PRAGMA foreign_keys = ON;"),(0,e.f)(b,{schema:m})}let o=globalThis,p=o.dzDefault??k(n),q=o.dzByUrl??=new Map,r=new Proxy({},{get(a,b){let c=function(){var a;let b;if(process.env.BEACON_REPO)return p;let c=(0,i.p1)()??(0,i.UP)();return c?(a=(0,i.Nx)(c),(b=q.get(a))||(b=k(a),q.set(a,b)),b):p}(),d=c[b];return"function"==typeof d?d.bind(c):d}});d()}catch(a){d(a)}})},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})}},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"})}))},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)}}}},82145:(a,b,c)=>{c.d(b,{I:()=>k});var d=c(48249),e=c(56024),f=c(55030),g=c(57684);function h(a){let{x:b,y:c}=a.internals.positionAbsolute,d=a.measured?.width??0,e=a.measured?.height??0;return{x:b,y:c,w:d,h:e,cx:b+d/2,cy:c+e/2}}function i(a,b){let c=h(a),d=h(b),e=c.w/2||1,f=c.h/2||1,g=(d.cx-c.cx)/(2*e)-(d.cy-c.cy)/(2*f),i=(d.cx-c.cx)/(2*e)+(d.cy-c.cy)/(2*f),j=1/(Math.abs(g)+Math.abs(i)||1);return{x:e*j*(g+i)+c.cx,y:f*j*(-g+i)+c.cy}}function j(a,b){let c=h(a),d=Math.round(b.x),e=Math.round(b.y);return d<=Math.round(c.x)+1?f.yX.Left:d>=Math.round(c.x+c.w)-1?f.yX.Right:e<=Math.round(c.y)+1?f.yX.Top:f.yX.Bottom}function k(a){let b,c,{deleteElements:h}=(0,e.VH)(),k=(0,e.JY)(a.source),l=(0,e.JY)(a.target),m=k&&l?(b=i(k,l),c=i(l,k),{sx:b.x,sy:b.y,tx:c.x,ty:c.y,sourcePos:j(k,b),targetPos:j(l,c)}):null,[n,o,p]=(0,f.Fp)(m?{sourceX:m.sx,sourceY:m.sy,sourcePosition:m.sourcePos,targetX:m.tx,targetY:m.ty,targetPosition:m.targetPos}:{sourceX:a.sourceX,sourceY:a.sourceY,sourcePosition:a.sourcePosition,targetX:a.targetX,targetY:a.targetY,targetPosition:a.targetPosition});return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(e.tE,{id:a.id,path:n,style:a.style,markerEnd:a.markerEnd,interactionWidth:20}),a.label&&(0,d.jsx)(e.rV,{children:(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -120%) translate(${o}px, ${p}px)`,fontSize:11,color:"#cfcfcf",background:"#161616",padding:"1px 4px",borderRadius:4,pointerEvents:"none"},children:a.label})}),a.selected&&(0,d.jsx)(e.rV,{children:(0,d.jsx)("div",{className:"nodrag nopan",style:{position:"absolute",transform:`translate(-50%, 0) translate(${o}px, ${p+14}px)`,pointerEvents:"all",zIndex:1e3},children:(0,d.jsx)("button",{type:"button",onMouseDown:a=>a.stopPropagation(),onClick:b=>{b.stopPropagation(),h({edges:[{id:a.id}]})},title:"Delete (or press Backspace)",className:"flex size-7 items-center justify-center rounded-full border border-white/20 bg-card/95 text-red-300 shadow-lg backdrop-blur-md transition-colors hover:bg-red-500/25 hover:text-red-200",children:(0,d.jsx)(g.A,{className:"size-3.5"})})})})]})}},84853:(a,b,c)=>{c.d(b,{G:()=>f,K:()=>g});var d=c(65573),e=c(6716);async function f(a){let b=(await (0,d.cookies)()).get(e.Dk)?.value;return(0,e.X_)(b&&(0,e.K4)(b)?b:null,a)}async function g(a){if(a&&(0,e.K4)(a))return a;let b=(await (0,d.cookies)()).get(e.Dk)?.value;return b&&(0,e.K4)(b)?b:null}},86925:(a,b,c)=>{c.d(b,{DbMapClient:()=>ae});var d=c(48249),e=c(67484),f=c(19099),g=c(56024),h=c(55030);c(71763);var i=c(49783),j=c(90165),k=c(89216),l=c(57684),m=c(45535),n=c(69473),o=c(33191),p=c(38476);let q=(0,e.createContext)(null);function r(){let a=(0,e.useContext)(q);if(!a)throw Error("useDbEdit must be used inside DbEditContext");return a}var s=c(1229),t=c(58720);let u={danger:"bg-red-500/15 text-red-300",warn:"bg-amber-500/15 text-amber-300"};function v({badges:a,className:b}){return a.length?(0,d.jsx)("span",{className:(0,o.cn)("flex shrink-0 items-center gap-0.5",b),children:a.map(a=>(0,d.jsx)("span",{title:a.title,className:(0,o.cn)("rounded px-1 text-[8px] font-semibold uppercase tracking-wide",u[a.tone]),children:a.label},a.label))}):null}let w=/pass(word)?|token|secret|api[_-]?key|credential|priv(ate)?[_-]?key|hash|salt/i,x=/auth|login|logout|session|token|password|oauth|sso|credential/i,y="nodrag nopan",z=s.x;function A({onClick:a,title:b}){return(0,d.jsx)("button",{type:"button",title:b,onClick:b=>{b.stopPropagation(),a()},className:(0,o.cn)(y,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover/row:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,d.jsx)(i.A,{className:"size-3"})})}function B({c:a,fkTargets:b}){let c=b?.[a.name];return(0,d.jsx)("span",{className:"ml-auto shrink-0 truncate font-mono text-[11px] text-muted-foreground/80",children:c?(0,d.jsxs)(d.Fragment,{children:["→\xa0",c]}):a.type})}let C="nodrag nopan",D=["GET","POST","PUT","PATCH","DELETE"];var E=c(32798),F=c(48779),G=c(26284);let H=[{id:"claude",label:"Prompt p/ Claude Code",fn:function(a){let b=["Implement this database schema in this project, following its existing stack and conventions:",""];for(let c of a.tables){let a=`Table \`${c.name}\``+(c.domain?` (domain: ${c.domain})`:"")+(c.description?` — ${c.description}`:"");for(let d of(b.push(a),c.columns)){let a=[d.isPk&&"PK",d.isFk&&"FK",!1===d.nullable&&"NOT NULL"].filter(Boolean).join(", ");b.push(` - ${d.name}: ${d.type}`+(a?` [${a}]`:"")+(d.note?` — ${d.note}`:""))}b.push("")}if(a.relations.length){for(let c of(b.push("Foreign keys:"),a.relations))b.push(` - ${c.fromTable}.${c.fromColumn} -> ${c.toTable}.${c.toColumn}`);b.push("")}return b.push("Create the models/migrations using the project's existing ORM and patterns, wire the relationships, and keep table and column names exactly as given."),b.join("\n")}},{id:"dbml",label:"DBML",fn:function(a){let b=[];for(let c of a.tables){for(let a of(b.push(`Table ${c.name} {`),c.columns)){let c=[a.isPk&&"pk",!1===a.nullable&&!a.isPk&&"not null",a.note&&`note: '${a.note.replace(/'/g,"")}'`].filter(Boolean).join(", ");b.push(` ${a.name} ${a.type}`+(c?` [${c}]`:""))}b.push("}","")}for(let c of a.relations)b.push(`Ref: ${c.fromTable}.${c.fromColumn} > ${c.toTable}.${c.toColumn}`);return b.join("\n").trim()}},{id:"sql",label:"SQL DDL",fn:function(a){let b=[];for(let c of a.tables){b.push(`CREATE TABLE ${c.name} (`);let d=c.columns.map(a=>{let b=[` ${a.name} ${a.type}`];return a.isPk?b.push("PRIMARY KEY"):!1===a.nullable&&b.push("NOT NULL"),b.join(" ")}),e=a.relations.filter(a=>a.fromTable===c.name).map(a=>` FOREIGN KEY (${a.fromColumn}) REFERENCES ${a.toTable}(${a.toColumn})`);b.push([...d,...e].join(",\n")),b.push(");","")}return b.join("\n").trim()}}];function I({draftGraph:a}){let[b,c]=(0,e.useState)(null);if(0===a.tables.length)return null;async function f(b){await navigator.clipboard.writeText(b.fn(a)).catch(()=>{}),c(b.id),setTimeout(()=>c(null),1500)}return(0,d.jsxs)("div",{className:"space-y-2 rounded-xl border border-sky-400/20 bg-sky-500/[0.04] p-3",children:[(0,d.jsxs)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-sky-300",children:["Rascunho \xb7 ",a.tables.length," tabelas"]}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,d.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:"copiar:"}),H.map(a=>(0,d.jsx)(G.$,{size:"sm",variant:"outline",className:"h-6 px-2 text-[11px]",onClick:()=>f(a),children:b===a.id?"✓":a.label},a.id))]})]})}function J({selected:a,tables:b,relations:c,endpoints:e,draftGraph:f,onClose:g,commentsContent:h,commentsCount:j=0,activeTab:k,onTabChange:l,onAddComment:n,topOffset:o}){let p,q,r=new Map(b.map(a=>[a.id,a.name])),s=!!h,t=k??"details",u=a?.kind==="table"?b.find(b=>b.id===a.id)?.name??null:a?.kind==="endpoint"&&(q=e.find(b=>b.id===a.id))?`${q.method} ${q.path}`:null;if(a?.kind==="table"){let f=b.find(b=>b.id===a.id);p=f?(0,d.jsx)(L,{table:f,relations:c,endpoints:e,nameById:r}):null}else if(a?.kind==="endpoint"){let b=e.find(b=>b.id===a.id);p=b?(0,d.jsx)(M,{ep:b,nameById:r}):null}else p=(0,d.jsx)(N,{tables:b,relations:c,endpoints:e});return(0,d.jsxs)(F.b,{className:"absolute bottom-3 right-3 z-10 flex w-80 flex-col rounded-2xl",style:{top:o??12},children:[s?(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-1 py-1",children:[(0,d.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,d.jsx)(K,{active:"details"===t,onClick:()=>l?.("details"),children:"Details"}),(0,d.jsxs)(K,{active:"comments"===t,onClick:()=>l?.("comments"),children:["Comments",j>0&&(0,d.jsx)("span",{className:"ml-1 rounded-full bg-white/10 px-1 text-[9px] font-semibold leading-4",children:j})]})]}),(0,d.jsx)("button",{onClick:g,title:"Close panel",className:"mr-1 rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(m.A,{className:"size-4"})})]}):(0,d.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,d.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Panel"}),(0,d.jsx)("button",{onClick:g,title:"Close panel",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,d.jsx)(m.A,{className:"size-4"})})]}),(0,d.jsx)("div",{className:"flex-1 overflow-y-auto",children:"comments"===t&&s?(0,d.jsx)("div",{className:"p-3",children:h}):(0,d.jsxs)(d.Fragment,{children:[f.tables.length>0&&(0,d.jsx)("div",{className:"border-b border-white/10 p-3.5",children:(0,d.jsx)(I,{draftGraph:f})}),(0,d.jsxs)("div",{className:"p-4",children:[n&&u&&(0,d.jsxs)("button",{type:"button",onClick:()=>n(u),className:"mb-3 flex w-full items-center justify-center gap-1.5 rounded-lg border border-white/10 bg-white/[0.03] px-3 py-1.5 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground",children:[(0,d.jsx)(i.A,{className:"size-3.5"}),"Comment on this ",a?.kind==="endpoint"?"endpoint":"table"]}),p]})]})})]})}function K({active:a,onClick:b,children:c}){return(0,d.jsx)("button",{type:"button",onClick:b,className:(0,o.cn)("flex items-center gap-1 rounded-md px-2.5 py-1 text-[11px] font-medium transition-colors",a?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:c})}function L({table:a,relations:b,endpoints:c,nameById:e}){let f=b.filter(b=>b.fromTableId===a.id),g=b.filter(b=>b.toTableId===a.id),h=c.map(b=>({e:b,u:b.tables.find(b=>b.tableId===a.id)})).filter(a=>a.u);return(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-xs uppercase tracking-wide",style:{color:(0,p.qA)(a.domain)},children:a.domain??"table"}),(0,d.jsx)("h2",{className:"font-mono text-lg font-semibold",children:a.name}),a.description&&(0,d.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:a.description})]}),(0,d.jsx)(O,{title:`Columns (${a.columns.length})`,children:(0,d.jsx)("ul",{className:"space-y-0.5",children:a.columns.map(a=>(0,d.jsxs)("li",{className:"flex items-center gap-1.5 text-xs",children:[a.isPk?(0,d.jsx)(j.A,{className:"size-3 text-amber-400"}):a.isFk?(0,d.jsx)(k.A,{className:"size-3 text-sky-400"}):(0,d.jsx)("span",{className:"size-3"}),(0,d.jsx)("span",{className:"font-mono",children:a.name}),(0,d.jsxs)("span",{className:"ml-auto font-mono text-[10px] text-muted-foreground",children:[a.type,!a.nullable&&" \xb7NN"]})]},a.name))})}),f.length>0&&(0,d.jsx)(O,{title:"References (FK out)",children:(0,d.jsx)("ul",{className:"space-y-1 text-xs",children:f.map(a=>(0,d.jsxs)("li",{className:"font-mono text-muted-foreground",children:[a.fromColumn," → ",e.get(a.toTableId),".",a.toColumn]},a.id))})}),g.length>0&&(0,d.jsx)(O,{title:"Referenced by (FK in)",children:(0,d.jsx)("ul",{className:"space-y-1 text-xs",children:g.map(a=>(0,d.jsxs)("li",{className:"font-mono text-muted-foreground",children:[e.get(a.fromTableId),".",a.fromColumn]},a.id))})}),h.length>0&&(0,d.jsx)(O,{title:`Used by endpoints (${h.length})`,children:(0,d.jsx)("ul",{className:"space-y-1 text-xs",children:h.map(({e:a,u:b})=>(0,d.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{style:{color:p.e6[a.method]},className:"font-bold",children:a.method}),(0,d.jsx)("span",{className:"truncate font-mono",children:a.path}),(0,d.jsx)("span",{className:"ml-auto",style:{color:p.ru[b.access]},children:b.access})]},a.id))})})]})}function M({ep:a,nameById:b}){return(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[11px] font-bold",style:{background:`${p.e6[a.method]}22`,color:p.e6[a.method]},children:a.method}),(0,d.jsx)("h2",{className:"mt-2 font-mono text-base font-semibold",children:a.path}),a.description&&(0,d.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:a.description})]}),(0,d.jsx)(O,{title:`Tables used (${a.tables.length})`,children:(0,d.jsx)("ul",{className:"space-y-1 text-xs",children:a.tables.map(a=>(0,d.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,d.jsx)("span",{className:"font-mono",children:b.get(a.tableId)}),(0,d.jsx)("span",{className:"ml-auto",style:{color:p.ru[a.access]},children:a.access})]},a.tableId))})})]})}function N({tables:a,relations:b,endpoints:c}){return(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-sm font-semibold",children:"Database"}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Live schema derived from your code. Click a table or endpoint to see details. Drag to rearrange — positions are saved."})]}),(0,d.jsxs)("dl",{className:"grid grid-cols-3 gap-2 text-center",children:[(0,d.jsx)(P,{label:"tables",value:a.length}),(0,d.jsx)(P,{label:"FKs",value:b.length}),(0,d.jsx)(P,{label:"endpoints",value:c.length})]}),(0,d.jsx)(O,{title:"Legend",children:(0,d.jsxs)("ul",{className:"space-y-1 text-xs text-muted-foreground",children:[(0,d.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,d.jsx)(j.A,{className:"size-3 text-amber-400"})," primary key"]}),(0,d.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,d.jsx)(k.A,{className:"size-3 text-sky-400"})," foreign key"]}),(0,d.jsx)("li",{children:"— gray line: FK relation between tables"}),(0,d.jsx)("li",{children:"– – dashed line: endpoint uses table (read/write)"})]})})]})}function O({title:a,children:b}){return(0,d.jsxs)("div",{children:[(0,d.jsx)("h3",{className:"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:a}),b]})}function P({label:a,value:b}){return(0,d.jsxs)("div",{className:"rounded-lg border border-white/10 bg-white/[0.03] py-2",children:[(0,d.jsx)("div",{className:"text-lg font-semibold",children:b}),(0,d.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:a})]})}var Q=c(92994),R=c(55805);let S=new Set(["GET","HEAD","OPTIONS"]),T=a=>a.trim().toLowerCase();var U=c(15828),V=c(30170),W=c(10920),X=c(95744),Y=c(10758),Z=c(69680),$=c(35471),_=c(82145);let aa={dbTable:function({id:a,data:b,selected:c}){var f;let g,h,i="DRAFT"===b.source,q="added"===b.diffStatus?"#7bd389":"modified"===b.diffStatus?"#ffb86b":"#4ea1ff",s="added"===b.diffStatus?"new":"modified"===b.diffStatus?"changed":"draft",u=b.diffChanges?.length?b.diffChanges.join("\n"):"draft",x=i?q:(0,p.qA)(b.domain),C=(f={domain:b.domain,columns:b.columns},g=[],(h=f.columns.filter(a=>w.test(a.name)).map(a=>a.name)).length&&g.push({label:"secrets",tone:"danger",title:`stores credentials: ${h.join(", ")}`}),f.domain&&/auth/i.test(f.domain)&&g.push({label:"auth",tone:"warn",title:"auth-domain table"}),g),D=r(),[E,F]=(0,e.useState)(b.name),[G,H]=(0,e.useState)(b.columns),[I,J]=(0,e.useState)(!1),K=a=>a.stopPropagation(),L=b=>{H(b),D.patchTable(a,{columns:b})},M=(b.pins??[]).filter(a=>null===a.column),N=a=>(b.pins??[]).filter(b=>b.column===a),O=(0,o.cn)("relative rounded-xl border bg-[#161618]/95 text-card-foreground shadow-[0_18px_50px_-22px_rgba(0,0,0,0.9)] backdrop-blur",c&&"ring-2 ring-[var(--accent,#f5b942)]");return i?(0,d.jsxs)("div",{className:(0,o.cn)(O,"group/card w-[252px]"),style:{borderColor:`${q}59`},children:[(0,d.jsx)(z,{}),(0,d.jsxs)("div",{className:"group/row relative flex items-center gap-1.5 rounded-t-[11px] px-3 py-2",style:{background:`${q}14`},children:[(0,d.jsx)("input",{value:E,onChange:a=>F(a.target.value),onBlur:()=>{let c=E.trim();c&&c!==b.name&&D.patchTable(a,{name:c})},onKeyDown:a=>{K(a),"Enter"===a.key&&a.currentTarget.blur()},placeholder:"table",className:(0,o.cn)(y,"min-w-0 flex-1 bg-transparent font-mono text-[13px] font-semibold tracking-tight outline-none")}),(0,d.jsx)(v,{badges:C}),(0,d.jsx)("span",{title:u,className:"shrink-0 rounded-md border px-1.5 py-px font-mono text-[9px] font-semibold uppercase tracking-[0.14em]",style:{background:`${q}1f`,borderColor:`${q}55`,color:q},children:s}),(0,d.jsx)("button",{type:"button",onClick:b=>{K(b),I?D.deleteTable(a):J(!0)},onBlur:()=>J(!1),title:"Delete table",className:(0,o.cn)(y,"shrink-0 transition-all",I?"text-red-300":"text-muted-foreground opacity-0 hover:text-red-300 group-hover/card:opacity-100"),children:(0,d.jsx)(l.A,{className:"size-3"})}),M.length>0?(0,d.jsx)(t.e0,{pins:M,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)(A,{title:`Comment on ${b.name}`,onClick:()=>b.onComment?.(b.name)})]}),(0,d.jsxs)("div",{className:"divide-y divide-white/[0.05]",children:[G.map((a,c)=>{let e=N(a.name);return(0,d.jsxs)("div",{className:"group/row relative flex items-center gap-1.5 px-3 py-[5px] text-[12px]",children:[(0,d.jsx)("button",{type:"button",onClick:a=>{K(a),L(G.map((a,b)=>b===c?{...a,isPk:!a.isPk}:a))},title:"Primary key",className:(0,o.cn)(y,"shrink-0",a.isPk?"text-amber-300/90":"text-muted-foreground/40 hover:text-amber-300"),children:(0,d.jsx)(j.A,{className:"size-3"})}),(0,d.jsx)("button",{type:"button",onClick:a=>{K(a),L(G.map((a,b)=>b===c?{...a,isFk:!a.isFk}:a))},title:"Foreign key",className:(0,o.cn)(y,"shrink-0",a.isFk?"text-sky-400/80":"text-muted-foreground/40 hover:text-sky-400"),children:(0,d.jsx)(k.A,{className:"size-3"})}),(0,d.jsx)("input",{value:a.name,onChange:a=>H(b=>b.map((b,d)=>d===c?{...b,name:a.target.value}:b)),onBlur:()=>L(G),onKeyDown:K,placeholder:"column",className:(0,o.cn)(y,"min-w-0 flex-1 bg-transparent font-mono outline-none")}),b.fkTargets?.[a.name]?(0,d.jsxs)("span",{className:"w-16 shrink-0 truncate text-right font-mono text-[11px] text-muted-foreground/80",children:["→\xa0",b.fkTargets[a.name]]}):(0,d.jsx)("input",{value:a.type,onChange:a=>H(b=>b.map((b,d)=>d===c?{...b,type:a.target.value}:b)),onBlur:()=>L(G),onKeyDown:K,placeholder:"type",className:(0,o.cn)(y,"w-16 shrink-0 bg-transparent text-right font-mono text-[11px] text-muted-foreground/80 outline-none")}),(0,d.jsx)("button",{type:"button",onClick:a=>{K(a),L(G.filter((a,b)=>b!==c))},title:"Remove column",className:(0,o.cn)(y,"shrink-0 text-muted-foreground/40 opacity-0 transition-opacity hover:text-red-300 group-hover/card:opacity-100"),children:(0,d.jsx)(m.A,{className:"size-3"})}),e.length>0?(0,d.jsx)(t.e0,{pins:e,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)(A,{title:`Comment on ${b.name}.${a.name}`,onClick:()=>b.onComment?.(`${b.name}.${a.name}`)})]},c)}),(0,d.jsxs)("button",{type:"button",onClick:a=>{K(a),L([...G,{name:"",type:"text",isPk:!1,isFk:!1,nullable:!0,note:null}])},className:(0,o.cn)(y,"flex w-full items-center gap-1 px-3 py-1.5 text-[10px] text-muted-foreground hover:text-foreground"),children:[(0,d.jsx)(n.A,{className:"size-3"})," column"]})]})]}):(0,d.jsxs)("div",{className:(0,o.cn)(O,"w-[240px]"),style:{borderColor:`${x}3d`},children:[(0,d.jsx)(z,{}),(0,d.jsxs)("div",{className:"group/row relative flex items-center justify-between rounded-t-[11px] px-3 py-2",style:{background:`${x}14`},children:[(0,d.jsxs)("span",{className:"flex items-center gap-1.5 font-mono text-[13px] font-semibold tracking-tight",children:["INTROSPECTION"===b.source&&(0,d.jsx)("span",{title:"live — derived from your code",className:"inline-block size-1.5 rounded-full bg-emerald-400"}),b.name]}),(0,d.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,d.jsx)(v,{badges:C}),b.domain&&(0,d.jsx)("span",{className:"text-[9px] uppercase tracking-[0.14em]",style:{color:x},children:b.domain})]}),M.length>0?(0,d.jsx)(t.e0,{pins:M,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)(A,{title:`Comment on ${b.name}`,onClick:()=>b.onComment?.(b.name)})]}),(0,d.jsx)("div",{className:"divide-y divide-white/[0.05]",children:b.columns.map(a=>{let c=N(a.name);return(0,d.jsxs)("div",{className:"group/row relative flex items-center gap-2 px-3 py-[7px] text-[12px]",children:[a.isPk?(0,d.jsx)(j.A,{className:"size-3 shrink-0 text-amber-300/90"}):a.isFk?(0,d.jsx)(k.A,{className:"size-3 shrink-0 text-sky-400/80"}):(0,d.jsx)("span",{className:"size-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate font-mono",children:a.name}),(0,d.jsx)(B,{c:a,fkTargets:b.fkTargets}),c.length>0?(0,d.jsx)(t.e0,{pins:c,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)(A,{title:`Comment on ${b.name}.${a.name}`,onClick:()=>b.onComment?.(`${b.name}.${a.name}`)})]},a.name)})})]})},endpoint:function({id:a,data:b,selected:c}){var f;let g,h=p.e6[b.method]??"#8a8a8a",j="DRAFT"===b.source,k="added"===b.diffStatus?"#7bd389":"modified"===b.diffStatus?"#ffb86b":"#4ea1ff",m="added"===b.diffStatus?"new":"modified"===b.diffStatus?"changed":"draft",n=b.diffChanges?.length?b.diffChanges.join("\n"):"draft",q=(f={method:b.method,domain:b.domain,path:b.path},g=[],/^delete$/i.test(f.method.trim())&&g.push({label:"DELETE",tone:"danger",title:"destructive: deletes data"}),(f.domain&&/auth/i.test(f.domain)||x.test(f.path))&&g.push({label:"auth",tone:"warn",title:"auth-related endpoint"}),g),u=r(),[w,y]=(0,e.useState)(b.path),[z,A]=(0,e.useState)(!1),B=a=>a.stopPropagation();return(0,d.jsxs)("div",{className:(0,o.cn)("group relative flex w-[240px] items-center gap-2 rounded-lg border bg-[#161618]/95 px-2.5 py-1.5 text-card-foreground shadow-[0_12px_36px_-18px_rgba(0,0,0,0.9)] backdrop-blur",j?"border-dashed":"border-white/10",c&&"ring-2 ring-[var(--accent,#f5b942)]"),style:j?{borderColor:`${k}66`,background:`${k}0f`}:void 0,children:[(0,d.jsx)(s.x,{}),"INTROSPECTION"===b.source&&(0,d.jsx)("span",{title:"live — derived from your code",className:"inline-block size-1.5 shrink-0 rounded-full bg-emerald-400"}),j?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("select",{value:b.method,onChange:b=>u.patchEndpoint(a,{method:b.target.value}),onPointerDown:B,className:(0,o.cn)(C,"shrink-0 rounded bg-transparent text-[10px] font-bold outline-none"),style:{color:h},title:"Method",children:D.map(a=>(0,d.jsx)("option",{value:a,className:"bg-card text-foreground",children:a},a))}),(0,d.jsx)("input",{value:w,onChange:a=>y(a.target.value),onBlur:()=>{let c=w.trim();c&&c!==b.path&&u.patchEndpoint(a,{path:c})},onKeyDown:a=>{B(a),"Enter"===a.key&&a.currentTarget.blur()},className:(0,o.cn)(C,"min-w-0 flex-1 bg-transparent font-mono text-[11px] outline-none")}),(0,d.jsx)(v,{badges:q}),(0,d.jsx)("span",{title:n,className:"shrink-0 rounded px-1 py-0.5 text-[8px] font-semibold uppercase",style:{background:`${k}26`,color:k},children:m}),(0,d.jsx)("button",{type:"button",onClick:b=>{B(b),z?u.deleteEndpoint(a):A(!0)},onBlur:()=>A(!1),title:"Delete",className:(0,o.cn)(C,"shrink-0 transition-colors",z?"text-red-300":"text-muted-foreground hover:text-red-300"),children:(0,d.jsx)(l.A,{className:"size-3"})})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[10px] font-bold",style:{background:`${h}22`,color:h},children:b.method}),(0,d.jsx)("span",{className:"min-w-0 flex-1 truncate font-mono text-[11px]",children:b.path}),(0,d.jsx)(v,{badges:q}),(0,d.jsx)("button",{type:"button",onClick:b=>{B(b),z?u.deleteRealEndpoint(a):A(!0)},onBlur:()=>A(!1),title:z?"Click again to delete":"Delete endpoint",className:(0,o.cn)(C,"shrink-0 opacity-0 transition-opacity group-hover:opacity-100",z?"text-red-300 opacity-100":"text-muted-foreground hover:text-red-300"),children:(0,d.jsx)(l.A,{className:"size-3"})})]}),(b.pins?.length??0)>0?(0,d.jsx)(t.e0,{pins:b.pins,onPinClick:b.onPinClick}):b.onComment&&(0,d.jsx)("button",{type:"button",title:`Comment on ${b.method} ${b.path}`,onClick:a=>{B(a),b.onComment?.(`${b.method} ${b.path}`)},className:(0,o.cn)(C,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,d.jsx)(i.A,{className:"size-3"})})]})},annotation:t.Sh},ab={deletable:_.I},ac="beacon:db-draft",ad={proposedAt:0,status:"pending",tables:[],relations:[],endpoints:[]};function ae({tables:a,relations:b,endpoints:c,draft:i,workspaceId:j,embedded:k=!1,draftRef:m,onEdit:n,controlRef:r,commentsContent:s,commentsCount:u=0,onAddComment:v,annotations:w,onPinClick:x,onUpdateComment:y,onRemoveComment:z,boardAnnotations:A}){let B=(0,f.useRouter)(),[C,D]=(0,e.useState)(!0),[F,G]=(0,e.useState)(null),[H,I]=(0,e.useState)(null),[K,L]=(0,e.useState)(null),[M,N]=(0,e.useState)(!1),[O,P]=(0,e.useState)("details"),[_,af]=(0,e.useState)(!1),[ag,ah]=(0,e.useState)(new Set),[ai,aj]=(0,e.useState)(new Set),[ak,al]=(0,e.useState)(new Set),[am,an]=(0,e.useState)(()=>({past:[],present:i??ad,future:[],rev:0,edited:!1})),ao=am.present,ap=(0,e.useCallback)(a=>{an(b=>{let c=a(b.present);return c===b.present?b:{past:[...b.past,b.present].slice(-100),present:c,future:[],rev:b.rev+1,edited:!0}})},[]),aq=(0,e.useCallback)(a=>{an(b=>{let c=a(b.present);return c===b.present?b:{...b,present:c}})},[]),ar=(0,e.useCallback)(()=>an(a=>a.past.length?{past:a.past.slice(0,-1),present:a.past[a.past.length-1],future:[a.present,...a.future],rev:a.rev+1,edited:!0}:a),[]),as=(0,e.useCallback)(()=>an(a=>a.future.length?{past:[...a.past,a.present],present:a.future[0],future:a.future.slice(1),rev:a.rev+1,edited:!0}:a),[]),at=(0,e.useCallback)(a=>an(b=>({past:[],present:a,future:[],rev:b.rev+1,edited:!1})),[]);(0,e.useRef)(!1),i?.proposedAt,(0,e.useRef)(!1);let au=(0,e.useMemo)(()=>ao.tables.map(a=>({id:a.id,name:a.name,domain:a.domain,description:a.description,source:"DRAFT",x:a.x,y:a.y,columns:a.columns})),[ao]),av=(0,e.useMemo)(()=>ao.endpoints.map(a=>({id:a.id,method:a.method,path:a.path,domain:a.domain,description:a.description,source:"DRAFT",x:a.x,y:a.y,tables:a.links.map(a=>({tableId:a.tableId,access:a.access}))})),[ao]),aw=(0,e.useMemo)(()=>[...a,...au],[a,au]),ax=(0,e.useMemo)(()=>[...c,...av],[c,av]),ay=(0,e.useMemo)(()=>new Map,[]),az=(0,e.useMemo)(()=>k?function(a,b){let c=new Map(a.map(a=>[T(a.name),a])),d=new Map;for(let a of b){let b=c.get(T(a.name));if(!b){d.set(a.id,{status:"added",changes:["new table"]});continue}let e=function(a,b){let c=new Map(a.map(a=>[T(a.name),a])),d=new Set(b.map(a=>T(a.name))),e=[];for(let a of b){let b=c.get(T(a.name));if(!b){e.push(`+ column ${a.name} (${a.type})`);continue}let d=[];T(b.type)!==T(a.type)&&d.push(`type ${b.type}→${a.type}`),b.isPk!==a.isPk&&d.push(a.isPk?"now PK":"no longer PK"),b.isFk!==a.isFk&&d.push(a.isFk?"now FK":"no longer FK"),b.nullable!==a.nullable&&d.push(a.nullable?"now nullable":"now required"),d.length&&e.push(`~ column ${a.name}: ${d.join(", ")}`)}for(let b of a)d.has(T(b.name))||e.push(`- column ${b.name}`);return e}(b.columns,a.columns);d.set(a.id,{status:e.length?"modified":"unchanged",changes:e})}return d}(a,au):ay,[k,a,au,ay]),aA=(0,e.useMemo)(()=>k?function(a,b){let c=a=>`${T(a.method)} ${T(a.path)}`,d=new Set(a.map(c)),e=new Map;for(let a of b)e.set(a.id,d.has(c(a))?{status:"unchanged",changes:[]}:{status:"added",changes:["new endpoint"]});return e}(c,av):ay,[k,c,av,ay]),aB=(0,e.useMemo)(()=>[...b,...ao.relations.map(a=>({id:a.id,fromTableId:a.fromTableId,toTableId:a.toTableId,fromColumn:a.fromColumn,toColumn:a.toColumn,label:a.label}))],[b,ao.relations]),aC=(0,e.useMemo)(()=>{let a=new Map;for(let b of ax)for(let c of b.tables)a.set(c.tableId,(a.get(c.tableId)??0)+1);return a},[ax]),aD=(0,e.useMemo)(()=>{let a=new Map;return aw.forEach(b=>a.set(b.id,b.x)),ax.forEach(b=>a.set(b.id,b.x)),a},[aw,ax]),aE=(0,e.useMemo)(()=>{let a=new Map(aw.map(a=>[a.id,a.name])),b=new Map;for(let c of aB){let d=a.get(c.toTableId);if(!d)continue;let e=b.get(c.fromTableId)??{};e[c.fromColumn]=d,b.set(c.fromTableId,e)}return b},[aB,aw]),aF=void 0!==A,[aG,aH]=(0,e.useState)(A??[]),aI=(0,e.useMemo)(()=>({tables:aw.map(a=>({id:a.id,name:a.name,columns:a.columns.map(a=>a.name)})),endpoints:ax.map(a=>({id:a.id,method:a.method,path:a.path}))}),[aw,ax]),aJ=(0,e.useMemo)(()=>{if(aF){let a=new Set([...aw.map(a=>a.id),...ax.map(a=>a.id)]);return aG.filter(b=>a.has(b.targetId)).map((a,b)=>({id:a.id,n:b+1,targetId:a.targetId,column:a.columnName,text:a.body,x:a.x,y:a.y}))}let a=new Map((w??[]).map(a=>[a.id,a.comment]));return(0,E.m)(w??[],aI).map(b=>({id:b.annotationId,n:b.n,targetId:b.targetId,column:b.column,text:a.get(b.annotationId)??"",x:null,y:null}))},[aF,aG,w,aI,aw,ax]),aK=(0,e.useMemo)(()=>{let a=new Map;for(let b of aJ){let c=a.get(b.targetId)??[];c.push({id:b.id,n:b.n,column:b.column}),a.set(b.targetId,c)}return a},[aJ]),aL=(0,e.useMemo)(()=>new Map(aJ.map(a=>[`anno-${a.id}`,a.targetId])),[aJ]),aM=(0,e.useCallback)(async a=>{let b=(0,E.m)([{id:"_",excerpt:a}],aI)[0];if(!b)return;let c=await fetch("/api/board-annotations",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({targetKind:b.kind,targetId:b.targetId,columnName:b.column??void 0})});if(c.ok){let a=await c.json();aH(b=>[...b,a])}},[aI]),aN=(0,e.useCallback)((a,b)=>{aH(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)})},[]),aO=(0,e.useCallback)(a=>{aH(b=>b.filter(b=>b.id!==a)),fetch(`/api/board-annotations/${a}`,{method:"DELETE"})},[]),aP=aF?aM:v,aQ=(0,e.useCallback)((a,b)=>(aD.get(a)??0)<=(aD.get(b)??0)?{sourceHandle:"sr",targetHandle:"tl"}:{sourceHandle:"sl",targetHandle:"tr"},[aD]),aR=(0,e.useMemo)(()=>new Set([...ao.tables.map(a=>a.id),...ao.endpoints.map(a=>a.id)]),[ao]),aS=(0,e.useMemo)(()=>new Set(a.map(a=>a.id)),[a]),aT=(0,e.useCallback)(()=>{let a=aw.map(a=>({id:a.id,type:"dbTable",position:{x:a.x,y:a.y},data:{name:a.name,domain:a.domain,columns:a.columns,usageCount:aC.get(a.id)??0,source:a.source,rev:am.rev,diffStatus:az.get(a.id)?.status,diffChanges:az.get(a.id)?.changes,fkTargets:aE.get(a.id),pins:aK.get(a.id),onPinClick:x,onComment:aP}})),b=ax.map(a=>({id:a.id,type:"endpoint",position:{x:a.x,y:a.y},data:{method:a.method,path:a.path,domain:a.domain,source:a.source,rev:am.rev,diffStatus:aA.get(a.id)?.status,diffChanges:aA.get(a.id)?.changes,pins:aK.get(a.id),onPinClick:x,onComment:aP}})),c=new Map,d=new Map(aw.map(a=>[a.id,a])),e=new Map(ax.map(a=>[a.id,a]));return[...a,...b,...aJ.map(a=>{let b=d.get(a.targetId),f=e.get(a.targetId),g=b?.x??f?.x??0,h=b?.y??f?.y??0,i=b?38+28*b.columns.length:42,j=c.get(a.targetId)??0;return c.set(a.targetId,j+1),{id:`anno-${a.id}`,type:"annotation",position:{x:a.x??g+26,y:a.y??h+i+64+112*j},data:{n:a.n,text:a.text,annotationId:a.id,onClick:aF||y?void 0:x,editable:aF||!!y,onChangeText:aF?(a,b)=>aN(a,{body:b}):y,onDelete:aF?aO:z}}})]},[aw,ax,aC,am.rev,az,aA,aE,aK,aJ,aF,x,y,z,aP,aN,aO]),[aU,aV,aW]=(0,g.ck)(aT()),aX=(0,e.useCallback)((a,b,c,d)=>{fetch("/api/db/position",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({kind:a,id:b,x:c,y:d})})},[]),aY=(0,e.useCallback)((a,b)=>{let{x:c,y:d}=b.position;if(b.id.startsWith("anno-")){aF&&aN(b.id.slice(5),{x:c,y:d});return}aR.has(b.id)?aq(a=>a.tables.some(a=>a.id===b.id)?{...a,tables:a.tables.map(a=>a.id===b.id?{...a,x:c,y:d}:a)}:a.endpoints.some(a=>a.id===b.id)?{...a,endpoints:a.endpoints.map(a=>a.id===b.id?{...a,x:c,y:d}:a)}:a):aX("endpoint"===b.type?"endpoint":"table",b.id,c,d)},[aR,aq,aX,aF,aN]),aZ=(0,e.useMemo)(()=>aB.map(a=>({id:`fk-${a.id}`,source:a.fromTableId,target:a.toTableId,...aQ(a.fromTableId,a.toTableId),type:"deletable",label:a.label??void 0,markerEnd:{type:h.TG.ArrowClosed,color:"#6b6b6b"},style:{stroke:"#6b6b6b"}})),[aB,aQ]),a$=(0,e.useMemo)(()=>ax.flatMap(a=>a.tables.map(b=>{let c=p.ru[b.access]??"#5a5a5a";return{id:`u-${a.id}-${b.tableId}`,source:a.id,target:b.tableId,...aQ(a.id,b.tableId),type:"default",markerEnd:{type:h.TG.ArrowClosed,color:c},style:{stroke:c,strokeDasharray:"4 4",opacity:.7}}})),[ax,aQ]),a_=(0,e.useMemo)(()=>C?[...aZ,...a$]:aZ,[aZ,a$,C]),a0=(0,e.useMemo)(()=>aJ.map(a=>({id:`annoe-${a.id}`,source:a.targetId,sourceHandle:`pin-${a.id}`,target:`anno-${a.id}`,targetHandle:"in",type:"default",selectable:!1,zIndex:30,style:{stroke:t.V5,strokeWidth:1.5,opacity:.9}})),[aJ]),a1=F?.id??K,a2=(0,e.useMemo)(()=>{if(H){let a=a_.find(a=>a.id===H);return a?new Set([a.source,a.target]):null}return a1?(0,p.F1)(a1,a_):null},[a1,H,a_]),a3=(0,e.useMemo)(()=>new Map(aw.map(a=>[a.id,{domain:a.domain,source:a.source}])),[aw]),a4=(0,e.useMemo)(()=>new Map(ax.map(a=>[a.id,{method:a.method,source:a.source}])),[ax]),a5=(0,e.useMemo)(()=>{let a=new Set;if(!C)for(let b of a4.keys())a.add(b);for(let[b,c]of a3)!ag.size||c.domain&&ag.has(c.domain)||a.add(b),ai.size&&!ai.has(c.source)&&a.add(b);for(let[b,c]of a4)ak.size&&!ak.has(c.method)&&a.add(b),ai.size&&!ai.has(c.source)&&a.add(b);return a},[C,a3,a4,ag,ai,ak]),a6=(0,e.useMemo)(()=>aU.map(a=>{if(a.id.startsWith("anno-")){let b=aL.get(a.id),c=!!b&&a5.has(b);return!!a.hidden!==c?{...a,hidden:c}:a}let b=a5.has(a.id);return a2?{...a,hidden:b,style:{...a.style,opacity:a2.has(a.id)?1:.45,transition:"opacity 120ms"}}:b?{...a,hidden:b}:a}),[aU,a5,a2,aL]),a7=(0,e.useMemo)(()=>a_.map(a=>{let b=a5.has(a.source)||a5.has(a.target);return a1||H?(H?a.id===H:a1&&(a.source===a1||a.target===a1))?{...a,hidden:b,zIndex:20,style:{...a.style,opacity:1,strokeWidth:2.5}}:{...a,hidden:b,selectable:!1,label:void 0,markerEnd:void 0,style:{...a.style,opacity:.08}}:b?{...a,hidden:b}:a}),[a_,a1,H,a5]),a8=(0,e.useMemo)(()=>Array.from(new Set(aw.map(a=>a.domain).filter(a=>!!a))).sort(),[aw]),a9=(0,e.useMemo)(()=>Array.from(new Set([...aw.map(a=>a.source),...ax.map(a=>a.source)])).sort(),[aw,ax]),ba=(0,e.useMemo)(()=>Array.from(new Set(ax.map(a=>a.method))).sort(),[ax]);function bb(a,b){b(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})}let bc=+!C+ag.size+ai.size+ak.size,bd=(0,e.useCallback)(()=>{D(!0),ah(new Set),aj(new Set),al(new Set)},[]),be=(0,e.useCallback)(a=>{let{source:b,target:c}=a;b&&c&&b!==c&&ap(a=>{if(!(a.tables.some(a=>a.id===c)||aS.has(c)))return a;let d=a.endpoints.find(a=>a.id===b);return d?d.links.some(a=>a.tableId===c)?a:{...a,endpoints:a.endpoints.map(a=>{var d;return a.id===b?{...a,links:[...a.links,{tableId:c,access:(d=a.method,S.has(d.trim().toUpperCase())?"read":"write")}]}:a})}:a.tables.find(a=>a.id===b)?a.relations.some(a=>a.fromTableId===b&&a.toTableId===c)?a:{...a,relations:[...a.relations,{id:crypto.randomUUID(),fromTableId:b,toTableId:c,fromColumn:"fk",toColumn:"id",label:null}]}:a})},[ap,aS]),bf=(0,e.useMemo)(()=>({patchEndpoint:(a,b)=>ap(c=>({...c,endpoints:c.endpoints.map(c=>c.id===a?{...c,...b}:c)})),deleteEndpoint:a=>ap(b=>({...b,endpoints:b.endpoints.filter(b=>b.id!==a)})),patchTable:(a,b)=>ap(c=>({...c,tables:c.tables.map(c=>c.id===a?{...c,...b}:c)})),deleteTable:a=>ap(b=>({...b,tables:b.tables.filter(b=>b.id!==a),relations:b.relations.filter(b=>b.fromTableId!==a&&b.toTableId!==a),endpoints:b.endpoints.map(b=>({...b,links:b.links.filter(b=>b.tableId!==a)}))})),deleteRealEndpoint:a=>{fetch(`/api/endpoints/${a}`,{method:"DELETE"}).then(a=>{a.ok&&B.refresh()})}}),[ap,B]),bg=(0,e.useCallback)(async()=>{af(!0);try{if((await fetch("/api/draft/approve",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(ao)})).ok){try{localStorage.removeItem(ac)}catch{}at(ad),B.refresh()}}finally{af(!1)}},[ao,at,B]),bh=(0,e.useCallback)(async()=>{af(!0);try{await fetch("/api/draft",{method:"DELETE"})}catch{}try{localStorage.removeItem(ac)}catch{}at(ad),B.refresh(),af(!1)},[at,B]),bi=(0,e.useMemo)(()=>{let a;return a=new Map(ao.tables.map(a=>[a.id,a.name])),{tables:ao.tables.map(a=>({name:a.name,domain:a.domain,description:a.description,columns:a.columns.map(a=>({name:a.name,type:a.type,isPk:a.isPk,isFk:a.isFk,nullable:a.nullable,note:a.note}))})),relations:ao.relations.flatMap(b=>{let c=a.get(b.fromTableId),d=a.get(b.toTableId);return c&&d?[{fromTable:c,fromColumn:b.fromColumn,toTable:d,toColumn:b.toColumn,label:b.label}]:[]}),endpoints:ao.endpoints.map(b=>({method:b.method,path:b.path,domain:b.domain,description:b.description,uses:b.links.flatMap(b=>{let c=a.get(b.tableId);return c?[{table:c,access:b.access}]:[]})}))}},[ao]),bj=ao.tables.length>0||ao.endpoints.length>0,bk=am.past.length>0,bl=am.future.length>0;return(0,d.jsx)(q.Provider,{value:bf,children:(0,d.jsxs)("div",{className:(0,o.cn)("canvas-dots relative w-full",k?"h-full":"h-screen"),children:[(0,d.jsxs)(g.Gc,{nodes:a6,edges:[...a7,...a0.map(a=>({...a,hidden:a5.has(a.source)}))],nodeTypes:aa,edgeTypes:ab,connectionMode:h.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onNodesChange:aW,onConnect:be,onNodeMouseEnter:(a,b)=>{"annotation"!==b.type&&L(b.id)},onNodeMouseLeave:()=>L(null),onNodeClick:(a,b)=>{if("annotation"===b.type)return void x?.(b.data.annotationId);let c="endpoint"===b.type?"endpoint":"table";G({id:b.id,kind:c}),I(null),N(!0),P("details")},onEdgeClick:(a,b)=>{I(b.id),G(null)},onPaneClick:()=>{G(null),I(null)},onNodeDragStop:aY,onEdgesDelete:a=>{for(let b of a)if(b.id.startsWith("fk-")){let a=b.id.slice(3);fetch(`/api/db/relations/${a}`,{method:"DELETE"})}},onNodesDelete:a=>{for(let b of a)b.id.startsWith("anno-")||aR.has(b.id)||("endpoint"===b.type?fetch(`/api/endpoints/${b.id}`,{method:"DELETE"}):"dbTable"===b.type&&fetch(`/api/db/tables/${b.id}`,{method:"DELETE"}))},deleteKeyCode:["Backspace","Delete"],colorMode:"dark",fitView:!0,minZoom:.15,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[(0,d.jsx)(g.H2,{position:"bottom-right",className:"!overflow-hidden !rounded-xl !border !border-white/10 [&_button]:!border-white/10 [&_button]:!bg-card/70 [&_button]:!text-foreground [&_button]:!backdrop-blur"}),!k&&(0,d.jsx)(g.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!rounded-xl !border !border-white/10 !bg-card/50 !backdrop-blur",nodeColor:"#555"}),!k&&(0,d.jsx)(g.Zk,{position:"top-center",className:"glass rounded-full px-1 py-0.5",children:(0,d.jsx)(R.Z,{active:"DATABASE",tabs:[{value:"ROADMAP",label:"Roadmap",href:"/map?view=ROADMAP"},{value:"ARCHITECTURE",label:"Architecture",href:"/map?view=ARCHITECTURE"},{value:"FILES",label:"Files",href:"/map?view=FILES"},{value:"DATABASE",label:"Database",href:"/map?view=DATABASE"}]})}),(0,d.jsxs)(g.Zk,{position:"top-right",className:(0,o.cn)("flex items-center gap-1 transition-[margin] duration-200",M&&"!mr-[332px]",k&&"hidden"),children:[(0,d.jsx)("button",{type:"button",title:"Arrange board — pack tables + endpoints side by side",disabled:_,onClick:async()=>{af(!0);try{await fetch("/api/db/arrange",{method:"POST"}),B.refresh()}finally{af(!1)}},className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground disabled:opacity-40",children:(0,d.jsx)(U.A,{className:"size-4"})}),(0,d.jsxs)(Q.er,{title:"Filters",trigger:(a,b)=>(0,d.jsxs)("button",{type:"button",onClick:b,title:"Filters",className:(0,o.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",a||bc>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,d.jsx)(V.A,{className:"size-4"}),bc>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:bc})]}),children:[(0,d.jsx)(Q.r1,{title:"Show",children:(0,d.jsx)(Q.vu,{tone:"accent",on:C,onClick:()=>D(a=>!a),children:"endpoints"})}),a8.length>0&&(0,d.jsx)(Q.r1,{title:"Domain",children:a8.map(a=>(0,d.jsx)(Q.vu,{on:ag.has(a),onClick:()=>bb(a,ah),children:a},a))}),ba.length>0&&(0,d.jsx)(Q.r1,{title:"Method",children:ba.map(a=>(0,d.jsx)(Q.vu,{on:ak.has(a),onClick:()=>bb(a,al),children:a},a))}),a9.length>0&&(0,d.jsx)(Q.r1,{title:"Source",children:a9.map(a=>(0,d.jsx)(Q.vu,{on:ai.has(a),onClick:()=>bb(a,aj),children:a.toLowerCase()},a))}),bc>0&&(0,d.jsx)("button",{type:"button",onClick:bd,className:"mt-1 w-full rounded-md border border-white/10 px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/5 hover:text-foreground",children:"clear filters"})]}),(0,d.jsx)(Q.er,{title:"Legend",trigger:(a,b)=>(0,d.jsx)("button",{type:"button",onClick:b,title:"Legend",className:(0,o.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",a?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,d.jsx)(W.A,{className:"size-4"})}),children:(0,d.jsxs)("ul",{className:"space-y-1.5 text-[10.5px] text-muted-foreground",children:[(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-px w-6 bg-[#6b6b6b]"}),(0,d.jsx)("span",{children:"foreign key \xb7 drag from a table handle"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#4ea1ff"}}),(0,d.jsx)("span",{children:"endpoint read \xb7 GET / POST / etc"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#ffb86b"}}),(0,d.jsx)("span",{children:"endpoint write"})]}),(0,d.jsxs)("li",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"inline-block rounded border border-dashed border-sky-400/50 px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-sky-300",children:"draft"}),(0,d.jsx)("span",{children:"agent-proposed \xb7 approve to persist"})]})]})}),!M&&(0,d.jsx)("button",{onClick:()=>N(!0),title:"Show panel",className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,d.jsx)(X.A,{className:"size-4"})})]}),bj&&(0,d.jsxs)(g.Zk,{position:"bottom-center",className:"glass flex items-center gap-1 rounded-xl p-1.5",children:[(0,d.jsxs)("button",{onClick:ar,disabled:!bk,title:"Undo (⌘Z)",className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground disabled:opacity-30 disabled:hover:bg-transparent",children:[(0,d.jsx)(Y.A,{className:"size-3.5"})," undo"]}),(0,d.jsxs)("button",{onClick:as,disabled:!bl,title:"Redo (⇧⌘Z)",className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground disabled:opacity-30 disabled:hover:bg-transparent",children:[(0,d.jsx)(Z.A,{className:"size-3.5"})," redo"]}),!k&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"mx-1 h-4 w-px bg-white/10"}),(0,d.jsxs)("button",{onClick:bh,disabled:_,title:"Discard draft",className:"flex items-center gap-1 rounded-md px-2 py-1 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-red-500/15 hover:text-red-300 disabled:opacity-40",children:[(0,d.jsx)(l.A,{className:"size-3.5"})," discard"]}),(0,d.jsxs)("button",{onClick:bg,disabled:_,title:"Approve and persist to the schema",className:"flex items-center gap-1 rounded-md border border-emerald-500/40 bg-emerald-500/15 px-2.5 py-1 text-[11px] font-semibold text-emerald-300 transition-colors hover:bg-emerald-500/25 disabled:opacity-40",children:[(0,d.jsx)($.A,{className:"size-3.5"})," approve draft"]})]})]})]}),M&&(0,d.jsx)(J,{selected:F,tables:aw,relations:aB,endpoints:ax,draftGraph:bi,onClose:()=>{N(!1),P("details")},commentsContent:s,commentsCount:u,activeTab:O,onTabChange:P,onAddComment:aP,topOffset:k?64:void 0})]})})}},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}){let[i,j]=(0,e.useState)(!1),k=(0,e.useRef)(null);return(0,d.jsxs)("div",{ref:k,className:"relative",children:[a(i,()=>j(a=>!a)),i&&(0,d.jsxs)("div",{className:(0,f.cn)("glass absolute top-full z-30 mt-1.5 w-64 rounded-xl p-3 shadow-xl","right"===c?"right-0":"left-0"),children:[b&&(0,d.jsx)("div",{className:"mb-2 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:b}),h]})]})}function h({title:a,children:b}){return(0,d.jsxs)("div",{className:"mb-2.5 last:mb-0",children:[(0,d.jsx)("div",{className:"mb-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground/80",children:a}),(0,d.jsx)("div",{className:"flex flex-wrap gap-1",children:b})]})}function i({on:a,onClick:b,children:c,tone:e="default"}){return(0,d.jsx)("button",{type:"button",onClick:b,className:(0,f.cn)("rounded-md border px-2 py-0.5 text-[11px] font-medium transition-colors",{default:a?"border-foreground/40 bg-white/10 text-foreground":"border-white/10 text-muted-foreground hover:text-foreground",danger:a?"border-red-500/40 bg-red-500/15 text-red-300":"border-white/10 text-muted-foreground hover:text-foreground",accent:a?"border-sky-500/40 bg-sky-500/15 text-sky-300":"border-white/10 text-muted-foreground hover:text-foreground"}[e]),children:c})}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=873,exports.ids=[873],exports.modules={63254:(a,b,c)=>{let d;c.d(b,{sX:()=>Y});let e=BigInt(0x100000000-1),f=BigInt(32);function g(a,b=""){if("number"!=typeof a){let c=b&&`"${b}" `;throw TypeError(`${c}expected number, got ${typeof a}`)}if(!Number.isSafeInteger(a)||a<0){let c=b&&`"${b}" `;throw RangeError(`${c}expected integer >= 0, got ${a}`)}}function h(a,b,c=""){let d=a instanceof Uint8Array||ArrayBuffer.isView(a)&&"Uint8Array"===a.constructor.name&&"BYTES_PER_ELEMENT"in a&&1===a.BYTES_PER_ELEMENT,e=a?.length,f=void 0!==b;if(!d||f&&e!==b){let g=(c&&`"${c}" `)+"expected Uint8Array"+(f?` of length ${b}`:"")+", got "+(d?`length=${e}`:`type=${typeof a}`);if(!d)throw TypeError(g);throw RangeError(g)}return a}function i(a,b=!0){if(a.destroyed)throw Error("Hash instance has been destroyed");if(b&&a.finished)throw Error("Hash#digest() has already been called")}function j(...a){for(let b=0;b<a.length;b++)a[b].fill(0)}let k=68===new Uint8Array(new Uint32Array([0x11223344]).buffer)[0]?a=>a:function(a){for(let c=0;c<a.length;c++){var b;a[c]=(b=a[c])<<24&0xff000000|b<<8&0xff0000|b>>>8&65280|b>>>24&255}return a},l=BigInt(0),m=BigInt(1),n=BigInt(2),o=BigInt(7),p=BigInt(256),q=BigInt(113),r=[],s=[],t=[];for(let a=0,b=m,c=1,d=0;a<24;a++){[c,d]=[d,(2*c+3*d)%5],r.push(2*(5*d+c)),s.push((a+1)*(a+2)/2%64);let e=l;for(let a=0;a<7;a++)(b=(b<<m^(b>>o)*q)%p)&n&&(e^=m<<(m<<BigInt(a))-m);t.push(e)}let u=function(a,b=!1){let c=a.length,d=new Uint32Array(c),g=new Uint32Array(c);for(let h=0;h<c;h++){let{h:c,l:i}=function(a,b=!1){return b?{h:Number(a&e),l:Number(a>>f&e)}:{h:0|Number(a>>f&e),l:0|Number(a&e)}}(a[h],b);[d[h],g[h]]=[c,i]}return[d,g]}(t,!0),v=u[0],w=u[1],x=(a,b,c)=>c>32?b<<c-32|a>>>64-c:a<<c|b>>>32-c,y=(a,b,c)=>c>32?a<<c-32|b>>>64-c:b<<c|a>>>32-c;class z{state;pos=0;posOut=0;finished=!1;state32;destroyed=!1;blockLen;suffix;outputLen;canXOF;enableXOF=!1;rounds;constructor(a,b,c,d=!1,e=24){if(this.blockLen=a,this.suffix=b,this.outputLen=c,this.enableXOF=d,this.canXOF=d,this.rounds=e,g(c,"outputLen"),!(0<a&&a<200))throw Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=function(a){return new Uint32Array(a.buffer,a.byteOffset,Math.floor(a.byteLength/4))}(this.state)}clone(){return this._cloneInto()}keccak(){k(this.state32),function(a,b=24){if(g(b,"rounds"),b<1||b>24)throw Error('"rounds" expected integer 1..24');let c=new Uint32Array(10);for(let d=24-b;d<24;d++){for(let b=0;b<10;b++)c[b]=a[b]^a[b+10]^a[b+20]^a[b+30]^a[b+40];for(let b=0;b<10;b+=2){let d=(b+8)%10,e=(b+2)%10,f=c[e],g=c[e+1],h=x(f,g,1)^c[d],i=y(f,g,1)^c[d+1];for(let c=0;c<50;c+=10)a[b+c]^=h,a[b+c+1]^=i}let b=a[2],e=a[3];for(let c=0;c<24;c++){let d=s[c],f=x(b,e,d),g=y(b,e,d),h=r[c];b=a[h],e=a[h+1],a[h]=f,a[h+1]=g}for(let b=0;b<50;b+=10){let c=a[b],d=a[b+1],e=a[b+2],f=a[b+3];a[b]^=~a[b+2]&a[b+4],a[b+1]^=~a[b+3]&a[b+5],a[b+2]^=~a[b+4]&a[b+6],a[b+3]^=~a[b+5]&a[b+7],a[b+4]^=~a[b+6]&a[b+8],a[b+5]^=~a[b+7]&a[b+9],a[b+6]^=~a[b+8]&c,a[b+7]^=~a[b+9]&d,a[b+8]^=~c&e,a[b+9]^=~d&f}a[0]^=v[d],a[1]^=w[d]}j(c)}(this.state32,this.rounds),k(this.state32),this.posOut=0,this.pos=0}update(a){i(this),h(a);let{blockLen:b,state:c}=this,d=a.length;for(let e=0;e<d;){let f=Math.min(b-this.pos,d-e);for(let b=0;b<f;b++)c[this.pos++]^=a[e++];this.pos===b&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:a,suffix:b,pos:c,blockLen:d}=this;a[c]^=b,(128&b)!=0&&c===d-1&&this.keccak(),a[d-1]^=128,this.keccak()}writeInto(a){i(this,!1),h(a),this.finish();let b=this.state,{blockLen:c}=this;for(let d=0,e=a.length;d<e;){this.posOut>=c&&this.keccak();let f=Math.min(c-this.posOut,e-d);a.set(b.subarray(this.posOut,this.posOut+f),d),this.posOut+=f,d+=f}return a}xofInto(a){if(!this.enableXOF)throw Error("XOF is not possible for this instance");return this.writeInto(a)}xof(a){return g(a),this.xofInto(new Uint8Array(a))}digestInto(a){h(a,void 0,"digestInto() output");let b=this.outputLen;if(a.length<b)throw RangeError('"digestInto() output" expected to be of length >='+b);if(this.finished)throw Error("digest() was already called");this.writeInto(a.subarray(0,this.outputLen)),this.destroy()}digest(){let a=new Uint8Array(this.outputLen);return this.digestInto(a),a}destroy(){this.destroyed=!0,j(this.state)}_cloneInto(a){let{blockLen:b,suffix:c,outputLen:d,rounds:e,enableXOF:f}=this;return(a||=new z(b,c,d,f,e)).blockLen=b,a.state32.set(this.state32),a.pos=this.pos,a.posOut=this.posOut,a.finished=this.finished,a.rounds=e,a.suffix=c,a.outputLen=d,a.enableXOF=f,a.canXOF=this.canXOF,a.destroyed=this.destroyed,a}}let A=((a,b,c,d={})=>(function(a,b={}){let c=(b,c)=>a(c).update(b).digest(),d=a(void 0);return c.outputLen=d.outputLen,c.blockLen=d.blockLen,c.canXOF=d.canXOF,c.create=b=>a(b),Object.assign(c,b),Object.freeze(c)})(()=>new z(b,a,c),d))(6,72,64,{oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,10])});var B,C=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,D=Math.ceil,E=Math.floor,F="[BigNumber Error] ",G=F+"Number primitive has more than 15 significant digits: ",H=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13];function I(a){var b=0|a;return a>0||a===b?b:b-1}function J(a){for(var b,c,d=1,e=a.length,f=a[0]+"";d<e;){for(c=14-(b=a[d++]+"").length;c--;b="0"+b);f+=b}for(e=f.length;48===f.charCodeAt(--e););return f.slice(0,e+1||1)}function K(a,b){var c,d,e=a.c,f=b.c,g=a.s,h=b.s,i=a.e,j=b.e;if(!g||!h)return null;if(c=e&&!e[0],d=f&&!f[0],c||d)return c?d?0:-h:g;if(g!=h)return g;if(c=g<0,d=i==j,!e||!f)return d?0:!e^c?1:-1;if(!d)return i>j^c?1:-1;for(g=0,h=(i=e.length)<(j=f.length)?i:j;g<h;g++)if(e[g]!=f[g])return e[g]>f[g]^c?1:-1;return i==j?0:i>j^c?1:-1}function L(a,b,c,d){if(a<b||a>c||a!==E(a))throw Error(F+(d||"Argument")+("number"==typeof a?a<b||a>c?" out of range: ":" not an integer: ":" not a primitive number: ")+String(a))}function M(a){var b=a.c.length-1;return I(a.e/14)==b&&a.c[b]%2!=0}function N(a,b){return(a.length>1?a.charAt(0)+"."+a.slice(1):a)+(b<0?"e":"e+")+b}function O(a,b,c){var d,e;if(b<0){for(e=c+".";++b;e+=c);a=e+a}else if(d=a.length,++b>d){for(e=c,b-=d;--b;e+=c);a+=e}else b<d&&(a=a.slice(0,b)+"."+a.slice(b));return a}var P=function a(b){var c,d,e,f,g,h,i,j,k,l=z.prototype={constructor:z,toString:null,valueOf:null},m=new z(1),n=20,o=4,p=-7,q=21,r=-1e7,s=1e7,t=!1,u=1,v=0,w={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xa0",suffix:""},x="0123456789abcdefghijklmnopqrstuvwxyz",y=!0;function z(a,b){var c,d,e,f,g,h,i,l,m=this;if(!(m instanceof z))return new z(a,b);if(null==b){if(a&&!0===a._isBigNumber){m.s=a.s,!a.c||a.e>s?m.c=m.e=null:a.e<r?m.c=[m.e=0]:(m.e=a.e,m.c=a.c.slice());return}if((h="number"==typeof a)&&0*a==0){if(m.s=1/a<0?(a=-a,-1):1,a===~~a){for(f=0,g=a;g>=10;g/=10,f++);f>s?m.c=m.e=null:(m.e=f,m.c=[a]);return}l=String(a)}else{if(!C.test(l=String(a)))return k(m,l,h);m.s=45==l.charCodeAt(0)?(l=l.slice(1),-1):1}(f=l.indexOf("."))>-1&&(l=l.replace(".","")),(g=l.search(/e/i))>0?(f<0&&(f=g),f+=+l.slice(g+1),l=l.substring(0,g)):f<0&&(f=l.length)}else{if(L(b,2,x.length,"Base"),10==b&&y)return Q(m=new z(a),n+m.e+1,o);if(l=String(a),h="number"==typeof a){if(0*a!=0)return k(m,l,h,b);if(m.s=1/a<0?(l=l.slice(1),-1):1,z.DEBUG&&l.replace(/^0\.0*|\./,"").length>15)throw Error(G+a)}else m.s=45===l.charCodeAt(0)?(l=l.slice(1),-1):1;for(c=x.slice(0,b),f=g=0,i=l.length;g<i;g++)if(0>c.indexOf(d=l.charAt(g))){if("."==d){if(g>f){f=i;continue}}else if(!e&&(l==l.toUpperCase()&&(l=l.toLowerCase())||l==l.toLowerCase()&&(l=l.toUpperCase()))){e=!0,g=-1,f=0;continue}return k(m,String(a),h,b)}h=!1,(f=(l=j(l,b,10,m.s)).indexOf("."))>-1?l=l.replace(".",""):f=l.length}for(g=0;48===l.charCodeAt(g);g++);for(i=l.length;48===l.charCodeAt(--i););if(l=l.slice(g,++i)){if(i-=g,h&&z.DEBUG&&i>15&&(a>0x1fffffffffffff||a!==E(a)))throw Error(G+m.s*a);if((f=f-g-1)>s)m.c=m.e=null;else if(f<r)m.c=[m.e=0];else{if(m.e=f,m.c=[],g=(f+1)%14,f<0&&(g+=14),g<i){for(g&&m.c.push(+l.slice(0,g)),i-=14;g<i;)m.c.push(+l.slice(g,g+=14));g=14-(l=l.slice(g)).length}else g-=i;for(;g--;l+="0");m.c.push(+l)}}else m.c=[m.e=0]}function A(a,b,c,d){var e,f,g,h,i;if(null==c?c=o:L(c,0,8),!a.c)return a.toString();if(e=a.c[0],g=a.e,null==b)i=J(a.c),i=1==d||2==d&&(g<=p||g>=q)?N(i,g):O(i,g,"0");else if(f=(a=Q(new z(a),b,c)).e,h=(i=J(a.c)).length,1==d||2==d&&(b<=f||f<=p)){for(;h<b;i+="0",h++);i=N(i,f)}else if(b-=g+(2===d&&f>g),i=O(i,f,"0"),f+1>h){if(--b>0)for(i+=".";b--;i+="0");}else if((b+=f-h)>0)for(f+1==h&&(i+=".");b--;i+="0");return a.s<0&&e?"-"+i:i}function B(a,b){for(var c,d,e=1,f=new z(a[0]);e<a.length;e++)(d=new z(a[e])).s&&(c=K(f,d))!==b&&(0!==c||f.s!==b)||(f=d);return f}function P(a,b,c){for(var d=1,e=b.length;!b[--e];b.pop());for(e=b[0];e>=10;e/=10,d++);return(c=d+14*c-1)>s?a.c=a.e=null:c<r?a.c=[a.e=0]:(a.e=c,a.c=b),a}function Q(a,b,c,d){var e,f,g,h,i,j,k,l=a.c;if(l){a:{for(e=1,h=l[0];h>=10;h/=10,e++);if((f=b-e)<0)f+=14,g=b,k=E((i=l[j=0])/H[e-g-1]%10);else if((j=D((f+1)/14))>=l.length)if(d){for(;l.length<=j;l.push(0));i=k=0,e=1,f%=14,g=f-14+1}else break a;else{for(e=1,i=h=l[j];h>=10;h/=10,e++);f%=14,k=(g=f-14+e)<0?0:E(i/H[e-g-1]%10)}if(d=d||b<0||null!=l[j+1]||(g<0?i:i%H[e-g-1]),d=c<4?(k||d)&&(0==c||c==(a.s<0?3:2)):k>5||5==k&&(4==c||d||6==c&&(f>0?g>0?i/H[e-g]:0:l[j-1])%10&1||c==(a.s<0?8:7)),b<1||!l[0])return l.length=0,d?(b-=a.e+1,l[0]=H[(14-b%14)%14],a.e=-b||0):l[0]=a.e=0,a;if(0==f?(l.length=j,h=1,j--):(l.length=j+1,h=H[14-f],l[j]=g>0?E(i/H[e-g]%H[g])*h:0),d)for(;;)if(0==j){for(f=1,g=l[0];g>=10;g/=10,f++);for(g=l[0]+=h,h=1;g>=10;g/=10,h++);f!=h&&(a.e++,1e14==l[0]&&(l[0]=1));break}else{if(l[j]+=h,1e14!=l[j])break;l[j--]=0,h=1}for(f=l.length;0===l[--f];l.pop());}a.e>s?a.c=a.e=null:a.e<r&&(a.c=[a.e=0])}return a}function R(a){var b,c=a.e;return null===c?a.toString():(b=J(a.c),b=c<=p||c>=q?N(b,c):O(b,c,"0"),a.s<0?"-"+b:b)}return z.clone=a,z.ROUND_UP=0,z.ROUND_DOWN=1,z.ROUND_CEIL=2,z.ROUND_FLOOR=3,z.ROUND_HALF_UP=4,z.ROUND_HALF_DOWN=5,z.ROUND_HALF_EVEN=6,z.ROUND_HALF_CEIL=7,z.ROUND_HALF_FLOOR=8,z.EUCLID=9,z.config=z.set=function(a){var b,c;if(null!=a)if("object"==typeof a){if(a.hasOwnProperty(b="DECIMAL_PLACES")&&(L(c=a[b],0,1e9,b),n=c),a.hasOwnProperty(b="ROUNDING_MODE")&&(L(c=a[b],0,8,b),o=c),a.hasOwnProperty(b="EXPONENTIAL_AT")&&((c=a[b])&&c.pop?(L(c[0],-1e9,0,b),L(c[1],0,1e9,b),p=c[0],q=c[1]):(L(c,-1e9,1e9,b),p=-(q=c<0?-c:c))),a.hasOwnProperty(b="RANGE"))if((c=a[b])&&c.pop)L(c[0],-1e9,-1,b),L(c[1],1,1e9,b),r=c[0],s=c[1];else if(L(c,-1e9,1e9,b),c)r=-(s=c<0?-c:c);else throw Error(F+b+" cannot be zero: "+c);if(a.hasOwnProperty(b="CRYPTO"))if(!!(c=a[b])===c)if(c)if("u">typeof crypto&&crypto&&(crypto.getRandomValues||crypto.randomBytes))t=c;else throw t=!c,Error(F+"crypto unavailable");else t=c;else throw Error(F+b+" not true or false: "+c);if(a.hasOwnProperty(b="MODULO_MODE")&&(L(c=a[b],0,9,b),u=c),a.hasOwnProperty(b="POW_PRECISION")&&(L(c=a[b],0,1e9,b),v=c),a.hasOwnProperty(b="FORMAT"))if("object"==typeof(c=a[b]))w=c;else throw Error(F+b+" not an object: "+c);if(a.hasOwnProperty(b="ALPHABET")){if("string"!=typeof(c=a[b])||/^.?$|[+\-.\s]|(.).*\1/.test(c))throw Error(F+b+" invalid: "+c);y="0123456789"==c.slice(0,10),x=c}}else throw Error(F+"Object expected: "+a);return{DECIMAL_PLACES:n,ROUNDING_MODE:o,EXPONENTIAL_AT:[p,q],RANGE:[r,s],CRYPTO:t,MODULO_MODE:u,POW_PRECISION:v,FORMAT:w,ALPHABET:x}},z.isBigNumber=function(a){if(!a||!0!==a._isBigNumber)return!1;if(!z.DEBUG)return!0;var b,c,d=a.c,e=a.e,f=a.s;a:if("[object Array]"==({}).toString.call(d)){if((1===f||-1===f)&&e>=-1e9&&e<=1e9&&e===E(e)){if(0===d[0]){if(0===e&&1===d.length)return!0;break a}if((b=(e+1)%14)<1&&(b+=14),String(d[0]).length==b){for(b=0;b<d.length;b++)if((c=d[b])<0||c>=1e14||c!==E(c))break a;if(0!==c)return!0}}}else if(null===d&&null===e&&(null===f||1===f||-1===f))return!0;throw Error(F+"Invalid BigNumber: "+a)},z.maximum=z.max=function(){return B(arguments,-1)},z.minimum=z.min=function(){return B(arguments,1)},c=0x20000000000000*Math.random()&2097151?function(){return E(0x20000000000000*Math.random())}:function(){return(0x40000000*Math.random()|0)*8388608+(8388608*Math.random()|0)},z.random=function(a){var b,d,e,f,g,h=0,i=[],j=new z(m);if(null==a?a=n:L(a,0,1e9),f=D(a/14),t)if(crypto.getRandomValues){for(b=crypto.getRandomValues(new Uint32Array(f*=2));h<f;)(g=131072*b[h]+(b[h+1]>>>11))>=9e15?(d=crypto.getRandomValues(new Uint32Array(2)),b[h]=d[0],b[h+1]=d[1]):(i.push(g%1e14),h+=2);h=f/2}else if(crypto.randomBytes){for(b=crypto.randomBytes(f*=7);h<f;)(g=(31&b[h])*0x1000000000000+0x10000000000*b[h+1]+0x100000000*b[h+2]+0x1000000*b[h+3]+(b[h+4]<<16)+(b[h+5]<<8)+b[h+6])>=9e15?crypto.randomBytes(7).copy(b,h):(i.push(g%1e14),h+=7);h=f/7}else throw t=!1,Error(F+"crypto unavailable");if(!t)for(;h<f;)(g=c())<9e15&&(i[h++]=g%1e14);for(f=i[--h],a%=14,f&&a&&(g=H[14-a],i[h]=E(f/g)*g);0===i[h];i.pop(),h--);if(h<0)i=[e=0];else{for(e=-1;0===i[0];i.splice(0,1),e-=14);for(h=1,g=i[0];g>=10;g/=10,h++);h<14&&(e-=14-h)}return j.e=e,j.c=i,j},z.sum=function(){for(var a=1,b=arguments,c=new z(b[0]);a<b.length;)c=c.plus(b[a++]);return c},j=function(){var a="0123456789";function b(a,b,c,d){for(var e,f,g=[0],h=0,i=a.length;h<i;){for(f=g.length;f--;g[f]*=b);for(g[0]+=d.indexOf(a.charAt(h++)),e=0;e<g.length;e++)g[e]>c-1&&(null==g[e+1]&&(g[e+1]=0),g[e+1]+=g[e]/c|0,g[e]%=c)}return g.reverse()}return function(c,d,e,f,g){var h,j,k,l,m,p,q,r,s=c.indexOf("."),t=n,u=o;for(s>=0&&(l=v,v=0,c=c.replace(".",""),p=(r=new z(d)).pow(c.length-s),v=l,r.c=b(O(J(p.c),p.e,"0"),10,e,a),r.e=r.c.length),k=l=(q=b(c,d,e,g?(h=x,a):(h=a,x))).length;0==q[--l];q.pop());if(!q[0])return h.charAt(0);if(s<0?--k:(p.c=q,p.e=k,p.s=f,q=(p=i(p,r,t,u,e)).c,m=p.r,k=p.e),s=q[j=k+t+1],l=e/2,m=m||j<0||null!=q[j+1],m=u<4?(null!=s||m)&&(0==u||u==(p.s<0?3:2)):s>l||s==l&&(4==u||m||6==u&&1&q[j-1]||u==(p.s<0?8:7)),j<1||!q[0])c=m?O(h.charAt(1),-t,h.charAt(0)):h.charAt(0);else{if(q.length=j,m)for(--e;++q[--j]>e;)q[j]=0,j||(++k,q=[1].concat(q));for(l=q.length;!q[--l];);for(s=0,c="";s<=l;c+=h.charAt(q[s++]));c=O(c,k,h.charAt(0))}return c}}(),i=function(){function a(a,b,c){var d,e,f,g,h=0,i=a.length,j=b%1e7,k=b/1e7|0;for(a=a.slice();i--;)d=k*(f=a[i]%1e7)+(g=a[i]/1e7|0)*j,h=((e=j*f+d%1e7*1e7+h)/c|0)+(d/1e7|0)+k*g,a[i]=e%c;return h&&(a=[h].concat(a)),a}function b(a,b,c,d){var e,f;if(c!=d)f=c>d?1:-1;else for(e=f=0;e<c;e++)if(a[e]!=b[e]){f=a[e]>b[e]?1:-1;break}return f}function c(a,b,c,d){for(var e=0;c--;)a[c]-=e,e=+(a[c]<b[c]),a[c]=e*d+a[c]-b[c];for(;!a[0]&&a.length>1;a.splice(0,1));}return function(d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,A=d.s==e.s?1:-1,B=d.c,C=e.c;if(!B||!B[0]||!C||!C[0])return new z(!d.s||!e.s||(B?C&&B[0]==C[0]:!C)?NaN:B&&0==B[0]||!C?0*A:A/0);for(q=(p=new z(A)).c=[],A=f+(j=d.e-e.e)+1,h||(h=1e14,j=I(d.e/14)-I(e.e/14),A=A/14|0),k=0;C[k]==(B[k]||0);k++);if(C[k]>(B[k]||0)&&j--,A<0)q.push(1),l=!0;else{for(v=B.length,x=C.length,k=0,A+=2,(m=E(h/(C[0]+1)))>1&&(C=a(C,m,h),B=a(B,m,h),x=C.length,v=B.length),u=x,s=(r=B.slice(0,x)).length;s<x;r[s++]=0);y=[0].concat(y=C.slice()),w=C[0],C[1]>=h/2&&w++;do{if(m=0,(i=b(C,r,x,s))<0){if(t=r[0],x!=s&&(t=t*h+(r[1]||0)),(m=E(t/w))>1)for(m>=h&&(m=h-1),o=(n=a(C,m,h)).length,s=r.length;1==b(n,r,o,s);)m--,c(n,x<o?y:C,o,h),o=n.length,i=1;else 0==m&&(i=m=1),o=(n=C.slice()).length;if(o<s&&(n=[0].concat(n)),c(r,n,s,h),s=r.length,-1==i)for(;1>b(C,r,x,s);)m++,c(r,x<s?y:C,s,h),s=r.length}else 0===i&&(m++,r=[0]);q[k++]=m,r[0]?r[s++]=B[u]||0:(r=[B[u]],s=1)}while((u++<v||null!=r[0])&&A--);l=null!=r[0],q[0]||q.splice(0,1)}if(1e14==h){for(k=1,A=q[0];A>=10;A/=10,k++);Q(p,f+(p.e=k+14*j-1)+1,g,l)}else p.e=j,p.r=+l;return p}}(),d=/^(-?)0([xbo])(?=\w[\w.]*$)/i,e=/^([^.]+)\.$/,f=/^\.([^.]+)$/,g=/^-?(Infinity|NaN)$/,h=/^\s*\+(?=[\w.])|^\s+|\s+$/g,k=function(a,b,c,i){var j,k=c?b:b.replace(h,"");if(g.test(k))a.s=isNaN(k)?null:k<0?-1:1;else{if(!c&&(k=k.replace(d,function(a,b,c){return j="x"==(c=c.toLowerCase())?16:"b"==c?2:8,i&&i!=j?a:b}),i&&(j=i,k=k.replace(e,"$1").replace(f,"0.$1")),b!=k))return new z(k,j);if(z.DEBUG)throw Error(F+"Not a"+(i?" base "+i:"")+" number: "+b);a.s=null}a.c=a.e=null},l.absoluteValue=l.abs=function(){var a=new z(this);return a.s<0&&(a.s=1),a},l.comparedTo=function(a,b){return K(this,new z(a,b))},l.decimalPlaces=l.dp=function(a,b){var c,d,e;if(null!=a)return L(a,0,1e9),null==b?b=o:L(b,0,8),Q(new z(this),a+this.e+1,b);if(!(c=this.c))return null;if(d=((e=c.length-1)-I(this.e/14))*14,e=c[e])for(;e%10==0;e/=10,d--);return d<0&&(d=0),d},l.dividedBy=l.div=function(a,b){return i(this,new z(a,b),n,o)},l.dividedToIntegerBy=l.idiv=function(a,b){return i(this,new z(a,b),0,1)},l.exponentiatedBy=l.pow=function(a,b){var c,d,e,f,g,h,i,j,k,l=this;if((a=new z(a)).c&&!a.isInteger())throw Error(F+"Exponent not an integer: "+R(a));if(null!=b&&(b=new z(b)),h=a.e>14,!l.c||!l.c[0]||1==l.c[0]&&!l.e&&1==l.c.length||!a.c||!a.c[0])return k=new z(Math.pow(+R(l),h?a.s*(2-M(a)):+R(a))),b?k.mod(b):k;if(i=a.s<0,b){if(b.c?!b.c[0]:!b.s)return new z(NaN);(d=!i&&l.isInteger()&&b.isInteger())&&(l=l.mod(b))}else{if(a.e>9&&(l.e>0||l.e<-1||(0==l.e?l.c[0]>1||h&&l.c[1]>=24e7:l.c[0]<8e13||h&&l.c[0]<=9999975e7)))return f=l.s<0&&M(a)?-0:0,l.e>-1&&(f=1/f),new z(i?1/f:f);v&&(f=D(v/14+2))}for(h?(c=new z(.5),i&&(a.s=1),j=M(a)):j=(e=Math.abs(+R(a)))%2,k=new z(m);;){if(j){if(!(k=k.times(l)).c)break;f?k.c.length>f&&(k.c.length=f):d&&(k=k.mod(b))}if(e){if(0===(e=E(e/2)))break;j=e%2}else if(Q(a=a.times(c),a.e+1,1),a.e>14)j=M(a);else{if(0==(e=+R(a)))break;j=e%2}l=l.times(l),f?l.c&&l.c.length>f&&(l.c.length=f):d&&(l=l.mod(b))}return d?k:(i&&(k=m.div(k)),b?k.mod(b):f?Q(k,v,o,g):k)},l.integerValue=function(a){var b=new z(this);return null==a?a=o:L(a,0,8),Q(b,b.e+1,a)},l.isEqualTo=l.eq=function(a,b){return 0===K(this,new z(a,b))},l.isFinite=function(){return!!this.c},l.isGreaterThan=l.gt=function(a,b){return K(this,new z(a,b))>0},l.isGreaterThanOrEqualTo=l.gte=function(a,b){return 1===(b=K(this,new z(a,b)))||0===b},l.isInteger=function(){return!!this.c&&I(this.e/14)>this.c.length-2},l.isLessThan=l.lt=function(a,b){return 0>K(this,new z(a,b))},l.isLessThanOrEqualTo=l.lte=function(a,b){return -1===(b=K(this,new z(a,b)))||0===b},l.isNaN=function(){return!this.s},l.isNegative=function(){return this.s<0},l.isPositive=function(){return this.s>0},l.isZero=function(){return!!this.c&&0==this.c[0]},l.minus=function(a,b){var c,d,e,f,g=this.s;if(b=(a=new z(a,b)).s,!g||!b)return new z(NaN);if(g!=b)return a.s=-b,this.plus(a);var h=this.e/14,i=a.e/14,j=this.c,k=a.c;if(!h||!i){if(!j||!k)return j?(a.s=-b,a):new z(k?this:NaN);if(!j[0]||!k[0])return k[0]?(a.s=-b,a):new z(j[0]?this:3==o?-0:0)}if(h=I(h),i=I(i),j=j.slice(),g=h-i){for((f=g<0)?(g=-g,e=j):(i=h,e=k),e.reverse(),b=g;b--;e.push(0));e.reverse()}else for(d=(f=(g=j.length)<(b=k.length))?g:b,g=b=0;b<d;b++)if(j[b]!=k[b]){f=j[b]<k[b];break}if(f&&(e=j,j=k,k=e,a.s=-a.s),(b=(d=k.length)-(c=j.length))>0)for(;b--;j[c++]=0);for(b=1e14-1;d>g;){if(j[--d]<k[d]){for(c=d;c&&!j[--c];j[c]=b);--j[c],j[d]+=1e14}j[d]-=k[d]}for(;0==j[0];j.splice(0,1),--i);return j[0]?P(a,j,i):(a.s=3==o?-1:1,a.c=[a.e=0],a)},l.modulo=l.mod=function(a,b){var c,d;return(a=new z(a,b),this.c&&a.s&&(!a.c||a.c[0]))?a.c&&(!this.c||this.c[0])?(9==u?(d=a.s,a.s=1,c=i(this,a,0,3),a.s=d,c.s*=d):c=i(this,a,0,u),(a=this.minus(c.times(a))).c[0]||1!=u||(a.s=this.s),a):new z(this):new z(NaN)},l.multipliedBy=l.times=function(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p=this.c,q=(a=new z(a,b)).c;if(!p||!q||!p[0]||!q[0])return this.s&&a.s&&(!p||p[0]||q)&&(!q||q[0]||p)?(a.s*=this.s,p&&q?(a.c=[0],a.e=0):a.c=a.e=null):a.c=a.e=a.s=null,a;for(d=I(this.e/14)+I(a.e/14),a.s*=this.s,(i=p.length)<(l=q.length)&&(o=p,p=q,q=o,e=i,i=l,l=e),e=i+l,o=[];e--;o.push(0));for(e=l;--e>=0;){for(c=0,m=q[e]%1e7,n=q[e]/1e7|0,f=e+(g=i);f>e;)h=n*(j=p[--g]%1e7)+(k=p[g]/1e7|0)*m,c=((j=m*j+h%1e7*1e7+o[f]+c)/1e14|0)+(h/1e7|0)+n*k,o[f--]=j%1e14;o[f]=c}return c?++d:o.splice(0,1),P(a,o,d)},l.negated=function(){var a=new z(this);return a.s=-a.s||null,a},l.plus=function(a,b){var c,d=this.s;if(b=(a=new z(a,b)).s,!d||!b)return new z(NaN);if(d!=b)return a.s=-b,this.minus(a);var e=this.e/14,f=a.e/14,g=this.c,h=a.c;if(!e||!f){if(!g||!h)return new z(d/0);if(!g[0]||!h[0])return h[0]?a:new z(g[0]?this:0*d)}if(e=I(e),f=I(f),g=g.slice(),d=e-f){for(d>0?(f=e,c=h):(d=-d,c=g),c.reverse();d--;c.push(0));c.reverse()}for((d=g.length)-(b=h.length)<0&&(c=h,h=g,g=c,b=d),d=0;b;)d=(g[--b]=g[b]+h[b]+d)/1e14|0,g[b]=1e14===g[b]?0:g[b]%1e14;return d&&(g=[d].concat(g),++f),P(a,g,f)},l.precision=l.sd=function(a,b){var c,d,e;if(null!=a&&!!a!==a)return L(a,1,1e9),null==b?b=o:L(b,0,8),Q(new z(this),a,b);if(!(c=this.c))return null;if(d=14*(e=c.length-1)+1,e=c[e]){for(;e%10==0;e/=10,d--);for(e=c[0];e>=10;e/=10,d++);}return a&&this.e+1>d&&(d=this.e+1),d},l.shiftedBy=function(a){return L(a,-0x1fffffffffffff,0x1fffffffffffff),this.times("1e"+a)},l.squareRoot=l.sqrt=function(){var a,b,c,d,e,f=this.c,g=this.s,h=this.e,j=n+4,k=new z("0.5");if(1!==g||!f||!f[0])return new z(!g||g<0&&(!f||f[0])?NaN:f?this:1/0);if(0==(g=Math.sqrt(+R(this)))||g==1/0?(((b=J(f)).length+h)%2==0&&(b+="0"),g=Math.sqrt(+b),h=I((h+1)/2)-(h<0||h%2),c=new z(b=g==1/0?"5e"+h:(b=g.toExponential()).slice(0,b.indexOf("e")+1)+h)):c=new z(g+""),c.c[0]){for((g=(h=c.e)+j)<3&&(g=0);;)if(e=c,c=k.times(e.plus(i(this,e,j,1))),J(e.c).slice(0,g)===(b=J(c.c)).slice(0,g)){if(c.e<h&&--g,"9999"!=(b=b.slice(g-3,g+1))&&(d||"4999"!=b)){+b&&(+b.slice(1)||"5"!=b.charAt(0))||(Q(c,c.e+n+2,1),a=!c.times(c).eq(this));break}if(!d&&(Q(e,e.e+n+2,0),e.times(e).eq(this))){c=e;break}j+=4,g+=4,d=1}}return Q(c,c.e+n+1,o,a)},l.toExponential=function(a,b){return null!=a&&(L(a,0,1e9),a++),A(this,a,b,1)},l.toFixed=function(a,b){return null!=a&&(L(a,0,1e9),a=a+this.e+1),A(this,a,b)},l.toFormat=function(a,b,c){var d;if(null==c)null!=a&&b&&"object"==typeof b?(c=b,b=null):a&&"object"==typeof a?(c=a,a=b=null):c=w;else if("object"!=typeof c)throw Error(F+"Argument not an object: "+c);if(d=this.toFixed(a,b),this.c){var e,f=d.split("."),g=+c.groupSize,h=+c.secondaryGroupSize,i=c.groupSeparator||"",j=f[0],k=f[1],l=this.s<0,m=l?j.slice(1):j,n=m.length;if(h&&(e=g,g=h,h=e,n-=e),g>0&&n>0){for(e=n%g||g,j=m.substr(0,e);e<n;e+=g)j+=i+m.substr(e,g);h>0&&(j+=i+m.slice(e)),l&&(j="-"+j)}d=k?j+(c.decimalSeparator||"")+((h=+c.fractionGroupSize)?k.replace(RegExp("\\d{"+h+"}\\B","g"),"$&"+(c.fractionGroupSeparator||"")):k):j}return(c.prefix||"")+d+(c.suffix||"")},l.toFraction=function(a){var b,c,d,e,f,g,h,j,k,l,n,p,q=this.c;if(null!=a&&(!(h=new z(a)).isInteger()&&(h.c||1!==h.s)||h.lt(m)))throw Error(F+"Argument "+(h.isInteger()?"out of range: ":"not an integer: ")+R(h));if(!q)return new z(this);for(b=new z(m),k=c=new z(m),d=j=new z(m),p=J(q),f=b.e=p.length-this.e-1,b.c[0]=H[(g=f%14)<0?14+g:g],a=!a||h.comparedTo(b)>0?f>0?b:k:h,g=s,s=1/0,h=new z(p),j.c[0]=0;l=i(h,b,0,1),1!=(e=c.plus(l.times(d))).comparedTo(a);)c=d,d=e,k=j.plus(l.times(e=k)),j=e,b=h.minus(l.times(e=b)),h=e;return e=i(a.minus(c),d,0,1),j=j.plus(e.times(k)),c=c.plus(e.times(d)),j.s=k.s=this.s,f*=2,n=1>i(k,d,f,o).minus(this).abs().comparedTo(i(j,c,f,o).minus(this).abs())?[k,d]:[j,c],s=g,n},l.toNumber=function(){return+R(this)},l.toPrecision=function(a,b){return null!=a&&L(a,1,1e9),A(this,a,b,2)},l.toString=function(a){var b,c=this,d=c.s,e=c.e;return null===e?d?(b="Infinity",d<0&&(b="-"+b)):b="NaN":(null==a?b=e<=p||e>=q?N(J(c.c),e):O(J(c.c),e,"0"):10===a&&y?b=O(J((c=Q(new z(c),n+e+1,o)).c),c.e,"0"):(L(a,2,x.length,"Base"),b=j(O(J(c.c),e,"0"),10,a,d,!0)),d<0&&c.c[0]&&(b="-"+b)),b},l.valueOf=l.toJSON=function(){return R(this)},l._isBigNumber=!0,l[Symbol.toStringTag]="BigNumber",l[Symbol.for("nodejs.util.inspect.custom")]=l.valueOf,null!=b&&z.set(b),z}();let Q=24,R="u">typeof globalThis&&globalThis.crypto&&"function"==typeof globalThis.crypto.getRandomValues?()=>{let a=new Uint32Array(1);return globalThis.crypto.getRandomValues(a),a[0]/0x100000000}:Math.random,S=(a=4,b=R)=>{let c="";for(;c.length<a;)c+=Math.floor(36*b()).toString(36);return c},T=(a="")=>(function(a){let b=new P(0);for(let c of a.values())b=b.multipliedBy(256).plus(c);return b})(A(new TextEncoder().encode(a))).toString(36).slice(1),U=Array.from({length:26},(a,b)=>String.fromCharCode(b+97)),V=({globalObj:a="u">typeof global?global:"u">typeof window?window:{},random:b=R}={})=>{let c=Object.keys(a).toString();return T(c.length?c+S(32,b):S(32,b)).substring(0,32)},W=a=>()=>a++,X=0x1c6b1f1f,Y=(B=({random:a=R,counter:b=W(Math.floor(a()*X)),length:c=Q,fingerprint:d=V({random:a})}={})=>{if(c>32)throw Error(`Length must be between 2 and 32. Received: ${c}`);return function(){let e=U[Math.floor(a()*U.length)],f=Date.now().toString(36),g=b().toString(36),h=S(c,a),i=`${f+h+g+d}`;return`${e+T(i).substring(1,c)}`}},()=>(d||(d=B()),d()))}};
|