vibedoc 1.5.0 → 1.6.0
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/build-manifest.json +4 -4
- package/.next/prerender-manifest.json +11 -11
- package/.next/required-server-files.json +0 -4
- package/.next/server/app/(app)/activity/page/build-manifest.json +1 -1
- package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
- package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/board/page/build-manifest.json +1 -1
- package/.next/server/app/(app)/board/page.js.nft.json +1 -1
- package/.next/server/app/(app)/board/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/docs/page/build-manifest.json +1 -1
- package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
- package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/explorer/page/build-manifest.json +1 -1
- package/.next/server/app/(app)/explorer/page.js.nft.json +1 -1
- package/.next/server/app/(app)/explorer/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/memory/page/build-manifest.json +1 -1
- package/.next/server/app/(app)/memory/page.js.nft.json +1 -1
- package/.next/server/app/(app)/memory/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/roadmap/page/build-manifest.json +1 -1
- package/.next/server/app/(app)/roadmap/page.js.nft.json +1 -1
- package/.next/server/app/(app)/roadmap/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/settings/page/build-manifest.json +1 -1
- package/.next/server/app/(app)/settings/page.js.nft.json +1 -1
- package/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/setup/page/build-manifest.json +1 -1
- package/.next/server/app/(app)/setup/page.js.nft.json +1 -1
- package/.next/server/app/(app)/setup/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error/page/build-manifest.json +1 -1
- package/.next/server/app/_global-error/page.js.nft.json +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/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page/build-manifest.json +1 -1
- 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 +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/activity.html +1 -1
- package/.next/server/app/activity.rsc +23 -22
- package/.next/server/app/activity.segments/!KGFwcCk/activity/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/activity.segments/_full.segment.rsc +23 -22
- package/.next/server/app/activity.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/activity/route.js +3 -3
- package/.next/server/app/api/activity/route.js.nft.json +1 -1
- package/.next/server/app/api/backlinks/route.js +3 -3
- package/.next/server/app/api/backlinks/route.js.nft.json +1 -1
- package/.next/server/app/api/chat/route.js +3 -3
- package/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/.next/server/app/api/context/route.js +3 -3
- package/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/server/app/api/decisions/route.js +3 -3
- package/.next/server/app/api/decisions/route.js.nft.json +1 -1
- package/.next/server/app/api/docs/route.js +3 -3
- package/.next/server/app/api/docs/route.js.nft.json +1 -1
- package/.next/server/app/api/events/route.js.nft.json +1 -1
- package/.next/server/app/api/explorer/route.js +4 -3
- package/.next/server/app/api/explorer/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/route.js +4 -4
- package/.next/server/app/api/mcp/route.js.nft.json +1 -1
- package/.next/server/app/api/memory/route.js +3 -3
- package/.next/server/app/api/memory/route.js.nft.json +1 -1
- package/.next/server/app/api/plan/apply/route.js +4 -4
- package/.next/server/app/api/plan/apply/route.js.nft.json +1 -1
- package/.next/server/app/api/projects/route.js +3 -3
- package/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/route.js +3 -3
- package/.next/server/app/api/registry/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/create/route.js +4 -4
- package/.next/server/app/api/roadmap/create/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/delete/route.js +4 -4
- package/.next/server/app/api/roadmap/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/generate/route.js +4 -4
- package/.next/server/app/api/roadmap/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/layout/route.js +4 -4
- package/.next/server/app/api/roadmap/layout/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/route.js +3 -3
- package/.next/server/app/api/roadmap/route.js.nft.json +1 -1
- package/.next/server/app/api/roadmap/update/route.js +4 -4
- package/.next/server/app/api/roadmap/update/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route.js +3 -3
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/route.js +4 -4
- package/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/setup/generate/route.js +2 -2
- package/.next/server/app/api/setup/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/setup/write/route.js +3 -3
- package/.next/server/app/api/setup/write/route.js.nft.json +1 -1
- package/.next/server/app/api/summary/route.js +3 -3
- package/.next/server/app/api/summary/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/create/route.js +3 -3
- package/.next/server/app/api/tasks/create/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/route.js +3 -3
- package/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/.next/server/app/board.html +1 -1
- package/.next/server/app/board.rsc +23 -21
- package/.next/server/app/board.segments/!KGFwcCk/board/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/board.segments/_full.segment.rsc +23 -21
- package/.next/server/app/board.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +27 -25
- package/.next/server/app/docs.segments/!KGFwcCk/docs/__PAGE__.segment.rsc +9 -10
- package/.next/server/app/docs.segments/_full.segment.rsc +27 -25
- package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/explorer.html +1 -1
- package/.next/server/app/explorer.rsc +23 -22
- package/.next/server/app/explorer.segments/!KGFwcCk/explorer/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/explorer.segments/_full.segment.rsc +23 -22
- package/.next/server/app/explorer.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/memory.html +1 -1
- package/.next/server/app/memory.rsc +23 -22
- package/.next/server/app/memory.segments/!KGFwcCk/memory/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/memory.segments/_full.segment.rsc +23 -22
- package/.next/server/app/memory.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/page/build-manifest.json +1 -1
- 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/roadmap.html +1 -1
- package/.next/server/app/roadmap.rsc +26 -25
- package/.next/server/app/roadmap.segments/!KGFwcCk/roadmap/__PAGE__.segment.rsc +11 -9
- package/.next/server/app/roadmap.segments/_full.segment.rsc +26 -25
- package/.next/server/app/roadmap.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +23 -22
- package/.next/server/app/settings.segments/!KGFwcCk/settings/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/settings.segments/_full.segment.rsc +23 -22
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/setup.html +1 -1
- package/.next/server/app/setup.rsc +23 -21
- package/.next/server/app/setup.segments/!KGFwcCk/setup/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/setup.segments/_full.segment.rsc +23 -21
- package/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0-q4v32._.js → 11mp_@anthropic-ai_sdk_0-5bkpj._.js} +2 -2
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_05hfnhc._.js → 11mp_@anthropic-ai_sdk_00psb_y._.js} +2 -2
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_05dmim9._.js → 11mp_@anthropic-ai_sdk_01l5h3i._.js} +2 -2
- package/.next/server/chunks/{11mp_@anthropic-ai_sdk_07xtb0h._.js → 11mp_@anthropic-ai_sdk_072r2bd._.js} +2 -2
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0am8bw2._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0enefn6._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0k3n_5f._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0lcfjm4._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0lfx9av._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0qau3qw._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0r1pmvm._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_11t-z2t._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_15hyn79._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1_qk07x._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1b2929e._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1e72c89._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1eq7asn._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1fhdojs._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1lh_vwq._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ludf-o._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1m3luz3._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1x1iz3d._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1xsmwlh._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_202spah._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_215hw9u._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0n-i0pd._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_13pos4j._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_17b4pqr._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1bkcmom._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1hlj_3l._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1ip-sor._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1pex5o1._.js +3 -0
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1s8lc8_._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__03upgv8._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__03upgv8._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__05l6129._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0u2rl0m._.js.map → [root-of-the-server]__05l6129._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__06zf_sh._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__01yk8oi._.js.map → [root-of-the-server]__06zf_sh._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__093hlkh._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1337jpl._.js.map → [root-of-the-server]__093hlkh._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0aynzrb._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0b49g9i._.js.map → [root-of-the-server]__0aynzrb._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0e59y5j._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0eqd-tw._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0yd6wlm._.js.map → [root-of-the-server]__0eqd-tw._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0nfvvy9._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0j-xjbf._.js.map → [root-of-the-server]__0nfvvy9._.js.map} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__03t5uqz._.js → [root-of-the-server]__0qac4k0._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__03t5uqz._.js.map → [root-of-the-server]__0qac4k0._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__106gpvh._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0kaegk7._.js.map → [root-of-the-server]__106gpvh._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__11s-8eg._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__02k1gkk._.js.map → [root-of-the-server]__11s-8eg._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__11s76m8._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__11s76m8._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__142icjb._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1yow6hw._.js.map → [root-of-the-server]__142icjb._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__14aeqoi._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__14aeqoi._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__1613hjb._.js +88 -0
- package/.next/server/chunks/[root-of-the-server]__1613hjb._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__169hmq_._.js +10 -0
- package/.next/server/chunks/{[root-of-the-server]__0d4jkve._.js.map → [root-of-the-server]__169hmq_._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__17p0rkn._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0v8x64y._.js.map → [root-of-the-server]__17p0rkn._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__17xb02p._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0zybyuh._.js.map → [root-of-the-server]__17xb02p._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__18kxo4a._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1znbm9i._.js.map → [root-of-the-server]__18kxo4a._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1c55c2q._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0l3voov._.js.map → [root-of-the-server]__1c55c2q._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1j0rrps._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0635d15._.js.map → [root-of-the-server]__1j0rrps._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1lj_2cv._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0qsx33x._.js.map → [root-of-the-server]__1lj_2cv._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1o4a-4j._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1vaownn._.js.map → [root-of-the-server]__1o4a-4j._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1q4ahvz._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1hsybai._.js.map → [root-of-the-server]__1q4ahvz._.js.map} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1337jpl._.js → [root-of-the-server]__1u_q61h._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0kkefbq._.js.map → [root-of-the-server]__1u_q61h._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1wr0m-s._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0-rjzmv._.js.map → [root-of-the-server]__1wr0m-s._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1xb0fmp._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__15suc44._.js.map → [root-of-the-server]__1xb0fmp._.js.map} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1hsybai._.js → [root-of-the-server]__1y-tt29._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0af0ma6._.js.map → [root-of-the-server]__1y-tt29._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1y3u5ud._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0xqsv4h._.js.map → [root-of-the-server]__1y3u5ud._.js.map} +1 -1
- package/.next/server/chunks/[turbopack]_runtime.js +0 -132
- package/.next/server/chunks/[turbopack]_runtime.js.map +4 -5
- package/.next/server/chunks/_04byth9._.js +34 -0
- package/.next/server/chunks/_04byth9._.js.map +1 -0
- package/.next/server/chunks/_1au4syj._.js +1 -1
- package/.next/server/chunks/_1au4syj._.js.map +1 -1
- package/.next/server/chunks/_1b5fqxy._.js +3 -0
- package/.next/server/chunks/_1b5fqxy._.js.map +1 -0
- package/.next/server/chunks/_1si7nb_._.js +8 -8
- package/.next/server/chunks/_1si7nb_._.js.map +1 -1
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_08ca0b4._.js +3 -0
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_08ca0b4._.js.map +1 -0
- package/.next/server/chunks/ssr/[turbopack]_runtime.js +0 -132
- package/.next/server/chunks/ssr/[turbopack]_runtime.js.map +4 -5
- package/.next/server/chunks/ssr/_01suk2m._.js +3 -0
- package/.next/server/chunks/ssr/_01suk2m._.js.map +1 -0
- package/.next/server/chunks/ssr/_04xff_2._.js +1 -1
- package/.next/server/chunks/ssr/_04xff_2._.js.map +1 -1
- package/.next/server/chunks/ssr/_0qyglif._.js +2 -2
- package/.next/server/chunks/ssr/_0qyglif._.js.map +1 -1
- package/.next/server/chunks/ssr/_0skuoxv._.js +3 -1
- package/.next/server/chunks/ssr/_0skuoxv._.js.map +1 -1
- package/.next/server/chunks/ssr/{_1alz6n5._.js → _14i_6yb._.js} +2 -2
- package/.next/server/chunks/ssr/_14i_6yb._.js.map +1 -0
- package/.next/server/chunks/ssr/{_1s08bv8._.js → _1cbhuz4._.js} +2 -2
- package/.next/server/chunks/ssr/_1cbhuz4._.js.map +1 -0
- package/.next/server/chunks/ssr/_1ewk_mn._.js +3 -0
- package/.next/server/chunks/ssr/_1ewk_mn._.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_1dcmsrg._.js +3 -0
- package/.next/server/chunks/ssr/node_modules__pnpm_1dcmsrg._.js.map +1 -0
- package/.next/server/chunks/ssr/src_components_008q3v8._.js +3 -0
- package/.next/server/chunks/ssr/src_components_008q3v8._.js.map +1 -0
- package/.next/server/middleware-build-manifest.js +4 -4
- 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/0eggcu0ovk8sd.js +68 -0
- package/.next/static/chunks/{145g20k60txhc.js → 0iva6rdtfqpbz.js} +1 -1
- package/.next/static/chunks/0qm101bdsxdyh.css +10 -0
- package/.next/static/chunks/0wg9n5zb8mo2p.js +1 -0
- package/.next/static/chunks/{2-faknwci76np.js → 0wjw1laqwg-cr.js} +1 -1
- package/.next/static/chunks/0z_y7el6m76yk.js +1 -0
- package/.next/static/chunks/1-ekntoveuxzd.js +4 -0
- package/.next/static/chunks/1r7z33e9jk3vp.js +1 -0
- package/.next/static/chunks/{2f7yju8yks2m9.js → 1xyepk9227yej.js} +6 -73
- package/.next/static/chunks/{1lfr973ckp6by.js → 1ytqu-ra-fylk.js} +2 -2
- package/.next/static/chunks/3dlnlsyyysw5m.js +1 -0
- package/.next/static/chunks/{0aiy7o5bsiixt.js → 3kkg030rcpz7l.js} +1 -1
- package/.next/static/chunks/3pf_4ye6ju8gt.js +1 -0
- package/.next/static/chunks/turbopack-2qsbj8zx38t0j.js +1 -0
- package/README.md +2 -0
- package/next.config.js +4 -7
- package/package.json +1 -1
- package/skills/epic-breakdown/SKILL.md +11 -1
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0fw_tls._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0q6tm_c._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0qyh79u._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0rfkb6q._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0x1yqfb._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_0yt3ewg._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1-kttjy._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_12h8gza._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_18c2w1i._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_18fnlqa._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_19on0yg._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1alh48t._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ck56ir._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1daia98._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1f6snvo._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1p6s626._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1ps921l._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1rqxfdf._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1s7maye._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1vuy6_x._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_1xv39eu._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_078qkb6._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0q7-hjh._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_165bzk6._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1hfbfb5._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1sa-8tw._.js +0 -3
- package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_1xq_gof._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0-rjzmv._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__01yk8oi._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__02k1gkk._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0635d15._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0af0ma6._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0b49g9i._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0d4jkve._.js +0 -10
- package/.next/server/chunks/[root-of-the-server]__0j-xjbf._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0kaegk7._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0kkefbq._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0l3voov._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0qsx33x._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0sc44r6._.js +0 -86
- package/.next/server/chunks/[root-of-the-server]__0sc44r6._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0u2rl0m._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0uk0tga._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0v8x64y._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0xqsv4h._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0yd6wlm._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0zybyuh._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__134sb3d._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__134sb3d._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__15suc44._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1jeqjz6._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1kfohrq._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1mz21a2._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1mz21a2._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1vaownn._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1yow6hw._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1znbm9i._.js +0 -3
- package/.next/server/chunks/_0csymdc._.js +0 -34
- package/.next/server/chunks/_0csymdc._.js.map +0 -1
- package/.next/server/chunks/_1f1rssd._.js +0 -3
- package/.next/server/chunks/_1f1rssd._.js.map +0 -1
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_1v0h3_3._.js +0 -3
- package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_1v0h3_3._.js.map +0 -1
- package/.next/server/chunks/ssr/_0v7muti._.js +0 -3
- package/.next/server/chunks/ssr/_0v7muti._.js.map +0 -1
- package/.next/server/chunks/ssr/_1a9mqm1._.js +0 -3
- package/.next/server/chunks/ssr/_1a9mqm1._.js.map +0 -1
- package/.next/server/chunks/ssr/_1alz6n5._.js.map +0 -1
- package/.next/server/chunks/ssr/_1s08bv8._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules__pnpm_051nq8c._.js +0 -3
- package/.next/server/chunks/ssr/node_modules__pnpm_051nq8c._.js.map +0 -1
- package/.next/server/chunks/ssr/src_components_0wg3bi2._.js +0 -3
- package/.next/server/chunks/ssr/src_components_0wg3bi2._.js.map +0 -1
- package/.next/static/chunks/05qw7-fs1exlt.js +0 -1
- package/.next/static/chunks/0_vu3y1bvg843.js +0 -1
- package/.next/static/chunks/0fvzbdfwiu4a2.js +0 -1
- package/.next/static/chunks/14ewdzt8piprq.js +0 -1
- package/.next/static/chunks/2g08tblvdp0t_.js +0 -2
- package/.next/static/chunks/2gdlf-xhbpc75.css +0 -10
- package/.next/static/chunks/2xu8bb_0152j-.js +0 -1
- package/.next/static/chunks/turbopack-181pehyg9iyaw.js +0 -1
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0-q4v32._.js.map → 11mp_@anthropic-ai_sdk_0-5bkpj._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_05dmim9._.js.map → 11mp_@anthropic-ai_sdk_00psb_y._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_05hfnhc._.js.map → 11mp_@anthropic-ai_sdk_01l5h3i._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_07xtb0h._.js.map → 11mp_@anthropic-ai_sdk_072r2bd._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0fw_tls._.js.map → 11mp_@anthropic-ai_sdk_0am8bw2._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0q6tm_c._.js.map → 11mp_@anthropic-ai_sdk_0enefn6._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0qyh79u._.js.map → 11mp_@anthropic-ai_sdk_0k3n_5f._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0rfkb6q._.js.map → 11mp_@anthropic-ai_sdk_0lcfjm4._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0x1yqfb._.js.map → 11mp_@anthropic-ai_sdk_0lfx9av._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_0yt3ewg._.js.map → 11mp_@anthropic-ai_sdk_0qau3qw._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1-kttjy._.js.map → 11mp_@anthropic-ai_sdk_0r1pmvm._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_12h8gza._.js.map → 11mp_@anthropic-ai_sdk_11t-z2t._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_18c2w1i._.js.map → 11mp_@anthropic-ai_sdk_15hyn79._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_18fnlqa._.js.map → 11mp_@anthropic-ai_sdk_1_qk07x._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_19on0yg._.js.map → 11mp_@anthropic-ai_sdk_1b2929e._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1alh48t._.js.map → 11mp_@anthropic-ai_sdk_1e72c89._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1ck56ir._.js.map → 11mp_@anthropic-ai_sdk_1eq7asn._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1daia98._.js.map → 11mp_@anthropic-ai_sdk_1fhdojs._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1f6snvo._.js.map → 11mp_@anthropic-ai_sdk_1lh_vwq._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1p6s626._.js.map → 11mp_@anthropic-ai_sdk_1ludf-o._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1ps921l._.js.map → 11mp_@anthropic-ai_sdk_1m3luz3._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1rqxfdf._.js.map → 11mp_@anthropic-ai_sdk_1x1iz3d._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1s7maye._.js.map → 11mp_@anthropic-ai_sdk_1xsmwlh._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1vuy6_x._.js.map → 11mp_@anthropic-ai_sdk_202spah._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_1xv39eu._.js.map → 11mp_@anthropic-ai_sdk_215hw9u._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_078qkb6._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0n-i0pd._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_0q7-hjh._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_13pos4j._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_165bzk6._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_17b4pqr._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1hfbfb5._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1bkcmom._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1sa-8tw._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1hlj_3l._.js.map} +0 -0
- /package/.next/server/chunks/{11mp_@anthropic-ai_sdk_index_mjs_1xq_gof._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1ip-sor._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__0uk0tga._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1pex5o1._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__1jeqjz6._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_1s8lc8_._.js.map} +0 -0
- /package/.next/server/chunks/{[root-of-the-server]__1kfohrq._.js.map → [root-of-the-server]__0e59y5j._.js.map} +0 -0
- /package/.next/static/{cmDLf8WOU5PVmUOcSPh2H → ICaoXcRMmgrIFWk8C_Z6D}/_buildManifest.js +0 -0
- /package/.next/static/{cmDLf8WOU5PVmUOcSPh2H → ICaoXcRMmgrIFWk8C_Z6D}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{cmDLf8WOU5PVmUOcSPh2H → ICaoXcRMmgrIFWk8C_Z6D}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/roadmap-health.ts","../../../src/app/api/mcp/route.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/build/templates/app-route.ts"],"sourcesContent":["/**\n * src/lib/roadmap-health.ts\n * Pure (no fs): roadmap progress + drift, shared by the Roadmap page and the MCP handler.\n * A feature's expected status comes from its linked tasks; a horizon's from its features.\n */\n\nimport type { RoadmapItem, RoadmapStatus, Task } from './core'\n\n/** What health needs from a task: status for progress, due for at-risk. */\nexport type TaskInfo = Pick<Task, 'status' | 'due'>\n\nexport interface RoadmapProgress { done: number; total: number }\n\nexport interface RoadmapDrift {\n id: string\n kind: 'status-mismatch' | 'missing-task' | 'overdue' | 'at-risk'\n message: string\n suggestedStatus?: RoadmapStatus\n}\n\nexport interface RoadmapHealth {\n progress: Record<string, RoadmapProgress>\n drift: RoadmapDrift[]\n}\n\nexport type DueState = 'overdue' | 'soon' | 'ok' | 'done'\n\nconst SOON_DAYS = 7\n\n/** Local calendar date \"YYYY-MM-DD\" (due dates are calendar dates, not instants). */\nexport function localToday(now = new Date()): string {\n const p = (n: number) => String(n).padStart(2, '0')\n return `${now.getFullYear()}-${p(now.getMonth() + 1)}-${p(now.getDate())}`\n}\n\nfunction daysBetween(from: string, to: string): number {\n const utc = (d: string) => Date.UTC(+d.slice(0, 4), +d.slice(5, 7) - 1, +d.slice(8, 10))\n return Math.round((utc(to) - utc(from)) / 86_400_000)\n}\n\nexport function dueState(due: string | null, status: RoadmapStatus, today: string): DueState | null {\n if (!due) return null\n if (status === 'done') return 'done'\n if (due < today) return 'overdue'\n return daysBetween(today, due) <= SOON_DAYS ? 'soon' : 'ok'\n}\n\ntype Started = 'done' | 'in-progress' | 'other'\n\nfunction expectedStatus(states: Started[]): RoadmapStatus {\n if (states.every(s => s === 'done')) return 'done'\n if (states.some(s => s !== 'other')) return 'in-progress'\n return 'planned'\n}\n\nexport interface TaskDueSummary { overdue: number; next: string | null }\n\n/** Open tasks' deadlines for a map node: how many are overdue, and the nearest upcoming due. */\nexport function taskDueSummary(taskIds: string[], tasks: Record<string, TaskInfo>, today: string): TaskDueSummary | null {\n const dues = taskIds\n .map(id => tasks[id])\n .filter(t => t && t.due && t.status !== 'done' && t.status !== 'cancelled')\n .map(t => t.due as string)\n if (!dues.length) return null\n const upcoming = dues.filter(d => d >= today).sort()\n return { overdue: dues.length - upcoming.length, next: upcoming[0] ?? null }\n}\n\n/** Why an unfinished epic may miss its date: overdue or blocked tasks, or due soon with nothing started. */\nfunction atRiskReasons(item: RoadmapItem, linked: string[], tasks: Record<string, TaskInfo>, today: string): string[] {\n const reasons: string[] = []\n for (const id of linked) {\n const t = tasks[id]\n if (t.status !== 'done' && t.due && t.due < today) reasons.push(`${id} overdue since ${t.due}`)\n if (t.status === 'blocked') reasons.push(`${id} blocked`)\n }\n const started = linked.some(id => tasks[id].status === 'done' || tasks[id].status === 'in-progress')\n if (item.due && dueState(item.due, item.status, today) === 'soon' && !started) {\n reasons.push(`due ${item.due}, nothing started`)\n }\n return reasons\n}\n\nexport function roadmapHealth(\n items: RoadmapItem[], tasks: Record<string, TaskInfo>, today: string,\n): RoadmapHealth {\n const progress: Record<string, RoadmapProgress> = {}\n const drift: RoadmapDrift[] = []\n\n for (const item of items) {\n if (item.due && dueState(item.due, item.status, today) === 'overdue') {\n drift.push({ id: item.id, kind: 'overdue', message: `${item.id} \"${item.title}\" is overdue since ${item.due}` })\n }\n }\n const horizonIds = new Set(items.filter(i => i.parent === null).map(i => i.id))\n\n for (const item of items) {\n if (item.parent === null) continue\n const missing = item.tasks.filter(t => !(t in tasks))\n if (missing.length) {\n drift.push({ id: item.id, kind: 'missing-task', message: `${item.id} links unknown task ${missing.join(', ')}` })\n }\n // cancelled tasks don't count toward progress or expected status\n const linked = item.tasks.filter(t => t in tasks && tasks[t].status !== 'cancelled')\n const risks = item.status === 'done' ? [] : atRiskReasons(item, linked, tasks, today)\n if (risks.length) {\n drift.push({ id: item.id, kind: 'at-risk', message: `${item.id} \"${item.title}\" at risk: ${risks.join('; ')}` })\n }\n if (!linked.length) continue\n const states: Started[] = linked.map(t =>\n tasks[t].status === 'done' ? 'done' : tasks[t].status === 'in-progress' ? 'in-progress' : 'other')\n progress[item.id] = { done: states.filter(s => s === 'done').length, total: linked.length }\n const expected = expectedStatus(states)\n if (expected !== item.status) {\n const open = linked.filter(t => tasks[t].status !== 'done')\n drift.push({\n id: item.id,\n kind: 'status-mismatch',\n message: expected === 'done'\n ? `${item.id} \"${item.title}\": all tasks done but status is ${item.status}`\n : `${item.id} \"${item.title}\" is ${item.status} but tasks ${open.join(', ')} are not done`,\n suggestedStatus: expected,\n })\n }\n }\n\n for (const h of items) {\n if (!horizonIds.has(h.id)) continue\n const kids = items.filter(i => i.parent === h.id)\n if (!kids.length) continue\n const states: Started[] = kids.map(k => k.status === 'done' ? 'done' : k.status === 'in-progress' ? 'in-progress' : 'other')\n // weight by tasks; an epic not broken down yet counts as one unit\n progress[h.id] = kids.reduce((sum, k) => {\n const p = progress[k.id] ?? { done: k.status === 'done' ? 1 : 0, total: 1 }\n return { done: sum.done + p.done, total: sum.total + p.total }\n }, { done: 0, total: 0 })\n const expected = expectedStatus(states)\n if (expected !== h.status) {\n drift.push({\n id: h.id,\n kind: 'status-mismatch',\n message: `${h.id} \"${h.title}\" is ${h.status} but its features say ${expected}`,\n suggestedStatus: expected,\n })\n }\n }\n\n return { progress, drift }\n}\n","/**\r\n * /api/mcp\r\n *\r\n * MCP server over HTTP (Streamable HTTP transport).\r\n * AI agents (Claude Code, Cursor, Windsurf) connect here.\r\n *\r\n * Config in Claude Code:\r\n * {\r\n * \"mcpServers\": {\r\n * \"vibedoc\": {\r\n * \"url\": \"http://localhost:3000/api/mcp\"\r\n * }\r\n * }\r\n * }\r\n */\r\n\r\nimport { NextRequest, NextResponse } from \"next/server\";\r\nimport {\r\n getConfiguredRoot,\r\n listDocs,\r\n readDoc,\r\n searchDocs,\r\n writeDoc,\r\n createDoc,\r\n getContext,\r\n getProjectSummary,\r\n listTasks,\r\n getTask,\r\n updateTaskStatus,\r\n claimNextTask,\r\n logDecision,\r\n readMemory,\r\n updateMemory,\r\n logSessionStart,\r\n readActivity,\r\n findBacklinks,\r\n appendDoc,\r\n renameDoc,\r\n deleteDoc,\r\n listExplorerFiles,\r\n readRegistry,\r\n rebuildRegistry,\r\n updateRegistryAnnotation,\r\n editDoc,\r\n listRoadmap,\r\n createRoadmapItem,\r\n updateRoadmapItem,\r\n readPlanningSkill,\r\n TaskStatus,\r\n type PlanningKind,\r\n type CreateRoadmapItemParams,\r\n type UpdateRoadmapItemPatch,\r\n} from \"@/lib/core\";\r\nimport type { TextEdit } from \"@/lib/diff\";\r\nimport { validatePlan, type Plan } from \"@/lib/plan\";\r\nimport { TEMPLATES } from \"@/lib/templates\";\r\nimport { emitUpdate } from \"@/lib/events\";\r\nimport { groupSessions, sessionDuration, sessionsForTask } from \"@/lib/sessions\";\r\nimport { dueState, localToday, roadmapHealth, type TaskInfo } from \"@/lib/roadmap-health\";\r\n\r\n// Simple hand-rolled MCP handler (avoids stdio transport issues in Next.js)\r\n// Implements the JSON-RPC 2.0 MCP protocol directly.\r\n\r\ntype JsonRpcRequest = {\r\n jsonrpc: \"2.0\";\r\n id: string | number | null;\r\n method: string;\r\n params?: Record<string, unknown>;\r\n};\r\n\r\nfunction ok(id: JsonRpcRequest[\"id\"], result: unknown) {\r\n return NextResponse.json({ jsonrpc: \"2.0\", id, result });\r\n}\r\n\r\nfunction err(id: JsonRpcRequest[\"id\"], code: number, message: string) {\r\n return NextResponse.json({ jsonrpc: \"2.0\", id, error: { code, message } });\r\n}\r\n\r\nconst TOOLS = [\r\n {\r\n name: \"vibedoc_get_status\",\r\n description:\r\n \"Get project status overview: active tasks, blockers, doc count, memory. Call this at session start.\",\r\n inputSchema: { type: \"object\", properties: {}, required: [] },\r\n },\r\n {\r\n name: \"vibedoc_get_sessions\",\r\n description:\r\n \"Agent and human sessions grouped from the activity log, newest first: who, when, tasks moved, docs changed, ADRs. Call at session start to see what happened recently.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n limit: { type: \"number\", description: \"Max sessions to return (default 10)\" },\r\n taskId: { type: \"string\", description: 'Only sessions that moved this task, e.g. \"T003\"' },\r\n since: { type: \"string\", description: \"ISO timestamp; only sessions that ended at or after it\" },\r\n },\r\n required: [],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_read_doc\",\r\n description:\r\n 'Read a doc file by name. Use: \"CLAUDE\", \"HLD\", \"EVENT_CATALOG\", \"MEMORY\", \"user-service/API\", \"ADR-001\".',\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n query: {\r\n type: \"string\",\r\n description: 'Doc name, e.g. \"CLAUDE\", \"HLD\", \"user-service/API\"',\r\n },\r\n },\r\n required: [\"query\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_list_docs\",\r\n description:\r\n \"List all documentation files grouped by section. Use to discover what docs exist.\",\r\n inputSchema: { type: \"object\", properties: {}, required: [] },\r\n },\r\n {\r\n name: \"vibedoc_search_docs\",\r\n description:\r\n \"Full-text search across all docs. Returns files and line snippets.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: { query: { type: \"string\", description: \"Search term\" } },\r\n required: [\"query\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_write_doc\",\r\n description:\r\n 'Write or create a documentation file. Use to add new docs or update existing ones. Path is relative to project root (e.g., \"docs/api/endpoints.md\"). Creates parent directories as needed. Triggers real-time browser update so the user can review.',\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n path: {\r\n type: \"string\",\r\n description:\r\n 'Relative path from project root, e.g. \"docs/api/my-guide.md\"',\r\n },\r\n content: {\r\n type: \"string\",\r\n description: \"Full markdown content to write\",\r\n },\r\n },\r\n required: [\"path\", \"content\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_list_tasks\",\r\n description:\r\n \"List all tasks as a kanban board. Filter by status optionally.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n status: {\r\n type: \"string\",\r\n enum: [\"all\", \"todo\", \"in-progress\", \"blocked\", \"done\", \"cancelled\"],\r\n },\r\n },\r\n required: [],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_get_task\",\r\n description:\r\n \"Read a specific task file including scope, criteria, and definition of done.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n taskId: { type: \"string\", description: 'e.g. \"T001\", \"T003\"' },\r\n },\r\n required: [\"taskId\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_update_task\",\r\n description:\r\n \"Update task status. Call when starting, finishing, or blocking a task. UI updates in real time.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n taskId: { type: \"string\" },\r\n status: {\r\n type: \"string\",\r\n enum: [\"todo\", \"in-progress\", \"done\", \"blocked\", \"cancelled\"],\r\n },\r\n },\r\n required: [\"taskId\", \"status\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_next_task\",\r\n description:\r\n \"Claim the next ready task of an epic (deps done, not taken) and move it to in-progress. Call again after marking it done.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n epic: { type: \"string\", description: 'Epic roadmap id, e.g. \"R037\"' },\r\n },\r\n required: [\"epic\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_log_decision\",\r\n description:\r\n \"Write a new Architecture Decision Record (ADR) when making a technical decision.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n title: { type: \"string\" },\r\n context: { type: \"string\" },\r\n decision: { type: \"string\" },\r\n rationale: { type: \"string\" },\r\n alternatives: {\r\n type: \"array\",\r\n items: {\r\n type: \"object\",\r\n properties: {\r\n option: { type: \"string\" },\r\n reason: { type: \"string\" },\r\n },\r\n },\r\n },\r\n consequences: { type: \"string\" },\r\n },\r\n required: [\"title\", \"context\", \"decision\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_read_memory\",\r\n description:\r\n \"Read MEMORY.md — the session handoff file. Always call this at session start.\",\r\n inputSchema: { type: \"object\", properties: {}, required: [] },\r\n },\r\n {\r\n name: \"vibedoc_update_memory\",\r\n description:\r\n \"Update MEMORY.md with session summary. Call at END of every session.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n currentState: { type: \"string\" },\r\n justCompleted: { type: \"array\", items: { type: \"string\" } },\r\n workingOn: { type: \"string\" },\r\n upNext: { type: \"array\", items: { type: \"string\" } },\r\n issues: { type: \"array\", items: { type: \"string\" } },\r\n decisions: { type: \"array\", items: { type: \"string\" } },\r\n techDebt: { type: \"array\", items: { type: \"string\" } },\r\n handoff: { type: \"string\" },\r\n },\r\n required: [\"currentState\", \"handoff\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_create_doc\",\r\n description:\r\n \"Create a new doc from a template. Use vibedoc_list_templates to see available IDs. Fails if file exists.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n path: { type: \"string\" },\r\n templateId: { type: \"string\", description: 'Defaults to \"blank\"' },\r\n },\r\n required: [\"path\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_list_templates\",\r\n description: \"List all doc templates with IDs, names, and default paths.\",\r\n inputSchema: { type: \"object\", properties: {}, required: [] },\r\n },\r\n {\r\n name: \"vibedoc_get_context\",\r\n description:\r\n \"Bundle multiple docs into a single context block. Useful for loading several docs at once before starting a task.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n paths: {\r\n type: \"array\",\r\n items: { type: \"string\" },\r\n description: \"Array of relative doc paths to bundle\",\r\n },\r\n },\r\n required: [\"paths\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_propose_edit\",\r\n description:\r\n \"Propose targeted edits to a doc for the user to review. Does NOT write the file: the user sees a diff in the UI and accepts or rejects it. Each edit replaces one exact old_string (must match exactly once, include enough surrounding text to be unique) with new_string; edits apply in order. Only send the parts that change. For a brand-new doc, use a single edit with an empty old_string.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n path: { type: \"string\", description: \"Relative path to the doc file\" },\r\n edits: {\r\n type: \"array\",\r\n items: {\r\n type: \"object\",\r\n properties: {\r\n old_string: { type: \"string\", description: \"Exact text currently in the doc\" },\r\n new_string: { type: \"string\", description: \"Replacement text\" },\r\n },\r\n required: [\"old_string\", \"new_string\"],\r\n },\r\n },\r\n summary: { type: \"string\", description: \"One short line describing the change\" },\r\n },\r\n required: [\"path\", \"edits\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_propose_plan\",\r\n description:\r\n \"Propose a plan for the user to review: kind \\\"breakdown\\\" (tasks for an epic: epic + tasks) or kind \\\"roadmap\\\" (new horizons and epics: horizons + epics; an epic's parent is an existing horizon id or a horizon key in this plan; epic body = one outcome sentence, a blank line, then **In scope:** / **Out of scope:** / **Done when:**). Does NOT write anything: the user sees the plan in the UI, can uncheck items, and accepts. Validated against the current files; on errors, fix the plan and call again. Each task body is the full markdown below the meta block (## Goal, ## Context, ## Scope, ## Files, ## Acceptance criteria, ## Verify). dependsOn lists keys of earlier tasks in this plan or existing task ids (\\\"T030\\\").\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n plan: {\r\n type: \"object\",\r\n properties: {\r\n kind: { type: \"string\", enum: [\"breakdown\", \"roadmap\"] },\r\n epic: { type: \"string\", description: \"breakdown: epic id, e.g. R004 (not a horizon)\" },\r\n horizons: {\r\n type: \"array\",\r\n description: \"roadmap: new horizons (no parent)\",\r\n items: {\r\n type: \"object\",\r\n properties: { key: { type: \"string\", description: \"e.g. h1\" }, title: { type: \"string\" }, body: { type: \"string\" } },\r\n required: [\"key\", \"title\"],\r\n },\r\n },\r\n epics: {\r\n type: \"array\",\r\n description: \"roadmap: new epics\",\r\n items: {\r\n type: \"object\",\r\n properties: {\r\n key: { type: \"string\", description: \"e.g. e1\" },\r\n title: { type: \"string\" },\r\n parent: { type: \"string\", description: \"Existing horizon id (R002) or a horizon key in this plan (h1)\" },\r\n body: { type: \"string\" },\r\n },\r\n required: [\"key\", \"title\", \"parent\", \"body\"],\r\n },\r\n },\r\n tasks: {\r\n type: \"array\",\r\n items: {\r\n type: \"object\",\r\n properties: {\r\n key: { type: \"string\", description: \"Stable key within the plan, e.g. t1\" },\r\n title: { type: \"string\" },\r\n size: { type: \"string\", description: \"S (~1 hr) | M (2–3 hrs) | L (half day)\" },\r\n dependsOn: { type: \"array\", items: { type: \"string\" } },\r\n due: { type: \"string\", description: \"YYYY-MM-DD\" },\r\n body: { type: \"string\", description: \"Markdown below the meta block\" },\r\n },\r\n required: [\"key\", \"title\", \"body\"],\r\n },\r\n },\r\n },\r\n required: [\"kind\"],\r\n },\r\n },\r\n required: [\"plan\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_ask_questions\",\r\n description:\r\n \"Ask the user 1–4 multiple-choice questions, shown as a card in the chat UI (same shape as AskUserQuestion). The tool can't wait for answers: after calling it, end your turn. The answers arrive as the next user message, one line per question keyed by its header, e.g. `- Scope: Label A, Label B` or `- Scope: Other: \\\"free text\\\"`.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n questions: {\r\n type: \"array\",\r\n minItems: 1,\r\n maxItems: 4,\r\n items: {\r\n type: \"object\",\r\n properties: {\r\n question: { type: \"string\", description: \"The full question\" },\r\n header: { type: \"string\", description: \"Short label (max ~12 chars), used as the answer key\" },\r\n multiSelect: { type: \"boolean\", description: \"true = checkboxes, false = one choice\" },\r\n options: {\r\n type: \"array\",\r\n minItems: 2,\r\n maxItems: 4,\r\n items: {\r\n type: \"object\",\r\n properties: {\r\n label: { type: \"string\" },\r\n description: { type: \"string\" },\r\n },\r\n required: [\"label\"],\r\n },\r\n },\r\n },\r\n required: [\"question\", \"header\", \"multiSelect\", \"options\"],\r\n },\r\n },\r\n },\r\n required: [\"questions\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_get_planning_guide\",\r\n description:\r\n \"Load the instructions for planning work from chat. Call this first when the user asks to plan or generate a roadmap (kind \\\"roadmap\\\") or to break an epic into tasks (kind \\\"breakdown\\\"), then follow it.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n kind: { type: \"string\", enum: [\"roadmap\", \"breakdown\"] },\r\n },\r\n required: [\"kind\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_append_doc\",\r\n description:\r\n \"Append content to an existing doc file. Adds two newlines before the appended content.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n path: { type: \"string\", description: \"Relative path to the doc file\" },\r\n content: { type: \"string\", description: \"Content to append\" },\r\n },\r\n required: [\"path\", \"content\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_rename_doc\",\r\n description: \"Rename or move a doc file to a new path.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n oldPath: { type: \"string\", description: \"Current path of the doc\" },\r\n newPath: { type: \"string\", description: \"New path for the doc\" },\r\n },\r\n required: [\"oldPath\", \"newPath\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_delete_doc\",\r\n description: \"Delete a doc file. This action cannot be undone.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n path: { type: \"string\", description: \"Path of the doc to delete\" },\r\n },\r\n required: [\"path\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_get_file_map\",\r\n description:\r\n \"Get a structured map of all documentation files with descriptions and last-modified dates. Use at session start to orient yourself without reading each file individually.\",\r\n inputSchema: { type: \"object\", properties: {}, required: [] },\r\n },\r\n {\r\n name: \"vibedoc_read_registry\",\r\n description:\r\n \"Read docs/REGISTRY.md — file tree + annotations so you know which doc to open for any task. Call at session start after vibedoc_read_memory. If absent, call vibedoc_rebuild_registry first.\",\r\n inputSchema: { type: \"object\", properties: {}, required: [] },\r\n },\r\n {\r\n name: \"vibedoc_rebuild_registry\",\r\n description:\r\n \"Regenerate docs/REGISTRY.md — refreshes the file tree, adds stub rows for new files, and preserves existing descriptions/keywords. Run after adding or removing docs.\",\r\n inputSchema: { type: \"object\", properties: {}, required: [] },\r\n },\r\n {\r\n name: \"vibedoc_annotate_doc\",\r\n description:\r\n \"Add or update the description and keywords for one doc in the registry without a full rebuild.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n path: {\r\n type: \"string\",\r\n description: 'Relative path of the doc, e.g. \"docs/api-reference.md\"',\r\n },\r\n description: {\r\n type: \"string\",\r\n description: \"Short description of what this doc contains\",\r\n },\r\n keywords: {\r\n type: \"string\",\r\n description: \"Comma-separated keywords for this doc\",\r\n },\r\n },\r\n required: [\"path\", \"description\", \"keywords\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_get_roadmap\",\r\n description:\r\n \"Get the product roadmap: horizons (spine nodes, e.g. v2.0) with their nested feature items, statuses and linked tasks.\",\r\n inputSchema: { type: \"object\", properties: {}, required: [] },\r\n },\r\n {\r\n name: \"vibedoc_create_roadmap_item\",\r\n description:\r\n \"Create a roadmap item (plans/roadmap/R*.md). Omit parent to create a horizon on the spine; set parent to a horizon id (e.g. R001) to create a feature under it.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n title: { type: \"string\" },\r\n parent: { type: \"string\", description: \"Horizon id, e.g. R001. Omit for a horizon.\" },\r\n status: { type: \"string\", enum: [\"planned\", \"in-progress\", \"done\"] },\r\n order: { type: \"number\", description: \"Sort key (steps of 10). Defaults to last among siblings.\" },\r\n tasks: { type: \"array\", items: { type: \"string\" }, description: 'Linked task ids, e.g. [\"T001\"]' },\r\n due: { type: \"string\", description: \"Due date YYYY-MM-DD (optional)\" },\r\n body: { type: \"string\", description: \"Markdown description\" },\r\n },\r\n required: [\"title\"],\r\n },\r\n },\r\n {\r\n name: \"vibedoc_update_roadmap_item\",\r\n description:\r\n \"Update fields of a roadmap item. Only the given fields change. parent: null (or \\\"\\\") makes it a horizon.\",\r\n inputSchema: {\r\n type: \"object\",\r\n properties: {\r\n id: { type: \"string\", description: \"e.g. R004\" },\r\n title: { type: \"string\" },\r\n parent: { type: [\"string\", \"null\"] },\r\n status: { type: \"string\", enum: [\"planned\", \"in-progress\", \"done\"] },\r\n order: { type: \"number\" },\r\n tasks: { type: \"array\", items: { type: \"string\" } },\r\n due: { type: [\"string\", \"null\"], description: \"Due date YYYY-MM-DD; null clears it\" },\r\n body: { type: \"string\" },\r\n },\r\n required: [\"id\"],\r\n },\r\n },\r\n];\r\n\r\n/** Maps the terminal skill's tools to the chat tools. The skill text follows it. */\r\nconst PLANNING_PREAMBLE = `You are running this planning skill inside the VibeDoc chat, not a terminal:\r\n- Where it says AskUserQuestion, call vibedoc_ask_questions with the same shape, then END YOUR TURN; answers arrive as the next message (\"Answers: - <header>: <labels>\").\r\n- Where it says to show the draft and ask Create/Adjust, call vibedoc_propose_plan instead (do not ask a Create/Adjust question); the user previews, unchecks and accepts in the UI, and Accept writes everything. Skip the skill's write steps: never call vibedoc_create_roadmap_item, vibedoc_update_roadmap_item or any other write tool, and never write files yourself.\r\n- Read the project with vibedoc_* tools (vibedoc_get_roadmap, vibedoc_list_tasks, vibedoc_read_doc, vibedoc_search_docs, vibedoc_get_file_map); you have no shell or file access.\r\n- Skip steps that need a shell or the codebase beyond what those tools return; say so briefly. Tasks written this way know less about the code than a terminal run would; tell the user that once.\r\n\r\n---\r\n\r\n`;\r\n\r\nasync function taskInfoMap(root: string): Promise<Record<string, TaskInfo>> {\r\n const { tasks } = await listTasks(root);\r\n return Object.fromEntries(tasks.map((t) => [t.id, { status: t.status, due: t.due }]));\r\n}\r\n\r\n/** After a task move, point the agent at roadmap items linking it that are now out of sync. */\r\nasync function roadmapHint(root: string, taskId: string): Promise<string> {\r\n const { items } = await listRoadmap(root);\r\n const linked = new Set(items.filter((i) => i.tasks.includes(taskId)).map((i) => i.id));\r\n if (!linked.size) return \"\";\r\n const { drift } = roadmapHealth(items, await taskInfoMap(root), localToday());\r\n const hits = drift.filter((d) => d.suggestedStatus && linked.has(d.id));\r\n if (!hits.length) return \"\";\r\n return \"\\n\\n🗺️ Roadmap out of sync:\\n\" + hits\r\n .map((d) => `- ${d.message} → vibedoc_update_roadmap_item { \"id\": \"${d.id}\", \"status\": \"${d.suggestedStatus}\" }`)\r\n .join(\"\\n\");\r\n}\r\n\r\nasync function handleTool(name: string, args: Record<string, unknown>, root: string) {\r\n\r\n switch (name) {\r\n case \"vibedoc_get_status\": {\r\n const s = await getProjectSummary(root);\r\n const b = s.tasks.board;\r\n const lines = [\r\n `## ${s.name} — Project Status`,\r\n `**Docs:** ${s.docs.total} files`,\r\n `**Memory:** ${s.memory.exists ? \"exists\" : \"not yet created\"}`,\r\n \"\",\r\n \"### Board\",\r\n `📋 Todo: ${b.todo} 🔨 In Progress: ${b[\"in-progress\"]} 🚫 Blocked: ${b.blocked} ✅ Done: ${b.done}`,\r\n ];\r\n if (s.tasks.active.length > 0) {\r\n lines.push(\"\", \"**Active:**\");\r\n s.tasks.active.forEach((t) => lines.push(` 🔨 ${t.id}: ${t.title}`));\r\n }\r\n if (s.tasks.blocked.length > 0) {\r\n lines.push(\"\", \"**Blocked:**\");\r\n s.tasks.blocked.forEach((t) => lines.push(` 🚫 ${t.id}: ${t.title}`));\r\n }\r\n lines.push(\"\", \"_See vibedoc_get_sessions for what happened recently._\");\r\n return lines.join(\"\\n\");\r\n }\r\n\r\n case \"vibedoc_get_sessions\": {\r\n const limit = Number(args.limit) || 10;\r\n const since = args.since ? String(args.since) : null;\r\n let sessions = groupSessions(await readActivity(root, 2000));\r\n if (args.taskId) sessions = sessionsForTask(sessions, String(args.taskId));\r\n if (since) {\r\n const t = Date.parse(since);\r\n if (Number.isNaN(t)) return `Invalid \"since\": ${since} (expected an ISO timestamp)`;\r\n sessions = sessions.filter((x) => Date.parse(x.end) >= t);\r\n }\r\n sessions = sessions.slice(0, limit);\r\n if (!sessions.length) return \"No sessions\" + (args.taskId ? ` touched ${args.taskId}` : \"\") + (since ? ` since ${since}` : \"\") + \".\";\r\n return sessions.map((x) => [\r\n `### ${x.actor === \"ai\" ? \"🤖 Agent\" : \"👤 Human\"} · ${x.start} (${sessionDuration(x)})`,\r\n x.headline,\r\n ...x.tasks.map((t) => `- ${t.id} → ${t.lastStatus}`),\r\n ...x.docs.map((d) => `- 📄 ${d}`),\r\n ...x.decisions.map((d) => `- 📝 ${d}`),\r\n ].join(\"\\n\")).join(\"\\n\\n\");\r\n }\r\n\r\n case \"vibedoc_read_doc\": {\r\n const { path: docPath, content } = await readDoc(\r\n String(args.query),\r\n root,\r\n );\r\n emitUpdate(\"doc_read\", { path: docPath });\r\n const backlinks = await findBacklinks(docPath, root);\r\n let result = `## ${docPath}\\n\\n${content}`;\r\n if (backlinks.length > 0) {\r\n result += \"\\n\\n---\\n\\n## Referenced by\\n\";\r\n backlinks.forEach((b) => {\r\n result += `- ${b.file} (line ${b.line}): ${b.text}\\n`;\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n case \"vibedoc_list_docs\": {\r\n const docs = await listDocs(root);\r\n const sections: Record<string, string[]> = {};\r\n for (const d of docs) {\r\n if (!sections[d.section]) sections[d.section] = [];\r\n sections[d.section].push(d.path);\r\n }\r\n const lines = [`📚 ${docs.length} files\\n`];\r\n for (const [s, files] of Object.entries(sections)) {\r\n lines.push(`**${s}** (${files.length})`);\r\n files.forEach((f) => lines.push(` ${f}`));\r\n lines.push(\"\");\r\n }\r\n return lines.join(\"\\n\");\r\n }\r\n\r\n case \"vibedoc_search_docs\": {\r\n const results = await searchDocs(String(args.query), root);\r\n if (!results.length) return `No results for \"${args.query}\"`;\r\n const lines = [`🔍 \"${args.query}\" — ${results.length} file(s)\\n`];\r\n for (const r of results) {\r\n lines.push(`**${r.file}** (${r.totalHits} hits)`);\r\n r.hits.forEach((h) => lines.push(` L${h.line}: ${h.text}`));\r\n lines.push(\"\");\r\n }\r\n return lines.join(\"\\n\");\r\n }\r\n\r\n case \"vibedoc_write_doc\": {\r\n const docPath = String(args.path);\r\n const content = String(args.content);\r\n await writeDoc(docPath, content, root);\r\n emitUpdate(\"doc_updated\", { path: docPath, actor: \"ai\" });\r\n return `✅ Written: ${docPath}`;\r\n }\r\n\r\n case \"vibedoc_list_tasks\": {\r\n const { board, tasks } = await listTasks(root);\r\n const filter = (args.status as string) || \"all\";\r\n const cols =\r\n filter === \"all\"\r\n ? [\"in-progress\", \"blocked\", \"todo\", \"done\", \"cancelled\"]\r\n : [filter];\r\n const lines = [`## Tasks (${tasks.length})\\n`];\r\n for (const col of cols) {\r\n const items = board[col as TaskStatus] || [];\r\n lines.push(`### ${col.toUpperCase()} (${items.length})`);\r\n if (!items.length) lines.push(\" (empty)\");\r\n items.forEach((t) =>\r\n lines.push(` **${t.id}** ${t.title}${t.size ? ` — ${t.size}` : \"\"}`),\r\n );\r\n lines.push(\"\");\r\n }\r\n return lines.join(\"\\n\");\r\n }\r\n\r\n case \"vibedoc_get_task\": {\r\n const task = await getTask(String(args.taskId), root);\r\n return `## ${task.file}\\n\\n${task.raw}`;\r\n }\r\n\r\n case \"vibedoc_update_task\": {\r\n const result = await updateTaskStatus(\r\n String(args.taskId),\r\n args.status as TaskStatus,\r\n root,\r\n \"ai\",\r\n );\r\n emitUpdate(\"task_updated\", {\r\n taskId: args.taskId,\r\n status: args.status,\r\n previousStatus: result.previousStatus,\r\n task: result.task,\r\n });\r\n return `✅ **${result.task.id}** → **${result.task.status}**\\n(was: ${result.previousStatus})` +\r\n (await roadmapHint(root, result.task.id));\r\n }\r\n\r\n case \"vibedoc_next_task\": {\r\n const epicId = String(args.epic ?? \"\").trim();\r\n if (!epicId) throw new Error(\"epic is required\");\r\n const { result, task, previousStatus } = await claimNextTask(epicId, root);\r\n if (result.kind === \"finished\") {\r\n const { items } = await listRoadmap(root);\r\n const statuses = await taskInfoMap(root);\r\n const epic = items.find((i) => i.id === epicId.toUpperCase());\r\n const id = epic?.id ?? epicId.toUpperCase();\r\n const n = epic ? epic.tasks.filter((t) => t in statuses).length : 0;\r\n const nudge = roadmapHealth(items, statuses, localToday()).drift\r\n .find((d) => d.id === id && d.suggestedStatus === \"done\");\r\n return `✅ Epic ${id} is finished — all ${n} tasks done or cancelled. Stop here.` +\r\n (nudge ? `\\n\\n🗺️ ${nudge.message} → vibedoc_update_roadmap_item { \"id\": \"${id}\", \"status\": \"done\" }` : \"\");\r\n }\r\n if (result.kind === \"waiting\") {\r\n return `⏳ Nothing ready in ${epicId.toUpperCase()}.\\n` + result.waiting.map((w) => `- ${w.reason}`).join(\"\\n\") +\r\n (result.needsHuman ? \"\\n\\nNeeds a human: unblock one of the tasks above.\" : \"\");\r\n }\r\n if (!task) throw new Error(`claim of ${epicId.toUpperCase()} returned no task`);\r\n emitUpdate(\"task_updated\", {\r\n taskId: task.id,\r\n status: task.status,\r\n previousStatus,\r\n task,\r\n });\r\n return `🔨 Claimed **${task.id}** ${task.title} (now in-progress)\\n\\n## ${task.file}\\n\\n${task.raw}` +\r\n (await roadmapHint(root, task.id));\r\n }\r\n\r\n case \"vibedoc_log_decision\": {\r\n const result = await logDecision(\r\n args as unknown as Parameters<typeof logDecision>[0],\r\n root,\r\n \"ai\",\r\n );\r\n emitUpdate(\"decision_logged\", result);\r\n return `📝 **${result.adrNumber}** logged\\nFile: ${result.path}`;\r\n }\r\n\r\n case \"vibedoc_read_memory\": {\r\n await logSessionStart(root, \"ai\");\r\n emitUpdate(\"session_start\", { root });\r\n const memory = await readMemory(root);\r\n return memory.content;\r\n }\r\n\r\n case \"vibedoc_update_memory\": {\r\n await updateMemory(\r\n args as unknown as Parameters<typeof updateMemory>[0],\r\n root,\r\n \"ai\",\r\n );\r\n emitUpdate(\"memory_updated\", { root });\r\n return `🧠 MEMORY.md updated`;\r\n }\r\n\r\n case \"vibedoc_create_doc\": {\r\n const docPath = String(args.path);\r\n const templateId = args.templateId ? String(args.templateId) : \"blank\";\r\n const template =\r\n TEMPLATES.find((t) => t.id === templateId) ??\r\n TEMPLATES.find((t) => t.id === \"blank\")!;\r\n await createDoc(docPath, template.content, root);\r\n emitUpdate(\"doc_created\", { path: docPath });\r\n return `✅ Created: ${docPath} (template: ${template.name})`;\r\n }\r\n\r\n case \"vibedoc_list_templates\": {\r\n return TEMPLATES.map(\r\n (t) =>\r\n `**${t.id}** — ${t.name}\\n ${t.description}\\n Default: \\`${t.defaultPath}\\``,\r\n ).join(\"\\n\\n\");\r\n }\r\n\r\n case \"vibedoc_get_context\": {\r\n const paths = args.paths as string[];\r\n const context = await getContext(paths, root);\r\n if (!context) return \"(no content — check paths are correct)\";\r\n return context;\r\n }\r\n\r\n case \"vibedoc_propose_edit\": {\r\n const docPath = String(args.path);\r\n const edits = Array.isArray(args.edits) ? (args.edits as TextEdit[]) : [];\r\n if (edits.length === 0) throw new Error(\"edits must be a non-empty array\");\r\n // Validate now so the agent can fix a bad old_string before the user ever sees it\r\n await editDoc(docPath, edits, root, true);\r\n return `📝 Proposed ${edits.length} edit(s) to ${docPath}. The user will accept or reject them in the UI; not applied yet.`;\r\n }\r\n\r\n case \"vibedoc_propose_plan\": {\r\n // Validate only, like propose_edit: the UI writes via POST /api/plan/apply after Accept.\r\n const [{ items }, { tasks }] = await Promise.all([listRoadmap(root), listTasks(root)]);\r\n const errors = validatePlan(args.plan, { roadmap: items, taskIds: tasks.map((t) => t.id) });\r\n if (errors.length > 0) throw new Error(`Invalid plan:\\n- ${errors.join(\"\\n- \")}`);\r\n const plan = args.plan as Plan;\r\n if (plan.kind === \"roadmap\") {\r\n return `📋 Proposed ${(plan.horizons ?? []).length} horizons and ${(plan.epics ?? []).length} epics. The user reviews and accepts in the UI; nothing is written yet.`;\r\n }\r\n return `📋 Proposed ${plan.tasks.length} tasks for ${plan.epic.trim().toUpperCase()}. The user reviews and accepts in the UI; nothing is written yet.`;\r\n }\r\n\r\n case \"vibedoc_ask_questions\": {\r\n // Records nothing: the UI renders the tool input as a card and sends the answers as the next message.\r\n const qs = args.questions;\r\n const errors: string[] = [];\r\n if (!Array.isArray(qs) || qs.length < 1 || qs.length > 4) {\r\n errors.push(`questions must be an array of 1–4 items (got ${Array.isArray(qs) ? qs.length : typeof qs})`);\r\n } else {\r\n qs.forEach((q: Record<string, unknown>, i: number) => {\r\n const at = `questions[${i}]`;\r\n if (!q || typeof q !== \"object\") return errors.push(`${at} must be an object`);\r\n if (typeof q.question !== \"string\" || !q.question.trim()) errors.push(`${at}.question must be a non-empty string`);\r\n if (typeof q.header !== \"string\" || !q.header.trim()) errors.push(`${at}.header must be a non-empty string`);\r\n if (typeof q.multiSelect !== \"boolean\") errors.push(`${at}.multiSelect must be a boolean`);\r\n const opts = q.options;\r\n if (!Array.isArray(opts) || opts.length < 2 || opts.length > 4) {\r\n errors.push(`${at}.options must have 2–4 items (got ${Array.isArray(opts) ? opts.length : typeof opts})`);\r\n } else {\r\n opts.forEach((o: Record<string, unknown>, j: number) => {\r\n if (!o || typeof o.label !== \"string\" || !o.label.trim()) errors.push(`${at}.options[${j}].label must be a non-empty string`);\r\n if (o && o.description !== undefined && typeof o.description !== \"string\") errors.push(`${at}.options[${j}].description must be a string`);\r\n });\r\n }\r\n });\r\n }\r\n if (errors.length > 0) throw new Error(`Invalid questions:\\n- ${errors.join(\"\\n- \")}`);\r\n return `❓ Shown ${(qs as unknown[]).length} question(s) to the user. End your turn now; their answers arrive in the next message.`;\r\n }\r\n\r\n case \"vibedoc_get_planning_guide\":\r\n return PLANNING_PREAMBLE + (await readPlanningSkill(String(args.kind) as PlanningKind));\r\n\r\n case \"vibedoc_append_doc\": {\r\n const docPath = String(args.path);\r\n const content = String(args.content);\r\n await appendDoc(docPath, content, root);\r\n emitUpdate(\"doc_updated\", { path: docPath, actor: \"ai\" });\r\n return `✅ Appended to: ${docPath}`;\r\n }\r\n\r\n case \"vibedoc_rename_doc\": {\r\n const oldPath = String(args.oldPath);\r\n const newPath = String(args.newPath);\r\n await renameDoc(oldPath, newPath, root);\r\n emitUpdate(\"doc_renamed\", { oldPath, newPath });\r\n return `✅ Renamed: ${oldPath} → ${newPath}`;\r\n }\r\n\r\n case \"vibedoc_delete_doc\": {\r\n const docPath = String(args.path);\r\n await deleteDoc(docPath, root);\r\n emitUpdate(\"doc_deleted\", { path: docPath });\r\n return `✅ Deleted: ${docPath}`;\r\n }\r\n\r\n case \"vibedoc_get_file_map\": {\r\n const files = await listExplorerFiles(root);\r\n return JSON.stringify(files, null, 2);\r\n }\r\n\r\n case \"vibedoc_read_registry\": {\r\n const { content, exists } = await readRegistry(root);\r\n if (!exists)\r\n return `*(No REGISTRY.md found — call vibedoc_rebuild_registry to generate it)*`;\r\n return content;\r\n }\r\n\r\n case \"vibedoc_rebuild_registry\": {\r\n const result = await rebuildRegistry(root, \"ai\");\r\n emitUpdate(\"registry_rebuilt\", {\r\n path: result.path,\r\n totalFiles: result.totalFiles,\r\n });\r\n return `✅ Registry rebuilt: ${result.path}\\n${result.totalFiles} files indexed`;\r\n }\r\n\r\n case \"vibedoc_annotate_doc\": {\r\n const docPath = String(args.path);\r\n const description = String(args.description);\r\n const keywords = String(args.keywords);\r\n await updateRegistryAnnotation(docPath, description, keywords, root);\r\n emitUpdate(\"registry_rebuilt\", { path: \"docs/REGISTRY.md\" });\r\n return `✅ Annotation updated for: ${docPath}`;\r\n }\r\n\r\n case \"vibedoc_get_roadmap\": {\r\n const { items } = await listRoadmap(root);\r\n if (items.length === 0) return \"No roadmap items yet (plans/roadmap/ is empty).\";\r\n const today = localToday();\r\n const { progress, drift } = roadmapHealth(items, await taskInfoMap(root), today);\r\n const icon = { done: \"✓\", \"in-progress\": \"◐\", planned: \"○\" } as const;\r\n const atRisk = new Set(drift.filter((d) => d.kind === \"at-risk\").map((d) => d.id));\r\n const fmt = (i: (typeof items)[number]) =>\r\n `${icon[i.status]} **${i.id}** ${i.title} — ${i.status}` +\r\n (i.tasks.length ? ` (tasks: ${i.tasks.join(\", \")})` : \"\") +\r\n (progress[i.id] ? ` [${progress[i.id].done}/${progress[i.id].total} done]` : \"\") +\r\n (i.due ? ` due ${i.due}${dueState(i.due, i.status, today) === \"overdue\" ? \" ⚠ overdue\" : \"\"}` : \"\") +\r\n (atRisk.has(i.id) ? \" ⚠ at risk\" : \"\");\r\n const horizons = items.filter((i) => i.parent === null);\r\n const lines = [\"## Roadmap\"];\r\n for (const h of horizons) {\r\n lines.push(\"\", `### ${fmt(h)}`);\r\n for (const c of items.filter((i) => i.parent === h.id)) lines.push(`- ${fmt(c)}`);\r\n }\r\n const orphans = items.filter((i) => i.parent !== null && !horizons.some((h) => h.id === i.parent));\r\n if (orphans.length) {\r\n lines.push(\"\", \"### Orphans (parent missing)\");\r\n for (const o of orphans) lines.push(`- ${fmt(o)} (parent: ${o.parent})`);\r\n }\r\n if (drift.length) {\r\n lines.push(\"\", \"### ⚠️ Needs attention\");\r\n for (const d of drift) lines.push(`- ${d.message}${d.suggestedStatus ? ` → suggest status \"${d.suggestedStatus}\"` : \"\"}`);\r\n }\r\n return lines.join(\"\\n\");\r\n }\r\n\r\n case \"vibedoc_create_roadmap_item\": {\r\n const item = await createRoadmapItem(args as unknown as CreateRoadmapItemParams, root, \"ai\");\r\n emitUpdate(\"roadmap_updated\", { kind: \"create\", id: item.id });\r\n return `✅ Created **${item.id}** ${item.title}\\nFile: ${item.file}`;\r\n }\r\n\r\n case \"vibedoc_update_roadmap_item\": {\r\n const { id, ...patch } = args;\r\n const item = await updateRoadmapItem(String(id ?? \"\"), patch as UpdateRoadmapItemPatch, root, \"ai\");\r\n emitUpdate(\"roadmap_updated\", { kind: \"update\", id: item.id });\r\n return `✅ Updated **${item.id}** ${item.title} — ${item.status}${item.parent ? ` (parent: ${item.parent})` : \" (horizon)\"}`;\r\n }\r\n\r\n default:\r\n throw new Error(`Unknown tool: ${name}`);\r\n }\r\n}\r\n\r\nexport async function POST(req: NextRequest) {\r\n let body: JsonRpcRequest;\r\n try {\r\n body = await req.json();\r\n } catch {\r\n return err(null, -32700, \"Parse error\");\r\n }\r\n\r\n const { id, method, params } = body;\r\n\r\n // MCP initialize\r\n if (method === \"initialize\") {\r\n return ok(id, {\r\n protocolVersion: \"2024-11-05\",\r\n capabilities: { tools: {} },\r\n serverInfo: { name: \"vibedoc\", version: \"1.0.0\" },\r\n });\r\n }\r\n\r\n // tools/list\r\n if (method === \"tools/list\") {\r\n return ok(id, { tools: TOOLS });\r\n }\r\n\r\n // tools/call\r\n if (method === \"tools/call\") {\r\n const name = (params?.name as string) || \"\";\r\n const args = (params?.arguments as Record<string, unknown>) || {};\r\n try {\r\n const root = req.nextUrl.searchParams.get(\"root\") || getConfiguredRoot();\r\n const text = await handleTool(name, args, root);\r\n return ok(id, { content: [{ type: \"text\", text }] });\r\n } catch (e: unknown) {\r\n const msg = e instanceof Error ? e.message : String(e);\r\n return ok(id, {\r\n content: [{ type: \"text\", text: `❌ ${msg}` }],\r\n isError: true,\r\n });\r\n }\r\n }\r\n\r\n return err(id, -32601, `Method not found: ${method}`);\r\n}\r\n\r\n// GET for connection test / SSE upgrade (some clients use GET)\r\nexport async function GET() {\r\n return NextResponse.json({\r\n name: \"vibedoc\",\r\n version: \"1.0.0\",\r\n status: \"ready\",\r\n tools: TOOLS.map((t) => t.name),\r\n });\r\n}\r\n","import {\n AppRouteRouteModule,\n type AppRouteRouteHandlerContext,\n type AppRouteRouteModuleOptions,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\nimport type { IncomingMessage, ServerResponse } from 'node:http'\nimport {\n addRequestMeta,\n getRequestMeta,\n setRequestMeta,\n type RequestMeta,\n} from '../../server/request-meta'\nimport {\n getTracer,\n type Span,\n SpanKind,\n SpanStatusCode,\n} from '../../server/lib/trace/tracer'\nimport { setManifestsSingleton } from '../../server/app-render/manifests-singleton'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { NodeNextRequest, NodeNextResponse } from '../../server/base-http/node'\nimport {\n NextRequestAdapter,\n signalFromNodeResponse,\n} from '../../server/web/spec-extension/adapters/next-request'\nimport { BaseServerSpan } from '../../server/lib/trace/constants'\nimport { getRevalidateReason } from '../../server/instrumentation/utils'\nimport { sendResponse } from '../../server/send-response'\nimport {\n fromNodeOutgoingHttpHeaders,\n toNodeOutgoingHttpHeaders,\n} from '../../server/web/utils'\nimport { getCacheControlHeader } from '../../server/lib/cache-control'\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from '../../lib/constants'\nimport { NoFallbackError } from '../../shared/lib/no-fallback-error.external'\nimport {\n CachedRouteKind,\n type ResponseCacheEntry,\n type ResponseGenerator,\n} from '../../server/response-cache'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: 'VAR_DEFINITION_PAGE',\n pathname: 'VAR_DEFINITION_PATHNAME',\n filename: 'VAR_DEFINITION_FILENAME',\n bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n nextConfigOutput,\n // The lazy require factory ensures that:\n // - In dev: devRequestTimingInternalsEnd is set before userland executes,\n // correctly attributing module load time to application-code rather than\n // framework internals.\n // - In all modes: async modules (route files with top-level await) are\n // handled correctly — require() returns a Promise for such modules, which\n // ensureUserland() awaits before the first request is handled.\n userland: () => require('VAR_USERLAND') as typeof import('VAR_USERLAND'),\n // In Turbopack dev mode, also provide a synchronous per-request getter so\n // server HMR updates are picked up without re-executing the entry chunk.\n // Using require() (synchronous) avoids adding async overhead that would be\n // incorrectly attributed to application-code time in devRequestTiming.\n ...(process.env.TURBOPACK && process.env.__NEXT_DEV_SERVER\n ? {\n getUserland: () =>\n require('VAR_USERLAND') as typeof import('VAR_USERLAND'),\n }\n : {}),\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage,\n })\n}\n\nexport {\n routeModule,\n workAsyncStorage,\n workUnitAsyncStorage,\n serverHooks,\n patchFetch,\n}\n\nexport async function handler(\n req: IncomingMessage,\n res: ServerResponse,\n ctx: {\n waitUntil?: (prom: Promise<void>) => void\n requestMeta?: RequestMeta\n }\n) {\n if (ctx.requestMeta) {\n setRequestMeta(req, ctx.requestMeta)\n }\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint())\n }\n let srcPage = 'VAR_DEFINITION_PAGE'\n\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/'\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/'\n }\n const multiZoneDraftMode = process.env\n .__NEXT_MULTI_ZONE_DRAFT_MODE as any as boolean\n\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode,\n })\n\n if (!prepareResult) {\n res.statusCode = 400\n res.end('Bad Request')\n ctx.waitUntil?.(Promise.resolve())\n return null\n }\n\n const {\n buildId,\n deploymentId,\n params,\n nextConfig,\n parsedUrl,\n isDraftMode,\n prerenderManifest,\n routerServerContext,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n resolvedPathname,\n clientReferenceManifest,\n serverActionsManifest,\n } = prepareResult\n\n const normalizedSrcPage = normalizeAppPath(srcPage)\n\n let isIsr = Boolean(\n prerenderManifest.dynamicRoutes[normalizedSrcPage] ||\n prerenderManifest.routes[resolvedPathname]\n )\n\n const render404 = async () => {\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext?.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false)\n } else {\n res.end('This page could not be found')\n }\n return null\n }\n\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname])\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]\n\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.adapterPath) {\n return await render404()\n }\n throw new NoFallbackError()\n }\n }\n }\n\n let cacheKey: string | null = null\n\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey\n }\n\n const supportsDynamicResponse: boolean =\n // If we're in development, we always support dynamic HTML\n routeModule.isDev === true ||\n // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr\n\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse\n\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest,\n })\n }\n\n const method = req.method || 'GET'\n const tracer = getTracer()\n const activeSpan = tracer.getActiveScopeSpan()\n const isWrappedByNextServer = Boolean(\n routerServerContext?.isWrappedByNextServer\n )\n const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'))\n\n const incrementalCache =\n getRequestMeta(req, 'incrementalCache') ||\n (await routeModule.getIncrementalCache(\n req,\n nextConfig,\n prerenderManifest,\n isMinimalMode\n ))\n\n incrementalCache?.resetRequestCache()\n ;(globalThis as any).__incrementalCache = incrementalCache\n\n const context: AppRouteRouteHandlerContext = {\n params,\n previewProps: prerenderManifest.preview,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts),\n useCacheTimeout: nextConfig.experimental.useCacheTimeout,\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n validationLevel: nextConfig.experimental.instantInsights.validationLevel,\n supportsDynamicResponse,\n incrementalCache,\n hmrRefreshHash: getRequestMeta(req, 'hmrRefreshHash'),\n cacheLifeProfiles: nextConfig.cacheLife,\n staticPageGenerationTimeout: nextConfig.staticPageGenerationTimeout,\n waitUntil: ctx.waitUntil,\n onClose: (cb) => {\n res.on('close', cb)\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (\n error,\n _request,\n errorContext,\n silenceLog\n ) =>\n routeModule.onRequestError(\n req,\n error,\n errorContext,\n silenceLog,\n routerServerContext\n ),\n },\n sharedContext: {\n buildId,\n deploymentId,\n },\n }\n const nodeNextReq = new NodeNextRequest(req)\n const nodeNextRes = new NodeNextResponse(res)\n\n const nextReq = NextRequestAdapter.fromNodeNextRequest(\n nodeNextReq,\n signalFromNodeResponse(res)\n )\n\n const responseGenerator: ResponseGenerator = async ({\n previousCacheEntry,\n }) => {\n try {\n if (\n !isMinimalMode &&\n isOnDemandRevalidate &&\n revalidateOnlyGenerated &&\n !previousCacheEntry\n ) {\n res.statusCode = 404\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED')\n res.end('This page could not be found')\n return null\n }\n\n const response = await routeModule.handle(nextReq, context)\n\n ;(req as any).fetchMetrics = (context.renderOpts as any).fetchMetrics\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil\n\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil)\n pendingWaitUntil = undefined\n }\n }\n const cacheTags = context.renderOpts.collectedTags\n\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob()\n\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers)\n\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags\n }\n\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type\n }\n\n const revalidate =\n typeof context.renderOpts.collectedRevalidate === 'undefined' ||\n context.renderOpts.collectedRevalidate >= INFINITE_CACHE\n ? false\n : context.renderOpts.collectedRevalidate\n\n const expire =\n typeof context.renderOpts.collectedExpire === 'undefined' ||\n context.renderOpts.collectedExpire >= INFINITE_CACHE\n ? // Fall back to the global `expireTime` config when the\n // route has a numeric `revalidate` but didn't declare an\n // explicit `expire` (e.g. via `cacheLife`). This mirrors the\n // build-time fallback in `build/index.ts` so cache entries\n // and the response Cache-Control header agree on the route's\n // effective expire. Routes that opt out of revalidation\n // (`revalidate: false`) or that are dynamic (`revalidate: 0`)\n // keep `expire: undefined`.\n revalidate !== false && revalidate > 0\n ? nextConfig.expireTime\n : undefined\n : context.renderOpts.collectedExpire\n\n // Create the cache entry for the response.\n const cacheEntry: ResponseCacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers,\n },\n cacheControl: { revalidate, expire },\n }\n\n return cacheEntry\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, pendingWaitUntil)\n return null\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry?.isStale) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n throw err\n }\n }\n\n const handleResponse = async (\n currentSpan: Span | undefined,\n parentSpan: Span | undefined\n ) => {\n try {\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode,\n })\n\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return\n }\n\n if (cacheEntry?.value?.kind !== CachedRouteKind.APP_ROUTE) {\n throw new Error(\n `Invariant: app-route received invalid cache entry ${cacheEntry?.value?.kind}`\n )\n }\n\n if (!isMinimalMode) {\n res.setHeader(\n 'x-nextjs-cache',\n isOnDemandRevalidate\n ? 'REVALIDATED'\n : cacheEntry.isMiss\n ? 'MISS'\n : cacheEntry.isStale\n ? 'STALE'\n : 'HIT'\n )\n }\n\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader(\n 'Cache-Control',\n 'private, no-cache, no-store, max-age=0, must-revalidate'\n )\n }\n\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers)\n\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER)\n }\n\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (\n cacheEntry.cacheControl &&\n !res.getHeader('Cache-Control') &&\n !headers.get('Cache-Control')\n ) {\n headers.set(\n 'Cache-Control',\n getCacheControlHeader(cacheEntry.cacheControl)\n )\n }\n\n await sendResponse(\n nodeNextReq,\n nodeNextRes,\n // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200,\n })\n )\n return\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n\n // rethrow so that we can handle serving error page\n\n // If this is during static generation, throw the error again.\n if (isIsr) throw err\n\n // Otherwise, send a 500 response.\n await sendResponse(\n nodeNextReq,\n nodeNextRes,\n new Response(null, { status: 500 })\n )\n return\n } finally {\n ;(() => {\n if (!currentSpan) {\n return\n }\n\n let statusCode = res.statusCode\n\n currentSpan.setAttributes({\n 'http.status_code': statusCode,\n 'next.rsc': false,\n })\n\n if (statusCode && statusCode >= 500) {\n // For 5xx status codes: SHOULD be set to 'Error' span status.\n // x-ref: https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status\n currentSpan.setStatus({\n code: SpanStatusCode.ERROR,\n })\n // For span status 'Error', SHOULD set 'error.type' attribute.\n currentSpan.setAttribute('error.type', statusCode.toString())\n }\n\n const rootSpanAttributes = tracer.getRootSpanAttributes()\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return\n }\n\n if (\n rootSpanAttributes.get('next.span_type') !==\n BaseServerSpan.handleRequest\n ) {\n console.warn(\n `Unexpected root span type '${rootSpanAttributes.get(\n 'next.span_type'\n )}'. Please report this Next.js issue https://github.com/vercel/next.js`\n )\n return\n }\n\n const route = rootSpanAttributes.get('next.route') || normalizedSrcPage\n const name = `${method} ${route}`\n\n currentSpan.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name,\n })\n currentSpan.updateName(name)\n\n // Propagate http.route to the parent span if one exists (e.g.\n // a platform-created HTTP span in adapter deployments).\n if (parentSpan && parentSpan !== currentSpan) {\n parentSpan.setAttribute('http.route', route)\n parentSpan.updateName(name)\n }\n })()\n }\n }\n\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (isWrappedByNextServer && activeSpan) {\n await handleResponse(activeSpan, undefined)\n } else {\n let parentSpan = tracer.getActiveScopeSpan()\n await tracer.withPropagatedContext(\n req.headers,\n () =>\n tracer.trace(\n BaseServerSpan.handleRequest,\n {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url,\n },\n },\n (span) => handleResponse(span, parentSpan)\n ),\n undefined,\n !isWrappedByNextServer\n )\n }\n}\n"],"names":["SOON_DAYS","localToday","now","Date","p","n","String","padStart","getFullYear","getMonth","getDate","daysBetween","from","to","utc","d","UTC","slice","Math","round","dueState","due","status","today","expectedStatus","states","every","s","some","taskDueSummary","taskIds","tasks","dues","map","id","filter","t","length","upcoming","sort","overdue","next","atRiskReasons","item","linked","reasons","push","started","roadmapHealth","items","progress","drift","kind","message","title","horizonIds","Set","i","parent","missing","join","risks","done","total","expected","open","suggestedStatus","h","has","kids","k","reduce","sum","ok","result","json","jsonrpc","err","code","error","TOOLS","name","description","inputSchema","type","properties","required","limit","taskId","since","query","path","content","enum","epic","context","decision","rationale","alternatives","option","reason","consequences","currentState","justCompleted","workingOn","upNext","issues","decisions","techDebt","handoff","templateId","paths","edits","old_string","new_string","summary","plan","horizons","key","body","epics","size","dependsOn","questions","minItems","maxItems","question","header","multiSelect","options","label","oldPath","newPath","keywords","order","PLANNING_PREAMBLE","taskInfoMap","root","Object","fromEntries","roadmapHint","includes","hits","handleTool","args","b","board","lines","docs","memory","exists","todo","blocked","active","forEach","Number","sessions","parse","isNaN","x","end","actor","start","headline","lastStatus","docPath","backlinks","file","line","text","sections","section","files","entries","f","results","r","totalHits","cols","col","toUpperCase","task","raw","previousStatus","epicId","trim","Error","statuses","find","nudge","waiting","w","needsHuman","adrNumber","template","defaultPath","Array","isArray","Promise","all","errors","roadmap","qs","q","at","opts","o","j","undefined","JSON","stringify","totalFiles","icon","planned","atRisk","fmt","c","orphans","patch","POST","req","method","params","protocolVersion","capabilities","tools","serverInfo","version","arguments","nextUrl","searchParams","get","e","msg","isError","GET","AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","addRequestMeta","getRequestMeta","setRequestMeta","getTracer","SpanKind","SpanStatusCode","setManifestsSingleton","normalizeAppPath","NodeNextRequest","NodeNextResponse","NextRequestAdapter","signalFromNodeResponse","BaseServerSpan","getRevalidateReason","sendResponse","fromNodeOutgoingHttpHeaders","toNodeOutgoingHttpHeaders","getCacheControlHeader","INFINITE_CACHE","NEXT_CACHE_TAGS_HEADER","NoFallbackError","CachedRouteKind","routeModule","definition","APP_ROUTE","page","pathname","filename","bundlePath","distDir","process","env","__NEXT_RELATIVE_DIST_DIR","relativeProjectDir","__NEXT_RELATIVE_PROJECT_DIR","resolvedPagePath","nextConfigOutput","userland","require","TURBOPACK","__NEXT_DEV_SERVER","getUserland","workAsyncStorage","workUnitAsyncStorage","serverHooks","handler","res","ctx","requestMeta","isDev","hrtime","bigint","srcPage","replace","multiZoneDraftMode","__NEXT_MULTI_ZONE_DRAFT_MODE","prepareResult","prepare","statusCode","waitUntil","resolve","buildId","deploymentId","nextConfig","parsedUrl","isDraftMode","prerenderManifest","routerServerContext","isOnDemandRevalidate","revalidateOnlyGenerated","resolvedPathname","clientReferenceManifest","serverActionsManifest","normalizedSrcPage","isIsr","Boolean","dynamicRoutes","routes","render404","isPrerendered","prerenderInfo","fallback","adapterPath","cacheKey","supportsDynamicResponse","isStaticGeneration","tracer","activeSpan","getActiveScopeSpan","isWrappedByNextServer","isMinimalMode","incrementalCache","getIncrementalCache","resetRequestCache","globalThis","__incrementalCache","previewProps","preview","renderOpts","experimental","authInterrupts","useCacheTimeout","cacheComponents","validationLevel","instantInsights","hmrRefreshHash","cacheLifeProfiles","cacheLife","staticPageGenerationTimeout","onClose","cb","on","onAfterTaskError","onInstrumentationRequestError","_request","errorContext","silenceLog","onRequestError","sharedContext","nodeNextReq","nodeNextRes","nextReq","fromNodeNextRequest","responseGenerator","previousCacheEntry","setHeader","response","handle","fetchMetrics","pendingWaitUntil","cacheTags","collectedTags","blob","headers","revalidate","collectedRevalidate","expire","collectedExpire","expireTime","cacheEntry","value","Buffer","arrayBuffer","cacheControl","isStale","routerKind","routePath","routeType","revalidateReason","handleResponse","currentSpan","parentSpan","routeKind","isFallback","isRoutePPREnabled","isMiss","delete","getHeader","set","Response","setAttributes","setStatus","ERROR","setAttribute","toString","rootSpanAttributes","getRootSpanAttributes","handleRequest","console","warn","route","updateName","withPropagatedContext","trace","spanName","SERVER","attributes","url","span"],"mappings":"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","ignoreList":[2]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[859776,e=>{"use strict";e.s(["DEFAULT_AGENTS",0,[{id:"code-assistant",name:"Code Assistant",icon:"🤖",description:"General-purpose coding help",skills:["code-review","test-writer"],prompt:"You are a helpful coding assistant. Help the user with their coding tasks.",active:!0},{id:"doc-bot",name:"Documentation Bot",icon:"📚",description:"Focused on docs and comments",skills:["doc-generator"],prompt:"You are a documentation specialist. Focus on creating and improving documentation.",active:!0}],"DEFAULT_SETTINGS",0,{theme:"dark",accentColor:"blue",fontSize:"medium",fontSans:"geist",fontMono:"geist-mono",editor:{autoSave:10,wordWrap:!0,lineNumbers:!0,previewMode:"split"},project:{autoRefresh:10,showHidden:!1},mcp:{endpoint:"http://localhost:3000/api/mcp"}},"DEFAULT_SKILLS",0,[{id:"code-review",name:"Code Review",description:"Analyzes code for quality, security, and performance issues",trigger:"/review",prompt:"You are an expert code reviewer. Analyze the provided code for:\n- Code quality and best practices\n- Security vulnerabilities\n- Performance issues\n- Maintainability concerns\n\nProvide actionable feedback.",tools:["vibedoc_read_doc","vibedoc_search_docs"],icon:"🔧"},{id:"doc-generator",name:"Documentation Generator",description:"Creates documentation from code and comments",trigger:"/docs",prompt:"You are a technical documentation writer. Generate clear, comprehensive documentation for the provided code or feature.",tools:["vibedoc_read_doc","vibedoc_write_doc"],icon:"📝"},{id:"test-writer",name:"Test Writer",description:"Generates unit tests for functions and components",trigger:"/test",prompt:"You are a testing expert. Write comprehensive unit tests for the provided code, covering edge cases and ensuring good test coverage.",tools:["vibedoc_read_doc","vibedoc_search_docs"],icon:"🧪"}]])},136189,e=>e.a(async(t,a)=>{try{var n=e.i(192258),r=e.i(924868),i=e.i(814747),o=e.i(799501),s=e.i(859776),l=t([o]);[o]=l.then?(await l)():l;let g="settings.json",f="skills.json",m="agents.json";async function d(e){let t=i.default.join(e,".vibedoc");try{await r.default.mkdir(t,{recursive:!0})}catch{}return t}async function c(e,t){try{let a=await r.default.readFile(e,"utf8");return{...t,...JSON.parse(a)}}catch{return t}}async function u(e,t){await r.default.writeFile(e,JSON.stringify(t,null,2),"utf8")}async function p(e){let t=e.nextUrl.searchParams.get("root")||(0,o.getConfiguredRoot)(),a=e.nextUrl.searchParams.get("type")||"all",r=await d(t);try{if("settings"===a||"all"===a){let e=await c(i.default.join(r,g),s.DEFAULT_SETTINGS);if("settings"===a)return n.NextResponse.json(e)}if("skills"===a||"all"===a){let e=await c(i.default.join(r,f),{skills:s.DEFAULT_SKILLS});if("skills"===a)return n.NextResponse.json(e)}if("agents"===a||"all"===a){let e=await c(i.default.join(r,m),{agents:s.DEFAULT_AGENTS});if("agents"===a)return n.NextResponse.json(e)}let[e,t,o]=await Promise.all([c(i.default.join(r,g),s.DEFAULT_SETTINGS),c(i.default.join(r,f),{skills:s.DEFAULT_SKILLS}),c(i.default.join(r,m),{agents:s.DEFAULT_AGENTS})]);return n.NextResponse.json({settings:e,skills:t.skills,agents:o.agents})}catch(e){return n.NextResponse.json({error:e.message},{status:500})}}async function h(e){let t=e.nextUrl.searchParams.get("root")||(0,o.getConfiguredRoot)(),a=e.nextUrl.searchParams.get("type"),r=await d(t);try{let t=await e.json();switch(a){case"settings":await u(i.default.join(r,g),t);break;case"skills":await u(i.default.join(r,f),{skills:t});break;case"agents":await u(i.default.join(r,m),{agents:t});break;default:return n.NextResponse.json({error:"Invalid type"},{status:400})}return n.NextResponse.json({ok:!0})}catch(e){return n.NextResponse.json({error:e.message},{status:500})}}e.s(["GET",0,p,"PUT",0,h]),a()}catch(e){a(e)}},!1),358200,e=>{"use strict";var t=e.i(440807),a=e.i(381144),n=e.i(522639),r=e.i(165892),i=e.i(781831),o=e.i(740095),s=e.i(931106),l=e.i(253258),d=e.i(488026),c=e.i(571998),u=e.i(666314),p=e.i(598783),h=e.i(759703),g=e.i(163677),f=e.i(450859),m=e.i(193695);e.i(582432);var v=e.i(274687);let R=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/settings/route",pathname:"/api/settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/settings/route.ts",nextConfigOutput:"",userland:()=>e.r(136189),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:E,serverHooks:T}=R;async function y(e,t,n){n.requestMeta&&(0,r.setRequestMeta)(e,n.requestMeta),R.isDev&&(0,r.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/settings/route";w=w.replace(/\/index$/,"")||"/";let E=await R.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!E)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:T,deploymentId:y,params:x,nextConfig:A,parsedUrl:C,isDraftMode:S,prerenderManifest:_,routerServerContext:b,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,resolvedPathname:k,clientReferenceManifest:j,serverActionsManifest:U}=E,D=(0,s.normalizeAppPath)(w),I=!!(_.dynamicRoutes[D]||_.routes[k]),O=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,C,!1):t.end("This page could not be found"),null);if(I&&!S){let e=!!_.routes[k],t=_.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(A.adapterPath)return await O();throw new m.NoFallbackError}}let L=null;!I||R.isDev||S||(L="/index"===(L=k)?"/":L);let q=!0===R.isDev||!I,F=I&&!q;U&&j&&(0,o.setManifestsSingleton)({page:w,clientReferenceManifest:j,serverActionsManifest:U});let H=e.method||"GET",M=(0,i.getTracer)(),G=M.getActiveScopeSpan(),K=!!(null==b?void 0:b.isWrappedByNextServer),B=!!(0,r.getRequestMeta)(e,"minimalMode"),$=(0,r.getRequestMeta)(e,"incrementalCache")||await R.getIncrementalCache(e,A,_,B);null==$||$.resetRequestCache(),globalThis.__incrementalCache=$;let W={params:x,previewProps:_.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts,useCacheTimeout:A.experimental.useCacheTimeout},cacheComponents:!!A.cacheComponents,validationLevel:A.experimental.instantInsights.validationLevel,supportsDynamicResponse:q,incrementalCache:$,hmrRefreshHash:(0,r.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:A.cacheLife,staticPageGenerationTimeout:A.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,n,r)=>R.onRequestError(e,t,n,r,b)},sharedContext:{buildId:T,deploymentId:y}},Y=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),V=d.NextRequestAdapter.fromNodeNextRequest(Y,(0,d.signalFromNodeResponse)(t)),X=async({previousCacheEntry:a})=>{try{if(!B&&N&&P&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let r=await R.handle(V,W);e.fetchMetrics=W.renderOpts.fetchMetrics;let i=W.renderOpts.pendingWaitUntil;i&&n.waitUntil&&(n.waitUntil(i),i=void 0);let o=W.renderOpts.collectedTags;if(!I)return await (0,p.sendResponse)(Y,z,r,i),null;{let e=await r.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(r.headers);o&&(t[f.NEXT_CACHE_TAGS_HEADER]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,n=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=f.INFINITE_CACHE?!1!==a&&a>0?A.expireTime:void 0:W.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:r.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:n}}}}catch(t){throw(null==a?void 0:a.isStale)&&await R.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,b),t}},J=async(r,o)=>{try{var s,l;let r=await R.handleResponse({req:e,nextConfig:A,cacheKey:L,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:_,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,responseGenerator:X,waitUntil:n.waitUntil,isMinimalMode:B});if(!I)return;if((null==r||null==(s=r.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==r||null==(l=r.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",N?"REVALIDATED":r.isMiss?"MISS":r.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,h.fromNodeOutgoingHttpHeaders)(r.value.headers);B&&I||i.delete(f.NEXT_CACHE_TAGS_HEADER),!r.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,g.getCacheControlHeader)(r.cacheControl)),await (0,p.sendResponse)(Y,z,new Response(r.value.body,{headers:i,status:r.value.status||200}));return}catch(t){if(t instanceof m.NoFallbackError||await R.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,b),I)throw t;await (0,p.sendResponse)(Y,z,new Response(null,{status:500}));return}finally{(()=>{if(!r)return;let e=t.statusCode;r.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(r.setStatus({code:i.SpanStatusCode.ERROR}),r.setAttribute("error.type",e.toString()));let a=M.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==c.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=a.get("next.route")||D,s=`${H} ${n}`;r.setAttributes({"next.route":n,"http.route":n,"next.span_name":s}),r.updateName(s),o&&o!==r&&(o.setAttribute("http.route",n),o.updateName(s))})()}};if(K&&G)await J(G,void 0);else{let t=M.getActiveScopeSpan();await M.withPropagatedContext(e.headers,()=>M.trace(c.BaseServerSpan.handleRequest,{spanName:`${H} ${w}`,kind:i.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},e=>J(e,t)),void 0,!K)}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:E})},"routeModule",0,R,"serverHooks",0,T,"workAsyncStorage",0,w,"workUnitAsyncStorage",0,E])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_1f1rssd._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/settings.ts","../../../src/app/api/settings/route.ts","../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/build/templates/app-route.ts"],"sourcesContent":["export interface AppSettings {\n theme: 'dark' | 'light' | 'system'\n accentColor: 'blue' | 'purple' | 'green' | 'orange'\n fontSize: 'small' | 'medium' | 'large'\n fontSans: FontSans\n fontMono: FontMono\n editor: {\n autoSave: number // 0 = off, otherwise seconds\n wordWrap: boolean\n lineNumbers: boolean\n previewMode: 'split' | 'tab' | 'preview'\n }\n project: {\n autoRefresh: number // 0 = off, otherwise seconds\n showHidden: boolean\n }\n mcp: {\n endpoint: string\n }\n}\n\nexport interface Skill {\n id: string\n name: string\n description: string\n trigger: string\n prompt: string\n tools: string[]\n icon?: string\n}\n\nexport interface Agent {\n id: string\n name: string\n icon: string\n description: string\n skills: string[]\n prompt: string\n active: boolean\n}\n\nexport const SANS_FONTS = [\n { id: 'geist', label: 'Geist', note: 'Made for developer tools. Clean and neutral.' },\n { id: 'inter', label: 'Inter', note: 'The standard UI font. Very clear at small sizes.' },\n { id: 'ibm-plex-sans', label: 'IBM Plex Sans', note: 'Warm and humanist. Good for long reading.' },\n { id: 'atkinson', label: 'Atkinson Hyperlegible', note: 'Letters are easy to tell apart. Best for legibility.' },\n { id: 'dm-sans', label: 'DM Sans', note: 'Geometric. The previous default.' },\n { id: 'system', label: 'System', note: 'Your OS font. Nothing to download.' },\n] as const\n\nexport const MONO_FONTS = [\n { id: 'geist-mono', label: 'Geist Mono', note: 'Pairs with Geist.' },\n { id: 'jetbrains-mono', label: 'JetBrains Mono', note: 'Tall letters, made for code.' },\n { id: 'ibm-plex-mono', label: 'IBM Plex Mono', note: 'Pairs with IBM Plex Sans.' },\n { id: 'dm-mono', label: 'DM Mono', note: 'The previous default.' },\n { id: 'system', label: 'System', note: 'Your OS monospace font.' },\n] as const\n\nexport type FontSans = (typeof SANS_FONTS)[number]['id']\nexport type FontMono = (typeof MONO_FONTS)[number]['id']\n\nexport const DEFAULT_SETTINGS: AppSettings = {\n theme: 'dark',\n accentColor: 'blue',\n fontSize: 'medium',\n fontSans: 'geist',\n fontMono: 'geist-mono',\n editor: {\n autoSave: 10,\n wordWrap: true,\n lineNumbers: true,\n previewMode: 'split',\n },\n project: {\n autoRefresh: 10,\n showHidden: false,\n },\n mcp: {\n endpoint: 'http://localhost:3000/api/mcp',\n },\n}\n\nexport const DEFAULT_SKILLS: Skill[] = [\n {\n id: 'code-review',\n name: 'Code Review',\n description: 'Analyzes code for quality, security, and performance issues',\n trigger: '/review',\n prompt: 'You are an expert code reviewer. Analyze the provided code for:\\n- Code quality and best practices\\n- Security vulnerabilities\\n- Performance issues\\n- Maintainability concerns\\n\\nProvide actionable feedback.',\n tools: ['vibedoc_read_doc', 'vibedoc_search_docs'],\n icon: '🔧',\n },\n {\n id: 'doc-generator',\n name: 'Documentation Generator',\n description: 'Creates documentation from code and comments',\n trigger: '/docs',\n prompt: 'You are a technical documentation writer. Generate clear, comprehensive documentation for the provided code or feature.',\n tools: ['vibedoc_read_doc', 'vibedoc_write_doc'],\n icon: '📝',\n },\n {\n id: 'test-writer',\n name: 'Test Writer',\n description: 'Generates unit tests for functions and components',\n trigger: '/test',\n prompt: 'You are a testing expert. Write comprehensive unit tests for the provided code, covering edge cases and ensuring good test coverage.',\n tools: ['vibedoc_read_doc', 'vibedoc_search_docs'],\n icon: '🧪',\n },\n]\n\nexport const DEFAULT_AGENTS: Agent[] = [\n {\n id: 'code-assistant',\n name: 'Code Assistant',\n icon: '🤖',\n description: 'General-purpose coding help',\n skills: ['code-review', 'test-writer'],\n prompt: 'You are a helpful coding assistant. Help the user with their coding tasks.',\n active: true,\n },\n {\n id: 'doc-bot',\n name: 'Documentation Bot',\n icon: '📚',\n description: 'Focused on docs and comments',\n skills: ['doc-generator'],\n prompt: 'You are a documentation specialist. Focus on creating and improving documentation.',\n active: true,\n },\n]\n","import { NextRequest, NextResponse } from 'next/server'\r\nimport fs from 'fs/promises'\r\nimport path from 'path'\r\nimport { getConfiguredRoot } from '@/lib/core'\r\nimport { DEFAULT_SETTINGS, DEFAULT_SKILLS, DEFAULT_AGENTS, type AppSettings, type Skill, type Agent } from '@/lib/settings'\r\n\r\nconst VIBEDOC_DIR = '.vibedoc'\r\nconst SETTINGS_FILE = 'settings.json'\r\nconst SKILLS_FILE = 'skills.json'\r\nconst AGENTS_FILE = 'agents.json'\r\n\r\nasync function ensureVibedocDir(root: string) {\r\n const dir = path.join(root, VIBEDOC_DIR)\r\n try {\r\n await fs.mkdir(dir, { recursive: true })\r\n } catch {}\r\n return dir\r\n}\r\n\r\nasync function readJsonFile<T>(filePath: string, defaultValue: T): Promise<T> {\r\n try {\r\n const content = await fs.readFile(filePath, 'utf8')\r\n return { ...defaultValue, ...JSON.parse(content) }\r\n } catch {\r\n return defaultValue\r\n }\r\n}\r\n\r\nasync function writeJsonFile(filePath: string, data: unknown): Promise<void> {\r\n await fs.writeFile(filePath, JSON.stringify(data, null, 2), 'utf8')\r\n}\r\n\r\nexport async function GET(req: NextRequest) {\r\n const root = req.nextUrl.searchParams.get('root') || getConfiguredRoot()\r\n const type = req.nextUrl.searchParams.get('type') || 'all'\r\n const dir = await ensureVibedocDir(root)\r\n\r\n try {\r\n if (type === 'settings' || type === 'all') {\r\n const settings = await readJsonFile<AppSettings>(path.join(dir, SETTINGS_FILE), DEFAULT_SETTINGS)\r\n if (type === 'settings') return NextResponse.json(settings)\r\n }\r\n\r\n if (type === 'skills' || type === 'all') {\r\n const skills = await readJsonFile<{ skills: Skill[] }>(path.join(dir, SKILLS_FILE), { skills: DEFAULT_SKILLS })\r\n if (type === 'skills') return NextResponse.json(skills)\r\n }\r\n\r\n if (type === 'agents' || type === 'all') {\r\n const agents = await readJsonFile<{ agents: Agent[] }>(path.join(dir, AGENTS_FILE), { agents: DEFAULT_AGENTS })\r\n if (type === 'agents') return NextResponse.json(agents)\r\n }\r\n\r\n // Return all\r\n const [settings, skillsData, agentsData] = await Promise.all([\r\n readJsonFile<AppSettings>(path.join(dir, SETTINGS_FILE), DEFAULT_SETTINGS),\r\n readJsonFile<{ skills: Skill[] }>(path.join(dir, SKILLS_FILE), { skills: DEFAULT_SKILLS }),\r\n readJsonFile<{ agents: Agent[] }>(path.join(dir, AGENTS_FILE), { agents: DEFAULT_AGENTS }),\r\n ])\r\n\r\n return NextResponse.json({\r\n settings,\r\n skills: skillsData.skills,\r\n agents: agentsData.agents,\r\n })\r\n } catch (e) {\r\n return NextResponse.json({ error: (e as Error).message }, { status: 500 })\r\n }\r\n}\r\n\r\nexport async function PUT(req: NextRequest) {\r\n const root = req.nextUrl.searchParams.get('root') || getConfiguredRoot()\r\n const type = req.nextUrl.searchParams.get('type')\r\n const dir = await ensureVibedocDir(root)\r\n\r\n try {\r\n const data = await req.json()\r\n\r\n switch (type) {\r\n case 'settings':\r\n await writeJsonFile(path.join(dir, SETTINGS_FILE), data)\r\n break\r\n case 'skills':\r\n await writeJsonFile(path.join(dir, SKILLS_FILE), { skills: data })\r\n break\r\n case 'agents':\r\n await writeJsonFile(path.join(dir, AGENTS_FILE), { agents: data })\r\n break\r\n default:\r\n return NextResponse.json({ error: 'Invalid type' }, { status: 400 })\r\n }\r\n\r\n return NextResponse.json({ ok: true })\r\n } catch (e) {\r\n return NextResponse.json({ error: (e as Error).message }, { status: 500 })\r\n }\r\n}\r\n","import {\n AppRouteRouteModule,\n type AppRouteRouteHandlerContext,\n type AppRouteRouteModuleOptions,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\nimport type { IncomingMessage, ServerResponse } from 'node:http'\nimport {\n addRequestMeta,\n getRequestMeta,\n setRequestMeta,\n type RequestMeta,\n} from '../../server/request-meta'\nimport {\n getTracer,\n type Span,\n SpanKind,\n SpanStatusCode,\n} from '../../server/lib/trace/tracer'\nimport { setManifestsSingleton } from '../../server/app-render/manifests-singleton'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { NodeNextRequest, NodeNextResponse } from '../../server/base-http/node'\nimport {\n NextRequestAdapter,\n signalFromNodeResponse,\n} from '../../server/web/spec-extension/adapters/next-request'\nimport { BaseServerSpan } from '../../server/lib/trace/constants'\nimport { getRevalidateReason } from '../../server/instrumentation/utils'\nimport { sendResponse } from '../../server/send-response'\nimport {\n fromNodeOutgoingHttpHeaders,\n toNodeOutgoingHttpHeaders,\n} from '../../server/web/utils'\nimport { getCacheControlHeader } from '../../server/lib/cache-control'\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from '../../lib/constants'\nimport { NoFallbackError } from '../../shared/lib/no-fallback-error.external'\nimport {\n CachedRouteKind,\n type ResponseCacheEntry,\n type ResponseGenerator,\n} from '../../server/response-cache'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: 'VAR_DEFINITION_PAGE',\n pathname: 'VAR_DEFINITION_PATHNAME',\n filename: 'VAR_DEFINITION_FILENAME',\n bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n nextConfigOutput,\n // The lazy require factory ensures that:\n // - In dev: devRequestTimingInternalsEnd is set before userland executes,\n // correctly attributing module load time to application-code rather than\n // framework internals.\n // - In all modes: async modules (route files with top-level await) are\n // handled correctly — require() returns a Promise for such modules, which\n // ensureUserland() awaits before the first request is handled.\n userland: () => require('VAR_USERLAND') as typeof import('VAR_USERLAND'),\n // In Turbopack dev mode, also provide a synchronous per-request getter so\n // server HMR updates are picked up without re-executing the entry chunk.\n // Using require() (synchronous) avoids adding async overhead that would be\n // incorrectly attributed to application-code time in devRequestTiming.\n ...(process.env.TURBOPACK && process.env.__NEXT_DEV_SERVER\n ? {\n getUserland: () =>\n require('VAR_USERLAND') as typeof import('VAR_USERLAND'),\n }\n : {}),\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage,\n })\n}\n\nexport {\n routeModule,\n workAsyncStorage,\n workUnitAsyncStorage,\n serverHooks,\n patchFetch,\n}\n\nexport async function handler(\n req: IncomingMessage,\n res: ServerResponse,\n ctx: {\n waitUntil?: (prom: Promise<void>) => void\n requestMeta?: RequestMeta\n }\n) {\n if (ctx.requestMeta) {\n setRequestMeta(req, ctx.requestMeta)\n }\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint())\n }\n let srcPage = 'VAR_DEFINITION_PAGE'\n\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/'\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/'\n }\n const multiZoneDraftMode = process.env\n .__NEXT_MULTI_ZONE_DRAFT_MODE as any as boolean\n\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode,\n })\n\n if (!prepareResult) {\n res.statusCode = 400\n res.end('Bad Request')\n ctx.waitUntil?.(Promise.resolve())\n return null\n }\n\n const {\n buildId,\n deploymentId,\n params,\n nextConfig,\n parsedUrl,\n isDraftMode,\n prerenderManifest,\n routerServerContext,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n resolvedPathname,\n clientReferenceManifest,\n serverActionsManifest,\n } = prepareResult\n\n const normalizedSrcPage = normalizeAppPath(srcPage)\n\n let isIsr = Boolean(\n prerenderManifest.dynamicRoutes[normalizedSrcPage] ||\n prerenderManifest.routes[resolvedPathname]\n )\n\n const render404 = async () => {\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext?.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false)\n } else {\n res.end('This page could not be found')\n }\n return null\n }\n\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname])\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage]\n\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.adapterPath) {\n return await render404()\n }\n throw new NoFallbackError()\n }\n }\n }\n\n let cacheKey: string | null = null\n\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey\n }\n\n const supportsDynamicResponse: boolean =\n // If we're in development, we always support dynamic HTML\n routeModule.isDev === true ||\n // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr\n\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse\n\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest,\n })\n }\n\n const method = req.method || 'GET'\n const tracer = getTracer()\n const activeSpan = tracer.getActiveScopeSpan()\n const isWrappedByNextServer = Boolean(\n routerServerContext?.isWrappedByNextServer\n )\n const isMinimalMode = Boolean(getRequestMeta(req, 'minimalMode'))\n\n const incrementalCache =\n getRequestMeta(req, 'incrementalCache') ||\n (await routeModule.getIncrementalCache(\n req,\n nextConfig,\n prerenderManifest,\n isMinimalMode\n ))\n\n incrementalCache?.resetRequestCache()\n ;(globalThis as any).__incrementalCache = incrementalCache\n\n const context: AppRouteRouteHandlerContext = {\n params,\n previewProps: prerenderManifest.preview,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts),\n useCacheTimeout: nextConfig.experimental.useCacheTimeout,\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n validationLevel: nextConfig.experimental.instantInsights.validationLevel,\n supportsDynamicResponse,\n incrementalCache,\n hmrRefreshHash: getRequestMeta(req, 'hmrRefreshHash'),\n cacheLifeProfiles: nextConfig.cacheLife,\n staticPageGenerationTimeout: nextConfig.staticPageGenerationTimeout,\n waitUntil: ctx.waitUntil,\n onClose: (cb) => {\n res.on('close', cb)\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (\n error,\n _request,\n errorContext,\n silenceLog\n ) =>\n routeModule.onRequestError(\n req,\n error,\n errorContext,\n silenceLog,\n routerServerContext\n ),\n },\n sharedContext: {\n buildId,\n deploymentId,\n },\n }\n const nodeNextReq = new NodeNextRequest(req)\n const nodeNextRes = new NodeNextResponse(res)\n\n const nextReq = NextRequestAdapter.fromNodeNextRequest(\n nodeNextReq,\n signalFromNodeResponse(res)\n )\n\n const responseGenerator: ResponseGenerator = async ({\n previousCacheEntry,\n }) => {\n try {\n if (\n !isMinimalMode &&\n isOnDemandRevalidate &&\n revalidateOnlyGenerated &&\n !previousCacheEntry\n ) {\n res.statusCode = 404\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED')\n res.end('This page could not be found')\n return null\n }\n\n const response = await routeModule.handle(nextReq, context)\n\n ;(req as any).fetchMetrics = (context.renderOpts as any).fetchMetrics\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil\n\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil)\n pendingWaitUntil = undefined\n }\n }\n const cacheTags = context.renderOpts.collectedTags\n\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob()\n\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers)\n\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags\n }\n\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type\n }\n\n const revalidate =\n typeof context.renderOpts.collectedRevalidate === 'undefined' ||\n context.renderOpts.collectedRevalidate >= INFINITE_CACHE\n ? false\n : context.renderOpts.collectedRevalidate\n\n const expire =\n typeof context.renderOpts.collectedExpire === 'undefined' ||\n context.renderOpts.collectedExpire >= INFINITE_CACHE\n ? // Fall back to the global `expireTime` config when the\n // route has a numeric `revalidate` but didn't declare an\n // explicit `expire` (e.g. via `cacheLife`). This mirrors the\n // build-time fallback in `build/index.ts` so cache entries\n // and the response Cache-Control header agree on the route's\n // effective expire. Routes that opt out of revalidation\n // (`revalidate: false`) or that are dynamic (`revalidate: 0`)\n // keep `expire: undefined`.\n revalidate !== false && revalidate > 0\n ? nextConfig.expireTime\n : undefined\n : context.renderOpts.collectedExpire\n\n // Create the cache entry for the response.\n const cacheEntry: ResponseCacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers,\n },\n cacheControl: { revalidate, expire },\n }\n\n return cacheEntry\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, pendingWaitUntil)\n return null\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry?.isStale) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n throw err\n }\n }\n\n const handleResponse = async (\n currentSpan: Span | undefined,\n parentSpan: Span | undefined\n ) => {\n try {\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode,\n })\n\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return\n }\n\n if (cacheEntry?.value?.kind !== CachedRouteKind.APP_ROUTE) {\n throw new Error(\n `Invariant: app-route received invalid cache entry ${cacheEntry?.value?.kind}`\n )\n }\n\n if (!isMinimalMode) {\n res.setHeader(\n 'x-nextjs-cache',\n isOnDemandRevalidate\n ? 'REVALIDATED'\n : cacheEntry.isMiss\n ? 'MISS'\n : cacheEntry.isStale\n ? 'STALE'\n : 'HIT'\n )\n }\n\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader(\n 'Cache-Control',\n 'private, no-cache, no-store, max-age=0, must-revalidate'\n )\n }\n\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers)\n\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER)\n }\n\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (\n cacheEntry.cacheControl &&\n !res.getHeader('Cache-Control') &&\n !headers.get('Cache-Control')\n ) {\n headers.set(\n 'Cache-Control',\n getCacheControlHeader(cacheEntry.cacheControl)\n )\n }\n\n await sendResponse(\n nodeNextReq,\n nodeNextRes,\n // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200,\n })\n )\n return\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false\n await routeModule.onRequestError(\n req,\n err,\n {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate,\n }),\n },\n silenceLog,\n routerServerContext\n )\n }\n\n // rethrow so that we can handle serving error page\n\n // If this is during static generation, throw the error again.\n if (isIsr) throw err\n\n // Otherwise, send a 500 response.\n await sendResponse(\n nodeNextReq,\n nodeNextRes,\n new Response(null, { status: 500 })\n )\n return\n } finally {\n ;(() => {\n if (!currentSpan) {\n return\n }\n\n let statusCode = res.statusCode\n\n currentSpan.setAttributes({\n 'http.status_code': statusCode,\n 'next.rsc': false,\n })\n\n if (statusCode && statusCode >= 500) {\n // For 5xx status codes: SHOULD be set to 'Error' span status.\n // x-ref: https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status\n currentSpan.setStatus({\n code: SpanStatusCode.ERROR,\n })\n // For span status 'Error', SHOULD set 'error.type' attribute.\n currentSpan.setAttribute('error.type', statusCode.toString())\n }\n\n const rootSpanAttributes = tracer.getRootSpanAttributes()\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return\n }\n\n if (\n rootSpanAttributes.get('next.span_type') !==\n BaseServerSpan.handleRequest\n ) {\n console.warn(\n `Unexpected root span type '${rootSpanAttributes.get(\n 'next.span_type'\n )}'. Please report this Next.js issue https://github.com/vercel/next.js`\n )\n return\n }\n\n const route = rootSpanAttributes.get('next.route') || normalizedSrcPage\n const name = `${method} ${route}`\n\n currentSpan.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name,\n })\n currentSpan.updateName(name)\n\n // Propagate http.route to the parent span if one exists (e.g.\n // a platform-created HTTP span in adapter deployments).\n if (parentSpan && parentSpan !== currentSpan) {\n parentSpan.setAttribute('http.route', route)\n parentSpan.updateName(name)\n }\n })()\n }\n }\n\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (isWrappedByNextServer && activeSpan) {\n await handleResponse(activeSpan, undefined)\n } else {\n let parentSpan = tracer.getActiveScopeSpan()\n await tracer.withPropagatedContext(\n req.headers,\n () =>\n tracer.trace(\n BaseServerSpan.handleRequest,\n {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url,\n },\n },\n (span) => handleResponse(span, parentSpan)\n ),\n undefined,\n !isWrappedByNextServer\n )\n }\n}\n"],"names":["SANS_FONTS","id","label","note","MONO_FONTS","DEFAULT_SETTINGS","theme","accentColor","fontSize","fontSans","fontMono","editor","autoSave","wordWrap","lineNumbers","previewMode","project","autoRefresh","showHidden","mcp","endpoint","DEFAULT_SKILLS","name","description","trigger","prompt","tools","icon","DEFAULT_AGENTS","skills","active","VIBEDOC_DIR","SETTINGS_FILE","SKILLS_FILE","AGENTS_FILE","ensureVibedocDir","root","dir","join","mkdir","recursive","readJsonFile","filePath","defaultValue","content","readFile","JSON","parse","writeJsonFile","data","writeFile","stringify","GET","req","nextUrl","searchParams","get","type","settings","json","agents","skillsData","agentsData","Promise","all","e","error","message","status","PUT","ok","AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","addRequestMeta","getRequestMeta","setRequestMeta","getTracer","SpanKind","SpanStatusCode","setManifestsSingleton","normalizeAppPath","NodeNextRequest","NodeNextResponse","NextRequestAdapter","signalFromNodeResponse","BaseServerSpan","getRevalidateReason","sendResponse","fromNodeOutgoingHttpHeaders","toNodeOutgoingHttpHeaders","getCacheControlHeader","INFINITE_CACHE","NEXT_CACHE_TAGS_HEADER","NoFallbackError","CachedRouteKind","routeModule","definition","kind","APP_ROUTE","page","pathname","filename","bundlePath","distDir","process","env","__NEXT_RELATIVE_DIST_DIR","relativeProjectDir","__NEXT_RELATIVE_PROJECT_DIR","resolvedPagePath","nextConfigOutput","userland","require","TURBOPACK","__NEXT_DEV_SERVER","getUserland","workAsyncStorage","workUnitAsyncStorage","serverHooks","handler","res","ctx","requestMeta","isDev","hrtime","bigint","srcPage","replace","multiZoneDraftMode","__NEXT_MULTI_ZONE_DRAFT_MODE","prepareResult","prepare","statusCode","end","waitUntil","resolve","buildId","deploymentId","params","nextConfig","parsedUrl","isDraftMode","prerenderManifest","routerServerContext","isOnDemandRevalidate","revalidateOnlyGenerated","resolvedPathname","clientReferenceManifest","serverActionsManifest","normalizedSrcPage","isIsr","Boolean","dynamicRoutes","routes","render404","isPrerendered","prerenderInfo","fallback","adapterPath","cacheKey","supportsDynamicResponse","isStaticGeneration","method","tracer","activeSpan","getActiveScopeSpan","isWrappedByNextServer","isMinimalMode","incrementalCache","getIncrementalCache","resetRequestCache","globalThis","__incrementalCache","context","previewProps","preview","renderOpts","experimental","authInterrupts","useCacheTimeout","cacheComponents","validationLevel","instantInsights","hmrRefreshHash","cacheLifeProfiles","cacheLife","staticPageGenerationTimeout","onClose","cb","on","onAfterTaskError","undefined","onInstrumentationRequestError","_request","errorContext","silenceLog","onRequestError","sharedContext","nodeNextReq","nodeNextRes","nextReq","fromNodeNextRequest","responseGenerator","previousCacheEntry","setHeader","response","handle","fetchMetrics","pendingWaitUntil","cacheTags","collectedTags","blob","headers","revalidate","collectedRevalidate","expire","collectedExpire","expireTime","cacheEntry","value","body","Buffer","from","arrayBuffer","cacheControl","err","isStale","routerKind","routePath","routeType","revalidateReason","handleResponse","currentSpan","parentSpan","routeKind","isFallback","isRoutePPREnabled","Error","isMiss","delete","getHeader","set","Response","setAttributes","setStatus","code","ERROR","setAttribute","toString","rootSpanAttributes","getRootSpanAttributes","handleRequest","console","warn","route","updateName","withPropagatedContext","trace","spanName","SERVER","attributes","url","span"],"mappings":"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","ignoreList":[2]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[795667,a=>{"use strict";var b=a.i(256857);let c={name:"bot",size:24,node:[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]};c.node;let d=(0,b.default)(c);a.s(["Bot",0,d],795667)},60084,661661,28386,a=>{"use strict";var b=a.i(256857);let c={name:"copy",size:24,node:[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]};c.node;let d=(0,b.default)(c);a.s(["Copy",0,d],60084);let e={name:"pencil",size:24,node:[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]};e.node;let f=(0,b.default)(e);a.s(["Pencil",0,f],661661);let g={name:"trash",size:24,node:[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],aliases:["trash-2"]};g.node;let h=(0,b.default)(g);a.s(["Trash2",0,h],28386)},108280,a=>{"use strict";var b=a.i(256857);let c={name:"loader-circle",size:24,node:[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],aliases:["loader-2"]};c.node;let d=(0,b.default)(c);a.s(["Loader2",0,d],108280)},200382,a=>{"use strict";var b=a.i(256857);let c={name:"plus",size:24,node:[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]};c.node;let d=(0,b.default)(c);a.s(["Plus",0,d],200382)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=1x05_lucide-react_dist_esm_icons_1v0h3_3._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/bot.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/trash.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/pencil.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/copy.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/loader-circle.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/plus.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'bot',\n size: 24,\n node: [\n ['path', { d: 'M12 8V4H8', key: 'hb8ula' }],\n ['rect', { width: '16', height: '12', x: '4', y: '8', rx: '2', key: 'enze0r' }],\n ['path', { d: 'M2 14h2', key: 'vft8re' }],\n ['path', { d: 'M20 14h2', key: '4cs60a' }],\n ['path', { d: 'M15 13v2', key: '1xurst' }],\n ['path', { d: 'M9 13v2', key: 'rq6x2g' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Bot\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/bot\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Bot = createLucideIcon(__iconData);\n\nexport default Bot;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'trash',\n size: 24,\n node: [\n ['path', { d: 'M10 11v6', key: 'nco0om' }],\n ['path', { d: 'M14 11v6', key: 'outv1u' }],\n ['path', { d: 'M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6', key: 'miytrc' }],\n ['path', { d: 'M3 6h18', key: 'd0wm0j' }],\n ['path', { d: 'M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2', key: 'e791ji' }],\n ],\n aliases: ['trash-2'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Trash\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/trash\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Trash = createLucideIcon(__iconData);\n\nexport default Trash;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'pencil',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z',\n key: '1a8usu',\n },\n ],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/pencil\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Pencil = createLucideIcon(__iconData);\n\nexport default Pencil;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'copy',\n size: 24,\n node: [\n ['rect', { width: '14', height: '14', x: '8', y: '8', rx: '2', ry: '2', key: '17jyea' }],\n ['path', { d: 'M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2', key: 'zix9uf' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Copy\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/copy\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Copy = createLucideIcon(__iconData);\n\nexport default Copy;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'loader-circle',\n size: 24,\n node: [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]],\n aliases: ['loader-2'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon(__iconData);\n\nexport default LoaderCircle;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'plus',\n size: 24,\n node: [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon(__iconData);\n\nexport default Plus;\n"],"names":[],"mappings":"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AA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA4C,AAA5C,CAA4C,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACzE,CAAC,CAAA,ACDC,CDCD,ACDC,KDCO,CCAF,ADAE,EAAK,CCAP,ADAO,CCAP,ADAO,CCAP,ADAO,CCAP,ADAO,CCAP,ADAO,CCAP,ADAO,CAAA,ACAP,CAAA,ADAO,CCAP,ADAO,CAAA,ACAP,ADAkB,CAAA,ACAlB,CAAA,ADAkB,CCAlB,ADAkB,CAAK,ACAvB,ADAkB,CCAlB,ADAuB,CCAvB,ADAuB,CCAvB,ADAuB,CCAvB,ADAuB,CCAvB,ADAuB,CCAvB,ADAuB,CAAA,ACAvB,CAAA,EDAiC,CCAjC,ADCP,CCDO,ADCN,CCDM,ACKiC,AFJvC,ACDM,CAAA,ACKiC,ADLjC,ADCN,CCDM,CAAA,CAAA,CAAA,CAAA,ADCE,CCDF,ACK4C,ADJ1C,ADAA,CCDF,CAAA,ADCO,CCDP,AACE,ADAK,CCDP,ADCO,ACAL,CADF,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CAAA,ACDP,CAAA,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CAAA,ACDP,CDCO,ACDP,CAAA,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CAAA,ACDP,CAAA,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,CCDP,ADCO,AAA0C,CCDjD,ADCiD,CCDjD,ADCiD,CCDjD,ADCiD,CCDjD,ADCiD,AAAK,CAAA,ACDtD,CAAA,ADCsD,CCDtD,ADCsD,CCDtD,ADCsD,CCDtD,ADCsD,CCDtD,ADCsD,CCDtD,ADCsD,CCDtD,ADCsD,CCDtD,ADCgE,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","ignoreList":[0,1,2,3,4,5]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[795667,a=>{"use strict";var b=a.i(256857);let c={name:"bot",size:24,node:[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]};c.node;let d=(0,b.default)(c);a.s(["Bot",0,d],795667)},200382,a=>{"use strict";var b=a.i(256857);let c={name:"plus",size:24,node:[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]};c.node;let d=(0,b.default)(c);a.s(["Plus",0,d],200382)},551729,a=>{"use strict";var b=a.i(256857);let c={name:"sparkles",size:24,node:[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],aliases:["stars"]};c.node;let d=(0,b.default)(c);a.s(["Sparkles",0,d],551729)},340933,a=>{"use strict";var b=a.i(256857);let c={name:"triangle-alert",size:24,node:[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],aliases:["alert-triangle"]};c.node;let d=(0,b.default)(c);a.s(["AlertTriangle",0,d],340933)},749223,a=>{"use strict";var b=a.i(662145),c=a.i(174897),d=a.i(368114),e=a.i(786304),f=a.i(699570);let g={todo:"text-muted border-border2","in-progress":"text-amber border-amber/30 bg-amber/5",blocked:"text-danger border-danger/30 bg-danger/5",done:"text-teal border-teal/30 bg-teal/5",cancelled:"text-muted border-border line-through"},h={todo:"border-border2 text-muted","in-progress":"border-amber/40 text-amber",blocked:"border-danger/40 text-danger",done:"border-teal/40 text-teal",cancelled:"border-border text-muted"},i={todo:"📋","in-progress":"🔨",blocked:"🚫",done:"✅",cancelled:"❌"},j={todo:["in-progress"],"in-progress":["done","blocked","todo"],blocked:["in-progress","cancelled"],done:["todo"],cancelled:["todo"]};a.s(["STATUS_BADGE_COLORS",0,h,"STATUS_ICONS",0,i,"TaskCard",0,function({task:a,onMove:k,onOpen:l}){let[m,n]=(0,c.useState)(!1),o=j[a.status]||[];return(0,b.jsxs)("div",{draggable:!0,onDragStart:b=>{b.dataTransfer.setData("taskId",a.id),b.dataTransfer.effectAllowed="move",n(!0)},onDragEnd:()=>n(!1),style:{viewTransitionName:`task-${a.file.replace(/[^a-zA-Z0-9_-]/g,"_")}`},className:(0,d.cn)("group relative bg-surface border rounded-lg p-3 text-sm transition-[border-color,opacity] hover:border-border2",g[a.status]||"border-border",m&&"opacity-50 cursor-grabbing"),children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-1.5",children:[(0,b.jsx)("span",{className:"text-xs font-mono text-muted",children:a.id}),(0,b.jsx)(e.Badge,{variant:"outline",className:(0,d.cn)("text-[10px] h-4 px-1.5 font-normal",h[a.status]),children:"in-progress"===a.status?"active":a.status})]}),(0,b.jsx)("p",{className:"font-medium text-txt text-sm leading-snug mb-2",children:a.title}),a.phase&&(0,b.jsx)("p",{className:"text-xs text-muted mb-2",children:a.phase}),(0,b.jsxs)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[(0,b.jsx)(f.Button,{variant:"ghost",size:"sm",className:"h-6 text-xs px-2",onClick:l,children:"open"}),o.map(c=>(0,b.jsxs)(f.Button,{variant:"ghost",size:"sm",className:"h-6 text-xs px-2",onClick:()=>k(a.id,c),children:[i[c]," ","in-progress"===c?"start":c]},c))]})]})}])},21215,a=>{"use strict";var b=a.i(662145),c=a.i(368114);a.s(["EmptyState",0,function({icon:a,message:d,subMessage:e,bordered:f}){return(0,b.jsxs)("div",{className:(0,c.cn)("text-center py-16 text-muted text-sm",f&&"border border-dashed border-border rounded-xl"),children:[(0,b.jsx)("p",{className:"text-3xl mb-3",children:a}),(0,b.jsx)("p",{children:d}),e&&(0,b.jsx)("p",{className:"text-xs mt-1",children:e})]})}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_0v7muti._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/bot.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/plus.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/sparkles.ts","../../../../node_modules/.pnpm/lucide-react%401.48.0_react%4019.3.0/node_modules/lucide-react/src/icons/triangle-alert.ts","../../../../src/components/board/TaskCard.tsx","../../../../src/components/shared/EmptyState.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'bot',\n size: 24,\n node: [\n ['path', { d: 'M12 8V4H8', key: 'hb8ula' }],\n ['rect', { width: '16', height: '12', x: '4', y: '8', rx: '2', key: 'enze0r' }],\n ['path', { d: 'M2 14h2', key: 'vft8re' }],\n ['path', { d: 'M20 14h2', key: '4cs60a' }],\n ['path', { d: 'M15 13v2', key: '1xurst' }],\n ['path', { d: 'M9 13v2', key: 'rq6x2g' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Bot\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/bot\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Bot = createLucideIcon(__iconData);\n\nexport default Bot;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'plus',\n size: 24,\n node: [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon(__iconData);\n\nexport default Plus;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'sparkles',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z',\n key: '1s2grr',\n },\n ],\n ['path', { d: 'M20 2v4', key: '1rf3ol' }],\n ['path', { d: 'M22 4h-4', key: 'gwowj6' }],\n ['circle', { cx: '4', cy: '20', r: '2', key: '6kqj1y' }],\n ],\n aliases: ['stars'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Sparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/sparkles\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Sparkles = createLucideIcon(__iconData);\n\nexport default Sparkles;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'triangle-alert',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'm21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3',\n key: 'wmoenq',\n },\n ],\n ['path', { d: 'M12 9v4', key: 'juzpu7' }],\n ['path', { d: 'M12 17h.01', key: 'p32p05' }],\n ],\n aliases: ['alert-triangle'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name TriangleAlert\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/triangle-alert\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TriangleAlert = createLucideIcon(__iconData);\n\nexport default TriangleAlert;\n","\"use client\"\r\n\r\nimport { useState } from \"react\"\r\nimport { cn } from \"@/lib/utils\"\r\nimport { Badge } from \"@/components/ui/badge\"\r\nimport { Button } from \"@/components/ui/button\"\r\nimport type { Task } from \"@/types\"\r\n\r\nconst STATUS_COLORS: Record<string, string> = {\r\n todo: \"text-muted border-border2\",\r\n \"in-progress\": \"text-amber border-amber/30 bg-amber/5\",\r\n blocked: \"text-danger border-danger/30 bg-danger/5\",\r\n done: \"text-teal border-teal/30 bg-teal/5\",\r\n cancelled: \"text-muted border-border line-through\",\r\n}\r\n\r\nexport const STATUS_BADGE_COLORS: Record<string, string> = {\r\n todo: \"border-border2 text-muted\",\r\n \"in-progress\": \"border-amber/40 text-amber\",\r\n blocked: \"border-danger/40 text-danger\",\r\n done: \"border-teal/40 text-teal\",\r\n cancelled: \"border-border text-muted\",\r\n}\r\n\r\nexport const STATUS_ICONS: Record<string, string> = {\r\n todo: \"📋\",\r\n \"in-progress\": \"🔨\",\r\n blocked: \"🚫\",\r\n done: \"✅\",\r\n cancelled: \"❌\",\r\n}\r\n\r\nconst NEXT_STATUS: Record<string, string[]> = {\r\n todo: [\"in-progress\"],\r\n \"in-progress\": [\"done\", \"blocked\", \"todo\"],\r\n blocked: [\"in-progress\", \"cancelled\"],\r\n done: [\"todo\"],\r\n cancelled: [\"todo\"],\r\n}\r\n\r\ninterface TaskCardProps {\r\n task: Task\r\n onMove: (id: string, status: string) => void\r\n onOpen: () => void\r\n}\r\n\r\nexport function TaskCard({ task, onMove, onOpen }: TaskCardProps) {\r\n const [isDragging, setIsDragging] = useState(false)\r\n const nextStatuses = NEXT_STATUS[task.status] || []\r\n\r\n return (\r\n <div\r\n draggable\r\n onDragStart={(e) => {\r\n e.dataTransfer.setData(\"taskId\", task.id)\r\n e.dataTransfer.effectAllowed = \"move\"\r\n setIsDragging(true)\r\n }}\r\n onDragEnd={() => setIsDragging(false)}\r\n style={{ viewTransitionName: `task-${task.file.replace(/[^a-zA-Z0-9_-]/g, \"_\")}` }}\r\n className={cn(\r\n \"group relative bg-surface border rounded-lg p-3 text-sm transition-[border-color,opacity] hover:border-border2\",\r\n STATUS_COLORS[task.status] || \"border-border\",\r\n isDragging && \"opacity-50 cursor-grabbing\",\r\n )}\r\n >\r\n {/* ID + status badge */}\r\n <div className=\"flex items-center justify-between mb-1.5\">\r\n <span className=\"text-xs font-mono text-muted\">{task.id}</span>\r\n <Badge\r\n variant=\"outline\"\r\n className={cn(\"text-[10px] h-4 px-1.5 font-normal\", STATUS_BADGE_COLORS[task.status])}\r\n >\r\n {task.status === \"in-progress\" ? \"active\" : task.status}\r\n </Badge>\r\n </div>\r\n\r\n {/* Title */}\r\n <p className=\"font-medium text-txt text-sm leading-snug mb-2\">{task.title}</p>\r\n\r\n {/* Phase */}\r\n {task.phase && <p className=\"text-xs text-muted mb-2\">{task.phase}</p>}\r\n\r\n {/* Actions */}\r\n <div className=\"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n className=\"h-6 text-xs px-2\"\r\n onClick={onOpen}\r\n >\r\n open\r\n </Button>\r\n {nextStatuses.map((s) => (\r\n <Button\r\n key={s}\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n className=\"h-6 text-xs px-2\"\r\n onClick={() => onMove(task.id, s)}\r\n >\r\n {STATUS_ICONS[s]} {s === \"in-progress\" ? \"start\" : s}\r\n </Button>\r\n ))}\r\n </div>\r\n </div>\r\n )\r\n}\r\n","import { cn } from \"@/lib/utils\"\r\n\r\ninterface EmptyStateProps {\r\n icon: string\r\n message: string\r\n subMessage?: string\r\n bordered?: boolean\r\n}\r\n\r\nexport function EmptyState({ icon, message, subMessage, bordered }: EmptyStateProps) {\r\n return (\r\n <div\r\n className={cn(\r\n \"text-center py-16 text-muted text-sm\",\r\n bordered && \"border border-dashed border-border rounded-xl\",\r\n )}\r\n >\r\n <p className=\"text-3xl mb-3\">{icon}</p>\r\n <p>{message}</p>\r\n {subMessage && <p className=\"text-xs mt-1\">{subMessage}</p>}\r\n </div>\r\n )\r\n}\r\n"],"names":["STATUS_COLORS","todo","blocked","done","cancelled","STATUS_BADGE_COLORS","STATUS_ICONS","NEXT_STATUS","TaskCard","task","onMove","onOpen","isDragging","setIsDragging","nextStatuses","status","draggable","onDragStart","e","dataTransfer","setData","id","effectAllowed","onDragEnd","style","viewTransitionName","file","replace","className","variant","title","phase","size","onClick","map","s","EmptyState","icon","message","subMessage","bordered"],"mappings":"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","ignoreList":[0,1,2,3]}
|