trybeacon 0.1.71 → 0.1.73
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +25 -21
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/routes-manifest.json +30 -6
- 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 +11 -11
- package/.next/server/app/_not-found.segments/_full.segment.rsc +11 -11
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/board-annotations/[id]/route.js +1 -1
- package/.next/server/app/api/board-annotations/route.js +1 -1
- package/.next/server/app/api/board-layout/route.js +1 -1
- package/.next/server/app/api/bug-flags/[id]/route.js +1 -1
- package/.next/server/app/api/bug-flags/route.js +1 -1
- package/.next/server/app/api/changes/comment/claim/route.js +1 -0
- package/.next/server/app/api/changes/comment/claim/route.js.nft.json +1 -0
- package/.next/server/app/api/changes/comment/claim/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/changes/comment/route.js +1 -0
- package/.next/server/app/api/changes/comment/route.js.nft.json +1 -0
- package/.next/server/app/api/changes/comment/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/changes/quality/route.js +1 -0
- package/.next/server/app/api/changes/quality/route.js.nft.json +1 -0
- package/.next/server/app/api/changes/quality/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/changes/route.js +1 -0
- package/.next/server/app/api/{flags → changes}/route.js.nft.json +1 -1
- package/.next/server/app/api/changes/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/changes/viewed/route.js +1 -0
- package/.next/server/app/api/changes/viewed/route.js.nft.json +1 -0
- package/.next/server/app/api/changes/viewed/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/code-graph/position/route.js +1 -1
- package/.next/server/app/api/code-graph/route.js +1 -1
- package/.next/server/app/api/context/feature/route.js +1 -1
- package/.next/server/app/api/context/file/route.js +1 -1
- package/.next/server/app/api/context/route.js +1 -9
- 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/backfill-access/route.js +1 -1
- package/.next/server/app/api/db/position/route.js +1 -1
- package/.next/server/app/api/db/position/route.js.nft.json +1 -1
- package/.next/server/app/api/db/prune-planned/route.js +1 -1
- package/.next/server/app/api/db/reconcile-endpoints/route.js +1 -1
- package/.next/server/app/api/db/relations/[id]/route.js +1 -1
- package/.next/server/app/api/db/tables/[id]/route.js +1 -1
- package/.next/server/app/api/draft/approve/route.js +1 -1
- package/.next/server/app/api/draft/approve/route.js.nft.json +1 -1
- package/.next/server/app/api/draft/route.js +1 -1
- package/.next/server/app/api/draft/route.js.nft.json +1 -1
- package/.next/server/app/api/draft/status/route.js +1 -1
- package/.next/server/app/api/edges/[id]/route.js +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/entities/route.js +1 -1
- package/.next/server/app/api/ingest/route.js +1 -9
- package/.next/server/app/api/ingest/route.js.nft.json +1 -1
- package/.next/server/app/api/init/route.js +1 -9
- package/.next/server/app/api/init/route.js.nft.json +1 -1
- package/.next/server/app/api/lesson/close/route.js +1 -1
- package/.next/server/app/api/lesson/presence/route.js +1 -1
- package/.next/server/app/api/lesson/questions/route.js +1 -1
- package/.next/server/app/api/lesson/route.js +1 -1
- package/.next/server/app/api/lesson/save/route.js +1 -1
- package/.next/server/app/api/lesson/verdict/route.js +1 -1
- package/.next/server/app/api/map/describe/route.js +1 -9
- package/.next/server/app/api/map/describe/route.js.nft.json +1 -1
- package/.next/server/app/api/map/files/route.js +1 -1
- package/.next/server/app/api/map/files/route.js.nft.json +1 -1
- package/.next/server/app/api/map/finish/route.js +1 -1
- package/.next/server/app/api/map/finish/route.js.nft.json +1 -1
- package/.next/server/app/api/map/route.js +1 -1
- package/.next/server/app/api/map/route.js.nft.json +1 -1
- package/.next/server/app/api/map/start/route.js +1 -1
- package/.next/server/app/api/map/start/route.js.nft.json +1 -1
- package/.next/server/app/api/map/touch-active/route.js +1 -1
- package/.next/server/app/api/map/touch-active/route.js.nft.json +1 -1
- package/.next/server/app/api/mention-search/route.js +1 -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/route.js +1 -1
- package/.next/server/app/api/open/route.js +1 -1
- package/.next/server/app/api/plan/annotations/route.js +3 -3
- package/.next/server/app/api/plan/approve/route.js +1 -9
- 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/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/route.js +1 -1
- package/.next/server/app/api/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/verdict/route.js +1 -1
- package/.next/server/app/api/plan/verdict/route.js.nft.json +1 -1
- package/.next/server/app/api/preferences/route.js +1 -1
- package/.next/server/app/api/project-meta/route.js +1 -1
- package/.next/server/app/api/reset/route.js +1 -1
- package/.next/server/app/api/scope-guard/check/route.js +1 -1
- package/.next/server/app/api/scope-guard/check/route.js.nft.json +1 -1
- package/.next/server/app/api/share/create/route.js +1 -1
- package/.next/server/app/api/share/create/route.js.nft.json +1 -1
- package/.next/server/app/api/share/route.js +1 -1
- package/.next/server/app/api/stream/route.js +2 -2
- package/.next/server/app/api/tab/nav/route.js +1 -1
- package/.next/server/app/api/tab/presence/route.js +1 -1
- package/.next/server/app/api/telemetry/route.js +1 -1
- package/.next/server/app/api/telemetry/stats/route.js +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/api/workspace/activate/route.js +1 -1
- package/.next/server/app/api/workspace/route.js +1 -1
- package/.next/server/app/apple-icon.png/route.js +1 -1
- package/.next/server/app/docs/page.js +2 -2
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +11 -11
- package/.next/server/app/docs.segments/_full.segment.rsc +11 -11
- package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/docs.segments/_index.segment.rsc +11 -11
- package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
- package/.next/server/app/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 +11 -11
- package/.next/server/app/help.segments/_full.segment.rsc +11 -11
- package/.next/server/app/help.segments/_head.segment.rsc +1 -1
- package/.next/server/app/help.segments/_index.segment.rsc +11 -11
- package/.next/server/app/help.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/help.segments/help.segment.rsc +1 -1
- package/.next/server/app/icon.svg/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +11 -11
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/index.segments/_full.segment.rsc +11 -11
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +11 -11
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/learn/page.js +4 -4
- package/.next/server/app/learn/page.js.nft.json +1 -1
- package/.next/server/app/learn/page_client-reference-manifest.js +1 -1
- package/.next/server/app/map/page.js +2 -2
- package/.next/server/app/map/page.js.nft.json +1 -1
- package/.next/server/app/map/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/plan/page.js +12 -2
- package/.next/server/app/plan/page.js.nft.json +1 -1
- package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
- package/.next/server/app/s/[token]/page.js +2 -2
- package/.next/server/app/s/[token]/page.js.nft.json +1 -1
- package/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +2 -2
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +25 -21
- package/.next/server/chunks/1130.js +1 -1
- package/.next/server/chunks/2025.js +1 -1
- package/.next/server/chunks/230.js +1 -0
- package/.next/server/chunks/2693.js +5 -0
- package/.next/server/chunks/4307.js +1 -1
- package/.next/server/chunks/6469.js +10 -0
- package/.next/server/chunks/8190.js +1 -0
- package/.next/server/chunks/8227.js +1 -0
- package/.next/server/chunks/8674.js +7 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/4853-0082a1e1b820a293.js +1 -0
- package/.next/static/chunks/5909-387573cddda35a48.js +1 -0
- package/.next/static/chunks/654-8e68a43e4c589e9c.js +1 -0
- package/.next/static/chunks/app/_global-error/page-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/board-annotations/[id]/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/board-annotations/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/board-layout/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/bug-flags/[id]/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/bug-flags/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/changes/comment/claim/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/changes/comment/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/changes/quality/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/changes/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/changes/viewed/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/code-graph/position/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/code-graph/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/context/feature/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/context/file/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/context/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/db/arrange/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/db/backfill-access/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/db/position/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/db/prune-planned/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/db/relations/[id]/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/db/tables/[id]/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/draft/approve/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/draft/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/draft/status/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/edges/[id]/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/edges/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/endpoints/[id]/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/entities/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/ingest/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/init/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/lesson/close/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/lesson/presence/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/lesson/questions/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/lesson/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/lesson/save/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/lesson/verdict/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/map/describe/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/map/files/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/map/finish/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/map/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/map/start/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/map/touch-active/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/mention-search/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/position/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/nodes/positions/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/nodes/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/nodes/subtasks/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/notes/[id]/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/notes/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/open/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/plan/annotations/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/plan/approve/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/plan/history/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/plan/markdown/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/plan/presence/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/plan/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/plan/verdict/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/preferences/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/project-meta/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/reset/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/scope-guard/check/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/share/create/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/share/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/stream/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/tab/nav/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/tab/presence/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/telemetry/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/telemetry/stats/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/version/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/workspace/activate/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/api/workspace/route-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/app/{layout-d3b7276f116dce46.js → layout-6e934a2850efd223.js} +1 -1
- package/.next/static/chunks/app/learn/page-a14eaf5143e2df55.js +7 -0
- package/.next/static/chunks/app/map/{page-5d73cd85ed62df7a.js → page-06282017c592fb3c.js} +1 -1
- package/.next/static/chunks/app/plan/page-41a3990cb858c5f2.js +11 -0
- package/.next/static/chunks/app/s/[token]/{page-4d3ed0a6a420eb44.js → page-a4deb16beff21840.js} +1 -1
- package/.next/static/chunks/app/settings/page-67cab634be8bfef2.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-5f4c3e6e9cc8e6c9.js +1 -0
- package/.next/static/chunks/{webpack-de4a0d9611ec2cad.js → webpack-6c27b0ed1ac1459c.js} +1 -1
- package/.next/static/css/95dc31edc34789a7.css +1 -0
- package/.next/static/css/a5d17568738ef1e9.css +1 -0
- package/.next/static/mB9lqGEsIvB7tTvv9GU48/_buildManifest.js +1 -0
- package/.next/trace +45 -43
- package/.next/trace-build +1 -1
- package/.next/types/app/api/changes/comment/claim/route.ts +351 -0
- package/.next/types/app/api/changes/comment/route.ts +351 -0
- package/.next/types/app/api/changes/quality/route.ts +351 -0
- package/.next/types/app/api/{flags → changes}/route.ts +3 -3
- package/.next/types/app/api/changes/viewed/route.ts +351 -0
- package/.next/types/routes.d.ts +6 -2
- package/.next/types/validator.ts +45 -9
- package/bun.lock +54 -0
- package/dist/bin/doctor.js +33 -32
- package/dist/bin/guard.js +1 -1
- package/dist/bin/hook.js +33 -32
- package/dist/bin/mcp.js +43 -42
- package/dist/bin/plan.js +35 -34
- package/dist/bin/uninstall.js +34 -33
- package/dist/lib/assets.js +25 -24
- package/dist/lib/codex-install.js +32 -31
- package/dist/lib/global-install.js +33 -32
- package/package.json +3 -1
- package/plugin/skills/beacon-plan/SKILL.md +5 -4
- package/.next/server/app/api/flags/route.js +0 -1
- package/.next/server/app/api/flags/route_client-reference-manifest.js +0 -1
- package/.next/server/chunks/3098.js +0 -1
- package/.next/server/chunks/3221.js +0 -5
- package/.next/server/chunks/6810.js +0 -1
- package/.next/static/GjuqgbaZr9M0AGKgnA2hT/_buildManifest.js +0 -1
- package/.next/static/chunks/1052-151437e30240c959.js +0 -1
- package/.next/static/chunks/4853-946597034e74be36.js +0 -1
- package/.next/static/chunks/app/_global-error/page-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/board-annotations/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/board-annotations/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/board-layout/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/bug-flags/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/bug-flags/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/code-graph/position/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/code-graph/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/context/feature/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/context/file/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/context/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/db/arrange/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/db/backfill-access/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/db/position/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/db/prune-planned/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/db/relations/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/db/tables/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/draft/approve/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/draft/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/draft/status/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/edges/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/edges/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/endpoints/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/entities/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/flags/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/ingest/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/init/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/lesson/close/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/lesson/presence/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/lesson/questions/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/lesson/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/lesson/save/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/lesson/verdict/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/map/describe/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/map/files/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/map/finish/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/map/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/map/start/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/map/touch-active/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/mention-search/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/position/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/nodes/positions/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/nodes/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/nodes/subtasks/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/notes/[id]/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/notes/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/open/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/plan/annotations/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/plan/approve/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/plan/history/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/plan/markdown/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/plan/presence/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/plan/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/plan/verdict/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/preferences/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/project-meta/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/reset/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/scope-guard/check/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/share/create/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/share/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/stream/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/tab/nav/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/tab/presence/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/telemetry/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/telemetry/stats/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/version/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/workspace/activate/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/api/workspace/route-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/app/learn/page-bb7141041f6b6e08.js +0 -7
- package/.next/static/chunks/app/plan/page-6b546f1602bd1108.js +0 -1
- package/.next/static/chunks/app/settings/page-7e176d120b1effa9.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-93569b5eb93a61e9.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-93569b5eb93a61e9.js +0 -1
- package/.next/static/css/b51708465127fded.css +0 -1
- /package/.next/static/{GjuqgbaZr9M0AGKgnA2hT → mB9lqGEsIvB7tTvv9GU48}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en" class="dark __variable_246ccd __variable_c29908 h-full antialiased"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/22a5144ee8d83bca-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/7d4881bb7e1bf84d-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/b51708465127fded.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/e02ab5db9ff2dca2.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-de4a0d9611ec2cad.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-cef5038dc7aa126a.js" async=""></script><script src="/_next/static/chunks/main-app-1a32dc335629e4e4.js" async=""></script><script src="/_next/static/chunks/70e0d97a-bbb0ec05083da54f.js" async=""></script><script src="/_next/static/chunks/54a60aa6-0378818fce5a4dc5.js" async=""></script><script src="/_next/static/chunks/8500-f62a38ff68ab7f42.js" async=""></script><script src="/_next/static/chunks/4888-911c0da3c2d785d2.js" async=""></script><script src="/_next/static/chunks/8997-78a359d0d238622e.js" async=""></script><script src="/_next/static/chunks/9887-e8954568a4031ed3.js" async=""></script><script src="/_next/static/chunks/2231-63ad38ec8fb7cb6f.js" async=""></script><script src="/_next/static/chunks/app/layout-d3b7276f116dce46.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Beacon</title><meta name="description" content="A local control panel for the repository you're working in"/><link rel="icon" href="/icon.svg?bb93a1375ed3c298" type="image/svg+xml" sizes="any"/><link rel="apple-touch-icon" href="/apple-icon.png?f9d64651576bd776" type="image/png" sizes="180x180"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-full flex flex-col bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><header class="pointer-events-none fixed left-3 top-3 z-30"><div class="glass pointer-events-auto flex h-10 items-center gap-1 rounded-full pl-3 pr-1.5"><a class="mr-1 flex items-center gap-2 text-sm font-semibold tracking-tight" href="/"><svg width="18" height="18" viewBox="20 22 56 56" fill="none" class="text-foreground" aria-hidden="true"><path d="M48 33 L72.5 73 L23.5 73 Z" fill="none" stroke="var(--accent-2, #ff7a45)" stroke-width="7" stroke-linejoin="round" stroke-linecap="round"></path><circle cx="48" cy="29.5" r="7" fill="var(--accent-2, #ff7a45)"></circle></svg><span class="hidden lg:inline">Beacon</span></a><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><span class="font-mono text-xs text-muted-foreground">· <!-- -->beacon</span><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><nav class="flex items-center gap-0.5 text-sm"><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/plan">Plans</a><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/map">Map</a><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/learn">Learn</a><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/settings">Settings</a></nav><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><button type="button" aria-pressed="false" aria-label="Notes" title="Notes" class="flex items-center justify-center rounded-full p-1.5 transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sticky-note size-4" aria-hidden="true"><path d="M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z"></path><path d="M15 3v5a1 1 0 0 0 1 1h5"></path></svg></button></div></header><main class="flex flex-1 flex-col"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main><div aria-hidden="true" class="fixed inset-y-0 right-0 z-40 flex transition-transform duration-300 ease-out pointer-events-none translate-x-full"><div class="glass relative isolate overflow-hidden flex h-full w-[420px] flex-col rounded-l-2xl border-l border-white/10"><span aria-hidden="true" class="pointer-events-none absolute inset-0 -z-10 rounded-[inherit]" style="background:radial-gradient(90% 60% at 0% 0%, oklch(1 0 0 / 0.04), transparent 42%)"></span><span aria-hidden="true" class="pointer-events-none absolute inset-0 -z-10 rounded-[inherit] opacity-[0.035] mix-blend-overlay" style="background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:120px 120px"></span><div class="flex items-center gap-2 border-b border-white/10 px-3 py-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sticky-note size-4 text-[var(--accent-2,#ff7a45)]" aria-hidden="true"><path d="M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z"></path><path d="M15 3v5a1 1 0 0 0 1 1h5"></path></svg><span class="text-sm font-semibold tracking-tight">Notes</span><span class="ml-auto"></span><button type="button" aria-label="New note" title="New note" class="rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus size-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button><button type="button" aria-label="Close notes" title="Close" class="rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x size-4" aria-hidden="true"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button></div><div class="max-h-44 shrink-0 overflow-y-auto border-b border-white/10 p-1.5"><p class="px-2 py-3 text-[13px] text-muted-foreground">No notes yet. Hit <span class="text-foreground">+</span> to start one.</p></div><div class="flex flex-1 items-center justify-center p-6 text-center text-[13px] text-muted-foreground">Select a note, or create one. Then <span class="px-1 text-foreground">@</span>-mention it in your terminal to turn it into features.</div></div></div><script src="/_next/static/chunks/webpack-de4a0d9611ec2cad.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[81998,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-d3b7276f116dce46.js\"],\"LiveRefresh\"]\n3:I[77242,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-d3b7276f116dce46.js\"],\"TabWorkspace\"]\n4:I[81984,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-d3b7276f116dce46.js\"],\"NotesProvider\"]\n5:I[48484,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-d3b7276f116dce46.js\"],\"PlanProvider\"]\n6:I[10436,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-d3b7276f116dce46.js\"],\"TopNav\"]\n7:I[52174,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-d3b7276f116dce46.js\"],\"MainRegion\"]\n8:I[57121,[],\"\"]\n9:I[74581,[],\"\"]\na:I[434,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-d3b7276f116dce46.js\"],\"PlanBar\"]\nb:I[71886,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-d3b7276f116dce46.js\"],\"NotesDrawer\"]\nc:I[29510,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-d3b7276f116dce46.js\"],\"UpdateBanner\"]\nd:I[90484,[],\"OutletBoundary\"]\ne:\"$Sreact.suspense\"\n11:I[90484,[],\"ViewportBoundary\"]\n13:I[90484,[],\"MetadataBoundary\"]\n15:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/22a5144ee8d83bca-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":"])</script><script>self.__next_f.push([1,"\"font/woff2\"}]\n:HL[\"/_next/static/media/7d4881bb7e1bf84d-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/b51708465127fded.css\",\"style\"]\n:HL[\"/_next/static/css/e02ab5db9ff2dca2.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/b51708465127fded.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/e02ab5db9ff2dca2.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark __variable_246ccd __variable_c29908 h-full antialiased\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col bg-background text-foreground\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{\"children\":[[\"$\",\"$L5\",null,{\"children\":[[\"$\",\"$L6\",null,{\"repo\":\"beacon\"}],[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$La\",null,{}]]}],[\"$\",\"$Lb\",null,{}]]}],[\"$\",\"$Lc\",null,{\"currentVersion\":\"0.1.71\"}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@f\"}]}]]}],{},null,false,null]},null,false,\"$@10\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L11\",null,{\"children\":\"$L12\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L13\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L14\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$15\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"GjuqgbaZr9M0AGKgnA2hT\"}\n"])</script><script>self.__next_f.push([1,"16:[]\n10:\"$W16\"\n"])</script><script>self.__next_f.push([1,"12:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"17:I[86869,[],\"IconMark\"]\nf:null\n14:[[\"$\",\"title\",\"0\",{\"children\":\"Beacon\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A local control panel for the repository you're working in\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?bb93a1375ed3c298\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"link\",\"3\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?f9d64651576bd776\",\"type\":\"image/png\",\"sizes\":\"180x180\"}],[\"$\",\"$L17\",\"4\",{}]]\n"])</script></body></html>
|
|
1
|
+
<!DOCTYPE html><html lang="en" class="dark __variable_246ccd __variable_c29908 h-full antialiased"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/22a5144ee8d83bca-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/7d4881bb7e1bf84d-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/95dc31edc34789a7.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/e02ab5db9ff2dca2.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-6c27b0ed1ac1459c.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-cef5038dc7aa126a.js" async=""></script><script src="/_next/static/chunks/main-app-1a32dc335629e4e4.js" async=""></script><script src="/_next/static/chunks/70e0d97a-bbb0ec05083da54f.js" async=""></script><script src="/_next/static/chunks/54a60aa6-0378818fce5a4dc5.js" async=""></script><script src="/_next/static/chunks/8500-f62a38ff68ab7f42.js" async=""></script><script src="/_next/static/chunks/4888-911c0da3c2d785d2.js" async=""></script><script src="/_next/static/chunks/8997-78a359d0d238622e.js" async=""></script><script src="/_next/static/chunks/9887-e8954568a4031ed3.js" async=""></script><script src="/_next/static/chunks/2231-63ad38ec8fb7cb6f.js" async=""></script><script src="/_next/static/chunks/app/layout-6e934a2850efd223.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>Beacon</title><meta name="description" content="A local control panel for the repository you're working in"/><link rel="icon" href="/icon.svg?bb93a1375ed3c298" type="image/svg+xml" sizes="any"/><link rel="apple-touch-icon" href="/apple-icon.png?f9d64651576bd776" type="image/png" sizes="180x180"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-full flex flex-col bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><header class="pointer-events-none fixed left-3 top-3 z-30"><div class="glass pointer-events-auto flex h-10 items-center gap-1 rounded-full pl-3 pr-1.5"><a class="mr-1 flex items-center gap-2 text-sm font-semibold tracking-tight" href="/"><svg width="18" height="18" viewBox="20 22 56 56" fill="none" class="text-foreground" aria-hidden="true"><path d="M48 33 L72.5 73 L23.5 73 Z" fill="none" stroke="var(--accent-2, #ff7a45)" stroke-width="7" stroke-linejoin="round" stroke-linecap="round"></path><circle cx="48" cy="29.5" r="7" fill="var(--accent-2, #ff7a45)"></circle></svg><span class="hidden lg:inline">Beacon</span></a><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><span class="font-mono text-xs text-muted-foreground">· <!-- -->beacon</span><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><nav class="flex items-center gap-0.5 text-sm"><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/plan">Plans</a><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/map">Map</a><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/learn">Learn</a><a class="rounded-full px-3 py-1 text-[13px] tracking-tight transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground" href="/settings">Settings</a></nav><span aria-hidden="true" class="mx-1 h-5 w-px bg-white/10"></span><button type="button" aria-pressed="false" aria-label="Notes" title="Notes" class="flex items-center justify-center rounded-full p-1.5 transition-colors text-muted-foreground hover:bg-white/[0.04] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sticky-note size-4" aria-hidden="true"><path d="M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z"></path><path d="M15 3v5a1 1 0 0 0 1 1h5"></path></svg></button></div></header><main class="flex flex-1 flex-col"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main><div aria-hidden="true" class="fixed inset-y-0 right-0 z-40 flex transition-transform duration-300 ease-out pointer-events-none translate-x-full"><div class="glass relative isolate overflow-hidden flex h-full w-[420px] flex-col rounded-l-2xl border-l border-white/10"><span aria-hidden="true" class="pointer-events-none absolute inset-0 -z-10 rounded-[inherit]" style="background:radial-gradient(90% 60% at 0% 0%, oklch(1 0 0 / 0.04), transparent 42%)"></span><span aria-hidden="true" class="pointer-events-none absolute inset-0 -z-10 rounded-[inherit] opacity-[0.035] mix-blend-overlay" style="background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:120px 120px"></span><div class="flex items-center gap-2 border-b border-white/10 px-3 py-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sticky-note size-4 text-[var(--accent-2,#ff7a45)]" aria-hidden="true"><path d="M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z"></path><path d="M15 3v5a1 1 0 0 0 1 1h5"></path></svg><span class="text-sm font-semibold tracking-tight">Notes</span><span class="ml-auto"></span><button type="button" aria-label="New note" title="New note" class="rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus size-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button><button type="button" aria-label="Close notes" title="Close" class="rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x size-4" aria-hidden="true"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg></button></div><div class="max-h-44 shrink-0 overflow-y-auto border-b border-white/10 p-1.5"><p class="px-2 py-3 text-[13px] text-muted-foreground">No notes yet. Hit <span class="text-foreground">+</span> to start one.</p></div><div class="flex flex-1 items-center justify-center p-6 text-center text-[13px] text-muted-foreground">Select a note, or create one. Then <span class="px-1 text-foreground">@</span>-mention it in your terminal to turn it into features.</div></div></div><script src="/_next/static/chunks/webpack-6c27b0ed1ac1459c.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[81998,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-6e934a2850efd223.js\"],\"LiveRefresh\"]\n3:I[77242,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-6e934a2850efd223.js\"],\"TabWorkspace\"]\n4:I[81984,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-6e934a2850efd223.js\"],\"NotesProvider\"]\n5:I[48484,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-6e934a2850efd223.js\"],\"PlanProvider\"]\n6:I[10436,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-6e934a2850efd223.js\"],\"TopNav\"]\n7:I[52174,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-6e934a2850efd223.js\"],\"MainRegion\"]\n8:I[57121,[],\"\"]\n9:I[74581,[],\"\"]\na:I[434,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-6e934a2850efd223.js\"],\"PlanBar\"]\nb:I[71886,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-6e934a2850efd223.js\"],\"NotesDrawer\"]\nc:I[29510,[\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-0378818fce5a4dc5.js\",\"8500\",\"static/chunks/8500-f62a38ff68ab7f42.js\",\"4888\",\"static/chunks/4888-911c0da3c2d785d2.js\",\"8997\",\"static/chunks/8997-78a359d0d238622e.js\",\"9887\",\"static/chunks/9887-e8954568a4031ed3.js\",\"2231\",\"static/chunks/2231-63ad38ec8fb7cb6f.js\",\"7177\",\"static/chunks/app/layout-6e934a2850efd223.js\"],\"UpdateBanner\"]\nd:I[90484,[],\"OutletBoundary\"]\ne:\"$Sreact.suspense\"\n11:I[90484,[],\"ViewportBoundary\"]\n13:I[90484,[],\"MetadataBoundary\"]\n15:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/22a5144ee8d83bca-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":"])</script><script>self.__next_f.push([1,"\"font/woff2\"}]\n:HL[\"/_next/static/media/7d4881bb7e1bf84d-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/95dc31edc34789a7.css\",\"style\"]\n:HL[\"/_next/static/css/e02ab5db9ff2dca2.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/95dc31edc34789a7.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/e02ab5db9ff2dca2.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark __variable_246ccd __variable_c29908 h-full antialiased\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col bg-background text-foreground\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{\"children\":[[\"$\",\"$L5\",null,{\"children\":[[\"$\",\"$L6\",null,{\"repo\":\"beacon\"}],[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$La\",null,{}]]}],[\"$\",\"$Lb\",null,{}]]}],[\"$\",\"$Lc\",null,{\"currentVersion\":\"0.1.73\"}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L8\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L9\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@f\"}]}]]}],{},null,false,null]},null,false,\"$@10\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L11\",null,{\"children\":\"$L12\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L13\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L14\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$15\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"mB9lqGEsIvB7tTvv9GU48\"}\n"])</script><script>self.__next_f.push([1,"16:[]\n10:\"$W16\"\n"])</script><script>self.__next_f.push([1,"12:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"17:I[86869,[],\"IconMark\"]\nf:null\n14:[[\"$\",\"title\",\"0\",{\"children\":\"Beacon\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A local control panel for the repository you're working in\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?bb93a1375ed3c298\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"link\",\"3\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?f9d64651576bd776\",\"type\":\"image/png\",\"sizes\":\"180x180\"}],[\"$\",\"$L17\",\"4\",{}]]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-
|
|
1
|
+
<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-6c27b0ed1ac1459c.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-cef5038dc7aa126a.js" async=""></script><script src="/_next/static/chunks/main-app-1a32dc335629e4e4.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-6c27b0ed1ac1459c.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"mB9lqGEsIvB7tTvv9GU48\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__RSC_SERVER_MANIFEST="{\"node\":{\"
|
|
1
|
+
self.__RSC_SERVER_MANIFEST="{\"node\":{\"4018bb9209be0593fb3017fcabb53d8970fafb0025\":{\"workers\":{\"app/learn/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/map/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"38922\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"deleteNodeAction\"},\"402b82a5c1ab665363bc727c3e0f23ac01b348ef56\":{\"workers\":{\"app/learn/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/map/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"38922\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"createNodeAction\"},\"40c46c5ab52be0971ab5fc01fd43e501fd222ed88d\":{\"workers\":{\"app/learn/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/map/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"38922\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"acceptSuggestionAction\"},\"40cf4364f38906eec8a03d732d63161274387bd876\":{\"workers\":{\"app/learn/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/map/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"38922\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"cancelAction\"},\"40df23cdaea462a1f8f6ca4e19f43857fff233360a\":{\"workers\":{\"app/learn/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/map/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"38922\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"deprioritizeAction\"},\"60006ced82c5d2d01013055095b37c3c62f6216e30\":{\"workers\":{\"app/learn/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/map/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"38922\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"updateNodeAction\"},\"6087919f5d822e0289db3ae36e539eca370dff52ef\":{\"workers\":{\"app/learn/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/map/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/s/[token]/page\":{\"moduleId\":\"38922\",\"async\":true},\"app/plan/page\":{\"moduleId\":\"38922\",\"async\":true}},\"filename\":\"app/actions/nodes.ts\",\"exportedName\":\"setStatusAction\"}},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"node":{"
|
|
1
|
+
{"node":{"4018bb9209be0593fb3017fcabb53d8970fafb0025":{"workers":{"app/learn/page":{"moduleId":"38922","async":true},"app/map/page":{"moduleId":"38922","async":true},"app/s/[token]/page":{"moduleId":"38922","async":true},"app/plan/page":{"moduleId":"38922","async":true}},"filename":"app/actions/nodes.ts","exportedName":"deleteNodeAction"},"402b82a5c1ab665363bc727c3e0f23ac01b348ef56":{"workers":{"app/learn/page":{"moduleId":"38922","async":true},"app/map/page":{"moduleId":"38922","async":true},"app/s/[token]/page":{"moduleId":"38922","async":true},"app/plan/page":{"moduleId":"38922","async":true}},"filename":"app/actions/nodes.ts","exportedName":"createNodeAction"},"40c46c5ab52be0971ab5fc01fd43e501fd222ed88d":{"workers":{"app/learn/page":{"moduleId":"38922","async":true},"app/map/page":{"moduleId":"38922","async":true},"app/s/[token]/page":{"moduleId":"38922","async":true},"app/plan/page":{"moduleId":"38922","async":true}},"filename":"app/actions/nodes.ts","exportedName":"acceptSuggestionAction"},"40cf4364f38906eec8a03d732d63161274387bd876":{"workers":{"app/learn/page":{"moduleId":"38922","async":true},"app/map/page":{"moduleId":"38922","async":true},"app/s/[token]/page":{"moduleId":"38922","async":true},"app/plan/page":{"moduleId":"38922","async":true}},"filename":"app/actions/nodes.ts","exportedName":"cancelAction"},"40df23cdaea462a1f8f6ca4e19f43857fff233360a":{"workers":{"app/learn/page":{"moduleId":"38922","async":true},"app/map/page":{"moduleId":"38922","async":true},"app/s/[token]/page":{"moduleId":"38922","async":true},"app/plan/page":{"moduleId":"38922","async":true}},"filename":"app/actions/nodes.ts","exportedName":"deprioritizeAction"},"60006ced82c5d2d01013055095b37c3c62f6216e30":{"workers":{"app/learn/page":{"moduleId":"38922","async":true},"app/map/page":{"moduleId":"38922","async":true},"app/s/[token]/page":{"moduleId":"38922","async":true},"app/plan/page":{"moduleId":"38922","async":true}},"filename":"app/actions/nodes.ts","exportedName":"updateNodeAction"},"6087919f5d822e0289db3ae36e539eca370dff52ef":{"workers":{"app/learn/page":{"moduleId":"38922","async":true},"app/map/page":{"moduleId":"38922","async":true},"app/s/[token]/page":{"moduleId":"38922","async":true},"app/plan/page":{"moduleId":"38922","async":true}},"filename":"app/actions/nodes.ts","exportedName":"setStatusAction"}},"edge":{},"encryptionKey":"bgE5zwt8clrpNNIavtKKXZCd7oCpT86NkLMbKVyTGKo="}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4853],{44853:(e,t,n)=>{n.d(t,{DbMapClient:()=>ek});var a=n(95155),s=n(12115),o=n(80277),l=n(73321),i=n(81750),r=n(6266);n(53255);var d=n(32133),c=n(81499),m=n(51128),u=n(65738),p=n(9005),h=n(2125),f=n(91337),x=n(18874);let b=(0,s.createContext)(null);function g(){let e=(0,s.useContext)(b);if(!e)throw Error("useDbEdit must be used inside DbEditContext");return e}var y=n(29523),j=n(70221),k=n(95635),w=n(17918);let v={danger:"bg-red-500/15 text-red-300",warn:"bg-amber-500/15 text-amber-300"};function N({badges:e,className:t}){return e.length?(0,a.jsx)("span",{className:(0,f.cn)("flex shrink-0 items-center gap-0.5",t),children:e.map(e=>(0,a.jsx)("span",{title:e.title,className:(0,f.cn)("rounded px-1 text-[8px] font-semibold uppercase tracking-wide",v[e.tone]),children:e.label},e.label))}):null}let C=/pass(word)?|token|secret|api[_-]?key|credential|priv(ate)?[_-]?key|hash|salt/i,T=/auth|login|logout|session|token|password|oauth|sso|credential/i,M="nodrag nopan",S=k.x;function E({onClick:e,title:t}){return(0,a.jsx)("button",{type:"button",title:t,onClick:t=>{t.stopPropagation(),e()},className:(0,f.cn)(M,"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,a.jsx)(d.A,{className:"size-3"})})}function I({c:e,fkTargets:t}){let n=t?.[e.name];return(0,a.jsx)("span",{title:n?`→ ${n}`:e.type,className:"ml-auto min-w-0 truncate font-mono text-[11px] text-muted-foreground/80",children:n?(0,a.jsxs)(a.Fragment,{children:["→\xa0",n]}):e.type})}let $=(0,s.memo)(function({id:e,data:t,selected:n}){var o;let l,i,r="DRAFT"===t.source,d="added"===t.diffStatus?"#7bd389":"modified"===t.diffStatus?"#ffb86b":"#4ea1ff",b="added"===t.diffStatus||"modified"===t.diffStatus,v="added"===t.diffStatus?"new":"modified"===t.diffStatus?"modify":"in plan",T=t.diffChanges?.length?t.diffChanges.join("\n"):"in this plan — no column change",$=r?d:(0,x.qA)(t.domain),A=(o={domain:t.domain,columns:t.columns},l=[],(i=o.columns.filter(e=>C.test(e.name)).map(e=>e.name)).length&&l.push({label:"secrets",tone:"danger",title:`stores credentials: ${i.join(", ")}`}),o.domain&&/auth/i.test(o.domain)&&l.push({label:"auth",tone:"warn",title:"auth-domain table"}),l),P=g(),[z,D]=(0,s.useState)(t.name),[F,R]=(0,s.useState)(t.columns),[O,L]=(0,s.useState)(!1);(0,s.useEffect)(()=>{D(t.name),R(t.columns)},[t.rev]);let K=e=>e.stopPropagation(),B=t=>{R(t),P.patchTable(e,{columns:t})},H=(t.pins??[]).filter(e=>null===e.column),_=e=>(t.pins??[]).filter(t=>t.column===e),Z=function(e,t,n,a=!1,s){return Math.min(312,Math.max(240,Math.round(8*e.length)+90,...t.map(e=>{if(a){let t=s?.[e.name],a=n?.[e.name];return Math.round(7.3*Math.max(6,e.name.length+1)+(a?(a.length+2)*8:t?.kind==="modified"?8*t.detail.length:64))+94}let t=n?.[e.name]?n[e.name].length+2:e.type.length;return Math.round(7.3*e.name.length+6.7*t)+64})))}(t.name,r?F:t.columns,t.fkTargets,r,t.diffColumns),U=(0,f.cn)("relative rounded-xl border bg-[#161618]/95 text-card-foreground shadow-[0_18px_50px_-22px_rgba(0,0,0,0.9)] backdrop-blur",n&&"ring-2 ring-[var(--accent,#f5b942)]"),q=(0,y.k)(j.fE);return"full"!==q?(0,a.jsxs)("div",{className:(0,f.cn)(U,"border-white/10 px-3 py-2.5","far"===q&&!P.readOnly&&"!opacity-0"),style:{width:Z},children:[(0,a.jsx)(k.x,{}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"inline-block size-2 shrink-0 rounded-full",style:{background:$}}),(0,a.jsx)("span",{className:"truncate font-mono text-[15px] font-semibold",children:t.name})]})]}):r?(0,a.jsxs)("div",{className:(0,f.cn)(U,"group/card"),style:{width:Z,borderColor:`${d}59`},children:[(0,a.jsx)(S,{}),(0,a.jsxs)("div",{className:"group/row relative flex items-center gap-1.5 rounded-t-[11px] px-3 py-2",style:{background:`${d}14`},children:[(0,a.jsx)("input",{value:z,onChange:e=>D(e.target.value),onBlur:()=>{let n=z.trim();n&&n!==t.name&&P.patchTable(e,{name:n})},onKeyDown:e=>{K(e),"Enter"===e.key&&e.currentTarget.blur()},placeholder:"table",className:(0,f.cn)(M,"min-w-0 flex-1 bg-transparent font-mono text-[13px] font-semibold tracking-tight outline-none")}),(0,a.jsx)(N,{badges:A}),(0,a.jsx)("span",{title:T,className:(0,f.cn)("shrink-0 rounded-md border px-1.5 py-px font-mono text-[9px] font-semibold uppercase tracking-[0.14em]",!b&&"border-white/15 bg-white/5 text-muted-foreground"),style:b?{background:`${d}1f`,borderColor:`${d}55`,color:d}:void 0,children:v}),(0,a.jsx)("button",{type:"button",onClick:t=>{K(t),O?P.deleteTable(e):L(!0)},onBlur:()=>L(!1),title:"Delete table",className:(0,f.cn)(M,"shrink-0 transition-all",O?"text-red-300":"text-muted-foreground opacity-0 hover:text-red-300 group-hover/card:opacity-100"),children:(0,a.jsx)(u.A,{className:"size-3"})}),H.length>0?(0,a.jsx)(w.e0,{pins:H,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)(E,{title:`Comment on ${t.name}`,onClick:()=>t.onComment?.(t.name)})]}),(0,a.jsxs)("div",{className:"divide-y divide-white/[0.05]",children:[F.map((e,n)=>{let s=_(e.name),o=t.diffColumns?.[e.name],l=o?.kind==="added"?{background:"#7bd38914",boxShadow:"inset 2px 0 0 #7bd389"}:o?.kind==="modified"?{background:"#ffb86b14",boxShadow:"inset 2px 0 0 #ffb86b"}:void 0;return(0,a.jsxs)("div",{style:l,className:"group/row relative flex items-center gap-1.5 px-3 py-[5px] text-[12px]",children:[(0,a.jsx)("button",{type:"button",onClick:e=>{K(e),B(F.map((e,t)=>t===n?{...e,isPk:!e.isPk}:e))},title:"Primary key",className:(0,f.cn)(M,"shrink-0",e.isPk?"text-amber-300/90":"text-muted-foreground/40 hover:text-amber-300"),children:(0,a.jsx)(c.A,{className:"size-3"})}),(0,a.jsx)("button",{type:"button",onClick:e=>{K(e),B(F.map((e,t)=>t===n?{...e,isFk:!e.isFk}:e))},title:"Foreign key",className:(0,f.cn)(M,"shrink-0",e.isFk?"text-sky-400/80":"text-muted-foreground/40 hover:text-sky-400"),children:(0,a.jsx)(m.A,{className:"size-3"})}),(0,a.jsx)("input",{value:e.name,onChange:e=>R(t=>t.map((t,a)=>a===n?{...t,name:e.target.value}:t)),onBlur:()=>B(F),onKeyDown:K,placeholder:"column",style:{width:`${Math.max(6,e.name.length+1)}ch`},className:(0,f.cn)(M,"shrink-0 bg-transparent font-mono outline-none")}),(0,a.jsx)("span",{"aria-hidden":!0,className:"flex-1"}),t.fkTargets?.[e.name]?(0,a.jsxs)("span",{title:`→ ${t.fkTargets[e.name]}`,className:"min-w-0 shrink truncate text-right font-mono text-[11px] text-muted-foreground/80",children:["→\xa0",t.fkTargets[e.name]]}):o?.kind==="modified"?(0,a.jsx)("span",{title:`was changed — ${o.detail}`,className:(0,f.cn)(M,"min-w-0 shrink truncate text-right font-mono text-[11px] font-medium text-[#ffb86b]"),children:o.detail}):(0,a.jsx)("input",{value:e.type,onChange:e=>R(t=>t.map((t,a)=>a===n?{...t,type:e.target.value}:t)),onBlur:()=>B(F),onKeyDown:K,placeholder:"type",title:e.type,className:(0,f.cn)(M,"w-16 min-w-0 shrink bg-transparent text-right font-mono text-[11px] outline-none",o?.kind==="added"?"text-[#7bd389]":"text-muted-foreground/80")}),(0,a.jsx)("button",{type:"button",onClick:e=>{K(e),B(F.filter((e,t)=>t!==n))},title:"Remove column",className:(0,f.cn)(M,"shrink-0 text-muted-foreground/40 opacity-0 transition-opacity hover:text-red-300 group-hover/card:opacity-100"),children:(0,a.jsx)(p.A,{className:"size-3"})}),s.length>0?(0,a.jsx)(w.e0,{pins:s,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)(E,{title:`Comment on ${t.name}.${e.name}`,onClick:()=>t.onComment?.(`${t.name}.${e.name}`)})]},n)}),(0,a.jsxs)("button",{type:"button",onClick:e=>{K(e),B([...F,{name:"",type:"text",isPk:!1,isFk:!1,nullable:!0,note:null}])},className:(0,f.cn)(M,"flex w-full items-center gap-1 px-3 py-1.5 text-[10px] text-muted-foreground hover:text-foreground"),children:[(0,a.jsx)(h.A,{className:"size-3"})," column"]})]})]}):(0,a.jsxs)("div",{className:U,style:{width:Z,borderColor:`${$}3d`},children:[(0,a.jsx)(S,{}),(0,a.jsxs)("div",{className:"group/row relative flex items-center justify-between rounded-t-[11px] px-3 py-2",style:{background:`${$}14`},children:[(0,a.jsxs)("span",{className:"flex min-w-0 flex-1 items-center gap-1.5 font-mono text-[13px] font-semibold tracking-tight",children:["INTROSPECTION"===t.source&&(0,a.jsx)("span",{title:"live — derived from your code",className:"inline-block size-1.5 shrink-0 rounded-full bg-emerald-400"}),(0,a.jsx)("span",{className:"truncate",title:t.name,children:t.name})]}),(0,a.jsxs)("span",{className:"flex shrink-0 items-center gap-1.5",children:["INTROSPECTION"!==t.source&&(0,a.jsx)("span",{title:"planned — not yet detected in code",className:"shrink-0 rounded-md border border-[#f5b942]/35 bg-[#f5b942]/10 px-1.5 py-px font-mono text-[9px] font-semibold uppercase tracking-[0.14em] text-[#f5b942]",children:"planned"}),(0,a.jsx)(N,{badges:A}),t.domain&&(0,a.jsx)("span",{className:"text-[9px] uppercase tracking-[0.14em]",style:{color:$},children:t.domain})]}),H.length>0?(0,a.jsx)(w.e0,{pins:H,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)(E,{title:`Comment on ${t.name}`,onClick:()=>t.onComment?.(t.name)})]}),(0,a.jsx)("div",{className:"divide-y divide-white/[0.05]",children:t.columns.map(e=>{let n=_(e.name);return(0,a.jsxs)("div",{className:"group/row relative flex items-center gap-2 px-3 py-[7px] text-[12px]",children:[e.isPk?(0,a.jsx)(c.A,{className:"size-3 shrink-0 text-amber-300/90"}):e.isFk?(0,a.jsx)(m.A,{className:"size-3 shrink-0 text-sky-400/80"}):(0,a.jsx)("span",{className:"size-3 shrink-0"}),(0,a.jsx)("span",{className:"shrink-0 whitespace-nowrap font-mono",children:e.name}),(0,a.jsx)(I,{c:e,fkTargets:t.fkTargets}),n.length>0?(0,a.jsx)(w.e0,{pins:n,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)(E,{title:`Comment on ${t.name}.${e.name}`,onClick:()=>t.onComment?.(`${t.name}.${e.name}`)})]},e.name)})})]})}),A="nodrag nopan",P=["GET","POST","PUT","PATCH","DELETE"],z=(0,s.memo)(function({id:e,data:t,selected:n}){var o;let l,i=x.e6[t.method]??"#8a8a8a",r="DRAFT"===t.source,c="added"===t.diffStatus?"#7bd389":"modified"===t.diffStatus?"#ffb86b":"#4ea1ff",m="added"===t.diffStatus?"new":"modified"===t.diffStatus?"changed":"draft",p=t.diffChanges?.length?t.diffChanges.join("\n"):"draft",h=(o={method:t.method,domain:t.domain,path:t.path},l=[],/^delete$/i.test(o.method.trim())&&l.push({label:"DELETE",tone:"danger",title:"destructive: deletes data"}),(o.domain&&/auth/i.test(o.domain)||T.test(o.path))&&l.push({label:"auth",tone:"warn",title:"auth-related endpoint"}),l),b=g(),[v,C]=(0,s.useState)(t.path),[M,S]=(0,s.useState)(!1);(0,s.useEffect)(()=>{C(t.path)},[t.rev]);let E=e=>e.stopPropagation(),I=(0,y.k)(j.fE);return"full"!==I?(0,a.jsxs)("div",{className:(0,f.cn)("relative flex w-[300px] items-center gap-2 rounded-lg border border-white/10 bg-[#161618]/95 px-2.5 py-2 text-card-foreground backdrop-blur",n&&"ring-2 ring-[var(--accent,#f5b942)]","far"===I&&!b.readOnly&&"!opacity-0"),children:[(0,a.jsx)(k.x,{}),(0,a.jsx)("span",{className:"shrink-0 font-mono text-[12px] font-bold",style:{color:i},children:t.method}),(0,a.jsx)("span",{title:t.path,className:"truncate font-mono text-[13px]",children:t.path})]}):(0,a.jsxs)("div",{className:(0,f.cn)("group relative flex w-[300px] items-center gap-2 rounded-lg border bg-[#161618]/95 px-2.5 py-1.5 text-card-foreground shadow-[0_12px_36px_-18px_rgba(0,0,0,0.9)] backdrop-blur",r?"border-dashed":"border-white/10",n&&"ring-2 ring-[var(--accent,#f5b942)]"),style:r?{borderColor:`${c}66`,background:`${c}0f`}:void 0,children:[(0,a.jsx)(k.x,{}),"INTROSPECTION"===t.source&&(0,a.jsx)("span",{title:"live — derived from your code",className:"inline-block size-1.5 shrink-0 rounded-full bg-emerald-400"}),r?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("select",{value:t.method,onChange:t=>b.patchEndpoint(e,{method:t.target.value}),onPointerDown:E,className:(0,f.cn)(A,"shrink-0 rounded bg-transparent text-[10px] font-bold outline-none"),style:{color:i},title:"Method",children:P.map(e=>(0,a.jsx)("option",{value:e,className:"bg-card text-foreground",children:e},e))}),(0,a.jsx)("input",{value:v,title:v,onChange:e=>C(e.target.value),onBlur:()=>{let n=v.trim();n&&n!==t.path&&b.patchEndpoint(e,{path:n})},onKeyDown:e=>{E(e),"Enter"===e.key&&e.currentTarget.blur()},className:(0,f.cn)(A,"min-w-0 flex-1 bg-transparent font-mono text-[11px] outline-none")}),(0,a.jsx)(N,{badges:h}),(0,a.jsx)("span",{title:p,className:"shrink-0 rounded px-1 py-0.5 text-[8px] font-semibold uppercase",style:{background:`${c}26`,color:c},children:m}),(0,a.jsx)("button",{type:"button",onClick:t=>{E(t),M?b.deleteEndpoint(e):S(!0)},onBlur:()=>S(!1),title:"Delete",className:(0,f.cn)(A,"shrink-0 transition-colors",M?"text-red-300":"text-muted-foreground hover:text-red-300"),children:(0,a.jsx)(u.A,{className:"size-3"})})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[10px] font-bold",style:{background:`${i}22`,color:i},children:t.method}),(0,a.jsx)("span",{title:t.path,className:"min-w-0 flex-1 break-all font-mono text-[11px] leading-tight [-webkit-box-orient:vertical] [-webkit-line-clamp:2] [display:-webkit-box] overflow-hidden",children:t.path}),"INTROSPECTION"!==t.source&&(0,a.jsx)("span",{title:"planned — not yet detected in code",className:"shrink-0 rounded-md border border-[#f5b942]/35 bg-[#f5b942]/10 px-1.5 py-px font-mono text-[8px] font-semibold uppercase tracking-[0.14em] text-[#f5b942]",children:"planned"}),(0,a.jsx)(N,{badges:h}),(0,a.jsx)("button",{type:"button",onClick:t=>{E(t),M?b.deleteRealEndpoint(e):S(!0)},onBlur:()=>S(!1),title:M?"Click again to delete":"Delete endpoint",className:(0,f.cn)(A,"shrink-0 opacity-0 transition-opacity group-hover:opacity-100",M?"text-red-300 opacity-100":"text-muted-foreground hover:text-red-300"),children:(0,a.jsx)(u.A,{className:"size-3"})})]}),(t.pins?.length??0)>0?(0,a.jsx)(w.e0,{pins:t.pins,onPinClick:t.onPinClick}):t.onComment&&(0,a.jsx)("button",{type:"button",title:`Comment on ${t.method} ${t.path}`,onClick:e=>{E(e),t.onComment?.(`${t.method} ${t.path}`)},className:(0,f.cn)(A,"absolute -right-3 top-1/2 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-[#242428] text-muted-foreground opacity-0 shadow-md transition-all group-hover:opacity-100 hover:border-[#ff7a45]/50 hover:text-[#ff7a45]"),children:(0,a.jsx)(d.A,{className:"size-3"})})]})});var D=n(54698),F=n(82099),R=n(4474);let O=[{id:"claude",label:"Prompt p/ Claude Code",fn:function(e){let t=["Implement this database schema in this project, following its existing stack and conventions:",""];for(let n of e.tables){let e=`Table \`${n.name}\``+(n.domain?` (domain: ${n.domain})`:"")+(n.description?` — ${n.description}`:"");for(let a of(t.push(e),n.columns)){let e=[a.isPk&&"PK",a.isFk&&"FK",!1===a.nullable&&"NOT NULL"].filter(Boolean).join(", ");t.push(` - ${a.name}: ${a.type}`+(e?` [${e}]`:"")+(a.note?` — ${a.note}`:""))}t.push("")}if(e.relations.length){for(let n of(t.push("Foreign keys:"),e.relations))t.push(` - ${n.fromTable}.${n.fromColumn} -> ${n.toTable}.${n.toColumn}`);t.push("")}return t.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."),t.join("\n")}},{id:"dbml",label:"DBML",fn:function(e){let t=[];for(let n of e.tables){for(let e of(t.push(`Table ${n.name} {`),n.columns)){let n=[e.isPk&&"pk",!1===e.nullable&&!e.isPk&&"not null",e.note&&`note: '${e.note.replace(/'/g,"")}'`].filter(Boolean).join(", ");t.push(` ${e.name} ${e.type}`+(n?` [${n}]`:""))}t.push("}","")}for(let n of e.relations)t.push(`Ref: ${n.fromTable}.${n.fromColumn} > ${n.toTable}.${n.toColumn}`);return t.join("\n").trim()}},{id:"sql",label:"SQL DDL",fn:function(e){let t=[];for(let n of e.tables){t.push(`CREATE TABLE ${n.name} (`);let a=n.columns.map(e=>{let t=[` ${e.name} ${e.type}`];return e.isPk?t.push("PRIMARY KEY"):!1===e.nullable&&t.push("NOT NULL"),t.join(" ")}),s=e.relations.filter(e=>e.fromTable===n.name).map(e=>` FOREIGN KEY (${e.fromColumn}) REFERENCES ${e.toTable}(${e.toColumn})`);t.push([...a,...s].join(",\n")),t.push(");","")}return t.join("\n").trim()}}];function L({draftGraph:e}){let[t,n]=(0,s.useState)(null);if(0===e.tables.length)return null;async function o(t){await navigator.clipboard.writeText(t.fn(e)).catch(()=>{}),n(t.id),setTimeout(()=>n(null),1500)}return(0,a.jsxs)("div",{className:"space-y-2 rounded-xl border border-sky-400/20 bg-sky-500/[0.04] p-3",children:[(0,a.jsxs)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-sky-300",children:["Rascunho \xb7 ",e.tables.length," tabelas"]}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,a.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:"copiar:"}),O.map(e=>(0,a.jsx)(R.$,{size:"sm",variant:"outline",className:"h-6 px-2 text-[11px]",onClick:()=>o(e),children:t===e.id?"✓":e.label},e.id))]})]})}function K({selected:e,tables:t,relations:n,endpoints:s,draftGraph:o,onClose:l,commentsContent:i,commentsCount:r=0,activeTab:c,onTabChange:m,onAddComment:u,topOffset:h}){let f,x,b=new Map(t.map(e=>[e.id,e.name])),g=!!i,y=c??"details",j=e?.kind==="table"?t.find(t=>t.id===e.id)?.name??null:e?.kind==="endpoint"&&(x=s.find(t=>t.id===e.id))?`${x.method} ${x.path}`:null;if(e?.kind==="table"){let o=t.find(t=>t.id===e.id);f=o?(0,a.jsx)(H,{table:o,relations:n,endpoints:s,nameById:b}):null}else if(e?.kind==="endpoint"){let t=s.find(t=>t.id===e.id);f=t?(0,a.jsx)(_,{ep:t,nameById:b}):null}else f=(0,a.jsx)(Z,{tables:t,relations:n,endpoints:s});return(0,a.jsxs)(F.b,{className:"absolute right-3 z-10 flex w-80 flex-col rounded-2xl",style:{top:h??12,maxHeight:`calc(100% - ${(h??12)+12}px)`},children:[g?(0,a.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-1 py-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,a.jsx)(B,{active:"details"===y,onClick:()=>m?.("details"),children:"Details"}),(0,a.jsxs)(B,{active:"comments"===y,onClick:()=>m?.("comments"),children:["Comments",r>0&&(0,a.jsx)("span",{className:"ml-1 rounded-full bg-white/10 px-1 text-[9px] font-semibold leading-4",children:r})]})]}),(0,a.jsx)("button",{onClick:l,title:"Close panel",className:"mr-1 rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,a.jsx)(p.A,{className:"size-4"})})]}):(0,a.jsxs)("div",{className:"flex items-center justify-between border-b border-white/10 px-3.5 py-2.5",children:[(0,a.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground",children:"Panel"}),(0,a.jsx)("button",{onClick:l,title:"Close panel",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-white/10 hover:text-foreground",children:(0,a.jsx)(p.A,{className:"size-4"})})]}),(0,a.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:"comments"===y&&g?(0,a.jsx)("div",{className:"p-3",children:i}):(0,a.jsxs)(a.Fragment,{children:[o.tables.length>0&&(0,a.jsx)("div",{className:"border-b border-white/10 p-3.5",children:(0,a.jsx)(L,{draftGraph:o})}),(0,a.jsxs)("div",{className:"p-4",children:[u&&j&&(0,a.jsxs)("button",{type:"button",onClick:()=>u(j),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,a.jsx)(d.A,{className:"size-3.5"}),"Comment on this ",e?.kind==="endpoint"?"endpoint":"table"]}),f]})]})})]})}function B({active:e,onClick:t,children:n}){return(0,a.jsx)("button",{type:"button",onClick:t,className:(0,f.cn)("flex items-center gap-1 rounded-md px-2.5 py-1 text-[11px] font-medium transition-colors",e?"bg-white/10 text-foreground":"text-muted-foreground hover:text-foreground"),children:n})}function H({table:e,relations:t,endpoints:n,nameById:s}){let o=t.filter(t=>t.fromTableId===e.id),l=t.filter(t=>t.toTableId===e.id),i=n.map(t=>({e:t,u:t.tables.find(t=>t.tableId===e.id)})).filter(e=>e.u);return(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-xs uppercase tracking-wide",style:{color:(0,x.qA)(e.domain)},children:e.domain??"table"}),(0,a.jsx)("h2",{className:"font-mono text-lg font-semibold",children:e.name}),e.description&&(0,a.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:e.description})]}),(0,a.jsx)(U,{title:`Columns (${e.columns.length})`,children:(0,a.jsx)("ul",{className:"space-y-0.5",children:e.columns.map(e=>(0,a.jsxs)("li",{className:"flex items-center gap-1.5 text-xs",children:[e.isPk?(0,a.jsx)(c.A,{className:"size-3 text-amber-400"}):e.isFk?(0,a.jsx)(m.A,{className:"size-3 text-sky-400"}):(0,a.jsx)("span",{className:"size-3"}),(0,a.jsx)("span",{className:"font-mono",children:e.name}),(0,a.jsxs)("span",{className:"ml-auto font-mono text-[10px] text-muted-foreground",children:[e.type,!e.nullable&&" \xb7NN"]})]},e.name))})}),o.length>0&&(0,a.jsx)(U,{title:"References (FK out)",children:(0,a.jsx)("ul",{className:"space-y-1 text-xs",children:o.map(e=>(0,a.jsxs)("li",{className:"font-mono text-muted-foreground",children:[e.fromColumn," → ",s.get(e.toTableId),".",e.toColumn]},e.id))})}),l.length>0&&(0,a.jsx)(U,{title:"Referenced by (FK in)",children:(0,a.jsx)("ul",{className:"space-y-1 text-xs",children:l.map(e=>(0,a.jsxs)("li",{className:"font-mono text-muted-foreground",children:[s.get(e.fromTableId),".",e.fromColumn]},e.id))})}),i.length>0&&(0,a.jsx)(U,{title:`Used by endpoints (${i.length})`,children:(0,a.jsx)("ul",{className:"space-y-1 text-xs",children:i.map(({e,u:t})=>(0,a.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{style:{color:x.e6[e.method]},className:"font-bold",children:e.method}),(0,a.jsx)("span",{className:"truncate font-mono",children:e.path}),(0,a.jsx)("span",{className:"ml-auto",style:{color:x.ru[t.access]},children:t.access})]},e.id))})})]})}function _({ep:e,nameById:t}){return(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[11px] font-bold",style:{background:`${x.e6[e.method]}22`,color:x.e6[e.method]},children:e.method}),(0,a.jsx)("h2",{className:"mt-2 font-mono text-base font-semibold",children:e.path}),e.description&&(0,a.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:e.description})]}),(0,a.jsx)(U,{title:`Tables used (${e.tables.length})`,children:(0,a.jsx)("ul",{className:"space-y-1 text-xs",children:e.tables.map(e=>(0,a.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"font-mono",children:t.get(e.tableId)}),(0,a.jsx)("span",{className:"ml-auto",style:{color:x.ru[e.access]},children:e.access})]},e.tableId))})})]})}function Z({tables:e,relations:t,endpoints:n}){return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-sm font-semibold",children:"Database"}),(0,a.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,a.jsxs)("dl",{className:"grid grid-cols-3 gap-2 text-center",children:[(0,a.jsx)(q,{label:"tables",value:e.length}),(0,a.jsx)(q,{label:"FKs",value:t.length}),(0,a.jsx)(q,{label:"endpoints",value:n.length})]}),(0,a.jsx)(U,{title:"Legend",children:(0,a.jsxs)("ul",{className:"space-y-1 text-xs text-muted-foreground",children:[(0,a.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,a.jsx)(c.A,{className:"size-3 text-amber-400"})," primary key"]}),(0,a.jsxs)("li",{className:"flex items-center gap-1.5",children:[(0,a.jsx)(m.A,{className:"size-3 text-sky-400"})," foreign key"]}),(0,a.jsx)("li",{children:"— gray line: FK relation between tables"}),(0,a.jsx)("li",{children:"– – dashed line: endpoint uses table (read/write)"})]})})]})}function U({title:e,children:t}){return(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:e}),t]})}function q({label:e,value:t}){return(0,a.jsxs)("div",{className:"rounded-lg border border-white/10 bg-white/[0.03] py-2",children:[(0,a.jsx)("div",{className:"text-lg font-semibold",children:t}),(0,a.jsx)("div",{className:"text-[10px] uppercase tracking-wide text-muted-foreground",children:e})]})}var W=n(56614),G=n(9991),J=n(40654),Q=n(14983),V=n(62311);let X=new Set(["GET","HEAD","OPTIONS"]);var Y=n(44267),ee=n(94014);function et(e){return 36+30*Math.max(0,e)+16}let en="Unattached",ea=e=>(e??"").trim()||"—";function es(e,t){let n=new Map(e.map(e=>[e.id,e.name])),a=new Map;for(let e of t)for(let t of e.uses)n.has(t.tableId)&&a.set(t.tableId,(a.get(t.tableId)??0)+1);return new Map(t.map(e=>[e.id,function(e,t,n){let a=new Map;for(let n of e.uses)t.has(n.tableId)&&a.set(n.tableId,(a.get(n.tableId)??0)+1);let s=null;for(let[e,o]of a){if(null===s){s=e;continue}let l=a.get(s);if(o>l){s=e;continue}if(o<l)continue;let i=n?.get(e)??0,r=n?.get(s)??0;i<r?s=e:i===r&&0>t.get(e).localeCompare(t.get(s))&&(s=e)}return s}(e,n,a)]))}let eo=(e,t)=>e.path.localeCompare(t.path)||e.method.localeCompare(t.method)||e.id.localeCompare(t.id);var el=n(70947);let ei=e=>e.trim().toLowerCase();var er=n(85618),ed=n(80846),ec=n(17356),em=n(45486),eu=n(15330),ep=n(60976),eh=n(64577),ef=n(24692),ex=n(45437);let eb={dbTable:$,endpoint:z,annotation:w.Sh},eg={deletable:ef.I,annotation:ex.L},ey="beacon:db-draft",ej={proposedAt:0,status:"pending",tables:[],relations:[],endpoints:[]};function ek({tables:e,relations:t,endpoints:n,draft:d,workspaceId:c,embedded:m=!1,diffBase:p,draftRef:h,onEdit:g,controlRef:k,commentsContent:v,commentsCount:N=0,onAddComment:C,annotations:T,onPinClick:M,onUpdateComment:S,onRemoveComment:E,boardAnnotations:I,readOnly:$=!1}){let A=(0,l.useRouter)(),P=e.length+(d?.tables.length??0),z=n.length+(d?.endpoints.length??0),[F,R]=(0,s.useState)(z>0&&(m||0===P)),[O,L]=(0,s.useState)(null),[B,H]=(0,s.useState)(null),[_,Z]=(0,s.useState)(null),[U,q]=(0,s.useState)(!1),[ef,ex]=(0,s.useState)(!1),[ew,ev]=(0,s.useState)("details"),[eN,eC]=(0,s.useState)(!1),[eT,eM]=(0,s.useState)(""),eS=(0,s.useRef)(null),{tool:eE,setTool:eI,flowProps:e$}=(0,o.e)();(0,s.useEffect)(()=>{if(!$)return;let e=0,t=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>eS.current?.fitView({padding:.2,duration:0}))});return()=>{cancelAnimationFrame(t),cancelAnimationFrame(e)}},[$,d,F]),(0,s.useEffect)(()=>{if(k)return k.current={open:()=>{q(!0),ev("details")},close:()=>{q(!1),ev("details")},openComments:()=>{q(!0),ev("comments")}},()=>{k&&(k.current=null)}},[k]);let[eA,eP]=(0,s.useState)(new Set),[ez,eD]=(0,s.useState)("full"),[eF,eR]=(0,s.useState)(new Set),[eO,eL]=(0,s.useState)(new Set),[eK,eB]=(0,s.useState)(()=>({past:[],present:d??ej,future:[],rev:0,edited:!1})),eH=eK.present,e_=(0,s.useCallback)(e=>{eB(t=>{let n=e(t.present);return n===t.present?t:{past:[...t.past,t.present].slice(-100),present:n,future:[],rev:t.rev+1,edited:!0}})},[]),eZ=(0,s.useCallback)(e=>{eB(t=>{let n=e(t.present);return n===t.present?t:{...t,present:n}})},[]),eU=(0,s.useCallback)(()=>eB(e=>e.past.length?{past:e.past.slice(0,-1),present:e.past[e.past.length-1],future:[e.present,...e.future],rev:e.rev+1,edited:!0}:e),[]),eq=(0,s.useCallback)(()=>eB(e=>e.future.length?{past:[...e.past,e.present],present:e.future[0],future:e.future.slice(1),rev:e.rev+1,edited:!0}:e),[]),eW=(0,s.useCallback)(e=>eB(t=>({past:[],present:e,future:[],rev:t.rev+1,edited:!1})),[]),eG=(0,s.useRef)(!1),eJ=d?.proposedAt??0;(0,s.useEffect)(()=>{let e=null;if(eG.current)d&&d.proposedAt!==eH.proposedAt?e=d:!d&&(eH.tables.length>0||eH.endpoints.length>0)&&(e=ej);else{eG.current=!0;let t=null;try{let e=localStorage.getItem(ey);if(e){let n=JSON.parse(e);n.workspaceId===c&&n.doc&&d&&n.doc.proposedAt===d.proposedAt&&(t=n.doc)}}catch{}e=t??d??null}e&&eW(e)},[eJ]),(0,s.useEffect)(()=>{try{eH.tables.length>0||eH.endpoints.length>0?localStorage.setItem(ey,JSON.stringify({workspaceId:c,doc:eH})):localStorage.removeItem(ey)}catch{}},[eH,c]),(0,s.useEffect)(()=>{h&&(h.current=eH)},[h,eH]);let eQ=(0,s.useRef)(!1);(0,s.useEffect)(()=>{eK.edited&&!eQ.current&&(eQ.current=!0,g?.())},[eK.edited,g]);let eV=(0,s.useMemo)(()=>eH.tables.map(e=>({id:e.id,name:e.name,domain:e.domain,description:e.description,source:"DRAFT",x:e.x,y:e.y,columns:e.columns})),[eH]),eX=(0,s.useMemo)(()=>eH.endpoints.map(e=>({id:e.id,method:e.method,path:e.path,domain:e.domain,description:e.description,source:"DRAFT",x:e.x,y:e.y,tables:e.links.map(e=>({tableId:e.tableId,access:e.access}))})),[eH]),eY=(0,s.useMemo)(()=>[...e,...eV],[e,eV]),e0=(0,s.useMemo)(()=>[...n,...eX],[n,eX]),e1=(0,s.useMemo)(()=>(function(e,t,n={}){let a=es(e,t),s=new Map,o=[];for(let e of[...t].sort(eo)){let t=a.get(e.id)??null;if(t){let n=s.get(t);n?n.push(e):s.set(t,[e])}else o.push(e)}let l=e=>{let t=s.get(e.id)?.length??0;return et(e.columnCount)+(t?10+60*t:0)+30},i=Array.from(new Set(e.map(e=>ea(e.domain)))),r=i.filter(e=>"—"!==e).sort(),d=i.includes("—")?[...r,"—"]:r,c=[];for(let t of d){let n=e.filter(e=>ea(e.domain)===t).sort((e,t)=>e.name.localeCompare(t.name)),a=n.reduce((e,t)=>e+l(t),0),s=Math.max(1,Math.min(12,n.length,Math.round(Math.sqrt(a/320)))),o=Array(s).fill(0),i=new Map;for(let e of n){let t=0;for(let e=1;e<s;e++)o[e]<o[t]&&(t=e);i.set(e.id,{x:320*t,y:o[t]}),o[t]+=l(e)}c.push({d:t,w:320*s,h:Math.max(...o,0),tableLocal:i})}let m=(0,ee.Xi)(c.map(e=>({id:e.d,w:e.w,h:e.h})),{gapX:84,gapY:72,viewportAspect:n.viewportAspect,minBandW:960,aspectSlack:1.7}),u=new Map,p=new Map,h=0;for(let t of c){let n=m.get(t.d);for(let a of e.filter(e=>t.tableLocal.has(e.id))){let e=t.tableLocal.get(a.id),o=n.x+e.x,l=n.y+e.y;u.set(a.id,{x:o,y:l}),(s.get(a.id)??[]).forEach((e,t)=>{p.set(e.id,{x:o,y:l+et(a.columnCount)+10+60*t})})}h=Math.max(h,n.y+t.h)}if(o.length){let e=h+72,t=Math.max(1,Math.min(4,Math.ceil(Math.sqrt(o.length/2))));o.forEach((n,a)=>{p.set(n.id,{x:a%t*300,y:e+60*Math.floor(a/t)})})}return{tables:u,endpoints:p}})(eY.map(e=>({id:e.id,name:e.name,domain:e.domain,columnCount:e.columns.length})),[]).tables,[eY]),e5=(0,s.useMemo)(()=>new Map,[]),e2=(0,s.useMemo)(()=>m?function(e,t){let n=new Map(e.map(e=>[ei(e.name),e])),a=new Map;for(let e of t){let t=n.get(ei(e.name));if(!t){a.set(e.id,{status:"added",changes:["new table"],columns:{}});continue}let{changes:s,columns:o}=function(e,t){let n=new Map(e.map(e=>[ei(e.name),e])),a=new Set(t.map(e=>ei(e.name))),s=[],o={};for(let e of t){let t=n.get(ei(e.name));if(!t){s.push(`+ column ${e.name} (${e.type})`),o[e.name]={kind:"added",detail:"new column"};continue}let a=[],l=[];if(ei(t.type)!==ei(e.type)&&(a.push(`type ${t.type}→${e.type}`),l.push(`${t.type}→${e.type}`)),t.isPk!==e.isPk){let t=e.isPk?"now PK":"no longer PK";a.push(t),l.push(t)}if(t.isFk!==e.isFk){let t=e.isFk?"now FK":"no longer FK";a.push(t),l.push(t)}if(t.nullable!==e.nullable){let t=e.nullable?"now nullable":"now required";a.push(t),l.push(t)}a.length&&(s.push(`~ column ${e.name}: ${a.join(", ")}`),o[e.name]={kind:"modified",detail:l.join(" \xb7 ")})}for(let t of e)a.has(ei(t.name))||s.push(`- column ${t.name}`);return{changes:s,columns:o}}(t.columns,e.columns);a.set(e.id,{status:s.length?"modified":"unchanged",changes:s,columns:o})}return a}(p?.tables??e,eV):e5,[m,p,e,eV,e5]),e3=(0,s.useMemo)(()=>m?function(e,t){let n=e=>`${ei(e.method)} ${ei(e.path)}`,a=new Set(e.map(n)),s=new Map;for(let e of t)s.set(e.id,a.has(n(e))?{status:"unchanged",changes:[],columns:{}}:{status:"added",changes:["new endpoint"],columns:{}});return s}(p?.endpoints??n,eX):e5,[m,p,n,eX,e5]),e4=(0,s.useMemo)(()=>[...t,...eH.relations.map(e=>({id:e.id,fromTableId:e.fromTableId,toTableId:e.toTableId,fromColumn:e.fromColumn,toColumn:e.toColumn,label:e.label}))],[t,eH.relations]),e6=(0,s.useMemo)(()=>{let e=new Map;for(let t of e0)for(let n of t.tables)e.set(n.tableId,(e.get(n.tableId)??0)+1);return e},[e0]),e8=(0,s.useMemo)(()=>{let e=new Map;return eY.forEach(t=>e.set(t.id,t.x)),e0.forEach(t=>e.set(t.id,t.x)),e},[eY,e0]),e9=(0,s.useMemo)(()=>{let e=new Map;return eY.forEach(t=>e.set(t.id,t.y)),e0.forEach(t=>e.set(t.id,t.y)),e},[eY,e0]),e7=(0,s.useMemo)(()=>{let e=new Map(eY.map(e=>[e.id,e.name])),t=new Map;for(let n of e4){let a=e.get(n.toTableId);if(!a)continue;let s=t.get(n.fromTableId)??{};s[n.fromColumn]=a,t.set(n.fromTableId,s)}return t},[e4,eY]),te=void 0!==I,[tt,tn]=(0,s.useState)(I??[]);(0,s.useEffect)(()=>{I&&tn(I)},[I]);let ta=(0,s.useMemo)(()=>({tables:eY.map(e=>({id:e.id,name:e.name,columns:e.columns.map(e=>e.name)})),endpoints:e0.map(e=>({id:e.id,method:e.method,path:e.path}))}),[eY,e0]),ts=(0,s.useMemo)(()=>{if(te){let e=new Set([...eY.map(e=>e.id),...e0.map(e=>e.id)]);return tt.filter(t=>e.has(t.targetId)).map((e,t)=>({id:e.id,n:t+1,targetId:e.targetId,column:e.columnName,text:e.body,x:e.x,y:e.y}))}let e=new Map((T??[]).map(e=>[e.id,e.comment]));return(0,D.m)(T??[],ta).map(t=>({id:t.annotationId,n:t.n,targetId:t.targetId,column:t.column,text:e.get(t.annotationId)??"",x:null,y:null}))},[te,tt,T,ta,eY,e0]),to=(0,s.useMemo)(()=>{let e=new Map;for(let t of ts){let n=e.get(t.targetId)??[];n.push({id:t.id,n:t.n,column:t.column}),e.set(t.targetId,n)}return e},[ts]),tl=(0,s.useMemo)(()=>new Map(ts.map(e=>[`anno-${e.id}`,e.targetId])),[ts]),ti=(0,s.useCallback)(async e=>{let t=(0,D.m)([{id:"_",excerpt:e}],ta)[0];if(!t)return;let n=await fetch("/api/board-annotations",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({targetKind:t.kind,targetId:t.targetId,columnName:t.column??void 0})});if(n.ok){let e=await n.json();tn(t=>[...t,e])}},[ta]),tr=(0,s.useCallback)((e,t)=>{tn(n=>n.map(n=>n.id===e?{...n,...t}:n)),fetch(`/api/board-annotations/${e}`,{method:"PATCH",headers:{"content-type":"application/json"},body:JSON.stringify(t)})},[]),td=(0,s.useCallback)(e=>{tn(t=>t.filter(t=>t.id!==e)),fetch(`/api/board-annotations/${e}`,{method:"DELETE"})},[]),tc=te?ti:C,tm=(0,s.useCallback)((e,t)=>{let n=(e8.get(t)??0)-(e8.get(e)??0),a=(e9.get(t)??0)-(e9.get(e)??0);return Math.abs(n)>=Math.abs(a)?n>=0?{sourceHandle:"sr",targetHandle:"tl"}:{sourceHandle:"sl",targetHandle:"tr"}:a>=0?{sourceHandle:"sb",targetHandle:"tt"}:{sourceHandle:"st",targetHandle:"tb"}},[e8,e9]),tu=(0,s.useMemo)(()=>new Set([...eH.tables.map(e=>e.id),...eH.endpoints.map(e=>e.id)]),[eH]),tp=(0,s.useMemo)(()=>new Set(e.map(e=>e.id)),[e]),th=(0,s.useCallback)(()=>{let e=eY.map(e=>({id:e.id,type:"dbTable",position:F?{x:e.x,y:e.y}:e1.get(e.id)??{x:e.x,y:e.y},data:{name:e.name,domain:e.domain,columns:e.columns,usageCount:e6.get(e.id)??0,source:e.source,rev:eK.rev,diffStatus:e2.get(e.id)?.status,diffChanges:e2.get(e.id)?.changes,diffColumns:e2.get(e.id)?.columns,fkTargets:e7.get(e.id),pins:to.get(e.id),onPinClick:M,onComment:tc}})),t=e0.map(e=>({id:e.id,type:"endpoint",position:{x:e.x,y:e.y},data:{method:e.method,path:e.path,domain:e.domain,source:e.source,rev:eK.rev,diffStatus:e3.get(e.id)?.status,diffChanges:e3.get(e.id)?.changes,pins:to.get(e.id),onPinClick:M,onComment:tc}})),n=new Map,a=new Map(eY.map(e=>[e.id,e])),s=new Map(e0.map(e=>[e.id,e]));return[...e,...t,...ts.map(e=>{let t=a.get(e.targetId),o=s.get(e.targetId),l=t?.x??o?.x??0,i=t?.y??o?.y??0,r=t?38+28*t.columns.length:42,d=n.get(e.targetId)??0;return n.set(e.targetId,d+1),{id:`anno-${e.id}`,type:"annotation",position:{x:e.x??l+26,y:e.y??i+r+64+112*d},data:{n:e.n,text:e.text,annotationId:e.id,onClick:te||S?void 0:M,editable:te||!!S,onChangeText:te?(e,t)=>tr(e,{body:t}):S,onDelete:te?td:E}}})]},[eY,e0,F,e1,e6,eK.rev,e2,e3,e7,to,ts,te,M,S,E,tc,tr,td]),[tf,tx,tb]=(0,i.ck)(th()),tg=(0,s.useRef)(F);(0,s.useEffect)(()=>{let e=tg.current!==F;tg.current=F,tx(t=>{let n=new Map(t.map(e=>[e.id,e.position]));return th().map(t=>e&&"dbTable"===t.type?t:{...t,position:n.get(t.id)??t.position})}),e&&requestAnimationFrame(()=>eS.current?.fitView({duration:500,padding:.15,minZoom:.2,maxZoom:.9}))},[th,tx,F]);let ty=(0,s.useCallback)((e,t,n,a)=>{fetch("/api/db/position",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({kind:e,id:t,x:n,y:a})})},[]),tj=(0,s.useCallback)((e,t)=>{var n;let{x:a,y:s}=t.position,o=(n={readOnly:$,nodeId:t.id,isDraft:tu.has(t.id),boardMode:te}).readOnly?"none":n.nodeId.startsWith("anno-")?n.boardMode?"annotation":"none":n.isDraft?"draft":"real";"annotation"===o?tr(t.id.slice(5),{x:a,y:s}):"draft"===o?eZ(e=>e.tables.some(e=>e.id===t.id)?{...e,tables:e.tables.map(e=>e.id===t.id?{...e,x:a,y:s}:e)}:e.endpoints.some(e=>e.id===t.id)?{...e,endpoints:e.endpoints.map(e=>e.id===t.id?{...e,x:a,y:s}:e)}:e):"real"===o&&ty("endpoint"===t.type?"endpoint":"table",t.id,a,s)},[$,tu,eZ,ty,te,tr]),tk=(0,s.useMemo)(()=>e4.map(e=>({id:`fk-${e.id}`,source:e.fromTableId,target:e.toTableId,...tm(e.fromTableId,e.toTableId),type:"deletable",label:e.label??void 0,markerEnd:{type:r.TG.ArrowClosed,color:"#6b6b6b"},style:{stroke:"#6b6b6b"}})),[e4,tm]),tw=(0,s.useMemo)(()=>e0.flatMap(e=>e.tables.map(t=>{let n=x.ru[t.access]??"#5a5a5a";return{id:`u-${e.id}-${t.tableId}`,source:e.id,target:t.tableId,...tm(e.id,t.tableId),type:"default",markerEnd:{type:r.TG.ArrowClosed,color:n},style:{stroke:n,strokeDasharray:"4 4",opacity:.7}}})),[e0,tm]),tv=(0,s.useMemo)(()=>F?[...tk,...tw]:tk,[tk,tw,F]),tN=(0,s.useMemo)(()=>ts.map(e=>({id:`annoe-${e.id}`,source:e.targetId,sourceHandle:`pin-${e.id}`,target:`anno-${e.id}`,targetHandle:"in",type:"annotation",selectable:!1,zIndex:30,style:{stroke:w.V5,strokeWidth:1.5,opacity:.9}})),[ts]),tC=O?.id??_,tT=(0,s.useMemo)(()=>{if(B){let e=tv.find(e=>e.id===B);return e?new Set([e.source,e.target]):null}return tC?(0,x.F1)(tC,tv):null},[tC,B,tv]),tM=(0,s.useMemo)(()=>new Map(eY.map(e=>[e.id,{domain:e.domain,source:e.source}])),[eY]),tS=(0,s.useMemo)(()=>new Map(e0.map(e=>[e.id,{method:e.method,source:e.source}])),[e0]),tE=(0,s.useMemo)(()=>{let e=new Set;if(!F)for(let t of tS.keys())e.add(t);for(let[t,n]of tM)!eA.size||n.domain&&eA.has(n.domain)||e.add(t),eF.size&&!eF.has(n.source)&&e.add(t);for(let[t,n]of tS)eO.size&&!eO.has(n.method)&&e.add(t),eF.size&&!eF.has(n.source)&&e.add(t);return e},[F,tM,tS,eA,eF,eO]),tI=eT.trim().length>0,t$=(0,s.useMemo)(()=>{if(!tI)return null;let e=new Set;for(let t of eY)!tE.has(t.id)&&(0,Q.Qk)((0,Q.jF)(t),eT)&&e.add(t.id);for(let t of e0)!tE.has(t.id)&&(0,Q.Qk)((0,Q.sQ)(t),eT)&&e.add(t.id);return e},[eY,e0,tE,eT,tI]),tA=(0,s.useMemo)(()=>tI?[...(0,Q.r2)(eY.filter(e=>!tE.has(e.id)),eT,e=>(0,Q.jF)(e),e=>({id:e.id,label:e.name,sublabel:e.domain??"table",kind:"table"})),...(0,Q.r2)(e0.filter(e=>!tE.has(e.id)),eT,e=>(0,Q.sQ)(e),e=>({id:e.id,label:e.path,sublabel:e.method,kind:"endpoint"}))].slice(0,12):[],[eY,e0,tE,eT,tI]),tP=(0,s.useCallback)(e=>{eM(""),L(tS.has(e)?{id:e,kind:"endpoint"}:{id:e,kind:"table"}),H(null),q(!0),ev("details");let t=eS.current?.getNode(e);if(!t||!eS.current)return;let n=t.measured?.width??220,a=t.measured?.height??80;eS.current.setCenter(t.position.x+n/2,t.position.y+a/2,{zoom:.9,duration:600})},[tS]),tz=t$??tT,tD=(0,s.useMemo)(()=>tf.map(e=>{if(e.id.startsWith("anno-")){let t=tl.get(e.id),n=!!t&&tE.has(t);return!!e.hidden!==n?{...e,hidden:n}:e}let t=tE.has(e.id);if(!tz)return t?{...e,hidden:t}:e;let n=tz.has(e.id),a=t$?Q.Uy:.45;return{...e,hidden:t,style:{...e.style,opacity:n?1:a,boxShadow:n&&t$?Q.RU:e.style?.boxShadow,borderRadius:n&&t$?"dbTable"===e.type?"var(--radius-xl)":"var(--radius-lg)":e.style?.borderRadius,transition:"opacity 120ms, box-shadow 120ms"}}}),[tf,tE,tz,t$,tl]),tF=(0,s.useMemo)(()=>{let e=new Map(eY.map(e=>[e.id,(e.domain??"").trim()||"—"])),t=es(eY,e0.map(e=>({id:e.id,method:e.method,path:e.path,uses:e.tables.map(e=>({tableId:e.tableId}))})));return new Map(e0.map(n=>{let a=t.get(n.id);return[n.id,a?e.get(a):en]}))},[eY,e0]),tR=(0,s.useMemo)(()=>{let e=[];for(let t of tf)if(!tE.has(t.id))if("dbTable"===t.type){let n=t.data;e.push({id:t.id,group:(n.domain??"").trim()||"—",x:t.position.x,y:t.position.y,w:t.measured?.width??280,h:t.measured?.height??38+28*n.columns.length})}else"endpoint"===t.type&&e.push({id:t.id,group:tF.get(t.id)??en,x:t.position.x,y:t.position.y,w:t.measured?.width??240,h:t.measured?.height??50});return(0,Y.S)(e)},[tf,tE,tF]),tO=(0,s.useMemo)(()=>t$?tv.map(e=>{let t=tE.has(e.source)||tE.has(e.target);return t$.has(e.source)&&t$.has(e.target)?{...e,hidden:t,style:{...e.style,opacity:1}}:{...e,hidden:t,label:void 0,style:{...e.style,opacity:.08}}}):tv.map(e=>{let t=tE.has(e.source)||tE.has(e.target);return tC||B?(B?e.id===B:tC&&(e.source===tC||e.target===tC))?{...e,hidden:t,zIndex:20,style:{...e.style,opacity:1,strokeWidth:2.5}}:{...e,hidden:t,selectable:!1,label:void 0,markerEnd:void 0,style:{...e.style,opacity:.08}}:{...e,hidden:t,label:void 0}}),[tv,tC,B,tE,t$]),tL=(0,s.useMemo)(()=>Array.from(new Set(eY.map(e=>e.domain).filter(e=>!!e))).sort(),[eY]),tK=(0,s.useMemo)(()=>Array.from(new Set([...eY.map(e=>e.source),...e0.map(e=>e.source)])).sort(),[eY,e0]),tB=(0,s.useMemo)(()=>Array.from(new Set(e0.map(e=>e.method))).sort(),[e0]);function tH(e,t){t(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}let t_=+!F+eA.size+eF.size+eO.size,tZ=(0,s.useCallback)(()=>{R(!0),eP(new Set),eR(new Set),eL(new Set)},[]),tU=(0,s.useCallback)(e=>{let{source:t,target:n}=e;t&&n&&t!==n&&e_(e=>{if(!(e.tables.some(e=>e.id===n)||tp.has(n)))return e;let a=e.endpoints.find(e=>e.id===t);return a?a.links.some(e=>e.tableId===n)?e:{...e,endpoints:e.endpoints.map(e=>{var a;return e.id===t?{...e,links:[...e.links,{tableId:n,access:(a=e.method,X.has(a.trim().toUpperCase())?"read":"write")}]}:e})}:e.tables.find(e=>e.id===t)?e.relations.some(e=>e.fromTableId===t&&e.toTableId===n)?e:{...e,relations:[...e.relations,{id:crypto.randomUUID(),fromTableId:t,toTableId:n,fromColumn:"fk",toColumn:"id",label:null}]}:e})},[e_,tp]),tq=(0,s.useMemo)(()=>({readOnly:$,patchEndpoint:(e,t)=>e_(n=>({...n,endpoints:n.endpoints.map(n=>n.id===e?{...n,...t}:n)})),deleteEndpoint:e=>e_(t=>({...t,endpoints:t.endpoints.filter(t=>t.id!==e)})),patchTable:(e,t)=>e_(n=>({...n,tables:n.tables.map(n=>n.id===e?{...n,...t}:n)})),deleteTable:e=>e_(t=>({...t,tables:t.tables.filter(t=>t.id!==e),relations:t.relations.filter(t=>t.fromTableId!==e&&t.toTableId!==e),endpoints:t.endpoints.map(t=>({...t,links:t.links.filter(t=>t.tableId!==e)}))})),deleteRealEndpoint:e=>{fetch(`/api/endpoints/${e}`,{method:"DELETE"}).then(e=>{e.ok&&A.refresh()})}}),[$,e_,A]);(0,s.useEffect)(()=>{let e=e=>{if(!(e.metaKey||e.ctrlKey))return;let t=e.target;if(t&&/^(INPUT|TEXTAREA|SELECT)$/.test(t.tagName))return;let n=e.key.toLowerCase();"z"===n?(e.preventDefault(),e.shiftKey?eq():eU()):"y"===n&&(e.preventDefault(),eq())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[eU,eq]);let tW=(0,s.useCallback)(async()=>{eC(!0);try{if((await fetch("/api/draft/approve",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(eH)})).ok){try{localStorage.removeItem(ey)}catch{}eW(ej),A.refresh()}}finally{eC(!1)}},[eH,eW,A]),tG=(0,s.useCallback)(async()=>{eC(!0);try{await fetch("/api/draft",{method:"DELETE"})}catch{}try{localStorage.removeItem(ey)}catch{}eW(ej),A.refresh(),eC(!1)},[eW,A]),tJ=(0,s.useMemo)(()=>{let e;return e=new Map(eH.tables.map(e=>[e.id,e.name])),{tables:eH.tables.map(e=>({name:e.name,domain:e.domain,description:e.description,columns:e.columns.map(e=>({name:e.name,type:e.type,isPk:e.isPk,isFk:e.isFk,nullable:e.nullable,note:e.note}))})),relations:eH.relations.flatMap(t=>{let n=e.get(t.fromTableId),a=e.get(t.toTableId);return n&&a?[{fromTable:n,fromColumn:t.fromColumn,toTable:a,toColumn:t.toColumn,label:t.label}]:[]}),endpoints:eH.endpoints.map(t=>({method:t.method,path:t.path,domain:t.domain,description:t.description,uses:t.links.flatMap(t=>{let n=e.get(t.tableId);return n?[{table:n,access:t.access}]:[]})}))}},[eH]),tQ=eH.tables.length>0||eH.endpoints.length>0,tV=eK.past.length>0,tX=eK.future.length>0;return(0,a.jsx)(b.Provider,{value:tq,children:(0,a.jsxs)("div",{className:(0,f.cn)("canvas-dots relative w-full",m?"h-full":"h-screen",ef&&"rf-panning"),children:[(0,a.jsxs)(i.Gc,{...e$,nodes:tD,edges:"far"===ez?[...tO,...tN].map(e=>({...e,hidden:!0})):[...tO,...tN.map(e=>({...e,hidden:tE.has(e.source)}))],nodeTypes:eb,edgeTypes:eg,nodesConnectable:!$,connectionMode:r.WZ.Loose,connectionLineStyle:{stroke:"var(--accent-2,#ff7a45)",strokeWidth:1.5,strokeDasharray:"4 4"},onInit:e=>{eS.current=e},onNodesChange:tb,onMoveStart:()=>ex(!0),onMoveEnd:()=>ex(!1),onConnect:tU,onNodeMouseEnter:(e,t)=>{"annotation"!==t.type&&Z(t.id)},onNodeMouseLeave:()=>Z(null),onNodeClick:(e,t)=>{if("annotation"===t.type){let e=t.data;e.editable||M?.(e.annotationId);return}let n="endpoint"===t.type?"endpoint":"table";L({id:t.id,kind:n}),H(null),q(!0),ev("details")},onEdgeClick:(e,t)=>{H(t.id),L(null)},onPaneClick:()=>{L(null),H(null),q(!1)},onNodeDragStop:tj,onEdgesDelete:e=>{for(let t of e)if(t.id.startsWith("fk-")){let e=t.id.slice(3);fetch(`/api/db/relations/${e}`,{method:"DELETE"})}},onNodesDelete:e=>{for(let t of e)t.id.startsWith("anno-")||tu.has(t.id)||("endpoint"===t.type?fetch(`/api/endpoints/${t.id}`,{method:"DELETE"}):"dbTable"===t.type&&fetch(`/api/db/tables/${t.id}`,{method:"DELETE"}))},deleteKeyCode:$?null:["Backspace","Delete"],colorMode:"dark",fitView:!0,fitViewOptions:{padding:.15,minZoom:.38,maxZoom:.9},minZoom:.15,panOnScroll:!0,zoomActivationKeyCode:["Meta","Control"],proOptions:{hideAttribution:!0},children:[(0,a.jsx)(el.Z,{regions:tR,tone:"category",lod:ez}),(0,a.jsx)(y.J,{onLod:eD,thresholds:j.fE}),(0,a.jsx)(i.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"}),!m&&(0,a.jsx)(i.of,{pannable:!0,zoomable:!0,position:"bottom-left",style:{width:140,height:90},className:"!overflow-hidden !rounded-xl !border !border-white/10 !bg-card/50 !backdrop-blur",nodeColor:"#555"}),(0,a.jsx)(i.Zk,{position:"bottom-left",style:{marginBottom:118},children:(0,a.jsx)(o.H,{tool:eE,onChange:eI})}),!m&&(0,a.jsx)(i.Zk,{position:"bottom-center",className:"!mb-4",children:(0,a.jsx)("div",{className:"glass flex items-center rounded-full p-0.5",children:(0,a.jsxs)("button",{type:"button",disabled:eN,title:"Re-arrange the board — domain clusters with endpoints docked under their tables",onClick:async()=>{eC(!0);try{let e=window.innerWidth/window.innerHeight;await fetch("/api/db/arrange",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({viewportAspect:e})}),A.refresh()}finally{eC(!1)}},className:"flex h-6 items-center gap-1.5 rounded-full px-3 text-[11px] font-medium text-muted-foreground transition-colors hover:bg-white/[0.06] hover:text-foreground disabled:opacity-40",children:[(0,a.jsx)(er.A,{className:"size-3"}),eN?"Arranging…":"Arrange"]})})}),!m&&(0,a.jsx)(i.Zk,{position:"top-right",className:(0,f.cn)("glass rounded-full px-1 py-0.5 transition-[margin] duration-200",U&&"!mr-[332px]"),children:(0,a.jsx)(V.Z,{active:"DATABASE",tabs:[{value:"ROADMAP",label:"Roadmap",href:"/map?view=ROADMAP"},{value:"ARCHITECTURE",label:"Architecture",href:"/map?view=ARCHITECTURE"},{value:"DATABASE",label:"Database",href:"/map?view=DATABASE"},{value:"FILES",label:"Files",href:"/map?view=FILES"}]})}),(0,a.jsxs)(i.Zk,{position:"top-right",className:(0,f.cn)("!mt-14 flex items-center gap-1 transition-[margin] duration-200",U&&"!mr-[332px]",m&&"hidden"),children:[(0,a.jsx)(G.X,{query:eT,onQuery:eM,hits:tA,placeholder:"Find a table, column, endpoint…",onPick:tP,onZoomToMatches:()=>{t$?.size&&eS.current?.fitView({nodes:[...t$].map(e=>({id:e})),duration:600,padding:.2})}}),(0,a.jsx)(J.e,{defaultSelection:"DATABASE"}),(0,a.jsxs)(W.er,{title:"Filters",trigger:(e,t)=>(0,a.jsxs)("button",{type:"button",onClick:t,title:"Filters",className:(0,f.cn)("glass relative flex size-8 items-center justify-center rounded-lg transition-colors",e||t_>0?"text-foreground":"text-muted-foreground hover:text-foreground"),children:[(0,a.jsx)(ed.A,{className:"size-4"}),t_>0&&(0,a.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:t_})]}),children:[(0,a.jsx)(W.r1,{title:"Show",children:(0,a.jsx)(W.vu,{tone:"accent",on:F,onClick:()=>R(e=>!e),children:"endpoints"})}),tL.length>0&&(0,a.jsx)(W.r1,{title:"Domain",children:tL.map(e=>(0,a.jsx)(W.vu,{on:eA.has(e),onClick:()=>tH(e,eP),children:e},e))}),tB.length>0&&(0,a.jsx)(W.r1,{title:"Method",children:tB.map(e=>(0,a.jsx)(W.vu,{on:eO.has(e),onClick:()=>tH(e,eL),children:e},e))}),tK.length>0&&(0,a.jsx)(W.r1,{title:"Source",children:tK.map(e=>(0,a.jsx)(W.vu,{on:eF.has(e),onClick:()=>tH(e,eR),children:e.toLowerCase()},e))}),t_>0&&(0,a.jsx)("button",{type:"button",onClick:tZ,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,a.jsx)(W.er,{title:"Legend",trigger:(e,t)=>(0,a.jsx)("button",{type:"button",onClick:t,title:"Legend",className:(0,f.cn)("glass flex size-8 items-center justify-center rounded-lg transition-colors",e?"text-foreground":"text-muted-foreground hover:text-foreground"),children:(0,a.jsx)(ec.A,{className:"size-4"})}),children:(0,a.jsxs)("ul",{className:"space-y-1.5 text-[10.5px] text-muted-foreground",children:[(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"inline-block rounded border border-white/15 bg-white/[0.06] px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-foreground/80",children:"table"}),(0,a.jsx)("span",{children:"a database table \xb7 its columns"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"inline-block rounded border border-white/15 bg-white/[0.06] px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-foreground/80",children:"endpoint"}),(0,a.jsx)("span",{children:"an API route \xb7 reads / writes tables"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-px w-6 bg-[#6b6b6b]"}),(0,a.jsx)("span",{children:"foreign key \xb7 drag from a table handle"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#4ea1ff"}}),(0,a.jsx)("span",{children:"endpoint read \xb7 GET / POST / etc"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{"aria-hidden":!0,className:"inline-block h-0 w-6 border-t border-dashed",style:{borderColor:"#ffb86b"}}),(0,a.jsx)("span",{children:"endpoint write"})]}),(0,a.jsxs)("li",{className:"flex items-center gap-2",children:[(0,a.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,a.jsx)("span",{children:"agent-proposed \xb7 approve to persist"})]})]})}),!U&&(0,a.jsx)("button",{onClick:()=>q(!0),title:"Show panel",className:"glass flex size-8 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground",children:(0,a.jsx)(em.A,{className:"size-4"})})]}),tQ&&(0,a.jsxs)(i.Zk,{position:"bottom-center",className:"glass flex items-center gap-1 rounded-xl p-1.5",children:[(0,a.jsxs)("button",{onClick:eU,disabled:!tV,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,a.jsx)(eu.A,{className:"size-3.5"})," undo"]}),(0,a.jsxs)("button",{onClick:eq,disabled:!tX,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,a.jsx)(ep.A,{className:"size-3.5"})," redo"]}),!m&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"mx-1 h-4 w-px bg-white/10"}),(0,a.jsxs)("button",{onClick:tG,disabled:eN,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,a.jsx)(u.A,{className:"size-3.5"})," discard"]}),(0,a.jsxs)("button",{onClick:tW,disabled:eN,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,a.jsx)(eh.A,{className:"size-3.5"})," approve draft"]})]})]})]}),U&&(0,a.jsx)(K,{selected:O,tables:eY,relations:e4,endpoints:e0,draftGraph:tJ,onClose:()=>{q(!1),ev("details")},commentsContent:v,commentsCount:N,activeTab:ew,onTabChange:ev,onAddComment:tc,topOffset:m?64:void 0})]})})}}}]);
|