trybeacon 0.1.49 → 0.1.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +22 -18
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/routes-manifest.json +26 -0
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +11 -11
- package/.next/server/app/_not-found.segments/_full.segment.rsc +11 -11
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/board-annotations/[id]/route.js +1 -1
- package/.next/server/app/api/board-annotations/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/board-annotations/route.js +1 -1
- package/.next/server/app/api/board-annotations/route.js.nft.json +1 -1
- package/.next/server/app/api/board-layout/route.js +1 -1
- package/.next/server/app/api/board-layout/route.js.nft.json +1 -1
- package/.next/server/app/api/bug-flags/[id]/route.js +1 -1
- package/.next/server/app/api/bug-flags/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/bug-flags/route.js +1 -1
- package/.next/server/app/api/bug-flags/route.js.nft.json +1 -1
- package/.next/server/app/api/code-graph/position/route.js +1 -1
- package/.next/server/app/api/code-graph/position/route.js.nft.json +1 -1
- package/.next/server/app/api/code-graph/route.js +1 -1
- package/.next/server/app/api/code-graph/route.js.nft.json +1 -1
- package/.next/server/app/api/context/feature/route.js +1 -1
- package/.next/server/app/api/context/feature/route.js.nft.json +1 -1
- package/.next/server/app/api/context/file/route.js +1 -1
- package/.next/server/app/api/context/file/route.js.nft.json +1 -1
- package/.next/server/app/api/context/route.js +2 -2
- package/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/server/app/api/db/arrange/route.js +1 -1
- package/.next/server/app/api/db/arrange/route.js.nft.json +1 -1
- package/.next/server/app/api/db/backfill-access/route.js +1 -1
- package/.next/server/app/api/db/backfill-access/route.js.nft.json +1 -1
- package/.next/server/app/api/db/position/route.js +1 -1
- package/.next/server/app/api/db/position/route.js.nft.json +1 -1
- package/.next/server/app/api/db/prune-planned/route.js +1 -1
- package/.next/server/app/api/db/prune-planned/route.js.nft.json +1 -1
- package/.next/server/app/api/db/reconcile-endpoints/route.js +1 -1
- package/.next/server/app/api/db/reconcile-endpoints/route.js.nft.json +1 -1
- package/.next/server/app/api/db/relations/[id]/route.js +1 -1
- package/.next/server/app/api/db/relations/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/db/tables/[id]/route.js +1 -1
- package/.next/server/app/api/db/tables/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/draft/approve/route.js +1 -1
- package/.next/server/app/api/draft/approve/route.js.nft.json +1 -1
- package/.next/server/app/api/draft/route.js +1 -1
- package/.next/server/app/api/draft/route.js.nft.json +1 -1
- package/.next/server/app/api/draft/status/route.js +1 -1
- package/.next/server/app/api/draft/status/route.js.nft.json +1 -1
- package/.next/server/app/api/edges/[id]/route.js +1 -1
- package/.next/server/app/api/edges/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/edges/route.js +1 -1
- package/.next/server/app/api/edges/route.js.nft.json +1 -1
- package/.next/server/app/api/endpoints/[id]/route.js +1 -1
- package/.next/server/app/api/endpoints/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/entities/route.js +1 -1
- package/.next/server/app/api/entities/route.js.nft.json +1 -1
- package/.next/server/app/api/feedback/[id]/route.js +1 -1
- package/.next/server/app/api/feedback/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/feedback/[id]/vote/route.js +1 -1
- package/.next/server/app/api/feedback/[id]/vote/route.js.nft.json +1 -1
- package/.next/server/app/api/feedback/route.js +1 -1
- package/.next/server/app/api/feedback/route.js.nft.json +1 -1
- package/.next/server/app/api/flags/route.js +1 -1
- package/.next/server/app/api/flags/route.js.nft.json +1 -1
- package/.next/server/app/api/ingest/route.js +2 -2
- package/.next/server/app/api/ingest/route.js.nft.json +1 -1
- package/.next/server/app/api/init/route.js +2 -2
- package/.next/server/app/api/init/route.js.nft.json +1 -1
- package/.next/server/app/api/map/describe/route.js +2 -2
- package/.next/server/app/api/map/describe/route.js.nft.json +1 -1
- package/.next/server/app/api/map/files/route.js +1 -1
- package/.next/server/app/api/map/files/route.js.nft.json +1 -1
- package/.next/server/app/api/map/finish/route.js +1 -1
- package/.next/server/app/api/map/finish/route.js.nft.json +1 -1
- package/.next/server/app/api/map/route.js +1 -1
- package/.next/server/app/api/map/route.js.nft.json +1 -1
- package/.next/server/app/api/map/start/route.js +1 -1
- package/.next/server/app/api/map/start/route.js.nft.json +1 -1
- package/.next/server/app/api/map/touch-active/route.js +1 -1
- package/.next/server/app/api/map/touch-active/route.js.nft.json +1 -1
- package/.next/server/app/api/mention-search/route.js +1 -0
- package/.next/server/app/api/mention-search/route.js.nft.json +1 -0
- package/.next/server/app/api/mention-search/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/nodes/[id]/position/route.js +1 -1
- package/.next/server/app/api/nodes/[id]/position/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/[id]/route.js +1 -1
- package/.next/server/app/api/nodes/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/positions/route.js +1 -1
- package/.next/server/app/api/nodes/positions/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/route.js +1 -1
- package/.next/server/app/api/nodes/route.js.nft.json +1 -1
- package/.next/server/app/api/nodes/subtasks/route.js +1 -1
- package/.next/server/app/api/nodes/subtasks/route.js.nft.json +1 -1
- package/.next/server/app/api/notes/[id]/route.js +1 -1
- package/.next/server/app/api/notes/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/notes/route.js +1 -1
- package/.next/server/app/api/notes/route.js.nft.json +1 -1
- package/.next/server/app/api/open/route.js +1 -1
- package/.next/server/app/api/open/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/annotations/route.js +3 -3
- package/.next/server/app/api/plan/annotations/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/approve/route.js +2 -2
- package/.next/server/app/api/plan/approve/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/history/route.js +1 -1
- package/.next/server/app/api/plan/history/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/markdown/route.js +1 -1
- package/.next/server/app/api/plan/markdown/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/presence/route.js +1 -1
- package/.next/server/app/api/plan/presence/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/route.js +1 -1
- package/.next/server/app/api/plan/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/verdict/route.js +1 -1
- package/.next/server/app/api/plan/verdict/route.js.nft.json +1 -1
- package/.next/server/app/api/preferences/route.js +1 -1
- package/.next/server/app/api/preferences/route.js.nft.json +1 -1
- package/.next/server/app/api/project-meta/route.js +1 -1
- package/.next/server/app/api/project-meta/route.js.nft.json +1 -1
- package/.next/server/app/api/reset/route.js +1 -1
- package/.next/server/app/api/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/scope-guard/check/route.js +1 -1
- package/.next/server/app/api/scope-guard/check/route.js.nft.json +1 -1
- package/.next/server/app/api/share/create/route.js +1 -0
- package/.next/server/app/api/share/create/route.js.nft.json +1 -0
- package/.next/server/app/api/share/create/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/share/route.js +1 -0
- package/.next/server/app/api/share/route.js.nft.json +1 -0
- package/.next/server/app/api/share/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/stream/route.js +2 -2
- package/.next/server/app/api/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/tab/nav/route.js +1 -1
- package/.next/server/app/api/tab/nav/route.js.nft.json +1 -1
- package/.next/server/app/api/tab/presence/route.js +1 -1
- package/.next/server/app/api/tab/presence/route.js.nft.json +1 -1
- package/.next/server/app/api/telemetry/route.js +1 -1
- package/.next/server/app/api/telemetry/route.js.nft.json +1 -1
- package/.next/server/app/api/telemetry/stats/route.js +1 -1
- package/.next/server/app/api/telemetry/stats/route.js.nft.json +1 -1
- package/.next/server/app/api/version/route.js +1 -1
- package/.next/server/app/api/version/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/activate/route.js +1 -1
- package/.next/server/app/api/workspace/activate/route.js.nft.json +1 -1
- package/.next/server/app/api/workspace/route.js +1 -1
- package/.next/server/app/api/workspace/route.js.nft.json +1 -1
- package/.next/server/app/apple-icon.png/route.js +1 -1
- package/.next/server/app/docs/page.js +2 -2
- package/.next/server/app/docs/page.js.nft.json +1 -1
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +12 -12
- package/.next/server/app/docs.segments/_full.segment.rsc +12 -12
- 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 +2 -2
- package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
- package/.next/server/app/feedback/page.js +2 -2
- package/.next/server/app/feedback/page.js.nft.json +1 -1
- package/.next/server/app/feedback/page_client-reference-manifest.js +1 -1
- package/.next/server/app/feedback.html +1 -1
- package/.next/server/app/feedback.rsc +11 -11
- package/.next/server/app/feedback.segments/_full.segment.rsc +11 -11
- package/.next/server/app/feedback.segments/_head.segment.rsc +1 -1
- package/.next/server/app/feedback.segments/_index.segment.rsc +11 -11
- package/.next/server/app/feedback.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/feedback.segments/feedback/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/feedback.segments/feedback.segment.rsc +1 -1
- package/.next/server/app/help/page.js +2 -2
- package/.next/server/app/help/page.js.nft.json +1 -1
- package/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/.next/server/app/help.html +1 -1
- package/.next/server/app/help.rsc +13 -13
- package/.next/server/app/help.segments/_full.segment.rsc +13 -13
- 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 +10 -12
- package/.next/server/app/help.segments/help.segment.rsc +1 -1
- package/.next/server/app/icon.svg/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +12 -12
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +12 -12
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +11 -11
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/map/page.js +2 -2
- package/.next/server/app/map/page.js.nft.json +1 -1
- package/.next/server/app/map/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/plan/page.js +2 -2
- package/.next/server/app/plan/page.js.nft.json +1 -1
- package/.next/server/app/plan/page_client-reference-manifest.js +1 -1
- package/.next/server/app/s/[token]/page.js +2 -0
- package/.next/server/app/s/[token]/page.js.nft.json +1 -0
- package/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/settings/page.js +2 -2
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +22 -18
- package/.next/server/chunks/1130.js +1 -1
- package/.next/server/chunks/1669.js +1 -0
- package/.next/server/chunks/2050.js +1 -0
- package/.next/server/chunks/249.js +1 -1
- package/.next/server/chunks/{3221.js → 2693.js} +1 -1
- package/.next/server/chunks/2942.js +1 -0
- package/.next/server/chunks/3098.js +1 -0
- package/.next/server/chunks/3254.js +1 -1
- package/.next/server/chunks/{2999.js → 3304.js} +65 -4
- package/.next/server/chunks/3622.js +1 -1
- package/.next/server/chunks/4046.js +3 -3
- package/.next/server/chunks/4307.js +1 -1
- package/.next/server/chunks/{4217.js → 4700.js} +19 -19
- package/.next/server/chunks/5841.js +1 -0
- package/.next/server/chunks/{4940.js → 7350.js} +1 -1
- package/.next/server/chunks/{8423.js → 9338.js} +8 -8
- package/.next/server/chunks/9683.js +1 -1
- package/.next/server/chunks/9734.js +1 -1
- package/.next/server/chunks/9884.js +2 -2
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/Etq8pxeFDTNRRYXdxo_DD/_buildManifest.js +1 -0
- package/.next/static/chunks/1099-208cc390a92efae0.js +62 -0
- package/.next/static/chunks/1175-715e4664e518ded4.js +1 -0
- package/.next/static/chunks/2231-379685a022444780.js +1 -0
- package/.next/static/chunks/{2500-15c373070714563d.js → 3021-ed52ee7b3f02e2cd.js} +1 -1
- package/.next/static/chunks/54a60aa6-0378818fce5a4dc5.js +82 -0
- package/.next/static/chunks/874-c750840a8644deb1.js +1 -0
- package/.next/static/chunks/9320-7bd45e3feba086b6.js +1 -0
- package/.next/static/chunks/9887-e8954568a4031ed3.js +74 -0
- package/.next/static/chunks/app/_global-error/page-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/board-annotations/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/board-annotations/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/board-layout/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/bug-flags/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/bug-flags/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/code-graph/position/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/code-graph/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/context/feature/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/context/file/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/context/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/db/arrange/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/db/backfill-access/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/db/position/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/db/prune-planned/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/db/relations/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/db/tables/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/draft/approve/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/draft/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/draft/status/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/edges/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/edges/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/endpoints/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/entities/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/feedback/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/feedback/[id]/vote/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/feedback/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/flags/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/ingest/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/init/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/map/describe/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/map/files/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/map/finish/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/map/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/map/start/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/map/touch-active/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/mention-search/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/position/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/nodes/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/nodes/positions/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/nodes/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/nodes/subtasks/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/notes/[id]/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/notes/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/open/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/plan/annotations/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/plan/approve/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/plan/history/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/plan/markdown/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/plan/presence/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/plan/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/plan/verdict/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/preferences/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/project-meta/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/reset/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/scope-guard/check/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/share/create/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/share/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/stream/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/tab/nav/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/tab/presence/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/telemetry/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/telemetry/stats/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/version/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/workspace/activate/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/api/workspace/route-548a84d85e061550.js +1 -0
- package/.next/static/chunks/app/docs/page-ae19d2e91ec24771.js +1 -0
- package/.next/static/chunks/app/layout-3115f8503ff00902.js +1 -0
- package/.next/static/chunks/app/map/page-07f6e0d7c4cac26c.js +1 -0
- package/.next/static/chunks/app/{page-541e900d67f17dae.js → page-a229992616b3a3de.js} +1 -1
- package/.next/static/chunks/app/plan/page-e314ca5940473e0e.js +1 -0
- package/.next/static/chunks/app/s/[token]/page-5fbceb666bceb88e.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-548a84d85e061550.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-548a84d85e061550.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-548a84d85e061550.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-548a84d85e061550.js +1 -0
- package/.next/static/css/d60eecd8c5676c16.css +1 -0
- package/.next/trace +42 -39
- package/.next/trace-build +1 -1
- package/.next/types/app/api/mention-search/route.ts +351 -0
- package/.next/types/app/api/share/create/route.ts +351 -0
- package/.next/types/app/api/share/route.ts +351 -0
- package/.next/types/app/s/[token]/page.ts +87 -0
- package/.next/types/routes.d.ts +6 -2
- package/.next/types/validator.ts +36 -0
- package/dist/bin/doctor.js +16 -6
- package/dist/bin/hook.js +16 -6
- package/dist/bin/mcp.js +47 -37
- package/dist/bin/plan.js +22 -12
- package/dist/bin/prompt.js +1 -1
- package/dist/bin/uninstall.js +16 -6
- package/dist/lib/assets.js +16 -6
- package/dist/lib/codex-install.js +16 -6
- package/dist/lib/global-install.js +16 -6
- package/package.json +4 -1
- package/.next/server/chunks/1341.js +0 -1
- package/.next/server/chunks/7331.js +0 -1
- package/.next/static/chunks/1439-260d1c3a9b3b79b3.js +0 -1
- package/.next/static/chunks/3343-af1292b51a276724.js +0 -1
- package/.next/static/chunks/54a60aa6-407808fee210eca2.js +0 -82
- package/.next/static/chunks/7323-480fb88e9d24f9e9.js +0 -1
- package/.next/static/chunks/7886-46eaf3a9533310f7.js +0 -74
- package/.next/static/chunks/app/_global-error/page-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/board-annotations/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/board-annotations/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/board-layout/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/bug-flags/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/bug-flags/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/code-graph/position/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/code-graph/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/context/feature/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/context/file/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/context/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/db/arrange/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/db/backfill-access/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/db/position/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/db/prune-planned/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/db/reconcile-endpoints/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/db/relations/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/db/tables/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/draft/approve/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/draft/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/draft/status/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/edges/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/edges/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/endpoints/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/entities/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/feedback/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/feedback/[id]/vote/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/feedback/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/flags/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/ingest/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/init/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/map/describe/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/map/files/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/map/finish/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/map/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/map/start/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/map/touch-active/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/position/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/nodes/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/nodes/positions/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/nodes/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/nodes/subtasks/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/notes/[id]/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/notes/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/open/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/plan/annotations/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/plan/approve/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/plan/history/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/plan/markdown/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/plan/presence/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/plan/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/plan/verdict/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/preferences/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/project-meta/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/reset/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/scope-guard/check/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/stream/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/tab/nav/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/tab/presence/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/telemetry/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/telemetry/stats/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/version/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/workspace/activate/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/api/workspace/route-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/app/docs/page-0c841cb9a7aa2f9a.js +0 -1
- package/.next/static/chunks/app/layout-1bc5f9fd4ce6bff9.js +0 -1
- package/.next/static/chunks/app/map/page-66d71744ae3363d7.js +0 -1
- package/.next/static/chunks/app/plan/page-e7d16fa2a3713a92.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-dc3f0f4fd9e88c4e.js +0 -1
- package/.next/static/css/629ab377241de9ca.css +0 -1
- package/.next/static/qeqVD-yeoYO_3C0pw9kHg/_buildManifest.js +0 -1
- /package/.next/static/{qeqVD-yeoYO_3C0pw9kHg → Etq8pxeFDTNRRYXdxo_DD}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
// File: /home/runner/work/beacon/beacon/app/api/share/route.ts
|
|
2
|
+
import * as entry from '../../../../../app/api/share/route.js'
|
|
3
|
+
import type { NextRequest } from 'next/server.js'
|
|
4
|
+
|
|
5
|
+
import type { InstantConfigForTypeCheckInternal } from 'next/dist/build/segment-config/app/app-segment-config.js'
|
|
6
|
+
|
|
7
|
+
type TEntry = typeof import('../../../../../app/api/share/route.js')
|
|
8
|
+
|
|
9
|
+
type SegmentParams<T extends Object = any> = T extends Record<string, any>
|
|
10
|
+
? { [K in keyof T]: T[K] extends string ? string | string[] | undefined : never }
|
|
11
|
+
: T
|
|
12
|
+
|
|
13
|
+
// Check that the entry is a valid entry
|
|
14
|
+
checkFields<Diff<{
|
|
15
|
+
GET?: Function
|
|
16
|
+
HEAD?: Function
|
|
17
|
+
OPTIONS?: Function
|
|
18
|
+
POST?: Function
|
|
19
|
+
PUT?: Function
|
|
20
|
+
DELETE?: Function
|
|
21
|
+
PATCH?: Function
|
|
22
|
+
config?: {}
|
|
23
|
+
generateStaticParams?: Function
|
|
24
|
+
unstable_instant?: InstantConfigForTypeCheckInternal
|
|
25
|
+
unstable_dynamicStaleTime?: number
|
|
26
|
+
revalidate?: RevalidateRange<TEntry> | false
|
|
27
|
+
dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static'
|
|
28
|
+
dynamicParams?: boolean
|
|
29
|
+
fetchCache?: 'auto' | 'force-no-store' | 'only-no-store' | 'default-no-store' | 'default-cache' | 'only-cache' | 'force-cache'
|
|
30
|
+
preferredRegion?: 'auto' | 'global' | 'home' | string | string[]
|
|
31
|
+
runtime?: 'nodejs' | 'experimental-edge' | 'edge'
|
|
32
|
+
maxDuration?: number
|
|
33
|
+
|
|
34
|
+
}, TEntry, ''>>()
|
|
35
|
+
|
|
36
|
+
type RouteContext = { params: Promise<SegmentParams> }
|
|
37
|
+
// Check the prop type of the entry function
|
|
38
|
+
if ('GET' in entry) {
|
|
39
|
+
checkFields<
|
|
40
|
+
Diff<
|
|
41
|
+
ParamCheck<Request | NextRequest>,
|
|
42
|
+
{
|
|
43
|
+
__tag__: 'GET'
|
|
44
|
+
__param_position__: 'first'
|
|
45
|
+
__param_type__: FirstArg<MaybeField<TEntry, 'GET'>>
|
|
46
|
+
},
|
|
47
|
+
'GET'
|
|
48
|
+
>
|
|
49
|
+
>()
|
|
50
|
+
checkFields<
|
|
51
|
+
Diff<
|
|
52
|
+
ParamCheck<RouteContext>,
|
|
53
|
+
{
|
|
54
|
+
__tag__: 'GET'
|
|
55
|
+
__param_position__: 'second'
|
|
56
|
+
__param_type__: SecondArg<MaybeField<TEntry, 'GET'>>
|
|
57
|
+
},
|
|
58
|
+
'GET'
|
|
59
|
+
>
|
|
60
|
+
>()
|
|
61
|
+
|
|
62
|
+
checkFields<
|
|
63
|
+
Diff<
|
|
64
|
+
{
|
|
65
|
+
__tag__: 'GET',
|
|
66
|
+
__return_type__: Response | void | never | Promise<Response | void | never>
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
__tag__: 'GET',
|
|
70
|
+
__return_type__: ReturnType<MaybeField<TEntry, 'GET'>>
|
|
71
|
+
},
|
|
72
|
+
'GET'
|
|
73
|
+
>
|
|
74
|
+
>()
|
|
75
|
+
}
|
|
76
|
+
// Check the prop type of the entry function
|
|
77
|
+
if ('HEAD' in entry) {
|
|
78
|
+
checkFields<
|
|
79
|
+
Diff<
|
|
80
|
+
ParamCheck<Request | NextRequest>,
|
|
81
|
+
{
|
|
82
|
+
__tag__: 'HEAD'
|
|
83
|
+
__param_position__: 'first'
|
|
84
|
+
__param_type__: FirstArg<MaybeField<TEntry, 'HEAD'>>
|
|
85
|
+
},
|
|
86
|
+
'HEAD'
|
|
87
|
+
>
|
|
88
|
+
>()
|
|
89
|
+
checkFields<
|
|
90
|
+
Diff<
|
|
91
|
+
ParamCheck<RouteContext>,
|
|
92
|
+
{
|
|
93
|
+
__tag__: 'HEAD'
|
|
94
|
+
__param_position__: 'second'
|
|
95
|
+
__param_type__: SecondArg<MaybeField<TEntry, 'HEAD'>>
|
|
96
|
+
},
|
|
97
|
+
'HEAD'
|
|
98
|
+
>
|
|
99
|
+
>()
|
|
100
|
+
|
|
101
|
+
checkFields<
|
|
102
|
+
Diff<
|
|
103
|
+
{
|
|
104
|
+
__tag__: 'HEAD',
|
|
105
|
+
__return_type__: Response | void | never | Promise<Response | void | never>
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
__tag__: 'HEAD',
|
|
109
|
+
__return_type__: ReturnType<MaybeField<TEntry, 'HEAD'>>
|
|
110
|
+
},
|
|
111
|
+
'HEAD'
|
|
112
|
+
>
|
|
113
|
+
>()
|
|
114
|
+
}
|
|
115
|
+
// Check the prop type of the entry function
|
|
116
|
+
if ('OPTIONS' in entry) {
|
|
117
|
+
checkFields<
|
|
118
|
+
Diff<
|
|
119
|
+
ParamCheck<Request | NextRequest>,
|
|
120
|
+
{
|
|
121
|
+
__tag__: 'OPTIONS'
|
|
122
|
+
__param_position__: 'first'
|
|
123
|
+
__param_type__: FirstArg<MaybeField<TEntry, 'OPTIONS'>>
|
|
124
|
+
},
|
|
125
|
+
'OPTIONS'
|
|
126
|
+
>
|
|
127
|
+
>()
|
|
128
|
+
checkFields<
|
|
129
|
+
Diff<
|
|
130
|
+
ParamCheck<RouteContext>,
|
|
131
|
+
{
|
|
132
|
+
__tag__: 'OPTIONS'
|
|
133
|
+
__param_position__: 'second'
|
|
134
|
+
__param_type__: SecondArg<MaybeField<TEntry, 'OPTIONS'>>
|
|
135
|
+
},
|
|
136
|
+
'OPTIONS'
|
|
137
|
+
>
|
|
138
|
+
>()
|
|
139
|
+
|
|
140
|
+
checkFields<
|
|
141
|
+
Diff<
|
|
142
|
+
{
|
|
143
|
+
__tag__: 'OPTIONS',
|
|
144
|
+
__return_type__: Response | void | never | Promise<Response | void | never>
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
__tag__: 'OPTIONS',
|
|
148
|
+
__return_type__: ReturnType<MaybeField<TEntry, 'OPTIONS'>>
|
|
149
|
+
},
|
|
150
|
+
'OPTIONS'
|
|
151
|
+
>
|
|
152
|
+
>()
|
|
153
|
+
}
|
|
154
|
+
// Check the prop type of the entry function
|
|
155
|
+
if ('POST' in entry) {
|
|
156
|
+
checkFields<
|
|
157
|
+
Diff<
|
|
158
|
+
ParamCheck<Request | NextRequest>,
|
|
159
|
+
{
|
|
160
|
+
__tag__: 'POST'
|
|
161
|
+
__param_position__: 'first'
|
|
162
|
+
__param_type__: FirstArg<MaybeField<TEntry, 'POST'>>
|
|
163
|
+
},
|
|
164
|
+
'POST'
|
|
165
|
+
>
|
|
166
|
+
>()
|
|
167
|
+
checkFields<
|
|
168
|
+
Diff<
|
|
169
|
+
ParamCheck<RouteContext>,
|
|
170
|
+
{
|
|
171
|
+
__tag__: 'POST'
|
|
172
|
+
__param_position__: 'second'
|
|
173
|
+
__param_type__: SecondArg<MaybeField<TEntry, 'POST'>>
|
|
174
|
+
},
|
|
175
|
+
'POST'
|
|
176
|
+
>
|
|
177
|
+
>()
|
|
178
|
+
|
|
179
|
+
checkFields<
|
|
180
|
+
Diff<
|
|
181
|
+
{
|
|
182
|
+
__tag__: 'POST',
|
|
183
|
+
__return_type__: Response | void | never | Promise<Response | void | never>
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
__tag__: 'POST',
|
|
187
|
+
__return_type__: ReturnType<MaybeField<TEntry, 'POST'>>
|
|
188
|
+
},
|
|
189
|
+
'POST'
|
|
190
|
+
>
|
|
191
|
+
>()
|
|
192
|
+
}
|
|
193
|
+
// Check the prop type of the entry function
|
|
194
|
+
if ('PUT' in entry) {
|
|
195
|
+
checkFields<
|
|
196
|
+
Diff<
|
|
197
|
+
ParamCheck<Request | NextRequest>,
|
|
198
|
+
{
|
|
199
|
+
__tag__: 'PUT'
|
|
200
|
+
__param_position__: 'first'
|
|
201
|
+
__param_type__: FirstArg<MaybeField<TEntry, 'PUT'>>
|
|
202
|
+
},
|
|
203
|
+
'PUT'
|
|
204
|
+
>
|
|
205
|
+
>()
|
|
206
|
+
checkFields<
|
|
207
|
+
Diff<
|
|
208
|
+
ParamCheck<RouteContext>,
|
|
209
|
+
{
|
|
210
|
+
__tag__: 'PUT'
|
|
211
|
+
__param_position__: 'second'
|
|
212
|
+
__param_type__: SecondArg<MaybeField<TEntry, 'PUT'>>
|
|
213
|
+
},
|
|
214
|
+
'PUT'
|
|
215
|
+
>
|
|
216
|
+
>()
|
|
217
|
+
|
|
218
|
+
checkFields<
|
|
219
|
+
Diff<
|
|
220
|
+
{
|
|
221
|
+
__tag__: 'PUT',
|
|
222
|
+
__return_type__: Response | void | never | Promise<Response | void | never>
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
__tag__: 'PUT',
|
|
226
|
+
__return_type__: ReturnType<MaybeField<TEntry, 'PUT'>>
|
|
227
|
+
},
|
|
228
|
+
'PUT'
|
|
229
|
+
>
|
|
230
|
+
>()
|
|
231
|
+
}
|
|
232
|
+
// Check the prop type of the entry function
|
|
233
|
+
if ('DELETE' in entry) {
|
|
234
|
+
checkFields<
|
|
235
|
+
Diff<
|
|
236
|
+
ParamCheck<Request | NextRequest>,
|
|
237
|
+
{
|
|
238
|
+
__tag__: 'DELETE'
|
|
239
|
+
__param_position__: 'first'
|
|
240
|
+
__param_type__: FirstArg<MaybeField<TEntry, 'DELETE'>>
|
|
241
|
+
},
|
|
242
|
+
'DELETE'
|
|
243
|
+
>
|
|
244
|
+
>()
|
|
245
|
+
checkFields<
|
|
246
|
+
Diff<
|
|
247
|
+
ParamCheck<RouteContext>,
|
|
248
|
+
{
|
|
249
|
+
__tag__: 'DELETE'
|
|
250
|
+
__param_position__: 'second'
|
|
251
|
+
__param_type__: SecondArg<MaybeField<TEntry, 'DELETE'>>
|
|
252
|
+
},
|
|
253
|
+
'DELETE'
|
|
254
|
+
>
|
|
255
|
+
>()
|
|
256
|
+
|
|
257
|
+
checkFields<
|
|
258
|
+
Diff<
|
|
259
|
+
{
|
|
260
|
+
__tag__: 'DELETE',
|
|
261
|
+
__return_type__: Response | void | never | Promise<Response | void | never>
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
__tag__: 'DELETE',
|
|
265
|
+
__return_type__: ReturnType<MaybeField<TEntry, 'DELETE'>>
|
|
266
|
+
},
|
|
267
|
+
'DELETE'
|
|
268
|
+
>
|
|
269
|
+
>()
|
|
270
|
+
}
|
|
271
|
+
// Check the prop type of the entry function
|
|
272
|
+
if ('PATCH' in entry) {
|
|
273
|
+
checkFields<
|
|
274
|
+
Diff<
|
|
275
|
+
ParamCheck<Request | NextRequest>,
|
|
276
|
+
{
|
|
277
|
+
__tag__: 'PATCH'
|
|
278
|
+
__param_position__: 'first'
|
|
279
|
+
__param_type__: FirstArg<MaybeField<TEntry, 'PATCH'>>
|
|
280
|
+
},
|
|
281
|
+
'PATCH'
|
|
282
|
+
>
|
|
283
|
+
>()
|
|
284
|
+
checkFields<
|
|
285
|
+
Diff<
|
|
286
|
+
ParamCheck<RouteContext>,
|
|
287
|
+
{
|
|
288
|
+
__tag__: 'PATCH'
|
|
289
|
+
__param_position__: 'second'
|
|
290
|
+
__param_type__: SecondArg<MaybeField<TEntry, 'PATCH'>>
|
|
291
|
+
},
|
|
292
|
+
'PATCH'
|
|
293
|
+
>
|
|
294
|
+
>()
|
|
295
|
+
|
|
296
|
+
checkFields<
|
|
297
|
+
Diff<
|
|
298
|
+
{
|
|
299
|
+
__tag__: 'PATCH',
|
|
300
|
+
__return_type__: Response | void | never | Promise<Response | void | never>
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
__tag__: 'PATCH',
|
|
304
|
+
__return_type__: ReturnType<MaybeField<TEntry, 'PATCH'>>
|
|
305
|
+
},
|
|
306
|
+
'PATCH'
|
|
307
|
+
>
|
|
308
|
+
>()
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// Check the arguments and return type of the generateStaticParams function
|
|
312
|
+
if ('generateStaticParams' in entry) {
|
|
313
|
+
checkFields<Diff<{ params: SegmentParams }, FirstArg<MaybeField<TEntry, 'generateStaticParams'>>, 'generateStaticParams'>>()
|
|
314
|
+
checkFields<Diff<{ __tag__: 'generateStaticParams', __return_type__: any[] | Promise<any[]> }, { __tag__: 'generateStaticParams', __return_type__: ReturnType<MaybeField<TEntry, 'generateStaticParams'>> }>>()
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
export interface PageProps {
|
|
318
|
+
params?: Promise<SegmentParams>
|
|
319
|
+
searchParams?: Promise<any>
|
|
320
|
+
}
|
|
321
|
+
export interface LayoutProps {
|
|
322
|
+
children?: React.ReactNode
|
|
323
|
+
|
|
324
|
+
params?: Promise<SegmentParams>
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// =============
|
|
328
|
+
// Utility types
|
|
329
|
+
type RevalidateRange<T> = T extends { revalidate: any } ? NonNegative<T['revalidate']> : never
|
|
330
|
+
|
|
331
|
+
// If T is unknown or any, it will be an empty {} type. Otherwise, it will be the same as Omit<T, keyof Base>.
|
|
332
|
+
type OmitWithTag<T, K extends keyof any, _M> = Omit<T, K>
|
|
333
|
+
type Diff<Base, T extends Base, Message extends string = ''> = 0 extends (1 & T) ? {} : OmitWithTag<T, keyof Base, Message>
|
|
334
|
+
|
|
335
|
+
type FirstArg<T extends Function> = T extends (...args: [infer T, any]) => any ? unknown extends T ? any : T : never
|
|
336
|
+
type SecondArg<T extends Function> = T extends (...args: [any, infer T]) => any ? unknown extends T ? any : T : never
|
|
337
|
+
type MaybeField<T, K extends string> = T extends { [k in K]: infer G } ? G extends Function ? G : never : never
|
|
338
|
+
|
|
339
|
+
type ParamCheck<T> = {
|
|
340
|
+
__tag__: string
|
|
341
|
+
__param_position__: string
|
|
342
|
+
__param_type__: T
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
function checkFields<_ extends { [k in keyof any]: never }>() {}
|
|
346
|
+
|
|
347
|
+
// https://github.com/sindresorhus/type-fest
|
|
348
|
+
type Numeric = number | bigint
|
|
349
|
+
type Zero = 0 | 0n
|
|
350
|
+
type Negative<T extends Numeric> = T extends Zero ? never : `${T}` extends `-${string}` ? T : never
|
|
351
|
+
type NonNegative<T extends Numeric> = T extends Zero ? T : Negative<T> extends never ? T : '__invalid_negative_number__'
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// File: /home/runner/work/beacon/beacon/app/s/[token]/page.tsx
|
|
2
|
+
import * as entry from '../../../../../app/s/[token]/page.js'
|
|
3
|
+
import type { ResolvingMetadata, ResolvingViewport } from 'next/dist/lib/metadata/types/metadata-interface.js'
|
|
4
|
+
|
|
5
|
+
import type { InstantConfigForTypeCheckInternal } from 'next/dist/build/segment-config/app/app-segment-config.js'
|
|
6
|
+
|
|
7
|
+
type TEntry = typeof import('../../../../../app/s/[token]/page.js')
|
|
8
|
+
|
|
9
|
+
type SegmentParams<T extends Object = any> = T extends Record<string, any>
|
|
10
|
+
? { [K in keyof T]: T[K] extends string ? string | string[] | undefined : never }
|
|
11
|
+
: T
|
|
12
|
+
|
|
13
|
+
// Check that the entry is a valid entry
|
|
14
|
+
checkFields<Diff<{
|
|
15
|
+
default: Function
|
|
16
|
+
config?: {}
|
|
17
|
+
generateStaticParams?: Function
|
|
18
|
+
unstable_instant?: InstantConfigForTypeCheckInternal
|
|
19
|
+
unstable_dynamicStaleTime?: number
|
|
20
|
+
revalidate?: RevalidateRange<TEntry> | false
|
|
21
|
+
dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static'
|
|
22
|
+
dynamicParams?: boolean
|
|
23
|
+
fetchCache?: 'auto' | 'force-no-store' | 'only-no-store' | 'default-no-store' | 'default-cache' | 'only-cache' | 'force-cache'
|
|
24
|
+
preferredRegion?: 'auto' | 'global' | 'home' | string | string[]
|
|
25
|
+
runtime?: 'nodejs' | 'experimental-edge' | 'edge'
|
|
26
|
+
maxDuration?: number
|
|
27
|
+
|
|
28
|
+
metadata?: any
|
|
29
|
+
generateMetadata?: Function
|
|
30
|
+
viewport?: any
|
|
31
|
+
generateViewport?: Function
|
|
32
|
+
|
|
33
|
+
}, TEntry, ''>>()
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
// Check the prop type of the entry function
|
|
37
|
+
checkFields<Diff<PageProps, FirstArg<TEntry['default']>, 'default'>>()
|
|
38
|
+
|
|
39
|
+
// Check the arguments and return type of the generateMetadata function
|
|
40
|
+
if ('generateMetadata' in entry) {
|
|
41
|
+
checkFields<Diff<PageProps, FirstArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()
|
|
42
|
+
checkFields<Diff<ResolvingMetadata, SecondArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Check the arguments and return type of the generateViewport function
|
|
46
|
+
if ('generateViewport' in entry) {
|
|
47
|
+
checkFields<Diff<PageProps, FirstArg<MaybeField<TEntry, 'generateViewport'>>, 'generateViewport'>>()
|
|
48
|
+
checkFields<Diff<ResolvingViewport, SecondArg<MaybeField<TEntry, 'generateViewport'>>, 'generateViewport'>>()
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Check the arguments and return type of the generateStaticParams function
|
|
52
|
+
if ('generateStaticParams' in entry) {
|
|
53
|
+
checkFields<Diff<{ params: SegmentParams }, FirstArg<MaybeField<TEntry, 'generateStaticParams'>>, 'generateStaticParams'>>()
|
|
54
|
+
checkFields<Diff<{ __tag__: 'generateStaticParams', __return_type__: any[] | Promise<any[]> }, { __tag__: 'generateStaticParams', __return_type__: ReturnType<MaybeField<TEntry, 'generateStaticParams'>> }>>()
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface PageProps {
|
|
58
|
+
params?: Promise<SegmentParams>
|
|
59
|
+
searchParams?: Promise<any>
|
|
60
|
+
}
|
|
61
|
+
export interface LayoutProps {
|
|
62
|
+
children?: React.ReactNode
|
|
63
|
+
|
|
64
|
+
params?: Promise<SegmentParams>
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// =============
|
|
68
|
+
// Utility types
|
|
69
|
+
type RevalidateRange<T> = T extends { revalidate: any } ? NonNegative<T['revalidate']> : never
|
|
70
|
+
|
|
71
|
+
// If T is unknown or any, it will be an empty {} type. Otherwise, it will be the same as Omit<T, keyof Base>.
|
|
72
|
+
type OmitWithTag<T, K extends keyof any, _M> = Omit<T, K>
|
|
73
|
+
type Diff<Base, T extends Base, Message extends string = ''> = 0 extends (1 & T) ? {} : OmitWithTag<T, keyof Base, Message>
|
|
74
|
+
|
|
75
|
+
type FirstArg<T extends Function> = T extends (...args: [infer T, any]) => any ? unknown extends T ? any : T : never
|
|
76
|
+
type SecondArg<T extends Function> = T extends (...args: [any, infer T]) => any ? unknown extends T ? any : T : never
|
|
77
|
+
type MaybeField<T, K extends string> = T extends { [k in K]: infer G } ? G extends Function ? G : never : never
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
function checkFields<_ extends { [k in keyof any]: never }>() {}
|
|
82
|
+
|
|
83
|
+
// https://github.com/sindresorhus/type-fest
|
|
84
|
+
type Numeric = number | bigint
|
|
85
|
+
type Zero = 0 | 0n
|
|
86
|
+
type Negative<T extends Numeric> = T extends Zero ? never : `${T}` extends `-${string}` ? T : never
|
|
87
|
+
type NonNegative<T extends Numeric> = T extends Zero ? T : Negative<T> extends never ? T : '__invalid_negative_number__'
|
package/.next/types/routes.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// This file is generated automatically by Next.js
|
|
2
2
|
// Do not edit this file manually
|
|
3
3
|
|
|
4
|
-
type AppRoutes = "/" | "/docs" | "/feedback" | "/help" | "/map" | "/plan" | "/settings"
|
|
5
|
-
type AppRouteHandlerRoutes = "/api/board-annotations" | "/api/board-annotations/[id]" | "/api/board-layout" | "/api/bug-flags" | "/api/bug-flags/[id]" | "/api/code-graph" | "/api/code-graph/position" | "/api/context" | "/api/context/feature" | "/api/context/file" | "/api/db/arrange" | "/api/db/backfill-access" | "/api/db/position" | "/api/db/prune-planned" | "/api/db/reconcile-endpoints" | "/api/db/relations/[id]" | "/api/db/tables/[id]" | "/api/draft" | "/api/draft/approve" | "/api/draft/status" | "/api/edges" | "/api/edges/[id]" | "/api/endpoints/[id]" | "/api/entities" | "/api/feedback" | "/api/feedback/[id]" | "/api/feedback/[id]/vote" | "/api/flags" | "/api/ingest" | "/api/init" | "/api/map" | "/api/map/describe" | "/api/map/files" | "/api/map/finish" | "/api/map/start" | "/api/map/touch-active" | "/api/nodes" | "/api/nodes/[id]" | "/api/nodes/[id]/position" | "/api/nodes/positions" | "/api/nodes/subtasks" | "/api/notes" | "/api/notes/[id]" | "/api/open" | "/api/plan" | "/api/plan/annotations" | "/api/plan/approve" | "/api/plan/history" | "/api/plan/markdown" | "/api/plan/presence" | "/api/plan/verdict" | "/api/preferences" | "/api/project-meta" | "/api/reset" | "/api/scope-guard/check" | "/api/stream" | "/api/tab/nav" | "/api/tab/presence" | "/api/telemetry" | "/api/telemetry/stats" | "/api/version" | "/api/workspace" | "/api/workspace/activate"
|
|
4
|
+
type AppRoutes = "/" | "/docs" | "/feedback" | "/help" | "/map" | "/plan" | "/s/[token]" | "/settings"
|
|
5
|
+
type AppRouteHandlerRoutes = "/api/board-annotations" | "/api/board-annotations/[id]" | "/api/board-layout" | "/api/bug-flags" | "/api/bug-flags/[id]" | "/api/code-graph" | "/api/code-graph/position" | "/api/context" | "/api/context/feature" | "/api/context/file" | "/api/db/arrange" | "/api/db/backfill-access" | "/api/db/position" | "/api/db/prune-planned" | "/api/db/reconcile-endpoints" | "/api/db/relations/[id]" | "/api/db/tables/[id]" | "/api/draft" | "/api/draft/approve" | "/api/draft/status" | "/api/edges" | "/api/edges/[id]" | "/api/endpoints/[id]" | "/api/entities" | "/api/feedback" | "/api/feedback/[id]" | "/api/feedback/[id]/vote" | "/api/flags" | "/api/ingest" | "/api/init" | "/api/map" | "/api/map/describe" | "/api/map/files" | "/api/map/finish" | "/api/map/start" | "/api/map/touch-active" | "/api/mention-search" | "/api/nodes" | "/api/nodes/[id]" | "/api/nodes/[id]/position" | "/api/nodes/positions" | "/api/nodes/subtasks" | "/api/notes" | "/api/notes/[id]" | "/api/open" | "/api/plan" | "/api/plan/annotations" | "/api/plan/approve" | "/api/plan/history" | "/api/plan/markdown" | "/api/plan/presence" | "/api/plan/verdict" | "/api/preferences" | "/api/project-meta" | "/api/reset" | "/api/scope-guard/check" | "/api/share" | "/api/share/create" | "/api/stream" | "/api/tab/nav" | "/api/tab/presence" | "/api/telemetry" | "/api/telemetry/stats" | "/api/version" | "/api/workspace" | "/api/workspace/activate"
|
|
6
6
|
type PageRoutes = never
|
|
7
7
|
type LayoutRoutes = "/"
|
|
8
8
|
type RedirectRoutes = never
|
|
@@ -48,6 +48,7 @@ interface ParamMap {
|
|
|
48
48
|
"/api/map/finish": {}
|
|
49
49
|
"/api/map/start": {}
|
|
50
50
|
"/api/map/touch-active": {}
|
|
51
|
+
"/api/mention-search": {}
|
|
51
52
|
"/api/nodes": {}
|
|
52
53
|
"/api/nodes/[id]": { "id": string; }
|
|
53
54
|
"/api/nodes/[id]/position": { "id": string; }
|
|
@@ -67,6 +68,8 @@ interface ParamMap {
|
|
|
67
68
|
"/api/project-meta": {}
|
|
68
69
|
"/api/reset": {}
|
|
69
70
|
"/api/scope-guard/check": {}
|
|
71
|
+
"/api/share": {}
|
|
72
|
+
"/api/share/create": {}
|
|
70
73
|
"/api/stream": {}
|
|
71
74
|
"/api/tab/nav": {}
|
|
72
75
|
"/api/tab/presence": {}
|
|
@@ -80,6 +83,7 @@ interface ParamMap {
|
|
|
80
83
|
"/help": {}
|
|
81
84
|
"/map": {}
|
|
82
85
|
"/plan": {}
|
|
86
|
+
"/s/[token]": { "token": string; }
|
|
83
87
|
"/settings": {}
|
|
84
88
|
}
|
|
85
89
|
|
package/.next/types/validator.ts
CHANGED
|
@@ -101,6 +101,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
101
101
|
type __Unused = __Check
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
// Validate ../../app/s/[token]/page.tsx
|
|
105
|
+
{
|
|
106
|
+
type __IsExpected<Specific extends AppPageConfig<"/s/[token]">> = Specific
|
|
107
|
+
const handler = {} as typeof import("../../app/s/[token]/page.js")
|
|
108
|
+
type __Check = __IsExpected<typeof handler>
|
|
109
|
+
// @ts-ignore
|
|
110
|
+
type __Unused = __Check
|
|
111
|
+
}
|
|
112
|
+
|
|
104
113
|
// Validate ../../app/settings/page.tsx
|
|
105
114
|
{
|
|
106
115
|
type __IsExpected<Specific extends AppPageConfig<"/settings">> = Specific
|
|
@@ -434,6 +443,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
434
443
|
type __Unused = __Check
|
|
435
444
|
}
|
|
436
445
|
|
|
446
|
+
// Validate ../../app/api/mention-search/route.ts
|
|
447
|
+
{
|
|
448
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/mention-search">> = Specific
|
|
449
|
+
const handler = {} as typeof import("../../app/api/mention-search/route.js")
|
|
450
|
+
type __Check = __IsExpected<typeof handler>
|
|
451
|
+
// @ts-ignore
|
|
452
|
+
type __Unused = __Check
|
|
453
|
+
}
|
|
454
|
+
|
|
437
455
|
// Validate ../../app/api/nodes/[id]/position/route.ts
|
|
438
456
|
{
|
|
439
457
|
type __IsExpected<Specific extends RouteHandlerConfig<"/api/nodes/[id]/position">> = Specific
|
|
@@ -605,6 +623,24 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
|
|
|
605
623
|
type __Unused = __Check
|
|
606
624
|
}
|
|
607
625
|
|
|
626
|
+
// Validate ../../app/api/share/create/route.ts
|
|
627
|
+
{
|
|
628
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/share/create">> = Specific
|
|
629
|
+
const handler = {} as typeof import("../../app/api/share/create/route.js")
|
|
630
|
+
type __Check = __IsExpected<typeof handler>
|
|
631
|
+
// @ts-ignore
|
|
632
|
+
type __Unused = __Check
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
// Validate ../../app/api/share/route.ts
|
|
636
|
+
{
|
|
637
|
+
type __IsExpected<Specific extends RouteHandlerConfig<"/api/share">> = Specific
|
|
638
|
+
const handler = {} as typeof import("../../app/api/share/route.js")
|
|
639
|
+
type __Check = __IsExpected<typeof handler>
|
|
640
|
+
// @ts-ignore
|
|
641
|
+
type __Unused = __Check
|
|
642
|
+
}
|
|
643
|
+
|
|
608
644
|
// Validate ../../app/api/stream/route.ts
|
|
609
645
|
{
|
|
610
646
|
type __IsExpected<Specific extends RouteHandlerConfig<"/api/stream">> = Specific
|
package/dist/bin/doctor.js
CHANGED
|
@@ -71,7 +71,7 @@ Beacon was already initialized in this repo (\`/beacon-init\` ran at some point)
|
|
|
71
71
|
|
|
72
72
|
## What gets preserved vs replaced
|
|
73
73
|
|
|
74
|
-
The \`beacon_init_persist\` tool **replaces only init-derived nodes** (\`source=INIT\`). A curated architecture node (created by \`
|
|
74
|
+
The \`beacon_init_persist\` tool **replaces only init-derived nodes** (\`source=INIT\`). A curated architecture node (created by \`beacon_feature\` action:done or by hand) whose title matches a component in your refreshed analysis is **merged in place** \u2014 your fresh \`domain\`/\`role\`/\`plain\`/\`layer\`/\`files\` land on it, but it keeps its source, position, status, and bug flags, and no duplicate INIT node is created. Curated nodes your analysis does NOT mention survive untouched, as do hand-edited tables, custom positions, notes, and draft feature plans. So you can re-run this freely.
|
|
75
75
|
|
|
76
76
|
The one caveat: if the user manually edited an INIT-source node on the canvas (e.g., renamed it, rewrote its role), that edit IS overwritten when you re-persist \u2014 and a renamed node no longer title-matches, so it survives as its own card. If the user mentions hand-curated INIT nodes, ask whether they want those carried into the new analysis verbatim.
|
|
77
77
|
|
|
@@ -175,13 +175,23 @@ When listing endpoints, give each \`uses: [{ table, access }]\` so the endpoint\
|
|
|
175
175
|
|
|
176
176
|
EVERY feature MUST carry \`category\` (e.g. AUTH | SEARCH | DATA | INTEL | BILLING | \u2026; \`cluster\` is accepted as an alias) and \`priority\` (0 = P0 critical, 1 = P1 high, 2 = P2 medium, 3 = P3 low). Beacon REJECTS a plan whose features omit either \u2014 \`beacon_propose_plan\` returns the list of what's missing, and an ExitPlanMode \`\`\`beacon block is denied \u2014 so set both on every feature instead of relying on defaults.
|
|
177
177
|
|
|
178
|
-
When the workspace HAS A FRONTEND (Beacon knows \u2014 the agent set \`hasFrontend\` at init, or frontend files were detected), every feature must ALSO carry \`layer\`: \`"frontend" | "backend" | "fullstack"\` \u2014 which side of the stack the work lands on. Plans omitting it are REJECTED the same way category/priority are. It works on every surface that creates roadmap cards (\`beacon_propose_plan\`, the \`\`\`beacon block, \`
|
|
178
|
+
When the workspace HAS A FRONTEND (Beacon knows \u2014 the agent set \`hasFrontend\` at init, or frontend files were detected), every feature must ALSO carry \`layer\`: \`"frontend" | "backend" | "fullstack"\` \u2014 which side of the stack the work lands on. Plans omitting it are REJECTED the same way category/priority are. It works on every surface that creates roadmap cards (\`beacon_propose_plan\`, the \`\`\`beacon block, \`beacon_feature\` \u2014 sub-tasks default to the parent's layer) and on architecture components (\`beacon_feature\` action:done / \`beacon_init_persist\`). In a pure-backend repo, never set it \u2014 the boards don't show it there.
|
|
179
179
|
|
|
180
|
-
|
|
180
|
+
### Adding a card directly \u2014 \`beacon_feature\` (no review gate)
|
|
181
|
+
|
|
182
|
+
To put a card on the board WITHOUT the plan-review flow, call \`beacon_feature\` \u2014 ONE tool for a feature's whole lifecycle:
|
|
183
|
+
- \`{ action: "add" }\` creates a card in a SINGLE call. It defaults to \`status: "backlog"\` (a PENDING item you're NOT working on yet); pass \`status: "active"\` to start it IN_PROGRESS now. A title that matches an existing card returns \`exists\` (reuse it) \u2014 \`add\` never activates or demotes a card already on the board.
|
|
184
|
+
- \`{ action: "start" }\` marks an existing card IN_PROGRESS (create-or-flag).
|
|
185
|
+
- \`{ action: "subtasks" }\` adds child tasks under a card.
|
|
186
|
+
- \`{ action: "done" }\` completes feature(s) and registers the files/architecture touched.
|
|
187
|
+
|
|
188
|
+
A NEW card REQUIRES \`category\` + \`priority\` (and \`layer\` where the workspace has a frontend). Use \`beacon_propose_plan\` / \`beacon_present_plan\` only when you want the user to REVIEW before the card lands.
|
|
189
|
+
|
|
190
|
+
REUSE before you create. Call \`beacon_map\` FIRST \u2014 it lists every card with its \`category\`, \`priority\`, \`layer\` and \`status\`, so you reuse an existing category (don't invent a near-synonym) and spot duplicates WITHOUT calling \`beacon_entities\`. Beacon HARD-BLOCKS a feature that duplicates an existing one (it returns the existing feature to use instead) and one created without a category. \`category\` is the ONLY domain field. \`front\` (in \`beacon_feature\`) nests a card UNDER an existing parent feature \u2014 it is NOT a domain tag; a \`front\` that matches no real feature is rejected.
|
|
181
191
|
|
|
182
192
|
When listing features, give each \`dependsOn: ["Other feature title", \u2026]\` for any feature that must ship after another in the same plan. Beacon draws these as "depends on" links so the roadmap shows the dependency chain instead of loose, disconnected cards.
|
|
183
193
|
|
|
184
|
-
A roadmap item that is a BUG to fix (not a feature to build) should carry \`kind: "BUG"\` \u2014 it renders as a typed bug card. This works everywhere roadmap cards are created: \`beacon_propose_plan\` features, the \`\`\`beacon block, \`
|
|
194
|
+
A roadmap item that is a BUG to fix (not a feature to build) should carry \`kind: "BUG"\` \u2014 it renders as a typed bug card. This works everywhere roadmap cards are created: \`beacon_propose_plan\` features, the \`\`\`beacon block, \`beacon_feature\` (add/start when the user is working on a bug; or \`subtasks\` items for a bug discovered mid-work), and \`beacon_init_persist\` roadmap items. Default is FEATURE.
|
|
185
195
|
|
|
186
196
|
### 2b. Presenting a plan in plan mode (ExitPlanMode)
|
|
187
197
|
|
|
@@ -199,11 +209,11 @@ Beacon extracts it deterministically and **strips the block from the prose** (it
|
|
|
199
209
|
|
|
200
210
|
### 3. At the end, register the work \u2014 in ONE call
|
|
201
211
|
|
|
202
|
-
Call \`
|
|
212
|
+
Call \`beacon_feature({ action: "done" })\` **ONCE** with a \`features\` array \u2014 one entry per feature the plan created \u2014 each with the files you touched and a short markdown description. This flips each one to **Done** \u2014 including its sub-tasks (the cascade completes every PENDING/IN_PROGRESS child; a sub-task you did NOT finish must be set BLOCKED or CANCELLED before registering, so it survives visibly) \u2014 and keeps \`beacon_context_for_feature\` accurate for the next session.
|
|
203
213
|
|
|
204
214
|
Key each entry by its node \`id\`: the ids are handed back to you when the plan is approved (in the approval message / additionalContext), so you don't fuzzy-match titles or pay a disambiguation round-trip. If you don't have an id, \`title\` still works.
|
|
205
215
|
|
|
206
|
-
Register them all in that single batched call. If a plan added five features, that's ONE \`
|
|
216
|
+
Register them all in that single batched call. If a plan added five features, that's ONE \`beacon_feature({ action: "done" })\` call with five entries \u2014 NOT five calls, and NOT just an umbrella ("Harden auth"), which leaves the individual features stuck on **Pending**.
|
|
207
217
|
|
|
208
218
|
If the feature added or materially changed a REAL architectural component (a subsystem \u2014 NOT a file), also pass \`architecture: [{ title, domain, role, \u2026 }]\` so the Architecture map stays accurate. It upserts curated components by title; never list files as components. If you found a bug or something worth investigating in a component's code, add \`bugs: [{ note }]\` to its architecture entry \u2014 it renders as a bug flag on the node (attributed to the agent); identical open flags are not duplicated. Only flag what you actually saw in the code.
|
|
209
219
|
|
package/dist/bin/hook.js
CHANGED
|
@@ -71,7 +71,7 @@ Beacon was already initialized in this repo (\`/beacon-init\` ran at some point)
|
|
|
71
71
|
|
|
72
72
|
## What gets preserved vs replaced
|
|
73
73
|
|
|
74
|
-
The \`beacon_init_persist\` tool **replaces only init-derived nodes** (\`source=INIT\`). A curated architecture node (created by \`
|
|
74
|
+
The \`beacon_init_persist\` tool **replaces only init-derived nodes** (\`source=INIT\`). A curated architecture node (created by \`beacon_feature\` action:done or by hand) whose title matches a component in your refreshed analysis is **merged in place** \u2014 your fresh \`domain\`/\`role\`/\`plain\`/\`layer\`/\`files\` land on it, but it keeps its source, position, status, and bug flags, and no duplicate INIT node is created. Curated nodes your analysis does NOT mention survive untouched, as do hand-edited tables, custom positions, notes, and draft feature plans. So you can re-run this freely.
|
|
75
75
|
|
|
76
76
|
The one caveat: if the user manually edited an INIT-source node on the canvas (e.g., renamed it, rewrote its role), that edit IS overwritten when you re-persist \u2014 and a renamed node no longer title-matches, so it survives as its own card. If the user mentions hand-curated INIT nodes, ask whether they want those carried into the new analysis verbatim.
|
|
77
77
|
|
|
@@ -175,13 +175,23 @@ When listing endpoints, give each \`uses: [{ table, access }]\` so the endpoint\
|
|
|
175
175
|
|
|
176
176
|
EVERY feature MUST carry \`category\` (e.g. AUTH | SEARCH | DATA | INTEL | BILLING | \u2026; \`cluster\` is accepted as an alias) and \`priority\` (0 = P0 critical, 1 = P1 high, 2 = P2 medium, 3 = P3 low). Beacon REJECTS a plan whose features omit either \u2014 \`beacon_propose_plan\` returns the list of what's missing, and an ExitPlanMode \`\`\`beacon block is denied \u2014 so set both on every feature instead of relying on defaults.
|
|
177
177
|
|
|
178
|
-
When the workspace HAS A FRONTEND (Beacon knows \u2014 the agent set \`hasFrontend\` at init, or frontend files were detected), every feature must ALSO carry \`layer\`: \`"frontend" | "backend" | "fullstack"\` \u2014 which side of the stack the work lands on. Plans omitting it are REJECTED the same way category/priority are. It works on every surface that creates roadmap cards (\`beacon_propose_plan\`, the \`\`\`beacon block, \`
|
|
178
|
+
When the workspace HAS A FRONTEND (Beacon knows \u2014 the agent set \`hasFrontend\` at init, or frontend files were detected), every feature must ALSO carry \`layer\`: \`"frontend" | "backend" | "fullstack"\` \u2014 which side of the stack the work lands on. Plans omitting it are REJECTED the same way category/priority are. It works on every surface that creates roadmap cards (\`beacon_propose_plan\`, the \`\`\`beacon block, \`beacon_feature\` \u2014 sub-tasks default to the parent's layer) and on architecture components (\`beacon_feature\` action:done / \`beacon_init_persist\`). In a pure-backend repo, never set it \u2014 the boards don't show it there.
|
|
179
179
|
|
|
180
|
-
|
|
180
|
+
### Adding a card directly \u2014 \`beacon_feature\` (no review gate)
|
|
181
|
+
|
|
182
|
+
To put a card on the board WITHOUT the plan-review flow, call \`beacon_feature\` \u2014 ONE tool for a feature's whole lifecycle:
|
|
183
|
+
- \`{ action: "add" }\` creates a card in a SINGLE call. It defaults to \`status: "backlog"\` (a PENDING item you're NOT working on yet); pass \`status: "active"\` to start it IN_PROGRESS now. A title that matches an existing card returns \`exists\` (reuse it) \u2014 \`add\` never activates or demotes a card already on the board.
|
|
184
|
+
- \`{ action: "start" }\` marks an existing card IN_PROGRESS (create-or-flag).
|
|
185
|
+
- \`{ action: "subtasks" }\` adds child tasks under a card.
|
|
186
|
+
- \`{ action: "done" }\` completes feature(s) and registers the files/architecture touched.
|
|
187
|
+
|
|
188
|
+
A NEW card REQUIRES \`category\` + \`priority\` (and \`layer\` where the workspace has a frontend). Use \`beacon_propose_plan\` / \`beacon_present_plan\` only when you want the user to REVIEW before the card lands.
|
|
189
|
+
|
|
190
|
+
REUSE before you create. Call \`beacon_map\` FIRST \u2014 it lists every card with its \`category\`, \`priority\`, \`layer\` and \`status\`, so you reuse an existing category (don't invent a near-synonym) and spot duplicates WITHOUT calling \`beacon_entities\`. Beacon HARD-BLOCKS a feature that duplicates an existing one (it returns the existing feature to use instead) and one created without a category. \`category\` is the ONLY domain field. \`front\` (in \`beacon_feature\`) nests a card UNDER an existing parent feature \u2014 it is NOT a domain tag; a \`front\` that matches no real feature is rejected.
|
|
181
191
|
|
|
182
192
|
When listing features, give each \`dependsOn: ["Other feature title", \u2026]\` for any feature that must ship after another in the same plan. Beacon draws these as "depends on" links so the roadmap shows the dependency chain instead of loose, disconnected cards.
|
|
183
193
|
|
|
184
|
-
A roadmap item that is a BUG to fix (not a feature to build) should carry \`kind: "BUG"\` \u2014 it renders as a typed bug card. This works everywhere roadmap cards are created: \`beacon_propose_plan\` features, the \`\`\`beacon block, \`
|
|
194
|
+
A roadmap item that is a BUG to fix (not a feature to build) should carry \`kind: "BUG"\` \u2014 it renders as a typed bug card. This works everywhere roadmap cards are created: \`beacon_propose_plan\` features, the \`\`\`beacon block, \`beacon_feature\` (add/start when the user is working on a bug; or \`subtasks\` items for a bug discovered mid-work), and \`beacon_init_persist\` roadmap items. Default is FEATURE.
|
|
185
195
|
|
|
186
196
|
### 2b. Presenting a plan in plan mode (ExitPlanMode)
|
|
187
197
|
|
|
@@ -199,11 +209,11 @@ Beacon extracts it deterministically and **strips the block from the prose** (it
|
|
|
199
209
|
|
|
200
210
|
### 3. At the end, register the work \u2014 in ONE call
|
|
201
211
|
|
|
202
|
-
Call \`
|
|
212
|
+
Call \`beacon_feature({ action: "done" })\` **ONCE** with a \`features\` array \u2014 one entry per feature the plan created \u2014 each with the files you touched and a short markdown description. This flips each one to **Done** \u2014 including its sub-tasks (the cascade completes every PENDING/IN_PROGRESS child; a sub-task you did NOT finish must be set BLOCKED or CANCELLED before registering, so it survives visibly) \u2014 and keeps \`beacon_context_for_feature\` accurate for the next session.
|
|
203
213
|
|
|
204
214
|
Key each entry by its node \`id\`: the ids are handed back to you when the plan is approved (in the approval message / additionalContext), so you don't fuzzy-match titles or pay a disambiguation round-trip. If you don't have an id, \`title\` still works.
|
|
205
215
|
|
|
206
|
-
Register them all in that single batched call. If a plan added five features, that's ONE \`
|
|
216
|
+
Register them all in that single batched call. If a plan added five features, that's ONE \`beacon_feature({ action: "done" })\` call with five entries \u2014 NOT five calls, and NOT just an umbrella ("Harden auth"), which leaves the individual features stuck on **Pending**.
|
|
207
217
|
|
|
208
218
|
If the feature added or materially changed a REAL architectural component (a subsystem \u2014 NOT a file), also pass \`architecture: [{ title, domain, role, \u2026 }]\` so the Architecture map stays accurate. It upserts curated components by title; never list files as components. If you found a bug or something worth investigating in a component's code, add \`bugs: [{ note }]\` to its architecture entry \u2014 it renders as a bug flag on the node (attributed to the agent); identical open flags are not duplicated. Only flag what you actually saw in the code.
|
|
209
219
|
|